From c04ccc2a07f801552d7d1e736ccfe612bea304b4 Mon Sep 17 00:00:00 2001 From: Kaizen Conroy <36202692+kaizencc@users.noreply.github.com> Date: Tue, 15 Aug 2023 15:35:21 -0400 Subject: [PATCH 01/56] chore(lambda-python-alpha): remove default doc from required prop (#26727) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/@aws-cdk/aws-lambda-python-alpha/lib/function.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/@aws-cdk/aws-lambda-python-alpha/lib/function.ts b/packages/@aws-cdk/aws-lambda-python-alpha/lib/function.ts index 7105c088be82a..4dd3a23e06dc7 100644 --- a/packages/@aws-cdk/aws-lambda-python-alpha/lib/function.ts +++ b/packages/@aws-cdk/aws-lambda-python-alpha/lib/function.ts @@ -18,8 +18,6 @@ export interface PythonFunctionProps extends FunctionOptions { /** * The runtime environment. Only runtimes of the Python family are * supported. - * - * @default Runtime.PYTHON_3_7 */ readonly runtime: Runtime; From 6a76acafd4c8fd9445ee9cc42462545323a6a604 Mon Sep 17 00:00:00 2001 From: Kaizen Conroy <36202692+kaizencc@users.noreply.github.com> Date: Tue, 15 Aug 2023 16:12:06 -0400 Subject: [PATCH 02/56] chore: pr-linter/do-not-close never worked (#26762) We have a label, `pr-linter/do-not-close` that has not been doing its job. See #26039. It is because we are expecting a comma-separated-list, without spaces: https://github.com/rix0rrr/close-stale-prs/blob/ffeb148adbaf7402e77bc4eafce8ed3d3c40f29c/src/index.ts#L22 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .github/workflows/close-stale-prs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-stale-prs.yml b/.github/workflows/close-stale-prs.yml index 4fe804c13ad34..3db1526853d2a 100644 --- a/.github/workflows/close-stale-prs.yml +++ b/.github/workflows/close-stale-prs.yml @@ -25,5 +25,5 @@ jobs: important-checks-regex: AutoBuildv2Project1C6BFA3F warn-message: This PR has been in the STATE state for 3 weeks, and looks abandoned. To keep this PR from being closed, please continue work on it. If not, it will automatically be closed in a week. close-message: This PR has been deemed to be abandoned, and will be automatically closed. Please create a new PR for these changes if you think this decision has been made in error. - skip-labels: contribution/core, pr-linter/do-not-close + skip-labels: contribution/core,pr-linter/do-not-close close-label: closed-for-staleness From b23252b99559ad1a1f0e05b6936c60f9c52522ff Mon Sep 17 00:00:00 2001 From: Kaizen Conroy <36202692+kaizencc@users.noreply.github.com> Date: Tue, 15 Aug 2023 17:32:43 -0400 Subject: [PATCH 03/56] chore(prlint): account for same user with multiple reviews (#26765) Apparently the same user can have both a `COMMENTED` review and a `APPROVED` review. See #26763 and the logs from its prlinter github action: ``` evaluation: { "draft": false, "mergeable_state": "behind", "maintainerRequestedChanges": false, "maintainerApproved": false, "communityRequestedChanges": true, // also requested changes "communityApproved": true, // approved "userRequestsExemption": false } ``` Also added more logging so that we can see the full data next time. This PR solves the issue by respecting `APPROVED` over `COMMENTED`. Any trusted reviewer who has `APPROVED` a PR will get the PR to `pr/needs-maintainer-review`. Maintainers can always dismiss those reviews if we find that we want to respect someone else's `COMMENTED` review. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- tools/@aws-cdk/prlint/lint.ts | 17 ++++++++--- tools/@aws-cdk/prlint/test/lint.test.ts | 39 +++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/tools/@aws-cdk/prlint/lint.ts b/tools/@aws-cdk/prlint/lint.ts index 91501eb95e759..7f367705eb692 100644 --- a/tools/@aws-cdk/prlint/lint.ts +++ b/tools/@aws-cdk/prlint/lint.ts @@ -345,6 +345,8 @@ export class PullRequestLinter { pr: Pick, ): Promise { const reviews = await this.client.pulls.listReviews(this.prParams); + console.log(JSON.stringify(reviews.data)); + // NOTE: MEMBER = a member of the organization that owns the repository // COLLABORATOR = has been invited to collaborate on the repository const maintainerRequestedChanges = reviews.data.some( @@ -356,15 +358,22 @@ export class PullRequestLinter { review => review.author_association === 'MEMBER' && review.state === 'APPROVED', ); - const communityRequestedChanges = reviews.data.some( - review => this.getTrustedCommunityMembers().includes(review.user?.login ?? '') - && review.state === 'COMMENTED', // community members can only approve or comment - ); + const communityApproved = reviews.data.some( review => this.getTrustedCommunityMembers().includes(review.user?.login ?? '') && review.state === 'APPROVED', ); + // NOTE: community members can only approve or comment, but it is possible + // for the same member to have both an approved review and a commented review. + // we solve this issue by turning communityRequestedChanges to false if + // communityApproved is true. We can always dismiss an approved review if we want + // to respect someone else's requested changes. + const communityRequestedChanges = communityApproved ? false : reviews.data.some( + review => this.getTrustedCommunityMembers().includes(review.user?.login ?? '') + && review.state === 'COMMENTED', + ); + const prLinterFailed = reviews.data.find((review) => review.user?.login === 'aws-cdk-automation' && review.state !== 'DISMISSED') as Review; const userRequestsExemption = pr.labels.some(label => (label.name === Exemption.REQUEST_EXEMPTION || label.name === Exemption.REQUEST_CLARIFICATION)); console.log('evaluation: ', JSON.stringify({ diff --git a/tools/@aws-cdk/prlint/test/lint.test.ts b/tools/@aws-cdk/prlint/test/lint.test.ts index c693af201bc47..50bd81b2c7f2b 100644 --- a/tools/@aws-cdk/prlint/test/lint.test.ts +++ b/tools/@aws-cdk/prlint/test/lint.test.ts @@ -738,6 +738,45 @@ describe('integration tests required on features', () => { }); }); + test('needs a maintainer review if a community member has approved p2, regardless of other community reviews', async () => { + // GIVEN + mockListReviews.mockImplementation(() => { + return { + data: [ + { id: 1111122223, user: { login: 'pahud' }, state: 'COMMENTED' }, + { id: 1111122223, user: { login: 'pahud' }, state: 'APPROVED' }, + ], + }; + }); + (pr as any).labels = [ + { + name: 'pr/needs-community-review', + }, + ]; + + // WHEN + const prLinter = configureMock(pr); + await prLinter.validateStatusEvent(pr as any, { + sha: SHA, + context: linter.CODE_BUILD_CONTEXT, + state: 'success', + } as any); + + // THEN + expect(mockRemoveLabel.mock.calls[0][0]).toEqual({ + issue_number: 1234, + name: 'pr/needs-community-review', + owner: 'aws', + repo: 'aws-cdk', + }); + expect(mockAddLabel.mock.calls[0][0]).toEqual({ + issue_number: 1234, + labels: ['pr/needs-maintainer-review'], + owner: 'aws', + repo: 'aws-cdk', + }); + }); + test('trusted community member can "request changes" on p2 PR by commenting', async () => { // GIVEN mockListReviews.mockImplementation(() => { From 72481a319b6e71e848e684d79a203c220a393584 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 16 Aug 2023 11:09:11 -0400 Subject: [PATCH 04/56] chore: npm-check-updates && yarn upgrade (#26775) Ran npm-check-updates and yarn upgrade to keep the `yarn.lock` file up-to-date. --- package.json | 4 +- .../@aws-cdk-testing/cli-integ/package.json | 2 +- .../framework-integ/package.json | 4 +- .../app/package.json | 2 +- .../@aws-cdk/aws-amplify-alpha/package.json | 6 +- .../@aws-cdk/aws-redshift-alpha/package.json | 6 +- .../custom-resource-handlers/package.json | 6 +- .../integ-runner/THIRD_PARTY_LICENSES | 2 +- .../@aws-cdk/integ-tests-alpha/package.json | 8 +- packages/aws-cdk-lib/package.json | 40 +- packages/aws-cdk/THIRD_PARTY_LICENSES | 2 +- .../app/typescript/package.json | 2 +- .../lib/typescript/package.json | 2 +- .../sample-app/typescript/package.json | 2 +- packages/aws-cdk/package.json | 2 +- packages/cdk-assets/package.json | 2 +- tools/@aws-cdk/node-bundle/package.json | 2 +- yarn.lock | 2835 +++++++++-------- 18 files changed, 1465 insertions(+), 1464 deletions(-) diff --git a/package.json b/package.json index 6313934749522..4756155a19828 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "build-all": "tsc -b" }, "devDependencies": { - "@nx/workspace": "^16.6.0", + "@nx/workspace": "^16.7.0", "@types/node": "18.11.19", "@types/prettier": "2.6.0", "@yarnpkg/lockfile": "^1.1.0", @@ -29,7 +29,7 @@ "jsii-reflect": "1.87.0", "jsii-rosetta": "~5.1.9", "lerna": "^7.1.5", - "nx": "^16.6.0", + "nx": "^16.7.0", "patch-package": "^6.5.1", "semver": "^7.5.4", "standard-version": "^9.5.0", diff --git a/packages/@aws-cdk-testing/cli-integ/package.json b/packages/@aws-cdk-testing/cli-integ/package.json index a0098125d9311..589cc36be89c3 100644 --- a/packages/@aws-cdk-testing/cli-integ/package.json +++ b/packages/@aws-cdk-testing/cli-integ/package.json @@ -39,7 +39,7 @@ }, "dependencies": { "@octokit/rest": "^18.12.0", - "aws-sdk": "^2.1435.0", + "aws-sdk": "^2.1437.0", "axios": "^0.27.2", "fs-extra": "^9.1.0", "glob": "^7.2.3", diff --git a/packages/@aws-cdk-testing/framework-integ/package.json b/packages/@aws-cdk-testing/framework-integ/package.json index f2f218790ccad..c8f2f1d98f015 100644 --- a/packages/@aws-cdk-testing/framework-integ/package.json +++ b/packages/@aws-cdk-testing/framework-integ/package.json @@ -39,9 +39,9 @@ "@aws-cdk/integ-tests-alpha": "0.0.0", "@aws-cdk/lambda-layer-kubectl-v24": "^2.0.242", "aws-cdk-lib": "0.0.0", - "aws-sdk": "^2.1435.0", + "aws-sdk": "^2.1437.0", "aws-sdk-mock": "5.6.0", - "cdk8s": "^2.40.0", + "cdk8s": "^2.45.0", "cdk8s-plus-24": "2.12.1", "constructs": "^10.0.0" }, diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/sdk-call-integ-test-docker-app/app/package.json b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/sdk-call-integ-test-docker-app/app/package.json index f40383e68ef2d..dc93565976a21 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/sdk-call-integ-test-docker-app/app/package.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/sdk-call-integ-test-docker-app/app/package.json @@ -2,6 +2,6 @@ "name": "eks-service-account-sdk-call-integ-test", "private": "true", "dependencies": { - "aws-sdk": "^2.1435.0" + "aws-sdk": "^2.1437.0" } } diff --git a/packages/@aws-cdk/aws-amplify-alpha/package.json b/packages/@aws-cdk/aws-amplify-alpha/package.json index b185dde7f2a0f..69f89d9d7cc03 100644 --- a/packages/@aws-cdk/aws-amplify-alpha/package.json +++ b/packages/@aws-cdk/aws-amplify-alpha/package.json @@ -86,9 +86,9 @@ "@aws-cdk/cdk-build-tools": "0.0.0", "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", - "@aws-sdk/client-amplify": "^3.388.0", - "@aws-sdk/client-s3": "^3.388.0", - "@aws-sdk/s3-request-presigner": "^3.388.0", + "@aws-sdk/client-amplify": "^3.391.0", + "@aws-sdk/client-s3": "^3.391.0", + "@aws-sdk/s3-request-presigner": "^3.391.0", "@types/jest": "^29.5.3", "aws-cdk-lib": "0.0.0", "constructs": "^10.0.0" diff --git a/packages/@aws-cdk/aws-redshift-alpha/package.json b/packages/@aws-cdk/aws-redshift-alpha/package.json index c38352f2ac772..49145c2d8833b 100644 --- a/packages/@aws-cdk/aws-redshift-alpha/package.json +++ b/packages/@aws-cdk/aws-redshift-alpha/package.json @@ -84,9 +84,9 @@ "@aws-cdk/cdk-build-tools": "0.0.0", "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", - "@aws-sdk/client-redshift": "^3.388.0", - "@aws-sdk/client-redshift-data": "^3.388.0", - "@aws-sdk/client-secrets-manager": "^3.389.0", + "@aws-sdk/client-redshift": "^3.391.0", + "@aws-sdk/client-redshift-data": "^3.391.0", + "@aws-sdk/client-secrets-manager": "^3.391.0", "@types/jest": "^29.5.3", "aws-cdk-lib": "0.0.0", "constructs": "^10.0.0", diff --git a/packages/@aws-cdk/custom-resource-handlers/package.json b/packages/@aws-cdk/custom-resource-handlers/package.json index bea14cd223ff6..6e72ce89d890a 100644 --- a/packages/@aws-cdk/custom-resource-handlers/package.json +++ b/packages/@aws-cdk/custom-resource-handlers/package.json @@ -29,11 +29,11 @@ "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^29.5.3", "jest": "^29.6.2", - "esbuild": "^0.19.1" + "esbuild": "^0.19.2" }, "dependencies": { - "@aws-sdk/client-ecr": "^3.388.0", - "@aws-sdk/client-s3": "^3.388.0" + "@aws-sdk/client-ecr": "^3.391.0", + "@aws-sdk/client-s3": "^3.391.0" }, "repository": { "url": "https://github.com/aws/aws-cdk.git", diff --git a/packages/@aws-cdk/integ-runner/THIRD_PARTY_LICENSES b/packages/@aws-cdk/integ-runner/THIRD_PARTY_LICENSES index 00fe9f264158f..872cb163f715f 100644 --- a/packages/@aws-cdk/integ-runner/THIRD_PARTY_LICENSES +++ b/packages/@aws-cdk/integ-runner/THIRD_PARTY_LICENSES @@ -176,7 +176,7 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE ---------------- -** aws-sdk@2.1435.0 - https://www.npmjs.com/package/aws-sdk/v/2.1435.0 | Apache-2.0 +** aws-sdk@2.1437.0 - https://www.npmjs.com/package/aws-sdk/v/2.1437.0 | Apache-2.0 AWS SDK for JavaScript Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/integ-tests-alpha/package.json b/packages/@aws-cdk/integ-tests-alpha/package.json index f179eff8a1430..5adcb9df55969 100644 --- a/packages/@aws-cdk/integ-tests-alpha/package.json +++ b/packages/@aws-cdk/integ-tests-alpha/package.json @@ -70,10 +70,10 @@ "@aws-cdk/integ-runner": "0.0.0", "@aws-cdk/pkglint": "0.0.0", "@aws-cdk/sdk-v2-to-v3-adapter": "0.0.0", - "@aws-sdk/client-ec2": "^3.390.0", - "@aws-sdk/client-s3": "^3.388.0", - "@aws-sdk/client-sfn": "^3.388.0", - "@aws-sdk/types": "^3.387.0", + "@aws-sdk/client-ec2": "^3.392.0", + "@aws-sdk/client-s3": "^3.391.0", + "@aws-sdk/client-sfn": "^3.391.0", + "@aws-sdk/types": "^3.391.0", "@types/fs-extra": "^9.0.13", "@types/jest": "^29.5.3", "aws-sdk-client-mock": "^3.0.0", diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index ea5459837b2c6..eb5ac86bdb618 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -145,36 +145,36 @@ "@aws-cdk/pkglint": "0.0.0", "@aws-cdk/sdk-v2-to-v3-adapter": "0.0.0", "@aws-cdk/spec2cdk": "0.0.0", - "@aws-sdk/client-acm": "^3.388.0", - "@aws-sdk/client-account": "^3.388.0", - "@aws-sdk/client-codepipeline": "^3.388.0", - "@aws-sdk/client-cloudwatch-logs": "^3.388.0", - "@aws-sdk/client-dynamodb": "^3.388.0", - "@aws-sdk/client-ec2": "^3.390.0", - "@aws-sdk/client-ecr": "^3.388.0", - "@aws-sdk/client-eks": "^3.388.0", - "@aws-sdk/client-iam": "^3.388.0", - "@aws-sdk/client-lambda": "^3.388.0", - "@aws-sdk/client-route-53": "^3.388.0", - "@aws-sdk/client-s3": "^3.388.0", - "@aws-sdk/client-sfn": "^3.388.0", - "@aws-sdk/client-ssm": "^3.388.0", - "@aws-sdk/client-sts": "^3.388.0", - "@aws-sdk/credential-providers": "^3.389.0", + "@aws-sdk/client-acm": "^3.391.0", + "@aws-sdk/client-account": "^3.391.0", + "@aws-sdk/client-codepipeline": "^3.391.0", + "@aws-sdk/client-cloudwatch-logs": "^3.391.0", + "@aws-sdk/client-dynamodb": "^3.391.0", + "@aws-sdk/client-ec2": "^3.392.0", + "@aws-sdk/client-ecr": "^3.391.0", + "@aws-sdk/client-eks": "^3.391.0", + "@aws-sdk/client-iam": "^3.391.0", + "@aws-sdk/client-lambda": "^3.391.0", + "@aws-sdk/client-route-53": "^3.391.0", + "@aws-sdk/client-s3": "^3.391.0", + "@aws-sdk/client-sfn": "^3.391.0", + "@aws-sdk/client-ssm": "^3.391.0", + "@aws-sdk/client-sts": "^3.391.0", + "@aws-sdk/credential-providers": "^3.391.0", "@aws-sdk/node-http-handler": "^3.370.0", - "@aws-sdk/types": "^3.387.0", + "@aws-sdk/types": "^3.391.0", "@types/aws-lambda": "^8.10.119", "@types/jest": "^29.5.3", "@types/lodash": "^4.14.197", "@types/punycode": "^2.1.0", - "aws-sdk": "^2.1435.0", + "aws-sdk": "^2.1437.0", "aws-sdk-client-mock": "^3.0.0", "aws-sdk-client-mock-jest": "^3.0.0", "aws-sdk-mock": "5.8.0", - "cdk8s": "^2.40.0", + "cdk8s": "^2.45.0", "constructs": "^10.0.0", "delay": "5.0.0", - "esbuild": "^0.19.1", + "esbuild": "^0.19.2", "fast-check": "^2.25.0", "fs-extra": "^11.1.1", "jest": "^29.6.2", diff --git a/packages/aws-cdk/THIRD_PARTY_LICENSES b/packages/aws-cdk/THIRD_PARTY_LICENSES index d5c745bd50ea3..a257ab579f8b3 100644 --- a/packages/aws-cdk/THIRD_PARTY_LICENSES +++ b/packages/aws-cdk/THIRD_PARTY_LICENSES @@ -238,7 +238,7 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE ---------------- -** aws-sdk@2.1435.0 - https://www.npmjs.com/package/aws-sdk/v/2.1435.0 | Apache-2.0 +** aws-sdk@2.1437.0 - https://www.npmjs.com/package/aws-sdk/v/2.1437.0 | Apache-2.0 AWS SDK for JavaScript Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/package.json b/packages/aws-cdk/lib/init-templates/app/typescript/package.json index 189d7f02c3a87..140ea412a6cb1 100644 --- a/packages/aws-cdk/lib/init-templates/app/typescript/package.json +++ b/packages/aws-cdk/lib/init-templates/app/typescript/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@types/jest": "^29.5.3", - "@types/node": "20.4.10", + "@types/node": "20.5.0", "jest": "^29.6.2", "ts-jest": "^29.1.1", "aws-cdk": "%cdk-version%", diff --git a/packages/aws-cdk/lib/init-templates/lib/typescript/package.json b/packages/aws-cdk/lib/init-templates/lib/typescript/package.json index 1883b312f8452..1972c16c2d28d 100644 --- a/packages/aws-cdk/lib/init-templates/lib/typescript/package.json +++ b/packages/aws-cdk/lib/init-templates/lib/typescript/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "@types/jest": "^29.5.3", - "@types/node": "20.4.10", + "@types/node": "20.5.0", "aws-cdk-lib": "%cdk-version%", "constructs": "%constructs-version%", "jest": "^29.6.2", diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/package.json b/packages/aws-cdk/lib/init-templates/sample-app/typescript/package.json index cf141eae93192..f11539d33d90f 100644 --- a/packages/aws-cdk/lib/init-templates/sample-app/typescript/package.json +++ b/packages/aws-cdk/lib/init-templates/sample-app/typescript/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@types/jest": "^29.5.3", - "@types/node": "20.4.10", + "@types/node": "20.5.0", "jest": "^29.6.2", "ts-jest": "^29.1.1", "aws-cdk": "%cdk-version%", diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index 5c848103561c8..3796392a98e2f 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -98,7 +98,7 @@ "@aws-cdk/region-info": "0.0.0", "@jsii/check-node": "1.87.0", "archiver": "^5.3.1", - "aws-sdk": "^2.1435.0", + "aws-sdk": "^2.1437.0", "camelcase": "^6.3.0", "cdk-assets": "0.0.0", "chalk": "^4", diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index ebbff63cf9b1e..89931a9fe4f85 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -46,7 +46,7 @@ "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "archiver": "^5.3.1", - "aws-sdk": "^2.1435.0", + "aws-sdk": "^2.1437.0", "glob": "^7.2.3", "mime": "^2.6.0", "yargs": "^16.2.0" diff --git a/tools/@aws-cdk/node-bundle/package.json b/tools/@aws-cdk/node-bundle/package.json index 19cac3ff1e668..e44a2122a8f10 100644 --- a/tools/@aws-cdk/node-bundle/package.json +++ b/tools/@aws-cdk/node-bundle/package.json @@ -31,7 +31,7 @@ "typescript": "^4.5.5" }, "dependencies": { - "esbuild": "^0.19.1", + "esbuild": "^0.19.2", "fs-extra": "^10.1.0", "license-checker": "^25.0.1", "madge": "^5.0.2", diff --git a/yarn.lock b/yarn.lock index c48c1c79f16eb..75711b6c0dccf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -152,1040 +152,1040 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-sdk/client-account@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-account/-/client-account-3.388.0.tgz#4b01d335579166575b9ff2730602cafa8ca9ff59" - integrity sha512-lGVpZYRGB6KIlRmejviSnH2D4Azq2p3wtREAXwP4AIOkG+J9DdryynAFBMP7KoshqdZVUugZlBqMuU5Mn90asg== +"@aws-sdk/client-account@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-account/-/client-account-3.391.0.tgz#ee8cf75964641f9f58d02368c256fac1fa2f7f88" + integrity sha512-3uIfbsnphjI+ywtC9tsZ/iWp5/CykAmUg5/dFGZCk/QDTt9KQfLEZG5bWLY2mCGFzcYu8RS5K9z6kVyElcZqlg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/client-acm@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-acm/-/client-acm-3.388.0.tgz#565d8cda99004f65f0fd32c0e1c84cf497e3cdde" - integrity sha512-GO/wwAiH2/9InZ9kOR9ppHYMoz8lSt6aldgdymE3ygenlpvixh3F1fMiDlGeeefHwesouU1Xc8DHvc81T0AkxA== +"@aws-sdk/client-acm@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-acm/-/client-acm-3.391.0.tgz#d6cbca2ffc60ce07f9c697e7e65297be332a83c6" + integrity sha512-sI/8VEXYDK+GU7PSXCYsyxFsJWs89XmQsM/m/QrSvb3UIirRLs0PsdClhoocuEMEVlpBEYb0XBlWTPexpYWN8w== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" tslib "^2.5.0" -"@aws-sdk/client-amplify@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-amplify/-/client-amplify-3.388.0.tgz#523db38fd38af1c2fa1a1ba590f043211ea574f5" - integrity sha512-IAEh6KvQuv3WAWfjNPLMNpTc73az7r7qdJr1qggoAUppVDdVhe4thnlIkKgy7TbV4+yrKMi0GXuKRfGylBzAuQ== +"@aws-sdk/client-amplify@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-amplify/-/client-amplify-3.391.0.tgz#53fd081203f9bdc5f64a24fc33fdda387e08bc51" + integrity sha512-MOGpTudelmORhxQJGzRePZSN+93AE/yrMA5V/rmxjPSrZENDysUaYASmZ9EJ1DNd9fcf3+sIiV/5PhuIXGlfyA== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/client-cloudwatch-logs@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.388.0.tgz#0fa2eee631b52d412bae17e4b95c5639335570ac" - integrity sha512-xgHeBpwdkXHEqwMEAhfDqH0A6WsYLNmtLvlgam26FojBA0XCUN6OzVOxaS4faKd41cCYMVWZdI1luue2coz2Ug== +"@aws-sdk/client-cloudwatch-logs@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.391.0.tgz#a44f977d038a24b467af48ac3d0bfb68997ba307" + integrity sha512-pDKYTatvWZ8AH337aZ129H3IlyjzT2GMKFN0lVIhemQipRtD9AfQYrzohpclRGy0Eosi7NvPRcef+2ZCJc2MhQ== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/client-codepipeline@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-codepipeline/-/client-codepipeline-3.388.0.tgz#1bb16303f01c2451749cb938fbb27fdaf19ac5d4" - integrity sha512-pWYd5hmq6Ia45zue4fVgT/r0SQblAE0adyzTyynh02bVGPWmt1Zy06UufiLQnvi3O2m6pB0YEaDJ8ARYEwJSvw== +"@aws-sdk/client-codepipeline@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-codepipeline/-/client-codepipeline-3.391.0.tgz#55e081f704f81b85089ff18dea5a4a8aeb26d6da" + integrity sha512-2uAHe00RA38RXveFsm8uYTF6OcRhG0ERUvYHzSBsT9+OYyrqrTKLgng1PvsvO8trruqqoFi08Xz9fixepnJbCQ== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" uuid "^8.3.2" -"@aws-sdk/client-cognito-identity@3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.388.0.tgz#619aea0cdade15aa6d13d44a0a5b8d711a990a29" - integrity sha512-5sCogMJ1utRlwLQiameyOrrcyhueknbsC2YK1G9Y7pgmgUl2zzUo7htQS2luW71SeBHiwkTQa3OZjbmGsotJvg== +"@aws-sdk/client-cognito-identity@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.391.0.tgz#4f69ed3936280bcb93cf5c710bd60526a4ea3109" + integrity sha512-5mlkdrLP6sTG6D+q/qFw6vPVegFGSy1XcVUdERmWo6fvR7mYlRNETGC5sNsGPcMhnN3MCviqxCJmXpwnsP7okg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/client-dynamodb@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.388.0.tgz#c3eb59907c176ff6a5d92031965eb82dd809b91e" - integrity sha512-P1u8ViTiRU+7mJLHZi+FE7FECpRCt6kLBs+FmM6Xy42TVXX379OFCKmvnQO66LJYNuwEKKV8Gb7rKIbikHJpig== +"@aws-sdk/client-dynamodb@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.391.0.tgz#dbc9fcd6487068cd1bd93bc9b9fef0605f2a38cc" + integrity sha512-3JDes5VeZ1jT8L+lq3zUQZUsWm+V8VTKyQzyJkCAOa69pguEo4qmPNVIbtpka83OYCBk3cFpZ1hjVnZAR164EQ== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-endpoint-discovery" "3.387.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-endpoint-discovery" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" tslib "^2.5.0" uuid "^8.3.2" -"@aws-sdk/client-ec2@^3.390.0": - version "3.390.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-ec2/-/client-ec2-3.390.0.tgz#3b34f91d883d4b85eebcf25e360e0a29efaa4536" - integrity sha512-xfK32UXSejRZ+PgclW5RJ6ixW0DnoXWsTlrcfThtAkkXleAAyFqlVf+joC7qCQ4Bs7PhZrb0jPfCr+tC6h5jCA== +"@aws-sdk/client-ec2@^3.392.0": + version "3.392.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-ec2/-/client-ec2-3.392.0.tgz#6accf32685eaa49b93808d2bcf2feb7787b140a5" + integrity sha512-S7OvFQ2OjvD65mRuQy2V9DJ0bkdxvrXVb9vPToyX8+EUc7nDpSyjk4GGK4pRpldnlXihQhhyPlSTWkNYkxxUfQ== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-sdk-ec2" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-sdk-ec2" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" fast-xml-parser "4.2.5" tslib "^2.5.0" uuid "^8.3.2" -"@aws-sdk/client-ecr@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-ecr/-/client-ecr-3.388.0.tgz#d415a61a14714e97b247ecff571f75b3c463dfb5" - integrity sha512-OqVBU57dFGNyOX0M25HlEIKj02t6XUhgGFQxVnblkW8hVxI8zhAEcHAu1bXFaRjSj30WdTpEzPIC/WE/MshCdQ== +"@aws-sdk/client-ecr@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-ecr/-/client-ecr-3.391.0.tgz#6eebf2114fb61f886fc58063cfd04030365c1b3c" + integrity sha512-ZUNsqiuo2Cm/EUWAu4/kVxvReFd2HfNNVfu7O+rz/YyLbEU+NCIdgh2x3lh75CJ0WW9y806VMQElwL81YkY38Q== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" tslib "^2.5.0" -"@aws-sdk/client-eks@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-eks/-/client-eks-3.388.0.tgz#a711e14d25b4c5006b1b8090a7b7ce9e8c325af5" - integrity sha512-KpaNyWPUXol7wz5N/yqGmj2MBpE7pO+sfJPBWvqCO/oG//R26iRJojpaGYC2o/aGtVfXUnGCyBUhq4zsHhlI0g== +"@aws-sdk/client-eks@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-eks/-/client-eks-3.391.0.tgz#8da0066f603c1e2ff8946976ba0880bdd7e7d6a4" + integrity sha512-Z8tb7wOgn7q3vPpUOeRQnk8kktcHA4VE/B/6QpJQwyxEjx0AWXkA4jowzKHQVqShbh5vrHnOULVI38lMdvPgBg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" tslib "^2.5.0" uuid "^8.3.2" -"@aws-sdk/client-iam@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.388.0.tgz#4e777c2793a4809a42ed738b05aac71ae2d35aa1" - integrity sha512-7p2VxYnRjPdYVU6+EE0ORItJPEjSkHGohy/ShVoDGdhp5mqVCMS02ErQ/GUAhudkw1fEQSYFjIlsijQBqTyiPQ== +"@aws-sdk/client-iam@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.391.0.tgz#0c753c82189bb56f05b0f31e8fcd42e3024a650a" + integrity sha512-UsZAt0ZApWa24w/iKbnpHDIz5xkEZz0leMG0TzEQpkbRHR6D9olt6jabJMpA+c1hZPCTMsiTvRLWCUT0W+s/jg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/client-lambda@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.388.0.tgz#168101fea0c8434916418ada260218ce43921841" - integrity sha512-Xqkp87s9S1hFURZqHCUqHuvV5NQw2jm9H53fJRZIFLFb1HRRbAKHKlKLASw5BgD1qq3TlMscHh8KRCM8a5vwPA== +"@aws-sdk/client-lambda@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.391.0.tgz#88e2d9eee31bf02fe0b7482431a1e8d37d7ca864" + integrity sha512-NulxmBFKIJ1l6GeKD+kYzQioi3HsIRKCWRzosNxtyhCwPRqFp9dzJ6S4024hEyeDN2q3OYknMz5oOQnQn2pvTg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/eventstream-serde-browser" "^2.0.2" - "@smithy/eventstream-serde-config-resolver" "^2.0.2" - "@smithy/eventstream-serde-node" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/eventstream-serde-browser" "^2.0.3" + "@smithy/eventstream-serde-config-resolver" "^2.0.3" + "@smithy/eventstream-serde-node" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" - "@smithy/util-stream" "^2.0.2" + "@smithy/util-stream" "^2.0.3" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" tslib "^2.5.0" -"@aws-sdk/client-redshift-data@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-redshift-data/-/client-redshift-data-3.388.0.tgz#f22dfe1189f8086d2aaba58ed423e2d63db4731d" - integrity sha512-HjgjTk7UGy9sMEExw+EEvWHF0K71Eq5V5CAa5xbiHOH0uMATv9LfBQk9DXV7CsxrEYSDDqC/EmH/XUCajeMplw== +"@aws-sdk/client-redshift-data@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-redshift-data/-/client-redshift-data-3.391.0.tgz#da08baa3e88c947b1951984336e8dde46aa89405" + integrity sha512-w1RMNaUgK75muzeICu0rnQ+iWVLySIcMXEpAHwTtPAFXsEkpLQ8w+b9C2E/I5l49CI3HuZ173JL3Mxw280miZQ== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" uuid "^8.3.2" -"@aws-sdk/client-redshift@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-redshift/-/client-redshift-3.388.0.tgz#20ae50ee4c0e67bba44d322d124cdaaeffcb4a97" - integrity sha512-Hxqb29+4afVkubWLB1xgWFtu9cY4ByhHrF6omVMQwY9K/9WjYN62rbu7IaO4O3CdSZCucWsWUxJczV5hPcanoQ== +"@aws-sdk/client-redshift@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-redshift/-/client-redshift-3.391.0.tgz#4108f14bfc88790fb379d2fd628ecb5b234b52c4" + integrity sha512-lrVS7XBfmGOgrs2Axkr1NP/K8fQ+fN6lAkRBH6OblN3bkFIupmFt115uWl1ZSrPFtNHD3vKeIu0m6iTCVzLyKA== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/client-route-53@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.388.0.tgz#38648a8c05b573cc925a027bc207ac92e634d21b" - integrity sha512-XuSFs3K0na0zfLpbK01Qd0xtx5W+wAM6ZjWF5yMl8zcRblq/nCxBaK+E+2LmfrLrIsp+EKCA1YMD2fWhSGYspA== +"@aws-sdk/client-route-53@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.391.0.tgz#d74f44724c0fa3c745aa03d14a7684e31723784c" + integrity sha512-O8Lx7gX8hNJErSlaGAV43w9ipiBAmJ8qoCXaOp9RB2yB/8czpkjV3bbL2yutIFCQLtychENFZ1zX2cf/jH5eBg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-sdk-route53" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-sdk-route53" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" "@aws-sdk/xml-builder" "3.310.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/client-s3@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.388.0.tgz#d9b091d8670583233145a5c4991470c688840790" - integrity sha512-9UN8gtr/4e4YnHb3Kb4VsxGTDe6olkL90ivK09jKwG2SX8m5OY2fIHSjtyqUHDuFb67JOk3WVEMbZEfxfx46+w== +"@aws-sdk/client-s3@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.391.0.tgz#1a9a9531c2f7e19277e1aed65ec22b983a713689" + integrity sha512-QGRcawQFYM/WtaKgr15oi2xzoqhniqp9aAGDVW+iClbOtMfXr2o79RDqPGKge+uQsmw2we0qgvphypDm7RMMgw== dependencies: "@aws-crypto/sha1-browser" "3.0.0" "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-bucket-endpoint" "3.387.0" - "@aws-sdk/middleware-expect-continue" "3.387.0" - "@aws-sdk/middleware-flexible-checksums" "3.387.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-location-constraint" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-sdk-s3" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-ssec" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/signature-v4-multi-region" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-bucket-endpoint" "3.391.0" + "@aws-sdk/middleware-expect-continue" "3.391.0" + "@aws-sdk/middleware-flexible-checksums" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-location-constraint" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-sdk-s3" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-ssec" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/signature-v4-multi-region" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" "@aws-sdk/xml-builder" "3.310.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/eventstream-serde-browser" "^2.0.2" - "@smithy/eventstream-serde-config-resolver" "^2.0.2" - "@smithy/eventstream-serde-node" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-blob-browser" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/hash-stream-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/md5-js" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@smithy/config-resolver" "^2.0.3" + "@smithy/eventstream-serde-browser" "^2.0.3" + "@smithy/eventstream-serde-config-resolver" "^2.0.3" + "@smithy/eventstream-serde-node" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-blob-browser" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/hash-stream-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/md5-js" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" - "@smithy/util-stream" "^2.0.2" + "@smithy/util-stream" "^2.0.3" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/client-secrets-manager@^3.389.0": - version "3.389.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.389.0.tgz#4e1b71b722d42c0885d2da0bc6dcff9431e2a0e4" - integrity sha512-WcBLh43TG6Gau6HHR9Sk+ZveZWQS29CU1z3KtawF6/rxixyDjOnKTc6pkN6o0iBZ2TweO9nlNQHbgUBfGVgfdQ== +"@aws-sdk/client-secrets-manager@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.391.0.tgz#a418cb0c3ffd84e72becbdb6f95b333c8b011b1c" + integrity sha512-4Av0D9rSoNS/N/5Kmdra4xM5ioDD7Hxc+Kl8vi8Uz4pTXK7F/0rplWESAyJTj4T2l3vT6AO5Ge0HkiZJVmjk1Q== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" uuid "^8.3.2" -"@aws-sdk/client-sfn@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sfn/-/client-sfn-3.388.0.tgz#73d21a99670beff5adb8988d2880e3a57f9e511e" - integrity sha512-qdh3Gzn72z66kUlDXsDwnDFbaGaFl0sz2iU91kVcC9TFyZRIRi3K+moaF9jBwk+Lt4xQsulCHgmrE/YpTrQ55w== +"@aws-sdk/client-sfn@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sfn/-/client-sfn-3.391.0.tgz#816e9368cf5a74c6f6d624ccb76271fa8aed24c6" + integrity sha512-RxH7S42K87eEDoSVegsZTxOq+0aPkRi8/eXMtvim0y2zKApjm/UD9Pkc7vRAdMRKpwFndLLcjtwWqgKMh1xcEw== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/client-ssm@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.388.0.tgz#e59167c08b4784dc6b17725e5e4030266e8ef70b" - integrity sha512-1rkO+tPW5OhdMNYeFlsvyd8YV/h68X9RwZC9GkYkVR6ORX6DSZoqvRzgDqxDvxl6MbXL3gp9tY/2jv26OfKkFA== +"@aws-sdk/client-ssm@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.391.0.tgz#44025be05795a7da3a3a75d08db005b3dbd6778c" + integrity sha512-gxRz80Xok8kgWHr+cQsj8sfvbNv2Fi0thKc13xj3WMEJbV6xPulM5s2jJLyEpJxE3vxqYCtgBOH7pibtqZVZPw== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" - "@smithy/util-waiter" "^2.0.2" + "@smithy/util-waiter" "^2.0.3" tslib "^2.5.0" uuid "^8.3.2" -"@aws-sdk/client-sso@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.387.0.tgz#d2182c09ad8d75a1a8896c2765e6f8729118660f" - integrity sha512-E7uKSvbA0XMKSN5KLInf52hmMpe9/OKo6N9OPffGXdn3fNEQlvyQq3meUkqG7Is0ldgsQMz5EUBNtNybXzr3tQ== +"@aws-sdk/client-sso@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.391.0.tgz#9baf8f4871e2cd3f087839486547a91ea506189e" + integrity sha512-aT+O1CbWIWYlCtWK6g3ZaMvFNImOgFGurOEPscuedqzG5UQc1bRtRrGYShLyzcZgfXP+s0cKYJqgGeRNoWiwqA== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/client-sts@3.388.0", "@aws-sdk/client-sts@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.388.0.tgz#df4363f89de34bd02533056fc335ec8e785f788c" - integrity sha512-y9FAcAYHT8O6T/jqhgsIQUb4gLiSTKD3xtzudDvjmFi8gl0oRIY1npbeckSiK6k07VQugm2s64I0nDnDxtWsBg== +"@aws-sdk/client-sts@3.391.0", "@aws-sdk/client-sts@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.391.0.tgz#19d33625d9ae491c8ff53eebcbda34e1685952e0" + integrity sha512-y+KmorcUx9o5O99sXVPbhGUpsLpfhzYRaYCqxArLsyzZTCO6XDXMi8vg/xtS+b703j9lWEl5GxAv2oBaEwEnhQ== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-sdk-sts" "3.387.0" - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-sdk-sts" "3.391.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/credential-provider-cognito-identity@3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.388.0.tgz#eef13de274198e592b516cdf6f906d2df5a00971" - integrity sha512-j1oyBc0/O76YouOC2wMZuQUfHOjfrKWgBibIwrwqEqacYWMx/IBxZkk9j2fFerIVaKhhMNkZHAGb+qBx0urR/Q== +"@aws-sdk/credential-provider-cognito-identity@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.391.0.tgz#07b2b92e1528de4df38bd0b8153a13b605c18f84" + integrity sha512-60B2WDGJOijluCzeTQDzPWgGuAhYKTcYnK5fNMi9xzHBqw+IhPaGYcmAx1bQGY7SuoZBqVgt1h6fiNxY8TWO5w== dependencies: - "@aws-sdk/client-cognito-identity" "3.388.0" - "@aws-sdk/types" "3.387.0" + "@aws-sdk/client-cognito-identity" "3.391.0" + "@aws-sdk/types" "3.391.0" "@smithy/property-provider" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-env@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.387.0.tgz#7323eada10228c0157195a922d10638cd65c293c" - integrity sha512-PVqNk7XPIYe5CMYNvELkcALtkl/pIM8/uPtqEtTg+mgnZBeL4fAmgXZiZMahQo1DxP5t/JaK384f6JG+A0qDjA== +"@aws-sdk/credential-provider-env@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.391.0.tgz#95ee11d77572809f4d88b3e219b9685625612d66" + integrity sha512-mAzICedcg4bfL0mM5O6QTd9mQ331NLse1DMr6XL21ZZiLB48ej19L7AGV2xq5QwVbqKU3IVv1myRyhvpDM9jMg== dependencies: - "@aws-sdk/types" "3.387.0" + "@aws-sdk/types" "3.391.0" "@smithy/property-provider" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-ini@3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.388.0.tgz#284b6dd2da4f3f8f53b2fa1838085148a478b936" - integrity sha512-3dg3A8AiZ5vXkSAYyyI3V/AW3Eo6KQJyE/glA+Nr2M0oAjT4z3vHhS3pf2B+hfKGZBTuKKgxusrrhrQABd/Diw== +"@aws-sdk/credential-provider-ini@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.391.0.tgz#fa18423b01bf4c2f2fdc6d9b6fdb6764dca4f2f0" + integrity sha512-DJZmbmRMqNSfSV7UF8eBVhADz16KAMCTxnFuvgioHHfYUTZQEhCxRHI8jJqYWxhLTriS7AuTBIWr+1AIbwsCTA== dependencies: - "@aws-sdk/credential-provider-env" "3.387.0" - "@aws-sdk/credential-provider-process" "3.387.0" - "@aws-sdk/credential-provider-sso" "3.388.0" - "@aws-sdk/credential-provider-web-identity" "3.387.0" - "@aws-sdk/types" "3.387.0" + "@aws-sdk/credential-provider-env" "3.391.0" + "@aws-sdk/credential-provider-process" "3.391.0" + "@aws-sdk/credential-provider-sso" "3.391.0" + "@aws-sdk/credential-provider-web-identity" "3.391.0" + "@aws-sdk/types" "3.391.0" "@smithy/credential-provider-imds" "^2.0.0" "@smithy/property-provider" "^2.0.0" "@smithy/shared-ini-file-loader" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-node@3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.388.0.tgz#4c1599e2fdd94cff61f1d5568cade8e595cf4da2" - integrity sha512-BqWAkIG08gj/wevpesaZhAjALjfUNVjseHQRk+DNUoHIfyibW7Ahf3q/GIPs11dA2o8ECwR9/fo68Sq+sK799A== - dependencies: - "@aws-sdk/credential-provider-env" "3.387.0" - "@aws-sdk/credential-provider-ini" "3.388.0" - "@aws-sdk/credential-provider-process" "3.387.0" - "@aws-sdk/credential-provider-sso" "3.388.0" - "@aws-sdk/credential-provider-web-identity" "3.387.0" - "@aws-sdk/types" "3.387.0" +"@aws-sdk/credential-provider-node@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.391.0.tgz#4f88dadb80aa4428378df0b23fb1dbb7c3e5c109" + integrity sha512-LXHQwsTw4WBwRzD9swu8254Hao5MoIaGXIzbhX4EQ84dtOkKYbwiY4pDpLfcHcw3B1lFKkVclMze8WAs4EdEww== + dependencies: + "@aws-sdk/credential-provider-env" "3.391.0" + "@aws-sdk/credential-provider-ini" "3.391.0" + "@aws-sdk/credential-provider-process" "3.391.0" + "@aws-sdk/credential-provider-sso" "3.391.0" + "@aws-sdk/credential-provider-web-identity" "3.391.0" + "@aws-sdk/types" "3.391.0" "@smithy/credential-provider-imds" "^2.0.0" "@smithy/property-provider" "^2.0.0" "@smithy/shared-ini-file-loader" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-process@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.387.0.tgz#114acfbcf9bd289e549fb3fd48acc1a71d7c75b7" - integrity sha512-tQScLHmDlqkQN+mqw4s3cxepEUeHYDhFl5eH+J8puvPqWjXMYpCEdY79SAtWs6SZd4CWiZ0VLeYU6xQBZengbQ== +"@aws-sdk/credential-provider-process@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.391.0.tgz#7f008fa719680dfeab35d77fa6787b7b31b62143" + integrity sha512-KMlzPlBI+hBmXDo+EoFZdLgCVRkRa9B9iEE6x0+hQQ6g9bW6HI7cDRVdceR1ZoPasSaNAZ9QOXMTIBxTpn0sPQ== dependencies: - "@aws-sdk/types" "3.387.0" + "@aws-sdk/types" "3.391.0" "@smithy/property-provider" "^2.0.0" "@smithy/shared-ini-file-loader" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-sso@3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.388.0.tgz#39868ebd160d24348287c8a8e57908f6a5d86046" - integrity sha512-RH02+rntaO0UhnSBr42n+7q8HOztc+Dets/hh6cWovf3Yi9s9ghLgYLN9FXpSosfot3XkmT/HOCa+CphAmGN9A== +"@aws-sdk/credential-provider-sso@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.391.0.tgz#65dfe56596ce98eb7f4106b48e88fd0bd83d2290" + integrity sha512-FT/WoiRHiKys+FcRwvjui0yKuzNtJdn2uGuI1hYE0gpW1wVmW02ouufLckJTmcw09THUZ4w53OoCVU5OY00p8A== dependencies: - "@aws-sdk/client-sso" "3.387.0" - "@aws-sdk/token-providers" "3.388.0" - "@aws-sdk/types" "3.387.0" + "@aws-sdk/client-sso" "3.391.0" + "@aws-sdk/token-providers" "3.391.0" + "@aws-sdk/types" "3.391.0" "@smithy/property-provider" "^2.0.0" "@smithy/shared-ini-file-loader" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-web-identity@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.387.0.tgz#f15431ce00dbfe4f937b4afc706254759a096396" - integrity sha512-6ueMPl+J3KWv6ZaAWF4Z138QCuBVFZRVAgwbtP3BNqWrrs4Q6TPksOQJ79lRDMpv0EUoyVl04B6lldNlhN8RdA== +"@aws-sdk/credential-provider-web-identity@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.391.0.tgz#c27aa6f2a215601a444ad7e3259f3ed55ccb39e7" + integrity sha512-n0vYg82B8bc4rxKltVbVqclev7hx+elyS9pEnZs3YbnbWJq0qqsznXmDfLqd1TcWpa09PGXcah0nsRDolVThsA== dependencies: - "@aws-sdk/types" "3.387.0" + "@aws-sdk/types" "3.391.0" "@smithy/property-provider" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/credential-providers@^3.389.0": - version "3.389.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.389.0.tgz#6e40de6726822904ae73a3df24c43afa0d512179" - integrity sha512-BwGDVg4o/GO7Ql1OeiPThfrG4Y8AYNNYznxepOs3972gvTCOW8mmrmeCkpMi50g3LEDz2emny2kWqEjCaXly+w== - dependencies: - "@aws-sdk/client-cognito-identity" "3.388.0" - "@aws-sdk/client-sso" "3.387.0" - "@aws-sdk/client-sts" "3.388.0" - "@aws-sdk/credential-provider-cognito-identity" "3.388.0" - "@aws-sdk/credential-provider-env" "3.387.0" - "@aws-sdk/credential-provider-ini" "3.388.0" - "@aws-sdk/credential-provider-node" "3.388.0" - "@aws-sdk/credential-provider-process" "3.387.0" - "@aws-sdk/credential-provider-sso" "3.388.0" - "@aws-sdk/credential-provider-web-identity" "3.387.0" - "@aws-sdk/types" "3.387.0" +"@aws-sdk/credential-providers@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.391.0.tgz#5aa7a95dfce48e76fc3f4ae70530f2dedf2cfe60" + integrity sha512-J2fh74zUC3qZnbZol95T9w9PTgmx9NfyIy5JVs43rISdvgnAkD9fXd6YbBfQOxl9Xx9HiZW7Fa3hTxma7d/zlA== + dependencies: + "@aws-sdk/client-cognito-identity" "3.391.0" + "@aws-sdk/client-sso" "3.391.0" + "@aws-sdk/client-sts" "3.391.0" + "@aws-sdk/credential-provider-cognito-identity" "3.391.0" + "@aws-sdk/credential-provider-env" "3.391.0" + "@aws-sdk/credential-provider-ini" "3.391.0" + "@aws-sdk/credential-provider-node" "3.391.0" + "@aws-sdk/credential-provider-process" "3.391.0" + "@aws-sdk/credential-provider-sso" "3.391.0" + "@aws-sdk/credential-provider-web-identity" "3.391.0" + "@aws-sdk/types" "3.391.0" "@smithy/credential-provider-imds" "^2.0.0" "@smithy/property-provider" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" "@aws-sdk/endpoint-cache@3.310.0": @@ -1196,166 +1196,166 @@ mnemonist "0.38.3" tslib "^2.5.0" -"@aws-sdk/middleware-bucket-endpoint@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.387.0.tgz#edcfa94beaec51317de84bf7e12e341a5981b8f7" - integrity sha512-o7Dsq0YTUHFcKXD6+30/fXv/Wzdxqz9WonhCu3ZFPwTDLZgOM4QDDKW8EcC1SplKP1IUyaEli8Affodag9T1cQ== +"@aws-sdk/middleware-bucket-endpoint@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.391.0.tgz#c9fb54062fc3b08c88721b0dc9427bd654d38b2d" + integrity sha512-R8poMkfi54kce6b0d9RQjNm2E+je/dpA1y/TTjCAoWfaBoq6X8UhX6ZD5wdlgg+38FK/2TPjrnXdsm4gtDJuUQ== dependencies: - "@aws-sdk/types" "3.387.0" + "@aws-sdk/types" "3.391.0" "@aws-sdk/util-arn-parser" "3.310.0" - "@smithy/protocol-http" "^2.0.2" - "@smithy/types" "^2.1.0" + "@smithy/protocol-http" "^2.0.3" + "@smithy/types" "^2.2.0" "@smithy/util-config-provider" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/middleware-endpoint-discovery@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.387.0.tgz#9eeac041e138080f1ac52289d4397f4f5ee0868d" - integrity sha512-AA+0IQths+euScAd6p+YQQ8pBvtmQxst/PEyL1GCd6XGkHALVdP0m/tYwbhoRGZucKV8r0bB9gBxT3Ligox5tQ== +"@aws-sdk/middleware-endpoint-discovery@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.391.0.tgz#aaa527656561905a45a8fc06d941ecf2097c39af" + integrity sha512-HoqCuhRyBqDikVBuXwYRRxuTrMpYpg6LBGR3F9Zhdu+18AUui9eUIEd2VazHSq5uojeVhPrdlbB8sxT5TJWNlQ== dependencies: "@aws-sdk/endpoint-cache" "3.310.0" - "@aws-sdk/types" "3.387.0" - "@smithy/protocol-http" "^2.0.2" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/protocol-http" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-expect-continue@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.387.0.tgz#2ac9c1f7845b5b266ac8c3cf3210d462a7012733" - integrity sha512-w415a4tjQc6a7isq0AEDWFBC0HWUCHXEDjDl94UACxfMmS9bVabuf04t9CQ+nBBVs6HdiNdfdc/pBR2pRwx2Yg== +"@aws-sdk/middleware-expect-continue@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.391.0.tgz#b31f945f44d43aa1dbacbb04ecb0e2fb7e763739" + integrity sha512-BdZetUens7vx6PFcDehGTJGFYh/s2SyQk51r5u7OlzYTkdX6DhuBX2CzfzJbswFGKgSHXoiQY0WbSGmNOkRF3A== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/protocol-http" "^2.0.2" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/protocol-http" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-flexible-checksums@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.387.0.tgz#40957a4bae83208ad047053094757cfce9478fc9" - integrity sha512-QlH97rrKlcMyLG+2ps7+DtBHfPyRIpi7sD3y0iko2u3PGXk+PoLPK8wWyGql9sFopOYTl6/Jh2Rb1b6z6NbjEA== +"@aws-sdk/middleware-flexible-checksums@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.391.0.tgz#00dd581d05e4baabfeab18949927493eb5ff07b0" + integrity sha512-To9gjXzLvNQ6xbN2FtTFNjirvy1OmAuQR+mzZPgxFGgGKVPAKYz1+gFqHAEoFJVDyaxHMd8x4F7hEgDoPWQe7Q== dependencies: "@aws-crypto/crc32" "3.0.0" "@aws-crypto/crc32c" "3.0.0" - "@aws-sdk/types" "3.387.0" + "@aws-sdk/types" "3.391.0" "@smithy/is-array-buffer" "^2.0.0" - "@smithy/protocol-http" "^2.0.2" - "@smithy/types" "^2.1.0" + "@smithy/protocol-http" "^2.0.3" + "@smithy/types" "^2.2.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/middleware-host-header@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.387.0.tgz#17c4948b83bb42ed04bdc2346fce4e4f980691e5" - integrity sha512-EWm9PXSr8dSp7hnRth1U7OfelXQp9dLf1yS1kUL+UhppYDJpjhdP7ql3NI4xJKw8e76sP2FuJYEuzWnJHuWoyQ== +"@aws-sdk/middleware-host-header@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.391.0.tgz#80e9745880b671562ff115cd189ea929da51acc3" + integrity sha512-+nyNr0rb2ixY7mU48nibr7L7gsw37y4oELhqgnNKhcjZDJ34imBwKIMFa64n21FdftmhcjR8IdSpzXE9xrkJ8g== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/protocol-http" "^2.0.2" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/protocol-http" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-location-constraint@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.387.0.tgz#e563fd37fb9ba2dd4f929450f38026fd2a633789" - integrity sha512-Ipdry2V58CpDcWD0ZTz6yFtpTASEBxbuWdqUUYW7pOkZ/5GPGH8NhBky7M38iGqAO6FNysvWEVCUpIqNGkI1lw== +"@aws-sdk/middleware-location-constraint@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.391.0.tgz#cddca8ed5d33b172fa237cde4572bbc3b4002b1b" + integrity sha512-2ff6/OU7XTMqIZHkyMu4V1xD1iAER/pyT0FNCX2fcc8b0wr0ltBmsJ5Zh+hfMs06/oPO36NDcvJMat/waghHgQ== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-logger@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.387.0.tgz#bbc05eb087989d6addecc58f1baeb39334851e6e" - integrity sha512-FjAvJr1XyaInT81RxUwgifnbXoFJrRBFc64XeFJgFanGIQCWLYxRrK2HV9eBpao/AycbmuoHgLd/f0sa4hZFoQ== +"@aws-sdk/middleware-logger@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.391.0.tgz#b0c61b3599dc9efddb6182337eb6362e3712dadc" + integrity sha512-KOwl5zo16b17JDhqILHBStccBQ2w35em7+/6vdkJdUII6OU8aVIFTlIQT9wOUvd4do6biIRBMZG3IK0Rg7mRDQ== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-recursion-detection@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.387.0.tgz#34beba7dc436dcf13065f5ad99cc239f2f6175b9" - integrity sha512-ZF45T785ru8OwvYZw6awD9Z76OwSMM1eZzj2eY+FDz1cHfkpLjxEiti2iIH1FxbyK7n9ZqDUx29lVlCv238YyQ== +"@aws-sdk/middleware-recursion-detection@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.391.0.tgz#010334cd7945b4b6712f33e2bf0f54d69f214e7b" + integrity sha512-hVR3z59G7pX4pjDQs9Ag1tMgbLeGXOzeAAaNP9fEtHSd3KBMAGQgN3K3b9WPjzE2W0EoloHRJMK4qxZErdde2g== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/protocol-http" "^2.0.2" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/protocol-http" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-sdk-ec2@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-ec2/-/middleware-sdk-ec2-3.387.0.tgz#4b5f0ae3147adaf5b2c43aafe0bcdb94c4fc9195" - integrity sha512-1VOi3yZDNmdrn19/ovZH8mf69l8n2IPG8p2h8KukJ7X+0J6D7K+I+LgyqoSFRBASBT/qvB6MJSw/SazfeQJ5Kw== +"@aws-sdk/middleware-sdk-ec2@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-ec2/-/middleware-sdk-ec2-3.391.0.tgz#adf60d9dc75f846e7829fc39c62a080f7def9390" + integrity sha512-IBiN1c9/6Vm3mqCTVsPffnpOp6NOvj1RL9OfdOlhoF3LOy2Yr2O1p+36fRqzeDtrttvgh8dWKU8ZAf/C6GWjQQ== dependencies: - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-format-url" "3.387.0" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-format-url" "3.391.0" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" "@smithy/signature-v4" "^2.0.0" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-sdk-route53@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-route53/-/middleware-sdk-route53-3.387.0.tgz#22af74bcb873c45ea944dd34270e46cd3d8ebbcf" - integrity sha512-ZDr/O6t6zsgwRzXwfEOl8LensB61i5lkIAzaizBurt7N0dNZJZ/bMb+Z/aAfMwlOgPchAfCk6PadFY7lrpPhHw== +"@aws-sdk/middleware-sdk-route53@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-route53/-/middleware-sdk-route53-3.391.0.tgz#0323bf5ad8123dff22a205c349a74c012dc4962e" + integrity sha512-lUudDRv9+RctDZM+ik+tOrnsdzDAynJAnoCsJO/Ym7a9NRXHG93raTQ0+qrz6eThi16gSrDjT8yui8tnz3QPYw== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-sdk-s3@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.387.0.tgz#35a71ff4d5e38a3cc588a77c7f7a98706f24d30e" - integrity sha512-OIUBDzGhglI6KjXVwPLh7hRbrfCpSTwWRkbXbLrPgZZuzWMoJJ3q59RVkpLnAV9Mdkg6+YA6JTw4k4hcmJblVw== +"@aws-sdk/middleware-sdk-s3@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.391.0.tgz#4b377cd9ddd6be79e5a76e9f105d48d8a7daa41d" + integrity sha512-/G77j3IdZFtzI6CWns5f//xOOJ8DezDD9sEvAlfSiBgJLaL3SUFZLmG+lHqEPzCQyNpNSY5RvuojtjloaLDi5A== dependencies: - "@aws-sdk/types" "3.387.0" + "@aws-sdk/types" "3.391.0" "@aws-sdk/util-arn-parser" "3.310.0" - "@smithy/protocol-http" "^2.0.2" - "@smithy/types" "^2.1.0" + "@smithy/protocol-http" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-sdk-sts@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.387.0.tgz#6bd1e4eb17acc7387fa4231da52378ef77e10b1b" - integrity sha512-7ZzRKOJ4V/JDQmKz9z+FjZqw59mrMATEMLR6ff0H0JHMX0Uk5IX8TQB058ss+ar14qeJ4UcteYzCqHNI0O1BHw== +"@aws-sdk/middleware-sdk-sts@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.391.0.tgz#0e0254ab4c59577c8646ab67939039d977ba93c0" + integrity sha512-6ZXI3Z4QU+TnT5PwKWloGmRHG81tWeI18/zxf9wWzrO2NhYFvITzEJH0vWLLiXdWtn/BYfLULXtDvkTaepbI5A== dependencies: - "@aws-sdk/middleware-signing" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@smithy/types" "^2.1.0" + "@aws-sdk/middleware-signing" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-signing@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.387.0.tgz#74bf5a9cf35239b5745a384a9d8f6f92afbd8328" - integrity sha512-oJXlE0MES8gxNLo137PPNNiOICQGOaETTvq3kBSJgb/gtEAxQajMIlaNT7s1wsjOAruFHt4975nCXuY4lpx7GQ== +"@aws-sdk/middleware-signing@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.391.0.tgz#f16ca8a9a3fa750f4f0f6a4b1baeb4899bf675f6" + integrity sha512-2pAJJlZqaHc0d+cz2FTVrQmWi8ygKfqfczHUo/loCtOaMNtWXBHb/JsLEecs6cXdizy6gi3YsLz6VZYwY4Ssxw== dependencies: - "@aws-sdk/types" "3.387.0" + "@aws-sdk/types" "3.391.0" "@smithy/property-provider" "^2.0.0" - "@smithy/protocol-http" "^2.0.2" + "@smithy/protocol-http" "^2.0.3" "@smithy/signature-v4" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" "@smithy/util-middleware" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/middleware-ssec@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.387.0.tgz#b61c6fa63b25335e408c673201822d6864a7aa34" - integrity sha512-Jtie1gqqcs7ZuYDlz/kuI3CKCXoCL5Ov/Gj5X8/XmwrQJEpuB6z0KY5H1qY0xo+jtAhC8nDPv0GnuLoOfn85hw== +"@aws-sdk/middleware-ssec@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.391.0.tgz#514754024232b1307463cd0b88751eaa27c92c7d" + integrity sha512-Mhz0wBWccjwmFNb9zNLQD9HpPfU/Ygv7HtaPAkcmnWOMuUNhAS6aXExZc3QGE2owzAaLS2g3m24JEE3LsIYZJQ== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/middleware-user-agent@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.387.0.tgz#aa5f9eb4f3cb4d6e0df879d8d84ccaf4f8baf8e5" - integrity sha512-hTfFTwDtp86xS98BKa+RFuLfcvGftxwzrbZeisZV8hdb4ZhvNXjSxnvM3vetW0GUEnY9xHPSGyp2ERRTinPKFQ== +"@aws-sdk/middleware-user-agent@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.391.0.tgz#bcbafbefc1e04966acab4f19662c8a4cea90e7a4" + integrity sha512-LdK9uMNA14zqRw3B79Mhy7GX36qld/GYo93xuu+lr+AQ98leZEdc6GUbrtNDI3fP1Z8TMQcyHUKBml4/B+wXpQ== dependencies: - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@smithy/protocol-http" "^2.0.2" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@smithy/protocol-http" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" "@aws-sdk/node-http-handler@^3.370.0": @@ -1366,78 +1366,78 @@ "@smithy/node-http-handler" "^1.0.2" tslib "^2.5.0" -"@aws-sdk/s3-request-presigner@^3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.388.0.tgz#d40a6624859e28c5eabeae773d20fe984d2b44a5" - integrity sha512-vMdIS5ce5zTEaZUsbpoMf8uQNjF2J2vRizsr5pomV71zLUdLYubSr5TA7fKBSimwjS3XMCyKX2rJkGGVK5JGmQ== - dependencies: - "@aws-sdk/signature-v4-multi-region" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-format-url" "3.387.0" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/protocol-http" "^2.0.2" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" +"@aws-sdk/s3-request-presigner@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.391.0.tgz#67cdf20d4940e03e8c8c671c072ef29a498689d8" + integrity sha512-2cV6utjfV/8EvJjyBSowoYpmCy4HWb7b7PhkdJB5a3hItxi2NdWX2AZhSBit6xYhUdHvOuXcfG4TMGyH5S2NVQ== + dependencies: + "@aws-sdk/signature-v4-multi-region" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-format-url" "3.391.0" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/protocol-http" "^2.0.3" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/signature-v4-multi-region@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.387.0.tgz#f0fab615dd7cff320ba5500611b968ab0581dc44" - integrity sha512-SGuUbEFi8BXYVv4M7Hc0488I7uZbTVBW19j/B7bnyfbKFrndBXM366s/mChx4iELtESQ61AAstyafx5nGj5tIg== +"@aws-sdk/signature-v4-multi-region@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.391.0.tgz#fe76e27245a1973a4b75b6052bc2133ac56fad32" + integrity sha512-YMBWCkk8/Q85mqyf5eOn/XxAYflmxikYAU9ZL11fu9zPTUU2JsrsMJrsQmqia+Lp1jhQNQ9K3QFngG1hECflgQ== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/protocol-http" "^2.0.2" + "@aws-sdk/types" "3.391.0" + "@smithy/protocol-http" "^2.0.3" "@smithy/signature-v4" "^2.0.0" - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" -"@aws-sdk/token-providers@3.388.0": - version "3.388.0" - resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.388.0.tgz#50000f5ca32b58614542a6e25918bc32585535cb" - integrity sha512-2lo1gFJl624kfjo/YdU6zW+k6dEwhoqjNkDNbOZEFgS1KDofHe9GX8W4/ReKb0Ggho5/EcjzZ53/1CjkzUq4tA== +"@aws-sdk/token-providers@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.391.0.tgz#a6706d88e3a5d603c263a4d505fd1186e9cee171" + integrity sha512-kgfArsKLDJE71qQjfXiHiM5cZqgDHlMsqEx35+A65GmTWJaS1PGDqu3ZvVVU8E5mxnCCLw7vho21fsjvH6TBpg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/middleware-host-header" "3.387.0" - "@aws-sdk/middleware-logger" "3.387.0" - "@aws-sdk/middleware-recursion-detection" "3.387.0" - "@aws-sdk/middleware-user-agent" "3.387.0" - "@aws-sdk/types" "3.387.0" - "@aws-sdk/util-endpoints" "3.387.0" - "@aws-sdk/util-user-agent-browser" "3.387.0" - "@aws-sdk/util-user-agent-node" "3.387.0" - "@smithy/config-resolver" "^2.0.2" - "@smithy/fetch-http-handler" "^2.0.2" - "@smithy/hash-node" "^2.0.2" - "@smithy/invalid-dependency" "^2.0.2" - "@smithy/middleware-content-length" "^2.0.2" - "@smithy/middleware-endpoint" "^2.0.2" - "@smithy/middleware-retry" "^2.0.2" - "@smithy/middleware-serde" "^2.0.2" + "@aws-sdk/middleware-host-header" "3.391.0" + "@aws-sdk/middleware-logger" "3.391.0" + "@aws-sdk/middleware-recursion-detection" "3.391.0" + "@aws-sdk/middleware-user-agent" "3.391.0" + "@aws-sdk/types" "3.391.0" + "@aws-sdk/util-endpoints" "3.391.0" + "@aws-sdk/util-user-agent-browser" "3.391.0" + "@aws-sdk/util-user-agent-node" "3.391.0" + "@smithy/config-resolver" "^2.0.3" + "@smithy/fetch-http-handler" "^2.0.3" + "@smithy/hash-node" "^2.0.3" + "@smithy/invalid-dependency" "^2.0.3" + "@smithy/middleware-content-length" "^2.0.3" + "@smithy/middleware-endpoint" "^2.0.3" + "@smithy/middleware-retry" "^2.0.3" + "@smithy/middleware-serde" "^2.0.3" "@smithy/middleware-stack" "^2.0.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/node-http-handler" "^2.0.2" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/node-http-handler" "^2.0.3" "@smithy/property-provider" "^2.0.0" - "@smithy/protocol-http" "^2.0.2" + "@smithy/protocol-http" "^2.0.3" "@smithy/shared-ini-file-loader" "^2.0.0" - "@smithy/smithy-client" "^2.0.2" - "@smithy/types" "^2.1.0" - "@smithy/url-parser" "^2.0.2" + "@smithy/smithy-client" "^2.0.3" + "@smithy/types" "^2.2.0" + "@smithy/url-parser" "^2.0.3" "@smithy/util-base64" "^2.0.0" "@smithy/util-body-length-browser" "^2.0.0" "@smithy/util-body-length-node" "^2.0.0" - "@smithy/util-defaults-mode-browser" "^2.0.2" - "@smithy/util-defaults-mode-node" "^2.0.2" + "@smithy/util-defaults-mode-browser" "^2.0.3" + "@smithy/util-defaults-mode-node" "^2.0.3" "@smithy/util-retry" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@aws-sdk/types@3.387.0", "@aws-sdk/types@^3.222.0", "@aws-sdk/types@^3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.387.0.tgz#15a968344956b2587dbab1224718d72329e050f4" - integrity sha512-YTjFabNwjTF+6yl88f0/tWff018qmmgMmjlw45s6sdVKueWxdxV68U7gepNLF2nhaQPZa6FDOBoA51NaviVs0Q== +"@aws-sdk/types@3.391.0", "@aws-sdk/types@^3.222.0", "@aws-sdk/types@^3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.391.0.tgz#d49b0130943f0c60fd9bc99b2a47ec9720e2dd07" + integrity sha512-QpYVFKMOnzHz/JMj/b8wb18qxiT92U/5r5MmtRz2R3LOH6ooTO96k4ozXCrYr0qNed1PAnOj73rPrrH2wnCJKQ== dependencies: - "@smithy/types" "^2.1.0" + "@smithy/types" "^2.2.0" tslib "^2.5.0" "@aws-sdk/util-arn-parser@3.310.0": @@ -1447,22 +1447,22 @@ dependencies: tslib "^2.5.0" -"@aws-sdk/util-endpoints@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.387.0.tgz#86d7611527ce916c39dfc02641b8be6e0ad8f1f4" - integrity sha512-g7kvuCXehGXHHBw9PkSQdwVyDFmNUZLmfrRmqMyrMDG9QLQrxr4pyWcSaYgTE16yUzhQQOR+QSey+BL6W9/N6g== +"@aws-sdk/util-endpoints@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.391.0.tgz#eb93e1331bd93773c05938001298a6c28e6db571" + integrity sha512-zv4sYDTQhNxyLoekcE02/nk3xvoo6yCHDy1kDJk0MFxOKaqUB+CvZdQBR4YBLSDlD4o4DUBmdYgKT58FfbM8sQ== dependencies: - "@aws-sdk/types" "3.387.0" + "@aws-sdk/types" "3.391.0" tslib "^2.5.0" -"@aws-sdk/util-format-url@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.387.0.tgz#7f69104cf99d35fc0e885490b6ae22cc379a6ef3" - integrity sha512-kiy7+93M1JeEn3pLJhY/q4G3f9tGsSbsgHKg2mDTCIxJaUmnHIYINN9vhEYQcDCMcWvOF0rzkuB9L8uAzR4O3g== +"@aws-sdk/util-format-url@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.391.0.tgz#30a4fb1fd043f4721877bfb09749294d50b59853" + integrity sha512-cddtpaYxKy8Hi2pCZonJ4RHx+T+nx3ESwr/A+r56jou2PQJiQZGg10rt366waU/GsgnVHvXHcC00CzGSbDkDGg== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/querystring-builder" "^2.0.2" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/querystring-builder" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" "@aws-sdk/util-locate-window@^3.0.0": @@ -1472,24 +1472,24 @@ dependencies: tslib "^2.5.0" -"@aws-sdk/util-user-agent-browser@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.387.0.tgz#a59409a168a73a3ce08c0ac831593f864490078e" - integrity sha512-lpgSVvDqx+JjHZCTYs/yQSS7J71dPlJeAlvxc7bmx5m+vfwKe07HAnIs+929DngS0QbAp/VaXbTiMFsInLkO4Q== +"@aws-sdk/util-user-agent-browser@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.391.0.tgz#8ae8f4c9133be90a1ad9efe06b3e1f1ecdad24a6" + integrity sha512-6ipHOB1WdCBNeAMJauN7l2qNE0WLVaTNhkD290/ElXm1FHGTL8yw6lIDIjhIFO1bmbZxDiKApwDiG7ROhaJoxQ== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/types" "^2.2.0" bowser "^2.11.0" tslib "^2.5.0" -"@aws-sdk/util-user-agent-node@3.387.0": - version "3.387.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.387.0.tgz#54ae2e17fb3738c018891bdb67ab4e4cce219e6f" - integrity sha512-r9OVkcWpRYatjLhJacuHFgvO2T5s/Nu5DDbScMrkUD8b4aGIIqsrdZji0vZy9FCjsUFQMM92t9nt4SejrGjChA== +"@aws-sdk/util-user-agent-node@3.391.0": + version "3.391.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.391.0.tgz#f15961e3ce64354912f16a644e1db27d2d431f42" + integrity sha512-PVvAK/Lf4BdB1eJIZtyFpGSslGQwKpYt9/hKs5NlR+qxBMXU9T0DnTqH4GiXZaazvXr7OUVWitIF2b7iKBMTow== dependencies: - "@aws-sdk/types" "3.387.0" - "@smithy/node-config-provider" "^2.0.2" - "@smithy/types" "^2.1.0" + "@aws-sdk/types" "3.391.0" + "@smithy/node-config-provider" "^2.0.3" + "@smithy/types" "^2.2.0" tslib "^2.5.0" "@aws-sdk/util-utf8-browser@^3.0.0": @@ -1836,115 +1836,115 @@ enabled "2.0.x" kuler "^2.0.0" -"@esbuild/android-arm64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.1.tgz#3803e259bb50a82a820a5e339832d42ffba02ffa" - integrity sha512-CqhrKvDSt76I0so/5afqgKrMv41FjbfUKFrcZddMnrZKqJU70I1MWLVJrImJuYMaY4Yb9rn4UKfF7oZ0BOleVw== - -"@esbuild/android-arm@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.1.tgz#131a3bf5681fb50e1e873b79fce8eae98043606b" - integrity sha512-yjTucwcOua52z14RL30JMwmCdylsQ5WrErGkAb6VL0MWPbnwJyLejydaRcUqkPO6g0MowlzavdxrR7AcfCW+yA== - -"@esbuild/android-x64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.1.tgz#d8b5aa54142c04d2fa8dfdd7781929cf50f0246a" - integrity sha512-VA29h01MrPkymIL1bFtvL2L4WPogiMGW2N/M+vXZHHOv6LgA9vjzVskTt0v5LjeCjx1PFDcR0ASKy8Y7Gm+iIA== - -"@esbuild/darwin-arm64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.1.tgz#ce472269315da5342811b7bad901f6be0d456642" - integrity sha512-Be4Cf6WDH7QkLHEpfzQOlBOFdqmqYTSqw2yG3SVmzB3++wy3K7wiNGedezL+q6Jb4weqT9tchO5kkLDC08Jnzg== - -"@esbuild/darwin-x64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.1.tgz#445017aec28152dd340464565a6796276adbd234" - integrity sha512-SewtenJi6zCEfZRSUchb+LgJ/IQw8QvnKECPu/qHII1fLQKnVPUVR+VH2IuS03DD9WWnAi3yfOvBNwtrp3WXtg== - -"@esbuild/freebsd-arm64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.1.tgz#61f70529c0aa2432e0a652b63f99ef1e1f83f7d6" - integrity sha512-TadKO0AaTDAPV2RyGZQ0AaiDTVYg7RsgNaA6OJjXXmoLbTs++NwHtzAmVFBq8Q/P9A11wgkv36HeyAYhWHbW1w== - -"@esbuild/freebsd-x64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.1.tgz#f7658f988c88d6b63777678b89fb8137a07a9df6" - integrity sha512-DrFMGLF0/aAcZgwhtZr1cby7aHlalpFjLCe5CiI8mm0Kqhhc8gyNZKreaZzvir8CQe0H17p9xx6M9ben5R3r0g== - -"@esbuild/linux-arm64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.1.tgz#4245701cda66bfaeaf886d3c065729c98499d7de" - integrity sha512-6ku/R2EzsdjyBaqQn+xGOPbv+BBYBXQYzlA04/46YQLmXkdApi0GYyUwiCXYBxm578iyywzGmM0rep1/q8tuFQ== - -"@esbuild/linux-arm@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.1.tgz#16ab51f1928c5631cbd40b86997198691201fe4c" - integrity sha512-lCWDVPpQO/Dt5MEqctKujgtUVmwQx7J2Q83EqX/9BejN7BIX4fGJ0QKMiIyy21PFh+/64ArN+Ovh1tzYkTt2wg== - -"@esbuild/linux-ia32@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.1.tgz#860b8c9e15259117c2adc3c510eac1fcf4b96e9a" - integrity sha512-8AKFBk9v/zBDsADvK/0BWZUxkjEc0QDwO8rvbHJKqAZx6DF/VSeBxTRmqWeecrJmx+n3kemEwML9z0eD9IHweQ== - -"@esbuild/linux-loong64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.1.tgz#09b4dc90479af7aa62babbdf451cbd1bdc0c76ad" - integrity sha512-6mOS5CxTGD8qOymp2y4KoM4ir+/REgjdJQFYpwP+WqjrWBo+PUevDGeHHjzCdw/R19PkFqS1bRzv8cTCmB/5kA== - -"@esbuild/linux-mips64el@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.1.tgz#92b242fde2d7d9875d3aa249d57f3508f9058934" - integrity sha512-Bzmv6rRMzR4ErG2k/jwfj5jKNzVMVEI1tThuirFdAoE+duUv+jlDnlwxsN3s1eqMzADTOV2sSIcUUOfgv++Dgg== - -"@esbuild/linux-ppc64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.1.tgz#43d07d27dde2819ab6e0dd200174b9a7dd25cb1f" - integrity sha512-mPOxA7bd3nmx8TkuO/9M/tE0fnvmuX0wlpwnTL6DPLgkb/Z/KkupexSIw4cLfznn/fPzD89y17VWBjlVNyrpCQ== - -"@esbuild/linux-riscv64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.1.tgz#293e3027e996446d9d303d61605b5b0c14c238f9" - integrity sha512-znYb2Mhe9xKIDeIYuTD6vCcUltvYzRT5Yq6sVcdhPrGu8DRdsNZS04B2tSeM+j7T03jL4yY+7/G/jxSJJ9LX2A== - -"@esbuild/linux-s390x@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.1.tgz#ac6876f7b0221237792001fd644ca6523a82d5a7" - integrity sha512-BBIE32cyqAYhMOQ42/jnecoF5P/S5lMob2vXSUiFpD3xCFbXOFkjP1OjfFKnalSO9+B5emvPTQFfNQXuLeVGEw== - -"@esbuild/linux-x64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.1.tgz#f2761e507bfb5a975ae89cb0b95b7c10fa283d8b" - integrity sha512-PoCvKdHTIbnHmVJ5OEdewGMSw40HDFRTrC/imwh8vrp695RbSUpOqBqNBT45neK0FQleGFbSE/A9X6HlXPDhqA== - -"@esbuild/netbsd-x64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.1.tgz#c1f948931b14b96cf958c783c7dbec0409782a0c" - integrity sha512-4OrGMPorHCq9h52VLtyyyAmPjC2ZlANx54VDYyCrqXUOi+k0qxnPKXKKprVES67w2mE7TZJx9qZmT+jHeiZbHQ== - -"@esbuild/openbsd-x64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.1.tgz#1d863e5c54a6a8a03e585ab3e3240863fc3a5e58" - integrity sha512-3a7ZYMjBC4P3FKdTmUZHJw7Mhzp71m+iSFFhX1PnLZ03qmyaB2K+vJZCk4PjRjAvm5lSupJQQtM/AFMyLgKlxQ== - -"@esbuild/sunos-x64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.1.tgz#ee66c195f07527eb098d72e3a298398513128f67" - integrity sha512-29yWBN5XfEjXT8yoeVb8cXfN1jAQLB+uskog1vBMhFR+YWOYvsrwPnh4hspETC/JnF95J+iETrvxgOUlICTWIw== - -"@esbuild/win32-arm64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.1.tgz#810ac7fcc15e4c0b606acdb39cd5cf342ba16dd7" - integrity sha512-9Hb/WUXgyXlL55w3iNVyLkN9gq9x+agv3kk80foWbfpOwe7Qw4Vx6JGB+XQdsIfvvP1kShVQPIvBgVj0TxLlVw== - -"@esbuild/win32-ia32@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.1.tgz#c8ae19f2f87d9a6dd4b6c1a490d2c2c010ed315b" - integrity sha512-VGdtEcXX/f01NgoM8emDnpdOyrZCQ7VTwLv89MOl3mvJ5fbCOBMNCa8t7RZS4lf12RS87qOuJFX7Bh9aLTbSxg== - -"@esbuild/win32-x64@0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.1.tgz#8689ddff5792349df358d38d239a73ce58f274ab" - integrity sha512-H6u8OHmJkKJubLbukVOyi9yA5lzK8VE4TFEkZj2vgusTUPvFeMQ8YnWviVc9F6PuKS6ZIpOvi2/sfiW8tQZQ2g== +"@esbuild/android-arm64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.2.tgz#bc35990f412a749e948b792825eef7df0ce0e073" + integrity sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw== + +"@esbuild/android-arm@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.2.tgz#edd1c8f23ba353c197f5b0337123c58ff2a56999" + integrity sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q== + +"@esbuild/android-x64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.2.tgz#2dcdd6e6f1f2d82ea1b746abd8da5b284960f35a" + integrity sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w== + +"@esbuild/darwin-arm64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.2.tgz#55b36bc06d76f5c243987c1f93a11a80d8fc3b26" + integrity sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA== + +"@esbuild/darwin-x64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.2.tgz#982524af33a6424a3b5cb44bbd52559623ad719c" + integrity sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw== + +"@esbuild/freebsd-arm64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.2.tgz#8e478a0856645265fe79eac4b31b52193011ee06" + integrity sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ== + +"@esbuild/freebsd-x64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.2.tgz#01b96604f2540db023c73809bb8ae6cd1692d6f3" + integrity sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw== + +"@esbuild/linux-arm64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.2.tgz#7e5d2c7864c5c83ec789b59c77cd9c20d2594916" + integrity sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg== + +"@esbuild/linux-arm@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.2.tgz#c32ae97bc0246664a1cfbdb4a98e7b006d7db8ae" + integrity sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg== + +"@esbuild/linux-ia32@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.2.tgz#3fc4f0fa026057fe885e4a180b3956e704f1ceaa" + integrity sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ== + +"@esbuild/linux-loong64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.2.tgz#633bcaea443f3505fb0ed109ab840c99ad3451a4" + integrity sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw== + +"@esbuild/linux-mips64el@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.2.tgz#e0bff2898c46f52be7d4dbbcca8b887890805823" + integrity sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg== + +"@esbuild/linux-ppc64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.2.tgz#d75798da391f54a9674f8c143b9a52d1dbfbfdde" + integrity sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw== + +"@esbuild/linux-riscv64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.2.tgz#012409bd489ed1bb9b775541d4a46c5ded8e6dd8" + integrity sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw== + +"@esbuild/linux-s390x@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.2.tgz#ece3ed75c5a150de8a5c110f02e97d315761626b" + integrity sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g== + +"@esbuild/linux-x64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.2.tgz#dea187019741602d57aaf189a80abba261fbd2aa" + integrity sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ== + +"@esbuild/netbsd-x64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.2.tgz#bbfd7cf9ab236a23ee3a41b26f0628c57623d92a" + integrity sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ== + +"@esbuild/openbsd-x64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.2.tgz#fa5c4c6ee52a360618f00053652e2902e1d7b4a7" + integrity sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw== + +"@esbuild/sunos-x64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.2.tgz#52a2ac8ac6284c02d25df22bb4cfde26fbddd68d" + integrity sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw== + +"@esbuild/win32-arm64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.2.tgz#719ed5870855de8537aef8149694a97d03486804" + integrity sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg== + +"@esbuild/win32-ia32@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.2.tgz#24832223880b0f581962c8660f8fb8797a1e046a" + integrity sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA== + +"@esbuild/win32-x64@0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.2.tgz#1205014625790c7ff0e471644a878a65d1e34ab0" + integrity sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw== "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" @@ -2708,100 +2708,101 @@ read-package-json-fast "^2.0.3" which "^2.0.2" -"@nrwl/devkit@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.6.0.tgz#f44afd175743fc293606f90f8d67f93f149326df" - integrity sha512-xZEN6wfA1uJwv+FVRQFOHsCcpvGvIYGx2zutbzungDodWkfzlJ3tzIGqYjIpPCBVT83erM6Gscnka2W46AuKfA== +"@nrwl/devkit@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.7.0.tgz#1e343045e6eea1645235417d47900318421fca47" + integrity sha512-QH+2513/eDsCH7eOeweJTc8msly1ozfhIGgFMgpKtzPCv7xc3CyrUMa42tFf/Ld70v6fxp7zftyTsICPA7aOvg== dependencies: - "@nx/devkit" "16.6.0" + "@nx/devkit" "16.7.0" -"@nrwl/tao@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nrwl/tao/-/tao-16.6.0.tgz#7920111d53b02cbb41b71deaf887745c1b0df61d" - integrity sha512-NQkDhmzlR1wMuYzzpl4XrKTYgyIzELdJ+dVrNKf4+p4z5WwKGucgRBj60xMQ3kdV25IX95/fmMDB8qVp/pNQ0Q== +"@nrwl/tao@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nrwl/tao/-/tao-16.7.0.tgz#2670a387b0dfba92d3cc7bdcbd0b1e9053631a50" + integrity sha512-bmzS1drM6qPjXoaIYM2l2xLoB2vCN4a6ZjicYrGA7vAxEDR2Q2+AqiZF5HIAAR2EeT1RrU6D6m9peU9TeBFX3A== dependencies: - nx "16.6.0" + nx "16.7.0" tslib "^2.3.0" -"@nrwl/workspace@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nrwl/workspace/-/workspace-16.6.0.tgz#e4ffac4a24a83a9ac569a75129a2b195dca74b6b" - integrity sha512-Bt2o1tU1ZYQKNtnBbyg62T1ELEdlNwxb5C6MPENnlDB/kkmiLXvPFTzMV2lgDZvMLP6eLazq98P2TQ8jCbY4lA== +"@nrwl/workspace@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nrwl/workspace/-/workspace-16.7.0.tgz#3f4e670f7e8a2568e523a7ae376da867569e42ce" + integrity sha512-vuMMbY5/VhYSPO2NDR8Je+t5xuf6fELsLe40F6oXX2GQBEmRBWUeFvyhkQDrzrQDpt13Y7vuahgVH4kAkBRlUQ== dependencies: - "@nx/workspace" "16.6.0" + "@nx/workspace" "16.7.0" -"@nx/devkit@16.6.0", "@nx/devkit@>=16.5.1 < 17": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/devkit/-/devkit-16.6.0.tgz#965668467ffb790e1c84c6853f377e7cc56f52be" - integrity sha512-rhJ0y+MSPHDuoZPxsOYdj/n5ks+gK74TIMgTb8eZgPT/uR86a4oxf62wUQXgECedR5HzLE2HunbnoLhhJXmpJw== +"@nx/devkit@16.7.0", "@nx/devkit@>=16.5.1 < 17": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/devkit/-/devkit-16.7.0.tgz#ace0534745c54dd9099e2a0bbd1807b82b1ea1c9" + integrity sha512-XR7k9IZa+qXiyIn5NAoB4mJ+V4yl6lRICndBUat4dECgPPJp8phF/ZiO4WEBA6qC6PyjLrd8jh9zAj+/L4+14g== dependencies: - "@nrwl/devkit" "16.6.0" + "@nrwl/devkit" "16.7.0" ejs "^3.1.7" + enquirer "~2.3.6" ignore "^5.0.4" semver "7.5.3" tmp "~0.2.1" tslib "^2.3.0" -"@nx/nx-darwin-arm64@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.6.0.tgz#5d64345403cf7806ce47e6c46ee97345a19933cf" - integrity sha512-8nJuqcWG/Ob39rebgPLpv2h/V46b9Rqqm/AGH+bYV9fNJpxgMXclyincbMIWvfYN2tW+Vb9DusiTxV6RPrLapA== - -"@nx/nx-darwin-x64@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.6.0.tgz#fc04680ed659bd73d7025cc6ca95bcff30878c2c" - integrity sha512-T4DV0/2PkPZjzjmsmQEyjPDNBEKc4Rhf7mbIZlsHXj27BPoeNjEcbjtXKuOZHZDIpGFYECGT/sAF6C2NVYgmxw== - -"@nx/nx-freebsd-x64@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.6.0.tgz#e85cf634c94269738d69df514baf42d13b21aac7" - integrity sha512-Ck/yejYgp65dH9pbExKN/X0m22+xS3rWF1DBr2LkP6j1zJaweRc3dT83BWgt5mCjmcmZVk3J8N01AxULAzUAqA== - -"@nx/nx-linux-arm-gnueabihf@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.6.0.tgz#6f8c76c1125d88a937a518ff0295230a84362f57" - integrity sha512-eyk/R1mBQ3X0PCSS+Cck3onvr3wmZVmM/+x0x9Ai02Vm6q9Eq6oZ1YtZGQsklNIyw1vk2WV9rJCStfu9mLecEw== - -"@nx/nx-linux-arm64-gnu@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.6.0.tgz#21ab044c9277133cb26dd73c4edc536965e0d15f" - integrity sha512-S0qFFdQFDmBIEZqBAJl4K47V3YuMvDvthbYE0enXrXApWgDApmhtxINXSOjSus7DNq9kMrgtSDGkBmoBot61iw== - -"@nx/nx-linux-arm64-musl@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.6.0.tgz#d4220c9deacf89753e720cec95198b812e703941" - integrity sha512-TXWY5VYtg2wX/LWxyrUkDVpqCyJHF7fWoVMUSlFe+XQnk9wp/yIbq2s0k3h8I4biYb6AgtcVqbR4ID86lSNuMA== - -"@nx/nx-linux-x64-gnu@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.6.0.tgz#8acdb3b18836c90d26ba127bd8cecb8efee97176" - integrity sha512-qQIpSVN8Ij4oOJ5v+U+YztWJ3YQkeCIevr4RdCE9rDilfq9RmBD94L4VDm7NRzYBuQL8uQxqWzGqb7ZW4mfHpw== - -"@nx/nx-linux-x64-musl@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.6.0.tgz#d7f1798ed74b4416f531d569dc42479a415b7022" - integrity sha512-EYOHe11lfVfEfZqSAIa1c39mx2Obr4mqd36dBZx+0UKhjrcmWiOdsIVYMQSb3n0TqB33BprjI4p9ZcFSDuoNbA== - -"@nx/nx-win32-arm64-msvc@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.6.0.tgz#90368c7a08609c07d25fa7004983b6821de6c65a" - integrity sha512-f1BmuirOrsAGh5+h/utkAWNuqgohvBoekQgMxYcyJxSkFN+pxNG1U68P59Cidn0h9mkyonxGVCBvWwJa3svVFA== - -"@nx/nx-win32-x64-msvc@16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.6.0.tgz#9a6b74f923bb7113c41f078ec86994162b97df8b" - integrity sha512-UmTTjFLpv4poVZE3RdUHianU8/O9zZYBiAnTRq5spwSDwxJHnLTZBUxFFf3ztCxeHOUIfSyW9utpGfCMCptzvQ== - -"@nx/workspace@16.6.0", "@nx/workspace@^16.6.0": - version "16.6.0" - resolved "https://registry.npmjs.org/@nx/workspace/-/workspace-16.6.0.tgz#0bf78cc4785d8fe396dcc61868948a3b2862223e" - integrity sha512-rh+qTQ/Ahszezx+aLjZfpej314w2mrwz2eJAn6LQmlsSnOLHsVIoVRDAGyqT2OF+29K2r5BQ0jRiB3zyYrb5MQ== - dependencies: - "@nrwl/workspace" "16.6.0" - "@nx/devkit" "16.6.0" +"@nx/nx-darwin-arm64@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.7.0.tgz#bd39d8d0aa1bdd7ef13b73510b8f0ab304861803" + integrity sha512-J7UYS8Rp/Eyjh5RI2l1sydDofbSd8FfXJat0r2uAfN9qxAHJD9DijC08bezSiZqsmkF9IwVkFFufDnbM1uSlxg== + +"@nx/nx-darwin-x64@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.7.0.tgz#0a3eeb5741fcd89e0cacb4133baacfcd4a79a74a" + integrity sha512-gya03azE7iRjozZ/PTX86sw6GXzfAxIqInD47sNFzJbDP7zByMkwoPnfPxyBQDjm8e1UhrfrNgTJSoCdfZ9c5w== + +"@nx/nx-freebsd-x64@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.7.0.tgz#9c98e7eea4aa83da089227ec899da531a64deed0" + integrity sha512-DC/Oi4E4aIxkN8HHcSWxoDr+MoamL6LKLWHx/bauHCoDj8NomSLDTLauffd3kFYicMqv8k1hiWB2WAsXAVALjQ== + +"@nx/nx-linux-arm-gnueabihf@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.7.0.tgz#8e1eb2ef18dfe5749b86b723740b77a5020fa1fd" + integrity sha512-Jya1kiY4+XPdcWdiydsIY1PgCF2j57i//oHY1D1q/FrMmGeXdEeWFSStj47fLew5wfbdHw42lQNPeFMtSYzAyA== + +"@nx/nx-linux-arm64-gnu@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.7.0.tgz#96cf9b5e21b96218d9be3385a0504d727b0e1a89" + integrity sha512-RLRnytYuqjcb6+tq86og8KYHtb4/lRpzujXeTckfoe0nA/z+TkZMIc+LSGbFlIa6Voar1O6+UAw5Fc9/EC909A== + +"@nx/nx-linux-arm64-musl@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.7.0.tgz#aba829d2bdb4ab412466088c1bf667ee38172ac9" + integrity sha512-ZPF+Q0wX2CE81/3ynZfGPPmvMd4ABEwfJ31/7bgingcGSUJ20aIBFbZLdVjX4zO5plofTRujrggIi2SUHBoHzg== + +"@nx/nx-linux-x64-gnu@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.7.0.tgz#baaeb99b09c941348bc0c8b0a6e729fce5f7a2ff" + integrity sha512-HvBZ8DXJ9vwQsOY4F5Vs5c/zgj+Mn/iwY98jXOa8NY4OsIDQQfOtwbiuCruMWD0S34r+yv8PX09MoVh0Qi4+Jg== + +"@nx/nx-linux-x64-musl@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.7.0.tgz#8094105c67bd224edd3f7558e6ad39e2dfe55227" + integrity sha512-hqKX6XGrITfY/yONaWWGHY/DRv1evDLOUluBIGhcGZNKiQAPctE5f3Q29InfUakZV7ct4jYe6M3Rn+gq34QwyA== + +"@nx/nx-win32-arm64-msvc@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.7.0.tgz#607e1de32661242358bc90a873d4546d6f338f68" + integrity sha512-JmLH63ntsunlxveXTU8f5jMKZGNPXU++I8NKd+A+Texb5h90zoc7GDvyVImFTXzx0duU1CGjreQRiBqiOcQ4Ew== + +"@nx/nx-win32-x64-msvc@16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.7.0.tgz#67bc2d079792417ac6681608b59b13d7bc1eab1c" + integrity sha512-R8erkoQ/+6HOCC9JTd3wMIa/VhfCR1Lwzws0mhSe0i5IU1mYdiZi67K8DchSXuLUheeEAZOQB4jW0c6P2jMgWA== + +"@nx/workspace@16.7.0", "@nx/workspace@^16.7.0": + version "16.7.0" + resolved "https://registry.npmjs.org/@nx/workspace/-/workspace-16.7.0.tgz#d30f0d43e6e1bbf9c704a7f354d937be829b7bbe" + integrity sha512-03A3EDJaq00+4cfWqwPS6rI2tuxnNahkvLTkzEbg64emaEgrMbhZHeiaWOD/MAC7FdNfMSCA1zD3IhEL9eMKyg== + dependencies: + "@nrwl/workspace" "16.7.0" + "@nx/devkit" "16.7.0" chalk "^4.1.0" ignore "^5.0.4" - nx "16.6.0" + nx "16.7.0" rxjs "^7.8.0" tslib "^2.3.0" yargs-parser "21.1.1" @@ -3190,12 +3191,12 @@ "@smithy/types" "^1.2.0" tslib "^2.5.0" -"@smithy/abort-controller@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.3.tgz#7e7141b6c2fa90f21f4df38d3ef792f5308f94ce" - integrity sha512-LbQ4fdsVuQC3/18Z/uia5wnk9fk8ikfHl3laYCEGhboEMJ/6oVk3zhydqljMxBCftHGUv7yUrTnZ6EAQhOf+PA== +"@smithy/abort-controller@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.4.tgz#aaa4a16d8cb0e6ca9daa58aaa4a0062aa78d49b5" + integrity sha512-3+3/xRQ0K/NFVtKSiTGsUa3muZnVaBmHrLNgxwoBLZO9rNhwZtjjjf7pFJ6aoucoul/c/w3xobRkgi8F9MWX8Q== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/chunked-blob-reader-native@^2.0.0": @@ -3213,118 +3214,118 @@ dependencies: tslib "^2.5.0" -"@smithy/config-resolver@^2.0.2", "@smithy/config-resolver@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.3.tgz#e81fb1ad688ab28d06203bbaf96098d8c391c629" - integrity sha512-E+fsc6BOzFOc6U6y9ogRH8Pw2HF1NVW14AAYy7l3OTXYWuYxHb/fzDZaA0FvD/dXyFoMy7AV1rYZsGzD4bMKzw== +"@smithy/config-resolver@^2.0.3", "@smithy/config-resolver@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.4.tgz#7d98f287419740936feb6fbfdfca722d40fe4ea5" + integrity sha512-JtKWIKoCFeOY5JGQeEl81AKdIpzeLLSjSMmO5yoKqc58Yn3cxmteylT6Elba3FgAHjK1OthARRXz5JXaKKRB7g== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" "@smithy/util-config-provider" "^2.0.0" "@smithy/util-middleware" "^2.0.0" tslib "^2.5.0" -"@smithy/credential-provider-imds@^2.0.0", "@smithy/credential-provider-imds@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.3.tgz#93cc61deb3b363da1dc8359c254ad4bf8e1c8624" - integrity sha512-2e85iLgSuiGQ8BBFkot88kuv6sT5DHvkDO8FDvGwNunn2ybf24HhEkaWCMxK4pUeHtnA2dMa3hZbtfmJ7KJQig== +"@smithy/credential-provider-imds@^2.0.0", "@smithy/credential-provider-imds@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.4.tgz#426daa813ac4783949c76ac3fcd79bf3da5b1257" + integrity sha512-vW7xoDKZwjjf/2GCwVf/uvZce/QJOAYan9r8UsqlzOrnnpeS2ffhxeZjLK0/emZu8n6qU3amGgZ/BTo3oVtEyQ== dependencies: - "@smithy/node-config-provider" "^2.0.3" - "@smithy/property-provider" "^2.0.3" - "@smithy/types" "^2.2.0" - "@smithy/url-parser" "^2.0.3" + "@smithy/node-config-provider" "^2.0.4" + "@smithy/property-provider" "^2.0.4" + "@smithy/types" "^2.2.1" + "@smithy/url-parser" "^2.0.4" tslib "^2.5.0" -"@smithy/eventstream-codec@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.3.tgz#cb4403497feadf99213762940ac1e825c1f78372" - integrity sha512-3l/uKZBsV/6uMe2qXvh1C8ut/w6JHKgy7ic7N2QPR1SSuNWKNQBX0iVBqJpPtQz0UDeQYM4cNmwDBX+hw74EEw== +"@smithy/eventstream-codec@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.4.tgz#6b823b2af455e5a2b731b89898402abf9e84dd3c" + integrity sha512-DkVLcQjhOxPj/4pf2hNj2kvOeoLczirHe57g7czMNJCUBvg9cpU9hNgqS37Y5sjdEtMSa2oTyCS5oeHZtKgoIw== dependencies: "@aws-crypto/crc32" "3.0.0" - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" "@smithy/util-hex-encoding" "^2.0.0" tslib "^2.5.0" -"@smithy/eventstream-serde-browser@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.3.tgz#36f0386a9d0c6b8789b4db6bf31c4c9a24b48903" - integrity sha512-RwQeTFnc6nOP6iGjdnMFgDG8QtneHKptrVZxjc+be4KIoXGPyF3QAourxnrClxTl+MACXYUaCg6bWCozqfHMOw== +"@smithy/eventstream-serde-browser@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.4.tgz#ce0d9c52a867728c8e23877ca5c9c113b8fb3c14" + integrity sha512-6eY3NZb0kHoHh1j0wK+nZwrEe0qnqUzTBEBr+auB/Dd2GJj6quFVRKG65UnuOym/fnGzM0Cc6vULb7fQqqhbiw== dependencies: - "@smithy/eventstream-serde-universal" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/eventstream-serde-universal" "^2.0.4" + "@smithy/types" "^2.2.1" tslib "^2.5.0" -"@smithy/eventstream-serde-config-resolver@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.3.tgz#e07c15908bcefa6873c4f9107406c853d3fe7900" - integrity sha512-J8QzPnarBiJaPw5DBsZ5O2GHjfPHhCmKV5iVzdcAFt0PD81UWNL9HMwAKx99mY5WWPCaFKvb1yBeN2g/v4uA2w== +"@smithy/eventstream-serde-config-resolver@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.4.tgz#7a4fd423e105b9b225c01557b2ffcaf8dcebe1fd" + integrity sha512-OH+CxOki+MzMhasco3AL9bHw/6u2UcNz0XcP5kvmWTZngZTEiqEEnG6u20LHKu1HD3sDqsdK0n4hyelH5zce6A== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" tslib "^2.5.0" -"@smithy/eventstream-serde-node@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.3.tgz#f595fb8322fc25289213e314a28f2f795f100873" - integrity sha512-085r0AHMhwVF99rlAy8RVMhXMkxay4SdSwRdDUIe4MXQ6r2957BVpm3BcoxRpjcGgnoCldRc9tCRa0TclvUS5w== +"@smithy/eventstream-serde-node@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.4.tgz#47446a5901e86b86d136b7f32dc4b7696892ad51" + integrity sha512-O4KaVw0JdtWJ1Dbo0dBNa2wW5xEbDDTVbn/VY9hxLgS1TXHVPNYuvMP0Du+ZOJGmNul+1dOhIOx9kPBncS2MDg== dependencies: - "@smithy/eventstream-serde-universal" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/eventstream-serde-universal" "^2.0.4" + "@smithy/types" "^2.2.1" tslib "^2.5.0" -"@smithy/eventstream-serde-universal@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.3.tgz#a360c45c91cd64b03f1ba60bb5e738e99bcb44ff" - integrity sha512-51nLy47MmU9Nb4dwlwsmP1XJViP72kuLtIqTeDeRSe5Ah4xfSP/df11roEhzUmE/rUYEkErj64RHkseeuFkCgg== +"@smithy/eventstream-serde-universal@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.4.tgz#d6dcf111173379c73a29bf96819c1eb70b579fca" + integrity sha512-WHgAxBmWqKE6/LuwgbDZckS0ycN34drEMYQAbYGz5SK+Kpakl3zEeJ0DxnFXgdHdlVrlvaYtgzrMqfowH9of6g== dependencies: - "@smithy/eventstream-codec" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/eventstream-codec" "^2.0.4" + "@smithy/types" "^2.2.1" tslib "^2.5.0" -"@smithy/fetch-http-handler@^2.0.2", "@smithy/fetch-http-handler@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.0.3.tgz#e53b6a65f25c9c3b20ec06fbc4795409381d82d6" - integrity sha512-0if2hyn+tDkyK9Tg1bXpo3IMUaezz/FKlaUTwTey3m87hF8gb7a0nKaST4NURE2eUVimViGCB7SH3/i4wFXALg== +"@smithy/fetch-http-handler@^2.0.3", "@smithy/fetch-http-handler@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.0.4.tgz#f895680bd158c20cb5aaf05b046fbacd55b00071" + integrity sha512-1dwR8T+QMe5Gs60NpZgF7ReZp0SXz1O/aX5BdDhsOJh72fi3Bx2UZlDihCdb++9vPyBRMXFRF7I8/C4x8iIm8A== dependencies: - "@smithy/protocol-http" "^2.0.3" - "@smithy/querystring-builder" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/protocol-http" "^2.0.4" + "@smithy/querystring-builder" "^2.0.4" + "@smithy/types" "^2.2.1" "@smithy/util-base64" "^2.0.0" tslib "^2.5.0" -"@smithy/hash-blob-browser@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.3.tgz#6198dd0382e6ddc9d3f27f7b4f85252c12af054d" - integrity sha512-YQywO2eGG4x3klQZ+R7G8X3oCgrzQaCNC3zYq7kcGibE2Z+q9Lzt3prYiODUwAihDJTCG09xHq1p9IW+z/fp+Q== +"@smithy/hash-blob-browser@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.4.tgz#ad84dffc615138c80f52186d5aa854ad849ed278" + integrity sha512-5upzN7wnk+NBtL6rfJXT8NI1HPQKzz+i+qgaGqpfJ8I1OZaBJhYibRFY7s9mmVAi5ghetpvmDuvfwjvzZd2KRg== dependencies: "@smithy/chunked-blob-reader" "^2.0.0" "@smithy/chunked-blob-reader-native" "^2.0.0" - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" tslib "^2.5.0" -"@smithy/hash-node@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.3.tgz#7ff71a884c00e7d0b4993f2a80a99f8d2cff86c4" - integrity sha512-wtN9eiRKEiryXrPbWQ7Acu0D3Uk65+PowtTqOslViMZNcKNlYHsxOP1S9rb2klnzA3yY1WSPO1tG78pjhRlvrQ== +"@smithy/hash-node@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.4.tgz#34ef3a9ebf2de456a6c9ffc4c402e834435ec1a9" + integrity sha512-vZ6a/fvEAFJKNtxJsn0I2WM8uBdypLLhLTpP4BA6fRsBAtwIl5S4wTt0Hspy6uGNn/74LmCxGmFSTMMbSd7ZDA== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" "@smithy/util-buffer-from" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@smithy/hash-stream-node@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.3.tgz#3b3a6756792f3e27e617fa372766ba2aa8ca49bf" - integrity sha512-rFUhbuynRMd1DlYewqXRog2bZIMaDL3sNTAK7fg+7DngPpus7hiIGuXn3tJNnCiqiNuxVrhi/ffWpwt21+8DtA== +"@smithy/hash-stream-node@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.4.tgz#156d6d7b4bfe8c15bcb29f8779183dcb7d5d11f6" + integrity sha512-axmyXnyEm6C9BBSFkmrkdYRDcBOOjxHdCxLUHO/VuTlLI10fC1Km46CzBMC0hRsIdLaR2BYJUEfDLESBXLBhrw== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@smithy/invalid-dependency@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.3.tgz#d9471b1ee5904ee6ec49a61d5ffbc65412f1feb9" - integrity sha512-GtmVXD/s+OZlFG1o3HfUI55aBJZXX5/iznAQkgjRGf8prYoO8GvSZLDWHXJp91arybaJxYd133oJORGf4YxGAg== +"@smithy/invalid-dependency@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.4.tgz#c3a27d8c3661766da720978e17e4e70f5f778ecb" + integrity sha512-zfbPPZFiZvhIXJYKlzQwDUnxmWK/SmyDcM6iQJRZHU2jQZAzhHUXFGIu2lKH9L02VUqysOgQi3S/HY4fhrVT8w== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/is-array-buffer@^2.0.0": @@ -3334,54 +3335,54 @@ dependencies: tslib "^2.5.0" -"@smithy/md5-js@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.3.tgz#fb9e7ace2ddbc385986e6b75352f1a68f4d9046b" - integrity sha512-pYnD2US3SioMynHytq4n2BsB5L6uJ7pWKxl9sQqvWwYJXcT3VSnJ0/9adbVcWE+GrMRlGO4CpRg9SIKpdQYR+Q== +"@smithy/md5-js@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.4.tgz#d533b0b5599d78b5ea5512f01e3341720e13563f" + integrity sha512-MN7tKNljSk0V8tLNFAfLFa5gYb/EPkNvPDMEsXSSZdgL+uD95idz7UyNV34f/0rVuBjKzM1AqULFI7tKpH+Z3w== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@smithy/middleware-content-length@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.3.tgz#6481be833b9daecea710c09d67f89f67de09ba30" - integrity sha512-2FiZ5vu2+iMRL8XWNaREUqqNHjtBubaY9Jb2b3huZ9EbgrXsJfCszK6PPidHTLe+B4T7AISqdF4ZSp9VPXuelg== +"@smithy/middleware-content-length@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.4.tgz#23c8bebc0feffb55b9329432240f40d36f352fb6" + integrity sha512-Pdd+fhRbvizqsgYJ0pLWE6hjhq42wDFWzMj/1T7mEY9tG9bP6/AcdsQK8SAOckrBLURDoeSqTAwPKalsgcZBxw== dependencies: - "@smithy/protocol-http" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/protocol-http" "^2.0.4" + "@smithy/types" "^2.2.1" tslib "^2.5.0" -"@smithy/middleware-endpoint@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.0.3.tgz#47416bbe4237c5d7204f31aef02ce294c34667af" - integrity sha512-gNleUHhu5OKk/nrA6WbpLUk/Wk2hcyCvaw7sZiKMazs+zdzWb0kYzynRf675uCWolbvlw9BvkrVaSJo5TRz+Mg== +"@smithy/middleware-endpoint@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.0.4.tgz#707ec09e37af80dc9a1983d52d2a5079f72be380" + integrity sha512-aLPqkqKjZQ1V718P0Ostpp53nWfwK32uD0HFKSAOT25RvL285dqzGl0PAKDXpyLsPsPmHe0Yrg0AUFkRv4CRbQ== dependencies: - "@smithy/middleware-serde" "^2.0.3" - "@smithy/types" "^2.2.0" - "@smithy/url-parser" "^2.0.3" + "@smithy/middleware-serde" "^2.0.4" + "@smithy/types" "^2.2.1" + "@smithy/url-parser" "^2.0.4" "@smithy/util-middleware" "^2.0.0" tslib "^2.5.0" -"@smithy/middleware-retry@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.3.tgz#419a1136a117da6abecd5aa6d0535a24152d530e" - integrity sha512-BpfaUwgOh8LpWP/x6KBb5IdBmd5+tEpTKIjDt7LWi3IVOYmRX5DjQo1eCEUqlKS1nxws/T7+/IyzvgBq8gF9rw== +"@smithy/middleware-retry@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.4.tgz#eb46d810bd9cc6980236f5e469bb2507d1486b6a" + integrity sha512-stozO6NgH9W/OSfFMOJEtlJCsnJFSoGyV4LHzIVQeXTzZ2RHjmytQ/Ez7GngHGZ1YsB4zxE1qDTXAU0AlaKf2w== dependencies: - "@smithy/protocol-http" "^2.0.3" + "@smithy/protocol-http" "^2.0.4" "@smithy/service-error-classification" "^2.0.0" - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" "@smithy/util-middleware" "^2.0.0" "@smithy/util-retry" "^2.0.0" tslib "^2.5.0" uuid "^8.3.2" -"@smithy/middleware-serde@^2.0.2", "@smithy/middleware-serde@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.3.tgz#637fb9abac625c232fa62aa9e10a5ae3146a84ba" - integrity sha512-5BxuOKL7pXqesvtunniDlvYQXVr7UJEF5nFVoK6+5chf5wplLA8IZWAn3NUcGq/f1u01w2m2q7atCoA6ftRLKA== +"@smithy/middleware-serde@^2.0.3", "@smithy/middleware-serde@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.4.tgz#258f2124f8be6f4027b4bb3307ede2b51ccda198" + integrity sha512-oDttJMMES7yXmopjQHnqTkxu8vZOdjB9VpSj94Ff4/GXdKQH7ozKLNIPq4C568nbeQbBt/gsLb6Ttbx1+j+JPQ== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/middleware-stack@^2.0.0": @@ -3391,14 +3392,14 @@ dependencies: tslib "^2.5.0" -"@smithy/node-config-provider@^2.0.2", "@smithy/node-config-provider@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.0.3.tgz#d2559c5944453c33078221ead2aeb1ae9f53e63e" - integrity sha512-dYSVxOQMqtdmSOBW/J4RPvSYE4KKdGLgFHDJQGNsGo1d3y9IoNLwE32lT7doWwV0ryntlm4QZZwhfb3gISrTtA== +"@smithy/node-config-provider@^2.0.3", "@smithy/node-config-provider@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.0.4.tgz#d6435a2cf9f6ef08761effbe60a4d8ec30365813" + integrity sha512-s9O90cEhkpzZulvdHBBaroZ6AJ5uV6qtmycgYKP1yOCSfPHGIWYwaULdbfxraUsvzCcnMosDNkfckqXYoKI6jw== dependencies: - "@smithy/property-provider" "^2.0.3" - "@smithy/shared-ini-file-loader" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/property-provider" "^2.0.4" + "@smithy/shared-ini-file-loader" "^2.0.4" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/node-http-handler@^1.0.2": @@ -3412,23 +3413,23 @@ "@smithy/types" "^1.2.0" tslib "^2.5.0" -"@smithy/node-http-handler@^2.0.2", "@smithy/node-http-handler@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.0.3.tgz#4878a427821759c93e63218e6f1aaea3bb82f523" - integrity sha512-wUO78aa0VVJVz54Lr1Nw6FYnkatbvh2saHgkT8fdtNWc7I/osaPMUJnRkBmTZZ5w+BIQ1rvr9dbGyYBTlRg2+Q== +"@smithy/node-http-handler@^2.0.3", "@smithy/node-http-handler@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.0.4.tgz#ac45d640a471b496d1ec3fe53e8574e103268bed" + integrity sha512-svqeqkGgQz1B2m3IurHtp1O8vfuUGbqw6vynFmOrvPirRdiIPukHTZW1GN/JuBCtDpq9mNPutSVipfz2n4sZbQ== dependencies: - "@smithy/abort-controller" "^2.0.3" - "@smithy/protocol-http" "^2.0.3" - "@smithy/querystring-builder" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/abort-controller" "^2.0.4" + "@smithy/protocol-http" "^2.0.4" + "@smithy/querystring-builder" "^2.0.4" + "@smithy/types" "^2.2.1" tslib "^2.5.0" -"@smithy/property-provider@^2.0.0", "@smithy/property-provider@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.3.tgz#75b10aa55b253ad70c13f6e46e8ecadda321d9f8" - integrity sha512-SHV1SINUNysJ5HyPrMLHLkdofgalk9+5FnQCB/985hqcUxstN616hPZ7ngOjLpdhKp0yu1ul/esE9Gd4qh1tgg== +"@smithy/property-provider@^2.0.0", "@smithy/property-provider@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.4.tgz#027acbedeed620e91f4604c39d120fa0a2059548" + integrity sha512-OfaUIhnyvOkuCPHWMPkJqX++dUaDKsiZWuZqCdU04Z9dNAl2TtZAh7dw2rsZGb57vq6YH3PierNrDfQJTAKYtg== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/protocol-http@^1.2.0": @@ -3439,12 +3440,12 @@ "@smithy/types" "^1.2.0" tslib "^2.5.0" -"@smithy/protocol-http@^2.0.2", "@smithy/protocol-http@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.3.tgz#1f44f33e8ac89b6ec04db14faeb4835631014f8b" - integrity sha512-yzBYloviSLOwo2RT62vBRCPtk8mc/O2RMJfynEahbX8ZnduHpKaajvx3IuGubhamIbesi7M5HBVecDehBnlb9Q== +"@smithy/protocol-http@^2.0.3", "@smithy/protocol-http@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.4.tgz#11c8963ca2e9f6a5df753855df32b9246abb8df1" + integrity sha512-I1vCZ/m1U424gA9TXkL/pJ3HlRfujY8+Oj3GfDWcrNiWVmAeyx3CTvXw+yMHp2X01BOOu5fnyAa6JwAn1O+txA== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/querystring-builder@^1.1.0": @@ -3456,21 +3457,21 @@ "@smithy/util-uri-escape" "^1.1.0" tslib "^2.5.0" -"@smithy/querystring-builder@^2.0.2", "@smithy/querystring-builder@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.3.tgz#0f6eb065ef577b64b2ac3dc286163b0a6d559753" - integrity sha512-HPSviVgGj9FT4jPdprkfSGF3nhFzpQMST1hOC1Oh6eaRB2KTQCsOZmS7U4IqGErVPafe6f/yRa1DV73B5gO50w== +"@smithy/querystring-builder@^2.0.3", "@smithy/querystring-builder@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.4.tgz#d881779eb218572bd9f59bf5f823fdc021ff7602" + integrity sha512-Jc7UPx1pNeisYcABkoo2Pn4kvomy1UI7uxv7R+1W3806KMAKgYHutWmZG01aPHu2XH0zY2RF2KfGiuialsxHvA== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" "@smithy/util-uri-escape" "^2.0.0" tslib "^2.5.0" -"@smithy/querystring-parser@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.3.tgz#8915ff4a29518b8521649c1375c51f00ec227be2" - integrity sha512-AaiZ2osstDbmOTz5uY+96o0G1E7k1U7dCYrNT8FFcyffdhScTzG7fXr12f5peie2W0XFu2Ub+b6tQwFuZwPoBA== +"@smithy/querystring-parser@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.4.tgz#ae90ff05a4804e4545094c61d0ab08cdd738d011" + integrity sha512-Uh6+PhGxSo17qe2g/JlyoekvTHKn7dYWfmHqUzPAvkW+dHlc3DNVG3++PV48z33lCo5YDVBBturWQ9N/TKn+EA== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/service-error-classification@^2.0.0": @@ -3478,36 +3479,36 @@ resolved "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.0.tgz#bbce07c9c529d9333d40db881fd4a1795dd84892" integrity sha512-2z5Nafy1O0cTf69wKyNjGW/sNVMiqDnb4jgwfMG8ye8KnFJ5qmJpDccwIbJNhXIfbsxTg9SEec2oe1cexhMJvw== -"@smithy/shared-ini-file-loader@^2.0.0", "@smithy/shared-ini-file-loader@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.0.3.tgz#e813a00801ea9287368577f908f64dc7a366606c" - integrity sha512-1Vgco3K0rN5YG2OStoS2zUrBzdcFqgqp475rGdag206PCh7AHzmVSGXL6OpWPAqZl29WUqXfMP8tHOLG0H6vkA== +"@smithy/shared-ini-file-loader@^2.0.0", "@smithy/shared-ini-file-loader@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.0.4.tgz#7f78ffdf1a3ccac98640e26e1f3c5bee64b088a7" + integrity sha512-091yneupXnSqvAU+vLG7h0g4QRRO6TjulpECXYVU6yW/LiNp7QE533DBpaphmbtI6tTC4EfGrhn35gTa0w+GQg== dependencies: - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/signature-v4@^2.0.0": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.3.tgz#4260a2d8699b37cbafba471c50284b07c801b420" - integrity sha512-AZ+951EAcNqas2RTq4xQvuX4uZqPV/zCcbs7ACqpuxcjYAFU2FKRPpQHqsDN0jbJwI3Scw75xhSKcGWFf2/Olg== + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.4.tgz#97d553b9e2a5355b12bdbc0dc97031f04b1fcf42" + integrity sha512-y2xblkS0hb44QJDn9YjPp5aRFYSiI7w0bI3tATE3ybOrII2fppqD0SE3zgvew/B/3rTunuiCW+frTD0W4UYb9Q== dependencies: - "@smithy/eventstream-codec" "^2.0.3" + "@smithy/eventstream-codec" "^2.0.4" "@smithy/is-array-buffer" "^2.0.0" - "@smithy/types" "^2.2.0" + "@smithy/types" "^2.2.1" "@smithy/util-hex-encoding" "^2.0.0" "@smithy/util-middleware" "^2.0.0" "@smithy/util-uri-escape" "^2.0.0" "@smithy/util-utf8" "^2.0.0" tslib "^2.5.0" -"@smithy/smithy-client@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.0.3.tgz#cc3a8ef84c904ba75aa702edcf79973aa0e23e09" - integrity sha512-YP0HakPOJgvX2wvPEAGH9GB3NfuQE8CmBhR13bWtqWuIErmJnInTiSQcLSc0QiXHclH/8Qlq+qjKCR7N/4wvtQ== +"@smithy/smithy-client@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.0.4.tgz#3f983b5a6e60acc00a3e05c65353cf94ac4e192c" + integrity sha512-Dg1dkqyj3jwa03RFs6E4ASmfQ7CjplbGISJIJNSt3F8NfIid2RalbeCMOIHK7VagKh9qngZNyoKxObZC9LB9Lg== dependencies: "@smithy/middleware-stack" "^2.0.0" - "@smithy/types" "^2.2.0" - "@smithy/util-stream" "^2.0.3" + "@smithy/types" "^2.2.1" + "@smithy/util-stream" "^2.0.4" tslib "^2.5.0" "@smithy/types@^1.2.0": @@ -3517,20 +3518,20 @@ dependencies: tslib "^2.5.0" -"@smithy/types@^2.1.0", "@smithy/types@^2.2.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@smithy/types/-/types-2.2.0.tgz#52fa236967729f5a4e2c6c334f1a03930fa86f67" - integrity sha512-Ahpt9KvD0mWeWiyaGo5EBE7KOByLl3jl4CD9Ps/r8qySgzVzo/4qsa+vvstOU3ZEriALmrPqUKIhqHt0Rn+m6g== +"@smithy/types@^2.2.0", "@smithy/types@^2.2.1": + version "2.2.1" + resolved "https://registry.npmjs.org/@smithy/types/-/types-2.2.1.tgz#49f2f32bb2f54822c324ecf347b7706016581a0b" + integrity sha512-6nyDOf027ZeJiQVm6PXmLm7dR+hR2YJUkr4VwUniXA8xZUGAu5Mk0zfx2BPFrt+e5YauvlIqQoH0CsrM4tLkfg== dependencies: tslib "^2.5.0" -"@smithy/url-parser@^2.0.2", "@smithy/url-parser@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.3.tgz#68015a83218b8efb92822273c5ee81c71240297d" - integrity sha512-O7NlbDL4kh+th6qwtL7wNRcPCuOXFRWJzWKywfB/Nv56N1F8KiK0KbPn1z7MU5du/0LgjAMvhkg0mVDyiMCnqw== +"@smithy/url-parser@^2.0.3", "@smithy/url-parser@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.4.tgz#bf06525ac1e234d862297880f1ece7d361d61a23" + integrity sha512-puIQ6+TJpI2AAPw7IGdGG6d2DEcVP5nJqa1VjrxzUcy2Jx7LtGn+gDHY2o9Pc9vQkmoicovTEKgvv7CdqP+0gg== dependencies: - "@smithy/querystring-parser" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/querystring-parser" "^2.0.4" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/util-base64@^2.0.0": @@ -3570,26 +3571,26 @@ dependencies: tslib "^2.5.0" -"@smithy/util-defaults-mode-browser@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.3.tgz#de860befc4571a7e0939b8668169890b43466de9" - integrity sha512-t9cirP55wYeSfDjjvPHSjNiuZj3wc9W3W3fjLXaVzuKKlKX98B9Vj7QM9WHJnFjJdsrYEwolLA8GVdqZeHOkHg== +"@smithy/util-defaults-mode-browser@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.4.tgz#4f13f8aa06092eb6f8eff79f9a618e9c2ba3ea6f" + integrity sha512-wGdnPt4Ng72duUd97HrlqVkq6DKVB/yjaGkSg5n3uuQKzzHjoi3OdjXGumD/VYPHz0dYd7wpLNG2CnMm/nfDrg== dependencies: - "@smithy/property-provider" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/property-provider" "^2.0.4" + "@smithy/types" "^2.2.1" bowser "^2.11.0" tslib "^2.5.0" -"@smithy/util-defaults-mode-node@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.3.tgz#3c6955fe6a516f7ba7a3af5865d678a937a43751" - integrity sha512-Gca+fL0h+tl8cbvoLDMWCVzs1CL4jWLWvz/I6MCYZzaEAKkmd1qO4kPzBeGaI6hGA/IbrlWCFg7L+MTPzLwzfg== - dependencies: - "@smithy/config-resolver" "^2.0.3" - "@smithy/credential-provider-imds" "^2.0.3" - "@smithy/node-config-provider" "^2.0.3" - "@smithy/property-provider" "^2.0.3" - "@smithy/types" "^2.2.0" +"@smithy/util-defaults-mode-node@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.4.tgz#497a77df0c096c8a14ff660fd2d53290b6b826c6" + integrity sha512-QMkNcV6x52BeeeIvhvow6UmOu7nP7DXQljY6DKOP/aAokrli53IWTP/kUTd9B0Mp9tbW3WC10O6zaM69xiMNYw== + dependencies: + "@smithy/config-resolver" "^2.0.4" + "@smithy/credential-provider-imds" "^2.0.4" + "@smithy/node-config-provider" "^2.0.4" + "@smithy/property-provider" "^2.0.4" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@smithy/util-hex-encoding@^2.0.0": @@ -3614,14 +3615,14 @@ "@smithy/service-error-classification" "^2.0.0" tslib "^2.5.0" -"@smithy/util-stream@^2.0.2", "@smithy/util-stream@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.3.tgz#39ce49f43e4622a6bf9b54226c284a4671138702" - integrity sha512-+8n2vIyp6o9KHGey0PoGatcDthwVb7C/EzWfqojXrHhZOXy6l+hnWlfoF8zVerKYH2CUtravdJKRTy7vdkOXfQ== +"@smithy/util-stream@^2.0.3", "@smithy/util-stream@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.4.tgz#e0a4ce27feb18f9f756ab30fcad00bf21b08477b" + integrity sha512-ZVje79afuv3DB1Ma/g5m/5v9Zda8nA0xNgvE1pOD3EnoTp/Ekch1z20AN6gfVsf7JYWK2VSMVDiqI9N8Ua4wbg== dependencies: - "@smithy/fetch-http-handler" "^2.0.3" - "@smithy/node-http-handler" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/fetch-http-handler" "^2.0.4" + "@smithy/node-http-handler" "^2.0.4" + "@smithy/types" "^2.2.1" "@smithy/util-base64" "^2.0.0" "@smithy/util-buffer-from" "^2.0.0" "@smithy/util-hex-encoding" "^2.0.0" @@ -3650,13 +3651,13 @@ "@smithy/util-buffer-from" "^2.0.0" tslib "^2.5.0" -"@smithy/util-waiter@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.3.tgz#e9001142bc3856aee19c26cab21b1857705c2335" - integrity sha512-3/Fzqoyecvh4cNvcHQDl1GznskXjGc9uZ8N6aoaPCKfsctgZad/J13xg8WC1UXc3PwKocHtuUvz0dRFDLaBppQ== +"@smithy/util-waiter@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.4.tgz#29b302386d95fa596be6913de0e292faced67ee2" + integrity sha512-NAzHgewL+sIJw9vlgR4m8btJiu1u0vuQRNRT7Bd5B66h02deFMmOaw1zeGePORZa7zyUwNZ2J5ZPkKzq4ced7Q== dependencies: - "@smithy/abort-controller" "^2.0.3" - "@smithy/types" "^2.2.0" + "@smithy/abort-controller" "^2.0.4" + "@smithy/types" "^2.2.1" tslib "^2.5.0" "@szmarczak/http-timer@^5.0.1": @@ -3914,9 +3915,9 @@ form-data "^3.0.0" "@types/node@*": - version "20.4.10" - resolved "https://registry.npmjs.org/@types/node/-/node-20.4.10.tgz#73c9480791e3ddeb4887a660fc93a7f59353ad45" - integrity sha512-vwzFiiy8Rn6E0MtA13/Cxxgpan/N6UeNYR9oUu6kuJWxu6zCk98trcDp8CBhbtaeuq9SykCmXkFr2lWLoPcvLg== + version "20.5.0" + resolved "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz#7fc8636d5f1aaa3b21e6245e97d56b7f56702313" + integrity sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q== "@types/node@18.11.19": version "18.11.19" @@ -4665,10 +4666,10 @@ aws-sdk-mock@5.8.0: sinon "^14.0.1" traverse "^0.6.6" -aws-sdk@^2.1231.0, aws-sdk@^2.1435.0, aws-sdk@^2.928.0: - version "2.1435.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1435.0.tgz#cc80204e3bc9b8c533233c8d77f2ce75ed02f14e" - integrity sha512-G/dyQIGZHPDIbqbhpBrTU9cddzykLXhQTYwv/7x/3KY4u/M0eTjtQ3CmiykTvoIoCUnQIpsrgMIMHumJpniORw== +aws-sdk@^2.1231.0, aws-sdk@^2.1437.0, aws-sdk@^2.928.0: + version "2.1437.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1437.0.tgz#5b6d9e90da727031b095032b0114d0e085107f05" + integrity sha512-ApsAHaeDQFXM8y6OcRLMzUKXVgDZXPJtq1MLG7cqrKkRIugLMTx3j0UHFfF5j6hLHfX0KWrIOCwXEo6qUjviZQ== dependencies: buffer "4.9.2" events "1.1.1" @@ -4968,15 +4969,15 @@ cacache@^16.0.0, cacache@^16.1.0, cacache@^16.1.3: unique-filename "^2.0.0" cacache@^17.0.0: - version "17.1.3" - resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044" - integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg== + version "17.1.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== dependencies: "@npmcli/fs" "^3.1.0" fs-minipass "^3.0.0" glob "^10.2.2" lru-cache "^7.7.1" - minipass "^5.0.0" + minipass "^7.0.3" minipass-collect "^1.0.2" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" @@ -5051,9 +5052,9 @@ camelcase@^7.0.1: integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== caniuse-lite@^1.0.30001517: - version "1.0.30001519" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz#3e7b8b8a7077e78b0eb054d69e6edf5c7df35601" - integrity sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg== + version "1.0.30001521" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001521.tgz#e9930cf499f7c1e80334b6c1fbca52e00d889e56" + integrity sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ== case@1.6.3, case@^1.6.3: version "1.6.3" @@ -5079,10 +5080,10 @@ cdk8s-plus-24@2.12.1: dependencies: minimatch "^3.1.2" -cdk8s@^2.40.0: - version "2.40.0" - resolved "https://registry.npmjs.org/cdk8s/-/cdk8s-2.40.0.tgz#126d347932161c58012ebfa16b53ade11ae2120e" - integrity sha512-G9L3Toh7/hsmtRWkoGXE8zLNWRgXD3LmkVn9Uhby9ZVb7sPITC0PxUjSOolAtQFRtxUwsV/znKNjLeQuQmnW8Q== +cdk8s@^2.45.0: + version "2.45.0" + resolved "https://registry.npmjs.org/cdk8s/-/cdk8s-2.45.0.tgz#c3e3792fba4f645a82029dec6d2324a8b26fd263" + integrity sha512-03uDz3mDb5tW3RbEpLvBNQ59jOkP6IgDKAwBJLRkW3F1esEW1fs4pHRM2XtSizeCtJxCOhGtO9qOWjsM95b7rw== dependencies: fast-json-patch "^3.1.1" follow-redirects "^1.15.2" @@ -6213,7 +6214,7 @@ dotenv-json@^1.0.0: resolved "https://registry.npmjs.org/dotenv-json/-/dotenv-json-1.0.0.tgz#fc7f672aafea04bed33818733b9f94662332815c" integrity sha512-jAssr+6r4nKhKRudQ0HOzMskOFFi9+ubXWwmrSGJFgTvpjyPXCXsCsYbjif6mXp7uxA7xY3/LGaiTQukZzSbOQ== -dotenv@^16.0.1: +dotenv@^16.0.1, dotenv@~16.3.1: version "16.3.1" resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== @@ -6223,11 +6224,6 @@ dotenv@^8.0.0: resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== -dotenv@~10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - dotgitignore@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz#a4b15a4e4ef3cf383598aaf1dfa4a04bcc089b7b" @@ -6265,9 +6261,9 @@ ejs@^3.1.7: jake "^10.8.5" electron-to-chromium@^1.4.477: - version "1.4.490" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz#d99286f6e915667fa18ea4554def1aa60eb4d5f1" - integrity sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A== + version "1.4.492" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.492.tgz#83fed8beb64ec60578069e15dddd17b13a77ca56" + integrity sha512-36K9b/6skMVwAIEsC7GiQ8I8N3soCALVSHqWHzNDtGemAcI9Xu8hP02cywWM0A794rTHm0b0zHPeLJHtgFVamQ== emittery@^0.13.1: version "0.13.1" @@ -6464,33 +6460,33 @@ es6-weak-map@^2.0.3: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -esbuild@^0.19.1: - version "0.19.1" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.1.tgz#eda3e5d2d0c2e89059464ac895bdf20bea2c26b4" - integrity sha512-IknHHwV4B/H4imOAu+416fuCvPfRjdncoyGi7eunhSvHuHkdNs50sLWan2LEG2Mym07TuW6gJUIyRS9G1miHEg== +esbuild@^0.19.2: + version "0.19.2" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.2.tgz#b1541828a89dfb6f840d38538767c6130dca2aac" + integrity sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg== optionalDependencies: - "@esbuild/android-arm" "0.19.1" - "@esbuild/android-arm64" "0.19.1" - "@esbuild/android-x64" "0.19.1" - "@esbuild/darwin-arm64" "0.19.1" - "@esbuild/darwin-x64" "0.19.1" - "@esbuild/freebsd-arm64" "0.19.1" - "@esbuild/freebsd-x64" "0.19.1" - "@esbuild/linux-arm" "0.19.1" - "@esbuild/linux-arm64" "0.19.1" - "@esbuild/linux-ia32" "0.19.1" - "@esbuild/linux-loong64" "0.19.1" - "@esbuild/linux-mips64el" "0.19.1" - "@esbuild/linux-ppc64" "0.19.1" - "@esbuild/linux-riscv64" "0.19.1" - "@esbuild/linux-s390x" "0.19.1" - "@esbuild/linux-x64" "0.19.1" - "@esbuild/netbsd-x64" "0.19.1" - "@esbuild/openbsd-x64" "0.19.1" - "@esbuild/sunos-x64" "0.19.1" - "@esbuild/win32-arm64" "0.19.1" - "@esbuild/win32-ia32" "0.19.1" - "@esbuild/win32-x64" "0.19.1" + "@esbuild/android-arm" "0.19.2" + "@esbuild/android-arm64" "0.19.2" + "@esbuild/android-x64" "0.19.2" + "@esbuild/darwin-arm64" "0.19.2" + "@esbuild/darwin-x64" "0.19.2" + "@esbuild/freebsd-arm64" "0.19.2" + "@esbuild/freebsd-x64" "0.19.2" + "@esbuild/linux-arm" "0.19.2" + "@esbuild/linux-arm64" "0.19.2" + "@esbuild/linux-ia32" "0.19.2" + "@esbuild/linux-loong64" "0.19.2" + "@esbuild/linux-mips64el" "0.19.2" + "@esbuild/linux-ppc64" "0.19.2" + "@esbuild/linux-riscv64" "0.19.2" + "@esbuild/linux-s390x" "0.19.2" + "@esbuild/linux-x64" "0.19.2" + "@esbuild/netbsd-x64" "0.19.2" + "@esbuild/openbsd-x64" "0.19.2" + "@esbuild/sunos-x64" "0.19.2" + "@esbuild/win32-arm64" "0.19.2" + "@esbuild/win32-ia32" "0.19.2" + "@esbuild/win32-x64" "0.19.2" escalade@^3.1.1: version "3.1.1" @@ -7186,11 +7182,11 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0: minipass "^3.0.0" fs-minipass@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz#5b383858efa8c1eb8c33b39e994f7e8555b8b3a3" - integrity sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g== + version "3.0.3" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" fs.realpath@^1.0.0: version "1.0.0" @@ -7585,9 +7581,9 @@ graphql-tag@^2.12.6: tslib "^2.1.0" graphql@^16.5.0: - version "16.7.1" - resolved "https://registry.npmjs.org/graphql/-/graphql-16.7.1.tgz#11475b74a7bff2aefd4691df52a0eca0abd9b642" - integrity sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg== + version "16.8.0" + resolved "https://registry.npmjs.org/graphql/-/graphql-16.8.0.tgz#374478b7f27b2dc6153c8f42c1b80157f79d79d4" + integrity sha512-0oKGaR+y3qcS5mCu1vb7KG+a89vjn06C7Ihq/dDl3jA+A8B3TKomvi3CiEcVLJQGalbu8F52LxkOym7U5sSfbg== graphviz@0.0.9: version "0.0.9" @@ -8407,9 +8403,9 @@ istanbul-reports@^3.0.2, istanbul-reports@^3.1.3: istanbul-lib-report "^3.0.0" jackspeak@^2.0.3: - version "2.2.3" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.3.tgz#ac63c57c18d254dc78a1f4ecd1cdeb4daeb6e616" - integrity sha512-pF0kfjmg8DJLxDrizHoCZGUFz4P4czQ3HyfW4BU0ffebYkzAVlBywp5zaxW/TM+r0sGbmrQdi8EQQVTJFxnGsQ== + version "2.3.0" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.0.tgz#aa228a94de830f31d4e4f0184427ce91c4ff1493" + integrity sha512-uKmsITSsF4rUWQHzqaRUuyAir3fZfW3f202Ee34lz/gZCi970CPZwyQXLGNgWJvvZbvFyzeyGq0+4fcG/mBKZg== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -10010,11 +10006,11 @@ minipass-fetch@^2.0.3: encoding "^0.1.13" minipass-fetch@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz#d9df70085609864331b533c960fd4ffaa78d15ce" - integrity sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ== + version "3.0.4" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" + integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" minipass-sized "^1.0.3" minizlib "^2.1.2" optionalDependencies: @@ -10071,10 +10067,10 @@ minipass@^5.0.0: resolved "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81" integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" - integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" + integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" @@ -10413,9 +10409,9 @@ npm-bundled@^3.0.0: npm-normalize-package-bin "^3.0.0" npm-check-updates@^16: - version "16.10.18" - resolved "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.18.tgz#6f6fcbc57c519e7ad12d370a18de8afdf021b597" - integrity sha512-dmfhCMX7+UNrBeftBGb1rMX4Qi6+FOI5cuu1VkLeE4LIazbiEYsdgTG+GQywYry+BR9R3EfOXITYPfgRhcdznw== + version "16.11.1" + resolved "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.11.1.tgz#023d400b2eb75cc400d6e2d4b1858ab64a370a71" + integrity sha512-FgfhQc/LpY1u2BZpg+Y/FVoa8XxTjTpnAuSGdHM6CRqOO9pSPFrQ618HS9zf71ox7hPUQqpPvTaIuCpa4px38Q== dependencies: chalk "^5.3.0" cli-table3 "^0.6.3" @@ -10456,9 +10452,9 @@ npm-install-checks@^5.0.0: semver "^7.1.1" npm-install-checks@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz#b459b621634d06546664207fde16810815808db1" - integrity sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw== + version "6.2.0" + resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.2.0.tgz#fae55b9967b03ac309695ec96629492d5cedf371" + integrity sha512-744wat5wAAHsxa4590mWO0tJ8PKxR8ORZsH9wGpQc3nWTzozMAgBN/XyqYw7mg3yqLM8dLwEnwSfKMmXAjF69g== dependencies: semver "^7.1.1" @@ -10707,12 +10703,12 @@ npmlog@^6.0.0, npmlog@^6.0.2: gauge "^4.0.3" set-blocking "^2.0.0" -nx@16.6.0, "nx@>=16.5.1 < 17", nx@^16.6.0: - version "16.6.0" - resolved "https://registry.npmjs.org/nx/-/nx-16.6.0.tgz#58bfc887a65782faaa6298461b6a7ea0fc02695f" - integrity sha512-4UaS9nRakpZs45VOossA7hzSQY2dsr035EoPRGOc81yoMFW6Sqn1Rgq4hiLbHZOY8MnWNsLMkgolNMz1jC8YUQ== +nx@16.7.0, "nx@>=16.5.1 < 17", nx@^16.7.0: + version "16.7.0" + resolved "https://registry.npmjs.org/nx/-/nx-16.7.0.tgz#89c54fe9e927f4cd3033dea58b6e05aa206a0d36" + integrity sha512-PPEI4znnR8k0X5mEriMYDlTXTf3GyDTzBYn5qc+FWIY/P1r8E1cEcb0yWh7eNNSv3qgdJYdkRsPO7hNJINM5SA== dependencies: - "@nrwl/tao" "16.6.0" + "@nrwl/tao" "16.7.0" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" @@ -10722,7 +10718,7 @@ nx@16.6.0, "nx@>=16.5.1 < 17", nx@^16.6.0: cli-cursor "3.1.0" cli-spinners "2.6.1" cliui "^7.0.2" - dotenv "~10.0.0" + dotenv "~16.3.1" enquirer "~2.3.6" fast-glob "3.2.7" figures "3.2.0" @@ -10748,16 +10744,16 @@ nx@16.6.0, "nx@>=16.5.1 < 17", nx@^16.6.0: yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "16.6.0" - "@nx/nx-darwin-x64" "16.6.0" - "@nx/nx-freebsd-x64" "16.6.0" - "@nx/nx-linux-arm-gnueabihf" "16.6.0" - "@nx/nx-linux-arm64-gnu" "16.6.0" - "@nx/nx-linux-arm64-musl" "16.6.0" - "@nx/nx-linux-x64-gnu" "16.6.0" - "@nx/nx-linux-x64-musl" "16.6.0" - "@nx/nx-win32-arm64-msvc" "16.6.0" - "@nx/nx-win32-x64-msvc" "16.6.0" + "@nx/nx-darwin-arm64" "16.7.0" + "@nx/nx-darwin-x64" "16.7.0" + "@nx/nx-freebsd-x64" "16.7.0" + "@nx/nx-linux-arm-gnueabihf" "16.7.0" + "@nx/nx-linux-arm64-gnu" "16.7.0" + "@nx/nx-linux-arm64-musl" "16.7.0" + "@nx/nx-linux-x64-gnu" "16.7.0" + "@nx/nx-linux-x64-musl" "16.7.0" + "@nx/nx-win32-arm64-msvc" "16.7.0" + "@nx/nx-win32-x64-msvc" "16.7.0" nyc@^15.1.0: version "15.1.0" @@ -11376,9 +11372,9 @@ postcss-values-parser@^5.0.0: quote-unquote "^1.0.0" postcss@^8.1.7, postcss@^8.4.6: - version "8.4.27" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" - integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== + version "8.4.28" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" + integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -12458,11 +12454,11 @@ sprintf-js@~1.0.2: integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== ssri@^10.0.0, ssri@^10.0.1: - version "10.0.4" - resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6" - integrity sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ== + version "10.0.5" + resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" + integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" ssri@^9.0.0, ssri@^9.0.1: version "9.0.1" @@ -13146,9 +13142,9 @@ typescript@^4.5.5, typescript@~4.9.5: integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typescript@next: - version "5.3.0-dev.20230811" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.0-dev.20230811.tgz#e4e804b4879d9a667171d3a5b7aefa2c7322e618" - integrity sha512-C4bwx7ZpBwX7bKxrrNl+M1j8yNGmwQ5M58X0mT4VYI1+FHqRvb/uJ4F1uJsVJ+X7iy22iXSICR/Vxnpc1gNk7w== + version "5.3.0-dev.20230816" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.0-dev.20230816.tgz#409982c629164811db1eb62b365ed2e1b526458d" + integrity sha512-iEOudrx61DsbJn+z2bVX+/FldF7ILAuGwQYO2EvF4F33Q8DUV0KSkiikxUB83VVH8ExkwQHVNdtkr16wd2V71w== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -13329,11 +13325,16 @@ v8-compile-cache-lib@^3.0.1: resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3: +v8-compile-cache@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +v8-compile-cache@^2.0.3: + version "2.4.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" + integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== + v8-to-istanbul@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" From 2aa4733e7177df58eacb9d4344fa1a68505aff28 Mon Sep 17 00:00:00 2001 From: Mitchell Valine Date: Wed, 16 Aug 2023 14:10:45 -0700 Subject: [PATCH 05/56] fix: lambda-nodejs default runtime regression (#26763) Previously we changed the default version of the lambda-nodejs Function construct to go from using the `builtInNodeJsCustomResourceRuntime`, a map of regions to available versions, to `lambda.Runtime.NODEJS_18_X`. The default `externalModule` configuration excluded the aws-sdk version based on the runtime passed, excluding v2 for Node16 and under, and v3 for Node18 and up, but users can pass their own bundling configuration excluding `aws-sdk` while not explicitly passing a runtime, which caused their functions to break. Adds a new `lambda.Runtime` value for `NODEJS_LATEST`. This is central reference for the latest version of NodeJS provided by the lamdba service. It also includes a new property `isLatest` which can be used to indicate that the runtime version may change over time. This can used to indicate that relying on packages shipped with the environment may not be relied upon if the version changes. We default to using the `NODEJS_LATEST` runtime only if the feature flag is enabled. If the flag is not enabled, use `NODEJS_16_X` to keep supporting users current bundling configurations. Additionally, add a warning to tell users if they are excluding a package from their bundling that we know doesn't exist within the runtime they are using. IE, if using `NODEJS_18_X` and the exclude list includes `aws-sdk`, warn users that it won't be present. Fixes #26732 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- ...efaultTestDeployAssertD40B5C28.assets.json | 32 + ...aultTestDeployAssertD40B5C28.template.json | 187 + .../index.js | 1 + .../node_modules/.yarn-integrity | 16 + .../node_modules/delay/index.d.ts | 107 + .../node_modules/delay/index.js | 72 + .../node_modules/delay/license | 9 + .../node_modules/delay/package.json | 54 + .../node_modules/delay/readme.md | 173 + .../package.json | 1 + .../yarn.lock | 8 + .../index.js | 31780 ++++++++++++++++ ...cdk-integ-lambda-nodejs-latest.assets.json | 32 + ...k-integ-lambda-nodejs-latest.template.json | 106 + .../test/integ.latest.js.snapshot/cdk.out | 1 + .../test/integ.latest.js.snapshot/integ.json | 13 + .../integ.latest.js.snapshot/manifest.json | 160 + .../test/integ.latest.js.snapshot/tree.json | 340 + .../aws-lambda-nodejs/test/integ.latest.ts | 42 + packages/@aws-cdk/cx-api/FEATURE_FLAGS.md | 22 +- .../aws-cdk-lib/aws-lambda-nodejs/README.md | 33 +- .../aws-lambda-nodejs/lib/bundling.ts | 34 +- .../aws-lambda-nodejs/lib/function.ts | 21 +- .../aws-lambda-nodejs/lib/types.ts | 3 +- .../aws-lambda-nodejs/test/bundling.test.ts | 136 +- .../aws-lambda-nodejs/test/function.test.ts | 51 +- .../aws-cdk-lib/aws-lambda/lib/runtime.ts | 17 + packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md | 22 +- packages/aws-cdk-lib/cx-api/README.md | 18 + packages/aws-cdk-lib/cx-api/lib/features.ts | 16 + 30 files changed, 33448 insertions(+), 59 deletions(-) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/index.js create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/.yarn-integrity create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/index.d.ts create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/index.js create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/license create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/package.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/readme.md create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/package.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/yarn.lock create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.fc4da43a214bb79ca557ca6c54e8dfcc4f2aabbd6672873b7b3ea417576612f5.bundle/index.js create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk-integ-lambda-nodejs-latest.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk-integ-lambda-nodejs-latest.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/integ.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/tree.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.ts diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.assets.json new file mode 100644 index 0000000000000..32d0bb72101b3 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.assets.json @@ -0,0 +1,32 @@ +{ + "version": "33.0.0", + "files": { + "fc4da43a214bb79ca557ca6c54e8dfcc4f2aabbd6672873b7b3ea417576612f5": { + "source": { + "path": "asset.fc4da43a214bb79ca557ca6c54e8dfcc4f2aabbd6672873b7b3ea417576612f5.bundle", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "fc4da43a214bb79ca557ca6c54e8dfcc4f2aabbd6672873b7b3ea417576612f5.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "c62c808ec232ccd52772ad7eaab2455102eb17c02f23a48068cc3a0a4f8fe4f7": { + "source": { + "path": "LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "c62c808ec232ccd52772ad7eaab2455102eb17c02f23a48068cc3a0a4f8fe4f7.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.template.json new file mode 100644 index 0000000000000..98ef8567fef96 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.template.json @@ -0,0 +1,187 @@ +{ + "Resources": { + "LambdaInvoked00748c118c58ddbf17c194faa46eda2": { + "Type": "Custom::DeployAssert@SdkCallLambdainvoke", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "SingletonFunction1488541a7b23466481b69b4408076b81HandlerCD40AE9F", + "Arn" + ] + }, + "service": "Lambda", + "api": "invoke", + "expected": "{\"$ObjectLike\":{\"StatusCode\":200,\"ExecutedVersion\":\"$LATEST\"}}", + "parameters": { + "FunctionName": { + "Fn::Join": [ + "", + [ + "\"", + { + "Fn::ImportValue": "cdk-integ-lambda-nodejs-latest:ExportsOutputReflatestFE0D80B6C9B17E6B" + }, + "\"" + ] + ] + } + }, + "flattenResponse": "false", + "salt": "1692126177944" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "LambdaInvoked00748c118c58ddbf17c194faa46eda2InvokeC0A33EEB": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::ImportValue": "cdk-integ-lambda-nodejs-latest:ExportsOutputReflatestFE0D80B6C9B17E6B" + }, + "Principal": { + "Fn::GetAtt": [ + "SingletonFunction1488541a7b23466481b69b4408076b81Role37ABCE73", + "Arn" + ] + } + } + }, + "SingletonFunction1488541a7b23466481b69b4408076b81Role37ABCE73": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + } + ], + "Policies": [ + { + "PolicyName": "Inline", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "lambda:Invoke" + ], + "Effect": "Allow", + "Resource": [ + "*" + ] + }, + { + "Action": [ + "lambda:InvokeFunction" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":lambda:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":function:", + { + "Fn::ImportValue": "cdk-integ-lambda-nodejs-latest:ExportsOutputReflatestFE0D80B6C9B17E6B" + } + ] + ] + } + ] + } + ] + } + } + ] + } + }, + "SingletonFunction1488541a7b23466481b69b4408076b81HandlerCD40AE9F": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Runtime": "nodejs18.x", + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "fc4da43a214bb79ca557ca6c54e8dfcc4f2aabbd6672873b7b3ea417576612f5.zip" + }, + "Timeout": 120, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "SingletonFunction1488541a7b23466481b69b4408076b81Role37ABCE73", + "Arn" + ] + } + } + } + }, + "Outputs": { + "AssertionResultsLambdaInvoked00748c118c58ddbf17c194faa46eda2": { + "Value": { + "Fn::GetAtt": [ + "LambdaInvoked00748c118c58ddbf17c194faa46eda2", + "assertion" + ] + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/index.js new file mode 100644 index 0000000000000..0f613dec17ba5 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/index.js @@ -0,0 +1 @@ +"use strict";var m=Object.create;var a=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var w=(o,n)=>{for(var r in n)a(o,r,{get:n[r],enumerable:!0})},c=(o,n,r,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of f(n))!d.call(o,t)&&t!==r&&a(o,t,{get:()=>n[t],enumerable:!(e=s(n,t))||e.enumerable});return o};var y=(o,n,r)=>(r=o!=null?m(p(o)):{},c(n||!o||!o.__esModule?a(r,"default",{value:o,enumerable:!0}):r,o)),g=o=>c(a({},"__esModule",{value:!0}),o);var x={};w(x,{handler:()=>u});module.exports=g(x);var i=require("aws-sdk"),l=y(require("delay")),h=new i.S3;async function u(){console.log(h),await(0,l.default)(5)}0&&(module.exports={handler}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/.yarn-integrity b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/.yarn-integrity new file mode 100644 index 0000000000000..36f46a0fce459 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/.yarn-integrity @@ -0,0 +1,16 @@ +{ + "systemParams": "linux-x64-93", + "modulesFolders": [ + "node_modules" + ], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [ + "delay@5.0.0" + ], + "lockfileEntries": { + "delay@5.0.0": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + }, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/index.d.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/index.d.ts new file mode 100644 index 0000000000000..d3d404b3241df --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/index.d.ts @@ -0,0 +1,107 @@ +declare namespace delay { + interface ClearablePromise extends Promise { + /** + Clears the delay and settles the promise. + */ + clear(): void; + } + + /** + Minimal subset of `AbortSignal` that delay will use if passed. + This avoids a dependency on dom.d.ts. + The dom.d.ts `AbortSignal` is compatible with this one. + */ + interface AbortSignal { + readonly aborted: boolean; + addEventListener( + type: 'abort', + listener: () => void, + options?: {once?: boolean} + ): void; + removeEventListener(type: 'abort', listener: () => void): void; + } + + interface Options { + /** + An optional AbortSignal to abort the delay. + If aborted, the Promise will be rejected with an AbortError. + */ + signal?: AbortSignal; + } +} + +type Delay = { + /** + Create a promise which resolves after the specified `milliseconds`. + + @param milliseconds - Milliseconds to delay the promise. + @returns A promise which resolves after the specified `milliseconds`. + */ + (milliseconds: number, options?: delay.Options): delay.ClearablePromise; + + /** + Create a promise which resolves after the specified `milliseconds`. + + @param milliseconds - Milliseconds to delay the promise. + @returns A promise which resolves after the specified `milliseconds`. + */ + ( + milliseconds: number, + options?: delay.Options & { + /** + Value to resolve in the returned promise. + */ + value: T; + } + ): delay.ClearablePromise; + + /** + Create a promise which resolves after a random amount of milliseconds between `minimum` and `maximum` has passed. + + Useful for tests and web scraping since they can have unpredictable performance. For example, if you have a test that asserts a method should not take longer than a certain amount of time, and then run it on a CI, it could take longer. So with `.range()`, you could give it a threshold instead. + + @param minimum - Minimum amount of milliseconds to delay the promise. + @param maximum - Maximum amount of milliseconds to delay the promise. + @returns A promise which resolves after a random amount of milliseconds between `maximum` and `maximum` has passed. + */ + range( + minimum: number, + maximum: number, + options?: delay.Options & { + /** + Value to resolve in the returned promise. + */ + value: T; + } + ): delay.ClearablePromise; + + // TODO: Allow providing value type after https://github.com/Microsoft/TypeScript/issues/5413 is resolved. + /** + Create a promise which rejects after the specified `milliseconds`. + + @param milliseconds - Milliseconds to delay the promise. + @returns A promise which rejects after the specified `milliseconds`. + */ + reject( + milliseconds: number, + options?: delay.Options & { + /** + Value to reject in the returned promise. + */ + value?: unknown; + } + ): delay.ClearablePromise; +}; + +declare const delay: Delay & { + // The types are intentionally loose to make it work with both Node.js and browser versions of these methods. + createWithTimers(timers: { + clearTimeout: (timeoutId: any) => void; + setTimeout: (callback: (...args: any[]) => void, milliseconds: number, ...args: any[]) => unknown; + }): Delay; + + // TODO: Remove this for the next major release. + default: typeof delay; +}; + +export = delay; diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/index.js new file mode 100644 index 0000000000000..7dd2309e1f3aa --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/index.js @@ -0,0 +1,72 @@ +'use strict'; + +// From https://github.com/sindresorhus/random-int/blob/c37741b56f76b9160b0b63dae4e9c64875128146/index.js#L13-L15 +const randomInteger = (minimum, maximum) => Math.floor((Math.random() * (maximum - minimum + 1)) + minimum); + +const createAbortError = () => { + const error = new Error('Delay aborted'); + error.name = 'AbortError'; + return error; +}; + +const createDelay = ({clearTimeout: defaultClear, setTimeout: set, willResolve}) => (ms, {value, signal} = {}) => { + if (signal && signal.aborted) { + return Promise.reject(createAbortError()); + } + + let timeoutId; + let settle; + let rejectFn; + const clear = defaultClear || clearTimeout; + + const signalListener = () => { + clear(timeoutId); + rejectFn(createAbortError()); + }; + + const cleanup = () => { + if (signal) { + signal.removeEventListener('abort', signalListener); + } + }; + + const delayPromise = new Promise((resolve, reject) => { + settle = () => { + cleanup(); + if (willResolve) { + resolve(value); + } else { + reject(value); + } + }; + + rejectFn = reject; + timeoutId = (set || setTimeout)(settle, ms); + }); + + if (signal) { + signal.addEventListener('abort', signalListener, {once: true}); + } + + delayPromise.clear = () => { + clear(timeoutId); + timeoutId = null; + settle(); + }; + + return delayPromise; +}; + +const createWithTimers = clearAndSet => { + const delay = createDelay({...clearAndSet, willResolve: true}); + delay.reject = createDelay({...clearAndSet, willResolve: false}); + delay.range = (minimum, maximum, options) => delay(randomInteger(minimum, maximum), options); + return delay; +}; + +const delay = createWithTimers(); +delay.createWithTimers = createWithTimers; + +module.exports = delay; +// TODO: Remove this for the next major release +module.exports.default = delay; diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/license b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/license new file mode 100644 index 0000000000000..fa7ceba3eb4a9 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/package.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/package.json new file mode 100644 index 0000000000000..c5d45eacf6ff2 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/package.json @@ -0,0 +1,54 @@ +{ + "name": "delay", + "version": "5.0.0", + "description": "Delay a promise a specified amount of time", + "license": "MIT", + "repository": "sindresorhus/delay", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "promise", + "resolve", + "delay", + "defer", + "wait", + "stall", + "timeout", + "settimeout", + "event", + "loop", + "next", + "tick", + "delay", + "async", + "await", + "promises", + "bluebird", + "threshold", + "range", + "random" + ], + "devDependencies": { + "abort-controller": "^3.0.0", + "ava": "1.4.1", + "currently-unhandled": "^0.4.1", + "in-range": "^1.0.0", + "time-span": "^3.0.0", + "tsd": "^0.7.1", + "xo": "^0.24.0" + } +} diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/readme.md b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/readme.md new file mode 100644 index 0000000000000..18ecf2df75aea --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/node_modules/delay/readme.md @@ -0,0 +1,173 @@ +# delay + +> Delay a promise a specified amount of time + +*If you target [Node.js 15](https://medium.com/@nodejs/node-js-v15-0-0-is-here-deb00750f278) or later, you can do `await require('timers/promises').setTimeout(1000)` instead.* + +## Install + +``` +$ npm install delay +``` + +## Usage + +```js +const delay = require('delay'); + +(async () => { + bar(); + + await delay(100); + + // Executed 100 milliseconds later + baz(); +})(); +``` + +## API + +### delay(milliseconds, options?) + +Create a promise which resolves after the specified `milliseconds`. + +### delay.reject(milliseconds, options?) + +Create a promise which rejects after the specified `milliseconds`. + +### delay.range(minimum, maximum, options?) + +Create a promise which resolves after a random amount of milliseconds between `minimum` and `maximum` has passed. + +Useful for tests and web scraping since they can have unpredictable performance. For example, if you have a test that asserts a method should not take longer than a certain amount of time, and then run it on a CI, it could take longer. So with `.range()`, you could give it a threshold instead. + +#### milliseconds +#### mininum +#### maximum + +Type: `number` + +Milliseconds to delay the promise. + +#### options + +Type: `object` + +##### value + +Type: `unknown` + +Optional value to resolve or reject in the returned promise. + +##### signal + +Type: [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) + +The returned promise will be rejected with an AbortError if the signal is aborted. AbortSignal is available in all modern browsers and there is a [ponyfill for Node.js](https://github.com/mysticatea/abort-controller). + +### delayPromise.clear() + +Clears the delay and settles the promise. + +### delay.createWithTimers({clearTimeout, setTimeout}) + +Creates a new `delay` instance using the provided functions for clearing and setting timeouts. Useful if you're about to stub timers globally, but you still want to use `delay` to manage your tests. + +## Advanced usage + +Passing a value: + +```js +const delay = require('delay'); + +(async() => { + const result = await delay(100, {value: '🦄'}); + + // Executed after 100 milliseconds + console.log(result); + //=> '🦄' +})(); +``` + +Using `delay.reject()`, which optionally accepts a value and rejects it `ms` later: + +```js +const delay = require('delay'); + +(async () => { + try { + await delay.reject(100, {value: new Error('🦄')}); + + console.log('This is never executed'); + } catch (error) { + // 100 milliseconds later + console.log(error); + //=> [Error: 🦄] + } +})(); +``` + +You can settle the delay early by calling `.clear()`: + +```js +const delay = require('delay'); + +(async () => { + const delayedPromise = delay(1000, {value: 'Done'}); + + setTimeout(() => { + delayedPromise.clear(); + }, 500); + + // 500 milliseconds later + console.log(await delayedPromise); + //=> 'Done' +})(); +``` + +You can abort the delay with an AbortSignal: + +```js +const delay = require('delay'); + +(async () => { + const abortController = new AbortController(); + + setTimeout(() => { + abortController.abort(); + }, 500); + + try { + await delay(1000, {signal: abortController.signal}); + } catch (error) { + // 500 milliseconds later + console.log(error.name) + //=> 'AbortError' + } +})(); +``` + +Create a new instance that is unaffected by libraries such as [lolex](https://github.com/sinonjs/lolex/): + +```js +const delay = require('delay'); + +const customDelay = delay.createWithTimers({clearTimeout, setTimeout}); + +(async() => { + const result = await customDelay(100, {value: '🦄'}); + + // Executed after 100 milliseconds + console.log(result); + //=> '🦄' +})(); +``` + +## Related + +- [delay-cli](https://github.com/sindresorhus/delay-cli) - CLI for this module +- [p-cancelable](https://github.com/sindresorhus/p-cancelable) - Create a promise that can be canceled +- [p-min-delay](https://github.com/sindresorhus/p-min-delay) - Delay a promise a minimum amount of time +- [p-immediate](https://github.com/sindresorhus/p-immediate) - Returns a promise resolved in the next event loop - think `setImmediate()` +- [p-timeout](https://github.com/sindresorhus/p-timeout) - Timeout a promise after a specified amount of time +- [More…](https://github.com/sindresorhus/promise-fun) diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/package.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/package.json new file mode 100644 index 0000000000000..4d496d170e3fd --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/package.json @@ -0,0 +1 @@ +{"dependencies":{"delay":"5.0.0"}} diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/yarn.lock b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/yarn.lock new file mode 100644 index 0000000000000..1e82e94000a8c --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f/yarn.lock @@ -0,0 +1,8 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +delay@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.fc4da43a214bb79ca557ca6c54e8dfcc4f2aabbd6672873b7b3ea417576612f5.bundle/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.fc4da43a214bb79ca557ca6c54e8dfcc4f2aabbd6672873b7b3ea417576612f5.bundle/index.js new file mode 100644 index 0000000000000..5e95a919ff9a1 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/asset.fc4da43a214bb79ca557ca6c54e8dfcc4f2aabbd6672873b7b3ea417576612f5.bundle/index.js @@ -0,0 +1,31780 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../../aws-cdk-lib/assertions/lib/matcher.ts +var matcher_exports = {}; +__export(matcher_exports, { + MatchResult: () => MatchResult, + Matcher: () => Matcher +}); +function* range(n) { + for (let i = 0; i < n; i++) { + yield i; + } +} +function* enumFirst(xs) { + let first = true; + for (const x of xs) { + yield [first, x]; + first = false; + } +} +var Matcher, MatchResult; +var init_matcher = __esm({ + "../../aws-cdk-lib/assertions/lib/matcher.ts"() { + "use strict"; + Matcher = class _Matcher { + /** + * Check whether the provided object is a subtype of the `IMatcher`. + */ + static isMatcher(x) { + return x && x instanceof _Matcher; + } + }; + MatchResult = class { + constructor(target) { + this.failuresHere = /* @__PURE__ */ new Map(); + this.captures = /* @__PURE__ */ new Map(); + this.finalized = false; + this.innerMatchFailures = /* @__PURE__ */ new Map(); + this._hasFailed = false; + this._failCount = 0; + this._cost = 0; + this.target = target; + } + /** + * DEPRECATED + * @deprecated use recordFailure() + */ + push(matcher, path, message) { + return this.recordFailure({ matcher, path, message }); + } + /** + * Record a new failure into this result at a specific path. + */ + recordFailure(failure) { + const failKey = failure.path.join("."); + let list = this.failuresHere.get(failKey); + if (!list) { + list = []; + this.failuresHere.set(failKey, list); + } + this._failCount += 1; + this._cost += failure.cost ?? 1; + list.push(failure); + this._hasFailed = true; + return this; + } + /** Whether the match is a success */ + get isSuccess() { + return !this._hasFailed; + } + /** Does the result contain any failures. If not, the result is a success */ + hasFailed() { + return this._hasFailed; + } + /** The number of failures */ + get failCount() { + return this._failCount; + } + /** The cost of the failures so far */ + get failCost() { + return this._cost; + } + /** + * Compose the results of a previous match as a subtree. + * @param id the id of the parent tree. + */ + compose(id, inner) { + if (inner.hasFailed()) { + this._hasFailed = true; + this._failCount += inner.failCount; + this._cost += inner._cost; + this.innerMatchFailures.set(id, inner); + } + inner.captures.forEach((vals, capture) => { + vals.forEach((value) => this.recordCapture({ capture, value })); + }); + return this; + } + /** + * Prepare the result to be analyzed. + * This API *must* be called prior to analyzing these results. + */ + finished() { + if (this.finalized) { + return this; + } + if (this.failCount === 0) { + this.captures.forEach((vals, cap) => cap._captured.push(...vals)); + } + this.finalized = true; + return this; + } + /** + * Render the failed match in a presentable way + * + * Prefer using `renderMismatch` over this method. It is left for backwards + * compatibility for test suites that expect it, but `renderMismatch()` will + * produce better output. + */ + toHumanStrings() { + const failures = new Array(); + debugger; + recurse(this, []); + return failures.map((r) => { + const loc = r.path.length === 0 ? "" : ` at /${r.path.join("/")}`; + return "" + r.message + loc + ` (using ${r.matcher.name} matcher)`; + }); + function recurse(x, prefix) { + for (const fail of Array.from(x.failuresHere.values()).flat()) { + failures.push({ + matcher: fail.matcher, + message: fail.message, + path: [...prefix, ...fail.path] + }); + } + for (const [key, inner] of x.innerMatchFailures.entries()) { + recurse(inner, [...prefix, key]); + } + } + } + /** + * Do a deep render of the match result, showing the structure mismatches in context + */ + renderMismatch() { + if (!this.hasFailed()) { + return ""; + } + const parts = new Array(); + const indents = new Array(); + emitFailures(this, ""); + recurse(this); + return moveMarkersToFront(parts.join("").trimEnd()); + function emit(x) { + if (x === void 0) { + debugger; + } + parts.push(x.replace(/\n/g, ` +${indents.join("")}`)); + } + function emitFailures(r, path, scrapSet) { + for (const fail of r.failuresHere.get(path) ?? []) { + emit(`!! ${fail.message} +`); + } + scrapSet?.delete(path); + } + function recurse(r) { + const remainingFailures = new Set(Array.from(r.failuresHere.keys()).filter((x) => x !== "")); + if (Array.isArray(r.target)) { + indents.push(" "); + emit("[\n"); + for (const [first, i] of enumFirst(range(r.target.length))) { + if (!first) { + emit(",\n"); + } + emitFailures(r, `${i}`, remainingFailures); + const innerMatcher = r.innerMatchFailures.get(`${i}`); + if (innerMatcher) { + emitFailures(innerMatcher, ""); + recurseComparingValues(innerMatcher, r.target[i]); + } else { + emit(renderAbridged(r.target[i])); + } + } + emitRemaining(); + indents.pop(); + emit("\n]"); + return; + } + if (r.target && typeof r.target === "object") { + indents.push(" "); + emit("{\n"); + const keys = Array.from(/* @__PURE__ */ new Set([ + ...Object.keys(r.target), + ...Array.from(remainingFailures) + ])).sort(); + for (const [first, key] of enumFirst(keys)) { + if (!first) { + emit(",\n"); + } + emitFailures(r, key, remainingFailures); + const innerMatcher = r.innerMatchFailures.get(key); + if (innerMatcher) { + emitFailures(innerMatcher, ""); + emit(`${jsonify(key)}: `); + recurseComparingValues(innerMatcher, r.target[key]); + } else { + emit(`${jsonify(key)}: `); + emit(renderAbridged(r.target[key])); + } + } + emitRemaining(); + indents.pop(); + emit("\n}"); + return; + } + emitRemaining(); + emit(jsonify(r.target)); + function emitRemaining() { + if (remainingFailures.size > 0) { + emit("\n"); + } + for (const key of remainingFailures) { + emitFailures(r, key); + } + } + } + function recurseComparingValues(inner, actualValue) { + if (inner.target === actualValue) { + return recurse(inner); + } + emit(renderAbridged(actualValue)); + emit(" <*> "); + recurse(inner); + } + function renderAbridged(x) { + if (Array.isArray(x)) { + switch (x.length) { + case 0: + return "[]"; + case 1: + return `[ ${renderAbridged(x[0])} ]`; + case 2: + if (x.every((e) => ["number", "boolean", "string"].includes(typeof e))) { + return `[ ${x.map(renderAbridged).join(", ")} ]`; + } + return "[ ... ]"; + default: + return "[ ... ]"; + } + } + if (x && typeof x === "object") { + const keys = Object.keys(x); + switch (keys.length) { + case 0: + return "{}"; + case 1: + return `{ ${JSON.stringify(keys[0])}: ${renderAbridged(x[keys[0]])} }`; + default: + return "{ ... }"; + } + } + return jsonify(x); + } + function jsonify(x) { + return JSON.stringify(x) ?? "undefined"; + } + function moveMarkersToFront(x) { + const re = /^(\s+)!!/gm; + return x.replace(re, (_, spaces) => `!!${spaces.substring(0, spaces.length - 2)}`); + } + } + /** + * Record a capture against in this match result. + */ + recordCapture(options) { + let values = this.captures.get(options.capture); + if (values === void 0) { + values = []; + } + values.push(options.value); + this.captures.set(options.capture, values); + } + }; + } +}); + +// ../../aws-cdk-lib/assertions/lib/private/matchers/absent.ts +var AbsentMatch; +var init_absent = __esm({ + "../../aws-cdk-lib/assertions/lib/private/matchers/absent.ts"() { + "use strict"; + init_matcher(); + AbsentMatch = class extends Matcher { + constructor(name) { + super(); + this.name = name; + } + test(actual) { + const result = new MatchResult(actual); + if (actual !== void 0) { + result.recordFailure({ + matcher: this, + path: [], + message: `Received ${actual}, but key should be absent` + }); + } + return result; + } + }; + } +}); + +// ../../aws-cdk-lib/assertions/lib/private/sorting.ts +function sortKeyComparator(keyFn) { + return (a, b) => { + const ak = keyFn(a); + const bk = keyFn(b); + for (let i = 0; i < ak.length && i < bk.length; i++) { + const av = ak[i]; + const bv = bk[i]; + let diff = 0; + if (typeof av === "number" && typeof bv === "number") { + diff = av - bv; + } else if (typeof av === "string" && typeof bv === "string") { + diff = av.localeCompare(bv); + } + if (diff !== 0) { + return diff; + } + } + return bk.length - ak.length; + }; +} +var init_sorting = __esm({ + "../../aws-cdk-lib/assertions/lib/private/sorting.ts"() { + "use strict"; + } +}); + +// ../../aws-cdk-lib/assertions/lib/private/sparse-matrix.ts +var SparseMatrix; +var init_sparse_matrix = __esm({ + "../../aws-cdk-lib/assertions/lib/private/sparse-matrix.ts"() { + "use strict"; + SparseMatrix = class { + constructor() { + this.matrix = /* @__PURE__ */ new Map(); + } + get(row, col) { + return this.matrix.get(row)?.get(col); + } + row(row) { + return Array.from(this.matrix.get(row)?.entries() ?? []); + } + set(row, col, value) { + let r = this.matrix.get(row); + if (!r) { + r = /* @__PURE__ */ new Map(); + this.matrix.set(row, r); + } + r.set(col, value); + } + }; + } +}); + +// ../../aws-cdk-lib/assertions/lib/private/type.ts +function getType(obj) { + return Array.isArray(obj) ? "array" : typeof obj; +} +var init_type = __esm({ + "../../aws-cdk-lib/assertions/lib/private/type.ts"() { + "use strict"; + } +}); + +// ../../aws-cdk-lib/assertions/lib/match.ts +var match_exports = {}; +__export(match_exports, { + Match: () => Match +}); +var Match, LiteralMatch, ArrayMatch, ObjectMatch, SerializedJson, NotMatch, AnyMatch, StringLikeRegexpMatch; +var init_match = __esm({ + "../../aws-cdk-lib/assertions/lib/match.ts"() { + "use strict"; + init_matcher(); + init_absent(); + init_sorting(); + init_sparse_matrix(); + init_type(); + Match = class { + /** + * Use this matcher in the place of a field's value, if the field must not be present. + */ + static absent() { + return new AbsentMatch("absent"); + } + /** + * Matches the specified pattern with the array found in the same relative path of the target. + * The set of elements (or matchers) must be in the same order as would be found. + * @param pattern the pattern to match + */ + static arrayWith(pattern) { + return new ArrayMatch("arrayWith", pattern); + } + /** + * Matches the specified pattern with the array found in the same relative path of the target. + * The set of elements (or matchers) must match exactly and in order. + * @param pattern the pattern to match + */ + static arrayEquals(pattern) { + return new ArrayMatch("arrayEquals", pattern, { subsequence: false }); + } + /** + * Deep exact matching of the specified pattern to the target. + * @param pattern the pattern to match + */ + static exact(pattern) { + return new LiteralMatch("exact", pattern, { partialObjects: false }); + } + /** + * Matches the specified pattern to an object found in the same relative path of the target. + * The keys and their values (or matchers) must be present in the target but the target can be a superset. + * @param pattern the pattern to match + */ + static objectLike(pattern) { + return new ObjectMatch("objectLike", pattern); + } + /** + * Matches the specified pattern to an object found in the same relative path of the target. + * The keys and their values (or matchers) must match exactly with the target. + * @param pattern the pattern to match + */ + static objectEquals(pattern) { + return new ObjectMatch("objectEquals", pattern, { partial: false }); + } + /** + * Matches any target which does NOT follow the specified pattern. + * @param pattern the pattern to NOT match + */ + static not(pattern) { + return new NotMatch("not", pattern); + } + /** + * Matches any string-encoded JSON and applies the specified pattern after parsing it. + * @param pattern the pattern to match after parsing the encoded JSON. + */ + static serializedJson(pattern) { + return new SerializedJson("serializedJson", pattern); + } + /** + * Matches any non-null value at the target. + */ + static anyValue() { + return new AnyMatch("anyValue"); + } + /** + * Matches targets according to a regular expression + */ + static stringLikeRegexp(pattern) { + return new StringLikeRegexpMatch("stringLikeRegexp", pattern); + } + }; + LiteralMatch = class extends Matcher { + constructor(name, pattern, options = {}) { + super(); + this.name = name; + this.pattern = pattern; + this.partialObjects = options.partialObjects ?? false; + if (Matcher.isMatcher(this.pattern)) { + throw new Error("LiteralMatch cannot directly contain another matcher. Remove the top-level matcher or nest it more deeply."); + } + } + test(actual) { + if (Array.isArray(this.pattern)) { + return new ArrayMatch(this.name, this.pattern, { subsequence: false, partialObjects: this.partialObjects }).test(actual); + } + if (typeof this.pattern === "object") { + return new ObjectMatch(this.name, this.pattern, { partial: this.partialObjects }).test(actual); + } + const result = new MatchResult(actual); + if (typeof this.pattern !== typeof actual) { + result.recordFailure({ + matcher: this, + path: [], + message: `Expected type ${typeof this.pattern} but received ${getType(actual)}` + }); + return result; + } + if (actual !== this.pattern) { + result.recordFailure({ + matcher: this, + path: [], + message: `Expected ${this.pattern} but received ${actual}` + }); + } + return result; + } + }; + ArrayMatch = class extends Matcher { + constructor(name, pattern, options = {}) { + super(); + this.name = name; + this.pattern = pattern; + this.subsequence = options.subsequence ?? true; + this.partialObjects = options.partialObjects ?? false; + } + test(actual) { + if (!Array.isArray(actual)) { + return new MatchResult(actual).recordFailure({ + matcher: this, + path: [], + message: `Expected type array but received ${getType(actual)}` + }); + } + return this.subsequence ? this.testSubsequence(actual) : this.testFullArray(actual); + } + testFullArray(actual) { + const result = new MatchResult(actual); + let i = 0; + for (; i < this.pattern.length && i < actual.length; i++) { + const patternElement = this.pattern[i]; + const matcher = Matcher.isMatcher(patternElement) ? patternElement : new LiteralMatch(this.name, patternElement, { partialObjects: this.partialObjects }); + const innerResult = matcher.test(actual[i]); + result.compose(`${i}`, innerResult); + } + if (i < this.pattern.length) { + result.recordFailure({ + matcher: this, + message: `Not enough elements in array (expecting ${this.pattern.length}, got ${actual.length})`, + path: [`${i}`] + }); + } + if (i < actual.length) { + result.recordFailure({ + matcher: this, + message: `Too many elements in array (expecting ${this.pattern.length}, got ${actual.length})`, + path: [`${i}`] + }); + } + return result; + } + testSubsequence(actual) { + const result = new MatchResult(actual); + let patternIdx = 0; + let actualIdx = 0; + const matches = new SparseMatrix(); + while (patternIdx < this.pattern.length && actualIdx < actual.length) { + const patternElement = this.pattern[patternIdx]; + const matcher = Matcher.isMatcher(patternElement) ? patternElement : new LiteralMatch(this.name, patternElement, { partialObjects: this.partialObjects }); + const matcherName = matcher.name; + if (matcherName == "absent" || matcherName == "anyValue") { + throw new Error(`The Matcher ${matcherName}() cannot be nested within arrayWith()`); + } + const innerResult = matcher.test(actual[actualIdx]); + matches.set(patternIdx, actualIdx, innerResult); + actualIdx++; + if (innerResult.isSuccess) { + result.compose(`${actualIdx}`, innerResult); + patternIdx++; + } + } + if (patternIdx < this.pattern.length) { + for (let spi = 0; spi < patternIdx; spi++) { + const foundMatch = matches.row(spi).find(([, r]) => r.isSuccess); + if (!foundMatch) { + continue; + } + const [index] = foundMatch; + result.compose(`${index}`, new MatchResult(actual[index]).recordFailure({ + matcher: this, + message: `arrayWith pattern ${spi} matched here`, + path: [], + cost: 0 + // This is an informational message so it would be unfair to assign it cost + })); + } + const failedMatches = matches.row(patternIdx); + failedMatches.sort(sortKeyComparator(([i, r]) => [r.failCost, i])); + if (failedMatches.length > 0) { + const [index, innerResult] = failedMatches[0]; + result.recordFailure({ + matcher: this, + message: `Could not match arrayWith pattern ${patternIdx}. This is the closest match`, + path: [`${index}`], + cost: 0 + // Informational message + }); + result.compose(`${index}`, innerResult); + } else { + result.recordFailure({ + matcher: this, + message: `Could not match arrayWith pattern ${patternIdx}. No more elements to try`, + path: [`${actual.length}`] + }); + } + } + return result; + } + }; + ObjectMatch = class extends Matcher { + constructor(name, pattern, options = {}) { + super(); + this.name = name; + this.pattern = pattern; + this.partial = options.partial ?? true; + } + test(actual) { + if (typeof actual !== "object" || Array.isArray(actual)) { + return new MatchResult(actual).recordFailure({ + matcher: this, + path: [], + message: `Expected type object but received ${getType(actual)}` + }); + } + const result = new MatchResult(actual); + if (!this.partial) { + for (const a of Object.keys(actual)) { + if (!(a in this.pattern)) { + result.recordFailure({ + matcher: this, + path: [a], + message: `Unexpected key ${a}` + }); + } + } + } + for (const [patternKey, patternVal] of Object.entries(this.pattern)) { + if (!(patternKey in actual) && !(patternVal instanceof AbsentMatch)) { + result.recordFailure({ + matcher: this, + path: [patternKey], + message: `Missing key '${patternKey}'` + }); + continue; + } + const matcher = Matcher.isMatcher(patternVal) ? patternVal : new LiteralMatch(this.name, patternVal, { partialObjects: this.partial }); + const inner = matcher.test(actual[patternKey]); + result.compose(patternKey, inner); + } + return result; + } + }; + SerializedJson = class extends Matcher { + constructor(name, pattern) { + super(); + this.name = name; + this.pattern = pattern; + } + test(actual) { + if (getType(actual) !== "string") { + return new MatchResult(actual).recordFailure({ + matcher: this, + path: [], + message: `Expected JSON as a string but found ${getType(actual)}` + }); + } + let parsed; + try { + parsed = JSON.parse(actual); + } catch (err) { + if (err instanceof SyntaxError) { + return new MatchResult(actual).recordFailure({ + matcher: this, + path: [], + message: `Invalid JSON string: ${actual}` + }); + } else { + throw err; + } + } + const matcher = Matcher.isMatcher(this.pattern) ? this.pattern : new LiteralMatch(this.name, this.pattern); + const innerResult = matcher.test(parsed); + if (innerResult.hasFailed()) { + innerResult.recordFailure({ + matcher: this, + path: [], + message: "Encoded JSON value does not match" + }); + } + return innerResult; + } + }; + NotMatch = class extends Matcher { + constructor(name, pattern) { + super(); + this.name = name; + this.pattern = pattern; + } + test(actual) { + const matcher = Matcher.isMatcher(this.pattern) ? this.pattern : new LiteralMatch(this.name, this.pattern); + const innerResult = matcher.test(actual); + const result = new MatchResult(actual); + if (innerResult.failCount === 0) { + result.recordFailure({ + matcher: this, + path: [], + message: `Found unexpected match: ${JSON.stringify(actual, void 0, 2)}` + }); + } + return result; + } + }; + AnyMatch = class extends Matcher { + constructor(name) { + super(); + this.name = name; + } + test(actual) { + const result = new MatchResult(actual); + if (actual == null) { + result.recordFailure({ + matcher: this, + path: [], + message: "Expected a value but found none" + }); + } + return result; + } + }; + StringLikeRegexpMatch = class extends Matcher { + constructor(name, pattern) { + super(); + this.name = name; + this.pattern = pattern; + } + test(actual) { + const result = new MatchResult(actual); + const regex = new RegExp(this.pattern, "gm"); + if (typeof actual !== "string") { + result.recordFailure({ + matcher: this, + path: [], + message: `Expected a string, but got '${typeof actual}'` + }); + } + if (!regex.test(actual)) { + result.recordFailure({ + matcher: this, + path: [], + message: `String '${actual}' did not match pattern '${this.pattern}'` + }); + } + return result; + } + }; + } +}); + +// ../../aws-cdk-lib/assertions/lib/helpers-internal/index.js +var require_helpers_internal = __commonJS({ + "../../aws-cdk-lib/assertions/lib/helpers-internal/index.js"(exports) { + "use strict"; + var __createBinding3 = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar3 = exports && exports.__exportStar || function(m, exports2) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding3(exports2, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + __exportStar3((init_match(), __toCommonJS(match_exports)), exports); + __exportStar3((init_matcher(), __toCommonJS(matcher_exports)), exports); + } +}); + +// ../../../node_modules/tslib/tslib.es6.mjs +var tslib_es6_exports = {}; +__export(tslib_es6_exports, { + __addDisposableResource: () => __addDisposableResource, + __assign: () => __assign, + __asyncDelegator: () => __asyncDelegator, + __asyncGenerator: () => __asyncGenerator, + __asyncValues: () => __asyncValues, + __await: () => __await, + __awaiter: () => __awaiter, + __classPrivateFieldGet: () => __classPrivateFieldGet, + __classPrivateFieldIn: () => __classPrivateFieldIn, + __classPrivateFieldSet: () => __classPrivateFieldSet, + __createBinding: () => __createBinding, + __decorate: () => __decorate, + __disposeResources: () => __disposeResources, + __esDecorate: () => __esDecorate, + __exportStar: () => __exportStar, + __extends: () => __extends, + __generator: () => __generator, + __importDefault: () => __importDefault, + __importStar: () => __importStar, + __makeTemplateObject: () => __makeTemplateObject, + __metadata: () => __metadata, + __param: () => __param, + __propKey: () => __propKey, + __read: () => __read, + __rest: () => __rest, + __runInitializers: () => __runInitializers, + __setFunctionName: () => __setFunctionName, + __spread: () => __spread, + __spreadArray: () => __spreadArray, + __spreadArrays: () => __spreadArrays, + __values: () => __values, + default: () => tslib_es6_default +}); +function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} +function __rest(s, e) { + var t = {}; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} +function __param(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +} +function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { + if (f !== void 0 && typeof f !== "function") + throw new TypeError("Function expected"); + return f; + } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) + context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) + context.access[p] = contextIn.access[p]; + context.addInitializer = function(f) { + if (done) + throw new TypeError("Cannot add initializers after decoration has completed"); + extraInitializers.push(accept(f || null)); + }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) + continue; + if (result === null || typeof result !== "object") + throw new TypeError("Object expected"); + if (_ = accept(result.get)) + descriptor.get = _; + if (_ = accept(result.set)) + descriptor.set = _; + if (_ = accept(result.init)) + initializers.unshift(_); + } else if (_ = accept(result)) { + if (kind === "field") + initializers.unshift(_); + else + descriptor[key] = _; + } + } + if (target) + Object.defineProperty(target, contextIn.name, descriptor); + done = true; +} +function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +} +function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +} +function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") + name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +} +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") + return Reflect.metadata(metadataKey, metadataValue); +} +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { + if (t[0] & 1) + throw t[1]; + return t[1]; + }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + function step(op) { + if (f) + throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) + throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } +} +function __exportStar(m, o) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) + __createBinding(o, m, p); +} +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) + return m.call(o); + if (o && typeof o.length === "number") + return { + next: function() { + if (o && i >= o.length) + o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) + return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) + m.call(i); + } finally { + if (e) + throw e.error; + } + } + return ar; +} +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) + s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} +function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i; + function verb(n) { + if (g[n]) + i[n] = function(v) { + return new Promise(function(a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }; + } + function resume(n, v) { + try { + step(g[n](v)); + } catch (e) { + settle(q[0][3], e); + } + } + function step(r) { + r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f, v) { + if (f(v), q.shift(), q.length) + resume(q[0][0], q[0][1]); + } +} +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function(e) { + throw e; + }), verb("return"), i[Symbol.iterator] = function() { + return this; + }, i; + function verb(n, f) { + i[n] = o[n] ? function(v) { + return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; + } : f; + } +} +function __asyncValues(o) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i); + function verb(n) { + i[n] = o[n] && function(v) { + return new Promise(function(resolve, reject) { + v = o[n](v), settle(resolve, reject, v.done, v.value); + }); + }; + } + function settle(resolve, reject, d, v) { + Promise.resolve(v).then(function(v2) { + resolve({ value: v2, done: d }); + }, reject); + } +} +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { + Object.defineProperty(cooked, "raw", { value: raw }); + } else { + cooked.raw = raw; + } + return cooked; +} +function __importStar(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; +} +function __importDefault(mod) { + return mod && mod.__esModule ? mod : { default: mod }; +} +function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) + throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) + throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} +function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") + throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) + throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) + throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value; +} +function __classPrivateFieldIn(state, receiver) { + if (receiver === null || typeof receiver !== "object" && typeof receiver !== "function") + throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} +function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") + throw new TypeError("Object expected."); + var dispose; + if (async) { + if (!Symbol.asyncDispose) + throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) + throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + } + if (typeof dispose !== "function") + throw new TypeError("Object not disposable."); + env.stack.push({ value, dispose, async }); + } else if (async) { + env.stack.push({ async: true }); + } + return value; +} +function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + function next() { + while (env.stack.length) { + var rec = env.stack.pop(); + try { + var result = rec.dispose && rec.dispose.call(rec.value); + if (rec.async) + return Promise.resolve(result).then(next, function(e) { + fail(e); + return next(); + }); + } catch (e) { + fail(e); + } + } + if (env.hasError) + throw env.error; + } + return next(); +} +var extendStatics, __assign, __createBinding, __setModuleDefault, _SuppressedError, tslib_es6_default; +var init_tslib_es6 = __esm({ + "../../../node_modules/tslib/tslib.es6.mjs"() { + extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) + if (Object.prototype.hasOwnProperty.call(b2, p)) + d2[p] = b2[p]; + }; + return extendStatics(d, b); + }; + __assign = function() { + __assign = Object.assign || function __assign3(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + __createBinding = Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }; + __setModuleDefault = Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }; + _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + tslib_es6_default = { + __extends, + __assign, + __rest, + __decorate, + __param, + __metadata, + __awaiter, + __generator, + __createBinding, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources + }; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/abort.js +var require_abort = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/abort.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/auth.js +var require_auth = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/auth.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.HttpAuthLocation = void 0; + var HttpAuthLocation; + (function(HttpAuthLocation2) { + HttpAuthLocation2["HEADER"] = "header"; + HttpAuthLocation2["QUERY"] = "query"; + })(HttpAuthLocation = exports.HttpAuthLocation || (exports.HttpAuthLocation = {})); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/blob/blob-payload-input-types.js +var require_blob_payload_input_types = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/blob/blob-payload-input-types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/checksum.js +var require_checksum = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/checksum.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/client.js +var require_client = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/client.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/command.js +var require_command = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/command.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/connection/config.js +var require_config = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/connection/config.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/connection/manager.js +var require_manager = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/connection/manager.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/connection/pool.js +var require_pool = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/connection/pool.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/connection/index.js +var require_connection = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/connection/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_config(), exports); + tslib_1.__exportStar(require_manager(), exports); + tslib_1.__exportStar(require_pool(), exports); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/crypto.js +var require_crypto = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/crypto.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/encode.js +var require_encode = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/encode.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/endpoint.js +var require_endpoint = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/endpoint.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.EndpointURLScheme = void 0; + var EndpointURLScheme; + (function(EndpointURLScheme2) { + EndpointURLScheme2["HTTP"] = "http"; + EndpointURLScheme2["HTTPS"] = "https"; + })(EndpointURLScheme = exports.EndpointURLScheme || (exports.EndpointURLScheme = {})); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/endpoints/EndpointRuleObject.js +var require_EndpointRuleObject = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/endpoints/EndpointRuleObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/endpoints/ErrorRuleObject.js +var require_ErrorRuleObject = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/endpoints/ErrorRuleObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/endpoints/RuleSetObject.js +var require_RuleSetObject = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/endpoints/RuleSetObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/endpoints/shared.js +var require_shared = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/endpoints/shared.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/endpoints/TreeRuleObject.js +var require_TreeRuleObject = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/endpoints/TreeRuleObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/endpoints/index.js +var require_endpoints = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/endpoints/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_EndpointRuleObject(), exports); + tslib_1.__exportStar(require_ErrorRuleObject(), exports); + tslib_1.__exportStar(require_RuleSetObject(), exports); + tslib_1.__exportStar(require_shared(), exports); + tslib_1.__exportStar(require_TreeRuleObject(), exports); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/eventStream.js +var require_eventStream = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/eventStream.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js +var require_checksum2 = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveChecksumRuntimeConfig = exports.getChecksumConfiguration = exports.AlgorithmId = void 0; + var AlgorithmId; + (function(AlgorithmId2) { + AlgorithmId2["MD5"] = "md5"; + AlgorithmId2["CRC32"] = "crc32"; + AlgorithmId2["CRC32C"] = "crc32c"; + AlgorithmId2["SHA1"] = "sha1"; + AlgorithmId2["SHA256"] = "sha256"; + })(AlgorithmId = exports.AlgorithmId || (exports.AlgorithmId = {})); + var getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.SHA256, + checksumConstructor: () => runtimeConfig.sha256 + }); + } + if (runtimeConfig.md5 != void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.MD5, + checksumConstructor: () => runtimeConfig.md5 + }); + } + return { + _checksumAlgorithms: checksumAlgorithms, + addChecksumAlgorithm(algo) { + this._checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return this._checksumAlgorithms; + } + }; + }; + exports.getChecksumConfiguration = getChecksumConfiguration; + var resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; + }; + exports.resolveChecksumRuntimeConfig = resolveChecksumRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js +var require_defaultClientConfiguration = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveDefaultRuntimeConfig = exports.getDefaultClientConfiguration = void 0; + var checksum_1 = require_checksum2(); + var getDefaultClientConfiguration = (runtimeConfig) => { + return { + ...(0, checksum_1.getChecksumConfiguration)(runtimeConfig) + }; + }; + exports.getDefaultClientConfiguration = getDefaultClientConfiguration; + var resolveDefaultRuntimeConfig = (config) => { + return { + ...(0, checksum_1.resolveChecksumRuntimeConfig)(config) + }; + }; + exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/index.js +var require_extensions = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_defaultClientConfiguration(), exports); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/http.js +var require_http = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/http.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.FieldPosition = void 0; + var FieldPosition; + (function(FieldPosition2) { + FieldPosition2[FieldPosition2["HEADER"] = 0] = "HEADER"; + FieldPosition2[FieldPosition2["TRAILER"] = 1] = "TRAILER"; + })(FieldPosition = exports.FieldPosition || (exports.FieldPosition = {})); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/identity/awsCredentialIdentity.js +var require_awsCredentialIdentity = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/identity/awsCredentialIdentity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/identity/identity.js +var require_identity = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/identity/identity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/identity/index.js +var require_identity2 = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/identity/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_awsCredentialIdentity(), exports); + tslib_1.__exportStar(require_identity(), exports); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/logger.js +var require_logger = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/logger.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/middleware.js +var require_middleware = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/middleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/pagination.js +var require_pagination = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/pagination.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/profile.js +var require_profile = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/profile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/response.js +var require_response = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/response.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/retry.js +var require_retry = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/retry.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/serde.js +var require_serde = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/serde.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/shapes.js +var require_shapes = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/shapes.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/signature.js +var require_signature = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/signature.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/stream.js +var require_stream = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/stream.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/streaming-payload/streaming-blob-common-types.js +var require_streaming_blob_common_types = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/streaming-payload/streaming-blob-common-types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/streaming-payload/streaming-blob-payload-input-types.js +var require_streaming_blob_payload_input_types = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/streaming-payload/streaming-blob-payload-input-types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/streaming-payload/streaming-blob-payload-output-types.js +var require_streaming_blob_payload_output_types = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/streaming-payload/streaming-blob-payload-output-types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/transfer.js +var require_transfer = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/transfer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.RequestHandlerProtocol = void 0; + var RequestHandlerProtocol; + (function(RequestHandlerProtocol2) { + RequestHandlerProtocol2["HTTP_0_9"] = "http/0.9"; + RequestHandlerProtocol2["HTTP_1_0"] = "http/1.0"; + RequestHandlerProtocol2["TDS_8_0"] = "tds/8.0"; + })(RequestHandlerProtocol = exports.RequestHandlerProtocol || (exports.RequestHandlerProtocol = {})); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/transform/client-payload-blob-type-narrow.js +var require_client_payload_blob_type_narrow = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/transform/client-payload-blob-type-narrow.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/transform/type-transform.js +var require_type_transform = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/transform/type-transform.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/uri.js +var require_uri = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/uri.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/util.js +var require_util = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/util.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/waiter.js +var require_waiter = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/waiter.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/index.js +var require_dist_cjs = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_abort(), exports); + tslib_1.__exportStar(require_auth(), exports); + tslib_1.__exportStar(require_blob_payload_input_types(), exports); + tslib_1.__exportStar(require_checksum(), exports); + tslib_1.__exportStar(require_client(), exports); + tslib_1.__exportStar(require_command(), exports); + tslib_1.__exportStar(require_connection(), exports); + tslib_1.__exportStar(require_crypto(), exports); + tslib_1.__exportStar(require_encode(), exports); + tslib_1.__exportStar(require_endpoint(), exports); + tslib_1.__exportStar(require_endpoints(), exports); + tslib_1.__exportStar(require_eventStream(), exports); + tslib_1.__exportStar(require_extensions(), exports); + tslib_1.__exportStar(require_http(), exports); + tslib_1.__exportStar(require_identity2(), exports); + tslib_1.__exportStar(require_logger(), exports); + tslib_1.__exportStar(require_middleware(), exports); + tslib_1.__exportStar(require_pagination(), exports); + tslib_1.__exportStar(require_profile(), exports); + tslib_1.__exportStar(require_response(), exports); + tslib_1.__exportStar(require_retry(), exports); + tslib_1.__exportStar(require_serde(), exports); + tslib_1.__exportStar(require_shapes(), exports); + tslib_1.__exportStar(require_signature(), exports); + tslib_1.__exportStar(require_stream(), exports); + tslib_1.__exportStar(require_streaming_blob_common_types(), exports); + tslib_1.__exportStar(require_streaming_blob_payload_input_types(), exports); + tslib_1.__exportStar(require_streaming_blob_payload_output_types(), exports); + tslib_1.__exportStar(require_transfer(), exports); + tslib_1.__exportStar(require_client_payload_blob_type_narrow(), exports); + tslib_1.__exportStar(require_type_transform(), exports); + tslib_1.__exportStar(require_uri(), exports); + tslib_1.__exportStar(require_util(), exports); + tslib_1.__exportStar(require_waiter(), exports); + } +}); + +// ../../../node_modules/@smithy/protocol-http/dist-cjs/Field.js +var require_Field = __commonJS({ + "../../../node_modules/@smithy/protocol-http/dist-cjs/Field.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Field = void 0; + var types_1 = require_dist_cjs(); + var Field = class { + constructor({ name, kind = types_1.FieldPosition.HEADER, values = [] }) { + this.name = name; + this.kind = kind; + this.values = values; + } + add(value) { + this.values.push(value); + } + set(values) { + this.values = values; + } + remove(value) { + this.values = this.values.filter((v) => v !== value); + } + toString() { + return this.values.map((v) => v.includes(",") || v.includes(" ") ? `"${v}"` : v).join(", "); + } + get() { + return this.values; + } + }; + exports.Field = Field; + } +}); + +// ../../../node_modules/@smithy/protocol-http/dist-cjs/Fields.js +var require_Fields = __commonJS({ + "../../../node_modules/@smithy/protocol-http/dist-cjs/Fields.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Fields = void 0; + var Fields = class { + constructor({ fields = [], encoding = "utf-8" }) { + this.entries = {}; + fields.forEach(this.setField.bind(this)); + this.encoding = encoding; + } + setField(field) { + this.entries[field.name.toLowerCase()] = field; + } + getField(name) { + return this.entries[name.toLowerCase()]; + } + removeField(name) { + delete this.entries[name.toLowerCase()]; + } + getByType(kind) { + return Object.values(this.entries).filter((field) => field.kind === kind); + } + }; + exports.Fields = Fields; + } +}); + +// ../../../node_modules/@smithy/protocol-http/dist-cjs/httpHandler.js +var require_httpHandler = __commonJS({ + "../../../node_modules/@smithy/protocol-http/dist-cjs/httpHandler.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/protocol-http/dist-cjs/httpRequest.js +var require_httpRequest = __commonJS({ + "../../../node_modules/@smithy/protocol-http/dist-cjs/httpRequest.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.HttpRequest = void 0; + var HttpRequest = class _HttpRequest { + constructor(options) { + this.method = options.method || "GET"; + this.hostname = options.hostname || "localhost"; + this.port = options.port; + this.query = options.query || {}; + this.headers = options.headers || {}; + this.body = options.body; + this.protocol = options.protocol ? options.protocol.slice(-1) !== ":" ? `${options.protocol}:` : options.protocol : "https:"; + this.path = options.path ? options.path.charAt(0) !== "/" ? `/${options.path}` : options.path : "/"; + this.username = options.username; + this.password = options.password; + this.fragment = options.fragment; + } + static isInstance(request2) { + if (!request2) + return false; + const req = request2; + return "method" in req && "protocol" in req && "hostname" in req && "path" in req && typeof req["query"] === "object" && typeof req["headers"] === "object"; + } + clone() { + const cloned = new _HttpRequest({ + ...this, + headers: { ...this.headers } + }); + if (cloned.query) + cloned.query = cloneQuery(cloned.query); + return cloned; + } + }; + exports.HttpRequest = HttpRequest; + function cloneQuery(query) { + return Object.keys(query).reduce((carry, paramName) => { + const param = query[paramName]; + return { + ...carry, + [paramName]: Array.isArray(param) ? [...param] : param + }; + }, {}); + } + } +}); + +// ../../../node_modules/@smithy/protocol-http/dist-cjs/httpResponse.js +var require_httpResponse = __commonJS({ + "../../../node_modules/@smithy/protocol-http/dist-cjs/httpResponse.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.HttpResponse = void 0; + var HttpResponse = class { + constructor(options) { + this.statusCode = options.statusCode; + this.reason = options.reason; + this.headers = options.headers || {}; + this.body = options.body; + } + static isInstance(response) { + if (!response) + return false; + const resp = response; + return typeof resp.statusCode === "number" && typeof resp.headers === "object"; + } + }; + exports.HttpResponse = HttpResponse; + } +}); + +// ../../../node_modules/@smithy/protocol-http/dist-cjs/isValidHostname.js +var require_isValidHostname = __commonJS({ + "../../../node_modules/@smithy/protocol-http/dist-cjs/isValidHostname.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isValidHostname = void 0; + function isValidHostname(hostname) { + const hostPattern = /^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/; + return hostPattern.test(hostname); + } + exports.isValidHostname = isValidHostname; + } +}); + +// ../../../node_modules/@smithy/protocol-http/dist-cjs/types.js +var require_types = __commonJS({ + "../../../node_modules/@smithy/protocol-http/dist-cjs/types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/protocol-http/dist-cjs/index.js +var require_dist_cjs2 = __commonJS({ + "../../../node_modules/@smithy/protocol-http/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_Field(), exports); + tslib_1.__exportStar(require_Fields(), exports); + tslib_1.__exportStar(require_httpHandler(), exports); + tslib_1.__exportStar(require_httpRequest(), exports); + tslib_1.__exportStar(require_httpResponse(), exports); + tslib_1.__exportStar(require_isValidHostname(), exports); + tslib_1.__exportStar(require_types(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js +var require_dist_cjs3 = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getHostHeaderPlugin = exports.hostHeaderMiddlewareOptions = exports.hostHeaderMiddleware = exports.resolveHostHeaderConfig = void 0; + var protocol_http_1 = require_dist_cjs2(); + function resolveHostHeaderConfig(input) { + return input; + } + exports.resolveHostHeaderConfig = resolveHostHeaderConfig; + var hostHeaderMiddleware = (options) => (next) => async (args) => { + if (!protocol_http_1.HttpRequest.isInstance(args.request)) + return next(args); + const { request: request2 } = args; + const { handlerProtocol = "" } = options.requestHandler.metadata || {}; + if (handlerProtocol.indexOf("h2") >= 0 && !request2.headers[":authority"]) { + delete request2.headers["host"]; + request2.headers[":authority"] = ""; + } else if (!request2.headers["host"]) { + let host = request2.hostname; + if (request2.port != null) + host += `:${request2.port}`; + request2.headers["host"] = host; + } + return next(args); + }; + exports.hostHeaderMiddleware = hostHeaderMiddleware; + exports.hostHeaderMiddlewareOptions = { + name: "hostHeaderMiddleware", + step: "build", + priority: "low", + tags: ["HOST"], + override: true + }; + var getHostHeaderPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add((0, exports.hostHeaderMiddleware)(options), exports.hostHeaderMiddlewareOptions); + } + }); + exports.getHostHeaderPlugin = getHostHeaderPlugin; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js +var require_loggerMiddleware = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getLoggerPlugin = exports.loggerMiddlewareOptions = exports.loggerMiddleware = void 0; + var loggerMiddleware = () => (next, context) => async (args) => { + var _a, _b; + try { + const response = await next(args); + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog !== null && overrideInputFilterSensitiveLog !== void 0 ? overrideInputFilterSensitiveLog : context.inputFilterSensitiveLog; + const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog !== null && overrideOutputFilterSensitiveLog !== void 0 ? overrideOutputFilterSensitiveLog : context.outputFilterSensitiveLog; + const { $metadata, ...outputWithoutMetadata } = response.output; + (_a = logger === null || logger === void 0 ? void 0 : logger.info) === null || _a === void 0 ? void 0 : _a.call(logger, { + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + output: outputFilterSensitiveLog(outputWithoutMetadata), + metadata: $metadata + }); + return response; + } catch (error) { + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog !== null && overrideInputFilterSensitiveLog !== void 0 ? overrideInputFilterSensitiveLog : context.inputFilterSensitiveLog; + (_b = logger === null || logger === void 0 ? void 0 : logger.error) === null || _b === void 0 ? void 0 : _b.call(logger, { + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + error, + metadata: error.$metadata + }); + throw error; + } + }; + exports.loggerMiddleware = loggerMiddleware; + exports.loggerMiddlewareOptions = { + name: "loggerMiddleware", + tags: ["LOGGER"], + step: "initialize", + override: true + }; + var getLoggerPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add((0, exports.loggerMiddleware)(), exports.loggerMiddlewareOptions); + } + }); + exports.getLoggerPlugin = getLoggerPlugin; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js +var require_dist_cjs4 = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_loggerMiddleware(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js +var require_dist_cjs5 = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRecursionDetectionPlugin = exports.addRecursionDetectionMiddlewareOptions = exports.recursionDetectionMiddleware = void 0; + var protocol_http_1 = require_dist_cjs2(); + var TRACE_ID_HEADER_NAME = "X-Amzn-Trace-Id"; + var ENV_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME"; + var ENV_TRACE_ID = "_X_AMZN_TRACE_ID"; + var recursionDetectionMiddleware = (options) => (next) => async (args) => { + const { request: request2 } = args; + if (!protocol_http_1.HttpRequest.isInstance(request2) || options.runtime !== "node" || request2.headers.hasOwnProperty(TRACE_ID_HEADER_NAME)) { + return next(args); + } + const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME]; + const traceId = process.env[ENV_TRACE_ID]; + const nonEmptyString = (str) => typeof str === "string" && str.length > 0; + if (nonEmptyString(functionName) && nonEmptyString(traceId)) { + request2.headers[TRACE_ID_HEADER_NAME] = traceId; + } + return next({ + ...args, + request: request2 + }); + }; + exports.recursionDetectionMiddleware = recursionDetectionMiddleware; + exports.addRecursionDetectionMiddlewareOptions = { + step: "build", + tags: ["RECURSION_DETECTION"], + name: "recursionDetectionMiddleware", + override: true, + priority: "low" + }; + var getRecursionDetectionPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add((0, exports.recursionDetectionMiddleware)(options), exports.addRecursionDetectionMiddlewareOptions); + } + }); + exports.getRecursionDetectionPlugin = getRecursionDetectionPlugin; + } +}); + +// ../../../node_modules/@smithy/property-provider/dist-cjs/ProviderError.js +var require_ProviderError = __commonJS({ + "../../../node_modules/@smithy/property-provider/dist-cjs/ProviderError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ProviderError = void 0; + var ProviderError = class _ProviderError extends Error { + constructor(message, tryNextLink = true) { + super(message); + this.tryNextLink = tryNextLink; + this.name = "ProviderError"; + Object.setPrototypeOf(this, _ProviderError.prototype); + } + static from(error, tryNextLink = true) { + return Object.assign(new this(error.message, tryNextLink), error); + } + }; + exports.ProviderError = ProviderError; + } +}); + +// ../../../node_modules/@smithy/property-provider/dist-cjs/CredentialsProviderError.js +var require_CredentialsProviderError = __commonJS({ + "../../../node_modules/@smithy/property-provider/dist-cjs/CredentialsProviderError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.CredentialsProviderError = void 0; + var ProviderError_1 = require_ProviderError(); + var CredentialsProviderError = class _CredentialsProviderError extends ProviderError_1.ProviderError { + constructor(message, tryNextLink = true) { + super(message, tryNextLink); + this.tryNextLink = tryNextLink; + this.name = "CredentialsProviderError"; + Object.setPrototypeOf(this, _CredentialsProviderError.prototype); + } + }; + exports.CredentialsProviderError = CredentialsProviderError; + } +}); + +// ../../../node_modules/@smithy/property-provider/dist-cjs/TokenProviderError.js +var require_TokenProviderError = __commonJS({ + "../../../node_modules/@smithy/property-provider/dist-cjs/TokenProviderError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.TokenProviderError = void 0; + var ProviderError_1 = require_ProviderError(); + var TokenProviderError = class _TokenProviderError extends ProviderError_1.ProviderError { + constructor(message, tryNextLink = true) { + super(message, tryNextLink); + this.tryNextLink = tryNextLink; + this.name = "TokenProviderError"; + Object.setPrototypeOf(this, _TokenProviderError.prototype); + } + }; + exports.TokenProviderError = TokenProviderError; + } +}); + +// ../../../node_modules/@smithy/property-provider/dist-cjs/chain.js +var require_chain = __commonJS({ + "../../../node_modules/@smithy/property-provider/dist-cjs/chain.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.chain = void 0; + var ProviderError_1 = require_ProviderError(); + function chain(...providers) { + return () => { + let promise = Promise.reject(new ProviderError_1.ProviderError("No providers in chain")); + for (const provider of providers) { + promise = promise.catch((err) => { + if (err === null || err === void 0 ? void 0 : err.tryNextLink) { + return provider(); + } + throw err; + }); + } + return promise; + }; + } + exports.chain = chain; + } +}); + +// ../../../node_modules/@smithy/property-provider/dist-cjs/fromStatic.js +var require_fromStatic = __commonJS({ + "../../../node_modules/@smithy/property-provider/dist-cjs/fromStatic.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromStatic = void 0; + var fromStatic = (staticValue) => () => Promise.resolve(staticValue); + exports.fromStatic = fromStatic; + } +}); + +// ../../../node_modules/@smithy/property-provider/dist-cjs/memoize.js +var require_memoize = __commonJS({ + "../../../node_modules/@smithy/property-provider/dist-cjs/memoize.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.memoize = void 0; + var memoize = (provider, isExpired, requiresRefresh) => { + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = async () => { + if (!pending) { + pending = provider(); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } finally { + pending = void 0; + } + return resolved; + }; + if (isExpired === void 0) { + return async (options) => { + if (!hasResult || (options === null || options === void 0 ? void 0 : options.forceRefresh)) { + resolved = await coalesceProvider(); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || (options === null || options === void 0 ? void 0 : options.forceRefresh)) { + resolved = await coalesceProvider(); + } + if (isConstant) { + return resolved; + } + if (requiresRefresh && !requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(); + return resolved; + } + return resolved; + }; + }; + exports.memoize = memoize; + } +}); + +// ../../../node_modules/@smithy/property-provider/dist-cjs/index.js +var require_dist_cjs6 = __commonJS({ + "../../../node_modules/@smithy/property-provider/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_CredentialsProviderError(), exports); + tslib_1.__exportStar(require_ProviderError(), exports); + tslib_1.__exportStar(require_TokenProviderError(), exports); + tslib_1.__exportStar(require_chain(), exports); + tslib_1.__exportStar(require_fromStatic(), exports); + tslib_1.__exportStar(require_memoize(), exports); + } +}); + +// ../../../node_modules/@aws-crypto/crc32/node_modules/tslib/tslib.es6.js +var tslib_es6_exports2 = {}; +__export(tslib_es6_exports2, { + __assign: () => __assign2, + __asyncDelegator: () => __asyncDelegator2, + __asyncGenerator: () => __asyncGenerator2, + __asyncValues: () => __asyncValues2, + __await: () => __await2, + __awaiter: () => __awaiter2, + __classPrivateFieldGet: () => __classPrivateFieldGet2, + __classPrivateFieldSet: () => __classPrivateFieldSet2, + __createBinding: () => __createBinding2, + __decorate: () => __decorate2, + __exportStar: () => __exportStar2, + __extends: () => __extends2, + __generator: () => __generator2, + __importDefault: () => __importDefault2, + __importStar: () => __importStar2, + __makeTemplateObject: () => __makeTemplateObject2, + __metadata: () => __metadata2, + __param: () => __param2, + __read: () => __read2, + __rest: () => __rest2, + __spread: () => __spread2, + __spreadArrays: () => __spreadArrays2, + __values: () => __values2 +}); +function __extends2(d, b) { + extendStatics2(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} +function __rest2(s, e) { + var t = {}; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} +function __decorate2(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} +function __param2(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +} +function __metadata2(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") + return Reflect.metadata(metadataKey, metadataValue); +} +function __awaiter2(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} +function __generator2(thisArg, body) { + var _ = { label: 0, sent: function() { + if (t[0] & 1) + throw t[1]; + return t[1]; + }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + function step(op) { + if (f) + throw new TypeError("Generator is already executing."); + while (_) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) + throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } +} +function __createBinding2(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; +} +function __exportStar2(m, exports) { + for (var p in m) + if (p !== "default" && !exports.hasOwnProperty(p)) + exports[p] = m[p]; +} +function __values2(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) + return m.call(o); + if (o && typeof o.length === "number") + return { + next: function() { + if (o && i >= o.length) + o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} +function __read2(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) + return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) + m.call(i); + } finally { + if (e) + throw e.error; + } + } + return ar; +} +function __spread2() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read2(arguments[i])); + return ar; +} +function __spreadArrays2() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) + s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} +function __await2(v) { + return this instanceof __await2 ? (this.v = v, this) : new __await2(v); +} +function __asyncGenerator2(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i; + function verb(n) { + if (g[n]) + i[n] = function(v) { + return new Promise(function(a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }; + } + function resume(n, v) { + try { + step(g[n](v)); + } catch (e) { + settle(q[0][3], e); + } + } + function step(r) { + r.value instanceof __await2 ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f, v) { + if (f(v), q.shift(), q.length) + resume(q[0][0], q[0][1]); + } +} +function __asyncDelegator2(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function(e) { + throw e; + }), verb("return"), i[Symbol.iterator] = function() { + return this; + }, i; + function verb(n, f) { + i[n] = o[n] ? function(v) { + return (p = !p) ? { value: __await2(o[n](v)), done: n === "return" } : f ? f(v) : v; + } : f; + } +} +function __asyncValues2(o) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values2 === "function" ? __values2(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i); + function verb(n) { + i[n] = o[n] && function(v) { + return new Promise(function(resolve, reject) { + v = o[n](v), settle(resolve, reject, v.done, v.value); + }); + }; + } + function settle(resolve, reject, d, v) { + Promise.resolve(v).then(function(v2) { + resolve({ value: v2, done: d }); + }, reject); + } +} +function __makeTemplateObject2(cooked, raw) { + if (Object.defineProperty) { + Object.defineProperty(cooked, "raw", { value: raw }); + } else { + cooked.raw = raw; + } + return cooked; +} +function __importStar2(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (Object.hasOwnProperty.call(mod, k)) + result[k] = mod[k]; + } + result.default = mod; + return result; +} +function __importDefault2(mod) { + return mod && mod.__esModule ? mod : { default: mod }; +} +function __classPrivateFieldGet2(receiver, privateMap) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + return privateMap.get(receiver); +} +function __classPrivateFieldSet2(receiver, privateMap, value) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to set private field on non-instance"); + } + privateMap.set(receiver, value); + return value; +} +var extendStatics2, __assign2; +var init_tslib_es62 = __esm({ + "../../../node_modules/@aws-crypto/crc32/node_modules/tslib/tslib.es6.js"() { + extendStatics2 = function(d, b) { + extendStatics2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) + if (b2.hasOwnProperty(p)) + d2[p] = b2[p]; + }; + return extendStatics2(d, b); + }; + __assign2 = function() { + __assign2 = Object.assign || function __assign3(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign2.apply(this, arguments); + }; + } +}); + +// ../../../node_modules/@aws-sdk/util-utf8-browser/dist-cjs/pureJs.js +var require_pureJs = __commonJS({ + "../../../node_modules/@aws-sdk/util-utf8-browser/dist-cjs/pureJs.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toUtf8 = exports.fromUtf8 = void 0; + var fromUtf8 = (input) => { + const bytes = []; + for (let i = 0, len = input.length; i < len; i++) { + const value = input.charCodeAt(i); + if (value < 128) { + bytes.push(value); + } else if (value < 2048) { + bytes.push(value >> 6 | 192, value & 63 | 128); + } else if (i + 1 < input.length && (value & 64512) === 55296 && (input.charCodeAt(i + 1) & 64512) === 56320) { + const surrogatePair = 65536 + ((value & 1023) << 10) + (input.charCodeAt(++i) & 1023); + bytes.push(surrogatePair >> 18 | 240, surrogatePair >> 12 & 63 | 128, surrogatePair >> 6 & 63 | 128, surrogatePair & 63 | 128); + } else { + bytes.push(value >> 12 | 224, value >> 6 & 63 | 128, value & 63 | 128); + } + } + return Uint8Array.from(bytes); + }; + exports.fromUtf8 = fromUtf8; + var toUtf8 = (input) => { + let decoded = ""; + for (let i = 0, len = input.length; i < len; i++) { + const byte = input[i]; + if (byte < 128) { + decoded += String.fromCharCode(byte); + } else if (192 <= byte && byte < 224) { + const nextByte = input[++i]; + decoded += String.fromCharCode((byte & 31) << 6 | nextByte & 63); + } else if (240 <= byte && byte < 365) { + const surrogatePair = [byte, input[++i], input[++i], input[++i]]; + const encoded = "%" + surrogatePair.map((byteValue) => byteValue.toString(16)).join("%"); + decoded += decodeURIComponent(encoded); + } else { + decoded += String.fromCharCode((byte & 15) << 12 | (input[++i] & 63) << 6 | input[++i] & 63); + } + } + return decoded; + }; + exports.toUtf8 = toUtf8; + } +}); + +// ../../../node_modules/@aws-sdk/util-utf8-browser/dist-cjs/whatwgEncodingApi.js +var require_whatwgEncodingApi = __commonJS({ + "../../../node_modules/@aws-sdk/util-utf8-browser/dist-cjs/whatwgEncodingApi.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toUtf8 = exports.fromUtf8 = void 0; + function fromUtf8(input) { + return new TextEncoder().encode(input); + } + exports.fromUtf8 = fromUtf8; + function toUtf8(input) { + return new TextDecoder("utf-8").decode(input); + } + exports.toUtf8 = toUtf8; + } +}); + +// ../../../node_modules/@aws-sdk/util-utf8-browser/dist-cjs/index.js +var require_dist_cjs7 = __commonJS({ + "../../../node_modules/@aws-sdk/util-utf8-browser/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toUtf8 = exports.fromUtf8 = void 0; + var pureJs_1 = require_pureJs(); + var whatwgEncodingApi_1 = require_whatwgEncodingApi(); + var fromUtf8 = (input) => typeof TextEncoder === "function" ? (0, whatwgEncodingApi_1.fromUtf8)(input) : (0, pureJs_1.fromUtf8)(input); + exports.fromUtf8 = fromUtf8; + var toUtf8 = (input) => typeof TextDecoder === "function" ? (0, whatwgEncodingApi_1.toUtf8)(input) : (0, pureJs_1.toUtf8)(input); + exports.toUtf8 = toUtf8; + } +}); + +// ../../../node_modules/@aws-crypto/util/build/convertToBuffer.js +var require_convertToBuffer = __commonJS({ + "../../../node_modules/@aws-crypto/util/build/convertToBuffer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.convertToBuffer = void 0; + var util_utf8_browser_1 = require_dist_cjs7(); + var fromUtf8 = typeof Buffer !== "undefined" && Buffer.from ? function(input) { + return Buffer.from(input, "utf8"); + } : util_utf8_browser_1.fromUtf8; + function convertToBuffer(data) { + if (data instanceof Uint8Array) + return data; + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); + } + exports.convertToBuffer = convertToBuffer; + } +}); + +// ../../../node_modules/@aws-crypto/util/build/isEmptyData.js +var require_isEmptyData = __commonJS({ + "../../../node_modules/@aws-crypto/util/build/isEmptyData.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isEmptyData = void 0; + function isEmptyData(data) { + if (typeof data === "string") { + return data.length === 0; + } + return data.byteLength === 0; + } + exports.isEmptyData = isEmptyData; + } +}); + +// ../../../node_modules/@aws-crypto/util/build/numToUint8.js +var require_numToUint8 = __commonJS({ + "../../../node_modules/@aws-crypto/util/build/numToUint8.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.numToUint8 = void 0; + function numToUint8(num) { + return new Uint8Array([ + (num & 4278190080) >> 24, + (num & 16711680) >> 16, + (num & 65280) >> 8, + num & 255 + ]); + } + exports.numToUint8 = numToUint8; + } +}); + +// ../../../node_modules/@aws-crypto/util/build/uint32ArrayFrom.js +var require_uint32ArrayFrom = __commonJS({ + "../../../node_modules/@aws-crypto/util/build/uint32ArrayFrom.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.uint32ArrayFrom = void 0; + function uint32ArrayFrom(a_lookUpTable) { + if (!Uint32Array.from) { + var return_array = new Uint32Array(a_lookUpTable.length); + var a_index = 0; + while (a_index < a_lookUpTable.length) { + return_array[a_index] = a_lookUpTable[a_index]; + a_index += 1; + } + return return_array; + } + return Uint32Array.from(a_lookUpTable); + } + exports.uint32ArrayFrom = uint32ArrayFrom; + } +}); + +// ../../../node_modules/@aws-crypto/util/build/index.js +var require_build = __commonJS({ + "../../../node_modules/@aws-crypto/util/build/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.uint32ArrayFrom = exports.numToUint8 = exports.isEmptyData = exports.convertToBuffer = void 0; + var convertToBuffer_1 = require_convertToBuffer(); + Object.defineProperty(exports, "convertToBuffer", { enumerable: true, get: function() { + return convertToBuffer_1.convertToBuffer; + } }); + var isEmptyData_1 = require_isEmptyData(); + Object.defineProperty(exports, "isEmptyData", { enumerable: true, get: function() { + return isEmptyData_1.isEmptyData; + } }); + var numToUint8_1 = require_numToUint8(); + Object.defineProperty(exports, "numToUint8", { enumerable: true, get: function() { + return numToUint8_1.numToUint8; + } }); + var uint32ArrayFrom_1 = require_uint32ArrayFrom(); + Object.defineProperty(exports, "uint32ArrayFrom", { enumerable: true, get: function() { + return uint32ArrayFrom_1.uint32ArrayFrom; + } }); + } +}); + +// ../../../node_modules/@aws-crypto/crc32/build/aws_crc32.js +var require_aws_crc32 = __commonJS({ + "../../../node_modules/@aws-crypto/crc32/build/aws_crc32.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AwsCrc32 = void 0; + var tslib_1 = (init_tslib_es62(), __toCommonJS(tslib_es6_exports2)); + var util_1 = require_build(); + var index_1 = require_build2(); + var AwsCrc32 = ( + /** @class */ + function() { + function AwsCrc322() { + this.crc32 = new index_1.Crc32(); + } + AwsCrc322.prototype.update = function(toHash) { + if ((0, util_1.isEmptyData)(toHash)) + return; + this.crc32.update((0, util_1.convertToBuffer)(toHash)); + }; + AwsCrc322.prototype.digest = function() { + return tslib_1.__awaiter(this, void 0, void 0, function() { + return tslib_1.__generator(this, function(_a) { + return [2, (0, util_1.numToUint8)(this.crc32.digest())]; + }); + }); + }; + AwsCrc322.prototype.reset = function() { + this.crc32 = new index_1.Crc32(); + }; + return AwsCrc322; + }() + ); + exports.AwsCrc32 = AwsCrc32; + } +}); + +// ../../../node_modules/@aws-crypto/crc32/build/index.js +var require_build2 = __commonJS({ + "../../../node_modules/@aws-crypto/crc32/build/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AwsCrc32 = exports.Crc32 = exports.crc32 = void 0; + var tslib_1 = (init_tslib_es62(), __toCommonJS(tslib_es6_exports2)); + var util_1 = require_build(); + function crc32(data) { + return new Crc32().update(data).digest(); + } + exports.crc32 = crc32; + var Crc32 = ( + /** @class */ + function() { + function Crc322() { + this.checksum = 4294967295; + } + Crc322.prototype.update = function(data) { + var e_1, _a; + try { + for (var data_1 = tslib_1.__values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) { + var byte = data_1_1.value; + this.checksum = this.checksum >>> 8 ^ lookupTable[(this.checksum ^ byte) & 255]; + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (data_1_1 && !data_1_1.done && (_a = data_1.return)) + _a.call(data_1); + } finally { + if (e_1) + throw e_1.error; + } + } + return this; + }; + Crc322.prototype.digest = function() { + return (this.checksum ^ 4294967295) >>> 0; + }; + return Crc322; + }() + ); + exports.Crc32 = Crc32; + var a_lookUpTable = [ + 0, + 1996959894, + 3993919788, + 2567524794, + 124634137, + 1886057615, + 3915621685, + 2657392035, + 249268274, + 2044508324, + 3772115230, + 2547177864, + 162941995, + 2125561021, + 3887607047, + 2428444049, + 498536548, + 1789927666, + 4089016648, + 2227061214, + 450548861, + 1843258603, + 4107580753, + 2211677639, + 325883990, + 1684777152, + 4251122042, + 2321926636, + 335633487, + 1661365465, + 4195302755, + 2366115317, + 997073096, + 1281953886, + 3579855332, + 2724688242, + 1006888145, + 1258607687, + 3524101629, + 2768942443, + 901097722, + 1119000684, + 3686517206, + 2898065728, + 853044451, + 1172266101, + 3705015759, + 2882616665, + 651767980, + 1373503546, + 3369554304, + 3218104598, + 565507253, + 1454621731, + 3485111705, + 3099436303, + 671266974, + 1594198024, + 3322730930, + 2970347812, + 795835527, + 1483230225, + 3244367275, + 3060149565, + 1994146192, + 31158534, + 2563907772, + 4023717930, + 1907459465, + 112637215, + 2680153253, + 3904427059, + 2013776290, + 251722036, + 2517215374, + 3775830040, + 2137656763, + 141376813, + 2439277719, + 3865271297, + 1802195444, + 476864866, + 2238001368, + 4066508878, + 1812370925, + 453092731, + 2181625025, + 4111451223, + 1706088902, + 314042704, + 2344532202, + 4240017532, + 1658658271, + 366619977, + 2362670323, + 4224994405, + 1303535960, + 984961486, + 2747007092, + 3569037538, + 1256170817, + 1037604311, + 2765210733, + 3554079995, + 1131014506, + 879679996, + 2909243462, + 3663771856, + 1141124467, + 855842277, + 2852801631, + 3708648649, + 1342533948, + 654459306, + 3188396048, + 3373015174, + 1466479909, + 544179635, + 3110523913, + 3462522015, + 1591671054, + 702138776, + 2966460450, + 3352799412, + 1504918807, + 783551873, + 3082640443, + 3233442989, + 3988292384, + 2596254646, + 62317068, + 1957810842, + 3939845945, + 2647816111, + 81470997, + 1943803523, + 3814918930, + 2489596804, + 225274430, + 2053790376, + 3826175755, + 2466906013, + 167816743, + 2097651377, + 4027552580, + 2265490386, + 503444072, + 1762050814, + 4150417245, + 2154129355, + 426522225, + 1852507879, + 4275313526, + 2312317920, + 282753626, + 1742555852, + 4189708143, + 2394877945, + 397917763, + 1622183637, + 3604390888, + 2714866558, + 953729732, + 1340076626, + 3518719985, + 2797360999, + 1068828381, + 1219638859, + 3624741850, + 2936675148, + 906185462, + 1090812512, + 3747672003, + 2825379669, + 829329135, + 1181335161, + 3412177804, + 3160834842, + 628085408, + 1382605366, + 3423369109, + 3138078467, + 570562233, + 1426400815, + 3317316542, + 2998733608, + 733239954, + 1555261956, + 3268935591, + 3050360625, + 752459403, + 1541320221, + 2607071920, + 3965973030, + 1969922972, + 40735498, + 2617837225, + 3943577151, + 1913087877, + 83908371, + 2512341634, + 3803740692, + 2075208622, + 213261112, + 2463272603, + 3855990285, + 2094854071, + 198958881, + 2262029012, + 4057260610, + 1759359992, + 534414190, + 2176718541, + 4139329115, + 1873836001, + 414664567, + 2282248934, + 4279200368, + 1711684554, + 285281116, + 2405801727, + 4167216745, + 1634467795, + 376229701, + 2685067896, + 3608007406, + 1308918612, + 956543938, + 2808555105, + 3495958263, + 1231636301, + 1047427035, + 2932959818, + 3654703836, + 1088359270, + 936918e3, + 2847714899, + 3736837829, + 1202900863, + 817233897, + 3183342108, + 3401237130, + 1404277552, + 615818150, + 3134207493, + 3453421203, + 1423857449, + 601450431, + 3009837614, + 3294710456, + 1567103746, + 711928724, + 3020668471, + 3272380065, + 1510334235, + 755167117 + ]; + var lookupTable = (0, util_1.uint32ArrayFrom)(a_lookUpTable); + var aws_crc32_1 = require_aws_crc32(); + Object.defineProperty(exports, "AwsCrc32", { enumerable: true, get: function() { + return aws_crc32_1.AwsCrc32; + } }); + } +}); + +// ../../../node_modules/@smithy/util-hex-encoding/dist-cjs/index.js +var require_dist_cjs8 = __commonJS({ + "../../../node_modules/@smithy/util-hex-encoding/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toHex = exports.fromHex = void 0; + var SHORT_TO_HEX = {}; + var HEX_TO_SHORT = {}; + for (let i = 0; i < 256; i++) { + let encodedByte = i.toString(16).toLowerCase(); + if (encodedByte.length === 1) { + encodedByte = `0${encodedByte}`; + } + SHORT_TO_HEX[i] = encodedByte; + HEX_TO_SHORT[encodedByte] = i; + } + function fromHex(encoded) { + if (encoded.length % 2 !== 0) { + throw new Error("Hex encoded strings must have an even number length"); + } + const out = new Uint8Array(encoded.length / 2); + for (let i = 0; i < encoded.length; i += 2) { + const encodedByte = encoded.slice(i, i + 2).toLowerCase(); + if (encodedByte in HEX_TO_SHORT) { + out[i / 2] = HEX_TO_SHORT[encodedByte]; + } else { + throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`); + } + } + return out; + } + exports.fromHex = fromHex; + function toHex(bytes) { + let out = ""; + for (let i = 0; i < bytes.byteLength; i++) { + out += SHORT_TO_HEX[bytes[i]]; + } + return out; + } + exports.toHex = toHex; + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/Int64.js +var require_Int64 = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/Int64.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Int64 = void 0; + var util_hex_encoding_1 = require_dist_cjs8(); + var Int64 = class _Int64 { + constructor(bytes) { + this.bytes = bytes; + if (bytes.byteLength !== 8) { + throw new Error("Int64 buffers must be exactly 8 bytes"); + } + } + static fromNumber(number) { + if (number > 9223372036854776e3 || number < -9223372036854776e3) { + throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`); + } + const bytes = new Uint8Array(8); + for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) { + bytes[i] = remaining; + } + if (number < 0) { + negate(bytes); + } + return new _Int64(bytes); + } + valueOf() { + const bytes = this.bytes.slice(0); + const negative = bytes[0] & 128; + if (negative) { + negate(bytes); + } + return parseInt((0, util_hex_encoding_1.toHex)(bytes), 16) * (negative ? -1 : 1); + } + toString() { + return String(this.valueOf()); + } + }; + exports.Int64 = Int64; + function negate(bytes) { + for (let i = 0; i < 8; i++) { + bytes[i] ^= 255; + } + for (let i = 7; i > -1; i--) { + bytes[i]++; + if (bytes[i] !== 0) + break; + } + } + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/HeaderMarshaller.js +var require_HeaderMarshaller = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/HeaderMarshaller.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.HeaderMarshaller = void 0; + var util_hex_encoding_1 = require_dist_cjs8(); + var Int64_1 = require_Int64(); + var HeaderMarshaller = class { + constructor(toUtf8, fromUtf8) { + this.toUtf8 = toUtf8; + this.fromUtf8 = fromUtf8; + } + format(headers) { + const chunks = []; + for (const headerName of Object.keys(headers)) { + const bytes = this.fromUtf8(headerName); + chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName])); + } + const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0)); + let position = 0; + for (const chunk of chunks) { + out.set(chunk, position); + position += chunk.byteLength; + } + return out; + } + formatHeaderValue(header) { + switch (header.type) { + case "boolean": + return Uint8Array.from([header.value ? 0 : 1]); + case "byte": + return Uint8Array.from([2, header.value]); + case "short": + const shortView = new DataView(new ArrayBuffer(3)); + shortView.setUint8(0, 3); + shortView.setInt16(1, header.value, false); + return new Uint8Array(shortView.buffer); + case "integer": + const intView = new DataView(new ArrayBuffer(5)); + intView.setUint8(0, 4); + intView.setInt32(1, header.value, false); + return new Uint8Array(intView.buffer); + case "long": + const longBytes = new Uint8Array(9); + longBytes[0] = 5; + longBytes.set(header.value.bytes, 1); + return longBytes; + case "binary": + const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength)); + binView.setUint8(0, 6); + binView.setUint16(1, header.value.byteLength, false); + const binBytes = new Uint8Array(binView.buffer); + binBytes.set(header.value, 3); + return binBytes; + case "string": + const utf8Bytes = this.fromUtf8(header.value); + const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength)); + strView.setUint8(0, 7); + strView.setUint16(1, utf8Bytes.byteLength, false); + const strBytes = new Uint8Array(strView.buffer); + strBytes.set(utf8Bytes, 3); + return strBytes; + case "timestamp": + const tsBytes = new Uint8Array(9); + tsBytes[0] = 8; + tsBytes.set(Int64_1.Int64.fromNumber(header.value.valueOf()).bytes, 1); + return tsBytes; + case "uuid": + if (!UUID_PATTERN.test(header.value)) { + throw new Error(`Invalid UUID received: ${header.value}`); + } + const uuidBytes = new Uint8Array(17); + uuidBytes[0] = 9; + uuidBytes.set((0, util_hex_encoding_1.fromHex)(header.value.replace(/\-/g, "")), 1); + return uuidBytes; + } + } + parse(headers) { + const out = {}; + let position = 0; + while (position < headers.byteLength) { + const nameLength = headers.getUint8(position++); + const name = this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, nameLength)); + position += nameLength; + switch (headers.getUint8(position++)) { + case 0: + out[name] = { + type: BOOLEAN_TAG, + value: true + }; + break; + case 1: + out[name] = { + type: BOOLEAN_TAG, + value: false + }; + break; + case 2: + out[name] = { + type: BYTE_TAG, + value: headers.getInt8(position++) + }; + break; + case 3: + out[name] = { + type: SHORT_TAG, + value: headers.getInt16(position, false) + }; + position += 2; + break; + case 4: + out[name] = { + type: INT_TAG, + value: headers.getInt32(position, false) + }; + position += 4; + break; + case 5: + out[name] = { + type: LONG_TAG, + value: new Int64_1.Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)) + }; + position += 8; + break; + case 6: + const binaryLength = headers.getUint16(position, false); + position += 2; + out[name] = { + type: BINARY_TAG, + value: new Uint8Array(headers.buffer, headers.byteOffset + position, binaryLength) + }; + position += binaryLength; + break; + case 7: + const stringLength = headers.getUint16(position, false); + position += 2; + out[name] = { + type: STRING_TAG, + value: this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, stringLength)) + }; + position += stringLength; + break; + case 8: + out[name] = { + type: TIMESTAMP_TAG, + value: new Date(new Int64_1.Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)).valueOf()) + }; + position += 8; + break; + case 9: + const uuidBytes = new Uint8Array(headers.buffer, headers.byteOffset + position, 16); + position += 16; + out[name] = { + type: UUID_TAG, + value: `${(0, util_hex_encoding_1.toHex)(uuidBytes.subarray(0, 4))}-${(0, util_hex_encoding_1.toHex)(uuidBytes.subarray(4, 6))}-${(0, util_hex_encoding_1.toHex)(uuidBytes.subarray(6, 8))}-${(0, util_hex_encoding_1.toHex)(uuidBytes.subarray(8, 10))}-${(0, util_hex_encoding_1.toHex)(uuidBytes.subarray(10))}` + }; + break; + default: + throw new Error(`Unrecognized header type tag`); + } + } + return out; + } + }; + exports.HeaderMarshaller = HeaderMarshaller; + var HEADER_VALUE_TYPE; + (function(HEADER_VALUE_TYPE2) { + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["boolTrue"] = 0] = "boolTrue"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["boolFalse"] = 1] = "boolFalse"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["byte"] = 2] = "byte"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["short"] = 3] = "short"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["integer"] = 4] = "integer"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["long"] = 5] = "long"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["byteArray"] = 6] = "byteArray"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["string"] = 7] = "string"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["timestamp"] = 8] = "timestamp"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["uuid"] = 9] = "uuid"; + })(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {})); + var BOOLEAN_TAG = "boolean"; + var BYTE_TAG = "byte"; + var SHORT_TAG = "short"; + var INT_TAG = "integer"; + var LONG_TAG = "long"; + var BINARY_TAG = "binary"; + var STRING_TAG = "string"; + var TIMESTAMP_TAG = "timestamp"; + var UUID_TAG = "uuid"; + var UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/; + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/splitMessage.js +var require_splitMessage = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/splitMessage.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.splitMessage = void 0; + var crc32_1 = require_build2(); + var PRELUDE_MEMBER_LENGTH = 4; + var PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2; + var CHECKSUM_LENGTH = 4; + var MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2; + function splitMessage({ byteLength, byteOffset, buffer }) { + if (byteLength < MINIMUM_MESSAGE_LENGTH) { + throw new Error("Provided message too short to accommodate event stream message overhead"); + } + const view = new DataView(buffer, byteOffset, byteLength); + const messageLength = view.getUint32(0, false); + if (byteLength !== messageLength) { + throw new Error("Reported message length does not match received message length"); + } + const headerLength = view.getUint32(PRELUDE_MEMBER_LENGTH, false); + const expectedPreludeChecksum = view.getUint32(PRELUDE_LENGTH, false); + const expectedMessageChecksum = view.getUint32(byteLength - CHECKSUM_LENGTH, false); + const checksummer = new crc32_1.Crc32().update(new Uint8Array(buffer, byteOffset, PRELUDE_LENGTH)); + if (expectedPreludeChecksum !== checksummer.digest()) { + throw new Error(`The prelude checksum specified in the message (${expectedPreludeChecksum}) does not match the calculated CRC32 checksum (${checksummer.digest()})`); + } + checksummer.update(new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH, byteLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH))); + if (expectedMessageChecksum !== checksummer.digest()) { + throw new Error(`The message checksum (${checksummer.digest()}) did not match the expected value of ${expectedMessageChecksum}`); + } + return { + headers: new DataView(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH, headerLength), + body: new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH + headerLength, messageLength - headerLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH + CHECKSUM_LENGTH)) + }; + } + exports.splitMessage = splitMessage; + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/EventStreamCodec.js +var require_EventStreamCodec = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/EventStreamCodec.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.EventStreamCodec = void 0; + var crc32_1 = require_build2(); + var HeaderMarshaller_1 = require_HeaderMarshaller(); + var splitMessage_1 = require_splitMessage(); + var EventStreamCodec = class { + constructor(toUtf8, fromUtf8) { + this.headerMarshaller = new HeaderMarshaller_1.HeaderMarshaller(toUtf8, fromUtf8); + this.messageBuffer = []; + this.isEndOfStream = false; + } + feed(message) { + this.messageBuffer.push(this.decode(message)); + } + endOfStream() { + this.isEndOfStream = true; + } + getMessage() { + const message = this.messageBuffer.pop(); + const isEndOfStream = this.isEndOfStream; + return { + getMessage() { + return message; + }, + isEndOfStream() { + return isEndOfStream; + } + }; + } + getAvailableMessages() { + const messages = this.messageBuffer; + this.messageBuffer = []; + const isEndOfStream = this.isEndOfStream; + return { + getMessages() { + return messages; + }, + isEndOfStream() { + return isEndOfStream; + } + }; + } + encode({ headers: rawHeaders, body }) { + const headers = this.headerMarshaller.format(rawHeaders); + const length = headers.byteLength + body.byteLength + 16; + const out = new Uint8Array(length); + const view = new DataView(out.buffer, out.byteOffset, out.byteLength); + const checksum = new crc32_1.Crc32(); + view.setUint32(0, length, false); + view.setUint32(4, headers.byteLength, false); + view.setUint32(8, checksum.update(out.subarray(0, 8)).digest(), false); + out.set(headers, 12); + out.set(body, headers.byteLength + 12); + view.setUint32(length - 4, checksum.update(out.subarray(8, length - 4)).digest(), false); + return out; + } + decode(message) { + const { headers, body } = (0, splitMessage_1.splitMessage)(message); + return { headers: this.headerMarshaller.parse(headers), body }; + } + formatHeaders(rawHeaders) { + return this.headerMarshaller.format(rawHeaders); + } + }; + exports.EventStreamCodec = EventStreamCodec; + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/Message.js +var require_Message = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/Message.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/MessageDecoderStream.js +var require_MessageDecoderStream = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/MessageDecoderStream.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.MessageDecoderStream = void 0; + var MessageDecoderStream = class { + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const bytes of this.options.inputStream) { + const decoded = this.options.decoder.decode(bytes); + yield decoded; + } + } + }; + exports.MessageDecoderStream = MessageDecoderStream; + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/MessageEncoderStream.js +var require_MessageEncoderStream = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/MessageEncoderStream.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.MessageEncoderStream = void 0; + var MessageEncoderStream = class { + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const msg of this.options.messageStream) { + const encoded = this.options.encoder.encode(msg); + yield encoded; + } + if (this.options.includeEndFrame) { + yield new Uint8Array(0); + } + } + }; + exports.MessageEncoderStream = MessageEncoderStream; + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/SmithyMessageDecoderStream.js +var require_SmithyMessageDecoderStream = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/SmithyMessageDecoderStream.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SmithyMessageDecoderStream = void 0; + var SmithyMessageDecoderStream = class { + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const message of this.options.messageStream) { + const deserialized = await this.options.deserializer(message); + if (deserialized === void 0) + continue; + yield deserialized; + } + } + }; + exports.SmithyMessageDecoderStream = SmithyMessageDecoderStream; + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/SmithyMessageEncoderStream.js +var require_SmithyMessageEncoderStream = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/SmithyMessageEncoderStream.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SmithyMessageEncoderStream = void 0; + var SmithyMessageEncoderStream = class { + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const chunk of this.options.inputStream) { + const payloadBuf = this.options.serializer(chunk); + yield payloadBuf; + } + } + }; + exports.SmithyMessageEncoderStream = SmithyMessageEncoderStream; + } +}); + +// ../../../node_modules/@smithy/eventstream-codec/dist-cjs/index.js +var require_dist_cjs9 = __commonJS({ + "../../../node_modules/@smithy/eventstream-codec/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_EventStreamCodec(), exports); + tslib_1.__exportStar(require_HeaderMarshaller(), exports); + tslib_1.__exportStar(require_Int64(), exports); + tslib_1.__exportStar(require_Message(), exports); + tslib_1.__exportStar(require_MessageDecoderStream(), exports); + tslib_1.__exportStar(require_MessageEncoderStream(), exports); + tslib_1.__exportStar(require_SmithyMessageDecoderStream(), exports); + tslib_1.__exportStar(require_SmithyMessageEncoderStream(), exports); + } +}); + +// ../../../node_modules/@smithy/util-middleware/dist-cjs/normalizeProvider.js +var require_normalizeProvider = __commonJS({ + "../../../node_modules/@smithy/util-middleware/dist-cjs/normalizeProvider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.normalizeProvider = void 0; + var normalizeProvider = (input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; + }; + exports.normalizeProvider = normalizeProvider; + } +}); + +// ../../../node_modules/@smithy/util-middleware/dist-cjs/index.js +var require_dist_cjs10 = __commonJS({ + "../../../node_modules/@smithy/util-middleware/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_normalizeProvider(), exports); + } +}); + +// ../../../node_modules/@smithy/is-array-buffer/dist-cjs/index.js +var require_dist_cjs11 = __commonJS({ + "../../../node_modules/@smithy/is-array-buffer/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isArrayBuffer = void 0; + var isArrayBuffer = (arg) => typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; + exports.isArrayBuffer = isArrayBuffer; + } +}); + +// ../../../node_modules/@smithy/util-buffer-from/dist-cjs/index.js +var require_dist_cjs12 = __commonJS({ + "../../../node_modules/@smithy/util-buffer-from/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromString = exports.fromArrayBuffer = void 0; + var is_array_buffer_1 = require_dist_cjs11(); + var buffer_1 = require("buffer"); + var fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!(0, is_array_buffer_1.isArrayBuffer)(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return buffer_1.Buffer.from(input, offset, length); + }; + exports.fromArrayBuffer = fromArrayBuffer; + var fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? buffer_1.Buffer.from(input, encoding) : buffer_1.Buffer.from(input); + }; + exports.fromString = fromString; + } +}); + +// ../../../node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js +var require_fromUtf8 = __commonJS({ + "../../../node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromUtf8 = void 0; + var util_buffer_from_1 = require_dist_cjs12(); + var fromUtf8 = (input) => { + const buf = (0, util_buffer_from_1.fromString)(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); + }; + exports.fromUtf8 = fromUtf8; + } +}); + +// ../../../node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js +var require_toUint8Array = __commonJS({ + "../../../node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toUint8Array = void 0; + var fromUtf8_1 = require_fromUtf8(); + var toUint8Array = (data) => { + if (typeof data === "string") { + return (0, fromUtf8_1.fromUtf8)(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); + }; + exports.toUint8Array = toUint8Array; + } +}); + +// ../../../node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js +var require_toUtf8 = __commonJS({ + "../../../node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toUtf8 = void 0; + var util_buffer_from_1 = require_dist_cjs12(); + var toUtf8 = (input) => (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); + exports.toUtf8 = toUtf8; + } +}); + +// ../../../node_modules/@smithy/util-utf8/dist-cjs/index.js +var require_dist_cjs13 = __commonJS({ + "../../../node_modules/@smithy/util-utf8/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_fromUtf8(), exports); + tslib_1.__exportStar(require_toUint8Array(), exports); + tslib_1.__exportStar(require_toUtf8(), exports); + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/constants.js +var require_constants = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.MAX_PRESIGNED_TTL = exports.KEY_TYPE_IDENTIFIER = exports.MAX_CACHE_SIZE = exports.UNSIGNED_PAYLOAD = exports.EVENT_ALGORITHM_IDENTIFIER = exports.ALGORITHM_IDENTIFIER_V4A = exports.ALGORITHM_IDENTIFIER = exports.UNSIGNABLE_PATTERNS = exports.SEC_HEADER_PATTERN = exports.PROXY_HEADER_PATTERN = exports.ALWAYS_UNSIGNABLE_HEADERS = exports.HOST_HEADER = exports.TOKEN_HEADER = exports.SHA256_HEADER = exports.SIGNATURE_HEADER = exports.GENERATED_HEADERS = exports.DATE_HEADER = exports.AMZ_DATE_HEADER = exports.AUTH_HEADER = exports.REGION_SET_PARAM = exports.TOKEN_QUERY_PARAM = exports.SIGNATURE_QUERY_PARAM = exports.EXPIRES_QUERY_PARAM = exports.SIGNED_HEADERS_QUERY_PARAM = exports.AMZ_DATE_QUERY_PARAM = exports.CREDENTIAL_QUERY_PARAM = exports.ALGORITHM_QUERY_PARAM = void 0; + exports.ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; + exports.CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; + exports.AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; + exports.SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; + exports.EXPIRES_QUERY_PARAM = "X-Amz-Expires"; + exports.SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; + exports.TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; + exports.REGION_SET_PARAM = "X-Amz-Region-Set"; + exports.AUTH_HEADER = "authorization"; + exports.AMZ_DATE_HEADER = exports.AMZ_DATE_QUERY_PARAM.toLowerCase(); + exports.DATE_HEADER = "date"; + exports.GENERATED_HEADERS = [exports.AUTH_HEADER, exports.AMZ_DATE_HEADER, exports.DATE_HEADER]; + exports.SIGNATURE_HEADER = exports.SIGNATURE_QUERY_PARAM.toLowerCase(); + exports.SHA256_HEADER = "x-amz-content-sha256"; + exports.TOKEN_HEADER = exports.TOKEN_QUERY_PARAM.toLowerCase(); + exports.HOST_HEADER = "host"; + exports.ALWAYS_UNSIGNABLE_HEADERS = { + authorization: true, + "cache-control": true, + connection: true, + expect: true, + from: true, + "keep-alive": true, + "max-forwards": true, + pragma: true, + referer: true, + te: true, + trailer: true, + "transfer-encoding": true, + upgrade: true, + "user-agent": true, + "x-amzn-trace-id": true + }; + exports.PROXY_HEADER_PATTERN = /^proxy-/; + exports.SEC_HEADER_PATTERN = /^sec-/; + exports.UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i]; + exports.ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; + exports.ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; + exports.EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; + exports.UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; + exports.MAX_CACHE_SIZE = 50; + exports.KEY_TYPE_IDENTIFIER = "aws4_request"; + exports.MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7; + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/credentialDerivation.js +var require_credentialDerivation = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/credentialDerivation.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.clearCredentialCache = exports.getSigningKey = exports.createScope = void 0; + var util_hex_encoding_1 = require_dist_cjs8(); + var util_utf8_1 = require_dist_cjs13(); + var constants_1 = require_constants(); + var signingKeyCache = {}; + var cacheQueue = []; + var createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${constants_1.KEY_TYPE_IDENTIFIER}`; + exports.createScope = createScope; + var getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => { + const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId); + const cacheKey = `${shortDate}:${region}:${service}:${(0, util_hex_encoding_1.toHex)(credsHash)}:${credentials.sessionToken}`; + if (cacheKey in signingKeyCache) { + return signingKeyCache[cacheKey]; + } + cacheQueue.push(cacheKey); + while (cacheQueue.length > constants_1.MAX_CACHE_SIZE) { + delete signingKeyCache[cacheQueue.shift()]; + } + let key = `AWS4${credentials.secretAccessKey}`; + for (const signable of [shortDate, region, service, constants_1.KEY_TYPE_IDENTIFIER]) { + key = await hmac(sha256Constructor, key, signable); + } + return signingKeyCache[cacheKey] = key; + }; + exports.getSigningKey = getSigningKey; + var clearCredentialCache = () => { + cacheQueue.length = 0; + Object.keys(signingKeyCache).forEach((cacheKey) => { + delete signingKeyCache[cacheKey]; + }); + }; + exports.clearCredentialCache = clearCredentialCache; + var hmac = (ctor, secret, data) => { + const hash = new ctor(secret); + hash.update((0, util_utf8_1.toUint8Array)(data)); + return hash.digest(); + }; + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/getCanonicalHeaders.js +var require_getCanonicalHeaders = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/getCanonicalHeaders.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getCanonicalHeaders = void 0; + var constants_1 = require_constants(); + var getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => { + const canonical = {}; + for (const headerName of Object.keys(headers).sort()) { + if (headers[headerName] == void 0) { + continue; + } + const canonicalHeaderName = headerName.toLowerCase(); + if (canonicalHeaderName in constants_1.ALWAYS_UNSIGNABLE_HEADERS || (unsignableHeaders === null || unsignableHeaders === void 0 ? void 0 : unsignableHeaders.has(canonicalHeaderName)) || constants_1.PROXY_HEADER_PATTERN.test(canonicalHeaderName) || constants_1.SEC_HEADER_PATTERN.test(canonicalHeaderName)) { + if (!signableHeaders || signableHeaders && !signableHeaders.has(canonicalHeaderName)) { + continue; + } + } + canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\s+/g, " "); + } + return canonical; + }; + exports.getCanonicalHeaders = getCanonicalHeaders; + } +}); + +// ../../../node_modules/@smithy/util-uri-escape/dist-cjs/escape-uri.js +var require_escape_uri = __commonJS({ + "../../../node_modules/@smithy/util-uri-escape/dist-cjs/escape-uri.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.escapeUri = void 0; + var escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode); + exports.escapeUri = escapeUri; + var hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`; + } +}); + +// ../../../node_modules/@smithy/util-uri-escape/dist-cjs/escape-uri-path.js +var require_escape_uri_path = __commonJS({ + "../../../node_modules/@smithy/util-uri-escape/dist-cjs/escape-uri-path.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.escapeUriPath = void 0; + var escape_uri_1 = require_escape_uri(); + var escapeUriPath = (uri) => uri.split("/").map(escape_uri_1.escapeUri).join("/"); + exports.escapeUriPath = escapeUriPath; + } +}); + +// ../../../node_modules/@smithy/util-uri-escape/dist-cjs/index.js +var require_dist_cjs14 = __commonJS({ + "../../../node_modules/@smithy/util-uri-escape/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_escape_uri(), exports); + tslib_1.__exportStar(require_escape_uri_path(), exports); + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/getCanonicalQuery.js +var require_getCanonicalQuery = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/getCanonicalQuery.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getCanonicalQuery = void 0; + var util_uri_escape_1 = require_dist_cjs14(); + var constants_1 = require_constants(); + var getCanonicalQuery = ({ query = {} }) => { + const keys = []; + const serialized = {}; + for (const key of Object.keys(query).sort()) { + if (key.toLowerCase() === constants_1.SIGNATURE_HEADER) { + continue; + } + keys.push(key); + const value = query[key]; + if (typeof value === "string") { + serialized[key] = `${(0, util_uri_escape_1.escapeUri)(key)}=${(0, util_uri_escape_1.escapeUri)(value)}`; + } else if (Array.isArray(value)) { + serialized[key] = value.slice(0).reduce((encoded, value2) => encoded.concat([`${(0, util_uri_escape_1.escapeUri)(key)}=${(0, util_uri_escape_1.escapeUri)(value2)}`]), []).sort().join("&"); + } + } + return keys.map((key) => serialized[key]).filter((serialized2) => serialized2).join("&"); + }; + exports.getCanonicalQuery = getCanonicalQuery; + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/getPayloadHash.js +var require_getPayloadHash = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/getPayloadHash.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getPayloadHash = void 0; + var is_array_buffer_1 = require_dist_cjs11(); + var util_hex_encoding_1 = require_dist_cjs8(); + var util_utf8_1 = require_dist_cjs13(); + var constants_1 = require_constants(); + var getPayloadHash = async ({ headers, body }, hashConstructor) => { + for (const headerName of Object.keys(headers)) { + if (headerName.toLowerCase() === constants_1.SHA256_HEADER) { + return headers[headerName]; + } + } + if (body == void 0) { + return "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; + } else if (typeof body === "string" || ArrayBuffer.isView(body) || (0, is_array_buffer_1.isArrayBuffer)(body)) { + const hashCtor = new hashConstructor(); + hashCtor.update((0, util_utf8_1.toUint8Array)(body)); + return (0, util_hex_encoding_1.toHex)(await hashCtor.digest()); + } + return constants_1.UNSIGNED_PAYLOAD; + }; + exports.getPayloadHash = getPayloadHash; + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/headerUtil.js +var require_headerUtil = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/headerUtil.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.deleteHeader = exports.getHeaderValue = exports.hasHeader = void 0; + var hasHeader = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return true; + } + } + return false; + }; + exports.hasHeader = hasHeader; + var getHeaderValue = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return headers[headerName]; + } + } + return void 0; + }; + exports.getHeaderValue = getHeaderValue; + var deleteHeader = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + delete headers[headerName]; + } + } + }; + exports.deleteHeader = deleteHeader; + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/cloneRequest.js +var require_cloneRequest = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/cloneRequest.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.cloneQuery = exports.cloneRequest = void 0; + var cloneRequest = ({ headers, query, ...rest }) => ({ + ...rest, + headers: { ...headers }, + query: query ? (0, exports.cloneQuery)(query) : void 0 + }); + exports.cloneRequest = cloneRequest; + var cloneQuery = (query) => Object.keys(query).reduce((carry, paramName) => { + const param = query[paramName]; + return { + ...carry, + [paramName]: Array.isArray(param) ? [...param] : param + }; + }, {}); + exports.cloneQuery = cloneQuery; + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/moveHeadersToQuery.js +var require_moveHeadersToQuery = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/moveHeadersToQuery.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.moveHeadersToQuery = void 0; + var cloneRequest_1 = require_cloneRequest(); + var moveHeadersToQuery = (request2, options = {}) => { + var _a; + const { headers, query = {} } = typeof request2.clone === "function" ? request2.clone() : (0, cloneRequest_1.cloneRequest)(request2); + for (const name of Object.keys(headers)) { + const lname = name.toLowerCase(); + if (lname.slice(0, 6) === "x-amz-" && !((_a = options.unhoistableHeaders) === null || _a === void 0 ? void 0 : _a.has(lname))) { + query[name] = headers[name]; + delete headers[name]; + } + } + return { + ...request2, + headers, + query + }; + }; + exports.moveHeadersToQuery = moveHeadersToQuery; + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/prepareRequest.js +var require_prepareRequest = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/prepareRequest.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.prepareRequest = void 0; + var cloneRequest_1 = require_cloneRequest(); + var constants_1 = require_constants(); + var prepareRequest = (request2) => { + request2 = typeof request2.clone === "function" ? request2.clone() : (0, cloneRequest_1.cloneRequest)(request2); + for (const headerName of Object.keys(request2.headers)) { + if (constants_1.GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) { + delete request2.headers[headerName]; + } + } + return request2; + }; + exports.prepareRequest = prepareRequest; + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/utilDate.js +var require_utilDate = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/utilDate.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toDate = exports.iso8601 = void 0; + var iso8601 = (time) => (0, exports.toDate)(time).toISOString().replace(/\.\d{3}Z$/, "Z"); + exports.iso8601 = iso8601; + var toDate = (time) => { + if (typeof time === "number") { + return new Date(time * 1e3); + } + if (typeof time === "string") { + if (Number(time)) { + return new Date(Number(time) * 1e3); + } + return new Date(time); + } + return time; + }; + exports.toDate = toDate; + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/SignatureV4.js +var require_SignatureV4 = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/SignatureV4.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SignatureV4 = void 0; + var eventstream_codec_1 = require_dist_cjs9(); + var util_hex_encoding_1 = require_dist_cjs8(); + var util_middleware_1 = require_dist_cjs10(); + var util_utf8_1 = require_dist_cjs13(); + var constants_1 = require_constants(); + var credentialDerivation_1 = require_credentialDerivation(); + var getCanonicalHeaders_1 = require_getCanonicalHeaders(); + var getCanonicalQuery_1 = require_getCanonicalQuery(); + var getPayloadHash_1 = require_getPayloadHash(); + var headerUtil_1 = require_headerUtil(); + var moveHeadersToQuery_1 = require_moveHeadersToQuery(); + var prepareRequest_1 = require_prepareRequest(); + var utilDate_1 = require_utilDate(); + var SignatureV4 = class { + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true }) { + this.headerMarshaller = new eventstream_codec_1.HeaderMarshaller(util_utf8_1.toUtf8, util_utf8_1.fromUtf8); + this.service = service; + this.sha256 = sha256; + this.uriEscapePath = uriEscapePath; + this.applyChecksum = typeof applyChecksum === "boolean" ? applyChecksum : true; + this.regionProvider = (0, util_middleware_1.normalizeProvider)(region); + this.credentialProvider = (0, util_middleware_1.normalizeProvider)(credentials); + } + async presign(originalRequest, options = {}) { + const { signingDate = /* @__PURE__ */ new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, signingRegion, signingService } = options; + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : await this.regionProvider(); + const { longDate, shortDate } = formatDate(signingDate); + if (expiresIn > constants_1.MAX_PRESIGNED_TTL) { + return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future"); + } + const scope = (0, credentialDerivation_1.createScope)(shortDate, region, signingService !== null && signingService !== void 0 ? signingService : this.service); + const request2 = (0, moveHeadersToQuery_1.moveHeadersToQuery)((0, prepareRequest_1.prepareRequest)(originalRequest), { unhoistableHeaders }); + if (credentials.sessionToken) { + request2.query[constants_1.TOKEN_QUERY_PARAM] = credentials.sessionToken; + } + request2.query[constants_1.ALGORITHM_QUERY_PARAM] = constants_1.ALGORITHM_IDENTIFIER; + request2.query[constants_1.CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`; + request2.query[constants_1.AMZ_DATE_QUERY_PARAM] = longDate; + request2.query[constants_1.EXPIRES_QUERY_PARAM] = expiresIn.toString(10); + const canonicalHeaders = (0, getCanonicalHeaders_1.getCanonicalHeaders)(request2, unsignableHeaders, signableHeaders); + request2.query[constants_1.SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders); + request2.query[constants_1.SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request2, canonicalHeaders, await (0, getPayloadHash_1.getPayloadHash)(originalRequest, this.sha256))); + return request2; + } + async sign(toSign, options) { + if (typeof toSign === "string") { + return this.signString(toSign, options); + } else if (toSign.headers && toSign.payload) { + return this.signEvent(toSign, options); + } else if (toSign.message) { + return this.signMessage(toSign, options); + } else { + return this.signRequest(toSign, options); + } + } + async signEvent({ headers, payload }, { signingDate = /* @__PURE__ */ new Date(), priorSignature, signingRegion, signingService }) { + const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : await this.regionProvider(); + const { shortDate, longDate } = formatDate(signingDate); + const scope = (0, credentialDerivation_1.createScope)(shortDate, region, signingService !== null && signingService !== void 0 ? signingService : this.service); + const hashedPayload = await (0, getPayloadHash_1.getPayloadHash)({ headers: {}, body: payload }, this.sha256); + const hash = new this.sha256(); + hash.update(headers); + const hashedHeaders = (0, util_hex_encoding_1.toHex)(await hash.digest()); + const stringToSign = [ + constants_1.EVENT_ALGORITHM_IDENTIFIER, + longDate, + scope, + priorSignature, + hashedHeaders, + hashedPayload + ].join("\n"); + return this.signString(stringToSign, { signingDate, signingRegion: region, signingService }); + } + async signMessage(signableMessage, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService }) { + const promise = this.signEvent({ + headers: this.headerMarshaller.format(signableMessage.message.headers), + payload: signableMessage.message.body + }, { + signingDate, + signingRegion, + signingService, + priorSignature: signableMessage.priorSignature + }); + return promise.then((signature) => { + return { message: signableMessage.message, signature }; + }); + } + async signString(stringToSign, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : await this.regionProvider(); + const { shortDate } = formatDate(signingDate); + const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService)); + hash.update((0, util_utf8_1.toUint8Array)(stringToSign)); + return (0, util_hex_encoding_1.toHex)(await hash.digest()); + } + async signRequest(requestToSign, { signingDate = /* @__PURE__ */ new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : await this.regionProvider(); + const request2 = (0, prepareRequest_1.prepareRequest)(requestToSign); + const { longDate, shortDate } = formatDate(signingDate); + const scope = (0, credentialDerivation_1.createScope)(shortDate, region, signingService !== null && signingService !== void 0 ? signingService : this.service); + request2.headers[constants_1.AMZ_DATE_HEADER] = longDate; + if (credentials.sessionToken) { + request2.headers[constants_1.TOKEN_HEADER] = credentials.sessionToken; + } + const payloadHash = await (0, getPayloadHash_1.getPayloadHash)(request2, this.sha256); + if (!(0, headerUtil_1.hasHeader)(constants_1.SHA256_HEADER, request2.headers) && this.applyChecksum) { + request2.headers[constants_1.SHA256_HEADER] = payloadHash; + } + const canonicalHeaders = (0, getCanonicalHeaders_1.getCanonicalHeaders)(request2, unsignableHeaders, signableHeaders); + const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request2, canonicalHeaders, payloadHash)); + request2.headers[constants_1.AUTH_HEADER] = `${constants_1.ALGORITHM_IDENTIFIER} Credential=${credentials.accessKeyId}/${scope}, SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, Signature=${signature}`; + return request2; + } + createCanonicalRequest(request2, canonicalHeaders, payloadHash) { + const sortedHeaders = Object.keys(canonicalHeaders).sort(); + return `${request2.method} +${this.getCanonicalPath(request2)} +${(0, getCanonicalQuery_1.getCanonicalQuery)(request2)} +${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join("\n")} + +${sortedHeaders.join(";")} +${payloadHash}`; + } + async createStringToSign(longDate, credentialScope, canonicalRequest) { + const hash = new this.sha256(); + hash.update((0, util_utf8_1.toUint8Array)(canonicalRequest)); + const hashedRequest = await hash.digest(); + return `${constants_1.ALGORITHM_IDENTIFIER} +${longDate} +${credentialScope} +${(0, util_hex_encoding_1.toHex)(hashedRequest)}`; + } + getCanonicalPath({ path }) { + if (this.uriEscapePath) { + const normalizedPathSegments = []; + for (const pathSegment of path.split("/")) { + if ((pathSegment === null || pathSegment === void 0 ? void 0 : pathSegment.length) === 0) + continue; + if (pathSegment === ".") + continue; + if (pathSegment === "..") { + normalizedPathSegments.pop(); + } else { + normalizedPathSegments.push(pathSegment); + } + } + const normalizedPath = `${(path === null || path === void 0 ? void 0 : path.startsWith("/")) ? "/" : ""}${normalizedPathSegments.join("/")}${normalizedPathSegments.length > 0 && (path === null || path === void 0 ? void 0 : path.endsWith("/")) ? "/" : ""}`; + const doubleEncoded = encodeURIComponent(normalizedPath); + return doubleEncoded.replace(/%2F/g, "/"); + } + return path; + } + async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) { + const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest); + const hash = new this.sha256(await keyPromise); + hash.update((0, util_utf8_1.toUint8Array)(stringToSign)); + return (0, util_hex_encoding_1.toHex)(await hash.digest()); + } + getSigningKey(credentials, region, shortDate, service) { + return (0, credentialDerivation_1.getSigningKey)(this.sha256, credentials, shortDate, region, service || this.service); + } + validateResolvedCredentials(credentials) { + if (typeof credentials !== "object" || typeof credentials.accessKeyId !== "string" || typeof credentials.secretAccessKey !== "string") { + throw new Error("Resolved credential object is not valid"); + } + } + }; + exports.SignatureV4 = SignatureV4; + var formatDate = (now) => { + const longDate = (0, utilDate_1.iso8601)(now).replace(/[\-:]/g, ""); + return { + longDate, + shortDate: longDate.slice(0, 8) + }; + }; + var getCanonicalHeaderList = (headers) => Object.keys(headers).sort().join(";"); + } +}); + +// ../../../node_modules/@smithy/signature-v4/dist-cjs/index.js +var require_dist_cjs15 = __commonJS({ + "../../../node_modules/@smithy/signature-v4/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.prepareRequest = exports.moveHeadersToQuery = exports.getPayloadHash = exports.getCanonicalQuery = exports.getCanonicalHeaders = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_SignatureV4(), exports); + var getCanonicalHeaders_1 = require_getCanonicalHeaders(); + Object.defineProperty(exports, "getCanonicalHeaders", { enumerable: true, get: function() { + return getCanonicalHeaders_1.getCanonicalHeaders; + } }); + var getCanonicalQuery_1 = require_getCanonicalQuery(); + Object.defineProperty(exports, "getCanonicalQuery", { enumerable: true, get: function() { + return getCanonicalQuery_1.getCanonicalQuery; + } }); + var getPayloadHash_1 = require_getPayloadHash(); + Object.defineProperty(exports, "getPayloadHash", { enumerable: true, get: function() { + return getPayloadHash_1.getPayloadHash; + } }); + var moveHeadersToQuery_1 = require_moveHeadersToQuery(); + Object.defineProperty(exports, "moveHeadersToQuery", { enumerable: true, get: function() { + return moveHeadersToQuery_1.moveHeadersToQuery; + } }); + var prepareRequest_1 = require_prepareRequest(); + Object.defineProperty(exports, "prepareRequest", { enumerable: true, get: function() { + return prepareRequest_1.prepareRequest; + } }); + tslib_1.__exportStar(require_credentialDerivation(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/awsAuthConfiguration.js +var require_awsAuthConfiguration = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/awsAuthConfiguration.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveSigV4AuthConfig = exports.resolveAwsAuthConfig = void 0; + var property_provider_1 = require_dist_cjs6(); + var signature_v4_1 = require_dist_cjs15(); + var util_middleware_1 = require_dist_cjs10(); + var CREDENTIAL_EXPIRE_WINDOW = 3e5; + var resolveAwsAuthConfig = (input) => { + const normalizedCreds = input.credentials ? normalizeCredentialProvider(input.credentials) : input.credentialDefaultProvider(input); + const { signingEscapePath = true, systemClockOffset = input.systemClockOffset || 0, sha256 } = input; + let signer; + if (input.signer) { + signer = (0, util_middleware_1.normalizeProvider)(input.signer); + } else if (input.regionInfoProvider) { + signer = () => (0, util_middleware_1.normalizeProvider)(input.region)().then(async (region) => [ + await input.regionInfoProvider(region, { + useFipsEndpoint: await input.useFipsEndpoint(), + useDualstackEndpoint: await input.useDualstackEndpoint() + }) || {}, + region + ]).then(([regionInfo, region]) => { + const { signingRegion, signingService } = regionInfo; + input.signingRegion = input.signingRegion || signingRegion || region; + input.signingName = input.signingName || signingService || input.serviceId; + const params = { + ...input, + credentials: normalizedCreds, + region: input.signingRegion, + service: input.signingName, + sha256, + uriEscapePath: signingEscapePath + }; + const SignerCtor = input.signerConstructor || signature_v4_1.SignatureV4; + return new SignerCtor(params); + }); + } else { + signer = async (authScheme) => { + authScheme = Object.assign({}, { + name: "sigv4", + signingName: input.signingName || input.defaultSigningName, + signingRegion: await (0, util_middleware_1.normalizeProvider)(input.region)(), + properties: {} + }, authScheme); + const signingRegion = authScheme.signingRegion; + const signingService = authScheme.signingName; + input.signingRegion = input.signingRegion || signingRegion; + input.signingName = input.signingName || signingService || input.serviceId; + const params = { + ...input, + credentials: normalizedCreds, + region: input.signingRegion, + service: input.signingName, + sha256, + uriEscapePath: signingEscapePath + }; + const SignerCtor = input.signerConstructor || signature_v4_1.SignatureV4; + return new SignerCtor(params); + }; + } + return { + ...input, + systemClockOffset, + signingEscapePath, + credentials: normalizedCreds, + signer + }; + }; + exports.resolveAwsAuthConfig = resolveAwsAuthConfig; + var resolveSigV4AuthConfig = (input) => { + const normalizedCreds = input.credentials ? normalizeCredentialProvider(input.credentials) : input.credentialDefaultProvider(input); + const { signingEscapePath = true, systemClockOffset = input.systemClockOffset || 0, sha256 } = input; + let signer; + if (input.signer) { + signer = (0, util_middleware_1.normalizeProvider)(input.signer); + } else { + signer = (0, util_middleware_1.normalizeProvider)(new signature_v4_1.SignatureV4({ + credentials: normalizedCreds, + region: input.region, + service: input.signingName, + sha256, + uriEscapePath: signingEscapePath + })); + } + return { + ...input, + systemClockOffset, + signingEscapePath, + credentials: normalizedCreds, + signer + }; + }; + exports.resolveSigV4AuthConfig = resolveSigV4AuthConfig; + var normalizeCredentialProvider = (credentials) => { + if (typeof credentials === "function") { + return (0, property_provider_1.memoize)(credentials, (credentials2) => credentials2.expiration !== void 0 && credentials2.expiration.getTime() - Date.now() < CREDENTIAL_EXPIRE_WINDOW, (credentials2) => credentials2.expiration !== void 0); + } + return (0, util_middleware_1.normalizeProvider)(credentials); + }; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/utils/getSkewCorrectedDate.js +var require_getSkewCorrectedDate = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/utils/getSkewCorrectedDate.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getSkewCorrectedDate = void 0; + var getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset); + exports.getSkewCorrectedDate = getSkewCorrectedDate; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/utils/isClockSkewed.js +var require_isClockSkewed = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/utils/isClockSkewed.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isClockSkewed = void 0; + var getSkewCorrectedDate_1 = require_getSkewCorrectedDate(); + var isClockSkewed = (clockTime, systemClockOffset) => Math.abs((0, getSkewCorrectedDate_1.getSkewCorrectedDate)(systemClockOffset).getTime() - clockTime) >= 3e5; + exports.isClockSkewed = isClockSkewed; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/utils/getUpdatedSystemClockOffset.js +var require_getUpdatedSystemClockOffset = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/utils/getUpdatedSystemClockOffset.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getUpdatedSystemClockOffset = void 0; + var isClockSkewed_1 = require_isClockSkewed(); + var getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => { + const clockTimeInMs = Date.parse(clockTime); + if ((0, isClockSkewed_1.isClockSkewed)(clockTimeInMs, currentSystemClockOffset)) { + return clockTimeInMs - Date.now(); + } + return currentSystemClockOffset; + }; + exports.getUpdatedSystemClockOffset = getUpdatedSystemClockOffset; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/awsAuthMiddleware.js +var require_awsAuthMiddleware = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/awsAuthMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getSigV4AuthPlugin = exports.getAwsAuthPlugin = exports.awsAuthMiddlewareOptions = exports.awsAuthMiddleware = void 0; + var protocol_http_1 = require_dist_cjs2(); + var getSkewCorrectedDate_1 = require_getSkewCorrectedDate(); + var getUpdatedSystemClockOffset_1 = require_getUpdatedSystemClockOffset(); + var awsAuthMiddleware = (options) => (next, context) => async function(args) { + var _a, _b, _c, _d; + if (!protocol_http_1.HttpRequest.isInstance(args.request)) + return next(args); + const authScheme = (_c = (_b = (_a = context.endpointV2) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b.authSchemes) === null || _c === void 0 ? void 0 : _c[0]; + const multiRegionOverride = (authScheme === null || authScheme === void 0 ? void 0 : authScheme.name) === "sigv4a" ? (_d = authScheme === null || authScheme === void 0 ? void 0 : authScheme.signingRegionSet) === null || _d === void 0 ? void 0 : _d.join(",") : void 0; + const signer = await options.signer(authScheme); + const output = await next({ + ...args, + request: await signer.sign(args.request, { + signingDate: (0, getSkewCorrectedDate_1.getSkewCorrectedDate)(options.systemClockOffset), + signingRegion: multiRegionOverride || context["signing_region"], + signingService: context["signing_service"] + }) + }).catch((error) => { + var _a2; + const serverTime = (_a2 = error.ServerTime) !== null && _a2 !== void 0 ? _a2 : getDateHeader(error.$response); + if (serverTime) { + options.systemClockOffset = (0, getUpdatedSystemClockOffset_1.getUpdatedSystemClockOffset)(serverTime, options.systemClockOffset); + } + throw error; + }); + const dateHeader = getDateHeader(output.response); + if (dateHeader) { + options.systemClockOffset = (0, getUpdatedSystemClockOffset_1.getUpdatedSystemClockOffset)(dateHeader, options.systemClockOffset); + } + return output; + }; + exports.awsAuthMiddleware = awsAuthMiddleware; + var getDateHeader = (response) => { + var _a, _b, _c; + return protocol_http_1.HttpResponse.isInstance(response) ? (_b = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.date) !== null && _b !== void 0 ? _b : (_c = response.headers) === null || _c === void 0 ? void 0 : _c.Date : void 0; + }; + exports.awsAuthMiddlewareOptions = { + name: "awsAuthMiddleware", + tags: ["SIGNATURE", "AWSAUTH"], + relation: "after", + toMiddleware: "retryMiddleware", + override: true + }; + var getAwsAuthPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo((0, exports.awsAuthMiddleware)(options), exports.awsAuthMiddlewareOptions); + } + }); + exports.getAwsAuthPlugin = getAwsAuthPlugin; + exports.getSigV4AuthPlugin = exports.getAwsAuthPlugin; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/index.js +var require_dist_cjs16 = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-signing/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_awsAuthConfiguration(), exports); + tslib_1.__exportStar(require_awsAuthMiddleware(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/middleware-user-agent/dist-cjs/configurations.js +var require_configurations = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-user-agent/dist-cjs/configurations.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveUserAgentConfig = void 0; + function resolveUserAgentConfig(input) { + return { + ...input, + customUserAgent: typeof input.customUserAgent === "string" ? [[input.customUserAgent]] : input.customUserAgent + }; + } + exports.resolveUserAgentConfig = resolveUserAgentConfig; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json +var require_partitions = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json"(exports, module2) { + module2.exports = { + partitions: [{ + id: "aws", + outputs: { + dnsSuffix: "amazonaws.com", + dualStackDnsSuffix: "api.aws", + name: "aws", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$", + regions: { + "af-south-1": { + description: "Africa (Cape Town)" + }, + "ap-east-1": { + description: "Asia Pacific (Hong Kong)" + }, + "ap-northeast-1": { + description: "Asia Pacific (Tokyo)" + }, + "ap-northeast-2": { + description: "Asia Pacific (Seoul)" + }, + "ap-northeast-3": { + description: "Asia Pacific (Osaka)" + }, + "ap-south-1": { + description: "Asia Pacific (Mumbai)" + }, + "ap-south-2": { + description: "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1": { + description: "Asia Pacific (Singapore)" + }, + "ap-southeast-2": { + description: "Asia Pacific (Sydney)" + }, + "ap-southeast-3": { + description: "Asia Pacific (Jakarta)" + }, + "ap-southeast-4": { + description: "Asia Pacific (Melbourne)" + }, + "aws-global": { + description: "AWS Standard global region" + }, + "ca-central-1": { + description: "Canada (Central)" + }, + "eu-central-1": { + description: "Europe (Frankfurt)" + }, + "eu-central-2": { + description: "Europe (Zurich)" + }, + "eu-north-1": { + description: "Europe (Stockholm)" + }, + "eu-south-1": { + description: "Europe (Milan)" + }, + "eu-south-2": { + description: "Europe (Spain)" + }, + "eu-west-1": { + description: "Europe (Ireland)" + }, + "eu-west-2": { + description: "Europe (London)" + }, + "eu-west-3": { + description: "Europe (Paris)" + }, + "il-central-1": { + description: "Israel (Tel Aviv)" + }, + "me-central-1": { + description: "Middle East (UAE)" + }, + "me-south-1": { + description: "Middle East (Bahrain)" + }, + "sa-east-1": { + description: "South America (Sao Paulo)" + }, + "us-east-1": { + description: "US East (N. Virginia)" + }, + "us-east-2": { + description: "US East (Ohio)" + }, + "us-west-1": { + description: "US West (N. California)" + }, + "us-west-2": { + description: "US West (Oregon)" + } + } + }, { + id: "aws-cn", + outputs: { + dnsSuffix: "amazonaws.com.cn", + dualStackDnsSuffix: "api.amazonwebservices.com.cn", + name: "aws-cn", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^cn\\-\\w+\\-\\d+$", + regions: { + "aws-cn-global": { + description: "AWS China global region" + }, + "cn-north-1": { + description: "China (Beijing)" + }, + "cn-northwest-1": { + description: "China (Ningxia)" + } + } + }, { + id: "aws-us-gov", + outputs: { + dnsSuffix: "amazonaws.com", + dualStackDnsSuffix: "api.aws", + name: "aws-us-gov", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^us\\-gov\\-\\w+\\-\\d+$", + regions: { + "aws-us-gov-global": { + description: "AWS GovCloud (US) global region" + }, + "us-gov-east-1": { + description: "AWS GovCloud (US-East)" + }, + "us-gov-west-1": { + description: "AWS GovCloud (US-West)" + } + } + }, { + id: "aws-iso", + outputs: { + dnsSuffix: "c2s.ic.gov", + dualStackDnsSuffix: "c2s.ic.gov", + name: "aws-iso", + supportsDualStack: false, + supportsFIPS: true + }, + regionRegex: "^us\\-iso\\-\\w+\\-\\d+$", + regions: { + "aws-iso-global": { + description: "AWS ISO (US) global region" + }, + "us-iso-east-1": { + description: "US ISO East" + }, + "us-iso-west-1": { + description: "US ISO WEST" + } + } + }, { + id: "aws-iso-b", + outputs: { + dnsSuffix: "sc2s.sgov.gov", + dualStackDnsSuffix: "sc2s.sgov.gov", + name: "aws-iso-b", + supportsDualStack: false, + supportsFIPS: true + }, + regionRegex: "^us\\-isob\\-\\w+\\-\\d+$", + regions: { + "aws-iso-b-global": { + description: "AWS ISOB (US) global region" + }, + "us-isob-east-1": { + description: "US ISOB East (Ohio)" + } + } + }, { + id: "aws-iso-e", + outputs: { + dnsSuffix: "cloud.adc-e.uk", + dualStackDnsSuffix: "cloud.adc-e.uk", + name: "aws-iso-e", + supportsDualStack: false, + supportsFIPS: true + }, + regionRegex: "^eu\\-isoe\\-\\w+\\-\\d+$", + regions: {} + }, { + id: "aws-iso-f", + outputs: { + dnsSuffix: "csp.hci.ic.gov", + dualStackDnsSuffix: "csp.hci.ic.gov", + name: "aws-iso-f", + supportsDualStack: false, + supportsFIPS: true + }, + regionRegex: "^us\\-isof\\-\\w+\\-\\d+$", + regions: {} + }], + version: "1.1" + }; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partition.js +var require_partition = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partition.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getUserAgentPrefix = exports.useDefaultPartitionInfo = exports.setPartitionInfo = exports.partition = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var partitions_json_1 = tslib_1.__importDefault(require_partitions()); + var selectedPartitionsInfo = partitions_json_1.default; + var selectedUserAgentPrefix = ""; + var partition = (value) => { + const { partitions } = selectedPartitionsInfo; + for (const partition2 of partitions) { + const { regions, outputs } = partition2; + for (const [region, regionData] of Object.entries(regions)) { + if (region === value) { + return { + ...outputs, + ...regionData + }; + } + } + } + for (const partition2 of partitions) { + const { regionRegex, outputs } = partition2; + if (new RegExp(regionRegex).test(value)) { + return { + ...outputs + }; + } + } + const DEFAULT_PARTITION = partitions.find((partition2) => partition2.id === "aws"); + if (!DEFAULT_PARTITION) { + throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist."); + } + return { + ...DEFAULT_PARTITION.outputs + }; + }; + exports.partition = partition; + var setPartitionInfo = (partitionsInfo, userAgentPrefix = "") => { + selectedPartitionsInfo = partitionsInfo; + selectedUserAgentPrefix = userAgentPrefix; + }; + exports.setPartitionInfo = setPartitionInfo; + var useDefaultPartitionInfo = () => { + (0, exports.setPartitionInfo)(partitions_json_1.default, ""); + }; + exports.useDefaultPartitionInfo = useDefaultPartitionInfo; + var getUserAgentPrefix = () => selectedUserAgentPrefix; + exports.getUserAgentPrefix = getUserAgentPrefix; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/isIpAddress.js +var require_isIpAddress = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/isIpAddress.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isIpAddress = void 0; + var IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$`); + var isIpAddress = (value) => IP_V4_REGEX.test(value) || value.startsWith("[") && value.endsWith("]"); + exports.isIpAddress = isIpAddress; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/debug/debugId.js +var require_debugId = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/debug/debugId.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.debugId = void 0; + exports.debugId = "endpoints"; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/debug/toDebugString.js +var require_toDebugString = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/debug/toDebugString.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toDebugString = void 0; + function toDebugString(input) { + if (typeof input !== "object" || input == null) { + return input; + } + if ("ref" in input) { + return `$${toDebugString(input.ref)}`; + } + if ("fn" in input) { + return `${input.fn}(${(input.argv || []).map(toDebugString).join(", ")})`; + } + return JSON.stringify(input, null, 2); + } + exports.toDebugString = toDebugString; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/debug/index.js +var require_debug = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/debug/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_debugId(), exports); + tslib_1.__exportStar(require_toDebugString(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/EndpointError.js +var require_EndpointError = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/EndpointError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.EndpointError = void 0; + var EndpointError = class extends Error { + constructor(message) { + super(message); + this.name = "EndpointError"; + } + }; + exports.EndpointError = EndpointError; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/EndpointRuleObject.js +var require_EndpointRuleObject2 = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/EndpointRuleObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/ErrorRuleObject.js +var require_ErrorRuleObject2 = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/ErrorRuleObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/RuleSetObject.js +var require_RuleSetObject2 = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/RuleSetObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/TreeRuleObject.js +var require_TreeRuleObject2 = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/TreeRuleObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/shared.js +var require_shared2 = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/shared.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/index.js +var require_types2 = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/types/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_EndpointError(), exports); + tslib_1.__exportStar(require_EndpointRuleObject2(), exports); + tslib_1.__exportStar(require_ErrorRuleObject2(), exports); + tslib_1.__exportStar(require_RuleSetObject2(), exports); + tslib_1.__exportStar(require_TreeRuleObject2(), exports); + tslib_1.__exportStar(require_shared2(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/isValidHostLabel.js +var require_isValidHostLabel = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/isValidHostLabel.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isValidHostLabel = void 0; + var VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`); + var isValidHostLabel = (value, allowSubDomains = false) => { + if (!allowSubDomains) { + return VALID_HOST_LABEL_REGEX.test(value); + } + const labels = value.split("."); + for (const label of labels) { + if (!(0, exports.isValidHostLabel)(label)) { + return false; + } + } + return true; + }; + exports.isValidHostLabel = isValidHostLabel; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/isVirtualHostableS3Bucket.js +var require_isVirtualHostableS3Bucket = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/isVirtualHostableS3Bucket.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isVirtualHostableS3Bucket = void 0; + var isIpAddress_1 = require_isIpAddress(); + var isValidHostLabel_1 = require_isValidHostLabel(); + var isVirtualHostableS3Bucket = (value, allowSubDomains = false) => { + if (allowSubDomains) { + for (const label of value.split(".")) { + if (!(0, exports.isVirtualHostableS3Bucket)(label)) { + return false; + } + } + return true; + } + if (!(0, isValidHostLabel_1.isValidHostLabel)(value)) { + return false; + } + if (value.length < 3 || value.length > 63) { + return false; + } + if (value !== value.toLowerCase()) { + return false; + } + if ((0, isIpAddress_1.isIpAddress)(value)) { + return false; + } + return true; + }; + exports.isVirtualHostableS3Bucket = isVirtualHostableS3Bucket; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/parseArn.js +var require_parseArn = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/parseArn.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseArn = void 0; + var parseArn = (value) => { + const segments = value.split(":"); + if (segments.length < 6) + return null; + const [arn, partition, service, region, accountId, ...resourceId] = segments; + if (arn !== "arn" || partition === "" || service === "" || resourceId[0] === "") + return null; + return { + partition, + service, + region, + accountId, + resourceId: resourceId[0].includes("/") ? resourceId[0].split("/") : resourceId + }; + }; + exports.parseArn = parseArn; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/index.js +var require_aws = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_isVirtualHostableS3Bucket(), exports); + tslib_1.__exportStar(require_parseArn(), exports); + tslib_1.__exportStar(require_partition(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/booleanEquals.js +var require_booleanEquals = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/booleanEquals.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.booleanEquals = void 0; + var booleanEquals = (value1, value2) => value1 === value2; + exports.booleanEquals = booleanEquals; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/getAttrPathList.js +var require_getAttrPathList = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/getAttrPathList.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getAttrPathList = void 0; + var types_1 = require_types2(); + var getAttrPathList = (path) => { + const parts = path.split("."); + const pathList = []; + for (const part of parts) { + const squareBracketIndex = part.indexOf("["); + if (squareBracketIndex !== -1) { + if (part.indexOf("]") !== part.length - 1) { + throw new types_1.EndpointError(`Path: '${path}' does not end with ']'`); + } + const arrayIndex = part.slice(squareBracketIndex + 1, -1); + if (Number.isNaN(parseInt(arrayIndex))) { + throw new types_1.EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`); + } + if (squareBracketIndex !== 0) { + pathList.push(part.slice(0, squareBracketIndex)); + } + pathList.push(arrayIndex); + } else { + pathList.push(part); + } + } + return pathList; + }; + exports.getAttrPathList = getAttrPathList; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/getAttr.js +var require_getAttr = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/getAttr.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getAttr = void 0; + var types_1 = require_types2(); + var getAttrPathList_1 = require_getAttrPathList(); + var getAttr = (value, path) => (0, getAttrPathList_1.getAttrPathList)(path).reduce((acc, index) => { + if (typeof acc !== "object") { + throw new types_1.EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`); + } else if (Array.isArray(acc)) { + return acc[parseInt(index)]; + } + return acc[index]; + }, value); + exports.getAttr = getAttr; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/isSet.js +var require_isSet = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/isSet.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isSet = void 0; + var isSet = (value) => value != null; + exports.isSet = isSet; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/not.js +var require_not = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/not.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.not = void 0; + var not = (value) => !value; + exports.not = not; + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/abort.js +var require_abort2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/abort.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/auth.js +var require_auth2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/auth.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.HttpAuthLocation = void 0; + var types_1 = require_dist_cjs(); + Object.defineProperty(exports, "HttpAuthLocation", { enumerable: true, get: function() { + return types_1.HttpAuthLocation; + } }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/blob/blob-types.js +var require_blob_types = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/blob/blob-types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js +var require_checksum3 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/client.js +var require_client2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/client.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/command.js +var require_command2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/command.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/connection.js +var require_connection2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/connection.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/credentials.js +var require_credentials = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/credentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/crypto.js +var require_crypto2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/crypto.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/dns.js +var require_dns = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/dns.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.HostAddressType = void 0; + var HostAddressType; + (function(HostAddressType2) { + HostAddressType2["AAAA"] = "AAAA"; + HostAddressType2["A"] = "A"; + })(HostAddressType = exports.HostAddressType || (exports.HostAddressType = {})); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/encode.js +var require_encode2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/encode.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/endpoint.js +var require_endpoint2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/endpoint.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.EndpointURLScheme = void 0; + var types_1 = require_dist_cjs(); + Object.defineProperty(exports, "EndpointURLScheme", { enumerable: true, get: function() { + return types_1.EndpointURLScheme; + } }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/eventStream.js +var require_eventStream2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/eventStream.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/http.js +var require_http2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/http.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/identity/AnonymousIdentity.js +var require_AnonymousIdentity = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/identity/AnonymousIdentity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/identity/AwsCredentialIdentity.js +var require_AwsCredentialIdentity = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/identity/AwsCredentialIdentity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/identity/Identity.js +var require_Identity = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/identity/Identity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/identity/LoginIdentity.js +var require_LoginIdentity = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/identity/LoginIdentity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/identity/TokenIdentity.js +var require_TokenIdentity = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/identity/TokenIdentity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/identity/index.js +var require_identity3 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/identity/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_AnonymousIdentity(), exports); + tslib_1.__exportStar(require_AwsCredentialIdentity(), exports); + tslib_1.__exportStar(require_Identity(), exports); + tslib_1.__exportStar(require_LoginIdentity(), exports); + tslib_1.__exportStar(require_TokenIdentity(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/logger.js +var require_logger2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/logger.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/middleware.js +var require_middleware2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/middleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/pagination.js +var require_pagination2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/pagination.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/profile.js +var require_profile2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/profile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/request.js +var require_request = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/request.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/response.js +var require_response2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/response.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/retry.js +var require_retry2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/retry.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/serde.js +var require_serde2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/serde.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/shapes.js +var require_shapes2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/shapes.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/signature.js +var require_signature2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/signature.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/stream.js +var require_stream2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/stream.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/token.js +var require_token = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/token.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/transfer.js +var require_transfer2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/transfer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.RequestHandlerProtocol = void 0; + var types_1 = require_dist_cjs(); + Object.defineProperty(exports, "RequestHandlerProtocol", { enumerable: true, get: function() { + return types_1.RequestHandlerProtocol; + } }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/uri.js +var require_uri2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/uri.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/util.js +var require_util2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/util.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/waiter.js +var require_waiter2 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/waiter.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/types/dist-cjs/index.js +var require_dist_cjs17 = __commonJS({ + "../../../node_modules/@aws-sdk/types/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_abort2(), exports); + tslib_1.__exportStar(require_auth2(), exports); + tslib_1.__exportStar(require_blob_types(), exports); + tslib_1.__exportStar(require_checksum3(), exports); + tslib_1.__exportStar(require_client2(), exports); + tslib_1.__exportStar(require_command2(), exports); + tslib_1.__exportStar(require_connection2(), exports); + tslib_1.__exportStar(require_credentials(), exports); + tslib_1.__exportStar(require_crypto2(), exports); + tslib_1.__exportStar(require_dns(), exports); + tslib_1.__exportStar(require_encode2(), exports); + tslib_1.__exportStar(require_endpoint2(), exports); + tslib_1.__exportStar(require_eventStream2(), exports); + tslib_1.__exportStar(require_http2(), exports); + tslib_1.__exportStar(require_identity3(), exports); + tslib_1.__exportStar(require_logger2(), exports); + tslib_1.__exportStar(require_middleware2(), exports); + tslib_1.__exportStar(require_pagination2(), exports); + tslib_1.__exportStar(require_profile2(), exports); + tslib_1.__exportStar(require_request(), exports); + tslib_1.__exportStar(require_response2(), exports); + tslib_1.__exportStar(require_retry2(), exports); + tslib_1.__exportStar(require_serde2(), exports); + tslib_1.__exportStar(require_shapes2(), exports); + tslib_1.__exportStar(require_signature2(), exports); + tslib_1.__exportStar(require_stream2(), exports); + tslib_1.__exportStar(require_token(), exports); + tslib_1.__exportStar(require_transfer2(), exports); + tslib_1.__exportStar(require_uri2(), exports); + tslib_1.__exportStar(require_util2(), exports); + tslib_1.__exportStar(require_waiter2(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/parseURL.js +var require_parseURL = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/parseURL.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseURL = void 0; + var types_1 = require_dist_cjs17(); + var isIpAddress_1 = require_isIpAddress(); + var DEFAULT_PORTS = { + [types_1.EndpointURLScheme.HTTP]: 80, + [types_1.EndpointURLScheme.HTTPS]: 443 + }; + var parseURL = (value) => { + const whatwgURL = (() => { + try { + if (value instanceof URL) { + return value; + } + if (typeof value === "object" && "hostname" in value) { + const { hostname: hostname2, port, protocol: protocol2 = "", path = "", query = {} } = value; + const url2 = new URL(`${protocol2}//${hostname2}${port ? `:${port}` : ""}${path}`); + url2.search = Object.entries(query).map(([k, v]) => `${k}=${v}`).join("&"); + return url2; + } + return new URL(value); + } catch (error) { + return null; + } + })(); + if (!whatwgURL) { + console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`); + return null; + } + const urlString = whatwgURL.href; + const { host, hostname, pathname, protocol, search } = whatwgURL; + if (search) { + return null; + } + const scheme = protocol.slice(0, -1); + if (!Object.values(types_1.EndpointURLScheme).includes(scheme)) { + return null; + } + const isIp = (0, isIpAddress_1.isIpAddress)(hostname); + const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || typeof value === "string" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`); + const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`; + return { + scheme, + authority, + path: pathname, + normalizedPath: pathname.endsWith("/") ? pathname : `${pathname}/`, + isIp + }; + }; + exports.parseURL = parseURL; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/stringEquals.js +var require_stringEquals = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/stringEquals.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.stringEquals = void 0; + var stringEquals = (value1, value2) => value1 === value2; + exports.stringEquals = stringEquals; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/substring.js +var require_substring = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/substring.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.substring = void 0; + var substring = (input, start, stop, reverse) => { + if (start >= stop || input.length < stop) { + return null; + } + if (!reverse) { + return input.substring(start, stop); + } + return input.substring(input.length - stop, input.length - start); + }; + exports.substring = substring; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/uriEncode.js +var require_uriEncode = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/uriEncode.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.uriEncode = void 0; + var uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`); + exports.uriEncode = uriEncode; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/index.js +var require_lib = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.aws = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + exports.aws = tslib_1.__importStar(require_aws()); + tslib_1.__exportStar(require_booleanEquals(), exports); + tslib_1.__exportStar(require_getAttr(), exports); + tslib_1.__exportStar(require_isSet(), exports); + tslib_1.__exportStar(require_isValidHostLabel(), exports); + tslib_1.__exportStar(require_not(), exports); + tslib_1.__exportStar(require_parseURL(), exports); + tslib_1.__exportStar(require_stringEquals(), exports); + tslib_1.__exportStar(require_substring(), exports); + tslib_1.__exportStar(require_uriEncode(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateTemplate.js +var require_evaluateTemplate = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateTemplate.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.evaluateTemplate = void 0; + var lib_1 = require_lib(); + var evaluateTemplate = (template, options) => { + const evaluatedTemplateArr = []; + const templateContext = { + ...options.endpointParams, + ...options.referenceRecord + }; + let currentIndex = 0; + while (currentIndex < template.length) { + const openingBraceIndex = template.indexOf("{", currentIndex); + if (openingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(currentIndex)); + break; + } + evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex)); + const closingBraceIndex = template.indexOf("}", openingBraceIndex); + if (closingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(openingBraceIndex)); + break; + } + if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") { + evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex)); + currentIndex = closingBraceIndex + 2; + } + const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex); + if (parameterName.includes("#")) { + const [refName, attrName] = parameterName.split("#"); + evaluatedTemplateArr.push((0, lib_1.getAttr)(templateContext[refName], attrName)); + } else { + evaluatedTemplateArr.push(templateContext[parameterName]); + } + currentIndex = closingBraceIndex + 1; + } + return evaluatedTemplateArr.join(""); + }; + exports.evaluateTemplate = evaluateTemplate; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getReferenceValue.js +var require_getReferenceValue = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getReferenceValue.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getReferenceValue = void 0; + var getReferenceValue = ({ ref }, options) => { + const referenceRecord = { + ...options.endpointParams, + ...options.referenceRecord + }; + return referenceRecord[ref]; + }; + exports.getReferenceValue = getReferenceValue; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateExpression.js +var require_evaluateExpression = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateExpression.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.evaluateExpression = void 0; + var types_1 = require_types2(); + var callFunction_1 = require_callFunction(); + var evaluateTemplate_1 = require_evaluateTemplate(); + var getReferenceValue_1 = require_getReferenceValue(); + var evaluateExpression = (obj, keyName, options) => { + if (typeof obj === "string") { + return (0, evaluateTemplate_1.evaluateTemplate)(obj, options); + } else if (obj["fn"]) { + return (0, callFunction_1.callFunction)(obj, options); + } else if (obj["ref"]) { + return (0, getReferenceValue_1.getReferenceValue)(obj, options); + } + throw new types_1.EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`); + }; + exports.evaluateExpression = evaluateExpression; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/callFunction.js +var require_callFunction = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/callFunction.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.callFunction = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var lib = tslib_1.__importStar(require_lib()); + var evaluateExpression_1 = require_evaluateExpression(); + var callFunction = ({ fn, argv }, options) => { + const evaluatedArgs = argv.map((arg) => ["boolean", "number"].includes(typeof arg) ? arg : (0, evaluateExpression_1.evaluateExpression)(arg, "arg", options)); + return fn.split(".").reduce((acc, key) => acc[key], lib)(...evaluatedArgs); + }; + exports.callFunction = callFunction; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateCondition.js +var require_evaluateCondition = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateCondition.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.evaluateCondition = void 0; + var debug_1 = require_debug(); + var types_1 = require_types2(); + var callFunction_1 = require_callFunction(); + var evaluateCondition = ({ assign, ...fnArgs }, options) => { + var _a, _b; + if (assign && assign in options.referenceRecord) { + throw new types_1.EndpointError(`'${assign}' is already defined in Reference Record.`); + } + const value = (0, callFunction_1.callFunction)(fnArgs, options); + (_b = (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, debug_1.debugId, `evaluateCondition: ${(0, debug_1.toDebugString)(fnArgs)} = ${(0, debug_1.toDebugString)(value)}`); + return { + result: value === "" ? true : !!value, + ...assign != null && { toAssign: { name: assign, value } } + }; + }; + exports.evaluateCondition = evaluateCondition; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateConditions.js +var require_evaluateConditions = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateConditions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.evaluateConditions = void 0; + var debug_1 = require_debug(); + var evaluateCondition_1 = require_evaluateCondition(); + var evaluateConditions = (conditions = [], options) => { + var _a, _b; + const conditionsReferenceRecord = {}; + for (const condition of conditions) { + const { result, toAssign } = (0, evaluateCondition_1.evaluateCondition)(condition, { + ...options, + referenceRecord: { + ...options.referenceRecord, + ...conditionsReferenceRecord + } + }); + if (!result) { + return { result }; + } + if (toAssign) { + conditionsReferenceRecord[toAssign.name] = toAssign.value; + (_b = (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, debug_1.debugId, `assign: ${toAssign.name} := ${(0, debug_1.toDebugString)(toAssign.value)}`); + } + } + return { result: true, referenceRecord: conditionsReferenceRecord }; + }; + exports.evaluateConditions = evaluateConditions; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointHeaders.js +var require_getEndpointHeaders = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointHeaders.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getEndpointHeaders = void 0; + var types_1 = require_types2(); + var evaluateExpression_1 = require_evaluateExpression(); + var getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({ + ...acc, + [headerKey]: headerVal.map((headerValEntry) => { + const processedExpr = (0, evaluateExpression_1.evaluateExpression)(headerValEntry, "Header value entry", options); + if (typeof processedExpr !== "string") { + throw new types_1.EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`); + } + return processedExpr; + }) + }), {}); + exports.getEndpointHeaders = getEndpointHeaders; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointProperty.js +var require_getEndpointProperty = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointProperty.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getEndpointProperty = void 0; + var types_1 = require_types2(); + var evaluateTemplate_1 = require_evaluateTemplate(); + var getEndpointProperties_1 = require_getEndpointProperties(); + var getEndpointProperty = (property, options) => { + if (Array.isArray(property)) { + return property.map((propertyEntry) => (0, exports.getEndpointProperty)(propertyEntry, options)); + } + switch (typeof property) { + case "string": + return (0, evaluateTemplate_1.evaluateTemplate)(property, options); + case "object": + if (property === null) { + throw new types_1.EndpointError(`Unexpected endpoint property: ${property}`); + } + return (0, getEndpointProperties_1.getEndpointProperties)(property, options); + case "boolean": + return property; + default: + throw new types_1.EndpointError(`Unexpected endpoint property type: ${typeof property}`); + } + }; + exports.getEndpointProperty = getEndpointProperty; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointProperties.js +var require_getEndpointProperties = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointProperties.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getEndpointProperties = void 0; + var getEndpointProperty_1 = require_getEndpointProperty(); + var getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({ + ...acc, + [propertyKey]: (0, getEndpointProperty_1.getEndpointProperty)(propertyVal, options) + }), {}); + exports.getEndpointProperties = getEndpointProperties; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointUrl.js +var require_getEndpointUrl = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointUrl.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getEndpointUrl = void 0; + var types_1 = require_types2(); + var evaluateExpression_1 = require_evaluateExpression(); + var getEndpointUrl = (endpointUrl, options) => { + const expression = (0, evaluateExpression_1.evaluateExpression)(endpointUrl, "Endpoint URL", options); + if (typeof expression === "string") { + try { + return new URL(expression); + } catch (error) { + console.error(`Failed to construct URL with ${expression}`, error); + throw error; + } + } + throw new types_1.EndpointError(`Endpoint URL must be a string, got ${typeof expression}`); + }; + exports.getEndpointUrl = getEndpointUrl; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateEndpointRule.js +var require_evaluateEndpointRule = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateEndpointRule.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.evaluateEndpointRule = void 0; + var debug_1 = require_debug(); + var evaluateConditions_1 = require_evaluateConditions(); + var getEndpointHeaders_1 = require_getEndpointHeaders(); + var getEndpointProperties_1 = require_getEndpointProperties(); + var getEndpointUrl_1 = require_getEndpointUrl(); + var evaluateEndpointRule = (endpointRule, options) => { + var _a, _b; + const { conditions, endpoint } = endpointRule; + const { result, referenceRecord } = (0, evaluateConditions_1.evaluateConditions)(conditions, options); + if (!result) { + return; + } + const endpointRuleOptions = { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord } + }; + const { url: url2, properties, headers } = endpoint; + (_b = (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, debug_1.debugId, `Resolving endpoint from template: ${(0, debug_1.toDebugString)(endpoint)}`); + return { + ...headers != void 0 && { + headers: (0, getEndpointHeaders_1.getEndpointHeaders)(headers, endpointRuleOptions) + }, + ...properties != void 0 && { + properties: (0, getEndpointProperties_1.getEndpointProperties)(properties, endpointRuleOptions) + }, + url: (0, getEndpointUrl_1.getEndpointUrl)(url2, endpointRuleOptions) + }; + }; + exports.evaluateEndpointRule = evaluateEndpointRule; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateErrorRule.js +var require_evaluateErrorRule = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateErrorRule.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.evaluateErrorRule = void 0; + var types_1 = require_types2(); + var evaluateConditions_1 = require_evaluateConditions(); + var evaluateExpression_1 = require_evaluateExpression(); + var evaluateErrorRule = (errorRule, options) => { + const { conditions, error } = errorRule; + const { result, referenceRecord } = (0, evaluateConditions_1.evaluateConditions)(conditions, options); + if (!result) { + return; + } + throw new types_1.EndpointError((0, evaluateExpression_1.evaluateExpression)(error, "Error", { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord } + })); + }; + exports.evaluateErrorRule = evaluateErrorRule; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateTreeRule.js +var require_evaluateTreeRule = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateTreeRule.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.evaluateTreeRule = void 0; + var evaluateConditions_1 = require_evaluateConditions(); + var evaluateRules_1 = require_evaluateRules(); + var evaluateTreeRule = (treeRule, options) => { + const { conditions, rules } = treeRule; + const { result, referenceRecord } = (0, evaluateConditions_1.evaluateConditions)(conditions, options); + if (!result) { + return; + } + return (0, evaluateRules_1.evaluateRules)(rules, { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord } + }); + }; + exports.evaluateTreeRule = evaluateTreeRule; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateRules.js +var require_evaluateRules = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateRules.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.evaluateRules = void 0; + var types_1 = require_types2(); + var evaluateEndpointRule_1 = require_evaluateEndpointRule(); + var evaluateErrorRule_1 = require_evaluateErrorRule(); + var evaluateTreeRule_1 = require_evaluateTreeRule(); + var evaluateRules = (rules, options) => { + for (const rule of rules) { + if (rule.type === "endpoint") { + const endpointOrUndefined = (0, evaluateEndpointRule_1.evaluateEndpointRule)(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } else if (rule.type === "error") { + (0, evaluateErrorRule_1.evaluateErrorRule)(rule, options); + } else if (rule.type === "tree") { + const endpointOrUndefined = (0, evaluateTreeRule_1.evaluateTreeRule)(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } else { + throw new types_1.EndpointError(`Unknown endpoint rule: ${rule}`); + } + } + throw new types_1.EndpointError(`Rules evaluation failed`); + }; + exports.evaluateRules = evaluateRules; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/index.js +var require_utils = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_evaluateRules(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/resolveEndpoint.js +var require_resolveEndpoint = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/resolveEndpoint.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveEndpoint = void 0; + var debug_1 = require_debug(); + var types_1 = require_types2(); + var utils_1 = require_utils(); + var resolveEndpoint = (ruleSetObject, options) => { + var _a, _b, _c, _d, _e, _f; + const { endpointParams, logger } = options; + const { parameters, rules } = ruleSetObject; + (_b = (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, `${debug_1.debugId} Initial EndpointParams: ${(0, debug_1.toDebugString)(endpointParams)}`); + const paramsWithDefault = Object.entries(parameters).filter(([, v]) => v.default != null).map(([k, v]) => [k, v.default]); + if (paramsWithDefault.length > 0) { + for (const [paramKey, paramDefaultValue] of paramsWithDefault) { + endpointParams[paramKey] = (_c = endpointParams[paramKey]) !== null && _c !== void 0 ? _c : paramDefaultValue; + } + } + const requiredParams = Object.entries(parameters).filter(([, v]) => v.required).map(([k]) => k); + for (const requiredParam of requiredParams) { + if (endpointParams[requiredParam] == null) { + throw new types_1.EndpointError(`Missing required parameter: '${requiredParam}'`); + } + } + const endpoint = (0, utils_1.evaluateRules)(rules, { endpointParams, logger, referenceRecord: {} }); + if ((_d = options.endpointParams) === null || _d === void 0 ? void 0 : _d.Endpoint) { + try { + const givenEndpoint = new URL(options.endpointParams.Endpoint); + const { protocol, port } = givenEndpoint; + endpoint.url.protocol = protocol; + endpoint.url.port = port; + } catch (e) { + } + } + (_f = (_e = options.logger) === null || _e === void 0 ? void 0 : _e.debug) === null || _f === void 0 ? void 0 : _f.call(_e, `${debug_1.debugId} Resolved endpoint: ${(0, debug_1.toDebugString)(endpoint)}`); + return endpoint; + }; + exports.resolveEndpoint = resolveEndpoint; + } +}); + +// ../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js +var require_dist_cjs18 = __commonJS({ + "../../../node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_partition(), exports); + tslib_1.__exportStar(require_isIpAddress(), exports); + tslib_1.__exportStar(require_resolveEndpoint(), exports); + tslib_1.__exportStar(require_types2(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/middleware-user-agent/dist-cjs/constants.js +var require_constants2 = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-user-agent/dist-cjs/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.UA_ESCAPE_CHAR = exports.UA_VALUE_ESCAPE_REGEX = exports.UA_NAME_ESCAPE_REGEX = exports.UA_NAME_SEPARATOR = exports.SPACE = exports.X_AMZ_USER_AGENT = exports.USER_AGENT = void 0; + exports.USER_AGENT = "user-agent"; + exports.X_AMZ_USER_AGENT = "x-amz-user-agent"; + exports.SPACE = " "; + exports.UA_NAME_SEPARATOR = "/"; + exports.UA_NAME_ESCAPE_REGEX = /[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g; + exports.UA_VALUE_ESCAPE_REGEX = /[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g; + exports.UA_ESCAPE_CHAR = "-"; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-user-agent/dist-cjs/user-agent-middleware.js +var require_user_agent_middleware = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-user-agent/dist-cjs/user-agent-middleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getUserAgentPlugin = exports.getUserAgentMiddlewareOptions = exports.userAgentMiddleware = void 0; + var util_endpoints_1 = require_dist_cjs18(); + var protocol_http_1 = require_dist_cjs2(); + var constants_1 = require_constants2(); + var userAgentMiddleware = (options) => (next, context) => async (args) => { + var _a, _b; + const { request: request2 } = args; + if (!protocol_http_1.HttpRequest.isInstance(request2)) + return next(args); + const { headers } = request2; + const userAgent = ((_a = context === null || context === void 0 ? void 0 : context.userAgent) === null || _a === void 0 ? void 0 : _a.map(escapeUserAgent)) || []; + const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent); + const customUserAgent = ((_b = options === null || options === void 0 ? void 0 : options.customUserAgent) === null || _b === void 0 ? void 0 : _b.map(escapeUserAgent)) || []; + const prefix = (0, util_endpoints_1.getUserAgentPrefix)(); + const sdkUserAgentValue = (prefix ? [prefix] : []).concat([...defaultUserAgent, ...userAgent, ...customUserAgent]).join(constants_1.SPACE); + const normalUAValue = [ + ...defaultUserAgent.filter((section) => section.startsWith("aws-sdk-")), + ...customUserAgent + ].join(constants_1.SPACE); + if (options.runtime !== "browser") { + if (normalUAValue) { + headers[constants_1.X_AMZ_USER_AGENT] = headers[constants_1.X_AMZ_USER_AGENT] ? `${headers[constants_1.USER_AGENT]} ${normalUAValue}` : normalUAValue; + } + headers[constants_1.USER_AGENT] = sdkUserAgentValue; + } else { + headers[constants_1.X_AMZ_USER_AGENT] = sdkUserAgentValue; + } + return next({ + ...args, + request: request2 + }); + }; + exports.userAgentMiddleware = userAgentMiddleware; + var escapeUserAgent = (userAgentPair) => { + var _a; + const name = userAgentPair[0].split(constants_1.UA_NAME_SEPARATOR).map((part) => part.replace(constants_1.UA_NAME_ESCAPE_REGEX, constants_1.UA_ESCAPE_CHAR)).join(constants_1.UA_NAME_SEPARATOR); + const version2 = (_a = userAgentPair[1]) === null || _a === void 0 ? void 0 : _a.replace(constants_1.UA_VALUE_ESCAPE_REGEX, constants_1.UA_ESCAPE_CHAR); + const prefixSeparatorIndex = name.indexOf(constants_1.UA_NAME_SEPARATOR); + const prefix = name.substring(0, prefixSeparatorIndex); + let uaName = name.substring(prefixSeparatorIndex + 1); + if (prefix === "api") { + uaName = uaName.toLowerCase(); + } + return [prefix, uaName, version2].filter((item) => item && item.length > 0).reduce((acc, item, index) => { + switch (index) { + case 0: + return item; + case 1: + return `${acc}/${item}`; + default: + return `${acc}#${item}`; + } + }, ""); + }; + exports.getUserAgentMiddlewareOptions = { + name: "getUserAgentMiddleware", + step: "build", + priority: "low", + tags: ["SET_USER_AGENT", "USER_AGENT"], + override: true + }; + var getUserAgentPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.add((0, exports.userAgentMiddleware)(config), exports.getUserAgentMiddlewareOptions); + } + }); + exports.getUserAgentPlugin = getUserAgentPlugin; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js +var require_dist_cjs19 = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_configurations(), exports); + tslib_1.__exportStar(require_user_agent_middleware(), exports); + } +}); + +// ../../../node_modules/@smithy/util-config-provider/dist-cjs/booleanSelector.js +var require_booleanSelector = __commonJS({ + "../../../node_modules/@smithy/util-config-provider/dist-cjs/booleanSelector.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.booleanSelector = exports.SelectorType = void 0; + var SelectorType; + (function(SelectorType2) { + SelectorType2["ENV"] = "env"; + SelectorType2["CONFIG"] = "shared config entry"; + })(SelectorType = exports.SelectorType || (exports.SelectorType = {})); + var booleanSelector = (obj, key, type) => { + if (!(key in obj)) + return void 0; + if (obj[key] === "true") + return true; + if (obj[key] === "false") + return false; + throw new Error(`Cannot load ${type} "${key}". Expected "true" or "false", got ${obj[key]}.`); + }; + exports.booleanSelector = booleanSelector; + } +}); + +// ../../../node_modules/@smithy/util-config-provider/dist-cjs/index.js +var require_dist_cjs20 = __commonJS({ + "../../../node_modules/@smithy/util-config-provider/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_booleanSelector(), exports); + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js +var require_NodeUseDualstackEndpointConfigOptions = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = exports.DEFAULT_USE_DUALSTACK_ENDPOINT = exports.CONFIG_USE_DUALSTACK_ENDPOINT = exports.ENV_USE_DUALSTACK_ENDPOINT = void 0; + var util_config_provider_1 = require_dist_cjs20(); + exports.ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; + exports.CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; + exports.DEFAULT_USE_DUALSTACK_ENDPOINT = false; + exports.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => (0, util_config_provider_1.booleanSelector)(env, exports.ENV_USE_DUALSTACK_ENDPOINT, util_config_provider_1.SelectorType.ENV), + configFileSelector: (profile) => (0, util_config_provider_1.booleanSelector)(profile, exports.CONFIG_USE_DUALSTACK_ENDPOINT, util_config_provider_1.SelectorType.CONFIG), + default: false + }; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/NodeUseFipsEndpointConfigOptions.js +var require_NodeUseFipsEndpointConfigOptions = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/NodeUseFipsEndpointConfigOptions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = exports.DEFAULT_USE_FIPS_ENDPOINT = exports.CONFIG_USE_FIPS_ENDPOINT = exports.ENV_USE_FIPS_ENDPOINT = void 0; + var util_config_provider_1 = require_dist_cjs20(); + exports.ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; + exports.CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; + exports.DEFAULT_USE_FIPS_ENDPOINT = false; + exports.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => (0, util_config_provider_1.booleanSelector)(env, exports.ENV_USE_FIPS_ENDPOINT, util_config_provider_1.SelectorType.ENV), + configFileSelector: (profile) => (0, util_config_provider_1.booleanSelector)(profile, exports.CONFIG_USE_FIPS_ENDPOINT, util_config_provider_1.SelectorType.CONFIG), + default: false + }; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/resolveCustomEndpointsConfig.js +var require_resolveCustomEndpointsConfig = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/resolveCustomEndpointsConfig.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveCustomEndpointsConfig = void 0; + var util_middleware_1 = require_dist_cjs10(); + var resolveCustomEndpointsConfig = (input) => { + var _a, _b; + const { endpoint, urlParser } = input; + return { + ...input, + tls: (_a = input.tls) !== null && _a !== void 0 ? _a : true, + endpoint: (0, util_middleware_1.normalizeProvider)(typeof endpoint === "string" ? urlParser(endpoint) : endpoint), + isCustomEndpoint: true, + useDualstackEndpoint: (0, util_middleware_1.normalizeProvider)((_b = input.useDualstackEndpoint) !== null && _b !== void 0 ? _b : false) + }; + }; + exports.resolveCustomEndpointsConfig = resolveCustomEndpointsConfig; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/utils/getEndpointFromRegion.js +var require_getEndpointFromRegion = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/utils/getEndpointFromRegion.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getEndpointFromRegion = void 0; + var getEndpointFromRegion = async (input) => { + var _a; + const { tls = true } = input; + const region = await input.region(); + const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/); + if (!dnsHostRegex.test(region)) { + throw new Error("Invalid region in client config"); + } + const useDualstackEndpoint = await input.useDualstackEndpoint(); + const useFipsEndpoint = await input.useFipsEndpoint(); + const { hostname } = (_a = await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint })) !== null && _a !== void 0 ? _a : {}; + if (!hostname) { + throw new Error("Cannot resolve hostname from client config"); + } + return input.urlParser(`${tls ? "https:" : "http:"}//${hostname}`); + }; + exports.getEndpointFromRegion = getEndpointFromRegion; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/resolveEndpointsConfig.js +var require_resolveEndpointsConfig = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/resolveEndpointsConfig.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveEndpointsConfig = void 0; + var util_middleware_1 = require_dist_cjs10(); + var getEndpointFromRegion_1 = require_getEndpointFromRegion(); + var resolveEndpointsConfig = (input) => { + var _a, _b; + const useDualstackEndpoint = (0, util_middleware_1.normalizeProvider)((_a = input.useDualstackEndpoint) !== null && _a !== void 0 ? _a : false); + const { endpoint, useFipsEndpoint, urlParser } = input; + return { + ...input, + tls: (_b = input.tls) !== null && _b !== void 0 ? _b : true, + endpoint: endpoint ? (0, util_middleware_1.normalizeProvider)(typeof endpoint === "string" ? urlParser(endpoint) : endpoint) : () => (0, getEndpointFromRegion_1.getEndpointFromRegion)({ ...input, useDualstackEndpoint, useFipsEndpoint }), + isCustomEndpoint: !!endpoint, + useDualstackEndpoint + }; + }; + exports.resolveEndpointsConfig = resolveEndpointsConfig; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/index.js +var require_endpointsConfig = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/endpointsConfig/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_NodeUseDualstackEndpointConfigOptions(), exports); + tslib_1.__exportStar(require_NodeUseFipsEndpointConfigOptions(), exports); + tslib_1.__exportStar(require_resolveCustomEndpointsConfig(), exports); + tslib_1.__exportStar(require_resolveEndpointsConfig(), exports); + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/config.js +var require_config2 = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/config.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NODE_REGION_CONFIG_FILE_OPTIONS = exports.NODE_REGION_CONFIG_OPTIONS = exports.REGION_INI_NAME = exports.REGION_ENV_NAME = void 0; + exports.REGION_ENV_NAME = "AWS_REGION"; + exports.REGION_INI_NAME = "region"; + exports.NODE_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[exports.REGION_ENV_NAME], + configFileSelector: (profile) => profile[exports.REGION_INI_NAME], + default: () => { + throw new Error("Region is missing"); + } + }; + exports.NODE_REGION_CONFIG_FILE_OPTIONS = { + preferredFile: "credentials" + }; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/isFipsRegion.js +var require_isFipsRegion = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/isFipsRegion.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isFipsRegion = void 0; + var isFipsRegion = (region) => typeof region === "string" && (region.startsWith("fips-") || region.endsWith("-fips")); + exports.isFipsRegion = isFipsRegion; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/getRealRegion.js +var require_getRealRegion = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/getRealRegion.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRealRegion = void 0; + var isFipsRegion_1 = require_isFipsRegion(); + var getRealRegion = (region) => (0, isFipsRegion_1.isFipsRegion)(region) ? ["fips-aws-global", "aws-fips"].includes(region) ? "us-east-1" : region.replace(/fips-(dkr-|prod-)?|-fips/, "") : region; + exports.getRealRegion = getRealRegion; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/resolveRegionConfig.js +var require_resolveRegionConfig = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/resolveRegionConfig.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveRegionConfig = void 0; + var getRealRegion_1 = require_getRealRegion(); + var isFipsRegion_1 = require_isFipsRegion(); + var resolveRegionConfig = (input) => { + const { region, useFipsEndpoint } = input; + if (!region) { + throw new Error("Region is missing"); + } + return { + ...input, + region: async () => { + if (typeof region === "string") { + return (0, getRealRegion_1.getRealRegion)(region); + } + const providedRegion = await region(); + return (0, getRealRegion_1.getRealRegion)(providedRegion); + }, + useFipsEndpoint: async () => { + const providedRegion = typeof region === "string" ? region : await region(); + if ((0, isFipsRegion_1.isFipsRegion)(providedRegion)) { + return true; + } + return typeof useFipsEndpoint !== "function" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint(); + } + }; + }; + exports.resolveRegionConfig = resolveRegionConfig; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/index.js +var require_regionConfig = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionConfig/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_config2(), exports); + tslib_1.__exportStar(require_resolveRegionConfig(), exports); + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/PartitionHash.js +var require_PartitionHash = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/PartitionHash.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/RegionHash.js +var require_RegionHash = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/RegionHash.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getHostnameFromVariants.js +var require_getHostnameFromVariants = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getHostnameFromVariants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getHostnameFromVariants = void 0; + var getHostnameFromVariants = (variants = [], { useFipsEndpoint, useDualstackEndpoint }) => { + var _a; + return (_a = variants.find(({ tags }) => useFipsEndpoint === tags.includes("fips") && useDualstackEndpoint === tags.includes("dualstack"))) === null || _a === void 0 ? void 0 : _a.hostname; + }; + exports.getHostnameFromVariants = getHostnameFromVariants; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getResolvedHostname.js +var require_getResolvedHostname = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getResolvedHostname.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getResolvedHostname = void 0; + var getResolvedHostname = (resolvedRegion, { regionHostname, partitionHostname }) => regionHostname ? regionHostname : partitionHostname ? partitionHostname.replace("{region}", resolvedRegion) : void 0; + exports.getResolvedHostname = getResolvedHostname; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getResolvedPartition.js +var require_getResolvedPartition = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getResolvedPartition.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getResolvedPartition = void 0; + var getResolvedPartition = (region, { partitionHash }) => { + var _a; + return (_a = Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region))) !== null && _a !== void 0 ? _a : "aws"; + }; + exports.getResolvedPartition = getResolvedPartition; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getResolvedSigningRegion.js +var require_getResolvedSigningRegion = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getResolvedSigningRegion.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getResolvedSigningRegion = void 0; + var getResolvedSigningRegion = (hostname, { signingRegion, regionRegex, useFipsEndpoint }) => { + if (signingRegion) { + return signingRegion; + } else if (useFipsEndpoint) { + const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, "\\.").replace(/\$$/g, "\\."); + const regionRegexmatchArray = hostname.match(regionRegexJs); + if (regionRegexmatchArray) { + return regionRegexmatchArray[0].slice(1, -1); + } + } + }; + exports.getResolvedSigningRegion = getResolvedSigningRegion; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getRegionInfo.js +var require_getRegionInfo = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/getRegionInfo.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRegionInfo = void 0; + var getHostnameFromVariants_1 = require_getHostnameFromVariants(); + var getResolvedHostname_1 = require_getResolvedHostname(); + var getResolvedPartition_1 = require_getResolvedPartition(); + var getResolvedSigningRegion_1 = require_getResolvedSigningRegion(); + var getRegionInfo = (region, { useFipsEndpoint = false, useDualstackEndpoint = false, signingService, regionHash, partitionHash }) => { + var _a, _b, _c, _d, _e, _f; + const partition = (0, getResolvedPartition_1.getResolvedPartition)(region, { partitionHash }); + const resolvedRegion = region in regionHash ? region : (_b = (_a = partitionHash[partition]) === null || _a === void 0 ? void 0 : _a.endpoint) !== null && _b !== void 0 ? _b : region; + const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint }; + const regionHostname = (0, getHostnameFromVariants_1.getHostnameFromVariants)((_c = regionHash[resolvedRegion]) === null || _c === void 0 ? void 0 : _c.variants, hostnameOptions); + const partitionHostname = (0, getHostnameFromVariants_1.getHostnameFromVariants)((_d = partitionHash[partition]) === null || _d === void 0 ? void 0 : _d.variants, hostnameOptions); + const hostname = (0, getResolvedHostname_1.getResolvedHostname)(resolvedRegion, { regionHostname, partitionHostname }); + if (hostname === void 0) { + throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`); + } + const signingRegion = (0, getResolvedSigningRegion_1.getResolvedSigningRegion)(hostname, { + signingRegion: (_e = regionHash[resolvedRegion]) === null || _e === void 0 ? void 0 : _e.signingRegion, + regionRegex: partitionHash[partition].regionRegex, + useFipsEndpoint + }); + return { + partition, + signingService, + hostname, + ...signingRegion && { signingRegion }, + ...((_f = regionHash[resolvedRegion]) === null || _f === void 0 ? void 0 : _f.signingService) && { + signingService: regionHash[resolvedRegion].signingService + } + }; + }; + exports.getRegionInfo = getRegionInfo; + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/index.js +var require_regionInfo = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/regionInfo/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_PartitionHash(), exports); + tslib_1.__exportStar(require_RegionHash(), exports); + tslib_1.__exportStar(require_getRegionInfo(), exports); + } +}); + +// ../../../node_modules/@smithy/config-resolver/dist-cjs/index.js +var require_dist_cjs21 = __commonJS({ + "../../../node_modules/@smithy/config-resolver/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_endpointsConfig(), exports); + tslib_1.__exportStar(require_regionConfig(), exports); + tslib_1.__exportStar(require_regionInfo(), exports); + } +}); + +// ../../../node_modules/@smithy/middleware-content-length/dist-cjs/index.js +var require_dist_cjs22 = __commonJS({ + "../../../node_modules/@smithy/middleware-content-length/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getContentLengthPlugin = exports.contentLengthMiddlewareOptions = exports.contentLengthMiddleware = void 0; + var protocol_http_1 = require_dist_cjs2(); + var CONTENT_LENGTH_HEADER = "content-length"; + function contentLengthMiddleware(bodyLengthChecker) { + return (next) => async (args) => { + const request2 = args.request; + if (protocol_http_1.HttpRequest.isInstance(request2)) { + const { body, headers } = request2; + if (body && Object.keys(headers).map((str) => str.toLowerCase()).indexOf(CONTENT_LENGTH_HEADER) === -1) { + try { + const length = bodyLengthChecker(body); + request2.headers = { + ...request2.headers, + [CONTENT_LENGTH_HEADER]: String(length) + }; + } catch (error) { + } + } + } + return next({ + ...args, + request: request2 + }); + }; + } + exports.contentLengthMiddleware = contentLengthMiddleware; + exports.contentLengthMiddlewareOptions = { + step: "build", + tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], + name: "contentLengthMiddleware", + override: true + }; + var getContentLengthPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), exports.contentLengthMiddlewareOptions); + } + }); + exports.getContentLengthPlugin = getContentLengthPlugin; + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/service-customizations/s3.js +var require_s3 = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/service-customizations/s3.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isArnBucketName = exports.isDnsCompatibleBucketName = exports.S3_HOSTNAME_PATTERN = exports.DOT_PATTERN = exports.resolveParamsForS3 = void 0; + var resolveParamsForS3 = async (endpointParams) => { + const bucket = (endpointParams === null || endpointParams === void 0 ? void 0 : endpointParams.Bucket) || ""; + if (typeof endpointParams.Bucket === "string") { + endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent("#")).replace(/\?/g, encodeURIComponent("?")); + } + if ((0, exports.isArnBucketName)(bucket)) { + if (endpointParams.ForcePathStyle === true) { + throw new Error("Path-style addressing cannot be used with ARN buckets"); + } + } else if (!(0, exports.isDnsCompatibleBucketName)(bucket) || bucket.indexOf(".") !== -1 && !String(endpointParams.Endpoint).startsWith("http:") || bucket.toLowerCase() !== bucket || bucket.length < 3) { + endpointParams.ForcePathStyle = true; + } + if (endpointParams.DisableMultiRegionAccessPoints) { + endpointParams.disableMultiRegionAccessPoints = true; + endpointParams.DisableMRAP = true; + } + return endpointParams; + }; + exports.resolveParamsForS3 = resolveParamsForS3; + var DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; + var IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; + var DOTS_PATTERN = /\.\./; + exports.DOT_PATTERN = /\./; + exports.S3_HOSTNAME_PATTERN = /^(.+\.)?s3(-fips)?(\.dualstack)?[.-]([a-z0-9-]+)\./; + var isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName); + exports.isDnsCompatibleBucketName = isDnsCompatibleBucketName; + var isArnBucketName = (bucketName) => { + const [arn, partition, service, region, account, typeOrId] = bucketName.split(":"); + const isArn = arn === "arn" && bucketName.split(":").length >= 6; + const isValidArn = [arn, partition, service, account, typeOrId].filter(Boolean).length === 5; + if (isArn && !isValidArn) { + throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`); + } + return arn === "arn" && !!partition && !!service && !!account && !!typeOrId; + }; + exports.isArnBucketName = isArnBucketName; + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/service-customizations/index.js +var require_service_customizations = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/service-customizations/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_s3(), exports); + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/createConfigValueProvider.js +var require_createConfigValueProvider = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/createConfigValueProvider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createConfigValueProvider = void 0; + var createConfigValueProvider = (configKey, canonicalEndpointParamKey, config) => { + const configProvider = async () => { + var _a; + const configValue = (_a = config[configKey]) !== null && _a !== void 0 ? _a : config[canonicalEndpointParamKey]; + if (typeof configValue === "function") { + return configValue(); + } + return configValue; + }; + if (configKey === "endpoint" || canonicalEndpointParamKey === "endpoint") { + return async () => { + const endpoint = await configProvider(); + if (endpoint && typeof endpoint === "object") { + if ("url" in endpoint) { + return endpoint.url.href; + } + if ("hostname" in endpoint) { + const { protocol, hostname, port, path } = endpoint; + return `${protocol}//${hostname}${port ? ":" + port : ""}${path}`; + } + } + return endpoint; + }; + } + return configProvider; + }; + exports.createConfigValueProvider = createConfigValueProvider; + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromInstructions.js +var require_getEndpointFromInstructions = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromInstructions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveParams = exports.getEndpointFromInstructions = void 0; + var service_customizations_1 = require_service_customizations(); + var createConfigValueProvider_1 = require_createConfigValueProvider(); + var getEndpointFromInstructions = async (commandInput, instructionsSupplier, clientConfig, context) => { + const endpointParams = await (0, exports.resolveParams)(commandInput, instructionsSupplier, clientConfig); + if (typeof clientConfig.endpointProvider !== "function") { + throw new Error("config.endpointProvider is not set."); + } + const endpoint = clientConfig.endpointProvider(endpointParams, context); + return endpoint; + }; + exports.getEndpointFromInstructions = getEndpointFromInstructions; + var resolveParams = async (commandInput, instructionsSupplier, clientConfig) => { + var _a; + const endpointParams = {}; + const instructions = ((_a = instructionsSupplier === null || instructionsSupplier === void 0 ? void 0 : instructionsSupplier.getEndpointParameterInstructions) === null || _a === void 0 ? void 0 : _a.call(instructionsSupplier)) || {}; + for (const [name, instruction] of Object.entries(instructions)) { + switch (instruction.type) { + case "staticContextParams": + endpointParams[name] = instruction.value; + break; + case "contextParams": + endpointParams[name] = commandInput[instruction.name]; + break; + case "clientContextParams": + case "builtInParams": + endpointParams[name] = await (0, createConfigValueProvider_1.createConfigValueProvider)(instruction.name, name, clientConfig)(); + break; + default: + throw new Error("Unrecognized endpoint parameter instruction: " + JSON.stringify(instruction)); + } + } + if (Object.keys(instructions).length === 0) { + Object.assign(endpointParams, clientConfig); + } + if (String(clientConfig.serviceId).toLowerCase() === "s3") { + await (0, service_customizations_1.resolveParamsForS3)(endpointParams); + } + return endpointParams; + }; + exports.resolveParams = resolveParams; + } +}); + +// ../../../node_modules/@smithy/querystring-parser/dist-cjs/index.js +var require_dist_cjs23 = __commonJS({ + "../../../node_modules/@smithy/querystring-parser/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseQueryString = void 0; + function parseQueryString(querystring) { + const query = {}; + querystring = querystring.replace(/^\?/, ""); + if (querystring) { + for (const pair of querystring.split("&")) { + let [key, value = null] = pair.split("="); + key = decodeURIComponent(key); + if (value) { + value = decodeURIComponent(value); + } + if (!(key in query)) { + query[key] = value; + } else if (Array.isArray(query[key])) { + query[key].push(value); + } else { + query[key] = [query[key], value]; + } + } + } + return query; + } + exports.parseQueryString = parseQueryString; + } +}); + +// ../../../node_modules/@smithy/url-parser/dist-cjs/index.js +var require_dist_cjs24 = __commonJS({ + "../../../node_modules/@smithy/url-parser/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseUrl = void 0; + var querystring_parser_1 = require_dist_cjs23(); + var parseUrl = (url2) => { + if (typeof url2 === "string") { + return (0, exports.parseUrl)(new URL(url2)); + } + const { hostname, pathname, port, protocol, search } = url2; + let query; + if (search) { + query = (0, querystring_parser_1.parseQueryString)(search); + } + return { + hostname, + port: port ? parseInt(port) : void 0, + protocol, + path: pathname, + query + }; + }; + exports.parseUrl = parseUrl; + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/toEndpointV1.js +var require_toEndpointV1 = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/toEndpointV1.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toEndpointV1 = void 0; + var url_parser_1 = require_dist_cjs24(); + var toEndpointV1 = (endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + return (0, url_parser_1.parseUrl)(endpoint.url); + } + return endpoint; + } + return (0, url_parser_1.parseUrl)(endpoint); + }; + exports.toEndpointV1 = toEndpointV1; + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/index.js +var require_adaptors = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_getEndpointFromInstructions(), exports); + tslib_1.__exportStar(require_toEndpointV1(), exports); + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/endpointMiddleware.js +var require_endpointMiddleware = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/endpointMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.endpointMiddleware = void 0; + var getEndpointFromInstructions_1 = require_getEndpointFromInstructions(); + var endpointMiddleware = ({ config, instructions }) => { + return (next, context) => async (args) => { + var _a, _b; + const endpoint = await (0, getEndpointFromInstructions_1.getEndpointFromInstructions)(args.input, { + getEndpointParameterInstructions() { + return instructions; + } + }, { ...config }, context); + context.endpointV2 = endpoint; + context.authSchemes = (_a = endpoint.properties) === null || _a === void 0 ? void 0 : _a.authSchemes; + const authScheme = (_b = context.authSchemes) === null || _b === void 0 ? void 0 : _b[0]; + if (authScheme) { + context["signing_region"] = authScheme.signingRegion; + context["signing_service"] = authScheme.signingName; + } + return next({ + ...args + }); + }; + }; + exports.endpointMiddleware = endpointMiddleware; + } +}); + +// ../../../node_modules/@smithy/middleware-serde/dist-cjs/deserializerMiddleware.js +var require_deserializerMiddleware = __commonJS({ + "../../../node_modules/@smithy/middleware-serde/dist-cjs/deserializerMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.deserializerMiddleware = void 0; + var deserializerMiddleware = (options, deserializer) => (next, context) => async (args) => { + const { response } = await next(args); + try { + const parsed = await deserializer(response, options); + return { + response, + output: parsed + }; + } catch (error) { + Object.defineProperty(error, "$response", { + value: response + }); + if (!("$metadata" in error)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + error.message += "\n " + hint; + } + throw error; + } + }; + exports.deserializerMiddleware = deserializerMiddleware; + } +}); + +// ../../../node_modules/@smithy/middleware-serde/dist-cjs/serializerMiddleware.js +var require_serializerMiddleware = __commonJS({ + "../../../node_modules/@smithy/middleware-serde/dist-cjs/serializerMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.serializerMiddleware = void 0; + var serializerMiddleware = (options, serializer) => (next, context) => async (args) => { + var _a; + const endpoint = ((_a = context.endpointV2) === null || _a === void 0 ? void 0 : _a.url) && options.urlParser ? async () => options.urlParser(context.endpointV2.url) : options.endpoint; + if (!endpoint) { + throw new Error("No valid endpoint provider available."); + } + const request2 = await serializer(args.input, { ...options, endpoint }); + return next({ + ...args, + request: request2 + }); + }; + exports.serializerMiddleware = serializerMiddleware; + } +}); + +// ../../../node_modules/@smithy/middleware-serde/dist-cjs/serdePlugin.js +var require_serdePlugin = __commonJS({ + "../../../node_modules/@smithy/middleware-serde/dist-cjs/serdePlugin.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getSerdePlugin = exports.serializerMiddlewareOption = exports.deserializerMiddlewareOption = void 0; + var deserializerMiddleware_1 = require_deserializerMiddleware(); + var serializerMiddleware_1 = require_serializerMiddleware(); + exports.deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true + }; + exports.serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true + }; + function getSerdePlugin(config, serializer, deserializer) { + return { + applyToStack: (commandStack) => { + commandStack.add((0, deserializerMiddleware_1.deserializerMiddleware)(config, deserializer), exports.deserializerMiddlewareOption); + commandStack.add((0, serializerMiddleware_1.serializerMiddleware)(config, serializer), exports.serializerMiddlewareOption); + } + }; + } + exports.getSerdePlugin = getSerdePlugin; + } +}); + +// ../../../node_modules/@smithy/middleware-serde/dist-cjs/index.js +var require_dist_cjs25 = __commonJS({ + "../../../node_modules/@smithy/middleware-serde/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_deserializerMiddleware(), exports); + tslib_1.__exportStar(require_serdePlugin(), exports); + tslib_1.__exportStar(require_serializerMiddleware(), exports); + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/getEndpointPlugin.js +var require_getEndpointPlugin = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/getEndpointPlugin.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getEndpointPlugin = exports.endpointMiddlewareOptions = void 0; + var middleware_serde_1 = require_dist_cjs25(); + var endpointMiddleware_1 = require_endpointMiddleware(); + exports.endpointMiddlewareOptions = { + step: "serialize", + tags: ["ENDPOINT_PARAMETERS", "ENDPOINT_V2", "ENDPOINT"], + name: "endpointV2Middleware", + override: true, + relation: "before", + toMiddleware: middleware_serde_1.serializerMiddlewareOption.name + }; + var getEndpointPlugin = (config, instructions) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo((0, endpointMiddleware_1.endpointMiddleware)({ + config, + instructions + }), exports.endpointMiddlewareOptions); + } + }); + exports.getEndpointPlugin = getEndpointPlugin; + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/resolveEndpointConfig.js +var require_resolveEndpointConfig = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/resolveEndpointConfig.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveEndpointConfig = void 0; + var util_middleware_1 = require_dist_cjs10(); + var toEndpointV1_1 = require_toEndpointV1(); + var resolveEndpointConfig = (input) => { + var _a, _b, _c; + const tls = (_a = input.tls) !== null && _a !== void 0 ? _a : true; + const { endpoint } = input; + const customEndpointProvider = endpoint != null ? async () => (0, toEndpointV1_1.toEndpointV1)(await (0, util_middleware_1.normalizeProvider)(endpoint)()) : void 0; + const isCustomEndpoint = !!endpoint; + return { + ...input, + endpoint: customEndpointProvider, + tls, + isCustomEndpoint, + useDualstackEndpoint: (0, util_middleware_1.normalizeProvider)((_b = input.useDualstackEndpoint) !== null && _b !== void 0 ? _b : false), + useFipsEndpoint: (0, util_middleware_1.normalizeProvider)((_c = input.useFipsEndpoint) !== null && _c !== void 0 ? _c : false) + }; + }; + exports.resolveEndpointConfig = resolveEndpointConfig; + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/types.js +var require_types3 = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/middleware-endpoint/dist-cjs/index.js +var require_dist_cjs26 = __commonJS({ + "../../../node_modules/@smithy/middleware-endpoint/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_adaptors(), exports); + tslib_1.__exportStar(require_endpointMiddleware(), exports); + tslib_1.__exportStar(require_getEndpointPlugin(), exports); + tslib_1.__exportStar(require_resolveEndpointConfig(), exports); + tslib_1.__exportStar(require_types3(), exports); + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/config.js +var require_config3 = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/config.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DEFAULT_RETRY_MODE = exports.DEFAULT_MAX_ATTEMPTS = exports.RETRY_MODES = void 0; + var RETRY_MODES; + (function(RETRY_MODES2) { + RETRY_MODES2["STANDARD"] = "standard"; + RETRY_MODES2["ADAPTIVE"] = "adaptive"; + })(RETRY_MODES = exports.RETRY_MODES || (exports.RETRY_MODES = {})); + exports.DEFAULT_MAX_ATTEMPTS = 3; + exports.DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD; + } +}); + +// ../../../node_modules/@smithy/service-error-classification/dist-cjs/constants.js +var require_constants3 = __commonJS({ + "../../../node_modules/@smithy/service-error-classification/dist-cjs/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NODEJS_TIMEOUT_ERROR_CODES = exports.TRANSIENT_ERROR_STATUS_CODES = exports.TRANSIENT_ERROR_CODES = exports.THROTTLING_ERROR_CODES = exports.CLOCK_SKEW_ERROR_CODES = void 0; + exports.CLOCK_SKEW_ERROR_CODES = [ + "AuthFailure", + "InvalidSignatureException", + "RequestExpired", + "RequestInTheFuture", + "RequestTimeTooSkewed", + "SignatureDoesNotMatch" + ]; + exports.THROTTLING_ERROR_CODES = [ + "BandwidthLimitExceeded", + "EC2ThrottledException", + "LimitExceededException", + "PriorRequestNotComplete", + "ProvisionedThroughputExceededException", + "RequestLimitExceeded", + "RequestThrottled", + "RequestThrottledException", + "SlowDown", + "ThrottledException", + "Throttling", + "ThrottlingException", + "TooManyRequestsException", + "TransactionInProgressException" + ]; + exports.TRANSIENT_ERROR_CODES = ["TimeoutError", "RequestTimeout", "RequestTimeoutException"]; + exports.TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504]; + exports.NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "ECONNREFUSED", "EPIPE", "ETIMEDOUT"]; + } +}); + +// ../../../node_modules/@smithy/service-error-classification/dist-cjs/index.js +var require_dist_cjs27 = __commonJS({ + "../../../node_modules/@smithy/service-error-classification/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isServerError = exports.isTransientError = exports.isThrottlingError = exports.isClockSkewError = exports.isRetryableByTrait = void 0; + var constants_1 = require_constants3(); + var isRetryableByTrait = (error) => error.$retryable !== void 0; + exports.isRetryableByTrait = isRetryableByTrait; + var isClockSkewError = (error) => constants_1.CLOCK_SKEW_ERROR_CODES.includes(error.name); + exports.isClockSkewError = isClockSkewError; + var isThrottlingError = (error) => { + var _a, _b; + return ((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 429 || constants_1.THROTTLING_ERROR_CODES.includes(error.name) || ((_b = error.$retryable) === null || _b === void 0 ? void 0 : _b.throttling) == true; + }; + exports.isThrottlingError = isThrottlingError; + var isTransientError = (error) => { + var _a; + return constants_1.TRANSIENT_ERROR_CODES.includes(error.name) || constants_1.NODEJS_TIMEOUT_ERROR_CODES.includes((error === null || error === void 0 ? void 0 : error.code) || "") || constants_1.TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) || 0); + }; + exports.isTransientError = isTransientError; + var isServerError = (error) => { + var _a; + if (((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) !== void 0) { + const statusCode = error.$metadata.httpStatusCode; + if (500 <= statusCode && statusCode <= 599 && !(0, exports.isTransientError)(error)) { + return true; + } + return false; + } + return false; + }; + exports.isServerError = isServerError; + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/DefaultRateLimiter.js +var require_DefaultRateLimiter = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/DefaultRateLimiter.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DefaultRateLimiter = void 0; + var service_error_classification_1 = require_dist_cjs27(); + var DefaultRateLimiter = class { + constructor(options) { + var _a, _b, _c, _d, _e; + this.currentCapacity = 0; + this.enabled = false; + this.lastMaxRate = 0; + this.measuredTxRate = 0; + this.requestCount = 0; + this.lastTimestamp = 0; + this.timeWindow = 0; + this.beta = (_a = options === null || options === void 0 ? void 0 : options.beta) !== null && _a !== void 0 ? _a : 0.7; + this.minCapacity = (_b = options === null || options === void 0 ? void 0 : options.minCapacity) !== null && _b !== void 0 ? _b : 1; + this.minFillRate = (_c = options === null || options === void 0 ? void 0 : options.minFillRate) !== null && _c !== void 0 ? _c : 0.5; + this.scaleConstant = (_d = options === null || options === void 0 ? void 0 : options.scaleConstant) !== null && _d !== void 0 ? _d : 0.4; + this.smooth = (_e = options === null || options === void 0 ? void 0 : options.smooth) !== null && _e !== void 0 ? _e : 0.8; + const currentTimeInSeconds = this.getCurrentTimeInSeconds(); + this.lastThrottleTime = currentTimeInSeconds; + this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds()); + this.fillRate = this.minFillRate; + this.maxCapacity = this.minCapacity; + } + getCurrentTimeInSeconds() { + return Date.now() / 1e3; + } + async getSendToken() { + return this.acquireTokenBucket(1); + } + async acquireTokenBucket(amount) { + if (!this.enabled) { + return; + } + this.refillTokenBucket(); + if (amount > this.currentCapacity) { + const delay = (amount - this.currentCapacity) / this.fillRate * 1e3; + await new Promise((resolve) => setTimeout(resolve, delay)); + } + this.currentCapacity = this.currentCapacity - amount; + } + refillTokenBucket() { + const timestamp = this.getCurrentTimeInSeconds(); + if (!this.lastTimestamp) { + this.lastTimestamp = timestamp; + return; + } + const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate; + this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount); + this.lastTimestamp = timestamp; + } + updateClientSendingRate(response) { + let calculatedRate; + this.updateMeasuredRate(); + if ((0, service_error_classification_1.isThrottlingError)(response)) { + const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate); + this.lastMaxRate = rateToUse; + this.calculateTimeWindow(); + this.lastThrottleTime = this.getCurrentTimeInSeconds(); + calculatedRate = this.cubicThrottle(rateToUse); + this.enableTokenBucket(); + } else { + this.calculateTimeWindow(); + calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds()); + } + const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate); + this.updateTokenBucketRate(newRate); + } + calculateTimeWindow() { + this.timeWindow = this.getPrecise(Math.pow(this.lastMaxRate * (1 - this.beta) / this.scaleConstant, 1 / 3)); + } + cubicThrottle(rateToUse) { + return this.getPrecise(rateToUse * this.beta); + } + cubicSuccess(timestamp) { + return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate); + } + enableTokenBucket() { + this.enabled = true; + } + updateTokenBucketRate(newRate) { + this.refillTokenBucket(); + this.fillRate = Math.max(newRate, this.minFillRate); + this.maxCapacity = Math.max(newRate, this.minCapacity); + this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity); + } + updateMeasuredRate() { + const t = this.getCurrentTimeInSeconds(); + const timeBucket = Math.floor(t * 2) / 2; + this.requestCount++; + if (timeBucket > this.lastTxRateBucket) { + const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket); + this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth)); + this.requestCount = 0; + this.lastTxRateBucket = timeBucket; + } + } + getPrecise(num) { + return parseFloat(num.toFixed(8)); + } + }; + exports.DefaultRateLimiter = DefaultRateLimiter; + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/constants.js +var require_constants4 = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.REQUEST_HEADER = exports.INVOCATION_ID_HEADER = exports.NO_RETRY_INCREMENT = exports.TIMEOUT_RETRY_COST = exports.RETRY_COST = exports.INITIAL_RETRY_TOKENS = exports.THROTTLING_RETRY_DELAY_BASE = exports.MAXIMUM_RETRY_DELAY = exports.DEFAULT_RETRY_DELAY_BASE = void 0; + exports.DEFAULT_RETRY_DELAY_BASE = 100; + exports.MAXIMUM_RETRY_DELAY = 20 * 1e3; + exports.THROTTLING_RETRY_DELAY_BASE = 500; + exports.INITIAL_RETRY_TOKENS = 500; + exports.RETRY_COST = 5; + exports.TIMEOUT_RETRY_COST = 10; + exports.NO_RETRY_INCREMENT = 1; + exports.INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; + exports.REQUEST_HEADER = "amz-sdk-request"; + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/defaultRetryBackoffStrategy.js +var require_defaultRetryBackoffStrategy = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/defaultRetryBackoffStrategy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getDefaultRetryBackoffStrategy = void 0; + var constants_1 = require_constants4(); + var getDefaultRetryBackoffStrategy = () => { + let delayBase = constants_1.DEFAULT_RETRY_DELAY_BASE; + const computeNextBackoffDelay = (attempts) => { + return Math.floor(Math.min(constants_1.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); + }; + const setDelayBase = (delay) => { + delayBase = delay; + }; + return { + computeNextBackoffDelay, + setDelayBase + }; + }; + exports.getDefaultRetryBackoffStrategy = getDefaultRetryBackoffStrategy; + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/defaultRetryToken.js +var require_defaultRetryToken = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/defaultRetryToken.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createDefaultRetryToken = void 0; + var constants_1 = require_constants4(); + var createDefaultRetryToken = ({ retryDelay, retryCount, retryCost }) => { + const getRetryCount = () => retryCount; + const getRetryDelay = () => Math.min(constants_1.MAXIMUM_RETRY_DELAY, retryDelay); + const getRetryCost = () => retryCost; + return { + getRetryCount, + getRetryDelay, + getRetryCost + }; + }; + exports.createDefaultRetryToken = createDefaultRetryToken; + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/StandardRetryStrategy.js +var require_StandardRetryStrategy = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/StandardRetryStrategy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.StandardRetryStrategy = void 0; + var config_1 = require_config3(); + var constants_1 = require_constants4(); + var defaultRetryBackoffStrategy_1 = require_defaultRetryBackoffStrategy(); + var defaultRetryToken_1 = require_defaultRetryToken(); + var StandardRetryStrategy = class { + constructor(maxAttempts) { + this.maxAttempts = maxAttempts; + this.mode = config_1.RETRY_MODES.STANDARD; + this.capacity = constants_1.INITIAL_RETRY_TOKENS; + this.retryBackoffStrategy = (0, defaultRetryBackoffStrategy_1.getDefaultRetryBackoffStrategy)(); + this.maxAttemptsProvider = typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts; + } + async acquireInitialRetryToken(retryTokenScope) { + return (0, defaultRetryToken_1.createDefaultRetryToken)({ + retryDelay: constants_1.DEFAULT_RETRY_DELAY_BASE, + retryCount: 0 + }); + } + async refreshRetryTokenForRetry(token, errorInfo) { + const maxAttempts = await this.getMaxAttempts(); + if (this.shouldRetry(token, errorInfo, maxAttempts)) { + const errorType = errorInfo.errorType; + this.retryBackoffStrategy.setDelayBase(errorType === "THROTTLING" ? constants_1.THROTTLING_RETRY_DELAY_BASE : constants_1.DEFAULT_RETRY_DELAY_BASE); + const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount()); + const retryDelay = errorInfo.retryAfterHint ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType) : delayFromErrorType; + const capacityCost = this.getCapacityCost(errorType); + this.capacity -= capacityCost; + return (0, defaultRetryToken_1.createDefaultRetryToken)({ + retryDelay, + retryCount: token.getRetryCount() + 1, + retryCost: capacityCost + }); + } + throw new Error("No retry token available"); + } + recordSuccess(token) { + var _a; + this.capacity = Math.max(constants_1.INITIAL_RETRY_TOKENS, this.capacity + ((_a = token.getRetryCost()) !== null && _a !== void 0 ? _a : constants_1.NO_RETRY_INCREMENT)); + } + getCapacity() { + return this.capacity; + } + async getMaxAttempts() { + try { + return await this.maxAttemptsProvider(); + } catch (error) { + console.warn(`Max attempts provider could not resolve. Using default of ${config_1.DEFAULT_MAX_ATTEMPTS}`); + return config_1.DEFAULT_MAX_ATTEMPTS; + } + } + shouldRetry(tokenToRenew, errorInfo, maxAttempts) { + const attempts = tokenToRenew.getRetryCount() + 1; + return attempts < maxAttempts && this.capacity >= this.getCapacityCost(errorInfo.errorType) && this.isRetryableError(errorInfo.errorType); + } + getCapacityCost(errorType) { + return errorType === "TRANSIENT" ? constants_1.TIMEOUT_RETRY_COST : constants_1.RETRY_COST; + } + isRetryableError(errorType) { + return errorType === "THROTTLING" || errorType === "TRANSIENT"; + } + }; + exports.StandardRetryStrategy = StandardRetryStrategy; + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/AdaptiveRetryStrategy.js +var require_AdaptiveRetryStrategy = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/AdaptiveRetryStrategy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AdaptiveRetryStrategy = void 0; + var config_1 = require_config3(); + var DefaultRateLimiter_1 = require_DefaultRateLimiter(); + var StandardRetryStrategy_1 = require_StandardRetryStrategy(); + var AdaptiveRetryStrategy = class { + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + this.mode = config_1.RETRY_MODES.ADAPTIVE; + const { rateLimiter } = options !== null && options !== void 0 ? options : {}; + this.rateLimiter = rateLimiter !== null && rateLimiter !== void 0 ? rateLimiter : new DefaultRateLimiter_1.DefaultRateLimiter(); + this.standardRetryStrategy = new StandardRetryStrategy_1.StandardRetryStrategy(maxAttemptsProvider); + } + async acquireInitialRetryToken(retryTokenScope) { + await this.rateLimiter.getSendToken(); + return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope); + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + this.rateLimiter.updateClientSendingRate(errorInfo); + return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + } + recordSuccess(token) { + this.rateLimiter.updateClientSendingRate({}); + this.standardRetryStrategy.recordSuccess(token); + } + }; + exports.AdaptiveRetryStrategy = AdaptiveRetryStrategy; + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/ConfiguredRetryStrategy.js +var require_ConfiguredRetryStrategy = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/ConfiguredRetryStrategy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ConfiguredRetryStrategy = void 0; + var constants_1 = require_constants4(); + var StandardRetryStrategy_1 = require_StandardRetryStrategy(); + var ConfiguredRetryStrategy = class extends StandardRetryStrategy_1.StandardRetryStrategy { + constructor(maxAttempts, computeNextBackoffDelay = constants_1.DEFAULT_RETRY_DELAY_BASE) { + super(typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts); + if (typeof computeNextBackoffDelay === "number") { + this.computeNextBackoffDelay = () => computeNextBackoffDelay; + } else { + this.computeNextBackoffDelay = computeNextBackoffDelay; + } + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + const token = await super.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + token.getRetryDelay = () => this.computeNextBackoffDelay(token.getRetryCount()); + return token; + } + }; + exports.ConfiguredRetryStrategy = ConfiguredRetryStrategy; + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/types.js +var require_types4 = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/util-retry/dist-cjs/index.js +var require_dist_cjs28 = __commonJS({ + "../../../node_modules/@smithy/util-retry/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_AdaptiveRetryStrategy(), exports); + tslib_1.__exportStar(require_ConfiguredRetryStrategy(), exports); + tslib_1.__exportStar(require_DefaultRateLimiter(), exports); + tslib_1.__exportStar(require_StandardRetryStrategy(), exports); + tslib_1.__exportStar(require_config3(), exports); + tslib_1.__exportStar(require_constants4(), exports); + tslib_1.__exportStar(require_types4(), exports); + } +}); + +// ../../../node_modules/uuid/dist/esm-node/rng.js +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + import_crypto.default.randomFillSync(rnds8Pool); + poolPtr = 0; + } + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +var import_crypto, rnds8Pool, poolPtr; +var init_rng = __esm({ + "../../../node_modules/uuid/dist/esm-node/rng.js"() { + import_crypto = __toESM(require("crypto")); + rnds8Pool = new Uint8Array(256); + poolPtr = rnds8Pool.length; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/regex.js +var regex_default; +var init_regex = __esm({ + "../../../node_modules/uuid/dist/esm-node/regex.js"() { + regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/validate.js +function validate(uuid) { + return typeof uuid === "string" && regex_default.test(uuid); +} +var validate_default; +var init_validate = __esm({ + "../../../node_modules/uuid/dist/esm-node/validate.js"() { + init_regex(); + validate_default = validate; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/stringify.js +function stringify(arr, offset = 0) { + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); + if (!validate_default(uuid)) { + throw TypeError("Stringified UUID is invalid"); + } + return uuid; +} +var byteToHex, stringify_default; +var init_stringify = __esm({ + "../../../node_modules/uuid/dist/esm-node/stringify.js"() { + init_validate(); + byteToHex = []; + for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 256).toString(16).substr(1)); + } + stringify_default = stringify; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/v1.js +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== void 0 ? options.clockseq : _clockseq; + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + if (node == null) { + node = _nodeId = [seedBytes[0] | 1, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + if (clockseq == null) { + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 16383; + } + } + let msecs = options.msecs !== void 0 ? options.msecs : Date.now(); + let nsecs = options.nsecs !== void 0 ? options.nsecs : _lastNSecs + 1; + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4; + if (dt < 0 && options.clockseq === void 0) { + clockseq = clockseq + 1 & 16383; + } + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === void 0) { + nsecs = 0; + } + if (nsecs >= 1e4) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + msecs += 122192928e5; + const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; + b[i++] = tl >>> 24 & 255; + b[i++] = tl >>> 16 & 255; + b[i++] = tl >>> 8 & 255; + b[i++] = tl & 255; + const tmh = msecs / 4294967296 * 1e4 & 268435455; + b[i++] = tmh >>> 8 & 255; + b[i++] = tmh & 255; + b[i++] = tmh >>> 24 & 15 | 16; + b[i++] = tmh >>> 16 & 255; + b[i++] = clockseq >>> 8 | 128; + b[i++] = clockseq & 255; + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + return buf || stringify_default(b); +} +var _nodeId, _clockseq, _lastMSecs, _lastNSecs, v1_default; +var init_v1 = __esm({ + "../../../node_modules/uuid/dist/esm-node/v1.js"() { + init_rng(); + init_stringify(); + _lastMSecs = 0; + _lastNSecs = 0; + v1_default = v1; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/parse.js +function parse(uuid) { + if (!validate_default(uuid)) { + throw TypeError("Invalid UUID"); + } + let v; + const arr = new Uint8Array(16); + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 255; + arr[2] = v >>> 8 & 255; + arr[3] = v & 255; + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 255; + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 255; + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 255; + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255; + arr[11] = v / 4294967296 & 255; + arr[12] = v >>> 24 & 255; + arr[13] = v >>> 16 & 255; + arr[14] = v >>> 8 & 255; + arr[15] = v & 255; + return arr; +} +var parse_default; +var init_parse = __esm({ + "../../../node_modules/uuid/dist/esm-node/parse.js"() { + init_validate(); + parse_default = parse; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/v35.js +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); + const bytes = []; + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + return bytes; +} +function v35_default(name, version2, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === "string") { + value = stringToBytes(value); + } + if (typeof namespace === "string") { + namespace = parse_default(namespace); + } + if (namespace.length !== 16) { + throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); + } + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 15 | version2; + bytes[8] = bytes[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + return buf; + } + return stringify_default(bytes); + } + try { + generateUUID.name = name; + } catch (err) { + } + generateUUID.DNS = DNS; + generateUUID.URL = URL2; + return generateUUID; +} +var DNS, URL2; +var init_v35 = __esm({ + "../../../node_modules/uuid/dist/esm-node/v35.js"() { + init_stringify(); + init_parse(); + DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; + URL2 = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/md5.js +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === "string") { + bytes = Buffer.from(bytes, "utf8"); + } + return import_crypto2.default.createHash("md5").update(bytes).digest(); +} +var import_crypto2, md5_default; +var init_md5 = __esm({ + "../../../node_modules/uuid/dist/esm-node/md5.js"() { + import_crypto2 = __toESM(require("crypto")); + md5_default = md5; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/v3.js +var v3, v3_default; +var init_v3 = __esm({ + "../../../node_modules/uuid/dist/esm-node/v3.js"() { + init_v35(); + init_md5(); + v3 = v35_default("v3", 48, md5_default); + v3_default = v3; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/v4.js +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + return buf; + } + return stringify_default(rnds); +} +var v4_default; +var init_v4 = __esm({ + "../../../node_modules/uuid/dist/esm-node/v4.js"() { + init_rng(); + init_stringify(); + v4_default = v4; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/sha1.js +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === "string") { + bytes = Buffer.from(bytes, "utf8"); + } + return import_crypto3.default.createHash("sha1").update(bytes).digest(); +} +var import_crypto3, sha1_default; +var init_sha1 = __esm({ + "../../../node_modules/uuid/dist/esm-node/sha1.js"() { + import_crypto3 = __toESM(require("crypto")); + sha1_default = sha1; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/v5.js +var v5, v5_default; +var init_v5 = __esm({ + "../../../node_modules/uuid/dist/esm-node/v5.js"() { + init_v35(); + init_sha1(); + v5 = v35_default("v5", 80, sha1_default); + v5_default = v5; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/nil.js +var nil_default; +var init_nil = __esm({ + "../../../node_modules/uuid/dist/esm-node/nil.js"() { + nil_default = "00000000-0000-0000-0000-000000000000"; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/version.js +function version(uuid) { + if (!validate_default(uuid)) { + throw TypeError("Invalid UUID"); + } + return parseInt(uuid.substr(14, 1), 16); +} +var version_default; +var init_version = __esm({ + "../../../node_modules/uuid/dist/esm-node/version.js"() { + init_validate(); + version_default = version; + } +}); + +// ../../../node_modules/uuid/dist/esm-node/index.js +var esm_node_exports = {}; +__export(esm_node_exports, { + NIL: () => nil_default, + parse: () => parse_default, + stringify: () => stringify_default, + v1: () => v1_default, + v3: () => v3_default, + v4: () => v4_default, + v5: () => v5_default, + validate: () => validate_default, + version: () => version_default +}); +var init_esm_node = __esm({ + "../../../node_modules/uuid/dist/esm-node/index.js"() { + init_v1(); + init_v3(); + init_v4(); + init_v5(); + init_nil(); + init_version(); + init_validate(); + init_stringify(); + init_parse(); + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/defaultRetryQuota.js +var require_defaultRetryQuota = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/defaultRetryQuota.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getDefaultRetryQuota = void 0; + var util_retry_1 = require_dist_cjs28(); + var getDefaultRetryQuota = (initialRetryTokens, options) => { + var _a, _b, _c; + const MAX_CAPACITY = initialRetryTokens; + const noRetryIncrement = (_a = options === null || options === void 0 ? void 0 : options.noRetryIncrement) !== null && _a !== void 0 ? _a : util_retry_1.NO_RETRY_INCREMENT; + const retryCost = (_b = options === null || options === void 0 ? void 0 : options.retryCost) !== null && _b !== void 0 ? _b : util_retry_1.RETRY_COST; + const timeoutRetryCost = (_c = options === null || options === void 0 ? void 0 : options.timeoutRetryCost) !== null && _c !== void 0 ? _c : util_retry_1.TIMEOUT_RETRY_COST; + let availableCapacity = initialRetryTokens; + const getCapacityAmount = (error) => error.name === "TimeoutError" ? timeoutRetryCost : retryCost; + const hasRetryTokens = (error) => getCapacityAmount(error) <= availableCapacity; + const retrieveRetryTokens = (error) => { + if (!hasRetryTokens(error)) { + throw new Error("No retry token available"); + } + const capacityAmount = getCapacityAmount(error); + availableCapacity -= capacityAmount; + return capacityAmount; + }; + const releaseRetryTokens = (capacityReleaseAmount) => { + availableCapacity += capacityReleaseAmount !== null && capacityReleaseAmount !== void 0 ? capacityReleaseAmount : noRetryIncrement; + availableCapacity = Math.min(availableCapacity, MAX_CAPACITY); + }; + return Object.freeze({ + hasRetryTokens, + retrieveRetryTokens, + releaseRetryTokens + }); + }; + exports.getDefaultRetryQuota = getDefaultRetryQuota; + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/delayDecider.js +var require_delayDecider = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/delayDecider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defaultDelayDecider = void 0; + var util_retry_1 = require_dist_cjs28(); + var defaultDelayDecider = (delayBase, attempts) => Math.floor(Math.min(util_retry_1.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); + exports.defaultDelayDecider = defaultDelayDecider; + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/retryDecider.js +var require_retryDecider = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/retryDecider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defaultRetryDecider = void 0; + var service_error_classification_1 = require_dist_cjs27(); + var defaultRetryDecider = (error) => { + if (!error) { + return false; + } + return (0, service_error_classification_1.isRetryableByTrait)(error) || (0, service_error_classification_1.isClockSkewError)(error) || (0, service_error_classification_1.isThrottlingError)(error) || (0, service_error_classification_1.isTransientError)(error); + }; + exports.defaultRetryDecider = defaultRetryDecider; + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/util.js +var require_util3 = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/util.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.asSdkError = void 0; + var asSdkError = (error) => { + if (error instanceof Error) + return error; + if (error instanceof Object) + return Object.assign(new Error(), error); + if (typeof error === "string") + return new Error(error); + return new Error(`AWS SDK error wrapper for ${error}`); + }; + exports.asSdkError = asSdkError; + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/StandardRetryStrategy.js +var require_StandardRetryStrategy2 = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/StandardRetryStrategy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.StandardRetryStrategy = void 0; + var protocol_http_1 = require_dist_cjs2(); + var service_error_classification_1 = require_dist_cjs27(); + var util_retry_1 = require_dist_cjs28(); + var uuid_1 = (init_esm_node(), __toCommonJS(esm_node_exports)); + var defaultRetryQuota_1 = require_defaultRetryQuota(); + var delayDecider_1 = require_delayDecider(); + var retryDecider_1 = require_retryDecider(); + var util_1 = require_util3(); + var StandardRetryStrategy = class { + constructor(maxAttemptsProvider, options) { + var _a, _b, _c; + this.maxAttemptsProvider = maxAttemptsProvider; + this.mode = util_retry_1.RETRY_MODES.STANDARD; + this.retryDecider = (_a = options === null || options === void 0 ? void 0 : options.retryDecider) !== null && _a !== void 0 ? _a : retryDecider_1.defaultRetryDecider; + this.delayDecider = (_b = options === null || options === void 0 ? void 0 : options.delayDecider) !== null && _b !== void 0 ? _b : delayDecider_1.defaultDelayDecider; + this.retryQuota = (_c = options === null || options === void 0 ? void 0 : options.retryQuota) !== null && _c !== void 0 ? _c : (0, defaultRetryQuota_1.getDefaultRetryQuota)(util_retry_1.INITIAL_RETRY_TOKENS); + } + shouldRetry(error, attempts, maxAttempts) { + return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error); + } + async getMaxAttempts() { + let maxAttempts; + try { + maxAttempts = await this.maxAttemptsProvider(); + } catch (error) { + maxAttempts = util_retry_1.DEFAULT_MAX_ATTEMPTS; + } + return maxAttempts; + } + async retry(next, args, options) { + let retryTokenAmount; + let attempts = 0; + let totalDelay = 0; + const maxAttempts = await this.getMaxAttempts(); + const { request: request2 } = args; + if (protocol_http_1.HttpRequest.isInstance(request2)) { + request2.headers[util_retry_1.INVOCATION_ID_HEADER] = (0, uuid_1.v4)(); + } + while (true) { + try { + if (protocol_http_1.HttpRequest.isInstance(request2)) { + request2.headers[util_retry_1.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + if (options === null || options === void 0 ? void 0 : options.beforeRequest) { + await options.beforeRequest(); + } + const { response, output } = await next(args); + if (options === null || options === void 0 ? void 0 : options.afterRequest) { + options.afterRequest(response); + } + this.retryQuota.releaseRetryTokens(retryTokenAmount); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalDelay; + return { response, output }; + } catch (e) { + const err = (0, util_1.asSdkError)(e); + attempts++; + if (this.shouldRetry(err, attempts, maxAttempts)) { + retryTokenAmount = this.retryQuota.retrieveRetryTokens(err); + const delayFromDecider = this.delayDecider((0, service_error_classification_1.isThrottlingError)(err) ? util_retry_1.THROTTLING_RETRY_DELAY_BASE : util_retry_1.DEFAULT_RETRY_DELAY_BASE, attempts); + const delayFromResponse = getDelayFromRetryAfterHeader(err.$response); + const delay = Math.max(delayFromResponse || 0, delayFromDecider); + totalDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + continue; + } + if (!err.$metadata) { + err.$metadata = {}; + } + err.$metadata.attempts = attempts; + err.$metadata.totalRetryDelay = totalDelay; + throw err; + } + } + } + }; + exports.StandardRetryStrategy = StandardRetryStrategy; + var getDelayFromRetryAfterHeader = (response) => { + if (!protocol_http_1.HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return retryAfterSeconds * 1e3; + const retryAfterDate = new Date(retryAfter); + return retryAfterDate.getTime() - Date.now(); + }; + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/AdaptiveRetryStrategy.js +var require_AdaptiveRetryStrategy2 = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/AdaptiveRetryStrategy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AdaptiveRetryStrategy = void 0; + var util_retry_1 = require_dist_cjs28(); + var StandardRetryStrategy_1 = require_StandardRetryStrategy2(); + var AdaptiveRetryStrategy = class extends StandardRetryStrategy_1.StandardRetryStrategy { + constructor(maxAttemptsProvider, options) { + const { rateLimiter, ...superOptions } = options !== null && options !== void 0 ? options : {}; + super(maxAttemptsProvider, superOptions); + this.rateLimiter = rateLimiter !== null && rateLimiter !== void 0 ? rateLimiter : new util_retry_1.DefaultRateLimiter(); + this.mode = util_retry_1.RETRY_MODES.ADAPTIVE; + } + async retry(next, args) { + return super.retry(next, args, { + beforeRequest: async () => { + return this.rateLimiter.getSendToken(); + }, + afterRequest: (response) => { + this.rateLimiter.updateClientSendingRate(response); + } + }); + } + }; + exports.AdaptiveRetryStrategy = AdaptiveRetryStrategy; + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/configurations.js +var require_configurations2 = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/configurations.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NODE_RETRY_MODE_CONFIG_OPTIONS = exports.CONFIG_RETRY_MODE = exports.ENV_RETRY_MODE = exports.resolveRetryConfig = exports.NODE_MAX_ATTEMPT_CONFIG_OPTIONS = exports.CONFIG_MAX_ATTEMPTS = exports.ENV_MAX_ATTEMPTS = void 0; + var util_middleware_1 = require_dist_cjs10(); + var util_retry_1 = require_dist_cjs28(); + exports.ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; + exports.CONFIG_MAX_ATTEMPTS = "max_attempts"; + exports.NODE_MAX_ATTEMPT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[exports.ENV_MAX_ATTEMPTS]; + if (!value) + return void 0; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Environment variable ${exports.ENV_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + configFileSelector: (profile) => { + const value = profile[exports.CONFIG_MAX_ATTEMPTS]; + if (!value) + return void 0; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Shared config file entry ${exports.CONFIG_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + default: util_retry_1.DEFAULT_MAX_ATTEMPTS + }; + var resolveRetryConfig = (input) => { + var _a; + const { retryStrategy } = input; + const maxAttempts = (0, util_middleware_1.normalizeProvider)((_a = input.maxAttempts) !== null && _a !== void 0 ? _a : util_retry_1.DEFAULT_MAX_ATTEMPTS); + return { + ...input, + maxAttempts, + retryStrategy: async () => { + if (retryStrategy) { + return retryStrategy; + } + const retryMode = await (0, util_middleware_1.normalizeProvider)(input.retryMode)(); + if (retryMode === util_retry_1.RETRY_MODES.ADAPTIVE) { + return new util_retry_1.AdaptiveRetryStrategy(maxAttempts); + } + return new util_retry_1.StandardRetryStrategy(maxAttempts); + } + }; + }; + exports.resolveRetryConfig = resolveRetryConfig; + exports.ENV_RETRY_MODE = "AWS_RETRY_MODE"; + exports.CONFIG_RETRY_MODE = "retry_mode"; + exports.NODE_RETRY_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[exports.ENV_RETRY_MODE], + configFileSelector: (profile) => profile[exports.CONFIG_RETRY_MODE], + default: util_retry_1.DEFAULT_RETRY_MODE + }; + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/omitRetryHeadersMiddleware.js +var require_omitRetryHeadersMiddleware = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/omitRetryHeadersMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getOmitRetryHeadersPlugin = exports.omitRetryHeadersMiddlewareOptions = exports.omitRetryHeadersMiddleware = void 0; + var protocol_http_1 = require_dist_cjs2(); + var util_retry_1 = require_dist_cjs28(); + var omitRetryHeadersMiddleware = () => (next) => async (args) => { + const { request: request2 } = args; + if (protocol_http_1.HttpRequest.isInstance(request2)) { + delete request2.headers[util_retry_1.INVOCATION_ID_HEADER]; + delete request2.headers[util_retry_1.REQUEST_HEADER]; + } + return next(args); + }; + exports.omitRetryHeadersMiddleware = omitRetryHeadersMiddleware; + exports.omitRetryHeadersMiddlewareOptions = { + name: "omitRetryHeadersMiddleware", + tags: ["RETRY", "HEADERS", "OMIT_RETRY_HEADERS"], + relation: "before", + toMiddleware: "awsAuthMiddleware", + override: true + }; + var getOmitRetryHeadersPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo((0, exports.omitRetryHeadersMiddleware)(), exports.omitRetryHeadersMiddlewareOptions); + } + }); + exports.getOmitRetryHeadersPlugin = getOmitRetryHeadersPlugin; + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/retryMiddleware.js +var require_retryMiddleware = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/retryMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRetryAfterHint = exports.getRetryPlugin = exports.retryMiddlewareOptions = exports.retryMiddleware = void 0; + var protocol_http_1 = require_dist_cjs2(); + var service_error_classification_1 = require_dist_cjs27(); + var util_retry_1 = require_dist_cjs28(); + var uuid_1 = (init_esm_node(), __toCommonJS(esm_node_exports)); + var util_1 = require_util3(); + var retryMiddleware = (options) => (next, context) => async (args) => { + let retryStrategy = await options.retryStrategy(); + const maxAttempts = await options.maxAttempts(); + if (isRetryStrategyV2(retryStrategy)) { + retryStrategy = retryStrategy; + let retryToken = await retryStrategy.acquireInitialRetryToken(context["partition_id"]); + let lastError = new Error(); + let attempts = 0; + let totalRetryDelay = 0; + const { request: request2 } = args; + if (protocol_http_1.HttpRequest.isInstance(request2)) { + request2.headers[util_retry_1.INVOCATION_ID_HEADER] = (0, uuid_1.v4)(); + } + while (true) { + try { + if (protocol_http_1.HttpRequest.isInstance(request2)) { + request2.headers[util_retry_1.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + const { response, output } = await next(args); + retryStrategy.recordSuccess(retryToken); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalRetryDelay; + return { response, output }; + } catch (e) { + const retryErrorInfo = getRetryErrorInfo(e); + lastError = (0, util_1.asSdkError)(e); + try { + retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo); + } catch (refreshError) { + if (!lastError.$metadata) { + lastError.$metadata = {}; + } + lastError.$metadata.attempts = attempts + 1; + lastError.$metadata.totalRetryDelay = totalRetryDelay; + throw lastError; + } + attempts = retryToken.getRetryCount(); + const delay = retryToken.getRetryDelay(); + totalRetryDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + } else { + retryStrategy = retryStrategy; + if (retryStrategy === null || retryStrategy === void 0 ? void 0 : retryStrategy.mode) + context.userAgent = [...context.userAgent || [], ["cfg/retry-mode", retryStrategy.mode]]; + return retryStrategy.retry(next, args); + } + }; + exports.retryMiddleware = retryMiddleware; + var isRetryStrategyV2 = (retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== "undefined" && typeof retryStrategy.refreshRetryTokenForRetry !== "undefined" && typeof retryStrategy.recordSuccess !== "undefined"; + var getRetryErrorInfo = (error) => { + const errorInfo = { + errorType: getRetryErrorType(error) + }; + const retryAfterHint = (0, exports.getRetryAfterHint)(error.$response); + if (retryAfterHint) { + errorInfo.retryAfterHint = retryAfterHint; + } + return errorInfo; + }; + var getRetryErrorType = (error) => { + if ((0, service_error_classification_1.isThrottlingError)(error)) + return "THROTTLING"; + if ((0, service_error_classification_1.isTransientError)(error)) + return "TRANSIENT"; + if ((0, service_error_classification_1.isServerError)(error)) + return "SERVER_ERROR"; + return "CLIENT_ERROR"; + }; + exports.retryMiddlewareOptions = { + name: "retryMiddleware", + tags: ["RETRY"], + step: "finalizeRequest", + priority: "high", + override: true + }; + var getRetryPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add((0, exports.retryMiddleware)(options), exports.retryMiddlewareOptions); + } + }); + exports.getRetryPlugin = getRetryPlugin; + var getRetryAfterHint = (response) => { + if (!protocol_http_1.HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return new Date(retryAfterSeconds * 1e3); + const retryAfterDate = new Date(retryAfter); + return retryAfterDate; + }; + exports.getRetryAfterHint = getRetryAfterHint; + } +}); + +// ../../../node_modules/@smithy/middleware-retry/dist-cjs/index.js +var require_dist_cjs29 = __commonJS({ + "../../../node_modules/@smithy/middleware-retry/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_AdaptiveRetryStrategy2(), exports); + tslib_1.__exportStar(require_StandardRetryStrategy2(), exports); + tslib_1.__exportStar(require_configurations2(), exports); + tslib_1.__exportStar(require_delayDecider(), exports); + tslib_1.__exportStar(require_omitRetryHeadersMiddleware(), exports); + tslib_1.__exportStar(require_retryDecider(), exports); + tslib_1.__exportStar(require_retryMiddleware(), exports); + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/NoOpLogger.js +var require_NoOpLogger = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/NoOpLogger.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NoOpLogger = void 0; + var NoOpLogger = class { + trace() { + } + debug() { + } + info() { + } + warn() { + } + error() { + } + }; + exports.NoOpLogger = NoOpLogger; + } +}); + +// ../../../node_modules/@smithy/middleware-stack/dist-cjs/MiddlewareStack.js +var require_MiddlewareStack = __commonJS({ + "../../../node_modules/@smithy/middleware-stack/dist-cjs/MiddlewareStack.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.constructStack = void 0; + var constructStack = () => { + let absoluteEntries = []; + let relativeEntries = []; + const entriesNameSet = /* @__PURE__ */ new Set(); + const sort = (entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] || priorityWeights[b.priority || "normal"] - priorityWeights[a.priority || "normal"]); + const removeByName = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + if (entry.name && entry.name === toRemove) { + isRemoved = true; + entriesNameSet.delete(toRemove); + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const removeByReference = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + if (entry.middleware === toRemove) { + isRemoved = true; + if (entry.name) + entriesNameSet.delete(entry.name); + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const cloneTo = (toStack) => { + absoluteEntries.forEach((entry) => { + toStack.add(entry.middleware, { ...entry }); + }); + relativeEntries.forEach((entry) => { + toStack.addRelativeTo(entry.middleware, { ...entry }); + }); + return toStack; + }; + const expandRelativeMiddlewareList = (from) => { + const expandedMiddlewareList = []; + from.before.forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + expandedMiddlewareList.push(from); + from.after.reverse().forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + return expandedMiddlewareList; + }; + const getMiddlewareList = (debug = false) => { + const normalizedAbsoluteEntries = []; + const normalizedRelativeEntries = []; + const normalizedEntriesNameMap = {}; + absoluteEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [] + }; + if (normalizedEntry.name) + normalizedEntriesNameMap[normalizedEntry.name] = normalizedEntry; + normalizedAbsoluteEntries.push(normalizedEntry); + }); + relativeEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [] + }; + if (normalizedEntry.name) + normalizedEntriesNameMap[normalizedEntry.name] = normalizedEntry; + normalizedRelativeEntries.push(normalizedEntry); + }); + normalizedRelativeEntries.forEach((entry) => { + if (entry.toMiddleware) { + const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware]; + if (toMiddleware === void 0) { + if (debug) { + return; + } + throw new Error(`${entry.toMiddleware} is not found when adding ${entry.name || "anonymous"} middleware ${entry.relation} ${entry.toMiddleware}`); + } + if (entry.relation === "after") { + toMiddleware.after.push(entry); + } + if (entry.relation === "before") { + toMiddleware.before.push(entry); + } + } + }); + const mainChain = sort(normalizedAbsoluteEntries).map(expandRelativeMiddlewareList).reduce((wholeList, expandedMiddlewareList) => { + wholeList.push(...expandedMiddlewareList); + return wholeList; + }, []); + return mainChain; + }; + const stack = { + add: (middleware, options = {}) => { + const { name, override } = options; + const entry = { + step: "initialize", + priority: "normal", + middleware, + ...options + }; + if (name) { + if (entriesNameSet.has(name)) { + if (!override) + throw new Error(`Duplicate middleware name '${name}'`); + const toOverrideIndex = absoluteEntries.findIndex((entry2) => entry2.name === name); + const toOverride = absoluteEntries[toOverrideIndex]; + if (toOverride.step !== entry.step || toOverride.priority !== entry.priority) { + throw new Error(`"${name}" middleware with ${toOverride.priority} priority in ${toOverride.step} step cannot be overridden by same-name middleware with ${entry.priority} priority in ${entry.step} step.`); + } + absoluteEntries.splice(toOverrideIndex, 1); + } + entriesNameSet.add(name); + } + absoluteEntries.push(entry); + }, + addRelativeTo: (middleware, options) => { + const { name, override } = options; + const entry = { + middleware, + ...options + }; + if (name) { + if (entriesNameSet.has(name)) { + if (!override) + throw new Error(`Duplicate middleware name '${name}'`); + const toOverrideIndex = relativeEntries.findIndex((entry2) => entry2.name === name); + const toOverride = relativeEntries[toOverrideIndex]; + if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) { + throw new Error(`"${name}" middleware ${toOverride.relation} "${toOverride.toMiddleware}" middleware cannot be overridden by same-name middleware ${entry.relation} "${entry.toMiddleware}" middleware.`); + } + relativeEntries.splice(toOverrideIndex, 1); + } + entriesNameSet.add(name); + } + relativeEntries.push(entry); + }, + clone: () => cloneTo((0, exports.constructStack)()), + use: (plugin) => { + plugin.applyToStack(stack); + }, + remove: (toRemove) => { + if (typeof toRemove === "string") + return removeByName(toRemove); + else + return removeByReference(toRemove); + }, + removeByTag: (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + const { tags, name } = entry; + if (tags && tags.includes(toRemove)) { + if (name) + entriesNameSet.delete(name); + isRemoved = true; + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }, + concat: (from) => { + const cloned = cloneTo((0, exports.constructStack)()); + cloned.use(from); + return cloned; + }, + applyToStack: cloneTo, + identify: () => { + return getMiddlewareList(true).map((mw) => { + return mw.name + ": " + (mw.tags || []).join(","); + }); + }, + resolve: (handler2, context) => { + for (const middleware of getMiddlewareList().map((entry) => entry.middleware).reverse()) { + handler2 = middleware(handler2, context); + } + return handler2; + } + }; + return stack; + }; + exports.constructStack = constructStack; + var stepWeights = { + initialize: 5, + serialize: 4, + build: 3, + finalizeRequest: 2, + deserialize: 1 + }; + var priorityWeights = { + high: 3, + normal: 2, + low: 1 + }; + } +}); + +// ../../../node_modules/@smithy/middleware-stack/dist-cjs/index.js +var require_dist_cjs30 = __commonJS({ + "../../../node_modules/@smithy/middleware-stack/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_MiddlewareStack(), exports); + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/client.js +var require_client3 = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/client.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Client = void 0; + var middleware_stack_1 = require_dist_cjs30(); + var Client = class { + constructor(config) { + this.middlewareStack = (0, middleware_stack_1.constructStack)(); + this.config = config; + } + send(command, optionsOrCb, cb) { + const options = typeof optionsOrCb !== "function" ? optionsOrCb : void 0; + const callback = typeof optionsOrCb === "function" ? optionsOrCb : cb; + const handler2 = command.resolveMiddleware(this.middlewareStack, this.config, options); + if (callback) { + handler2(command).then((result) => callback(null, result.output), (err) => callback(err)).catch(() => { + }); + } else { + return handler2(command).then((result) => result.output); + } + } + destroy() { + if (this.config.requestHandler.destroy) + this.config.requestHandler.destroy(); + } + }; + exports.Client = Client; + } +}); + +// ../../../node_modules/@smithy/util-base64/dist-cjs/fromBase64.js +var require_fromBase64 = __commonJS({ + "../../../node_modules/@smithy/util-base64/dist-cjs/fromBase64.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromBase64 = void 0; + var util_buffer_from_1 = require_dist_cjs12(); + var BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/; + var fromBase64 = (input) => { + if (input.length * 3 % 4 !== 0) { + throw new TypeError(`Incorrect padding on base64 string.`); + } + if (!BASE64_REGEX.exec(input)) { + throw new TypeError(`Invalid base64 string.`); + } + const buffer = (0, util_buffer_from_1.fromString)(input, "base64"); + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); + }; + exports.fromBase64 = fromBase64; + } +}); + +// ../../../node_modules/@smithy/util-base64/dist-cjs/toBase64.js +var require_toBase64 = __commonJS({ + "../../../node_modules/@smithy/util-base64/dist-cjs/toBase64.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toBase64 = void 0; + var util_buffer_from_1 = require_dist_cjs12(); + var toBase64 = (input) => (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString("base64"); + exports.toBase64 = toBase64; + } +}); + +// ../../../node_modules/@smithy/util-base64/dist-cjs/index.js +var require_dist_cjs31 = __commonJS({ + "../../../node_modules/@smithy/util-base64/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_fromBase64(), exports); + tslib_1.__exportStar(require_toBase64(), exports); + } +}); + +// ../../../node_modules/@smithy/util-stream/dist-cjs/blob/transforms.js +var require_transforms = __commonJS({ + "../../../node_modules/@smithy/util-stream/dist-cjs/blob/transforms.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.transformFromString = exports.transformToString = void 0; + var util_base64_1 = require_dist_cjs31(); + var util_utf8_1 = require_dist_cjs13(); + var Uint8ArrayBlobAdapter_1 = require_Uint8ArrayBlobAdapter(); + function transformToString(payload, encoding = "utf-8") { + if (encoding === "base64") { + return (0, util_base64_1.toBase64)(payload); + } + return (0, util_utf8_1.toUtf8)(payload); + } + exports.transformToString = transformToString; + function transformFromString(str, encoding) { + if (encoding === "base64") { + return Uint8ArrayBlobAdapter_1.Uint8ArrayBlobAdapter.mutate((0, util_base64_1.fromBase64)(str)); + } + return Uint8ArrayBlobAdapter_1.Uint8ArrayBlobAdapter.mutate((0, util_utf8_1.fromUtf8)(str)); + } + exports.transformFromString = transformFromString; + } +}); + +// ../../../node_modules/@smithy/util-stream/dist-cjs/blob/Uint8ArrayBlobAdapter.js +var require_Uint8ArrayBlobAdapter = __commonJS({ + "../../../node_modules/@smithy/util-stream/dist-cjs/blob/Uint8ArrayBlobAdapter.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Uint8ArrayBlobAdapter = void 0; + var transforms_1 = require_transforms(); + var Uint8ArrayBlobAdapter = class _Uint8ArrayBlobAdapter extends Uint8Array { + static fromString(source, encoding = "utf-8") { + switch (typeof source) { + case "string": + return (0, transforms_1.transformFromString)(source, encoding); + default: + throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`); + } + } + static mutate(source) { + Object.setPrototypeOf(source, _Uint8ArrayBlobAdapter.prototype); + return source; + } + transformToString(encoding = "utf-8") { + return (0, transforms_1.transformToString)(this, encoding); + } + }; + exports.Uint8ArrayBlobAdapter = Uint8ArrayBlobAdapter; + } +}); + +// ../../../node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js +var require_getAwsChunkedEncodingStream = __commonJS({ + "../../../node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getAwsChunkedEncodingStream = void 0; + var stream_1 = require("stream"); + var getAwsChunkedEncodingStream = (readableStream, options) => { + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== void 0 && checksumAlgorithmFn !== void 0 && checksumLocationName !== void 0 && streamHasher !== void 0; + const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : void 0; + const awsChunkedEncodingStream = new stream_1.Readable({ read: () => { + } }); + readableStream.on("data", (data) => { + const length = bodyLengthChecker(data) || 0; + awsChunkedEncodingStream.push(`${length.toString(16)}\r +`); + awsChunkedEncodingStream.push(data); + awsChunkedEncodingStream.push("\r\n"); + }); + readableStream.on("end", async () => { + awsChunkedEncodingStream.push(`0\r +`); + if (checksumRequired) { + const checksum = base64Encoder(await digest); + awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\r +`); + awsChunkedEncodingStream.push(`\r +`); + } + awsChunkedEncodingStream.push(null); + }); + return awsChunkedEncodingStream; + }; + exports.getAwsChunkedEncodingStream = getAwsChunkedEncodingStream; + } +}); + +// ../../../node_modules/@smithy/querystring-builder/dist-cjs/index.js +var require_dist_cjs32 = __commonJS({ + "../../../node_modules/@smithy/querystring-builder/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.buildQueryString = void 0; + var util_uri_escape_1 = require_dist_cjs14(); + function buildQueryString(query) { + const parts = []; + for (let key of Object.keys(query).sort()) { + const value = query[key]; + key = (0, util_uri_escape_1.escapeUri)(key); + if (Array.isArray(value)) { + for (let i = 0, iLen = value.length; i < iLen; i++) { + parts.push(`${key}=${(0, util_uri_escape_1.escapeUri)(value[i])}`); + } + } else { + let qsEntry = key; + if (value || typeof value === "string") { + qsEntry += `=${(0, util_uri_escape_1.escapeUri)(value)}`; + } + parts.push(qsEntry); + } + } + return parts.join("&"); + } + exports.buildQueryString = buildQueryString; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/constants.js +var require_constants5 = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NODEJS_TIMEOUT_ERROR_CODES = void 0; + exports.NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "EPIPE", "ETIMEDOUT"]; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/get-transformed-headers.js +var require_get_transformed_headers = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/get-transformed-headers.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getTransformedHeaders = void 0; + var getTransformedHeaders = (headers) => { + const transformedHeaders = {}; + for (const name of Object.keys(headers)) { + const headerValues = headers[name]; + transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(",") : headerValues; + } + return transformedHeaders; + }; + exports.getTransformedHeaders = getTransformedHeaders; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/set-connection-timeout.js +var require_set_connection_timeout = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/set-connection-timeout.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.setConnectionTimeout = void 0; + var setConnectionTimeout = (request2, reject, timeoutInMs = 0) => { + if (!timeoutInMs) { + return; + } + const timeoutId = setTimeout(() => { + request2.destroy(); + reject(Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), { + name: "TimeoutError" + })); + }, timeoutInMs); + request2.on("socket", (socket) => { + if (socket.connecting) { + socket.on("connect", () => { + clearTimeout(timeoutId); + }); + } else { + clearTimeout(timeoutId); + } + }); + }; + exports.setConnectionTimeout = setConnectionTimeout; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/set-socket-keep-alive.js +var require_set_socket_keep_alive = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/set-socket-keep-alive.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.setSocketKeepAlive = void 0; + var setSocketKeepAlive = (request2, { keepAlive, keepAliveMsecs }) => { + if (keepAlive !== true) { + return; + } + request2.on("socket", (socket) => { + socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + }); + }; + exports.setSocketKeepAlive = setSocketKeepAlive; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/set-socket-timeout.js +var require_set_socket_timeout = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/set-socket-timeout.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.setSocketTimeout = void 0; + var setSocketTimeout = (request2, reject, timeoutInMs = 0) => { + request2.setTimeout(timeoutInMs, () => { + request2.destroy(); + reject(Object.assign(new Error(`Connection timed out after ${timeoutInMs} ms`), { name: "TimeoutError" })); + }); + }; + exports.setSocketTimeout = setSocketTimeout; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/write-request-body.js +var require_write_request_body = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/write-request-body.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeRequestBody = void 0; + var stream_1 = require("stream"); + var MIN_WAIT_TIME = 1e3; + async function writeRequestBody(httpRequest, request2, maxContinueTimeoutMs = MIN_WAIT_TIME) { + var _a; + const headers = (_a = request2.headers) !== null && _a !== void 0 ? _a : {}; + const expect = headers["Expect"] || headers["expect"]; + let timeoutId = -1; + let hasError = false; + if (expect === "100-continue") { + await Promise.race([ + new Promise((resolve) => { + timeoutId = Number(setTimeout(resolve, Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs))); + }), + new Promise((resolve) => { + httpRequest.on("continue", () => { + clearTimeout(timeoutId); + resolve(); + }); + httpRequest.on("error", () => { + hasError = true; + clearTimeout(timeoutId); + resolve(); + }); + }) + ]); + } + if (!hasError) { + writeBody(httpRequest, request2.body); + } + } + exports.writeRequestBody = writeRequestBody; + function writeBody(httpRequest, body) { + if (body instanceof stream_1.Readable) { + body.pipe(httpRequest); + } else if (body) { + httpRequest.end(Buffer.from(body)); + } else { + httpRequest.end(); + } + } + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/node-http-handler.js +var require_node_http_handler = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/node-http-handler.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NodeHttpHandler = exports.DEFAULT_REQUEST_TIMEOUT = void 0; + var protocol_http_1 = require_dist_cjs2(); + var querystring_builder_1 = require_dist_cjs32(); + var http_1 = require("http"); + var https_1 = require("https"); + var constants_1 = require_constants5(); + var get_transformed_headers_1 = require_get_transformed_headers(); + var set_connection_timeout_1 = require_set_connection_timeout(); + var set_socket_keep_alive_1 = require_set_socket_keep_alive(); + var set_socket_timeout_1 = require_set_socket_timeout(); + var write_request_body_1 = require_write_request_body(); + exports.DEFAULT_REQUEST_TIMEOUT = 0; + var NodeHttpHandler = class { + constructor(options) { + this.metadata = { handlerProtocol: "http/1.1" }; + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options().then((_options) => { + resolve(this.resolveDefaultConfig(_options)); + }).catch(reject); + } else { + resolve(this.resolveDefaultConfig(options)); + } + }); + } + resolveDefaultConfig(options) { + const { requestTimeout, connectionTimeout, socketTimeout, httpAgent, httpsAgent } = options || {}; + const keepAlive = true; + const maxSockets = 50; + return { + connectionTimeout, + requestTimeout: requestTimeout !== null && requestTimeout !== void 0 ? requestTimeout : socketTimeout, + httpAgent: httpAgent || new http_1.Agent({ keepAlive, maxSockets }), + httpsAgent: httpsAgent || new https_1.Agent({ keepAlive, maxSockets }) + }; + } + destroy() { + var _a, _b, _c, _d; + (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.httpAgent) === null || _b === void 0 ? void 0 : _b.destroy(); + (_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.httpsAgent) === null || _d === void 0 ? void 0 : _d.destroy(); + } + async handle(request2, { abortSignal } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + return new Promise((_resolve, _reject) => { + var _a, _b; + let writeRequestBodyPromise = void 0; + const resolve = async (arg) => { + await writeRequestBodyPromise; + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + _reject(arg); + }; + if (!this.config) { + throw new Error("Node HTTP request handler config is not resolved"); + } + if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + reject(abortError); + return; + } + const isSSL = request2.protocol === "https:"; + const queryString = (0, querystring_builder_1.buildQueryString)(request2.query || {}); + let auth = void 0; + if (request2.username != null || request2.password != null) { + const username = (_a = request2.username) !== null && _a !== void 0 ? _a : ""; + const password = (_b = request2.password) !== null && _b !== void 0 ? _b : ""; + auth = `${username}:${password}`; + } + let path = request2.path; + if (queryString) { + path += `?${queryString}`; + } + if (request2.fragment) { + path += `#${request2.fragment}`; + } + const nodeHttpsOptions = { + headers: request2.headers, + host: request2.hostname, + method: request2.method, + path, + port: request2.port, + agent: isSSL ? this.config.httpsAgent : this.config.httpAgent, + auth + }; + const requestFunc = isSSL ? https_1.request : http_1.request; + const req = requestFunc(nodeHttpsOptions, (res) => { + const httpResponse = new protocol_http_1.HttpResponse({ + statusCode: res.statusCode || -1, + reason: res.statusMessage, + headers: (0, get_transformed_headers_1.getTransformedHeaders)(res.headers), + body: res + }); + resolve({ response: httpResponse }); + }); + req.on("error", (err) => { + if (constants_1.NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) { + reject(Object.assign(err, { name: "TimeoutError" })); + } else { + reject(err); + } + }); + (0, set_connection_timeout_1.setConnectionTimeout)(req, reject, this.config.connectionTimeout); + (0, set_socket_timeout_1.setSocketTimeout)(req, reject, this.config.requestTimeout); + if (abortSignal) { + abortSignal.onabort = () => { + req.abort(); + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + reject(abortError); + }; + } + const httpAgent = nodeHttpsOptions.agent; + if (typeof httpAgent === "object" && "keepAlive" in httpAgent) { + (0, set_socket_keep_alive_1.setSocketKeepAlive)(req, { + keepAlive: httpAgent.keepAlive, + keepAliveMsecs: httpAgent.keepAliveMsecs + }); + } + writeRequestBodyPromise = (0, write_request_body_1.writeRequestBody)(req, request2, this.config.requestTimeout).catch(_reject); + }); + } + }; + exports.NodeHttpHandler = NodeHttpHandler; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/node-http2-connection-pool.js +var require_node_http2_connection_pool = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/node-http2-connection-pool.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NodeHttp2ConnectionPool = void 0; + var NodeHttp2ConnectionPool = class { + constructor(sessions) { + this.sessions = []; + this.sessions = sessions !== null && sessions !== void 0 ? sessions : []; + } + poll() { + if (this.sessions.length > 0) { + return this.sessions.shift(); + } + } + offerLast(session) { + this.sessions.push(session); + } + contains(session) { + return this.sessions.includes(session); + } + remove(session) { + this.sessions = this.sessions.filter((s) => s !== session); + } + [Symbol.iterator]() { + return this.sessions[Symbol.iterator](); + } + destroy(connection) { + for (const session of this.sessions) { + if (session === connection) { + if (!session.destroyed) { + session.destroy(); + } + } + } + } + }; + exports.NodeHttp2ConnectionPool = NodeHttp2ConnectionPool; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/node-http2-connection-manager.js +var require_node_http2_connection_manager = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/node-http2-connection-manager.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NodeHttp2ConnectionManager = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var http2_1 = tslib_1.__importDefault(require("http2")); + var node_http2_connection_pool_1 = require_node_http2_connection_pool(); + var NodeHttp2ConnectionManager = class { + constructor(config) { + this.sessionCache = /* @__PURE__ */ new Map(); + this.config = config; + if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) { + throw new RangeError("maxConcurrency must be greater than zero."); + } + } + lease(requestContext, connectionConfiguration) { + const url2 = this.getUrlString(requestContext); + const existingPool = this.sessionCache.get(url2); + if (existingPool) { + const existingSession = existingPool.poll(); + if (existingSession && !this.config.disableConcurrency) { + return existingSession; + } + } + const session = http2_1.default.connect(url2); + if (this.config.maxConcurrency) { + session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => { + if (err) { + throw new Error("Fail to set maxConcurrentStreams to " + this.config.maxConcurrency + "when creating new session for " + requestContext.destination.toString()); + } + }); + } + session.unref(); + const destroySessionCb = () => { + session.destroy(); + this.deleteSession(url2, session); + }; + session.on("goaway", destroySessionCb); + session.on("error", destroySessionCb); + session.on("frameError", destroySessionCb); + session.on("close", () => this.deleteSession(url2, session)); + if (connectionConfiguration.requestTimeout) { + session.setTimeout(connectionConfiguration.requestTimeout, destroySessionCb); + } + const connectionPool = this.sessionCache.get(url2) || new node_http2_connection_pool_1.NodeHttp2ConnectionPool(); + connectionPool.offerLast(session); + this.sessionCache.set(url2, connectionPool); + return session; + } + deleteSession(authority, session) { + const existingConnectionPool = this.sessionCache.get(authority); + if (!existingConnectionPool) { + return; + } + if (!existingConnectionPool.contains(session)) { + return; + } + existingConnectionPool.remove(session); + this.sessionCache.set(authority, existingConnectionPool); + } + release(requestContext, session) { + var _a; + const cacheKey = this.getUrlString(requestContext); + (_a = this.sessionCache.get(cacheKey)) === null || _a === void 0 ? void 0 : _a.offerLast(session); + } + destroy() { + for (const [key, connectionPool] of this.sessionCache) { + for (const session of connectionPool) { + if (!session.destroyed) { + session.destroy(); + } + connectionPool.remove(session); + } + this.sessionCache.delete(key); + } + } + setMaxConcurrentStreams(maxConcurrentStreams) { + if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) { + throw new RangeError("maxConcurrentStreams must be greater than zero."); + } + this.config.maxConcurrency = maxConcurrentStreams; + } + setDisableConcurrentStreams(disableConcurrentStreams) { + this.config.disableConcurrency = disableConcurrentStreams; + } + getUrlString(request2) { + return request2.destination.toString(); + } + }; + exports.NodeHttp2ConnectionManager = NodeHttp2ConnectionManager; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/node-http2-handler.js +var require_node_http2_handler = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/node-http2-handler.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NodeHttp2Handler = void 0; + var protocol_http_1 = require_dist_cjs2(); + var querystring_builder_1 = require_dist_cjs32(); + var http2_1 = require("http2"); + var get_transformed_headers_1 = require_get_transformed_headers(); + var node_http2_connection_manager_1 = require_node_http2_connection_manager(); + var write_request_body_1 = require_write_request_body(); + var NodeHttp2Handler = class { + constructor(options) { + this.metadata = { handlerProtocol: "h2" }; + this.connectionManager = new node_http2_connection_manager_1.NodeHttp2ConnectionManager({}); + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options().then((opts) => { + resolve(opts || {}); + }).catch(reject); + } else { + resolve(options || {}); + } + }); + } + destroy() { + this.connectionManager.destroy(); + } + async handle(request2, { abortSignal } = {}) { + if (!this.config) { + this.config = await this.configProvider; + this.connectionManager.setDisableConcurrentStreams(this.config.disableConcurrentStreams || false); + if (this.config.maxConcurrentStreams) { + this.connectionManager.setMaxConcurrentStreams(this.config.maxConcurrentStreams); + } + } + const { requestTimeout, disableConcurrentStreams } = this.config; + return new Promise((_resolve, _reject) => { + var _a, _b, _c; + let fulfilled = false; + let writeRequestBodyPromise = void 0; + const resolve = async (arg) => { + await writeRequestBodyPromise; + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + _reject(arg); + }; + if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) { + fulfilled = true; + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + reject(abortError); + return; + } + const { hostname, method, port, protocol, query } = request2; + let auth = ""; + if (request2.username != null || request2.password != null) { + const username = (_a = request2.username) !== null && _a !== void 0 ? _a : ""; + const password = (_b = request2.password) !== null && _b !== void 0 ? _b : ""; + auth = `${username}:${password}@`; + } + const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : ""}`; + const requestContext = { destination: new URL(authority) }; + const session = this.connectionManager.lease(requestContext, { + requestTimeout: (_c = this.config) === null || _c === void 0 ? void 0 : _c.sessionTimeout, + disableConcurrentStreams: disableConcurrentStreams || false + }); + const rejectWithDestroy = (err) => { + if (disableConcurrentStreams) { + this.destroySession(session); + } + fulfilled = true; + reject(err); + }; + const queryString = (0, querystring_builder_1.buildQueryString)(query || {}); + let path = request2.path; + if (queryString) { + path += `?${queryString}`; + } + if (request2.fragment) { + path += `#${request2.fragment}`; + } + const req = session.request({ + ...request2.headers, + [http2_1.constants.HTTP2_HEADER_PATH]: path, + [http2_1.constants.HTTP2_HEADER_METHOD]: method + }); + session.ref(); + req.on("response", (headers) => { + const httpResponse = new protocol_http_1.HttpResponse({ + statusCode: headers[":status"] || -1, + headers: (0, get_transformed_headers_1.getTransformedHeaders)(headers), + body: req + }); + fulfilled = true; + resolve({ response: httpResponse }); + if (disableConcurrentStreams) { + session.close(); + this.connectionManager.deleteSession(authority, session); + } + }); + if (requestTimeout) { + req.setTimeout(requestTimeout, () => { + req.close(); + const timeoutError = new Error(`Stream timed out because of no activity for ${requestTimeout} ms`); + timeoutError.name = "TimeoutError"; + rejectWithDestroy(timeoutError); + }); + } + if (abortSignal) { + abortSignal.onabort = () => { + req.close(); + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + rejectWithDestroy(abortError); + }; + } + req.on("frameError", (type, code, id) => { + rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`)); + }); + req.on("error", rejectWithDestroy); + req.on("aborted", () => { + rejectWithDestroy(new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`)); + }); + req.on("close", () => { + session.unref(); + if (disableConcurrentStreams) { + session.destroy(); + } + if (!fulfilled) { + rejectWithDestroy(new Error("Unexpected error: http2 request did not get a response")); + } + }); + writeRequestBodyPromise = (0, write_request_body_1.writeRequestBody)(req, request2, requestTimeout); + }); + } + destroySession(session) { + if (!session.destroyed) { + session.destroy(); + } + } + }; + exports.NodeHttp2Handler = NodeHttp2Handler; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/stream-collector/collector.js +var require_collector = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/stream-collector/collector.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Collector = void 0; + var stream_1 = require("stream"); + var Collector = class extends stream_1.Writable { + constructor() { + super(...arguments); + this.bufferedBytes = []; + } + _write(chunk, encoding, callback) { + this.bufferedBytes.push(chunk); + callback(); + } + }; + exports.Collector = Collector; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/stream-collector/index.js +var require_stream_collector = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/stream-collector/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.streamCollector = void 0; + var collector_1 = require_collector(); + var streamCollector = (stream) => new Promise((resolve, reject) => { + const collector = new collector_1.Collector(); + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function() { + const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes)); + resolve(bytes); + }); + }); + exports.streamCollector = streamCollector; + } +}); + +// ../../../node_modules/@smithy/node-http-handler/dist-cjs/index.js +var require_dist_cjs33 = __commonJS({ + "../../../node_modules/@smithy/node-http-handler/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_node_http_handler(), exports); + tslib_1.__exportStar(require_node_http2_handler(), exports); + tslib_1.__exportStar(require_stream_collector(), exports); + } +}); + +// ../../../node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js +var require_sdk_stream_mixin = __commonJS({ + "../../../node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sdkStreamMixin = void 0; + var node_http_handler_1 = require_dist_cjs33(); + var util_buffer_from_1 = require_dist_cjs12(); + var stream_1 = require("stream"); + var util_1 = require("util"); + var ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; + var sdkStreamMixin = (stream) => { + var _a, _b; + if (!(stream instanceof stream_1.Readable)) { + const name = ((_b = (_a = stream === null || stream === void 0 ? void 0 : stream.__proto__) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name) || stream; + throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`); + } + let transformed = false; + const transformToByteArray = async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await (0, node_http_handler_1.streamCollector)(stream); + }; + return Object.assign(stream, { + transformToByteArray, + transformToString: async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === void 0 || Buffer.isEncoding(encoding)) { + return (0, util_buffer_from_1.fromArrayBuffer)(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding); + } else { + const decoder = new util_1.TextDecoder(encoding); + return decoder.decode(buf); + } + }, + transformToWebStream: () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + if (stream.readableFlowing !== null) { + throw new Error("The stream has been consumed by other callbacks."); + } + if (typeof stream_1.Readable.toWeb !== "function") { + throw new Error("Readable.toWeb() is not supported. Please make sure you are using Node.js >= 17.0.0, or polyfill is available."); + } + transformed = true; + return stream_1.Readable.toWeb(stream); + } + }); + }; + exports.sdkStreamMixin = sdkStreamMixin; + } +}); + +// ../../../node_modules/@smithy/util-stream/dist-cjs/index.js +var require_dist_cjs34 = __commonJS({ + "../../../node_modules/@smithy/util-stream/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_Uint8ArrayBlobAdapter(), exports); + tslib_1.__exportStar(require_getAwsChunkedEncodingStream(), exports); + tslib_1.__exportStar(require_sdk_stream_mixin(), exports); + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/collect-stream-body.js +var require_collect_stream_body = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/collect-stream-body.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.collectBody = void 0; + var util_stream_1 = require_dist_cjs34(); + var collectBody = async (streamBody = new Uint8Array(), context) => { + if (streamBody instanceof Uint8Array) { + return util_stream_1.Uint8ArrayBlobAdapter.mutate(streamBody); + } + if (!streamBody) { + return util_stream_1.Uint8ArrayBlobAdapter.mutate(new Uint8Array()); + } + const fromContext = context.streamCollector(streamBody); + return util_stream_1.Uint8ArrayBlobAdapter.mutate(await fromContext); + }; + exports.collectBody = collectBody; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/command.js +var require_command3 = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/command.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Command = void 0; + var middleware_stack_1 = require_dist_cjs30(); + var Command = class { + constructor() { + this.middlewareStack = (0, middleware_stack_1.constructStack)(); + } + }; + exports.Command = Command; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/constants.js +var require_constants6 = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SENSITIVE_STRING = void 0; + exports.SENSITIVE_STRING = "***SensitiveInformation***"; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/create-aggregated-client.js +var require_create_aggregated_client = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/create-aggregated-client.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createAggregatedClient = void 0; + var createAggregatedClient = (commands, Client) => { + for (const command of Object.keys(commands)) { + const CommandCtor = commands[command]; + const methodImpl = async function(args, optionsOrCb, cb) { + const command2 = new CommandCtor(args); + if (typeof optionsOrCb === "function") { + this.send(command2, optionsOrCb); + } else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") + throw new Error(`Expected http options but got ${typeof optionsOrCb}`); + this.send(command2, optionsOrCb || {}, cb); + } else { + return this.send(command2, optionsOrCb); + } + }; + const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, ""); + Client.prototype[methodName] = methodImpl; + } + }; + exports.createAggregatedClient = createAggregatedClient; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/parse-utils.js +var require_parse_utils = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/parse-utils.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.logger = exports.strictParseByte = exports.strictParseShort = exports.strictParseInt32 = exports.strictParseInt = exports.strictParseLong = exports.limitedParseFloat32 = exports.limitedParseFloat = exports.handleFloat = exports.limitedParseDouble = exports.strictParseFloat32 = exports.strictParseFloat = exports.strictParseDouble = exports.expectUnion = exports.expectString = exports.expectObject = exports.expectNonNull = exports.expectByte = exports.expectShort = exports.expectInt32 = exports.expectInt = exports.expectLong = exports.expectFloat32 = exports.expectNumber = exports.expectBoolean = exports.parseBoolean = void 0; + var parseBoolean = (value) => { + switch (value) { + case "true": + return true; + case "false": + return false; + default: + throw new Error(`Unable to parse boolean value "${value}"`); + } + }; + exports.parseBoolean = parseBoolean; + var expectBoolean = (value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value === "number") { + if (value === 0 || value === 1) { + exports.logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (value === 0) { + return false; + } + if (value === 1) { + return true; + } + } + if (typeof value === "string") { + const lower = value.toLowerCase(); + if (lower === "false" || lower === "true") { + exports.logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (lower === "false") { + return false; + } + if (lower === "true") { + return true; + } + } + if (typeof value === "boolean") { + return value; + } + throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`); + }; + exports.expectBoolean = expectBoolean; + var expectNumber = (value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value === "string") { + const parsed = parseFloat(value); + if (!Number.isNaN(parsed)) { + if (String(parsed) !== String(value)) { + exports.logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`)); + } + return parsed; + } + } + if (typeof value === "number") { + return value; + } + throw new TypeError(`Expected number, got ${typeof value}: ${value}`); + }; + exports.expectNumber = expectNumber; + var MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23)); + var expectFloat32 = (value) => { + const expected = (0, exports.expectNumber)(value); + if (expected !== void 0 && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) { + if (Math.abs(expected) > MAX_FLOAT) { + throw new TypeError(`Expected 32-bit float, got ${value}`); + } + } + return expected; + }; + exports.expectFloat32 = expectFloat32; + var expectLong = (value) => { + if (value === null || value === void 0) { + return void 0; + } + if (Number.isInteger(value) && !Number.isNaN(value)) { + return value; + } + throw new TypeError(`Expected integer, got ${typeof value}: ${value}`); + }; + exports.expectLong = expectLong; + exports.expectInt = exports.expectLong; + var expectInt32 = (value) => expectSizedInt(value, 32); + exports.expectInt32 = expectInt32; + var expectShort = (value) => expectSizedInt(value, 16); + exports.expectShort = expectShort; + var expectByte = (value) => expectSizedInt(value, 8); + exports.expectByte = expectByte; + var expectSizedInt = (value, size) => { + const expected = (0, exports.expectLong)(value); + if (expected !== void 0 && castInt(expected, size) !== expected) { + throw new TypeError(`Expected ${size}-bit integer, got ${value}`); + } + return expected; + }; + var castInt = (value, size) => { + switch (size) { + case 32: + return Int32Array.of(value)[0]; + case 16: + return Int16Array.of(value)[0]; + case 8: + return Int8Array.of(value)[0]; + } + }; + var expectNonNull = (value, location) => { + if (value === null || value === void 0) { + if (location) { + throw new TypeError(`Expected a non-null value for ${location}`); + } + throw new TypeError("Expected a non-null value"); + } + return value; + }; + exports.expectNonNull = expectNonNull; + var expectObject = (value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value === "object" && !Array.isArray(value)) { + return value; + } + const receivedType = Array.isArray(value) ? "array" : typeof value; + throw new TypeError(`Expected object, got ${receivedType}: ${value}`); + }; + exports.expectObject = expectObject; + var expectString = (value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value === "string") { + return value; + } + if (["boolean", "number", "bigint"].includes(typeof value)) { + exports.logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`)); + return String(value); + } + throw new TypeError(`Expected string, got ${typeof value}: ${value}`); + }; + exports.expectString = expectString; + var expectUnion = (value) => { + if (value === null || value === void 0) { + return void 0; + } + const asObject = (0, exports.expectObject)(value); + const setKeys = Object.entries(asObject).filter(([, v]) => v != null).map(([k]) => k); + if (setKeys.length === 0) { + throw new TypeError(`Unions must have exactly one non-null member. None were found.`); + } + if (setKeys.length > 1) { + throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`); + } + return asObject; + }; + exports.expectUnion = expectUnion; + var strictParseDouble = (value) => { + if (typeof value == "string") { + return (0, exports.expectNumber)(parseNumber(value)); + } + return (0, exports.expectNumber)(value); + }; + exports.strictParseDouble = strictParseDouble; + exports.strictParseFloat = exports.strictParseDouble; + var strictParseFloat32 = (value) => { + if (typeof value == "string") { + return (0, exports.expectFloat32)(parseNumber(value)); + } + return (0, exports.expectFloat32)(value); + }; + exports.strictParseFloat32 = strictParseFloat32; + var NUMBER_REGEX = /(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g; + var parseNumber = (value) => { + const matches = value.match(NUMBER_REGEX); + if (matches === null || matches[0].length !== value.length) { + throw new TypeError(`Expected real number, got implicit NaN`); + } + return parseFloat(value); + }; + var limitedParseDouble = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return (0, exports.expectNumber)(value); + }; + exports.limitedParseDouble = limitedParseDouble; + exports.handleFloat = exports.limitedParseDouble; + exports.limitedParseFloat = exports.limitedParseDouble; + var limitedParseFloat32 = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return (0, exports.expectFloat32)(value); + }; + exports.limitedParseFloat32 = limitedParseFloat32; + var parseFloatString = (value) => { + switch (value) { + case "NaN": + return NaN; + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + default: + throw new Error(`Unable to parse float value: ${value}`); + } + }; + var strictParseLong = (value) => { + if (typeof value === "string") { + return (0, exports.expectLong)(parseNumber(value)); + } + return (0, exports.expectLong)(value); + }; + exports.strictParseLong = strictParseLong; + exports.strictParseInt = exports.strictParseLong; + var strictParseInt32 = (value) => { + if (typeof value === "string") { + return (0, exports.expectInt32)(parseNumber(value)); + } + return (0, exports.expectInt32)(value); + }; + exports.strictParseInt32 = strictParseInt32; + var strictParseShort = (value) => { + if (typeof value === "string") { + return (0, exports.expectShort)(parseNumber(value)); + } + return (0, exports.expectShort)(value); + }; + exports.strictParseShort = strictParseShort; + var strictParseByte = (value) => { + if (typeof value === "string") { + return (0, exports.expectByte)(parseNumber(value)); + } + return (0, exports.expectByte)(value); + }; + exports.strictParseByte = strictParseByte; + var stackTraceWarning = (message) => { + return String(new TypeError(message).stack || message).split("\n").slice(0, 5).filter((s) => !s.includes("stackTraceWarning")).join("\n"); + }; + exports.logger = { + warn: console.warn + }; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/date-utils.js +var require_date_utils = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/date-utils.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseEpochTimestamp = exports.parseRfc7231DateTime = exports.parseRfc3339DateTimeWithOffset = exports.parseRfc3339DateTime = exports.dateToUtcString = void 0; + var parse_utils_1 = require_parse_utils(); + var DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + var MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + function dateToUtcString(date) { + const year = date.getUTCFullYear(); + const month = date.getUTCMonth(); + const dayOfWeek = date.getUTCDay(); + const dayOfMonthInt = date.getUTCDate(); + const hoursInt = date.getUTCHours(); + const minutesInt = date.getUTCMinutes(); + const secondsInt = date.getUTCSeconds(); + const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`; + const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`; + const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`; + const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`; + return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`; + } + exports.dateToUtcString = dateToUtcString; + var RFC3339 = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/); + var parseRfc3339DateTime = (value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match; + const year = (0, parse_utils_1.strictParseShort)(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); + }; + exports.parseRfc3339DateTime = parseRfc3339DateTime; + var RFC3339_WITH_OFFSET = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/); + var parseRfc3339DateTimeWithOffset = (value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339_WITH_OFFSET.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match; + const year = (0, parse_utils_1.strictParseShort)(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); + if (offsetStr.toUpperCase() != "Z") { + date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr)); + } + return date; + }; + exports.parseRfc3339DateTimeWithOffset = parseRfc3339DateTimeWithOffset; + var IMF_FIXDATE = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); + var RFC_850_DATE = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); + var ASC_TIME = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/); + var parseRfc7231DateTime = (value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC-7231 date-times must be expressed as strings"); + } + let match = IMF_FIXDATE.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return buildDate((0, parse_utils_1.strictParseShort)(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + match = RFC_850_DATE.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { + hours, + minutes, + seconds, + fractionalMilliseconds + })); + } + match = ASC_TIME.exec(value); + if (match) { + const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match; + return buildDate((0, parse_utils_1.strictParseShort)(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + throw new TypeError("Invalid RFC-7231 date-time value"); + }; + exports.parseRfc7231DateTime = parseRfc7231DateTime; + var parseEpochTimestamp = (value) => { + if (value === null || value === void 0) { + return void 0; + } + let valueAsDouble; + if (typeof value === "number") { + valueAsDouble = value; + } else if (typeof value === "string") { + valueAsDouble = (0, parse_utils_1.strictParseDouble)(value); + } else { + throw new TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation"); + } + if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) { + throw new TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics"); + } + return new Date(Math.round(valueAsDouble * 1e3)); + }; + exports.parseEpochTimestamp = parseEpochTimestamp; + var buildDate = (year, month, day, time) => { + const adjustedMonth = month - 1; + validateDayOfMonth(year, adjustedMonth, day); + return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, "hour", 0, 23), parseDateValue(time.minutes, "minute", 0, 59), parseDateValue(time.seconds, "seconds", 0, 60), parseMilliseconds(time.fractionalMilliseconds))); + }; + var parseTwoDigitYear = (value) => { + const thisYear = (/* @__PURE__ */ new Date()).getUTCFullYear(); + const valueInThisCentury = Math.floor(thisYear / 100) * 100 + (0, parse_utils_1.strictParseShort)(stripLeadingZeroes(value)); + if (valueInThisCentury < thisYear) { + return valueInThisCentury + 100; + } + return valueInThisCentury; + }; + var FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1e3; + var adjustRfc850Year = (input) => { + if (input.getTime() - (/* @__PURE__ */ new Date()).getTime() > FIFTY_YEARS_IN_MILLIS) { + return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds())); + } + return input; + }; + var parseMonthByShortName = (value) => { + const monthIdx = MONTHS.indexOf(value); + if (monthIdx < 0) { + throw new TypeError(`Invalid month: ${value}`); + } + return monthIdx + 1; + }; + var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + var validateDayOfMonth = (year, month, day) => { + let maxDays = DAYS_IN_MONTH[month]; + if (month === 1 && isLeapYear(year)) { + maxDays = 29; + } + if (day > maxDays) { + throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`); + } + }; + var isLeapYear = (year) => { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + }; + var parseDateValue = (value, type, lower, upper) => { + const dateVal = (0, parse_utils_1.strictParseByte)(stripLeadingZeroes(value)); + if (dateVal < lower || dateVal > upper) { + throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`); + } + return dateVal; + }; + var parseMilliseconds = (value) => { + if (value === null || value === void 0) { + return 0; + } + return (0, parse_utils_1.strictParseFloat32)("0." + value) * 1e3; + }; + var parseOffsetToMilliseconds = (value) => { + const directionStr = value[0]; + let direction = 1; + if (directionStr == "+") { + direction = 1; + } else if (directionStr == "-") { + direction = -1; + } else { + throw new TypeError(`Offset direction, ${directionStr}, must be "+" or "-"`); + } + const hour = Number(value.substring(1, 3)); + const minute = Number(value.substring(4, 6)); + return direction * (hour * 60 + minute) * 60 * 1e3; + }; + var stripLeadingZeroes = (value) => { + let idx = 0; + while (idx < value.length - 1 && value.charAt(idx) === "0") { + idx++; + } + if (idx === 0) { + return value; + } + return value.slice(idx); + }; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/exceptions.js +var require_exceptions = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/exceptions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.decorateServiceException = exports.ServiceException = void 0; + var ServiceException = class _ServiceException extends Error { + constructor(options) { + super(options.message); + Object.setPrototypeOf(this, _ServiceException.prototype); + this.name = options.name; + this.$fault = options.$fault; + this.$metadata = options.$metadata; + } + }; + exports.ServiceException = ServiceException; + var decorateServiceException = (exception, additions = {}) => { + Object.entries(additions).filter(([, v]) => v !== void 0).forEach(([k, v]) => { + if (exception[k] == void 0 || exception[k] === "") { + exception[k] = v; + } + }); + const message = exception.message || exception.Message || "UnknownError"; + exception.message = message; + delete exception.Message; + return exception; + }; + exports.decorateServiceException = decorateServiceException; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/default-error-handler.js +var require_default_error_handler = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/default-error-handler.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.withBaseException = exports.throwDefaultError = void 0; + var exceptions_1 = require_exceptions(); + var throwDefaultError = ({ output, parsedBody, exceptionCtor, errorCode }) => { + const $metadata = deserializeMetadata(output); + const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + "" : void 0; + const response = new exceptionCtor({ + name: (parsedBody === null || parsedBody === void 0 ? void 0 : parsedBody.code) || (parsedBody === null || parsedBody === void 0 ? void 0 : parsedBody.Code) || errorCode || statusCode || "UnknownError", + $fault: "client", + $metadata + }); + throw (0, exceptions_1.decorateServiceException)(response, parsedBody); + }; + exports.throwDefaultError = throwDefaultError; + var withBaseException = (ExceptionCtor) => { + return ({ output, parsedBody, errorCode }) => { + (0, exports.throwDefaultError)({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode }); + }; + }; + exports.withBaseException = withBaseException; + var deserializeMetadata = (output) => { + var _a, _b; + return { + httpStatusCode: output.statusCode, + requestId: (_b = (_a = output.headers["x-amzn-requestid"]) !== null && _a !== void 0 ? _a : output.headers["x-amzn-request-id"]) !== null && _b !== void 0 ? _b : output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"] + }; + }; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/defaults-mode.js +var require_defaults_mode = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/defaults-mode.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.loadConfigsForDefaultMode = void 0; + var loadConfigsForDefaultMode = (mode) => { + switch (mode) { + case "standard": + return { + retryMode: "standard", + connectionTimeout: 3100 + }; + case "in-region": + return { + retryMode: "standard", + connectionTimeout: 1100 + }; + case "cross-region": + return { + retryMode: "standard", + connectionTimeout: 3100 + }; + case "mobile": + return { + retryMode: "standard", + connectionTimeout: 3e4 + }; + default: + return {}; + } + }; + exports.loadConfigsForDefaultMode = loadConfigsForDefaultMode; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/emitWarningIfUnsupportedVersion.js +var require_emitWarningIfUnsupportedVersion = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/emitWarningIfUnsupportedVersion.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.emitWarningIfUnsupportedVersion = void 0; + var warningEmitted = false; + var emitWarningIfUnsupportedVersion = (version2) => { + if (version2 && !warningEmitted && parseInt(version2.substring(1, version2.indexOf("."))) < 14) { + warningEmitted = true; + } + }; + exports.emitWarningIfUnsupportedVersion = emitWarningIfUnsupportedVersion; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/extended-encode-uri-component.js +var require_extended_encode_uri_component = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/extended-encode-uri-component.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.extendedEncodeURIComponent = void 0; + function extendedEncodeURIComponent(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); + } + exports.extendedEncodeURIComponent = extendedEncodeURIComponent; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/get-array-if-single-item.js +var require_get_array_if_single_item = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/get-array-if-single-item.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getArrayIfSingleItem = void 0; + var getArrayIfSingleItem = (mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray]; + exports.getArrayIfSingleItem = getArrayIfSingleItem; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/get-value-from-text-node.js +var require_get_value_from_text_node = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/get-value-from-text-node.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getValueFromTextNode = void 0; + var getValueFromTextNode = (obj) => { + const textNodeName = "#text"; + for (const key in obj) { + if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== void 0) { + obj[key] = obj[key][textNodeName]; + } else if (typeof obj[key] === "object" && obj[key] !== null) { + obj[key] = (0, exports.getValueFromTextNode)(obj[key]); + } + } + return obj; + }; + exports.getValueFromTextNode = getValueFromTextNode; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/lazy-json.js +var require_lazy_json = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/lazy-json.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.LazyJsonString = exports.StringWrapper = void 0; + var StringWrapper = function() { + const Class = Object.getPrototypeOf(this).constructor; + const Constructor = Function.bind.apply(String, [null, ...arguments]); + const instance = new Constructor(); + Object.setPrototypeOf(instance, Class.prototype); + return instance; + }; + exports.StringWrapper = StringWrapper; + exports.StringWrapper.prototype = Object.create(String.prototype, { + constructor: { + value: exports.StringWrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + Object.setPrototypeOf(exports.StringWrapper, String); + var LazyJsonString = class _LazyJsonString extends exports.StringWrapper { + deserializeJSON() { + return JSON.parse(super.toString()); + } + toJSON() { + return super.toString(); + } + static fromObject(object) { + if (object instanceof _LazyJsonString) { + return object; + } else if (object instanceof String || typeof object === "string") { + return new _LazyJsonString(object); + } + return new _LazyJsonString(JSON.stringify(object)); + } + }; + exports.LazyJsonString = LazyJsonString; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/object-mapping.js +var require_object_mapping = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/object-mapping.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.take = exports.convertMap = exports.map = void 0; + function map(arg0, arg1, arg2) { + let target; + let filter; + let instructions; + if (typeof arg1 === "undefined" && typeof arg2 === "undefined") { + target = {}; + instructions = arg0; + } else { + target = arg0; + if (typeof arg1 === "function") { + filter = arg1; + instructions = arg2; + return mapWithFilter(target, filter, instructions); + } else { + instructions = arg1; + } + } + for (const key of Object.keys(instructions)) { + if (!Array.isArray(instructions[key])) { + target[key] = instructions[key]; + continue; + } + applyInstruction(target, null, instructions, key); + } + return target; + } + exports.map = map; + var convertMap = (target) => { + const output = {}; + for (const [k, v] of Object.entries(target || {})) { + output[k] = [, v]; + } + return output; + }; + exports.convertMap = convertMap; + var take = (source, instructions) => { + const out = {}; + for (const key in instructions) { + applyInstruction(out, source, instructions, key); + } + return out; + }; + exports.take = take; + var mapWithFilter = (target, filter, instructions) => { + return map(target, Object.entries(instructions).reduce((_instructions, [key, value]) => { + if (Array.isArray(value)) { + _instructions[key] = value; + } else { + if (typeof value === "function") { + _instructions[key] = [filter, value()]; + } else { + _instructions[key] = [filter, value]; + } + } + return _instructions; + }, {})); + }; + var applyInstruction = (target, source, instructions, targetKey) => { + if (source !== null) { + let instruction = instructions[targetKey]; + if (typeof instruction === "function") { + instruction = [, instruction]; + } + const [filter2 = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction; + if (typeof filter2 === "function" && filter2(source[sourceKey]) || typeof filter2 !== "function" && !!filter2) { + target[targetKey] = valueFn(source[sourceKey]); + } + return; + } + let [filter, value] = instructions[targetKey]; + if (typeof value === "function") { + let _value; + const defaultFilterPassed = filter === void 0 && (_value = value()) != null; + const customFilterPassed = typeof filter === "function" && !!filter(void 0) || typeof filter !== "function" && !!filter; + if (defaultFilterPassed) { + target[targetKey] = _value; + } else if (customFilterPassed) { + target[targetKey] = value(); + } + } else { + const defaultFilterPassed = filter === void 0 && value != null; + const customFilterPassed = typeof filter === "function" && !!filter(value) || typeof filter !== "function" && !!filter; + if (defaultFilterPassed || customFilterPassed) { + target[targetKey] = value; + } + } + }; + var nonNullish = (_) => _ != null; + var pass = (_) => _; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/resolve-path.js +var require_resolve_path = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/resolve-path.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolvedPath = void 0; + var extended_encode_uri_component_1 = require_extended_encode_uri_component(); + var resolvedPath = (resolvedPath2, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => { + if (input != null && input[memberName] !== void 0) { + const labelValue = labelValueProvider(); + if (labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: " + memberName + "."); + } + resolvedPath2 = resolvedPath2.replace(uriLabel, isGreedyLabel ? labelValue.split("/").map((segment) => (0, extended_encode_uri_component_1.extendedEncodeURIComponent)(segment)).join("/") : (0, extended_encode_uri_component_1.extendedEncodeURIComponent)(labelValue)); + } else { + throw new Error("No value provided for input HTTP label: " + memberName + "."); + } + return resolvedPath2; + }; + exports.resolvedPath = resolvedPath; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/ser-utils.js +var require_ser_utils = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/ser-utils.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.serializeFloat = void 0; + var serializeFloat = (value) => { + if (value !== value) { + return "NaN"; + } + switch (value) { + case Infinity: + return "Infinity"; + case -Infinity: + return "-Infinity"; + default: + return value; + } + }; + exports.serializeFloat = serializeFloat; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/serde-json.js +var require_serde_json = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/serde-json.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports._json = void 0; + var _json = (obj) => { + if (obj == null) { + return {}; + } + if (Array.isArray(obj)) { + return obj.filter((_) => _ != null); + } + if (typeof obj === "object") { + const target = {}; + for (const key of Object.keys(obj)) { + if (obj[key] == null) { + continue; + } + target[key] = (0, exports._json)(obj[key]); + } + return target; + } + return obj; + }; + exports._json = _json; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/split-every.js +var require_split_every = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/split-every.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.splitEvery = void 0; + function splitEvery(value, delimiter, numDelimiters) { + if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) { + throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery."); + } + const segments = value.split(delimiter); + if (numDelimiters === 1) { + return segments; + } + const compoundSegments = []; + let currentSegment = ""; + for (let i = 0; i < segments.length; i++) { + if (currentSegment === "") { + currentSegment = segments[i]; + } else { + currentSegment += delimiter + segments[i]; + } + if ((i + 1) % numDelimiters === 0) { + compoundSegments.push(currentSegment); + currentSegment = ""; + } + } + if (currentSegment !== "") { + compoundSegments.push(currentSegment); + } + return compoundSegments; + } + exports.splitEvery = splitEvery; + } +}); + +// ../../../node_modules/@smithy/smithy-client/dist-cjs/index.js +var require_dist_cjs35 = __commonJS({ + "../../../node_modules/@smithy/smithy-client/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_NoOpLogger(), exports); + tslib_1.__exportStar(require_client3(), exports); + tslib_1.__exportStar(require_collect_stream_body(), exports); + tslib_1.__exportStar(require_command3(), exports); + tslib_1.__exportStar(require_constants6(), exports); + tslib_1.__exportStar(require_create_aggregated_client(), exports); + tslib_1.__exportStar(require_date_utils(), exports); + tslib_1.__exportStar(require_default_error_handler(), exports); + tslib_1.__exportStar(require_defaults_mode(), exports); + tslib_1.__exportStar(require_emitWarningIfUnsupportedVersion(), exports); + tslib_1.__exportStar(require_exceptions(), exports); + tslib_1.__exportStar(require_extended_encode_uri_component(), exports); + tslib_1.__exportStar(require_get_array_if_single_item(), exports); + tslib_1.__exportStar(require_get_value_from_text_node(), exports); + tslib_1.__exportStar(require_lazy_json(), exports); + tslib_1.__exportStar(require_object_mapping(), exports); + tslib_1.__exportStar(require_parse_utils(), exports); + tslib_1.__exportStar(require_resolve_path(), exports); + tslib_1.__exportStar(require_ser_utils(), exports); + tslib_1.__exportStar(require_serde_json(), exports); + tslib_1.__exportStar(require_split_every(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/endpoint/EndpointParameters.js +var require_EndpointParameters = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/endpoint/EndpointParameters.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveClientEndpointParameters = void 0; + var resolveClientEndpointParameters = (options) => { + return { + ...options, + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "states" + }; + }; + exports.resolveClientEndpointParameters = resolveClientEndpointParameters; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/package.json +var require_package = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/package.json"(exports, module2) { + module2.exports = { + name: "@aws-sdk/client-sfn", + description: "AWS SDK for JavaScript Sfn Client for Node.js, Browser and React Native", + version: "3.388.0", + scripts: { + build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", + "build:cjs": "tsc -p tsconfig.cjs.json", + "build:docs": "typedoc", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "lerna run --scope $npm_package_name --include-dependencies build", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + clean: "rimraf ./dist-* && rimraf *.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "generate:client": "node ../../scripts/generate-clients/single-service --solo sfn" + }, + main: "./dist-cjs/index.js", + types: "./dist-types/index.d.ts", + module: "./dist-es/index.js", + sideEffects: false, + dependencies: { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.388.0", + "@aws-sdk/credential-provider-node": "3.388.0", + "@aws-sdk/middleware-host-header": "3.387.0", + "@aws-sdk/middleware-logger": "3.387.0", + "@aws-sdk/middleware-recursion-detection": "3.387.0", + "@aws-sdk/middleware-signing": "3.387.0", + "@aws-sdk/middleware-user-agent": "3.387.0", + "@aws-sdk/types": "3.387.0", + "@aws-sdk/util-endpoints": "3.387.0", + "@aws-sdk/util-user-agent-browser": "3.387.0", + "@aws-sdk/util-user-agent-node": "3.387.0", + "@smithy/config-resolver": "^2.0.2", + "@smithy/fetch-http-handler": "^2.0.2", + "@smithy/hash-node": "^2.0.2", + "@smithy/invalid-dependency": "^2.0.2", + "@smithy/middleware-content-length": "^2.0.2", + "@smithy/middleware-endpoint": "^2.0.2", + "@smithy/middleware-retry": "^2.0.2", + "@smithy/middleware-serde": "^2.0.2", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.2", + "@smithy/node-http-handler": "^2.0.2", + "@smithy/protocol-http": "^2.0.2", + "@smithy/smithy-client": "^2.0.2", + "@smithy/types": "^2.1.0", + "@smithy/url-parser": "^2.0.2", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.0.0", + "@smithy/util-defaults-mode-browser": "^2.0.2", + "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + tslib: "^2.5.0" + }, + devDependencies: { + "@smithy/service-client-documentation-generator": "^2.0.0", + "@tsconfig/node14": "1.0.3", + "@types/node": "^14.14.31", + concurrently: "7.0.0", + "downlevel-dts": "0.10.1", + rimraf: "3.0.2", + typedoc: "0.23.23", + typescript: "~4.9.5" + }, + engines: { + node: ">=14.0.0" + }, + typesVersions: { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + files: [ + "dist-*/**" + ], + author: { + name: "AWS SDK for JavaScript Team", + url: "https://aws.amazon.com/javascript/" + }, + license: "Apache-2.0", + browser: { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.browser" + }, + "react-native": { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.native" + }, + homepage: "https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sfn", + repository: { + type: "git", + url: "https://github.com/aws/aws-sdk-js-v3.git", + directory: "clients/client-sfn" + } + }; + } +}); + +// ../../../node_modules/@aws-sdk/middleware-sdk-sts/dist-cjs/index.js +var require_dist_cjs36 = __commonJS({ + "../../../node_modules/@aws-sdk/middleware-sdk-sts/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveStsAuthConfig = void 0; + var middleware_signing_1 = require_dist_cjs16(); + var resolveStsAuthConfig = (input, { stsClientCtor }) => (0, middleware_signing_1.resolveAwsAuthConfig)({ + ...input, + stsClientCtor + }); + exports.resolveStsAuthConfig = resolveStsAuthConfig; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/EndpointParameters.js +var require_EndpointParameters2 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/EndpointParameters.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveClientEndpointParameters = void 0; + var resolveClientEndpointParameters = (options) => { + return { + ...options, + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + useGlobalEndpoint: options.useGlobalEndpoint ?? false, + defaultSigningName: "sts" + }; + }; + exports.resolveClientEndpointParameters = resolveClientEndpointParameters; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/package.json +var require_package2 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/package.json"(exports, module2) { + module2.exports = { + name: "@aws-sdk/client-sts", + description: "AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native", + version: "3.388.0", + scripts: { + build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", + "build:cjs": "tsc -p tsconfig.cjs.json", + "build:docs": "typedoc", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "lerna run --scope $npm_package_name --include-dependencies build", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + clean: "rimraf ./dist-* && rimraf *.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "generate:client": "node ../../scripts/generate-clients/single-service --solo sts", + test: "yarn test:unit", + "test:unit": "jest" + }, + main: "./dist-cjs/index.js", + types: "./dist-types/index.d.ts", + module: "./dist-es/index.js", + sideEffects: false, + dependencies: { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/credential-provider-node": "3.388.0", + "@aws-sdk/middleware-host-header": "3.387.0", + "@aws-sdk/middleware-logger": "3.387.0", + "@aws-sdk/middleware-recursion-detection": "3.387.0", + "@aws-sdk/middleware-sdk-sts": "3.387.0", + "@aws-sdk/middleware-signing": "3.387.0", + "@aws-sdk/middleware-user-agent": "3.387.0", + "@aws-sdk/types": "3.387.0", + "@aws-sdk/util-endpoints": "3.387.0", + "@aws-sdk/util-user-agent-browser": "3.387.0", + "@aws-sdk/util-user-agent-node": "3.387.0", + "@smithy/config-resolver": "^2.0.2", + "@smithy/fetch-http-handler": "^2.0.2", + "@smithy/hash-node": "^2.0.2", + "@smithy/invalid-dependency": "^2.0.2", + "@smithy/middleware-content-length": "^2.0.2", + "@smithy/middleware-endpoint": "^2.0.2", + "@smithy/middleware-retry": "^2.0.2", + "@smithy/middleware-serde": "^2.0.2", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.2", + "@smithy/node-http-handler": "^2.0.2", + "@smithy/protocol-http": "^2.0.2", + "@smithy/smithy-client": "^2.0.2", + "@smithy/types": "^2.1.0", + "@smithy/url-parser": "^2.0.2", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.0.0", + "@smithy/util-defaults-mode-browser": "^2.0.2", + "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "fast-xml-parser": "4.2.5", + tslib: "^2.5.0" + }, + devDependencies: { + "@smithy/service-client-documentation-generator": "^2.0.0", + "@tsconfig/node14": "1.0.3", + "@types/node": "^14.14.31", + concurrently: "7.0.0", + "downlevel-dts": "0.10.1", + rimraf: "3.0.2", + typedoc: "0.23.23", + typescript: "~4.9.5" + }, + engines: { + node: ">=14.0.0" + }, + typesVersions: { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + files: [ + "dist-*/**" + ], + author: { + name: "AWS SDK for JavaScript Team", + url: "https://aws.amazon.com/javascript/" + }, + license: "Apache-2.0", + browser: { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.browser" + }, + "react-native": { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.native" + }, + homepage: "https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sts", + repository: { + type: "git", + url: "https://github.com/aws/aws-sdk-js-v3.git", + directory: "clients/client-sts" + } + }; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/models/STSServiceException.js +var require_STSServiceException = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/models/STSServiceException.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.STSServiceException = exports.__ServiceException = void 0; + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function() { + return smithy_client_1.ServiceException; + } }); + var STSServiceException = class _STSServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, _STSServiceException.prototype); + } + }; + exports.STSServiceException = STSServiceException; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/models/models_0.js +var require_models_0 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/models/models_0.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GetSessionTokenResponseFilterSensitiveLog = exports.GetFederationTokenResponseFilterSensitiveLog = exports.AssumeRoleWithWebIdentityResponseFilterSensitiveLog = exports.AssumeRoleWithWebIdentityRequestFilterSensitiveLog = exports.AssumeRoleWithSAMLResponseFilterSensitiveLog = exports.AssumeRoleWithSAMLRequestFilterSensitiveLog = exports.AssumeRoleResponseFilterSensitiveLog = exports.CredentialsFilterSensitiveLog = exports.InvalidAuthorizationMessageException = exports.IDPCommunicationErrorException = exports.InvalidIdentityTokenException = exports.IDPRejectedClaimException = exports.RegionDisabledException = exports.PackedPolicyTooLargeException = exports.MalformedPolicyDocumentException = exports.ExpiredTokenException = void 0; + var smithy_client_1 = require_dist_cjs35(); + var STSServiceException_1 = require_STSServiceException(); + var ExpiredTokenException = class _ExpiredTokenException extends STSServiceException_1.STSServiceException { + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts + }); + this.name = "ExpiredTokenException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ExpiredTokenException.prototype); + } + }; + exports.ExpiredTokenException = ExpiredTokenException; + var MalformedPolicyDocumentException = class _MalformedPolicyDocumentException extends STSServiceException_1.STSServiceException { + constructor(opts) { + super({ + name: "MalformedPolicyDocumentException", + $fault: "client", + ...opts + }); + this.name = "MalformedPolicyDocumentException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _MalformedPolicyDocumentException.prototype); + } + }; + exports.MalformedPolicyDocumentException = MalformedPolicyDocumentException; + var PackedPolicyTooLargeException = class _PackedPolicyTooLargeException extends STSServiceException_1.STSServiceException { + constructor(opts) { + super({ + name: "PackedPolicyTooLargeException", + $fault: "client", + ...opts + }); + this.name = "PackedPolicyTooLargeException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _PackedPolicyTooLargeException.prototype); + } + }; + exports.PackedPolicyTooLargeException = PackedPolicyTooLargeException; + var RegionDisabledException = class _RegionDisabledException extends STSServiceException_1.STSServiceException { + constructor(opts) { + super({ + name: "RegionDisabledException", + $fault: "client", + ...opts + }); + this.name = "RegionDisabledException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _RegionDisabledException.prototype); + } + }; + exports.RegionDisabledException = RegionDisabledException; + var IDPRejectedClaimException = class _IDPRejectedClaimException extends STSServiceException_1.STSServiceException { + constructor(opts) { + super({ + name: "IDPRejectedClaimException", + $fault: "client", + ...opts + }); + this.name = "IDPRejectedClaimException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _IDPRejectedClaimException.prototype); + } + }; + exports.IDPRejectedClaimException = IDPRejectedClaimException; + var InvalidIdentityTokenException = class _InvalidIdentityTokenException extends STSServiceException_1.STSServiceException { + constructor(opts) { + super({ + name: "InvalidIdentityTokenException", + $fault: "client", + ...opts + }); + this.name = "InvalidIdentityTokenException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidIdentityTokenException.prototype); + } + }; + exports.InvalidIdentityTokenException = InvalidIdentityTokenException; + var IDPCommunicationErrorException = class _IDPCommunicationErrorException extends STSServiceException_1.STSServiceException { + constructor(opts) { + super({ + name: "IDPCommunicationErrorException", + $fault: "client", + ...opts + }); + this.name = "IDPCommunicationErrorException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _IDPCommunicationErrorException.prototype); + } + }; + exports.IDPCommunicationErrorException = IDPCommunicationErrorException; + var InvalidAuthorizationMessageException = class _InvalidAuthorizationMessageException extends STSServiceException_1.STSServiceException { + constructor(opts) { + super({ + name: "InvalidAuthorizationMessageException", + $fault: "client", + ...opts + }); + this.name = "InvalidAuthorizationMessageException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidAuthorizationMessageException.prototype); + } + }; + exports.InvalidAuthorizationMessageException = InvalidAuthorizationMessageException; + var CredentialsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.SecretAccessKey && { SecretAccessKey: smithy_client_1.SENSITIVE_STRING } + }); + exports.CredentialsFilterSensitiveLog = CredentialsFilterSensitiveLog; + var AssumeRoleResponseFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.Credentials && { Credentials: (0, exports.CredentialsFilterSensitiveLog)(obj.Credentials) } + }); + exports.AssumeRoleResponseFilterSensitiveLog = AssumeRoleResponseFilterSensitiveLog; + var AssumeRoleWithSAMLRequestFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.SAMLAssertion && { SAMLAssertion: smithy_client_1.SENSITIVE_STRING } + }); + exports.AssumeRoleWithSAMLRequestFilterSensitiveLog = AssumeRoleWithSAMLRequestFilterSensitiveLog; + var AssumeRoleWithSAMLResponseFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.Credentials && { Credentials: (0, exports.CredentialsFilterSensitiveLog)(obj.Credentials) } + }); + exports.AssumeRoleWithSAMLResponseFilterSensitiveLog = AssumeRoleWithSAMLResponseFilterSensitiveLog; + var AssumeRoleWithWebIdentityRequestFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.WebIdentityToken && { WebIdentityToken: smithy_client_1.SENSITIVE_STRING } + }); + exports.AssumeRoleWithWebIdentityRequestFilterSensitiveLog = AssumeRoleWithWebIdentityRequestFilterSensitiveLog; + var AssumeRoleWithWebIdentityResponseFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.Credentials && { Credentials: (0, exports.CredentialsFilterSensitiveLog)(obj.Credentials) } + }); + exports.AssumeRoleWithWebIdentityResponseFilterSensitiveLog = AssumeRoleWithWebIdentityResponseFilterSensitiveLog; + var GetFederationTokenResponseFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.Credentials && { Credentials: (0, exports.CredentialsFilterSensitiveLog)(obj.Credentials) } + }); + exports.GetFederationTokenResponseFilterSensitiveLog = GetFederationTokenResponseFilterSensitiveLog; + var GetSessionTokenResponseFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.Credentials && { Credentials: (0, exports.CredentialsFilterSensitiveLog)(obj.Credentials) } + }); + exports.GetSessionTokenResponseFilterSensitiveLog = GetSessionTokenResponseFilterSensitiveLog; + } +}); + +// ../../../node_modules/fast-xml-parser/src/util.js +var require_util4 = __commonJS({ + "../../../node_modules/fast-xml-parser/src/util.js"(exports) { + "use strict"; + var nameStartChar = ":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"; + var nameChar = nameStartChar + "\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; + var nameRegexp = "[" + nameStartChar + "][" + nameChar + "]*"; + var regexName = new RegExp("^" + nameRegexp + "$"); + var getAllMatches = function(string, regex) { + const matches = []; + let match = regex.exec(string); + while (match) { + const allmatches = []; + allmatches.startIndex = regex.lastIndex - match[0].length; + const len = match.length; + for (let index = 0; index < len; index++) { + allmatches.push(match[index]); + } + matches.push(allmatches); + match = regex.exec(string); + } + return matches; + }; + var isName = function(string) { + const match = regexName.exec(string); + return !(match === null || typeof match === "undefined"); + }; + exports.isExist = function(v) { + return typeof v !== "undefined"; + }; + exports.isEmptyObject = function(obj) { + return Object.keys(obj).length === 0; + }; + exports.merge = function(target, a, arrayMode) { + if (a) { + const keys = Object.keys(a); + const len = keys.length; + for (let i = 0; i < len; i++) { + if (arrayMode === "strict") { + target[keys[i]] = [a[keys[i]]]; + } else { + target[keys[i]] = a[keys[i]]; + } + } + } + }; + exports.getValue = function(v) { + if (exports.isExist(v)) { + return v; + } else { + return ""; + } + }; + exports.isName = isName; + exports.getAllMatches = getAllMatches; + exports.nameRegexp = nameRegexp; + } +}); + +// ../../../node_modules/fast-xml-parser/src/validator.js +var require_validator = __commonJS({ + "../../../node_modules/fast-xml-parser/src/validator.js"(exports) { + "use strict"; + var util = require_util4(); + var defaultOptions = { + allowBooleanAttributes: false, + //A tag can have attributes without any value + unpairedTags: [] + }; + exports.validate = function(xmlData, options) { + options = Object.assign({}, defaultOptions, options); + const tags = []; + let tagFound = false; + let reachedRoot = false; + if (xmlData[0] === "\uFEFF") { + xmlData = xmlData.substr(1); + } + for (let i = 0; i < xmlData.length; i++) { + if (xmlData[i] === "<" && xmlData[i + 1] === "?") { + i += 2; + i = readPI(xmlData, i); + if (i.err) + return i; + } else if (xmlData[i] === "<") { + let tagStartPos = i; + i++; + if (xmlData[i] === "!") { + i = readCommentAndCDATA(xmlData, i); + continue; + } else { + let closingTag = false; + if (xmlData[i] === "/") { + closingTag = true; + i++; + } + let tagName = ""; + for (; i < xmlData.length && xmlData[i] !== ">" && xmlData[i] !== " " && xmlData[i] !== " " && xmlData[i] !== "\n" && xmlData[i] !== "\r"; i++) { + tagName += xmlData[i]; + } + tagName = tagName.trim(); + if (tagName[tagName.length - 1] === "/") { + tagName = tagName.substring(0, tagName.length - 1); + i--; + } + if (!validateTagName(tagName)) { + let msg; + if (tagName.trim().length === 0) { + msg = "Invalid space after '<'."; + } else { + msg = "Tag '" + tagName + "' is an invalid name."; + } + return getErrorObject("InvalidTag", msg, getLineNumberForPosition(xmlData, i)); + } + const result = readAttributeStr(xmlData, i); + if (result === false) { + return getErrorObject("InvalidAttr", "Attributes for '" + tagName + "' have open quote.", getLineNumberForPosition(xmlData, i)); + } + let attrStr = result.value; + i = result.index; + if (attrStr[attrStr.length - 1] === "/") { + const attrStrStart = i - attrStr.length; + attrStr = attrStr.substring(0, attrStr.length - 1); + const isValid = validateAttributeString(attrStr, options); + if (isValid === true) { + tagFound = true; + } else { + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line)); + } + } else if (closingTag) { + if (!result.tagClosed) { + return getErrorObject("InvalidTag", "Closing tag '" + tagName + "' doesn't have proper closing.", getLineNumberForPosition(xmlData, i)); + } else if (attrStr.trim().length > 0) { + return getErrorObject("InvalidTag", "Closing tag '" + tagName + "' can't have attributes or invalid starting.", getLineNumberForPosition(xmlData, tagStartPos)); + } else { + const otg = tags.pop(); + if (tagName !== otg.tagName) { + let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos); + return getErrorObject( + "InvalidTag", + "Expected closing tag '" + otg.tagName + "' (opened in line " + openPos.line + ", col " + openPos.col + ") instead of closing tag '" + tagName + "'.", + getLineNumberForPosition(xmlData, tagStartPos) + ); + } + if (tags.length == 0) { + reachedRoot = true; + } + } + } else { + const isValid = validateAttributeString(attrStr, options); + if (isValid !== true) { + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line)); + } + if (reachedRoot === true) { + return getErrorObject("InvalidXml", "Multiple possible root nodes found.", getLineNumberForPosition(xmlData, i)); + } else if (options.unpairedTags.indexOf(tagName) !== -1) { + } else { + tags.push({ tagName, tagStartPos }); + } + tagFound = true; + } + for (i++; i < xmlData.length; i++) { + if (xmlData[i] === "<") { + if (xmlData[i + 1] === "!") { + i++; + i = readCommentAndCDATA(xmlData, i); + continue; + } else if (xmlData[i + 1] === "?") { + i = readPI(xmlData, ++i); + if (i.err) + return i; + } else { + break; + } + } else if (xmlData[i] === "&") { + const afterAmp = validateAmpersand(xmlData, i); + if (afterAmp == -1) + return getErrorObject("InvalidChar", "char '&' is not expected.", getLineNumberForPosition(xmlData, i)); + i = afterAmp; + } else { + if (reachedRoot === true && !isWhiteSpace(xmlData[i])) { + return getErrorObject("InvalidXml", "Extra text at the end", getLineNumberForPosition(xmlData, i)); + } + } + } + if (xmlData[i] === "<") { + i--; + } + } + } else { + if (isWhiteSpace(xmlData[i])) { + continue; + } + return getErrorObject("InvalidChar", "char '" + xmlData[i] + "' is not expected.", getLineNumberForPosition(xmlData, i)); + } + } + if (!tagFound) { + return getErrorObject("InvalidXml", "Start tag expected.", 1); + } else if (tags.length == 1) { + return getErrorObject("InvalidTag", "Unclosed tag '" + tags[0].tagName + "'.", getLineNumberForPosition(xmlData, tags[0].tagStartPos)); + } else if (tags.length > 0) { + return getErrorObject("InvalidXml", "Invalid '" + JSON.stringify(tags.map((t) => t.tagName), null, 4).replace(/\r?\n/g, "") + "' found.", { line: 1, col: 1 }); + } + return true; + }; + function isWhiteSpace(char) { + return char === " " || char === " " || char === "\n" || char === "\r"; + } + function readPI(xmlData, i) { + const start = i; + for (; i < xmlData.length; i++) { + if (xmlData[i] == "?" || xmlData[i] == " ") { + const tagname = xmlData.substr(start, i - start); + if (i > 5 && tagname === "xml") { + return getErrorObject("InvalidXml", "XML declaration allowed only at the start of the document.", getLineNumberForPosition(xmlData, i)); + } else if (xmlData[i] == "?" && xmlData[i + 1] == ">") { + i++; + break; + } else { + continue; + } + } + } + return i; + } + function readCommentAndCDATA(xmlData, i) { + if (xmlData.length > i + 5 && xmlData[i + 1] === "-" && xmlData[i + 2] === "-") { + for (i += 3; i < xmlData.length; i++) { + if (xmlData[i] === "-" && xmlData[i + 1] === "-" && xmlData[i + 2] === ">") { + i += 2; + break; + } + } + } else if (xmlData.length > i + 8 && xmlData[i + 1] === "D" && xmlData[i + 2] === "O" && xmlData[i + 3] === "C" && xmlData[i + 4] === "T" && xmlData[i + 5] === "Y" && xmlData[i + 6] === "P" && xmlData[i + 7] === "E") { + let angleBracketsCount = 1; + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === "<") { + angleBracketsCount++; + } else if (xmlData[i] === ">") { + angleBracketsCount--; + if (angleBracketsCount === 0) { + break; + } + } + } + } else if (xmlData.length > i + 9 && xmlData[i + 1] === "[" && xmlData[i + 2] === "C" && xmlData[i + 3] === "D" && xmlData[i + 4] === "A" && xmlData[i + 5] === "T" && xmlData[i + 6] === "A" && xmlData[i + 7] === "[") { + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === "]" && xmlData[i + 1] === "]" && xmlData[i + 2] === ">") { + i += 2; + break; + } + } + } + return i; + } + var doubleQuote = '"'; + var singleQuote = "'"; + function readAttributeStr(xmlData, i) { + let attrStr = ""; + let startChar = ""; + let tagClosed = false; + for (; i < xmlData.length; i++) { + if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) { + if (startChar === "") { + startChar = xmlData[i]; + } else if (startChar !== xmlData[i]) { + } else { + startChar = ""; + } + } else if (xmlData[i] === ">") { + if (startChar === "") { + tagClosed = true; + break; + } + } + attrStr += xmlData[i]; + } + if (startChar !== "") { + return false; + } + return { + value: attrStr, + index: i, + tagClosed + }; + } + var validAttrStrRegxp = new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`, "g"); + function validateAttributeString(attrStr, options) { + const matches = util.getAllMatches(attrStr, validAttrStrRegxp); + const attrNames = {}; + for (let i = 0; i < matches.length; i++) { + if (matches[i][1].length === 0) { + return getErrorObject("InvalidAttr", "Attribute '" + matches[i][2] + "' has no space in starting.", getPositionFromMatch(matches[i])); + } else if (matches[i][3] !== void 0 && matches[i][4] === void 0) { + return getErrorObject("InvalidAttr", "Attribute '" + matches[i][2] + "' is without value.", getPositionFromMatch(matches[i])); + } else if (matches[i][3] === void 0 && !options.allowBooleanAttributes) { + return getErrorObject("InvalidAttr", "boolean attribute '" + matches[i][2] + "' is not allowed.", getPositionFromMatch(matches[i])); + } + const attrName = matches[i][2]; + if (!validateAttrName(attrName)) { + return getErrorObject("InvalidAttr", "Attribute '" + attrName + "' is an invalid name.", getPositionFromMatch(matches[i])); + } + if (!attrNames.hasOwnProperty(attrName)) { + attrNames[attrName] = 1; + } else { + return getErrorObject("InvalidAttr", "Attribute '" + attrName + "' is repeated.", getPositionFromMatch(matches[i])); + } + } + return true; + } + function validateNumberAmpersand(xmlData, i) { + let re = /\d/; + if (xmlData[i] === "x") { + i++; + re = /[\da-fA-F]/; + } + for (; i < xmlData.length; i++) { + if (xmlData[i] === ";") + return i; + if (!xmlData[i].match(re)) + break; + } + return -1; + } + function validateAmpersand(xmlData, i) { + i++; + if (xmlData[i] === ";") + return -1; + if (xmlData[i] === "#") { + i++; + return validateNumberAmpersand(xmlData, i); + } + let count = 0; + for (; i < xmlData.length; i++, count++) { + if (xmlData[i].match(/\w/) && count < 20) + continue; + if (xmlData[i] === ";") + break; + return -1; + } + return i; + } + function getErrorObject(code, message, lineNumber) { + return { + err: { + code, + msg: message, + line: lineNumber.line || lineNumber, + col: lineNumber.col + } + }; + } + function validateAttrName(attrName) { + return util.isName(attrName); + } + function validateTagName(tagname) { + return util.isName(tagname); + } + function getLineNumberForPosition(xmlData, index) { + const lines = xmlData.substring(0, index).split(/\r?\n/); + return { + line: lines.length, + // column number is last line's length + 1, because column numbering starts at 1: + col: lines[lines.length - 1].length + 1 + }; + } + function getPositionFromMatch(match) { + return match.startIndex + match[1].length; + } + } +}); + +// ../../../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +var require_OptionsBuilder = __commonJS({ + "../../../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js"(exports) { + var defaultOptions = { + preserveOrder: false, + attributeNamePrefix: "@_", + attributesGroupName: false, + textNodeName: "#text", + ignoreAttributes: true, + removeNSPrefix: false, + // remove NS from tag name or attribute name if true + allowBooleanAttributes: false, + //a tag can have attributes without any value + //ignoreRootElement : false, + parseTagValue: true, + parseAttributeValue: false, + trimValues: true, + //Trim string values of tag and attributes + cdataPropName: false, + numberParseOptions: { + hex: true, + leadingZeros: true, + eNotation: true + }, + tagValueProcessor: function(tagName, val2) { + return val2; + }, + attributeValueProcessor: function(attrName, val2) { + return val2; + }, + stopNodes: [], + //nested tags will not be parsed even for errors + alwaysCreateTextNode: false, + isArray: () => false, + commentPropName: false, + unpairedTags: [], + processEntities: true, + htmlEntities: false, + ignoreDeclaration: false, + ignorePiTags: false, + transformTagName: false, + transformAttributeName: false, + updateTag: function(tagName, jPath, attrs) { + return tagName; + } + // skipEmptyListItem: false + }; + var buildOptions = function(options) { + return Object.assign({}, defaultOptions, options); + }; + exports.buildOptions = buildOptions; + exports.defaultOptions = defaultOptions; + } +}); + +// ../../../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +var require_xmlNode = __commonJS({ + "../../../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js"(exports, module2) { + "use strict"; + var XmlNode = class { + constructor(tagname) { + this.tagname = tagname; + this.child = []; + this[":@"] = {}; + } + add(key, val2) { + if (key === "__proto__") + key = "#__proto__"; + this.child.push({ [key]: val2 }); + } + addChild(node) { + if (node.tagname === "__proto__") + node.tagname = "#__proto__"; + if (node[":@"] && Object.keys(node[":@"]).length > 0) { + this.child.push({ [node.tagname]: node.child, [":@"]: node[":@"] }); + } else { + this.child.push({ [node.tagname]: node.child }); + } + } + }; + module2.exports = XmlNode; + } +}); + +// ../../../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +var require_DocTypeReader = __commonJS({ + "../../../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js"(exports, module2) { + var util = require_util4(); + function readDocType(xmlData, i) { + const entities = {}; + if (xmlData[i + 3] === "O" && xmlData[i + 4] === "C" && xmlData[i + 5] === "T" && xmlData[i + 6] === "Y" && xmlData[i + 7] === "P" && xmlData[i + 8] === "E") { + i = i + 9; + let angleBracketsCount = 1; + let hasBody = false, comment = false; + let exp = ""; + for (; i < xmlData.length; i++) { + if (xmlData[i] === "<" && !comment) { + if (hasBody && isEntity(xmlData, i)) { + i += 7; + [entityName, val, i] = readEntityExp(xmlData, i + 1); + if (val.indexOf("&") === -1) + entities[validateEntityName(entityName)] = { + regx: RegExp(`&${entityName};`, "g"), + val + }; + } else if (hasBody && isElement(xmlData, i)) + i += 8; + else if (hasBody && isAttlist(xmlData, i)) + i += 8; + else if (hasBody && isNotation(xmlData, i)) + i += 9; + else if (isComment) + comment = true; + else + throw new Error("Invalid DOCTYPE"); + angleBracketsCount++; + exp = ""; + } else if (xmlData[i] === ">") { + if (comment) { + if (xmlData[i - 1] === "-" && xmlData[i - 2] === "-") { + comment = false; + angleBracketsCount--; + } + } else { + angleBracketsCount--; + } + if (angleBracketsCount === 0) { + break; + } + } else if (xmlData[i] === "[") { + hasBody = true; + } else { + exp += xmlData[i]; + } + } + if (angleBracketsCount !== 0) { + throw new Error(`Unclosed DOCTYPE`); + } + } else { + throw new Error(`Invalid Tag instead of DOCTYPE`); + } + return { entities, i }; + } + function readEntityExp(xmlData, i) { + let entityName2 = ""; + for (; i < xmlData.length && (xmlData[i] !== "'" && xmlData[i] !== '"'); i++) { + entityName2 += xmlData[i]; + } + entityName2 = entityName2.trim(); + if (entityName2.indexOf(" ") !== -1) + throw new Error("External entites are not supported"); + const startChar = xmlData[i++]; + let val2 = ""; + for (; i < xmlData.length && xmlData[i] !== startChar; i++) { + val2 += xmlData[i]; + } + return [entityName2, val2, i]; + } + function isComment(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "-" && xmlData[i + 3] === "-") + return true; + return false; + } + function isEntity(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "E" && xmlData[i + 3] === "N" && xmlData[i + 4] === "T" && xmlData[i + 5] === "I" && xmlData[i + 6] === "T" && xmlData[i + 7] === "Y") + return true; + return false; + } + function isElement(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "E" && xmlData[i + 3] === "L" && xmlData[i + 4] === "E" && xmlData[i + 5] === "M" && xmlData[i + 6] === "E" && xmlData[i + 7] === "N" && xmlData[i + 8] === "T") + return true; + return false; + } + function isAttlist(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "A" && xmlData[i + 3] === "T" && xmlData[i + 4] === "T" && xmlData[i + 5] === "L" && xmlData[i + 6] === "I" && xmlData[i + 7] === "S" && xmlData[i + 8] === "T") + return true; + return false; + } + function isNotation(xmlData, i) { + if (xmlData[i + 1] === "!" && xmlData[i + 2] === "N" && xmlData[i + 3] === "O" && xmlData[i + 4] === "T" && xmlData[i + 5] === "A" && xmlData[i + 6] === "T" && xmlData[i + 7] === "I" && xmlData[i + 8] === "O" && xmlData[i + 9] === "N") + return true; + return false; + } + function validateEntityName(name) { + if (util.isName(name)) + return name; + else + throw new Error(`Invalid entity name ${name}`); + } + module2.exports = readDocType; + } +}); + +// ../../../node_modules/strnum/strnum.js +var require_strnum = __commonJS({ + "../../../node_modules/strnum/strnum.js"(exports, module2) { + var hexRegex = /^[-+]?0x[a-fA-F0-9]+$/; + var numRegex = /^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/; + if (!Number.parseInt && window.parseInt) { + Number.parseInt = window.parseInt; + } + if (!Number.parseFloat && window.parseFloat) { + Number.parseFloat = window.parseFloat; + } + var consider = { + hex: true, + leadingZeros: true, + decimalPoint: ".", + eNotation: true + //skipLike: /regex/ + }; + function toNumber(str, options = {}) { + options = Object.assign({}, consider, options); + if (!str || typeof str !== "string") + return str; + let trimmedStr = str.trim(); + if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) + return str; + else if (options.hex && hexRegex.test(trimmedStr)) { + return Number.parseInt(trimmedStr, 16); + } else { + const match = numRegex.exec(trimmedStr); + if (match) { + const sign = match[1]; + const leadingZeros = match[2]; + let numTrimmedByZeros = trimZeros(match[3]); + const eNotation = match[4] || match[6]; + if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== ".") + return str; + else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== ".") + return str; + else { + const num = Number(trimmedStr); + const numStr = "" + num; + if (numStr.search(/[eE]/) !== -1) { + if (options.eNotation) + return num; + else + return str; + } else if (eNotation) { + if (options.eNotation) + return num; + else + return str; + } else if (trimmedStr.indexOf(".") !== -1) { + if (numStr === "0" && numTrimmedByZeros === "") + return num; + else if (numStr === numTrimmedByZeros) + return num; + else if (sign && numStr === "-" + numTrimmedByZeros) + return num; + else + return str; + } + if (leadingZeros) { + if (numTrimmedByZeros === numStr) + return num; + else if (sign + numTrimmedByZeros === numStr) + return num; + else + return str; + } + if (trimmedStr === numStr) + return num; + else if (trimmedStr === sign + numStr) + return num; + return str; + } + } else { + return str; + } + } + } + function trimZeros(numStr) { + if (numStr && numStr.indexOf(".") !== -1) { + numStr = numStr.replace(/0+$/, ""); + if (numStr === ".") + numStr = "0"; + else if (numStr[0] === ".") + numStr = "0" + numStr; + else if (numStr[numStr.length - 1] === ".") + numStr = numStr.substr(0, numStr.length - 1); + return numStr; + } + return numStr; + } + module2.exports = toNumber; + } +}); + +// ../../../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +var require_OrderedObjParser = __commonJS({ + "../../../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js"(exports, module2) { + "use strict"; + var util = require_util4(); + var xmlNode = require_xmlNode(); + var readDocType = require_DocTypeReader(); + var toNumber = require_strnum(); + var regx = "<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g, util.nameRegexp); + var OrderedObjParser = class { + constructor(options) { + this.options = options; + this.currentNode = null; + this.tagsNodeStack = []; + this.docTypeEntities = {}; + this.lastEntities = { + "apos": { regex: /&(apos|#39|#x27);/g, val: "'" }, + "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" }, + "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" }, + "quot": { regex: /&(quot|#34|#x22);/g, val: '"' } + }; + this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" }; + this.htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent": { regex: /&(cent|#162);/g, val: "\xA2" }, + "pound": { regex: /&(pound|#163);/g, val: "\xA3" }, + "yen": { regex: /&(yen|#165);/g, val: "\xA5" }, + "euro": { regex: /&(euro|#8364);/g, val: "\u20AC" }, + "copyright": { regex: /&(copy|#169);/g, val: "\xA9" }, + "reg": { regex: /&(reg|#174);/g, val: "\xAE" }, + "inr": { regex: /&(inr|#8377);/g, val: "\u20B9" } + }; + this.addExternalEntities = addExternalEntities; + this.parseXml = parseXml; + this.parseTextData = parseTextData; + this.resolveNameSpace = resolveNameSpace; + this.buildAttributesMap = buildAttributesMap; + this.isItStopNode = isItStopNode; + this.replaceEntitiesValue = replaceEntitiesValue; + this.readStopNodeData = readStopNodeData; + this.saveTextToParentTag = saveTextToParentTag; + this.addChild = addChild; + } + }; + function addExternalEntities(externalEntities) { + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.lastEntities[ent] = { + regex: new RegExp("&" + ent + ";", "g"), + val: externalEntities[ent] + }; + } + } + function parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) { + if (val2 !== void 0) { + if (this.options.trimValues && !dontTrim) { + val2 = val2.trim(); + } + if (val2.length > 0) { + if (!escapeEntities) + val2 = this.replaceEntitiesValue(val2); + const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode); + if (newval === null || newval === void 0) { + return val2; + } else if (typeof newval !== typeof val2 || newval !== val2) { + return newval; + } else if (this.options.trimValues) { + return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions); + } else { + const trimmedVal = val2.trim(); + if (trimmedVal === val2) { + return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions); + } else { + return val2; + } + } + } + } + } + function resolveNameSpace(tagname) { + if (this.options.removeNSPrefix) { + const tags = tagname.split(":"); + const prefix = tagname.charAt(0) === "/" ? "/" : ""; + if (tags[0] === "xmlns") { + return ""; + } + if (tags.length === 2) { + tagname = prefix + tags[1]; + } + } + return tagname; + } + var attrsRegx = new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`, "gm"); + function buildAttributesMap(attrStr, jPath, tagName) { + if (!this.options.ignoreAttributes && typeof attrStr === "string") { + const matches = util.getAllMatches(attrStr, attrsRegx); + const len = matches.length; + const attrs = {}; + for (let i = 0; i < len; i++) { + const attrName = this.resolveNameSpace(matches[i][1]); + let oldVal = matches[i][4]; + let aName = this.options.attributeNamePrefix + attrName; + if (attrName.length) { + if (this.options.transformAttributeName) { + aName = this.options.transformAttributeName(aName); + } + if (aName === "__proto__") + aName = "#__proto__"; + if (oldVal !== void 0) { + if (this.options.trimValues) { + oldVal = oldVal.trim(); + } + oldVal = this.replaceEntitiesValue(oldVal); + const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath); + if (newVal === null || newVal === void 0) { + attrs[aName] = oldVal; + } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) { + attrs[aName] = newVal; + } else { + attrs[aName] = parseValue( + oldVal, + this.options.parseAttributeValue, + this.options.numberParseOptions + ); + } + } else if (this.options.allowBooleanAttributes) { + attrs[aName] = true; + } + } + } + if (!Object.keys(attrs).length) { + return; + } + if (this.options.attributesGroupName) { + const attrCollection = {}; + attrCollection[this.options.attributesGroupName] = attrs; + return attrCollection; + } + return attrs; + } + } + var parseXml = function(xmlData) { + xmlData = xmlData.replace(/\r\n?/g, "\n"); + const xmlObj = new xmlNode("!xml"); + let currentNode = xmlObj; + let textData = ""; + let jPath = ""; + for (let i = 0; i < xmlData.length; i++) { + const ch = xmlData[i]; + if (ch === "<") { + if (xmlData[i + 1] === "/") { + const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed."); + let tagName = xmlData.substring(i + 2, closeIndex).trim(); + if (this.options.removeNSPrefix) { + const colonIndex = tagName.indexOf(":"); + if (colonIndex !== -1) { + tagName = tagName.substr(colonIndex + 1); + } + } + if (this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + if (currentNode) { + textData = this.saveTextToParentTag(textData, currentNode, jPath); + } + const lastTagName = jPath.substring(jPath.lastIndexOf(".") + 1); + if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) { + throw new Error(`Unpaired tag can not be used as closing tag: `); + } + let propIndex = 0; + if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) { + propIndex = jPath.lastIndexOf(".", jPath.lastIndexOf(".") - 1); + this.tagsNodeStack.pop(); + } else { + propIndex = jPath.lastIndexOf("."); + } + jPath = jPath.substring(0, propIndex); + currentNode = this.tagsNodeStack.pop(); + textData = ""; + i = closeIndex; + } else if (xmlData[i + 1] === "?") { + let tagData = readTagExp(xmlData, i, false, "?>"); + if (!tagData) + throw new Error("Pi Tag is not closed."); + textData = this.saveTextToParentTag(textData, currentNode, jPath); + if (this.options.ignoreDeclaration && tagData.tagName === "?xml" || this.options.ignorePiTags) { + } else { + const childNode = new xmlNode(tagData.tagName); + childNode.add(this.options.textNodeName, ""); + if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName); + } + this.addChild(currentNode, childNode, jPath); + } + i = tagData.closeIndex + 1; + } else if (xmlData.substr(i + 1, 3) === "!--") { + const endIndex = findClosingIndex(xmlData, "-->", i + 4, "Comment is not closed."); + if (this.options.commentPropName) { + const comment = xmlData.substring(i + 4, endIndex - 2); + textData = this.saveTextToParentTag(textData, currentNode, jPath); + currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]); + } + i = endIndex; + } else if (xmlData.substr(i + 1, 2) === "!D") { + const result = readDocType(xmlData, i); + this.docTypeEntities = result.entities; + i = result.i; + } else if (xmlData.substr(i + 1, 2) === "![") { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "CDATA is not closed.") - 2; + const tagExp = xmlData.substring(i + 9, closeIndex); + textData = this.saveTextToParentTag(textData, currentNode, jPath); + if (this.options.cdataPropName) { + currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]); + } else { + let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true); + if (val2 == void 0) + val2 = ""; + currentNode.add(this.options.textNodeName, val2); + } + i = closeIndex + 2; + } else { + let result = readTagExp(xmlData, i, this.options.removeNSPrefix); + let tagName = result.tagName; + let tagExp = result.tagExp; + let attrExpPresent = result.attrExpPresent; + let closeIndex = result.closeIndex; + if (this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + if (currentNode && textData) { + if (currentNode.tagname !== "!xml") { + textData = this.saveTextToParentTag(textData, currentNode, jPath, false); + } + } + const lastTag = currentNode; + if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) { + currentNode = this.tagsNodeStack.pop(); + jPath = jPath.substring(0, jPath.lastIndexOf(".")); + } + if (tagName !== xmlObj.tagname) { + jPath += jPath ? "." + tagName : tagName; + } + if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { + let tagContent = ""; + if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) { + i = result.closeIndex; + } else if (this.options.unpairedTags.indexOf(tagName) !== -1) { + i = result.closeIndex; + } else { + const result2 = this.readStopNodeData(xmlData, tagName, closeIndex + 1); + if (!result2) + throw new Error(`Unexpected end of ${tagName}`); + i = result2.i; + tagContent = result2.tagContent; + } + const childNode = new xmlNode(tagName); + if (tagName !== tagExp && attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagExp, jPath, tagName); + } + if (tagContent) { + tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true); + } + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + childNode.add(this.options.textNodeName, tagContent); + this.addChild(currentNode, childNode, jPath); + } else { + if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) { + if (tagName[tagName.length - 1] === "/") { + tagName = tagName.substr(0, tagName.length - 1); + tagExp = tagName; + } else { + tagExp = tagExp.substr(0, tagExp.length - 1); + } + if (this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + const childNode = new xmlNode(tagName); + if (tagName !== tagExp && attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagExp, jPath, tagName); + } + this.addChild(currentNode, childNode, jPath); + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + } else { + const childNode = new xmlNode(tagName); + this.tagsNodeStack.push(currentNode); + if (tagName !== tagExp && attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagExp, jPath, tagName); + } + this.addChild(currentNode, childNode, jPath); + currentNode = childNode; + } + textData = ""; + i = closeIndex; + } + } + } else { + textData += xmlData[i]; + } + } + return xmlObj.child; + }; + function addChild(currentNode, childNode, jPath) { + const result = this.options.updateTag(childNode.tagname, jPath, childNode[":@"]); + if (result === false) { + } else if (typeof result === "string") { + childNode.tagname = result; + currentNode.addChild(childNode); + } else { + currentNode.addChild(childNode); + } + } + var replaceEntitiesValue = function(val2) { + if (this.options.processEntities) { + for (let entityName2 in this.docTypeEntities) { + const entity = this.docTypeEntities[entityName2]; + val2 = val2.replace(entity.regx, entity.val); + } + for (let entityName2 in this.lastEntities) { + const entity = this.lastEntities[entityName2]; + val2 = val2.replace(entity.regex, entity.val); + } + if (this.options.htmlEntities) { + for (let entityName2 in this.htmlEntities) { + const entity = this.htmlEntities[entityName2]; + val2 = val2.replace(entity.regex, entity.val); + } + } + val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val); + } + return val2; + }; + function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) { + if (textData) { + if (isLeafNode === void 0) + isLeafNode = Object.keys(currentNode.child).length === 0; + textData = this.parseTextData( + textData, + currentNode.tagname, + jPath, + false, + currentNode[":@"] ? Object.keys(currentNode[":@"]).length !== 0 : false, + isLeafNode + ); + if (textData !== void 0 && textData !== "") + currentNode.add(this.options.textNodeName, textData); + textData = ""; + } + return textData; + } + function isItStopNode(stopNodes, jPath, currentTagName) { + const allNodesExp = "*." + currentTagName; + for (const stopNodePath in stopNodes) { + const stopNodeExp = stopNodes[stopNodePath]; + if (allNodesExp === stopNodeExp || jPath === stopNodeExp) + return true; + } + return false; + } + function tagExpWithClosingIndex(xmlData, i, closingChar = ">") { + let attrBoundary; + let tagExp = ""; + for (let index = i; index < xmlData.length; index++) { + let ch = xmlData[index]; + if (attrBoundary) { + if (ch === attrBoundary) + attrBoundary = ""; + } else if (ch === '"' || ch === "'") { + attrBoundary = ch; + } else if (ch === closingChar[0]) { + if (closingChar[1]) { + if (xmlData[index + 1] === closingChar[1]) { + return { + data: tagExp, + index + }; + } + } else { + return { + data: tagExp, + index + }; + } + } else if (ch === " ") { + ch = " "; + } + tagExp += ch; + } + } + function findClosingIndex(xmlData, str, i, errMsg) { + const closingIndex = xmlData.indexOf(str, i); + if (closingIndex === -1) { + throw new Error(errMsg); + } else { + return closingIndex + str.length - 1; + } + } + function readTagExp(xmlData, i, removeNSPrefix, closingChar = ">") { + const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar); + if (!result) + return; + let tagExp = result.data; + const closeIndex = result.index; + const separatorIndex = tagExp.search(/\s/); + let tagName = tagExp; + let attrExpPresent = true; + if (separatorIndex !== -1) { + tagName = tagExp.substr(0, separatorIndex).replace(/\s\s*$/, ""); + tagExp = tagExp.substr(separatorIndex + 1); + } + if (removeNSPrefix) { + const colonIndex = tagName.indexOf(":"); + if (colonIndex !== -1) { + tagName = tagName.substr(colonIndex + 1); + attrExpPresent = tagName !== result.data.substr(colonIndex + 1); + } + } + return { + tagName, + tagExp, + closeIndex, + attrExpPresent + }; + } + function readStopNodeData(xmlData, tagName, i) { + const startIndex = i; + let openTagCount = 1; + for (; i < xmlData.length; i++) { + if (xmlData[i] === "<") { + if (xmlData[i + 1] === "/") { + const closeIndex = findClosingIndex(xmlData, ">", i, `${tagName} is not closed`); + let closeTagName = xmlData.substring(i + 2, closeIndex).trim(); + if (closeTagName === tagName) { + openTagCount--; + if (openTagCount === 0) { + return { + tagContent: xmlData.substring(startIndex, i), + i: closeIndex + }; + } + } + i = closeIndex; + } else if (xmlData[i + 1] === "?") { + const closeIndex = findClosingIndex(xmlData, "?>", i + 1, "StopNode is not closed."); + i = closeIndex; + } else if (xmlData.substr(i + 1, 3) === "!--") { + const closeIndex = findClosingIndex(xmlData, "-->", i + 3, "StopNode is not closed."); + i = closeIndex; + } else if (xmlData.substr(i + 1, 2) === "![") { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "StopNode is not closed.") - 2; + i = closeIndex; + } else { + const tagData = readTagExp(xmlData, i, ">"); + if (tagData) { + const openTagName = tagData && tagData.tagName; + if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== "/") { + openTagCount++; + } + i = tagData.closeIndex; + } + } + } + } + } + function parseValue(val2, shouldParse, options) { + if (shouldParse && typeof val2 === "string") { + const newval = val2.trim(); + if (newval === "true") + return true; + else if (newval === "false") + return false; + else + return toNumber(val2, options); + } else { + if (util.isExist(val2)) { + return val2; + } else { + return ""; + } + } + } + module2.exports = OrderedObjParser; + } +}); + +// ../../../node_modules/fast-xml-parser/src/xmlparser/node2json.js +var require_node2json = __commonJS({ + "../../../node_modules/fast-xml-parser/src/xmlparser/node2json.js"(exports) { + "use strict"; + function prettify(node, options) { + return compress(node, options); + } + function compress(arr, options, jPath) { + let text; + const compressedObj = {}; + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const property = propName(tagObj); + let newJpath = ""; + if (jPath === void 0) + newJpath = property; + else + newJpath = jPath + "." + property; + if (property === options.textNodeName) { + if (text === void 0) + text = tagObj[property]; + else + text += "" + tagObj[property]; + } else if (property === void 0) { + continue; + } else if (tagObj[property]) { + let val2 = compress(tagObj[property], options, newJpath); + const isLeaf = isLeafTag(val2, options); + if (tagObj[":@"]) { + assignAttributes(val2, tagObj[":@"], newJpath, options); + } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) { + val2 = val2[options.textNodeName]; + } else if (Object.keys(val2).length === 0) { + if (options.alwaysCreateTextNode) + val2[options.textNodeName] = ""; + else + val2 = ""; + } + if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) { + if (!Array.isArray(compressedObj[property])) { + compressedObj[property] = [compressedObj[property]]; + } + compressedObj[property].push(val2); + } else { + if (options.isArray(property, newJpath, isLeaf)) { + compressedObj[property] = [val2]; + } else { + compressedObj[property] = val2; + } + } + } + } + if (typeof text === "string") { + if (text.length > 0) + compressedObj[options.textNodeName] = text; + } else if (text !== void 0) + compressedObj[options.textNodeName] = text; + return compressedObj; + } + function propName(obj) { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key !== ":@") + return key; + } + } + function assignAttributes(obj, attrMap, jpath, options) { + if (attrMap) { + const keys = Object.keys(attrMap); + const len = keys.length; + for (let i = 0; i < len; i++) { + const atrrName = keys[i]; + if (options.isArray(atrrName, jpath + "." + atrrName, true, true)) { + obj[atrrName] = [attrMap[atrrName]]; + } else { + obj[atrrName] = attrMap[atrrName]; + } + } + } + } + function isLeafTag(obj, options) { + const { textNodeName } = options; + const propCount = Object.keys(obj).length; + if (propCount === 0) { + return true; + } + if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === "boolean" || obj[textNodeName] === 0)) { + return true; + } + return false; + } + exports.prettify = prettify; + } +}); + +// ../../../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +var require_XMLParser = __commonJS({ + "../../../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js"(exports, module2) { + var { buildOptions } = require_OptionsBuilder(); + var OrderedObjParser = require_OrderedObjParser(); + var { prettify } = require_node2json(); + var validator = require_validator(); + var XMLParser = class { + constructor(options) { + this.externalEntities = {}; + this.options = buildOptions(options); + } + /** + * Parse XML dats to JS object + * @param {string|Buffer} xmlData + * @param {boolean|Object} validationOption + */ + parse(xmlData, validationOption) { + if (typeof xmlData === "string") { + } else if (xmlData.toString) { + xmlData = xmlData.toString(); + } else { + throw new Error("XML data is accepted in String or Bytes[] form."); + } + if (validationOption) { + if (validationOption === true) + validationOption = {}; + const result = validator.validate(xmlData, validationOption); + if (result !== true) { + throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`); + } + } + const orderedObjParser = new OrderedObjParser(this.options); + orderedObjParser.addExternalEntities(this.externalEntities); + const orderedResult = orderedObjParser.parseXml(xmlData); + if (this.options.preserveOrder || orderedResult === void 0) + return orderedResult; + else + return prettify(orderedResult, this.options); + } + /** + * Add Entity which is not by default supported by this library + * @param {string} key + * @param {string} value + */ + addEntity(key, value) { + if (value.indexOf("&") !== -1) { + throw new Error("Entity value can't have '&'"); + } else if (key.indexOf("&") !== -1 || key.indexOf(";") !== -1) { + throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '"); + } else if (value === "&") { + throw new Error("An entity with value '&' is not permitted"); + } else { + this.externalEntities[key] = value; + } + } + }; + module2.exports = XMLParser; + } +}); + +// ../../../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js +var require_orderedJs2Xml = __commonJS({ + "../../../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js"(exports, module2) { + var EOL = "\n"; + function toXml(jArray, options) { + let indentation = ""; + if (options.format && options.indentBy.length > 0) { + indentation = EOL; + } + return arrToStr(jArray, options, "", indentation); + } + function arrToStr(arr, options, jPath, indentation) { + let xmlStr = ""; + let isPreviousElementTag = false; + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const tagName = propName(tagObj); + let newJPath = ""; + if (jPath.length === 0) + newJPath = tagName; + else + newJPath = `${jPath}.${tagName}`; + if (tagName === options.textNodeName) { + let tagText = tagObj[tagName]; + if (!isStopNode(newJPath, options)) { + tagText = options.tagValueProcessor(tagName, tagText); + tagText = replaceEntitiesValue(tagText, options); + } + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += tagText; + isPreviousElementTag = false; + continue; + } else if (tagName === options.cdataPropName) { + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += ``; + isPreviousElementTag = false; + continue; + } else if (tagName === options.commentPropName) { + xmlStr += indentation + ``; + isPreviousElementTag = true; + continue; + } else if (tagName[0] === "?") { + const attStr2 = attr_to_str(tagObj[":@"], options); + const tempInd = tagName === "?xml" ? "" : indentation; + let piTextNodeName = tagObj[tagName][0][options.textNodeName]; + piTextNodeName = piTextNodeName.length !== 0 ? " " + piTextNodeName : ""; + xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`; + isPreviousElementTag = true; + continue; + } + let newIdentation = indentation; + if (newIdentation !== "") { + newIdentation += options.indentBy; + } + const attStr = attr_to_str(tagObj[":@"], options); + const tagStart = indentation + `<${tagName}${attStr}`; + const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation); + if (options.unpairedTags.indexOf(tagName) !== -1) { + if (options.suppressUnpairedNode) + xmlStr += tagStart + ">"; + else + xmlStr += tagStart + "/>"; + } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) { + xmlStr += tagStart + "/>"; + } else if (tagValue && tagValue.endsWith(">")) { + xmlStr += tagStart + `>${tagValue}${indentation}`; + } else { + xmlStr += tagStart + ">"; + if (tagValue && indentation !== "" && (tagValue.includes("/>") || tagValue.includes("`; + } + isPreviousElementTag = true; + } + return xmlStr; + } + function propName(obj) { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key !== ":@") + return key; + } + } + function attr_to_str(attrMap, options) { + let attrStr = ""; + if (attrMap && !options.ignoreAttributes) { + for (let attr in attrMap) { + let attrVal = options.attributeValueProcessor(attr, attrMap[attr]); + attrVal = replaceEntitiesValue(attrVal, options); + if (attrVal === true && options.suppressBooleanAttributes) { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`; + } else { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`; + } + } + } + return attrStr; + } + function isStopNode(jPath, options) { + jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1); + let tagName = jPath.substr(jPath.lastIndexOf(".") + 1); + for (let index in options.stopNodes) { + if (options.stopNodes[index] === jPath || options.stopNodes[index] === "*." + tagName) + return true; + } + return false; + } + function replaceEntitiesValue(textValue, options) { + if (textValue && textValue.length > 0 && options.processEntities) { + for (let i = 0; i < options.entities.length; i++) { + const entity = options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; + } + module2.exports = toXml; + } +}); + +// ../../../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js +var require_json2xml = __commonJS({ + "../../../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js"(exports, module2) { + "use strict"; + var buildFromOrderedJs = require_orderedJs2Xml(); + var defaultOptions = { + attributeNamePrefix: "@_", + attributesGroupName: false, + textNodeName: "#text", + ignoreAttributes: true, + cdataPropName: false, + format: false, + indentBy: " ", + suppressEmptyNode: false, + suppressUnpairedNode: true, + suppressBooleanAttributes: true, + tagValueProcessor: function(key, a) { + return a; + }, + attributeValueProcessor: function(attrName, a) { + return a; + }, + preserveOrder: false, + commentPropName: false, + unpairedTags: [], + entities: [ + { regex: new RegExp("&", "g"), val: "&" }, + //it must be on top + { regex: new RegExp(">", "g"), val: ">" }, + { regex: new RegExp("<", "g"), val: "<" }, + { regex: new RegExp("'", "g"), val: "'" }, + { regex: new RegExp('"', "g"), val: """ } + ], + processEntities: true, + stopNodes: [], + // transformTagName: false, + // transformAttributeName: false, + oneListGroup: false + }; + function Builder(options) { + this.options = Object.assign({}, defaultOptions, options); + if (this.options.ignoreAttributes || this.options.attributesGroupName) { + this.isAttribute = function() { + return false; + }; + } else { + this.attrPrefixLen = this.options.attributeNamePrefix.length; + this.isAttribute = isAttribute; + } + this.processTextOrObjNode = processTextOrObjNode; + if (this.options.format) { + this.indentate = indentate; + this.tagEndChar = ">\n"; + this.newLine = "\n"; + } else { + this.indentate = function() { + return ""; + }; + this.tagEndChar = ">"; + this.newLine = ""; + } + } + Builder.prototype.build = function(jObj) { + if (this.options.preserveOrder) { + return buildFromOrderedJs(jObj, this.options); + } else { + if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) { + jObj = { + [this.options.arrayNodeName]: jObj + }; + } + return this.j2x(jObj, 0).val; + } + }; + Builder.prototype.j2x = function(jObj, level) { + let attrStr = ""; + let val2 = ""; + for (let key in jObj) { + if (typeof jObj[key] === "undefined") { + } else if (jObj[key] === null) { + if (key[0] === "?") + val2 += this.indentate(level) + "<" + key + "?" + this.tagEndChar; + else + val2 += this.indentate(level) + "<" + key + "/" + this.tagEndChar; + } else if (jObj[key] instanceof Date) { + val2 += this.buildTextValNode(jObj[key], key, "", level); + } else if (typeof jObj[key] !== "object") { + const attr = this.isAttribute(key); + if (attr) { + attrStr += this.buildAttrPairStr(attr, "" + jObj[key]); + } else { + if (key === this.options.textNodeName) { + let newval = this.options.tagValueProcessor(key, "" + jObj[key]); + val2 += this.replaceEntitiesValue(newval); + } else { + val2 += this.buildTextValNode(jObj[key], key, "", level); + } + } + } else if (Array.isArray(jObj[key])) { + const arrLen = jObj[key].length; + let listTagVal = ""; + for (let j = 0; j < arrLen; j++) { + const item = jObj[key][j]; + if (typeof item === "undefined") { + } else if (item === null) { + if (key[0] === "?") + val2 += this.indentate(level) + "<" + key + "?" + this.tagEndChar; + else + val2 += this.indentate(level) + "<" + key + "/" + this.tagEndChar; + } else if (typeof item === "object") { + if (this.options.oneListGroup) { + listTagVal += this.j2x(item, level + 1).val; + } else { + listTagVal += this.processTextOrObjNode(item, key, level); + } + } else { + listTagVal += this.buildTextValNode(item, key, "", level); + } + } + if (this.options.oneListGroup) { + listTagVal = this.buildObjectNode(listTagVal, key, "", level); + } + val2 += listTagVal; + } else { + if (this.options.attributesGroupName && key === this.options.attributesGroupName) { + const Ks = Object.keys(jObj[key]); + const L = Ks.length; + for (let j = 0; j < L; j++) { + attrStr += this.buildAttrPairStr(Ks[j], "" + jObj[key][Ks[j]]); + } + } else { + val2 += this.processTextOrObjNode(jObj[key], key, level); + } + } + } + return { attrStr, val: val2 }; + }; + Builder.prototype.buildAttrPairStr = function(attrName, val2) { + val2 = this.options.attributeValueProcessor(attrName, "" + val2); + val2 = this.replaceEntitiesValue(val2); + if (this.options.suppressBooleanAttributes && val2 === "true") { + return " " + attrName; + } else + return " " + attrName + '="' + val2 + '"'; + }; + function processTextOrObjNode(object, key, level) { + const result = this.j2x(object, level + 1); + if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) { + return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level); + } else { + return this.buildObjectNode(result.val, key, result.attrStr, level); + } + } + Builder.prototype.buildObjectNode = function(val2, key, attrStr, level) { + if (val2 === "") { + if (key[0] === "?") + return this.indentate(level) + "<" + key + attrStr + "?" + this.tagEndChar; + else { + return this.indentate(level) + "<" + key + attrStr + this.closeTag(key) + this.tagEndChar; + } + } else { + let tagEndExp = "" + val2 + tagEndExp; + } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) { + return this.indentate(level) + `` + this.newLine; + } else { + return this.indentate(level) + "<" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp; + } + } + }; + Builder.prototype.closeTag = function(key) { + let closeTag = ""; + if (this.options.unpairedTags.indexOf(key) !== -1) { + if (!this.options.suppressUnpairedNode) + closeTag = "/"; + } else if (this.options.suppressEmptyNode) { + closeTag = "/"; + } else { + closeTag = `>` + this.newLine; + } else if (this.options.commentPropName !== false && key === this.options.commentPropName) { + return this.indentate(level) + `` + this.newLine; + } else if (key[0] === "?") { + return this.indentate(level) + "<" + key + attrStr + "?" + this.tagEndChar; + } else { + let textValue = this.options.tagValueProcessor(key, val2); + textValue = this.replaceEntitiesValue(textValue); + if (textValue === "") { + return this.indentate(level) + "<" + key + attrStr + this.closeTag(key) + this.tagEndChar; + } else { + return this.indentate(level) + "<" + key + attrStr + ">" + textValue + " 0 && this.options.processEntities) { + for (let i = 0; i < this.options.entities.length; i++) { + const entity = this.options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; + }; + function indentate(level) { + return this.options.indentBy.repeat(level); + } + function isAttribute(name) { + if (name.startsWith(this.options.attributeNamePrefix)) { + return name.substr(this.attrPrefixLen); + } else { + return false; + } + } + module2.exports = Builder; + } +}); + +// ../../../node_modules/fast-xml-parser/src/fxp.js +var require_fxp = __commonJS({ + "../../../node_modules/fast-xml-parser/src/fxp.js"(exports, module2) { + "use strict"; + var validator = require_validator(); + var XMLParser = require_XMLParser(); + var XMLBuilder = require_json2xml(); + module2.exports = { + XMLParser, + XMLValidator: validator, + XMLBuilder + }; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/protocols/Aws_query.js +var require_Aws_query = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/protocols/Aws_query.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.de_GetSessionTokenCommand = exports.de_GetFederationTokenCommand = exports.de_GetCallerIdentityCommand = exports.de_GetAccessKeyInfoCommand = exports.de_DecodeAuthorizationMessageCommand = exports.de_AssumeRoleWithWebIdentityCommand = exports.de_AssumeRoleWithSAMLCommand = exports.de_AssumeRoleCommand = exports.se_GetSessionTokenCommand = exports.se_GetFederationTokenCommand = exports.se_GetCallerIdentityCommand = exports.se_GetAccessKeyInfoCommand = exports.se_DecodeAuthorizationMessageCommand = exports.se_AssumeRoleWithWebIdentityCommand = exports.se_AssumeRoleWithSAMLCommand = exports.se_AssumeRoleCommand = void 0; + var protocol_http_1 = require_dist_cjs2(); + var smithy_client_1 = require_dist_cjs35(); + var fast_xml_parser_1 = require_fxp(); + var models_0_1 = require_models_0(); + var STSServiceException_1 = require_STSServiceException(); + var se_AssumeRoleCommand = async (input, context) => { + const headers = SHARED_HEADERS; + let body; + body = buildFormUrlencodedString({ + ...se_AssumeRoleRequest(input, context), + Action: "AssumeRole", + Version: "2011-06-15" + }); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_AssumeRoleCommand = se_AssumeRoleCommand; + var se_AssumeRoleWithSAMLCommand = async (input, context) => { + const headers = SHARED_HEADERS; + let body; + body = buildFormUrlencodedString({ + ...se_AssumeRoleWithSAMLRequest(input, context), + Action: "AssumeRoleWithSAML", + Version: "2011-06-15" + }); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_AssumeRoleWithSAMLCommand = se_AssumeRoleWithSAMLCommand; + var se_AssumeRoleWithWebIdentityCommand = async (input, context) => { + const headers = SHARED_HEADERS; + let body; + body = buildFormUrlencodedString({ + ...se_AssumeRoleWithWebIdentityRequest(input, context), + Action: "AssumeRoleWithWebIdentity", + Version: "2011-06-15" + }); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_AssumeRoleWithWebIdentityCommand = se_AssumeRoleWithWebIdentityCommand; + var se_DecodeAuthorizationMessageCommand = async (input, context) => { + const headers = SHARED_HEADERS; + let body; + body = buildFormUrlencodedString({ + ...se_DecodeAuthorizationMessageRequest(input, context), + Action: "DecodeAuthorizationMessage", + Version: "2011-06-15" + }); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DecodeAuthorizationMessageCommand = se_DecodeAuthorizationMessageCommand; + var se_GetAccessKeyInfoCommand = async (input, context) => { + const headers = SHARED_HEADERS; + let body; + body = buildFormUrlencodedString({ + ...se_GetAccessKeyInfoRequest(input, context), + Action: "GetAccessKeyInfo", + Version: "2011-06-15" + }); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_GetAccessKeyInfoCommand = se_GetAccessKeyInfoCommand; + var se_GetCallerIdentityCommand = async (input, context) => { + const headers = SHARED_HEADERS; + let body; + body = buildFormUrlencodedString({ + ...se_GetCallerIdentityRequest(input, context), + Action: "GetCallerIdentity", + Version: "2011-06-15" + }); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_GetCallerIdentityCommand = se_GetCallerIdentityCommand; + var se_GetFederationTokenCommand = async (input, context) => { + const headers = SHARED_HEADERS; + let body; + body = buildFormUrlencodedString({ + ...se_GetFederationTokenRequest(input, context), + Action: "GetFederationToken", + Version: "2011-06-15" + }); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_GetFederationTokenCommand = se_GetFederationTokenCommand; + var se_GetSessionTokenCommand = async (input, context) => { + const headers = SHARED_HEADERS; + let body; + body = buildFormUrlencodedString({ + ...se_GetSessionTokenRequest(input, context), + Action: "GetSessionToken", + Version: "2011-06-15" + }); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_GetSessionTokenCommand = se_GetSessionTokenCommand; + var de_AssumeRoleCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_AssumeRoleCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_AssumeRoleResponse(data.AssumeRoleResult, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_AssumeRoleCommand = de_AssumeRoleCommand; + var de_AssumeRoleCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadQueryErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ExpiredTokenException": + case "com.amazonaws.sts#ExpiredTokenException": + throw await de_ExpiredTokenExceptionRes(parsedOutput, context); + case "MalformedPolicyDocument": + case "com.amazonaws.sts#MalformedPolicyDocumentException": + throw await de_MalformedPolicyDocumentExceptionRes(parsedOutput, context); + case "PackedPolicyTooLarge": + case "com.amazonaws.sts#PackedPolicyTooLargeException": + throw await de_PackedPolicyTooLargeExceptionRes(parsedOutput, context); + case "RegionDisabledException": + case "com.amazonaws.sts#RegionDisabledException": + throw await de_RegionDisabledExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody: parsedBody.Error, + errorCode + }); + } + }; + var de_AssumeRoleWithSAMLCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_AssumeRoleWithSAMLCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_AssumeRoleWithSAMLResponse(data.AssumeRoleWithSAMLResult, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_AssumeRoleWithSAMLCommand = de_AssumeRoleWithSAMLCommand; + var de_AssumeRoleWithSAMLCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadQueryErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ExpiredTokenException": + case "com.amazonaws.sts#ExpiredTokenException": + throw await de_ExpiredTokenExceptionRes(parsedOutput, context); + case "IDPRejectedClaim": + case "com.amazonaws.sts#IDPRejectedClaimException": + throw await de_IDPRejectedClaimExceptionRes(parsedOutput, context); + case "InvalidIdentityToken": + case "com.amazonaws.sts#InvalidIdentityTokenException": + throw await de_InvalidIdentityTokenExceptionRes(parsedOutput, context); + case "MalformedPolicyDocument": + case "com.amazonaws.sts#MalformedPolicyDocumentException": + throw await de_MalformedPolicyDocumentExceptionRes(parsedOutput, context); + case "PackedPolicyTooLarge": + case "com.amazonaws.sts#PackedPolicyTooLargeException": + throw await de_PackedPolicyTooLargeExceptionRes(parsedOutput, context); + case "RegionDisabledException": + case "com.amazonaws.sts#RegionDisabledException": + throw await de_RegionDisabledExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody: parsedBody.Error, + errorCode + }); + } + }; + var de_AssumeRoleWithWebIdentityCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_AssumeRoleWithWebIdentityCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_AssumeRoleWithWebIdentityResponse(data.AssumeRoleWithWebIdentityResult, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_AssumeRoleWithWebIdentityCommand = de_AssumeRoleWithWebIdentityCommand; + var de_AssumeRoleWithWebIdentityCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadQueryErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ExpiredTokenException": + case "com.amazonaws.sts#ExpiredTokenException": + throw await de_ExpiredTokenExceptionRes(parsedOutput, context); + case "IDPCommunicationError": + case "com.amazonaws.sts#IDPCommunicationErrorException": + throw await de_IDPCommunicationErrorExceptionRes(parsedOutput, context); + case "IDPRejectedClaim": + case "com.amazonaws.sts#IDPRejectedClaimException": + throw await de_IDPRejectedClaimExceptionRes(parsedOutput, context); + case "InvalidIdentityToken": + case "com.amazonaws.sts#InvalidIdentityTokenException": + throw await de_InvalidIdentityTokenExceptionRes(parsedOutput, context); + case "MalformedPolicyDocument": + case "com.amazonaws.sts#MalformedPolicyDocumentException": + throw await de_MalformedPolicyDocumentExceptionRes(parsedOutput, context); + case "PackedPolicyTooLarge": + case "com.amazonaws.sts#PackedPolicyTooLargeException": + throw await de_PackedPolicyTooLargeExceptionRes(parsedOutput, context); + case "RegionDisabledException": + case "com.amazonaws.sts#RegionDisabledException": + throw await de_RegionDisabledExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody: parsedBody.Error, + errorCode + }); + } + }; + var de_DecodeAuthorizationMessageCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DecodeAuthorizationMessageCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_DecodeAuthorizationMessageResponse(data.DecodeAuthorizationMessageResult, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DecodeAuthorizationMessageCommand = de_DecodeAuthorizationMessageCommand; + var de_DecodeAuthorizationMessageCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadQueryErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidAuthorizationMessageException": + case "com.amazonaws.sts#InvalidAuthorizationMessageException": + throw await de_InvalidAuthorizationMessageExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody: parsedBody.Error, + errorCode + }); + } + }; + var de_GetAccessKeyInfoCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_GetAccessKeyInfoCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_GetAccessKeyInfoResponse(data.GetAccessKeyInfoResult, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_GetAccessKeyInfoCommand = de_GetAccessKeyInfoCommand; + var de_GetAccessKeyInfoCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadQueryErrorCode(output, parsedOutput.body); + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody: parsedBody.Error, + errorCode + }); + }; + var de_GetCallerIdentityCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_GetCallerIdentityCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_GetCallerIdentityResponse(data.GetCallerIdentityResult, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_GetCallerIdentityCommand = de_GetCallerIdentityCommand; + var de_GetCallerIdentityCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadQueryErrorCode(output, parsedOutput.body); + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody: parsedBody.Error, + errorCode + }); + }; + var de_GetFederationTokenCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_GetFederationTokenCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_GetFederationTokenResponse(data.GetFederationTokenResult, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_GetFederationTokenCommand = de_GetFederationTokenCommand; + var de_GetFederationTokenCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadQueryErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "MalformedPolicyDocument": + case "com.amazonaws.sts#MalformedPolicyDocumentException": + throw await de_MalformedPolicyDocumentExceptionRes(parsedOutput, context); + case "PackedPolicyTooLarge": + case "com.amazonaws.sts#PackedPolicyTooLargeException": + throw await de_PackedPolicyTooLargeExceptionRes(parsedOutput, context); + case "RegionDisabledException": + case "com.amazonaws.sts#RegionDisabledException": + throw await de_RegionDisabledExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody: parsedBody.Error, + errorCode + }); + } + }; + var de_GetSessionTokenCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_GetSessionTokenCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_GetSessionTokenResponse(data.GetSessionTokenResult, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_GetSessionTokenCommand = de_GetSessionTokenCommand; + var de_GetSessionTokenCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadQueryErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "RegionDisabledException": + case "com.amazonaws.sts#RegionDisabledException": + throw await de_RegionDisabledExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody: parsedBody.Error, + errorCode + }); + } + }; + var de_ExpiredTokenExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = de_ExpiredTokenException(body.Error, context); + const exception = new models_0_1.ExpiredTokenException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_IDPCommunicationErrorExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = de_IDPCommunicationErrorException(body.Error, context); + const exception = new models_0_1.IDPCommunicationErrorException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_IDPRejectedClaimExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = de_IDPRejectedClaimException(body.Error, context); + const exception = new models_0_1.IDPRejectedClaimException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidAuthorizationMessageExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = de_InvalidAuthorizationMessageException(body.Error, context); + const exception = new models_0_1.InvalidAuthorizationMessageException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidIdentityTokenExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = de_InvalidIdentityTokenException(body.Error, context); + const exception = new models_0_1.InvalidIdentityTokenException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_MalformedPolicyDocumentExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = de_MalformedPolicyDocumentException(body.Error, context); + const exception = new models_0_1.MalformedPolicyDocumentException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_PackedPolicyTooLargeExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = de_PackedPolicyTooLargeException(body.Error, context); + const exception = new models_0_1.PackedPolicyTooLargeException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_RegionDisabledExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = de_RegionDisabledException(body.Error, context); + const exception = new models_0_1.RegionDisabledException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var se_AssumeRoleRequest = (input, context) => { + const entries = {}; + if (input.RoleArn != null) { + entries["RoleArn"] = input.RoleArn; + } + if (input.RoleSessionName != null) { + entries["RoleSessionName"] = input.RoleSessionName; + } + if (input.PolicyArns != null) { + const memberEntries = se_policyDescriptorListType(input.PolicyArns, context); + if (input.PolicyArns?.length === 0) { + entries.PolicyArns = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `PolicyArns.${key}`; + entries[loc] = value; + }); + } + if (input.Policy != null) { + entries["Policy"] = input.Policy; + } + if (input.DurationSeconds != null) { + entries["DurationSeconds"] = input.DurationSeconds; + } + if (input.Tags != null) { + const memberEntries = se_tagListType(input.Tags, context); + if (input.Tags?.length === 0) { + entries.Tags = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `Tags.${key}`; + entries[loc] = value; + }); + } + if (input.TransitiveTagKeys != null) { + const memberEntries = se_tagKeyListType(input.TransitiveTagKeys, context); + if (input.TransitiveTagKeys?.length === 0) { + entries.TransitiveTagKeys = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `TransitiveTagKeys.${key}`; + entries[loc] = value; + }); + } + if (input.ExternalId != null) { + entries["ExternalId"] = input.ExternalId; + } + if (input.SerialNumber != null) { + entries["SerialNumber"] = input.SerialNumber; + } + if (input.TokenCode != null) { + entries["TokenCode"] = input.TokenCode; + } + if (input.SourceIdentity != null) { + entries["SourceIdentity"] = input.SourceIdentity; + } + if (input.ProvidedContexts != null) { + const memberEntries = se_ProvidedContextsListType(input.ProvidedContexts, context); + if (input.ProvidedContexts?.length === 0) { + entries.ProvidedContexts = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `ProvidedContexts.${key}`; + entries[loc] = value; + }); + } + return entries; + }; + var se_AssumeRoleWithSAMLRequest = (input, context) => { + const entries = {}; + if (input.RoleArn != null) { + entries["RoleArn"] = input.RoleArn; + } + if (input.PrincipalArn != null) { + entries["PrincipalArn"] = input.PrincipalArn; + } + if (input.SAMLAssertion != null) { + entries["SAMLAssertion"] = input.SAMLAssertion; + } + if (input.PolicyArns != null) { + const memberEntries = se_policyDescriptorListType(input.PolicyArns, context); + if (input.PolicyArns?.length === 0) { + entries.PolicyArns = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `PolicyArns.${key}`; + entries[loc] = value; + }); + } + if (input.Policy != null) { + entries["Policy"] = input.Policy; + } + if (input.DurationSeconds != null) { + entries["DurationSeconds"] = input.DurationSeconds; + } + return entries; + }; + var se_AssumeRoleWithWebIdentityRequest = (input, context) => { + const entries = {}; + if (input.RoleArn != null) { + entries["RoleArn"] = input.RoleArn; + } + if (input.RoleSessionName != null) { + entries["RoleSessionName"] = input.RoleSessionName; + } + if (input.WebIdentityToken != null) { + entries["WebIdentityToken"] = input.WebIdentityToken; + } + if (input.ProviderId != null) { + entries["ProviderId"] = input.ProviderId; + } + if (input.PolicyArns != null) { + const memberEntries = se_policyDescriptorListType(input.PolicyArns, context); + if (input.PolicyArns?.length === 0) { + entries.PolicyArns = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `PolicyArns.${key}`; + entries[loc] = value; + }); + } + if (input.Policy != null) { + entries["Policy"] = input.Policy; + } + if (input.DurationSeconds != null) { + entries["DurationSeconds"] = input.DurationSeconds; + } + return entries; + }; + var se_DecodeAuthorizationMessageRequest = (input, context) => { + const entries = {}; + if (input.EncodedMessage != null) { + entries["EncodedMessage"] = input.EncodedMessage; + } + return entries; + }; + var se_GetAccessKeyInfoRequest = (input, context) => { + const entries = {}; + if (input.AccessKeyId != null) { + entries["AccessKeyId"] = input.AccessKeyId; + } + return entries; + }; + var se_GetCallerIdentityRequest = (input, context) => { + const entries = {}; + return entries; + }; + var se_GetFederationTokenRequest = (input, context) => { + const entries = {}; + if (input.Name != null) { + entries["Name"] = input.Name; + } + if (input.Policy != null) { + entries["Policy"] = input.Policy; + } + if (input.PolicyArns != null) { + const memberEntries = se_policyDescriptorListType(input.PolicyArns, context); + if (input.PolicyArns?.length === 0) { + entries.PolicyArns = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `PolicyArns.${key}`; + entries[loc] = value; + }); + } + if (input.DurationSeconds != null) { + entries["DurationSeconds"] = input.DurationSeconds; + } + if (input.Tags != null) { + const memberEntries = se_tagListType(input.Tags, context); + if (input.Tags?.length === 0) { + entries.Tags = []; + } + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `Tags.${key}`; + entries[loc] = value; + }); + } + return entries; + }; + var se_GetSessionTokenRequest = (input, context) => { + const entries = {}; + if (input.DurationSeconds != null) { + entries["DurationSeconds"] = input.DurationSeconds; + } + if (input.SerialNumber != null) { + entries["SerialNumber"] = input.SerialNumber; + } + if (input.TokenCode != null) { + entries["TokenCode"] = input.TokenCode; + } + return entries; + }; + var se_policyDescriptorListType = (input, context) => { + const entries = {}; + let counter = 1; + for (const entry of input) { + if (entry === null) { + continue; + } + const memberEntries = se_PolicyDescriptorType(entry, context); + Object.entries(memberEntries).forEach(([key, value]) => { + entries[`member.${counter}.${key}`] = value; + }); + counter++; + } + return entries; + }; + var se_PolicyDescriptorType = (input, context) => { + const entries = {}; + if (input.arn != null) { + entries["arn"] = input.arn; + } + return entries; + }; + var se_ProvidedContext = (input, context) => { + const entries = {}; + if (input.ProviderArn != null) { + entries["ProviderArn"] = input.ProviderArn; + } + if (input.ContextAssertion != null) { + entries["ContextAssertion"] = input.ContextAssertion; + } + return entries; + }; + var se_ProvidedContextsListType = (input, context) => { + const entries = {}; + let counter = 1; + for (const entry of input) { + if (entry === null) { + continue; + } + const memberEntries = se_ProvidedContext(entry, context); + Object.entries(memberEntries).forEach(([key, value]) => { + entries[`member.${counter}.${key}`] = value; + }); + counter++; + } + return entries; + }; + var se_Tag = (input, context) => { + const entries = {}; + if (input.Key != null) { + entries["Key"] = input.Key; + } + if (input.Value != null) { + entries["Value"] = input.Value; + } + return entries; + }; + var se_tagKeyListType = (input, context) => { + const entries = {}; + let counter = 1; + for (const entry of input) { + if (entry === null) { + continue; + } + entries[`member.${counter}`] = entry; + counter++; + } + return entries; + }; + var se_tagListType = (input, context) => { + const entries = {}; + let counter = 1; + for (const entry of input) { + if (entry === null) { + continue; + } + const memberEntries = se_Tag(entry, context); + Object.entries(memberEntries).forEach(([key, value]) => { + entries[`member.${counter}.${key}`] = value; + }); + counter++; + } + return entries; + }; + var de_AssumedRoleUser = (output, context) => { + const contents = {}; + if (output["AssumedRoleId"] !== void 0) { + contents.AssumedRoleId = (0, smithy_client_1.expectString)(output["AssumedRoleId"]); + } + if (output["Arn"] !== void 0) { + contents.Arn = (0, smithy_client_1.expectString)(output["Arn"]); + } + return contents; + }; + var de_AssumeRoleResponse = (output, context) => { + const contents = {}; + if (output["Credentials"] !== void 0) { + contents.Credentials = de_Credentials(output["Credentials"], context); + } + if (output["AssumedRoleUser"] !== void 0) { + contents.AssumedRoleUser = de_AssumedRoleUser(output["AssumedRoleUser"], context); + } + if (output["PackedPolicySize"] !== void 0) { + contents.PackedPolicySize = (0, smithy_client_1.strictParseInt32)(output["PackedPolicySize"]); + } + if (output["SourceIdentity"] !== void 0) { + contents.SourceIdentity = (0, smithy_client_1.expectString)(output["SourceIdentity"]); + } + return contents; + }; + var de_AssumeRoleWithSAMLResponse = (output, context) => { + const contents = {}; + if (output["Credentials"] !== void 0) { + contents.Credentials = de_Credentials(output["Credentials"], context); + } + if (output["AssumedRoleUser"] !== void 0) { + contents.AssumedRoleUser = de_AssumedRoleUser(output["AssumedRoleUser"], context); + } + if (output["PackedPolicySize"] !== void 0) { + contents.PackedPolicySize = (0, smithy_client_1.strictParseInt32)(output["PackedPolicySize"]); + } + if (output["Subject"] !== void 0) { + contents.Subject = (0, smithy_client_1.expectString)(output["Subject"]); + } + if (output["SubjectType"] !== void 0) { + contents.SubjectType = (0, smithy_client_1.expectString)(output["SubjectType"]); + } + if (output["Issuer"] !== void 0) { + contents.Issuer = (0, smithy_client_1.expectString)(output["Issuer"]); + } + if (output["Audience"] !== void 0) { + contents.Audience = (0, smithy_client_1.expectString)(output["Audience"]); + } + if (output["NameQualifier"] !== void 0) { + contents.NameQualifier = (0, smithy_client_1.expectString)(output["NameQualifier"]); + } + if (output["SourceIdentity"] !== void 0) { + contents.SourceIdentity = (0, smithy_client_1.expectString)(output["SourceIdentity"]); + } + return contents; + }; + var de_AssumeRoleWithWebIdentityResponse = (output, context) => { + const contents = {}; + if (output["Credentials"] !== void 0) { + contents.Credentials = de_Credentials(output["Credentials"], context); + } + if (output["SubjectFromWebIdentityToken"] !== void 0) { + contents.SubjectFromWebIdentityToken = (0, smithy_client_1.expectString)(output["SubjectFromWebIdentityToken"]); + } + if (output["AssumedRoleUser"] !== void 0) { + contents.AssumedRoleUser = de_AssumedRoleUser(output["AssumedRoleUser"], context); + } + if (output["PackedPolicySize"] !== void 0) { + contents.PackedPolicySize = (0, smithy_client_1.strictParseInt32)(output["PackedPolicySize"]); + } + if (output["Provider"] !== void 0) { + contents.Provider = (0, smithy_client_1.expectString)(output["Provider"]); + } + if (output["Audience"] !== void 0) { + contents.Audience = (0, smithy_client_1.expectString)(output["Audience"]); + } + if (output["SourceIdentity"] !== void 0) { + contents.SourceIdentity = (0, smithy_client_1.expectString)(output["SourceIdentity"]); + } + return contents; + }; + var de_Credentials = (output, context) => { + const contents = {}; + if (output["AccessKeyId"] !== void 0) { + contents.AccessKeyId = (0, smithy_client_1.expectString)(output["AccessKeyId"]); + } + if (output["SecretAccessKey"] !== void 0) { + contents.SecretAccessKey = (0, smithy_client_1.expectString)(output["SecretAccessKey"]); + } + if (output["SessionToken"] !== void 0) { + contents.SessionToken = (0, smithy_client_1.expectString)(output["SessionToken"]); + } + if (output["Expiration"] !== void 0) { + contents.Expiration = (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseRfc3339DateTimeWithOffset)(output["Expiration"])); + } + return contents; + }; + var de_DecodeAuthorizationMessageResponse = (output, context) => { + const contents = {}; + if (output["DecodedMessage"] !== void 0) { + contents.DecodedMessage = (0, smithy_client_1.expectString)(output["DecodedMessage"]); + } + return contents; + }; + var de_ExpiredTokenException = (output, context) => { + const contents = {}; + if (output["message"] !== void 0) { + contents.message = (0, smithy_client_1.expectString)(output["message"]); + } + return contents; + }; + var de_FederatedUser = (output, context) => { + const contents = {}; + if (output["FederatedUserId"] !== void 0) { + contents.FederatedUserId = (0, smithy_client_1.expectString)(output["FederatedUserId"]); + } + if (output["Arn"] !== void 0) { + contents.Arn = (0, smithy_client_1.expectString)(output["Arn"]); + } + return contents; + }; + var de_GetAccessKeyInfoResponse = (output, context) => { + const contents = {}; + if (output["Account"] !== void 0) { + contents.Account = (0, smithy_client_1.expectString)(output["Account"]); + } + return contents; + }; + var de_GetCallerIdentityResponse = (output, context) => { + const contents = {}; + if (output["UserId"] !== void 0) { + contents.UserId = (0, smithy_client_1.expectString)(output["UserId"]); + } + if (output["Account"] !== void 0) { + contents.Account = (0, smithy_client_1.expectString)(output["Account"]); + } + if (output["Arn"] !== void 0) { + contents.Arn = (0, smithy_client_1.expectString)(output["Arn"]); + } + return contents; + }; + var de_GetFederationTokenResponse = (output, context) => { + const contents = {}; + if (output["Credentials"] !== void 0) { + contents.Credentials = de_Credentials(output["Credentials"], context); + } + if (output["FederatedUser"] !== void 0) { + contents.FederatedUser = de_FederatedUser(output["FederatedUser"], context); + } + if (output["PackedPolicySize"] !== void 0) { + contents.PackedPolicySize = (0, smithy_client_1.strictParseInt32)(output["PackedPolicySize"]); + } + return contents; + }; + var de_GetSessionTokenResponse = (output, context) => { + const contents = {}; + if (output["Credentials"] !== void 0) { + contents.Credentials = de_Credentials(output["Credentials"], context); + } + return contents; + }; + var de_IDPCommunicationErrorException = (output, context) => { + const contents = {}; + if (output["message"] !== void 0) { + contents.message = (0, smithy_client_1.expectString)(output["message"]); + } + return contents; + }; + var de_IDPRejectedClaimException = (output, context) => { + const contents = {}; + if (output["message"] !== void 0) { + contents.message = (0, smithy_client_1.expectString)(output["message"]); + } + return contents; + }; + var de_InvalidAuthorizationMessageException = (output, context) => { + const contents = {}; + if (output["message"] !== void 0) { + contents.message = (0, smithy_client_1.expectString)(output["message"]); + } + return contents; + }; + var de_InvalidIdentityTokenException = (output, context) => { + const contents = {}; + if (output["message"] !== void 0) { + contents.message = (0, smithy_client_1.expectString)(output["message"]); + } + return contents; + }; + var de_MalformedPolicyDocumentException = (output, context) => { + const contents = {}; + if (output["message"] !== void 0) { + contents.message = (0, smithy_client_1.expectString)(output["message"]); + } + return contents; + }; + var de_PackedPolicyTooLargeException = (output, context) => { + const contents = {}; + if (output["message"] !== void 0) { + contents.message = (0, smithy_client_1.expectString)(output["message"]); + } + return contents; + }; + var de_RegionDisabledException = (output, context) => { + const contents = {}; + if (output["message"] !== void 0) { + contents.message = (0, smithy_client_1.expectString)(output["message"]); + } + return contents; + }; + var deserializeMetadata = (output) => ({ + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"] + }); + var collectBodyString = (streamBody, context) => (0, smithy_client_1.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)); + var throwDefaultError = (0, smithy_client_1.withBaseException)(STSServiceException_1.STSServiceException); + var buildHttpRpcRequest = async (context, headers, path, resolvedHostname, body) => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const contents = { + protocol, + hostname, + port, + method: "POST", + path: basePath.endsWith("/") ? basePath.slice(0, -1) + path : basePath + path, + headers + }; + if (resolvedHostname !== void 0) { + contents.hostname = resolvedHostname; + } + if (body !== void 0) { + contents.body = body; + } + return new protocol_http_1.HttpRequest(contents); + }; + var SHARED_HEADERS = { + "content-type": "application/x-www-form-urlencoded" + }; + var parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + const parser = new fast_xml_parser_1.XMLParser({ + attributeNamePrefix: "", + htmlEntities: true, + ignoreAttributes: false, + ignoreDeclaration: true, + parseTagValue: false, + trimValues: false, + tagValueProcessor: (_, val2) => val2.trim() === "" && val2.includes("\n") ? "" : void 0 + }); + parser.addEntity("#xD", "\r"); + parser.addEntity("#10", "\n"); + const parsedObj = parser.parse(encoded); + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return (0, smithy_client_1.getValueFromTextNode)(parsedObjToReturn); + } + return {}; + }); + var parseErrorBody = async (errorBody, context) => { + const value = await parseBody(errorBody, context); + if (value.Error) { + value.Error.message = value.Error.message ?? value.Error.Message; + } + return value; + }; + var buildFormUrlencodedString = (formEntries) => Object.entries(formEntries).map(([key, value]) => (0, smithy_client_1.extendedEncodeURIComponent)(key) + "=" + (0, smithy_client_1.extendedEncodeURIComponent)(value)).join("&"); + var loadQueryErrorCode = (output, data) => { + if (data.Error?.Code !== void 0) { + return data.Error.Code; + } + if (output.statusCode == 404) { + return "NotFound"; + } + }; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/AssumeRoleCommand.js +var require_AssumeRoleCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/AssumeRoleCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AssumeRoleCommand = exports.$Command = void 0; + var middleware_signing_1 = require_dist_cjs16(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_0(); + var Aws_query_1 = require_Aws_query(); + var AssumeRoleCommand = class _AssumeRoleCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _AssumeRoleCommand.getEndpointParameterInstructions())); + this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration)); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "STSClient"; + const commandName = "AssumeRoleCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: models_0_1.AssumeRoleResponseFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_query_1.se_AssumeRoleCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_query_1.de_AssumeRoleCommand)(output, context); + } + }; + exports.AssumeRoleCommand = AssumeRoleCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/AssumeRoleWithWebIdentityCommand.js +var require_AssumeRoleWithWebIdentityCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/AssumeRoleWithWebIdentityCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AssumeRoleWithWebIdentityCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_0(); + var Aws_query_1 = require_Aws_query(); + var AssumeRoleWithWebIdentityCommand = class _AssumeRoleWithWebIdentityCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _AssumeRoleWithWebIdentityCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "STSClient"; + const commandName = "AssumeRoleWithWebIdentityCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.AssumeRoleWithWebIdentityRequestFilterSensitiveLog, + outputFilterSensitiveLog: models_0_1.AssumeRoleWithWebIdentityResponseFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_query_1.se_AssumeRoleWithWebIdentityCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_query_1.de_AssumeRoleWithWebIdentityCommand)(output, context); + } + }; + exports.AssumeRoleWithWebIdentityCommand = AssumeRoleWithWebIdentityCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/defaultStsRoleAssumers.js +var require_defaultStsRoleAssumers = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/defaultStsRoleAssumers.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.decorateDefaultCredentialProvider = exports.getDefaultRoleAssumerWithWebIdentity = exports.getDefaultRoleAssumer = void 0; + var AssumeRoleCommand_1 = require_AssumeRoleCommand(); + var AssumeRoleWithWebIdentityCommand_1 = require_AssumeRoleWithWebIdentityCommand(); + var ASSUME_ROLE_DEFAULT_REGION = "us-east-1"; + var decorateDefaultRegion = (region) => { + if (typeof region !== "function") { + return region === void 0 ? ASSUME_ROLE_DEFAULT_REGION : region; + } + return async () => { + try { + return await region(); + } catch (e) { + return ASSUME_ROLE_DEFAULT_REGION; + } + }; + }; + var getDefaultRoleAssumer = (stsOptions, stsClientCtor) => { + let stsClient; + let closureSourceCreds; + return async (sourceCreds, params) => { + closureSourceCreds = sourceCreds; + if (!stsClient) { + const { logger, region, requestHandler } = stsOptions; + stsClient = new stsClientCtor({ + logger, + credentialDefaultProvider: () => async () => closureSourceCreds, + region: decorateDefaultRegion(region || stsOptions.region), + ...requestHandler ? { requestHandler } : {} + }); + } + const { Credentials } = await stsClient.send(new AssumeRoleCommand_1.AssumeRoleCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`); + } + return { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration + }; + }; + }; + exports.getDefaultRoleAssumer = getDefaultRoleAssumer; + var getDefaultRoleAssumerWithWebIdentity = (stsOptions, stsClientCtor) => { + let stsClient; + return async (params) => { + if (!stsClient) { + const { logger, region, requestHandler } = stsOptions; + stsClient = new stsClientCtor({ + logger, + region: decorateDefaultRegion(region || stsOptions.region), + ...requestHandler ? { requestHandler } : {} + }); + } + const { Credentials } = await stsClient.send(new AssumeRoleWithWebIdentityCommand_1.AssumeRoleWithWebIdentityCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`); + } + return { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration + }; + }; + }; + exports.getDefaultRoleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity; + var decorateDefaultCredentialProvider = (provider) => (input) => provider({ + roleAssumer: (0, exports.getDefaultRoleAssumer)(input, input.stsClientCtor), + roleAssumerWithWebIdentity: (0, exports.getDefaultRoleAssumerWithWebIdentity)(input, input.stsClientCtor), + ...input + }); + exports.decorateDefaultCredentialProvider = decorateDefaultCredentialProvider; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-env/dist-cjs/fromEnv.js +var require_fromEnv = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-env/dist-cjs/fromEnv.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromEnv = exports.ENV_EXPIRATION = exports.ENV_SESSION = exports.ENV_SECRET = exports.ENV_KEY = void 0; + var property_provider_1 = require_dist_cjs6(); + exports.ENV_KEY = "AWS_ACCESS_KEY_ID"; + exports.ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; + exports.ENV_SESSION = "AWS_SESSION_TOKEN"; + exports.ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; + var fromEnv = () => async () => { + const accessKeyId = process.env[exports.ENV_KEY]; + const secretAccessKey = process.env[exports.ENV_SECRET]; + const sessionToken = process.env[exports.ENV_SESSION]; + const expiry = process.env[exports.ENV_EXPIRATION]; + if (accessKeyId && secretAccessKey) { + return { + accessKeyId, + secretAccessKey, + ...sessionToken && { sessionToken }, + ...expiry && { expiration: new Date(expiry) } + }; + } + throw new property_provider_1.CredentialsProviderError("Unable to find environment variable credentials."); + }; + exports.fromEnv = fromEnv; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js +var require_dist_cjs37 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_fromEnv(), exports); + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js +var require_getHomeDir = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getHomeDir = void 0; + var os_1 = require("os"); + var path_1 = require("path"); + var getHomeDir = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + return (0, os_1.homedir)(); + }; + exports.getHomeDir = getHomeDir; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getProfileName.js +var require_getProfileName = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getProfileName.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getProfileName = exports.DEFAULT_PROFILE = exports.ENV_PROFILE = void 0; + exports.ENV_PROFILE = "AWS_PROFILE"; + exports.DEFAULT_PROFILE = "default"; + var getProfileName = (init) => init.profile || process.env[exports.ENV_PROFILE] || exports.DEFAULT_PROFILE; + exports.getProfileName = getProfileName; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js +var require_getSSOTokenFilepath = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getSSOTokenFilepath = void 0; + var crypto_1 = require("crypto"); + var path_1 = require("path"); + var getHomeDir_1 = require_getHomeDir(); + var getSSOTokenFilepath = (id) => { + const hasher = (0, crypto_1.createHash)("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "sso", "cache", `${cacheName}.json`); + }; + exports.getSSOTokenFilepath = getSSOTokenFilepath; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js +var require_getSSOTokenFromFile = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getSSOTokenFromFile = void 0; + var fs_1 = require("fs"); + var getSSOTokenFilepath_1 = require_getSSOTokenFilepath(); + var { readFile } = fs_1.promises; + var getSSOTokenFromFile = async (id) => { + const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); + }; + exports.getSSOTokenFromFile = getSSOTokenFromFile; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getConfigFilepath.js +var require_getConfigFilepath = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getConfigFilepath.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getConfigFilepath = exports.ENV_CONFIG_PATH = void 0; + var path_1 = require("path"); + var getHomeDir_1 = require_getHomeDir(); + exports.ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; + var getConfigFilepath = () => process.env[exports.ENV_CONFIG_PATH] || (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "config"); + exports.getConfigFilepath = getConfigFilepath; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getCredentialsFilepath.js +var require_getCredentialsFilepath = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getCredentialsFilepath.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getCredentialsFilepath = exports.ENV_CREDENTIALS_PATH = void 0; + var path_1 = require("path"); + var getHomeDir_1 = require_getHomeDir(); + exports.ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; + var getCredentialsFilepath = () => process.env[exports.ENV_CREDENTIALS_PATH] || (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "credentials"); + exports.getCredentialsFilepath = getCredentialsFilepath; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getProfileData.js +var require_getProfileData = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getProfileData.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getProfileData = void 0; + var profileKeyRegex = /^profile\s(["'])?([^\1]+)\1$/; + var getProfileData = (data) => Object.entries(data).filter(([key]) => profileKeyRegex.test(key)).reduce((acc, [key, value]) => ({ ...acc, [profileKeyRegex.exec(key)[2]]: value }), { + ...data.default && { default: data.default } + }); + exports.getProfileData = getProfileData; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/parseIni.js +var require_parseIni = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/parseIni.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseIni = void 0; + var profileNameBlockList = ["__proto__", "profile __proto__"]; + var parseIni = (iniData) => { + const map = {}; + let currentSection; + for (let line of iniData.split(/\r?\n/)) { + line = line.split(/(^|\s)[;#]/)[0].trim(); + const isSection = line[0] === "[" && line[line.length - 1] === "]"; + if (isSection) { + currentSection = line.substring(1, line.length - 1); + if (profileNameBlockList.includes(currentSection)) { + throw new Error(`Found invalid profile name "${currentSection}"`); + } + } else if (currentSection) { + const indexOfEqualsSign = line.indexOf("="); + const start = 0; + const end = line.length - 1; + const isAssignment = indexOfEqualsSign !== -1 && indexOfEqualsSign !== start && indexOfEqualsSign !== end; + if (isAssignment) { + const [name, value] = [ + line.substring(0, indexOfEqualsSign).trim(), + line.substring(indexOfEqualsSign + 1).trim() + ]; + map[currentSection] = map[currentSection] || {}; + map[currentSection][name] = value; + } + } + } + return map; + }; + exports.parseIni = parseIni; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js +var require_slurpFile = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.slurpFile = void 0; + var fs_1 = require("fs"); + var { readFile } = fs_1.promises; + var filePromisesHash = {}; + var slurpFile = (path, options) => { + if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) { + filePromisesHash[path] = readFile(path, "utf8"); + } + return filePromisesHash[path]; + }; + exports.slurpFile = slurpFile; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/loadSharedConfigFiles.js +var require_loadSharedConfigFiles = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/loadSharedConfigFiles.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.loadSharedConfigFiles = void 0; + var getConfigFilepath_1 = require_getConfigFilepath(); + var getCredentialsFilepath_1 = require_getCredentialsFilepath(); + var getProfileData_1 = require_getProfileData(); + var parseIni_1 = require_parseIni(); + var slurpFile_1 = require_slurpFile(); + var swallowError = () => ({}); + var loadSharedConfigFiles = async (init = {}) => { + const { filepath = (0, getCredentialsFilepath_1.getCredentialsFilepath)(), configFilepath = (0, getConfigFilepath_1.getConfigFilepath)() } = init; + const parsedFiles = await Promise.all([ + (0, slurpFile_1.slurpFile)(configFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni_1.parseIni).then(getProfileData_1.getProfileData).catch(swallowError), + (0, slurpFile_1.slurpFile)(filepath, { + ignoreCache: init.ignoreCache + }).then(parseIni_1.parseIni).catch(swallowError) + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1] + }; + }; + exports.loadSharedConfigFiles = loadSharedConfigFiles; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSsoSessionData.js +var require_getSsoSessionData = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSsoSessionData.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getSsoSessionData = void 0; + var ssoSessionKeyRegex = /^sso-session\s(["'])?([^\1]+)\1$/; + var getSsoSessionData = (data) => Object.entries(data).filter(([key]) => ssoSessionKeyRegex.test(key)).reduce((acc, [key, value]) => ({ ...acc, [ssoSessionKeyRegex.exec(key)[2]]: value }), {}); + exports.getSsoSessionData = getSsoSessionData; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/loadSsoSessionData.js +var require_loadSsoSessionData = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/loadSsoSessionData.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.loadSsoSessionData = void 0; + var getConfigFilepath_1 = require_getConfigFilepath(); + var getSsoSessionData_1 = require_getSsoSessionData(); + var parseIni_1 = require_parseIni(); + var slurpFile_1 = require_slurpFile(); + var swallowError = () => ({}); + var loadSsoSessionData = async (init = {}) => { + var _a; + return (0, slurpFile_1.slurpFile)((_a = init.configFilepath) !== null && _a !== void 0 ? _a : (0, getConfigFilepath_1.getConfigFilepath)()).then(parseIni_1.parseIni).then(getSsoSessionData_1.getSsoSessionData).catch(swallowError); + }; + exports.loadSsoSessionData = loadSsoSessionData; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/mergeConfigFiles.js +var require_mergeConfigFiles = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/mergeConfigFiles.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mergeConfigFiles = void 0; + var mergeConfigFiles = (...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== void 0) { + Object.assign(merged[key], values); + } else { + merged[key] = values; + } + } + } + return merged; + }; + exports.mergeConfigFiles = mergeConfigFiles; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/parseKnownFiles.js +var require_parseKnownFiles = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/parseKnownFiles.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseKnownFiles = void 0; + var loadSharedConfigFiles_1 = require_loadSharedConfigFiles(); + var mergeConfigFiles_1 = require_mergeConfigFiles(); + var parseKnownFiles = async (init) => { + const parsedFiles = await (0, loadSharedConfigFiles_1.loadSharedConfigFiles)(init); + return (0, mergeConfigFiles_1.mergeConfigFiles)(parsedFiles.configFile, parsedFiles.credentialsFile); + }; + exports.parseKnownFiles = parseKnownFiles; + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/types.js +var require_types5 = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js +var require_dist_cjs38 = __commonJS({ + "../../../node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_getHomeDir(), exports); + tslib_1.__exportStar(require_getProfileName(), exports); + tslib_1.__exportStar(require_getSSOTokenFilepath(), exports); + tslib_1.__exportStar(require_getSSOTokenFromFile(), exports); + tslib_1.__exportStar(require_loadSharedConfigFiles(), exports); + tslib_1.__exportStar(require_loadSsoSessionData(), exports); + tslib_1.__exportStar(require_parseKnownFiles(), exports); + tslib_1.__exportStar(require_types5(), exports); + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/remoteProvider/httpRequest.js +var require_httpRequest2 = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/remoteProvider/httpRequest.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.httpRequest = void 0; + var property_provider_1 = require_dist_cjs6(); + var buffer_1 = require("buffer"); + var http_1 = require("http"); + function httpRequest(options) { + return new Promise((resolve, reject) => { + var _a; + const req = (0, http_1.request)({ + method: "GET", + ...options, + hostname: (_a = options.hostname) === null || _a === void 0 ? void 0 : _a.replace(/^\[(.+)\]$/, "$1") + }); + req.on("error", (err) => { + reject(Object.assign(new property_provider_1.ProviderError("Unable to connect to instance metadata service"), err)); + req.destroy(); + }); + req.on("timeout", () => { + reject(new property_provider_1.ProviderError("TimeoutError from instance metadata service")); + req.destroy(); + }); + req.on("response", (res) => { + const { statusCode = 400 } = res; + if (statusCode < 200 || 300 <= statusCode) { + reject(Object.assign(new property_provider_1.ProviderError("Error response received from instance metadata service"), { statusCode })); + req.destroy(); + } + const chunks = []; + res.on("data", (chunk) => { + chunks.push(chunk); + }); + res.on("end", () => { + resolve(buffer_1.Buffer.concat(chunks)); + req.destroy(); + }); + }); + req.end(); + }); + } + exports.httpRequest = httpRequest; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/remoteProvider/ImdsCredentials.js +var require_ImdsCredentials = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/remoteProvider/ImdsCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromImdsCredentials = exports.isImdsCredentials = void 0; + var isImdsCredentials = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.AccessKeyId === "string" && typeof arg.SecretAccessKey === "string" && typeof arg.Token === "string" && typeof arg.Expiration === "string"; + exports.isImdsCredentials = isImdsCredentials; + var fromImdsCredentials = (creds) => ({ + accessKeyId: creds.AccessKeyId, + secretAccessKey: creds.SecretAccessKey, + sessionToken: creds.Token, + expiration: new Date(creds.Expiration) + }); + exports.fromImdsCredentials = fromImdsCredentials; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/remoteProvider/RemoteProviderInit.js +var require_RemoteProviderInit = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/remoteProvider/RemoteProviderInit.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.providerConfigFromInit = exports.DEFAULT_MAX_RETRIES = exports.DEFAULT_TIMEOUT = void 0; + exports.DEFAULT_TIMEOUT = 1e3; + exports.DEFAULT_MAX_RETRIES = 0; + var providerConfigFromInit = ({ maxRetries = exports.DEFAULT_MAX_RETRIES, timeout = exports.DEFAULT_TIMEOUT }) => ({ maxRetries, timeout }); + exports.providerConfigFromInit = providerConfigFromInit; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/remoteProvider/retry.js +var require_retry3 = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/remoteProvider/retry.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.retry = void 0; + var retry = (toRetry, maxRetries) => { + let promise = toRetry(); + for (let i = 0; i < maxRetries; i++) { + promise = promise.catch(toRetry); + } + return promise; + }; + exports.retry = retry; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/fromContainerMetadata.js +var require_fromContainerMetadata = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/fromContainerMetadata.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromContainerMetadata = exports.ENV_CMDS_AUTH_TOKEN = exports.ENV_CMDS_RELATIVE_URI = exports.ENV_CMDS_FULL_URI = void 0; + var property_provider_1 = require_dist_cjs6(); + var url_1 = require("url"); + var httpRequest_1 = require_httpRequest2(); + var ImdsCredentials_1 = require_ImdsCredentials(); + var RemoteProviderInit_1 = require_RemoteProviderInit(); + var retry_1 = require_retry3(); + exports.ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; + exports.ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; + exports.ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; + var fromContainerMetadata = (init = {}) => { + const { timeout, maxRetries } = (0, RemoteProviderInit_1.providerConfigFromInit)(init); + return () => (0, retry_1.retry)(async () => { + const requestOptions = await getCmdsUri(); + const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); + if (!(0, ImdsCredentials_1.isImdsCredentials)(credsResponse)) { + throw new property_provider_1.CredentialsProviderError("Invalid response received from instance metadata service."); + } + return (0, ImdsCredentials_1.fromImdsCredentials)(credsResponse); + }, maxRetries); + }; + exports.fromContainerMetadata = fromContainerMetadata; + var requestFromEcsImds = async (timeout, options) => { + if (process.env[exports.ENV_CMDS_AUTH_TOKEN]) { + options.headers = { + ...options.headers, + Authorization: process.env[exports.ENV_CMDS_AUTH_TOKEN] + }; + } + const buffer = await (0, httpRequest_1.httpRequest)({ + ...options, + timeout + }); + return buffer.toString(); + }; + var CMDS_IP = "169.254.170.2"; + var GREENGRASS_HOSTS = { + localhost: true, + "127.0.0.1": true + }; + var GREENGRASS_PROTOCOLS = { + "http:": true, + "https:": true + }; + var getCmdsUri = async () => { + if (process.env[exports.ENV_CMDS_RELATIVE_URI]) { + return { + hostname: CMDS_IP, + path: process.env[exports.ENV_CMDS_RELATIVE_URI] + }; + } + if (process.env[exports.ENV_CMDS_FULL_URI]) { + const parsed = (0, url_1.parse)(process.env[exports.ENV_CMDS_FULL_URI]); + if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) { + throw new property_provider_1.CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, false); + } + if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) { + throw new property_provider_1.CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, false); + } + return { + ...parsed, + port: parsed.port ? parseInt(parsed.port, 10) : void 0 + }; + } + throw new property_provider_1.CredentialsProviderError(`The container metadata credential provider cannot be used unless the ${exports.ENV_CMDS_RELATIVE_URI} or ${exports.ENV_CMDS_FULL_URI} environment variable is set`, false); + }; + } +}); + +// ../../../node_modules/@smithy/node-config-provider/dist-cjs/fromEnv.js +var require_fromEnv2 = __commonJS({ + "../../../node_modules/@smithy/node-config-provider/dist-cjs/fromEnv.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromEnv = void 0; + var property_provider_1 = require_dist_cjs6(); + var fromEnv = (envVarSelector) => async () => { + try { + const config = envVarSelector(process.env); + if (config === void 0) { + throw new Error(); + } + return config; + } catch (e) { + throw new property_provider_1.CredentialsProviderError(e.message || `Cannot load config from environment variables with getter: ${envVarSelector}`); + } + }; + exports.fromEnv = fromEnv; + } +}); + +// ../../../node_modules/@smithy/node-config-provider/dist-cjs/fromSharedConfigFiles.js +var require_fromSharedConfigFiles = __commonJS({ + "../../../node_modules/@smithy/node-config-provider/dist-cjs/fromSharedConfigFiles.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromSharedConfigFiles = void 0; + var property_provider_1 = require_dist_cjs6(); + var shared_ini_file_loader_1 = require_dist_cjs38(); + var fromSharedConfigFiles = (configSelector, { preferredFile = "config", ...init } = {}) => async () => { + const profile = (0, shared_ini_file_loader_1.getProfileName)(init); + const { configFile, credentialsFile } = await (0, shared_ini_file_loader_1.loadSharedConfigFiles)(init); + const profileFromCredentials = credentialsFile[profile] || {}; + const profileFromConfig = configFile[profile] || {}; + const mergedProfile = preferredFile === "config" ? { ...profileFromCredentials, ...profileFromConfig } : { ...profileFromConfig, ...profileFromCredentials }; + try { + const configValue = configSelector(mergedProfile); + if (configValue === void 0) { + throw new Error(); + } + return configValue; + } catch (e) { + throw new property_provider_1.CredentialsProviderError(e.message || `Cannot load config for profile ${profile} in SDK configuration files with getter: ${configSelector}`); + } + }; + exports.fromSharedConfigFiles = fromSharedConfigFiles; + } +}); + +// ../../../node_modules/@smithy/node-config-provider/dist-cjs/fromStatic.js +var require_fromStatic2 = __commonJS({ + "../../../node_modules/@smithy/node-config-provider/dist-cjs/fromStatic.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromStatic = void 0; + var property_provider_1 = require_dist_cjs6(); + var isFunction = (func) => typeof func === "function"; + var fromStatic = (defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : (0, property_provider_1.fromStatic)(defaultValue); + exports.fromStatic = fromStatic; + } +}); + +// ../../../node_modules/@smithy/node-config-provider/dist-cjs/configLoader.js +var require_configLoader = __commonJS({ + "../../../node_modules/@smithy/node-config-provider/dist-cjs/configLoader.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.loadConfig = void 0; + var property_provider_1 = require_dist_cjs6(); + var fromEnv_1 = require_fromEnv2(); + var fromSharedConfigFiles_1 = require_fromSharedConfigFiles(); + var fromStatic_1 = require_fromStatic2(); + var loadConfig = ({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => (0, property_provider_1.memoize)((0, property_provider_1.chain)((0, fromEnv_1.fromEnv)(environmentVariableSelector), (0, fromSharedConfigFiles_1.fromSharedConfigFiles)(configFileSelector, configuration), (0, fromStatic_1.fromStatic)(defaultValue))); + exports.loadConfig = loadConfig; + } +}); + +// ../../../node_modules/@smithy/node-config-provider/dist-cjs/index.js +var require_dist_cjs39 = __commonJS({ + "../../../node_modules/@smithy/node-config-provider/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_configLoader(), exports); + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/config/Endpoint.js +var require_Endpoint = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/config/Endpoint.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Endpoint = void 0; + var Endpoint; + (function(Endpoint2) { + Endpoint2["IPv4"] = "http://169.254.169.254"; + Endpoint2["IPv6"] = "http://[fd00:ec2::254]"; + })(Endpoint = exports.Endpoint || (exports.Endpoint = {})); + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/config/EndpointConfigOptions.js +var require_EndpointConfigOptions = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/config/EndpointConfigOptions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ENDPOINT_CONFIG_OPTIONS = exports.CONFIG_ENDPOINT_NAME = exports.ENV_ENDPOINT_NAME = void 0; + exports.ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; + exports.CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; + exports.ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[exports.ENV_ENDPOINT_NAME], + configFileSelector: (profile) => profile[exports.CONFIG_ENDPOINT_NAME], + default: void 0 + }; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/config/EndpointMode.js +var require_EndpointMode = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/config/EndpointMode.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.EndpointMode = void 0; + var EndpointMode; + (function(EndpointMode2) { + EndpointMode2["IPv4"] = "IPv4"; + EndpointMode2["IPv6"] = "IPv6"; + })(EndpointMode = exports.EndpointMode || (exports.EndpointMode = {})); + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/config/EndpointModeConfigOptions.js +var require_EndpointModeConfigOptions = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/config/EndpointModeConfigOptions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ENDPOINT_MODE_CONFIG_OPTIONS = exports.CONFIG_ENDPOINT_MODE_NAME = exports.ENV_ENDPOINT_MODE_NAME = void 0; + var EndpointMode_1 = require_EndpointMode(); + exports.ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; + exports.CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; + exports.ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[exports.ENV_ENDPOINT_MODE_NAME], + configFileSelector: (profile) => profile[exports.CONFIG_ENDPOINT_MODE_NAME], + default: EndpointMode_1.EndpointMode.IPv4 + }; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/utils/getInstanceMetadataEndpoint.js +var require_getInstanceMetadataEndpoint = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/utils/getInstanceMetadataEndpoint.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getInstanceMetadataEndpoint = void 0; + var node_config_provider_1 = require_dist_cjs39(); + var url_parser_1 = require_dist_cjs24(); + var Endpoint_1 = require_Endpoint(); + var EndpointConfigOptions_1 = require_EndpointConfigOptions(); + var EndpointMode_1 = require_EndpointMode(); + var EndpointModeConfigOptions_1 = require_EndpointModeConfigOptions(); + var getInstanceMetadataEndpoint = async () => (0, url_parser_1.parseUrl)(await getFromEndpointConfig() || await getFromEndpointModeConfig()); + exports.getInstanceMetadataEndpoint = getInstanceMetadataEndpoint; + var getFromEndpointConfig = async () => (0, node_config_provider_1.loadConfig)(EndpointConfigOptions_1.ENDPOINT_CONFIG_OPTIONS)(); + var getFromEndpointModeConfig = async () => { + const endpointMode = await (0, node_config_provider_1.loadConfig)(EndpointModeConfigOptions_1.ENDPOINT_MODE_CONFIG_OPTIONS)(); + switch (endpointMode) { + case EndpointMode_1.EndpointMode.IPv4: + return Endpoint_1.Endpoint.IPv4; + case EndpointMode_1.EndpointMode.IPv6: + return Endpoint_1.Endpoint.IPv6; + default: + throw new Error(`Unsupported endpoint mode: ${endpointMode}. Select from ${Object.values(EndpointMode_1.EndpointMode)}`); + } + }; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/utils/getExtendedInstanceMetadataCredentials.js +var require_getExtendedInstanceMetadataCredentials = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/utils/getExtendedInstanceMetadataCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getExtendedInstanceMetadataCredentials = void 0; + var STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60; + var STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60; + var STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html"; + var getExtendedInstanceMetadataCredentials = (credentials, logger) => { + var _a; + const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS); + const newExpiration = new Date(Date.now() + refreshInterval * 1e3); + logger.warn("Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: " + STATIC_STABILITY_DOC_URL); + const originalExpiration = (_a = credentials.originalExpiration) !== null && _a !== void 0 ? _a : credentials.expiration; + return { + ...credentials, + ...originalExpiration ? { originalExpiration } : {}, + expiration: newExpiration + }; + }; + exports.getExtendedInstanceMetadataCredentials = getExtendedInstanceMetadataCredentials; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/utils/staticStabilityProvider.js +var require_staticStabilityProvider = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/utils/staticStabilityProvider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.staticStabilityProvider = void 0; + var getExtendedInstanceMetadataCredentials_1 = require_getExtendedInstanceMetadataCredentials(); + var staticStabilityProvider = (provider, options = {}) => { + const logger = (options === null || options === void 0 ? void 0 : options.logger) || console; + let pastCredentials; + return async () => { + let credentials; + try { + credentials = await provider(); + if (credentials.expiration && credentials.expiration.getTime() < Date.now()) { + credentials = (0, getExtendedInstanceMetadataCredentials_1.getExtendedInstanceMetadataCredentials)(credentials, logger); + } + } catch (e) { + if (pastCredentials) { + logger.warn("Credential renew failed: ", e); + credentials = (0, getExtendedInstanceMetadataCredentials_1.getExtendedInstanceMetadataCredentials)(pastCredentials, logger); + } else { + throw e; + } + } + pastCredentials = credentials; + return credentials; + }; + }; + exports.staticStabilityProvider = staticStabilityProvider; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/fromInstanceMetadata.js +var require_fromInstanceMetadata = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/fromInstanceMetadata.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromInstanceMetadata = void 0; + var property_provider_1 = require_dist_cjs6(); + var httpRequest_1 = require_httpRequest2(); + var ImdsCredentials_1 = require_ImdsCredentials(); + var RemoteProviderInit_1 = require_RemoteProviderInit(); + var retry_1 = require_retry3(); + var getInstanceMetadataEndpoint_1 = require_getInstanceMetadataEndpoint(); + var staticStabilityProvider_1 = require_staticStabilityProvider(); + var IMDS_PATH = "/latest/meta-data/iam/security-credentials/"; + var IMDS_TOKEN_PATH = "/latest/api/token"; + var fromInstanceMetadata = (init = {}) => (0, staticStabilityProvider_1.staticStabilityProvider)(getInstanceImdsProvider(init), { logger: init.logger }); + exports.fromInstanceMetadata = fromInstanceMetadata; + var getInstanceImdsProvider = (init) => { + let disableFetchToken = false; + const { timeout, maxRetries } = (0, RemoteProviderInit_1.providerConfigFromInit)(init); + const getCredentials = async (maxRetries2, options) => { + const profile = (await (0, retry_1.retry)(async () => { + let profile2; + try { + profile2 = await getProfile(options); + } catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return profile2; + }, maxRetries2)).trim(); + return (0, retry_1.retry)(async () => { + let creds; + try { + creds = await getCredentialsFromProfile(profile, options); + } catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return creds; + }, maxRetries2); + }; + return async () => { + const endpoint = await (0, getInstanceMetadataEndpoint_1.getInstanceMetadataEndpoint)(); + if (disableFetchToken) { + return getCredentials(maxRetries, { ...endpoint, timeout }); + } else { + let token; + try { + token = (await getMetadataToken({ ...endpoint, timeout })).toString(); + } catch (error) { + if ((error === null || error === void 0 ? void 0 : error.statusCode) === 400) { + throw Object.assign(error, { + message: "EC2 Metadata token request returned error" + }); + } else if (error.message === "TimeoutError" || [403, 404, 405].includes(error.statusCode)) { + disableFetchToken = true; + } + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + return getCredentials(maxRetries, { + ...endpoint, + headers: { + "x-aws-ec2-metadata-token": token + }, + timeout + }); + } + }; + }; + var getMetadataToken = async (options) => (0, httpRequest_1.httpRequest)({ + ...options, + path: IMDS_TOKEN_PATH, + method: "PUT", + headers: { + "x-aws-ec2-metadata-token-ttl-seconds": "21600" + } + }); + var getProfile = async (options) => (await (0, httpRequest_1.httpRequest)({ ...options, path: IMDS_PATH })).toString(); + var getCredentialsFromProfile = async (profile, options) => { + const credsResponse = JSON.parse((await (0, httpRequest_1.httpRequest)({ + ...options, + path: IMDS_PATH + profile + })).toString()); + if (!(0, ImdsCredentials_1.isImdsCredentials)(credsResponse)) { + throw new property_provider_1.CredentialsProviderError("Invalid response received from instance metadata service."); + } + return (0, ImdsCredentials_1.fromImdsCredentials)(credsResponse); + }; + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/types.js +var require_types6 = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@smithy/credential-provider-imds/dist-cjs/index.js +var require_dist_cjs40 = __commonJS({ + "../../../node_modules/@smithy/credential-provider-imds/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getInstanceMetadataEndpoint = exports.httpRequest = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_fromContainerMetadata(), exports); + tslib_1.__exportStar(require_fromInstanceMetadata(), exports); + tslib_1.__exportStar(require_RemoteProviderInit(), exports); + tslib_1.__exportStar(require_types6(), exports); + var httpRequest_1 = require_httpRequest2(); + Object.defineProperty(exports, "httpRequest", { enumerable: true, get: function() { + return httpRequest_1.httpRequest; + } }); + var getInstanceMetadataEndpoint_1 = require_getInstanceMetadataEndpoint(); + Object.defineProperty(exports, "getInstanceMetadataEndpoint", { enumerable: true, get: function() { + return getInstanceMetadataEndpoint_1.getInstanceMetadataEndpoint; + } }); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveCredentialSource.js +var require_resolveCredentialSource = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveCredentialSource.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveCredentialSource = void 0; + var credential_provider_env_1 = require_dist_cjs37(); + var credential_provider_imds_1 = require_dist_cjs40(); + var property_provider_1 = require_dist_cjs6(); + var resolveCredentialSource = (credentialSource, profileName) => { + const sourceProvidersMap = { + EcsContainer: credential_provider_imds_1.fromContainerMetadata, + Ec2InstanceMetadata: credential_provider_imds_1.fromInstanceMetadata, + Environment: credential_provider_env_1.fromEnv + }; + if (credentialSource in sourceProvidersMap) { + return sourceProvidersMap[credentialSource](); + } else { + throw new property_provider_1.CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, expected EcsContainer or Ec2InstanceMetadata or Environment.`); + } + }; + exports.resolveCredentialSource = resolveCredentialSource; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveAssumeRoleCredentials.js +var require_resolveAssumeRoleCredentials = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveAssumeRoleCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveAssumeRoleCredentials = exports.isAssumeRoleProfile = void 0; + var property_provider_1 = require_dist_cjs6(); + var shared_ini_file_loader_1 = require_dist_cjs38(); + var resolveCredentialSource_1 = require_resolveCredentialSource(); + var resolveProfileData_1 = require_resolveProfileData(); + var isAssumeRoleProfile = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.role_arn === "string" && ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1 && ["undefined", "string"].indexOf(typeof arg.external_id) > -1 && ["undefined", "string"].indexOf(typeof arg.mfa_serial) > -1 && (isAssumeRoleWithSourceProfile(arg) || isAssumeRoleWithProviderProfile(arg)); + exports.isAssumeRoleProfile = isAssumeRoleProfile; + var isAssumeRoleWithSourceProfile = (arg) => typeof arg.source_profile === "string" && typeof arg.credential_source === "undefined"; + var isAssumeRoleWithProviderProfile = (arg) => typeof arg.credential_source === "string" && typeof arg.source_profile === "undefined"; + var resolveAssumeRoleCredentials = async (profileName, profiles, options, visitedProfiles = {}) => { + const data = profiles[profileName]; + if (!options.roleAssumer) { + throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} requires a role to be assumed, but no role assumption callback was provided.`, false); + } + const { source_profile } = data; + if (source_profile && source_profile in visitedProfiles) { + throw new property_provider_1.CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile ${(0, shared_ini_file_loader_1.getProfileName)(options)}. Profiles visited: ` + Object.keys(visitedProfiles).join(", "), false); + } + const sourceCredsProvider = source_profile ? (0, resolveProfileData_1.resolveProfileData)(source_profile, profiles, options, { + ...visitedProfiles, + [source_profile]: true + }) : (0, resolveCredentialSource_1.resolveCredentialSource)(data.credential_source, profileName)(); + const params = { + RoleArn: data.role_arn, + RoleSessionName: data.role_session_name || `aws-sdk-js-${Date.now()}`, + ExternalId: data.external_id + }; + const { mfa_serial } = data; + if (mfa_serial) { + if (!options.mfaCodeProvider) { + throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`, false); + } + params.SerialNumber = mfa_serial; + params.TokenCode = await options.mfaCodeProvider(mfa_serial); + } + const sourceCreds = await sourceCredsProvider; + return options.roleAssumer(sourceCreds, params); + }; + exports.resolveAssumeRoleCredentials = resolveAssumeRoleCredentials; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/getValidatedProcessCredentials.js +var require_getValidatedProcessCredentials = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/getValidatedProcessCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getValidatedProcessCredentials = void 0; + var getValidatedProcessCredentials = (profileName, data) => { + if (data.Version !== 1) { + throw Error(`Profile ${profileName} credential_process did not return Version 1.`); + } + if (data.AccessKeyId === void 0 || data.SecretAccessKey === void 0) { + throw Error(`Profile ${profileName} credential_process returned invalid credentials.`); + } + if (data.Expiration) { + const currentTime = /* @__PURE__ */ new Date(); + const expireTime = new Date(data.Expiration); + if (expireTime < currentTime) { + throw Error(`Profile ${profileName} credential_process returned expired credentials.`); + } + } + return { + accessKeyId: data.AccessKeyId, + secretAccessKey: data.SecretAccessKey, + ...data.SessionToken && { sessionToken: data.SessionToken }, + ...data.Expiration && { expiration: new Date(data.Expiration) } + }; + }; + exports.getValidatedProcessCredentials = getValidatedProcessCredentials; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/resolveProcessCredentials.js +var require_resolveProcessCredentials = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/resolveProcessCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveProcessCredentials = void 0; + var property_provider_1 = require_dist_cjs6(); + var child_process_1 = require("child_process"); + var util_1 = require("util"); + var getValidatedProcessCredentials_1 = require_getValidatedProcessCredentials(); + var resolveProcessCredentials = async (profileName, profiles) => { + const profile = profiles[profileName]; + if (profiles[profileName]) { + const credentialProcess = profile["credential_process"]; + if (credentialProcess !== void 0) { + const execPromise = (0, util_1.promisify)(child_process_1.exec); + try { + const { stdout } = await execPromise(credentialProcess); + let data; + try { + data = JSON.parse(stdout.trim()); + } catch (_a) { + throw Error(`Profile ${profileName} credential_process returned invalid JSON.`); + } + return (0, getValidatedProcessCredentials_1.getValidatedProcessCredentials)(profileName, data); + } catch (error) { + throw new property_provider_1.CredentialsProviderError(error.message); + } + } else { + throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`); + } + } else { + throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`); + } + }; + exports.resolveProcessCredentials = resolveProcessCredentials; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/fromProcess.js +var require_fromProcess = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/fromProcess.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromProcess = void 0; + var shared_ini_file_loader_1 = require_dist_cjs38(); + var resolveProcessCredentials_1 = require_resolveProcessCredentials(); + var fromProcess = (init = {}) => async () => { + const profiles = await (0, shared_ini_file_loader_1.parseKnownFiles)(init); + return (0, resolveProcessCredentials_1.resolveProcessCredentials)((0, shared_ini_file_loader_1.getProfileName)(init), profiles); + }; + exports.fromProcess = fromProcess; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js +var require_dist_cjs41 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_fromProcess(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveProcessCredentials.js +var require_resolveProcessCredentials2 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveProcessCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveProcessCredentials = exports.isProcessProfile = void 0; + var credential_provider_process_1 = require_dist_cjs41(); + var isProcessProfile = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.credential_process === "string"; + exports.isProcessProfile = isProcessProfile; + var resolveProcessCredentials = async (options, profile) => (0, credential_provider_process_1.fromProcess)({ + ...options, + profile + })(); + exports.resolveProcessCredentials = resolveProcessCredentials; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/isSsoProfile.js +var require_isSsoProfile = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/isSsoProfile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isSsoProfile = void 0; + var isSsoProfile = (arg) => arg && (typeof arg.sso_start_url === "string" || typeof arg.sso_account_id === "string" || typeof arg.sso_session === "string" || typeof arg.sso_region === "string" || typeof arg.sso_role_name === "string"); + exports.isSsoProfile = isSsoProfile; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/EndpointParameters.js +var require_EndpointParameters3 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/EndpointParameters.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveClientEndpointParameters = void 0; + var resolveClientEndpointParameters = (options) => { + return { + ...options, + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "awsssoportal" + }; + }; + exports.resolveClientEndpointParameters = resolveClientEndpointParameters; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/package.json +var require_package3 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/package.json"(exports, module2) { + module2.exports = { + name: "@aws-sdk/client-sso", + description: "AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native", + version: "3.387.0", + scripts: { + build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", + "build:cjs": "tsc -p tsconfig.cjs.json", + "build:docs": "typedoc", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "lerna run --scope $npm_package_name --include-dependencies build", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + clean: "rimraf ./dist-* && rimraf *.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "generate:client": "node ../../scripts/generate-clients/single-service --solo sso" + }, + main: "./dist-cjs/index.js", + types: "./dist-types/index.d.ts", + module: "./dist-es/index.js", + sideEffects: false, + dependencies: { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.387.0", + "@aws-sdk/middleware-logger": "3.387.0", + "@aws-sdk/middleware-recursion-detection": "3.387.0", + "@aws-sdk/middleware-user-agent": "3.387.0", + "@aws-sdk/types": "3.387.0", + "@aws-sdk/util-endpoints": "3.387.0", + "@aws-sdk/util-user-agent-browser": "3.387.0", + "@aws-sdk/util-user-agent-node": "3.387.0", + "@smithy/config-resolver": "^2.0.2", + "@smithy/fetch-http-handler": "^2.0.2", + "@smithy/hash-node": "^2.0.2", + "@smithy/invalid-dependency": "^2.0.2", + "@smithy/middleware-content-length": "^2.0.2", + "@smithy/middleware-endpoint": "^2.0.2", + "@smithy/middleware-retry": "^2.0.2", + "@smithy/middleware-serde": "^2.0.2", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.2", + "@smithy/node-http-handler": "^2.0.2", + "@smithy/protocol-http": "^2.0.2", + "@smithy/smithy-client": "^2.0.2", + "@smithy/types": "^2.1.0", + "@smithy/url-parser": "^2.0.2", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.0.0", + "@smithy/util-defaults-mode-browser": "^2.0.2", + "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + tslib: "^2.5.0" + }, + devDependencies: { + "@smithy/service-client-documentation-generator": "^2.0.0", + "@tsconfig/node14": "1.0.3", + "@types/node": "^14.14.31", + concurrently: "7.0.0", + "downlevel-dts": "0.10.1", + rimraf: "3.0.2", + typedoc: "0.23.23", + typescript: "~4.9.5" + }, + engines: { + node: ">=14.0.0" + }, + typesVersions: { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + files: [ + "dist-*/**" + ], + author: { + name: "AWS SDK for JavaScript Team", + url: "https://aws.amazon.com/javascript/" + }, + license: "Apache-2.0", + browser: { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.browser" + }, + "react-native": { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.native" + }, + homepage: "https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sso", + repository: { + type: "git", + url: "https://github.com/aws/aws-sdk-js-v3.git", + directory: "clients/client-sso" + } + }; + } +}); + +// ../../../node_modules/@aws-sdk/util-user-agent-node/dist-cjs/is-crt-available.js +var require_is_crt_available = __commonJS({ + "../../../node_modules/@aws-sdk/util-user-agent-node/dist-cjs/is-crt-available.js"(exports, module2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isCrtAvailable = void 0; + var isCrtAvailable = () => { + try { + if (typeof require === "function" && typeof module2 !== "undefined" && require("aws-crt")) { + return ["md/crt-avail"]; + } + return null; + } catch (e) { + return null; + } + }; + exports.isCrtAvailable = isCrtAvailable; + } +}); + +// ../../../node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js +var require_dist_cjs42 = __commonJS({ + "../../../node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defaultUserAgent = exports.UA_APP_ID_INI_NAME = exports.UA_APP_ID_ENV_NAME = void 0; + var node_config_provider_1 = require_dist_cjs39(); + var os_1 = require("os"); + var process_1 = require("process"); + var is_crt_available_1 = require_is_crt_available(); + exports.UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; + exports.UA_APP_ID_INI_NAME = "sdk-ua-app-id"; + var defaultUserAgent = ({ serviceId, clientVersion }) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.0"], + [`os/${(0, os_1.platform)()}`, (0, os_1.release)()], + ["lang/js"], + ["md/nodejs", `${process_1.versions.node}`] + ]; + const crtAvailable = (0, is_crt_available_1.isCrtAvailable)(); + if (crtAvailable) { + sections.push(crtAvailable); + } + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + if (process_1.env.AWS_EXECUTION_ENV) { + sections.push([`exec-env/${process_1.env.AWS_EXECUTION_ENV}`]); + } + const appIdPromise = (0, node_config_provider_1.loadConfig)({ + environmentVariableSelector: (env) => env[exports.UA_APP_ID_ENV_NAME], + configFileSelector: (profile) => profile[exports.UA_APP_ID_INI_NAME], + default: void 0 + })(); + let resolvedUserAgent = void 0; + return async () => { + if (!resolvedUserAgent) { + const appId = await appIdPromise; + resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections]; + } + return resolvedUserAgent; + }; + }; + exports.defaultUserAgent = defaultUserAgent; + } +}); + +// ../../../node_modules/@smithy/hash-node/dist-cjs/index.js +var require_dist_cjs43 = __commonJS({ + "../../../node_modules/@smithy/hash-node/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Hash = void 0; + var util_buffer_from_1 = require_dist_cjs12(); + var util_utf8_1 = require_dist_cjs13(); + var buffer_1 = require("buffer"); + var crypto_1 = require("crypto"); + var Hash = class { + constructor(algorithmIdentifier, secret) { + this.algorithmIdentifier = algorithmIdentifier; + this.secret = secret; + this.reset(); + } + update(toHash, encoding) { + this.hash.update((0, util_utf8_1.toUint8Array)(castSourceData(toHash, encoding))); + } + digest() { + return Promise.resolve(this.hash.digest()); + } + reset() { + this.hash = this.secret ? (0, crypto_1.createHmac)(this.algorithmIdentifier, castSourceData(this.secret)) : (0, crypto_1.createHash)(this.algorithmIdentifier); + } + }; + exports.Hash = Hash; + function castSourceData(toCast, encoding) { + if (buffer_1.Buffer.isBuffer(toCast)) { + return toCast; + } + if (typeof toCast === "string") { + return (0, util_buffer_from_1.fromString)(toCast, encoding); + } + if (ArrayBuffer.isView(toCast)) { + return (0, util_buffer_from_1.fromArrayBuffer)(toCast.buffer, toCast.byteOffset, toCast.byteLength); + } + return (0, util_buffer_from_1.fromArrayBuffer)(toCast); + } + } +}); + +// ../../../node_modules/@smithy/util-body-length-node/dist-cjs/calculateBodyLength.js +var require_calculateBodyLength = __commonJS({ + "../../../node_modules/@smithy/util-body-length-node/dist-cjs/calculateBodyLength.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.calculateBodyLength = void 0; + var fs_1 = require("fs"); + var calculateBodyLength = (body) => { + if (!body) { + return 0; + } + if (typeof body === "string") { + return Buffer.from(body).length; + } else if (typeof body.byteLength === "number") { + return body.byteLength; + } else if (typeof body.size === "number") { + return body.size; + } else if (typeof body.path === "string" || Buffer.isBuffer(body.path)) { + return (0, fs_1.lstatSync)(body.path).size; + } else if (typeof body.fd === "number") { + return (0, fs_1.fstatSync)(body.fd).size; + } + throw new Error(`Body Length computation failed for ${body}`); + }; + exports.calculateBodyLength = calculateBodyLength; + } +}); + +// ../../../node_modules/@smithy/util-body-length-node/dist-cjs/index.js +var require_dist_cjs44 = __commonJS({ + "../../../node_modules/@smithy/util-body-length-node/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_calculateBodyLength(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/ruleset.js +var require_ruleset = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/ruleset.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ruleSet = void 0; + var p = "required"; + var q = "fn"; + var r = "argv"; + var s = "ref"; + var a = "PartitionResult"; + var b = "tree"; + var c = "error"; + var d = "endpoint"; + var e = { [p]: false, "type": "String" }; + var f = { [p]: true, "default": false, "type": "Boolean" }; + var g = { [s]: "Endpoint" }; + var h = { [q]: "booleanEquals", [r]: [{ [s]: "UseFIPS" }, true] }; + var i = { [q]: "booleanEquals", [r]: [{ [s]: "UseDualStack" }, true] }; + var j = {}; + var k = { [q]: "booleanEquals", [r]: [true, { [q]: "getAttr", [r]: [{ [s]: a }, "supportsFIPS"] }] }; + var l = { [q]: "booleanEquals", [r]: [true, { [q]: "getAttr", [r]: [{ [s]: a }, "supportsDualStack"] }] }; + var m = [g]; + var n = [h]; + var o = [i]; + var _data = { version: "1.0", parameters: { Region: e, UseDualStack: f, UseFIPS: f, Endpoint: e }, rules: [{ conditions: [{ [q]: "aws.partition", [r]: [{ [s]: "Region" }], assign: a }], type: b, rules: [{ conditions: [{ [q]: "isSet", [r]: m }, { [q]: "parseURL", [r]: m, assign: "url" }], type: b, rules: [{ conditions: n, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: c }, { type: b, rules: [{ conditions: o, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: c }, { endpoint: { url: g, properties: j, headers: j }, type: d }] }] }, { conditions: [h, i], type: b, rules: [{ conditions: [k, l], type: b, rules: [{ endpoint: { url: "https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: j, headers: j }, type: d }] }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: c }] }, { conditions: n, type: b, rules: [{ conditions: [k], type: b, rules: [{ type: b, rules: [{ endpoint: { url: "https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}", properties: j, headers: j }, type: d }] }] }, { error: "FIPS is enabled but this partition does not support FIPS", type: c }] }, { conditions: o, type: b, rules: [{ conditions: [l], type: b, rules: [{ endpoint: { url: "https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: j, headers: j }, type: d }] }, { error: "DualStack is enabled but this partition does not support DualStack", type: c }] }, { endpoint: { url: "https://portal.sso.{Region}.{PartitionResult#dnsSuffix}", properties: j, headers: j }, type: d }] }] }; + exports.ruleSet = _data; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/endpointResolver.js +var require_endpointResolver = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/endpointResolver.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defaultEndpointResolver = void 0; + var util_endpoints_1 = require_dist_cjs18(); + var ruleset_1 = require_ruleset(); + var defaultEndpointResolver = (endpointParams, context = {}) => { + return (0, util_endpoints_1.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams, + logger: context.logger + }); + }; + exports.defaultEndpointResolver = defaultEndpointResolver; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.shared.js +var require_runtimeConfig_shared = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.shared.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRuntimeConfig = void 0; + var smithy_client_1 = require_dist_cjs35(); + var url_parser_1 = require_dist_cjs24(); + var util_base64_1 = require_dist_cjs31(); + var util_utf8_1 = require_dist_cjs13(); + var endpointResolver_1 = require_endpointResolver(); + var getRuntimeConfig = (config) => ({ + apiVersion: "2019-06-10", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + serviceId: config?.serviceId ?? "SSO", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8 + }); + exports.getRuntimeConfig = getRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/constants.js +var require_constants7 = __commonJS({ + "../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.IMDS_REGION_PATH = exports.DEFAULTS_MODE_OPTIONS = exports.ENV_IMDS_DISABLED = exports.AWS_DEFAULT_REGION_ENV = exports.AWS_REGION_ENV = exports.AWS_EXECUTION_ENV = void 0; + exports.AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; + exports.AWS_REGION_ENV = "AWS_REGION"; + exports.AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; + exports.ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; + exports.DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; + exports.IMDS_REGION_PATH = "/latest/meta-data/placement/region"; + } +}); + +// ../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/defaultsModeConfig.js +var require_defaultsModeConfig = __commonJS({ + "../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/defaultsModeConfig.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NODE_DEFAULTS_MODE_CONFIG_OPTIONS = void 0; + var AWS_DEFAULTS_MODE_ENV = "AWS_DEFAULTS_MODE"; + var AWS_DEFAULTS_MODE_CONFIG = "defaults_mode"; + exports.NODE_DEFAULTS_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + return env[AWS_DEFAULTS_MODE_ENV]; + }, + configFileSelector: (profile) => { + return profile[AWS_DEFAULTS_MODE_CONFIG]; + }, + default: "legacy" + }; + } +}); + +// ../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/resolveDefaultsModeConfig.js +var require_resolveDefaultsModeConfig = __commonJS({ + "../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/resolveDefaultsModeConfig.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveDefaultsModeConfig = void 0; + var config_resolver_1 = require_dist_cjs21(); + var credential_provider_imds_1 = require_dist_cjs40(); + var node_config_provider_1 = require_dist_cjs39(); + var property_provider_1 = require_dist_cjs6(); + var constants_1 = require_constants7(); + var defaultsModeConfig_1 = require_defaultsModeConfig(); + var resolveDefaultsModeConfig = ({ region = (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS), defaultsMode = (0, node_config_provider_1.loadConfig)(defaultsModeConfig_1.NODE_DEFAULTS_MODE_CONFIG_OPTIONS) } = {}) => (0, property_provider_1.memoize)(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode === null || mode === void 0 ? void 0 : mode.toLowerCase()) { + case "auto": + return resolveNodeDefaultsModeAuto(region); + case "in-region": + case "cross-region": + case "mobile": + case "standard": + case "legacy": + return Promise.resolve(mode === null || mode === void 0 ? void 0 : mode.toLocaleLowerCase()); + case void 0: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${constants_1.DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } + }); + exports.resolveDefaultsModeConfig = resolveDefaultsModeConfig; + var resolveNodeDefaultsModeAuto = async (clientRegion) => { + if (clientRegion) { + const resolvedRegion = typeof clientRegion === "function" ? await clientRegion() : clientRegion; + const inferredRegion = await inferPhysicalRegion(); + if (!inferredRegion) { + return "standard"; + } + if (resolvedRegion === inferredRegion) { + return "in-region"; + } else { + return "cross-region"; + } + } + return "standard"; + }; + var inferPhysicalRegion = async () => { + var _a; + if (process.env[constants_1.AWS_EXECUTION_ENV] && (process.env[constants_1.AWS_REGION_ENV] || process.env[constants_1.AWS_DEFAULT_REGION_ENV])) { + return (_a = process.env[constants_1.AWS_REGION_ENV]) !== null && _a !== void 0 ? _a : process.env[constants_1.AWS_DEFAULT_REGION_ENV]; + } + if (!process.env[constants_1.ENV_IMDS_DISABLED]) { + try { + const endpoint = await (0, credential_provider_imds_1.getInstanceMetadataEndpoint)(); + return (await (0, credential_provider_imds_1.httpRequest)({ ...endpoint, path: constants_1.IMDS_REGION_PATH })).toString(); + } catch (e) { + } + } + }; + } +}); + +// ../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js +var require_dist_cjs45 = __commonJS({ + "../../../node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_resolveDefaultsModeConfig(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.js +var require_runtimeConfig = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRuntimeConfig = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var package_json_1 = tslib_1.__importDefault(require_package3()); + var util_user_agent_node_1 = require_dist_cjs42(); + var config_resolver_1 = require_dist_cjs21(); + var hash_node_1 = require_dist_cjs43(); + var middleware_retry_1 = require_dist_cjs29(); + var node_config_provider_1 = require_dist_cjs39(); + var node_http_handler_1 = require_dist_cjs33(); + var util_body_length_node_1 = require_dist_cjs44(); + var util_retry_1 = require_dist_cjs28(); + var runtimeConfig_shared_1 = require_runtimeConfig_shared(); + var smithy_client_1 = require_dist_cjs35(); + var util_defaults_mode_node_1 = require_dist_cjs45(); + var smithy_client_2 = require_dist_cjs35(); + var getRuntimeConfig = (config) => { + (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS), + region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS), + requestHandler: config?.requestHandler ?? new node_http_handler_1.NodeHttpHandler(defaultConfigProvider), + retryMode: config?.retryMode ?? (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE + }), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS) + }; + }; + exports.getRuntimeConfig = getRuntimeConfig; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/SSOClient.js +var require_SSOClient = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/SSOClient.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SSOClient = exports.__Client = void 0; + var middleware_host_header_1 = require_dist_cjs3(); + var middleware_logger_1 = require_dist_cjs4(); + var middleware_recursion_detection_1 = require_dist_cjs5(); + var middleware_user_agent_1 = require_dist_cjs19(); + var config_resolver_1 = require_dist_cjs21(); + var middleware_content_length_1 = require_dist_cjs22(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_retry_1 = require_dist_cjs29(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "__Client", { enumerable: true, get: function() { + return smithy_client_1.Client; + } }); + var EndpointParameters_1 = require_EndpointParameters3(); + var runtimeConfig_1 = require_runtimeConfig(); + var SSOClient = class extends smithy_client_1.Client { + constructor(...[configuration]) { + const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration || {}); + const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0); + const _config_2 = (0, config_resolver_1.resolveRegionConfig)(_config_1); + const _config_3 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_2); + const _config_4 = (0, middleware_retry_1.resolveRetryConfig)(_config_3); + const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4); + const _config_6 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_5); + super(_config_6); + this.config = _config_6; + this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config)); + this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config)); + this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config)); + this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config)); + this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config)); + this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config)); + } + destroy() { + super.destroy(); + } + }; + exports.SSOClient = SSOClient; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/models/SSOServiceException.js +var require_SSOServiceException = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/models/SSOServiceException.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SSOServiceException = exports.__ServiceException = void 0; + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function() { + return smithy_client_1.ServiceException; + } }); + var SSOServiceException = class _SSOServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, _SSOServiceException.prototype); + } + }; + exports.SSOServiceException = SSOServiceException; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/models/models_0.js +var require_models_02 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/models/models_0.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.LogoutRequestFilterSensitiveLog = exports.ListAccountsRequestFilterSensitiveLog = exports.ListAccountRolesRequestFilterSensitiveLog = exports.GetRoleCredentialsResponseFilterSensitiveLog = exports.RoleCredentialsFilterSensitiveLog = exports.GetRoleCredentialsRequestFilterSensitiveLog = exports.UnauthorizedException = exports.TooManyRequestsException = exports.ResourceNotFoundException = exports.InvalidRequestException = void 0; + var smithy_client_1 = require_dist_cjs35(); + var SSOServiceException_1 = require_SSOServiceException(); + var InvalidRequestException = class _InvalidRequestException extends SSOServiceException_1.SSOServiceException { + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts + }); + this.name = "InvalidRequestException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidRequestException.prototype); + } + }; + exports.InvalidRequestException = InvalidRequestException; + var ResourceNotFoundException = class _ResourceNotFoundException extends SSOServiceException_1.SSOServiceException { + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts + }); + this.name = "ResourceNotFoundException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ResourceNotFoundException.prototype); + } + }; + exports.ResourceNotFoundException = ResourceNotFoundException; + var TooManyRequestsException = class _TooManyRequestsException extends SSOServiceException_1.SSOServiceException { + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts + }); + this.name = "TooManyRequestsException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _TooManyRequestsException.prototype); + } + }; + exports.TooManyRequestsException = TooManyRequestsException; + var UnauthorizedException = class _UnauthorizedException extends SSOServiceException_1.SSOServiceException { + constructor(opts) { + super({ + name: "UnauthorizedException", + $fault: "client", + ...opts + }); + this.name = "UnauthorizedException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _UnauthorizedException.prototype); + } + }; + exports.UnauthorizedException = UnauthorizedException; + var GetRoleCredentialsRequestFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.accessToken && { accessToken: smithy_client_1.SENSITIVE_STRING } + }); + exports.GetRoleCredentialsRequestFilterSensitiveLog = GetRoleCredentialsRequestFilterSensitiveLog; + var RoleCredentialsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.secretAccessKey && { secretAccessKey: smithy_client_1.SENSITIVE_STRING }, + ...obj.sessionToken && { sessionToken: smithy_client_1.SENSITIVE_STRING } + }); + exports.RoleCredentialsFilterSensitiveLog = RoleCredentialsFilterSensitiveLog; + var GetRoleCredentialsResponseFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.roleCredentials && { roleCredentials: (0, exports.RoleCredentialsFilterSensitiveLog)(obj.roleCredentials) } + }); + exports.GetRoleCredentialsResponseFilterSensitiveLog = GetRoleCredentialsResponseFilterSensitiveLog; + var ListAccountRolesRequestFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.accessToken && { accessToken: smithy_client_1.SENSITIVE_STRING } + }); + exports.ListAccountRolesRequestFilterSensitiveLog = ListAccountRolesRequestFilterSensitiveLog; + var ListAccountsRequestFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.accessToken && { accessToken: smithy_client_1.SENSITIVE_STRING } + }); + exports.ListAccountsRequestFilterSensitiveLog = ListAccountsRequestFilterSensitiveLog; + var LogoutRequestFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.accessToken && { accessToken: smithy_client_1.SENSITIVE_STRING } + }); + exports.LogoutRequestFilterSensitiveLog = LogoutRequestFilterSensitiveLog; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/protocols/Aws_restJson1.js +var require_Aws_restJson1 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/protocols/Aws_restJson1.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.de_LogoutCommand = exports.de_ListAccountsCommand = exports.de_ListAccountRolesCommand = exports.de_GetRoleCredentialsCommand = exports.se_LogoutCommand = exports.se_ListAccountsCommand = exports.se_ListAccountRolesCommand = exports.se_GetRoleCredentialsCommand = void 0; + var protocol_http_1 = require_dist_cjs2(); + var smithy_client_1 = require_dist_cjs35(); + var models_0_1 = require_models_02(); + var SSOServiceException_1 = require_SSOServiceException(); + var se_GetRoleCredentialsCommand = async (input, context) => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers = (0, smithy_client_1.map)({}, isSerializableHeaderValue, { + "x-amz-sso_bearer_token": input.accessToken + }); + const resolvedPath = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}/federation/credentials`; + const query = (0, smithy_client_1.map)({ + role_name: [, (0, smithy_client_1.expectNonNull)(input.roleName, `roleName`)], + account_id: [, (0, smithy_client_1.expectNonNull)(input.accountId, `accountId`)] + }); + let body; + return new protocol_http_1.HttpRequest({ + protocol, + hostname, + port, + method: "GET", + headers, + path: resolvedPath, + query, + body + }); + }; + exports.se_GetRoleCredentialsCommand = se_GetRoleCredentialsCommand; + var se_ListAccountRolesCommand = async (input, context) => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers = (0, smithy_client_1.map)({}, isSerializableHeaderValue, { + "x-amz-sso_bearer_token": input.accessToken + }); + const resolvedPath = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}/assignment/roles`; + const query = (0, smithy_client_1.map)({ + next_token: [, input.nextToken], + max_result: [() => input.maxResults !== void 0, () => input.maxResults.toString()], + account_id: [, (0, smithy_client_1.expectNonNull)(input.accountId, `accountId`)] + }); + let body; + return new protocol_http_1.HttpRequest({ + protocol, + hostname, + port, + method: "GET", + headers, + path: resolvedPath, + query, + body + }); + }; + exports.se_ListAccountRolesCommand = se_ListAccountRolesCommand; + var se_ListAccountsCommand = async (input, context) => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers = (0, smithy_client_1.map)({}, isSerializableHeaderValue, { + "x-amz-sso_bearer_token": input.accessToken + }); + const resolvedPath = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}/assignment/accounts`; + const query = (0, smithy_client_1.map)({ + next_token: [, input.nextToken], + max_result: [() => input.maxResults !== void 0, () => input.maxResults.toString()] + }); + let body; + return new protocol_http_1.HttpRequest({ + protocol, + hostname, + port, + method: "GET", + headers, + path: resolvedPath, + query, + body + }); + }; + exports.se_ListAccountsCommand = se_ListAccountsCommand; + var se_LogoutCommand = async (input, context) => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers = (0, smithy_client_1.map)({}, isSerializableHeaderValue, { + "x-amz-sso_bearer_token": input.accessToken + }); + const resolvedPath = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}/logout`; + let body; + return new protocol_http_1.HttpRequest({ + protocol, + hostname, + port, + method: "POST", + headers, + path: resolvedPath, + body + }); + }; + exports.se_LogoutCommand = se_LogoutCommand; + var de_GetRoleCredentialsCommand = async (output, context) => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_GetRoleCredentialsCommandError(output, context); + } + const contents = (0, smithy_client_1.map)({ + $metadata: deserializeMetadata(output) + }); + const data = (0, smithy_client_1.expectNonNull)((0, smithy_client_1.expectObject)(await parseBody(output.body, context)), "body"); + const doc = (0, smithy_client_1.take)(data, { + roleCredentials: smithy_client_1._json + }); + Object.assign(contents, doc); + return contents; + }; + exports.de_GetRoleCredentialsCommand = de_GetRoleCredentialsCommand; + var de_GetRoleCredentialsCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidRequestException": + case "com.amazonaws.sso#InvalidRequestException": + throw await de_InvalidRequestExceptionRes(parsedOutput, context); + case "ResourceNotFoundException": + case "com.amazonaws.sso#ResourceNotFoundException": + throw await de_ResourceNotFoundExceptionRes(parsedOutput, context); + case "TooManyRequestsException": + case "com.amazonaws.sso#TooManyRequestsException": + throw await de_TooManyRequestsExceptionRes(parsedOutput, context); + case "UnauthorizedException": + case "com.amazonaws.sso#UnauthorizedException": + throw await de_UnauthorizedExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ListAccountRolesCommand = async (output, context) => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_ListAccountRolesCommandError(output, context); + } + const contents = (0, smithy_client_1.map)({ + $metadata: deserializeMetadata(output) + }); + const data = (0, smithy_client_1.expectNonNull)((0, smithy_client_1.expectObject)(await parseBody(output.body, context)), "body"); + const doc = (0, smithy_client_1.take)(data, { + nextToken: smithy_client_1.expectString, + roleList: smithy_client_1._json + }); + Object.assign(contents, doc); + return contents; + }; + exports.de_ListAccountRolesCommand = de_ListAccountRolesCommand; + var de_ListAccountRolesCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidRequestException": + case "com.amazonaws.sso#InvalidRequestException": + throw await de_InvalidRequestExceptionRes(parsedOutput, context); + case "ResourceNotFoundException": + case "com.amazonaws.sso#ResourceNotFoundException": + throw await de_ResourceNotFoundExceptionRes(parsedOutput, context); + case "TooManyRequestsException": + case "com.amazonaws.sso#TooManyRequestsException": + throw await de_TooManyRequestsExceptionRes(parsedOutput, context); + case "UnauthorizedException": + case "com.amazonaws.sso#UnauthorizedException": + throw await de_UnauthorizedExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ListAccountsCommand = async (output, context) => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_ListAccountsCommandError(output, context); + } + const contents = (0, smithy_client_1.map)({ + $metadata: deserializeMetadata(output) + }); + const data = (0, smithy_client_1.expectNonNull)((0, smithy_client_1.expectObject)(await parseBody(output.body, context)), "body"); + const doc = (0, smithy_client_1.take)(data, { + accountList: smithy_client_1._json, + nextToken: smithy_client_1.expectString + }); + Object.assign(contents, doc); + return contents; + }; + exports.de_ListAccountsCommand = de_ListAccountsCommand; + var de_ListAccountsCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidRequestException": + case "com.amazonaws.sso#InvalidRequestException": + throw await de_InvalidRequestExceptionRes(parsedOutput, context); + case "ResourceNotFoundException": + case "com.amazonaws.sso#ResourceNotFoundException": + throw await de_ResourceNotFoundExceptionRes(parsedOutput, context); + case "TooManyRequestsException": + case "com.amazonaws.sso#TooManyRequestsException": + throw await de_TooManyRequestsExceptionRes(parsedOutput, context); + case "UnauthorizedException": + case "com.amazonaws.sso#UnauthorizedException": + throw await de_UnauthorizedExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_LogoutCommand = async (output, context) => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_LogoutCommandError(output, context); + } + const contents = (0, smithy_client_1.map)({ + $metadata: deserializeMetadata(output) + }); + await (0, smithy_client_1.collectBody)(output.body, context); + return contents; + }; + exports.de_LogoutCommand = de_LogoutCommand; + var de_LogoutCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidRequestException": + case "com.amazonaws.sso#InvalidRequestException": + throw await de_InvalidRequestExceptionRes(parsedOutput, context); + case "TooManyRequestsException": + case "com.amazonaws.sso#TooManyRequestsException": + throw await de_TooManyRequestsExceptionRes(parsedOutput, context); + case "UnauthorizedException": + case "com.amazonaws.sso#UnauthorizedException": + throw await de_UnauthorizedExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var throwDefaultError = (0, smithy_client_1.withBaseException)(SSOServiceException_1.SSOServiceException); + var de_InvalidRequestExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_1.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_1.take)(data, { + message: smithy_client_1.expectString + }); + Object.assign(contents, doc); + const exception = new models_0_1.InvalidRequestException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_1.decorateServiceException)(exception, parsedOutput.body); + }; + var de_ResourceNotFoundExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_1.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_1.take)(data, { + message: smithy_client_1.expectString + }); + Object.assign(contents, doc); + const exception = new models_0_1.ResourceNotFoundException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_1.decorateServiceException)(exception, parsedOutput.body); + }; + var de_TooManyRequestsExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_1.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_1.take)(data, { + message: smithy_client_1.expectString + }); + Object.assign(contents, doc); + const exception = new models_0_1.TooManyRequestsException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_1.decorateServiceException)(exception, parsedOutput.body); + }; + var de_UnauthorizedExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_1.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_1.take)(data, { + message: smithy_client_1.expectString + }); + Object.assign(contents, doc); + const exception = new models_0_1.UnauthorizedException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_1.decorateServiceException)(exception, parsedOutput.body); + }; + var deserializeMetadata = (output) => ({ + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"] + }); + var collectBodyString = (streamBody, context) => (0, smithy_client_1.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)); + var isSerializableHeaderValue = (value) => value !== void 0 && value !== null && value !== "" && (!Object.getOwnPropertyNames(value).includes("length") || value.length != 0) && (!Object.getOwnPropertyNames(value).includes("size") || value.size != 0); + var parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + return JSON.parse(encoded); + } + return {}; + }); + var parseErrorBody = async (errorBody, context) => { + const value = await parseBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; + }; + var loadRestJsonErrorCode = (output, data) => { + const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()); + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + const headerKey = findKey(output.headers, "x-amzn-errortype"); + if (headerKey !== void 0) { + return sanitizeErrorCode(output.headers[headerKey]); + } + if (data.code !== void 0) { + return sanitizeErrorCode(data.code); + } + if (data["__type"] !== void 0) { + return sanitizeErrorCode(data["__type"]); + } + }; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/GetRoleCredentialsCommand.js +var require_GetRoleCredentialsCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/GetRoleCredentialsCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GetRoleCredentialsCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_02(); + var Aws_restJson1_1 = require_Aws_restJson1(); + var GetRoleCredentialsCommand = class _GetRoleCredentialsCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _GetRoleCredentialsCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SSOClient"; + const commandName = "GetRoleCredentialsCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.GetRoleCredentialsRequestFilterSensitiveLog, + outputFilterSensitiveLog: models_0_1.GetRoleCredentialsResponseFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_restJson1_1.se_GetRoleCredentialsCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_restJson1_1.de_GetRoleCredentialsCommand)(output, context); + } + }; + exports.GetRoleCredentialsCommand = GetRoleCredentialsCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/ListAccountRolesCommand.js +var require_ListAccountRolesCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/ListAccountRolesCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ListAccountRolesCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_02(); + var Aws_restJson1_1 = require_Aws_restJson1(); + var ListAccountRolesCommand = class _ListAccountRolesCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _ListAccountRolesCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SSOClient"; + const commandName = "ListAccountRolesCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.ListAccountRolesRequestFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_restJson1_1.se_ListAccountRolesCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_restJson1_1.de_ListAccountRolesCommand)(output, context); + } + }; + exports.ListAccountRolesCommand = ListAccountRolesCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/ListAccountsCommand.js +var require_ListAccountsCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/ListAccountsCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ListAccountsCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_02(); + var Aws_restJson1_1 = require_Aws_restJson1(); + var ListAccountsCommand = class _ListAccountsCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _ListAccountsCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SSOClient"; + const commandName = "ListAccountsCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.ListAccountsRequestFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_restJson1_1.se_ListAccountsCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_restJson1_1.de_ListAccountsCommand)(output, context); + } + }; + exports.ListAccountsCommand = ListAccountsCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/LogoutCommand.js +var require_LogoutCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/LogoutCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.LogoutCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_02(); + var Aws_restJson1_1 = require_Aws_restJson1(); + var LogoutCommand = class _LogoutCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _LogoutCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SSOClient"; + const commandName = "LogoutCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.LogoutRequestFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_restJson1_1.se_LogoutCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_restJson1_1.de_LogoutCommand)(output, context); + } + }; + exports.LogoutCommand = LogoutCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/SSO.js +var require_SSO = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/SSO.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SSO = void 0; + var smithy_client_1 = require_dist_cjs35(); + var GetRoleCredentialsCommand_1 = require_GetRoleCredentialsCommand(); + var ListAccountRolesCommand_1 = require_ListAccountRolesCommand(); + var ListAccountsCommand_1 = require_ListAccountsCommand(); + var LogoutCommand_1 = require_LogoutCommand(); + var SSOClient_1 = require_SSOClient(); + var commands = { + GetRoleCredentialsCommand: GetRoleCredentialsCommand_1.GetRoleCredentialsCommand, + ListAccountRolesCommand: ListAccountRolesCommand_1.ListAccountRolesCommand, + ListAccountsCommand: ListAccountsCommand_1.ListAccountsCommand, + LogoutCommand: LogoutCommand_1.LogoutCommand + }; + var SSO = class extends SSOClient_1.SSOClient { + }; + exports.SSO = SSO; + (0, smithy_client_1.createAggregatedClient)(commands, SSO); + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/index.js +var require_commands = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/commands/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_GetRoleCredentialsCommand(), exports); + tslib_1.__exportStar(require_ListAccountRolesCommand(), exports); + tslib_1.__exportStar(require_ListAccountsCommand(), exports); + tslib_1.__exportStar(require_LogoutCommand(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/pagination/Interfaces.js +var require_Interfaces = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/pagination/Interfaces.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/pagination/ListAccountRolesPaginator.js +var require_ListAccountRolesPaginator = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/pagination/ListAccountRolesPaginator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.paginateListAccountRoles = void 0; + var ListAccountRolesCommand_1 = require_ListAccountRolesCommand(); + var SSOClient_1 = require_SSOClient(); + var makePagedClientRequest = async (client, input, ...args) => { + return await client.send(new ListAccountRolesCommand_1.ListAccountRolesCommand(input), ...args); + }; + async function* paginateListAccountRoles(config, input, ...additionalArguments) { + let token = config.startingToken || void 0; + let hasNext = true; + let page; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof SSOClient_1.SSOClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected SSO | SSOClient"); + } + yield page; + const prevToken = token; + token = page.nextToken; + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return void 0; + } + exports.paginateListAccountRoles = paginateListAccountRoles; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/pagination/ListAccountsPaginator.js +var require_ListAccountsPaginator = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/pagination/ListAccountsPaginator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.paginateListAccounts = void 0; + var ListAccountsCommand_1 = require_ListAccountsCommand(); + var SSOClient_1 = require_SSOClient(); + var makePagedClientRequest = async (client, input, ...args) => { + return await client.send(new ListAccountsCommand_1.ListAccountsCommand(input), ...args); + }; + async function* paginateListAccounts(config, input, ...additionalArguments) { + let token = config.startingToken || void 0; + let hasNext = true; + let page; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof SSOClient_1.SSOClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected SSO | SSOClient"); + } + yield page; + const prevToken = token; + token = page.nextToken; + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return void 0; + } + exports.paginateListAccounts = paginateListAccounts; + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/pagination/index.js +var require_pagination3 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/pagination/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_Interfaces(), exports); + tslib_1.__exportStar(require_ListAccountRolesPaginator(), exports); + tslib_1.__exportStar(require_ListAccountsPaginator(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/models/index.js +var require_models = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/models/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_models_02(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sso/dist-cjs/index.js +var require_dist_cjs46 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sso/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SSOServiceException = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_SSOClient(), exports); + tslib_1.__exportStar(require_SSO(), exports); + tslib_1.__exportStar(require_commands(), exports); + tslib_1.__exportStar(require_pagination3(), exports); + tslib_1.__exportStar(require_models(), exports); + var SSOServiceException_1 = require_SSOServiceException(); + Object.defineProperty(exports, "SSOServiceException", { enumerable: true, get: function() { + return SSOServiceException_1.SSOServiceException; + } }); + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/bundle/client-sso-oidc-node.js +var require_client_sso_oidc_node = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/bundle/client-sso-oidc-node.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.UnsupportedGrantTypeException = exports.UnauthorizedClientException = exports.SlowDownException = exports.SSOOIDCClient = exports.InvalidScopeException = exports.InvalidRequestException = exports.InvalidClientException = exports.InternalServerException = exports.ExpiredTokenException = exports.CreateTokenCommand = exports.AuthorizationPendingException = exports.AccessDeniedException = void 0; + var middleware_host_header_1 = require_dist_cjs3(); + var middleware_logger_1 = require_dist_cjs4(); + var middleware_recursion_detection_1 = require_dist_cjs5(); + var middleware_user_agent_1 = require_dist_cjs19(); + var config_resolver_1 = require_dist_cjs21(); + var middleware_content_length_1 = require_dist_cjs22(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_retry_1 = require_dist_cjs29(); + var smithy_client_1 = require_dist_cjs35(); + var resolveClientEndpointParameters = (options) => { + var _a, _b; + return { + ...options, + useDualstackEndpoint: (_a = options.useDualstackEndpoint) !== null && _a !== void 0 ? _a : false, + useFipsEndpoint: (_b = options.useFipsEndpoint) !== null && _b !== void 0 ? _b : false, + defaultSigningName: "awsssooidc" + }; + }; + var package_default = { version: "3.387.0" }; + var util_user_agent_node_1 = require_dist_cjs42(); + var config_resolver_2 = require_dist_cjs21(); + var hash_node_1 = require_dist_cjs43(); + var middleware_retry_2 = require_dist_cjs29(); + var node_config_provider_1 = require_dist_cjs39(); + var node_http_handler_1 = require_dist_cjs33(); + var util_body_length_node_1 = require_dist_cjs44(); + var util_retry_1 = require_dist_cjs28(); + var smithy_client_2 = require_dist_cjs35(); + var url_parser_1 = require_dist_cjs24(); + var util_base64_1 = require_dist_cjs31(); + var util_utf8_1 = require_dist_cjs13(); + var util_endpoints_1 = require_dist_cjs18(); + var p = "required"; + var q = "fn"; + var r = "argv"; + var s = "ref"; + var a = "PartitionResult"; + var b = "tree"; + var c = "error"; + var d = "endpoint"; + var e = { [p]: false, "type": "String" }; + var f = { [p]: true, "default": false, "type": "Boolean" }; + var g = { [s]: "Endpoint" }; + var h = { [q]: "booleanEquals", [r]: [{ [s]: "UseFIPS" }, true] }; + var i = { [q]: "booleanEquals", [r]: [{ [s]: "UseDualStack" }, true] }; + var j = {}; + var k = { [q]: "booleanEquals", [r]: [true, { [q]: "getAttr", [r]: [{ [s]: a }, "supportsFIPS"] }] }; + var l = { [q]: "booleanEquals", [r]: [true, { [q]: "getAttr", [r]: [{ [s]: a }, "supportsDualStack"] }] }; + var m = [g]; + var n = [h]; + var o = [i]; + var _data = { version: "1.0", parameters: { Region: e, UseDualStack: f, UseFIPS: f, Endpoint: e }, rules: [{ conditions: [{ [q]: "aws.partition", [r]: [{ [s]: "Region" }], assign: a }], type: b, rules: [{ conditions: [{ [q]: "isSet", [r]: m }, { [q]: "parseURL", [r]: m, assign: "url" }], type: b, rules: [{ conditions: n, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: c }, { type: b, rules: [{ conditions: o, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: c }, { endpoint: { url: g, properties: j, headers: j }, type: d }] }] }, { conditions: [h, i], type: b, rules: [{ conditions: [k, l], type: b, rules: [{ endpoint: { url: "https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: j, headers: j }, type: d }] }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: c }] }, { conditions: n, type: b, rules: [{ conditions: [k], type: b, rules: [{ type: b, rules: [{ endpoint: { url: "https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}", properties: j, headers: j }, type: d }] }] }, { error: "FIPS is enabled but this partition does not support FIPS", type: c }] }, { conditions: o, type: b, rules: [{ conditions: [l], type: b, rules: [{ endpoint: { url: "https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: j, headers: j }, type: d }] }, { error: "DualStack is enabled but this partition does not support DualStack", type: c }] }, { endpoint: { url: "https://oidc.{Region}.{PartitionResult#dnsSuffix}", properties: j, headers: j }, type: d }] }] }; + var ruleSet = _data; + var defaultEndpointResolver = (endpointParams, context = {}) => { + return (0, util_endpoints_1.resolveEndpoint)(ruleSet, { + endpointParams, + logger: context.logger + }); + }; + var getRuntimeConfig = (config) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _j; + return { + apiVersion: "2019-06-10", + base64Decoder: (_a = config === null || config === void 0 ? void 0 : config.base64Decoder) !== null && _a !== void 0 ? _a : util_base64_1.fromBase64, + base64Encoder: (_b = config === null || config === void 0 ? void 0 : config.base64Encoder) !== null && _b !== void 0 ? _b : util_base64_1.toBase64, + disableHostPrefix: (_c = config === null || config === void 0 ? void 0 : config.disableHostPrefix) !== null && _c !== void 0 ? _c : false, + endpointProvider: (_d = config === null || config === void 0 ? void 0 : config.endpointProvider) !== null && _d !== void 0 ? _d : defaultEndpointResolver, + logger: (_e = config === null || config === void 0 ? void 0 : config.logger) !== null && _e !== void 0 ? _e : new smithy_client_2.NoOpLogger(), + serviceId: (_f = config === null || config === void 0 ? void 0 : config.serviceId) !== null && _f !== void 0 ? _f : "SSO OIDC", + urlParser: (_g = config === null || config === void 0 ? void 0 : config.urlParser) !== null && _g !== void 0 ? _g : url_parser_1.parseUrl, + utf8Decoder: (_h = config === null || config === void 0 ? void 0 : config.utf8Decoder) !== null && _h !== void 0 ? _h : util_utf8_1.fromUtf8, + utf8Encoder: (_j = config === null || config === void 0 ? void 0 : config.utf8Encoder) !== null && _j !== void 0 ? _j : util_utf8_1.toUtf8 + }; + }; + var smithy_client_3 = require_dist_cjs35(); + var util_defaults_mode_node_1 = require_dist_cjs45(); + var smithy_client_4 = require_dist_cjs35(); + var getRuntimeConfig2 = (config) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; + (0, smithy_client_4.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_3.loadConfigsForDefaultMode); + const clientSharedValues = getRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + bodyLengthChecker: (_a = config === null || config === void 0 ? void 0 : config.bodyLengthChecker) !== null && _a !== void 0 ? _a : util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: (_b = config === null || config === void 0 ? void 0 : config.defaultUserAgentProvider) !== null && _b !== void 0 ? _b : (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_default.version }), + maxAttempts: (_c = config === null || config === void 0 ? void 0 : config.maxAttempts) !== null && _c !== void 0 ? _c : (0, node_config_provider_1.loadConfig)(middleware_retry_2.NODE_MAX_ATTEMPT_CONFIG_OPTIONS), + region: (_d = config === null || config === void 0 ? void 0 : config.region) !== null && _d !== void 0 ? _d : (0, node_config_provider_1.loadConfig)(config_resolver_2.NODE_REGION_CONFIG_OPTIONS, config_resolver_2.NODE_REGION_CONFIG_FILE_OPTIONS), + requestHandler: (_e = config === null || config === void 0 ? void 0 : config.requestHandler) !== null && _e !== void 0 ? _e : new node_http_handler_1.NodeHttpHandler(defaultConfigProvider), + retryMode: (_f = config === null || config === void 0 ? void 0 : config.retryMode) !== null && _f !== void 0 ? _f : (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_2.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE + }), + sha256: (_g = config === null || config === void 0 ? void 0 : config.sha256) !== null && _g !== void 0 ? _g : hash_node_1.Hash.bind(null, "sha256"), + streamCollector: (_h = config === null || config === void 0 ? void 0 : config.streamCollector) !== null && _h !== void 0 ? _h : node_http_handler_1.streamCollector, + useDualstackEndpoint: (_j = config === null || config === void 0 ? void 0 : config.useDualstackEndpoint) !== null && _j !== void 0 ? _j : (0, node_config_provider_1.loadConfig)(config_resolver_2.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS), + useFipsEndpoint: (_k = config === null || config === void 0 ? void 0 : config.useFipsEndpoint) !== null && _k !== void 0 ? _k : (0, node_config_provider_1.loadConfig)(config_resolver_2.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS) + }; + }; + var SSOOIDCClient = class extends smithy_client_1.Client { + constructor(...[configuration]) { + const _config_0 = getRuntimeConfig2(configuration || {}); + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = (0, config_resolver_1.resolveRegionConfig)(_config_1); + const _config_3 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_2); + const _config_4 = (0, middleware_retry_1.resolveRetryConfig)(_config_3); + const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4); + const _config_6 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_5); + super(_config_6); + this.config = _config_6; + this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config)); + this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config)); + this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config)); + this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config)); + this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config)); + this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config)); + } + destroy() { + super.destroy(); + } + }; + exports.SSOOIDCClient = SSOOIDCClient; + var smithy_client_5 = require_dist_cjs35(); + var middleware_endpoint_2 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_6 = require_dist_cjs35(); + var protocol_http_1 = require_dist_cjs2(); + var smithy_client_7 = require_dist_cjs35(); + var smithy_client_8 = require_dist_cjs35(); + var SSOOIDCServiceException = class _SSOOIDCServiceException extends smithy_client_8.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, _SSOOIDCServiceException.prototype); + } + }; + var AccessDeniedException = class _AccessDeniedException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts + }); + this.name = "AccessDeniedException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _AccessDeniedException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.AccessDeniedException = AccessDeniedException; + var AuthorizationPendingException = class _AuthorizationPendingException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "AuthorizationPendingException", + $fault: "client", + ...opts + }); + this.name = "AuthorizationPendingException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _AuthorizationPendingException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.AuthorizationPendingException = AuthorizationPendingException; + var ExpiredTokenException = class _ExpiredTokenException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts + }); + this.name = "ExpiredTokenException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ExpiredTokenException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.ExpiredTokenException = ExpiredTokenException; + var InternalServerException = class _InternalServerException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts + }); + this.name = "InternalServerException"; + this.$fault = "server"; + Object.setPrototypeOf(this, _InternalServerException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.InternalServerException = InternalServerException; + var InvalidClientException = class _InvalidClientException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "InvalidClientException", + $fault: "client", + ...opts + }); + this.name = "InvalidClientException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.InvalidClientException = InvalidClientException; + var InvalidGrantException = class _InvalidGrantException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "InvalidGrantException", + $fault: "client", + ...opts + }); + this.name = "InvalidGrantException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidGrantException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + var InvalidRequestException = class _InvalidRequestException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts + }); + this.name = "InvalidRequestException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidRequestException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.InvalidRequestException = InvalidRequestException; + var InvalidScopeException = class _InvalidScopeException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "InvalidScopeException", + $fault: "client", + ...opts + }); + this.name = "InvalidScopeException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidScopeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.InvalidScopeException = InvalidScopeException; + var SlowDownException = class _SlowDownException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "SlowDownException", + $fault: "client", + ...opts + }); + this.name = "SlowDownException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _SlowDownException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.SlowDownException = SlowDownException; + var UnauthorizedClientException = class _UnauthorizedClientException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "UnauthorizedClientException", + $fault: "client", + ...opts + }); + this.name = "UnauthorizedClientException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _UnauthorizedClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.UnauthorizedClientException = UnauthorizedClientException; + var UnsupportedGrantTypeException = class _UnsupportedGrantTypeException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "UnsupportedGrantTypeException", + $fault: "client", + ...opts + }); + this.name = "UnsupportedGrantTypeException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _UnsupportedGrantTypeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + exports.UnsupportedGrantTypeException = UnsupportedGrantTypeException; + var InvalidClientMetadataException = class _InvalidClientMetadataException extends SSOOIDCServiceException { + constructor(opts) { + super({ + name: "InvalidClientMetadataException", + $fault: "client", + ...opts + }); + this.name = "InvalidClientMetadataException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidClientMetadataException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + var se_CreateTokenCommand = async (input, context) => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers = { + "content-type": "application/json" + }; + const resolvedPath = `${(basePath === null || basePath === void 0 ? void 0 : basePath.endsWith("/")) ? basePath.slice(0, -1) : basePath || ""}/token`; + let body; + body = JSON.stringify((0, smithy_client_7.take)(input, { + clientId: [], + clientSecret: [], + code: [], + deviceCode: [], + grantType: [], + redirectUri: [], + refreshToken: [], + scope: (_) => (0, smithy_client_7._json)(_) + })); + return new protocol_http_1.HttpRequest({ + protocol, + hostname, + port, + method: "POST", + headers, + path: resolvedPath, + body + }); + }; + var se_RegisterClientCommand = async (input, context) => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers = { + "content-type": "application/json" + }; + const resolvedPath = `${(basePath === null || basePath === void 0 ? void 0 : basePath.endsWith("/")) ? basePath.slice(0, -1) : basePath || ""}/client/register`; + let body; + body = JSON.stringify((0, smithy_client_7.take)(input, { + clientName: [], + clientType: [], + scopes: (_) => (0, smithy_client_7._json)(_) + })); + return new protocol_http_1.HttpRequest({ + protocol, + hostname, + port, + method: "POST", + headers, + path: resolvedPath, + body + }); + }; + var se_StartDeviceAuthorizationCommand = async (input, context) => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers = { + "content-type": "application/json" + }; + const resolvedPath = `${(basePath === null || basePath === void 0 ? void 0 : basePath.endsWith("/")) ? basePath.slice(0, -1) : basePath || ""}/device_authorization`; + let body; + body = JSON.stringify((0, smithy_client_7.take)(input, { + clientId: [], + clientSecret: [], + startUrl: [] + })); + return new protocol_http_1.HttpRequest({ + protocol, + hostname, + port, + method: "POST", + headers, + path: resolvedPath, + body + }); + }; + var de_CreateTokenCommand = async (output, context) => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_CreateTokenCommandError(output, context); + } + const contents = (0, smithy_client_7.map)({ + $metadata: deserializeMetadata(output) + }); + const data = (0, smithy_client_7.expectNonNull)((0, smithy_client_7.expectObject)(await parseBody(output.body, context)), "body"); + const doc = (0, smithy_client_7.take)(data, { + accessToken: smithy_client_7.expectString, + expiresIn: smithy_client_7.expectInt32, + idToken: smithy_client_7.expectString, + refreshToken: smithy_client_7.expectString, + tokenType: smithy_client_7.expectString + }); + Object.assign(contents, doc); + return contents; + }; + var de_CreateTokenCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "AccessDeniedException": + case "com.amazonaws.ssooidc#AccessDeniedException": + throw await de_AccessDeniedExceptionRes(parsedOutput, context); + case "AuthorizationPendingException": + case "com.amazonaws.ssooidc#AuthorizationPendingException": + throw await de_AuthorizationPendingExceptionRes(parsedOutput, context); + case "ExpiredTokenException": + case "com.amazonaws.ssooidc#ExpiredTokenException": + throw await de_ExpiredTokenExceptionRes(parsedOutput, context); + case "InternalServerException": + case "com.amazonaws.ssooidc#InternalServerException": + throw await de_InternalServerExceptionRes(parsedOutput, context); + case "InvalidClientException": + case "com.amazonaws.ssooidc#InvalidClientException": + throw await de_InvalidClientExceptionRes(parsedOutput, context); + case "InvalidGrantException": + case "com.amazonaws.ssooidc#InvalidGrantException": + throw await de_InvalidGrantExceptionRes(parsedOutput, context); + case "InvalidRequestException": + case "com.amazonaws.ssooidc#InvalidRequestException": + throw await de_InvalidRequestExceptionRes(parsedOutput, context); + case "InvalidScopeException": + case "com.amazonaws.ssooidc#InvalidScopeException": + throw await de_InvalidScopeExceptionRes(parsedOutput, context); + case "SlowDownException": + case "com.amazonaws.ssooidc#SlowDownException": + throw await de_SlowDownExceptionRes(parsedOutput, context); + case "UnauthorizedClientException": + case "com.amazonaws.ssooidc#UnauthorizedClientException": + throw await de_UnauthorizedClientExceptionRes(parsedOutput, context); + case "UnsupportedGrantTypeException": + case "com.amazonaws.ssooidc#UnsupportedGrantTypeException": + throw await de_UnsupportedGrantTypeExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_RegisterClientCommand = async (output, context) => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_RegisterClientCommandError(output, context); + } + const contents = (0, smithy_client_7.map)({ + $metadata: deserializeMetadata(output) + }); + const data = (0, smithy_client_7.expectNonNull)((0, smithy_client_7.expectObject)(await parseBody(output.body, context)), "body"); + const doc = (0, smithy_client_7.take)(data, { + authorizationEndpoint: smithy_client_7.expectString, + clientId: smithy_client_7.expectString, + clientIdIssuedAt: smithy_client_7.expectLong, + clientSecret: smithy_client_7.expectString, + clientSecretExpiresAt: smithy_client_7.expectLong, + tokenEndpoint: smithy_client_7.expectString + }); + Object.assign(contents, doc); + return contents; + }; + var de_RegisterClientCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InternalServerException": + case "com.amazonaws.ssooidc#InternalServerException": + throw await de_InternalServerExceptionRes(parsedOutput, context); + case "InvalidClientMetadataException": + case "com.amazonaws.ssooidc#InvalidClientMetadataException": + throw await de_InvalidClientMetadataExceptionRes(parsedOutput, context); + case "InvalidRequestException": + case "com.amazonaws.ssooidc#InvalidRequestException": + throw await de_InvalidRequestExceptionRes(parsedOutput, context); + case "InvalidScopeException": + case "com.amazonaws.ssooidc#InvalidScopeException": + throw await de_InvalidScopeExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_StartDeviceAuthorizationCommand = async (output, context) => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_StartDeviceAuthorizationCommandError(output, context); + } + const contents = (0, smithy_client_7.map)({ + $metadata: deserializeMetadata(output) + }); + const data = (0, smithy_client_7.expectNonNull)((0, smithy_client_7.expectObject)(await parseBody(output.body, context)), "body"); + const doc = (0, smithy_client_7.take)(data, { + deviceCode: smithy_client_7.expectString, + expiresIn: smithy_client_7.expectInt32, + interval: smithy_client_7.expectInt32, + userCode: smithy_client_7.expectString, + verificationUri: smithy_client_7.expectString, + verificationUriComplete: smithy_client_7.expectString + }); + Object.assign(contents, doc); + return contents; + }; + var de_StartDeviceAuthorizationCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InternalServerException": + case "com.amazonaws.ssooidc#InternalServerException": + throw await de_InternalServerExceptionRes(parsedOutput, context); + case "InvalidClientException": + case "com.amazonaws.ssooidc#InvalidClientException": + throw await de_InvalidClientExceptionRes(parsedOutput, context); + case "InvalidRequestException": + case "com.amazonaws.ssooidc#InvalidRequestException": + throw await de_InvalidRequestExceptionRes(parsedOutput, context); + case "SlowDownException": + case "com.amazonaws.ssooidc#SlowDownException": + throw await de_SlowDownExceptionRes(parsedOutput, context); + case "UnauthorizedClientException": + case "com.amazonaws.ssooidc#UnauthorizedClientException": + throw await de_UnauthorizedClientExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var throwDefaultError = (0, smithy_client_7.withBaseException)(SSOOIDCServiceException); + var de_AccessDeniedExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new AccessDeniedException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_AuthorizationPendingExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new AuthorizationPendingException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_ExpiredTokenExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new ExpiredTokenException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_InternalServerExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new InternalServerException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_InvalidClientExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new InvalidClientException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_InvalidClientMetadataExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new InvalidClientMetadataException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_InvalidGrantExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new InvalidGrantException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_InvalidRequestExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new InvalidRequestException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_InvalidScopeExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new InvalidScopeException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_SlowDownExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new SlowDownException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_UnauthorizedClientExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new UnauthorizedClientException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var de_UnsupportedGrantTypeExceptionRes = async (parsedOutput, context) => { + const contents = (0, smithy_client_7.map)({}); + const data = parsedOutput.body; + const doc = (0, smithy_client_7.take)(data, { + error: smithy_client_7.expectString, + error_description: smithy_client_7.expectString + }); + Object.assign(contents, doc); + const exception = new UnsupportedGrantTypeException({ + $metadata: deserializeMetadata(parsedOutput), + ...contents + }); + return (0, smithy_client_7.decorateServiceException)(exception, parsedOutput.body); + }; + var deserializeMetadata = (output) => { + var _a, _b; + return { + httpStatusCode: output.statusCode, + requestId: (_b = (_a = output.headers["x-amzn-requestid"]) !== null && _a !== void 0 ? _a : output.headers["x-amzn-request-id"]) !== null && _b !== void 0 ? _b : output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"] + }; + }; + var collectBodyString = (streamBody, context) => (0, smithy_client_7.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)); + var parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + return JSON.parse(encoded); + } + return {}; + }); + var parseErrorBody = async (errorBody, context) => { + var _a; + const value = await parseBody(errorBody, context); + value.message = (_a = value.message) !== null && _a !== void 0 ? _a : value.Message; + return value; + }; + var loadRestJsonErrorCode = (output, data) => { + const findKey = (object, key) => Object.keys(object).find((k2) => k2.toLowerCase() === key.toLowerCase()); + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + const headerKey = findKey(output.headers, "x-amzn-errortype"); + if (headerKey !== void 0) { + return sanitizeErrorCode(output.headers[headerKey]); + } + if (data.code !== void 0) { + return sanitizeErrorCode(data.code); + } + if (data["__type"] !== void 0) { + return sanitizeErrorCode(data["__type"]); + } + }; + var CreateTokenCommand = class _CreateTokenCommand extends smithy_client_6.Command { + constructor(input) { + super(); + this.input = input; + } + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_2.getEndpointPlugin)(configuration, _CreateTokenCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SSOOIDCClient"; + const commandName = "CreateTokenCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return se_CreateTokenCommand(input, context); + } + deserialize(output, context) { + return de_CreateTokenCommand(output, context); + } + }; + exports.CreateTokenCommand = CreateTokenCommand; + var middleware_endpoint_3 = require_dist_cjs26(); + var middleware_serde_2 = require_dist_cjs25(); + var smithy_client_9 = require_dist_cjs35(); + var RegisterClientCommand = class _RegisterClientCommand extends smithy_client_9.Command { + constructor(input) { + super(); + this.input = input; + } + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_2.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_3.getEndpointPlugin)(configuration, _RegisterClientCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SSOOIDCClient"; + const commandName = "RegisterClientCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return se_RegisterClientCommand(input, context); + } + deserialize(output, context) { + return de_RegisterClientCommand(output, context); + } + }; + var middleware_endpoint_4 = require_dist_cjs26(); + var middleware_serde_3 = require_dist_cjs25(); + var smithy_client_10 = require_dist_cjs35(); + var StartDeviceAuthorizationCommand = class _StartDeviceAuthorizationCommand extends smithy_client_10.Command { + constructor(input) { + super(); + this.input = input; + } + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_3.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_4.getEndpointPlugin)(configuration, _StartDeviceAuthorizationCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SSOOIDCClient"; + const commandName = "StartDeviceAuthorizationCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return se_StartDeviceAuthorizationCommand(input, context); + } + deserialize(output, context) { + return de_StartDeviceAuthorizationCommand(output, context); + } + }; + var commands = { + CreateTokenCommand, + RegisterClientCommand, + StartDeviceAuthorizationCommand + }; + var SSOOIDC = class extends SSOOIDCClient { + }; + (0, smithy_client_5.createAggregatedClient)(commands, SSOOIDC); + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/constants.js +var require_constants8 = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.REFRESH_MESSAGE = exports.EXPIRE_WINDOW_MS = void 0; + exports.EXPIRE_WINDOW_MS = 5 * 60 * 1e3; + exports.REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/getSsoOidcClient.js +var require_getSsoOidcClient = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/getSsoOidcClient.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getSsoOidcClient = void 0; + var client_sso_oidc_node_1 = require_client_sso_oidc_node(); + var ssoOidcClientsHash = {}; + var getSsoOidcClient = (ssoRegion) => { + if (ssoOidcClientsHash[ssoRegion]) { + return ssoOidcClientsHash[ssoRegion]; + } + const ssoOidcClient = new client_sso_oidc_node_1.SSOOIDCClient({ region: ssoRegion }); + ssoOidcClientsHash[ssoRegion] = ssoOidcClient; + return ssoOidcClient; + }; + exports.getSsoOidcClient = getSsoOidcClient; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/getNewSsoOidcToken.js +var require_getNewSsoOidcToken = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/getNewSsoOidcToken.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getNewSsoOidcToken = void 0; + var client_sso_oidc_node_1 = require_client_sso_oidc_node(); + var getSsoOidcClient_1 = require_getSsoOidcClient(); + var getNewSsoOidcToken = (ssoToken, ssoRegion) => { + const ssoOidcClient = (0, getSsoOidcClient_1.getSsoOidcClient)(ssoRegion); + return ssoOidcClient.send(new client_sso_oidc_node_1.CreateTokenCommand({ + clientId: ssoToken.clientId, + clientSecret: ssoToken.clientSecret, + refreshToken: ssoToken.refreshToken, + grantType: "refresh_token" + })); + }; + exports.getNewSsoOidcToken = getNewSsoOidcToken; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/validateTokenExpiry.js +var require_validateTokenExpiry = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/validateTokenExpiry.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.validateTokenExpiry = void 0; + var property_provider_1 = require_dist_cjs6(); + var constants_1 = require_constants8(); + var validateTokenExpiry = (token) => { + if (token.expiration && token.expiration.getTime() < Date.now()) { + throw new property_provider_1.TokenProviderError(`Token is expired. ${constants_1.REFRESH_MESSAGE}`, false); + } + }; + exports.validateTokenExpiry = validateTokenExpiry; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/validateTokenKey.js +var require_validateTokenKey = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/validateTokenKey.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.validateTokenKey = void 0; + var property_provider_1 = require_dist_cjs6(); + var constants_1 = require_constants8(); + var validateTokenKey = (key, value, forRefresh = false) => { + if (typeof value === "undefined") { + throw new property_provider_1.TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? ". Cannot refresh" : ""}. ${constants_1.REFRESH_MESSAGE}`, false); + } + }; + exports.validateTokenKey = validateTokenKey; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/writeSSOTokenToFile.js +var require_writeSSOTokenToFile = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/writeSSOTokenToFile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeSSOTokenToFile = void 0; + var shared_ini_file_loader_1 = require_dist_cjs38(); + var fs_1 = require("fs"); + var { writeFile } = fs_1.promises; + var writeSSOTokenToFile = (id, ssoToken) => { + const tokenFilepath = (0, shared_ini_file_loader_1.getSSOTokenFilepath)(id); + const tokenString = JSON.stringify(ssoToken, null, 2); + return writeFile(tokenFilepath, tokenString); + }; + exports.writeSSOTokenToFile = writeSSOTokenToFile; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/fromSso.js +var require_fromSso = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/fromSso.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromSso = void 0; + var property_provider_1 = require_dist_cjs6(); + var shared_ini_file_loader_1 = require_dist_cjs38(); + var constants_1 = require_constants8(); + var getNewSsoOidcToken_1 = require_getNewSsoOidcToken(); + var validateTokenExpiry_1 = require_validateTokenExpiry(); + var validateTokenKey_1 = require_validateTokenKey(); + var writeSSOTokenToFile_1 = require_writeSSOTokenToFile(); + var lastRefreshAttemptTime = /* @__PURE__ */ new Date(0); + var fromSso = (init = {}) => async () => { + const profiles = await (0, shared_ini_file_loader_1.parseKnownFiles)(init); + const profileName = (0, shared_ini_file_loader_1.getProfileName)(init); + const profile = profiles[profileName]; + if (!profile) { + throw new property_provider_1.TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false); + } else if (!profile["sso_session"]) { + throw new property_provider_1.TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`); + } + const ssoSessionName = profile["sso_session"]; + const ssoSessions = await (0, shared_ini_file_loader_1.loadSsoSessionData)(init); + const ssoSession = ssoSessions[ssoSessionName]; + if (!ssoSession) { + throw new property_provider_1.TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false); + } + for (const ssoSessionRequiredKey of ["sso_start_url", "sso_region"]) { + if (!ssoSession[ssoSessionRequiredKey]) { + throw new property_provider_1.TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false); + } + } + const ssoStartUrl = ssoSession["sso_start_url"]; + const ssoRegion = ssoSession["sso_region"]; + let ssoToken; + try { + ssoToken = await (0, shared_ini_file_loader_1.getSSOTokenFromFile)(ssoSessionName); + } catch (e) { + throw new property_provider_1.TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${constants_1.REFRESH_MESSAGE}`, false); + } + (0, validateTokenKey_1.validateTokenKey)("accessToken", ssoToken.accessToken); + (0, validateTokenKey_1.validateTokenKey)("expiresAt", ssoToken.expiresAt); + const { accessToken, expiresAt } = ssoToken; + const existingToken = { token: accessToken, expiration: new Date(expiresAt) }; + if (existingToken.expiration.getTime() - Date.now() > constants_1.EXPIRE_WINDOW_MS) { + return existingToken; + } + if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1e3) { + (0, validateTokenExpiry_1.validateTokenExpiry)(existingToken); + return existingToken; + } + (0, validateTokenKey_1.validateTokenKey)("clientId", ssoToken.clientId, true); + (0, validateTokenKey_1.validateTokenKey)("clientSecret", ssoToken.clientSecret, true); + (0, validateTokenKey_1.validateTokenKey)("refreshToken", ssoToken.refreshToken, true); + try { + lastRefreshAttemptTime.setTime(Date.now()); + const newSsoOidcToken = await (0, getNewSsoOidcToken_1.getNewSsoOidcToken)(ssoToken, ssoRegion); + (0, validateTokenKey_1.validateTokenKey)("accessToken", newSsoOidcToken.accessToken); + (0, validateTokenKey_1.validateTokenKey)("expiresIn", newSsoOidcToken.expiresIn); + const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1e3); + try { + await (0, writeSSOTokenToFile_1.writeSSOTokenToFile)(ssoSessionName, { + ...ssoToken, + accessToken: newSsoOidcToken.accessToken, + expiresAt: newTokenExpiration.toISOString(), + refreshToken: newSsoOidcToken.refreshToken + }); + } catch (error) { + } + return { + token: newSsoOidcToken.accessToken, + expiration: newTokenExpiration + }; + } catch (error) { + (0, validateTokenExpiry_1.validateTokenExpiry)(existingToken); + return existingToken; + } + }; + exports.fromSso = fromSso; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/fromStatic.js +var require_fromStatic3 = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/fromStatic.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromStatic = void 0; + var property_provider_1 = require_dist_cjs6(); + var fromStatic = ({ token }) => async () => { + if (!token || !token.token) { + throw new property_provider_1.TokenProviderError(`Please pass a valid token to fromStatic`, false); + } + return token; + }; + exports.fromStatic = fromStatic; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/nodeProvider.js +var require_nodeProvider = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/nodeProvider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.nodeProvider = void 0; + var property_provider_1 = require_dist_cjs6(); + var fromSso_1 = require_fromSso(); + var nodeProvider = (init = {}) => (0, property_provider_1.memoize)((0, property_provider_1.chain)((0, fromSso_1.fromSso)(init), async () => { + throw new property_provider_1.TokenProviderError("Could not load token from any providers", false); + }), (token) => token.expiration !== void 0 && token.expiration.getTime() - Date.now() < 3e5, (token) => token.expiration !== void 0); + exports.nodeProvider = nodeProvider; + } +}); + +// ../../../node_modules/@aws-sdk/token-providers/dist-cjs/index.js +var require_dist_cjs47 = __commonJS({ + "../../../node_modules/@aws-sdk/token-providers/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_client_sso_oidc_node(), exports); + tslib_1.__exportStar(require_fromSso(), exports); + tslib_1.__exportStar(require_fromStatic3(), exports); + tslib_1.__exportStar(require_nodeProvider(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/resolveSSOCredentials.js +var require_resolveSSOCredentials = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/resolveSSOCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveSSOCredentials = void 0; + var client_sso_1 = require_dist_cjs46(); + var token_providers_1 = require_dist_cjs47(); + var property_provider_1 = require_dist_cjs6(); + var shared_ini_file_loader_1 = require_dist_cjs38(); + var EXPIRE_WINDOW_MS = 15 * 60 * 1e3; + var SHOULD_FAIL_CREDENTIAL_CHAIN = false; + var resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, profile }) => { + let token; + const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`; + if (ssoSession) { + try { + const _token = await (0, token_providers_1.fromSso)({ profile })(); + token = { + accessToken: _token.token, + expiresAt: new Date(_token.expiration).toISOString() + }; + } catch (e) { + throw new property_provider_1.CredentialsProviderError(e.message, SHOULD_FAIL_CREDENTIAL_CHAIN); + } + } else { + try { + token = await (0, shared_ini_file_loader_1.getSSOTokenFromFile)(ssoStartUrl); + } catch (e) { + throw new property_provider_1.CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, SHOULD_FAIL_CREDENTIAL_CHAIN); + } + } + if (new Date(token.expiresAt).getTime() - Date.now() <= EXPIRE_WINDOW_MS) { + throw new property_provider_1.CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, SHOULD_FAIL_CREDENTIAL_CHAIN); + } + const { accessToken } = token; + const sso = ssoClient || new client_sso_1.SSOClient({ region: ssoRegion }); + let ssoResp; + try { + ssoResp = await sso.send(new client_sso_1.GetRoleCredentialsCommand({ + accountId: ssoAccountId, + roleName: ssoRoleName, + accessToken + })); + } catch (e) { + throw property_provider_1.CredentialsProviderError.from(e, SHOULD_FAIL_CREDENTIAL_CHAIN); + } + const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration } = {} } = ssoResp; + if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) { + throw new property_provider_1.CredentialsProviderError("SSO returns an invalid temporary credential.", SHOULD_FAIL_CREDENTIAL_CHAIN); + } + return { accessKeyId, secretAccessKey, sessionToken, expiration: new Date(expiration) }; + }; + exports.resolveSSOCredentials = resolveSSOCredentials; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/validateSsoProfile.js +var require_validateSsoProfile = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/validateSsoProfile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.validateSsoProfile = void 0; + var property_provider_1 = require_dist_cjs6(); + var validateSsoProfile = (profile) => { + const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile; + if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) { + throw new property_provider_1.CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", "sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")} +Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, false); + } + return profile; + }; + exports.validateSsoProfile = validateSsoProfile; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/fromSSO.js +var require_fromSSO = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/fromSSO.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromSSO = void 0; + var property_provider_1 = require_dist_cjs6(); + var shared_ini_file_loader_1 = require_dist_cjs38(); + var isSsoProfile_1 = require_isSsoProfile(); + var resolveSSOCredentials_1 = require_resolveSSOCredentials(); + var validateSsoProfile_1 = require_validateSsoProfile(); + var fromSSO = (init = {}) => async () => { + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, ssoSession } = init; + const profileName = (0, shared_ini_file_loader_1.getProfileName)(init); + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + const profiles = await (0, shared_ini_file_loader_1.parseKnownFiles)(init); + const profile = profiles[profileName]; + if (!profile) { + throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} was not found.`); + } + if (!(0, isSsoProfile_1.isSsoProfile)(profile)) { + throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`); + } + if (profile === null || profile === void 0 ? void 0 : profile.sso_session) { + const ssoSessions = await (0, shared_ini_file_loader_1.loadSsoSessionData)(init); + const session = ssoSessions[profile.sso_session]; + const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`; + if (ssoRegion && ssoRegion !== session.sso_region) { + throw new property_provider_1.CredentialsProviderError(`Conflicting SSO region` + conflictMsg, false); + } + if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) { + throw new property_provider_1.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, false); + } + profile.sso_region = session.sso_region; + profile.sso_start_url = session.sso_start_url; + } + const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = (0, validateSsoProfile_1.validateSsoProfile)(profile); + return (0, resolveSSOCredentials_1.resolveSSOCredentials)({ + ssoStartUrl: sso_start_url, + ssoSession: sso_session, + ssoAccountId: sso_account_id, + ssoRegion: sso_region, + ssoRoleName: sso_role_name, + ssoClient, + profile: profileName + }); + } else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) { + throw new property_provider_1.CredentialsProviderError('Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"'); + } else { + return (0, resolveSSOCredentials_1.resolveSSOCredentials)({ + ssoStartUrl, + ssoSession, + ssoAccountId, + ssoRegion, + ssoRoleName, + ssoClient, + profile: profileName + }); + } + }; + exports.fromSSO = fromSSO; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/types.js +var require_types7 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js +var require_dist_cjs48 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_fromSSO(), exports); + tslib_1.__exportStar(require_isSsoProfile(), exports); + tslib_1.__exportStar(require_types7(), exports); + tslib_1.__exportStar(require_validateSsoProfile(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveSsoCredentials.js +var require_resolveSsoCredentials = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveSsoCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveSsoCredentials = exports.isSsoProfile = void 0; + var credential_provider_sso_1 = require_dist_cjs48(); + var credential_provider_sso_2 = require_dist_cjs48(); + Object.defineProperty(exports, "isSsoProfile", { enumerable: true, get: function() { + return credential_provider_sso_2.isSsoProfile; + } }); + var resolveSsoCredentials = (data) => { + const { sso_start_url, sso_account_id, sso_session, sso_region, sso_role_name } = (0, credential_provider_sso_1.validateSsoProfile)(data); + return (0, credential_provider_sso_1.fromSSO)({ + ssoStartUrl: sso_start_url, + ssoAccountId: sso_account_id, + ssoSession: sso_session, + ssoRegion: sso_region, + ssoRoleName: sso_role_name + })(); + }; + exports.resolveSsoCredentials = resolveSsoCredentials; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveStaticCredentials.js +var require_resolveStaticCredentials = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveStaticCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveStaticCredentials = exports.isStaticCredsProfile = void 0; + var isStaticCredsProfile = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.aws_access_key_id === "string" && typeof arg.aws_secret_access_key === "string" && ["undefined", "string"].indexOf(typeof arg.aws_session_token) > -1; + exports.isStaticCredsProfile = isStaticCredsProfile; + var resolveStaticCredentials = (profile) => Promise.resolve({ + accessKeyId: profile.aws_access_key_id, + secretAccessKey: profile.aws_secret_access_key, + sessionToken: profile.aws_session_token + }); + exports.resolveStaticCredentials = resolveStaticCredentials; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js +var require_fromWebToken = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromWebToken = void 0; + var property_provider_1 = require_dist_cjs6(); + var fromWebToken = (init) => () => { + const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds, roleAssumerWithWebIdentity } = init; + if (!roleAssumerWithWebIdentity) { + throw new property_provider_1.CredentialsProviderError(`Role Arn '${roleArn}' needs to be assumed with web identity, but no role assumption callback was provided.`, false); + } + return roleAssumerWithWebIdentity({ + RoleArn: roleArn, + RoleSessionName: roleSessionName !== null && roleSessionName !== void 0 ? roleSessionName : `aws-sdk-js-session-${Date.now()}`, + WebIdentityToken: webIdentityToken, + ProviderId: providerId, + PolicyArns: policyArns, + Policy: policy, + DurationSeconds: durationSeconds + }); + }; + exports.fromWebToken = fromWebToken; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js +var require_fromTokenFile = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromTokenFile = void 0; + var property_provider_1 = require_dist_cjs6(); + var fs_1 = require("fs"); + var fromWebToken_1 = require_fromWebToken(); + var ENV_TOKEN_FILE = "AWS_WEB_IDENTITY_TOKEN_FILE"; + var ENV_ROLE_ARN = "AWS_ROLE_ARN"; + var ENV_ROLE_SESSION_NAME = "AWS_ROLE_SESSION_NAME"; + var fromTokenFile = (init = {}) => async () => { + var _a, _b, _c; + const webIdentityTokenFile = (_a = init === null || init === void 0 ? void 0 : init.webIdentityTokenFile) !== null && _a !== void 0 ? _a : process.env[ENV_TOKEN_FILE]; + const roleArn = (_b = init === null || init === void 0 ? void 0 : init.roleArn) !== null && _b !== void 0 ? _b : process.env[ENV_ROLE_ARN]; + const roleSessionName = (_c = init === null || init === void 0 ? void 0 : init.roleSessionName) !== null && _c !== void 0 ? _c : process.env[ENV_ROLE_SESSION_NAME]; + if (!webIdentityTokenFile || !roleArn) { + throw new property_provider_1.CredentialsProviderError("Web identity configuration not specified"); + } + return (0, fromWebToken_1.fromWebToken)({ + ...init, + webIdentityToken: (0, fs_1.readFileSync)(webIdentityTokenFile, { encoding: "ascii" }), + roleArn, + roleSessionName + })(); + }; + exports.fromTokenFile = fromTokenFile; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js +var require_dist_cjs49 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_fromTokenFile(), exports); + tslib_1.__exportStar(require_fromWebToken(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveWebIdentityCredentials.js +var require_resolveWebIdentityCredentials = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveWebIdentityCredentials.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveWebIdentityCredentials = exports.isWebIdentityProfile = void 0; + var credential_provider_web_identity_1 = require_dist_cjs49(); + var isWebIdentityProfile = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.web_identity_token_file === "string" && typeof arg.role_arn === "string" && ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1; + exports.isWebIdentityProfile = isWebIdentityProfile; + var resolveWebIdentityCredentials = async (profile, options) => (0, credential_provider_web_identity_1.fromTokenFile)({ + webIdentityTokenFile: profile.web_identity_token_file, + roleArn: profile.role_arn, + roleSessionName: profile.role_session_name, + roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity + })(); + exports.resolveWebIdentityCredentials = resolveWebIdentityCredentials; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveProfileData.js +var require_resolveProfileData = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveProfileData.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveProfileData = void 0; + var property_provider_1 = require_dist_cjs6(); + var resolveAssumeRoleCredentials_1 = require_resolveAssumeRoleCredentials(); + var resolveProcessCredentials_1 = require_resolveProcessCredentials2(); + var resolveSsoCredentials_1 = require_resolveSsoCredentials(); + var resolveStaticCredentials_1 = require_resolveStaticCredentials(); + var resolveWebIdentityCredentials_1 = require_resolveWebIdentityCredentials(); + var resolveProfileData = async (profileName, profiles, options, visitedProfiles = {}) => { + const data = profiles[profileName]; + if (Object.keys(visitedProfiles).length > 0 && (0, resolveStaticCredentials_1.isStaticCredsProfile)(data)) { + return (0, resolveStaticCredentials_1.resolveStaticCredentials)(data); + } + if ((0, resolveAssumeRoleCredentials_1.isAssumeRoleProfile)(data)) { + return (0, resolveAssumeRoleCredentials_1.resolveAssumeRoleCredentials)(profileName, profiles, options, visitedProfiles); + } + if ((0, resolveStaticCredentials_1.isStaticCredsProfile)(data)) { + return (0, resolveStaticCredentials_1.resolveStaticCredentials)(data); + } + if ((0, resolveWebIdentityCredentials_1.isWebIdentityProfile)(data)) { + return (0, resolveWebIdentityCredentials_1.resolveWebIdentityCredentials)(data, options); + } + if ((0, resolveProcessCredentials_1.isProcessProfile)(data)) { + return (0, resolveProcessCredentials_1.resolveProcessCredentials)(options, profileName); + } + if ((0, resolveSsoCredentials_1.isSsoProfile)(data)) { + return (0, resolveSsoCredentials_1.resolveSsoCredentials)(data); + } + throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} could not be found or parsed in shared credentials file.`); + }; + exports.resolveProfileData = resolveProfileData; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/fromIni.js +var require_fromIni = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/fromIni.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromIni = void 0; + var shared_ini_file_loader_1 = require_dist_cjs38(); + var resolveProfileData_1 = require_resolveProfileData(); + var fromIni = (init = {}) => async () => { + const profiles = await (0, shared_ini_file_loader_1.parseKnownFiles)(init); + return (0, resolveProfileData_1.resolveProfileData)((0, shared_ini_file_loader_1.getProfileName)(init), profiles, init); + }; + exports.fromIni = fromIni; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js +var require_dist_cjs50 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_fromIni(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-node/dist-cjs/remoteProvider.js +var require_remoteProvider = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-node/dist-cjs/remoteProvider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.remoteProvider = exports.ENV_IMDS_DISABLED = void 0; + var credential_provider_imds_1 = require_dist_cjs40(); + var property_provider_1 = require_dist_cjs6(); + exports.ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; + var remoteProvider = (init) => { + if (process.env[credential_provider_imds_1.ENV_CMDS_RELATIVE_URI] || process.env[credential_provider_imds_1.ENV_CMDS_FULL_URI]) { + return (0, credential_provider_imds_1.fromContainerMetadata)(init); + } + if (process.env[exports.ENV_IMDS_DISABLED]) { + return async () => { + throw new property_provider_1.CredentialsProviderError("EC2 Instance Metadata Service access disabled"); + }; + } + return (0, credential_provider_imds_1.fromInstanceMetadata)(init); + }; + exports.remoteProvider = remoteProvider; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-node/dist-cjs/defaultProvider.js +var require_defaultProvider = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-node/dist-cjs/defaultProvider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defaultProvider = void 0; + var credential_provider_env_1 = require_dist_cjs37(); + var credential_provider_ini_1 = require_dist_cjs50(); + var credential_provider_process_1 = require_dist_cjs41(); + var credential_provider_sso_1 = require_dist_cjs48(); + var credential_provider_web_identity_1 = require_dist_cjs49(); + var property_provider_1 = require_dist_cjs6(); + var shared_ini_file_loader_1 = require_dist_cjs38(); + var remoteProvider_1 = require_remoteProvider(); + var defaultProvider = (init = {}) => (0, property_provider_1.memoize)((0, property_provider_1.chain)(...init.profile || process.env[shared_ini_file_loader_1.ENV_PROFILE] ? [] : [(0, credential_provider_env_1.fromEnv)()], (0, credential_provider_sso_1.fromSSO)(init), (0, credential_provider_ini_1.fromIni)(init), (0, credential_provider_process_1.fromProcess)(init), (0, credential_provider_web_identity_1.fromTokenFile)(init), (0, remoteProvider_1.remoteProvider)(init), async () => { + throw new property_provider_1.CredentialsProviderError("Could not load credentials from any providers", false); + }), (credentials) => credentials.expiration !== void 0 && credentials.expiration.getTime() - Date.now() < 3e5, (credentials) => credentials.expiration !== void 0); + exports.defaultProvider = defaultProvider; + } +}); + +// ../../../node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js +var require_dist_cjs51 = __commonJS({ + "../../../node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_defaultProvider(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/ruleset.js +var require_ruleset2 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/ruleset.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ruleSet = void 0; + var F = "required"; + var G = "type"; + var H = "fn"; + var I = "argv"; + var J = "ref"; + var a = false; + var b = true; + var c = "booleanEquals"; + var d = "tree"; + var e = "stringEquals"; + var f = "sigv4"; + var g = "sts"; + var h = "us-east-1"; + var i = "endpoint"; + var j = "https://sts.{Region}.{PartitionResult#dnsSuffix}"; + var k = "error"; + var l = "getAttr"; + var m = { [F]: false, [G]: "String" }; + var n = { [F]: true, "default": false, [G]: "Boolean" }; + var o = { [J]: "Endpoint" }; + var p = { [H]: "isSet", [I]: [{ [J]: "Region" }] }; + var q = { [J]: "Region" }; + var r = { [H]: "aws.partition", [I]: [q], "assign": "PartitionResult" }; + var s = { [J]: "UseFIPS" }; + var t = { [J]: "UseDualStack" }; + var u = { "url": "https://sts.amazonaws.com", "properties": { "authSchemes": [{ "name": f, "signingName": g, "signingRegion": h }] }, "headers": {} }; + var v = {}; + var w = { "conditions": [{ [H]: e, [I]: [q, "aws-global"] }], [i]: u, [G]: i }; + var x = { [H]: c, [I]: [s, true] }; + var y = { [H]: c, [I]: [t, true] }; + var z = { [H]: c, [I]: [true, { [H]: l, [I]: [{ [J]: "PartitionResult" }, "supportsFIPS"] }] }; + var A = { [J]: "PartitionResult" }; + var B = { [H]: c, [I]: [true, { [H]: l, [I]: [A, "supportsDualStack"] }] }; + var C = [{ [H]: "isSet", [I]: [o] }]; + var D = [x]; + var E = [y]; + var _data = { version: "1.0", parameters: { Region: m, UseDualStack: n, UseFIPS: n, Endpoint: m, UseGlobalEndpoint: n }, rules: [{ conditions: [{ [H]: c, [I]: [{ [J]: "UseGlobalEndpoint" }, b] }, { [H]: "not", [I]: C }, p, r, { [H]: c, [I]: [s, a] }, { [H]: c, [I]: [t, a] }], [G]: d, rules: [{ conditions: [{ [H]: e, [I]: [q, "ap-northeast-1"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "ap-south-1"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "ap-southeast-1"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "ap-southeast-2"] }], endpoint: u, [G]: i }, w, { conditions: [{ [H]: e, [I]: [q, "ca-central-1"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "eu-central-1"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "eu-north-1"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "eu-west-1"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "eu-west-2"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "eu-west-3"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "sa-east-1"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, h] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "us-east-2"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "us-west-1"] }], endpoint: u, [G]: i }, { conditions: [{ [H]: e, [I]: [q, "us-west-2"] }], endpoint: u, [G]: i }, { endpoint: { url: j, properties: { authSchemes: [{ name: f, signingName: g, signingRegion: "{Region}" }] }, headers: v }, [G]: i }] }, { conditions: C, [G]: d, rules: [{ conditions: D, error: "Invalid Configuration: FIPS and custom endpoint are not supported", [G]: k }, { [G]: d, rules: [{ conditions: E, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", [G]: k }, { endpoint: { url: o, properties: v, headers: v }, [G]: i }] }] }, { [G]: d, rules: [{ conditions: [p], [G]: d, rules: [{ conditions: [r], [G]: d, rules: [{ conditions: [x, y], [G]: d, rules: [{ conditions: [z, B], [G]: d, rules: [{ [G]: d, rules: [{ endpoint: { url: "https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: v, headers: v }, [G]: i }] }] }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", [G]: k }] }, { conditions: D, [G]: d, rules: [{ conditions: [z], [G]: d, rules: [{ [G]: d, rules: [{ conditions: [{ [H]: e, [I]: ["aws-us-gov", { [H]: l, [I]: [A, "name"] }] }], endpoint: { url: "https://sts.{Region}.amazonaws.com", properties: v, headers: v }, [G]: i }, { endpoint: { url: "https://sts-fips.{Region}.{PartitionResult#dnsSuffix}", properties: v, headers: v }, [G]: i }] }] }, { error: "FIPS is enabled but this partition does not support FIPS", [G]: k }] }, { conditions: E, [G]: d, rules: [{ conditions: [B], [G]: d, rules: [{ [G]: d, rules: [{ endpoint: { url: "https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: v, headers: v }, [G]: i }] }] }, { error: "DualStack is enabled but this partition does not support DualStack", [G]: k }] }, { [G]: d, rules: [w, { endpoint: { url: j, properties: v, headers: v }, [G]: i }] }] }] }, { error: "Invalid Configuration: Missing Region", [G]: k }] }] }; + exports.ruleSet = _data; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/endpointResolver.js +var require_endpointResolver2 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/endpointResolver.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defaultEndpointResolver = void 0; + var util_endpoints_1 = require_dist_cjs18(); + var ruleset_1 = require_ruleset2(); + var defaultEndpointResolver = (endpointParams, context = {}) => { + return (0, util_endpoints_1.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams, + logger: context.logger + }); + }; + exports.defaultEndpointResolver = defaultEndpointResolver; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.shared.js +var require_runtimeConfig_shared2 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.shared.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRuntimeConfig = void 0; + var smithy_client_1 = require_dist_cjs35(); + var url_parser_1 = require_dist_cjs24(); + var util_base64_1 = require_dist_cjs31(); + var util_utf8_1 = require_dist_cjs13(); + var endpointResolver_1 = require_endpointResolver2(); + var getRuntimeConfig = (config) => ({ + apiVersion: "2011-06-15", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + serviceId: config?.serviceId ?? "STS", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8 + }); + exports.getRuntimeConfig = getRuntimeConfig; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.js +var require_runtimeConfig2 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRuntimeConfig = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var package_json_1 = tslib_1.__importDefault(require_package2()); + var defaultStsRoleAssumers_1 = require_defaultStsRoleAssumers(); + var credential_provider_node_1 = require_dist_cjs51(); + var util_user_agent_node_1 = require_dist_cjs42(); + var config_resolver_1 = require_dist_cjs21(); + var hash_node_1 = require_dist_cjs43(); + var middleware_retry_1 = require_dist_cjs29(); + var node_config_provider_1 = require_dist_cjs39(); + var node_http_handler_1 = require_dist_cjs33(); + var util_body_length_node_1 = require_dist_cjs44(); + var util_retry_1 = require_dist_cjs28(); + var runtimeConfig_shared_1 = require_runtimeConfig_shared2(); + var smithy_client_1 = require_dist_cjs35(); + var util_defaults_mode_node_1 = require_dist_cjs45(); + var smithy_client_2 = require_dist_cjs35(); + var getRuntimeConfig = (config) => { + (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? (0, defaultStsRoleAssumers_1.decorateDefaultCredentialProvider)(credential_provider_node_1.defaultProvider), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS), + region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS), + requestHandler: config?.requestHandler ?? new node_http_handler_1.NodeHttpHandler(defaultConfigProvider), + retryMode: config?.retryMode ?? (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE + }), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS) + }; + }; + exports.getRuntimeConfig = getRuntimeConfig; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/STSClient.js +var require_STSClient = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/STSClient.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.STSClient = exports.__Client = void 0; + var middleware_host_header_1 = require_dist_cjs3(); + var middleware_logger_1 = require_dist_cjs4(); + var middleware_recursion_detection_1 = require_dist_cjs5(); + var middleware_sdk_sts_1 = require_dist_cjs36(); + var middleware_user_agent_1 = require_dist_cjs19(); + var config_resolver_1 = require_dist_cjs21(); + var middleware_content_length_1 = require_dist_cjs22(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_retry_1 = require_dist_cjs29(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "__Client", { enumerable: true, get: function() { + return smithy_client_1.Client; + } }); + var EndpointParameters_1 = require_EndpointParameters2(); + var runtimeConfig_1 = require_runtimeConfig2(); + var STSClient = class _STSClient extends smithy_client_1.Client { + constructor(...[configuration]) { + const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration || {}); + const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0); + const _config_2 = (0, config_resolver_1.resolveRegionConfig)(_config_1); + const _config_3 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_2); + const _config_4 = (0, middleware_retry_1.resolveRetryConfig)(_config_3); + const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4); + const _config_6 = (0, middleware_sdk_sts_1.resolveStsAuthConfig)(_config_5, { stsClientCtor: _STSClient }); + const _config_7 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_6); + super(_config_7); + this.config = _config_7; + this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config)); + this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config)); + this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config)); + this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config)); + this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config)); + this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config)); + } + destroy() { + super.destroy(); + } + }; + exports.STSClient = STSClient; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/AssumeRoleWithSAMLCommand.js +var require_AssumeRoleWithSAMLCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/AssumeRoleWithSAMLCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AssumeRoleWithSAMLCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_0(); + var Aws_query_1 = require_Aws_query(); + var AssumeRoleWithSAMLCommand = class _AssumeRoleWithSAMLCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _AssumeRoleWithSAMLCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "STSClient"; + const commandName = "AssumeRoleWithSAMLCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.AssumeRoleWithSAMLRequestFilterSensitiveLog, + outputFilterSensitiveLog: models_0_1.AssumeRoleWithSAMLResponseFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_query_1.se_AssumeRoleWithSAMLCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_query_1.de_AssumeRoleWithSAMLCommand)(output, context); + } + }; + exports.AssumeRoleWithSAMLCommand = AssumeRoleWithSAMLCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/DecodeAuthorizationMessageCommand.js +var require_DecodeAuthorizationMessageCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/DecodeAuthorizationMessageCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DecodeAuthorizationMessageCommand = exports.$Command = void 0; + var middleware_signing_1 = require_dist_cjs16(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_query_1 = require_Aws_query(); + var DecodeAuthorizationMessageCommand = class _DecodeAuthorizationMessageCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DecodeAuthorizationMessageCommand.getEndpointParameterInstructions())); + this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration)); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "STSClient"; + const commandName = "DecodeAuthorizationMessageCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_query_1.se_DecodeAuthorizationMessageCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_query_1.de_DecodeAuthorizationMessageCommand)(output, context); + } + }; + exports.DecodeAuthorizationMessageCommand = DecodeAuthorizationMessageCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetAccessKeyInfoCommand.js +var require_GetAccessKeyInfoCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetAccessKeyInfoCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GetAccessKeyInfoCommand = exports.$Command = void 0; + var middleware_signing_1 = require_dist_cjs16(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_query_1 = require_Aws_query(); + var GetAccessKeyInfoCommand = class _GetAccessKeyInfoCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _GetAccessKeyInfoCommand.getEndpointParameterInstructions())); + this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration)); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "STSClient"; + const commandName = "GetAccessKeyInfoCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_query_1.se_GetAccessKeyInfoCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_query_1.de_GetAccessKeyInfoCommand)(output, context); + } + }; + exports.GetAccessKeyInfoCommand = GetAccessKeyInfoCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetCallerIdentityCommand.js +var require_GetCallerIdentityCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetCallerIdentityCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GetCallerIdentityCommand = exports.$Command = void 0; + var middleware_signing_1 = require_dist_cjs16(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_query_1 = require_Aws_query(); + var GetCallerIdentityCommand = class _GetCallerIdentityCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _GetCallerIdentityCommand.getEndpointParameterInstructions())); + this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration)); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "STSClient"; + const commandName = "GetCallerIdentityCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_query_1.se_GetCallerIdentityCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_query_1.de_GetCallerIdentityCommand)(output, context); + } + }; + exports.GetCallerIdentityCommand = GetCallerIdentityCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetFederationTokenCommand.js +var require_GetFederationTokenCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetFederationTokenCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GetFederationTokenCommand = exports.$Command = void 0; + var middleware_signing_1 = require_dist_cjs16(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_0(); + var Aws_query_1 = require_Aws_query(); + var GetFederationTokenCommand = class _GetFederationTokenCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _GetFederationTokenCommand.getEndpointParameterInstructions())); + this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration)); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "STSClient"; + const commandName = "GetFederationTokenCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: models_0_1.GetFederationTokenResponseFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_query_1.se_GetFederationTokenCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_query_1.de_GetFederationTokenCommand)(output, context); + } + }; + exports.GetFederationTokenCommand = GetFederationTokenCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetSessionTokenCommand.js +var require_GetSessionTokenCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetSessionTokenCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GetSessionTokenCommand = exports.$Command = void 0; + var middleware_signing_1 = require_dist_cjs16(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_0(); + var Aws_query_1 = require_Aws_query(); + var GetSessionTokenCommand = class _GetSessionTokenCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _GetSessionTokenCommand.getEndpointParameterInstructions())); + this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration)); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "STSClient"; + const commandName = "GetSessionTokenCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: models_0_1.GetSessionTokenResponseFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_query_1.se_GetSessionTokenCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_query_1.de_GetSessionTokenCommand)(output, context); + } + }; + exports.GetSessionTokenCommand = GetSessionTokenCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/STS.js +var require_STS = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/STS.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.STS = void 0; + var smithy_client_1 = require_dist_cjs35(); + var AssumeRoleCommand_1 = require_AssumeRoleCommand(); + var AssumeRoleWithSAMLCommand_1 = require_AssumeRoleWithSAMLCommand(); + var AssumeRoleWithWebIdentityCommand_1 = require_AssumeRoleWithWebIdentityCommand(); + var DecodeAuthorizationMessageCommand_1 = require_DecodeAuthorizationMessageCommand(); + var GetAccessKeyInfoCommand_1 = require_GetAccessKeyInfoCommand(); + var GetCallerIdentityCommand_1 = require_GetCallerIdentityCommand(); + var GetFederationTokenCommand_1 = require_GetFederationTokenCommand(); + var GetSessionTokenCommand_1 = require_GetSessionTokenCommand(); + var STSClient_1 = require_STSClient(); + var commands = { + AssumeRoleCommand: AssumeRoleCommand_1.AssumeRoleCommand, + AssumeRoleWithSAMLCommand: AssumeRoleWithSAMLCommand_1.AssumeRoleWithSAMLCommand, + AssumeRoleWithWebIdentityCommand: AssumeRoleWithWebIdentityCommand_1.AssumeRoleWithWebIdentityCommand, + DecodeAuthorizationMessageCommand: DecodeAuthorizationMessageCommand_1.DecodeAuthorizationMessageCommand, + GetAccessKeyInfoCommand: GetAccessKeyInfoCommand_1.GetAccessKeyInfoCommand, + GetCallerIdentityCommand: GetCallerIdentityCommand_1.GetCallerIdentityCommand, + GetFederationTokenCommand: GetFederationTokenCommand_1.GetFederationTokenCommand, + GetSessionTokenCommand: GetSessionTokenCommand_1.GetSessionTokenCommand + }; + var STS = class extends STSClient_1.STSClient { + }; + exports.STS = STS; + (0, smithy_client_1.createAggregatedClient)(commands, STS); + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/index.js +var require_commands2 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/commands/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_AssumeRoleCommand(), exports); + tslib_1.__exportStar(require_AssumeRoleWithSAMLCommand(), exports); + tslib_1.__exportStar(require_AssumeRoleWithWebIdentityCommand(), exports); + tslib_1.__exportStar(require_DecodeAuthorizationMessageCommand(), exports); + tslib_1.__exportStar(require_GetAccessKeyInfoCommand(), exports); + tslib_1.__exportStar(require_GetCallerIdentityCommand(), exports); + tslib_1.__exportStar(require_GetFederationTokenCommand(), exports); + tslib_1.__exportStar(require_GetSessionTokenCommand(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/models/index.js +var require_models2 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/models/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_models_0(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/defaultRoleAssumers.js +var require_defaultRoleAssumers = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/defaultRoleAssumers.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.decorateDefaultCredentialProvider = exports.getDefaultRoleAssumerWithWebIdentity = exports.getDefaultRoleAssumer = void 0; + var defaultStsRoleAssumers_1 = require_defaultStsRoleAssumers(); + var STSClient_1 = require_STSClient(); + var getCustomizableStsClientCtor = (baseCtor, customizations) => { + if (!customizations) + return baseCtor; + else + return class CustomizableSTSClient extends baseCtor { + constructor(config) { + super(config); + for (const customization of customizations) { + this.middlewareStack.use(customization); + } + } + }; + }; + var getDefaultRoleAssumer = (stsOptions = {}, stsPlugins) => (0, defaultStsRoleAssumers_1.getDefaultRoleAssumer)(stsOptions, getCustomizableStsClientCtor(STSClient_1.STSClient, stsPlugins)); + exports.getDefaultRoleAssumer = getDefaultRoleAssumer; + var getDefaultRoleAssumerWithWebIdentity = (stsOptions = {}, stsPlugins) => (0, defaultStsRoleAssumers_1.getDefaultRoleAssumerWithWebIdentity)(stsOptions, getCustomizableStsClientCtor(STSClient_1.STSClient, stsPlugins)); + exports.getDefaultRoleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity; + var decorateDefaultCredentialProvider = (provider) => (input) => provider({ + roleAssumer: (0, exports.getDefaultRoleAssumer)(input), + roleAssumerWithWebIdentity: (0, exports.getDefaultRoleAssumerWithWebIdentity)(input), + ...input + }); + exports.decorateDefaultCredentialProvider = decorateDefaultCredentialProvider; + } +}); + +// ../../../node_modules/@aws-sdk/client-sts/dist-cjs/index.js +var require_dist_cjs52 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sts/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.STSServiceException = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_STSClient(), exports); + tslib_1.__exportStar(require_STS(), exports); + tslib_1.__exportStar(require_commands2(), exports); + tslib_1.__exportStar(require_models2(), exports); + tslib_1.__exportStar(require_defaultRoleAssumers(), exports); + var STSServiceException_1 = require_STSServiceException(); + Object.defineProperty(exports, "STSServiceException", { enumerable: true, get: function() { + return STSServiceException_1.STSServiceException; + } }); + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/endpoint/ruleset.js +var require_ruleset3 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/endpoint/ruleset.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ruleSet = void 0; + var r = "required"; + var s = "fn"; + var t = "argv"; + var u = "ref"; + var a = "isSet"; + var b = "tree"; + var c = "error"; + var d = "endpoint"; + var e = "PartitionResult"; + var f = { [r]: false, "type": "String" }; + var g = { [r]: true, "default": false, "type": "Boolean" }; + var h = { [u]: "Endpoint" }; + var i = { [s]: "booleanEquals", [t]: [{ [u]: "UseFIPS" }, true] }; + var j = { [s]: "booleanEquals", [t]: [{ [u]: "UseDualStack" }, true] }; + var k = {}; + var l = { [u]: "Region" }; + var m = { [s]: "booleanEquals", [t]: [true, { [s]: "getAttr", [t]: [{ [u]: e }, "supportsFIPS"] }] }; + var n = { [s]: "booleanEquals", [t]: [true, { [s]: "getAttr", [t]: [{ [u]: e }, "supportsDualStack"] }] }; + var o = [i]; + var p = [j]; + var q = [l]; + var _data = { version: "1.0", parameters: { Region: f, UseDualStack: g, UseFIPS: g, Endpoint: f }, rules: [{ conditions: [{ [s]: a, [t]: [h] }], type: b, rules: [{ conditions: o, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: c }, { type: b, rules: [{ conditions: p, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: c }, { endpoint: { url: h, properties: k, headers: k }, type: d }] }] }, { type: b, rules: [{ conditions: [{ [s]: a, [t]: q }], type: b, rules: [{ conditions: [{ [s]: "aws.partition", [t]: q, assign: e }], type: b, rules: [{ conditions: [i, j], type: b, rules: [{ conditions: [m, n], type: b, rules: [{ type: b, rules: [{ endpoint: { url: "https://states-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: k, headers: k }, type: d }] }] }, { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: c }] }, { conditions: o, type: b, rules: [{ conditions: [m], type: b, rules: [{ type: b, rules: [{ conditions: [{ [s]: "stringEquals", [t]: [l, "us-gov-west-1"] }], endpoint: { url: "https://states.us-gov-west-1.amazonaws.com", properties: k, headers: k }, type: d }, { endpoint: { url: "https://states-fips.{Region}.{PartitionResult#dnsSuffix}", properties: k, headers: k }, type: d }] }] }, { error: "FIPS is enabled but this partition does not support FIPS", type: c }] }, { conditions: p, type: b, rules: [{ conditions: [n], type: b, rules: [{ type: b, rules: [{ endpoint: { url: "https://states.{Region}.{PartitionResult#dualStackDnsSuffix}", properties: k, headers: k }, type: d }] }] }, { error: "DualStack is enabled but this partition does not support DualStack", type: c }] }, { type: b, rules: [{ endpoint: { url: "https://states.{Region}.{PartitionResult#dnsSuffix}", properties: k, headers: k }, type: d }] }] }] }, { error: "Invalid Configuration: Missing Region", type: c }] }] }; + exports.ruleSet = _data; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/endpoint/endpointResolver.js +var require_endpointResolver3 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/endpoint/endpointResolver.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defaultEndpointResolver = void 0; + var util_endpoints_1 = require_dist_cjs18(); + var ruleset_1 = require_ruleset3(); + var defaultEndpointResolver = (endpointParams, context = {}) => { + return (0, util_endpoints_1.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams, + logger: context.logger + }); + }; + exports.defaultEndpointResolver = defaultEndpointResolver; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/runtimeConfig.shared.js +var require_runtimeConfig_shared3 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/runtimeConfig.shared.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRuntimeConfig = void 0; + var smithy_client_1 = require_dist_cjs35(); + var url_parser_1 = require_dist_cjs24(); + var util_base64_1 = require_dist_cjs31(); + var util_utf8_1 = require_dist_cjs13(); + var endpointResolver_1 = require_endpointResolver3(); + var getRuntimeConfig = (config) => ({ + apiVersion: "2016-11-23", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + serviceId: config?.serviceId ?? "SFN", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8 + }); + exports.getRuntimeConfig = getRuntimeConfig; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/runtimeConfig.js +var require_runtimeConfig3 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/runtimeConfig.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRuntimeConfig = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var package_json_1 = tslib_1.__importDefault(require_package()); + var client_sts_1 = require_dist_cjs52(); + var credential_provider_node_1 = require_dist_cjs51(); + var util_user_agent_node_1 = require_dist_cjs42(); + var config_resolver_1 = require_dist_cjs21(); + var hash_node_1 = require_dist_cjs43(); + var middleware_retry_1 = require_dist_cjs29(); + var node_config_provider_1 = require_dist_cjs39(); + var node_http_handler_1 = require_dist_cjs33(); + var util_body_length_node_1 = require_dist_cjs44(); + var util_retry_1 = require_dist_cjs28(); + var runtimeConfig_shared_1 = require_runtimeConfig_shared3(); + var smithy_client_1 = require_dist_cjs35(); + var util_defaults_mode_node_1 = require_dist_cjs45(); + var smithy_client_2 = require_dist_cjs35(); + var getRuntimeConfig = (config) => { + (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? (0, client_sts_1.decorateDefaultCredentialProvider)(credential_provider_node_1.defaultProvider), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS), + region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS), + requestHandler: config?.requestHandler ?? new node_http_handler_1.NodeHttpHandler(defaultConfigProvider), + retryMode: config?.retryMode ?? (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE + }), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS) + }; + }; + exports.getRuntimeConfig = getRuntimeConfig; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/SFNClient.js +var require_SFNClient = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/SFNClient.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SFNClient = exports.__Client = void 0; + var middleware_host_header_1 = require_dist_cjs3(); + var middleware_logger_1 = require_dist_cjs4(); + var middleware_recursion_detection_1 = require_dist_cjs5(); + var middleware_signing_1 = require_dist_cjs16(); + var middleware_user_agent_1 = require_dist_cjs19(); + var config_resolver_1 = require_dist_cjs21(); + var middleware_content_length_1 = require_dist_cjs22(); + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_retry_1 = require_dist_cjs29(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "__Client", { enumerable: true, get: function() { + return smithy_client_1.Client; + } }); + var EndpointParameters_1 = require_EndpointParameters(); + var runtimeConfig_1 = require_runtimeConfig3(); + var SFNClient = class extends smithy_client_1.Client { + constructor(...[configuration]) { + const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration || {}); + const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0); + const _config_2 = (0, config_resolver_1.resolveRegionConfig)(_config_1); + const _config_3 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_2); + const _config_4 = (0, middleware_retry_1.resolveRetryConfig)(_config_3); + const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4); + const _config_6 = (0, middleware_signing_1.resolveAwsAuthConfig)(_config_5); + const _config_7 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_6); + super(_config_7); + this.config = _config_7; + this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config)); + this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config)); + this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config)); + this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config)); + this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config)); + this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(this.config)); + this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config)); + } + destroy() { + super.destroy(); + } + }; + exports.SFNClient = SFNClient; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/models/SFNServiceException.js +var require_SFNServiceException = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/models/SFNServiceException.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SFNServiceException = exports.__ServiceException = void 0; + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function() { + return smithy_client_1.ServiceException; + } }); + var SFNServiceException = class _SFNServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, _SFNServiceException.prototype); + } + }; + exports.SFNServiceException = SFNServiceException; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/models/models_0.js +var require_models_03 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/models/models_0.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ExecutionStartedEventDetailsFilterSensitiveLog = exports.ExecutionFailedEventDetailsFilterSensitiveLog = exports.ExecutionAbortedEventDetailsFilterSensitiveLog = exports.GetActivityTaskOutputFilterSensitiveLog = exports.DescribeStateMachineForExecutionOutputFilterSensitiveLog = exports.DescribeStateMachineAliasOutputFilterSensitiveLog = exports.DescribeStateMachineOutputFilterSensitiveLog = exports.DescribeExecutionOutputFilterSensitiveLog = exports.CreateStateMachineAliasInputFilterSensitiveLog = exports.CreateStateMachineInputFilterSensitiveLog = exports.ActivityTimedOutEventDetailsFilterSensitiveLog = exports.ActivitySucceededEventDetailsFilterSensitiveLog = exports.ActivityScheduleFailedEventDetailsFilterSensitiveLog = exports.ActivityScheduledEventDetailsFilterSensitiveLog = exports.ActivityFailedEventDetailsFilterSensitiveLog = exports.MissingRequiredParameter = exports.SyncExecutionStatus = exports.InvalidExecutionInput = exports.ExecutionLimitExceeded = exports.ExecutionAlreadyExists = exports.InvalidOutput = exports.TaskTimedOut = exports.TaskDoesNotExist = exports.InvalidToken = exports.HistoryEventType = exports.StateMachineDoesNotExist = exports.StateMachineStatus = exports.MapRunStatus = exports.ExecutionDoesNotExist = exports.ExecutionStatus = exports.ServiceQuotaExceededException = exports.ResourceNotFound = exports.ValidationException = exports.ValidationExceptionReason = exports.StateMachineTypeNotSupported = exports.StateMachineLimitExceeded = exports.StateMachineDeleting = exports.StateMachineAlreadyExists = exports.InvalidTracingConfiguration = exports.InvalidLoggingConfiguration = exports.InvalidDefinition = exports.InvalidArn = exports.StateMachineType = exports.LogLevel = exports.ConflictException = exports.TooManyTags = exports.InvalidName = exports.ActivityWorkerLimitExceeded = exports.ActivityLimitExceeded = exports.ActivityDoesNotExist = void 0; + exports.UpdateStateMachineAliasInputFilterSensitiveLog = exports.UpdateStateMachineInputFilterSensitiveLog = exports.StopExecutionInputFilterSensitiveLog = exports.StartSyncExecutionOutputFilterSensitiveLog = exports.StartSyncExecutionInputFilterSensitiveLog = exports.StartExecutionInputFilterSensitiveLog = exports.SendTaskSuccessInputFilterSensitiveLog = exports.SendTaskFailureInputFilterSensitiveLog = exports.PublishStateMachineVersionInputFilterSensitiveLog = exports.GetExecutionHistoryOutputFilterSensitiveLog = exports.HistoryEventFilterSensitiveLog = exports.TaskTimedOutEventDetailsFilterSensitiveLog = exports.TaskSucceededEventDetailsFilterSensitiveLog = exports.TaskSubmittedEventDetailsFilterSensitiveLog = exports.TaskSubmitFailedEventDetailsFilterSensitiveLog = exports.TaskStartFailedEventDetailsFilterSensitiveLog = exports.TaskScheduledEventDetailsFilterSensitiveLog = exports.TaskFailedEventDetailsFilterSensitiveLog = exports.StateExitedEventDetailsFilterSensitiveLog = exports.StateEnteredEventDetailsFilterSensitiveLog = exports.MapRunFailedEventDetailsFilterSensitiveLog = exports.LambdaFunctionTimedOutEventDetailsFilterSensitiveLog = exports.LambdaFunctionSucceededEventDetailsFilterSensitiveLog = exports.LambdaFunctionStartFailedEventDetailsFilterSensitiveLog = exports.LambdaFunctionScheduleFailedEventDetailsFilterSensitiveLog = exports.LambdaFunctionScheduledEventDetailsFilterSensitiveLog = exports.LambdaFunctionFailedEventDetailsFilterSensitiveLog = exports.ExecutionTimedOutEventDetailsFilterSensitiveLog = exports.ExecutionSucceededEventDetailsFilterSensitiveLog = void 0; + var smithy_client_1 = require_dist_cjs35(); + var SFNServiceException_1 = require_SFNServiceException(); + var ActivityDoesNotExist = class _ActivityDoesNotExist extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ActivityDoesNotExist", + $fault: "client", + ...opts + }); + this.name = "ActivityDoesNotExist"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ActivityDoesNotExist.prototype); + } + }; + exports.ActivityDoesNotExist = ActivityDoesNotExist; + var ActivityLimitExceeded = class _ActivityLimitExceeded extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ActivityLimitExceeded", + $fault: "client", + ...opts + }); + this.name = "ActivityLimitExceeded"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ActivityLimitExceeded.prototype); + } + }; + exports.ActivityLimitExceeded = ActivityLimitExceeded; + var ActivityWorkerLimitExceeded = class _ActivityWorkerLimitExceeded extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ActivityWorkerLimitExceeded", + $fault: "client", + ...opts + }); + this.name = "ActivityWorkerLimitExceeded"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ActivityWorkerLimitExceeded.prototype); + } + }; + exports.ActivityWorkerLimitExceeded = ActivityWorkerLimitExceeded; + var InvalidName = class _InvalidName extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "InvalidName", + $fault: "client", + ...opts + }); + this.name = "InvalidName"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidName.prototype); + } + }; + exports.InvalidName = InvalidName; + var TooManyTags = class _TooManyTags extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "TooManyTags", + $fault: "client", + ...opts + }); + this.name = "TooManyTags"; + this.$fault = "client"; + Object.setPrototypeOf(this, _TooManyTags.prototype); + this.resourceName = opts.resourceName; + } + }; + exports.TooManyTags = TooManyTags; + var ConflictException = class _ConflictException extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ConflictException", + $fault: "client", + ...opts + }); + this.name = "ConflictException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ConflictException.prototype); + } + }; + exports.ConflictException = ConflictException; + exports.LogLevel = { + ALL: "ALL", + ERROR: "ERROR", + FATAL: "FATAL", + OFF: "OFF" + }; + exports.StateMachineType = { + EXPRESS: "EXPRESS", + STANDARD: "STANDARD" + }; + var InvalidArn = class _InvalidArn extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "InvalidArn", + $fault: "client", + ...opts + }); + this.name = "InvalidArn"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidArn.prototype); + } + }; + exports.InvalidArn = InvalidArn; + var InvalidDefinition = class _InvalidDefinition extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "InvalidDefinition", + $fault: "client", + ...opts + }); + this.name = "InvalidDefinition"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidDefinition.prototype); + } + }; + exports.InvalidDefinition = InvalidDefinition; + var InvalidLoggingConfiguration = class _InvalidLoggingConfiguration extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "InvalidLoggingConfiguration", + $fault: "client", + ...opts + }); + this.name = "InvalidLoggingConfiguration"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidLoggingConfiguration.prototype); + } + }; + exports.InvalidLoggingConfiguration = InvalidLoggingConfiguration; + var InvalidTracingConfiguration = class _InvalidTracingConfiguration extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "InvalidTracingConfiguration", + $fault: "client", + ...opts + }); + this.name = "InvalidTracingConfiguration"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidTracingConfiguration.prototype); + } + }; + exports.InvalidTracingConfiguration = InvalidTracingConfiguration; + var StateMachineAlreadyExists = class _StateMachineAlreadyExists extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "StateMachineAlreadyExists", + $fault: "client", + ...opts + }); + this.name = "StateMachineAlreadyExists"; + this.$fault = "client"; + Object.setPrototypeOf(this, _StateMachineAlreadyExists.prototype); + } + }; + exports.StateMachineAlreadyExists = StateMachineAlreadyExists; + var StateMachineDeleting = class _StateMachineDeleting extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "StateMachineDeleting", + $fault: "client", + ...opts + }); + this.name = "StateMachineDeleting"; + this.$fault = "client"; + Object.setPrototypeOf(this, _StateMachineDeleting.prototype); + } + }; + exports.StateMachineDeleting = StateMachineDeleting; + var StateMachineLimitExceeded = class _StateMachineLimitExceeded extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "StateMachineLimitExceeded", + $fault: "client", + ...opts + }); + this.name = "StateMachineLimitExceeded"; + this.$fault = "client"; + Object.setPrototypeOf(this, _StateMachineLimitExceeded.prototype); + } + }; + exports.StateMachineLimitExceeded = StateMachineLimitExceeded; + var StateMachineTypeNotSupported = class _StateMachineTypeNotSupported extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "StateMachineTypeNotSupported", + $fault: "client", + ...opts + }); + this.name = "StateMachineTypeNotSupported"; + this.$fault = "client"; + Object.setPrototypeOf(this, _StateMachineTypeNotSupported.prototype); + } + }; + exports.StateMachineTypeNotSupported = StateMachineTypeNotSupported; + exports.ValidationExceptionReason = { + API_DOES_NOT_SUPPORT_LABELED_ARNS: "API_DOES_NOT_SUPPORT_LABELED_ARNS", + CANNOT_UPDATE_COMPLETED_MAP_RUN: "CANNOT_UPDATE_COMPLETED_MAP_RUN", + INVALID_ROUTING_CONFIGURATION: "INVALID_ROUTING_CONFIGURATION", + MISSING_REQUIRED_PARAMETER: "MISSING_REQUIRED_PARAMETER" + }; + var ValidationException = class _ValidationException extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ValidationException", + $fault: "client", + ...opts + }); + this.name = "ValidationException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ValidationException.prototype); + this.reason = opts.reason; + } + }; + exports.ValidationException = ValidationException; + var ResourceNotFound = class _ResourceNotFound extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ResourceNotFound", + $fault: "client", + ...opts + }); + this.name = "ResourceNotFound"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ResourceNotFound.prototype); + this.resourceName = opts.resourceName; + } + }; + exports.ResourceNotFound = ResourceNotFound; + var ServiceQuotaExceededException = class _ServiceQuotaExceededException extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ServiceQuotaExceededException", + $fault: "client", + ...opts + }); + this.name = "ServiceQuotaExceededException"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ServiceQuotaExceededException.prototype); + } + }; + exports.ServiceQuotaExceededException = ServiceQuotaExceededException; + exports.ExecutionStatus = { + ABORTED: "ABORTED", + FAILED: "FAILED", + RUNNING: "RUNNING", + SUCCEEDED: "SUCCEEDED", + TIMED_OUT: "TIMED_OUT" + }; + var ExecutionDoesNotExist = class _ExecutionDoesNotExist extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ExecutionDoesNotExist", + $fault: "client", + ...opts + }); + this.name = "ExecutionDoesNotExist"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ExecutionDoesNotExist.prototype); + } + }; + exports.ExecutionDoesNotExist = ExecutionDoesNotExist; + exports.MapRunStatus = { + ABORTED: "ABORTED", + FAILED: "FAILED", + RUNNING: "RUNNING", + SUCCEEDED: "SUCCEEDED" + }; + exports.StateMachineStatus = { + ACTIVE: "ACTIVE", + DELETING: "DELETING" + }; + var StateMachineDoesNotExist = class _StateMachineDoesNotExist extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "StateMachineDoesNotExist", + $fault: "client", + ...opts + }); + this.name = "StateMachineDoesNotExist"; + this.$fault = "client"; + Object.setPrototypeOf(this, _StateMachineDoesNotExist.prototype); + } + }; + exports.StateMachineDoesNotExist = StateMachineDoesNotExist; + exports.HistoryEventType = { + ActivityFailed: "ActivityFailed", + ActivityScheduleFailed: "ActivityScheduleFailed", + ActivityScheduled: "ActivityScheduled", + ActivityStarted: "ActivityStarted", + ActivitySucceeded: "ActivitySucceeded", + ActivityTimedOut: "ActivityTimedOut", + ChoiceStateEntered: "ChoiceStateEntered", + ChoiceStateExited: "ChoiceStateExited", + ExecutionAborted: "ExecutionAborted", + ExecutionFailed: "ExecutionFailed", + ExecutionStarted: "ExecutionStarted", + ExecutionSucceeded: "ExecutionSucceeded", + ExecutionTimedOut: "ExecutionTimedOut", + FailStateEntered: "FailStateEntered", + LambdaFunctionFailed: "LambdaFunctionFailed", + LambdaFunctionScheduleFailed: "LambdaFunctionScheduleFailed", + LambdaFunctionScheduled: "LambdaFunctionScheduled", + LambdaFunctionStartFailed: "LambdaFunctionStartFailed", + LambdaFunctionStarted: "LambdaFunctionStarted", + LambdaFunctionSucceeded: "LambdaFunctionSucceeded", + LambdaFunctionTimedOut: "LambdaFunctionTimedOut", + MapIterationAborted: "MapIterationAborted", + MapIterationFailed: "MapIterationFailed", + MapIterationStarted: "MapIterationStarted", + MapIterationSucceeded: "MapIterationSucceeded", + MapRunAborted: "MapRunAborted", + MapRunFailed: "MapRunFailed", + MapRunStarted: "MapRunStarted", + MapRunSucceeded: "MapRunSucceeded", + MapStateAborted: "MapStateAborted", + MapStateEntered: "MapStateEntered", + MapStateExited: "MapStateExited", + MapStateFailed: "MapStateFailed", + MapStateStarted: "MapStateStarted", + MapStateSucceeded: "MapStateSucceeded", + ParallelStateAborted: "ParallelStateAborted", + ParallelStateEntered: "ParallelStateEntered", + ParallelStateExited: "ParallelStateExited", + ParallelStateFailed: "ParallelStateFailed", + ParallelStateStarted: "ParallelStateStarted", + ParallelStateSucceeded: "ParallelStateSucceeded", + PassStateEntered: "PassStateEntered", + PassStateExited: "PassStateExited", + SucceedStateEntered: "SucceedStateEntered", + SucceedStateExited: "SucceedStateExited", + TaskFailed: "TaskFailed", + TaskScheduled: "TaskScheduled", + TaskStartFailed: "TaskStartFailed", + TaskStarted: "TaskStarted", + TaskStateAborted: "TaskStateAborted", + TaskStateEntered: "TaskStateEntered", + TaskStateExited: "TaskStateExited", + TaskSubmitFailed: "TaskSubmitFailed", + TaskSubmitted: "TaskSubmitted", + TaskSucceeded: "TaskSucceeded", + TaskTimedOut: "TaskTimedOut", + WaitStateAborted: "WaitStateAborted", + WaitStateEntered: "WaitStateEntered", + WaitStateExited: "WaitStateExited" + }; + var InvalidToken = class _InvalidToken extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "InvalidToken", + $fault: "client", + ...opts + }); + this.name = "InvalidToken"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidToken.prototype); + } + }; + exports.InvalidToken = InvalidToken; + var TaskDoesNotExist = class _TaskDoesNotExist extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "TaskDoesNotExist", + $fault: "client", + ...opts + }); + this.name = "TaskDoesNotExist"; + this.$fault = "client"; + Object.setPrototypeOf(this, _TaskDoesNotExist.prototype); + } + }; + exports.TaskDoesNotExist = TaskDoesNotExist; + var TaskTimedOut = class _TaskTimedOut extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "TaskTimedOut", + $fault: "client", + ...opts + }); + this.name = "TaskTimedOut"; + this.$fault = "client"; + Object.setPrototypeOf(this, _TaskTimedOut.prototype); + } + }; + exports.TaskTimedOut = TaskTimedOut; + var InvalidOutput = class _InvalidOutput extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "InvalidOutput", + $fault: "client", + ...opts + }); + this.name = "InvalidOutput"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidOutput.prototype); + } + }; + exports.InvalidOutput = InvalidOutput; + var ExecutionAlreadyExists = class _ExecutionAlreadyExists extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ExecutionAlreadyExists", + $fault: "client", + ...opts + }); + this.name = "ExecutionAlreadyExists"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ExecutionAlreadyExists.prototype); + } + }; + exports.ExecutionAlreadyExists = ExecutionAlreadyExists; + var ExecutionLimitExceeded = class _ExecutionLimitExceeded extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "ExecutionLimitExceeded", + $fault: "client", + ...opts + }); + this.name = "ExecutionLimitExceeded"; + this.$fault = "client"; + Object.setPrototypeOf(this, _ExecutionLimitExceeded.prototype); + } + }; + exports.ExecutionLimitExceeded = ExecutionLimitExceeded; + var InvalidExecutionInput = class _InvalidExecutionInput extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "InvalidExecutionInput", + $fault: "client", + ...opts + }); + this.name = "InvalidExecutionInput"; + this.$fault = "client"; + Object.setPrototypeOf(this, _InvalidExecutionInput.prototype); + } + }; + exports.InvalidExecutionInput = InvalidExecutionInput; + exports.SyncExecutionStatus = { + FAILED: "FAILED", + SUCCEEDED: "SUCCEEDED", + TIMED_OUT: "TIMED_OUT" + }; + var MissingRequiredParameter = class _MissingRequiredParameter extends SFNServiceException_1.SFNServiceException { + constructor(opts) { + super({ + name: "MissingRequiredParameter", + $fault: "client", + ...opts + }); + this.name = "MissingRequiredParameter"; + this.$fault = "client"; + Object.setPrototypeOf(this, _MissingRequiredParameter.prototype); + } + }; + exports.MissingRequiredParameter = MissingRequiredParameter; + var ActivityFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.ActivityFailedEventDetailsFilterSensitiveLog = ActivityFailedEventDetailsFilterSensitiveLog; + var ActivityScheduledEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.input && { input: smithy_client_1.SENSITIVE_STRING } + }); + exports.ActivityScheduledEventDetailsFilterSensitiveLog = ActivityScheduledEventDetailsFilterSensitiveLog; + var ActivityScheduleFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.ActivityScheduleFailedEventDetailsFilterSensitiveLog = ActivityScheduleFailedEventDetailsFilterSensitiveLog; + var ActivitySucceededEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.output && { output: smithy_client_1.SENSITIVE_STRING } + }); + exports.ActivitySucceededEventDetailsFilterSensitiveLog = ActivitySucceededEventDetailsFilterSensitiveLog; + var ActivityTimedOutEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.ActivityTimedOutEventDetailsFilterSensitiveLog = ActivityTimedOutEventDetailsFilterSensitiveLog; + var CreateStateMachineInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.definition && { definition: smithy_client_1.SENSITIVE_STRING }, + ...obj.versionDescription && { versionDescription: smithy_client_1.SENSITIVE_STRING } + }); + exports.CreateStateMachineInputFilterSensitiveLog = CreateStateMachineInputFilterSensitiveLog; + var CreateStateMachineAliasInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.description && { description: smithy_client_1.SENSITIVE_STRING } + }); + exports.CreateStateMachineAliasInputFilterSensitiveLog = CreateStateMachineAliasInputFilterSensitiveLog; + var DescribeExecutionOutputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.input && { input: smithy_client_1.SENSITIVE_STRING }, + ...obj.output && { output: smithy_client_1.SENSITIVE_STRING }, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.DescribeExecutionOutputFilterSensitiveLog = DescribeExecutionOutputFilterSensitiveLog; + var DescribeStateMachineOutputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.definition && { definition: smithy_client_1.SENSITIVE_STRING }, + ...obj.description && { description: smithy_client_1.SENSITIVE_STRING } + }); + exports.DescribeStateMachineOutputFilterSensitiveLog = DescribeStateMachineOutputFilterSensitiveLog; + var DescribeStateMachineAliasOutputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.description && { description: smithy_client_1.SENSITIVE_STRING } + }); + exports.DescribeStateMachineAliasOutputFilterSensitiveLog = DescribeStateMachineAliasOutputFilterSensitiveLog; + var DescribeStateMachineForExecutionOutputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.definition && { definition: smithy_client_1.SENSITIVE_STRING } + }); + exports.DescribeStateMachineForExecutionOutputFilterSensitiveLog = DescribeStateMachineForExecutionOutputFilterSensitiveLog; + var GetActivityTaskOutputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.input && { input: smithy_client_1.SENSITIVE_STRING } + }); + exports.GetActivityTaskOutputFilterSensitiveLog = GetActivityTaskOutputFilterSensitiveLog; + var ExecutionAbortedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.ExecutionAbortedEventDetailsFilterSensitiveLog = ExecutionAbortedEventDetailsFilterSensitiveLog; + var ExecutionFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.ExecutionFailedEventDetailsFilterSensitiveLog = ExecutionFailedEventDetailsFilterSensitiveLog; + var ExecutionStartedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.input && { input: smithy_client_1.SENSITIVE_STRING } + }); + exports.ExecutionStartedEventDetailsFilterSensitiveLog = ExecutionStartedEventDetailsFilterSensitiveLog; + var ExecutionSucceededEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.output && { output: smithy_client_1.SENSITIVE_STRING } + }); + exports.ExecutionSucceededEventDetailsFilterSensitiveLog = ExecutionSucceededEventDetailsFilterSensitiveLog; + var ExecutionTimedOutEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.ExecutionTimedOutEventDetailsFilterSensitiveLog = ExecutionTimedOutEventDetailsFilterSensitiveLog; + var LambdaFunctionFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.LambdaFunctionFailedEventDetailsFilterSensitiveLog = LambdaFunctionFailedEventDetailsFilterSensitiveLog; + var LambdaFunctionScheduledEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.input && { input: smithy_client_1.SENSITIVE_STRING } + }); + exports.LambdaFunctionScheduledEventDetailsFilterSensitiveLog = LambdaFunctionScheduledEventDetailsFilterSensitiveLog; + var LambdaFunctionScheduleFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.LambdaFunctionScheduleFailedEventDetailsFilterSensitiveLog = LambdaFunctionScheduleFailedEventDetailsFilterSensitiveLog; + var LambdaFunctionStartFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.LambdaFunctionStartFailedEventDetailsFilterSensitiveLog = LambdaFunctionStartFailedEventDetailsFilterSensitiveLog; + var LambdaFunctionSucceededEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.output && { output: smithy_client_1.SENSITIVE_STRING } + }); + exports.LambdaFunctionSucceededEventDetailsFilterSensitiveLog = LambdaFunctionSucceededEventDetailsFilterSensitiveLog; + var LambdaFunctionTimedOutEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.LambdaFunctionTimedOutEventDetailsFilterSensitiveLog = LambdaFunctionTimedOutEventDetailsFilterSensitiveLog; + var MapRunFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.MapRunFailedEventDetailsFilterSensitiveLog = MapRunFailedEventDetailsFilterSensitiveLog; + var StateEnteredEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.input && { input: smithy_client_1.SENSITIVE_STRING } + }); + exports.StateEnteredEventDetailsFilterSensitiveLog = StateEnteredEventDetailsFilterSensitiveLog; + var StateExitedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.output && { output: smithy_client_1.SENSITIVE_STRING } + }); + exports.StateExitedEventDetailsFilterSensitiveLog = StateExitedEventDetailsFilterSensitiveLog; + var TaskFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.TaskFailedEventDetailsFilterSensitiveLog = TaskFailedEventDetailsFilterSensitiveLog; + var TaskScheduledEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.parameters && { parameters: smithy_client_1.SENSITIVE_STRING } + }); + exports.TaskScheduledEventDetailsFilterSensitiveLog = TaskScheduledEventDetailsFilterSensitiveLog; + var TaskStartFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.TaskStartFailedEventDetailsFilterSensitiveLog = TaskStartFailedEventDetailsFilterSensitiveLog; + var TaskSubmitFailedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.TaskSubmitFailedEventDetailsFilterSensitiveLog = TaskSubmitFailedEventDetailsFilterSensitiveLog; + var TaskSubmittedEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.output && { output: smithy_client_1.SENSITIVE_STRING } + }); + exports.TaskSubmittedEventDetailsFilterSensitiveLog = TaskSubmittedEventDetailsFilterSensitiveLog; + var TaskSucceededEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.output && { output: smithy_client_1.SENSITIVE_STRING } + }); + exports.TaskSucceededEventDetailsFilterSensitiveLog = TaskSucceededEventDetailsFilterSensitiveLog; + var TaskTimedOutEventDetailsFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.TaskTimedOutEventDetailsFilterSensitiveLog = TaskTimedOutEventDetailsFilterSensitiveLog; + var HistoryEventFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.activityFailedEventDetails && { + activityFailedEventDetails: (0, exports.ActivityFailedEventDetailsFilterSensitiveLog)(obj.activityFailedEventDetails) + }, + ...obj.activityScheduleFailedEventDetails && { + activityScheduleFailedEventDetails: (0, exports.ActivityScheduleFailedEventDetailsFilterSensitiveLog)(obj.activityScheduleFailedEventDetails) + }, + ...obj.activityScheduledEventDetails && { + activityScheduledEventDetails: (0, exports.ActivityScheduledEventDetailsFilterSensitiveLog)(obj.activityScheduledEventDetails) + }, + ...obj.activitySucceededEventDetails && { + activitySucceededEventDetails: (0, exports.ActivitySucceededEventDetailsFilterSensitiveLog)(obj.activitySucceededEventDetails) + }, + ...obj.activityTimedOutEventDetails && { + activityTimedOutEventDetails: (0, exports.ActivityTimedOutEventDetailsFilterSensitiveLog)(obj.activityTimedOutEventDetails) + }, + ...obj.taskFailedEventDetails && { + taskFailedEventDetails: (0, exports.TaskFailedEventDetailsFilterSensitiveLog)(obj.taskFailedEventDetails) + }, + ...obj.taskScheduledEventDetails && { + taskScheduledEventDetails: (0, exports.TaskScheduledEventDetailsFilterSensitiveLog)(obj.taskScheduledEventDetails) + }, + ...obj.taskStartFailedEventDetails && { + taskStartFailedEventDetails: (0, exports.TaskStartFailedEventDetailsFilterSensitiveLog)(obj.taskStartFailedEventDetails) + }, + ...obj.taskSubmitFailedEventDetails && { + taskSubmitFailedEventDetails: (0, exports.TaskSubmitFailedEventDetailsFilterSensitiveLog)(obj.taskSubmitFailedEventDetails) + }, + ...obj.taskSubmittedEventDetails && { + taskSubmittedEventDetails: (0, exports.TaskSubmittedEventDetailsFilterSensitiveLog)(obj.taskSubmittedEventDetails) + }, + ...obj.taskSucceededEventDetails && { + taskSucceededEventDetails: (0, exports.TaskSucceededEventDetailsFilterSensitiveLog)(obj.taskSucceededEventDetails) + }, + ...obj.taskTimedOutEventDetails && { + taskTimedOutEventDetails: (0, exports.TaskTimedOutEventDetailsFilterSensitiveLog)(obj.taskTimedOutEventDetails) + }, + ...obj.executionFailedEventDetails && { + executionFailedEventDetails: (0, exports.ExecutionFailedEventDetailsFilterSensitiveLog)(obj.executionFailedEventDetails) + }, + ...obj.executionStartedEventDetails && { + executionStartedEventDetails: (0, exports.ExecutionStartedEventDetailsFilterSensitiveLog)(obj.executionStartedEventDetails) + }, + ...obj.executionSucceededEventDetails && { + executionSucceededEventDetails: (0, exports.ExecutionSucceededEventDetailsFilterSensitiveLog)(obj.executionSucceededEventDetails) + }, + ...obj.executionAbortedEventDetails && { + executionAbortedEventDetails: (0, exports.ExecutionAbortedEventDetailsFilterSensitiveLog)(obj.executionAbortedEventDetails) + }, + ...obj.executionTimedOutEventDetails && { + executionTimedOutEventDetails: (0, exports.ExecutionTimedOutEventDetailsFilterSensitiveLog)(obj.executionTimedOutEventDetails) + }, + ...obj.lambdaFunctionFailedEventDetails && { + lambdaFunctionFailedEventDetails: (0, exports.LambdaFunctionFailedEventDetailsFilterSensitiveLog)(obj.lambdaFunctionFailedEventDetails) + }, + ...obj.lambdaFunctionScheduleFailedEventDetails && { + lambdaFunctionScheduleFailedEventDetails: (0, exports.LambdaFunctionScheduleFailedEventDetailsFilterSensitiveLog)(obj.lambdaFunctionScheduleFailedEventDetails) + }, + ...obj.lambdaFunctionScheduledEventDetails && { + lambdaFunctionScheduledEventDetails: (0, exports.LambdaFunctionScheduledEventDetailsFilterSensitiveLog)(obj.lambdaFunctionScheduledEventDetails) + }, + ...obj.lambdaFunctionStartFailedEventDetails && { + lambdaFunctionStartFailedEventDetails: (0, exports.LambdaFunctionStartFailedEventDetailsFilterSensitiveLog)(obj.lambdaFunctionStartFailedEventDetails) + }, + ...obj.lambdaFunctionSucceededEventDetails && { + lambdaFunctionSucceededEventDetails: (0, exports.LambdaFunctionSucceededEventDetailsFilterSensitiveLog)(obj.lambdaFunctionSucceededEventDetails) + }, + ...obj.lambdaFunctionTimedOutEventDetails && { + lambdaFunctionTimedOutEventDetails: (0, exports.LambdaFunctionTimedOutEventDetailsFilterSensitiveLog)(obj.lambdaFunctionTimedOutEventDetails) + }, + ...obj.stateEnteredEventDetails && { + stateEnteredEventDetails: (0, exports.StateEnteredEventDetailsFilterSensitiveLog)(obj.stateEnteredEventDetails) + }, + ...obj.stateExitedEventDetails && { + stateExitedEventDetails: (0, exports.StateExitedEventDetailsFilterSensitiveLog)(obj.stateExitedEventDetails) + }, + ...obj.mapRunFailedEventDetails && { + mapRunFailedEventDetails: (0, exports.MapRunFailedEventDetailsFilterSensitiveLog)(obj.mapRunFailedEventDetails) + } + }); + exports.HistoryEventFilterSensitiveLog = HistoryEventFilterSensitiveLog; + var GetExecutionHistoryOutputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.events && { events: obj.events.map((item) => (0, exports.HistoryEventFilterSensitiveLog)(item)) } + }); + exports.GetExecutionHistoryOutputFilterSensitiveLog = GetExecutionHistoryOutputFilterSensitiveLog; + var PublishStateMachineVersionInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.description && { description: smithy_client_1.SENSITIVE_STRING } + }); + exports.PublishStateMachineVersionInputFilterSensitiveLog = PublishStateMachineVersionInputFilterSensitiveLog; + var SendTaskFailureInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.SendTaskFailureInputFilterSensitiveLog = SendTaskFailureInputFilterSensitiveLog; + var SendTaskSuccessInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.output && { output: smithy_client_1.SENSITIVE_STRING } + }); + exports.SendTaskSuccessInputFilterSensitiveLog = SendTaskSuccessInputFilterSensitiveLog; + var StartExecutionInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.input && { input: smithy_client_1.SENSITIVE_STRING } + }); + exports.StartExecutionInputFilterSensitiveLog = StartExecutionInputFilterSensitiveLog; + var StartSyncExecutionInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.input && { input: smithy_client_1.SENSITIVE_STRING } + }); + exports.StartSyncExecutionInputFilterSensitiveLog = StartSyncExecutionInputFilterSensitiveLog; + var StartSyncExecutionOutputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING }, + ...obj.input && { input: smithy_client_1.SENSITIVE_STRING }, + ...obj.output && { output: smithy_client_1.SENSITIVE_STRING } + }); + exports.StartSyncExecutionOutputFilterSensitiveLog = StartSyncExecutionOutputFilterSensitiveLog; + var StopExecutionInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.error && { error: smithy_client_1.SENSITIVE_STRING }, + ...obj.cause && { cause: smithy_client_1.SENSITIVE_STRING } + }); + exports.StopExecutionInputFilterSensitiveLog = StopExecutionInputFilterSensitiveLog; + var UpdateStateMachineInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.definition && { definition: smithy_client_1.SENSITIVE_STRING }, + ...obj.versionDescription && { versionDescription: smithy_client_1.SENSITIVE_STRING } + }); + exports.UpdateStateMachineInputFilterSensitiveLog = UpdateStateMachineInputFilterSensitiveLog; + var UpdateStateMachineAliasInputFilterSensitiveLog = (obj) => ({ + ...obj, + ...obj.description && { description: smithy_client_1.SENSITIVE_STRING } + }); + exports.UpdateStateMachineAliasInputFilterSensitiveLog = UpdateStateMachineAliasInputFilterSensitiveLog; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/protocols/Aws_json1_0.js +var require_Aws_json1_0 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/protocols/Aws_json1_0.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.de_ListActivitiesCommand = exports.de_GetExecutionHistoryCommand = exports.de_GetActivityTaskCommand = exports.de_DescribeStateMachineForExecutionCommand = exports.de_DescribeStateMachineAliasCommand = exports.de_DescribeStateMachineCommand = exports.de_DescribeMapRunCommand = exports.de_DescribeExecutionCommand = exports.de_DescribeActivityCommand = exports.de_DeleteStateMachineVersionCommand = exports.de_DeleteStateMachineAliasCommand = exports.de_DeleteStateMachineCommand = exports.de_DeleteActivityCommand = exports.de_CreateStateMachineAliasCommand = exports.de_CreateStateMachineCommand = exports.de_CreateActivityCommand = exports.se_UpdateStateMachineAliasCommand = exports.se_UpdateStateMachineCommand = exports.se_UpdateMapRunCommand = exports.se_UntagResourceCommand = exports.se_TagResourceCommand = exports.se_StopExecutionCommand = exports.se_StartSyncExecutionCommand = exports.se_StartExecutionCommand = exports.se_SendTaskSuccessCommand = exports.se_SendTaskHeartbeatCommand = exports.se_SendTaskFailureCommand = exports.se_PublishStateMachineVersionCommand = exports.se_ListTagsForResourceCommand = exports.se_ListStateMachineVersionsCommand = exports.se_ListStateMachinesCommand = exports.se_ListStateMachineAliasesCommand = exports.se_ListMapRunsCommand = exports.se_ListExecutionsCommand = exports.se_ListActivitiesCommand = exports.se_GetExecutionHistoryCommand = exports.se_GetActivityTaskCommand = exports.se_DescribeStateMachineForExecutionCommand = exports.se_DescribeStateMachineAliasCommand = exports.se_DescribeStateMachineCommand = exports.se_DescribeMapRunCommand = exports.se_DescribeExecutionCommand = exports.se_DescribeActivityCommand = exports.se_DeleteStateMachineVersionCommand = exports.se_DeleteStateMachineAliasCommand = exports.se_DeleteStateMachineCommand = exports.se_DeleteActivityCommand = exports.se_CreateStateMachineAliasCommand = exports.se_CreateStateMachineCommand = exports.se_CreateActivityCommand = void 0; + exports.de_UpdateStateMachineAliasCommand = exports.de_UpdateStateMachineCommand = exports.de_UpdateMapRunCommand = exports.de_UntagResourceCommand = exports.de_TagResourceCommand = exports.de_StopExecutionCommand = exports.de_StartSyncExecutionCommand = exports.de_StartExecutionCommand = exports.de_SendTaskSuccessCommand = exports.de_SendTaskHeartbeatCommand = exports.de_SendTaskFailureCommand = exports.de_PublishStateMachineVersionCommand = exports.de_ListTagsForResourceCommand = exports.de_ListStateMachineVersionsCommand = exports.de_ListStateMachinesCommand = exports.de_ListStateMachineAliasesCommand = exports.de_ListMapRunsCommand = exports.de_ListExecutionsCommand = void 0; + var protocol_http_1 = require_dist_cjs2(); + var smithy_client_1 = require_dist_cjs35(); + var models_0_1 = require_models_03(); + var SFNServiceException_1 = require_SFNServiceException(); + var se_CreateActivityCommand = async (input, context) => { + const headers = sharedHeaders("CreateActivity"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_CreateActivityCommand = se_CreateActivityCommand; + var se_CreateStateMachineCommand = async (input, context) => { + const headers = sharedHeaders("CreateStateMachine"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_CreateStateMachineCommand = se_CreateStateMachineCommand; + var se_CreateStateMachineAliasCommand = async (input, context) => { + const headers = sharedHeaders("CreateStateMachineAlias"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_CreateStateMachineAliasCommand = se_CreateStateMachineAliasCommand; + var se_DeleteActivityCommand = async (input, context) => { + const headers = sharedHeaders("DeleteActivity"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DeleteActivityCommand = se_DeleteActivityCommand; + var se_DeleteStateMachineCommand = async (input, context) => { + const headers = sharedHeaders("DeleteStateMachine"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DeleteStateMachineCommand = se_DeleteStateMachineCommand; + var se_DeleteStateMachineAliasCommand = async (input, context) => { + const headers = sharedHeaders("DeleteStateMachineAlias"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DeleteStateMachineAliasCommand = se_DeleteStateMachineAliasCommand; + var se_DeleteStateMachineVersionCommand = async (input, context) => { + const headers = sharedHeaders("DeleteStateMachineVersion"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DeleteStateMachineVersionCommand = se_DeleteStateMachineVersionCommand; + var se_DescribeActivityCommand = async (input, context) => { + const headers = sharedHeaders("DescribeActivity"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DescribeActivityCommand = se_DescribeActivityCommand; + var se_DescribeExecutionCommand = async (input, context) => { + const headers = sharedHeaders("DescribeExecution"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DescribeExecutionCommand = se_DescribeExecutionCommand; + var se_DescribeMapRunCommand = async (input, context) => { + const headers = sharedHeaders("DescribeMapRun"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DescribeMapRunCommand = se_DescribeMapRunCommand; + var se_DescribeStateMachineCommand = async (input, context) => { + const headers = sharedHeaders("DescribeStateMachine"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DescribeStateMachineCommand = se_DescribeStateMachineCommand; + var se_DescribeStateMachineAliasCommand = async (input, context) => { + const headers = sharedHeaders("DescribeStateMachineAlias"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DescribeStateMachineAliasCommand = se_DescribeStateMachineAliasCommand; + var se_DescribeStateMachineForExecutionCommand = async (input, context) => { + const headers = sharedHeaders("DescribeStateMachineForExecution"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_DescribeStateMachineForExecutionCommand = se_DescribeStateMachineForExecutionCommand; + var se_GetActivityTaskCommand = async (input, context) => { + const headers = sharedHeaders("GetActivityTask"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_GetActivityTaskCommand = se_GetActivityTaskCommand; + var se_GetExecutionHistoryCommand = async (input, context) => { + const headers = sharedHeaders("GetExecutionHistory"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_GetExecutionHistoryCommand = se_GetExecutionHistoryCommand; + var se_ListActivitiesCommand = async (input, context) => { + const headers = sharedHeaders("ListActivities"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_ListActivitiesCommand = se_ListActivitiesCommand; + var se_ListExecutionsCommand = async (input, context) => { + const headers = sharedHeaders("ListExecutions"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_ListExecutionsCommand = se_ListExecutionsCommand; + var se_ListMapRunsCommand = async (input, context) => { + const headers = sharedHeaders("ListMapRuns"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_ListMapRunsCommand = se_ListMapRunsCommand; + var se_ListStateMachineAliasesCommand = async (input, context) => { + const headers = sharedHeaders("ListStateMachineAliases"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_ListStateMachineAliasesCommand = se_ListStateMachineAliasesCommand; + var se_ListStateMachinesCommand = async (input, context) => { + const headers = sharedHeaders("ListStateMachines"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_ListStateMachinesCommand = se_ListStateMachinesCommand; + var se_ListStateMachineVersionsCommand = async (input, context) => { + const headers = sharedHeaders("ListStateMachineVersions"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_ListStateMachineVersionsCommand = se_ListStateMachineVersionsCommand; + var se_ListTagsForResourceCommand = async (input, context) => { + const headers = sharedHeaders("ListTagsForResource"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_ListTagsForResourceCommand = se_ListTagsForResourceCommand; + var se_PublishStateMachineVersionCommand = async (input, context) => { + const headers = sharedHeaders("PublishStateMachineVersion"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_PublishStateMachineVersionCommand = se_PublishStateMachineVersionCommand; + var se_SendTaskFailureCommand = async (input, context) => { + const headers = sharedHeaders("SendTaskFailure"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_SendTaskFailureCommand = se_SendTaskFailureCommand; + var se_SendTaskHeartbeatCommand = async (input, context) => { + const headers = sharedHeaders("SendTaskHeartbeat"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_SendTaskHeartbeatCommand = se_SendTaskHeartbeatCommand; + var se_SendTaskSuccessCommand = async (input, context) => { + const headers = sharedHeaders("SendTaskSuccess"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_SendTaskSuccessCommand = se_SendTaskSuccessCommand; + var se_StartExecutionCommand = async (input, context) => { + const headers = sharedHeaders("StartExecution"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_StartExecutionCommand = se_StartExecutionCommand; + var se_StartSyncExecutionCommand = async (input, context) => { + const headers = sharedHeaders("StartSyncExecution"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + let { hostname: resolvedHostname } = await context.endpoint(); + if (context.disableHostPrefix !== true) { + resolvedHostname = "sync-" + resolvedHostname; + if (!(0, protocol_http_1.isValidHostname)(resolvedHostname)) { + throw new Error("ValidationError: prefixed hostname must be hostname compatible."); + } + } + return buildHttpRpcRequest(context, headers, "/", resolvedHostname, body); + }; + exports.se_StartSyncExecutionCommand = se_StartSyncExecutionCommand; + var se_StopExecutionCommand = async (input, context) => { + const headers = sharedHeaders("StopExecution"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_StopExecutionCommand = se_StopExecutionCommand; + var se_TagResourceCommand = async (input, context) => { + const headers = sharedHeaders("TagResource"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_TagResourceCommand = se_TagResourceCommand; + var se_UntagResourceCommand = async (input, context) => { + const headers = sharedHeaders("UntagResource"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_UntagResourceCommand = se_UntagResourceCommand; + var se_UpdateMapRunCommand = async (input, context) => { + const headers = sharedHeaders("UpdateMapRun"); + let body; + body = JSON.stringify(se_UpdateMapRunInput(input, context)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_UpdateMapRunCommand = se_UpdateMapRunCommand; + var se_UpdateStateMachineCommand = async (input, context) => { + const headers = sharedHeaders("UpdateStateMachine"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_UpdateStateMachineCommand = se_UpdateStateMachineCommand; + var se_UpdateStateMachineAliasCommand = async (input, context) => { + const headers = sharedHeaders("UpdateStateMachineAlias"); + let body; + body = JSON.stringify((0, smithy_client_1._json)(input)); + return buildHttpRpcRequest(context, headers, "/", void 0, body); + }; + exports.se_UpdateStateMachineAliasCommand = se_UpdateStateMachineAliasCommand; + var de_CreateActivityCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_CreateActivityCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_CreateActivityOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_CreateActivityCommand = de_CreateActivityCommand; + var de_CreateActivityCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ActivityLimitExceeded": + case "com.amazonaws.sfn#ActivityLimitExceeded": + throw await de_ActivityLimitExceededRes(parsedOutput, context); + case "InvalidName": + case "com.amazonaws.sfn#InvalidName": + throw await de_InvalidNameRes(parsedOutput, context); + case "TooManyTags": + case "com.amazonaws.sfn#TooManyTags": + throw await de_TooManyTagsRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_CreateStateMachineCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_CreateStateMachineCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_CreateStateMachineOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_CreateStateMachineCommand = de_CreateStateMachineCommand; + var de_CreateStateMachineCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ConflictException": + case "com.amazonaws.sfn#ConflictException": + throw await de_ConflictExceptionRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidDefinition": + case "com.amazonaws.sfn#InvalidDefinition": + throw await de_InvalidDefinitionRes(parsedOutput, context); + case "InvalidLoggingConfiguration": + case "com.amazonaws.sfn#InvalidLoggingConfiguration": + throw await de_InvalidLoggingConfigurationRes(parsedOutput, context); + case "InvalidName": + case "com.amazonaws.sfn#InvalidName": + throw await de_InvalidNameRes(parsedOutput, context); + case "InvalidTracingConfiguration": + case "com.amazonaws.sfn#InvalidTracingConfiguration": + throw await de_InvalidTracingConfigurationRes(parsedOutput, context); + case "StateMachineAlreadyExists": + case "com.amazonaws.sfn#StateMachineAlreadyExists": + throw await de_StateMachineAlreadyExistsRes(parsedOutput, context); + case "StateMachineDeleting": + case "com.amazonaws.sfn#StateMachineDeleting": + throw await de_StateMachineDeletingRes(parsedOutput, context); + case "StateMachineLimitExceeded": + case "com.amazonaws.sfn#StateMachineLimitExceeded": + throw await de_StateMachineLimitExceededRes(parsedOutput, context); + case "StateMachineTypeNotSupported": + case "com.amazonaws.sfn#StateMachineTypeNotSupported": + throw await de_StateMachineTypeNotSupportedRes(parsedOutput, context); + case "TooManyTags": + case "com.amazonaws.sfn#TooManyTags": + throw await de_TooManyTagsRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_CreateStateMachineAliasCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_CreateStateMachineAliasCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_CreateStateMachineAliasOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_CreateStateMachineAliasCommand = de_CreateStateMachineAliasCommand; + var de_CreateStateMachineAliasCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ConflictException": + case "com.amazonaws.sfn#ConflictException": + throw await de_ConflictExceptionRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidName": + case "com.amazonaws.sfn#InvalidName": + throw await de_InvalidNameRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + case "ServiceQuotaExceededException": + case "com.amazonaws.sfn#ServiceQuotaExceededException": + throw await de_ServiceQuotaExceededExceptionRes(parsedOutput, context); + case "StateMachineDeleting": + case "com.amazonaws.sfn#StateMachineDeleting": + throw await de_StateMachineDeletingRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DeleteActivityCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DeleteActivityCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DeleteActivityCommand = de_DeleteActivityCommand; + var de_DeleteActivityCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DeleteStateMachineCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DeleteStateMachineCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DeleteStateMachineCommand = de_DeleteStateMachineCommand; + var de_DeleteStateMachineCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DeleteStateMachineAliasCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DeleteStateMachineAliasCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DeleteStateMachineAliasCommand = de_DeleteStateMachineAliasCommand; + var de_DeleteStateMachineAliasCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ConflictException": + case "com.amazonaws.sfn#ConflictException": + throw await de_ConflictExceptionRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DeleteStateMachineVersionCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DeleteStateMachineVersionCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DeleteStateMachineVersionCommand = de_DeleteStateMachineVersionCommand; + var de_DeleteStateMachineVersionCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ConflictException": + case "com.amazonaws.sfn#ConflictException": + throw await de_ConflictExceptionRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DescribeActivityCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DescribeActivityCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_DescribeActivityOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DescribeActivityCommand = de_DescribeActivityCommand; + var de_DescribeActivityCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ActivityDoesNotExist": + case "com.amazonaws.sfn#ActivityDoesNotExist": + throw await de_ActivityDoesNotExistRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DescribeExecutionCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DescribeExecutionCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_DescribeExecutionOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DescribeExecutionCommand = de_DescribeExecutionCommand; + var de_DescribeExecutionCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ExecutionDoesNotExist": + case "com.amazonaws.sfn#ExecutionDoesNotExist": + throw await de_ExecutionDoesNotExistRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DescribeMapRunCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DescribeMapRunCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_DescribeMapRunOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DescribeMapRunCommand = de_DescribeMapRunCommand; + var de_DescribeMapRunCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DescribeStateMachineCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DescribeStateMachineCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_DescribeStateMachineOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DescribeStateMachineCommand = de_DescribeStateMachineCommand; + var de_DescribeStateMachineCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "StateMachineDoesNotExist": + case "com.amazonaws.sfn#StateMachineDoesNotExist": + throw await de_StateMachineDoesNotExistRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DescribeStateMachineAliasCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DescribeStateMachineAliasCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_DescribeStateMachineAliasOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DescribeStateMachineAliasCommand = de_DescribeStateMachineAliasCommand; + var de_DescribeStateMachineAliasCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_DescribeStateMachineForExecutionCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_DescribeStateMachineForExecutionCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_DescribeStateMachineForExecutionOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_DescribeStateMachineForExecutionCommand = de_DescribeStateMachineForExecutionCommand; + var de_DescribeStateMachineForExecutionCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ExecutionDoesNotExist": + case "com.amazonaws.sfn#ExecutionDoesNotExist": + throw await de_ExecutionDoesNotExistRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_GetActivityTaskCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_GetActivityTaskCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_GetActivityTaskCommand = de_GetActivityTaskCommand; + var de_GetActivityTaskCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ActivityDoesNotExist": + case "com.amazonaws.sfn#ActivityDoesNotExist": + throw await de_ActivityDoesNotExistRes(parsedOutput, context); + case "ActivityWorkerLimitExceeded": + case "com.amazonaws.sfn#ActivityWorkerLimitExceeded": + throw await de_ActivityWorkerLimitExceededRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_GetExecutionHistoryCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_GetExecutionHistoryCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_GetExecutionHistoryOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_GetExecutionHistoryCommand = de_GetExecutionHistoryCommand; + var de_GetExecutionHistoryCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ExecutionDoesNotExist": + case "com.amazonaws.sfn#ExecutionDoesNotExist": + throw await de_ExecutionDoesNotExistRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ListActivitiesCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_ListActivitiesCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_ListActivitiesOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_ListActivitiesCommand = de_ListActivitiesCommand; + var de_ListActivitiesCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ListExecutionsCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_ListExecutionsCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_ListExecutionsOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_ListExecutionsCommand = de_ListExecutionsCommand; + var de_ListExecutionsCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + case "StateMachineDoesNotExist": + case "com.amazonaws.sfn#StateMachineDoesNotExist": + throw await de_StateMachineDoesNotExistRes(parsedOutput, context); + case "StateMachineTypeNotSupported": + case "com.amazonaws.sfn#StateMachineTypeNotSupported": + throw await de_StateMachineTypeNotSupportedRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ListMapRunsCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_ListMapRunsCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_ListMapRunsOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_ListMapRunsCommand = de_ListMapRunsCommand; + var de_ListMapRunsCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ExecutionDoesNotExist": + case "com.amazonaws.sfn#ExecutionDoesNotExist": + throw await de_ExecutionDoesNotExistRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ListStateMachineAliasesCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_ListStateMachineAliasesCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_ListStateMachineAliasesOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_ListStateMachineAliasesCommand = de_ListStateMachineAliasesCommand; + var de_ListStateMachineAliasesCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + case "StateMachineDeleting": + case "com.amazonaws.sfn#StateMachineDeleting": + throw await de_StateMachineDeletingRes(parsedOutput, context); + case "StateMachineDoesNotExist": + case "com.amazonaws.sfn#StateMachineDoesNotExist": + throw await de_StateMachineDoesNotExistRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ListStateMachinesCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_ListStateMachinesCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_ListStateMachinesOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_ListStateMachinesCommand = de_ListStateMachinesCommand; + var de_ListStateMachinesCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ListStateMachineVersionsCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_ListStateMachineVersionsCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_ListStateMachineVersionsOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_ListStateMachineVersionsCommand = de_ListStateMachineVersionsCommand; + var de_ListStateMachineVersionsCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ListTagsForResourceCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_ListTagsForResourceCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_ListTagsForResourceCommand = de_ListTagsForResourceCommand; + var de_ListTagsForResourceCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_PublishStateMachineVersionCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_PublishStateMachineVersionCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_PublishStateMachineVersionOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_PublishStateMachineVersionCommand = de_PublishStateMachineVersionCommand; + var de_PublishStateMachineVersionCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ConflictException": + case "com.amazonaws.sfn#ConflictException": + throw await de_ConflictExceptionRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ServiceQuotaExceededException": + case "com.amazonaws.sfn#ServiceQuotaExceededException": + throw await de_ServiceQuotaExceededExceptionRes(parsedOutput, context); + case "StateMachineDeleting": + case "com.amazonaws.sfn#StateMachineDeleting": + throw await de_StateMachineDeletingRes(parsedOutput, context); + case "StateMachineDoesNotExist": + case "com.amazonaws.sfn#StateMachineDoesNotExist": + throw await de_StateMachineDoesNotExistRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_SendTaskFailureCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_SendTaskFailureCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_SendTaskFailureCommand = de_SendTaskFailureCommand; + var de_SendTaskFailureCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + case "TaskDoesNotExist": + case "com.amazonaws.sfn#TaskDoesNotExist": + throw await de_TaskDoesNotExistRes(parsedOutput, context); + case "TaskTimedOut": + case "com.amazonaws.sfn#TaskTimedOut": + throw await de_TaskTimedOutRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_SendTaskHeartbeatCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_SendTaskHeartbeatCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_SendTaskHeartbeatCommand = de_SendTaskHeartbeatCommand; + var de_SendTaskHeartbeatCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + case "TaskDoesNotExist": + case "com.amazonaws.sfn#TaskDoesNotExist": + throw await de_TaskDoesNotExistRes(parsedOutput, context); + case "TaskTimedOut": + case "com.amazonaws.sfn#TaskTimedOut": + throw await de_TaskTimedOutRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_SendTaskSuccessCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_SendTaskSuccessCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_SendTaskSuccessCommand = de_SendTaskSuccessCommand; + var de_SendTaskSuccessCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidOutput": + case "com.amazonaws.sfn#InvalidOutput": + throw await de_InvalidOutputRes(parsedOutput, context); + case "InvalidToken": + case "com.amazonaws.sfn#InvalidToken": + throw await de_InvalidTokenRes(parsedOutput, context); + case "TaskDoesNotExist": + case "com.amazonaws.sfn#TaskDoesNotExist": + throw await de_TaskDoesNotExistRes(parsedOutput, context); + case "TaskTimedOut": + case "com.amazonaws.sfn#TaskTimedOut": + throw await de_TaskTimedOutRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_StartExecutionCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_StartExecutionCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_StartExecutionOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_StartExecutionCommand = de_StartExecutionCommand; + var de_StartExecutionCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ExecutionAlreadyExists": + case "com.amazonaws.sfn#ExecutionAlreadyExists": + throw await de_ExecutionAlreadyExistsRes(parsedOutput, context); + case "ExecutionLimitExceeded": + case "com.amazonaws.sfn#ExecutionLimitExceeded": + throw await de_ExecutionLimitExceededRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidExecutionInput": + case "com.amazonaws.sfn#InvalidExecutionInput": + throw await de_InvalidExecutionInputRes(parsedOutput, context); + case "InvalidName": + case "com.amazonaws.sfn#InvalidName": + throw await de_InvalidNameRes(parsedOutput, context); + case "StateMachineDeleting": + case "com.amazonaws.sfn#StateMachineDeleting": + throw await de_StateMachineDeletingRes(parsedOutput, context); + case "StateMachineDoesNotExist": + case "com.amazonaws.sfn#StateMachineDoesNotExist": + throw await de_StateMachineDoesNotExistRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_StartSyncExecutionCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_StartSyncExecutionCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_StartSyncExecutionOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_StartSyncExecutionCommand = de_StartSyncExecutionCommand; + var de_StartSyncExecutionCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidExecutionInput": + case "com.amazonaws.sfn#InvalidExecutionInput": + throw await de_InvalidExecutionInputRes(parsedOutput, context); + case "InvalidName": + case "com.amazonaws.sfn#InvalidName": + throw await de_InvalidNameRes(parsedOutput, context); + case "StateMachineDeleting": + case "com.amazonaws.sfn#StateMachineDeleting": + throw await de_StateMachineDeletingRes(parsedOutput, context); + case "StateMachineDoesNotExist": + case "com.amazonaws.sfn#StateMachineDoesNotExist": + throw await de_StateMachineDoesNotExistRes(parsedOutput, context); + case "StateMachineTypeNotSupported": + case "com.amazonaws.sfn#StateMachineTypeNotSupported": + throw await de_StateMachineTypeNotSupportedRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_StopExecutionCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_StopExecutionCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_StopExecutionOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_StopExecutionCommand = de_StopExecutionCommand; + var de_StopExecutionCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ExecutionDoesNotExist": + case "com.amazonaws.sfn#ExecutionDoesNotExist": + throw await de_ExecutionDoesNotExistRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_TagResourceCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_TagResourceCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_TagResourceCommand = de_TagResourceCommand; + var de_TagResourceCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + case "TooManyTags": + case "com.amazonaws.sfn#TooManyTags": + throw await de_TooManyTagsRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_UntagResourceCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_UntagResourceCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_UntagResourceCommand = de_UntagResourceCommand; + var de_UntagResourceCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_UpdateMapRunCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_UpdateMapRunCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = (0, smithy_client_1._json)(data); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_UpdateMapRunCommand = de_UpdateMapRunCommand; + var de_UpdateMapRunCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_UpdateStateMachineCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_UpdateStateMachineCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_UpdateStateMachineOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_UpdateStateMachineCommand = de_UpdateStateMachineCommand; + var de_UpdateStateMachineCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ConflictException": + case "com.amazonaws.sfn#ConflictException": + throw await de_ConflictExceptionRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "InvalidDefinition": + case "com.amazonaws.sfn#InvalidDefinition": + throw await de_InvalidDefinitionRes(parsedOutput, context); + case "InvalidLoggingConfiguration": + case "com.amazonaws.sfn#InvalidLoggingConfiguration": + throw await de_InvalidLoggingConfigurationRes(parsedOutput, context); + case "InvalidTracingConfiguration": + case "com.amazonaws.sfn#InvalidTracingConfiguration": + throw await de_InvalidTracingConfigurationRes(parsedOutput, context); + case "MissingRequiredParameter": + case "com.amazonaws.sfn#MissingRequiredParameter": + throw await de_MissingRequiredParameterRes(parsedOutput, context); + case "ServiceQuotaExceededException": + case "com.amazonaws.sfn#ServiceQuotaExceededException": + throw await de_ServiceQuotaExceededExceptionRes(parsedOutput, context); + case "StateMachineDeleting": + case "com.amazonaws.sfn#StateMachineDeleting": + throw await de_StateMachineDeletingRes(parsedOutput, context); + case "StateMachineDoesNotExist": + case "com.amazonaws.sfn#StateMachineDoesNotExist": + throw await de_StateMachineDoesNotExistRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_UpdateStateMachineAliasCommand = async (output, context) => { + if (output.statusCode >= 300) { + return de_UpdateStateMachineAliasCommandError(output, context); + } + const data = await parseBody(output.body, context); + let contents = {}; + contents = de_UpdateStateMachineAliasOutput(data, context); + const response = { + $metadata: deserializeMetadata(output), + ...contents + }; + return response; + }; + exports.de_UpdateStateMachineAliasCommand = de_UpdateStateMachineAliasCommand; + var de_UpdateStateMachineAliasCommandError = async (output, context) => { + const parsedOutput = { + ...output, + body: await parseErrorBody(output.body, context) + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ConflictException": + case "com.amazonaws.sfn#ConflictException": + throw await de_ConflictExceptionRes(parsedOutput, context); + case "InvalidArn": + case "com.amazonaws.sfn#InvalidArn": + throw await de_InvalidArnRes(parsedOutput, context); + case "ResourceNotFound": + case "com.amazonaws.sfn#ResourceNotFound": + throw await de_ResourceNotFoundRes(parsedOutput, context); + case "ValidationException": + case "com.amazonaws.sfn#ValidationException": + throw await de_ValidationExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode + }); + } + }; + var de_ActivityDoesNotExistRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ActivityDoesNotExist({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_ActivityLimitExceededRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ActivityLimitExceeded({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_ActivityWorkerLimitExceededRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ActivityWorkerLimitExceeded({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_ConflictExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ConflictException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_ExecutionAlreadyExistsRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ExecutionAlreadyExists({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_ExecutionDoesNotExistRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ExecutionDoesNotExist({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_ExecutionLimitExceededRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ExecutionLimitExceeded({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidArnRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.InvalidArn({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidDefinitionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.InvalidDefinition({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidExecutionInputRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.InvalidExecutionInput({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidLoggingConfigurationRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.InvalidLoggingConfiguration({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidNameRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.InvalidName({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidOutputRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.InvalidOutput({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidTokenRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.InvalidToken({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_InvalidTracingConfigurationRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.InvalidTracingConfiguration({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_MissingRequiredParameterRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.MissingRequiredParameter({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_ResourceNotFoundRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ResourceNotFound({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_ServiceQuotaExceededExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ServiceQuotaExceededException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_StateMachineAlreadyExistsRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.StateMachineAlreadyExists({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_StateMachineDeletingRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.StateMachineDeleting({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_StateMachineDoesNotExistRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.StateMachineDoesNotExist({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_StateMachineLimitExceededRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.StateMachineLimitExceeded({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_StateMachineTypeNotSupportedRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.StateMachineTypeNotSupported({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_TaskDoesNotExistRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.TaskDoesNotExist({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_TaskTimedOutRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.TaskTimedOut({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_TooManyTagsRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.TooManyTags({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var de_ValidationExceptionRes = async (parsedOutput, context) => { + const body = parsedOutput.body; + const deserialized = (0, smithy_client_1._json)(body); + const exception = new models_0_1.ValidationException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized + }); + return (0, smithy_client_1.decorateServiceException)(exception, body); + }; + var se_UpdateMapRunInput = (input, context) => { + return (0, smithy_client_1.take)(input, { + mapRunArn: [], + maxConcurrency: [], + toleratedFailureCount: [], + toleratedFailurePercentage: smithy_client_1.serializeFloat + }); + }; + var de_ActivityList = (output, context) => { + const retVal = (output || []).filter((e) => e != null).map((entry) => { + return de_ActivityListItem(entry, context); + }); + return retVal; + }; + var de_ActivityListItem = (output, context) => { + return (0, smithy_client_1.take)(output, { + activityArn: smithy_client_1.expectString, + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + name: smithy_client_1.expectString + }); + }; + var de_CreateActivityOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + activityArn: smithy_client_1.expectString, + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))) + }); + }; + var de_CreateStateMachineAliasOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + stateMachineAliasArn: smithy_client_1.expectString + }); + }; + var de_CreateStateMachineOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + stateMachineArn: smithy_client_1.expectString, + stateMachineVersionArn: smithy_client_1.expectString + }); + }; + var de_DescribeActivityOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + activityArn: smithy_client_1.expectString, + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + name: smithy_client_1.expectString + }); + }; + var de_DescribeExecutionOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + cause: smithy_client_1.expectString, + error: smithy_client_1.expectString, + executionArn: smithy_client_1.expectString, + input: smithy_client_1.expectString, + inputDetails: smithy_client_1._json, + mapRunArn: smithy_client_1.expectString, + name: smithy_client_1.expectString, + output: smithy_client_1.expectString, + outputDetails: smithy_client_1._json, + startDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + stateMachineAliasArn: smithy_client_1.expectString, + stateMachineArn: smithy_client_1.expectString, + stateMachineVersionArn: smithy_client_1.expectString, + status: smithy_client_1.expectString, + stopDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + traceHeader: smithy_client_1.expectString + }); + }; + var de_DescribeMapRunOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + executionArn: smithy_client_1.expectString, + executionCounts: smithy_client_1._json, + itemCounts: smithy_client_1._json, + mapRunArn: smithy_client_1.expectString, + maxConcurrency: smithy_client_1.expectInt32, + startDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + status: smithy_client_1.expectString, + stopDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + toleratedFailureCount: smithy_client_1.expectLong, + toleratedFailurePercentage: smithy_client_1.limitedParseFloat32 + }); + }; + var de_DescribeStateMachineAliasOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + description: smithy_client_1.expectString, + name: smithy_client_1.expectString, + routingConfiguration: smithy_client_1._json, + stateMachineAliasArn: smithy_client_1.expectString, + updateDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))) + }); + }; + var de_DescribeStateMachineForExecutionOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + definition: smithy_client_1.expectString, + label: smithy_client_1.expectString, + loggingConfiguration: smithy_client_1._json, + mapRunArn: smithy_client_1.expectString, + name: smithy_client_1.expectString, + revisionId: smithy_client_1.expectString, + roleArn: smithy_client_1.expectString, + stateMachineArn: smithy_client_1.expectString, + tracingConfiguration: smithy_client_1._json, + updateDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))) + }); + }; + var de_DescribeStateMachineOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + definition: smithy_client_1.expectString, + description: smithy_client_1.expectString, + label: smithy_client_1.expectString, + loggingConfiguration: smithy_client_1._json, + name: smithy_client_1.expectString, + revisionId: smithy_client_1.expectString, + roleArn: smithy_client_1.expectString, + stateMachineArn: smithy_client_1.expectString, + status: smithy_client_1.expectString, + tracingConfiguration: smithy_client_1._json, + type: smithy_client_1.expectString + }); + }; + var de_ExecutionList = (output, context) => { + const retVal = (output || []).filter((e) => e != null).map((entry) => { + return de_ExecutionListItem(entry, context); + }); + return retVal; + }; + var de_ExecutionListItem = (output, context) => { + return (0, smithy_client_1.take)(output, { + executionArn: smithy_client_1.expectString, + itemCount: smithy_client_1.expectInt32, + mapRunArn: smithy_client_1.expectString, + name: smithy_client_1.expectString, + startDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + stateMachineAliasArn: smithy_client_1.expectString, + stateMachineArn: smithy_client_1.expectString, + stateMachineVersionArn: smithy_client_1.expectString, + status: smithy_client_1.expectString, + stopDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))) + }); + }; + var de_GetExecutionHistoryOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + events: (_) => de_HistoryEventList(_, context), + nextToken: smithy_client_1.expectString + }); + }; + var de_HistoryEvent = (output, context) => { + return (0, smithy_client_1.take)(output, { + activityFailedEventDetails: smithy_client_1._json, + activityScheduleFailedEventDetails: smithy_client_1._json, + activityScheduledEventDetails: smithy_client_1._json, + activityStartedEventDetails: smithy_client_1._json, + activitySucceededEventDetails: smithy_client_1._json, + activityTimedOutEventDetails: smithy_client_1._json, + executionAbortedEventDetails: smithy_client_1._json, + executionFailedEventDetails: smithy_client_1._json, + executionStartedEventDetails: smithy_client_1._json, + executionSucceededEventDetails: smithy_client_1._json, + executionTimedOutEventDetails: smithy_client_1._json, + id: smithy_client_1.expectLong, + lambdaFunctionFailedEventDetails: smithy_client_1._json, + lambdaFunctionScheduleFailedEventDetails: smithy_client_1._json, + lambdaFunctionScheduledEventDetails: smithy_client_1._json, + lambdaFunctionStartFailedEventDetails: smithy_client_1._json, + lambdaFunctionSucceededEventDetails: smithy_client_1._json, + lambdaFunctionTimedOutEventDetails: smithy_client_1._json, + mapIterationAbortedEventDetails: smithy_client_1._json, + mapIterationFailedEventDetails: smithy_client_1._json, + mapIterationStartedEventDetails: smithy_client_1._json, + mapIterationSucceededEventDetails: smithy_client_1._json, + mapRunFailedEventDetails: smithy_client_1._json, + mapRunStartedEventDetails: smithy_client_1._json, + mapStateStartedEventDetails: smithy_client_1._json, + previousEventId: smithy_client_1.expectLong, + stateEnteredEventDetails: smithy_client_1._json, + stateExitedEventDetails: smithy_client_1._json, + taskFailedEventDetails: smithy_client_1._json, + taskScheduledEventDetails: smithy_client_1._json, + taskStartFailedEventDetails: smithy_client_1._json, + taskStartedEventDetails: smithy_client_1._json, + taskSubmitFailedEventDetails: smithy_client_1._json, + taskSubmittedEventDetails: smithy_client_1._json, + taskSucceededEventDetails: smithy_client_1._json, + taskTimedOutEventDetails: smithy_client_1._json, + timestamp: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + type: smithy_client_1.expectString + }); + }; + var de_HistoryEventList = (output, context) => { + const retVal = (output || []).filter((e) => e != null).map((entry) => { + return de_HistoryEvent(entry, context); + }); + return retVal; + }; + var de_ListActivitiesOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + activities: (_) => de_ActivityList(_, context), + nextToken: smithy_client_1.expectString + }); + }; + var de_ListExecutionsOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + executions: (_) => de_ExecutionList(_, context), + nextToken: smithy_client_1.expectString + }); + }; + var de_ListMapRunsOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + mapRuns: (_) => de_MapRunList(_, context), + nextToken: smithy_client_1.expectString + }); + }; + var de_ListStateMachineAliasesOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + nextToken: smithy_client_1.expectString, + stateMachineAliases: (_) => de_StateMachineAliasList(_, context) + }); + }; + var de_ListStateMachinesOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + nextToken: smithy_client_1.expectString, + stateMachines: (_) => de_StateMachineList(_, context) + }); + }; + var de_ListStateMachineVersionsOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + nextToken: smithy_client_1.expectString, + stateMachineVersions: (_) => de_StateMachineVersionList(_, context) + }); + }; + var de_MapRunList = (output, context) => { + const retVal = (output || []).filter((e) => e != null).map((entry) => { + return de_MapRunListItem(entry, context); + }); + return retVal; + }; + var de_MapRunListItem = (output, context) => { + return (0, smithy_client_1.take)(output, { + executionArn: smithy_client_1.expectString, + mapRunArn: smithy_client_1.expectString, + startDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + stateMachineArn: smithy_client_1.expectString, + stopDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))) + }); + }; + var de_PublishStateMachineVersionOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + stateMachineVersionArn: smithy_client_1.expectString + }); + }; + var de_StartExecutionOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + executionArn: smithy_client_1.expectString, + startDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))) + }); + }; + var de_StartSyncExecutionOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + billingDetails: smithy_client_1._json, + cause: smithy_client_1.expectString, + error: smithy_client_1.expectString, + executionArn: smithy_client_1.expectString, + input: smithy_client_1.expectString, + inputDetails: smithy_client_1._json, + name: smithy_client_1.expectString, + output: smithy_client_1.expectString, + outputDetails: smithy_client_1._json, + startDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + stateMachineArn: smithy_client_1.expectString, + status: smithy_client_1.expectString, + stopDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + traceHeader: smithy_client_1.expectString + }); + }; + var de_StateMachineAliasList = (output, context) => { + const retVal = (output || []).filter((e) => e != null).map((entry) => { + return de_StateMachineAliasListItem(entry, context); + }); + return retVal; + }; + var de_StateMachineAliasListItem = (output, context) => { + return (0, smithy_client_1.take)(output, { + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + stateMachineAliasArn: smithy_client_1.expectString + }); + }; + var de_StateMachineList = (output, context) => { + const retVal = (output || []).filter((e) => e != null).map((entry) => { + return de_StateMachineListItem(entry, context); + }); + return retVal; + }; + var de_StateMachineListItem = (output, context) => { + return (0, smithy_client_1.take)(output, { + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + name: smithy_client_1.expectString, + stateMachineArn: smithy_client_1.expectString, + type: smithy_client_1.expectString + }); + }; + var de_StateMachineVersionList = (output, context) => { + const retVal = (output || []).filter((e) => e != null).map((entry) => { + return de_StateMachineVersionListItem(entry, context); + }); + return retVal; + }; + var de_StateMachineVersionListItem = (output, context) => { + return (0, smithy_client_1.take)(output, { + creationDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))), + stateMachineVersionArn: smithy_client_1.expectString + }); + }; + var de_StopExecutionOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + stopDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))) + }); + }; + var de_UpdateStateMachineAliasOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + updateDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))) + }); + }; + var de_UpdateStateMachineOutput = (output, context) => { + return (0, smithy_client_1.take)(output, { + revisionId: smithy_client_1.expectString, + stateMachineVersionArn: smithy_client_1.expectString, + updateDate: (_) => (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(_))) + }); + }; + var deserializeMetadata = (output) => ({ + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"] + }); + var collectBodyString = (streamBody, context) => (0, smithy_client_1.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)); + var throwDefaultError = (0, smithy_client_1.withBaseException)(SFNServiceException_1.SFNServiceException); + var buildHttpRpcRequest = async (context, headers, path, resolvedHostname, body) => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const contents = { + protocol, + hostname, + port, + method: "POST", + path: basePath.endsWith("/") ? basePath.slice(0, -1) + path : basePath + path, + headers + }; + if (resolvedHostname !== void 0) { + contents.hostname = resolvedHostname; + } + if (body !== void 0) { + contents.body = body; + } + return new protocol_http_1.HttpRequest(contents); + }; + function sharedHeaders(operation) { + return { + "content-type": "application/x-amz-json-1.0", + "x-amz-target": `AWSStepFunctions.${operation}` + }; + } + var parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + return JSON.parse(encoded); + } + return {}; + }); + var parseErrorBody = async (errorBody, context) => { + const value = await parseBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; + }; + var loadRestJsonErrorCode = (output, data) => { + const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()); + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + const headerKey = findKey(output.headers, "x-amzn-errortype"); + if (headerKey !== void 0) { + return sanitizeErrorCode(output.headers[headerKey]); + } + if (data.code !== void 0) { + return sanitizeErrorCode(data.code); + } + if (data["__type"] !== void 0) { + return sanitizeErrorCode(data["__type"]); + } + }; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/CreateActivityCommand.js +var require_CreateActivityCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/CreateActivityCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.CreateActivityCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var CreateActivityCommand = class _CreateActivityCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _CreateActivityCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "CreateActivityCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_CreateActivityCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_CreateActivityCommand)(output, context); + } + }; + exports.CreateActivityCommand = CreateActivityCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/CreateStateMachineAliasCommand.js +var require_CreateStateMachineAliasCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/CreateStateMachineAliasCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.CreateStateMachineAliasCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var CreateStateMachineAliasCommand = class _CreateStateMachineAliasCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _CreateStateMachineAliasCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "CreateStateMachineAliasCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.CreateStateMachineAliasInputFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_CreateStateMachineAliasCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_CreateStateMachineAliasCommand)(output, context); + } + }; + exports.CreateStateMachineAliasCommand = CreateStateMachineAliasCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/CreateStateMachineCommand.js +var require_CreateStateMachineCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/CreateStateMachineCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.CreateStateMachineCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var CreateStateMachineCommand = class _CreateStateMachineCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _CreateStateMachineCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "CreateStateMachineCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.CreateStateMachineInputFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_CreateStateMachineCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_CreateStateMachineCommand)(output, context); + } + }; + exports.CreateStateMachineCommand = CreateStateMachineCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DeleteActivityCommand.js +var require_DeleteActivityCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DeleteActivityCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DeleteActivityCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DeleteActivityCommand = class _DeleteActivityCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DeleteActivityCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DeleteActivityCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DeleteActivityCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DeleteActivityCommand)(output, context); + } + }; + exports.DeleteActivityCommand = DeleteActivityCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DeleteStateMachineAliasCommand.js +var require_DeleteStateMachineAliasCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DeleteStateMachineAliasCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DeleteStateMachineAliasCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DeleteStateMachineAliasCommand = class _DeleteStateMachineAliasCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DeleteStateMachineAliasCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DeleteStateMachineAliasCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DeleteStateMachineAliasCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DeleteStateMachineAliasCommand)(output, context); + } + }; + exports.DeleteStateMachineAliasCommand = DeleteStateMachineAliasCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DeleteStateMachineCommand.js +var require_DeleteStateMachineCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DeleteStateMachineCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DeleteStateMachineCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DeleteStateMachineCommand = class _DeleteStateMachineCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DeleteStateMachineCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DeleteStateMachineCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DeleteStateMachineCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DeleteStateMachineCommand)(output, context); + } + }; + exports.DeleteStateMachineCommand = DeleteStateMachineCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DeleteStateMachineVersionCommand.js +var require_DeleteStateMachineVersionCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DeleteStateMachineVersionCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DeleteStateMachineVersionCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DeleteStateMachineVersionCommand = class _DeleteStateMachineVersionCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DeleteStateMachineVersionCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DeleteStateMachineVersionCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DeleteStateMachineVersionCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DeleteStateMachineVersionCommand)(output, context); + } + }; + exports.DeleteStateMachineVersionCommand = DeleteStateMachineVersionCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeActivityCommand.js +var require_DescribeActivityCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeActivityCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DescribeActivityCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DescribeActivityCommand = class _DescribeActivityCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DescribeActivityCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DescribeActivityCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DescribeActivityCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DescribeActivityCommand)(output, context); + } + }; + exports.DescribeActivityCommand = DescribeActivityCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeExecutionCommand.js +var require_DescribeExecutionCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeExecutionCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DescribeExecutionCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DescribeExecutionCommand = class _DescribeExecutionCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DescribeExecutionCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DescribeExecutionCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: models_0_1.DescribeExecutionOutputFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DescribeExecutionCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DescribeExecutionCommand)(output, context); + } + }; + exports.DescribeExecutionCommand = DescribeExecutionCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeMapRunCommand.js +var require_DescribeMapRunCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeMapRunCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DescribeMapRunCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DescribeMapRunCommand = class _DescribeMapRunCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DescribeMapRunCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DescribeMapRunCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DescribeMapRunCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DescribeMapRunCommand)(output, context); + } + }; + exports.DescribeMapRunCommand = DescribeMapRunCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeStateMachineAliasCommand.js +var require_DescribeStateMachineAliasCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeStateMachineAliasCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DescribeStateMachineAliasCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DescribeStateMachineAliasCommand = class _DescribeStateMachineAliasCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DescribeStateMachineAliasCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DescribeStateMachineAliasCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: models_0_1.DescribeStateMachineAliasOutputFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DescribeStateMachineAliasCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DescribeStateMachineAliasCommand)(output, context); + } + }; + exports.DescribeStateMachineAliasCommand = DescribeStateMachineAliasCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeStateMachineCommand.js +var require_DescribeStateMachineCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeStateMachineCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DescribeStateMachineCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DescribeStateMachineCommand = class _DescribeStateMachineCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DescribeStateMachineCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DescribeStateMachineCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: models_0_1.DescribeStateMachineOutputFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DescribeStateMachineCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DescribeStateMachineCommand)(output, context); + } + }; + exports.DescribeStateMachineCommand = DescribeStateMachineCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeStateMachineForExecutionCommand.js +var require_DescribeStateMachineForExecutionCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/DescribeStateMachineForExecutionCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DescribeStateMachineForExecutionCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var DescribeStateMachineForExecutionCommand = class _DescribeStateMachineForExecutionCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _DescribeStateMachineForExecutionCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "DescribeStateMachineForExecutionCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: models_0_1.DescribeStateMachineForExecutionOutputFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_DescribeStateMachineForExecutionCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_DescribeStateMachineForExecutionCommand)(output, context); + } + }; + exports.DescribeStateMachineForExecutionCommand = DescribeStateMachineForExecutionCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/GetActivityTaskCommand.js +var require_GetActivityTaskCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/GetActivityTaskCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GetActivityTaskCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var GetActivityTaskCommand = class _GetActivityTaskCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _GetActivityTaskCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "GetActivityTaskCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: models_0_1.GetActivityTaskOutputFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_GetActivityTaskCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_GetActivityTaskCommand)(output, context); + } + }; + exports.GetActivityTaskCommand = GetActivityTaskCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/GetExecutionHistoryCommand.js +var require_GetExecutionHistoryCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/GetExecutionHistoryCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GetExecutionHistoryCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var GetExecutionHistoryCommand = class _GetExecutionHistoryCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _GetExecutionHistoryCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "GetExecutionHistoryCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: models_0_1.GetExecutionHistoryOutputFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_GetExecutionHistoryCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_GetExecutionHistoryCommand)(output, context); + } + }; + exports.GetExecutionHistoryCommand = GetExecutionHistoryCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListActivitiesCommand.js +var require_ListActivitiesCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListActivitiesCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ListActivitiesCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var ListActivitiesCommand = class _ListActivitiesCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _ListActivitiesCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "ListActivitiesCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_ListActivitiesCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_ListActivitiesCommand)(output, context); + } + }; + exports.ListActivitiesCommand = ListActivitiesCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListExecutionsCommand.js +var require_ListExecutionsCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListExecutionsCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ListExecutionsCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var ListExecutionsCommand = class _ListExecutionsCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _ListExecutionsCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "ListExecutionsCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_ListExecutionsCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_ListExecutionsCommand)(output, context); + } + }; + exports.ListExecutionsCommand = ListExecutionsCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListMapRunsCommand.js +var require_ListMapRunsCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListMapRunsCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ListMapRunsCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var ListMapRunsCommand = class _ListMapRunsCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _ListMapRunsCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "ListMapRunsCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_ListMapRunsCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_ListMapRunsCommand)(output, context); + } + }; + exports.ListMapRunsCommand = ListMapRunsCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListStateMachineAliasesCommand.js +var require_ListStateMachineAliasesCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListStateMachineAliasesCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ListStateMachineAliasesCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var ListStateMachineAliasesCommand = class _ListStateMachineAliasesCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _ListStateMachineAliasesCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "ListStateMachineAliasesCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_ListStateMachineAliasesCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_ListStateMachineAliasesCommand)(output, context); + } + }; + exports.ListStateMachineAliasesCommand = ListStateMachineAliasesCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListStateMachinesCommand.js +var require_ListStateMachinesCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListStateMachinesCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ListStateMachinesCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var ListStateMachinesCommand = class _ListStateMachinesCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _ListStateMachinesCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "ListStateMachinesCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_ListStateMachinesCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_ListStateMachinesCommand)(output, context); + } + }; + exports.ListStateMachinesCommand = ListStateMachinesCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListStateMachineVersionsCommand.js +var require_ListStateMachineVersionsCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListStateMachineVersionsCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ListStateMachineVersionsCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var ListStateMachineVersionsCommand = class _ListStateMachineVersionsCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _ListStateMachineVersionsCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "ListStateMachineVersionsCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_ListStateMachineVersionsCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_ListStateMachineVersionsCommand)(output, context); + } + }; + exports.ListStateMachineVersionsCommand = ListStateMachineVersionsCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListTagsForResourceCommand.js +var require_ListTagsForResourceCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/ListTagsForResourceCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ListTagsForResourceCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var ListTagsForResourceCommand = class _ListTagsForResourceCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _ListTagsForResourceCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "ListTagsForResourceCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_ListTagsForResourceCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_ListTagsForResourceCommand)(output, context); + } + }; + exports.ListTagsForResourceCommand = ListTagsForResourceCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/PublishStateMachineVersionCommand.js +var require_PublishStateMachineVersionCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/PublishStateMachineVersionCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.PublishStateMachineVersionCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var PublishStateMachineVersionCommand = class _PublishStateMachineVersionCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _PublishStateMachineVersionCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "PublishStateMachineVersionCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.PublishStateMachineVersionInputFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_PublishStateMachineVersionCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_PublishStateMachineVersionCommand)(output, context); + } + }; + exports.PublishStateMachineVersionCommand = PublishStateMachineVersionCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/SendTaskFailureCommand.js +var require_SendTaskFailureCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/SendTaskFailureCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SendTaskFailureCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var SendTaskFailureCommand = class _SendTaskFailureCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _SendTaskFailureCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "SendTaskFailureCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.SendTaskFailureInputFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_SendTaskFailureCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_SendTaskFailureCommand)(output, context); + } + }; + exports.SendTaskFailureCommand = SendTaskFailureCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/SendTaskHeartbeatCommand.js +var require_SendTaskHeartbeatCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/SendTaskHeartbeatCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SendTaskHeartbeatCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var SendTaskHeartbeatCommand = class _SendTaskHeartbeatCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _SendTaskHeartbeatCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "SendTaskHeartbeatCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_SendTaskHeartbeatCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_SendTaskHeartbeatCommand)(output, context); + } + }; + exports.SendTaskHeartbeatCommand = SendTaskHeartbeatCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/SendTaskSuccessCommand.js +var require_SendTaskSuccessCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/SendTaskSuccessCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SendTaskSuccessCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var SendTaskSuccessCommand = class _SendTaskSuccessCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _SendTaskSuccessCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "SendTaskSuccessCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.SendTaskSuccessInputFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_SendTaskSuccessCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_SendTaskSuccessCommand)(output, context); + } + }; + exports.SendTaskSuccessCommand = SendTaskSuccessCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/StartExecutionCommand.js +var require_StartExecutionCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/StartExecutionCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.StartExecutionCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var StartExecutionCommand = class _StartExecutionCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _StartExecutionCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "StartExecutionCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.StartExecutionInputFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_StartExecutionCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_StartExecutionCommand)(output, context); + } + }; + exports.StartExecutionCommand = StartExecutionCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/StartSyncExecutionCommand.js +var require_StartSyncExecutionCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/StartSyncExecutionCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.StartSyncExecutionCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var StartSyncExecutionCommand = class _StartSyncExecutionCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _StartSyncExecutionCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "StartSyncExecutionCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.StartSyncExecutionInputFilterSensitiveLog, + outputFilterSensitiveLog: models_0_1.StartSyncExecutionOutputFilterSensitiveLog + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_StartSyncExecutionCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_StartSyncExecutionCommand)(output, context); + } + }; + exports.StartSyncExecutionCommand = StartSyncExecutionCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/StopExecutionCommand.js +var require_StopExecutionCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/StopExecutionCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.StopExecutionCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var StopExecutionCommand = class _StopExecutionCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _StopExecutionCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "StopExecutionCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.StopExecutionInputFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_StopExecutionCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_StopExecutionCommand)(output, context); + } + }; + exports.StopExecutionCommand = StopExecutionCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/TagResourceCommand.js +var require_TagResourceCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/TagResourceCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.TagResourceCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var TagResourceCommand = class _TagResourceCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _TagResourceCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "TagResourceCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_TagResourceCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_TagResourceCommand)(output, context); + } + }; + exports.TagResourceCommand = TagResourceCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/UntagResourceCommand.js +var require_UntagResourceCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/UntagResourceCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.UntagResourceCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var UntagResourceCommand = class _UntagResourceCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _UntagResourceCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "UntagResourceCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_UntagResourceCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_UntagResourceCommand)(output, context); + } + }; + exports.UntagResourceCommand = UntagResourceCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/UpdateMapRunCommand.js +var require_UpdateMapRunCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/UpdateMapRunCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.UpdateMapRunCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var Aws_json1_0_1 = require_Aws_json1_0(); + var UpdateMapRunCommand = class _UpdateMapRunCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _UpdateMapRunCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "UpdateMapRunCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_) => _, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_UpdateMapRunCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_UpdateMapRunCommand)(output, context); + } + }; + exports.UpdateMapRunCommand = UpdateMapRunCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/UpdateStateMachineAliasCommand.js +var require_UpdateStateMachineAliasCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/UpdateStateMachineAliasCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.UpdateStateMachineAliasCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var UpdateStateMachineAliasCommand = class _UpdateStateMachineAliasCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _UpdateStateMachineAliasCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "UpdateStateMachineAliasCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.UpdateStateMachineAliasInputFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_UpdateStateMachineAliasCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_UpdateStateMachineAliasCommand)(output, context); + } + }; + exports.UpdateStateMachineAliasCommand = UpdateStateMachineAliasCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/UpdateStateMachineCommand.js +var require_UpdateStateMachineCommand = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/UpdateStateMachineCommand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.UpdateStateMachineCommand = exports.$Command = void 0; + var middleware_endpoint_1 = require_dist_cjs26(); + var middleware_serde_1 = require_dist_cjs25(); + var smithy_client_1 = require_dist_cjs35(); + Object.defineProperty(exports, "$Command", { enumerable: true, get: function() { + return smithy_client_1.Command; + } }); + var models_0_1 = require_models_03(); + var Aws_json1_0_1 = require_Aws_json1_0(); + var UpdateStateMachineCommand = class _UpdateStateMachineCommand extends smithy_client_1.Command { + static getEndpointParameterInstructions() { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } + constructor(input) { + super(); + this.input = input; + } + resolveMiddleware(clientStack, configuration, options) { + this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, _UpdateStateMachineCommand.getEndpointParameterInstructions())); + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const clientName = "SFNClient"; + const commandName = "UpdateStateMachineCommand"; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: models_0_1.UpdateStateMachineInputFilterSensitiveLog, + outputFilterSensitiveLog: (_) => _ + }; + const { requestHandler } = configuration; + return stack.resolve((request2) => requestHandler.handle(request2.request, options || {}), handlerExecutionContext); + } + serialize(input, context) { + return (0, Aws_json1_0_1.se_UpdateStateMachineCommand)(input, context); + } + deserialize(output, context) { + return (0, Aws_json1_0_1.de_UpdateStateMachineCommand)(output, context); + } + }; + exports.UpdateStateMachineCommand = UpdateStateMachineCommand; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/SFN.js +var require_SFN = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/SFN.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SFN = void 0; + var smithy_client_1 = require_dist_cjs35(); + var CreateActivityCommand_1 = require_CreateActivityCommand(); + var CreateStateMachineAliasCommand_1 = require_CreateStateMachineAliasCommand(); + var CreateStateMachineCommand_1 = require_CreateStateMachineCommand(); + var DeleteActivityCommand_1 = require_DeleteActivityCommand(); + var DeleteStateMachineAliasCommand_1 = require_DeleteStateMachineAliasCommand(); + var DeleteStateMachineCommand_1 = require_DeleteStateMachineCommand(); + var DeleteStateMachineVersionCommand_1 = require_DeleteStateMachineVersionCommand(); + var DescribeActivityCommand_1 = require_DescribeActivityCommand(); + var DescribeExecutionCommand_1 = require_DescribeExecutionCommand(); + var DescribeMapRunCommand_1 = require_DescribeMapRunCommand(); + var DescribeStateMachineAliasCommand_1 = require_DescribeStateMachineAliasCommand(); + var DescribeStateMachineCommand_1 = require_DescribeStateMachineCommand(); + var DescribeStateMachineForExecutionCommand_1 = require_DescribeStateMachineForExecutionCommand(); + var GetActivityTaskCommand_1 = require_GetActivityTaskCommand(); + var GetExecutionHistoryCommand_1 = require_GetExecutionHistoryCommand(); + var ListActivitiesCommand_1 = require_ListActivitiesCommand(); + var ListExecutionsCommand_1 = require_ListExecutionsCommand(); + var ListMapRunsCommand_1 = require_ListMapRunsCommand(); + var ListStateMachineAliasesCommand_1 = require_ListStateMachineAliasesCommand(); + var ListStateMachinesCommand_1 = require_ListStateMachinesCommand(); + var ListStateMachineVersionsCommand_1 = require_ListStateMachineVersionsCommand(); + var ListTagsForResourceCommand_1 = require_ListTagsForResourceCommand(); + var PublishStateMachineVersionCommand_1 = require_PublishStateMachineVersionCommand(); + var SendTaskFailureCommand_1 = require_SendTaskFailureCommand(); + var SendTaskHeartbeatCommand_1 = require_SendTaskHeartbeatCommand(); + var SendTaskSuccessCommand_1 = require_SendTaskSuccessCommand(); + var StartExecutionCommand_1 = require_StartExecutionCommand(); + var StartSyncExecutionCommand_1 = require_StartSyncExecutionCommand(); + var StopExecutionCommand_1 = require_StopExecutionCommand(); + var TagResourceCommand_1 = require_TagResourceCommand(); + var UntagResourceCommand_1 = require_UntagResourceCommand(); + var UpdateMapRunCommand_1 = require_UpdateMapRunCommand(); + var UpdateStateMachineAliasCommand_1 = require_UpdateStateMachineAliasCommand(); + var UpdateStateMachineCommand_1 = require_UpdateStateMachineCommand(); + var SFNClient_1 = require_SFNClient(); + var commands = { + CreateActivityCommand: CreateActivityCommand_1.CreateActivityCommand, + CreateStateMachineCommand: CreateStateMachineCommand_1.CreateStateMachineCommand, + CreateStateMachineAliasCommand: CreateStateMachineAliasCommand_1.CreateStateMachineAliasCommand, + DeleteActivityCommand: DeleteActivityCommand_1.DeleteActivityCommand, + DeleteStateMachineCommand: DeleteStateMachineCommand_1.DeleteStateMachineCommand, + DeleteStateMachineAliasCommand: DeleteStateMachineAliasCommand_1.DeleteStateMachineAliasCommand, + DeleteStateMachineVersionCommand: DeleteStateMachineVersionCommand_1.DeleteStateMachineVersionCommand, + DescribeActivityCommand: DescribeActivityCommand_1.DescribeActivityCommand, + DescribeExecutionCommand: DescribeExecutionCommand_1.DescribeExecutionCommand, + DescribeMapRunCommand: DescribeMapRunCommand_1.DescribeMapRunCommand, + DescribeStateMachineCommand: DescribeStateMachineCommand_1.DescribeStateMachineCommand, + DescribeStateMachineAliasCommand: DescribeStateMachineAliasCommand_1.DescribeStateMachineAliasCommand, + DescribeStateMachineForExecutionCommand: DescribeStateMachineForExecutionCommand_1.DescribeStateMachineForExecutionCommand, + GetActivityTaskCommand: GetActivityTaskCommand_1.GetActivityTaskCommand, + GetExecutionHistoryCommand: GetExecutionHistoryCommand_1.GetExecutionHistoryCommand, + ListActivitiesCommand: ListActivitiesCommand_1.ListActivitiesCommand, + ListExecutionsCommand: ListExecutionsCommand_1.ListExecutionsCommand, + ListMapRunsCommand: ListMapRunsCommand_1.ListMapRunsCommand, + ListStateMachineAliasesCommand: ListStateMachineAliasesCommand_1.ListStateMachineAliasesCommand, + ListStateMachinesCommand: ListStateMachinesCommand_1.ListStateMachinesCommand, + ListStateMachineVersionsCommand: ListStateMachineVersionsCommand_1.ListStateMachineVersionsCommand, + ListTagsForResourceCommand: ListTagsForResourceCommand_1.ListTagsForResourceCommand, + PublishStateMachineVersionCommand: PublishStateMachineVersionCommand_1.PublishStateMachineVersionCommand, + SendTaskFailureCommand: SendTaskFailureCommand_1.SendTaskFailureCommand, + SendTaskHeartbeatCommand: SendTaskHeartbeatCommand_1.SendTaskHeartbeatCommand, + SendTaskSuccessCommand: SendTaskSuccessCommand_1.SendTaskSuccessCommand, + StartExecutionCommand: StartExecutionCommand_1.StartExecutionCommand, + StartSyncExecutionCommand: StartSyncExecutionCommand_1.StartSyncExecutionCommand, + StopExecutionCommand: StopExecutionCommand_1.StopExecutionCommand, + TagResourceCommand: TagResourceCommand_1.TagResourceCommand, + UntagResourceCommand: UntagResourceCommand_1.UntagResourceCommand, + UpdateMapRunCommand: UpdateMapRunCommand_1.UpdateMapRunCommand, + UpdateStateMachineCommand: UpdateStateMachineCommand_1.UpdateStateMachineCommand, + UpdateStateMachineAliasCommand: UpdateStateMachineAliasCommand_1.UpdateStateMachineAliasCommand + }; + var SFN2 = class extends SFNClient_1.SFNClient { + }; + exports.SFN = SFN2; + (0, smithy_client_1.createAggregatedClient)(commands, SFN2); + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/index.js +var require_commands3 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/commands/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_CreateActivityCommand(), exports); + tslib_1.__exportStar(require_CreateStateMachineAliasCommand(), exports); + tslib_1.__exportStar(require_CreateStateMachineCommand(), exports); + tslib_1.__exportStar(require_DeleteActivityCommand(), exports); + tslib_1.__exportStar(require_DeleteStateMachineAliasCommand(), exports); + tslib_1.__exportStar(require_DeleteStateMachineCommand(), exports); + tslib_1.__exportStar(require_DeleteStateMachineVersionCommand(), exports); + tslib_1.__exportStar(require_DescribeActivityCommand(), exports); + tslib_1.__exportStar(require_DescribeExecutionCommand(), exports); + tslib_1.__exportStar(require_DescribeMapRunCommand(), exports); + tslib_1.__exportStar(require_DescribeStateMachineAliasCommand(), exports); + tslib_1.__exportStar(require_DescribeStateMachineCommand(), exports); + tslib_1.__exportStar(require_DescribeStateMachineForExecutionCommand(), exports); + tslib_1.__exportStar(require_GetActivityTaskCommand(), exports); + tslib_1.__exportStar(require_GetExecutionHistoryCommand(), exports); + tslib_1.__exportStar(require_ListActivitiesCommand(), exports); + tslib_1.__exportStar(require_ListExecutionsCommand(), exports); + tslib_1.__exportStar(require_ListMapRunsCommand(), exports); + tslib_1.__exportStar(require_ListStateMachineAliasesCommand(), exports); + tslib_1.__exportStar(require_ListStateMachineVersionsCommand(), exports); + tslib_1.__exportStar(require_ListStateMachinesCommand(), exports); + tslib_1.__exportStar(require_ListTagsForResourceCommand(), exports); + tslib_1.__exportStar(require_PublishStateMachineVersionCommand(), exports); + tslib_1.__exportStar(require_SendTaskFailureCommand(), exports); + tslib_1.__exportStar(require_SendTaskHeartbeatCommand(), exports); + tslib_1.__exportStar(require_SendTaskSuccessCommand(), exports); + tslib_1.__exportStar(require_StartExecutionCommand(), exports); + tslib_1.__exportStar(require_StartSyncExecutionCommand(), exports); + tslib_1.__exportStar(require_StopExecutionCommand(), exports); + tslib_1.__exportStar(require_TagResourceCommand(), exports); + tslib_1.__exportStar(require_UntagResourceCommand(), exports); + tslib_1.__exportStar(require_UpdateMapRunCommand(), exports); + tslib_1.__exportStar(require_UpdateStateMachineAliasCommand(), exports); + tslib_1.__exportStar(require_UpdateStateMachineCommand(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/GetExecutionHistoryPaginator.js +var require_GetExecutionHistoryPaginator = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/GetExecutionHistoryPaginator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.paginateGetExecutionHistory = void 0; + var GetExecutionHistoryCommand_1 = require_GetExecutionHistoryCommand(); + var SFNClient_1 = require_SFNClient(); + var makePagedClientRequest = async (client, input, ...args) => { + return await client.send(new GetExecutionHistoryCommand_1.GetExecutionHistoryCommand(input), ...args); + }; + async function* paginateGetExecutionHistory(config, input, ...additionalArguments) { + let token = config.startingToken || void 0; + let hasNext = true; + let page; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof SFNClient_1.SFNClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected SFN | SFNClient"); + } + yield page; + const prevToken = token; + token = page.nextToken; + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return void 0; + } + exports.paginateGetExecutionHistory = paginateGetExecutionHistory; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/Interfaces.js +var require_Interfaces2 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/Interfaces.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/ListActivitiesPaginator.js +var require_ListActivitiesPaginator = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/ListActivitiesPaginator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.paginateListActivities = void 0; + var ListActivitiesCommand_1 = require_ListActivitiesCommand(); + var SFNClient_1 = require_SFNClient(); + var makePagedClientRequest = async (client, input, ...args) => { + return await client.send(new ListActivitiesCommand_1.ListActivitiesCommand(input), ...args); + }; + async function* paginateListActivities(config, input, ...additionalArguments) { + let token = config.startingToken || void 0; + let hasNext = true; + let page; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof SFNClient_1.SFNClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected SFN | SFNClient"); + } + yield page; + const prevToken = token; + token = page.nextToken; + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return void 0; + } + exports.paginateListActivities = paginateListActivities; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/ListExecutionsPaginator.js +var require_ListExecutionsPaginator = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/ListExecutionsPaginator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.paginateListExecutions = void 0; + var ListExecutionsCommand_1 = require_ListExecutionsCommand(); + var SFNClient_1 = require_SFNClient(); + var makePagedClientRequest = async (client, input, ...args) => { + return await client.send(new ListExecutionsCommand_1.ListExecutionsCommand(input), ...args); + }; + async function* paginateListExecutions(config, input, ...additionalArguments) { + let token = config.startingToken || void 0; + let hasNext = true; + let page; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof SFNClient_1.SFNClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected SFN | SFNClient"); + } + yield page; + const prevToken = token; + token = page.nextToken; + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return void 0; + } + exports.paginateListExecutions = paginateListExecutions; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/ListMapRunsPaginator.js +var require_ListMapRunsPaginator = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/ListMapRunsPaginator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.paginateListMapRuns = void 0; + var ListMapRunsCommand_1 = require_ListMapRunsCommand(); + var SFNClient_1 = require_SFNClient(); + var makePagedClientRequest = async (client, input, ...args) => { + return await client.send(new ListMapRunsCommand_1.ListMapRunsCommand(input), ...args); + }; + async function* paginateListMapRuns(config, input, ...additionalArguments) { + let token = config.startingToken || void 0; + let hasNext = true; + let page; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof SFNClient_1.SFNClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected SFN | SFNClient"); + } + yield page; + const prevToken = token; + token = page.nextToken; + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return void 0; + } + exports.paginateListMapRuns = paginateListMapRuns; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/ListStateMachinesPaginator.js +var require_ListStateMachinesPaginator = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/ListStateMachinesPaginator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.paginateListStateMachines = void 0; + var ListStateMachinesCommand_1 = require_ListStateMachinesCommand(); + var SFNClient_1 = require_SFNClient(); + var makePagedClientRequest = async (client, input, ...args) => { + return await client.send(new ListStateMachinesCommand_1.ListStateMachinesCommand(input), ...args); + }; + async function* paginateListStateMachines(config, input, ...additionalArguments) { + let token = config.startingToken || void 0; + let hasNext = true; + let page; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof SFNClient_1.SFNClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected SFN | SFNClient"); + } + yield page; + const prevToken = token; + token = page.nextToken; + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return void 0; + } + exports.paginateListStateMachines = paginateListStateMachines; + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/index.js +var require_pagination4 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/pagination/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_GetExecutionHistoryPaginator(), exports); + tslib_1.__exportStar(require_Interfaces2(), exports); + tslib_1.__exportStar(require_ListActivitiesPaginator(), exports); + tslib_1.__exportStar(require_ListExecutionsPaginator(), exports); + tslib_1.__exportStar(require_ListMapRunsPaginator(), exports); + tslib_1.__exportStar(require_ListStateMachinesPaginator(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/models/index.js +var require_models3 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/models/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_models_03(), exports); + } +}); + +// ../../../node_modules/@aws-sdk/client-sfn/dist-cjs/index.js +var require_dist_cjs53 = __commonJS({ + "../../../node_modules/@aws-sdk/client-sfn/dist-cjs/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SFNServiceException = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_SFNClient(), exports); + tslib_1.__exportStar(require_SFN(), exports); + tslib_1.__exportStar(require_commands3(), exports); + tslib_1.__exportStar(require_pagination4(), exports); + tslib_1.__exportStar(require_models3(), exports); + var SFNServiceException_1 = require_SFNServiceException(); + Object.defineProperty(exports, "SFNServiceException", { enumerable: true, get: function() { + return SFNServiceException_1.SFNServiceException; + } }); + } +}); + +// ../../../node_modules/webidl-conversions/lib/index.js +var require_lib2 = __commonJS({ + "../../../node_modules/webidl-conversions/lib/index.js"(exports, module2) { + "use strict"; + var conversions = {}; + module2.exports = conversions; + function sign(x) { + return x < 0 ? -1 : 1; + } + function evenRound(x) { + if (x % 1 === 0.5 && (x & 1) === 0) { + return Math.floor(x); + } else { + return Math.round(x); + } + } + function createNumberConversion(bitLength, typeOpts) { + if (!typeOpts.unsigned) { + --bitLength; + } + const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); + const upperBound = Math.pow(2, bitLength) - 1; + const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); + const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); + return function(V, opts) { + if (!opts) + opts = {}; + let x = +V; + if (opts.enforceRange) { + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite number"); + } + x = sign(x) * Math.floor(Math.abs(x)); + if (x < lowerBound || x > upperBound) { + throw new TypeError("Argument is not in byte range"); + } + return x; + } + if (!isNaN(x) && opts.clamp) { + x = evenRound(x); + if (x < lowerBound) + x = lowerBound; + if (x > upperBound) + x = upperBound; + return x; + } + if (!Number.isFinite(x) || x === 0) { + return 0; + } + x = sign(x) * Math.floor(Math.abs(x)); + x = x % moduloVal; + if (!typeOpts.unsigned && x >= moduloBound) { + return x - moduloVal; + } else if (typeOpts.unsigned) { + if (x < 0) { + x += moduloVal; + } else if (x === -0) { + return 0; + } + } + return x; + }; + } + conversions["void"] = function() { + return void 0; + }; + conversions["boolean"] = function(val2) { + return !!val2; + }; + conversions["byte"] = createNumberConversion(8, { unsigned: false }); + conversions["octet"] = createNumberConversion(8, { unsigned: true }); + conversions["short"] = createNumberConversion(16, { unsigned: false }); + conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); + conversions["long"] = createNumberConversion(32, { unsigned: false }); + conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); + conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); + conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); + conversions["double"] = function(V) { + const x = +V; + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite floating-point value"); + } + return x; + }; + conversions["unrestricted double"] = function(V) { + const x = +V; + if (isNaN(x)) { + throw new TypeError("Argument is NaN"); + } + return x; + }; + conversions["float"] = conversions["double"]; + conversions["unrestricted float"] = conversions["unrestricted double"]; + conversions["DOMString"] = function(V, opts) { + if (!opts) + opts = {}; + if (opts.treatNullAsEmptyString && V === null) { + return ""; + } + return String(V); + }; + conversions["ByteString"] = function(V, opts) { + const x = String(V); + let c = void 0; + for (let i = 0; (c = x.codePointAt(i)) !== void 0; ++i) { + if (c > 255) { + throw new TypeError("Argument is not a valid bytestring"); + } + } + return x; + }; + conversions["USVString"] = function(V) { + const S = String(V); + const n = S.length; + const U = []; + for (let i = 0; i < n; ++i) { + const c = S.charCodeAt(i); + if (c < 55296 || c > 57343) { + U.push(String.fromCodePoint(c)); + } else if (56320 <= c && c <= 57343) { + U.push(String.fromCodePoint(65533)); + } else { + if (i === n - 1) { + U.push(String.fromCodePoint(65533)); + } else { + const d = S.charCodeAt(i + 1); + if (56320 <= d && d <= 57343) { + const a = c & 1023; + const b = d & 1023; + U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); + ++i; + } else { + U.push(String.fromCodePoint(65533)); + } + } + } + } + return U.join(""); + }; + conversions["Date"] = function(V, opts) { + if (!(V instanceof Date)) { + throw new TypeError("Argument is not a Date object"); + } + if (isNaN(V)) { + return void 0; + } + return V; + }; + conversions["RegExp"] = function(V, opts) { + if (!(V instanceof RegExp)) { + V = new RegExp(V); + } + return V; + }; + } +}); + +// ../../../node_modules/whatwg-url/lib/utils.js +var require_utils2 = __commonJS({ + "../../../node_modules/whatwg-url/lib/utils.js"(exports, module2) { + "use strict"; + module2.exports.mixin = function mixin(target, source) { + const keys = Object.getOwnPropertyNames(source); + for (let i = 0; i < keys.length; ++i) { + Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); + } + }; + module2.exports.wrapperSymbol = Symbol("wrapper"); + module2.exports.implSymbol = Symbol("impl"); + module2.exports.wrapperForImpl = function(impl) { + return impl[module2.exports.wrapperSymbol]; + }; + module2.exports.implForWrapper = function(wrapper) { + return wrapper[module2.exports.implSymbol]; + }; + } +}); + +// ../../../node_modules/tr46/lib/mappingTable.json +var require_mappingTable = __commonJS({ + "../../../node_modules/tr46/lib/mappingTable.json"(exports, module2) { + module2.exports = [[[0, 44], "disallowed_STD3_valid"], [[45, 46], "valid"], [[47, 47], "disallowed_STD3_valid"], [[48, 57], "valid"], [[58, 64], "disallowed_STD3_valid"], [[65, 65], "mapped", [97]], [[66, 66], "mapped", [98]], [[67, 67], "mapped", [99]], [[68, 68], "mapped", [100]], [[69, 69], "mapped", [101]], [[70, 70], "mapped", [102]], [[71, 71], "mapped", [103]], [[72, 72], "mapped", [104]], [[73, 73], "mapped", [105]], [[74, 74], "mapped", [106]], [[75, 75], "mapped", [107]], [[76, 76], "mapped", [108]], [[77, 77], "mapped", [109]], [[78, 78], "mapped", [110]], [[79, 79], "mapped", [111]], [[80, 80], "mapped", [112]], [[81, 81], "mapped", [113]], [[82, 82], "mapped", [114]], [[83, 83], "mapped", [115]], [[84, 84], "mapped", [116]], [[85, 85], "mapped", [117]], [[86, 86], "mapped", [118]], [[87, 87], "mapped", [119]], [[88, 88], "mapped", [120]], [[89, 89], "mapped", [121]], [[90, 90], "mapped", [122]], [[91, 96], "disallowed_STD3_valid"], [[97, 122], "valid"], [[123, 127], "disallowed_STD3_valid"], [[128, 159], "disallowed"], [[160, 160], "disallowed_STD3_mapped", [32]], [[161, 167], "valid", [], "NV8"], [[168, 168], "disallowed_STD3_mapped", [32, 776]], [[169, 169], "valid", [], "NV8"], [[170, 170], "mapped", [97]], [[171, 172], "valid", [], "NV8"], [[173, 173], "ignored"], [[174, 174], "valid", [], "NV8"], [[175, 175], "disallowed_STD3_mapped", [32, 772]], [[176, 177], "valid", [], "NV8"], [[178, 178], "mapped", [50]], [[179, 179], "mapped", [51]], [[180, 180], "disallowed_STD3_mapped", [32, 769]], [[181, 181], "mapped", [956]], [[182, 182], "valid", [], "NV8"], [[183, 183], "valid"], [[184, 184], "disallowed_STD3_mapped", [32, 807]], [[185, 185], "mapped", [49]], [[186, 186], "mapped", [111]], [[187, 187], "valid", [], "NV8"], [[188, 188], "mapped", [49, 8260, 52]], [[189, 189], "mapped", [49, 8260, 50]], [[190, 190], "mapped", [51, 8260, 52]], [[191, 191], "valid", [], "NV8"], [[192, 192], "mapped", [224]], [[193, 193], "mapped", [225]], [[194, 194], "mapped", [226]], [[195, 195], "mapped", [227]], [[196, 196], "mapped", [228]], [[197, 197], "mapped", [229]], [[198, 198], "mapped", [230]], [[199, 199], "mapped", [231]], [[200, 200], "mapped", [232]], [[201, 201], "mapped", [233]], [[202, 202], "mapped", [234]], [[203, 203], "mapped", [235]], [[204, 204], "mapped", [236]], [[205, 205], "mapped", [237]], [[206, 206], "mapped", [238]], [[207, 207], "mapped", [239]], [[208, 208], "mapped", [240]], [[209, 209], "mapped", [241]], [[210, 210], "mapped", [242]], [[211, 211], "mapped", [243]], [[212, 212], "mapped", [244]], [[213, 213], "mapped", [245]], [[214, 214], "mapped", [246]], [[215, 215], "valid", [], "NV8"], [[216, 216], "mapped", [248]], [[217, 217], "mapped", [249]], [[218, 218], "mapped", [250]], [[219, 219], "mapped", [251]], [[220, 220], "mapped", [252]], [[221, 221], "mapped", [253]], [[222, 222], "mapped", [254]], [[223, 223], "deviation", [115, 115]], [[224, 246], "valid"], [[247, 247], "valid", [], "NV8"], [[248, 255], "valid"], [[256, 256], "mapped", [257]], [[257, 257], "valid"], [[258, 258], "mapped", [259]], [[259, 259], "valid"], [[260, 260], "mapped", [261]], [[261, 261], "valid"], [[262, 262], "mapped", [263]], [[263, 263], "valid"], [[264, 264], "mapped", [265]], [[265, 265], "valid"], [[266, 266], "mapped", [267]], [[267, 267], "valid"], [[268, 268], "mapped", [269]], [[269, 269], "valid"], [[270, 270], "mapped", [271]], [[271, 271], "valid"], [[272, 272], "mapped", [273]], [[273, 273], "valid"], [[274, 274], "mapped", [275]], [[275, 275], "valid"], [[276, 276], "mapped", [277]], [[277, 277], "valid"], [[278, 278], "mapped", [279]], [[279, 279], "valid"], [[280, 280], "mapped", [281]], [[281, 281], "valid"], [[282, 282], "mapped", [283]], [[283, 283], "valid"], [[284, 284], "mapped", [285]], [[285, 285], "valid"], [[286, 286], "mapped", [287]], [[287, 287], "valid"], [[288, 288], "mapped", [289]], [[289, 289], "valid"], [[290, 290], "mapped", [291]], [[291, 291], "valid"], [[292, 292], "mapped", [293]], [[293, 293], "valid"], [[294, 294], "mapped", [295]], [[295, 295], "valid"], [[296, 296], "mapped", [297]], [[297, 297], "valid"], [[298, 298], "mapped", [299]], [[299, 299], "valid"], [[300, 300], "mapped", [301]], [[301, 301], "valid"], [[302, 302], "mapped", [303]], [[303, 303], "valid"], [[304, 304], "mapped", [105, 775]], [[305, 305], "valid"], [[306, 307], "mapped", [105, 106]], [[308, 308], "mapped", [309]], [[309, 309], "valid"], [[310, 310], "mapped", [311]], [[311, 312], "valid"], [[313, 313], "mapped", [314]], [[314, 314], "valid"], [[315, 315], "mapped", [316]], [[316, 316], "valid"], [[317, 317], "mapped", [318]], [[318, 318], "valid"], [[319, 320], "mapped", [108, 183]], [[321, 321], "mapped", [322]], [[322, 322], "valid"], [[323, 323], "mapped", [324]], [[324, 324], "valid"], [[325, 325], "mapped", [326]], [[326, 326], "valid"], [[327, 327], "mapped", [328]], [[328, 328], "valid"], [[329, 329], "mapped", [700, 110]], [[330, 330], "mapped", [331]], [[331, 331], "valid"], [[332, 332], "mapped", [333]], [[333, 333], "valid"], [[334, 334], "mapped", [335]], [[335, 335], "valid"], [[336, 336], "mapped", [337]], [[337, 337], "valid"], [[338, 338], "mapped", [339]], [[339, 339], "valid"], [[340, 340], "mapped", [341]], [[341, 341], "valid"], [[342, 342], "mapped", [343]], [[343, 343], "valid"], [[344, 344], "mapped", [345]], [[345, 345], "valid"], [[346, 346], "mapped", [347]], [[347, 347], "valid"], [[348, 348], "mapped", [349]], [[349, 349], "valid"], [[350, 350], "mapped", [351]], [[351, 351], "valid"], [[352, 352], "mapped", [353]], [[353, 353], "valid"], [[354, 354], "mapped", [355]], [[355, 355], "valid"], [[356, 356], "mapped", [357]], [[357, 357], "valid"], [[358, 358], "mapped", [359]], [[359, 359], "valid"], [[360, 360], "mapped", [361]], [[361, 361], "valid"], [[362, 362], "mapped", [363]], [[363, 363], "valid"], [[364, 364], "mapped", [365]], [[365, 365], "valid"], [[366, 366], "mapped", [367]], [[367, 367], "valid"], [[368, 368], "mapped", [369]], [[369, 369], "valid"], [[370, 370], "mapped", [371]], [[371, 371], "valid"], [[372, 372], "mapped", [373]], [[373, 373], "valid"], [[374, 374], "mapped", [375]], [[375, 375], "valid"], [[376, 376], "mapped", [255]], [[377, 377], "mapped", [378]], [[378, 378], "valid"], [[379, 379], "mapped", [380]], [[380, 380], "valid"], [[381, 381], "mapped", [382]], [[382, 382], "valid"], [[383, 383], "mapped", [115]], [[384, 384], "valid"], [[385, 385], "mapped", [595]], [[386, 386], "mapped", [387]], [[387, 387], "valid"], [[388, 388], "mapped", [389]], [[389, 389], "valid"], [[390, 390], "mapped", [596]], [[391, 391], "mapped", [392]], [[392, 392], "valid"], [[393, 393], "mapped", [598]], [[394, 394], "mapped", [599]], [[395, 395], "mapped", [396]], [[396, 397], "valid"], [[398, 398], "mapped", [477]], [[399, 399], "mapped", [601]], [[400, 400], "mapped", [603]], [[401, 401], "mapped", [402]], [[402, 402], "valid"], [[403, 403], "mapped", [608]], [[404, 404], "mapped", [611]], [[405, 405], "valid"], [[406, 406], "mapped", [617]], [[407, 407], "mapped", [616]], [[408, 408], "mapped", [409]], [[409, 411], "valid"], [[412, 412], "mapped", [623]], [[413, 413], "mapped", [626]], [[414, 414], "valid"], [[415, 415], "mapped", [629]], [[416, 416], "mapped", [417]], [[417, 417], "valid"], [[418, 418], "mapped", [419]], [[419, 419], "valid"], [[420, 420], "mapped", [421]], [[421, 421], "valid"], [[422, 422], "mapped", [640]], [[423, 423], "mapped", [424]], [[424, 424], "valid"], [[425, 425], "mapped", [643]], [[426, 427], "valid"], [[428, 428], "mapped", [429]], [[429, 429], "valid"], [[430, 430], "mapped", [648]], [[431, 431], "mapped", [432]], [[432, 432], "valid"], [[433, 433], "mapped", [650]], [[434, 434], "mapped", [651]], [[435, 435], "mapped", [436]], [[436, 436], "valid"], [[437, 437], "mapped", [438]], [[438, 438], "valid"], [[439, 439], "mapped", [658]], [[440, 440], "mapped", [441]], [[441, 443], "valid"], [[444, 444], "mapped", [445]], [[445, 451], "valid"], [[452, 454], "mapped", [100, 382]], [[455, 457], "mapped", [108, 106]], [[458, 460], "mapped", [110, 106]], [[461, 461], "mapped", [462]], [[462, 462], "valid"], [[463, 463], "mapped", [464]], [[464, 464], "valid"], [[465, 465], "mapped", [466]], [[466, 466], "valid"], [[467, 467], "mapped", [468]], [[468, 468], "valid"], [[469, 469], "mapped", [470]], [[470, 470], "valid"], [[471, 471], "mapped", [472]], [[472, 472], "valid"], [[473, 473], "mapped", [474]], [[474, 474], "valid"], [[475, 475], "mapped", [476]], [[476, 477], "valid"], [[478, 478], "mapped", [479]], [[479, 479], "valid"], [[480, 480], "mapped", [481]], [[481, 481], "valid"], [[482, 482], "mapped", [483]], [[483, 483], "valid"], [[484, 484], "mapped", [485]], [[485, 485], "valid"], [[486, 486], "mapped", [487]], [[487, 487], "valid"], [[488, 488], "mapped", [489]], [[489, 489], "valid"], [[490, 490], "mapped", [491]], [[491, 491], "valid"], [[492, 492], "mapped", [493]], [[493, 493], "valid"], [[494, 494], "mapped", [495]], [[495, 496], "valid"], [[497, 499], "mapped", [100, 122]], [[500, 500], "mapped", [501]], [[501, 501], "valid"], [[502, 502], "mapped", [405]], [[503, 503], "mapped", [447]], [[504, 504], "mapped", [505]], [[505, 505], "valid"], [[506, 506], "mapped", [507]], [[507, 507], "valid"], [[508, 508], "mapped", [509]], [[509, 509], "valid"], [[510, 510], "mapped", [511]], [[511, 511], "valid"], [[512, 512], "mapped", [513]], [[513, 513], "valid"], [[514, 514], "mapped", [515]], [[515, 515], "valid"], [[516, 516], "mapped", [517]], [[517, 517], "valid"], [[518, 518], "mapped", [519]], [[519, 519], "valid"], [[520, 520], "mapped", [521]], [[521, 521], "valid"], [[522, 522], "mapped", [523]], [[523, 523], "valid"], [[524, 524], "mapped", [525]], [[525, 525], "valid"], [[526, 526], "mapped", [527]], [[527, 527], "valid"], [[528, 528], "mapped", [529]], [[529, 529], "valid"], [[530, 530], "mapped", [531]], [[531, 531], "valid"], [[532, 532], "mapped", [533]], [[533, 533], "valid"], [[534, 534], "mapped", [535]], [[535, 535], "valid"], [[536, 536], "mapped", [537]], [[537, 537], "valid"], [[538, 538], "mapped", [539]], [[539, 539], "valid"], [[540, 540], "mapped", [541]], [[541, 541], "valid"], [[542, 542], "mapped", [543]], [[543, 543], "valid"], [[544, 544], "mapped", [414]], [[545, 545], "valid"], [[546, 546], "mapped", [547]], [[547, 547], "valid"], [[548, 548], "mapped", [549]], [[549, 549], "valid"], [[550, 550], "mapped", [551]], [[551, 551], "valid"], [[552, 552], "mapped", [553]], [[553, 553], "valid"], [[554, 554], "mapped", [555]], [[555, 555], "valid"], [[556, 556], "mapped", [557]], [[557, 557], "valid"], [[558, 558], "mapped", [559]], [[559, 559], "valid"], [[560, 560], "mapped", [561]], [[561, 561], "valid"], [[562, 562], "mapped", [563]], [[563, 563], "valid"], [[564, 566], "valid"], [[567, 569], "valid"], [[570, 570], "mapped", [11365]], [[571, 571], "mapped", [572]], [[572, 572], "valid"], [[573, 573], "mapped", [410]], [[574, 574], "mapped", [11366]], [[575, 576], "valid"], [[577, 577], "mapped", [578]], [[578, 578], "valid"], [[579, 579], "mapped", [384]], [[580, 580], "mapped", [649]], [[581, 581], "mapped", [652]], [[582, 582], "mapped", [583]], [[583, 583], "valid"], [[584, 584], "mapped", [585]], [[585, 585], "valid"], [[586, 586], "mapped", [587]], [[587, 587], "valid"], [[588, 588], "mapped", [589]], [[589, 589], "valid"], [[590, 590], "mapped", [591]], [[591, 591], "valid"], [[592, 680], "valid"], [[681, 685], "valid"], [[686, 687], "valid"], [[688, 688], "mapped", [104]], [[689, 689], "mapped", [614]], [[690, 690], "mapped", [106]], [[691, 691], "mapped", [114]], [[692, 692], "mapped", [633]], [[693, 693], "mapped", [635]], [[694, 694], "mapped", [641]], [[695, 695], "mapped", [119]], [[696, 696], "mapped", [121]], [[697, 705], "valid"], [[706, 709], "valid", [], "NV8"], [[710, 721], "valid"], [[722, 727], "valid", [], "NV8"], [[728, 728], "disallowed_STD3_mapped", [32, 774]], [[729, 729], "disallowed_STD3_mapped", [32, 775]], [[730, 730], "disallowed_STD3_mapped", [32, 778]], [[731, 731], "disallowed_STD3_mapped", [32, 808]], [[732, 732], "disallowed_STD3_mapped", [32, 771]], [[733, 733], "disallowed_STD3_mapped", [32, 779]], [[734, 734], "valid", [], "NV8"], [[735, 735], "valid", [], "NV8"], [[736, 736], "mapped", [611]], [[737, 737], "mapped", [108]], [[738, 738], "mapped", [115]], [[739, 739], "mapped", [120]], [[740, 740], "mapped", [661]], [[741, 745], "valid", [], "NV8"], [[746, 747], "valid", [], "NV8"], [[748, 748], "valid"], [[749, 749], "valid", [], "NV8"], [[750, 750], "valid"], [[751, 767], "valid", [], "NV8"], [[768, 831], "valid"], [[832, 832], "mapped", [768]], [[833, 833], "mapped", [769]], [[834, 834], "valid"], [[835, 835], "mapped", [787]], [[836, 836], "mapped", [776, 769]], [[837, 837], "mapped", [953]], [[838, 846], "valid"], [[847, 847], "ignored"], [[848, 855], "valid"], [[856, 860], "valid"], [[861, 863], "valid"], [[864, 865], "valid"], [[866, 866], "valid"], [[867, 879], "valid"], [[880, 880], "mapped", [881]], [[881, 881], "valid"], [[882, 882], "mapped", [883]], [[883, 883], "valid"], [[884, 884], "mapped", [697]], [[885, 885], "valid"], [[886, 886], "mapped", [887]], [[887, 887], "valid"], [[888, 889], "disallowed"], [[890, 890], "disallowed_STD3_mapped", [32, 953]], [[891, 893], "valid"], [[894, 894], "disallowed_STD3_mapped", [59]], [[895, 895], "mapped", [1011]], [[896, 899], "disallowed"], [[900, 900], "disallowed_STD3_mapped", [32, 769]], [[901, 901], "disallowed_STD3_mapped", [32, 776, 769]], [[902, 902], "mapped", [940]], [[903, 903], "mapped", [183]], [[904, 904], "mapped", [941]], [[905, 905], "mapped", [942]], [[906, 906], "mapped", [943]], [[907, 907], "disallowed"], [[908, 908], "mapped", [972]], [[909, 909], "disallowed"], [[910, 910], "mapped", [973]], [[911, 911], "mapped", [974]], [[912, 912], "valid"], [[913, 913], "mapped", [945]], [[914, 914], "mapped", [946]], [[915, 915], "mapped", [947]], [[916, 916], "mapped", [948]], [[917, 917], "mapped", [949]], [[918, 918], "mapped", [950]], [[919, 919], "mapped", [951]], [[920, 920], "mapped", [952]], [[921, 921], "mapped", [953]], [[922, 922], "mapped", [954]], [[923, 923], "mapped", [955]], [[924, 924], "mapped", [956]], [[925, 925], "mapped", [957]], [[926, 926], "mapped", [958]], [[927, 927], "mapped", [959]], [[928, 928], "mapped", [960]], [[929, 929], "mapped", [961]], [[930, 930], "disallowed"], [[931, 931], "mapped", [963]], [[932, 932], "mapped", [964]], [[933, 933], "mapped", [965]], [[934, 934], "mapped", [966]], [[935, 935], "mapped", [967]], [[936, 936], "mapped", [968]], [[937, 937], "mapped", [969]], [[938, 938], "mapped", [970]], [[939, 939], "mapped", [971]], [[940, 961], "valid"], [[962, 962], "deviation", [963]], [[963, 974], "valid"], [[975, 975], "mapped", [983]], [[976, 976], "mapped", [946]], [[977, 977], "mapped", [952]], [[978, 978], "mapped", [965]], [[979, 979], "mapped", [973]], [[980, 980], "mapped", [971]], [[981, 981], "mapped", [966]], [[982, 982], "mapped", [960]], [[983, 983], "valid"], [[984, 984], "mapped", [985]], [[985, 985], "valid"], [[986, 986], "mapped", [987]], [[987, 987], "valid"], [[988, 988], "mapped", [989]], [[989, 989], "valid"], [[990, 990], "mapped", [991]], [[991, 991], "valid"], [[992, 992], "mapped", [993]], [[993, 993], "valid"], [[994, 994], "mapped", [995]], [[995, 995], "valid"], [[996, 996], "mapped", [997]], [[997, 997], "valid"], [[998, 998], "mapped", [999]], [[999, 999], "valid"], [[1e3, 1e3], "mapped", [1001]], [[1001, 1001], "valid"], [[1002, 1002], "mapped", [1003]], [[1003, 1003], "valid"], [[1004, 1004], "mapped", [1005]], [[1005, 1005], "valid"], [[1006, 1006], "mapped", [1007]], [[1007, 1007], "valid"], [[1008, 1008], "mapped", [954]], [[1009, 1009], "mapped", [961]], [[1010, 1010], "mapped", [963]], [[1011, 1011], "valid"], [[1012, 1012], "mapped", [952]], [[1013, 1013], "mapped", [949]], [[1014, 1014], "valid", [], "NV8"], [[1015, 1015], "mapped", [1016]], [[1016, 1016], "valid"], [[1017, 1017], "mapped", [963]], [[1018, 1018], "mapped", [1019]], [[1019, 1019], "valid"], [[1020, 1020], "valid"], [[1021, 1021], "mapped", [891]], [[1022, 1022], "mapped", [892]], [[1023, 1023], "mapped", [893]], [[1024, 1024], "mapped", [1104]], [[1025, 1025], "mapped", [1105]], [[1026, 1026], "mapped", [1106]], [[1027, 1027], "mapped", [1107]], [[1028, 1028], "mapped", [1108]], [[1029, 1029], "mapped", [1109]], [[1030, 1030], "mapped", [1110]], [[1031, 1031], "mapped", [1111]], [[1032, 1032], "mapped", [1112]], [[1033, 1033], "mapped", [1113]], [[1034, 1034], "mapped", [1114]], [[1035, 1035], "mapped", [1115]], [[1036, 1036], "mapped", [1116]], [[1037, 1037], "mapped", [1117]], [[1038, 1038], "mapped", [1118]], [[1039, 1039], "mapped", [1119]], [[1040, 1040], "mapped", [1072]], [[1041, 1041], "mapped", [1073]], [[1042, 1042], "mapped", [1074]], [[1043, 1043], "mapped", [1075]], [[1044, 1044], "mapped", [1076]], [[1045, 1045], "mapped", [1077]], [[1046, 1046], "mapped", [1078]], [[1047, 1047], "mapped", [1079]], [[1048, 1048], "mapped", [1080]], [[1049, 1049], "mapped", [1081]], [[1050, 1050], "mapped", [1082]], [[1051, 1051], "mapped", [1083]], [[1052, 1052], "mapped", [1084]], [[1053, 1053], "mapped", [1085]], [[1054, 1054], "mapped", [1086]], [[1055, 1055], "mapped", [1087]], [[1056, 1056], "mapped", [1088]], [[1057, 1057], "mapped", [1089]], [[1058, 1058], "mapped", [1090]], [[1059, 1059], "mapped", [1091]], [[1060, 1060], "mapped", [1092]], [[1061, 1061], "mapped", [1093]], [[1062, 1062], "mapped", [1094]], [[1063, 1063], "mapped", [1095]], [[1064, 1064], "mapped", [1096]], [[1065, 1065], "mapped", [1097]], [[1066, 1066], "mapped", [1098]], [[1067, 1067], "mapped", [1099]], [[1068, 1068], "mapped", [1100]], [[1069, 1069], "mapped", [1101]], [[1070, 1070], "mapped", [1102]], [[1071, 1071], "mapped", [1103]], [[1072, 1103], "valid"], [[1104, 1104], "valid"], [[1105, 1116], "valid"], [[1117, 1117], "valid"], [[1118, 1119], "valid"], [[1120, 1120], "mapped", [1121]], [[1121, 1121], "valid"], [[1122, 1122], "mapped", [1123]], [[1123, 1123], "valid"], [[1124, 1124], "mapped", [1125]], [[1125, 1125], "valid"], [[1126, 1126], "mapped", [1127]], [[1127, 1127], "valid"], [[1128, 1128], "mapped", [1129]], [[1129, 1129], "valid"], [[1130, 1130], "mapped", [1131]], [[1131, 1131], "valid"], [[1132, 1132], "mapped", [1133]], [[1133, 1133], "valid"], [[1134, 1134], "mapped", [1135]], [[1135, 1135], "valid"], [[1136, 1136], "mapped", [1137]], [[1137, 1137], "valid"], [[1138, 1138], "mapped", [1139]], [[1139, 1139], "valid"], [[1140, 1140], "mapped", [1141]], [[1141, 1141], "valid"], [[1142, 1142], "mapped", [1143]], [[1143, 1143], "valid"], [[1144, 1144], "mapped", [1145]], [[1145, 1145], "valid"], [[1146, 1146], "mapped", [1147]], [[1147, 1147], "valid"], [[1148, 1148], "mapped", [1149]], [[1149, 1149], "valid"], [[1150, 1150], "mapped", [1151]], [[1151, 1151], "valid"], [[1152, 1152], "mapped", [1153]], [[1153, 1153], "valid"], [[1154, 1154], "valid", [], "NV8"], [[1155, 1158], "valid"], [[1159, 1159], "valid"], [[1160, 1161], "valid", [], "NV8"], [[1162, 1162], "mapped", [1163]], [[1163, 1163], "valid"], [[1164, 1164], "mapped", [1165]], [[1165, 1165], "valid"], [[1166, 1166], "mapped", [1167]], [[1167, 1167], "valid"], [[1168, 1168], "mapped", [1169]], [[1169, 1169], "valid"], [[1170, 1170], "mapped", [1171]], [[1171, 1171], "valid"], [[1172, 1172], "mapped", [1173]], [[1173, 1173], "valid"], [[1174, 1174], "mapped", [1175]], [[1175, 1175], "valid"], [[1176, 1176], "mapped", [1177]], [[1177, 1177], "valid"], [[1178, 1178], "mapped", [1179]], [[1179, 1179], "valid"], [[1180, 1180], "mapped", [1181]], [[1181, 1181], "valid"], [[1182, 1182], "mapped", [1183]], [[1183, 1183], "valid"], [[1184, 1184], "mapped", [1185]], [[1185, 1185], "valid"], [[1186, 1186], "mapped", [1187]], [[1187, 1187], "valid"], [[1188, 1188], "mapped", [1189]], [[1189, 1189], "valid"], [[1190, 1190], "mapped", [1191]], [[1191, 1191], "valid"], [[1192, 1192], "mapped", [1193]], [[1193, 1193], "valid"], [[1194, 1194], "mapped", [1195]], [[1195, 1195], "valid"], [[1196, 1196], "mapped", [1197]], [[1197, 1197], "valid"], [[1198, 1198], "mapped", [1199]], [[1199, 1199], "valid"], [[1200, 1200], "mapped", [1201]], [[1201, 1201], "valid"], [[1202, 1202], "mapped", [1203]], [[1203, 1203], "valid"], [[1204, 1204], "mapped", [1205]], [[1205, 1205], "valid"], [[1206, 1206], "mapped", [1207]], [[1207, 1207], "valid"], [[1208, 1208], "mapped", [1209]], [[1209, 1209], "valid"], [[1210, 1210], "mapped", [1211]], [[1211, 1211], "valid"], [[1212, 1212], "mapped", [1213]], [[1213, 1213], "valid"], [[1214, 1214], "mapped", [1215]], [[1215, 1215], "valid"], [[1216, 1216], "disallowed"], [[1217, 1217], "mapped", [1218]], [[1218, 1218], "valid"], [[1219, 1219], "mapped", [1220]], [[1220, 1220], "valid"], [[1221, 1221], "mapped", [1222]], [[1222, 1222], "valid"], [[1223, 1223], "mapped", [1224]], [[1224, 1224], "valid"], [[1225, 1225], "mapped", [1226]], [[1226, 1226], "valid"], [[1227, 1227], "mapped", [1228]], [[1228, 1228], "valid"], [[1229, 1229], "mapped", [1230]], [[1230, 1230], "valid"], [[1231, 1231], "valid"], [[1232, 1232], "mapped", [1233]], [[1233, 1233], "valid"], [[1234, 1234], "mapped", [1235]], [[1235, 1235], "valid"], [[1236, 1236], "mapped", [1237]], [[1237, 1237], "valid"], [[1238, 1238], "mapped", [1239]], [[1239, 1239], "valid"], [[1240, 1240], "mapped", [1241]], [[1241, 1241], "valid"], [[1242, 1242], "mapped", [1243]], [[1243, 1243], "valid"], [[1244, 1244], "mapped", [1245]], [[1245, 1245], "valid"], [[1246, 1246], "mapped", [1247]], [[1247, 1247], "valid"], [[1248, 1248], "mapped", [1249]], [[1249, 1249], "valid"], [[1250, 1250], "mapped", [1251]], [[1251, 1251], "valid"], [[1252, 1252], "mapped", [1253]], [[1253, 1253], "valid"], [[1254, 1254], "mapped", [1255]], [[1255, 1255], "valid"], [[1256, 1256], "mapped", [1257]], [[1257, 1257], "valid"], [[1258, 1258], "mapped", [1259]], [[1259, 1259], "valid"], [[1260, 1260], "mapped", [1261]], [[1261, 1261], "valid"], [[1262, 1262], "mapped", [1263]], [[1263, 1263], "valid"], [[1264, 1264], "mapped", [1265]], [[1265, 1265], "valid"], [[1266, 1266], "mapped", [1267]], [[1267, 1267], "valid"], [[1268, 1268], "mapped", [1269]], [[1269, 1269], "valid"], [[1270, 1270], "mapped", [1271]], [[1271, 1271], "valid"], [[1272, 1272], "mapped", [1273]], [[1273, 1273], "valid"], [[1274, 1274], "mapped", [1275]], [[1275, 1275], "valid"], [[1276, 1276], "mapped", [1277]], [[1277, 1277], "valid"], [[1278, 1278], "mapped", [1279]], [[1279, 1279], "valid"], [[1280, 1280], "mapped", [1281]], [[1281, 1281], "valid"], [[1282, 1282], "mapped", [1283]], [[1283, 1283], "valid"], [[1284, 1284], "mapped", [1285]], [[1285, 1285], "valid"], [[1286, 1286], "mapped", [1287]], [[1287, 1287], "valid"], [[1288, 1288], "mapped", [1289]], [[1289, 1289], "valid"], [[1290, 1290], "mapped", [1291]], [[1291, 1291], "valid"], [[1292, 1292], "mapped", [1293]], [[1293, 1293], "valid"], [[1294, 1294], "mapped", [1295]], [[1295, 1295], "valid"], [[1296, 1296], "mapped", [1297]], [[1297, 1297], "valid"], [[1298, 1298], "mapped", [1299]], [[1299, 1299], "valid"], [[1300, 1300], "mapped", [1301]], [[1301, 1301], "valid"], [[1302, 1302], "mapped", [1303]], [[1303, 1303], "valid"], [[1304, 1304], "mapped", [1305]], [[1305, 1305], "valid"], [[1306, 1306], "mapped", [1307]], [[1307, 1307], "valid"], [[1308, 1308], "mapped", [1309]], [[1309, 1309], "valid"], [[1310, 1310], "mapped", [1311]], [[1311, 1311], "valid"], [[1312, 1312], "mapped", [1313]], [[1313, 1313], "valid"], [[1314, 1314], "mapped", [1315]], [[1315, 1315], "valid"], [[1316, 1316], "mapped", [1317]], [[1317, 1317], "valid"], [[1318, 1318], "mapped", [1319]], [[1319, 1319], "valid"], [[1320, 1320], "mapped", [1321]], [[1321, 1321], "valid"], [[1322, 1322], "mapped", [1323]], [[1323, 1323], "valid"], [[1324, 1324], "mapped", [1325]], [[1325, 1325], "valid"], [[1326, 1326], "mapped", [1327]], [[1327, 1327], "valid"], [[1328, 1328], "disallowed"], [[1329, 1329], "mapped", [1377]], [[1330, 1330], "mapped", [1378]], [[1331, 1331], "mapped", [1379]], [[1332, 1332], "mapped", [1380]], [[1333, 1333], "mapped", [1381]], [[1334, 1334], "mapped", [1382]], [[1335, 1335], "mapped", [1383]], [[1336, 1336], "mapped", [1384]], [[1337, 1337], "mapped", [1385]], [[1338, 1338], "mapped", [1386]], [[1339, 1339], "mapped", [1387]], [[1340, 1340], "mapped", [1388]], [[1341, 1341], "mapped", [1389]], [[1342, 1342], "mapped", [1390]], [[1343, 1343], "mapped", [1391]], [[1344, 1344], "mapped", [1392]], [[1345, 1345], "mapped", [1393]], [[1346, 1346], "mapped", [1394]], [[1347, 1347], "mapped", [1395]], [[1348, 1348], "mapped", [1396]], [[1349, 1349], "mapped", [1397]], [[1350, 1350], "mapped", [1398]], [[1351, 1351], "mapped", [1399]], [[1352, 1352], "mapped", [1400]], [[1353, 1353], "mapped", [1401]], [[1354, 1354], "mapped", [1402]], [[1355, 1355], "mapped", [1403]], [[1356, 1356], "mapped", [1404]], [[1357, 1357], "mapped", [1405]], [[1358, 1358], "mapped", [1406]], [[1359, 1359], "mapped", [1407]], [[1360, 1360], "mapped", [1408]], [[1361, 1361], "mapped", [1409]], [[1362, 1362], "mapped", [1410]], [[1363, 1363], "mapped", [1411]], [[1364, 1364], "mapped", [1412]], [[1365, 1365], "mapped", [1413]], [[1366, 1366], "mapped", [1414]], [[1367, 1368], "disallowed"], [[1369, 1369], "valid"], [[1370, 1375], "valid", [], "NV8"], [[1376, 1376], "disallowed"], [[1377, 1414], "valid"], [[1415, 1415], "mapped", [1381, 1410]], [[1416, 1416], "disallowed"], [[1417, 1417], "valid", [], "NV8"], [[1418, 1418], "valid", [], "NV8"], [[1419, 1420], "disallowed"], [[1421, 1422], "valid", [], "NV8"], [[1423, 1423], "valid", [], "NV8"], [[1424, 1424], "disallowed"], [[1425, 1441], "valid"], [[1442, 1442], "valid"], [[1443, 1455], "valid"], [[1456, 1465], "valid"], [[1466, 1466], "valid"], [[1467, 1469], "valid"], [[1470, 1470], "valid", [], "NV8"], [[1471, 1471], "valid"], [[1472, 1472], "valid", [], "NV8"], [[1473, 1474], "valid"], [[1475, 1475], "valid", [], "NV8"], [[1476, 1476], "valid"], [[1477, 1477], "valid"], [[1478, 1478], "valid", [], "NV8"], [[1479, 1479], "valid"], [[1480, 1487], "disallowed"], [[1488, 1514], "valid"], [[1515, 1519], "disallowed"], [[1520, 1524], "valid"], [[1525, 1535], "disallowed"], [[1536, 1539], "disallowed"], [[1540, 1540], "disallowed"], [[1541, 1541], "disallowed"], [[1542, 1546], "valid", [], "NV8"], [[1547, 1547], "valid", [], "NV8"], [[1548, 1548], "valid", [], "NV8"], [[1549, 1551], "valid", [], "NV8"], [[1552, 1557], "valid"], [[1558, 1562], "valid"], [[1563, 1563], "valid", [], "NV8"], [[1564, 1564], "disallowed"], [[1565, 1565], "disallowed"], [[1566, 1566], "valid", [], "NV8"], [[1567, 1567], "valid", [], "NV8"], [[1568, 1568], "valid"], [[1569, 1594], "valid"], [[1595, 1599], "valid"], [[1600, 1600], "valid", [], "NV8"], [[1601, 1618], "valid"], [[1619, 1621], "valid"], [[1622, 1624], "valid"], [[1625, 1630], "valid"], [[1631, 1631], "valid"], [[1632, 1641], "valid"], [[1642, 1645], "valid", [], "NV8"], [[1646, 1647], "valid"], [[1648, 1652], "valid"], [[1653, 1653], "mapped", [1575, 1652]], [[1654, 1654], "mapped", [1608, 1652]], [[1655, 1655], "mapped", [1735, 1652]], [[1656, 1656], "mapped", [1610, 1652]], [[1657, 1719], "valid"], [[1720, 1721], "valid"], [[1722, 1726], "valid"], [[1727, 1727], "valid"], [[1728, 1742], "valid"], [[1743, 1743], "valid"], [[1744, 1747], "valid"], [[1748, 1748], "valid", [], "NV8"], [[1749, 1756], "valid"], [[1757, 1757], "disallowed"], [[1758, 1758], "valid", [], "NV8"], [[1759, 1768], "valid"], [[1769, 1769], "valid", [], "NV8"], [[1770, 1773], "valid"], [[1774, 1775], "valid"], [[1776, 1785], "valid"], [[1786, 1790], "valid"], [[1791, 1791], "valid"], [[1792, 1805], "valid", [], "NV8"], [[1806, 1806], "disallowed"], [[1807, 1807], "disallowed"], [[1808, 1836], "valid"], [[1837, 1839], "valid"], [[1840, 1866], "valid"], [[1867, 1868], "disallowed"], [[1869, 1871], "valid"], [[1872, 1901], "valid"], [[1902, 1919], "valid"], [[1920, 1968], "valid"], [[1969, 1969], "valid"], [[1970, 1983], "disallowed"], [[1984, 2037], "valid"], [[2038, 2042], "valid", [], "NV8"], [[2043, 2047], "disallowed"], [[2048, 2093], "valid"], [[2094, 2095], "disallowed"], [[2096, 2110], "valid", [], "NV8"], [[2111, 2111], "disallowed"], [[2112, 2139], "valid"], [[2140, 2141], "disallowed"], [[2142, 2142], "valid", [], "NV8"], [[2143, 2207], "disallowed"], [[2208, 2208], "valid"], [[2209, 2209], "valid"], [[2210, 2220], "valid"], [[2221, 2226], "valid"], [[2227, 2228], "valid"], [[2229, 2274], "disallowed"], [[2275, 2275], "valid"], [[2276, 2302], "valid"], [[2303, 2303], "valid"], [[2304, 2304], "valid"], [[2305, 2307], "valid"], [[2308, 2308], "valid"], [[2309, 2361], "valid"], [[2362, 2363], "valid"], [[2364, 2381], "valid"], [[2382, 2382], "valid"], [[2383, 2383], "valid"], [[2384, 2388], "valid"], [[2389, 2389], "valid"], [[2390, 2391], "valid"], [[2392, 2392], "mapped", [2325, 2364]], [[2393, 2393], "mapped", [2326, 2364]], [[2394, 2394], "mapped", [2327, 2364]], [[2395, 2395], "mapped", [2332, 2364]], [[2396, 2396], "mapped", [2337, 2364]], [[2397, 2397], "mapped", [2338, 2364]], [[2398, 2398], "mapped", [2347, 2364]], [[2399, 2399], "mapped", [2351, 2364]], [[2400, 2403], "valid"], [[2404, 2405], "valid", [], "NV8"], [[2406, 2415], "valid"], [[2416, 2416], "valid", [], "NV8"], [[2417, 2418], "valid"], [[2419, 2423], "valid"], [[2424, 2424], "valid"], [[2425, 2426], "valid"], [[2427, 2428], "valid"], [[2429, 2429], "valid"], [[2430, 2431], "valid"], [[2432, 2432], "valid"], [[2433, 2435], "valid"], [[2436, 2436], "disallowed"], [[2437, 2444], "valid"], [[2445, 2446], "disallowed"], [[2447, 2448], "valid"], [[2449, 2450], "disallowed"], [[2451, 2472], "valid"], [[2473, 2473], "disallowed"], [[2474, 2480], "valid"], [[2481, 2481], "disallowed"], [[2482, 2482], "valid"], [[2483, 2485], "disallowed"], [[2486, 2489], "valid"], [[2490, 2491], "disallowed"], [[2492, 2492], "valid"], [[2493, 2493], "valid"], [[2494, 2500], "valid"], [[2501, 2502], "disallowed"], [[2503, 2504], "valid"], [[2505, 2506], "disallowed"], [[2507, 2509], "valid"], [[2510, 2510], "valid"], [[2511, 2518], "disallowed"], [[2519, 2519], "valid"], [[2520, 2523], "disallowed"], [[2524, 2524], "mapped", [2465, 2492]], [[2525, 2525], "mapped", [2466, 2492]], [[2526, 2526], "disallowed"], [[2527, 2527], "mapped", [2479, 2492]], [[2528, 2531], "valid"], [[2532, 2533], "disallowed"], [[2534, 2545], "valid"], [[2546, 2554], "valid", [], "NV8"], [[2555, 2555], "valid", [], "NV8"], [[2556, 2560], "disallowed"], [[2561, 2561], "valid"], [[2562, 2562], "valid"], [[2563, 2563], "valid"], [[2564, 2564], "disallowed"], [[2565, 2570], "valid"], [[2571, 2574], "disallowed"], [[2575, 2576], "valid"], [[2577, 2578], "disallowed"], [[2579, 2600], "valid"], [[2601, 2601], "disallowed"], [[2602, 2608], "valid"], [[2609, 2609], "disallowed"], [[2610, 2610], "valid"], [[2611, 2611], "mapped", [2610, 2620]], [[2612, 2612], "disallowed"], [[2613, 2613], "valid"], [[2614, 2614], "mapped", [2616, 2620]], [[2615, 2615], "disallowed"], [[2616, 2617], "valid"], [[2618, 2619], "disallowed"], [[2620, 2620], "valid"], [[2621, 2621], "disallowed"], [[2622, 2626], "valid"], [[2627, 2630], "disallowed"], [[2631, 2632], "valid"], [[2633, 2634], "disallowed"], [[2635, 2637], "valid"], [[2638, 2640], "disallowed"], [[2641, 2641], "valid"], [[2642, 2648], "disallowed"], [[2649, 2649], "mapped", [2582, 2620]], [[2650, 2650], "mapped", [2583, 2620]], [[2651, 2651], "mapped", [2588, 2620]], [[2652, 2652], "valid"], [[2653, 2653], "disallowed"], [[2654, 2654], "mapped", [2603, 2620]], [[2655, 2661], "disallowed"], [[2662, 2676], "valid"], [[2677, 2677], "valid"], [[2678, 2688], "disallowed"], [[2689, 2691], "valid"], [[2692, 2692], "disallowed"], [[2693, 2699], "valid"], [[2700, 2700], "valid"], [[2701, 2701], "valid"], [[2702, 2702], "disallowed"], [[2703, 2705], "valid"], [[2706, 2706], "disallowed"], [[2707, 2728], "valid"], [[2729, 2729], "disallowed"], [[2730, 2736], "valid"], [[2737, 2737], "disallowed"], [[2738, 2739], "valid"], [[2740, 2740], "disallowed"], [[2741, 2745], "valid"], [[2746, 2747], "disallowed"], [[2748, 2757], "valid"], [[2758, 2758], "disallowed"], [[2759, 2761], "valid"], [[2762, 2762], "disallowed"], [[2763, 2765], "valid"], [[2766, 2767], "disallowed"], [[2768, 2768], "valid"], [[2769, 2783], "disallowed"], [[2784, 2784], "valid"], [[2785, 2787], "valid"], [[2788, 2789], "disallowed"], [[2790, 2799], "valid"], [[2800, 2800], "valid", [], "NV8"], [[2801, 2801], "valid", [], "NV8"], [[2802, 2808], "disallowed"], [[2809, 2809], "valid"], [[2810, 2816], "disallowed"], [[2817, 2819], "valid"], [[2820, 2820], "disallowed"], [[2821, 2828], "valid"], [[2829, 2830], "disallowed"], [[2831, 2832], "valid"], [[2833, 2834], "disallowed"], [[2835, 2856], "valid"], [[2857, 2857], "disallowed"], [[2858, 2864], "valid"], [[2865, 2865], "disallowed"], [[2866, 2867], "valid"], [[2868, 2868], "disallowed"], [[2869, 2869], "valid"], [[2870, 2873], "valid"], [[2874, 2875], "disallowed"], [[2876, 2883], "valid"], [[2884, 2884], "valid"], [[2885, 2886], "disallowed"], [[2887, 2888], "valid"], [[2889, 2890], "disallowed"], [[2891, 2893], "valid"], [[2894, 2901], "disallowed"], [[2902, 2903], "valid"], [[2904, 2907], "disallowed"], [[2908, 2908], "mapped", [2849, 2876]], [[2909, 2909], "mapped", [2850, 2876]], [[2910, 2910], "disallowed"], [[2911, 2913], "valid"], [[2914, 2915], "valid"], [[2916, 2917], "disallowed"], [[2918, 2927], "valid"], [[2928, 2928], "valid", [], "NV8"], [[2929, 2929], "valid"], [[2930, 2935], "valid", [], "NV8"], [[2936, 2945], "disallowed"], [[2946, 2947], "valid"], [[2948, 2948], "disallowed"], [[2949, 2954], "valid"], [[2955, 2957], "disallowed"], [[2958, 2960], "valid"], [[2961, 2961], "disallowed"], [[2962, 2965], "valid"], [[2966, 2968], "disallowed"], [[2969, 2970], "valid"], [[2971, 2971], "disallowed"], [[2972, 2972], "valid"], [[2973, 2973], "disallowed"], [[2974, 2975], "valid"], [[2976, 2978], "disallowed"], [[2979, 2980], "valid"], [[2981, 2983], "disallowed"], [[2984, 2986], "valid"], [[2987, 2989], "disallowed"], [[2990, 2997], "valid"], [[2998, 2998], "valid"], [[2999, 3001], "valid"], [[3002, 3005], "disallowed"], [[3006, 3010], "valid"], [[3011, 3013], "disallowed"], [[3014, 3016], "valid"], [[3017, 3017], "disallowed"], [[3018, 3021], "valid"], [[3022, 3023], "disallowed"], [[3024, 3024], "valid"], [[3025, 3030], "disallowed"], [[3031, 3031], "valid"], [[3032, 3045], "disallowed"], [[3046, 3046], "valid"], [[3047, 3055], "valid"], [[3056, 3058], "valid", [], "NV8"], [[3059, 3066], "valid", [], "NV8"], [[3067, 3071], "disallowed"], [[3072, 3072], "valid"], [[3073, 3075], "valid"], [[3076, 3076], "disallowed"], [[3077, 3084], "valid"], [[3085, 3085], "disallowed"], [[3086, 3088], "valid"], [[3089, 3089], "disallowed"], [[3090, 3112], "valid"], [[3113, 3113], "disallowed"], [[3114, 3123], "valid"], [[3124, 3124], "valid"], [[3125, 3129], "valid"], [[3130, 3132], "disallowed"], [[3133, 3133], "valid"], [[3134, 3140], "valid"], [[3141, 3141], "disallowed"], [[3142, 3144], "valid"], [[3145, 3145], "disallowed"], [[3146, 3149], "valid"], [[3150, 3156], "disallowed"], [[3157, 3158], "valid"], [[3159, 3159], "disallowed"], [[3160, 3161], "valid"], [[3162, 3162], "valid"], [[3163, 3167], "disallowed"], [[3168, 3169], "valid"], [[3170, 3171], "valid"], [[3172, 3173], "disallowed"], [[3174, 3183], "valid"], [[3184, 3191], "disallowed"], [[3192, 3199], "valid", [], "NV8"], [[3200, 3200], "disallowed"], [[3201, 3201], "valid"], [[3202, 3203], "valid"], [[3204, 3204], "disallowed"], [[3205, 3212], "valid"], [[3213, 3213], "disallowed"], [[3214, 3216], "valid"], [[3217, 3217], "disallowed"], [[3218, 3240], "valid"], [[3241, 3241], "disallowed"], [[3242, 3251], "valid"], [[3252, 3252], "disallowed"], [[3253, 3257], "valid"], [[3258, 3259], "disallowed"], [[3260, 3261], "valid"], [[3262, 3268], "valid"], [[3269, 3269], "disallowed"], [[3270, 3272], "valid"], [[3273, 3273], "disallowed"], [[3274, 3277], "valid"], [[3278, 3284], "disallowed"], [[3285, 3286], "valid"], [[3287, 3293], "disallowed"], [[3294, 3294], "valid"], [[3295, 3295], "disallowed"], [[3296, 3297], "valid"], [[3298, 3299], "valid"], [[3300, 3301], "disallowed"], [[3302, 3311], "valid"], [[3312, 3312], "disallowed"], [[3313, 3314], "valid"], [[3315, 3328], "disallowed"], [[3329, 3329], "valid"], [[3330, 3331], "valid"], [[3332, 3332], "disallowed"], [[3333, 3340], "valid"], [[3341, 3341], "disallowed"], [[3342, 3344], "valid"], [[3345, 3345], "disallowed"], [[3346, 3368], "valid"], [[3369, 3369], "valid"], [[3370, 3385], "valid"], [[3386, 3386], "valid"], [[3387, 3388], "disallowed"], [[3389, 3389], "valid"], [[3390, 3395], "valid"], [[3396, 3396], "valid"], [[3397, 3397], "disallowed"], [[3398, 3400], "valid"], [[3401, 3401], "disallowed"], [[3402, 3405], "valid"], [[3406, 3406], "valid"], [[3407, 3414], "disallowed"], [[3415, 3415], "valid"], [[3416, 3422], "disallowed"], [[3423, 3423], "valid"], [[3424, 3425], "valid"], [[3426, 3427], "valid"], [[3428, 3429], "disallowed"], [[3430, 3439], "valid"], [[3440, 3445], "valid", [], "NV8"], [[3446, 3448], "disallowed"], [[3449, 3449], "valid", [], "NV8"], [[3450, 3455], "valid"], [[3456, 3457], "disallowed"], [[3458, 3459], "valid"], [[3460, 3460], "disallowed"], [[3461, 3478], "valid"], [[3479, 3481], "disallowed"], [[3482, 3505], "valid"], [[3506, 3506], "disallowed"], [[3507, 3515], "valid"], [[3516, 3516], "disallowed"], [[3517, 3517], "valid"], [[3518, 3519], "disallowed"], [[3520, 3526], "valid"], [[3527, 3529], "disallowed"], [[3530, 3530], "valid"], [[3531, 3534], "disallowed"], [[3535, 3540], "valid"], [[3541, 3541], "disallowed"], [[3542, 3542], "valid"], [[3543, 3543], "disallowed"], [[3544, 3551], "valid"], [[3552, 3557], "disallowed"], [[3558, 3567], "valid"], [[3568, 3569], "disallowed"], [[3570, 3571], "valid"], [[3572, 3572], "valid", [], "NV8"], [[3573, 3584], "disallowed"], [[3585, 3634], "valid"], [[3635, 3635], "mapped", [3661, 3634]], [[3636, 3642], "valid"], [[3643, 3646], "disallowed"], [[3647, 3647], "valid", [], "NV8"], [[3648, 3662], "valid"], [[3663, 3663], "valid", [], "NV8"], [[3664, 3673], "valid"], [[3674, 3675], "valid", [], "NV8"], [[3676, 3712], "disallowed"], [[3713, 3714], "valid"], [[3715, 3715], "disallowed"], [[3716, 3716], "valid"], [[3717, 3718], "disallowed"], [[3719, 3720], "valid"], [[3721, 3721], "disallowed"], [[3722, 3722], "valid"], [[3723, 3724], "disallowed"], [[3725, 3725], "valid"], [[3726, 3731], "disallowed"], [[3732, 3735], "valid"], [[3736, 3736], "disallowed"], [[3737, 3743], "valid"], [[3744, 3744], "disallowed"], [[3745, 3747], "valid"], [[3748, 3748], "disallowed"], [[3749, 3749], "valid"], [[3750, 3750], "disallowed"], [[3751, 3751], "valid"], [[3752, 3753], "disallowed"], [[3754, 3755], "valid"], [[3756, 3756], "disallowed"], [[3757, 3762], "valid"], [[3763, 3763], "mapped", [3789, 3762]], [[3764, 3769], "valid"], [[3770, 3770], "disallowed"], [[3771, 3773], "valid"], [[3774, 3775], "disallowed"], [[3776, 3780], "valid"], [[3781, 3781], "disallowed"], [[3782, 3782], "valid"], [[3783, 3783], "disallowed"], [[3784, 3789], "valid"], [[3790, 3791], "disallowed"], [[3792, 3801], "valid"], [[3802, 3803], "disallowed"], [[3804, 3804], "mapped", [3755, 3737]], [[3805, 3805], "mapped", [3755, 3745]], [[3806, 3807], "valid"], [[3808, 3839], "disallowed"], [[3840, 3840], "valid"], [[3841, 3850], "valid", [], "NV8"], [[3851, 3851], "valid"], [[3852, 3852], "mapped", [3851]], [[3853, 3863], "valid", [], "NV8"], [[3864, 3865], "valid"], [[3866, 3871], "valid", [], "NV8"], [[3872, 3881], "valid"], [[3882, 3892], "valid", [], "NV8"], [[3893, 3893], "valid"], [[3894, 3894], "valid", [], "NV8"], [[3895, 3895], "valid"], [[3896, 3896], "valid", [], "NV8"], [[3897, 3897], "valid"], [[3898, 3901], "valid", [], "NV8"], [[3902, 3906], "valid"], [[3907, 3907], "mapped", [3906, 4023]], [[3908, 3911], "valid"], [[3912, 3912], "disallowed"], [[3913, 3916], "valid"], [[3917, 3917], "mapped", [3916, 4023]], [[3918, 3921], "valid"], [[3922, 3922], "mapped", [3921, 4023]], [[3923, 3926], "valid"], [[3927, 3927], "mapped", [3926, 4023]], [[3928, 3931], "valid"], [[3932, 3932], "mapped", [3931, 4023]], [[3933, 3944], "valid"], [[3945, 3945], "mapped", [3904, 4021]], [[3946, 3946], "valid"], [[3947, 3948], "valid"], [[3949, 3952], "disallowed"], [[3953, 3954], "valid"], [[3955, 3955], "mapped", [3953, 3954]], [[3956, 3956], "valid"], [[3957, 3957], "mapped", [3953, 3956]], [[3958, 3958], "mapped", [4018, 3968]], [[3959, 3959], "mapped", [4018, 3953, 3968]], [[3960, 3960], "mapped", [4019, 3968]], [[3961, 3961], "mapped", [4019, 3953, 3968]], [[3962, 3968], "valid"], [[3969, 3969], "mapped", [3953, 3968]], [[3970, 3972], "valid"], [[3973, 3973], "valid", [], "NV8"], [[3974, 3979], "valid"], [[3980, 3983], "valid"], [[3984, 3986], "valid"], [[3987, 3987], "mapped", [3986, 4023]], [[3988, 3989], "valid"], [[3990, 3990], "valid"], [[3991, 3991], "valid"], [[3992, 3992], "disallowed"], [[3993, 3996], "valid"], [[3997, 3997], "mapped", [3996, 4023]], [[3998, 4001], "valid"], [[4002, 4002], "mapped", [4001, 4023]], [[4003, 4006], "valid"], [[4007, 4007], "mapped", [4006, 4023]], [[4008, 4011], "valid"], [[4012, 4012], "mapped", [4011, 4023]], [[4013, 4013], "valid"], [[4014, 4016], "valid"], [[4017, 4023], "valid"], [[4024, 4024], "valid"], [[4025, 4025], "mapped", [3984, 4021]], [[4026, 4028], "valid"], [[4029, 4029], "disallowed"], [[4030, 4037], "valid", [], "NV8"], [[4038, 4038], "valid"], [[4039, 4044], "valid", [], "NV8"], [[4045, 4045], "disallowed"], [[4046, 4046], "valid", [], "NV8"], [[4047, 4047], "valid", [], "NV8"], [[4048, 4049], "valid", [], "NV8"], [[4050, 4052], "valid", [], "NV8"], [[4053, 4056], "valid", [], "NV8"], [[4057, 4058], "valid", [], "NV8"], [[4059, 4095], "disallowed"], [[4096, 4129], "valid"], [[4130, 4130], "valid"], [[4131, 4135], "valid"], [[4136, 4136], "valid"], [[4137, 4138], "valid"], [[4139, 4139], "valid"], [[4140, 4146], "valid"], [[4147, 4149], "valid"], [[4150, 4153], "valid"], [[4154, 4159], "valid"], [[4160, 4169], "valid"], [[4170, 4175], "valid", [], "NV8"], [[4176, 4185], "valid"], [[4186, 4249], "valid"], [[4250, 4253], "valid"], [[4254, 4255], "valid", [], "NV8"], [[4256, 4293], "disallowed"], [[4294, 4294], "disallowed"], [[4295, 4295], "mapped", [11559]], [[4296, 4300], "disallowed"], [[4301, 4301], "mapped", [11565]], [[4302, 4303], "disallowed"], [[4304, 4342], "valid"], [[4343, 4344], "valid"], [[4345, 4346], "valid"], [[4347, 4347], "valid", [], "NV8"], [[4348, 4348], "mapped", [4316]], [[4349, 4351], "valid"], [[4352, 4441], "valid", [], "NV8"], [[4442, 4446], "valid", [], "NV8"], [[4447, 4448], "disallowed"], [[4449, 4514], "valid", [], "NV8"], [[4515, 4519], "valid", [], "NV8"], [[4520, 4601], "valid", [], "NV8"], [[4602, 4607], "valid", [], "NV8"], [[4608, 4614], "valid"], [[4615, 4615], "valid"], [[4616, 4678], "valid"], [[4679, 4679], "valid"], [[4680, 4680], "valid"], [[4681, 4681], "disallowed"], [[4682, 4685], "valid"], [[4686, 4687], "disallowed"], [[4688, 4694], "valid"], [[4695, 4695], "disallowed"], [[4696, 4696], "valid"], [[4697, 4697], "disallowed"], [[4698, 4701], "valid"], [[4702, 4703], "disallowed"], [[4704, 4742], "valid"], [[4743, 4743], "valid"], [[4744, 4744], "valid"], [[4745, 4745], "disallowed"], [[4746, 4749], "valid"], [[4750, 4751], "disallowed"], [[4752, 4782], "valid"], [[4783, 4783], "valid"], [[4784, 4784], "valid"], [[4785, 4785], "disallowed"], [[4786, 4789], "valid"], [[4790, 4791], "disallowed"], [[4792, 4798], "valid"], [[4799, 4799], "disallowed"], [[4800, 4800], "valid"], [[4801, 4801], "disallowed"], [[4802, 4805], "valid"], [[4806, 4807], "disallowed"], [[4808, 4814], "valid"], [[4815, 4815], "valid"], [[4816, 4822], "valid"], [[4823, 4823], "disallowed"], [[4824, 4846], "valid"], [[4847, 4847], "valid"], [[4848, 4878], "valid"], [[4879, 4879], "valid"], [[4880, 4880], "valid"], [[4881, 4881], "disallowed"], [[4882, 4885], "valid"], [[4886, 4887], "disallowed"], [[4888, 4894], "valid"], [[4895, 4895], "valid"], [[4896, 4934], "valid"], [[4935, 4935], "valid"], [[4936, 4954], "valid"], [[4955, 4956], "disallowed"], [[4957, 4958], "valid"], [[4959, 4959], "valid"], [[4960, 4960], "valid", [], "NV8"], [[4961, 4988], "valid", [], "NV8"], [[4989, 4991], "disallowed"], [[4992, 5007], "valid"], [[5008, 5017], "valid", [], "NV8"], [[5018, 5023], "disallowed"], [[5024, 5108], "valid"], [[5109, 5109], "valid"], [[5110, 5111], "disallowed"], [[5112, 5112], "mapped", [5104]], [[5113, 5113], "mapped", [5105]], [[5114, 5114], "mapped", [5106]], [[5115, 5115], "mapped", [5107]], [[5116, 5116], "mapped", [5108]], [[5117, 5117], "mapped", [5109]], [[5118, 5119], "disallowed"], [[5120, 5120], "valid", [], "NV8"], [[5121, 5740], "valid"], [[5741, 5742], "valid", [], "NV8"], [[5743, 5750], "valid"], [[5751, 5759], "valid"], [[5760, 5760], "disallowed"], [[5761, 5786], "valid"], [[5787, 5788], "valid", [], "NV8"], [[5789, 5791], "disallowed"], [[5792, 5866], "valid"], [[5867, 5872], "valid", [], "NV8"], [[5873, 5880], "valid"], [[5881, 5887], "disallowed"], [[5888, 5900], "valid"], [[5901, 5901], "disallowed"], [[5902, 5908], "valid"], [[5909, 5919], "disallowed"], [[5920, 5940], "valid"], [[5941, 5942], "valid", [], "NV8"], [[5943, 5951], "disallowed"], [[5952, 5971], "valid"], [[5972, 5983], "disallowed"], [[5984, 5996], "valid"], [[5997, 5997], "disallowed"], [[5998, 6e3], "valid"], [[6001, 6001], "disallowed"], [[6002, 6003], "valid"], [[6004, 6015], "disallowed"], [[6016, 6067], "valid"], [[6068, 6069], "disallowed"], [[6070, 6099], "valid"], [[6100, 6102], "valid", [], "NV8"], [[6103, 6103], "valid"], [[6104, 6107], "valid", [], "NV8"], [[6108, 6108], "valid"], [[6109, 6109], "valid"], [[6110, 6111], "disallowed"], [[6112, 6121], "valid"], [[6122, 6127], "disallowed"], [[6128, 6137], "valid", [], "NV8"], [[6138, 6143], "disallowed"], [[6144, 6149], "valid", [], "NV8"], [[6150, 6150], "disallowed"], [[6151, 6154], "valid", [], "NV8"], [[6155, 6157], "ignored"], [[6158, 6158], "disallowed"], [[6159, 6159], "disallowed"], [[6160, 6169], "valid"], [[6170, 6175], "disallowed"], [[6176, 6263], "valid"], [[6264, 6271], "disallowed"], [[6272, 6313], "valid"], [[6314, 6314], "valid"], [[6315, 6319], "disallowed"], [[6320, 6389], "valid"], [[6390, 6399], "disallowed"], [[6400, 6428], "valid"], [[6429, 6430], "valid"], [[6431, 6431], "disallowed"], [[6432, 6443], "valid"], [[6444, 6447], "disallowed"], [[6448, 6459], "valid"], [[6460, 6463], "disallowed"], [[6464, 6464], "valid", [], "NV8"], [[6465, 6467], "disallowed"], [[6468, 6469], "valid", [], "NV8"], [[6470, 6509], "valid"], [[6510, 6511], "disallowed"], [[6512, 6516], "valid"], [[6517, 6527], "disallowed"], [[6528, 6569], "valid"], [[6570, 6571], "valid"], [[6572, 6575], "disallowed"], [[6576, 6601], "valid"], [[6602, 6607], "disallowed"], [[6608, 6617], "valid"], [[6618, 6618], "valid", [], "XV8"], [[6619, 6621], "disallowed"], [[6622, 6623], "valid", [], "NV8"], [[6624, 6655], "valid", [], "NV8"], [[6656, 6683], "valid"], [[6684, 6685], "disallowed"], [[6686, 6687], "valid", [], "NV8"], [[6688, 6750], "valid"], [[6751, 6751], "disallowed"], [[6752, 6780], "valid"], [[6781, 6782], "disallowed"], [[6783, 6793], "valid"], [[6794, 6799], "disallowed"], [[6800, 6809], "valid"], [[6810, 6815], "disallowed"], [[6816, 6822], "valid", [], "NV8"], [[6823, 6823], "valid"], [[6824, 6829], "valid", [], "NV8"], [[6830, 6831], "disallowed"], [[6832, 6845], "valid"], [[6846, 6846], "valid", [], "NV8"], [[6847, 6911], "disallowed"], [[6912, 6987], "valid"], [[6988, 6991], "disallowed"], [[6992, 7001], "valid"], [[7002, 7018], "valid", [], "NV8"], [[7019, 7027], "valid"], [[7028, 7036], "valid", [], "NV8"], [[7037, 7039], "disallowed"], [[7040, 7082], "valid"], [[7083, 7085], "valid"], [[7086, 7097], "valid"], [[7098, 7103], "valid"], [[7104, 7155], "valid"], [[7156, 7163], "disallowed"], [[7164, 7167], "valid", [], "NV8"], [[7168, 7223], "valid"], [[7224, 7226], "disallowed"], [[7227, 7231], "valid", [], "NV8"], [[7232, 7241], "valid"], [[7242, 7244], "disallowed"], [[7245, 7293], "valid"], [[7294, 7295], "valid", [], "NV8"], [[7296, 7359], "disallowed"], [[7360, 7367], "valid", [], "NV8"], [[7368, 7375], "disallowed"], [[7376, 7378], "valid"], [[7379, 7379], "valid", [], "NV8"], [[7380, 7410], "valid"], [[7411, 7414], "valid"], [[7415, 7415], "disallowed"], [[7416, 7417], "valid"], [[7418, 7423], "disallowed"], [[7424, 7467], "valid"], [[7468, 7468], "mapped", [97]], [[7469, 7469], "mapped", [230]], [[7470, 7470], "mapped", [98]], [[7471, 7471], "valid"], [[7472, 7472], "mapped", [100]], [[7473, 7473], "mapped", [101]], [[7474, 7474], "mapped", [477]], [[7475, 7475], "mapped", [103]], [[7476, 7476], "mapped", [104]], [[7477, 7477], "mapped", [105]], [[7478, 7478], "mapped", [106]], [[7479, 7479], "mapped", [107]], [[7480, 7480], "mapped", [108]], [[7481, 7481], "mapped", [109]], [[7482, 7482], "mapped", [110]], [[7483, 7483], "valid"], [[7484, 7484], "mapped", [111]], [[7485, 7485], "mapped", [547]], [[7486, 7486], "mapped", [112]], [[7487, 7487], "mapped", [114]], [[7488, 7488], "mapped", [116]], [[7489, 7489], "mapped", [117]], [[7490, 7490], "mapped", [119]], [[7491, 7491], "mapped", [97]], [[7492, 7492], "mapped", [592]], [[7493, 7493], "mapped", [593]], [[7494, 7494], "mapped", [7426]], [[7495, 7495], "mapped", [98]], [[7496, 7496], "mapped", [100]], [[7497, 7497], "mapped", [101]], [[7498, 7498], "mapped", [601]], [[7499, 7499], "mapped", [603]], [[7500, 7500], "mapped", [604]], [[7501, 7501], "mapped", [103]], [[7502, 7502], "valid"], [[7503, 7503], "mapped", [107]], [[7504, 7504], "mapped", [109]], [[7505, 7505], "mapped", [331]], [[7506, 7506], "mapped", [111]], [[7507, 7507], "mapped", [596]], [[7508, 7508], "mapped", [7446]], [[7509, 7509], "mapped", [7447]], [[7510, 7510], "mapped", [112]], [[7511, 7511], "mapped", [116]], [[7512, 7512], "mapped", [117]], [[7513, 7513], "mapped", [7453]], [[7514, 7514], "mapped", [623]], [[7515, 7515], "mapped", [118]], [[7516, 7516], "mapped", [7461]], [[7517, 7517], "mapped", [946]], [[7518, 7518], "mapped", [947]], [[7519, 7519], "mapped", [948]], [[7520, 7520], "mapped", [966]], [[7521, 7521], "mapped", [967]], [[7522, 7522], "mapped", [105]], [[7523, 7523], "mapped", [114]], [[7524, 7524], "mapped", [117]], [[7525, 7525], "mapped", [118]], [[7526, 7526], "mapped", [946]], [[7527, 7527], "mapped", [947]], [[7528, 7528], "mapped", [961]], [[7529, 7529], "mapped", [966]], [[7530, 7530], "mapped", [967]], [[7531, 7531], "valid"], [[7532, 7543], "valid"], [[7544, 7544], "mapped", [1085]], [[7545, 7578], "valid"], [[7579, 7579], "mapped", [594]], [[7580, 7580], "mapped", [99]], [[7581, 7581], "mapped", [597]], [[7582, 7582], "mapped", [240]], [[7583, 7583], "mapped", [604]], [[7584, 7584], "mapped", [102]], [[7585, 7585], "mapped", [607]], [[7586, 7586], "mapped", [609]], [[7587, 7587], "mapped", [613]], [[7588, 7588], "mapped", [616]], [[7589, 7589], "mapped", [617]], [[7590, 7590], "mapped", [618]], [[7591, 7591], "mapped", [7547]], [[7592, 7592], "mapped", [669]], [[7593, 7593], "mapped", [621]], [[7594, 7594], "mapped", [7557]], [[7595, 7595], "mapped", [671]], [[7596, 7596], "mapped", [625]], [[7597, 7597], "mapped", [624]], [[7598, 7598], "mapped", [626]], [[7599, 7599], "mapped", [627]], [[7600, 7600], "mapped", [628]], [[7601, 7601], "mapped", [629]], [[7602, 7602], "mapped", [632]], [[7603, 7603], "mapped", [642]], [[7604, 7604], "mapped", [643]], [[7605, 7605], "mapped", [427]], [[7606, 7606], "mapped", [649]], [[7607, 7607], "mapped", [650]], [[7608, 7608], "mapped", [7452]], [[7609, 7609], "mapped", [651]], [[7610, 7610], "mapped", [652]], [[7611, 7611], "mapped", [122]], [[7612, 7612], "mapped", [656]], [[7613, 7613], "mapped", [657]], [[7614, 7614], "mapped", [658]], [[7615, 7615], "mapped", [952]], [[7616, 7619], "valid"], [[7620, 7626], "valid"], [[7627, 7654], "valid"], [[7655, 7669], "valid"], [[7670, 7675], "disallowed"], [[7676, 7676], "valid"], [[7677, 7677], "valid"], [[7678, 7679], "valid"], [[7680, 7680], "mapped", [7681]], [[7681, 7681], "valid"], [[7682, 7682], "mapped", [7683]], [[7683, 7683], "valid"], [[7684, 7684], "mapped", [7685]], [[7685, 7685], "valid"], [[7686, 7686], "mapped", [7687]], [[7687, 7687], "valid"], [[7688, 7688], "mapped", [7689]], [[7689, 7689], "valid"], [[7690, 7690], "mapped", [7691]], [[7691, 7691], "valid"], [[7692, 7692], "mapped", [7693]], [[7693, 7693], "valid"], [[7694, 7694], "mapped", [7695]], [[7695, 7695], "valid"], [[7696, 7696], "mapped", [7697]], [[7697, 7697], "valid"], [[7698, 7698], "mapped", [7699]], [[7699, 7699], "valid"], [[7700, 7700], "mapped", [7701]], [[7701, 7701], "valid"], [[7702, 7702], "mapped", [7703]], [[7703, 7703], "valid"], [[7704, 7704], "mapped", [7705]], [[7705, 7705], "valid"], [[7706, 7706], "mapped", [7707]], [[7707, 7707], "valid"], [[7708, 7708], "mapped", [7709]], [[7709, 7709], "valid"], [[7710, 7710], "mapped", [7711]], [[7711, 7711], "valid"], [[7712, 7712], "mapped", [7713]], [[7713, 7713], "valid"], [[7714, 7714], "mapped", [7715]], [[7715, 7715], "valid"], [[7716, 7716], "mapped", [7717]], [[7717, 7717], "valid"], [[7718, 7718], "mapped", [7719]], [[7719, 7719], "valid"], [[7720, 7720], "mapped", [7721]], [[7721, 7721], "valid"], [[7722, 7722], "mapped", [7723]], [[7723, 7723], "valid"], [[7724, 7724], "mapped", [7725]], [[7725, 7725], "valid"], [[7726, 7726], "mapped", [7727]], [[7727, 7727], "valid"], [[7728, 7728], "mapped", [7729]], [[7729, 7729], "valid"], [[7730, 7730], "mapped", [7731]], [[7731, 7731], "valid"], [[7732, 7732], "mapped", [7733]], [[7733, 7733], "valid"], [[7734, 7734], "mapped", [7735]], [[7735, 7735], "valid"], [[7736, 7736], "mapped", [7737]], [[7737, 7737], "valid"], [[7738, 7738], "mapped", [7739]], [[7739, 7739], "valid"], [[7740, 7740], "mapped", [7741]], [[7741, 7741], "valid"], [[7742, 7742], "mapped", [7743]], [[7743, 7743], "valid"], [[7744, 7744], "mapped", [7745]], [[7745, 7745], "valid"], [[7746, 7746], "mapped", [7747]], [[7747, 7747], "valid"], [[7748, 7748], "mapped", [7749]], [[7749, 7749], "valid"], [[7750, 7750], "mapped", [7751]], [[7751, 7751], "valid"], [[7752, 7752], "mapped", [7753]], [[7753, 7753], "valid"], [[7754, 7754], "mapped", [7755]], [[7755, 7755], "valid"], [[7756, 7756], "mapped", [7757]], [[7757, 7757], "valid"], [[7758, 7758], "mapped", [7759]], [[7759, 7759], "valid"], [[7760, 7760], "mapped", [7761]], [[7761, 7761], "valid"], [[7762, 7762], "mapped", [7763]], [[7763, 7763], "valid"], [[7764, 7764], "mapped", [7765]], [[7765, 7765], "valid"], [[7766, 7766], "mapped", [7767]], [[7767, 7767], "valid"], [[7768, 7768], "mapped", [7769]], [[7769, 7769], "valid"], [[7770, 7770], "mapped", [7771]], [[7771, 7771], "valid"], [[7772, 7772], "mapped", [7773]], [[7773, 7773], "valid"], [[7774, 7774], "mapped", [7775]], [[7775, 7775], "valid"], [[7776, 7776], "mapped", [7777]], [[7777, 7777], "valid"], [[7778, 7778], "mapped", [7779]], [[7779, 7779], "valid"], [[7780, 7780], "mapped", [7781]], [[7781, 7781], "valid"], [[7782, 7782], "mapped", [7783]], [[7783, 7783], "valid"], [[7784, 7784], "mapped", [7785]], [[7785, 7785], "valid"], [[7786, 7786], "mapped", [7787]], [[7787, 7787], "valid"], [[7788, 7788], "mapped", [7789]], [[7789, 7789], "valid"], [[7790, 7790], "mapped", [7791]], [[7791, 7791], "valid"], [[7792, 7792], "mapped", [7793]], [[7793, 7793], "valid"], [[7794, 7794], "mapped", [7795]], [[7795, 7795], "valid"], [[7796, 7796], "mapped", [7797]], [[7797, 7797], "valid"], [[7798, 7798], "mapped", [7799]], [[7799, 7799], "valid"], [[7800, 7800], "mapped", [7801]], [[7801, 7801], "valid"], [[7802, 7802], "mapped", [7803]], [[7803, 7803], "valid"], [[7804, 7804], "mapped", [7805]], [[7805, 7805], "valid"], [[7806, 7806], "mapped", [7807]], [[7807, 7807], "valid"], [[7808, 7808], "mapped", [7809]], [[7809, 7809], "valid"], [[7810, 7810], "mapped", [7811]], [[7811, 7811], "valid"], [[7812, 7812], "mapped", [7813]], [[7813, 7813], "valid"], [[7814, 7814], "mapped", [7815]], [[7815, 7815], "valid"], [[7816, 7816], "mapped", [7817]], [[7817, 7817], "valid"], [[7818, 7818], "mapped", [7819]], [[7819, 7819], "valid"], [[7820, 7820], "mapped", [7821]], [[7821, 7821], "valid"], [[7822, 7822], "mapped", [7823]], [[7823, 7823], "valid"], [[7824, 7824], "mapped", [7825]], [[7825, 7825], "valid"], [[7826, 7826], "mapped", [7827]], [[7827, 7827], "valid"], [[7828, 7828], "mapped", [7829]], [[7829, 7833], "valid"], [[7834, 7834], "mapped", [97, 702]], [[7835, 7835], "mapped", [7777]], [[7836, 7837], "valid"], [[7838, 7838], "mapped", [115, 115]], [[7839, 7839], "valid"], [[7840, 7840], "mapped", [7841]], [[7841, 7841], "valid"], [[7842, 7842], "mapped", [7843]], [[7843, 7843], "valid"], [[7844, 7844], "mapped", [7845]], [[7845, 7845], "valid"], [[7846, 7846], "mapped", [7847]], [[7847, 7847], "valid"], [[7848, 7848], "mapped", [7849]], [[7849, 7849], "valid"], [[7850, 7850], "mapped", [7851]], [[7851, 7851], "valid"], [[7852, 7852], "mapped", [7853]], [[7853, 7853], "valid"], [[7854, 7854], "mapped", [7855]], [[7855, 7855], "valid"], [[7856, 7856], "mapped", [7857]], [[7857, 7857], "valid"], [[7858, 7858], "mapped", [7859]], [[7859, 7859], "valid"], [[7860, 7860], "mapped", [7861]], [[7861, 7861], "valid"], [[7862, 7862], "mapped", [7863]], [[7863, 7863], "valid"], [[7864, 7864], "mapped", [7865]], [[7865, 7865], "valid"], [[7866, 7866], "mapped", [7867]], [[7867, 7867], "valid"], [[7868, 7868], "mapped", [7869]], [[7869, 7869], "valid"], [[7870, 7870], "mapped", [7871]], [[7871, 7871], "valid"], [[7872, 7872], "mapped", [7873]], [[7873, 7873], "valid"], [[7874, 7874], "mapped", [7875]], [[7875, 7875], "valid"], [[7876, 7876], "mapped", [7877]], [[7877, 7877], "valid"], [[7878, 7878], "mapped", [7879]], [[7879, 7879], "valid"], [[7880, 7880], "mapped", [7881]], [[7881, 7881], "valid"], [[7882, 7882], "mapped", [7883]], [[7883, 7883], "valid"], [[7884, 7884], "mapped", [7885]], [[7885, 7885], "valid"], [[7886, 7886], "mapped", [7887]], [[7887, 7887], "valid"], [[7888, 7888], "mapped", [7889]], [[7889, 7889], "valid"], [[7890, 7890], "mapped", [7891]], [[7891, 7891], "valid"], [[7892, 7892], "mapped", [7893]], [[7893, 7893], "valid"], [[7894, 7894], "mapped", [7895]], [[7895, 7895], "valid"], [[7896, 7896], "mapped", [7897]], [[7897, 7897], "valid"], [[7898, 7898], "mapped", [7899]], [[7899, 7899], "valid"], [[7900, 7900], "mapped", [7901]], [[7901, 7901], "valid"], [[7902, 7902], "mapped", [7903]], [[7903, 7903], "valid"], [[7904, 7904], "mapped", [7905]], [[7905, 7905], "valid"], [[7906, 7906], "mapped", [7907]], [[7907, 7907], "valid"], [[7908, 7908], "mapped", [7909]], [[7909, 7909], "valid"], [[7910, 7910], "mapped", [7911]], [[7911, 7911], "valid"], [[7912, 7912], "mapped", [7913]], [[7913, 7913], "valid"], [[7914, 7914], "mapped", [7915]], [[7915, 7915], "valid"], [[7916, 7916], "mapped", [7917]], [[7917, 7917], "valid"], [[7918, 7918], "mapped", [7919]], [[7919, 7919], "valid"], [[7920, 7920], "mapped", [7921]], [[7921, 7921], "valid"], [[7922, 7922], "mapped", [7923]], [[7923, 7923], "valid"], [[7924, 7924], "mapped", [7925]], [[7925, 7925], "valid"], [[7926, 7926], "mapped", [7927]], [[7927, 7927], "valid"], [[7928, 7928], "mapped", [7929]], [[7929, 7929], "valid"], [[7930, 7930], "mapped", [7931]], [[7931, 7931], "valid"], [[7932, 7932], "mapped", [7933]], [[7933, 7933], "valid"], [[7934, 7934], "mapped", [7935]], [[7935, 7935], "valid"], [[7936, 7943], "valid"], [[7944, 7944], "mapped", [7936]], [[7945, 7945], "mapped", [7937]], [[7946, 7946], "mapped", [7938]], [[7947, 7947], "mapped", [7939]], [[7948, 7948], "mapped", [7940]], [[7949, 7949], "mapped", [7941]], [[7950, 7950], "mapped", [7942]], [[7951, 7951], "mapped", [7943]], [[7952, 7957], "valid"], [[7958, 7959], "disallowed"], [[7960, 7960], "mapped", [7952]], [[7961, 7961], "mapped", [7953]], [[7962, 7962], "mapped", [7954]], [[7963, 7963], "mapped", [7955]], [[7964, 7964], "mapped", [7956]], [[7965, 7965], "mapped", [7957]], [[7966, 7967], "disallowed"], [[7968, 7975], "valid"], [[7976, 7976], "mapped", [7968]], [[7977, 7977], "mapped", [7969]], [[7978, 7978], "mapped", [7970]], [[7979, 7979], "mapped", [7971]], [[7980, 7980], "mapped", [7972]], [[7981, 7981], "mapped", [7973]], [[7982, 7982], "mapped", [7974]], [[7983, 7983], "mapped", [7975]], [[7984, 7991], "valid"], [[7992, 7992], "mapped", [7984]], [[7993, 7993], "mapped", [7985]], [[7994, 7994], "mapped", [7986]], [[7995, 7995], "mapped", [7987]], [[7996, 7996], "mapped", [7988]], [[7997, 7997], "mapped", [7989]], [[7998, 7998], "mapped", [7990]], [[7999, 7999], "mapped", [7991]], [[8e3, 8005], "valid"], [[8006, 8007], "disallowed"], [[8008, 8008], "mapped", [8e3]], [[8009, 8009], "mapped", [8001]], [[8010, 8010], "mapped", [8002]], [[8011, 8011], "mapped", [8003]], [[8012, 8012], "mapped", [8004]], [[8013, 8013], "mapped", [8005]], [[8014, 8015], "disallowed"], [[8016, 8023], "valid"], [[8024, 8024], "disallowed"], [[8025, 8025], "mapped", [8017]], [[8026, 8026], "disallowed"], [[8027, 8027], "mapped", [8019]], [[8028, 8028], "disallowed"], [[8029, 8029], "mapped", [8021]], [[8030, 8030], "disallowed"], [[8031, 8031], "mapped", [8023]], [[8032, 8039], "valid"], [[8040, 8040], "mapped", [8032]], [[8041, 8041], "mapped", [8033]], [[8042, 8042], "mapped", [8034]], [[8043, 8043], "mapped", [8035]], [[8044, 8044], "mapped", [8036]], [[8045, 8045], "mapped", [8037]], [[8046, 8046], "mapped", [8038]], [[8047, 8047], "mapped", [8039]], [[8048, 8048], "valid"], [[8049, 8049], "mapped", [940]], [[8050, 8050], "valid"], [[8051, 8051], "mapped", [941]], [[8052, 8052], "valid"], [[8053, 8053], "mapped", [942]], [[8054, 8054], "valid"], [[8055, 8055], "mapped", [943]], [[8056, 8056], "valid"], [[8057, 8057], "mapped", [972]], [[8058, 8058], "valid"], [[8059, 8059], "mapped", [973]], [[8060, 8060], "valid"], [[8061, 8061], "mapped", [974]], [[8062, 8063], "disallowed"], [[8064, 8064], "mapped", [7936, 953]], [[8065, 8065], "mapped", [7937, 953]], [[8066, 8066], "mapped", [7938, 953]], [[8067, 8067], "mapped", [7939, 953]], [[8068, 8068], "mapped", [7940, 953]], [[8069, 8069], "mapped", [7941, 953]], [[8070, 8070], "mapped", [7942, 953]], [[8071, 8071], "mapped", [7943, 953]], [[8072, 8072], "mapped", [7936, 953]], [[8073, 8073], "mapped", [7937, 953]], [[8074, 8074], "mapped", [7938, 953]], [[8075, 8075], "mapped", [7939, 953]], [[8076, 8076], "mapped", [7940, 953]], [[8077, 8077], "mapped", [7941, 953]], [[8078, 8078], "mapped", [7942, 953]], [[8079, 8079], "mapped", [7943, 953]], [[8080, 8080], "mapped", [7968, 953]], [[8081, 8081], "mapped", [7969, 953]], [[8082, 8082], "mapped", [7970, 953]], [[8083, 8083], "mapped", [7971, 953]], [[8084, 8084], "mapped", [7972, 953]], [[8085, 8085], "mapped", [7973, 953]], [[8086, 8086], "mapped", [7974, 953]], [[8087, 8087], "mapped", [7975, 953]], [[8088, 8088], "mapped", [7968, 953]], [[8089, 8089], "mapped", [7969, 953]], [[8090, 8090], "mapped", [7970, 953]], [[8091, 8091], "mapped", [7971, 953]], [[8092, 8092], "mapped", [7972, 953]], [[8093, 8093], "mapped", [7973, 953]], [[8094, 8094], "mapped", [7974, 953]], [[8095, 8095], "mapped", [7975, 953]], [[8096, 8096], "mapped", [8032, 953]], [[8097, 8097], "mapped", [8033, 953]], [[8098, 8098], "mapped", [8034, 953]], [[8099, 8099], "mapped", [8035, 953]], [[8100, 8100], "mapped", [8036, 953]], [[8101, 8101], "mapped", [8037, 953]], [[8102, 8102], "mapped", [8038, 953]], [[8103, 8103], "mapped", [8039, 953]], [[8104, 8104], "mapped", [8032, 953]], [[8105, 8105], "mapped", [8033, 953]], [[8106, 8106], "mapped", [8034, 953]], [[8107, 8107], "mapped", [8035, 953]], [[8108, 8108], "mapped", [8036, 953]], [[8109, 8109], "mapped", [8037, 953]], [[8110, 8110], "mapped", [8038, 953]], [[8111, 8111], "mapped", [8039, 953]], [[8112, 8113], "valid"], [[8114, 8114], "mapped", [8048, 953]], [[8115, 8115], "mapped", [945, 953]], [[8116, 8116], "mapped", [940, 953]], [[8117, 8117], "disallowed"], [[8118, 8118], "valid"], [[8119, 8119], "mapped", [8118, 953]], [[8120, 8120], "mapped", [8112]], [[8121, 8121], "mapped", [8113]], [[8122, 8122], "mapped", [8048]], [[8123, 8123], "mapped", [940]], [[8124, 8124], "mapped", [945, 953]], [[8125, 8125], "disallowed_STD3_mapped", [32, 787]], [[8126, 8126], "mapped", [953]], [[8127, 8127], "disallowed_STD3_mapped", [32, 787]], [[8128, 8128], "disallowed_STD3_mapped", [32, 834]], [[8129, 8129], "disallowed_STD3_mapped", [32, 776, 834]], [[8130, 8130], "mapped", [8052, 953]], [[8131, 8131], "mapped", [951, 953]], [[8132, 8132], "mapped", [942, 953]], [[8133, 8133], "disallowed"], [[8134, 8134], "valid"], [[8135, 8135], "mapped", [8134, 953]], [[8136, 8136], "mapped", [8050]], [[8137, 8137], "mapped", [941]], [[8138, 8138], "mapped", [8052]], [[8139, 8139], "mapped", [942]], [[8140, 8140], "mapped", [951, 953]], [[8141, 8141], "disallowed_STD3_mapped", [32, 787, 768]], [[8142, 8142], "disallowed_STD3_mapped", [32, 787, 769]], [[8143, 8143], "disallowed_STD3_mapped", [32, 787, 834]], [[8144, 8146], "valid"], [[8147, 8147], "mapped", [912]], [[8148, 8149], "disallowed"], [[8150, 8151], "valid"], [[8152, 8152], "mapped", [8144]], [[8153, 8153], "mapped", [8145]], [[8154, 8154], "mapped", [8054]], [[8155, 8155], "mapped", [943]], [[8156, 8156], "disallowed"], [[8157, 8157], "disallowed_STD3_mapped", [32, 788, 768]], [[8158, 8158], "disallowed_STD3_mapped", [32, 788, 769]], [[8159, 8159], "disallowed_STD3_mapped", [32, 788, 834]], [[8160, 8162], "valid"], [[8163, 8163], "mapped", [944]], [[8164, 8167], "valid"], [[8168, 8168], "mapped", [8160]], [[8169, 8169], "mapped", [8161]], [[8170, 8170], "mapped", [8058]], [[8171, 8171], "mapped", [973]], [[8172, 8172], "mapped", [8165]], [[8173, 8173], "disallowed_STD3_mapped", [32, 776, 768]], [[8174, 8174], "disallowed_STD3_mapped", [32, 776, 769]], [[8175, 8175], "disallowed_STD3_mapped", [96]], [[8176, 8177], "disallowed"], [[8178, 8178], "mapped", [8060, 953]], [[8179, 8179], "mapped", [969, 953]], [[8180, 8180], "mapped", [974, 953]], [[8181, 8181], "disallowed"], [[8182, 8182], "valid"], [[8183, 8183], "mapped", [8182, 953]], [[8184, 8184], "mapped", [8056]], [[8185, 8185], "mapped", [972]], [[8186, 8186], "mapped", [8060]], [[8187, 8187], "mapped", [974]], [[8188, 8188], "mapped", [969, 953]], [[8189, 8189], "disallowed_STD3_mapped", [32, 769]], [[8190, 8190], "disallowed_STD3_mapped", [32, 788]], [[8191, 8191], "disallowed"], [[8192, 8202], "disallowed_STD3_mapped", [32]], [[8203, 8203], "ignored"], [[8204, 8205], "deviation", []], [[8206, 8207], "disallowed"], [[8208, 8208], "valid", [], "NV8"], [[8209, 8209], "mapped", [8208]], [[8210, 8214], "valid", [], "NV8"], [[8215, 8215], "disallowed_STD3_mapped", [32, 819]], [[8216, 8227], "valid", [], "NV8"], [[8228, 8230], "disallowed"], [[8231, 8231], "valid", [], "NV8"], [[8232, 8238], "disallowed"], [[8239, 8239], "disallowed_STD3_mapped", [32]], [[8240, 8242], "valid", [], "NV8"], [[8243, 8243], "mapped", [8242, 8242]], [[8244, 8244], "mapped", [8242, 8242, 8242]], [[8245, 8245], "valid", [], "NV8"], [[8246, 8246], "mapped", [8245, 8245]], [[8247, 8247], "mapped", [8245, 8245, 8245]], [[8248, 8251], "valid", [], "NV8"], [[8252, 8252], "disallowed_STD3_mapped", [33, 33]], [[8253, 8253], "valid", [], "NV8"], [[8254, 8254], "disallowed_STD3_mapped", [32, 773]], [[8255, 8262], "valid", [], "NV8"], [[8263, 8263], "disallowed_STD3_mapped", [63, 63]], [[8264, 8264], "disallowed_STD3_mapped", [63, 33]], [[8265, 8265], "disallowed_STD3_mapped", [33, 63]], [[8266, 8269], "valid", [], "NV8"], [[8270, 8274], "valid", [], "NV8"], [[8275, 8276], "valid", [], "NV8"], [[8277, 8278], "valid", [], "NV8"], [[8279, 8279], "mapped", [8242, 8242, 8242, 8242]], [[8280, 8286], "valid", [], "NV8"], [[8287, 8287], "disallowed_STD3_mapped", [32]], [[8288, 8288], "ignored"], [[8289, 8291], "disallowed"], [[8292, 8292], "ignored"], [[8293, 8293], "disallowed"], [[8294, 8297], "disallowed"], [[8298, 8303], "disallowed"], [[8304, 8304], "mapped", [48]], [[8305, 8305], "mapped", [105]], [[8306, 8307], "disallowed"], [[8308, 8308], "mapped", [52]], [[8309, 8309], "mapped", [53]], [[8310, 8310], "mapped", [54]], [[8311, 8311], "mapped", [55]], [[8312, 8312], "mapped", [56]], [[8313, 8313], "mapped", [57]], [[8314, 8314], "disallowed_STD3_mapped", [43]], [[8315, 8315], "mapped", [8722]], [[8316, 8316], "disallowed_STD3_mapped", [61]], [[8317, 8317], "disallowed_STD3_mapped", [40]], [[8318, 8318], "disallowed_STD3_mapped", [41]], [[8319, 8319], "mapped", [110]], [[8320, 8320], "mapped", [48]], [[8321, 8321], "mapped", [49]], [[8322, 8322], "mapped", [50]], [[8323, 8323], "mapped", [51]], [[8324, 8324], "mapped", [52]], [[8325, 8325], "mapped", [53]], [[8326, 8326], "mapped", [54]], [[8327, 8327], "mapped", [55]], [[8328, 8328], "mapped", [56]], [[8329, 8329], "mapped", [57]], [[8330, 8330], "disallowed_STD3_mapped", [43]], [[8331, 8331], "mapped", [8722]], [[8332, 8332], "disallowed_STD3_mapped", [61]], [[8333, 8333], "disallowed_STD3_mapped", [40]], [[8334, 8334], "disallowed_STD3_mapped", [41]], [[8335, 8335], "disallowed"], [[8336, 8336], "mapped", [97]], [[8337, 8337], "mapped", [101]], [[8338, 8338], "mapped", [111]], [[8339, 8339], "mapped", [120]], [[8340, 8340], "mapped", [601]], [[8341, 8341], "mapped", [104]], [[8342, 8342], "mapped", [107]], [[8343, 8343], "mapped", [108]], [[8344, 8344], "mapped", [109]], [[8345, 8345], "mapped", [110]], [[8346, 8346], "mapped", [112]], [[8347, 8347], "mapped", [115]], [[8348, 8348], "mapped", [116]], [[8349, 8351], "disallowed"], [[8352, 8359], "valid", [], "NV8"], [[8360, 8360], "mapped", [114, 115]], [[8361, 8362], "valid", [], "NV8"], [[8363, 8363], "valid", [], "NV8"], [[8364, 8364], "valid", [], "NV8"], [[8365, 8367], "valid", [], "NV8"], [[8368, 8369], "valid", [], "NV8"], [[8370, 8373], "valid", [], "NV8"], [[8374, 8376], "valid", [], "NV8"], [[8377, 8377], "valid", [], "NV8"], [[8378, 8378], "valid", [], "NV8"], [[8379, 8381], "valid", [], "NV8"], [[8382, 8382], "valid", [], "NV8"], [[8383, 8399], "disallowed"], [[8400, 8417], "valid", [], "NV8"], [[8418, 8419], "valid", [], "NV8"], [[8420, 8426], "valid", [], "NV8"], [[8427, 8427], "valid", [], "NV8"], [[8428, 8431], "valid", [], "NV8"], [[8432, 8432], "valid", [], "NV8"], [[8433, 8447], "disallowed"], [[8448, 8448], "disallowed_STD3_mapped", [97, 47, 99]], [[8449, 8449], "disallowed_STD3_mapped", [97, 47, 115]], [[8450, 8450], "mapped", [99]], [[8451, 8451], "mapped", [176, 99]], [[8452, 8452], "valid", [], "NV8"], [[8453, 8453], "disallowed_STD3_mapped", [99, 47, 111]], [[8454, 8454], "disallowed_STD3_mapped", [99, 47, 117]], [[8455, 8455], "mapped", [603]], [[8456, 8456], "valid", [], "NV8"], [[8457, 8457], "mapped", [176, 102]], [[8458, 8458], "mapped", [103]], [[8459, 8462], "mapped", [104]], [[8463, 8463], "mapped", [295]], [[8464, 8465], "mapped", [105]], [[8466, 8467], "mapped", [108]], [[8468, 8468], "valid", [], "NV8"], [[8469, 8469], "mapped", [110]], [[8470, 8470], "mapped", [110, 111]], [[8471, 8472], "valid", [], "NV8"], [[8473, 8473], "mapped", [112]], [[8474, 8474], "mapped", [113]], [[8475, 8477], "mapped", [114]], [[8478, 8479], "valid", [], "NV8"], [[8480, 8480], "mapped", [115, 109]], [[8481, 8481], "mapped", [116, 101, 108]], [[8482, 8482], "mapped", [116, 109]], [[8483, 8483], "valid", [], "NV8"], [[8484, 8484], "mapped", [122]], [[8485, 8485], "valid", [], "NV8"], [[8486, 8486], "mapped", [969]], [[8487, 8487], "valid", [], "NV8"], [[8488, 8488], "mapped", [122]], [[8489, 8489], "valid", [], "NV8"], [[8490, 8490], "mapped", [107]], [[8491, 8491], "mapped", [229]], [[8492, 8492], "mapped", [98]], [[8493, 8493], "mapped", [99]], [[8494, 8494], "valid", [], "NV8"], [[8495, 8496], "mapped", [101]], [[8497, 8497], "mapped", [102]], [[8498, 8498], "disallowed"], [[8499, 8499], "mapped", [109]], [[8500, 8500], "mapped", [111]], [[8501, 8501], "mapped", [1488]], [[8502, 8502], "mapped", [1489]], [[8503, 8503], "mapped", [1490]], [[8504, 8504], "mapped", [1491]], [[8505, 8505], "mapped", [105]], [[8506, 8506], "valid", [], "NV8"], [[8507, 8507], "mapped", [102, 97, 120]], [[8508, 8508], "mapped", [960]], [[8509, 8510], "mapped", [947]], [[8511, 8511], "mapped", [960]], [[8512, 8512], "mapped", [8721]], [[8513, 8516], "valid", [], "NV8"], [[8517, 8518], "mapped", [100]], [[8519, 8519], "mapped", [101]], [[8520, 8520], "mapped", [105]], [[8521, 8521], "mapped", [106]], [[8522, 8523], "valid", [], "NV8"], [[8524, 8524], "valid", [], "NV8"], [[8525, 8525], "valid", [], "NV8"], [[8526, 8526], "valid"], [[8527, 8527], "valid", [], "NV8"], [[8528, 8528], "mapped", [49, 8260, 55]], [[8529, 8529], "mapped", [49, 8260, 57]], [[8530, 8530], "mapped", [49, 8260, 49, 48]], [[8531, 8531], "mapped", [49, 8260, 51]], [[8532, 8532], "mapped", [50, 8260, 51]], [[8533, 8533], "mapped", [49, 8260, 53]], [[8534, 8534], "mapped", [50, 8260, 53]], [[8535, 8535], "mapped", [51, 8260, 53]], [[8536, 8536], "mapped", [52, 8260, 53]], [[8537, 8537], "mapped", [49, 8260, 54]], [[8538, 8538], "mapped", [53, 8260, 54]], [[8539, 8539], "mapped", [49, 8260, 56]], [[8540, 8540], "mapped", [51, 8260, 56]], [[8541, 8541], "mapped", [53, 8260, 56]], [[8542, 8542], "mapped", [55, 8260, 56]], [[8543, 8543], "mapped", [49, 8260]], [[8544, 8544], "mapped", [105]], [[8545, 8545], "mapped", [105, 105]], [[8546, 8546], "mapped", [105, 105, 105]], [[8547, 8547], "mapped", [105, 118]], [[8548, 8548], "mapped", [118]], [[8549, 8549], "mapped", [118, 105]], [[8550, 8550], "mapped", [118, 105, 105]], [[8551, 8551], "mapped", [118, 105, 105, 105]], [[8552, 8552], "mapped", [105, 120]], [[8553, 8553], "mapped", [120]], [[8554, 8554], "mapped", [120, 105]], [[8555, 8555], "mapped", [120, 105, 105]], [[8556, 8556], "mapped", [108]], [[8557, 8557], "mapped", [99]], [[8558, 8558], "mapped", [100]], [[8559, 8559], "mapped", [109]], [[8560, 8560], "mapped", [105]], [[8561, 8561], "mapped", [105, 105]], [[8562, 8562], "mapped", [105, 105, 105]], [[8563, 8563], "mapped", [105, 118]], [[8564, 8564], "mapped", [118]], [[8565, 8565], "mapped", [118, 105]], [[8566, 8566], "mapped", [118, 105, 105]], [[8567, 8567], "mapped", [118, 105, 105, 105]], [[8568, 8568], "mapped", [105, 120]], [[8569, 8569], "mapped", [120]], [[8570, 8570], "mapped", [120, 105]], [[8571, 8571], "mapped", [120, 105, 105]], [[8572, 8572], "mapped", [108]], [[8573, 8573], "mapped", [99]], [[8574, 8574], "mapped", [100]], [[8575, 8575], "mapped", [109]], [[8576, 8578], "valid", [], "NV8"], [[8579, 8579], "disallowed"], [[8580, 8580], "valid"], [[8581, 8584], "valid", [], "NV8"], [[8585, 8585], "mapped", [48, 8260, 51]], [[8586, 8587], "valid", [], "NV8"], [[8588, 8591], "disallowed"], [[8592, 8682], "valid", [], "NV8"], [[8683, 8691], "valid", [], "NV8"], [[8692, 8703], "valid", [], "NV8"], [[8704, 8747], "valid", [], "NV8"], [[8748, 8748], "mapped", [8747, 8747]], [[8749, 8749], "mapped", [8747, 8747, 8747]], [[8750, 8750], "valid", [], "NV8"], [[8751, 8751], "mapped", [8750, 8750]], [[8752, 8752], "mapped", [8750, 8750, 8750]], [[8753, 8799], "valid", [], "NV8"], [[8800, 8800], "disallowed_STD3_valid"], [[8801, 8813], "valid", [], "NV8"], [[8814, 8815], "disallowed_STD3_valid"], [[8816, 8945], "valid", [], "NV8"], [[8946, 8959], "valid", [], "NV8"], [[8960, 8960], "valid", [], "NV8"], [[8961, 8961], "valid", [], "NV8"], [[8962, 9e3], "valid", [], "NV8"], [[9001, 9001], "mapped", [12296]], [[9002, 9002], "mapped", [12297]], [[9003, 9082], "valid", [], "NV8"], [[9083, 9083], "valid", [], "NV8"], [[9084, 9084], "valid", [], "NV8"], [[9085, 9114], "valid", [], "NV8"], [[9115, 9166], "valid", [], "NV8"], [[9167, 9168], "valid", [], "NV8"], [[9169, 9179], "valid", [], "NV8"], [[9180, 9191], "valid", [], "NV8"], [[9192, 9192], "valid", [], "NV8"], [[9193, 9203], "valid", [], "NV8"], [[9204, 9210], "valid", [], "NV8"], [[9211, 9215], "disallowed"], [[9216, 9252], "valid", [], "NV8"], [[9253, 9254], "valid", [], "NV8"], [[9255, 9279], "disallowed"], [[9280, 9290], "valid", [], "NV8"], [[9291, 9311], "disallowed"], [[9312, 9312], "mapped", [49]], [[9313, 9313], "mapped", [50]], [[9314, 9314], "mapped", [51]], [[9315, 9315], "mapped", [52]], [[9316, 9316], "mapped", [53]], [[9317, 9317], "mapped", [54]], [[9318, 9318], "mapped", [55]], [[9319, 9319], "mapped", [56]], [[9320, 9320], "mapped", [57]], [[9321, 9321], "mapped", [49, 48]], [[9322, 9322], "mapped", [49, 49]], [[9323, 9323], "mapped", [49, 50]], [[9324, 9324], "mapped", [49, 51]], [[9325, 9325], "mapped", [49, 52]], [[9326, 9326], "mapped", [49, 53]], [[9327, 9327], "mapped", [49, 54]], [[9328, 9328], "mapped", [49, 55]], [[9329, 9329], "mapped", [49, 56]], [[9330, 9330], "mapped", [49, 57]], [[9331, 9331], "mapped", [50, 48]], [[9332, 9332], "disallowed_STD3_mapped", [40, 49, 41]], [[9333, 9333], "disallowed_STD3_mapped", [40, 50, 41]], [[9334, 9334], "disallowed_STD3_mapped", [40, 51, 41]], [[9335, 9335], "disallowed_STD3_mapped", [40, 52, 41]], [[9336, 9336], "disallowed_STD3_mapped", [40, 53, 41]], [[9337, 9337], "disallowed_STD3_mapped", [40, 54, 41]], [[9338, 9338], "disallowed_STD3_mapped", [40, 55, 41]], [[9339, 9339], "disallowed_STD3_mapped", [40, 56, 41]], [[9340, 9340], "disallowed_STD3_mapped", [40, 57, 41]], [[9341, 9341], "disallowed_STD3_mapped", [40, 49, 48, 41]], [[9342, 9342], "disallowed_STD3_mapped", [40, 49, 49, 41]], [[9343, 9343], "disallowed_STD3_mapped", [40, 49, 50, 41]], [[9344, 9344], "disallowed_STD3_mapped", [40, 49, 51, 41]], [[9345, 9345], "disallowed_STD3_mapped", [40, 49, 52, 41]], [[9346, 9346], "disallowed_STD3_mapped", [40, 49, 53, 41]], [[9347, 9347], "disallowed_STD3_mapped", [40, 49, 54, 41]], [[9348, 9348], "disallowed_STD3_mapped", [40, 49, 55, 41]], [[9349, 9349], "disallowed_STD3_mapped", [40, 49, 56, 41]], [[9350, 9350], "disallowed_STD3_mapped", [40, 49, 57, 41]], [[9351, 9351], "disallowed_STD3_mapped", [40, 50, 48, 41]], [[9352, 9371], "disallowed"], [[9372, 9372], "disallowed_STD3_mapped", [40, 97, 41]], [[9373, 9373], "disallowed_STD3_mapped", [40, 98, 41]], [[9374, 9374], "disallowed_STD3_mapped", [40, 99, 41]], [[9375, 9375], "disallowed_STD3_mapped", [40, 100, 41]], [[9376, 9376], "disallowed_STD3_mapped", [40, 101, 41]], [[9377, 9377], "disallowed_STD3_mapped", [40, 102, 41]], [[9378, 9378], "disallowed_STD3_mapped", [40, 103, 41]], [[9379, 9379], "disallowed_STD3_mapped", [40, 104, 41]], [[9380, 9380], "disallowed_STD3_mapped", [40, 105, 41]], [[9381, 9381], "disallowed_STD3_mapped", [40, 106, 41]], [[9382, 9382], "disallowed_STD3_mapped", [40, 107, 41]], [[9383, 9383], "disallowed_STD3_mapped", [40, 108, 41]], [[9384, 9384], "disallowed_STD3_mapped", [40, 109, 41]], [[9385, 9385], "disallowed_STD3_mapped", [40, 110, 41]], [[9386, 9386], "disallowed_STD3_mapped", [40, 111, 41]], [[9387, 9387], "disallowed_STD3_mapped", [40, 112, 41]], [[9388, 9388], "disallowed_STD3_mapped", [40, 113, 41]], [[9389, 9389], "disallowed_STD3_mapped", [40, 114, 41]], [[9390, 9390], "disallowed_STD3_mapped", [40, 115, 41]], [[9391, 9391], "disallowed_STD3_mapped", [40, 116, 41]], [[9392, 9392], "disallowed_STD3_mapped", [40, 117, 41]], [[9393, 9393], "disallowed_STD3_mapped", [40, 118, 41]], [[9394, 9394], "disallowed_STD3_mapped", [40, 119, 41]], [[9395, 9395], "disallowed_STD3_mapped", [40, 120, 41]], [[9396, 9396], "disallowed_STD3_mapped", [40, 121, 41]], [[9397, 9397], "disallowed_STD3_mapped", [40, 122, 41]], [[9398, 9398], "mapped", [97]], [[9399, 9399], "mapped", [98]], [[9400, 9400], "mapped", [99]], [[9401, 9401], "mapped", [100]], [[9402, 9402], "mapped", [101]], [[9403, 9403], "mapped", [102]], [[9404, 9404], "mapped", [103]], [[9405, 9405], "mapped", [104]], [[9406, 9406], "mapped", [105]], [[9407, 9407], "mapped", [106]], [[9408, 9408], "mapped", [107]], [[9409, 9409], "mapped", [108]], [[9410, 9410], "mapped", [109]], [[9411, 9411], "mapped", [110]], [[9412, 9412], "mapped", [111]], [[9413, 9413], "mapped", [112]], [[9414, 9414], "mapped", [113]], [[9415, 9415], "mapped", [114]], [[9416, 9416], "mapped", [115]], [[9417, 9417], "mapped", [116]], [[9418, 9418], "mapped", [117]], [[9419, 9419], "mapped", [118]], [[9420, 9420], "mapped", [119]], [[9421, 9421], "mapped", [120]], [[9422, 9422], "mapped", [121]], [[9423, 9423], "mapped", [122]], [[9424, 9424], "mapped", [97]], [[9425, 9425], "mapped", [98]], [[9426, 9426], "mapped", [99]], [[9427, 9427], "mapped", [100]], [[9428, 9428], "mapped", [101]], [[9429, 9429], "mapped", [102]], [[9430, 9430], "mapped", [103]], [[9431, 9431], "mapped", [104]], [[9432, 9432], "mapped", [105]], [[9433, 9433], "mapped", [106]], [[9434, 9434], "mapped", [107]], [[9435, 9435], "mapped", [108]], [[9436, 9436], "mapped", [109]], [[9437, 9437], "mapped", [110]], [[9438, 9438], "mapped", [111]], [[9439, 9439], "mapped", [112]], [[9440, 9440], "mapped", [113]], [[9441, 9441], "mapped", [114]], [[9442, 9442], "mapped", [115]], [[9443, 9443], "mapped", [116]], [[9444, 9444], "mapped", [117]], [[9445, 9445], "mapped", [118]], [[9446, 9446], "mapped", [119]], [[9447, 9447], "mapped", [120]], [[9448, 9448], "mapped", [121]], [[9449, 9449], "mapped", [122]], [[9450, 9450], "mapped", [48]], [[9451, 9470], "valid", [], "NV8"], [[9471, 9471], "valid", [], "NV8"], [[9472, 9621], "valid", [], "NV8"], [[9622, 9631], "valid", [], "NV8"], [[9632, 9711], "valid", [], "NV8"], [[9712, 9719], "valid", [], "NV8"], [[9720, 9727], "valid", [], "NV8"], [[9728, 9747], "valid", [], "NV8"], [[9748, 9749], "valid", [], "NV8"], [[9750, 9751], "valid", [], "NV8"], [[9752, 9752], "valid", [], "NV8"], [[9753, 9753], "valid", [], "NV8"], [[9754, 9839], "valid", [], "NV8"], [[9840, 9841], "valid", [], "NV8"], [[9842, 9853], "valid", [], "NV8"], [[9854, 9855], "valid", [], "NV8"], [[9856, 9865], "valid", [], "NV8"], [[9866, 9873], "valid", [], "NV8"], [[9874, 9884], "valid", [], "NV8"], [[9885, 9885], "valid", [], "NV8"], [[9886, 9887], "valid", [], "NV8"], [[9888, 9889], "valid", [], "NV8"], [[9890, 9905], "valid", [], "NV8"], [[9906, 9906], "valid", [], "NV8"], [[9907, 9916], "valid", [], "NV8"], [[9917, 9919], "valid", [], "NV8"], [[9920, 9923], "valid", [], "NV8"], [[9924, 9933], "valid", [], "NV8"], [[9934, 9934], "valid", [], "NV8"], [[9935, 9953], "valid", [], "NV8"], [[9954, 9954], "valid", [], "NV8"], [[9955, 9955], "valid", [], "NV8"], [[9956, 9959], "valid", [], "NV8"], [[9960, 9983], "valid", [], "NV8"], [[9984, 9984], "valid", [], "NV8"], [[9985, 9988], "valid", [], "NV8"], [[9989, 9989], "valid", [], "NV8"], [[9990, 9993], "valid", [], "NV8"], [[9994, 9995], "valid", [], "NV8"], [[9996, 10023], "valid", [], "NV8"], [[10024, 10024], "valid", [], "NV8"], [[10025, 10059], "valid", [], "NV8"], [[10060, 10060], "valid", [], "NV8"], [[10061, 10061], "valid", [], "NV8"], [[10062, 10062], "valid", [], "NV8"], [[10063, 10066], "valid", [], "NV8"], [[10067, 10069], "valid", [], "NV8"], [[10070, 10070], "valid", [], "NV8"], [[10071, 10071], "valid", [], "NV8"], [[10072, 10078], "valid", [], "NV8"], [[10079, 10080], "valid", [], "NV8"], [[10081, 10087], "valid", [], "NV8"], [[10088, 10101], "valid", [], "NV8"], [[10102, 10132], "valid", [], "NV8"], [[10133, 10135], "valid", [], "NV8"], [[10136, 10159], "valid", [], "NV8"], [[10160, 10160], "valid", [], "NV8"], [[10161, 10174], "valid", [], "NV8"], [[10175, 10175], "valid", [], "NV8"], [[10176, 10182], "valid", [], "NV8"], [[10183, 10186], "valid", [], "NV8"], [[10187, 10187], "valid", [], "NV8"], [[10188, 10188], "valid", [], "NV8"], [[10189, 10189], "valid", [], "NV8"], [[10190, 10191], "valid", [], "NV8"], [[10192, 10219], "valid", [], "NV8"], [[10220, 10223], "valid", [], "NV8"], [[10224, 10239], "valid", [], "NV8"], [[10240, 10495], "valid", [], "NV8"], [[10496, 10763], "valid", [], "NV8"], [[10764, 10764], "mapped", [8747, 8747, 8747, 8747]], [[10765, 10867], "valid", [], "NV8"], [[10868, 10868], "disallowed_STD3_mapped", [58, 58, 61]], [[10869, 10869], "disallowed_STD3_mapped", [61, 61]], [[10870, 10870], "disallowed_STD3_mapped", [61, 61, 61]], [[10871, 10971], "valid", [], "NV8"], [[10972, 10972], "mapped", [10973, 824]], [[10973, 11007], "valid", [], "NV8"], [[11008, 11021], "valid", [], "NV8"], [[11022, 11027], "valid", [], "NV8"], [[11028, 11034], "valid", [], "NV8"], [[11035, 11039], "valid", [], "NV8"], [[11040, 11043], "valid", [], "NV8"], [[11044, 11084], "valid", [], "NV8"], [[11085, 11087], "valid", [], "NV8"], [[11088, 11092], "valid", [], "NV8"], [[11093, 11097], "valid", [], "NV8"], [[11098, 11123], "valid", [], "NV8"], [[11124, 11125], "disallowed"], [[11126, 11157], "valid", [], "NV8"], [[11158, 11159], "disallowed"], [[11160, 11193], "valid", [], "NV8"], [[11194, 11196], "disallowed"], [[11197, 11208], "valid", [], "NV8"], [[11209, 11209], "disallowed"], [[11210, 11217], "valid", [], "NV8"], [[11218, 11243], "disallowed"], [[11244, 11247], "valid", [], "NV8"], [[11248, 11263], "disallowed"], [[11264, 11264], "mapped", [11312]], [[11265, 11265], "mapped", [11313]], [[11266, 11266], "mapped", [11314]], [[11267, 11267], "mapped", [11315]], [[11268, 11268], "mapped", [11316]], [[11269, 11269], "mapped", [11317]], [[11270, 11270], "mapped", [11318]], [[11271, 11271], "mapped", [11319]], [[11272, 11272], "mapped", [11320]], [[11273, 11273], "mapped", [11321]], [[11274, 11274], "mapped", [11322]], [[11275, 11275], "mapped", [11323]], [[11276, 11276], "mapped", [11324]], [[11277, 11277], "mapped", [11325]], [[11278, 11278], "mapped", [11326]], [[11279, 11279], "mapped", [11327]], [[11280, 11280], "mapped", [11328]], [[11281, 11281], "mapped", [11329]], [[11282, 11282], "mapped", [11330]], [[11283, 11283], "mapped", [11331]], [[11284, 11284], "mapped", [11332]], [[11285, 11285], "mapped", [11333]], [[11286, 11286], "mapped", [11334]], [[11287, 11287], "mapped", [11335]], [[11288, 11288], "mapped", [11336]], [[11289, 11289], "mapped", [11337]], [[11290, 11290], "mapped", [11338]], [[11291, 11291], "mapped", [11339]], [[11292, 11292], "mapped", [11340]], [[11293, 11293], "mapped", [11341]], [[11294, 11294], "mapped", [11342]], [[11295, 11295], "mapped", [11343]], [[11296, 11296], "mapped", [11344]], [[11297, 11297], "mapped", [11345]], [[11298, 11298], "mapped", [11346]], [[11299, 11299], "mapped", [11347]], [[11300, 11300], "mapped", [11348]], [[11301, 11301], "mapped", [11349]], [[11302, 11302], "mapped", [11350]], [[11303, 11303], "mapped", [11351]], [[11304, 11304], "mapped", [11352]], [[11305, 11305], "mapped", [11353]], [[11306, 11306], "mapped", [11354]], [[11307, 11307], "mapped", [11355]], [[11308, 11308], "mapped", [11356]], [[11309, 11309], "mapped", [11357]], [[11310, 11310], "mapped", [11358]], [[11311, 11311], "disallowed"], [[11312, 11358], "valid"], [[11359, 11359], "disallowed"], [[11360, 11360], "mapped", [11361]], [[11361, 11361], "valid"], [[11362, 11362], "mapped", [619]], [[11363, 11363], "mapped", [7549]], [[11364, 11364], "mapped", [637]], [[11365, 11366], "valid"], [[11367, 11367], "mapped", [11368]], [[11368, 11368], "valid"], [[11369, 11369], "mapped", [11370]], [[11370, 11370], "valid"], [[11371, 11371], "mapped", [11372]], [[11372, 11372], "valid"], [[11373, 11373], "mapped", [593]], [[11374, 11374], "mapped", [625]], [[11375, 11375], "mapped", [592]], [[11376, 11376], "mapped", [594]], [[11377, 11377], "valid"], [[11378, 11378], "mapped", [11379]], [[11379, 11379], "valid"], [[11380, 11380], "valid"], [[11381, 11381], "mapped", [11382]], [[11382, 11383], "valid"], [[11384, 11387], "valid"], [[11388, 11388], "mapped", [106]], [[11389, 11389], "mapped", [118]], [[11390, 11390], "mapped", [575]], [[11391, 11391], "mapped", [576]], [[11392, 11392], "mapped", [11393]], [[11393, 11393], "valid"], [[11394, 11394], "mapped", [11395]], [[11395, 11395], "valid"], [[11396, 11396], "mapped", [11397]], [[11397, 11397], "valid"], [[11398, 11398], "mapped", [11399]], [[11399, 11399], "valid"], [[11400, 11400], "mapped", [11401]], [[11401, 11401], "valid"], [[11402, 11402], "mapped", [11403]], [[11403, 11403], "valid"], [[11404, 11404], "mapped", [11405]], [[11405, 11405], "valid"], [[11406, 11406], "mapped", [11407]], [[11407, 11407], "valid"], [[11408, 11408], "mapped", [11409]], [[11409, 11409], "valid"], [[11410, 11410], "mapped", [11411]], [[11411, 11411], "valid"], [[11412, 11412], "mapped", [11413]], [[11413, 11413], "valid"], [[11414, 11414], "mapped", [11415]], [[11415, 11415], "valid"], [[11416, 11416], "mapped", [11417]], [[11417, 11417], "valid"], [[11418, 11418], "mapped", [11419]], [[11419, 11419], "valid"], [[11420, 11420], "mapped", [11421]], [[11421, 11421], "valid"], [[11422, 11422], "mapped", [11423]], [[11423, 11423], "valid"], [[11424, 11424], "mapped", [11425]], [[11425, 11425], "valid"], [[11426, 11426], "mapped", [11427]], [[11427, 11427], "valid"], [[11428, 11428], "mapped", [11429]], [[11429, 11429], "valid"], [[11430, 11430], "mapped", [11431]], [[11431, 11431], "valid"], [[11432, 11432], "mapped", [11433]], [[11433, 11433], "valid"], [[11434, 11434], "mapped", [11435]], [[11435, 11435], "valid"], [[11436, 11436], "mapped", [11437]], [[11437, 11437], "valid"], [[11438, 11438], "mapped", [11439]], [[11439, 11439], "valid"], [[11440, 11440], "mapped", [11441]], [[11441, 11441], "valid"], [[11442, 11442], "mapped", [11443]], [[11443, 11443], "valid"], [[11444, 11444], "mapped", [11445]], [[11445, 11445], "valid"], [[11446, 11446], "mapped", [11447]], [[11447, 11447], "valid"], [[11448, 11448], "mapped", [11449]], [[11449, 11449], "valid"], [[11450, 11450], "mapped", [11451]], [[11451, 11451], "valid"], [[11452, 11452], "mapped", [11453]], [[11453, 11453], "valid"], [[11454, 11454], "mapped", [11455]], [[11455, 11455], "valid"], [[11456, 11456], "mapped", [11457]], [[11457, 11457], "valid"], [[11458, 11458], "mapped", [11459]], [[11459, 11459], "valid"], [[11460, 11460], "mapped", [11461]], [[11461, 11461], "valid"], [[11462, 11462], "mapped", [11463]], [[11463, 11463], "valid"], [[11464, 11464], "mapped", [11465]], [[11465, 11465], "valid"], [[11466, 11466], "mapped", [11467]], [[11467, 11467], "valid"], [[11468, 11468], "mapped", [11469]], [[11469, 11469], "valid"], [[11470, 11470], "mapped", [11471]], [[11471, 11471], "valid"], [[11472, 11472], "mapped", [11473]], [[11473, 11473], "valid"], [[11474, 11474], "mapped", [11475]], [[11475, 11475], "valid"], [[11476, 11476], "mapped", [11477]], [[11477, 11477], "valid"], [[11478, 11478], "mapped", [11479]], [[11479, 11479], "valid"], [[11480, 11480], "mapped", [11481]], [[11481, 11481], "valid"], [[11482, 11482], "mapped", [11483]], [[11483, 11483], "valid"], [[11484, 11484], "mapped", [11485]], [[11485, 11485], "valid"], [[11486, 11486], "mapped", [11487]], [[11487, 11487], "valid"], [[11488, 11488], "mapped", [11489]], [[11489, 11489], "valid"], [[11490, 11490], "mapped", [11491]], [[11491, 11492], "valid"], [[11493, 11498], "valid", [], "NV8"], [[11499, 11499], "mapped", [11500]], [[11500, 11500], "valid"], [[11501, 11501], "mapped", [11502]], [[11502, 11505], "valid"], [[11506, 11506], "mapped", [11507]], [[11507, 11507], "valid"], [[11508, 11512], "disallowed"], [[11513, 11519], "valid", [], "NV8"], [[11520, 11557], "valid"], [[11558, 11558], "disallowed"], [[11559, 11559], "valid"], [[11560, 11564], "disallowed"], [[11565, 11565], "valid"], [[11566, 11567], "disallowed"], [[11568, 11621], "valid"], [[11622, 11623], "valid"], [[11624, 11630], "disallowed"], [[11631, 11631], "mapped", [11617]], [[11632, 11632], "valid", [], "NV8"], [[11633, 11646], "disallowed"], [[11647, 11647], "valid"], [[11648, 11670], "valid"], [[11671, 11679], "disallowed"], [[11680, 11686], "valid"], [[11687, 11687], "disallowed"], [[11688, 11694], "valid"], [[11695, 11695], "disallowed"], [[11696, 11702], "valid"], [[11703, 11703], "disallowed"], [[11704, 11710], "valid"], [[11711, 11711], "disallowed"], [[11712, 11718], "valid"], [[11719, 11719], "disallowed"], [[11720, 11726], "valid"], [[11727, 11727], "disallowed"], [[11728, 11734], "valid"], [[11735, 11735], "disallowed"], [[11736, 11742], "valid"], [[11743, 11743], "disallowed"], [[11744, 11775], "valid"], [[11776, 11799], "valid", [], "NV8"], [[11800, 11803], "valid", [], "NV8"], [[11804, 11805], "valid", [], "NV8"], [[11806, 11822], "valid", [], "NV8"], [[11823, 11823], "valid"], [[11824, 11824], "valid", [], "NV8"], [[11825, 11825], "valid", [], "NV8"], [[11826, 11835], "valid", [], "NV8"], [[11836, 11842], "valid", [], "NV8"], [[11843, 11903], "disallowed"], [[11904, 11929], "valid", [], "NV8"], [[11930, 11930], "disallowed"], [[11931, 11934], "valid", [], "NV8"], [[11935, 11935], "mapped", [27597]], [[11936, 12018], "valid", [], "NV8"], [[12019, 12019], "mapped", [40863]], [[12020, 12031], "disallowed"], [[12032, 12032], "mapped", [19968]], [[12033, 12033], "mapped", [20008]], [[12034, 12034], "mapped", [20022]], [[12035, 12035], "mapped", [20031]], [[12036, 12036], "mapped", [20057]], [[12037, 12037], "mapped", [20101]], [[12038, 12038], "mapped", [20108]], [[12039, 12039], "mapped", [20128]], [[12040, 12040], "mapped", [20154]], [[12041, 12041], "mapped", [20799]], [[12042, 12042], "mapped", [20837]], [[12043, 12043], "mapped", [20843]], [[12044, 12044], "mapped", [20866]], [[12045, 12045], "mapped", [20886]], [[12046, 12046], "mapped", [20907]], [[12047, 12047], "mapped", [20960]], [[12048, 12048], "mapped", [20981]], [[12049, 12049], "mapped", [20992]], [[12050, 12050], "mapped", [21147]], [[12051, 12051], "mapped", [21241]], [[12052, 12052], "mapped", [21269]], [[12053, 12053], "mapped", [21274]], [[12054, 12054], "mapped", [21304]], [[12055, 12055], "mapped", [21313]], [[12056, 12056], "mapped", [21340]], [[12057, 12057], "mapped", [21353]], [[12058, 12058], "mapped", [21378]], [[12059, 12059], "mapped", [21430]], [[12060, 12060], "mapped", [21448]], [[12061, 12061], "mapped", [21475]], [[12062, 12062], "mapped", [22231]], [[12063, 12063], "mapped", [22303]], [[12064, 12064], "mapped", [22763]], [[12065, 12065], "mapped", [22786]], [[12066, 12066], "mapped", [22794]], [[12067, 12067], "mapped", [22805]], [[12068, 12068], "mapped", [22823]], [[12069, 12069], "mapped", [22899]], [[12070, 12070], "mapped", [23376]], [[12071, 12071], "mapped", [23424]], [[12072, 12072], "mapped", [23544]], [[12073, 12073], "mapped", [23567]], [[12074, 12074], "mapped", [23586]], [[12075, 12075], "mapped", [23608]], [[12076, 12076], "mapped", [23662]], [[12077, 12077], "mapped", [23665]], [[12078, 12078], "mapped", [24027]], [[12079, 12079], "mapped", [24037]], [[12080, 12080], "mapped", [24049]], [[12081, 12081], "mapped", [24062]], [[12082, 12082], "mapped", [24178]], [[12083, 12083], "mapped", [24186]], [[12084, 12084], "mapped", [24191]], [[12085, 12085], "mapped", [24308]], [[12086, 12086], "mapped", [24318]], [[12087, 12087], "mapped", [24331]], [[12088, 12088], "mapped", [24339]], [[12089, 12089], "mapped", [24400]], [[12090, 12090], "mapped", [24417]], [[12091, 12091], "mapped", [24435]], [[12092, 12092], "mapped", [24515]], [[12093, 12093], "mapped", [25096]], [[12094, 12094], "mapped", [25142]], [[12095, 12095], "mapped", [25163]], [[12096, 12096], "mapped", [25903]], [[12097, 12097], "mapped", [25908]], [[12098, 12098], "mapped", [25991]], [[12099, 12099], "mapped", [26007]], [[12100, 12100], "mapped", [26020]], [[12101, 12101], "mapped", [26041]], [[12102, 12102], "mapped", [26080]], [[12103, 12103], "mapped", [26085]], [[12104, 12104], "mapped", [26352]], [[12105, 12105], "mapped", [26376]], [[12106, 12106], "mapped", [26408]], [[12107, 12107], "mapped", [27424]], [[12108, 12108], "mapped", [27490]], [[12109, 12109], "mapped", [27513]], [[12110, 12110], "mapped", [27571]], [[12111, 12111], "mapped", [27595]], [[12112, 12112], "mapped", [27604]], [[12113, 12113], "mapped", [27611]], [[12114, 12114], "mapped", [27663]], [[12115, 12115], "mapped", [27668]], [[12116, 12116], "mapped", [27700]], [[12117, 12117], "mapped", [28779]], [[12118, 12118], "mapped", [29226]], [[12119, 12119], "mapped", [29238]], [[12120, 12120], "mapped", [29243]], [[12121, 12121], "mapped", [29247]], [[12122, 12122], "mapped", [29255]], [[12123, 12123], "mapped", [29273]], [[12124, 12124], "mapped", [29275]], [[12125, 12125], "mapped", [29356]], [[12126, 12126], "mapped", [29572]], [[12127, 12127], "mapped", [29577]], [[12128, 12128], "mapped", [29916]], [[12129, 12129], "mapped", [29926]], [[12130, 12130], "mapped", [29976]], [[12131, 12131], "mapped", [29983]], [[12132, 12132], "mapped", [29992]], [[12133, 12133], "mapped", [3e4]], [[12134, 12134], "mapped", [30091]], [[12135, 12135], "mapped", [30098]], [[12136, 12136], "mapped", [30326]], [[12137, 12137], "mapped", [30333]], [[12138, 12138], "mapped", [30382]], [[12139, 12139], "mapped", [30399]], [[12140, 12140], "mapped", [30446]], [[12141, 12141], "mapped", [30683]], [[12142, 12142], "mapped", [30690]], [[12143, 12143], "mapped", [30707]], [[12144, 12144], "mapped", [31034]], [[12145, 12145], "mapped", [31160]], [[12146, 12146], "mapped", [31166]], [[12147, 12147], "mapped", [31348]], [[12148, 12148], "mapped", [31435]], [[12149, 12149], "mapped", [31481]], [[12150, 12150], "mapped", [31859]], [[12151, 12151], "mapped", [31992]], [[12152, 12152], "mapped", [32566]], [[12153, 12153], "mapped", [32593]], [[12154, 12154], "mapped", [32650]], [[12155, 12155], "mapped", [32701]], [[12156, 12156], "mapped", [32769]], [[12157, 12157], "mapped", [32780]], [[12158, 12158], "mapped", [32786]], [[12159, 12159], "mapped", [32819]], [[12160, 12160], "mapped", [32895]], [[12161, 12161], "mapped", [32905]], [[12162, 12162], "mapped", [33251]], [[12163, 12163], "mapped", [33258]], [[12164, 12164], "mapped", [33267]], [[12165, 12165], "mapped", [33276]], [[12166, 12166], "mapped", [33292]], [[12167, 12167], "mapped", [33307]], [[12168, 12168], "mapped", [33311]], [[12169, 12169], "mapped", [33390]], [[12170, 12170], "mapped", [33394]], [[12171, 12171], "mapped", [33400]], [[12172, 12172], "mapped", [34381]], [[12173, 12173], "mapped", [34411]], [[12174, 12174], "mapped", [34880]], [[12175, 12175], "mapped", [34892]], [[12176, 12176], "mapped", [34915]], [[12177, 12177], "mapped", [35198]], [[12178, 12178], "mapped", [35211]], [[12179, 12179], "mapped", [35282]], [[12180, 12180], "mapped", [35328]], [[12181, 12181], "mapped", [35895]], [[12182, 12182], "mapped", [35910]], [[12183, 12183], "mapped", [35925]], [[12184, 12184], "mapped", [35960]], [[12185, 12185], "mapped", [35997]], [[12186, 12186], "mapped", [36196]], [[12187, 12187], "mapped", [36208]], [[12188, 12188], "mapped", [36275]], [[12189, 12189], "mapped", [36523]], [[12190, 12190], "mapped", [36554]], [[12191, 12191], "mapped", [36763]], [[12192, 12192], "mapped", [36784]], [[12193, 12193], "mapped", [36789]], [[12194, 12194], "mapped", [37009]], [[12195, 12195], "mapped", [37193]], [[12196, 12196], "mapped", [37318]], [[12197, 12197], "mapped", [37324]], [[12198, 12198], "mapped", [37329]], [[12199, 12199], "mapped", [38263]], [[12200, 12200], "mapped", [38272]], [[12201, 12201], "mapped", [38428]], [[12202, 12202], "mapped", [38582]], [[12203, 12203], "mapped", [38585]], [[12204, 12204], "mapped", [38632]], [[12205, 12205], "mapped", [38737]], [[12206, 12206], "mapped", [38750]], [[12207, 12207], "mapped", [38754]], [[12208, 12208], "mapped", [38761]], [[12209, 12209], "mapped", [38859]], [[12210, 12210], "mapped", [38893]], [[12211, 12211], "mapped", [38899]], [[12212, 12212], "mapped", [38913]], [[12213, 12213], "mapped", [39080]], [[12214, 12214], "mapped", [39131]], [[12215, 12215], "mapped", [39135]], [[12216, 12216], "mapped", [39318]], [[12217, 12217], "mapped", [39321]], [[12218, 12218], "mapped", [39340]], [[12219, 12219], "mapped", [39592]], [[12220, 12220], "mapped", [39640]], [[12221, 12221], "mapped", [39647]], [[12222, 12222], "mapped", [39717]], [[12223, 12223], "mapped", [39727]], [[12224, 12224], "mapped", [39730]], [[12225, 12225], "mapped", [39740]], [[12226, 12226], "mapped", [39770]], [[12227, 12227], "mapped", [40165]], [[12228, 12228], "mapped", [40565]], [[12229, 12229], "mapped", [40575]], [[12230, 12230], "mapped", [40613]], [[12231, 12231], "mapped", [40635]], [[12232, 12232], "mapped", [40643]], [[12233, 12233], "mapped", [40653]], [[12234, 12234], "mapped", [40657]], [[12235, 12235], "mapped", [40697]], [[12236, 12236], "mapped", [40701]], [[12237, 12237], "mapped", [40718]], [[12238, 12238], "mapped", [40723]], [[12239, 12239], "mapped", [40736]], [[12240, 12240], "mapped", [40763]], [[12241, 12241], "mapped", [40778]], [[12242, 12242], "mapped", [40786]], [[12243, 12243], "mapped", [40845]], [[12244, 12244], "mapped", [40860]], [[12245, 12245], "mapped", [40864]], [[12246, 12271], "disallowed"], [[12272, 12283], "disallowed"], [[12284, 12287], "disallowed"], [[12288, 12288], "disallowed_STD3_mapped", [32]], [[12289, 12289], "valid", [], "NV8"], [[12290, 12290], "mapped", [46]], [[12291, 12292], "valid", [], "NV8"], [[12293, 12295], "valid"], [[12296, 12329], "valid", [], "NV8"], [[12330, 12333], "valid"], [[12334, 12341], "valid", [], "NV8"], [[12342, 12342], "mapped", [12306]], [[12343, 12343], "valid", [], "NV8"], [[12344, 12344], "mapped", [21313]], [[12345, 12345], "mapped", [21316]], [[12346, 12346], "mapped", [21317]], [[12347, 12347], "valid", [], "NV8"], [[12348, 12348], "valid"], [[12349, 12349], "valid", [], "NV8"], [[12350, 12350], "valid", [], "NV8"], [[12351, 12351], "valid", [], "NV8"], [[12352, 12352], "disallowed"], [[12353, 12436], "valid"], [[12437, 12438], "valid"], [[12439, 12440], "disallowed"], [[12441, 12442], "valid"], [[12443, 12443], "disallowed_STD3_mapped", [32, 12441]], [[12444, 12444], "disallowed_STD3_mapped", [32, 12442]], [[12445, 12446], "valid"], [[12447, 12447], "mapped", [12424, 12426]], [[12448, 12448], "valid", [], "NV8"], [[12449, 12542], "valid"], [[12543, 12543], "mapped", [12467, 12488]], [[12544, 12548], "disallowed"], [[12549, 12588], "valid"], [[12589, 12589], "valid"], [[12590, 12592], "disallowed"], [[12593, 12593], "mapped", [4352]], [[12594, 12594], "mapped", [4353]], [[12595, 12595], "mapped", [4522]], [[12596, 12596], "mapped", [4354]], [[12597, 12597], "mapped", [4524]], [[12598, 12598], "mapped", [4525]], [[12599, 12599], "mapped", [4355]], [[12600, 12600], "mapped", [4356]], [[12601, 12601], "mapped", [4357]], [[12602, 12602], "mapped", [4528]], [[12603, 12603], "mapped", [4529]], [[12604, 12604], "mapped", [4530]], [[12605, 12605], "mapped", [4531]], [[12606, 12606], "mapped", [4532]], [[12607, 12607], "mapped", [4533]], [[12608, 12608], "mapped", [4378]], [[12609, 12609], "mapped", [4358]], [[12610, 12610], "mapped", [4359]], [[12611, 12611], "mapped", [4360]], [[12612, 12612], "mapped", [4385]], [[12613, 12613], "mapped", [4361]], [[12614, 12614], "mapped", [4362]], [[12615, 12615], "mapped", [4363]], [[12616, 12616], "mapped", [4364]], [[12617, 12617], "mapped", [4365]], [[12618, 12618], "mapped", [4366]], [[12619, 12619], "mapped", [4367]], [[12620, 12620], "mapped", [4368]], [[12621, 12621], "mapped", [4369]], [[12622, 12622], "mapped", [4370]], [[12623, 12623], "mapped", [4449]], [[12624, 12624], "mapped", [4450]], [[12625, 12625], "mapped", [4451]], [[12626, 12626], "mapped", [4452]], [[12627, 12627], "mapped", [4453]], [[12628, 12628], "mapped", [4454]], [[12629, 12629], "mapped", [4455]], [[12630, 12630], "mapped", [4456]], [[12631, 12631], "mapped", [4457]], [[12632, 12632], "mapped", [4458]], [[12633, 12633], "mapped", [4459]], [[12634, 12634], "mapped", [4460]], [[12635, 12635], "mapped", [4461]], [[12636, 12636], "mapped", [4462]], [[12637, 12637], "mapped", [4463]], [[12638, 12638], "mapped", [4464]], [[12639, 12639], "mapped", [4465]], [[12640, 12640], "mapped", [4466]], [[12641, 12641], "mapped", [4467]], [[12642, 12642], "mapped", [4468]], [[12643, 12643], "mapped", [4469]], [[12644, 12644], "disallowed"], [[12645, 12645], "mapped", [4372]], [[12646, 12646], "mapped", [4373]], [[12647, 12647], "mapped", [4551]], [[12648, 12648], "mapped", [4552]], [[12649, 12649], "mapped", [4556]], [[12650, 12650], "mapped", [4558]], [[12651, 12651], "mapped", [4563]], [[12652, 12652], "mapped", [4567]], [[12653, 12653], "mapped", [4569]], [[12654, 12654], "mapped", [4380]], [[12655, 12655], "mapped", [4573]], [[12656, 12656], "mapped", [4575]], [[12657, 12657], "mapped", [4381]], [[12658, 12658], "mapped", [4382]], [[12659, 12659], "mapped", [4384]], [[12660, 12660], "mapped", [4386]], [[12661, 12661], "mapped", [4387]], [[12662, 12662], "mapped", [4391]], [[12663, 12663], "mapped", [4393]], [[12664, 12664], "mapped", [4395]], [[12665, 12665], "mapped", [4396]], [[12666, 12666], "mapped", [4397]], [[12667, 12667], "mapped", [4398]], [[12668, 12668], "mapped", [4399]], [[12669, 12669], "mapped", [4402]], [[12670, 12670], "mapped", [4406]], [[12671, 12671], "mapped", [4416]], [[12672, 12672], "mapped", [4423]], [[12673, 12673], "mapped", [4428]], [[12674, 12674], "mapped", [4593]], [[12675, 12675], "mapped", [4594]], [[12676, 12676], "mapped", [4439]], [[12677, 12677], "mapped", [4440]], [[12678, 12678], "mapped", [4441]], [[12679, 12679], "mapped", [4484]], [[12680, 12680], "mapped", [4485]], [[12681, 12681], "mapped", [4488]], [[12682, 12682], "mapped", [4497]], [[12683, 12683], "mapped", [4498]], [[12684, 12684], "mapped", [4500]], [[12685, 12685], "mapped", [4510]], [[12686, 12686], "mapped", [4513]], [[12687, 12687], "disallowed"], [[12688, 12689], "valid", [], "NV8"], [[12690, 12690], "mapped", [19968]], [[12691, 12691], "mapped", [20108]], [[12692, 12692], "mapped", [19977]], [[12693, 12693], "mapped", [22235]], [[12694, 12694], "mapped", [19978]], [[12695, 12695], "mapped", [20013]], [[12696, 12696], "mapped", [19979]], [[12697, 12697], "mapped", [30002]], [[12698, 12698], "mapped", [20057]], [[12699, 12699], "mapped", [19993]], [[12700, 12700], "mapped", [19969]], [[12701, 12701], "mapped", [22825]], [[12702, 12702], "mapped", [22320]], [[12703, 12703], "mapped", [20154]], [[12704, 12727], "valid"], [[12728, 12730], "valid"], [[12731, 12735], "disallowed"], [[12736, 12751], "valid", [], "NV8"], [[12752, 12771], "valid", [], "NV8"], [[12772, 12783], "disallowed"], [[12784, 12799], "valid"], [[12800, 12800], "disallowed_STD3_mapped", [40, 4352, 41]], [[12801, 12801], "disallowed_STD3_mapped", [40, 4354, 41]], [[12802, 12802], "disallowed_STD3_mapped", [40, 4355, 41]], [[12803, 12803], "disallowed_STD3_mapped", [40, 4357, 41]], [[12804, 12804], "disallowed_STD3_mapped", [40, 4358, 41]], [[12805, 12805], "disallowed_STD3_mapped", [40, 4359, 41]], [[12806, 12806], "disallowed_STD3_mapped", [40, 4361, 41]], [[12807, 12807], "disallowed_STD3_mapped", [40, 4363, 41]], [[12808, 12808], "disallowed_STD3_mapped", [40, 4364, 41]], [[12809, 12809], "disallowed_STD3_mapped", [40, 4366, 41]], [[12810, 12810], "disallowed_STD3_mapped", [40, 4367, 41]], [[12811, 12811], "disallowed_STD3_mapped", [40, 4368, 41]], [[12812, 12812], "disallowed_STD3_mapped", [40, 4369, 41]], [[12813, 12813], "disallowed_STD3_mapped", [40, 4370, 41]], [[12814, 12814], "disallowed_STD3_mapped", [40, 44032, 41]], [[12815, 12815], "disallowed_STD3_mapped", [40, 45208, 41]], [[12816, 12816], "disallowed_STD3_mapped", [40, 45796, 41]], [[12817, 12817], "disallowed_STD3_mapped", [40, 46972, 41]], [[12818, 12818], "disallowed_STD3_mapped", [40, 47560, 41]], [[12819, 12819], "disallowed_STD3_mapped", [40, 48148, 41]], [[12820, 12820], "disallowed_STD3_mapped", [40, 49324, 41]], [[12821, 12821], "disallowed_STD3_mapped", [40, 50500, 41]], [[12822, 12822], "disallowed_STD3_mapped", [40, 51088, 41]], [[12823, 12823], "disallowed_STD3_mapped", [40, 52264, 41]], [[12824, 12824], "disallowed_STD3_mapped", [40, 52852, 41]], [[12825, 12825], "disallowed_STD3_mapped", [40, 53440, 41]], [[12826, 12826], "disallowed_STD3_mapped", [40, 54028, 41]], [[12827, 12827], "disallowed_STD3_mapped", [40, 54616, 41]], [[12828, 12828], "disallowed_STD3_mapped", [40, 51452, 41]], [[12829, 12829], "disallowed_STD3_mapped", [40, 50724, 51204, 41]], [[12830, 12830], "disallowed_STD3_mapped", [40, 50724, 54980, 41]], [[12831, 12831], "disallowed"], [[12832, 12832], "disallowed_STD3_mapped", [40, 19968, 41]], [[12833, 12833], "disallowed_STD3_mapped", [40, 20108, 41]], [[12834, 12834], "disallowed_STD3_mapped", [40, 19977, 41]], [[12835, 12835], "disallowed_STD3_mapped", [40, 22235, 41]], [[12836, 12836], "disallowed_STD3_mapped", [40, 20116, 41]], [[12837, 12837], "disallowed_STD3_mapped", [40, 20845, 41]], [[12838, 12838], "disallowed_STD3_mapped", [40, 19971, 41]], [[12839, 12839], "disallowed_STD3_mapped", [40, 20843, 41]], [[12840, 12840], "disallowed_STD3_mapped", [40, 20061, 41]], [[12841, 12841], "disallowed_STD3_mapped", [40, 21313, 41]], [[12842, 12842], "disallowed_STD3_mapped", [40, 26376, 41]], [[12843, 12843], "disallowed_STD3_mapped", [40, 28779, 41]], [[12844, 12844], "disallowed_STD3_mapped", [40, 27700, 41]], [[12845, 12845], "disallowed_STD3_mapped", [40, 26408, 41]], [[12846, 12846], "disallowed_STD3_mapped", [40, 37329, 41]], [[12847, 12847], "disallowed_STD3_mapped", [40, 22303, 41]], [[12848, 12848], "disallowed_STD3_mapped", [40, 26085, 41]], [[12849, 12849], "disallowed_STD3_mapped", [40, 26666, 41]], [[12850, 12850], "disallowed_STD3_mapped", [40, 26377, 41]], [[12851, 12851], "disallowed_STD3_mapped", [40, 31038, 41]], [[12852, 12852], "disallowed_STD3_mapped", [40, 21517, 41]], [[12853, 12853], "disallowed_STD3_mapped", [40, 29305, 41]], [[12854, 12854], "disallowed_STD3_mapped", [40, 36001, 41]], [[12855, 12855], "disallowed_STD3_mapped", [40, 31069, 41]], [[12856, 12856], "disallowed_STD3_mapped", [40, 21172, 41]], [[12857, 12857], "disallowed_STD3_mapped", [40, 20195, 41]], [[12858, 12858], "disallowed_STD3_mapped", [40, 21628, 41]], [[12859, 12859], "disallowed_STD3_mapped", [40, 23398, 41]], [[12860, 12860], "disallowed_STD3_mapped", [40, 30435, 41]], [[12861, 12861], "disallowed_STD3_mapped", [40, 20225, 41]], [[12862, 12862], "disallowed_STD3_mapped", [40, 36039, 41]], [[12863, 12863], "disallowed_STD3_mapped", [40, 21332, 41]], [[12864, 12864], "disallowed_STD3_mapped", [40, 31085, 41]], [[12865, 12865], "disallowed_STD3_mapped", [40, 20241, 41]], [[12866, 12866], "disallowed_STD3_mapped", [40, 33258, 41]], [[12867, 12867], "disallowed_STD3_mapped", [40, 33267, 41]], [[12868, 12868], "mapped", [21839]], [[12869, 12869], "mapped", [24188]], [[12870, 12870], "mapped", [25991]], [[12871, 12871], "mapped", [31631]], [[12872, 12879], "valid", [], "NV8"], [[12880, 12880], "mapped", [112, 116, 101]], [[12881, 12881], "mapped", [50, 49]], [[12882, 12882], "mapped", [50, 50]], [[12883, 12883], "mapped", [50, 51]], [[12884, 12884], "mapped", [50, 52]], [[12885, 12885], "mapped", [50, 53]], [[12886, 12886], "mapped", [50, 54]], [[12887, 12887], "mapped", [50, 55]], [[12888, 12888], "mapped", [50, 56]], [[12889, 12889], "mapped", [50, 57]], [[12890, 12890], "mapped", [51, 48]], [[12891, 12891], "mapped", [51, 49]], [[12892, 12892], "mapped", [51, 50]], [[12893, 12893], "mapped", [51, 51]], [[12894, 12894], "mapped", [51, 52]], [[12895, 12895], "mapped", [51, 53]], [[12896, 12896], "mapped", [4352]], [[12897, 12897], "mapped", [4354]], [[12898, 12898], "mapped", [4355]], [[12899, 12899], "mapped", [4357]], [[12900, 12900], "mapped", [4358]], [[12901, 12901], "mapped", [4359]], [[12902, 12902], "mapped", [4361]], [[12903, 12903], "mapped", [4363]], [[12904, 12904], "mapped", [4364]], [[12905, 12905], "mapped", [4366]], [[12906, 12906], "mapped", [4367]], [[12907, 12907], "mapped", [4368]], [[12908, 12908], "mapped", [4369]], [[12909, 12909], "mapped", [4370]], [[12910, 12910], "mapped", [44032]], [[12911, 12911], "mapped", [45208]], [[12912, 12912], "mapped", [45796]], [[12913, 12913], "mapped", [46972]], [[12914, 12914], "mapped", [47560]], [[12915, 12915], "mapped", [48148]], [[12916, 12916], "mapped", [49324]], [[12917, 12917], "mapped", [50500]], [[12918, 12918], "mapped", [51088]], [[12919, 12919], "mapped", [52264]], [[12920, 12920], "mapped", [52852]], [[12921, 12921], "mapped", [53440]], [[12922, 12922], "mapped", [54028]], [[12923, 12923], "mapped", [54616]], [[12924, 12924], "mapped", [52280, 44256]], [[12925, 12925], "mapped", [51452, 51032]], [[12926, 12926], "mapped", [50864]], [[12927, 12927], "valid", [], "NV8"], [[12928, 12928], "mapped", [19968]], [[12929, 12929], "mapped", [20108]], [[12930, 12930], "mapped", [19977]], [[12931, 12931], "mapped", [22235]], [[12932, 12932], "mapped", [20116]], [[12933, 12933], "mapped", [20845]], [[12934, 12934], "mapped", [19971]], [[12935, 12935], "mapped", [20843]], [[12936, 12936], "mapped", [20061]], [[12937, 12937], "mapped", [21313]], [[12938, 12938], "mapped", [26376]], [[12939, 12939], "mapped", [28779]], [[12940, 12940], "mapped", [27700]], [[12941, 12941], "mapped", [26408]], [[12942, 12942], "mapped", [37329]], [[12943, 12943], "mapped", [22303]], [[12944, 12944], "mapped", [26085]], [[12945, 12945], "mapped", [26666]], [[12946, 12946], "mapped", [26377]], [[12947, 12947], "mapped", [31038]], [[12948, 12948], "mapped", [21517]], [[12949, 12949], "mapped", [29305]], [[12950, 12950], "mapped", [36001]], [[12951, 12951], "mapped", [31069]], [[12952, 12952], "mapped", [21172]], [[12953, 12953], "mapped", [31192]], [[12954, 12954], "mapped", [30007]], [[12955, 12955], "mapped", [22899]], [[12956, 12956], "mapped", [36969]], [[12957, 12957], "mapped", [20778]], [[12958, 12958], "mapped", [21360]], [[12959, 12959], "mapped", [27880]], [[12960, 12960], "mapped", [38917]], [[12961, 12961], "mapped", [20241]], [[12962, 12962], "mapped", [20889]], [[12963, 12963], "mapped", [27491]], [[12964, 12964], "mapped", [19978]], [[12965, 12965], "mapped", [20013]], [[12966, 12966], "mapped", [19979]], [[12967, 12967], "mapped", [24038]], [[12968, 12968], "mapped", [21491]], [[12969, 12969], "mapped", [21307]], [[12970, 12970], "mapped", [23447]], [[12971, 12971], "mapped", [23398]], [[12972, 12972], "mapped", [30435]], [[12973, 12973], "mapped", [20225]], [[12974, 12974], "mapped", [36039]], [[12975, 12975], "mapped", [21332]], [[12976, 12976], "mapped", [22812]], [[12977, 12977], "mapped", [51, 54]], [[12978, 12978], "mapped", [51, 55]], [[12979, 12979], "mapped", [51, 56]], [[12980, 12980], "mapped", [51, 57]], [[12981, 12981], "mapped", [52, 48]], [[12982, 12982], "mapped", [52, 49]], [[12983, 12983], "mapped", [52, 50]], [[12984, 12984], "mapped", [52, 51]], [[12985, 12985], "mapped", [52, 52]], [[12986, 12986], "mapped", [52, 53]], [[12987, 12987], "mapped", [52, 54]], [[12988, 12988], "mapped", [52, 55]], [[12989, 12989], "mapped", [52, 56]], [[12990, 12990], "mapped", [52, 57]], [[12991, 12991], "mapped", [53, 48]], [[12992, 12992], "mapped", [49, 26376]], [[12993, 12993], "mapped", [50, 26376]], [[12994, 12994], "mapped", [51, 26376]], [[12995, 12995], "mapped", [52, 26376]], [[12996, 12996], "mapped", [53, 26376]], [[12997, 12997], "mapped", [54, 26376]], [[12998, 12998], "mapped", [55, 26376]], [[12999, 12999], "mapped", [56, 26376]], [[13e3, 13e3], "mapped", [57, 26376]], [[13001, 13001], "mapped", [49, 48, 26376]], [[13002, 13002], "mapped", [49, 49, 26376]], [[13003, 13003], "mapped", [49, 50, 26376]], [[13004, 13004], "mapped", [104, 103]], [[13005, 13005], "mapped", [101, 114, 103]], [[13006, 13006], "mapped", [101, 118]], [[13007, 13007], "mapped", [108, 116, 100]], [[13008, 13008], "mapped", [12450]], [[13009, 13009], "mapped", [12452]], [[13010, 13010], "mapped", [12454]], [[13011, 13011], "mapped", [12456]], [[13012, 13012], "mapped", [12458]], [[13013, 13013], "mapped", [12459]], [[13014, 13014], "mapped", [12461]], [[13015, 13015], "mapped", [12463]], [[13016, 13016], "mapped", [12465]], [[13017, 13017], "mapped", [12467]], [[13018, 13018], "mapped", [12469]], [[13019, 13019], "mapped", [12471]], [[13020, 13020], "mapped", [12473]], [[13021, 13021], "mapped", [12475]], [[13022, 13022], "mapped", [12477]], [[13023, 13023], "mapped", [12479]], [[13024, 13024], "mapped", [12481]], [[13025, 13025], "mapped", [12484]], [[13026, 13026], "mapped", [12486]], [[13027, 13027], "mapped", [12488]], [[13028, 13028], "mapped", [12490]], [[13029, 13029], "mapped", [12491]], [[13030, 13030], "mapped", [12492]], [[13031, 13031], "mapped", [12493]], [[13032, 13032], "mapped", [12494]], [[13033, 13033], "mapped", [12495]], [[13034, 13034], "mapped", [12498]], [[13035, 13035], "mapped", [12501]], [[13036, 13036], "mapped", [12504]], [[13037, 13037], "mapped", [12507]], [[13038, 13038], "mapped", [12510]], [[13039, 13039], "mapped", [12511]], [[13040, 13040], "mapped", [12512]], [[13041, 13041], "mapped", [12513]], [[13042, 13042], "mapped", [12514]], [[13043, 13043], "mapped", [12516]], [[13044, 13044], "mapped", [12518]], [[13045, 13045], "mapped", [12520]], [[13046, 13046], "mapped", [12521]], [[13047, 13047], "mapped", [12522]], [[13048, 13048], "mapped", [12523]], [[13049, 13049], "mapped", [12524]], [[13050, 13050], "mapped", [12525]], [[13051, 13051], "mapped", [12527]], [[13052, 13052], "mapped", [12528]], [[13053, 13053], "mapped", [12529]], [[13054, 13054], "mapped", [12530]], [[13055, 13055], "disallowed"], [[13056, 13056], "mapped", [12450, 12497, 12540, 12488]], [[13057, 13057], "mapped", [12450, 12523, 12501, 12449]], [[13058, 13058], "mapped", [12450, 12531, 12506, 12450]], [[13059, 13059], "mapped", [12450, 12540, 12523]], [[13060, 13060], "mapped", [12452, 12491, 12531, 12464]], [[13061, 13061], "mapped", [12452, 12531, 12481]], [[13062, 13062], "mapped", [12454, 12457, 12531]], [[13063, 13063], "mapped", [12456, 12473, 12463, 12540, 12489]], [[13064, 13064], "mapped", [12456, 12540, 12459, 12540]], [[13065, 13065], "mapped", [12458, 12531, 12473]], [[13066, 13066], "mapped", [12458, 12540, 12512]], [[13067, 13067], "mapped", [12459, 12452, 12522]], [[13068, 13068], "mapped", [12459, 12521, 12483, 12488]], [[13069, 13069], "mapped", [12459, 12525, 12522, 12540]], [[13070, 13070], "mapped", [12460, 12525, 12531]], [[13071, 13071], "mapped", [12460, 12531, 12510]], [[13072, 13072], "mapped", [12462, 12460]], [[13073, 13073], "mapped", [12462, 12491, 12540]], [[13074, 13074], "mapped", [12461, 12517, 12522, 12540]], [[13075, 13075], "mapped", [12462, 12523, 12480, 12540]], [[13076, 13076], "mapped", [12461, 12525]], [[13077, 13077], "mapped", [12461, 12525, 12464, 12521, 12512]], [[13078, 13078], "mapped", [12461, 12525, 12513, 12540, 12488, 12523]], [[13079, 13079], "mapped", [12461, 12525, 12527, 12483, 12488]], [[13080, 13080], "mapped", [12464, 12521, 12512]], [[13081, 13081], "mapped", [12464, 12521, 12512, 12488, 12531]], [[13082, 13082], "mapped", [12463, 12523, 12476, 12452, 12525]], [[13083, 13083], "mapped", [12463, 12525, 12540, 12493]], [[13084, 13084], "mapped", [12465, 12540, 12473]], [[13085, 13085], "mapped", [12467, 12523, 12490]], [[13086, 13086], "mapped", [12467, 12540, 12509]], [[13087, 13087], "mapped", [12469, 12452, 12463, 12523]], [[13088, 13088], "mapped", [12469, 12531, 12481, 12540, 12512]], [[13089, 13089], "mapped", [12471, 12522, 12531, 12464]], [[13090, 13090], "mapped", [12475, 12531, 12481]], [[13091, 13091], "mapped", [12475, 12531, 12488]], [[13092, 13092], "mapped", [12480, 12540, 12473]], [[13093, 13093], "mapped", [12487, 12471]], [[13094, 13094], "mapped", [12489, 12523]], [[13095, 13095], "mapped", [12488, 12531]], [[13096, 13096], "mapped", [12490, 12494]], [[13097, 13097], "mapped", [12494, 12483, 12488]], [[13098, 13098], "mapped", [12495, 12452, 12484]], [[13099, 13099], "mapped", [12497, 12540, 12475, 12531, 12488]], [[13100, 13100], "mapped", [12497, 12540, 12484]], [[13101, 13101], "mapped", [12496, 12540, 12524, 12523]], [[13102, 13102], "mapped", [12500, 12450, 12473, 12488, 12523]], [[13103, 13103], "mapped", [12500, 12463, 12523]], [[13104, 13104], "mapped", [12500, 12467]], [[13105, 13105], "mapped", [12499, 12523]], [[13106, 13106], "mapped", [12501, 12449, 12521, 12483, 12489]], [[13107, 13107], "mapped", [12501, 12451, 12540, 12488]], [[13108, 13108], "mapped", [12502, 12483, 12471, 12455, 12523]], [[13109, 13109], "mapped", [12501, 12521, 12531]], [[13110, 13110], "mapped", [12504, 12463, 12479, 12540, 12523]], [[13111, 13111], "mapped", [12506, 12477]], [[13112, 13112], "mapped", [12506, 12491, 12498]], [[13113, 13113], "mapped", [12504, 12523, 12484]], [[13114, 13114], "mapped", [12506, 12531, 12473]], [[13115, 13115], "mapped", [12506, 12540, 12472]], [[13116, 13116], "mapped", [12505, 12540, 12479]], [[13117, 13117], "mapped", [12509, 12452, 12531, 12488]], [[13118, 13118], "mapped", [12508, 12523, 12488]], [[13119, 13119], "mapped", [12507, 12531]], [[13120, 13120], "mapped", [12509, 12531, 12489]], [[13121, 13121], "mapped", [12507, 12540, 12523]], [[13122, 13122], "mapped", [12507, 12540, 12531]], [[13123, 13123], "mapped", [12510, 12452, 12463, 12525]], [[13124, 13124], "mapped", [12510, 12452, 12523]], [[13125, 13125], "mapped", [12510, 12483, 12495]], [[13126, 13126], "mapped", [12510, 12523, 12463]], [[13127, 13127], "mapped", [12510, 12531, 12471, 12519, 12531]], [[13128, 13128], "mapped", [12511, 12463, 12525, 12531]], [[13129, 13129], "mapped", [12511, 12522]], [[13130, 13130], "mapped", [12511, 12522, 12496, 12540, 12523]], [[13131, 13131], "mapped", [12513, 12460]], [[13132, 13132], "mapped", [12513, 12460, 12488, 12531]], [[13133, 13133], "mapped", [12513, 12540, 12488, 12523]], [[13134, 13134], "mapped", [12516, 12540, 12489]], [[13135, 13135], "mapped", [12516, 12540, 12523]], [[13136, 13136], "mapped", [12518, 12450, 12531]], [[13137, 13137], "mapped", [12522, 12483, 12488, 12523]], [[13138, 13138], "mapped", [12522, 12521]], [[13139, 13139], "mapped", [12523, 12500, 12540]], [[13140, 13140], "mapped", [12523, 12540, 12502, 12523]], [[13141, 13141], "mapped", [12524, 12512]], [[13142, 13142], "mapped", [12524, 12531, 12488, 12466, 12531]], [[13143, 13143], "mapped", [12527, 12483, 12488]], [[13144, 13144], "mapped", [48, 28857]], [[13145, 13145], "mapped", [49, 28857]], [[13146, 13146], "mapped", [50, 28857]], [[13147, 13147], "mapped", [51, 28857]], [[13148, 13148], "mapped", [52, 28857]], [[13149, 13149], "mapped", [53, 28857]], [[13150, 13150], "mapped", [54, 28857]], [[13151, 13151], "mapped", [55, 28857]], [[13152, 13152], "mapped", [56, 28857]], [[13153, 13153], "mapped", [57, 28857]], [[13154, 13154], "mapped", [49, 48, 28857]], [[13155, 13155], "mapped", [49, 49, 28857]], [[13156, 13156], "mapped", [49, 50, 28857]], [[13157, 13157], "mapped", [49, 51, 28857]], [[13158, 13158], "mapped", [49, 52, 28857]], [[13159, 13159], "mapped", [49, 53, 28857]], [[13160, 13160], "mapped", [49, 54, 28857]], [[13161, 13161], "mapped", [49, 55, 28857]], [[13162, 13162], "mapped", [49, 56, 28857]], [[13163, 13163], "mapped", [49, 57, 28857]], [[13164, 13164], "mapped", [50, 48, 28857]], [[13165, 13165], "mapped", [50, 49, 28857]], [[13166, 13166], "mapped", [50, 50, 28857]], [[13167, 13167], "mapped", [50, 51, 28857]], [[13168, 13168], "mapped", [50, 52, 28857]], [[13169, 13169], "mapped", [104, 112, 97]], [[13170, 13170], "mapped", [100, 97]], [[13171, 13171], "mapped", [97, 117]], [[13172, 13172], "mapped", [98, 97, 114]], [[13173, 13173], "mapped", [111, 118]], [[13174, 13174], "mapped", [112, 99]], [[13175, 13175], "mapped", [100, 109]], [[13176, 13176], "mapped", [100, 109, 50]], [[13177, 13177], "mapped", [100, 109, 51]], [[13178, 13178], "mapped", [105, 117]], [[13179, 13179], "mapped", [24179, 25104]], [[13180, 13180], "mapped", [26157, 21644]], [[13181, 13181], "mapped", [22823, 27491]], [[13182, 13182], "mapped", [26126, 27835]], [[13183, 13183], "mapped", [26666, 24335, 20250, 31038]], [[13184, 13184], "mapped", [112, 97]], [[13185, 13185], "mapped", [110, 97]], [[13186, 13186], "mapped", [956, 97]], [[13187, 13187], "mapped", [109, 97]], [[13188, 13188], "mapped", [107, 97]], [[13189, 13189], "mapped", [107, 98]], [[13190, 13190], "mapped", [109, 98]], [[13191, 13191], "mapped", [103, 98]], [[13192, 13192], "mapped", [99, 97, 108]], [[13193, 13193], "mapped", [107, 99, 97, 108]], [[13194, 13194], "mapped", [112, 102]], [[13195, 13195], "mapped", [110, 102]], [[13196, 13196], "mapped", [956, 102]], [[13197, 13197], "mapped", [956, 103]], [[13198, 13198], "mapped", [109, 103]], [[13199, 13199], "mapped", [107, 103]], [[13200, 13200], "mapped", [104, 122]], [[13201, 13201], "mapped", [107, 104, 122]], [[13202, 13202], "mapped", [109, 104, 122]], [[13203, 13203], "mapped", [103, 104, 122]], [[13204, 13204], "mapped", [116, 104, 122]], [[13205, 13205], "mapped", [956, 108]], [[13206, 13206], "mapped", [109, 108]], [[13207, 13207], "mapped", [100, 108]], [[13208, 13208], "mapped", [107, 108]], [[13209, 13209], "mapped", [102, 109]], [[13210, 13210], "mapped", [110, 109]], [[13211, 13211], "mapped", [956, 109]], [[13212, 13212], "mapped", [109, 109]], [[13213, 13213], "mapped", [99, 109]], [[13214, 13214], "mapped", [107, 109]], [[13215, 13215], "mapped", [109, 109, 50]], [[13216, 13216], "mapped", [99, 109, 50]], [[13217, 13217], "mapped", [109, 50]], [[13218, 13218], "mapped", [107, 109, 50]], [[13219, 13219], "mapped", [109, 109, 51]], [[13220, 13220], "mapped", [99, 109, 51]], [[13221, 13221], "mapped", [109, 51]], [[13222, 13222], "mapped", [107, 109, 51]], [[13223, 13223], "mapped", [109, 8725, 115]], [[13224, 13224], "mapped", [109, 8725, 115, 50]], [[13225, 13225], "mapped", [112, 97]], [[13226, 13226], "mapped", [107, 112, 97]], [[13227, 13227], "mapped", [109, 112, 97]], [[13228, 13228], "mapped", [103, 112, 97]], [[13229, 13229], "mapped", [114, 97, 100]], [[13230, 13230], "mapped", [114, 97, 100, 8725, 115]], [[13231, 13231], "mapped", [114, 97, 100, 8725, 115, 50]], [[13232, 13232], "mapped", [112, 115]], [[13233, 13233], "mapped", [110, 115]], [[13234, 13234], "mapped", [956, 115]], [[13235, 13235], "mapped", [109, 115]], [[13236, 13236], "mapped", [112, 118]], [[13237, 13237], "mapped", [110, 118]], [[13238, 13238], "mapped", [956, 118]], [[13239, 13239], "mapped", [109, 118]], [[13240, 13240], "mapped", [107, 118]], [[13241, 13241], "mapped", [109, 118]], [[13242, 13242], "mapped", [112, 119]], [[13243, 13243], "mapped", [110, 119]], [[13244, 13244], "mapped", [956, 119]], [[13245, 13245], "mapped", [109, 119]], [[13246, 13246], "mapped", [107, 119]], [[13247, 13247], "mapped", [109, 119]], [[13248, 13248], "mapped", [107, 969]], [[13249, 13249], "mapped", [109, 969]], [[13250, 13250], "disallowed"], [[13251, 13251], "mapped", [98, 113]], [[13252, 13252], "mapped", [99, 99]], [[13253, 13253], "mapped", [99, 100]], [[13254, 13254], "mapped", [99, 8725, 107, 103]], [[13255, 13255], "disallowed"], [[13256, 13256], "mapped", [100, 98]], [[13257, 13257], "mapped", [103, 121]], [[13258, 13258], "mapped", [104, 97]], [[13259, 13259], "mapped", [104, 112]], [[13260, 13260], "mapped", [105, 110]], [[13261, 13261], "mapped", [107, 107]], [[13262, 13262], "mapped", [107, 109]], [[13263, 13263], "mapped", [107, 116]], [[13264, 13264], "mapped", [108, 109]], [[13265, 13265], "mapped", [108, 110]], [[13266, 13266], "mapped", [108, 111, 103]], [[13267, 13267], "mapped", [108, 120]], [[13268, 13268], "mapped", [109, 98]], [[13269, 13269], "mapped", [109, 105, 108]], [[13270, 13270], "mapped", [109, 111, 108]], [[13271, 13271], "mapped", [112, 104]], [[13272, 13272], "disallowed"], [[13273, 13273], "mapped", [112, 112, 109]], [[13274, 13274], "mapped", [112, 114]], [[13275, 13275], "mapped", [115, 114]], [[13276, 13276], "mapped", [115, 118]], [[13277, 13277], "mapped", [119, 98]], [[13278, 13278], "mapped", [118, 8725, 109]], [[13279, 13279], "mapped", [97, 8725, 109]], [[13280, 13280], "mapped", [49, 26085]], [[13281, 13281], "mapped", [50, 26085]], [[13282, 13282], "mapped", [51, 26085]], [[13283, 13283], "mapped", [52, 26085]], [[13284, 13284], "mapped", [53, 26085]], [[13285, 13285], "mapped", [54, 26085]], [[13286, 13286], "mapped", [55, 26085]], [[13287, 13287], "mapped", [56, 26085]], [[13288, 13288], "mapped", [57, 26085]], [[13289, 13289], "mapped", [49, 48, 26085]], [[13290, 13290], "mapped", [49, 49, 26085]], [[13291, 13291], "mapped", [49, 50, 26085]], [[13292, 13292], "mapped", [49, 51, 26085]], [[13293, 13293], "mapped", [49, 52, 26085]], [[13294, 13294], "mapped", [49, 53, 26085]], [[13295, 13295], "mapped", [49, 54, 26085]], [[13296, 13296], "mapped", [49, 55, 26085]], [[13297, 13297], "mapped", [49, 56, 26085]], [[13298, 13298], "mapped", [49, 57, 26085]], [[13299, 13299], "mapped", [50, 48, 26085]], [[13300, 13300], "mapped", [50, 49, 26085]], [[13301, 13301], "mapped", [50, 50, 26085]], [[13302, 13302], "mapped", [50, 51, 26085]], [[13303, 13303], "mapped", [50, 52, 26085]], [[13304, 13304], "mapped", [50, 53, 26085]], [[13305, 13305], "mapped", [50, 54, 26085]], [[13306, 13306], "mapped", [50, 55, 26085]], [[13307, 13307], "mapped", [50, 56, 26085]], [[13308, 13308], "mapped", [50, 57, 26085]], [[13309, 13309], "mapped", [51, 48, 26085]], [[13310, 13310], "mapped", [51, 49, 26085]], [[13311, 13311], "mapped", [103, 97, 108]], [[13312, 19893], "valid"], [[19894, 19903], "disallowed"], [[19904, 19967], "valid", [], "NV8"], [[19968, 40869], "valid"], [[40870, 40891], "valid"], [[40892, 40899], "valid"], [[40900, 40907], "valid"], [[40908, 40908], "valid"], [[40909, 40917], "valid"], [[40918, 40959], "disallowed"], [[40960, 42124], "valid"], [[42125, 42127], "disallowed"], [[42128, 42145], "valid", [], "NV8"], [[42146, 42147], "valid", [], "NV8"], [[42148, 42163], "valid", [], "NV8"], [[42164, 42164], "valid", [], "NV8"], [[42165, 42176], "valid", [], "NV8"], [[42177, 42177], "valid", [], "NV8"], [[42178, 42180], "valid", [], "NV8"], [[42181, 42181], "valid", [], "NV8"], [[42182, 42182], "valid", [], "NV8"], [[42183, 42191], "disallowed"], [[42192, 42237], "valid"], [[42238, 42239], "valid", [], "NV8"], [[42240, 42508], "valid"], [[42509, 42511], "valid", [], "NV8"], [[42512, 42539], "valid"], [[42540, 42559], "disallowed"], [[42560, 42560], "mapped", [42561]], [[42561, 42561], "valid"], [[42562, 42562], "mapped", [42563]], [[42563, 42563], "valid"], [[42564, 42564], "mapped", [42565]], [[42565, 42565], "valid"], [[42566, 42566], "mapped", [42567]], [[42567, 42567], "valid"], [[42568, 42568], "mapped", [42569]], [[42569, 42569], "valid"], [[42570, 42570], "mapped", [42571]], [[42571, 42571], "valid"], [[42572, 42572], "mapped", [42573]], [[42573, 42573], "valid"], [[42574, 42574], "mapped", [42575]], [[42575, 42575], "valid"], [[42576, 42576], "mapped", [42577]], [[42577, 42577], "valid"], [[42578, 42578], "mapped", [42579]], [[42579, 42579], "valid"], [[42580, 42580], "mapped", [42581]], [[42581, 42581], "valid"], [[42582, 42582], "mapped", [42583]], [[42583, 42583], "valid"], [[42584, 42584], "mapped", [42585]], [[42585, 42585], "valid"], [[42586, 42586], "mapped", [42587]], [[42587, 42587], "valid"], [[42588, 42588], "mapped", [42589]], [[42589, 42589], "valid"], [[42590, 42590], "mapped", [42591]], [[42591, 42591], "valid"], [[42592, 42592], "mapped", [42593]], [[42593, 42593], "valid"], [[42594, 42594], "mapped", [42595]], [[42595, 42595], "valid"], [[42596, 42596], "mapped", [42597]], [[42597, 42597], "valid"], [[42598, 42598], "mapped", [42599]], [[42599, 42599], "valid"], [[42600, 42600], "mapped", [42601]], [[42601, 42601], "valid"], [[42602, 42602], "mapped", [42603]], [[42603, 42603], "valid"], [[42604, 42604], "mapped", [42605]], [[42605, 42607], "valid"], [[42608, 42611], "valid", [], "NV8"], [[42612, 42619], "valid"], [[42620, 42621], "valid"], [[42622, 42622], "valid", [], "NV8"], [[42623, 42623], "valid"], [[42624, 42624], "mapped", [42625]], [[42625, 42625], "valid"], [[42626, 42626], "mapped", [42627]], [[42627, 42627], "valid"], [[42628, 42628], "mapped", [42629]], [[42629, 42629], "valid"], [[42630, 42630], "mapped", [42631]], [[42631, 42631], "valid"], [[42632, 42632], "mapped", [42633]], [[42633, 42633], "valid"], [[42634, 42634], "mapped", [42635]], [[42635, 42635], "valid"], [[42636, 42636], "mapped", [42637]], [[42637, 42637], "valid"], [[42638, 42638], "mapped", [42639]], [[42639, 42639], "valid"], [[42640, 42640], "mapped", [42641]], [[42641, 42641], "valid"], [[42642, 42642], "mapped", [42643]], [[42643, 42643], "valid"], [[42644, 42644], "mapped", [42645]], [[42645, 42645], "valid"], [[42646, 42646], "mapped", [42647]], [[42647, 42647], "valid"], [[42648, 42648], "mapped", [42649]], [[42649, 42649], "valid"], [[42650, 42650], "mapped", [42651]], [[42651, 42651], "valid"], [[42652, 42652], "mapped", [1098]], [[42653, 42653], "mapped", [1100]], [[42654, 42654], "valid"], [[42655, 42655], "valid"], [[42656, 42725], "valid"], [[42726, 42735], "valid", [], "NV8"], [[42736, 42737], "valid"], [[42738, 42743], "valid", [], "NV8"], [[42744, 42751], "disallowed"], [[42752, 42774], "valid", [], "NV8"], [[42775, 42778], "valid"], [[42779, 42783], "valid"], [[42784, 42785], "valid", [], "NV8"], [[42786, 42786], "mapped", [42787]], [[42787, 42787], "valid"], [[42788, 42788], "mapped", [42789]], [[42789, 42789], "valid"], [[42790, 42790], "mapped", [42791]], [[42791, 42791], "valid"], [[42792, 42792], "mapped", [42793]], [[42793, 42793], "valid"], [[42794, 42794], "mapped", [42795]], [[42795, 42795], "valid"], [[42796, 42796], "mapped", [42797]], [[42797, 42797], "valid"], [[42798, 42798], "mapped", [42799]], [[42799, 42801], "valid"], [[42802, 42802], "mapped", [42803]], [[42803, 42803], "valid"], [[42804, 42804], "mapped", [42805]], [[42805, 42805], "valid"], [[42806, 42806], "mapped", [42807]], [[42807, 42807], "valid"], [[42808, 42808], "mapped", [42809]], [[42809, 42809], "valid"], [[42810, 42810], "mapped", [42811]], [[42811, 42811], "valid"], [[42812, 42812], "mapped", [42813]], [[42813, 42813], "valid"], [[42814, 42814], "mapped", [42815]], [[42815, 42815], "valid"], [[42816, 42816], "mapped", [42817]], [[42817, 42817], "valid"], [[42818, 42818], "mapped", [42819]], [[42819, 42819], "valid"], [[42820, 42820], "mapped", [42821]], [[42821, 42821], "valid"], [[42822, 42822], "mapped", [42823]], [[42823, 42823], "valid"], [[42824, 42824], "mapped", [42825]], [[42825, 42825], "valid"], [[42826, 42826], "mapped", [42827]], [[42827, 42827], "valid"], [[42828, 42828], "mapped", [42829]], [[42829, 42829], "valid"], [[42830, 42830], "mapped", [42831]], [[42831, 42831], "valid"], [[42832, 42832], "mapped", [42833]], [[42833, 42833], "valid"], [[42834, 42834], "mapped", [42835]], [[42835, 42835], "valid"], [[42836, 42836], "mapped", [42837]], [[42837, 42837], "valid"], [[42838, 42838], "mapped", [42839]], [[42839, 42839], "valid"], [[42840, 42840], "mapped", [42841]], [[42841, 42841], "valid"], [[42842, 42842], "mapped", [42843]], [[42843, 42843], "valid"], [[42844, 42844], "mapped", [42845]], [[42845, 42845], "valid"], [[42846, 42846], "mapped", [42847]], [[42847, 42847], "valid"], [[42848, 42848], "mapped", [42849]], [[42849, 42849], "valid"], [[42850, 42850], "mapped", [42851]], [[42851, 42851], "valid"], [[42852, 42852], "mapped", [42853]], [[42853, 42853], "valid"], [[42854, 42854], "mapped", [42855]], [[42855, 42855], "valid"], [[42856, 42856], "mapped", [42857]], [[42857, 42857], "valid"], [[42858, 42858], "mapped", [42859]], [[42859, 42859], "valid"], [[42860, 42860], "mapped", [42861]], [[42861, 42861], "valid"], [[42862, 42862], "mapped", [42863]], [[42863, 42863], "valid"], [[42864, 42864], "mapped", [42863]], [[42865, 42872], "valid"], [[42873, 42873], "mapped", [42874]], [[42874, 42874], "valid"], [[42875, 42875], "mapped", [42876]], [[42876, 42876], "valid"], [[42877, 42877], "mapped", [7545]], [[42878, 42878], "mapped", [42879]], [[42879, 42879], "valid"], [[42880, 42880], "mapped", [42881]], [[42881, 42881], "valid"], [[42882, 42882], "mapped", [42883]], [[42883, 42883], "valid"], [[42884, 42884], "mapped", [42885]], [[42885, 42885], "valid"], [[42886, 42886], "mapped", [42887]], [[42887, 42888], "valid"], [[42889, 42890], "valid", [], "NV8"], [[42891, 42891], "mapped", [42892]], [[42892, 42892], "valid"], [[42893, 42893], "mapped", [613]], [[42894, 42894], "valid"], [[42895, 42895], "valid"], [[42896, 42896], "mapped", [42897]], [[42897, 42897], "valid"], [[42898, 42898], "mapped", [42899]], [[42899, 42899], "valid"], [[42900, 42901], "valid"], [[42902, 42902], "mapped", [42903]], [[42903, 42903], "valid"], [[42904, 42904], "mapped", [42905]], [[42905, 42905], "valid"], [[42906, 42906], "mapped", [42907]], [[42907, 42907], "valid"], [[42908, 42908], "mapped", [42909]], [[42909, 42909], "valid"], [[42910, 42910], "mapped", [42911]], [[42911, 42911], "valid"], [[42912, 42912], "mapped", [42913]], [[42913, 42913], "valid"], [[42914, 42914], "mapped", [42915]], [[42915, 42915], "valid"], [[42916, 42916], "mapped", [42917]], [[42917, 42917], "valid"], [[42918, 42918], "mapped", [42919]], [[42919, 42919], "valid"], [[42920, 42920], "mapped", [42921]], [[42921, 42921], "valid"], [[42922, 42922], "mapped", [614]], [[42923, 42923], "mapped", [604]], [[42924, 42924], "mapped", [609]], [[42925, 42925], "mapped", [620]], [[42926, 42927], "disallowed"], [[42928, 42928], "mapped", [670]], [[42929, 42929], "mapped", [647]], [[42930, 42930], "mapped", [669]], [[42931, 42931], "mapped", [43859]], [[42932, 42932], "mapped", [42933]], [[42933, 42933], "valid"], [[42934, 42934], "mapped", [42935]], [[42935, 42935], "valid"], [[42936, 42998], "disallowed"], [[42999, 42999], "valid"], [[43e3, 43e3], "mapped", [295]], [[43001, 43001], "mapped", [339]], [[43002, 43002], "valid"], [[43003, 43007], "valid"], [[43008, 43047], "valid"], [[43048, 43051], "valid", [], "NV8"], [[43052, 43055], "disallowed"], [[43056, 43065], "valid", [], "NV8"], [[43066, 43071], "disallowed"], [[43072, 43123], "valid"], [[43124, 43127], "valid", [], "NV8"], [[43128, 43135], "disallowed"], [[43136, 43204], "valid"], [[43205, 43213], "disallowed"], [[43214, 43215], "valid", [], "NV8"], [[43216, 43225], "valid"], [[43226, 43231], "disallowed"], [[43232, 43255], "valid"], [[43256, 43258], "valid", [], "NV8"], [[43259, 43259], "valid"], [[43260, 43260], "valid", [], "NV8"], [[43261, 43261], "valid"], [[43262, 43263], "disallowed"], [[43264, 43309], "valid"], [[43310, 43311], "valid", [], "NV8"], [[43312, 43347], "valid"], [[43348, 43358], "disallowed"], [[43359, 43359], "valid", [], "NV8"], [[43360, 43388], "valid", [], "NV8"], [[43389, 43391], "disallowed"], [[43392, 43456], "valid"], [[43457, 43469], "valid", [], "NV8"], [[43470, 43470], "disallowed"], [[43471, 43481], "valid"], [[43482, 43485], "disallowed"], [[43486, 43487], "valid", [], "NV8"], [[43488, 43518], "valid"], [[43519, 43519], "disallowed"], [[43520, 43574], "valid"], [[43575, 43583], "disallowed"], [[43584, 43597], "valid"], [[43598, 43599], "disallowed"], [[43600, 43609], "valid"], [[43610, 43611], "disallowed"], [[43612, 43615], "valid", [], "NV8"], [[43616, 43638], "valid"], [[43639, 43641], "valid", [], "NV8"], [[43642, 43643], "valid"], [[43644, 43647], "valid"], [[43648, 43714], "valid"], [[43715, 43738], "disallowed"], [[43739, 43741], "valid"], [[43742, 43743], "valid", [], "NV8"], [[43744, 43759], "valid"], [[43760, 43761], "valid", [], "NV8"], [[43762, 43766], "valid"], [[43767, 43776], "disallowed"], [[43777, 43782], "valid"], [[43783, 43784], "disallowed"], [[43785, 43790], "valid"], [[43791, 43792], "disallowed"], [[43793, 43798], "valid"], [[43799, 43807], "disallowed"], [[43808, 43814], "valid"], [[43815, 43815], "disallowed"], [[43816, 43822], "valid"], [[43823, 43823], "disallowed"], [[43824, 43866], "valid"], [[43867, 43867], "valid", [], "NV8"], [[43868, 43868], "mapped", [42791]], [[43869, 43869], "mapped", [43831]], [[43870, 43870], "mapped", [619]], [[43871, 43871], "mapped", [43858]], [[43872, 43875], "valid"], [[43876, 43877], "valid"], [[43878, 43887], "disallowed"], [[43888, 43888], "mapped", [5024]], [[43889, 43889], "mapped", [5025]], [[43890, 43890], "mapped", [5026]], [[43891, 43891], "mapped", [5027]], [[43892, 43892], "mapped", [5028]], [[43893, 43893], "mapped", [5029]], [[43894, 43894], "mapped", [5030]], [[43895, 43895], "mapped", [5031]], [[43896, 43896], "mapped", [5032]], [[43897, 43897], "mapped", [5033]], [[43898, 43898], "mapped", [5034]], [[43899, 43899], "mapped", [5035]], [[43900, 43900], "mapped", [5036]], [[43901, 43901], "mapped", [5037]], [[43902, 43902], "mapped", [5038]], [[43903, 43903], "mapped", [5039]], [[43904, 43904], "mapped", [5040]], [[43905, 43905], "mapped", [5041]], [[43906, 43906], "mapped", [5042]], [[43907, 43907], "mapped", [5043]], [[43908, 43908], "mapped", [5044]], [[43909, 43909], "mapped", [5045]], [[43910, 43910], "mapped", [5046]], [[43911, 43911], "mapped", [5047]], [[43912, 43912], "mapped", [5048]], [[43913, 43913], "mapped", [5049]], [[43914, 43914], "mapped", [5050]], [[43915, 43915], "mapped", [5051]], [[43916, 43916], "mapped", [5052]], [[43917, 43917], "mapped", [5053]], [[43918, 43918], "mapped", [5054]], [[43919, 43919], "mapped", [5055]], [[43920, 43920], "mapped", [5056]], [[43921, 43921], "mapped", [5057]], [[43922, 43922], "mapped", [5058]], [[43923, 43923], "mapped", [5059]], [[43924, 43924], "mapped", [5060]], [[43925, 43925], "mapped", [5061]], [[43926, 43926], "mapped", [5062]], [[43927, 43927], "mapped", [5063]], [[43928, 43928], "mapped", [5064]], [[43929, 43929], "mapped", [5065]], [[43930, 43930], "mapped", [5066]], [[43931, 43931], "mapped", [5067]], [[43932, 43932], "mapped", [5068]], [[43933, 43933], "mapped", [5069]], [[43934, 43934], "mapped", [5070]], [[43935, 43935], "mapped", [5071]], [[43936, 43936], "mapped", [5072]], [[43937, 43937], "mapped", [5073]], [[43938, 43938], "mapped", [5074]], [[43939, 43939], "mapped", [5075]], [[43940, 43940], "mapped", [5076]], [[43941, 43941], "mapped", [5077]], [[43942, 43942], "mapped", [5078]], [[43943, 43943], "mapped", [5079]], [[43944, 43944], "mapped", [5080]], [[43945, 43945], "mapped", [5081]], [[43946, 43946], "mapped", [5082]], [[43947, 43947], "mapped", [5083]], [[43948, 43948], "mapped", [5084]], [[43949, 43949], "mapped", [5085]], [[43950, 43950], "mapped", [5086]], [[43951, 43951], "mapped", [5087]], [[43952, 43952], "mapped", [5088]], [[43953, 43953], "mapped", [5089]], [[43954, 43954], "mapped", [5090]], [[43955, 43955], "mapped", [5091]], [[43956, 43956], "mapped", [5092]], [[43957, 43957], "mapped", [5093]], [[43958, 43958], "mapped", [5094]], [[43959, 43959], "mapped", [5095]], [[43960, 43960], "mapped", [5096]], [[43961, 43961], "mapped", [5097]], [[43962, 43962], "mapped", [5098]], [[43963, 43963], "mapped", [5099]], [[43964, 43964], "mapped", [5100]], [[43965, 43965], "mapped", [5101]], [[43966, 43966], "mapped", [5102]], [[43967, 43967], "mapped", [5103]], [[43968, 44010], "valid"], [[44011, 44011], "valid", [], "NV8"], [[44012, 44013], "valid"], [[44014, 44015], "disallowed"], [[44016, 44025], "valid"], [[44026, 44031], "disallowed"], [[44032, 55203], "valid"], [[55204, 55215], "disallowed"], [[55216, 55238], "valid", [], "NV8"], [[55239, 55242], "disallowed"], [[55243, 55291], "valid", [], "NV8"], [[55292, 55295], "disallowed"], [[55296, 57343], "disallowed"], [[57344, 63743], "disallowed"], [[63744, 63744], "mapped", [35912]], [[63745, 63745], "mapped", [26356]], [[63746, 63746], "mapped", [36554]], [[63747, 63747], "mapped", [36040]], [[63748, 63748], "mapped", [28369]], [[63749, 63749], "mapped", [20018]], [[63750, 63750], "mapped", [21477]], [[63751, 63752], "mapped", [40860]], [[63753, 63753], "mapped", [22865]], [[63754, 63754], "mapped", [37329]], [[63755, 63755], "mapped", [21895]], [[63756, 63756], "mapped", [22856]], [[63757, 63757], "mapped", [25078]], [[63758, 63758], "mapped", [30313]], [[63759, 63759], "mapped", [32645]], [[63760, 63760], "mapped", [34367]], [[63761, 63761], "mapped", [34746]], [[63762, 63762], "mapped", [35064]], [[63763, 63763], "mapped", [37007]], [[63764, 63764], "mapped", [27138]], [[63765, 63765], "mapped", [27931]], [[63766, 63766], "mapped", [28889]], [[63767, 63767], "mapped", [29662]], [[63768, 63768], "mapped", [33853]], [[63769, 63769], "mapped", [37226]], [[63770, 63770], "mapped", [39409]], [[63771, 63771], "mapped", [20098]], [[63772, 63772], "mapped", [21365]], [[63773, 63773], "mapped", [27396]], [[63774, 63774], "mapped", [29211]], [[63775, 63775], "mapped", [34349]], [[63776, 63776], "mapped", [40478]], [[63777, 63777], "mapped", [23888]], [[63778, 63778], "mapped", [28651]], [[63779, 63779], "mapped", [34253]], [[63780, 63780], "mapped", [35172]], [[63781, 63781], "mapped", [25289]], [[63782, 63782], "mapped", [33240]], [[63783, 63783], "mapped", [34847]], [[63784, 63784], "mapped", [24266]], [[63785, 63785], "mapped", [26391]], [[63786, 63786], "mapped", [28010]], [[63787, 63787], "mapped", [29436]], [[63788, 63788], "mapped", [37070]], [[63789, 63789], "mapped", [20358]], [[63790, 63790], "mapped", [20919]], [[63791, 63791], "mapped", [21214]], [[63792, 63792], "mapped", [25796]], [[63793, 63793], "mapped", [27347]], [[63794, 63794], "mapped", [29200]], [[63795, 63795], "mapped", [30439]], [[63796, 63796], "mapped", [32769]], [[63797, 63797], "mapped", [34310]], [[63798, 63798], "mapped", [34396]], [[63799, 63799], "mapped", [36335]], [[63800, 63800], "mapped", [38706]], [[63801, 63801], "mapped", [39791]], [[63802, 63802], "mapped", [40442]], [[63803, 63803], "mapped", [30860]], [[63804, 63804], "mapped", [31103]], [[63805, 63805], "mapped", [32160]], [[63806, 63806], "mapped", [33737]], [[63807, 63807], "mapped", [37636]], [[63808, 63808], "mapped", [40575]], [[63809, 63809], "mapped", [35542]], [[63810, 63810], "mapped", [22751]], [[63811, 63811], "mapped", [24324]], [[63812, 63812], "mapped", [31840]], [[63813, 63813], "mapped", [32894]], [[63814, 63814], "mapped", [29282]], [[63815, 63815], "mapped", [30922]], [[63816, 63816], "mapped", [36034]], [[63817, 63817], "mapped", [38647]], [[63818, 63818], "mapped", [22744]], [[63819, 63819], "mapped", [23650]], [[63820, 63820], "mapped", [27155]], [[63821, 63821], "mapped", [28122]], [[63822, 63822], "mapped", [28431]], [[63823, 63823], "mapped", [32047]], [[63824, 63824], "mapped", [32311]], [[63825, 63825], "mapped", [38475]], [[63826, 63826], "mapped", [21202]], [[63827, 63827], "mapped", [32907]], [[63828, 63828], "mapped", [20956]], [[63829, 63829], "mapped", [20940]], [[63830, 63830], "mapped", [31260]], [[63831, 63831], "mapped", [32190]], [[63832, 63832], "mapped", [33777]], [[63833, 63833], "mapped", [38517]], [[63834, 63834], "mapped", [35712]], [[63835, 63835], "mapped", [25295]], [[63836, 63836], "mapped", [27138]], [[63837, 63837], "mapped", [35582]], [[63838, 63838], "mapped", [20025]], [[63839, 63839], "mapped", [23527]], [[63840, 63840], "mapped", [24594]], [[63841, 63841], "mapped", [29575]], [[63842, 63842], "mapped", [30064]], [[63843, 63843], "mapped", [21271]], [[63844, 63844], "mapped", [30971]], [[63845, 63845], "mapped", [20415]], [[63846, 63846], "mapped", [24489]], [[63847, 63847], "mapped", [19981]], [[63848, 63848], "mapped", [27852]], [[63849, 63849], "mapped", [25976]], [[63850, 63850], "mapped", [32034]], [[63851, 63851], "mapped", [21443]], [[63852, 63852], "mapped", [22622]], [[63853, 63853], "mapped", [30465]], [[63854, 63854], "mapped", [33865]], [[63855, 63855], "mapped", [35498]], [[63856, 63856], "mapped", [27578]], [[63857, 63857], "mapped", [36784]], [[63858, 63858], "mapped", [27784]], [[63859, 63859], "mapped", [25342]], [[63860, 63860], "mapped", [33509]], [[63861, 63861], "mapped", [25504]], [[63862, 63862], "mapped", [30053]], [[63863, 63863], "mapped", [20142]], [[63864, 63864], "mapped", [20841]], [[63865, 63865], "mapped", [20937]], [[63866, 63866], "mapped", [26753]], [[63867, 63867], "mapped", [31975]], [[63868, 63868], "mapped", [33391]], [[63869, 63869], "mapped", [35538]], [[63870, 63870], "mapped", [37327]], [[63871, 63871], "mapped", [21237]], [[63872, 63872], "mapped", [21570]], [[63873, 63873], "mapped", [22899]], [[63874, 63874], "mapped", [24300]], [[63875, 63875], "mapped", [26053]], [[63876, 63876], "mapped", [28670]], [[63877, 63877], "mapped", [31018]], [[63878, 63878], "mapped", [38317]], [[63879, 63879], "mapped", [39530]], [[63880, 63880], "mapped", [40599]], [[63881, 63881], "mapped", [40654]], [[63882, 63882], "mapped", [21147]], [[63883, 63883], "mapped", [26310]], [[63884, 63884], "mapped", [27511]], [[63885, 63885], "mapped", [36706]], [[63886, 63886], "mapped", [24180]], [[63887, 63887], "mapped", [24976]], [[63888, 63888], "mapped", [25088]], [[63889, 63889], "mapped", [25754]], [[63890, 63890], "mapped", [28451]], [[63891, 63891], "mapped", [29001]], [[63892, 63892], "mapped", [29833]], [[63893, 63893], "mapped", [31178]], [[63894, 63894], "mapped", [32244]], [[63895, 63895], "mapped", [32879]], [[63896, 63896], "mapped", [36646]], [[63897, 63897], "mapped", [34030]], [[63898, 63898], "mapped", [36899]], [[63899, 63899], "mapped", [37706]], [[63900, 63900], "mapped", [21015]], [[63901, 63901], "mapped", [21155]], [[63902, 63902], "mapped", [21693]], [[63903, 63903], "mapped", [28872]], [[63904, 63904], "mapped", [35010]], [[63905, 63905], "mapped", [35498]], [[63906, 63906], "mapped", [24265]], [[63907, 63907], "mapped", [24565]], [[63908, 63908], "mapped", [25467]], [[63909, 63909], "mapped", [27566]], [[63910, 63910], "mapped", [31806]], [[63911, 63911], "mapped", [29557]], [[63912, 63912], "mapped", [20196]], [[63913, 63913], "mapped", [22265]], [[63914, 63914], "mapped", [23527]], [[63915, 63915], "mapped", [23994]], [[63916, 63916], "mapped", [24604]], [[63917, 63917], "mapped", [29618]], [[63918, 63918], "mapped", [29801]], [[63919, 63919], "mapped", [32666]], [[63920, 63920], "mapped", [32838]], [[63921, 63921], "mapped", [37428]], [[63922, 63922], "mapped", [38646]], [[63923, 63923], "mapped", [38728]], [[63924, 63924], "mapped", [38936]], [[63925, 63925], "mapped", [20363]], [[63926, 63926], "mapped", [31150]], [[63927, 63927], "mapped", [37300]], [[63928, 63928], "mapped", [38584]], [[63929, 63929], "mapped", [24801]], [[63930, 63930], "mapped", [20102]], [[63931, 63931], "mapped", [20698]], [[63932, 63932], "mapped", [23534]], [[63933, 63933], "mapped", [23615]], [[63934, 63934], "mapped", [26009]], [[63935, 63935], "mapped", [27138]], [[63936, 63936], "mapped", [29134]], [[63937, 63937], "mapped", [30274]], [[63938, 63938], "mapped", [34044]], [[63939, 63939], "mapped", [36988]], [[63940, 63940], "mapped", [40845]], [[63941, 63941], "mapped", [26248]], [[63942, 63942], "mapped", [38446]], [[63943, 63943], "mapped", [21129]], [[63944, 63944], "mapped", [26491]], [[63945, 63945], "mapped", [26611]], [[63946, 63946], "mapped", [27969]], [[63947, 63947], "mapped", [28316]], [[63948, 63948], "mapped", [29705]], [[63949, 63949], "mapped", [30041]], [[63950, 63950], "mapped", [30827]], [[63951, 63951], "mapped", [32016]], [[63952, 63952], "mapped", [39006]], [[63953, 63953], "mapped", [20845]], [[63954, 63954], "mapped", [25134]], [[63955, 63955], "mapped", [38520]], [[63956, 63956], "mapped", [20523]], [[63957, 63957], "mapped", [23833]], [[63958, 63958], "mapped", [28138]], [[63959, 63959], "mapped", [36650]], [[63960, 63960], "mapped", [24459]], [[63961, 63961], "mapped", [24900]], [[63962, 63962], "mapped", [26647]], [[63963, 63963], "mapped", [29575]], [[63964, 63964], "mapped", [38534]], [[63965, 63965], "mapped", [21033]], [[63966, 63966], "mapped", [21519]], [[63967, 63967], "mapped", [23653]], [[63968, 63968], "mapped", [26131]], [[63969, 63969], "mapped", [26446]], [[63970, 63970], "mapped", [26792]], [[63971, 63971], "mapped", [27877]], [[63972, 63972], "mapped", [29702]], [[63973, 63973], "mapped", [30178]], [[63974, 63974], "mapped", [32633]], [[63975, 63975], "mapped", [35023]], [[63976, 63976], "mapped", [35041]], [[63977, 63977], "mapped", [37324]], [[63978, 63978], "mapped", [38626]], [[63979, 63979], "mapped", [21311]], [[63980, 63980], "mapped", [28346]], [[63981, 63981], "mapped", [21533]], [[63982, 63982], "mapped", [29136]], [[63983, 63983], "mapped", [29848]], [[63984, 63984], "mapped", [34298]], [[63985, 63985], "mapped", [38563]], [[63986, 63986], "mapped", [40023]], [[63987, 63987], "mapped", [40607]], [[63988, 63988], "mapped", [26519]], [[63989, 63989], "mapped", [28107]], [[63990, 63990], "mapped", [33256]], [[63991, 63991], "mapped", [31435]], [[63992, 63992], "mapped", [31520]], [[63993, 63993], "mapped", [31890]], [[63994, 63994], "mapped", [29376]], [[63995, 63995], "mapped", [28825]], [[63996, 63996], "mapped", [35672]], [[63997, 63997], "mapped", [20160]], [[63998, 63998], "mapped", [33590]], [[63999, 63999], "mapped", [21050]], [[64e3, 64e3], "mapped", [20999]], [[64001, 64001], "mapped", [24230]], [[64002, 64002], "mapped", [25299]], [[64003, 64003], "mapped", [31958]], [[64004, 64004], "mapped", [23429]], [[64005, 64005], "mapped", [27934]], [[64006, 64006], "mapped", [26292]], [[64007, 64007], "mapped", [36667]], [[64008, 64008], "mapped", [34892]], [[64009, 64009], "mapped", [38477]], [[64010, 64010], "mapped", [35211]], [[64011, 64011], "mapped", [24275]], [[64012, 64012], "mapped", [20800]], [[64013, 64013], "mapped", [21952]], [[64014, 64015], "valid"], [[64016, 64016], "mapped", [22618]], [[64017, 64017], "valid"], [[64018, 64018], "mapped", [26228]], [[64019, 64020], "valid"], [[64021, 64021], "mapped", [20958]], [[64022, 64022], "mapped", [29482]], [[64023, 64023], "mapped", [30410]], [[64024, 64024], "mapped", [31036]], [[64025, 64025], "mapped", [31070]], [[64026, 64026], "mapped", [31077]], [[64027, 64027], "mapped", [31119]], [[64028, 64028], "mapped", [38742]], [[64029, 64029], "mapped", [31934]], [[64030, 64030], "mapped", [32701]], [[64031, 64031], "valid"], [[64032, 64032], "mapped", [34322]], [[64033, 64033], "valid"], [[64034, 64034], "mapped", [35576]], [[64035, 64036], "valid"], [[64037, 64037], "mapped", [36920]], [[64038, 64038], "mapped", [37117]], [[64039, 64041], "valid"], [[64042, 64042], "mapped", [39151]], [[64043, 64043], "mapped", [39164]], [[64044, 64044], "mapped", [39208]], [[64045, 64045], "mapped", [40372]], [[64046, 64046], "mapped", [37086]], [[64047, 64047], "mapped", [38583]], [[64048, 64048], "mapped", [20398]], [[64049, 64049], "mapped", [20711]], [[64050, 64050], "mapped", [20813]], [[64051, 64051], "mapped", [21193]], [[64052, 64052], "mapped", [21220]], [[64053, 64053], "mapped", [21329]], [[64054, 64054], "mapped", [21917]], [[64055, 64055], "mapped", [22022]], [[64056, 64056], "mapped", [22120]], [[64057, 64057], "mapped", [22592]], [[64058, 64058], "mapped", [22696]], [[64059, 64059], "mapped", [23652]], [[64060, 64060], "mapped", [23662]], [[64061, 64061], "mapped", [24724]], [[64062, 64062], "mapped", [24936]], [[64063, 64063], "mapped", [24974]], [[64064, 64064], "mapped", [25074]], [[64065, 64065], "mapped", [25935]], [[64066, 64066], "mapped", [26082]], [[64067, 64067], "mapped", [26257]], [[64068, 64068], "mapped", [26757]], [[64069, 64069], "mapped", [28023]], [[64070, 64070], "mapped", [28186]], [[64071, 64071], "mapped", [28450]], [[64072, 64072], "mapped", [29038]], [[64073, 64073], "mapped", [29227]], [[64074, 64074], "mapped", [29730]], [[64075, 64075], "mapped", [30865]], [[64076, 64076], "mapped", [31038]], [[64077, 64077], "mapped", [31049]], [[64078, 64078], "mapped", [31048]], [[64079, 64079], "mapped", [31056]], [[64080, 64080], "mapped", [31062]], [[64081, 64081], "mapped", [31069]], [[64082, 64082], "mapped", [31117]], [[64083, 64083], "mapped", [31118]], [[64084, 64084], "mapped", [31296]], [[64085, 64085], "mapped", [31361]], [[64086, 64086], "mapped", [31680]], [[64087, 64087], "mapped", [32244]], [[64088, 64088], "mapped", [32265]], [[64089, 64089], "mapped", [32321]], [[64090, 64090], "mapped", [32626]], [[64091, 64091], "mapped", [32773]], [[64092, 64092], "mapped", [33261]], [[64093, 64094], "mapped", [33401]], [[64095, 64095], "mapped", [33879]], [[64096, 64096], "mapped", [35088]], [[64097, 64097], "mapped", [35222]], [[64098, 64098], "mapped", [35585]], [[64099, 64099], "mapped", [35641]], [[64100, 64100], "mapped", [36051]], [[64101, 64101], "mapped", [36104]], [[64102, 64102], "mapped", [36790]], [[64103, 64103], "mapped", [36920]], [[64104, 64104], "mapped", [38627]], [[64105, 64105], "mapped", [38911]], [[64106, 64106], "mapped", [38971]], [[64107, 64107], "mapped", [24693]], [[64108, 64108], "mapped", [148206]], [[64109, 64109], "mapped", [33304]], [[64110, 64111], "disallowed"], [[64112, 64112], "mapped", [20006]], [[64113, 64113], "mapped", [20917]], [[64114, 64114], "mapped", [20840]], [[64115, 64115], "mapped", [20352]], [[64116, 64116], "mapped", [20805]], [[64117, 64117], "mapped", [20864]], [[64118, 64118], "mapped", [21191]], [[64119, 64119], "mapped", [21242]], [[64120, 64120], "mapped", [21917]], [[64121, 64121], "mapped", [21845]], [[64122, 64122], "mapped", [21913]], [[64123, 64123], "mapped", [21986]], [[64124, 64124], "mapped", [22618]], [[64125, 64125], "mapped", [22707]], [[64126, 64126], "mapped", [22852]], [[64127, 64127], "mapped", [22868]], [[64128, 64128], "mapped", [23138]], [[64129, 64129], "mapped", [23336]], [[64130, 64130], "mapped", [24274]], [[64131, 64131], "mapped", [24281]], [[64132, 64132], "mapped", [24425]], [[64133, 64133], "mapped", [24493]], [[64134, 64134], "mapped", [24792]], [[64135, 64135], "mapped", [24910]], [[64136, 64136], "mapped", [24840]], [[64137, 64137], "mapped", [24974]], [[64138, 64138], "mapped", [24928]], [[64139, 64139], "mapped", [25074]], [[64140, 64140], "mapped", [25140]], [[64141, 64141], "mapped", [25540]], [[64142, 64142], "mapped", [25628]], [[64143, 64143], "mapped", [25682]], [[64144, 64144], "mapped", [25942]], [[64145, 64145], "mapped", [26228]], [[64146, 64146], "mapped", [26391]], [[64147, 64147], "mapped", [26395]], [[64148, 64148], "mapped", [26454]], [[64149, 64149], "mapped", [27513]], [[64150, 64150], "mapped", [27578]], [[64151, 64151], "mapped", [27969]], [[64152, 64152], "mapped", [28379]], [[64153, 64153], "mapped", [28363]], [[64154, 64154], "mapped", [28450]], [[64155, 64155], "mapped", [28702]], [[64156, 64156], "mapped", [29038]], [[64157, 64157], "mapped", [30631]], [[64158, 64158], "mapped", [29237]], [[64159, 64159], "mapped", [29359]], [[64160, 64160], "mapped", [29482]], [[64161, 64161], "mapped", [29809]], [[64162, 64162], "mapped", [29958]], [[64163, 64163], "mapped", [30011]], [[64164, 64164], "mapped", [30237]], [[64165, 64165], "mapped", [30239]], [[64166, 64166], "mapped", [30410]], [[64167, 64167], "mapped", [30427]], [[64168, 64168], "mapped", [30452]], [[64169, 64169], "mapped", [30538]], [[64170, 64170], "mapped", [30528]], [[64171, 64171], "mapped", [30924]], [[64172, 64172], "mapped", [31409]], [[64173, 64173], "mapped", [31680]], [[64174, 64174], "mapped", [31867]], [[64175, 64175], "mapped", [32091]], [[64176, 64176], "mapped", [32244]], [[64177, 64177], "mapped", [32574]], [[64178, 64178], "mapped", [32773]], [[64179, 64179], "mapped", [33618]], [[64180, 64180], "mapped", [33775]], [[64181, 64181], "mapped", [34681]], [[64182, 64182], "mapped", [35137]], [[64183, 64183], "mapped", [35206]], [[64184, 64184], "mapped", [35222]], [[64185, 64185], "mapped", [35519]], [[64186, 64186], "mapped", [35576]], [[64187, 64187], "mapped", [35531]], [[64188, 64188], "mapped", [35585]], [[64189, 64189], "mapped", [35582]], [[64190, 64190], "mapped", [35565]], [[64191, 64191], "mapped", [35641]], [[64192, 64192], "mapped", [35722]], [[64193, 64193], "mapped", [36104]], [[64194, 64194], "mapped", [36664]], [[64195, 64195], "mapped", [36978]], [[64196, 64196], "mapped", [37273]], [[64197, 64197], "mapped", [37494]], [[64198, 64198], "mapped", [38524]], [[64199, 64199], "mapped", [38627]], [[64200, 64200], "mapped", [38742]], [[64201, 64201], "mapped", [38875]], [[64202, 64202], "mapped", [38911]], [[64203, 64203], "mapped", [38923]], [[64204, 64204], "mapped", [38971]], [[64205, 64205], "mapped", [39698]], [[64206, 64206], "mapped", [40860]], [[64207, 64207], "mapped", [141386]], [[64208, 64208], "mapped", [141380]], [[64209, 64209], "mapped", [144341]], [[64210, 64210], "mapped", [15261]], [[64211, 64211], "mapped", [16408]], [[64212, 64212], "mapped", [16441]], [[64213, 64213], "mapped", [152137]], [[64214, 64214], "mapped", [154832]], [[64215, 64215], "mapped", [163539]], [[64216, 64216], "mapped", [40771]], [[64217, 64217], "mapped", [40846]], [[64218, 64255], "disallowed"], [[64256, 64256], "mapped", [102, 102]], [[64257, 64257], "mapped", [102, 105]], [[64258, 64258], "mapped", [102, 108]], [[64259, 64259], "mapped", [102, 102, 105]], [[64260, 64260], "mapped", [102, 102, 108]], [[64261, 64262], "mapped", [115, 116]], [[64263, 64274], "disallowed"], [[64275, 64275], "mapped", [1396, 1398]], [[64276, 64276], "mapped", [1396, 1381]], [[64277, 64277], "mapped", [1396, 1387]], [[64278, 64278], "mapped", [1406, 1398]], [[64279, 64279], "mapped", [1396, 1389]], [[64280, 64284], "disallowed"], [[64285, 64285], "mapped", [1497, 1460]], [[64286, 64286], "valid"], [[64287, 64287], "mapped", [1522, 1463]], [[64288, 64288], "mapped", [1506]], [[64289, 64289], "mapped", [1488]], [[64290, 64290], "mapped", [1491]], [[64291, 64291], "mapped", [1492]], [[64292, 64292], "mapped", [1499]], [[64293, 64293], "mapped", [1500]], [[64294, 64294], "mapped", [1501]], [[64295, 64295], "mapped", [1512]], [[64296, 64296], "mapped", [1514]], [[64297, 64297], "disallowed_STD3_mapped", [43]], [[64298, 64298], "mapped", [1513, 1473]], [[64299, 64299], "mapped", [1513, 1474]], [[64300, 64300], "mapped", [1513, 1468, 1473]], [[64301, 64301], "mapped", [1513, 1468, 1474]], [[64302, 64302], "mapped", [1488, 1463]], [[64303, 64303], "mapped", [1488, 1464]], [[64304, 64304], "mapped", [1488, 1468]], [[64305, 64305], "mapped", [1489, 1468]], [[64306, 64306], "mapped", [1490, 1468]], [[64307, 64307], "mapped", [1491, 1468]], [[64308, 64308], "mapped", [1492, 1468]], [[64309, 64309], "mapped", [1493, 1468]], [[64310, 64310], "mapped", [1494, 1468]], [[64311, 64311], "disallowed"], [[64312, 64312], "mapped", [1496, 1468]], [[64313, 64313], "mapped", [1497, 1468]], [[64314, 64314], "mapped", [1498, 1468]], [[64315, 64315], "mapped", [1499, 1468]], [[64316, 64316], "mapped", [1500, 1468]], [[64317, 64317], "disallowed"], [[64318, 64318], "mapped", [1502, 1468]], [[64319, 64319], "disallowed"], [[64320, 64320], "mapped", [1504, 1468]], [[64321, 64321], "mapped", [1505, 1468]], [[64322, 64322], "disallowed"], [[64323, 64323], "mapped", [1507, 1468]], [[64324, 64324], "mapped", [1508, 1468]], [[64325, 64325], "disallowed"], [[64326, 64326], "mapped", [1510, 1468]], [[64327, 64327], "mapped", [1511, 1468]], [[64328, 64328], "mapped", [1512, 1468]], [[64329, 64329], "mapped", [1513, 1468]], [[64330, 64330], "mapped", [1514, 1468]], [[64331, 64331], "mapped", [1493, 1465]], [[64332, 64332], "mapped", [1489, 1471]], [[64333, 64333], "mapped", [1499, 1471]], [[64334, 64334], "mapped", [1508, 1471]], [[64335, 64335], "mapped", [1488, 1500]], [[64336, 64337], "mapped", [1649]], [[64338, 64341], "mapped", [1659]], [[64342, 64345], "mapped", [1662]], [[64346, 64349], "mapped", [1664]], [[64350, 64353], "mapped", [1658]], [[64354, 64357], "mapped", [1663]], [[64358, 64361], "mapped", [1657]], [[64362, 64365], "mapped", [1700]], [[64366, 64369], "mapped", [1702]], [[64370, 64373], "mapped", [1668]], [[64374, 64377], "mapped", [1667]], [[64378, 64381], "mapped", [1670]], [[64382, 64385], "mapped", [1671]], [[64386, 64387], "mapped", [1677]], [[64388, 64389], "mapped", [1676]], [[64390, 64391], "mapped", [1678]], [[64392, 64393], "mapped", [1672]], [[64394, 64395], "mapped", [1688]], [[64396, 64397], "mapped", [1681]], [[64398, 64401], "mapped", [1705]], [[64402, 64405], "mapped", [1711]], [[64406, 64409], "mapped", [1715]], [[64410, 64413], "mapped", [1713]], [[64414, 64415], "mapped", [1722]], [[64416, 64419], "mapped", [1723]], [[64420, 64421], "mapped", [1728]], [[64422, 64425], "mapped", [1729]], [[64426, 64429], "mapped", [1726]], [[64430, 64431], "mapped", [1746]], [[64432, 64433], "mapped", [1747]], [[64434, 64449], "valid", [], "NV8"], [[64450, 64466], "disallowed"], [[64467, 64470], "mapped", [1709]], [[64471, 64472], "mapped", [1735]], [[64473, 64474], "mapped", [1734]], [[64475, 64476], "mapped", [1736]], [[64477, 64477], "mapped", [1735, 1652]], [[64478, 64479], "mapped", [1739]], [[64480, 64481], "mapped", [1733]], [[64482, 64483], "mapped", [1737]], [[64484, 64487], "mapped", [1744]], [[64488, 64489], "mapped", [1609]], [[64490, 64491], "mapped", [1574, 1575]], [[64492, 64493], "mapped", [1574, 1749]], [[64494, 64495], "mapped", [1574, 1608]], [[64496, 64497], "mapped", [1574, 1735]], [[64498, 64499], "mapped", [1574, 1734]], [[64500, 64501], "mapped", [1574, 1736]], [[64502, 64504], "mapped", [1574, 1744]], [[64505, 64507], "mapped", [1574, 1609]], [[64508, 64511], "mapped", [1740]], [[64512, 64512], "mapped", [1574, 1580]], [[64513, 64513], "mapped", [1574, 1581]], [[64514, 64514], "mapped", [1574, 1605]], [[64515, 64515], "mapped", [1574, 1609]], [[64516, 64516], "mapped", [1574, 1610]], [[64517, 64517], "mapped", [1576, 1580]], [[64518, 64518], "mapped", [1576, 1581]], [[64519, 64519], "mapped", [1576, 1582]], [[64520, 64520], "mapped", [1576, 1605]], [[64521, 64521], "mapped", [1576, 1609]], [[64522, 64522], "mapped", [1576, 1610]], [[64523, 64523], "mapped", [1578, 1580]], [[64524, 64524], "mapped", [1578, 1581]], [[64525, 64525], "mapped", [1578, 1582]], [[64526, 64526], "mapped", [1578, 1605]], [[64527, 64527], "mapped", [1578, 1609]], [[64528, 64528], "mapped", [1578, 1610]], [[64529, 64529], "mapped", [1579, 1580]], [[64530, 64530], "mapped", [1579, 1605]], [[64531, 64531], "mapped", [1579, 1609]], [[64532, 64532], "mapped", [1579, 1610]], [[64533, 64533], "mapped", [1580, 1581]], [[64534, 64534], "mapped", [1580, 1605]], [[64535, 64535], "mapped", [1581, 1580]], [[64536, 64536], "mapped", [1581, 1605]], [[64537, 64537], "mapped", [1582, 1580]], [[64538, 64538], "mapped", [1582, 1581]], [[64539, 64539], "mapped", [1582, 1605]], [[64540, 64540], "mapped", [1587, 1580]], [[64541, 64541], "mapped", [1587, 1581]], [[64542, 64542], "mapped", [1587, 1582]], [[64543, 64543], "mapped", [1587, 1605]], [[64544, 64544], "mapped", [1589, 1581]], [[64545, 64545], "mapped", [1589, 1605]], [[64546, 64546], "mapped", [1590, 1580]], [[64547, 64547], "mapped", [1590, 1581]], [[64548, 64548], "mapped", [1590, 1582]], [[64549, 64549], "mapped", [1590, 1605]], [[64550, 64550], "mapped", [1591, 1581]], [[64551, 64551], "mapped", [1591, 1605]], [[64552, 64552], "mapped", [1592, 1605]], [[64553, 64553], "mapped", [1593, 1580]], [[64554, 64554], "mapped", [1593, 1605]], [[64555, 64555], "mapped", [1594, 1580]], [[64556, 64556], "mapped", [1594, 1605]], [[64557, 64557], "mapped", [1601, 1580]], [[64558, 64558], "mapped", [1601, 1581]], [[64559, 64559], "mapped", [1601, 1582]], [[64560, 64560], "mapped", [1601, 1605]], [[64561, 64561], "mapped", [1601, 1609]], [[64562, 64562], "mapped", [1601, 1610]], [[64563, 64563], "mapped", [1602, 1581]], [[64564, 64564], "mapped", [1602, 1605]], [[64565, 64565], "mapped", [1602, 1609]], [[64566, 64566], "mapped", [1602, 1610]], [[64567, 64567], "mapped", [1603, 1575]], [[64568, 64568], "mapped", [1603, 1580]], [[64569, 64569], "mapped", [1603, 1581]], [[64570, 64570], "mapped", [1603, 1582]], [[64571, 64571], "mapped", [1603, 1604]], [[64572, 64572], "mapped", [1603, 1605]], [[64573, 64573], "mapped", [1603, 1609]], [[64574, 64574], "mapped", [1603, 1610]], [[64575, 64575], "mapped", [1604, 1580]], [[64576, 64576], "mapped", [1604, 1581]], [[64577, 64577], "mapped", [1604, 1582]], [[64578, 64578], "mapped", [1604, 1605]], [[64579, 64579], "mapped", [1604, 1609]], [[64580, 64580], "mapped", [1604, 1610]], [[64581, 64581], "mapped", [1605, 1580]], [[64582, 64582], "mapped", [1605, 1581]], [[64583, 64583], "mapped", [1605, 1582]], [[64584, 64584], "mapped", [1605, 1605]], [[64585, 64585], "mapped", [1605, 1609]], [[64586, 64586], "mapped", [1605, 1610]], [[64587, 64587], "mapped", [1606, 1580]], [[64588, 64588], "mapped", [1606, 1581]], [[64589, 64589], "mapped", [1606, 1582]], [[64590, 64590], "mapped", [1606, 1605]], [[64591, 64591], "mapped", [1606, 1609]], [[64592, 64592], "mapped", [1606, 1610]], [[64593, 64593], "mapped", [1607, 1580]], [[64594, 64594], "mapped", [1607, 1605]], [[64595, 64595], "mapped", [1607, 1609]], [[64596, 64596], "mapped", [1607, 1610]], [[64597, 64597], "mapped", [1610, 1580]], [[64598, 64598], "mapped", [1610, 1581]], [[64599, 64599], "mapped", [1610, 1582]], [[64600, 64600], "mapped", [1610, 1605]], [[64601, 64601], "mapped", [1610, 1609]], [[64602, 64602], "mapped", [1610, 1610]], [[64603, 64603], "mapped", [1584, 1648]], [[64604, 64604], "mapped", [1585, 1648]], [[64605, 64605], "mapped", [1609, 1648]], [[64606, 64606], "disallowed_STD3_mapped", [32, 1612, 1617]], [[64607, 64607], "disallowed_STD3_mapped", [32, 1613, 1617]], [[64608, 64608], "disallowed_STD3_mapped", [32, 1614, 1617]], [[64609, 64609], "disallowed_STD3_mapped", [32, 1615, 1617]], [[64610, 64610], "disallowed_STD3_mapped", [32, 1616, 1617]], [[64611, 64611], "disallowed_STD3_mapped", [32, 1617, 1648]], [[64612, 64612], "mapped", [1574, 1585]], [[64613, 64613], "mapped", [1574, 1586]], [[64614, 64614], "mapped", [1574, 1605]], [[64615, 64615], "mapped", [1574, 1606]], [[64616, 64616], "mapped", [1574, 1609]], [[64617, 64617], "mapped", [1574, 1610]], [[64618, 64618], "mapped", [1576, 1585]], [[64619, 64619], "mapped", [1576, 1586]], [[64620, 64620], "mapped", [1576, 1605]], [[64621, 64621], "mapped", [1576, 1606]], [[64622, 64622], "mapped", [1576, 1609]], [[64623, 64623], "mapped", [1576, 1610]], [[64624, 64624], "mapped", [1578, 1585]], [[64625, 64625], "mapped", [1578, 1586]], [[64626, 64626], "mapped", [1578, 1605]], [[64627, 64627], "mapped", [1578, 1606]], [[64628, 64628], "mapped", [1578, 1609]], [[64629, 64629], "mapped", [1578, 1610]], [[64630, 64630], "mapped", [1579, 1585]], [[64631, 64631], "mapped", [1579, 1586]], [[64632, 64632], "mapped", [1579, 1605]], [[64633, 64633], "mapped", [1579, 1606]], [[64634, 64634], "mapped", [1579, 1609]], [[64635, 64635], "mapped", [1579, 1610]], [[64636, 64636], "mapped", [1601, 1609]], [[64637, 64637], "mapped", [1601, 1610]], [[64638, 64638], "mapped", [1602, 1609]], [[64639, 64639], "mapped", [1602, 1610]], [[64640, 64640], "mapped", [1603, 1575]], [[64641, 64641], "mapped", [1603, 1604]], [[64642, 64642], "mapped", [1603, 1605]], [[64643, 64643], "mapped", [1603, 1609]], [[64644, 64644], "mapped", [1603, 1610]], [[64645, 64645], "mapped", [1604, 1605]], [[64646, 64646], "mapped", [1604, 1609]], [[64647, 64647], "mapped", [1604, 1610]], [[64648, 64648], "mapped", [1605, 1575]], [[64649, 64649], "mapped", [1605, 1605]], [[64650, 64650], "mapped", [1606, 1585]], [[64651, 64651], "mapped", [1606, 1586]], [[64652, 64652], "mapped", [1606, 1605]], [[64653, 64653], "mapped", [1606, 1606]], [[64654, 64654], "mapped", [1606, 1609]], [[64655, 64655], "mapped", [1606, 1610]], [[64656, 64656], "mapped", [1609, 1648]], [[64657, 64657], "mapped", [1610, 1585]], [[64658, 64658], "mapped", [1610, 1586]], [[64659, 64659], "mapped", [1610, 1605]], [[64660, 64660], "mapped", [1610, 1606]], [[64661, 64661], "mapped", [1610, 1609]], [[64662, 64662], "mapped", [1610, 1610]], [[64663, 64663], "mapped", [1574, 1580]], [[64664, 64664], "mapped", [1574, 1581]], [[64665, 64665], "mapped", [1574, 1582]], [[64666, 64666], "mapped", [1574, 1605]], [[64667, 64667], "mapped", [1574, 1607]], [[64668, 64668], "mapped", [1576, 1580]], [[64669, 64669], "mapped", [1576, 1581]], [[64670, 64670], "mapped", [1576, 1582]], [[64671, 64671], "mapped", [1576, 1605]], [[64672, 64672], "mapped", [1576, 1607]], [[64673, 64673], "mapped", [1578, 1580]], [[64674, 64674], "mapped", [1578, 1581]], [[64675, 64675], "mapped", [1578, 1582]], [[64676, 64676], "mapped", [1578, 1605]], [[64677, 64677], "mapped", [1578, 1607]], [[64678, 64678], "mapped", [1579, 1605]], [[64679, 64679], "mapped", [1580, 1581]], [[64680, 64680], "mapped", [1580, 1605]], [[64681, 64681], "mapped", [1581, 1580]], [[64682, 64682], "mapped", [1581, 1605]], [[64683, 64683], "mapped", [1582, 1580]], [[64684, 64684], "mapped", [1582, 1605]], [[64685, 64685], "mapped", [1587, 1580]], [[64686, 64686], "mapped", [1587, 1581]], [[64687, 64687], "mapped", [1587, 1582]], [[64688, 64688], "mapped", [1587, 1605]], [[64689, 64689], "mapped", [1589, 1581]], [[64690, 64690], "mapped", [1589, 1582]], [[64691, 64691], "mapped", [1589, 1605]], [[64692, 64692], "mapped", [1590, 1580]], [[64693, 64693], "mapped", [1590, 1581]], [[64694, 64694], "mapped", [1590, 1582]], [[64695, 64695], "mapped", [1590, 1605]], [[64696, 64696], "mapped", [1591, 1581]], [[64697, 64697], "mapped", [1592, 1605]], [[64698, 64698], "mapped", [1593, 1580]], [[64699, 64699], "mapped", [1593, 1605]], [[64700, 64700], "mapped", [1594, 1580]], [[64701, 64701], "mapped", [1594, 1605]], [[64702, 64702], "mapped", [1601, 1580]], [[64703, 64703], "mapped", [1601, 1581]], [[64704, 64704], "mapped", [1601, 1582]], [[64705, 64705], "mapped", [1601, 1605]], [[64706, 64706], "mapped", [1602, 1581]], [[64707, 64707], "mapped", [1602, 1605]], [[64708, 64708], "mapped", [1603, 1580]], [[64709, 64709], "mapped", [1603, 1581]], [[64710, 64710], "mapped", [1603, 1582]], [[64711, 64711], "mapped", [1603, 1604]], [[64712, 64712], "mapped", [1603, 1605]], [[64713, 64713], "mapped", [1604, 1580]], [[64714, 64714], "mapped", [1604, 1581]], [[64715, 64715], "mapped", [1604, 1582]], [[64716, 64716], "mapped", [1604, 1605]], [[64717, 64717], "mapped", [1604, 1607]], [[64718, 64718], "mapped", [1605, 1580]], [[64719, 64719], "mapped", [1605, 1581]], [[64720, 64720], "mapped", [1605, 1582]], [[64721, 64721], "mapped", [1605, 1605]], [[64722, 64722], "mapped", [1606, 1580]], [[64723, 64723], "mapped", [1606, 1581]], [[64724, 64724], "mapped", [1606, 1582]], [[64725, 64725], "mapped", [1606, 1605]], [[64726, 64726], "mapped", [1606, 1607]], [[64727, 64727], "mapped", [1607, 1580]], [[64728, 64728], "mapped", [1607, 1605]], [[64729, 64729], "mapped", [1607, 1648]], [[64730, 64730], "mapped", [1610, 1580]], [[64731, 64731], "mapped", [1610, 1581]], [[64732, 64732], "mapped", [1610, 1582]], [[64733, 64733], "mapped", [1610, 1605]], [[64734, 64734], "mapped", [1610, 1607]], [[64735, 64735], "mapped", [1574, 1605]], [[64736, 64736], "mapped", [1574, 1607]], [[64737, 64737], "mapped", [1576, 1605]], [[64738, 64738], "mapped", [1576, 1607]], [[64739, 64739], "mapped", [1578, 1605]], [[64740, 64740], "mapped", [1578, 1607]], [[64741, 64741], "mapped", [1579, 1605]], [[64742, 64742], "mapped", [1579, 1607]], [[64743, 64743], "mapped", [1587, 1605]], [[64744, 64744], "mapped", [1587, 1607]], [[64745, 64745], "mapped", [1588, 1605]], [[64746, 64746], "mapped", [1588, 1607]], [[64747, 64747], "mapped", [1603, 1604]], [[64748, 64748], "mapped", [1603, 1605]], [[64749, 64749], "mapped", [1604, 1605]], [[64750, 64750], "mapped", [1606, 1605]], [[64751, 64751], "mapped", [1606, 1607]], [[64752, 64752], "mapped", [1610, 1605]], [[64753, 64753], "mapped", [1610, 1607]], [[64754, 64754], "mapped", [1600, 1614, 1617]], [[64755, 64755], "mapped", [1600, 1615, 1617]], [[64756, 64756], "mapped", [1600, 1616, 1617]], [[64757, 64757], "mapped", [1591, 1609]], [[64758, 64758], "mapped", [1591, 1610]], [[64759, 64759], "mapped", [1593, 1609]], [[64760, 64760], "mapped", [1593, 1610]], [[64761, 64761], "mapped", [1594, 1609]], [[64762, 64762], "mapped", [1594, 1610]], [[64763, 64763], "mapped", [1587, 1609]], [[64764, 64764], "mapped", [1587, 1610]], [[64765, 64765], "mapped", [1588, 1609]], [[64766, 64766], "mapped", [1588, 1610]], [[64767, 64767], "mapped", [1581, 1609]], [[64768, 64768], "mapped", [1581, 1610]], [[64769, 64769], "mapped", [1580, 1609]], [[64770, 64770], "mapped", [1580, 1610]], [[64771, 64771], "mapped", [1582, 1609]], [[64772, 64772], "mapped", [1582, 1610]], [[64773, 64773], "mapped", [1589, 1609]], [[64774, 64774], "mapped", [1589, 1610]], [[64775, 64775], "mapped", [1590, 1609]], [[64776, 64776], "mapped", [1590, 1610]], [[64777, 64777], "mapped", [1588, 1580]], [[64778, 64778], "mapped", [1588, 1581]], [[64779, 64779], "mapped", [1588, 1582]], [[64780, 64780], "mapped", [1588, 1605]], [[64781, 64781], "mapped", [1588, 1585]], [[64782, 64782], "mapped", [1587, 1585]], [[64783, 64783], "mapped", [1589, 1585]], [[64784, 64784], "mapped", [1590, 1585]], [[64785, 64785], "mapped", [1591, 1609]], [[64786, 64786], "mapped", [1591, 1610]], [[64787, 64787], "mapped", [1593, 1609]], [[64788, 64788], "mapped", [1593, 1610]], [[64789, 64789], "mapped", [1594, 1609]], [[64790, 64790], "mapped", [1594, 1610]], [[64791, 64791], "mapped", [1587, 1609]], [[64792, 64792], "mapped", [1587, 1610]], [[64793, 64793], "mapped", [1588, 1609]], [[64794, 64794], "mapped", [1588, 1610]], [[64795, 64795], "mapped", [1581, 1609]], [[64796, 64796], "mapped", [1581, 1610]], [[64797, 64797], "mapped", [1580, 1609]], [[64798, 64798], "mapped", [1580, 1610]], [[64799, 64799], "mapped", [1582, 1609]], [[64800, 64800], "mapped", [1582, 1610]], [[64801, 64801], "mapped", [1589, 1609]], [[64802, 64802], "mapped", [1589, 1610]], [[64803, 64803], "mapped", [1590, 1609]], [[64804, 64804], "mapped", [1590, 1610]], [[64805, 64805], "mapped", [1588, 1580]], [[64806, 64806], "mapped", [1588, 1581]], [[64807, 64807], "mapped", [1588, 1582]], [[64808, 64808], "mapped", [1588, 1605]], [[64809, 64809], "mapped", [1588, 1585]], [[64810, 64810], "mapped", [1587, 1585]], [[64811, 64811], "mapped", [1589, 1585]], [[64812, 64812], "mapped", [1590, 1585]], [[64813, 64813], "mapped", [1588, 1580]], [[64814, 64814], "mapped", [1588, 1581]], [[64815, 64815], "mapped", [1588, 1582]], [[64816, 64816], "mapped", [1588, 1605]], [[64817, 64817], "mapped", [1587, 1607]], [[64818, 64818], "mapped", [1588, 1607]], [[64819, 64819], "mapped", [1591, 1605]], [[64820, 64820], "mapped", [1587, 1580]], [[64821, 64821], "mapped", [1587, 1581]], [[64822, 64822], "mapped", [1587, 1582]], [[64823, 64823], "mapped", [1588, 1580]], [[64824, 64824], "mapped", [1588, 1581]], [[64825, 64825], "mapped", [1588, 1582]], [[64826, 64826], "mapped", [1591, 1605]], [[64827, 64827], "mapped", [1592, 1605]], [[64828, 64829], "mapped", [1575, 1611]], [[64830, 64831], "valid", [], "NV8"], [[64832, 64847], "disallowed"], [[64848, 64848], "mapped", [1578, 1580, 1605]], [[64849, 64850], "mapped", [1578, 1581, 1580]], [[64851, 64851], "mapped", [1578, 1581, 1605]], [[64852, 64852], "mapped", [1578, 1582, 1605]], [[64853, 64853], "mapped", [1578, 1605, 1580]], [[64854, 64854], "mapped", [1578, 1605, 1581]], [[64855, 64855], "mapped", [1578, 1605, 1582]], [[64856, 64857], "mapped", [1580, 1605, 1581]], [[64858, 64858], "mapped", [1581, 1605, 1610]], [[64859, 64859], "mapped", [1581, 1605, 1609]], [[64860, 64860], "mapped", [1587, 1581, 1580]], [[64861, 64861], "mapped", [1587, 1580, 1581]], [[64862, 64862], "mapped", [1587, 1580, 1609]], [[64863, 64864], "mapped", [1587, 1605, 1581]], [[64865, 64865], "mapped", [1587, 1605, 1580]], [[64866, 64867], "mapped", [1587, 1605, 1605]], [[64868, 64869], "mapped", [1589, 1581, 1581]], [[64870, 64870], "mapped", [1589, 1605, 1605]], [[64871, 64872], "mapped", [1588, 1581, 1605]], [[64873, 64873], "mapped", [1588, 1580, 1610]], [[64874, 64875], "mapped", [1588, 1605, 1582]], [[64876, 64877], "mapped", [1588, 1605, 1605]], [[64878, 64878], "mapped", [1590, 1581, 1609]], [[64879, 64880], "mapped", [1590, 1582, 1605]], [[64881, 64882], "mapped", [1591, 1605, 1581]], [[64883, 64883], "mapped", [1591, 1605, 1605]], [[64884, 64884], "mapped", [1591, 1605, 1610]], [[64885, 64885], "mapped", [1593, 1580, 1605]], [[64886, 64887], "mapped", [1593, 1605, 1605]], [[64888, 64888], "mapped", [1593, 1605, 1609]], [[64889, 64889], "mapped", [1594, 1605, 1605]], [[64890, 64890], "mapped", [1594, 1605, 1610]], [[64891, 64891], "mapped", [1594, 1605, 1609]], [[64892, 64893], "mapped", [1601, 1582, 1605]], [[64894, 64894], "mapped", [1602, 1605, 1581]], [[64895, 64895], "mapped", [1602, 1605, 1605]], [[64896, 64896], "mapped", [1604, 1581, 1605]], [[64897, 64897], "mapped", [1604, 1581, 1610]], [[64898, 64898], "mapped", [1604, 1581, 1609]], [[64899, 64900], "mapped", [1604, 1580, 1580]], [[64901, 64902], "mapped", [1604, 1582, 1605]], [[64903, 64904], "mapped", [1604, 1605, 1581]], [[64905, 64905], "mapped", [1605, 1581, 1580]], [[64906, 64906], "mapped", [1605, 1581, 1605]], [[64907, 64907], "mapped", [1605, 1581, 1610]], [[64908, 64908], "mapped", [1605, 1580, 1581]], [[64909, 64909], "mapped", [1605, 1580, 1605]], [[64910, 64910], "mapped", [1605, 1582, 1580]], [[64911, 64911], "mapped", [1605, 1582, 1605]], [[64912, 64913], "disallowed"], [[64914, 64914], "mapped", [1605, 1580, 1582]], [[64915, 64915], "mapped", [1607, 1605, 1580]], [[64916, 64916], "mapped", [1607, 1605, 1605]], [[64917, 64917], "mapped", [1606, 1581, 1605]], [[64918, 64918], "mapped", [1606, 1581, 1609]], [[64919, 64920], "mapped", [1606, 1580, 1605]], [[64921, 64921], "mapped", [1606, 1580, 1609]], [[64922, 64922], "mapped", [1606, 1605, 1610]], [[64923, 64923], "mapped", [1606, 1605, 1609]], [[64924, 64925], "mapped", [1610, 1605, 1605]], [[64926, 64926], "mapped", [1576, 1582, 1610]], [[64927, 64927], "mapped", [1578, 1580, 1610]], [[64928, 64928], "mapped", [1578, 1580, 1609]], [[64929, 64929], "mapped", [1578, 1582, 1610]], [[64930, 64930], "mapped", [1578, 1582, 1609]], [[64931, 64931], "mapped", [1578, 1605, 1610]], [[64932, 64932], "mapped", [1578, 1605, 1609]], [[64933, 64933], "mapped", [1580, 1605, 1610]], [[64934, 64934], "mapped", [1580, 1581, 1609]], [[64935, 64935], "mapped", [1580, 1605, 1609]], [[64936, 64936], "mapped", [1587, 1582, 1609]], [[64937, 64937], "mapped", [1589, 1581, 1610]], [[64938, 64938], "mapped", [1588, 1581, 1610]], [[64939, 64939], "mapped", [1590, 1581, 1610]], [[64940, 64940], "mapped", [1604, 1580, 1610]], [[64941, 64941], "mapped", [1604, 1605, 1610]], [[64942, 64942], "mapped", [1610, 1581, 1610]], [[64943, 64943], "mapped", [1610, 1580, 1610]], [[64944, 64944], "mapped", [1610, 1605, 1610]], [[64945, 64945], "mapped", [1605, 1605, 1610]], [[64946, 64946], "mapped", [1602, 1605, 1610]], [[64947, 64947], "mapped", [1606, 1581, 1610]], [[64948, 64948], "mapped", [1602, 1605, 1581]], [[64949, 64949], "mapped", [1604, 1581, 1605]], [[64950, 64950], "mapped", [1593, 1605, 1610]], [[64951, 64951], "mapped", [1603, 1605, 1610]], [[64952, 64952], "mapped", [1606, 1580, 1581]], [[64953, 64953], "mapped", [1605, 1582, 1610]], [[64954, 64954], "mapped", [1604, 1580, 1605]], [[64955, 64955], "mapped", [1603, 1605, 1605]], [[64956, 64956], "mapped", [1604, 1580, 1605]], [[64957, 64957], "mapped", [1606, 1580, 1581]], [[64958, 64958], "mapped", [1580, 1581, 1610]], [[64959, 64959], "mapped", [1581, 1580, 1610]], [[64960, 64960], "mapped", [1605, 1580, 1610]], [[64961, 64961], "mapped", [1601, 1605, 1610]], [[64962, 64962], "mapped", [1576, 1581, 1610]], [[64963, 64963], "mapped", [1603, 1605, 1605]], [[64964, 64964], "mapped", [1593, 1580, 1605]], [[64965, 64965], "mapped", [1589, 1605, 1605]], [[64966, 64966], "mapped", [1587, 1582, 1610]], [[64967, 64967], "mapped", [1606, 1580, 1610]], [[64968, 64975], "disallowed"], [[64976, 65007], "disallowed"], [[65008, 65008], "mapped", [1589, 1604, 1746]], [[65009, 65009], "mapped", [1602, 1604, 1746]], [[65010, 65010], "mapped", [1575, 1604, 1604, 1607]], [[65011, 65011], "mapped", [1575, 1603, 1576, 1585]], [[65012, 65012], "mapped", [1605, 1581, 1605, 1583]], [[65013, 65013], "mapped", [1589, 1604, 1593, 1605]], [[65014, 65014], "mapped", [1585, 1587, 1608, 1604]], [[65015, 65015], "mapped", [1593, 1604, 1610, 1607]], [[65016, 65016], "mapped", [1608, 1587, 1604, 1605]], [[65017, 65017], "mapped", [1589, 1604, 1609]], [[65018, 65018], "disallowed_STD3_mapped", [1589, 1604, 1609, 32, 1575, 1604, 1604, 1607, 32, 1593, 1604, 1610, 1607, 32, 1608, 1587, 1604, 1605]], [[65019, 65019], "disallowed_STD3_mapped", [1580, 1604, 32, 1580, 1604, 1575, 1604, 1607]], [[65020, 65020], "mapped", [1585, 1740, 1575, 1604]], [[65021, 65021], "valid", [], "NV8"], [[65022, 65023], "disallowed"], [[65024, 65039], "ignored"], [[65040, 65040], "disallowed_STD3_mapped", [44]], [[65041, 65041], "mapped", [12289]], [[65042, 65042], "disallowed"], [[65043, 65043], "disallowed_STD3_mapped", [58]], [[65044, 65044], "disallowed_STD3_mapped", [59]], [[65045, 65045], "disallowed_STD3_mapped", [33]], [[65046, 65046], "disallowed_STD3_mapped", [63]], [[65047, 65047], "mapped", [12310]], [[65048, 65048], "mapped", [12311]], [[65049, 65049], "disallowed"], [[65050, 65055], "disallowed"], [[65056, 65059], "valid"], [[65060, 65062], "valid"], [[65063, 65069], "valid"], [[65070, 65071], "valid"], [[65072, 65072], "disallowed"], [[65073, 65073], "mapped", [8212]], [[65074, 65074], "mapped", [8211]], [[65075, 65076], "disallowed_STD3_mapped", [95]], [[65077, 65077], "disallowed_STD3_mapped", [40]], [[65078, 65078], "disallowed_STD3_mapped", [41]], [[65079, 65079], "disallowed_STD3_mapped", [123]], [[65080, 65080], "disallowed_STD3_mapped", [125]], [[65081, 65081], "mapped", [12308]], [[65082, 65082], "mapped", [12309]], [[65083, 65083], "mapped", [12304]], [[65084, 65084], "mapped", [12305]], [[65085, 65085], "mapped", [12298]], [[65086, 65086], "mapped", [12299]], [[65087, 65087], "mapped", [12296]], [[65088, 65088], "mapped", [12297]], [[65089, 65089], "mapped", [12300]], [[65090, 65090], "mapped", [12301]], [[65091, 65091], "mapped", [12302]], [[65092, 65092], "mapped", [12303]], [[65093, 65094], "valid", [], "NV8"], [[65095, 65095], "disallowed_STD3_mapped", [91]], [[65096, 65096], "disallowed_STD3_mapped", [93]], [[65097, 65100], "disallowed_STD3_mapped", [32, 773]], [[65101, 65103], "disallowed_STD3_mapped", [95]], [[65104, 65104], "disallowed_STD3_mapped", [44]], [[65105, 65105], "mapped", [12289]], [[65106, 65106], "disallowed"], [[65107, 65107], "disallowed"], [[65108, 65108], "disallowed_STD3_mapped", [59]], [[65109, 65109], "disallowed_STD3_mapped", [58]], [[65110, 65110], "disallowed_STD3_mapped", [63]], [[65111, 65111], "disallowed_STD3_mapped", [33]], [[65112, 65112], "mapped", [8212]], [[65113, 65113], "disallowed_STD3_mapped", [40]], [[65114, 65114], "disallowed_STD3_mapped", [41]], [[65115, 65115], "disallowed_STD3_mapped", [123]], [[65116, 65116], "disallowed_STD3_mapped", [125]], [[65117, 65117], "mapped", [12308]], [[65118, 65118], "mapped", [12309]], [[65119, 65119], "disallowed_STD3_mapped", [35]], [[65120, 65120], "disallowed_STD3_mapped", [38]], [[65121, 65121], "disallowed_STD3_mapped", [42]], [[65122, 65122], "disallowed_STD3_mapped", [43]], [[65123, 65123], "mapped", [45]], [[65124, 65124], "disallowed_STD3_mapped", [60]], [[65125, 65125], "disallowed_STD3_mapped", [62]], [[65126, 65126], "disallowed_STD3_mapped", [61]], [[65127, 65127], "disallowed"], [[65128, 65128], "disallowed_STD3_mapped", [92]], [[65129, 65129], "disallowed_STD3_mapped", [36]], [[65130, 65130], "disallowed_STD3_mapped", [37]], [[65131, 65131], "disallowed_STD3_mapped", [64]], [[65132, 65135], "disallowed"], [[65136, 65136], "disallowed_STD3_mapped", [32, 1611]], [[65137, 65137], "mapped", [1600, 1611]], [[65138, 65138], "disallowed_STD3_mapped", [32, 1612]], [[65139, 65139], "valid"], [[65140, 65140], "disallowed_STD3_mapped", [32, 1613]], [[65141, 65141], "disallowed"], [[65142, 65142], "disallowed_STD3_mapped", [32, 1614]], [[65143, 65143], "mapped", [1600, 1614]], [[65144, 65144], "disallowed_STD3_mapped", [32, 1615]], [[65145, 65145], "mapped", [1600, 1615]], [[65146, 65146], "disallowed_STD3_mapped", [32, 1616]], [[65147, 65147], "mapped", [1600, 1616]], [[65148, 65148], "disallowed_STD3_mapped", [32, 1617]], [[65149, 65149], "mapped", [1600, 1617]], [[65150, 65150], "disallowed_STD3_mapped", [32, 1618]], [[65151, 65151], "mapped", [1600, 1618]], [[65152, 65152], "mapped", [1569]], [[65153, 65154], "mapped", [1570]], [[65155, 65156], "mapped", [1571]], [[65157, 65158], "mapped", [1572]], [[65159, 65160], "mapped", [1573]], [[65161, 65164], "mapped", [1574]], [[65165, 65166], "mapped", [1575]], [[65167, 65170], "mapped", [1576]], [[65171, 65172], "mapped", [1577]], [[65173, 65176], "mapped", [1578]], [[65177, 65180], "mapped", [1579]], [[65181, 65184], "mapped", [1580]], [[65185, 65188], "mapped", [1581]], [[65189, 65192], "mapped", [1582]], [[65193, 65194], "mapped", [1583]], [[65195, 65196], "mapped", [1584]], [[65197, 65198], "mapped", [1585]], [[65199, 65200], "mapped", [1586]], [[65201, 65204], "mapped", [1587]], [[65205, 65208], "mapped", [1588]], [[65209, 65212], "mapped", [1589]], [[65213, 65216], "mapped", [1590]], [[65217, 65220], "mapped", [1591]], [[65221, 65224], "mapped", [1592]], [[65225, 65228], "mapped", [1593]], [[65229, 65232], "mapped", [1594]], [[65233, 65236], "mapped", [1601]], [[65237, 65240], "mapped", [1602]], [[65241, 65244], "mapped", [1603]], [[65245, 65248], "mapped", [1604]], [[65249, 65252], "mapped", [1605]], [[65253, 65256], "mapped", [1606]], [[65257, 65260], "mapped", [1607]], [[65261, 65262], "mapped", [1608]], [[65263, 65264], "mapped", [1609]], [[65265, 65268], "mapped", [1610]], [[65269, 65270], "mapped", [1604, 1570]], [[65271, 65272], "mapped", [1604, 1571]], [[65273, 65274], "mapped", [1604, 1573]], [[65275, 65276], "mapped", [1604, 1575]], [[65277, 65278], "disallowed"], [[65279, 65279], "ignored"], [[65280, 65280], "disallowed"], [[65281, 65281], "disallowed_STD3_mapped", [33]], [[65282, 65282], "disallowed_STD3_mapped", [34]], [[65283, 65283], "disallowed_STD3_mapped", [35]], [[65284, 65284], "disallowed_STD3_mapped", [36]], [[65285, 65285], "disallowed_STD3_mapped", [37]], [[65286, 65286], "disallowed_STD3_mapped", [38]], [[65287, 65287], "disallowed_STD3_mapped", [39]], [[65288, 65288], "disallowed_STD3_mapped", [40]], [[65289, 65289], "disallowed_STD3_mapped", [41]], [[65290, 65290], "disallowed_STD3_mapped", [42]], [[65291, 65291], "disallowed_STD3_mapped", [43]], [[65292, 65292], "disallowed_STD3_mapped", [44]], [[65293, 65293], "mapped", [45]], [[65294, 65294], "mapped", [46]], [[65295, 65295], "disallowed_STD3_mapped", [47]], [[65296, 65296], "mapped", [48]], [[65297, 65297], "mapped", [49]], [[65298, 65298], "mapped", [50]], [[65299, 65299], "mapped", [51]], [[65300, 65300], "mapped", [52]], [[65301, 65301], "mapped", [53]], [[65302, 65302], "mapped", [54]], [[65303, 65303], "mapped", [55]], [[65304, 65304], "mapped", [56]], [[65305, 65305], "mapped", [57]], [[65306, 65306], "disallowed_STD3_mapped", [58]], [[65307, 65307], "disallowed_STD3_mapped", [59]], [[65308, 65308], "disallowed_STD3_mapped", [60]], [[65309, 65309], "disallowed_STD3_mapped", [61]], [[65310, 65310], "disallowed_STD3_mapped", [62]], [[65311, 65311], "disallowed_STD3_mapped", [63]], [[65312, 65312], "disallowed_STD3_mapped", [64]], [[65313, 65313], "mapped", [97]], [[65314, 65314], "mapped", [98]], [[65315, 65315], "mapped", [99]], [[65316, 65316], "mapped", [100]], [[65317, 65317], "mapped", [101]], [[65318, 65318], "mapped", [102]], [[65319, 65319], "mapped", [103]], [[65320, 65320], "mapped", [104]], [[65321, 65321], "mapped", [105]], [[65322, 65322], "mapped", [106]], [[65323, 65323], "mapped", [107]], [[65324, 65324], "mapped", [108]], [[65325, 65325], "mapped", [109]], [[65326, 65326], "mapped", [110]], [[65327, 65327], "mapped", [111]], [[65328, 65328], "mapped", [112]], [[65329, 65329], "mapped", [113]], [[65330, 65330], "mapped", [114]], [[65331, 65331], "mapped", [115]], [[65332, 65332], "mapped", [116]], [[65333, 65333], "mapped", [117]], [[65334, 65334], "mapped", [118]], [[65335, 65335], "mapped", [119]], [[65336, 65336], "mapped", [120]], [[65337, 65337], "mapped", [121]], [[65338, 65338], "mapped", [122]], [[65339, 65339], "disallowed_STD3_mapped", [91]], [[65340, 65340], "disallowed_STD3_mapped", [92]], [[65341, 65341], "disallowed_STD3_mapped", [93]], [[65342, 65342], "disallowed_STD3_mapped", [94]], [[65343, 65343], "disallowed_STD3_mapped", [95]], [[65344, 65344], "disallowed_STD3_mapped", [96]], [[65345, 65345], "mapped", [97]], [[65346, 65346], "mapped", [98]], [[65347, 65347], "mapped", [99]], [[65348, 65348], "mapped", [100]], [[65349, 65349], "mapped", [101]], [[65350, 65350], "mapped", [102]], [[65351, 65351], "mapped", [103]], [[65352, 65352], "mapped", [104]], [[65353, 65353], "mapped", [105]], [[65354, 65354], "mapped", [106]], [[65355, 65355], "mapped", [107]], [[65356, 65356], "mapped", [108]], [[65357, 65357], "mapped", [109]], [[65358, 65358], "mapped", [110]], [[65359, 65359], "mapped", [111]], [[65360, 65360], "mapped", [112]], [[65361, 65361], "mapped", [113]], [[65362, 65362], "mapped", [114]], [[65363, 65363], "mapped", [115]], [[65364, 65364], "mapped", [116]], [[65365, 65365], "mapped", [117]], [[65366, 65366], "mapped", [118]], [[65367, 65367], "mapped", [119]], [[65368, 65368], "mapped", [120]], [[65369, 65369], "mapped", [121]], [[65370, 65370], "mapped", [122]], [[65371, 65371], "disallowed_STD3_mapped", [123]], [[65372, 65372], "disallowed_STD3_mapped", [124]], [[65373, 65373], "disallowed_STD3_mapped", [125]], [[65374, 65374], "disallowed_STD3_mapped", [126]], [[65375, 65375], "mapped", [10629]], [[65376, 65376], "mapped", [10630]], [[65377, 65377], "mapped", [46]], [[65378, 65378], "mapped", [12300]], [[65379, 65379], "mapped", [12301]], [[65380, 65380], "mapped", [12289]], [[65381, 65381], "mapped", [12539]], [[65382, 65382], "mapped", [12530]], [[65383, 65383], "mapped", [12449]], [[65384, 65384], "mapped", [12451]], [[65385, 65385], "mapped", [12453]], [[65386, 65386], "mapped", [12455]], [[65387, 65387], "mapped", [12457]], [[65388, 65388], "mapped", [12515]], [[65389, 65389], "mapped", [12517]], [[65390, 65390], "mapped", [12519]], [[65391, 65391], "mapped", [12483]], [[65392, 65392], "mapped", [12540]], [[65393, 65393], "mapped", [12450]], [[65394, 65394], "mapped", [12452]], [[65395, 65395], "mapped", [12454]], [[65396, 65396], "mapped", [12456]], [[65397, 65397], "mapped", [12458]], [[65398, 65398], "mapped", [12459]], [[65399, 65399], "mapped", [12461]], [[65400, 65400], "mapped", [12463]], [[65401, 65401], "mapped", [12465]], [[65402, 65402], "mapped", [12467]], [[65403, 65403], "mapped", [12469]], [[65404, 65404], "mapped", [12471]], [[65405, 65405], "mapped", [12473]], [[65406, 65406], "mapped", [12475]], [[65407, 65407], "mapped", [12477]], [[65408, 65408], "mapped", [12479]], [[65409, 65409], "mapped", [12481]], [[65410, 65410], "mapped", [12484]], [[65411, 65411], "mapped", [12486]], [[65412, 65412], "mapped", [12488]], [[65413, 65413], "mapped", [12490]], [[65414, 65414], "mapped", [12491]], [[65415, 65415], "mapped", [12492]], [[65416, 65416], "mapped", [12493]], [[65417, 65417], "mapped", [12494]], [[65418, 65418], "mapped", [12495]], [[65419, 65419], "mapped", [12498]], [[65420, 65420], "mapped", [12501]], [[65421, 65421], "mapped", [12504]], [[65422, 65422], "mapped", [12507]], [[65423, 65423], "mapped", [12510]], [[65424, 65424], "mapped", [12511]], [[65425, 65425], "mapped", [12512]], [[65426, 65426], "mapped", [12513]], [[65427, 65427], "mapped", [12514]], [[65428, 65428], "mapped", [12516]], [[65429, 65429], "mapped", [12518]], [[65430, 65430], "mapped", [12520]], [[65431, 65431], "mapped", [12521]], [[65432, 65432], "mapped", [12522]], [[65433, 65433], "mapped", [12523]], [[65434, 65434], "mapped", [12524]], [[65435, 65435], "mapped", [12525]], [[65436, 65436], "mapped", [12527]], [[65437, 65437], "mapped", [12531]], [[65438, 65438], "mapped", [12441]], [[65439, 65439], "mapped", [12442]], [[65440, 65440], "disallowed"], [[65441, 65441], "mapped", [4352]], [[65442, 65442], "mapped", [4353]], [[65443, 65443], "mapped", [4522]], [[65444, 65444], "mapped", [4354]], [[65445, 65445], "mapped", [4524]], [[65446, 65446], "mapped", [4525]], [[65447, 65447], "mapped", [4355]], [[65448, 65448], "mapped", [4356]], [[65449, 65449], "mapped", [4357]], [[65450, 65450], "mapped", [4528]], [[65451, 65451], "mapped", [4529]], [[65452, 65452], "mapped", [4530]], [[65453, 65453], "mapped", [4531]], [[65454, 65454], "mapped", [4532]], [[65455, 65455], "mapped", [4533]], [[65456, 65456], "mapped", [4378]], [[65457, 65457], "mapped", [4358]], [[65458, 65458], "mapped", [4359]], [[65459, 65459], "mapped", [4360]], [[65460, 65460], "mapped", [4385]], [[65461, 65461], "mapped", [4361]], [[65462, 65462], "mapped", [4362]], [[65463, 65463], "mapped", [4363]], [[65464, 65464], "mapped", [4364]], [[65465, 65465], "mapped", [4365]], [[65466, 65466], "mapped", [4366]], [[65467, 65467], "mapped", [4367]], [[65468, 65468], "mapped", [4368]], [[65469, 65469], "mapped", [4369]], [[65470, 65470], "mapped", [4370]], [[65471, 65473], "disallowed"], [[65474, 65474], "mapped", [4449]], [[65475, 65475], "mapped", [4450]], [[65476, 65476], "mapped", [4451]], [[65477, 65477], "mapped", [4452]], [[65478, 65478], "mapped", [4453]], [[65479, 65479], "mapped", [4454]], [[65480, 65481], "disallowed"], [[65482, 65482], "mapped", [4455]], [[65483, 65483], "mapped", [4456]], [[65484, 65484], "mapped", [4457]], [[65485, 65485], "mapped", [4458]], [[65486, 65486], "mapped", [4459]], [[65487, 65487], "mapped", [4460]], [[65488, 65489], "disallowed"], [[65490, 65490], "mapped", [4461]], [[65491, 65491], "mapped", [4462]], [[65492, 65492], "mapped", [4463]], [[65493, 65493], "mapped", [4464]], [[65494, 65494], "mapped", [4465]], [[65495, 65495], "mapped", [4466]], [[65496, 65497], "disallowed"], [[65498, 65498], "mapped", [4467]], [[65499, 65499], "mapped", [4468]], [[65500, 65500], "mapped", [4469]], [[65501, 65503], "disallowed"], [[65504, 65504], "mapped", [162]], [[65505, 65505], "mapped", [163]], [[65506, 65506], "mapped", [172]], [[65507, 65507], "disallowed_STD3_mapped", [32, 772]], [[65508, 65508], "mapped", [166]], [[65509, 65509], "mapped", [165]], [[65510, 65510], "mapped", [8361]], [[65511, 65511], "disallowed"], [[65512, 65512], "mapped", [9474]], [[65513, 65513], "mapped", [8592]], [[65514, 65514], "mapped", [8593]], [[65515, 65515], "mapped", [8594]], [[65516, 65516], "mapped", [8595]], [[65517, 65517], "mapped", [9632]], [[65518, 65518], "mapped", [9675]], [[65519, 65528], "disallowed"], [[65529, 65531], "disallowed"], [[65532, 65532], "disallowed"], [[65533, 65533], "disallowed"], [[65534, 65535], "disallowed"], [[65536, 65547], "valid"], [[65548, 65548], "disallowed"], [[65549, 65574], "valid"], [[65575, 65575], "disallowed"], [[65576, 65594], "valid"], [[65595, 65595], "disallowed"], [[65596, 65597], "valid"], [[65598, 65598], "disallowed"], [[65599, 65613], "valid"], [[65614, 65615], "disallowed"], [[65616, 65629], "valid"], [[65630, 65663], "disallowed"], [[65664, 65786], "valid"], [[65787, 65791], "disallowed"], [[65792, 65794], "valid", [], "NV8"], [[65795, 65798], "disallowed"], [[65799, 65843], "valid", [], "NV8"], [[65844, 65846], "disallowed"], [[65847, 65855], "valid", [], "NV8"], [[65856, 65930], "valid", [], "NV8"], [[65931, 65932], "valid", [], "NV8"], [[65933, 65935], "disallowed"], [[65936, 65947], "valid", [], "NV8"], [[65948, 65951], "disallowed"], [[65952, 65952], "valid", [], "NV8"], [[65953, 65999], "disallowed"], [[66e3, 66044], "valid", [], "NV8"], [[66045, 66045], "valid"], [[66046, 66175], "disallowed"], [[66176, 66204], "valid"], [[66205, 66207], "disallowed"], [[66208, 66256], "valid"], [[66257, 66271], "disallowed"], [[66272, 66272], "valid"], [[66273, 66299], "valid", [], "NV8"], [[66300, 66303], "disallowed"], [[66304, 66334], "valid"], [[66335, 66335], "valid"], [[66336, 66339], "valid", [], "NV8"], [[66340, 66351], "disallowed"], [[66352, 66368], "valid"], [[66369, 66369], "valid", [], "NV8"], [[66370, 66377], "valid"], [[66378, 66378], "valid", [], "NV8"], [[66379, 66383], "disallowed"], [[66384, 66426], "valid"], [[66427, 66431], "disallowed"], [[66432, 66461], "valid"], [[66462, 66462], "disallowed"], [[66463, 66463], "valid", [], "NV8"], [[66464, 66499], "valid"], [[66500, 66503], "disallowed"], [[66504, 66511], "valid"], [[66512, 66517], "valid", [], "NV8"], [[66518, 66559], "disallowed"], [[66560, 66560], "mapped", [66600]], [[66561, 66561], "mapped", [66601]], [[66562, 66562], "mapped", [66602]], [[66563, 66563], "mapped", [66603]], [[66564, 66564], "mapped", [66604]], [[66565, 66565], "mapped", [66605]], [[66566, 66566], "mapped", [66606]], [[66567, 66567], "mapped", [66607]], [[66568, 66568], "mapped", [66608]], [[66569, 66569], "mapped", [66609]], [[66570, 66570], "mapped", [66610]], [[66571, 66571], "mapped", [66611]], [[66572, 66572], "mapped", [66612]], [[66573, 66573], "mapped", [66613]], [[66574, 66574], "mapped", [66614]], [[66575, 66575], "mapped", [66615]], [[66576, 66576], "mapped", [66616]], [[66577, 66577], "mapped", [66617]], [[66578, 66578], "mapped", [66618]], [[66579, 66579], "mapped", [66619]], [[66580, 66580], "mapped", [66620]], [[66581, 66581], "mapped", [66621]], [[66582, 66582], "mapped", [66622]], [[66583, 66583], "mapped", [66623]], [[66584, 66584], "mapped", [66624]], [[66585, 66585], "mapped", [66625]], [[66586, 66586], "mapped", [66626]], [[66587, 66587], "mapped", [66627]], [[66588, 66588], "mapped", [66628]], [[66589, 66589], "mapped", [66629]], [[66590, 66590], "mapped", [66630]], [[66591, 66591], "mapped", [66631]], [[66592, 66592], "mapped", [66632]], [[66593, 66593], "mapped", [66633]], [[66594, 66594], "mapped", [66634]], [[66595, 66595], "mapped", [66635]], [[66596, 66596], "mapped", [66636]], [[66597, 66597], "mapped", [66637]], [[66598, 66598], "mapped", [66638]], [[66599, 66599], "mapped", [66639]], [[66600, 66637], "valid"], [[66638, 66717], "valid"], [[66718, 66719], "disallowed"], [[66720, 66729], "valid"], [[66730, 66815], "disallowed"], [[66816, 66855], "valid"], [[66856, 66863], "disallowed"], [[66864, 66915], "valid"], [[66916, 66926], "disallowed"], [[66927, 66927], "valid", [], "NV8"], [[66928, 67071], "disallowed"], [[67072, 67382], "valid"], [[67383, 67391], "disallowed"], [[67392, 67413], "valid"], [[67414, 67423], "disallowed"], [[67424, 67431], "valid"], [[67432, 67583], "disallowed"], [[67584, 67589], "valid"], [[67590, 67591], "disallowed"], [[67592, 67592], "valid"], [[67593, 67593], "disallowed"], [[67594, 67637], "valid"], [[67638, 67638], "disallowed"], [[67639, 67640], "valid"], [[67641, 67643], "disallowed"], [[67644, 67644], "valid"], [[67645, 67646], "disallowed"], [[67647, 67647], "valid"], [[67648, 67669], "valid"], [[67670, 67670], "disallowed"], [[67671, 67679], "valid", [], "NV8"], [[67680, 67702], "valid"], [[67703, 67711], "valid", [], "NV8"], [[67712, 67742], "valid"], [[67743, 67750], "disallowed"], [[67751, 67759], "valid", [], "NV8"], [[67760, 67807], "disallowed"], [[67808, 67826], "valid"], [[67827, 67827], "disallowed"], [[67828, 67829], "valid"], [[67830, 67834], "disallowed"], [[67835, 67839], "valid", [], "NV8"], [[67840, 67861], "valid"], [[67862, 67865], "valid", [], "NV8"], [[67866, 67867], "valid", [], "NV8"], [[67868, 67870], "disallowed"], [[67871, 67871], "valid", [], "NV8"], [[67872, 67897], "valid"], [[67898, 67902], "disallowed"], [[67903, 67903], "valid", [], "NV8"], [[67904, 67967], "disallowed"], [[67968, 68023], "valid"], [[68024, 68027], "disallowed"], [[68028, 68029], "valid", [], "NV8"], [[68030, 68031], "valid"], [[68032, 68047], "valid", [], "NV8"], [[68048, 68049], "disallowed"], [[68050, 68095], "valid", [], "NV8"], [[68096, 68099], "valid"], [[68100, 68100], "disallowed"], [[68101, 68102], "valid"], [[68103, 68107], "disallowed"], [[68108, 68115], "valid"], [[68116, 68116], "disallowed"], [[68117, 68119], "valid"], [[68120, 68120], "disallowed"], [[68121, 68147], "valid"], [[68148, 68151], "disallowed"], [[68152, 68154], "valid"], [[68155, 68158], "disallowed"], [[68159, 68159], "valid"], [[68160, 68167], "valid", [], "NV8"], [[68168, 68175], "disallowed"], [[68176, 68184], "valid", [], "NV8"], [[68185, 68191], "disallowed"], [[68192, 68220], "valid"], [[68221, 68223], "valid", [], "NV8"], [[68224, 68252], "valid"], [[68253, 68255], "valid", [], "NV8"], [[68256, 68287], "disallowed"], [[68288, 68295], "valid"], [[68296, 68296], "valid", [], "NV8"], [[68297, 68326], "valid"], [[68327, 68330], "disallowed"], [[68331, 68342], "valid", [], "NV8"], [[68343, 68351], "disallowed"], [[68352, 68405], "valid"], [[68406, 68408], "disallowed"], [[68409, 68415], "valid", [], "NV8"], [[68416, 68437], "valid"], [[68438, 68439], "disallowed"], [[68440, 68447], "valid", [], "NV8"], [[68448, 68466], "valid"], [[68467, 68471], "disallowed"], [[68472, 68479], "valid", [], "NV8"], [[68480, 68497], "valid"], [[68498, 68504], "disallowed"], [[68505, 68508], "valid", [], "NV8"], [[68509, 68520], "disallowed"], [[68521, 68527], "valid", [], "NV8"], [[68528, 68607], "disallowed"], [[68608, 68680], "valid"], [[68681, 68735], "disallowed"], [[68736, 68736], "mapped", [68800]], [[68737, 68737], "mapped", [68801]], [[68738, 68738], "mapped", [68802]], [[68739, 68739], "mapped", [68803]], [[68740, 68740], "mapped", [68804]], [[68741, 68741], "mapped", [68805]], [[68742, 68742], "mapped", [68806]], [[68743, 68743], "mapped", [68807]], [[68744, 68744], "mapped", [68808]], [[68745, 68745], "mapped", [68809]], [[68746, 68746], "mapped", [68810]], [[68747, 68747], "mapped", [68811]], [[68748, 68748], "mapped", [68812]], [[68749, 68749], "mapped", [68813]], [[68750, 68750], "mapped", [68814]], [[68751, 68751], "mapped", [68815]], [[68752, 68752], "mapped", [68816]], [[68753, 68753], "mapped", [68817]], [[68754, 68754], "mapped", [68818]], [[68755, 68755], "mapped", [68819]], [[68756, 68756], "mapped", [68820]], [[68757, 68757], "mapped", [68821]], [[68758, 68758], "mapped", [68822]], [[68759, 68759], "mapped", [68823]], [[68760, 68760], "mapped", [68824]], [[68761, 68761], "mapped", [68825]], [[68762, 68762], "mapped", [68826]], [[68763, 68763], "mapped", [68827]], [[68764, 68764], "mapped", [68828]], [[68765, 68765], "mapped", [68829]], [[68766, 68766], "mapped", [68830]], [[68767, 68767], "mapped", [68831]], [[68768, 68768], "mapped", [68832]], [[68769, 68769], "mapped", [68833]], [[68770, 68770], "mapped", [68834]], [[68771, 68771], "mapped", [68835]], [[68772, 68772], "mapped", [68836]], [[68773, 68773], "mapped", [68837]], [[68774, 68774], "mapped", [68838]], [[68775, 68775], "mapped", [68839]], [[68776, 68776], "mapped", [68840]], [[68777, 68777], "mapped", [68841]], [[68778, 68778], "mapped", [68842]], [[68779, 68779], "mapped", [68843]], [[68780, 68780], "mapped", [68844]], [[68781, 68781], "mapped", [68845]], [[68782, 68782], "mapped", [68846]], [[68783, 68783], "mapped", [68847]], [[68784, 68784], "mapped", [68848]], [[68785, 68785], "mapped", [68849]], [[68786, 68786], "mapped", [68850]], [[68787, 68799], "disallowed"], [[68800, 68850], "valid"], [[68851, 68857], "disallowed"], [[68858, 68863], "valid", [], "NV8"], [[68864, 69215], "disallowed"], [[69216, 69246], "valid", [], "NV8"], [[69247, 69631], "disallowed"], [[69632, 69702], "valid"], [[69703, 69709], "valid", [], "NV8"], [[69710, 69713], "disallowed"], [[69714, 69733], "valid", [], "NV8"], [[69734, 69743], "valid"], [[69744, 69758], "disallowed"], [[69759, 69759], "valid"], [[69760, 69818], "valid"], [[69819, 69820], "valid", [], "NV8"], [[69821, 69821], "disallowed"], [[69822, 69825], "valid", [], "NV8"], [[69826, 69839], "disallowed"], [[69840, 69864], "valid"], [[69865, 69871], "disallowed"], [[69872, 69881], "valid"], [[69882, 69887], "disallowed"], [[69888, 69940], "valid"], [[69941, 69941], "disallowed"], [[69942, 69951], "valid"], [[69952, 69955], "valid", [], "NV8"], [[69956, 69967], "disallowed"], [[69968, 70003], "valid"], [[70004, 70005], "valid", [], "NV8"], [[70006, 70006], "valid"], [[70007, 70015], "disallowed"], [[70016, 70084], "valid"], [[70085, 70088], "valid", [], "NV8"], [[70089, 70089], "valid", [], "NV8"], [[70090, 70092], "valid"], [[70093, 70093], "valid", [], "NV8"], [[70094, 70095], "disallowed"], [[70096, 70105], "valid"], [[70106, 70106], "valid"], [[70107, 70107], "valid", [], "NV8"], [[70108, 70108], "valid"], [[70109, 70111], "valid", [], "NV8"], [[70112, 70112], "disallowed"], [[70113, 70132], "valid", [], "NV8"], [[70133, 70143], "disallowed"], [[70144, 70161], "valid"], [[70162, 70162], "disallowed"], [[70163, 70199], "valid"], [[70200, 70205], "valid", [], "NV8"], [[70206, 70271], "disallowed"], [[70272, 70278], "valid"], [[70279, 70279], "disallowed"], [[70280, 70280], "valid"], [[70281, 70281], "disallowed"], [[70282, 70285], "valid"], [[70286, 70286], "disallowed"], [[70287, 70301], "valid"], [[70302, 70302], "disallowed"], [[70303, 70312], "valid"], [[70313, 70313], "valid", [], "NV8"], [[70314, 70319], "disallowed"], [[70320, 70378], "valid"], [[70379, 70383], "disallowed"], [[70384, 70393], "valid"], [[70394, 70399], "disallowed"], [[70400, 70400], "valid"], [[70401, 70403], "valid"], [[70404, 70404], "disallowed"], [[70405, 70412], "valid"], [[70413, 70414], "disallowed"], [[70415, 70416], "valid"], [[70417, 70418], "disallowed"], [[70419, 70440], "valid"], [[70441, 70441], "disallowed"], [[70442, 70448], "valid"], [[70449, 70449], "disallowed"], [[70450, 70451], "valid"], [[70452, 70452], "disallowed"], [[70453, 70457], "valid"], [[70458, 70459], "disallowed"], [[70460, 70468], "valid"], [[70469, 70470], "disallowed"], [[70471, 70472], "valid"], [[70473, 70474], "disallowed"], [[70475, 70477], "valid"], [[70478, 70479], "disallowed"], [[70480, 70480], "valid"], [[70481, 70486], "disallowed"], [[70487, 70487], "valid"], [[70488, 70492], "disallowed"], [[70493, 70499], "valid"], [[70500, 70501], "disallowed"], [[70502, 70508], "valid"], [[70509, 70511], "disallowed"], [[70512, 70516], "valid"], [[70517, 70783], "disallowed"], [[70784, 70853], "valid"], [[70854, 70854], "valid", [], "NV8"], [[70855, 70855], "valid"], [[70856, 70863], "disallowed"], [[70864, 70873], "valid"], [[70874, 71039], "disallowed"], [[71040, 71093], "valid"], [[71094, 71095], "disallowed"], [[71096, 71104], "valid"], [[71105, 71113], "valid", [], "NV8"], [[71114, 71127], "valid", [], "NV8"], [[71128, 71133], "valid"], [[71134, 71167], "disallowed"], [[71168, 71232], "valid"], [[71233, 71235], "valid", [], "NV8"], [[71236, 71236], "valid"], [[71237, 71247], "disallowed"], [[71248, 71257], "valid"], [[71258, 71295], "disallowed"], [[71296, 71351], "valid"], [[71352, 71359], "disallowed"], [[71360, 71369], "valid"], [[71370, 71423], "disallowed"], [[71424, 71449], "valid"], [[71450, 71452], "disallowed"], [[71453, 71467], "valid"], [[71468, 71471], "disallowed"], [[71472, 71481], "valid"], [[71482, 71487], "valid", [], "NV8"], [[71488, 71839], "disallowed"], [[71840, 71840], "mapped", [71872]], [[71841, 71841], "mapped", [71873]], [[71842, 71842], "mapped", [71874]], [[71843, 71843], "mapped", [71875]], [[71844, 71844], "mapped", [71876]], [[71845, 71845], "mapped", [71877]], [[71846, 71846], "mapped", [71878]], [[71847, 71847], "mapped", [71879]], [[71848, 71848], "mapped", [71880]], [[71849, 71849], "mapped", [71881]], [[71850, 71850], "mapped", [71882]], [[71851, 71851], "mapped", [71883]], [[71852, 71852], "mapped", [71884]], [[71853, 71853], "mapped", [71885]], [[71854, 71854], "mapped", [71886]], [[71855, 71855], "mapped", [71887]], [[71856, 71856], "mapped", [71888]], [[71857, 71857], "mapped", [71889]], [[71858, 71858], "mapped", [71890]], [[71859, 71859], "mapped", [71891]], [[71860, 71860], "mapped", [71892]], [[71861, 71861], "mapped", [71893]], [[71862, 71862], "mapped", [71894]], [[71863, 71863], "mapped", [71895]], [[71864, 71864], "mapped", [71896]], [[71865, 71865], "mapped", [71897]], [[71866, 71866], "mapped", [71898]], [[71867, 71867], "mapped", [71899]], [[71868, 71868], "mapped", [71900]], [[71869, 71869], "mapped", [71901]], [[71870, 71870], "mapped", [71902]], [[71871, 71871], "mapped", [71903]], [[71872, 71913], "valid"], [[71914, 71922], "valid", [], "NV8"], [[71923, 71934], "disallowed"], [[71935, 71935], "valid"], [[71936, 72383], "disallowed"], [[72384, 72440], "valid"], [[72441, 73727], "disallowed"], [[73728, 74606], "valid"], [[74607, 74648], "valid"], [[74649, 74649], "valid"], [[74650, 74751], "disallowed"], [[74752, 74850], "valid", [], "NV8"], [[74851, 74862], "valid", [], "NV8"], [[74863, 74863], "disallowed"], [[74864, 74867], "valid", [], "NV8"], [[74868, 74868], "valid", [], "NV8"], [[74869, 74879], "disallowed"], [[74880, 75075], "valid"], [[75076, 77823], "disallowed"], [[77824, 78894], "valid"], [[78895, 82943], "disallowed"], [[82944, 83526], "valid"], [[83527, 92159], "disallowed"], [[92160, 92728], "valid"], [[92729, 92735], "disallowed"], [[92736, 92766], "valid"], [[92767, 92767], "disallowed"], [[92768, 92777], "valid"], [[92778, 92781], "disallowed"], [[92782, 92783], "valid", [], "NV8"], [[92784, 92879], "disallowed"], [[92880, 92909], "valid"], [[92910, 92911], "disallowed"], [[92912, 92916], "valid"], [[92917, 92917], "valid", [], "NV8"], [[92918, 92927], "disallowed"], [[92928, 92982], "valid"], [[92983, 92991], "valid", [], "NV8"], [[92992, 92995], "valid"], [[92996, 92997], "valid", [], "NV8"], [[92998, 93007], "disallowed"], [[93008, 93017], "valid"], [[93018, 93018], "disallowed"], [[93019, 93025], "valid", [], "NV8"], [[93026, 93026], "disallowed"], [[93027, 93047], "valid"], [[93048, 93052], "disallowed"], [[93053, 93071], "valid"], [[93072, 93951], "disallowed"], [[93952, 94020], "valid"], [[94021, 94031], "disallowed"], [[94032, 94078], "valid"], [[94079, 94094], "disallowed"], [[94095, 94111], "valid"], [[94112, 110591], "disallowed"], [[110592, 110593], "valid"], [[110594, 113663], "disallowed"], [[113664, 113770], "valid"], [[113771, 113775], "disallowed"], [[113776, 113788], "valid"], [[113789, 113791], "disallowed"], [[113792, 113800], "valid"], [[113801, 113807], "disallowed"], [[113808, 113817], "valid"], [[113818, 113819], "disallowed"], [[113820, 113820], "valid", [], "NV8"], [[113821, 113822], "valid"], [[113823, 113823], "valid", [], "NV8"], [[113824, 113827], "ignored"], [[113828, 118783], "disallowed"], [[118784, 119029], "valid", [], "NV8"], [[119030, 119039], "disallowed"], [[119040, 119078], "valid", [], "NV8"], [[119079, 119080], "disallowed"], [[119081, 119081], "valid", [], "NV8"], [[119082, 119133], "valid", [], "NV8"], [[119134, 119134], "mapped", [119127, 119141]], [[119135, 119135], "mapped", [119128, 119141]], [[119136, 119136], "mapped", [119128, 119141, 119150]], [[119137, 119137], "mapped", [119128, 119141, 119151]], [[119138, 119138], "mapped", [119128, 119141, 119152]], [[119139, 119139], "mapped", [119128, 119141, 119153]], [[119140, 119140], "mapped", [119128, 119141, 119154]], [[119141, 119154], "valid", [], "NV8"], [[119155, 119162], "disallowed"], [[119163, 119226], "valid", [], "NV8"], [[119227, 119227], "mapped", [119225, 119141]], [[119228, 119228], "mapped", [119226, 119141]], [[119229, 119229], "mapped", [119225, 119141, 119150]], [[119230, 119230], "mapped", [119226, 119141, 119150]], [[119231, 119231], "mapped", [119225, 119141, 119151]], [[119232, 119232], "mapped", [119226, 119141, 119151]], [[119233, 119261], "valid", [], "NV8"], [[119262, 119272], "valid", [], "NV8"], [[119273, 119295], "disallowed"], [[119296, 119365], "valid", [], "NV8"], [[119366, 119551], "disallowed"], [[119552, 119638], "valid", [], "NV8"], [[119639, 119647], "disallowed"], [[119648, 119665], "valid", [], "NV8"], [[119666, 119807], "disallowed"], [[119808, 119808], "mapped", [97]], [[119809, 119809], "mapped", [98]], [[119810, 119810], "mapped", [99]], [[119811, 119811], "mapped", [100]], [[119812, 119812], "mapped", [101]], [[119813, 119813], "mapped", [102]], [[119814, 119814], "mapped", [103]], [[119815, 119815], "mapped", [104]], [[119816, 119816], "mapped", [105]], [[119817, 119817], "mapped", [106]], [[119818, 119818], "mapped", [107]], [[119819, 119819], "mapped", [108]], [[119820, 119820], "mapped", [109]], [[119821, 119821], "mapped", [110]], [[119822, 119822], "mapped", [111]], [[119823, 119823], "mapped", [112]], [[119824, 119824], "mapped", [113]], [[119825, 119825], "mapped", [114]], [[119826, 119826], "mapped", [115]], [[119827, 119827], "mapped", [116]], [[119828, 119828], "mapped", [117]], [[119829, 119829], "mapped", [118]], [[119830, 119830], "mapped", [119]], [[119831, 119831], "mapped", [120]], [[119832, 119832], "mapped", [121]], [[119833, 119833], "mapped", [122]], [[119834, 119834], "mapped", [97]], [[119835, 119835], "mapped", [98]], [[119836, 119836], "mapped", [99]], [[119837, 119837], "mapped", [100]], [[119838, 119838], "mapped", [101]], [[119839, 119839], "mapped", [102]], [[119840, 119840], "mapped", [103]], [[119841, 119841], "mapped", [104]], [[119842, 119842], "mapped", [105]], [[119843, 119843], "mapped", [106]], [[119844, 119844], "mapped", [107]], [[119845, 119845], "mapped", [108]], [[119846, 119846], "mapped", [109]], [[119847, 119847], "mapped", [110]], [[119848, 119848], "mapped", [111]], [[119849, 119849], "mapped", [112]], [[119850, 119850], "mapped", [113]], [[119851, 119851], "mapped", [114]], [[119852, 119852], "mapped", [115]], [[119853, 119853], "mapped", [116]], [[119854, 119854], "mapped", [117]], [[119855, 119855], "mapped", [118]], [[119856, 119856], "mapped", [119]], [[119857, 119857], "mapped", [120]], [[119858, 119858], "mapped", [121]], [[119859, 119859], "mapped", [122]], [[119860, 119860], "mapped", [97]], [[119861, 119861], "mapped", [98]], [[119862, 119862], "mapped", [99]], [[119863, 119863], "mapped", [100]], [[119864, 119864], "mapped", [101]], [[119865, 119865], "mapped", [102]], [[119866, 119866], "mapped", [103]], [[119867, 119867], "mapped", [104]], [[119868, 119868], "mapped", [105]], [[119869, 119869], "mapped", [106]], [[119870, 119870], "mapped", [107]], [[119871, 119871], "mapped", [108]], [[119872, 119872], "mapped", [109]], [[119873, 119873], "mapped", [110]], [[119874, 119874], "mapped", [111]], [[119875, 119875], "mapped", [112]], [[119876, 119876], "mapped", [113]], [[119877, 119877], "mapped", [114]], [[119878, 119878], "mapped", [115]], [[119879, 119879], "mapped", [116]], [[119880, 119880], "mapped", [117]], [[119881, 119881], "mapped", [118]], [[119882, 119882], "mapped", [119]], [[119883, 119883], "mapped", [120]], [[119884, 119884], "mapped", [121]], [[119885, 119885], "mapped", [122]], [[119886, 119886], "mapped", [97]], [[119887, 119887], "mapped", [98]], [[119888, 119888], "mapped", [99]], [[119889, 119889], "mapped", [100]], [[119890, 119890], "mapped", [101]], [[119891, 119891], "mapped", [102]], [[119892, 119892], "mapped", [103]], [[119893, 119893], "disallowed"], [[119894, 119894], "mapped", [105]], [[119895, 119895], "mapped", [106]], [[119896, 119896], "mapped", [107]], [[119897, 119897], "mapped", [108]], [[119898, 119898], "mapped", [109]], [[119899, 119899], "mapped", [110]], [[119900, 119900], "mapped", [111]], [[119901, 119901], "mapped", [112]], [[119902, 119902], "mapped", [113]], [[119903, 119903], "mapped", [114]], [[119904, 119904], "mapped", [115]], [[119905, 119905], "mapped", [116]], [[119906, 119906], "mapped", [117]], [[119907, 119907], "mapped", [118]], [[119908, 119908], "mapped", [119]], [[119909, 119909], "mapped", [120]], [[119910, 119910], "mapped", [121]], [[119911, 119911], "mapped", [122]], [[119912, 119912], "mapped", [97]], [[119913, 119913], "mapped", [98]], [[119914, 119914], "mapped", [99]], [[119915, 119915], "mapped", [100]], [[119916, 119916], "mapped", [101]], [[119917, 119917], "mapped", [102]], [[119918, 119918], "mapped", [103]], [[119919, 119919], "mapped", [104]], [[119920, 119920], "mapped", [105]], [[119921, 119921], "mapped", [106]], [[119922, 119922], "mapped", [107]], [[119923, 119923], "mapped", [108]], [[119924, 119924], "mapped", [109]], [[119925, 119925], "mapped", [110]], [[119926, 119926], "mapped", [111]], [[119927, 119927], "mapped", [112]], [[119928, 119928], "mapped", [113]], [[119929, 119929], "mapped", [114]], [[119930, 119930], "mapped", [115]], [[119931, 119931], "mapped", [116]], [[119932, 119932], "mapped", [117]], [[119933, 119933], "mapped", [118]], [[119934, 119934], "mapped", [119]], [[119935, 119935], "mapped", [120]], [[119936, 119936], "mapped", [121]], [[119937, 119937], "mapped", [122]], [[119938, 119938], "mapped", [97]], [[119939, 119939], "mapped", [98]], [[119940, 119940], "mapped", [99]], [[119941, 119941], "mapped", [100]], [[119942, 119942], "mapped", [101]], [[119943, 119943], "mapped", [102]], [[119944, 119944], "mapped", [103]], [[119945, 119945], "mapped", [104]], [[119946, 119946], "mapped", [105]], [[119947, 119947], "mapped", [106]], [[119948, 119948], "mapped", [107]], [[119949, 119949], "mapped", [108]], [[119950, 119950], "mapped", [109]], [[119951, 119951], "mapped", [110]], [[119952, 119952], "mapped", [111]], [[119953, 119953], "mapped", [112]], [[119954, 119954], "mapped", [113]], [[119955, 119955], "mapped", [114]], [[119956, 119956], "mapped", [115]], [[119957, 119957], "mapped", [116]], [[119958, 119958], "mapped", [117]], [[119959, 119959], "mapped", [118]], [[119960, 119960], "mapped", [119]], [[119961, 119961], "mapped", [120]], [[119962, 119962], "mapped", [121]], [[119963, 119963], "mapped", [122]], [[119964, 119964], "mapped", [97]], [[119965, 119965], "disallowed"], [[119966, 119966], "mapped", [99]], [[119967, 119967], "mapped", [100]], [[119968, 119969], "disallowed"], [[119970, 119970], "mapped", [103]], [[119971, 119972], "disallowed"], [[119973, 119973], "mapped", [106]], [[119974, 119974], "mapped", [107]], [[119975, 119976], "disallowed"], [[119977, 119977], "mapped", [110]], [[119978, 119978], "mapped", [111]], [[119979, 119979], "mapped", [112]], [[119980, 119980], "mapped", [113]], [[119981, 119981], "disallowed"], [[119982, 119982], "mapped", [115]], [[119983, 119983], "mapped", [116]], [[119984, 119984], "mapped", [117]], [[119985, 119985], "mapped", [118]], [[119986, 119986], "mapped", [119]], [[119987, 119987], "mapped", [120]], [[119988, 119988], "mapped", [121]], [[119989, 119989], "mapped", [122]], [[119990, 119990], "mapped", [97]], [[119991, 119991], "mapped", [98]], [[119992, 119992], "mapped", [99]], [[119993, 119993], "mapped", [100]], [[119994, 119994], "disallowed"], [[119995, 119995], "mapped", [102]], [[119996, 119996], "disallowed"], [[119997, 119997], "mapped", [104]], [[119998, 119998], "mapped", [105]], [[119999, 119999], "mapped", [106]], [[12e4, 12e4], "mapped", [107]], [[120001, 120001], "mapped", [108]], [[120002, 120002], "mapped", [109]], [[120003, 120003], "mapped", [110]], [[120004, 120004], "disallowed"], [[120005, 120005], "mapped", [112]], [[120006, 120006], "mapped", [113]], [[120007, 120007], "mapped", [114]], [[120008, 120008], "mapped", [115]], [[120009, 120009], "mapped", [116]], [[120010, 120010], "mapped", [117]], [[120011, 120011], "mapped", [118]], [[120012, 120012], "mapped", [119]], [[120013, 120013], "mapped", [120]], [[120014, 120014], "mapped", [121]], [[120015, 120015], "mapped", [122]], [[120016, 120016], "mapped", [97]], [[120017, 120017], "mapped", [98]], [[120018, 120018], "mapped", [99]], [[120019, 120019], "mapped", [100]], [[120020, 120020], "mapped", [101]], [[120021, 120021], "mapped", [102]], [[120022, 120022], "mapped", [103]], [[120023, 120023], "mapped", [104]], [[120024, 120024], "mapped", [105]], [[120025, 120025], "mapped", [106]], [[120026, 120026], "mapped", [107]], [[120027, 120027], "mapped", [108]], [[120028, 120028], "mapped", [109]], [[120029, 120029], "mapped", [110]], [[120030, 120030], "mapped", [111]], [[120031, 120031], "mapped", [112]], [[120032, 120032], "mapped", [113]], [[120033, 120033], "mapped", [114]], [[120034, 120034], "mapped", [115]], [[120035, 120035], "mapped", [116]], [[120036, 120036], "mapped", [117]], [[120037, 120037], "mapped", [118]], [[120038, 120038], "mapped", [119]], [[120039, 120039], "mapped", [120]], [[120040, 120040], "mapped", [121]], [[120041, 120041], "mapped", [122]], [[120042, 120042], "mapped", [97]], [[120043, 120043], "mapped", [98]], [[120044, 120044], "mapped", [99]], [[120045, 120045], "mapped", [100]], [[120046, 120046], "mapped", [101]], [[120047, 120047], "mapped", [102]], [[120048, 120048], "mapped", [103]], [[120049, 120049], "mapped", [104]], [[120050, 120050], "mapped", [105]], [[120051, 120051], "mapped", [106]], [[120052, 120052], "mapped", [107]], [[120053, 120053], "mapped", [108]], [[120054, 120054], "mapped", [109]], [[120055, 120055], "mapped", [110]], [[120056, 120056], "mapped", [111]], [[120057, 120057], "mapped", [112]], [[120058, 120058], "mapped", [113]], [[120059, 120059], "mapped", [114]], [[120060, 120060], "mapped", [115]], [[120061, 120061], "mapped", [116]], [[120062, 120062], "mapped", [117]], [[120063, 120063], "mapped", [118]], [[120064, 120064], "mapped", [119]], [[120065, 120065], "mapped", [120]], [[120066, 120066], "mapped", [121]], [[120067, 120067], "mapped", [122]], [[120068, 120068], "mapped", [97]], [[120069, 120069], "mapped", [98]], [[120070, 120070], "disallowed"], [[120071, 120071], "mapped", [100]], [[120072, 120072], "mapped", [101]], [[120073, 120073], "mapped", [102]], [[120074, 120074], "mapped", [103]], [[120075, 120076], "disallowed"], [[120077, 120077], "mapped", [106]], [[120078, 120078], "mapped", [107]], [[120079, 120079], "mapped", [108]], [[120080, 120080], "mapped", [109]], [[120081, 120081], "mapped", [110]], [[120082, 120082], "mapped", [111]], [[120083, 120083], "mapped", [112]], [[120084, 120084], "mapped", [113]], [[120085, 120085], "disallowed"], [[120086, 120086], "mapped", [115]], [[120087, 120087], "mapped", [116]], [[120088, 120088], "mapped", [117]], [[120089, 120089], "mapped", [118]], [[120090, 120090], "mapped", [119]], [[120091, 120091], "mapped", [120]], [[120092, 120092], "mapped", [121]], [[120093, 120093], "disallowed"], [[120094, 120094], "mapped", [97]], [[120095, 120095], "mapped", [98]], [[120096, 120096], "mapped", [99]], [[120097, 120097], "mapped", [100]], [[120098, 120098], "mapped", [101]], [[120099, 120099], "mapped", [102]], [[120100, 120100], "mapped", [103]], [[120101, 120101], "mapped", [104]], [[120102, 120102], "mapped", [105]], [[120103, 120103], "mapped", [106]], [[120104, 120104], "mapped", [107]], [[120105, 120105], "mapped", [108]], [[120106, 120106], "mapped", [109]], [[120107, 120107], "mapped", [110]], [[120108, 120108], "mapped", [111]], [[120109, 120109], "mapped", [112]], [[120110, 120110], "mapped", [113]], [[120111, 120111], "mapped", [114]], [[120112, 120112], "mapped", [115]], [[120113, 120113], "mapped", [116]], [[120114, 120114], "mapped", [117]], [[120115, 120115], "mapped", [118]], [[120116, 120116], "mapped", [119]], [[120117, 120117], "mapped", [120]], [[120118, 120118], "mapped", [121]], [[120119, 120119], "mapped", [122]], [[120120, 120120], "mapped", [97]], [[120121, 120121], "mapped", [98]], [[120122, 120122], "disallowed"], [[120123, 120123], "mapped", [100]], [[120124, 120124], "mapped", [101]], [[120125, 120125], "mapped", [102]], [[120126, 120126], "mapped", [103]], [[120127, 120127], "disallowed"], [[120128, 120128], "mapped", [105]], [[120129, 120129], "mapped", [106]], [[120130, 120130], "mapped", [107]], [[120131, 120131], "mapped", [108]], [[120132, 120132], "mapped", [109]], [[120133, 120133], "disallowed"], [[120134, 120134], "mapped", [111]], [[120135, 120137], "disallowed"], [[120138, 120138], "mapped", [115]], [[120139, 120139], "mapped", [116]], [[120140, 120140], "mapped", [117]], [[120141, 120141], "mapped", [118]], [[120142, 120142], "mapped", [119]], [[120143, 120143], "mapped", [120]], [[120144, 120144], "mapped", [121]], [[120145, 120145], "disallowed"], [[120146, 120146], "mapped", [97]], [[120147, 120147], "mapped", [98]], [[120148, 120148], "mapped", [99]], [[120149, 120149], "mapped", [100]], [[120150, 120150], "mapped", [101]], [[120151, 120151], "mapped", [102]], [[120152, 120152], "mapped", [103]], [[120153, 120153], "mapped", [104]], [[120154, 120154], "mapped", [105]], [[120155, 120155], "mapped", [106]], [[120156, 120156], "mapped", [107]], [[120157, 120157], "mapped", [108]], [[120158, 120158], "mapped", [109]], [[120159, 120159], "mapped", [110]], [[120160, 120160], "mapped", [111]], [[120161, 120161], "mapped", [112]], [[120162, 120162], "mapped", [113]], [[120163, 120163], "mapped", [114]], [[120164, 120164], "mapped", [115]], [[120165, 120165], "mapped", [116]], [[120166, 120166], "mapped", [117]], [[120167, 120167], "mapped", [118]], [[120168, 120168], "mapped", [119]], [[120169, 120169], "mapped", [120]], [[120170, 120170], "mapped", [121]], [[120171, 120171], "mapped", [122]], [[120172, 120172], "mapped", [97]], [[120173, 120173], "mapped", [98]], [[120174, 120174], "mapped", [99]], [[120175, 120175], "mapped", [100]], [[120176, 120176], "mapped", [101]], [[120177, 120177], "mapped", [102]], [[120178, 120178], "mapped", [103]], [[120179, 120179], "mapped", [104]], [[120180, 120180], "mapped", [105]], [[120181, 120181], "mapped", [106]], [[120182, 120182], "mapped", [107]], [[120183, 120183], "mapped", [108]], [[120184, 120184], "mapped", [109]], [[120185, 120185], "mapped", [110]], [[120186, 120186], "mapped", [111]], [[120187, 120187], "mapped", [112]], [[120188, 120188], "mapped", [113]], [[120189, 120189], "mapped", [114]], [[120190, 120190], "mapped", [115]], [[120191, 120191], "mapped", [116]], [[120192, 120192], "mapped", [117]], [[120193, 120193], "mapped", [118]], [[120194, 120194], "mapped", [119]], [[120195, 120195], "mapped", [120]], [[120196, 120196], "mapped", [121]], [[120197, 120197], "mapped", [122]], [[120198, 120198], "mapped", [97]], [[120199, 120199], "mapped", [98]], [[120200, 120200], "mapped", [99]], [[120201, 120201], "mapped", [100]], [[120202, 120202], "mapped", [101]], [[120203, 120203], "mapped", [102]], [[120204, 120204], "mapped", [103]], [[120205, 120205], "mapped", [104]], [[120206, 120206], "mapped", [105]], [[120207, 120207], "mapped", [106]], [[120208, 120208], "mapped", [107]], [[120209, 120209], "mapped", [108]], [[120210, 120210], "mapped", [109]], [[120211, 120211], "mapped", [110]], [[120212, 120212], "mapped", [111]], [[120213, 120213], "mapped", [112]], [[120214, 120214], "mapped", [113]], [[120215, 120215], "mapped", [114]], [[120216, 120216], "mapped", [115]], [[120217, 120217], "mapped", [116]], [[120218, 120218], "mapped", [117]], [[120219, 120219], "mapped", [118]], [[120220, 120220], "mapped", [119]], [[120221, 120221], "mapped", [120]], [[120222, 120222], "mapped", [121]], [[120223, 120223], "mapped", [122]], [[120224, 120224], "mapped", [97]], [[120225, 120225], "mapped", [98]], [[120226, 120226], "mapped", [99]], [[120227, 120227], "mapped", [100]], [[120228, 120228], "mapped", [101]], [[120229, 120229], "mapped", [102]], [[120230, 120230], "mapped", [103]], [[120231, 120231], "mapped", [104]], [[120232, 120232], "mapped", [105]], [[120233, 120233], "mapped", [106]], [[120234, 120234], "mapped", [107]], [[120235, 120235], "mapped", [108]], [[120236, 120236], "mapped", [109]], [[120237, 120237], "mapped", [110]], [[120238, 120238], "mapped", [111]], [[120239, 120239], "mapped", [112]], [[120240, 120240], "mapped", [113]], [[120241, 120241], "mapped", [114]], [[120242, 120242], "mapped", [115]], [[120243, 120243], "mapped", [116]], [[120244, 120244], "mapped", [117]], [[120245, 120245], "mapped", [118]], [[120246, 120246], "mapped", [119]], [[120247, 120247], "mapped", [120]], [[120248, 120248], "mapped", [121]], [[120249, 120249], "mapped", [122]], [[120250, 120250], "mapped", [97]], [[120251, 120251], "mapped", [98]], [[120252, 120252], "mapped", [99]], [[120253, 120253], "mapped", [100]], [[120254, 120254], "mapped", [101]], [[120255, 120255], "mapped", [102]], [[120256, 120256], "mapped", [103]], [[120257, 120257], "mapped", [104]], [[120258, 120258], "mapped", [105]], [[120259, 120259], "mapped", [106]], [[120260, 120260], "mapped", [107]], [[120261, 120261], "mapped", [108]], [[120262, 120262], "mapped", [109]], [[120263, 120263], "mapped", [110]], [[120264, 120264], "mapped", [111]], [[120265, 120265], "mapped", [112]], [[120266, 120266], "mapped", [113]], [[120267, 120267], "mapped", [114]], [[120268, 120268], "mapped", [115]], [[120269, 120269], "mapped", [116]], [[120270, 120270], "mapped", [117]], [[120271, 120271], "mapped", [118]], [[120272, 120272], "mapped", [119]], [[120273, 120273], "mapped", [120]], [[120274, 120274], "mapped", [121]], [[120275, 120275], "mapped", [122]], [[120276, 120276], "mapped", [97]], [[120277, 120277], "mapped", [98]], [[120278, 120278], "mapped", [99]], [[120279, 120279], "mapped", [100]], [[120280, 120280], "mapped", [101]], [[120281, 120281], "mapped", [102]], [[120282, 120282], "mapped", [103]], [[120283, 120283], "mapped", [104]], [[120284, 120284], "mapped", [105]], [[120285, 120285], "mapped", [106]], [[120286, 120286], "mapped", [107]], [[120287, 120287], "mapped", [108]], [[120288, 120288], "mapped", [109]], [[120289, 120289], "mapped", [110]], [[120290, 120290], "mapped", [111]], [[120291, 120291], "mapped", [112]], [[120292, 120292], "mapped", [113]], [[120293, 120293], "mapped", [114]], [[120294, 120294], "mapped", [115]], [[120295, 120295], "mapped", [116]], [[120296, 120296], "mapped", [117]], [[120297, 120297], "mapped", [118]], [[120298, 120298], "mapped", [119]], [[120299, 120299], "mapped", [120]], [[120300, 120300], "mapped", [121]], [[120301, 120301], "mapped", [122]], [[120302, 120302], "mapped", [97]], [[120303, 120303], "mapped", [98]], [[120304, 120304], "mapped", [99]], [[120305, 120305], "mapped", [100]], [[120306, 120306], "mapped", [101]], [[120307, 120307], "mapped", [102]], [[120308, 120308], "mapped", [103]], [[120309, 120309], "mapped", [104]], [[120310, 120310], "mapped", [105]], [[120311, 120311], "mapped", [106]], [[120312, 120312], "mapped", [107]], [[120313, 120313], "mapped", [108]], [[120314, 120314], "mapped", [109]], [[120315, 120315], "mapped", [110]], [[120316, 120316], "mapped", [111]], [[120317, 120317], "mapped", [112]], [[120318, 120318], "mapped", [113]], [[120319, 120319], "mapped", [114]], [[120320, 120320], "mapped", [115]], [[120321, 120321], "mapped", [116]], [[120322, 120322], "mapped", [117]], [[120323, 120323], "mapped", [118]], [[120324, 120324], "mapped", [119]], [[120325, 120325], "mapped", [120]], [[120326, 120326], "mapped", [121]], [[120327, 120327], "mapped", [122]], [[120328, 120328], "mapped", [97]], [[120329, 120329], "mapped", [98]], [[120330, 120330], "mapped", [99]], [[120331, 120331], "mapped", [100]], [[120332, 120332], "mapped", [101]], [[120333, 120333], "mapped", [102]], [[120334, 120334], "mapped", [103]], [[120335, 120335], "mapped", [104]], [[120336, 120336], "mapped", [105]], [[120337, 120337], "mapped", [106]], [[120338, 120338], "mapped", [107]], [[120339, 120339], "mapped", [108]], [[120340, 120340], "mapped", [109]], [[120341, 120341], "mapped", [110]], [[120342, 120342], "mapped", [111]], [[120343, 120343], "mapped", [112]], [[120344, 120344], "mapped", [113]], [[120345, 120345], "mapped", [114]], [[120346, 120346], "mapped", [115]], [[120347, 120347], "mapped", [116]], [[120348, 120348], "mapped", [117]], [[120349, 120349], "mapped", [118]], [[120350, 120350], "mapped", [119]], [[120351, 120351], "mapped", [120]], [[120352, 120352], "mapped", [121]], [[120353, 120353], "mapped", [122]], [[120354, 120354], "mapped", [97]], [[120355, 120355], "mapped", [98]], [[120356, 120356], "mapped", [99]], [[120357, 120357], "mapped", [100]], [[120358, 120358], "mapped", [101]], [[120359, 120359], "mapped", [102]], [[120360, 120360], "mapped", [103]], [[120361, 120361], "mapped", [104]], [[120362, 120362], "mapped", [105]], [[120363, 120363], "mapped", [106]], [[120364, 120364], "mapped", [107]], [[120365, 120365], "mapped", [108]], [[120366, 120366], "mapped", [109]], [[120367, 120367], "mapped", [110]], [[120368, 120368], "mapped", [111]], [[120369, 120369], "mapped", [112]], [[120370, 120370], "mapped", [113]], [[120371, 120371], "mapped", [114]], [[120372, 120372], "mapped", [115]], [[120373, 120373], "mapped", [116]], [[120374, 120374], "mapped", [117]], [[120375, 120375], "mapped", [118]], [[120376, 120376], "mapped", [119]], [[120377, 120377], "mapped", [120]], [[120378, 120378], "mapped", [121]], [[120379, 120379], "mapped", [122]], [[120380, 120380], "mapped", [97]], [[120381, 120381], "mapped", [98]], [[120382, 120382], "mapped", [99]], [[120383, 120383], "mapped", [100]], [[120384, 120384], "mapped", [101]], [[120385, 120385], "mapped", [102]], [[120386, 120386], "mapped", [103]], [[120387, 120387], "mapped", [104]], [[120388, 120388], "mapped", [105]], [[120389, 120389], "mapped", [106]], [[120390, 120390], "mapped", [107]], [[120391, 120391], "mapped", [108]], [[120392, 120392], "mapped", [109]], [[120393, 120393], "mapped", [110]], [[120394, 120394], "mapped", [111]], [[120395, 120395], "mapped", [112]], [[120396, 120396], "mapped", [113]], [[120397, 120397], "mapped", [114]], [[120398, 120398], "mapped", [115]], [[120399, 120399], "mapped", [116]], [[120400, 120400], "mapped", [117]], [[120401, 120401], "mapped", [118]], [[120402, 120402], "mapped", [119]], [[120403, 120403], "mapped", [120]], [[120404, 120404], "mapped", [121]], [[120405, 120405], "mapped", [122]], [[120406, 120406], "mapped", [97]], [[120407, 120407], "mapped", [98]], [[120408, 120408], "mapped", [99]], [[120409, 120409], "mapped", [100]], [[120410, 120410], "mapped", [101]], [[120411, 120411], "mapped", [102]], [[120412, 120412], "mapped", [103]], [[120413, 120413], "mapped", [104]], [[120414, 120414], "mapped", [105]], [[120415, 120415], "mapped", [106]], [[120416, 120416], "mapped", [107]], [[120417, 120417], "mapped", [108]], [[120418, 120418], "mapped", [109]], [[120419, 120419], "mapped", [110]], [[120420, 120420], "mapped", [111]], [[120421, 120421], "mapped", [112]], [[120422, 120422], "mapped", [113]], [[120423, 120423], "mapped", [114]], [[120424, 120424], "mapped", [115]], [[120425, 120425], "mapped", [116]], [[120426, 120426], "mapped", [117]], [[120427, 120427], "mapped", [118]], [[120428, 120428], "mapped", [119]], [[120429, 120429], "mapped", [120]], [[120430, 120430], "mapped", [121]], [[120431, 120431], "mapped", [122]], [[120432, 120432], "mapped", [97]], [[120433, 120433], "mapped", [98]], [[120434, 120434], "mapped", [99]], [[120435, 120435], "mapped", [100]], [[120436, 120436], "mapped", [101]], [[120437, 120437], "mapped", [102]], [[120438, 120438], "mapped", [103]], [[120439, 120439], "mapped", [104]], [[120440, 120440], "mapped", [105]], [[120441, 120441], "mapped", [106]], [[120442, 120442], "mapped", [107]], [[120443, 120443], "mapped", [108]], [[120444, 120444], "mapped", [109]], [[120445, 120445], "mapped", [110]], [[120446, 120446], "mapped", [111]], [[120447, 120447], "mapped", [112]], [[120448, 120448], "mapped", [113]], [[120449, 120449], "mapped", [114]], [[120450, 120450], "mapped", [115]], [[120451, 120451], "mapped", [116]], [[120452, 120452], "mapped", [117]], [[120453, 120453], "mapped", [118]], [[120454, 120454], "mapped", [119]], [[120455, 120455], "mapped", [120]], [[120456, 120456], "mapped", [121]], [[120457, 120457], "mapped", [122]], [[120458, 120458], "mapped", [97]], [[120459, 120459], "mapped", [98]], [[120460, 120460], "mapped", [99]], [[120461, 120461], "mapped", [100]], [[120462, 120462], "mapped", [101]], [[120463, 120463], "mapped", [102]], [[120464, 120464], "mapped", [103]], [[120465, 120465], "mapped", [104]], [[120466, 120466], "mapped", [105]], [[120467, 120467], "mapped", [106]], [[120468, 120468], "mapped", [107]], [[120469, 120469], "mapped", [108]], [[120470, 120470], "mapped", [109]], [[120471, 120471], "mapped", [110]], [[120472, 120472], "mapped", [111]], [[120473, 120473], "mapped", [112]], [[120474, 120474], "mapped", [113]], [[120475, 120475], "mapped", [114]], [[120476, 120476], "mapped", [115]], [[120477, 120477], "mapped", [116]], [[120478, 120478], "mapped", [117]], [[120479, 120479], "mapped", [118]], [[120480, 120480], "mapped", [119]], [[120481, 120481], "mapped", [120]], [[120482, 120482], "mapped", [121]], [[120483, 120483], "mapped", [122]], [[120484, 120484], "mapped", [305]], [[120485, 120485], "mapped", [567]], [[120486, 120487], "disallowed"], [[120488, 120488], "mapped", [945]], [[120489, 120489], "mapped", [946]], [[120490, 120490], "mapped", [947]], [[120491, 120491], "mapped", [948]], [[120492, 120492], "mapped", [949]], [[120493, 120493], "mapped", [950]], [[120494, 120494], "mapped", [951]], [[120495, 120495], "mapped", [952]], [[120496, 120496], "mapped", [953]], [[120497, 120497], "mapped", [954]], [[120498, 120498], "mapped", [955]], [[120499, 120499], "mapped", [956]], [[120500, 120500], "mapped", [957]], [[120501, 120501], "mapped", [958]], [[120502, 120502], "mapped", [959]], [[120503, 120503], "mapped", [960]], [[120504, 120504], "mapped", [961]], [[120505, 120505], "mapped", [952]], [[120506, 120506], "mapped", [963]], [[120507, 120507], "mapped", [964]], [[120508, 120508], "mapped", [965]], [[120509, 120509], "mapped", [966]], [[120510, 120510], "mapped", [967]], [[120511, 120511], "mapped", [968]], [[120512, 120512], "mapped", [969]], [[120513, 120513], "mapped", [8711]], [[120514, 120514], "mapped", [945]], [[120515, 120515], "mapped", [946]], [[120516, 120516], "mapped", [947]], [[120517, 120517], "mapped", [948]], [[120518, 120518], "mapped", [949]], [[120519, 120519], "mapped", [950]], [[120520, 120520], "mapped", [951]], [[120521, 120521], "mapped", [952]], [[120522, 120522], "mapped", [953]], [[120523, 120523], "mapped", [954]], [[120524, 120524], "mapped", [955]], [[120525, 120525], "mapped", [956]], [[120526, 120526], "mapped", [957]], [[120527, 120527], "mapped", [958]], [[120528, 120528], "mapped", [959]], [[120529, 120529], "mapped", [960]], [[120530, 120530], "mapped", [961]], [[120531, 120532], "mapped", [963]], [[120533, 120533], "mapped", [964]], [[120534, 120534], "mapped", [965]], [[120535, 120535], "mapped", [966]], [[120536, 120536], "mapped", [967]], [[120537, 120537], "mapped", [968]], [[120538, 120538], "mapped", [969]], [[120539, 120539], "mapped", [8706]], [[120540, 120540], "mapped", [949]], [[120541, 120541], "mapped", [952]], [[120542, 120542], "mapped", [954]], [[120543, 120543], "mapped", [966]], [[120544, 120544], "mapped", [961]], [[120545, 120545], "mapped", [960]], [[120546, 120546], "mapped", [945]], [[120547, 120547], "mapped", [946]], [[120548, 120548], "mapped", [947]], [[120549, 120549], "mapped", [948]], [[120550, 120550], "mapped", [949]], [[120551, 120551], "mapped", [950]], [[120552, 120552], "mapped", [951]], [[120553, 120553], "mapped", [952]], [[120554, 120554], "mapped", [953]], [[120555, 120555], "mapped", [954]], [[120556, 120556], "mapped", [955]], [[120557, 120557], "mapped", [956]], [[120558, 120558], "mapped", [957]], [[120559, 120559], "mapped", [958]], [[120560, 120560], "mapped", [959]], [[120561, 120561], "mapped", [960]], [[120562, 120562], "mapped", [961]], [[120563, 120563], "mapped", [952]], [[120564, 120564], "mapped", [963]], [[120565, 120565], "mapped", [964]], [[120566, 120566], "mapped", [965]], [[120567, 120567], "mapped", [966]], [[120568, 120568], "mapped", [967]], [[120569, 120569], "mapped", [968]], [[120570, 120570], "mapped", [969]], [[120571, 120571], "mapped", [8711]], [[120572, 120572], "mapped", [945]], [[120573, 120573], "mapped", [946]], [[120574, 120574], "mapped", [947]], [[120575, 120575], "mapped", [948]], [[120576, 120576], "mapped", [949]], [[120577, 120577], "mapped", [950]], [[120578, 120578], "mapped", [951]], [[120579, 120579], "mapped", [952]], [[120580, 120580], "mapped", [953]], [[120581, 120581], "mapped", [954]], [[120582, 120582], "mapped", [955]], [[120583, 120583], "mapped", [956]], [[120584, 120584], "mapped", [957]], [[120585, 120585], "mapped", [958]], [[120586, 120586], "mapped", [959]], [[120587, 120587], "mapped", [960]], [[120588, 120588], "mapped", [961]], [[120589, 120590], "mapped", [963]], [[120591, 120591], "mapped", [964]], [[120592, 120592], "mapped", [965]], [[120593, 120593], "mapped", [966]], [[120594, 120594], "mapped", [967]], [[120595, 120595], "mapped", [968]], [[120596, 120596], "mapped", [969]], [[120597, 120597], "mapped", [8706]], [[120598, 120598], "mapped", [949]], [[120599, 120599], "mapped", [952]], [[120600, 120600], "mapped", [954]], [[120601, 120601], "mapped", [966]], [[120602, 120602], "mapped", [961]], [[120603, 120603], "mapped", [960]], [[120604, 120604], "mapped", [945]], [[120605, 120605], "mapped", [946]], [[120606, 120606], "mapped", [947]], [[120607, 120607], "mapped", [948]], [[120608, 120608], "mapped", [949]], [[120609, 120609], "mapped", [950]], [[120610, 120610], "mapped", [951]], [[120611, 120611], "mapped", [952]], [[120612, 120612], "mapped", [953]], [[120613, 120613], "mapped", [954]], [[120614, 120614], "mapped", [955]], [[120615, 120615], "mapped", [956]], [[120616, 120616], "mapped", [957]], [[120617, 120617], "mapped", [958]], [[120618, 120618], "mapped", [959]], [[120619, 120619], "mapped", [960]], [[120620, 120620], "mapped", [961]], [[120621, 120621], "mapped", [952]], [[120622, 120622], "mapped", [963]], [[120623, 120623], "mapped", [964]], [[120624, 120624], "mapped", [965]], [[120625, 120625], "mapped", [966]], [[120626, 120626], "mapped", [967]], [[120627, 120627], "mapped", [968]], [[120628, 120628], "mapped", [969]], [[120629, 120629], "mapped", [8711]], [[120630, 120630], "mapped", [945]], [[120631, 120631], "mapped", [946]], [[120632, 120632], "mapped", [947]], [[120633, 120633], "mapped", [948]], [[120634, 120634], "mapped", [949]], [[120635, 120635], "mapped", [950]], [[120636, 120636], "mapped", [951]], [[120637, 120637], "mapped", [952]], [[120638, 120638], "mapped", [953]], [[120639, 120639], "mapped", [954]], [[120640, 120640], "mapped", [955]], [[120641, 120641], "mapped", [956]], [[120642, 120642], "mapped", [957]], [[120643, 120643], "mapped", [958]], [[120644, 120644], "mapped", [959]], [[120645, 120645], "mapped", [960]], [[120646, 120646], "mapped", [961]], [[120647, 120648], "mapped", [963]], [[120649, 120649], "mapped", [964]], [[120650, 120650], "mapped", [965]], [[120651, 120651], "mapped", [966]], [[120652, 120652], "mapped", [967]], [[120653, 120653], "mapped", [968]], [[120654, 120654], "mapped", [969]], [[120655, 120655], "mapped", [8706]], [[120656, 120656], "mapped", [949]], [[120657, 120657], "mapped", [952]], [[120658, 120658], "mapped", [954]], [[120659, 120659], "mapped", [966]], [[120660, 120660], "mapped", [961]], [[120661, 120661], "mapped", [960]], [[120662, 120662], "mapped", [945]], [[120663, 120663], "mapped", [946]], [[120664, 120664], "mapped", [947]], [[120665, 120665], "mapped", [948]], [[120666, 120666], "mapped", [949]], [[120667, 120667], "mapped", [950]], [[120668, 120668], "mapped", [951]], [[120669, 120669], "mapped", [952]], [[120670, 120670], "mapped", [953]], [[120671, 120671], "mapped", [954]], [[120672, 120672], "mapped", [955]], [[120673, 120673], "mapped", [956]], [[120674, 120674], "mapped", [957]], [[120675, 120675], "mapped", [958]], [[120676, 120676], "mapped", [959]], [[120677, 120677], "mapped", [960]], [[120678, 120678], "mapped", [961]], [[120679, 120679], "mapped", [952]], [[120680, 120680], "mapped", [963]], [[120681, 120681], "mapped", [964]], [[120682, 120682], "mapped", [965]], [[120683, 120683], "mapped", [966]], [[120684, 120684], "mapped", [967]], [[120685, 120685], "mapped", [968]], [[120686, 120686], "mapped", [969]], [[120687, 120687], "mapped", [8711]], [[120688, 120688], "mapped", [945]], [[120689, 120689], "mapped", [946]], [[120690, 120690], "mapped", [947]], [[120691, 120691], "mapped", [948]], [[120692, 120692], "mapped", [949]], [[120693, 120693], "mapped", [950]], [[120694, 120694], "mapped", [951]], [[120695, 120695], "mapped", [952]], [[120696, 120696], "mapped", [953]], [[120697, 120697], "mapped", [954]], [[120698, 120698], "mapped", [955]], [[120699, 120699], "mapped", [956]], [[120700, 120700], "mapped", [957]], [[120701, 120701], "mapped", [958]], [[120702, 120702], "mapped", [959]], [[120703, 120703], "mapped", [960]], [[120704, 120704], "mapped", [961]], [[120705, 120706], "mapped", [963]], [[120707, 120707], "mapped", [964]], [[120708, 120708], "mapped", [965]], [[120709, 120709], "mapped", [966]], [[120710, 120710], "mapped", [967]], [[120711, 120711], "mapped", [968]], [[120712, 120712], "mapped", [969]], [[120713, 120713], "mapped", [8706]], [[120714, 120714], "mapped", [949]], [[120715, 120715], "mapped", [952]], [[120716, 120716], "mapped", [954]], [[120717, 120717], "mapped", [966]], [[120718, 120718], "mapped", [961]], [[120719, 120719], "mapped", [960]], [[120720, 120720], "mapped", [945]], [[120721, 120721], "mapped", [946]], [[120722, 120722], "mapped", [947]], [[120723, 120723], "mapped", [948]], [[120724, 120724], "mapped", [949]], [[120725, 120725], "mapped", [950]], [[120726, 120726], "mapped", [951]], [[120727, 120727], "mapped", [952]], [[120728, 120728], "mapped", [953]], [[120729, 120729], "mapped", [954]], [[120730, 120730], "mapped", [955]], [[120731, 120731], "mapped", [956]], [[120732, 120732], "mapped", [957]], [[120733, 120733], "mapped", [958]], [[120734, 120734], "mapped", [959]], [[120735, 120735], "mapped", [960]], [[120736, 120736], "mapped", [961]], [[120737, 120737], "mapped", [952]], [[120738, 120738], "mapped", [963]], [[120739, 120739], "mapped", [964]], [[120740, 120740], "mapped", [965]], [[120741, 120741], "mapped", [966]], [[120742, 120742], "mapped", [967]], [[120743, 120743], "mapped", [968]], [[120744, 120744], "mapped", [969]], [[120745, 120745], "mapped", [8711]], [[120746, 120746], "mapped", [945]], [[120747, 120747], "mapped", [946]], [[120748, 120748], "mapped", [947]], [[120749, 120749], "mapped", [948]], [[120750, 120750], "mapped", [949]], [[120751, 120751], "mapped", [950]], [[120752, 120752], "mapped", [951]], [[120753, 120753], "mapped", [952]], [[120754, 120754], "mapped", [953]], [[120755, 120755], "mapped", [954]], [[120756, 120756], "mapped", [955]], [[120757, 120757], "mapped", [956]], [[120758, 120758], "mapped", [957]], [[120759, 120759], "mapped", [958]], [[120760, 120760], "mapped", [959]], [[120761, 120761], "mapped", [960]], [[120762, 120762], "mapped", [961]], [[120763, 120764], "mapped", [963]], [[120765, 120765], "mapped", [964]], [[120766, 120766], "mapped", [965]], [[120767, 120767], "mapped", [966]], [[120768, 120768], "mapped", [967]], [[120769, 120769], "mapped", [968]], [[120770, 120770], "mapped", [969]], [[120771, 120771], "mapped", [8706]], [[120772, 120772], "mapped", [949]], [[120773, 120773], "mapped", [952]], [[120774, 120774], "mapped", [954]], [[120775, 120775], "mapped", [966]], [[120776, 120776], "mapped", [961]], [[120777, 120777], "mapped", [960]], [[120778, 120779], "mapped", [989]], [[120780, 120781], "disallowed"], [[120782, 120782], "mapped", [48]], [[120783, 120783], "mapped", [49]], [[120784, 120784], "mapped", [50]], [[120785, 120785], "mapped", [51]], [[120786, 120786], "mapped", [52]], [[120787, 120787], "mapped", [53]], [[120788, 120788], "mapped", [54]], [[120789, 120789], "mapped", [55]], [[120790, 120790], "mapped", [56]], [[120791, 120791], "mapped", [57]], [[120792, 120792], "mapped", [48]], [[120793, 120793], "mapped", [49]], [[120794, 120794], "mapped", [50]], [[120795, 120795], "mapped", [51]], [[120796, 120796], "mapped", [52]], [[120797, 120797], "mapped", [53]], [[120798, 120798], "mapped", [54]], [[120799, 120799], "mapped", [55]], [[120800, 120800], "mapped", [56]], [[120801, 120801], "mapped", [57]], [[120802, 120802], "mapped", [48]], [[120803, 120803], "mapped", [49]], [[120804, 120804], "mapped", [50]], [[120805, 120805], "mapped", [51]], [[120806, 120806], "mapped", [52]], [[120807, 120807], "mapped", [53]], [[120808, 120808], "mapped", [54]], [[120809, 120809], "mapped", [55]], [[120810, 120810], "mapped", [56]], [[120811, 120811], "mapped", [57]], [[120812, 120812], "mapped", [48]], [[120813, 120813], "mapped", [49]], [[120814, 120814], "mapped", [50]], [[120815, 120815], "mapped", [51]], [[120816, 120816], "mapped", [52]], [[120817, 120817], "mapped", [53]], [[120818, 120818], "mapped", [54]], [[120819, 120819], "mapped", [55]], [[120820, 120820], "mapped", [56]], [[120821, 120821], "mapped", [57]], [[120822, 120822], "mapped", [48]], [[120823, 120823], "mapped", [49]], [[120824, 120824], "mapped", [50]], [[120825, 120825], "mapped", [51]], [[120826, 120826], "mapped", [52]], [[120827, 120827], "mapped", [53]], [[120828, 120828], "mapped", [54]], [[120829, 120829], "mapped", [55]], [[120830, 120830], "mapped", [56]], [[120831, 120831], "mapped", [57]], [[120832, 121343], "valid", [], "NV8"], [[121344, 121398], "valid"], [[121399, 121402], "valid", [], "NV8"], [[121403, 121452], "valid"], [[121453, 121460], "valid", [], "NV8"], [[121461, 121461], "valid"], [[121462, 121475], "valid", [], "NV8"], [[121476, 121476], "valid"], [[121477, 121483], "valid", [], "NV8"], [[121484, 121498], "disallowed"], [[121499, 121503], "valid"], [[121504, 121504], "disallowed"], [[121505, 121519], "valid"], [[121520, 124927], "disallowed"], [[124928, 125124], "valid"], [[125125, 125126], "disallowed"], [[125127, 125135], "valid", [], "NV8"], [[125136, 125142], "valid"], [[125143, 126463], "disallowed"], [[126464, 126464], "mapped", [1575]], [[126465, 126465], "mapped", [1576]], [[126466, 126466], "mapped", [1580]], [[126467, 126467], "mapped", [1583]], [[126468, 126468], "disallowed"], [[126469, 126469], "mapped", [1608]], [[126470, 126470], "mapped", [1586]], [[126471, 126471], "mapped", [1581]], [[126472, 126472], "mapped", [1591]], [[126473, 126473], "mapped", [1610]], [[126474, 126474], "mapped", [1603]], [[126475, 126475], "mapped", [1604]], [[126476, 126476], "mapped", [1605]], [[126477, 126477], "mapped", [1606]], [[126478, 126478], "mapped", [1587]], [[126479, 126479], "mapped", [1593]], [[126480, 126480], "mapped", [1601]], [[126481, 126481], "mapped", [1589]], [[126482, 126482], "mapped", [1602]], [[126483, 126483], "mapped", [1585]], [[126484, 126484], "mapped", [1588]], [[126485, 126485], "mapped", [1578]], [[126486, 126486], "mapped", [1579]], [[126487, 126487], "mapped", [1582]], [[126488, 126488], "mapped", [1584]], [[126489, 126489], "mapped", [1590]], [[126490, 126490], "mapped", [1592]], [[126491, 126491], "mapped", [1594]], [[126492, 126492], "mapped", [1646]], [[126493, 126493], "mapped", [1722]], [[126494, 126494], "mapped", [1697]], [[126495, 126495], "mapped", [1647]], [[126496, 126496], "disallowed"], [[126497, 126497], "mapped", [1576]], [[126498, 126498], "mapped", [1580]], [[126499, 126499], "disallowed"], [[126500, 126500], "mapped", [1607]], [[126501, 126502], "disallowed"], [[126503, 126503], "mapped", [1581]], [[126504, 126504], "disallowed"], [[126505, 126505], "mapped", [1610]], [[126506, 126506], "mapped", [1603]], [[126507, 126507], "mapped", [1604]], [[126508, 126508], "mapped", [1605]], [[126509, 126509], "mapped", [1606]], [[126510, 126510], "mapped", [1587]], [[126511, 126511], "mapped", [1593]], [[126512, 126512], "mapped", [1601]], [[126513, 126513], "mapped", [1589]], [[126514, 126514], "mapped", [1602]], [[126515, 126515], "disallowed"], [[126516, 126516], "mapped", [1588]], [[126517, 126517], "mapped", [1578]], [[126518, 126518], "mapped", [1579]], [[126519, 126519], "mapped", [1582]], [[126520, 126520], "disallowed"], [[126521, 126521], "mapped", [1590]], [[126522, 126522], "disallowed"], [[126523, 126523], "mapped", [1594]], [[126524, 126529], "disallowed"], [[126530, 126530], "mapped", [1580]], [[126531, 126534], "disallowed"], [[126535, 126535], "mapped", [1581]], [[126536, 126536], "disallowed"], [[126537, 126537], "mapped", [1610]], [[126538, 126538], "disallowed"], [[126539, 126539], "mapped", [1604]], [[126540, 126540], "disallowed"], [[126541, 126541], "mapped", [1606]], [[126542, 126542], "mapped", [1587]], [[126543, 126543], "mapped", [1593]], [[126544, 126544], "disallowed"], [[126545, 126545], "mapped", [1589]], [[126546, 126546], "mapped", [1602]], [[126547, 126547], "disallowed"], [[126548, 126548], "mapped", [1588]], [[126549, 126550], "disallowed"], [[126551, 126551], "mapped", [1582]], [[126552, 126552], "disallowed"], [[126553, 126553], "mapped", [1590]], [[126554, 126554], "disallowed"], [[126555, 126555], "mapped", [1594]], [[126556, 126556], "disallowed"], [[126557, 126557], "mapped", [1722]], [[126558, 126558], "disallowed"], [[126559, 126559], "mapped", [1647]], [[126560, 126560], "disallowed"], [[126561, 126561], "mapped", [1576]], [[126562, 126562], "mapped", [1580]], [[126563, 126563], "disallowed"], [[126564, 126564], "mapped", [1607]], [[126565, 126566], "disallowed"], [[126567, 126567], "mapped", [1581]], [[126568, 126568], "mapped", [1591]], [[126569, 126569], "mapped", [1610]], [[126570, 126570], "mapped", [1603]], [[126571, 126571], "disallowed"], [[126572, 126572], "mapped", [1605]], [[126573, 126573], "mapped", [1606]], [[126574, 126574], "mapped", [1587]], [[126575, 126575], "mapped", [1593]], [[126576, 126576], "mapped", [1601]], [[126577, 126577], "mapped", [1589]], [[126578, 126578], "mapped", [1602]], [[126579, 126579], "disallowed"], [[126580, 126580], "mapped", [1588]], [[126581, 126581], "mapped", [1578]], [[126582, 126582], "mapped", [1579]], [[126583, 126583], "mapped", [1582]], [[126584, 126584], "disallowed"], [[126585, 126585], "mapped", [1590]], [[126586, 126586], "mapped", [1592]], [[126587, 126587], "mapped", [1594]], [[126588, 126588], "mapped", [1646]], [[126589, 126589], "disallowed"], [[126590, 126590], "mapped", [1697]], [[126591, 126591], "disallowed"], [[126592, 126592], "mapped", [1575]], [[126593, 126593], "mapped", [1576]], [[126594, 126594], "mapped", [1580]], [[126595, 126595], "mapped", [1583]], [[126596, 126596], "mapped", [1607]], [[126597, 126597], "mapped", [1608]], [[126598, 126598], "mapped", [1586]], [[126599, 126599], "mapped", [1581]], [[126600, 126600], "mapped", [1591]], [[126601, 126601], "mapped", [1610]], [[126602, 126602], "disallowed"], [[126603, 126603], "mapped", [1604]], [[126604, 126604], "mapped", [1605]], [[126605, 126605], "mapped", [1606]], [[126606, 126606], "mapped", [1587]], [[126607, 126607], "mapped", [1593]], [[126608, 126608], "mapped", [1601]], [[126609, 126609], "mapped", [1589]], [[126610, 126610], "mapped", [1602]], [[126611, 126611], "mapped", [1585]], [[126612, 126612], "mapped", [1588]], [[126613, 126613], "mapped", [1578]], [[126614, 126614], "mapped", [1579]], [[126615, 126615], "mapped", [1582]], [[126616, 126616], "mapped", [1584]], [[126617, 126617], "mapped", [1590]], [[126618, 126618], "mapped", [1592]], [[126619, 126619], "mapped", [1594]], [[126620, 126624], "disallowed"], [[126625, 126625], "mapped", [1576]], [[126626, 126626], "mapped", [1580]], [[126627, 126627], "mapped", [1583]], [[126628, 126628], "disallowed"], [[126629, 126629], "mapped", [1608]], [[126630, 126630], "mapped", [1586]], [[126631, 126631], "mapped", [1581]], [[126632, 126632], "mapped", [1591]], [[126633, 126633], "mapped", [1610]], [[126634, 126634], "disallowed"], [[126635, 126635], "mapped", [1604]], [[126636, 126636], "mapped", [1605]], [[126637, 126637], "mapped", [1606]], [[126638, 126638], "mapped", [1587]], [[126639, 126639], "mapped", [1593]], [[126640, 126640], "mapped", [1601]], [[126641, 126641], "mapped", [1589]], [[126642, 126642], "mapped", [1602]], [[126643, 126643], "mapped", [1585]], [[126644, 126644], "mapped", [1588]], [[126645, 126645], "mapped", [1578]], [[126646, 126646], "mapped", [1579]], [[126647, 126647], "mapped", [1582]], [[126648, 126648], "mapped", [1584]], [[126649, 126649], "mapped", [1590]], [[126650, 126650], "mapped", [1592]], [[126651, 126651], "mapped", [1594]], [[126652, 126703], "disallowed"], [[126704, 126705], "valid", [], "NV8"], [[126706, 126975], "disallowed"], [[126976, 127019], "valid", [], "NV8"], [[127020, 127023], "disallowed"], [[127024, 127123], "valid", [], "NV8"], [[127124, 127135], "disallowed"], [[127136, 127150], "valid", [], "NV8"], [[127151, 127152], "disallowed"], [[127153, 127166], "valid", [], "NV8"], [[127167, 127167], "valid", [], "NV8"], [[127168, 127168], "disallowed"], [[127169, 127183], "valid", [], "NV8"], [[127184, 127184], "disallowed"], [[127185, 127199], "valid", [], "NV8"], [[127200, 127221], "valid", [], "NV8"], [[127222, 127231], "disallowed"], [[127232, 127232], "disallowed"], [[127233, 127233], "disallowed_STD3_mapped", [48, 44]], [[127234, 127234], "disallowed_STD3_mapped", [49, 44]], [[127235, 127235], "disallowed_STD3_mapped", [50, 44]], [[127236, 127236], "disallowed_STD3_mapped", [51, 44]], [[127237, 127237], "disallowed_STD3_mapped", [52, 44]], [[127238, 127238], "disallowed_STD3_mapped", [53, 44]], [[127239, 127239], "disallowed_STD3_mapped", [54, 44]], [[127240, 127240], "disallowed_STD3_mapped", [55, 44]], [[127241, 127241], "disallowed_STD3_mapped", [56, 44]], [[127242, 127242], "disallowed_STD3_mapped", [57, 44]], [[127243, 127244], "valid", [], "NV8"], [[127245, 127247], "disallowed"], [[127248, 127248], "disallowed_STD3_mapped", [40, 97, 41]], [[127249, 127249], "disallowed_STD3_mapped", [40, 98, 41]], [[127250, 127250], "disallowed_STD3_mapped", [40, 99, 41]], [[127251, 127251], "disallowed_STD3_mapped", [40, 100, 41]], [[127252, 127252], "disallowed_STD3_mapped", [40, 101, 41]], [[127253, 127253], "disallowed_STD3_mapped", [40, 102, 41]], [[127254, 127254], "disallowed_STD3_mapped", [40, 103, 41]], [[127255, 127255], "disallowed_STD3_mapped", [40, 104, 41]], [[127256, 127256], "disallowed_STD3_mapped", [40, 105, 41]], [[127257, 127257], "disallowed_STD3_mapped", [40, 106, 41]], [[127258, 127258], "disallowed_STD3_mapped", [40, 107, 41]], [[127259, 127259], "disallowed_STD3_mapped", [40, 108, 41]], [[127260, 127260], "disallowed_STD3_mapped", [40, 109, 41]], [[127261, 127261], "disallowed_STD3_mapped", [40, 110, 41]], [[127262, 127262], "disallowed_STD3_mapped", [40, 111, 41]], [[127263, 127263], "disallowed_STD3_mapped", [40, 112, 41]], [[127264, 127264], "disallowed_STD3_mapped", [40, 113, 41]], [[127265, 127265], "disallowed_STD3_mapped", [40, 114, 41]], [[127266, 127266], "disallowed_STD3_mapped", [40, 115, 41]], [[127267, 127267], "disallowed_STD3_mapped", [40, 116, 41]], [[127268, 127268], "disallowed_STD3_mapped", [40, 117, 41]], [[127269, 127269], "disallowed_STD3_mapped", [40, 118, 41]], [[127270, 127270], "disallowed_STD3_mapped", [40, 119, 41]], [[127271, 127271], "disallowed_STD3_mapped", [40, 120, 41]], [[127272, 127272], "disallowed_STD3_mapped", [40, 121, 41]], [[127273, 127273], "disallowed_STD3_mapped", [40, 122, 41]], [[127274, 127274], "mapped", [12308, 115, 12309]], [[127275, 127275], "mapped", [99]], [[127276, 127276], "mapped", [114]], [[127277, 127277], "mapped", [99, 100]], [[127278, 127278], "mapped", [119, 122]], [[127279, 127279], "disallowed"], [[127280, 127280], "mapped", [97]], [[127281, 127281], "mapped", [98]], [[127282, 127282], "mapped", [99]], [[127283, 127283], "mapped", [100]], [[127284, 127284], "mapped", [101]], [[127285, 127285], "mapped", [102]], [[127286, 127286], "mapped", [103]], [[127287, 127287], "mapped", [104]], [[127288, 127288], "mapped", [105]], [[127289, 127289], "mapped", [106]], [[127290, 127290], "mapped", [107]], [[127291, 127291], "mapped", [108]], [[127292, 127292], "mapped", [109]], [[127293, 127293], "mapped", [110]], [[127294, 127294], "mapped", [111]], [[127295, 127295], "mapped", [112]], [[127296, 127296], "mapped", [113]], [[127297, 127297], "mapped", [114]], [[127298, 127298], "mapped", [115]], [[127299, 127299], "mapped", [116]], [[127300, 127300], "mapped", [117]], [[127301, 127301], "mapped", [118]], [[127302, 127302], "mapped", [119]], [[127303, 127303], "mapped", [120]], [[127304, 127304], "mapped", [121]], [[127305, 127305], "mapped", [122]], [[127306, 127306], "mapped", [104, 118]], [[127307, 127307], "mapped", [109, 118]], [[127308, 127308], "mapped", [115, 100]], [[127309, 127309], "mapped", [115, 115]], [[127310, 127310], "mapped", [112, 112, 118]], [[127311, 127311], "mapped", [119, 99]], [[127312, 127318], "valid", [], "NV8"], [[127319, 127319], "valid", [], "NV8"], [[127320, 127326], "valid", [], "NV8"], [[127327, 127327], "valid", [], "NV8"], [[127328, 127337], "valid", [], "NV8"], [[127338, 127338], "mapped", [109, 99]], [[127339, 127339], "mapped", [109, 100]], [[127340, 127343], "disallowed"], [[127344, 127352], "valid", [], "NV8"], [[127353, 127353], "valid", [], "NV8"], [[127354, 127354], "valid", [], "NV8"], [[127355, 127356], "valid", [], "NV8"], [[127357, 127358], "valid", [], "NV8"], [[127359, 127359], "valid", [], "NV8"], [[127360, 127369], "valid", [], "NV8"], [[127370, 127373], "valid", [], "NV8"], [[127374, 127375], "valid", [], "NV8"], [[127376, 127376], "mapped", [100, 106]], [[127377, 127386], "valid", [], "NV8"], [[127387, 127461], "disallowed"], [[127462, 127487], "valid", [], "NV8"], [[127488, 127488], "mapped", [12411, 12363]], [[127489, 127489], "mapped", [12467, 12467]], [[127490, 127490], "mapped", [12469]], [[127491, 127503], "disallowed"], [[127504, 127504], "mapped", [25163]], [[127505, 127505], "mapped", [23383]], [[127506, 127506], "mapped", [21452]], [[127507, 127507], "mapped", [12487]], [[127508, 127508], "mapped", [20108]], [[127509, 127509], "mapped", [22810]], [[127510, 127510], "mapped", [35299]], [[127511, 127511], "mapped", [22825]], [[127512, 127512], "mapped", [20132]], [[127513, 127513], "mapped", [26144]], [[127514, 127514], "mapped", [28961]], [[127515, 127515], "mapped", [26009]], [[127516, 127516], "mapped", [21069]], [[127517, 127517], "mapped", [24460]], [[127518, 127518], "mapped", [20877]], [[127519, 127519], "mapped", [26032]], [[127520, 127520], "mapped", [21021]], [[127521, 127521], "mapped", [32066]], [[127522, 127522], "mapped", [29983]], [[127523, 127523], "mapped", [36009]], [[127524, 127524], "mapped", [22768]], [[127525, 127525], "mapped", [21561]], [[127526, 127526], "mapped", [28436]], [[127527, 127527], "mapped", [25237]], [[127528, 127528], "mapped", [25429]], [[127529, 127529], "mapped", [19968]], [[127530, 127530], "mapped", [19977]], [[127531, 127531], "mapped", [36938]], [[127532, 127532], "mapped", [24038]], [[127533, 127533], "mapped", [20013]], [[127534, 127534], "mapped", [21491]], [[127535, 127535], "mapped", [25351]], [[127536, 127536], "mapped", [36208]], [[127537, 127537], "mapped", [25171]], [[127538, 127538], "mapped", [31105]], [[127539, 127539], "mapped", [31354]], [[127540, 127540], "mapped", [21512]], [[127541, 127541], "mapped", [28288]], [[127542, 127542], "mapped", [26377]], [[127543, 127543], "mapped", [26376]], [[127544, 127544], "mapped", [30003]], [[127545, 127545], "mapped", [21106]], [[127546, 127546], "mapped", [21942]], [[127547, 127551], "disallowed"], [[127552, 127552], "mapped", [12308, 26412, 12309]], [[127553, 127553], "mapped", [12308, 19977, 12309]], [[127554, 127554], "mapped", [12308, 20108, 12309]], [[127555, 127555], "mapped", [12308, 23433, 12309]], [[127556, 127556], "mapped", [12308, 28857, 12309]], [[127557, 127557], "mapped", [12308, 25171, 12309]], [[127558, 127558], "mapped", [12308, 30423, 12309]], [[127559, 127559], "mapped", [12308, 21213, 12309]], [[127560, 127560], "mapped", [12308, 25943, 12309]], [[127561, 127567], "disallowed"], [[127568, 127568], "mapped", [24471]], [[127569, 127569], "mapped", [21487]], [[127570, 127743], "disallowed"], [[127744, 127776], "valid", [], "NV8"], [[127777, 127788], "valid", [], "NV8"], [[127789, 127791], "valid", [], "NV8"], [[127792, 127797], "valid", [], "NV8"], [[127798, 127798], "valid", [], "NV8"], [[127799, 127868], "valid", [], "NV8"], [[127869, 127869], "valid", [], "NV8"], [[127870, 127871], "valid", [], "NV8"], [[127872, 127891], "valid", [], "NV8"], [[127892, 127903], "valid", [], "NV8"], [[127904, 127940], "valid", [], "NV8"], [[127941, 127941], "valid", [], "NV8"], [[127942, 127946], "valid", [], "NV8"], [[127947, 127950], "valid", [], "NV8"], [[127951, 127955], "valid", [], "NV8"], [[127956, 127967], "valid", [], "NV8"], [[127968, 127984], "valid", [], "NV8"], [[127985, 127991], "valid", [], "NV8"], [[127992, 127999], "valid", [], "NV8"], [[128e3, 128062], "valid", [], "NV8"], [[128063, 128063], "valid", [], "NV8"], [[128064, 128064], "valid", [], "NV8"], [[128065, 128065], "valid", [], "NV8"], [[128066, 128247], "valid", [], "NV8"], [[128248, 128248], "valid", [], "NV8"], [[128249, 128252], "valid", [], "NV8"], [[128253, 128254], "valid", [], "NV8"], [[128255, 128255], "valid", [], "NV8"], [[128256, 128317], "valid", [], "NV8"], [[128318, 128319], "valid", [], "NV8"], [[128320, 128323], "valid", [], "NV8"], [[128324, 128330], "valid", [], "NV8"], [[128331, 128335], "valid", [], "NV8"], [[128336, 128359], "valid", [], "NV8"], [[128360, 128377], "valid", [], "NV8"], [[128378, 128378], "disallowed"], [[128379, 128419], "valid", [], "NV8"], [[128420, 128420], "disallowed"], [[128421, 128506], "valid", [], "NV8"], [[128507, 128511], "valid", [], "NV8"], [[128512, 128512], "valid", [], "NV8"], [[128513, 128528], "valid", [], "NV8"], [[128529, 128529], "valid", [], "NV8"], [[128530, 128532], "valid", [], "NV8"], [[128533, 128533], "valid", [], "NV8"], [[128534, 128534], "valid", [], "NV8"], [[128535, 128535], "valid", [], "NV8"], [[128536, 128536], "valid", [], "NV8"], [[128537, 128537], "valid", [], "NV8"], [[128538, 128538], "valid", [], "NV8"], [[128539, 128539], "valid", [], "NV8"], [[128540, 128542], "valid", [], "NV8"], [[128543, 128543], "valid", [], "NV8"], [[128544, 128549], "valid", [], "NV8"], [[128550, 128551], "valid", [], "NV8"], [[128552, 128555], "valid", [], "NV8"], [[128556, 128556], "valid", [], "NV8"], [[128557, 128557], "valid", [], "NV8"], [[128558, 128559], "valid", [], "NV8"], [[128560, 128563], "valid", [], "NV8"], [[128564, 128564], "valid", [], "NV8"], [[128565, 128576], "valid", [], "NV8"], [[128577, 128578], "valid", [], "NV8"], [[128579, 128580], "valid", [], "NV8"], [[128581, 128591], "valid", [], "NV8"], [[128592, 128639], "valid", [], "NV8"], [[128640, 128709], "valid", [], "NV8"], [[128710, 128719], "valid", [], "NV8"], [[128720, 128720], "valid", [], "NV8"], [[128721, 128735], "disallowed"], [[128736, 128748], "valid", [], "NV8"], [[128749, 128751], "disallowed"], [[128752, 128755], "valid", [], "NV8"], [[128756, 128767], "disallowed"], [[128768, 128883], "valid", [], "NV8"], [[128884, 128895], "disallowed"], [[128896, 128980], "valid", [], "NV8"], [[128981, 129023], "disallowed"], [[129024, 129035], "valid", [], "NV8"], [[129036, 129039], "disallowed"], [[129040, 129095], "valid", [], "NV8"], [[129096, 129103], "disallowed"], [[129104, 129113], "valid", [], "NV8"], [[129114, 129119], "disallowed"], [[129120, 129159], "valid", [], "NV8"], [[129160, 129167], "disallowed"], [[129168, 129197], "valid", [], "NV8"], [[129198, 129295], "disallowed"], [[129296, 129304], "valid", [], "NV8"], [[129305, 129407], "disallowed"], [[129408, 129412], "valid", [], "NV8"], [[129413, 129471], "disallowed"], [[129472, 129472], "valid", [], "NV8"], [[129473, 131069], "disallowed"], [[131070, 131071], "disallowed"], [[131072, 173782], "valid"], [[173783, 173823], "disallowed"], [[173824, 177972], "valid"], [[177973, 177983], "disallowed"], [[177984, 178205], "valid"], [[178206, 178207], "disallowed"], [[178208, 183969], "valid"], [[183970, 194559], "disallowed"], [[194560, 194560], "mapped", [20029]], [[194561, 194561], "mapped", [20024]], [[194562, 194562], "mapped", [20033]], [[194563, 194563], "mapped", [131362]], [[194564, 194564], "mapped", [20320]], [[194565, 194565], "mapped", [20398]], [[194566, 194566], "mapped", [20411]], [[194567, 194567], "mapped", [20482]], [[194568, 194568], "mapped", [20602]], [[194569, 194569], "mapped", [20633]], [[194570, 194570], "mapped", [20711]], [[194571, 194571], "mapped", [20687]], [[194572, 194572], "mapped", [13470]], [[194573, 194573], "mapped", [132666]], [[194574, 194574], "mapped", [20813]], [[194575, 194575], "mapped", [20820]], [[194576, 194576], "mapped", [20836]], [[194577, 194577], "mapped", [20855]], [[194578, 194578], "mapped", [132380]], [[194579, 194579], "mapped", [13497]], [[194580, 194580], "mapped", [20839]], [[194581, 194581], "mapped", [20877]], [[194582, 194582], "mapped", [132427]], [[194583, 194583], "mapped", [20887]], [[194584, 194584], "mapped", [20900]], [[194585, 194585], "mapped", [20172]], [[194586, 194586], "mapped", [20908]], [[194587, 194587], "mapped", [20917]], [[194588, 194588], "mapped", [168415]], [[194589, 194589], "mapped", [20981]], [[194590, 194590], "mapped", [20995]], [[194591, 194591], "mapped", [13535]], [[194592, 194592], "mapped", [21051]], [[194593, 194593], "mapped", [21062]], [[194594, 194594], "mapped", [21106]], [[194595, 194595], "mapped", [21111]], [[194596, 194596], "mapped", [13589]], [[194597, 194597], "mapped", [21191]], [[194598, 194598], "mapped", [21193]], [[194599, 194599], "mapped", [21220]], [[194600, 194600], "mapped", [21242]], [[194601, 194601], "mapped", [21253]], [[194602, 194602], "mapped", [21254]], [[194603, 194603], "mapped", [21271]], [[194604, 194604], "mapped", [21321]], [[194605, 194605], "mapped", [21329]], [[194606, 194606], "mapped", [21338]], [[194607, 194607], "mapped", [21363]], [[194608, 194608], "mapped", [21373]], [[194609, 194611], "mapped", [21375]], [[194612, 194612], "mapped", [133676]], [[194613, 194613], "mapped", [28784]], [[194614, 194614], "mapped", [21450]], [[194615, 194615], "mapped", [21471]], [[194616, 194616], "mapped", [133987]], [[194617, 194617], "mapped", [21483]], [[194618, 194618], "mapped", [21489]], [[194619, 194619], "mapped", [21510]], [[194620, 194620], "mapped", [21662]], [[194621, 194621], "mapped", [21560]], [[194622, 194622], "mapped", [21576]], [[194623, 194623], "mapped", [21608]], [[194624, 194624], "mapped", [21666]], [[194625, 194625], "mapped", [21750]], [[194626, 194626], "mapped", [21776]], [[194627, 194627], "mapped", [21843]], [[194628, 194628], "mapped", [21859]], [[194629, 194630], "mapped", [21892]], [[194631, 194631], "mapped", [21913]], [[194632, 194632], "mapped", [21931]], [[194633, 194633], "mapped", [21939]], [[194634, 194634], "mapped", [21954]], [[194635, 194635], "mapped", [22294]], [[194636, 194636], "mapped", [22022]], [[194637, 194637], "mapped", [22295]], [[194638, 194638], "mapped", [22097]], [[194639, 194639], "mapped", [22132]], [[194640, 194640], "mapped", [20999]], [[194641, 194641], "mapped", [22766]], [[194642, 194642], "mapped", [22478]], [[194643, 194643], "mapped", [22516]], [[194644, 194644], "mapped", [22541]], [[194645, 194645], "mapped", [22411]], [[194646, 194646], "mapped", [22578]], [[194647, 194647], "mapped", [22577]], [[194648, 194648], "mapped", [22700]], [[194649, 194649], "mapped", [136420]], [[194650, 194650], "mapped", [22770]], [[194651, 194651], "mapped", [22775]], [[194652, 194652], "mapped", [22790]], [[194653, 194653], "mapped", [22810]], [[194654, 194654], "mapped", [22818]], [[194655, 194655], "mapped", [22882]], [[194656, 194656], "mapped", [136872]], [[194657, 194657], "mapped", [136938]], [[194658, 194658], "mapped", [23020]], [[194659, 194659], "mapped", [23067]], [[194660, 194660], "mapped", [23079]], [[194661, 194661], "mapped", [23e3]], [[194662, 194662], "mapped", [23142]], [[194663, 194663], "mapped", [14062]], [[194664, 194664], "disallowed"], [[194665, 194665], "mapped", [23304]], [[194666, 194667], "mapped", [23358]], [[194668, 194668], "mapped", [137672]], [[194669, 194669], "mapped", [23491]], [[194670, 194670], "mapped", [23512]], [[194671, 194671], "mapped", [23527]], [[194672, 194672], "mapped", [23539]], [[194673, 194673], "mapped", [138008]], [[194674, 194674], "mapped", [23551]], [[194675, 194675], "mapped", [23558]], [[194676, 194676], "disallowed"], [[194677, 194677], "mapped", [23586]], [[194678, 194678], "mapped", [14209]], [[194679, 194679], "mapped", [23648]], [[194680, 194680], "mapped", [23662]], [[194681, 194681], "mapped", [23744]], [[194682, 194682], "mapped", [23693]], [[194683, 194683], "mapped", [138724]], [[194684, 194684], "mapped", [23875]], [[194685, 194685], "mapped", [138726]], [[194686, 194686], "mapped", [23918]], [[194687, 194687], "mapped", [23915]], [[194688, 194688], "mapped", [23932]], [[194689, 194689], "mapped", [24033]], [[194690, 194690], "mapped", [24034]], [[194691, 194691], "mapped", [14383]], [[194692, 194692], "mapped", [24061]], [[194693, 194693], "mapped", [24104]], [[194694, 194694], "mapped", [24125]], [[194695, 194695], "mapped", [24169]], [[194696, 194696], "mapped", [14434]], [[194697, 194697], "mapped", [139651]], [[194698, 194698], "mapped", [14460]], [[194699, 194699], "mapped", [24240]], [[194700, 194700], "mapped", [24243]], [[194701, 194701], "mapped", [24246]], [[194702, 194702], "mapped", [24266]], [[194703, 194703], "mapped", [172946]], [[194704, 194704], "mapped", [24318]], [[194705, 194706], "mapped", [140081]], [[194707, 194707], "mapped", [33281]], [[194708, 194709], "mapped", [24354]], [[194710, 194710], "mapped", [14535]], [[194711, 194711], "mapped", [144056]], [[194712, 194712], "mapped", [156122]], [[194713, 194713], "mapped", [24418]], [[194714, 194714], "mapped", [24427]], [[194715, 194715], "mapped", [14563]], [[194716, 194716], "mapped", [24474]], [[194717, 194717], "mapped", [24525]], [[194718, 194718], "mapped", [24535]], [[194719, 194719], "mapped", [24569]], [[194720, 194720], "mapped", [24705]], [[194721, 194721], "mapped", [14650]], [[194722, 194722], "mapped", [14620]], [[194723, 194723], "mapped", [24724]], [[194724, 194724], "mapped", [141012]], [[194725, 194725], "mapped", [24775]], [[194726, 194726], "mapped", [24904]], [[194727, 194727], "mapped", [24908]], [[194728, 194728], "mapped", [24910]], [[194729, 194729], "mapped", [24908]], [[194730, 194730], "mapped", [24954]], [[194731, 194731], "mapped", [24974]], [[194732, 194732], "mapped", [25010]], [[194733, 194733], "mapped", [24996]], [[194734, 194734], "mapped", [25007]], [[194735, 194735], "mapped", [25054]], [[194736, 194736], "mapped", [25074]], [[194737, 194737], "mapped", [25078]], [[194738, 194738], "mapped", [25104]], [[194739, 194739], "mapped", [25115]], [[194740, 194740], "mapped", [25181]], [[194741, 194741], "mapped", [25265]], [[194742, 194742], "mapped", [25300]], [[194743, 194743], "mapped", [25424]], [[194744, 194744], "mapped", [142092]], [[194745, 194745], "mapped", [25405]], [[194746, 194746], "mapped", [25340]], [[194747, 194747], "mapped", [25448]], [[194748, 194748], "mapped", [25475]], [[194749, 194749], "mapped", [25572]], [[194750, 194750], "mapped", [142321]], [[194751, 194751], "mapped", [25634]], [[194752, 194752], "mapped", [25541]], [[194753, 194753], "mapped", [25513]], [[194754, 194754], "mapped", [14894]], [[194755, 194755], "mapped", [25705]], [[194756, 194756], "mapped", [25726]], [[194757, 194757], "mapped", [25757]], [[194758, 194758], "mapped", [25719]], [[194759, 194759], "mapped", [14956]], [[194760, 194760], "mapped", [25935]], [[194761, 194761], "mapped", [25964]], [[194762, 194762], "mapped", [143370]], [[194763, 194763], "mapped", [26083]], [[194764, 194764], "mapped", [26360]], [[194765, 194765], "mapped", [26185]], [[194766, 194766], "mapped", [15129]], [[194767, 194767], "mapped", [26257]], [[194768, 194768], "mapped", [15112]], [[194769, 194769], "mapped", [15076]], [[194770, 194770], "mapped", [20882]], [[194771, 194771], "mapped", [20885]], [[194772, 194772], "mapped", [26368]], [[194773, 194773], "mapped", [26268]], [[194774, 194774], "mapped", [32941]], [[194775, 194775], "mapped", [17369]], [[194776, 194776], "mapped", [26391]], [[194777, 194777], "mapped", [26395]], [[194778, 194778], "mapped", [26401]], [[194779, 194779], "mapped", [26462]], [[194780, 194780], "mapped", [26451]], [[194781, 194781], "mapped", [144323]], [[194782, 194782], "mapped", [15177]], [[194783, 194783], "mapped", [26618]], [[194784, 194784], "mapped", [26501]], [[194785, 194785], "mapped", [26706]], [[194786, 194786], "mapped", [26757]], [[194787, 194787], "mapped", [144493]], [[194788, 194788], "mapped", [26766]], [[194789, 194789], "mapped", [26655]], [[194790, 194790], "mapped", [26900]], [[194791, 194791], "mapped", [15261]], [[194792, 194792], "mapped", [26946]], [[194793, 194793], "mapped", [27043]], [[194794, 194794], "mapped", [27114]], [[194795, 194795], "mapped", [27304]], [[194796, 194796], "mapped", [145059]], [[194797, 194797], "mapped", [27355]], [[194798, 194798], "mapped", [15384]], [[194799, 194799], "mapped", [27425]], [[194800, 194800], "mapped", [145575]], [[194801, 194801], "mapped", [27476]], [[194802, 194802], "mapped", [15438]], [[194803, 194803], "mapped", [27506]], [[194804, 194804], "mapped", [27551]], [[194805, 194805], "mapped", [27578]], [[194806, 194806], "mapped", [27579]], [[194807, 194807], "mapped", [146061]], [[194808, 194808], "mapped", [138507]], [[194809, 194809], "mapped", [146170]], [[194810, 194810], "mapped", [27726]], [[194811, 194811], "mapped", [146620]], [[194812, 194812], "mapped", [27839]], [[194813, 194813], "mapped", [27853]], [[194814, 194814], "mapped", [27751]], [[194815, 194815], "mapped", [27926]], [[194816, 194816], "mapped", [27966]], [[194817, 194817], "mapped", [28023]], [[194818, 194818], "mapped", [27969]], [[194819, 194819], "mapped", [28009]], [[194820, 194820], "mapped", [28024]], [[194821, 194821], "mapped", [28037]], [[194822, 194822], "mapped", [146718]], [[194823, 194823], "mapped", [27956]], [[194824, 194824], "mapped", [28207]], [[194825, 194825], "mapped", [28270]], [[194826, 194826], "mapped", [15667]], [[194827, 194827], "mapped", [28363]], [[194828, 194828], "mapped", [28359]], [[194829, 194829], "mapped", [147153]], [[194830, 194830], "mapped", [28153]], [[194831, 194831], "mapped", [28526]], [[194832, 194832], "mapped", [147294]], [[194833, 194833], "mapped", [147342]], [[194834, 194834], "mapped", [28614]], [[194835, 194835], "mapped", [28729]], [[194836, 194836], "mapped", [28702]], [[194837, 194837], "mapped", [28699]], [[194838, 194838], "mapped", [15766]], [[194839, 194839], "mapped", [28746]], [[194840, 194840], "mapped", [28797]], [[194841, 194841], "mapped", [28791]], [[194842, 194842], "mapped", [28845]], [[194843, 194843], "mapped", [132389]], [[194844, 194844], "mapped", [28997]], [[194845, 194845], "mapped", [148067]], [[194846, 194846], "mapped", [29084]], [[194847, 194847], "disallowed"], [[194848, 194848], "mapped", [29224]], [[194849, 194849], "mapped", [29237]], [[194850, 194850], "mapped", [29264]], [[194851, 194851], "mapped", [149e3]], [[194852, 194852], "mapped", [29312]], [[194853, 194853], "mapped", [29333]], [[194854, 194854], "mapped", [149301]], [[194855, 194855], "mapped", [149524]], [[194856, 194856], "mapped", [29562]], [[194857, 194857], "mapped", [29579]], [[194858, 194858], "mapped", [16044]], [[194859, 194859], "mapped", [29605]], [[194860, 194861], "mapped", [16056]], [[194862, 194862], "mapped", [29767]], [[194863, 194863], "mapped", [29788]], [[194864, 194864], "mapped", [29809]], [[194865, 194865], "mapped", [29829]], [[194866, 194866], "mapped", [29898]], [[194867, 194867], "mapped", [16155]], [[194868, 194868], "mapped", [29988]], [[194869, 194869], "mapped", [150582]], [[194870, 194870], "mapped", [30014]], [[194871, 194871], "mapped", [150674]], [[194872, 194872], "mapped", [30064]], [[194873, 194873], "mapped", [139679]], [[194874, 194874], "mapped", [30224]], [[194875, 194875], "mapped", [151457]], [[194876, 194876], "mapped", [151480]], [[194877, 194877], "mapped", [151620]], [[194878, 194878], "mapped", [16380]], [[194879, 194879], "mapped", [16392]], [[194880, 194880], "mapped", [30452]], [[194881, 194881], "mapped", [151795]], [[194882, 194882], "mapped", [151794]], [[194883, 194883], "mapped", [151833]], [[194884, 194884], "mapped", [151859]], [[194885, 194885], "mapped", [30494]], [[194886, 194887], "mapped", [30495]], [[194888, 194888], "mapped", [30538]], [[194889, 194889], "mapped", [16441]], [[194890, 194890], "mapped", [30603]], [[194891, 194891], "mapped", [16454]], [[194892, 194892], "mapped", [16534]], [[194893, 194893], "mapped", [152605]], [[194894, 194894], "mapped", [30798]], [[194895, 194895], "mapped", [30860]], [[194896, 194896], "mapped", [30924]], [[194897, 194897], "mapped", [16611]], [[194898, 194898], "mapped", [153126]], [[194899, 194899], "mapped", [31062]], [[194900, 194900], "mapped", [153242]], [[194901, 194901], "mapped", [153285]], [[194902, 194902], "mapped", [31119]], [[194903, 194903], "mapped", [31211]], [[194904, 194904], "mapped", [16687]], [[194905, 194905], "mapped", [31296]], [[194906, 194906], "mapped", [31306]], [[194907, 194907], "mapped", [31311]], [[194908, 194908], "mapped", [153980]], [[194909, 194910], "mapped", [154279]], [[194911, 194911], "disallowed"], [[194912, 194912], "mapped", [16898]], [[194913, 194913], "mapped", [154539]], [[194914, 194914], "mapped", [31686]], [[194915, 194915], "mapped", [31689]], [[194916, 194916], "mapped", [16935]], [[194917, 194917], "mapped", [154752]], [[194918, 194918], "mapped", [31954]], [[194919, 194919], "mapped", [17056]], [[194920, 194920], "mapped", [31976]], [[194921, 194921], "mapped", [31971]], [[194922, 194922], "mapped", [32e3]], [[194923, 194923], "mapped", [155526]], [[194924, 194924], "mapped", [32099]], [[194925, 194925], "mapped", [17153]], [[194926, 194926], "mapped", [32199]], [[194927, 194927], "mapped", [32258]], [[194928, 194928], "mapped", [32325]], [[194929, 194929], "mapped", [17204]], [[194930, 194930], "mapped", [156200]], [[194931, 194931], "mapped", [156231]], [[194932, 194932], "mapped", [17241]], [[194933, 194933], "mapped", [156377]], [[194934, 194934], "mapped", [32634]], [[194935, 194935], "mapped", [156478]], [[194936, 194936], "mapped", [32661]], [[194937, 194937], "mapped", [32762]], [[194938, 194938], "mapped", [32773]], [[194939, 194939], "mapped", [156890]], [[194940, 194940], "mapped", [156963]], [[194941, 194941], "mapped", [32864]], [[194942, 194942], "mapped", [157096]], [[194943, 194943], "mapped", [32880]], [[194944, 194944], "mapped", [144223]], [[194945, 194945], "mapped", [17365]], [[194946, 194946], "mapped", [32946]], [[194947, 194947], "mapped", [33027]], [[194948, 194948], "mapped", [17419]], [[194949, 194949], "mapped", [33086]], [[194950, 194950], "mapped", [23221]], [[194951, 194951], "mapped", [157607]], [[194952, 194952], "mapped", [157621]], [[194953, 194953], "mapped", [144275]], [[194954, 194954], "mapped", [144284]], [[194955, 194955], "mapped", [33281]], [[194956, 194956], "mapped", [33284]], [[194957, 194957], "mapped", [36766]], [[194958, 194958], "mapped", [17515]], [[194959, 194959], "mapped", [33425]], [[194960, 194960], "mapped", [33419]], [[194961, 194961], "mapped", [33437]], [[194962, 194962], "mapped", [21171]], [[194963, 194963], "mapped", [33457]], [[194964, 194964], "mapped", [33459]], [[194965, 194965], "mapped", [33469]], [[194966, 194966], "mapped", [33510]], [[194967, 194967], "mapped", [158524]], [[194968, 194968], "mapped", [33509]], [[194969, 194969], "mapped", [33565]], [[194970, 194970], "mapped", [33635]], [[194971, 194971], "mapped", [33709]], [[194972, 194972], "mapped", [33571]], [[194973, 194973], "mapped", [33725]], [[194974, 194974], "mapped", [33767]], [[194975, 194975], "mapped", [33879]], [[194976, 194976], "mapped", [33619]], [[194977, 194977], "mapped", [33738]], [[194978, 194978], "mapped", [33740]], [[194979, 194979], "mapped", [33756]], [[194980, 194980], "mapped", [158774]], [[194981, 194981], "mapped", [159083]], [[194982, 194982], "mapped", [158933]], [[194983, 194983], "mapped", [17707]], [[194984, 194984], "mapped", [34033]], [[194985, 194985], "mapped", [34035]], [[194986, 194986], "mapped", [34070]], [[194987, 194987], "mapped", [160714]], [[194988, 194988], "mapped", [34148]], [[194989, 194989], "mapped", [159532]], [[194990, 194990], "mapped", [17757]], [[194991, 194991], "mapped", [17761]], [[194992, 194992], "mapped", [159665]], [[194993, 194993], "mapped", [159954]], [[194994, 194994], "mapped", [17771]], [[194995, 194995], "mapped", [34384]], [[194996, 194996], "mapped", [34396]], [[194997, 194997], "mapped", [34407]], [[194998, 194998], "mapped", [34409]], [[194999, 194999], "mapped", [34473]], [[195e3, 195e3], "mapped", [34440]], [[195001, 195001], "mapped", [34574]], [[195002, 195002], "mapped", [34530]], [[195003, 195003], "mapped", [34681]], [[195004, 195004], "mapped", [34600]], [[195005, 195005], "mapped", [34667]], [[195006, 195006], "mapped", [34694]], [[195007, 195007], "disallowed"], [[195008, 195008], "mapped", [34785]], [[195009, 195009], "mapped", [34817]], [[195010, 195010], "mapped", [17913]], [[195011, 195011], "mapped", [34912]], [[195012, 195012], "mapped", [34915]], [[195013, 195013], "mapped", [161383]], [[195014, 195014], "mapped", [35031]], [[195015, 195015], "mapped", [35038]], [[195016, 195016], "mapped", [17973]], [[195017, 195017], "mapped", [35066]], [[195018, 195018], "mapped", [13499]], [[195019, 195019], "mapped", [161966]], [[195020, 195020], "mapped", [162150]], [[195021, 195021], "mapped", [18110]], [[195022, 195022], "mapped", [18119]], [[195023, 195023], "mapped", [35488]], [[195024, 195024], "mapped", [35565]], [[195025, 195025], "mapped", [35722]], [[195026, 195026], "mapped", [35925]], [[195027, 195027], "mapped", [162984]], [[195028, 195028], "mapped", [36011]], [[195029, 195029], "mapped", [36033]], [[195030, 195030], "mapped", [36123]], [[195031, 195031], "mapped", [36215]], [[195032, 195032], "mapped", [163631]], [[195033, 195033], "mapped", [133124]], [[195034, 195034], "mapped", [36299]], [[195035, 195035], "mapped", [36284]], [[195036, 195036], "mapped", [36336]], [[195037, 195037], "mapped", [133342]], [[195038, 195038], "mapped", [36564]], [[195039, 195039], "mapped", [36664]], [[195040, 195040], "mapped", [165330]], [[195041, 195041], "mapped", [165357]], [[195042, 195042], "mapped", [37012]], [[195043, 195043], "mapped", [37105]], [[195044, 195044], "mapped", [37137]], [[195045, 195045], "mapped", [165678]], [[195046, 195046], "mapped", [37147]], [[195047, 195047], "mapped", [37432]], [[195048, 195048], "mapped", [37591]], [[195049, 195049], "mapped", [37592]], [[195050, 195050], "mapped", [37500]], [[195051, 195051], "mapped", [37881]], [[195052, 195052], "mapped", [37909]], [[195053, 195053], "mapped", [166906]], [[195054, 195054], "mapped", [38283]], [[195055, 195055], "mapped", [18837]], [[195056, 195056], "mapped", [38327]], [[195057, 195057], "mapped", [167287]], [[195058, 195058], "mapped", [18918]], [[195059, 195059], "mapped", [38595]], [[195060, 195060], "mapped", [23986]], [[195061, 195061], "mapped", [38691]], [[195062, 195062], "mapped", [168261]], [[195063, 195063], "mapped", [168474]], [[195064, 195064], "mapped", [19054]], [[195065, 195065], "mapped", [19062]], [[195066, 195066], "mapped", [38880]], [[195067, 195067], "mapped", [168970]], [[195068, 195068], "mapped", [19122]], [[195069, 195069], "mapped", [169110]], [[195070, 195071], "mapped", [38923]], [[195072, 195072], "mapped", [38953]], [[195073, 195073], "mapped", [169398]], [[195074, 195074], "mapped", [39138]], [[195075, 195075], "mapped", [19251]], [[195076, 195076], "mapped", [39209]], [[195077, 195077], "mapped", [39335]], [[195078, 195078], "mapped", [39362]], [[195079, 195079], "mapped", [39422]], [[195080, 195080], "mapped", [19406]], [[195081, 195081], "mapped", [170800]], [[195082, 195082], "mapped", [39698]], [[195083, 195083], "mapped", [4e4]], [[195084, 195084], "mapped", [40189]], [[195085, 195085], "mapped", [19662]], [[195086, 195086], "mapped", [19693]], [[195087, 195087], "mapped", [40295]], [[195088, 195088], "mapped", [172238]], [[195089, 195089], "mapped", [19704]], [[195090, 195090], "mapped", [172293]], [[195091, 195091], "mapped", [172558]], [[195092, 195092], "mapped", [172689]], [[195093, 195093], "mapped", [40635]], [[195094, 195094], "mapped", [19798]], [[195095, 195095], "mapped", [40697]], [[195096, 195096], "mapped", [40702]], [[195097, 195097], "mapped", [40709]], [[195098, 195098], "mapped", [40719]], [[195099, 195099], "mapped", [40726]], [[195100, 195100], "mapped", [40763]], [[195101, 195101], "mapped", [173568]], [[195102, 196605], "disallowed"], [[196606, 196607], "disallowed"], [[196608, 262141], "disallowed"], [[262142, 262143], "disallowed"], [[262144, 327677], "disallowed"], [[327678, 327679], "disallowed"], [[327680, 393213], "disallowed"], [[393214, 393215], "disallowed"], [[393216, 458749], "disallowed"], [[458750, 458751], "disallowed"], [[458752, 524285], "disallowed"], [[524286, 524287], "disallowed"], [[524288, 589821], "disallowed"], [[589822, 589823], "disallowed"], [[589824, 655357], "disallowed"], [[655358, 655359], "disallowed"], [[655360, 720893], "disallowed"], [[720894, 720895], "disallowed"], [[720896, 786429], "disallowed"], [[786430, 786431], "disallowed"], [[786432, 851965], "disallowed"], [[851966, 851967], "disallowed"], [[851968, 917501], "disallowed"], [[917502, 917503], "disallowed"], [[917504, 917504], "disallowed"], [[917505, 917505], "disallowed"], [[917506, 917535], "disallowed"], [[917536, 917631], "disallowed"], [[917632, 917759], "disallowed"], [[917760, 917999], "ignored"], [[918e3, 983037], "disallowed"], [[983038, 983039], "disallowed"], [[983040, 1048573], "disallowed"], [[1048574, 1048575], "disallowed"], [[1048576, 1114109], "disallowed"], [[1114110, 1114111], "disallowed"]]; + } +}); + +// ../../../node_modules/tr46/index.js +var require_tr46 = __commonJS({ + "../../../node_modules/tr46/index.js"(exports, module2) { + "use strict"; + var punycode = require("punycode"); + var mappingTable = require_mappingTable(); + var PROCESSING_OPTIONS = { + TRANSITIONAL: 0, + NONTRANSITIONAL: 1 + }; + function normalize(str) { + return str.split("\0").map(function(s) { + return s.normalize("NFC"); + }).join("\0"); + } + function findStatus(val2) { + var start = 0; + var end = mappingTable.length - 1; + while (start <= end) { + var mid = Math.floor((start + end) / 2); + var target = mappingTable[mid]; + if (target[0][0] <= val2 && target[0][1] >= val2) { + return target; + } else if (target[0][0] > val2) { + end = mid - 1; + } else { + start = mid + 1; + } + } + return null; + } + var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + function countSymbols(string) { + return string.replace(regexAstralSymbols, "_").length; + } + function mapChars(domain_name, useSTD3, processing_option) { + var hasError = false; + var processed = ""; + var len = countSymbols(domain_name); + for (var i = 0; i < len; ++i) { + var codePoint = domain_name.codePointAt(i); + var status = findStatus(codePoint); + switch (status[1]) { + case "disallowed": + hasError = true; + processed += String.fromCodePoint(codePoint); + break; + case "ignored": + break; + case "mapped": + processed += String.fromCodePoint.apply(String, status[2]); + break; + case "deviation": + if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { + processed += String.fromCodePoint.apply(String, status[2]); + } else { + processed += String.fromCodePoint(codePoint); + } + break; + case "valid": + processed += String.fromCodePoint(codePoint); + break; + case "disallowed_STD3_mapped": + if (useSTD3) { + hasError = true; + processed += String.fromCodePoint(codePoint); + } else { + processed += String.fromCodePoint.apply(String, status[2]); + } + break; + case "disallowed_STD3_valid": + if (useSTD3) { + hasError = true; + } + processed += String.fromCodePoint(codePoint); + break; + } + } + return { + string: processed, + error: hasError + }; + } + var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; + function validateLabel(label, processing_option) { + if (label.substr(0, 4) === "xn--") { + label = punycode.toUnicode(label); + processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; + } + var error = false; + if (normalize(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) { + error = true; + } + var len = countSymbols(label); + for (var i = 0; i < len; ++i) { + var status = findStatus(label.codePointAt(i)); + if (processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid" || processing === PROCESSING_OPTIONS.NONTRANSITIONAL && status[1] !== "valid" && status[1] !== "deviation") { + error = true; + break; + } + } + return { + label, + error + }; + } + function processing(domain_name, useSTD3, processing_option) { + var result = mapChars(domain_name, useSTD3, processing_option); + result.string = normalize(result.string); + var labels = result.string.split("."); + for (var i = 0; i < labels.length; ++i) { + try { + var validation = validateLabel(labels[i]); + labels[i] = validation.label; + result.error = result.error || validation.error; + } catch (e) { + result.error = true; + } + } + return { + string: labels.join("."), + error: result.error + }; + } + module2.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { + var result = processing(domain_name, useSTD3, processing_option); + var labels = result.string.split("."); + labels = labels.map(function(l) { + try { + return punycode.toASCII(l); + } catch (e) { + result.error = true; + return l; + } + }); + if (verifyDnsLength) { + var total = labels.slice(0, labels.length - 1).join(".").length; + if (total.length > 253 || total.length === 0) { + result.error = true; + } + for (var i = 0; i < labels.length; ++i) { + if (labels.length > 63 || labels.length === 0) { + result.error = true; + break; + } + } + } + if (result.error) + return null; + return labels.join("."); + }; + module2.exports.toUnicode = function(domain_name, useSTD3) { + var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); + return { + domain: result.string, + error: result.error + }; + }; + module2.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; + } +}); + +// ../../../node_modules/whatwg-url/lib/url-state-machine.js +var require_url_state_machine = __commonJS({ + "../../../node_modules/whatwg-url/lib/url-state-machine.js"(exports, module2) { + "use strict"; + var punycode = require("punycode"); + var tr46 = require_tr46(); + var specialSchemes = { + ftp: 21, + file: null, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 + }; + var failure = Symbol("failure"); + function countSymbols(str) { + return punycode.ucs2.decode(str).length; + } + function at(input, idx) { + const c = input[idx]; + return isNaN(c) ? void 0 : String.fromCodePoint(c); + } + function isASCIIDigit(c) { + return c >= 48 && c <= 57; + } + function isASCIIAlpha(c) { + return c >= 65 && c <= 90 || c >= 97 && c <= 122; + } + function isASCIIAlphanumeric(c) { + return isASCIIAlpha(c) || isASCIIDigit(c); + } + function isASCIIHex(c) { + return isASCIIDigit(c) || c >= 65 && c <= 70 || c >= 97 && c <= 102; + } + function isSingleDot(buffer) { + return buffer === "." || buffer.toLowerCase() === "%2e"; + } + function isDoubleDot(buffer) { + buffer = buffer.toLowerCase(); + return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; + } + function isWindowsDriveLetterCodePoints(cp1, cp2) { + return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); + } + function isWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); + } + function isNormalizedWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; + } + function containsForbiddenHostCodePoint(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; + } + function containsForbiddenHostCodePointExcludingPercent(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; + } + function isSpecialScheme(scheme) { + return specialSchemes[scheme] !== void 0; + } + function isSpecial(url2) { + return isSpecialScheme(url2.scheme); + } + function defaultPort(scheme) { + return specialSchemes[scheme]; + } + function percentEncode(c) { + let hex = c.toString(16).toUpperCase(); + if (hex.length === 1) { + hex = "0" + hex; + } + return "%" + hex; + } + function utf8PercentEncode(c) { + const buf = new Buffer(c); + let str = ""; + for (let i = 0; i < buf.length; ++i) { + str += percentEncode(buf[i]); + } + return str; + } + function utf8PercentDecode(str) { + const input = new Buffer(str); + const output = []; + for (let i = 0; i < input.length; ++i) { + if (input[i] !== 37) { + output.push(input[i]); + } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { + output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); + i += 2; + } else { + output.push(input[i]); + } + } + return new Buffer(output).toString(); + } + function isC0ControlPercentEncode(c) { + return c <= 31 || c > 126; + } + var extraPathPercentEncodeSet = /* @__PURE__ */ new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); + function isPathPercentEncode(c) { + return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); + } + var extraUserinfoPercentEncodeSet = /* @__PURE__ */ new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); + function isUserinfoPercentEncode(c) { + return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); + } + function percentEncodeChar(c, encodeSetPredicate) { + const cStr = String.fromCodePoint(c); + if (encodeSetPredicate(c)) { + return utf8PercentEncode(cStr); + } + return cStr; + } + function parseIPv4Number(input) { + let R = 10; + if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") { + input = input.substring(2); + R = 16; + } else if (input.length >= 2 && input.charAt(0) === "0") { + input = input.substring(1); + R = 8; + } + if (input === "") { + return 0; + } + const regex = R === 10 ? /[^0-9]/ : R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/; + if (regex.test(input)) { + return failure; + } + return parseInt(input, R); + } + function parseIPv4(input) { + const parts = input.split("."); + if (parts[parts.length - 1] === "") { + if (parts.length > 1) { + parts.pop(); + } + } + if (parts.length > 4) { + return input; + } + const numbers = []; + for (const part of parts) { + if (part === "") { + return input; + } + const n = parseIPv4Number(part); + if (n === failure) { + return input; + } + numbers.push(n); + } + for (let i = 0; i < numbers.length - 1; ++i) { + if (numbers[i] > 255) { + return failure; + } + } + if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { + return failure; + } + let ipv4 = numbers.pop(); + let counter = 0; + for (const n of numbers) { + ipv4 += n * Math.pow(256, 3 - counter); + ++counter; + } + return ipv4; + } + function serializeIPv4(address) { + let output = ""; + let n = address; + for (let i = 1; i <= 4; ++i) { + output = String(n % 256) + output; + if (i !== 4) { + output = "." + output; + } + n = Math.floor(n / 256); + } + return output; + } + function parseIPv6(input) { + const address = [0, 0, 0, 0, 0, 0, 0, 0]; + let pieceIndex = 0; + let compress = null; + let pointer = 0; + input = punycode.ucs2.decode(input); + if (input[pointer] === 58) { + if (input[pointer + 1] !== 58) { + return failure; + } + pointer += 2; + ++pieceIndex; + compress = pieceIndex; + } + while (pointer < input.length) { + if (pieceIndex === 8) { + return failure; + } + if (input[pointer] === 58) { + if (compress !== null) { + return failure; + } + ++pointer; + ++pieceIndex; + compress = pieceIndex; + continue; + } + let value = 0; + let length = 0; + while (length < 4 && isASCIIHex(input[pointer])) { + value = value * 16 + parseInt(at(input, pointer), 16); + ++pointer; + ++length; + } + if (input[pointer] === 46) { + if (length === 0) { + return failure; + } + pointer -= length; + if (pieceIndex > 6) { + return failure; + } + let numbersSeen = 0; + while (input[pointer] !== void 0) { + let ipv4Piece = null; + if (numbersSeen > 0) { + if (input[pointer] === 46 && numbersSeen < 4) { + ++pointer; + } else { + return failure; + } + } + if (!isASCIIDigit(input[pointer])) { + return failure; + } + while (isASCIIDigit(input[pointer])) { + const number = parseInt(at(input, pointer)); + if (ipv4Piece === null) { + ipv4Piece = number; + } else if (ipv4Piece === 0) { + return failure; + } else { + ipv4Piece = ipv4Piece * 10 + number; + } + if (ipv4Piece > 255) { + return failure; + } + ++pointer; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + ++numbersSeen; + if (numbersSeen === 2 || numbersSeen === 4) { + ++pieceIndex; + } + } + if (numbersSeen !== 4) { + return failure; + } + break; + } else if (input[pointer] === 58) { + ++pointer; + if (input[pointer] === void 0) { + return failure; + } + } else if (input[pointer] !== void 0) { + return failure; + } + address[pieceIndex] = value; + ++pieceIndex; + } + if (compress !== null) { + let swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex !== 0 && swaps > 0) { + const temp = address[compress + swaps - 1]; + address[compress + swaps - 1] = address[pieceIndex]; + address[pieceIndex] = temp; + --pieceIndex; + --swaps; + } + } else if (compress === null && pieceIndex !== 8) { + return failure; + } + return address; + } + function serializeIPv6(address) { + let output = ""; + const seqResult = findLongestZeroSequence(address); + const compress = seqResult.idx; + let ignore0 = false; + for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { + if (ignore0 && address[pieceIndex] === 0) { + continue; + } else if (ignore0) { + ignore0 = false; + } + if (compress === pieceIndex) { + const separator = pieceIndex === 0 ? "::" : ":"; + output += separator; + ignore0 = true; + continue; + } + output += address[pieceIndex].toString(16); + if (pieceIndex !== 7) { + output += ":"; + } + } + return output; + } + function parseHost(input, isSpecialArg) { + if (input[0] === "[") { + if (input[input.length - 1] !== "]") { + return failure; + } + return parseIPv6(input.substring(1, input.length - 1)); + } + if (!isSpecialArg) { + return parseOpaqueHost(input); + } + const domain = utf8PercentDecode(input); + const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); + if (asciiDomain === null) { + return failure; + } + if (containsForbiddenHostCodePoint(asciiDomain)) { + return failure; + } + const ipv4Host = parseIPv4(asciiDomain); + if (typeof ipv4Host === "number" || ipv4Host === failure) { + return ipv4Host; + } + return asciiDomain; + } + function parseOpaqueHost(input) { + if (containsForbiddenHostCodePointExcludingPercent(input)) { + return failure; + } + let output = ""; + const decoded = punycode.ucs2.decode(input); + for (let i = 0; i < decoded.length; ++i) { + output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); + } + return output; + } + function findLongestZeroSequence(arr) { + let maxIdx = null; + let maxLen = 1; + let currStart = null; + let currLen = 0; + for (let i = 0; i < arr.length; ++i) { + if (arr[i] !== 0) { + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + currStart = null; + currLen = 0; + } else { + if (currStart === null) { + currStart = i; + } + ++currLen; + } + } + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + return { + idx: maxIdx, + len: maxLen + }; + } + function serializeHost(host) { + if (typeof host === "number") { + return serializeIPv4(host); + } + if (host instanceof Array) { + return "[" + serializeIPv6(host) + "]"; + } + return host; + } + function trimControlChars(url2) { + return url2.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); + } + function trimTabAndNewline(url2) { + return url2.replace(/\u0009|\u000A|\u000D/g, ""); + } + function shortenPath(url2) { + const path = url2.path; + if (path.length === 0) { + return; + } + if (url2.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { + return; + } + path.pop(); + } + function includesCredentials(url2) { + return url2.username !== "" || url2.password !== ""; + } + function cannotHaveAUsernamePasswordPort(url2) { + return url2.host === null || url2.host === "" || url2.cannotBeABaseURL || url2.scheme === "file"; + } + function isNormalizedWindowsDriveLetter(string) { + return /^[A-Za-z]:$/.test(string); + } + function URLStateMachine(input, base, encodingOverride, url2, stateOverride) { + this.pointer = 0; + this.input = input; + this.base = base || null; + this.encodingOverride = encodingOverride || "utf-8"; + this.stateOverride = stateOverride; + this.url = url2; + this.failure = false; + this.parseError = false; + if (!this.url) { + this.url = { + scheme: "", + username: "", + password: "", + host: null, + port: null, + path: [], + query: null, + fragment: null, + cannotBeABaseURL: false + }; + const res2 = trimControlChars(this.input); + if (res2 !== this.input) { + this.parseError = true; + } + this.input = res2; + } + const res = trimTabAndNewline(this.input); + if (res !== this.input) { + this.parseError = true; + } + this.input = res; + this.state = stateOverride || "scheme start"; + this.buffer = ""; + this.atFlag = false; + this.arrFlag = false; + this.passwordTokenSeenFlag = false; + this.input = punycode.ucs2.decode(this.input); + for (; this.pointer <= this.input.length; ++this.pointer) { + const c = this.input[this.pointer]; + const cStr = isNaN(c) ? void 0 : String.fromCodePoint(c); + const ret = this["parse " + this.state](c, cStr); + if (!ret) { + break; + } else if (ret === failure) { + this.failure = true; + break; + } + } + } + URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) { + if (isASCIIAlpha(c)) { + this.buffer += cStr.toLowerCase(); + this.state = "scheme"; + } else if (!this.stateOverride) { + this.state = "no scheme"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + return true; + }; + URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) { + if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { + this.buffer += cStr.toLowerCase(); + } else if (c === 58) { + if (this.stateOverride) { + if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { + return false; + } + if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { + return false; + } + if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") { + return false; + } + if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { + return false; + } + } + this.url.scheme = this.buffer; + this.buffer = ""; + if (this.stateOverride) { + return false; + } + if (this.url.scheme === "file") { + if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { + this.parseError = true; + } + this.state = "file"; + } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { + this.state = "special relative or authority"; + } else if (isSpecial(this.url)) { + this.state = "special authority slashes"; + } else if (this.input[this.pointer + 1] === 47) { + this.state = "path or authority"; + ++this.pointer; + } else { + this.url.cannotBeABaseURL = true; + this.url.path.push(""); + this.state = "cannot-be-a-base-URL path"; + } + } else if (!this.stateOverride) { + this.buffer = ""; + this.state = "no scheme"; + this.pointer = -1; + } else { + this.parseError = true; + return failure; + } + return true; + }; + URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) { + if (this.base === null || this.base.cannotBeABaseURL && c !== 35) { + return failure; + } else if (this.base.cannotBeABaseURL && c === 35) { + this.url.scheme = this.base.scheme; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.url.cannotBeABaseURL = true; + this.state = "fragment"; + } else if (this.base.scheme === "file") { + this.state = "file"; + --this.pointer; + } else { + this.state = "relative"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "relative"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { + if (c === 47) { + this.state = "authority"; + } else { + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse relative"] = function parseRelative(c) { + this.url.scheme = this.base.scheme; + if (isNaN(c)) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 47) { + this.state = "relative slash"; + } else if (c === 63) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else if (isSpecial(this.url) && c === 92) { + this.parseError = true; + this.state = "relative slash"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(0, this.base.path.length - 1); + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) { + if (isSpecial(this.url) && (c === 47 || c === 92)) { + if (c === 92) { + this.parseError = true; + } + this.state = "special authority ignore slashes"; + } else if (c === 47) { + this.state = "authority"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "special authority ignore slashes"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) { + if (c !== 47 && c !== 92) { + this.state = "authority"; + --this.pointer; + } else { + this.parseError = true; + } + return true; + }; + URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) { + if (c === 64) { + this.parseError = true; + if (this.atFlag) { + this.buffer = "%40" + this.buffer; + } + this.atFlag = true; + const len = countSymbols(this.buffer); + for (let pointer = 0; pointer < len; ++pointer) { + const codePoint = this.buffer.codePointAt(pointer); + if (codePoint === 58 && !this.passwordTokenSeenFlag) { + this.passwordTokenSeenFlag = true; + continue; + } + const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); + if (this.passwordTokenSeenFlag) { + this.url.password += encodedCodePoints; + } else { + this.url.username += encodedCodePoints; + } + } + this.buffer = ""; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) { + if (this.atFlag && this.buffer === "") { + this.parseError = true; + return failure; + } + this.pointer -= countSymbols(this.buffer) + 1; + this.buffer = ""; + this.state = "host"; + } else { + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse hostname"] = URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) { + if (this.stateOverride && this.url.scheme === "file") { + --this.pointer; + this.state = "file host"; + } else if (c === 58 && !this.arrFlag) { + if (this.buffer === "") { + this.parseError = true; + return failure; + } + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + this.url.host = host; + this.buffer = ""; + this.state = "port"; + if (this.stateOverride === "hostname") { + return false; + } + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) { + --this.pointer; + if (isSpecial(this.url) && this.buffer === "") { + this.parseError = true; + return failure; + } else if (this.stateOverride && this.buffer === "" && (includesCredentials(this.url) || this.url.port !== null)) { + this.parseError = true; + return false; + } + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + this.url.host = host; + this.buffer = ""; + this.state = "path start"; + if (this.stateOverride) { + return false; + } + } else { + if (c === 91) { + this.arrFlag = true; + } else if (c === 93) { + this.arrFlag = false; + } + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) { + if (isASCIIDigit(c)) { + this.buffer += cStr; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92 || this.stateOverride) { + if (this.buffer !== "") { + const port = parseInt(this.buffer); + if (port > Math.pow(2, 16) - 1) { + this.parseError = true; + return failure; + } + this.url.port = port === defaultPort(this.url.scheme) ? null : port; + this.buffer = ""; + } + if (this.stateOverride) { + return false; + } + this.state = "path start"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + return true; + }; + var fileOtherwiseCodePoints = /* @__PURE__ */ new Set([47, 92, 63, 35]); + URLStateMachine.prototype["parse file"] = function parseFile(c) { + this.url.scheme = "file"; + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file slash"; + } else if (this.base !== null && this.base.scheme === "file") { + if (isNaN(c)) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 63) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else { + if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points + !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points + !fileOtherwiseCodePoints.has(this.input[this.pointer + 2])) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + shortenPath(this.url); + } else { + this.parseError = true; + } + this.state = "path"; + --this.pointer; + } + } else { + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file host"; + } else { + if (this.base !== null && this.base.scheme === "file") { + if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { + this.url.path.push(this.base.path[0]); + } else { + this.url.host = this.base.host; + } + } + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) { + if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { + --this.pointer; + if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { + this.parseError = true; + this.state = "path"; + } else if (this.buffer === "") { + this.url.host = ""; + if (this.stateOverride) { + return false; + } + this.state = "path start"; + } else { + let host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + if (host === "localhost") { + host = ""; + } + this.url.host = host; + if (this.stateOverride) { + return false; + } + this.buffer = ""; + this.state = "path start"; + } + } else { + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse path start"] = function parsePathStart(c) { + if (isSpecial(this.url)) { + if (c === 92) { + this.parseError = true; + } + this.state = "path"; + if (c !== 47 && c !== 92) { + --this.pointer; + } + } else if (!this.stateOverride && c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (!this.stateOverride && c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else if (c !== void 0) { + this.state = "path"; + if (c !== 47) { + --this.pointer; + } + } + return true; + }; + URLStateMachine.prototype["parse path"] = function parsePath(c) { + if (isNaN(c) || c === 47 || isSpecial(this.url) && c === 92 || !this.stateOverride && (c === 63 || c === 35)) { + if (isSpecial(this.url) && c === 92) { + this.parseError = true; + } + if (isDoubleDot(this.buffer)) { + shortenPath(this.url); + if (c !== 47 && !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } + } else if (isSingleDot(this.buffer) && c !== 47 && !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } else if (!isSingleDot(this.buffer)) { + if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { + if (this.url.host !== "" && this.url.host !== null) { + this.parseError = true; + this.url.host = ""; + } + this.buffer = this.buffer[0] + ":"; + } + this.url.path.push(this.buffer); + } + this.buffer = ""; + if (this.url.scheme === "file" && (c === void 0 || c === 63 || c === 35)) { + while (this.url.path.length > 1 && this.url.path[0] === "") { + this.parseError = true; + this.url.path.shift(); + } + } + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + this.buffer += percentEncodeChar(c, isPathPercentEncode); + } + return true; + }; + URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) { + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else { + if (!isNaN(c) && c !== 37) { + this.parseError = true; + } + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + if (!isNaN(c)) { + this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); + } + } + return true; + }; + URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) { + if (isNaN(c) || !this.stateOverride && c === 35) { + if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") { + this.encodingOverride = "utf-8"; + } + const buffer = new Buffer(this.buffer); + for (let i = 0; i < buffer.length; ++i) { + if (buffer[i] < 33 || buffer[i] > 126 || buffer[i] === 34 || buffer[i] === 35 || buffer[i] === 60 || buffer[i] === 62) { + this.url.query += percentEncode(buffer[i]); + } else { + this.url.query += String.fromCodePoint(buffer[i]); + } + } + this.buffer = ""; + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { + if (isNaN(c)) { + } else if (c === 0) { + this.parseError = true; + } else { + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); + } + return true; + }; + function serializeURL(url2, excludeFragment) { + let output = url2.scheme + ":"; + if (url2.host !== null) { + output += "//"; + if (url2.username !== "" || url2.password !== "") { + output += url2.username; + if (url2.password !== "") { + output += ":" + url2.password; + } + output += "@"; + } + output += serializeHost(url2.host); + if (url2.port !== null) { + output += ":" + url2.port; + } + } else if (url2.host === null && url2.scheme === "file") { + output += "//"; + } + if (url2.cannotBeABaseURL) { + output += url2.path[0]; + } else { + for (const string of url2.path) { + output += "/" + string; + } + } + if (url2.query !== null) { + output += "?" + url2.query; + } + if (!excludeFragment && url2.fragment !== null) { + output += "#" + url2.fragment; + } + return output; + } + function serializeOrigin(tuple) { + let result = tuple.scheme + "://"; + result += serializeHost(tuple.host); + if (tuple.port !== null) { + result += ":" + tuple.port; + } + return result; + } + module2.exports.serializeURL = serializeURL; + module2.exports.serializeURLOrigin = function(url2) { + switch (url2.scheme) { + case "blob": + try { + return module2.exports.serializeURLOrigin(module2.exports.parseURL(url2.path[0])); + } catch (e) { + return "null"; + } + case "ftp": + case "gopher": + case "http": + case "https": + case "ws": + case "wss": + return serializeOrigin({ + scheme: url2.scheme, + host: url2.host, + port: url2.port + }); + case "file": + return "file://"; + default: + return "null"; + } + }; + module2.exports.basicURLParse = function(input, options) { + if (options === void 0) { + options = {}; + } + const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); + if (usm.failure) { + return "failure"; + } + return usm.url; + }; + module2.exports.setTheUsername = function(url2, username) { + url2.username = ""; + const decoded = punycode.ucs2.decode(username); + for (let i = 0; i < decoded.length; ++i) { + url2.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } + }; + module2.exports.setThePassword = function(url2, password) { + url2.password = ""; + const decoded = punycode.ucs2.decode(password); + for (let i = 0; i < decoded.length; ++i) { + url2.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } + }; + module2.exports.serializeHost = serializeHost; + module2.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; + module2.exports.serializeInteger = function(integer) { + return String(integer); + }; + module2.exports.parseURL = function(input, options) { + if (options === void 0) { + options = {}; + } + return module2.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); + }; + } +}); + +// ../../../node_modules/whatwg-url/lib/URL-impl.js +var require_URL_impl = __commonJS({ + "../../../node_modules/whatwg-url/lib/URL-impl.js"(exports) { + "use strict"; + var usm = require_url_state_machine(); + exports.implementation = class URLImpl { + constructor(constructorArgs) { + const url2 = constructorArgs[0]; + const base = constructorArgs[1]; + let parsedBase = null; + if (base !== void 0) { + parsedBase = usm.basicURLParse(base); + if (parsedBase === "failure") { + throw new TypeError("Invalid base URL"); + } + } + const parsedURL = usm.basicURLParse(url2, { baseURL: parsedBase }); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + this._url = parsedURL; + } + get href() { + return usm.serializeURL(this._url); + } + set href(v) { + const parsedURL = usm.basicURLParse(v); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + this._url = parsedURL; + } + get origin() { + return usm.serializeURLOrigin(this._url); + } + get protocol() { + return this._url.scheme + ":"; + } + set protocol(v) { + usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); + } + get username() { + return this._url.username; + } + set username(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + usm.setTheUsername(this._url, v); + } + get password() { + return this._url.password; + } + set password(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + usm.setThePassword(this._url, v); + } + get host() { + const url2 = this._url; + if (url2.host === null) { + return ""; + } + if (url2.port === null) { + return usm.serializeHost(url2.host); + } + return usm.serializeHost(url2.host) + ":" + usm.serializeInteger(url2.port); + } + set host(v) { + if (this._url.cannotBeABaseURL) { + return; + } + usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); + } + get hostname() { + if (this._url.host === null) { + return ""; + } + return usm.serializeHost(this._url.host); + } + set hostname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); + } + get port() { + if (this._url.port === null) { + return ""; + } + return usm.serializeInteger(this._url.port); + } + set port(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + if (v === "") { + this._url.port = null; + } else { + usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); + } + } + get pathname() { + if (this._url.cannotBeABaseURL) { + return this._url.path[0]; + } + if (this._url.path.length === 0) { + return ""; + } + return "/" + this._url.path.join("/"); + } + set pathname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + this._url.path = []; + usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); + } + get search() { + if (this._url.query === null || this._url.query === "") { + return ""; + } + return "?" + this._url.query; + } + set search(v) { + const url2 = this._url; + if (v === "") { + url2.query = null; + return; + } + const input = v[0] === "?" ? v.substring(1) : v; + url2.query = ""; + usm.basicURLParse(input, { url: url2, stateOverride: "query" }); + } + get hash() { + if (this._url.fragment === null || this._url.fragment === "") { + return ""; + } + return "#" + this._url.fragment; + } + set hash(v) { + if (v === "") { + this._url.fragment = null; + return; + } + const input = v[0] === "#" ? v.substring(1) : v; + this._url.fragment = ""; + usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); + } + toJSON() { + return this.href; + } + }; + } +}); + +// ../../../node_modules/whatwg-url/lib/URL.js +var require_URL = __commonJS({ + "../../../node_modules/whatwg-url/lib/URL.js"(exports, module2) { + "use strict"; + var conversions = require_lib2(); + var utils = require_utils2(); + var Impl = require_URL_impl(); + var impl = utils.implSymbol; + function URL3(url2) { + if (!this || this[impl] || !(this instanceof URL3)) { + throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); + } + if (arguments.length < 1) { + throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); + } + const args = []; + for (let i = 0; i < arguments.length && i < 2; ++i) { + args[i] = arguments[i]; + } + args[0] = conversions["USVString"](args[0]); + if (args[1] !== void 0) { + args[1] = conversions["USVString"](args[1]); + } + module2.exports.setup(this, args); + } + URL3.prototype.toJSON = function toJSON() { + if (!this || !module2.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + const args = []; + for (let i = 0; i < arguments.length && i < 0; ++i) { + args[i] = arguments[i]; + } + return this[impl].toJSON.apply(this[impl], args); + }; + Object.defineProperty(URL3.prototype, "href", { + get() { + return this[impl].href; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].href = V; + }, + enumerable: true, + configurable: true + }); + URL3.prototype.toString = function() { + if (!this || !module2.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + return this.href; + }; + Object.defineProperty(URL3.prototype, "origin", { + get() { + return this[impl].origin; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "protocol", { + get() { + return this[impl].protocol; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].protocol = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "username", { + get() { + return this[impl].username; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].username = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "password", { + get() { + return this[impl].password; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].password = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "host", { + get() { + return this[impl].host; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].host = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "hostname", { + get() { + return this[impl].hostname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hostname = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "port", { + get() { + return this[impl].port; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].port = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "pathname", { + get() { + return this[impl].pathname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].pathname = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "search", { + get() { + return this[impl].search; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].search = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL3.prototype, "hash", { + get() { + return this[impl].hash; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hash = V; + }, + enumerable: true, + configurable: true + }); + module2.exports = { + is(obj) { + return !!obj && obj[impl] instanceof Impl.implementation; + }, + create(constructorArgs, privateData) { + let obj = Object.create(URL3.prototype); + this.setup(obj, constructorArgs, privateData); + return obj; + }, + setup(obj, constructorArgs, privateData) { + if (!privateData) + privateData = {}; + privateData.wrapper = obj; + obj[impl] = new Impl.implementation(constructorArgs, privateData); + obj[impl][utils.wrapperSymbol] = obj; + }, + interface: URL3, + expose: { + Window: { URL: URL3 }, + Worker: { URL: URL3 } + } + }; + } +}); + +// ../../../node_modules/whatwg-url/lib/public-api.js +var require_public_api = __commonJS({ + "../../../node_modules/whatwg-url/lib/public-api.js"(exports) { + "use strict"; + exports.URL = require_URL().interface; + exports.serializeURL = require_url_state_machine().serializeURL; + exports.serializeURLOrigin = require_url_state_machine().serializeURLOrigin; + exports.basicURLParse = require_url_state_machine().basicURLParse; + exports.setTheUsername = require_url_state_machine().setTheUsername; + exports.setThePassword = require_url_state_machine().setThePassword; + exports.serializeHost = require_url_state_machine().serializeHost; + exports.serializeInteger = require_url_state_machine().serializeInteger; + exports.parseURL = require_url_state_machine().parseURL; + } +}); + +// ../../../node_modules/safer-buffer/safer.js +var require_safer = __commonJS({ + "../../../node_modules/safer-buffer/safer.js"(exports, module2) { + "use strict"; + var buffer = require("buffer"); + var Buffer2 = buffer.Buffer; + var safer = {}; + var key; + for (key in buffer) { + if (!buffer.hasOwnProperty(key)) + continue; + if (key === "SlowBuffer" || key === "Buffer") + continue; + safer[key] = buffer[key]; + } + var Safer = safer.Buffer = {}; + for (key in Buffer2) { + if (!Buffer2.hasOwnProperty(key)) + continue; + if (key === "allocUnsafe" || key === "allocUnsafeSlow") + continue; + Safer[key] = Buffer2[key]; + } + safer.Buffer.prototype = Buffer2.prototype; + if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function(value, encodingOrOffset, length) { + if (typeof value === "number") { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value); + } + if (value && typeof value.length === "undefined") { + throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); + } + return Buffer2(value, encodingOrOffset, length); + }; + } + if (!Safer.alloc) { + Safer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size); + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"'); + } + var buf = Buffer2(size); + if (!fill || fill.length === 0) { + buf.fill(0); + } else if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + return buf; + }; + } + if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding("buffer").kStringMaxLength; + } catch (e) { + } + } + if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + }; + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength; + } + } + module2.exports = safer; + } +}); + +// ../../../node_modules/iconv-lite/lib/bom-handling.js +var require_bom_handling = __commonJS({ + "../../../node_modules/iconv-lite/lib/bom-handling.js"(exports) { + "use strict"; + var BOMChar = "\uFEFF"; + exports.PrependBOM = PrependBOMWrapper; + function PrependBOMWrapper(encoder, options) { + this.encoder = encoder; + this.addBOM = true; + } + PrependBOMWrapper.prototype.write = function(str) { + if (this.addBOM) { + str = BOMChar + str; + this.addBOM = false; + } + return this.encoder.write(str); + }; + PrependBOMWrapper.prototype.end = function() { + return this.encoder.end(); + }; + exports.StripBOM = StripBOMWrapper; + function StripBOMWrapper(decoder, options) { + this.decoder = decoder; + this.pass = false; + this.options = options || {}; + } + StripBOMWrapper.prototype.write = function(buf) { + var res = this.decoder.write(buf); + if (this.pass || !res) + return res; + if (res[0] === BOMChar) { + res = res.slice(1); + if (typeof this.options.stripBOM === "function") + this.options.stripBOM(); + } + this.pass = true; + return res; + }; + StripBOMWrapper.prototype.end = function() { + return this.decoder.end(); + }; + } +}); + +// ../../../node_modules/iconv-lite/encodings/internal.js +var require_internal = __commonJS({ + "../../../node_modules/iconv-lite/encodings/internal.js"(exports, module2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + module2.exports = { + // Encodings + utf8: { type: "_internal", bomAware: true }, + cesu8: { type: "_internal", bomAware: true }, + unicode11utf8: "utf8", + ucs2: { type: "_internal", bomAware: true }, + utf16le: "ucs2", + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, + // Codec. + _internal: InternalCodec + }; + function InternalCodec(codecOptions, iconv) { + this.enc = codecOptions.encodingName; + this.bomAware = codecOptions.bomAware; + if (this.enc === "base64") + this.encoder = InternalEncoderBase64; + else if (this.enc === "cesu8") { + this.enc = "utf8"; + this.encoder = InternalEncoderCesu8; + if (Buffer2.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") { + this.decoder = InternalDecoderCesu8; + this.defaultCharUnicode = iconv.defaultCharUnicode; + } + } + } + InternalCodec.prototype.encoder = InternalEncoder; + InternalCodec.prototype.decoder = InternalDecoder; + var StringDecoder = require("string_decoder").StringDecoder; + if (!StringDecoder.prototype.end) + StringDecoder.prototype.end = function() { + }; + function InternalDecoder(options, codec) { + this.decoder = new StringDecoder(codec.enc); + } + InternalDecoder.prototype.write = function(buf) { + if (!Buffer2.isBuffer(buf)) { + buf = Buffer2.from(buf); + } + return this.decoder.write(buf); + }; + InternalDecoder.prototype.end = function() { + return this.decoder.end(); + }; + function InternalEncoder(options, codec) { + this.enc = codec.enc; + } + InternalEncoder.prototype.write = function(str) { + return Buffer2.from(str, this.enc); + }; + InternalEncoder.prototype.end = function() { + }; + function InternalEncoderBase64(options, codec) { + this.prevStr = ""; + } + InternalEncoderBase64.prototype.write = function(str) { + str = this.prevStr + str; + var completeQuads = str.length - str.length % 4; + this.prevStr = str.slice(completeQuads); + str = str.slice(0, completeQuads); + return Buffer2.from(str, "base64"); + }; + InternalEncoderBase64.prototype.end = function() { + return Buffer2.from(this.prevStr, "base64"); + }; + function InternalEncoderCesu8(options, codec) { + } + InternalEncoderCesu8.prototype.write = function(str) { + var buf = Buffer2.alloc(str.length * 3), bufIdx = 0; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + if (charCode < 128) + buf[bufIdx++] = charCode; + else if (charCode < 2048) { + buf[bufIdx++] = 192 + (charCode >>> 6); + buf[bufIdx++] = 128 + (charCode & 63); + } else { + buf[bufIdx++] = 224 + (charCode >>> 12); + buf[bufIdx++] = 128 + (charCode >>> 6 & 63); + buf[bufIdx++] = 128 + (charCode & 63); + } + } + return buf.slice(0, bufIdx); + }; + InternalEncoderCesu8.prototype.end = function() { + }; + function InternalDecoderCesu8(options, codec) { + this.acc = 0; + this.contBytes = 0; + this.accBytes = 0; + this.defaultCharUnicode = codec.defaultCharUnicode; + } + InternalDecoderCesu8.prototype.write = function(buf) { + var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, res = ""; + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i]; + if ((curByte & 192) !== 128) { + if (contBytes > 0) { + res += this.defaultCharUnicode; + contBytes = 0; + } + if (curByte < 128) { + res += String.fromCharCode(curByte); + } else if (curByte < 224) { + acc = curByte & 31; + contBytes = 1; + accBytes = 1; + } else if (curByte < 240) { + acc = curByte & 15; + contBytes = 2; + accBytes = 1; + } else { + res += this.defaultCharUnicode; + } + } else { + if (contBytes > 0) { + acc = acc << 6 | curByte & 63; + contBytes--; + accBytes++; + if (contBytes === 0) { + if (accBytes === 2 && acc < 128 && acc > 0) + res += this.defaultCharUnicode; + else if (accBytes === 3 && acc < 2048) + res += this.defaultCharUnicode; + else + res += String.fromCharCode(acc); + } + } else { + res += this.defaultCharUnicode; + } + } + } + this.acc = acc; + this.contBytes = contBytes; + this.accBytes = accBytes; + return res; + }; + InternalDecoderCesu8.prototype.end = function() { + var res = 0; + if (this.contBytes > 0) + res += this.defaultCharUnicode; + return res; + }; + } +}); + +// ../../../node_modules/iconv-lite/encodings/utf32.js +var require_utf32 = __commonJS({ + "../../../node_modules/iconv-lite/encodings/utf32.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports._utf32 = Utf32Codec; + function Utf32Codec(codecOptions, iconv) { + this.iconv = iconv; + this.bomAware = true; + this.isLE = codecOptions.isLE; + } + exports.utf32le = { type: "_utf32", isLE: true }; + exports.utf32be = { type: "_utf32", isLE: false }; + exports.ucs4le = "utf32le"; + exports.ucs4be = "utf32be"; + Utf32Codec.prototype.encoder = Utf32Encoder; + Utf32Codec.prototype.decoder = Utf32Decoder; + function Utf32Encoder(options, codec) { + this.isLE = codec.isLE; + this.highSurrogate = 0; + } + Utf32Encoder.prototype.write = function(str) { + var src = Buffer2.from(str, "ucs2"); + var dst = Buffer2.alloc(src.length * 2); + var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE; + var offset = 0; + for (var i = 0; i < src.length; i += 2) { + var code = src.readUInt16LE(i); + var isHighSurrogate = 55296 <= code && code < 56320; + var isLowSurrogate = 56320 <= code && code < 57344; + if (this.highSurrogate) { + if (isHighSurrogate || !isLowSurrogate) { + write32.call(dst, this.highSurrogate, offset); + offset += 4; + } else { + var codepoint = (this.highSurrogate - 55296 << 10 | code - 56320) + 65536; + write32.call(dst, codepoint, offset); + offset += 4; + this.highSurrogate = 0; + continue; + } + } + if (isHighSurrogate) + this.highSurrogate = code; + else { + write32.call(dst, code, offset); + offset += 4; + this.highSurrogate = 0; + } + } + if (offset < dst.length) + dst = dst.slice(0, offset); + return dst; + }; + Utf32Encoder.prototype.end = function() { + if (!this.highSurrogate) + return; + var buf = Buffer2.alloc(4); + if (this.isLE) + buf.writeUInt32LE(this.highSurrogate, 0); + else + buf.writeUInt32BE(this.highSurrogate, 0); + this.highSurrogate = 0; + return buf; + }; + function Utf32Decoder(options, codec) { + this.isLE = codec.isLE; + this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0); + this.overflow = []; + } + Utf32Decoder.prototype.write = function(src) { + if (src.length === 0) + return ""; + var i = 0; + var codepoint = 0; + var dst = Buffer2.alloc(src.length + 4); + var offset = 0; + var isLE = this.isLE; + var overflow = this.overflow; + var badChar = this.badChar; + if (overflow.length > 0) { + for (; i < src.length && overflow.length < 4; i++) + overflow.push(src[i]); + if (overflow.length === 4) { + if (isLE) { + codepoint = overflow[i] | overflow[i + 1] << 8 | overflow[i + 2] << 16 | overflow[i + 3] << 24; + } else { + codepoint = overflow[i + 3] | overflow[i + 2] << 8 | overflow[i + 1] << 16 | overflow[i] << 24; + } + overflow.length = 0; + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + } + for (; i < src.length - 3; i += 4) { + if (isLE) { + codepoint = src[i] | src[i + 1] << 8 | src[i + 2] << 16 | src[i + 3] << 24; + } else { + codepoint = src[i + 3] | src[i + 2] << 8 | src[i + 1] << 16 | src[i] << 24; + } + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + for (; i < src.length; i++) { + overflow.push(src[i]); + } + return dst.slice(0, offset).toString("ucs2"); + }; + function _writeCodepoint(dst, offset, codepoint, badChar) { + if (codepoint < 0 || codepoint > 1114111) { + codepoint = badChar; + } + if (codepoint >= 65536) { + codepoint -= 65536; + var high = 55296 | codepoint >> 10; + dst[offset++] = high & 255; + dst[offset++] = high >> 8; + var codepoint = 56320 | codepoint & 1023; + } + dst[offset++] = codepoint & 255; + dst[offset++] = codepoint >> 8; + return offset; + } + Utf32Decoder.prototype.end = function() { + this.overflow.length = 0; + }; + exports.utf32 = Utf32AutoCodec; + exports.ucs4 = "utf32"; + function Utf32AutoCodec(options, iconv) { + this.iconv = iconv; + } + Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder; + Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder; + function Utf32AutoEncoder(options, codec) { + options = options || {}; + if (options.addBOM === void 0) + options.addBOM = true; + this.encoder = codec.iconv.getEncoder(options.defaultEncoding || "utf-32le", options); + } + Utf32AutoEncoder.prototype.write = function(str) { + return this.encoder.write(str); + }; + Utf32AutoEncoder.prototype.end = function() { + return this.encoder.end(); + }; + function Utf32AutoDecoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; + } + Utf32AutoDecoder.prototype.write = function(buf) { + if (!this.decoder) { + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + if (this.initialBufsLen < 32) + return ""; + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.write(buf); + }; + Utf32AutoDecoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + var trail = this.decoder.end(); + if (trail) + resStr += trail; + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); + }; + function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var invalidLE = 0, invalidBE = 0; + var bmpCharsLE = 0, bmpCharsBE = 0; + outer_loop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 4) { + if (charsProcessed === 0) { + if (b[0] === 255 && b[1] === 254 && b[2] === 0 && b[3] === 0) { + return "utf-32le"; + } + if (b[0] === 0 && b[1] === 0 && b[2] === 254 && b[3] === 255) { + return "utf-32be"; + } + } + if (b[0] !== 0 || b[1] > 16) + invalidBE++; + if (b[3] !== 0 || b[2] > 16) + invalidLE++; + if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) + bmpCharsBE++; + if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) + bmpCharsLE++; + b.length = 0; + charsProcessed++; + if (charsProcessed >= 100) { + break outer_loop; + } + } + } + } + if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) + return "utf-32be"; + if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) + return "utf-32le"; + return defaultEncoding || "utf-32le"; + } + } +}); + +// ../../../node_modules/iconv-lite/encodings/utf16.js +var require_utf16 = __commonJS({ + "../../../node_modules/iconv-lite/encodings/utf16.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports.utf16be = Utf16BECodec; + function Utf16BECodec() { + } + Utf16BECodec.prototype.encoder = Utf16BEEncoder; + Utf16BECodec.prototype.decoder = Utf16BEDecoder; + Utf16BECodec.prototype.bomAware = true; + function Utf16BEEncoder() { + } + Utf16BEEncoder.prototype.write = function(str) { + var buf = Buffer2.from(str, "ucs2"); + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; + buf[i] = buf[i + 1]; + buf[i + 1] = tmp; + } + return buf; + }; + Utf16BEEncoder.prototype.end = function() { + }; + function Utf16BEDecoder() { + this.overflowByte = -1; + } + Utf16BEDecoder.prototype.write = function(buf) { + if (buf.length == 0) + return ""; + var buf2 = Buffer2.alloc(buf.length + 1), i = 0, j = 0; + if (this.overflowByte !== -1) { + buf2[0] = buf[0]; + buf2[1] = this.overflowByte; + i = 1; + j = 2; + } + for (; i < buf.length - 1; i += 2, j += 2) { + buf2[j] = buf[i + 1]; + buf2[j + 1] = buf[i]; + } + this.overflowByte = i == buf.length - 1 ? buf[buf.length - 1] : -1; + return buf2.slice(0, j).toString("ucs2"); + }; + Utf16BEDecoder.prototype.end = function() { + this.overflowByte = -1; + }; + exports.utf16 = Utf16Codec; + function Utf16Codec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf16Codec.prototype.encoder = Utf16Encoder; + Utf16Codec.prototype.decoder = Utf16Decoder; + function Utf16Encoder(options, codec) { + options = options || {}; + if (options.addBOM === void 0) + options.addBOM = true; + this.encoder = codec.iconv.getEncoder("utf-16le", options); + } + Utf16Encoder.prototype.write = function(str) { + return this.encoder.write(str); + }; + Utf16Encoder.prototype.end = function() { + return this.encoder.end(); + }; + function Utf16Decoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; + } + Utf16Decoder.prototype.write = function(buf) { + if (!this.decoder) { + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + if (this.initialBufsLen < 16) + return ""; + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.write(buf); + }; + Utf16Decoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + var trail = this.decoder.end(); + if (trail) + resStr += trail; + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); + }; + function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var asciiCharsLE = 0, asciiCharsBE = 0; + outer_loop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 2) { + if (charsProcessed === 0) { + if (b[0] === 255 && b[1] === 254) + return "utf-16le"; + if (b[0] === 254 && b[1] === 255) + return "utf-16be"; + } + if (b[0] === 0 && b[1] !== 0) + asciiCharsBE++; + if (b[0] !== 0 && b[1] === 0) + asciiCharsLE++; + b.length = 0; + charsProcessed++; + if (charsProcessed >= 100) { + break outer_loop; + } + } + } + } + if (asciiCharsBE > asciiCharsLE) + return "utf-16be"; + if (asciiCharsBE < asciiCharsLE) + return "utf-16le"; + return defaultEncoding || "utf-16le"; + } + } +}); + +// ../../../node_modules/iconv-lite/encodings/utf7.js +var require_utf7 = __commonJS({ + "../../../node_modules/iconv-lite/encodings/utf7.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports.utf7 = Utf7Codec; + exports.unicode11utf7 = "utf7"; + function Utf7Codec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf7Codec.prototype.encoder = Utf7Encoder; + Utf7Codec.prototype.decoder = Utf7Decoder; + Utf7Codec.prototype.bomAware = true; + var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + function Utf7Encoder(options, codec) { + this.iconv = codec.iconv; + } + Utf7Encoder.prototype.write = function(str) { + return Buffer2.from(str.replace(nonDirectChars, function(chunk) { + return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-"; + }.bind(this))); + }; + Utf7Encoder.prototype.end = function() { + }; + function Utf7Decoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + var base64Regex = /[A-Za-z0-9\/+]/; + var base64Chars = []; + for (i = 0; i < 256; i++) + base64Chars[i] = base64Regex.test(String.fromCharCode(i)); + var i; + var plusChar = "+".charCodeAt(0); + var minusChar = "-".charCodeAt(0); + var andChar = "&".charCodeAt(0); + Utf7Decoder.prototype.write = function(buf) { + var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64Chars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "+"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii"); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) + i2--; + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7Decoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + exports.utf7imap = Utf7IMAPCodec; + function Utf7IMAPCodec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; + Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; + Utf7IMAPCodec.prototype.bomAware = true; + function Utf7IMAPEncoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = Buffer2.alloc(6); + this.base64AccumIdx = 0; + } + Utf7IMAPEncoder.prototype.write = function(str) { + var inBase64 = this.inBase64, base64Accum = this.base64Accum, base64AccumIdx = this.base64AccumIdx, buf = Buffer2.alloc(str.length * 5 + 10), bufIdx = 0; + for (var i2 = 0; i2 < str.length; i2++) { + var uChar = str.charCodeAt(i2); + if (32 <= uChar && uChar <= 126) { + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + inBase64 = false; + } + if (!inBase64) { + buf[bufIdx++] = uChar; + if (uChar === andChar) + buf[bufIdx++] = minusChar; + } + } else { + if (!inBase64) { + buf[bufIdx++] = andChar; + inBase64 = true; + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8; + base64Accum[base64AccumIdx++] = uChar & 255; + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx); + base64AccumIdx = 0; + } + } + } + } + this.inBase64 = inBase64; + this.base64AccumIdx = base64AccumIdx; + return buf.slice(0, bufIdx); + }; + Utf7IMAPEncoder.prototype.end = function() { + var buf = Buffer2.alloc(10), bufIdx = 0; + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + this.base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + this.inBase64 = false; + } + return buf.slice(0, bufIdx); + }; + function Utf7IMAPDecoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + var base64IMAPChars = base64Chars.slice(); + base64IMAPChars[",".charCodeAt(0)] = true; + Utf7IMAPDecoder.prototype.write = function(buf) { + var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64IMAPChars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "&"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii").replace(/,/g, "/"); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) + i2--; + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, "/"); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7IMAPDecoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + } +}); + +// ../../../node_modules/iconv-lite/encodings/sbcs-codec.js +var require_sbcs_codec = __commonJS({ + "../../../node_modules/iconv-lite/encodings/sbcs-codec.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports._sbcs = SBCSCodec; + function SBCSCodec(codecOptions, iconv) { + if (!codecOptions) + throw new Error("SBCS codec is called without the data."); + if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256) + throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)"); + if (codecOptions.chars.length === 128) { + var asciiString = ""; + for (var i = 0; i < 128; i++) + asciiString += String.fromCharCode(i); + codecOptions.chars = asciiString + codecOptions.chars; + } + this.decodeBuf = Buffer2.from(codecOptions.chars, "ucs2"); + var encodeBuf = Buffer2.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); + for (var i = 0; i < codecOptions.chars.length; i++) + encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + this.encodeBuf = encodeBuf; + } + SBCSCodec.prototype.encoder = SBCSEncoder; + SBCSCodec.prototype.decoder = SBCSDecoder; + function SBCSEncoder(options, codec) { + this.encodeBuf = codec.encodeBuf; + } + SBCSEncoder.prototype.write = function(str) { + var buf = Buffer2.alloc(str.length); + for (var i = 0; i < str.length; i++) + buf[i] = this.encodeBuf[str.charCodeAt(i)]; + return buf; + }; + SBCSEncoder.prototype.end = function() { + }; + function SBCSDecoder(options, codec) { + this.decodeBuf = codec.decodeBuf; + } + SBCSDecoder.prototype.write = function(buf) { + var decodeBuf = this.decodeBuf; + var newBuf = Buffer2.alloc(buf.length * 2); + var idx1 = 0, idx2 = 0; + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i] * 2; + idx2 = i * 2; + newBuf[idx2] = decodeBuf[idx1]; + newBuf[idx2 + 1] = decodeBuf[idx1 + 1]; + } + return newBuf.toString("ucs2"); + }; + SBCSDecoder.prototype.end = function() { + }; + } +}); + +// ../../../node_modules/iconv-lite/encodings/sbcs-data.js +var require_sbcs_data = __commonJS({ + "../../../node_modules/iconv-lite/encodings/sbcs-data.js"(exports, module2) { + "use strict"; + module2.exports = { + // Not supported by iconv, not sure why. + "10029": "maccenteuro", + "maccenteuro": { + "type": "_sbcs", + "chars": "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7" + }, + "808": "cp808", + "ibm808": "cp808", + "cp808": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0" + }, + "mik": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "cp720": { + "type": "_sbcs", + "chars": "\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\xB5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\u064B\u064C\u064D\u064E\u064F\u0650\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + // Aliases of generated encodings. + "ascii8bit": "ascii", + "usascii": "ascii", + "ansix34": "ascii", + "ansix341968": "ascii", + "ansix341986": "ascii", + "csascii": "ascii", + "cp367": "ascii", + "ibm367": "ascii", + "isoir6": "ascii", + "iso646us": "ascii", + "iso646irv": "ascii", + "us": "ascii", + "latin1": "iso88591", + "latin2": "iso88592", + "latin3": "iso88593", + "latin4": "iso88594", + "latin5": "iso88599", + "latin6": "iso885910", + "latin7": "iso885913", + "latin8": "iso885914", + "latin9": "iso885915", + "latin10": "iso885916", + "csisolatin1": "iso88591", + "csisolatin2": "iso88592", + "csisolatin3": "iso88593", + "csisolatin4": "iso88594", + "csisolatincyrillic": "iso88595", + "csisolatinarabic": "iso88596", + "csisolatingreek": "iso88597", + "csisolatinhebrew": "iso88598", + "csisolatin5": "iso88599", + "csisolatin6": "iso885910", + "l1": "iso88591", + "l2": "iso88592", + "l3": "iso88593", + "l4": "iso88594", + "l5": "iso88599", + "l6": "iso885910", + "l7": "iso885913", + "l8": "iso885914", + "l9": "iso885915", + "l10": "iso885916", + "isoir14": "iso646jp", + "isoir57": "iso646cn", + "isoir100": "iso88591", + "isoir101": "iso88592", + "isoir109": "iso88593", + "isoir110": "iso88594", + "isoir144": "iso88595", + "isoir127": "iso88596", + "isoir126": "iso88597", + "isoir138": "iso88598", + "isoir148": "iso88599", + "isoir157": "iso885910", + "isoir166": "tis620", + "isoir179": "iso885913", + "isoir199": "iso885914", + "isoir203": "iso885915", + "isoir226": "iso885916", + "cp819": "iso88591", + "ibm819": "iso88591", + "cyrillic": "iso88595", + "arabic": "iso88596", + "arabic8": "iso88596", + "ecma114": "iso88596", + "asmo708": "iso88596", + "greek": "iso88597", + "greek8": "iso88597", + "ecma118": "iso88597", + "elot928": "iso88597", + "hebrew": "iso88598", + "hebrew8": "iso88598", + "turkish": "iso88599", + "turkish8": "iso88599", + "thai": "iso885911", + "thai8": "iso885911", + "celtic": "iso885914", + "celtic8": "iso885914", + "isoceltic": "iso885914", + "tis6200": "tis620", + "tis62025291": "tis620", + "tis62025330": "tis620", + "10000": "macroman", + "10006": "macgreek", + "10007": "maccyrillic", + "10079": "maciceland", + "10081": "macturkish", + "cspc8codepage437": "cp437", + "cspc775baltic": "cp775", + "cspc850multilingual": "cp850", + "cspcp852": "cp852", + "cspc862latinhebrew": "cp862", + "cpgr": "cp869", + "msee": "cp1250", + "mscyrl": "cp1251", + "msansi": "cp1252", + "msgreek": "cp1253", + "msturk": "cp1254", + "mshebr": "cp1255", + "msarab": "cp1256", + "winbaltrim": "cp1257", + "cp20866": "koi8r", + "20866": "koi8r", + "ibm878": "koi8r", + "cskoi8r": "koi8r", + "cp21866": "koi8u", + "21866": "koi8u", + "ibm1168": "koi8u", + "strk10482002": "rk1048", + "tcvn5712": "tcvn", + "tcvn57121": "tcvn", + "gb198880": "iso646cn", + "cn": "iso646cn", + "csiso14jisc6220ro": "iso646jp", + "jisc62201969ro": "iso646jp", + "jp": "iso646jp", + "cshproman8": "hproman8", + "r8": "hproman8", + "roman8": "hproman8", + "xroman8": "hproman8", + "ibm1051": "hproman8", + "mac": "macintosh", + "csmacintosh": "macintosh" + }; + } +}); + +// ../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js +var require_sbcs_data_generated = __commonJS({ + "../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports, module2) { + "use strict"; + module2.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0" + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0" + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0" + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0" + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "macgreek": { + "type": "_sbcs", + "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" + }, + "maciceland": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macroman": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macromania": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macthai": { + "type": "_sbcs", + "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "macturkish": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macukraine": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "koi8r": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8u": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8t": { + "type": "_sbcs", + "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "armscii8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD" + }, + "rk1048": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b \n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "georgianps": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "pt154": { + "type": "_sbcs", + "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "viscii": { + "type": "_sbcs", + "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b \n\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE" + }, + "iso646cn": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "iso646jp": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "hproman8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD" + }, + "macintosh": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "ascii": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "tis620": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + } + }; + } +}); + +// ../../../node_modules/iconv-lite/encodings/dbcs-codec.js +var require_dbcs_codec = __commonJS({ + "../../../node_modules/iconv-lite/encodings/dbcs-codec.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports._dbcs = DBCSCodec; + var UNASSIGNED = -1; + var GB18030_CODE = -2; + var SEQ_START = -10; + var NODE_START = -1e3; + var UNASSIGNED_NODE = new Array(256); + var DEF_CHAR = -1; + for (i = 0; i < 256; i++) + UNASSIGNED_NODE[i] = UNASSIGNED; + var i; + function DBCSCodec(codecOptions, iconv) { + this.encodingName = codecOptions.encodingName; + if (!codecOptions) + throw new Error("DBCS codec is called without the data."); + if (!codecOptions.table) + throw new Error("Encoding '" + this.encodingName + "' has no data."); + var mappingTable = codecOptions.table(); + this.decodeTables = []; + this.decodeTables[0] = UNASSIGNED_NODE.slice(0); + this.decodeTableSeq = []; + for (var i2 = 0; i2 < mappingTable.length; i2++) + this._addDecodeChunk(mappingTable[i2]); + if (typeof codecOptions.gb18030 === "function") { + this.gb18030 = codecOptions.gb18030(); + var commonThirdByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + var commonFourthByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + var firstByteNode = this.decodeTables[0]; + for (var i2 = 129; i2 <= 254; i2++) { + var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i2]]; + for (var j = 48; j <= 57; j++) { + if (secondByteNode[j] === UNASSIGNED) { + secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; + } else if (secondByteNode[j] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 2"); + } + var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; + for (var k = 129; k <= 254; k++) { + if (thirdByteNode[k] === UNASSIGNED) { + thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; + } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { + continue; + } else if (thirdByteNode[k] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 3"); + } + var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; + for (var l = 48; l <= 57; l++) { + if (fourthByteNode[l] === UNASSIGNED) + fourthByteNode[l] = GB18030_CODE; + } + } + } + } + } + this.defaultCharUnicode = iconv.defaultCharUnicode; + this.encodeTable = []; + this.encodeTableSeq = []; + var skipEncodeChars = {}; + if (codecOptions.encodeSkipVals) + for (var i2 = 0; i2 < codecOptions.encodeSkipVals.length; i2++) { + var val2 = codecOptions.encodeSkipVals[i2]; + if (typeof val2 === "number") + skipEncodeChars[val2] = true; + else + for (var j = val2.from; j <= val2.to; j++) + skipEncodeChars[j] = true; + } + this._fillEncodeTable(0, 0, skipEncodeChars); + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) + this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); + } + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; + if (this.defCharSB === UNASSIGNED) + this.defCharSB = this.encodeTable[0]["?"]; + if (this.defCharSB === UNASSIGNED) + this.defCharSB = "?".charCodeAt(0); + } + DBCSCodec.prototype.encoder = DBCSEncoder; + DBCSCodec.prototype.decoder = DBCSDecoder; + DBCSCodec.prototype._getDecodeTrieNode = function(addr) { + var bytes = []; + for (; addr > 0; addr >>>= 8) + bytes.push(addr & 255); + if (bytes.length == 0) + bytes.push(0); + var node = this.decodeTables[0]; + for (var i2 = bytes.length - 1; i2 > 0; i2--) { + var val2 = node[bytes[i2]]; + if (val2 == UNASSIGNED) { + node[bytes[i2]] = NODE_START - this.decodeTables.length; + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); + } else if (val2 <= NODE_START) { + node = this.decodeTables[NODE_START - val2]; + } else + throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); + } + return node; + }; + DBCSCodec.prototype._addDecodeChunk = function(chunk) { + var curAddr = parseInt(chunk[0], 16); + var writeTable = this._getDecodeTrieNode(curAddr); + curAddr = curAddr & 255; + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k]; + if (typeof part === "string") { + for (var l = 0; l < part.length; ) { + var code = part.charCodeAt(l++); + if (55296 <= code && code < 56320) { + var codeTrail = part.charCodeAt(l++); + if (56320 <= codeTrail && codeTrail < 57344) + writeTable[curAddr++] = 65536 + (code - 55296) * 1024 + (codeTrail - 56320); + else + throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); + } else if (4080 < code && code <= 4095) { + var len = 4095 - code + 2; + var seq = []; + for (var m = 0; m < len; m++) + seq.push(part.charCodeAt(l++)); + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; + this.decodeTableSeq.push(seq); + } else + writeTable[curAddr++] = code; + } + } else if (typeof part === "number") { + var charCode = writeTable[curAddr - 1] + 1; + for (var l = 0; l < part; l++) + writeTable[curAddr++] = charCode++; + } else + throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); + } + if (curAddr > 255) + throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); + }; + DBCSCodec.prototype._getEncodeBucket = function(uCode) { + var high = uCode >> 8; + if (this.encodeTable[high] === void 0) + this.encodeTable[high] = UNASSIGNED_NODE.slice(0); + return this.encodeTable[high]; + }; + DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + if (bucket[low] <= SEQ_START) + this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode; + else if (bucket[low] == UNASSIGNED) + bucket[low] = dbcsCode; + }; + DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { + var uCode = seq[0]; + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + var node; + if (bucket[low] <= SEQ_START) { + node = this.encodeTableSeq[SEQ_START - bucket[low]]; + } else { + node = {}; + if (bucket[low] !== UNASSIGNED) + node[DEF_CHAR] = bucket[low]; + bucket[low] = SEQ_START - this.encodeTableSeq.length; + this.encodeTableSeq.push(node); + } + for (var j = 1; j < seq.length - 1; j++) { + var oldVal = node[uCode]; + if (typeof oldVal === "object") + node = oldVal; + else { + node = node[uCode] = {}; + if (oldVal !== void 0) + node[DEF_CHAR] = oldVal; + } + } + uCode = seq[seq.length - 1]; + node[uCode] = dbcsCode; + }; + DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx]; + var hasValues = false; + var subNodeEmpty = {}; + for (var i2 = 0; i2 < 256; i2++) { + var uCode = node[i2]; + var mbCode = prefix + i2; + if (skipEncodeChars[mbCode]) + continue; + if (uCode >= 0) { + this._setEncodeChar(uCode, mbCode); + hasValues = true; + } else if (uCode <= NODE_START) { + var subNodeIdx = NODE_START - uCode; + if (!subNodeEmpty[subNodeIdx]) { + var newPrefix = mbCode << 8 >>> 0; + if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) + hasValues = true; + else + subNodeEmpty[subNodeIdx] = true; + } + } else if (uCode <= SEQ_START) { + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); + hasValues = true; + } + } + return hasValues; + }; + function DBCSEncoder(options, codec) { + this.leadSurrogate = -1; + this.seqObj = void 0; + this.encodeTable = codec.encodeTable; + this.encodeTableSeq = codec.encodeTableSeq; + this.defaultCharSingleByte = codec.defCharSB; + this.gb18030 = codec.gb18030; + } + DBCSEncoder.prototype.write = function(str) { + var newBuf = Buffer2.alloc(str.length * (this.gb18030 ? 4 : 3)), leadSurrogate = this.leadSurrogate, seqObj = this.seqObj, nextChar = -1, i2 = 0, j = 0; + while (true) { + if (nextChar === -1) { + if (i2 == str.length) + break; + var uCode = str.charCodeAt(i2++); + } else { + var uCode = nextChar; + nextChar = -1; + } + if (55296 <= uCode && uCode < 57344) { + if (uCode < 56320) { + if (leadSurrogate === -1) { + leadSurrogate = uCode; + continue; + } else { + leadSurrogate = uCode; + uCode = UNASSIGNED; + } + } else { + if (leadSurrogate !== -1) { + uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320); + leadSurrogate = -1; + } else { + uCode = UNASSIGNED; + } + } + } else if (leadSurrogate !== -1) { + nextChar = uCode; + uCode = UNASSIGNED; + leadSurrogate = -1; + } + var dbcsCode = UNASSIGNED; + if (seqObj !== void 0 && uCode != UNASSIGNED) { + var resCode = seqObj[uCode]; + if (typeof resCode === "object") { + seqObj = resCode; + continue; + } else if (typeof resCode == "number") { + dbcsCode = resCode; + } else if (resCode == void 0) { + resCode = seqObj[DEF_CHAR]; + if (resCode !== void 0) { + dbcsCode = resCode; + nextChar = uCode; + } else { + } + } + seqObj = void 0; + } else if (uCode >= 0) { + var subtable = this.encodeTable[uCode >> 8]; + if (subtable !== void 0) + dbcsCode = subtable[uCode & 255]; + if (dbcsCode <= SEQ_START) { + seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]; + continue; + } + if (dbcsCode == UNASSIGNED && this.gb18030) { + var idx = findIdx(this.gb18030.uChars, uCode); + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); + newBuf[j++] = 129 + Math.floor(dbcsCode / 12600); + dbcsCode = dbcsCode % 12600; + newBuf[j++] = 48 + Math.floor(dbcsCode / 1260); + dbcsCode = dbcsCode % 1260; + newBuf[j++] = 129 + Math.floor(dbcsCode / 10); + dbcsCode = dbcsCode % 10; + newBuf[j++] = 48 + dbcsCode; + continue; + } + } + } + if (dbcsCode === UNASSIGNED) + dbcsCode = this.defaultCharSingleByte; + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else if (dbcsCode < 65536) { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } else if (dbcsCode < 16777216) { + newBuf[j++] = dbcsCode >> 16; + newBuf[j++] = dbcsCode >> 8 & 255; + newBuf[j++] = dbcsCode & 255; + } else { + newBuf[j++] = dbcsCode >>> 24; + newBuf[j++] = dbcsCode >>> 16 & 255; + newBuf[j++] = dbcsCode >>> 8 & 255; + newBuf[j++] = dbcsCode & 255; + } + } + this.seqObj = seqObj; + this.leadSurrogate = leadSurrogate; + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.end = function() { + if (this.leadSurrogate === -1 && this.seqObj === void 0) + return; + var newBuf = Buffer2.alloc(10), j = 0; + if (this.seqObj) { + var dbcsCode = this.seqObj[DEF_CHAR]; + if (dbcsCode !== void 0) { + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } + } else { + } + this.seqObj = void 0; + } + if (this.leadSurrogate !== -1) { + newBuf[j++] = this.defaultCharSingleByte; + this.leadSurrogate = -1; + } + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.findIdx = findIdx; + function DBCSDecoder(options, codec) { + this.nodeIdx = 0; + this.prevBytes = []; + this.decodeTables = codec.decodeTables; + this.decodeTableSeq = codec.decodeTableSeq; + this.defaultCharUnicode = codec.defaultCharUnicode; + this.gb18030 = codec.gb18030; + } + DBCSDecoder.prototype.write = function(buf) { + var newBuf = Buffer2.alloc(buf.length * 2), nodeIdx = this.nodeIdx, prevBytes = this.prevBytes, prevOffset = this.prevBytes.length, seqStart = -this.prevBytes.length, uCode; + for (var i2 = 0, j = 0; i2 < buf.length; i2++) { + var curByte = i2 >= 0 ? buf[i2] : prevBytes[i2 + prevOffset]; + var uCode = this.decodeTables[nodeIdx][curByte]; + if (uCode >= 0) { + } else if (uCode === UNASSIGNED) { + uCode = this.defaultCharUnicode.charCodeAt(0); + i2 = seqStart; + } else if (uCode === GB18030_CODE) { + if (i2 >= 3) { + var ptr = (buf[i2 - 3] - 129) * 12600 + (buf[i2 - 2] - 48) * 1260 + (buf[i2 - 1] - 129) * 10 + (curByte - 48); + } else { + var ptr = (prevBytes[i2 - 3 + prevOffset] - 129) * 12600 + ((i2 - 2 >= 0 ? buf[i2 - 2] : prevBytes[i2 - 2 + prevOffset]) - 48) * 1260 + ((i2 - 1 >= 0 ? buf[i2 - 1] : prevBytes[i2 - 1 + prevOffset]) - 129) * 10 + (curByte - 48); + } + var idx = findIdx(this.gb18030.gbChars, ptr); + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; + } else if (uCode <= NODE_START) { + nodeIdx = NODE_START - uCode; + continue; + } else if (uCode <= SEQ_START) { + var seq = this.decodeTableSeq[SEQ_START - uCode]; + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k]; + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + } + uCode = seq[seq.length - 1]; + } else + throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); + if (uCode >= 65536) { + uCode -= 65536; + var uCodeLead = 55296 | uCode >> 10; + newBuf[j++] = uCodeLead & 255; + newBuf[j++] = uCodeLead >> 8; + uCode = 56320 | uCode & 1023; + } + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + nodeIdx = 0; + seqStart = i2 + 1; + } + this.nodeIdx = nodeIdx; + this.prevBytes = seqStart >= 0 ? Array.prototype.slice.call(buf, seqStart) : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); + return newBuf.slice(0, j).toString("ucs2"); + }; + DBCSDecoder.prototype.end = function() { + var ret = ""; + while (this.prevBytes.length > 0) { + ret += this.defaultCharUnicode; + var bytesArr = this.prevBytes.slice(1); + this.prevBytes = []; + this.nodeIdx = 0; + if (bytesArr.length > 0) + ret += this.write(bytesArr); + } + this.prevBytes = []; + this.nodeIdx = 0; + return ret; + }; + function findIdx(table, val2) { + if (table[0] > val2) + return -1; + var l = 0, r = table.length; + while (l < r - 1) { + var mid = l + (r - l + 1 >> 1); + if (table[mid] <= val2) + l = mid; + else + r = mid; + } + return l; + } + } +}); + +// ../../../node_modules/iconv-lite/encodings/tables/shiftjis.json +var require_shiftjis = __commonJS({ + "../../../node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 128], + ["a1", "\uFF61", 62], + ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"], + ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["81fc", "\u25EF"], + ["824f", "\uFF10", 9], + ["8260", "\uFF21", 25], + ["8281", "\uFF41", 25], + ["829f", "\u3041", 82], + ["8340", "\u30A1", 62], + ["8380", "\u30E0", 22], + ["839f", "\u0391", 16, "\u03A3", 6], + ["83bf", "\u03B1", 16, "\u03C3", 6], + ["8440", "\u0410", 5, "\u0401\u0416", 25], + ["8470", "\u0430", 5, "\u0451\u0436", 7], + ["8480", "\u043E", 17], + ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["8740", "\u2460", 19, "\u2160", 9], + ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["877e", "\u337B"], + ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"], + ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"], + ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"], + ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"], + ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"], + ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"], + ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"], + ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"], + ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"], + ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"], + ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"], + ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"], + ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"], + ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"], + ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"], + ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"], + ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"], + ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"], + ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"], + ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"], + ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"], + ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"], + ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"], + ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"], + ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"], + ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"], + ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"], + ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"], + ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"], + ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"], + ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"], + ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"], + ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"], + ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"], + ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"], + ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["f040", "\uE000", 62], + ["f080", "\uE03F", 124], + ["f140", "\uE0BC", 62], + ["f180", "\uE0FB", 124], + ["f240", "\uE178", 62], + ["f280", "\uE1B7", 124], + ["f340", "\uE234", 62], + ["f380", "\uE273", 124], + ["f440", "\uE2F0", 62], + ["f480", "\uE32F", 124], + ["f540", "\uE3AC", 62], + ["f580", "\uE3EB", 124], + ["f640", "\uE468", 62], + ["f680", "\uE4A7", 124], + ["f740", "\uE524", 62], + ["f780", "\uE563", 124], + ["f840", "\uE5E0", 62], + ["f880", "\uE61F", 124], + ["f940", "\uE69C"], + ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"], + ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"], + ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"], + ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"], + ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"] + ]; + } +}); + +// ../../../node_modules/iconv-lite/encodings/tables/eucjp.json +var require_eucjp = __commonJS({ + "../../../node_modules/iconv-lite/encodings/tables/eucjp.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 127], + ["8ea1", "\uFF61", 62], + ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"], + ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["a2fe", "\u25EF"], + ["a3b0", "\uFF10", 9], + ["a3c1", "\uFF21", 25], + ["a3e1", "\uFF41", 25], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["ada1", "\u2460", 19, "\u2160", 9], + ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"], + ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"], + ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"], + ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"], + ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"], + ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"], + ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"], + ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"], + ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"], + ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"], + ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"], + ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"], + ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"], + ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"], + ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"], + ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"], + ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"], + ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"], + ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"], + ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"], + ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"], + ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"], + ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"], + ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"], + ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"], + ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"], + ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"], + ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"], + ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"], + ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"], + ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"], + ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"], + ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"], + ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"], + ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"], + ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"], + ["8fa2c2", "\xA1\xA6\xBF"], + ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], + ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"], + ["8fa6e7", "\u038C"], + ["8fa6e9", "\u038E\u03AB"], + ["8fa6ec", "\u038F"], + ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"], + ["8fa7c2", "\u0402", 10, "\u040E\u040F"], + ["8fa7f2", "\u0452", 10, "\u045E\u045F"], + ["8fa9a1", "\xC6\u0110"], + ["8fa9a4", "\u0126"], + ["8fa9a6", "\u0132"], + ["8fa9a8", "\u0141\u013F"], + ["8fa9ab", "\u014A\xD8\u0152"], + ["8fa9af", "\u0166\xDE"], + ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"], + ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], + ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"], + ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], + ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], + ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"], + ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"], + ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"], + ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"], + ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"], + ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"], + ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"], + ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"], + ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"], + ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"], + ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"], + ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"], + ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"], + ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"], + ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"], + ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"], + ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"], + ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"], + ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"], + ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"], + ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"], + ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"], + ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"], + ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"], + ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"], + ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"], + ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"], + ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"], + ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"], + ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"], + ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"], + ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"], + ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"], + ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"], + ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"], + ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5], + ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"], + ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"], + ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"], + ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"], + ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"], + ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"], + ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"], + ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"], + ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"], + ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"], + ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"], + ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"], + ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"], + ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"], + ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"], + ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"], + ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"], + ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"], + ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"], + ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"], + ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"], + ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"], + ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4], + ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"], + ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"], + ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"], + ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"] + ]; + } +}); + +// ../../../node_modules/iconv-lite/encodings/tables/cp936.json +var require_cp936 = __commonJS({ + "../../../node_modules/iconv-lite/encodings/tables/cp936.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 127, "\u20AC"], + ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"], + ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"], + ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11], + ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"], + ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"], + ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5], + ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"], + ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"], + ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"], + ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"], + ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"], + ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"], + ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4], + ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6], + ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"], + ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7], + ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"], + ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"], + ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"], + ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5], + ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"], + ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6], + ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"], + ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4], + ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4], + ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"], + ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"], + ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6], + ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"], + ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"], + ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"], + ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6], + ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"], + ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"], + ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"], + ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"], + ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"], + ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"], + ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8], + ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"], + ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"], + ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"], + ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"], + ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5], + ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"], + ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"], + ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"], + ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"], + ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5], + ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6], + ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"], + ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"], + ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"], + ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"], + ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"], + ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5], + ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"], + ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"], + ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6], + ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"], + ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"], + ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4], + ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19], + ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"], + ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"], + ["a2a1", "\u2170", 9], + ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9], + ["a2e5", "\u3220", 9], + ["a2f1", "\u2160", 11], + ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"], + ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"], + ["a6f4", "\uFE33\uFE34"], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6], + ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"], + ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"], + ["a8bd", "\u0144\u0148"], + ["a8c0", "\u0261"], + ["a8c5", "\u3105", 36], + ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"], + ["a959", "\u2121\u3231"], + ["a95c", "\u2010"], + ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8], + ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"], + ["a996", "\u3007"], + ["a9a4", "\u2500", 75], + ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8], + ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"], + ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4], + ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4], + ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11], + ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"], + ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12], + ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"], + ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"], + ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"], + ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"], + ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"], + ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"], + ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"], + ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"], + ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"], + ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4], + ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"], + ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"], + ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"], + ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9], + ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"], + ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"], + ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"], + ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"], + ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"], + ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16], + ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"], + ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"], + ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"], + ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"], + ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"], + ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"], + ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"], + ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9], + ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"], + ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5], + ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"], + ["bd40", "\u7D37", 54, "\u7D6F", 7], + ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"], + ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42], + ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"], + ["bf40", "\u7DFB", 62], + ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"], + ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"], + ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"], + ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"], + ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"], + ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"], + ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"], + ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"], + ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"], + ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"], + ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"], + ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"], + ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"], + ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"], + ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"], + ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"], + ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"], + ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"], + ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"], + ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"], + ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"], + ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10], + ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"], + ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"], + ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"], + ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"], + ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"], + ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"], + ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"], + ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"], + ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"], + ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9], + ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"], + ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"], + ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"], + ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5], + ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"], + ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"], + ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"], + ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6], + ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"], + ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21], + ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"], + ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46], + ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"], + ["d640", "\u8AE4", 34, "\u8B08", 27], + ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"], + ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25], + ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"], + ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"], + ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"], + ["d940", "\u8CAE", 62], + ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"], + ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"], + ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"], + ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"], + ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"], + ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7], + ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"], + ["dd40", "\u8EE5", 62], + ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"], + ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"], + ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"], + ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"], + ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"], + ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"], + ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"], + ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"], + ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"], + ["e240", "\u91E6", 62], + ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"], + ["e340", "\u9246", 45, "\u9275", 16], + ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"], + ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31], + ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"], + ["e540", "\u930A", 51, "\u933F", 10], + ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"], + ["e640", "\u936C", 34, "\u9390", 27], + ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"], + ["e740", "\u93CE", 7, "\u93D7", 54], + ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"], + ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"], + ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"], + ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42], + ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"], + ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"], + ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"], + ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"], + ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"], + ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7], + ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"], + ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46], + ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"], + ["ee40", "\u980F", 62], + ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"], + ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4], + ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"], + ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26], + ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"], + ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47], + ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"], + ["f240", "\u99FA", 62], + ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"], + ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"], + ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"], + ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5], + ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"], + ["f540", "\u9B7C", 62], + ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"], + ["f640", "\u9BDC", 62], + ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"], + ["f740", "\u9C3C", 62], + ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"], + ["f840", "\u9CE3", 62], + ["f880", "\u9D22", 32], + ["f940", "\u9D43", 62], + ["f980", "\u9D82", 32], + ["fa40", "\u9DA3", 62], + ["fa80", "\u9DE2", 32], + ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"], + ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"], + ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6], + ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"], + ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38], + ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"], + ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"] + ]; + } +}); + +// ../../../node_modules/iconv-lite/encodings/tables/gbk-added.json +var require_gbk_added = __commonJS({ + "../../../node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports, module2) { + module2.exports = [ + ["a140", "\uE4C6", 62], + ["a180", "\uE505", 32], + ["a240", "\uE526", 62], + ["a280", "\uE565", 32], + ["a2ab", "\uE766", 5], + ["a2e3", "\u20AC\uE76D"], + ["a2ef", "\uE76E\uE76F"], + ["a2fd", "\uE770\uE771"], + ["a340", "\uE586", 62], + ["a380", "\uE5C5", 31, "\u3000"], + ["a440", "\uE5E6", 62], + ["a480", "\uE625", 32], + ["a4f4", "\uE772", 10], + ["a540", "\uE646", 62], + ["a580", "\uE685", 32], + ["a5f7", "\uE77D", 7], + ["a640", "\uE6A6", 62], + ["a680", "\uE6E5", 32], + ["a6b9", "\uE785", 7], + ["a6d9", "\uE78D", 6], + ["a6ec", "\uE794\uE795"], + ["a6f3", "\uE796"], + ["a6f6", "\uE797", 8], + ["a740", "\uE706", 62], + ["a780", "\uE745", 32], + ["a7c2", "\uE7A0", 14], + ["a7f2", "\uE7AF", 12], + ["a896", "\uE7BC", 10], + ["a8bc", "\u1E3F"], + ["a8bf", "\u01F9"], + ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"], + ["a8ea", "\uE7CD", 20], + ["a958", "\uE7E2"], + ["a95b", "\uE7E3"], + ["a95d", "\uE7E4\uE7E5\uE7E6"], + ["a989", "\u303E\u2FF0", 11], + ["a997", "\uE7F4", 12], + ["a9f0", "\uE801", 14], + ["aaa1", "\uE000", 93], + ["aba1", "\uE05E", 93], + ["aca1", "\uE0BC", 93], + ["ada1", "\uE11A", 93], + ["aea1", "\uE178", 93], + ["afa1", "\uE1D6", 93], + ["d7fa", "\uE810", 4], + ["f8a1", "\uE234", 93], + ["f9a1", "\uE292", 93], + ["faa1", "\uE2F0", 93], + ["fba1", "\uE34E", 93], + ["fca1", "\uE3AC", 93], + ["fda1", "\uE40A", 93], + ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"], + ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93], + ["8135f437", "\uE7C7"] + ]; + } +}); + +// ../../../node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +var require_gb18030_ranges = __commonJS({ + "../../../node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports, module2) { + module2.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] }; + } +}); + +// ../../../node_modules/iconv-lite/encodings/tables/cp949.json +var require_cp949 = __commonJS({ + "../../../node_modules/iconv-lite/encodings/tables/cp949.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 127], + ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"], + ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"], + ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"], + ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5], + ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"], + ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18], + ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7], + ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"], + ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8], + ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8], + ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18], + ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"], + ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4], + ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"], + ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"], + ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"], + ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10], + ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"], + ["8741", "\uB19E", 9, "\uB1A9", 15], + ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"], + ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4], + ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4], + ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"], + ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"], + ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"], + ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"], + ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15], + ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"], + ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"], + ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"], + ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"], + ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8], + ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18], + ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4], + ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5], + ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16], + ["8d41", "\uB6C3", 16, "\uB6D5", 8], + ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"], + ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"], + ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8], + ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19], + ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7], + ["8f41", "\uB885", 7, "\uB88E", 17], + ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4], + ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5], + ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"], + ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15], + ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"], + ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5], + ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5], + ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6], + ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"], + ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4], + ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"], + ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"], + ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8], + ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"], + ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8], + ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12], + ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24], + ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"], + ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"], + ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14], + ["9641", "\uBEB8", 23, "\uBED2\uBED3"], + ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8], + ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44], + ["9741", "\uBF83", 16, "\uBF95", 8], + ["9761", "\uBF9E", 17, "\uBFB1", 7], + ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"], + ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"], + ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15], + ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"], + ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"], + ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"], + ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"], + ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16], + ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"], + ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"], + ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8], + ["9b61", "\uC333", 17, "\uC346", 7], + ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"], + ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5], + ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9], + ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12], + ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8], + ["9d61", "\uC4C6", 25], + ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"], + ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"], + ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"], + ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"], + ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"], + ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"], + ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"], + ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"], + ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13], + ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"], + ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"], + ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"], + ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"], + ["a241", "\uC910\uC912", 5, "\uC919", 18], + ["a261", "\uC92D", 6, "\uC935", 18], + ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"], + ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"], + ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16], + ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"], + ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"], + ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12], + ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93], + ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"], + ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"], + ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9], + ["a5b0", "\u2160", 9], + ["a5c1", "\u0391", 16, "\u03A3", 6], + ["a5e1", "\u03B1", 16, "\u03C3", 6], + ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"], + ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6], + ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7], + ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7], + ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"], + ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"], + ["a841", "\uCB6D", 10, "\uCB7A", 14], + ["a861", "\uCB89", 18, "\uCB9D", 6], + ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"], + ["a8a6", "\u0132"], + ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"], + ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"], + ["a941", "\uCBC5", 14, "\uCBD5", 10], + ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18], + ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"], + ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"], + ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"], + ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82], + ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"], + ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5], + ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85], + ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"], + ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4], + ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25], + ["acd1", "\u0430", 5, "\u0451\u0436", 25], + ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7], + ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"], + ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"], + ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16], + ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4], + ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"], + ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19], + ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"], + ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"], + ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12], + ["b061", "\uCEBB", 5, "\uCEC2", 19], + ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"], + ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"], + ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11], + ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"], + ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"], + ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"], + ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"], + ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"], + ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5], + ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"], + ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5], + ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"], + ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"], + ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5], + ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4], + ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"], + ["b641", "\uD105", 7, "\uD10E", 17], + ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"], + ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"], + ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"], + ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"], + ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"], + ["b841", "\uD1D0", 7, "\uD1D9", 17], + ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13], + ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"], + ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"], + ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"], + ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"], + ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"], + ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5], + ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"], + ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"], + ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"], + ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"], + ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"], + ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"], + ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"], + ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"], + ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13], + ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"], + ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14], + ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"], + ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"], + ["bf41", "\uD49E", 10, "\uD4AA", 14], + ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"], + ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"], + ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5], + ["c061", "\uD51E", 25], + ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"], + ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"], + ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"], + ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"], + ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"], + ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"], + ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"], + ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4], + ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11], + ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"], + ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"], + ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4], + ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"], + ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"], + ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4], + ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"], + ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5], + ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"], + ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"], + ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"], + ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"], + ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"], + ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"], + ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"], + ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"], + ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"], + ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"], + ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"], + ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"], + ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"], + ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"], + ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"], + ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"], + ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"], + ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"], + ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"], + ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"], + ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"], + ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"], + ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"], + ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"], + ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"], + ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"], + ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"], + ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"], + ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"], + ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"], + ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"], + ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"], + ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"], + ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"], + ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"], + ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"], + ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"], + ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"], + ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"], + ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"], + ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"], + ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"], + ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"], + ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"], + ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"], + ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"], + ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"], + ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"], + ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"], + ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"], + ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"], + ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"], + ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"], + ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"], + ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"] + ]; + } +}); + +// ../../../node_modules/iconv-lite/encodings/tables/cp950.json +var require_cp950 = __commonJS({ + "../../../node_modules/iconv-lite/encodings/tables/cp950.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 127], + ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"], + ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"], + ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"], + ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21], + ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10], + ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"], + ["a3e1", "\u20AC"], + ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"], + ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"], + ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"], + ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"], + ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"], + ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"], + ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"], + ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"], + ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"], + ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"], + ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"], + ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"], + ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"], + ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"], + ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"], + ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"], + ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"], + ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"], + ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"], + ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"], + ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"], + ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"], + ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"], + ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"], + ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"], + ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"], + ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"], + ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"], + ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"], + ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"], + ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"], + ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"], + ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"], + ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"], + ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"], + ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"], + ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"], + ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"], + ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"], + ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"], + ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"], + ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"], + ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"], + ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"], + ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"], + ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"], + ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"], + ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"], + ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"], + ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"], + ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"], + ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"], + ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"], + ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"], + ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"], + ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"], + ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"], + ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"], + ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"], + ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"], + ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"], + ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"], + ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"], + ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"], + ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"], + ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"], + ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"], + ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"], + ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"], + ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"], + ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"], + ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"], + ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"], + ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"], + ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"], + ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"], + ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"], + ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"], + ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"], + ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"], + ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"], + ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"], + ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"], + ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"], + ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"], + ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"], + ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"], + ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"], + ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"], + ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"], + ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"], + ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"], + ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"], + ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"], + ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"], + ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"], + ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"], + ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"], + ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"], + ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"], + ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"], + ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"], + ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"], + ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"], + ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"], + ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"], + ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"], + ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"], + ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"], + ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"], + ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"], + ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"], + ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"], + ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"], + ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"], + ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"], + ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"], + ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"], + ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"], + ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"], + ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"], + ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"], + ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"], + ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"], + ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"], + ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"], + ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"], + ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"], + ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"], + ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"], + ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"], + ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"], + ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"], + ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"], + ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"], + ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"], + ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"], + ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"], + ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"], + ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"], + ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"], + ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"], + ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"], + ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"], + ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"], + ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"], + ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"], + ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"], + ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"], + ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"], + ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"], + ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"], + ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"], + ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"], + ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"], + ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"], + ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"], + ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"], + ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"], + ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"], + ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"], + ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"], + ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"], + ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"], + ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"], + ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"], + ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"] + ]; + } +}); + +// ../../../node_modules/iconv-lite/encodings/tables/big5-added.json +var require_big5_added = __commonJS({ + "../../../node_modules/iconv-lite/encodings/tables/big5-added.json"(exports, module2) { + module2.exports = [ + ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"], + ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"], + ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"], + ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"], + ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"], + ["8940", "\u{2A3A9}\u{21145}"], + ["8943", "\u650A"], + ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"], + ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"], + ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"], + ["89ab", "\u918C\u78B8\u915E\u80BC"], + ["89b0", "\u8D0B\u80F6\u{209E7}"], + ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"], + ["89c1", "\u6E9A\u823E\u7519"], + ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"], + ["8a40", "\u{27D84}\u5525"], + ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"], + ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"], + ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"], + ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"], + ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"], + ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"], + ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"], + ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"], + ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"], + ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"], + ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"], + ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"], + ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"], + ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"], + ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"], + ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"], + ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"], + ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"], + ["8cc9", "\u9868\u676B\u4276\u573D"], + ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"], + ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"], + ["8d40", "\u{20B9F}"], + ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"], + ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"], + ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"], + ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"], + ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"], + ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"], + ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"], + ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"], + ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"], + ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"], + ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"], + ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"], + ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"], + ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"], + ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"], + ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"], + ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"], + ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"], + ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"], + ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"], + ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"], + ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"], + ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"], + ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"], + ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"], + ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"], + ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"], + ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"], + ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"], + ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"], + ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"], + ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"], + ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"], + ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"], + ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"], + ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"], + ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"], + ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"], + ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"], + ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"], + ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"], + ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"], + ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"], + ["9fae", "\u9159\u9681\u915C"], + ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"], + ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"], + ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"], + ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"], + ["9fe7", "\u6BFA\u8818\u7F78"], + ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"], + ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"], + ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"], + ["a055", "\u{2183B}\u{26E05}"], + ["a058", "\u8A7E\u{2251B}"], + ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"], + ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"], + ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"], + ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"], + ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"], + ["a0ae", "\u77FE"], + ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"], + ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"], + ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"], + ["a3c0", "\u2400", 31, "\u2421"], + ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23], + ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"], + ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4], + ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"], + ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"], + ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"], + ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"], + ["f9fe", "\uFFED"], + ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"], + ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"], + ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"], + ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"], + ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"], + ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"], + ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"], + ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"], + ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"], + ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"] + ]; + } +}); + +// ../../../node_modules/iconv-lite/encodings/dbcs-data.js +var require_dbcs_data = __commonJS({ + "../../../node_modules/iconv-lite/encodings/dbcs-data.js"(exports, module2) { + "use strict"; + module2.exports = { + // == Japanese/ShiftJIS ==================================================== + // All japanese encodings are based on JIS X set of standards: + // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. + // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. + // Has several variations in 1978, 1983, 1990 and 1997. + // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. + // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. + // 2 planes, first is superset of 0208, second - revised 0212. + // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) + // Byte encodings are: + // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte + // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. + // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. + // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. + // 0x00-0x7F - lower part of 0201 + // 0x8E, 0xA1-0xDF - upper part of 0201 + // (0xA1-0xFE)x2 - 0208 plane (94x94). + // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). + // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. + // Used as-is in ISO2022 family. + // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, + // 0201-1976 Roman, 0208-1978, 0208-1983. + // * ISO2022-JP-1: Adds esc seq for 0212-1990. + // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. + // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. + // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. + // + // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. + // + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + "shiftjis": { + type: "_dbcs", + table: function() { + return require_shiftjis(); + }, + encodeAdd: { "\xA5": 92, "\u203E": 126 }, + encodeSkipVals: [{ from: 60736, to: 63808 }] + }, + "csshiftjis": "shiftjis", + "mskanji": "shiftjis", + "sjis": "shiftjis", + "windows31j": "shiftjis", + "ms31j": "shiftjis", + "xsjis": "shiftjis", + "windows932": "shiftjis", + "ms932": "shiftjis", + "932": "shiftjis", + "cp932": "shiftjis", + "eucjp": { + type: "_dbcs", + table: function() { + return require_eucjp(); + }, + encodeAdd: { "\xA5": 92, "\u203E": 126 } + }, + // TODO: KDDI extension to Shift_JIS + // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. + // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. + // == Chinese/GBK ========================================================== + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 + "gb2312": "cp936", + "gb231280": "cp936", + "gb23121980": "cp936", + "csgb2312": "cp936", + "csiso58gb231280": "cp936", + "euccn": "cp936", + // Microsoft's CP936 is a subset and approximation of GBK. + "windows936": "cp936", + "ms936": "cp936", + "936": "cp936", + "cp936": { + type: "_dbcs", + table: function() { + return require_cp936(); + } + }, + // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. + "gbk": { + type: "_dbcs", + table: function() { + return require_cp936().concat(require_gbk_added()); + } + }, + "xgbk": "gbk", + "isoir58": "gbk", + // GB18030 is an algorithmic extension of GBK. + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + "gb18030": { + type: "_dbcs", + table: function() { + return require_cp936().concat(require_gbk_added()); + }, + gb18030: function() { + return require_gb18030_ranges(); + }, + encodeSkipVals: [128], + encodeAdd: { "\u20AC": 41699 } + }, + "chinese": "gb18030", + // == Korean =============================================================== + // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. + "windows949": "cp949", + "ms949": "cp949", + "949": "cp949", + "cp949": { + type: "_dbcs", + table: function() { + return require_cp949(); + } + }, + "cseuckr": "cp949", + "csksc56011987": "cp949", + "euckr": "cp949", + "isoir149": "cp949", + "korean": "cp949", + "ksc56011987": "cp949", + "ksc56011989": "cp949", + "ksc5601": "cp949", + // == Big5/Taiwan/Hong Kong ================================================ + // There are lots of tables for Big5 and cp950. Please see the following links for history: + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // Variations, in roughly number of defined chars: + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ + // * Big5-2003 (Taiwan standard) almost superset of cp950. + // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. + // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. + // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. + // Plus, it has 4 combining sequences. + // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 + // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. + // Implementations are not consistent within browsers; sometimes labeled as just big5. + // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. + // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 + // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. + "windows950": "cp950", + "ms950": "cp950", + "950": "cp950", + "cp950": { + type: "_dbcs", + table: function() { + return require_cp950(); + } + }, + // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. + "big5": "big5hkscs", + "big5hkscs": { + type: "_dbcs", + table: function() { + return require_cp950().concat(require_big5_added()); + }, + encodeSkipVals: [ + // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of + // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. + // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. + 36457, + 36463, + 36478, + 36523, + 36532, + 36557, + 36560, + 36695, + 36713, + 36718, + 36811, + 36862, + 36973, + 36986, + 37060, + 37084, + 37105, + 37311, + 37551, + 37552, + 37553, + 37554, + 37585, + 37959, + 38090, + 38361, + 38652, + 39285, + 39798, + 39800, + 39803, + 39878, + 39902, + 39916, + 39926, + 40002, + 40019, + 40034, + 40040, + 40043, + 40055, + 40124, + 40125, + 40144, + 40279, + 40282, + 40388, + 40431, + 40443, + 40617, + 40687, + 40701, + 40800, + 40907, + 41079, + 41180, + 41183, + 36812, + 37576, + 38468, + 38637, + // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 + 41636, + 41637, + 41639, + 41638, + 41676, + 41678 + ] + }, + "cnbig5": "big5hkscs", + "csbig5": "big5hkscs", + "xxbig5": "big5hkscs" + }; + } +}); + +// ../../../node_modules/iconv-lite/encodings/index.js +var require_encodings = __commonJS({ + "../../../node_modules/iconv-lite/encodings/index.js"(exports, module2) { + "use strict"; + var modules = [ + require_internal(), + require_utf32(), + require_utf16(), + require_utf7(), + require_sbcs_codec(), + require_sbcs_data(), + require_sbcs_data_generated(), + require_dbcs_codec(), + require_dbcs_data() + ]; + for (i = 0; i < modules.length; i++) { + module2 = modules[i]; + for (enc in module2) + if (Object.prototype.hasOwnProperty.call(module2, enc)) + exports[enc] = module2[enc]; + } + var module2; + var enc; + var i; + } +}); + +// ../../../node_modules/iconv-lite/lib/streams.js +var require_streams = __commonJS({ + "../../../node_modules/iconv-lite/lib/streams.js"(exports, module2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + module2.exports = function(stream_module) { + var Transform = stream_module.Transform; + function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; + Transform.call(this, options); + } + IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteEncoderStream } + }); + IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk != "string") + return done(new Error("Iconv encoding stream needs strings as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) + this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) + this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on("error", cb); + this.on("data", function(chunk) { + chunks.push(chunk); + }); + this.on("end", function() { + cb(null, Buffer2.concat(chunks)); + }); + return this; + }; + function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = "utf8"; + Transform.call(this, options); + } + IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteDecoderStream } + }); + IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer2.isBuffer(chunk) && !(chunk instanceof Uint8Array)) + return done(new Error("Iconv decoding stream needs buffers as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) + this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) + this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ""; + this.on("error", cb); + this.on("data", function(chunk) { + res += chunk; + }); + this.on("end", function() { + cb(null, res); + }); + return this; + }; + return { + IconvLiteEncoderStream, + IconvLiteDecoderStream + }; + }; + } +}); + +// ../../../node_modules/iconv-lite/lib/index.js +var require_lib3 = __commonJS({ + "../../../node_modules/iconv-lite/lib/index.js"(exports, module2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + var bomHandling = require_bom_handling(); + var iconv = module2.exports; + iconv.encodings = null; + iconv.defaultCharUnicode = "\uFFFD"; + iconv.defaultCharSingleByte = "?"; + iconv.encode = function encode(str, encoding, options) { + str = "" + (str || ""); + var encoder = iconv.getEncoder(encoding, options); + var res = encoder.write(str); + var trail = encoder.end(); + return trail && trail.length > 0 ? Buffer2.concat([res, trail]) : res; + }; + iconv.decode = function decode(buf, encoding, options) { + if (typeof buf === "string") { + if (!iconv.skipDecodeWarning) { + console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); + iconv.skipDecodeWarning = true; + } + buf = Buffer2.from("" + (buf || ""), "binary"); + } + var decoder = iconv.getDecoder(encoding, options); + var res = decoder.write(buf); + var trail = decoder.end(); + return trail ? res + trail : res; + }; + iconv.encodingExists = function encodingExists(enc) { + try { + iconv.getCodec(enc); + return true; + } catch (e) { + return false; + } + }; + iconv.toEncoding = iconv.encode; + iconv.fromEncoding = iconv.decode; + iconv._codecDataCache = {}; + iconv.getCodec = function getCodec(encoding) { + if (!iconv.encodings) + iconv.encodings = require_encodings(); + var enc = iconv._canonicalizeEncoding(encoding); + var codecOptions = {}; + while (true) { + var codec = iconv._codecDataCache[enc]; + if (codec) + return codec; + var codecDef = iconv.encodings[enc]; + switch (typeof codecDef) { + case "string": + enc = codecDef; + break; + case "object": + for (var key in codecDef) + codecOptions[key] = codecDef[key]; + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + enc = codecDef.type; + break; + case "function": + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + codec = new codecDef(codecOptions, iconv); + iconv._codecDataCache[codecOptions.encodingName] = codec; + return codec; + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')"); + } + } + }; + iconv._canonicalizeEncoding = function(encoding) { + return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); + }; + iconv.getEncoder = function getEncoder(encoding, options) { + var codec = iconv.getCodec(encoding), encoder = new codec.encoder(options, codec); + if (codec.bomAware && options && options.addBOM) + encoder = new bomHandling.PrependBOM(encoder, options); + return encoder; + }; + iconv.getDecoder = function getDecoder(encoding, options) { + var codec = iconv.getCodec(encoding), decoder = new codec.decoder(options, codec); + if (codec.bomAware && !(options && options.stripBOM === false)) + decoder = new bomHandling.StripBOM(decoder, options); + return decoder; + }; + iconv.enableStreamingAPI = function enableStreamingAPI(stream_module2) { + if (iconv.supportsStreams) + return; + var streams = require_streams()(stream_module2); + iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; + iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; + iconv.encodeStream = function encodeStream(encoding, options) { + return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); + }; + iconv.decodeStream = function decodeStream(encoding, options) { + return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); + }; + iconv.supportsStreams = true; + }; + var stream_module; + try { + stream_module = require("stream"); + } catch (e) { + } + if (stream_module && stream_module.Transform) { + iconv.enableStreamingAPI(stream_module); + } else { + iconv.encodeStream = iconv.decodeStream = function() { + throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); + }; + } + if (false) { + console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); + } + } +}); + +// ../../../node_modules/encoding/lib/encoding.js +var require_encoding = __commonJS({ + "../../../node_modules/encoding/lib/encoding.js"(exports, module2) { + "use strict"; + var iconvLite = require_lib3(); + module2.exports.convert = convert; + function convert(str, to, from) { + from = checkEncoding(from || "UTF-8"); + to = checkEncoding(to || "UTF-8"); + str = str || ""; + var result; + if (from !== "UTF-8" && typeof str === "string") { + str = Buffer.from(str, "binary"); + } + if (from === to) { + if (typeof str === "string") { + result = Buffer.from(str); + } else { + result = str; + } + } else { + try { + result = convertIconvLite(str, to, from); + } catch (E) { + console.error(E); + result = str; + } + } + if (typeof result === "string") { + result = Buffer.from(result, "utf-8"); + } + return result; + } + function convertIconvLite(str, to, from) { + if (to === "UTF-8") { + return iconvLite.decode(str, from); + } else if (from === "UTF-8") { + return iconvLite.encode(str, to); + } else { + return iconvLite.encode(iconvLite.decode(str, from), to); + } + } + function checkEncoding(name) { + return (name || "").toString().trim().replace(/^latin[\-_]?(\d+)$/i, "ISO-8859-$1").replace(/^win(?:dows)?[\-_]?(\d+)$/i, "WINDOWS-$1").replace(/^utf[\-_]?(\d+)$/i, "UTF-$1").replace(/^ks_c_5601\-1987$/i, "CP949").replace(/^us[\-_]?ascii$/i, "ASCII").toUpperCase(); + } + } +}); + +// ../../../node_modules/node-fetch/lib/index.js +var require_lib4 = __commonJS({ + "../../../node_modules/node-fetch/lib/index.js"(exports, module2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function _interopDefault(ex) { + return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex; + } + var Stream = _interopDefault(require("stream")); + var http = _interopDefault(require("http")); + var Url = _interopDefault(require("url")); + var whatwgUrl = _interopDefault(require_public_api()); + var https2 = _interopDefault(require("https")); + var zlib = _interopDefault(require("zlib")); + var Readable = Stream.Readable; + var BUFFER = Symbol("buffer"); + var TYPE = Symbol("type"); + var Blob = class _Blob { + constructor() { + this[TYPE] = ""; + const blobParts = arguments[0]; + const options = arguments[1]; + const buffers = []; + let size = 0; + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof _Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === "string" ? element : String(element)); + } + size += buffer.length; + buffers.push(buffer); + } + } + this[BUFFER] = Buffer.concat(buffers); + let type = options && options.type !== void 0 && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function() { + }; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return "[object Blob]"; + } + slice() { + const size = this.size; + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === void 0) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === void 0) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new _Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } + }; + Object.defineProperties(Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } + }); + Object.defineProperty(Blob.prototype, Symbol.toStringTag, { + value: "Blob", + writable: false, + enumerable: false, + configurable: true + }); + function FetchError(message, type, systemError) { + Error.call(this, message); + this.message = message; + this.type = type; + if (systemError) { + this.code = this.errno = systemError.code; + } + Error.captureStackTrace(this, this.constructor); + } + FetchError.prototype = Object.create(Error.prototype); + FetchError.prototype.constructor = FetchError; + FetchError.prototype.name = "FetchError"; + var convert; + try { + convert = require_encoding().convert; + } catch (e) { + } + var INTERNALS = Symbol("Body internals"); + var PassThrough = Stream.PassThrough; + function Body(body) { + var _this = this; + var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref$size = _ref.size; + let size = _ref$size === void 0 ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === void 0 ? 0 : _ref$timeout; + if (body == null) { + body = null; + } else if (isURLSearchParams(body)) { + body = Buffer.from(body.toString()); + } else if (isBlob(body)) + ; + else if (Buffer.isBuffer(body)) + ; + else if (Object.prototype.toString.call(body) === "[object ArrayBuffer]") { + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) + ; + else { + body = Buffer.from(String(body)); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + if (body instanceof Stream) { + body.on("error", function(err) { + const error = err.name === "AbortError" ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, "system", err); + _this[INTERNALS].error = error; + }); + } + } + Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function(buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get("content-type") || ""; + return consumeBody.call(this).then(function(buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), + { + [BUFFER]: buf + } + ); + }); + }, + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + return consumeBody.call(this).then(function(buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, "invalid-json")); + } + }); + }, + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function(buffer) { + return buffer.toString(); + }); + }, + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + return consumeBody.call(this).then(function(buffer) { + return convertBody(buffer, _this3.headers); + }); + } + }; + Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } + }); + Body.mixIn = function(proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } + }; + function consumeBody() { + var _this4 = this; + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + this[INTERNALS].disturbed = true; + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + let body = this.body; + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + if (isBlob(body)) { + body = body.stream(); + } + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + let accum = []; + let accumBytes = 0; + let abort = false; + return new Body.Promise(function(resolve, reject) { + let resTimeout; + if (_this4.timeout) { + resTimeout = setTimeout(function() { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, "body-timeout")); + }, _this4.timeout); + } + body.on("error", function(err) { + if (err.name === "AbortError") { + abort = true; + reject(err); + } else { + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, "system", err)); + } + }); + body.on("data", function(chunk) { + if (abort || chunk === null) { + return; + } + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, "max-size")); + return; + } + accumBytes += chunk.length; + accum.push(chunk); + }); + body.on("end", function() { + if (abort) { + return; + } + clearTimeout(resTimeout); + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, "system", err)); + } + }); + }); + } + function convertBody(buffer, headers) { + if (typeof convert !== "function") { + throw new Error("The package `encoding` must be installed to use the textConverted() function"); + } + const ct = headers.get("content-type"); + let charset = "utf-8"; + let res, str; + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + str = buffer.slice(0, 1024).toString(); + if (!res && str) { + res = / 0 && arguments[0] !== void 0 ? arguments[0] : void 0; + this[MAP] = /* @__PURE__ */ Object.create(null); + if (init instanceof _Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } + return; + } + if (init == null) + ; + else if (typeof init === "object") { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== "function") { + throw new TypeError("Header pairs must be iterable"); + } + const pairs = []; + for (const pair of init) { + if (typeof pair !== "object" || typeof pair[Symbol.iterator] !== "function") { + throw new TypeError("Each header pair must be iterable"); + } + pairs.push(Array.from(pair)); + } + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError("Each header pair must be a name/value tuple"); + } + this.append(pair[0], pair[1]); + } + } else { + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError("Provided initializer must be an object"); + } + } + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === void 0) { + return null; + } + return this[MAP][key].join(", "); + } + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0; + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], value = _pairs$i[1]; + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== void 0 ? key : name] = [value]; + } + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== void 0) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== void 0; + } + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== void 0) { + delete this[MAP][key]; + } + } + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, "key"); + } + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, "value"); + } + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, "key+value"); + } + }; + Headers.prototype.entries = Headers.prototype[Symbol.iterator]; + Object.defineProperty(Headers.prototype, Symbol.toStringTag, { + value: "Headers", + writable: false, + enumerable: false, + configurable: true + }); + Object.defineProperties(Headers.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } + }); + function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "key+value"; + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === "key" ? function(k) { + return k.toLowerCase(); + } : kind === "value" ? function(k) { + return headers[MAP][k].join(", "); + } : function(k) { + return [k.toLowerCase(), headers[MAP][k].join(", ")]; + }); + } + var INTERNAL = Symbol("internal"); + function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; + } + var HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError("Value of `this` is not a HeadersIterator"); + } + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, kind = _INTERNAL.kind, index = _INTERNAL.index; + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: void 0, + done: true + }; + } + this[INTERNAL].index = index + 1; + return { + value: values[index], + done: false + }; + } + }, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: "HeadersIterator", + writable: false, + enumerable: false, + configurable: true + }); + function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + const hostHeaderKey = find(headers[MAP], "Host"); + if (hostHeaderKey !== void 0) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + return obj; + } + function createHeadersLenient(obj) { + const headers = new Headers(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val2 of obj[name]) { + if (invalidHeaderCharRegex.test(val2)) { + continue; + } + if (headers[MAP][name] === void 0) { + headers[MAP][name] = [val2]; + } else { + headers[MAP][name].push(val2); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; + } + var INTERNALS$1 = Symbol("Response internals"); + var STATUS_CODES = http.STATUS_CODES; + var Response2 = class _Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + Body.call(this, body, opts); + const status = opts.status || 200; + const headers = new Headers(opts.headers); + if (body != null && !headers.has("Content-Type")) { + const contentType = extractContentType(body); + if (contentType) { + headers.append("Content-Type", contentType); + } + } + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers, + counter: opts.counter + }; + } + get url() { + return this[INTERNALS$1].url || ""; + } + get status() { + return this[INTERNALS$1].status; + } + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } + get redirected() { + return this[INTERNALS$1].counter > 0; + } + get statusText() { + return this[INTERNALS$1].statusText; + } + get headers() { + return this[INTERNALS$1].headers; + } + /** + * Clone this response + * + * @return Response + */ + clone() { + return new _Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } + }; + Body.mixIn(Response2.prototype); + Object.defineProperties(Response2.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } + }); + Object.defineProperty(Response2.prototype, Symbol.toStringTag, { + value: "Response", + writable: false, + enumerable: false, + configurable: true + }); + var INTERNALS$2 = Symbol("Request internals"); + var URL3 = Url.URL || whatwgUrl.URL; + var parse_url = Url.parse; + var format_url = Url.format; + function parseURL(urlStr) { + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { + urlStr = new URL3(urlStr).toString(); + } + return parse_url(urlStr); + } + var streamDestructionSupported = "destroy" in Stream.Readable.prototype; + function isRequest(input) { + return typeof input === "object" && typeof input[INTERNALS$2] === "object"; + } + function isAbortSignal(signal) { + const proto = signal && typeof signal === "object" && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === "AbortSignal"); + } + var Request = class _Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + let parsedURL; + if (!isRequest(input)) { + if (input && input.href) { + parsedURL = parseURL(input.href); + } else { + parsedURL = parseURL(`${input}`); + } + input = {}; + } else { + parsedURL = parseURL(input.url); + } + let method = init.method || input.method || "GET"; + method = method.toUpperCase(); + if ((init.body != null || isRequest(input) && input.body !== null) && (method === "GET" || method === "HEAD")) { + throw new TypeError("Request with GET/HEAD method cannot have body"); + } + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + const headers = new Headers(init.headers || input.headers || {}); + if (inputBody != null && !headers.has("Content-Type")) { + const contentType = extractContentType(inputBody); + if (contentType) { + headers.append("Content-Type", contentType); + } + } + let signal = isRequest(input) ? input.signal : null; + if ("signal" in init) + signal = init.signal; + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError("Expected signal to be an instanceof AbortSignal"); + } + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || "follow", + headers, + parsedURL, + signal + }; + this.follow = init.follow !== void 0 ? init.follow : input.follow !== void 0 ? input.follow : 20; + this.compress = init.compress !== void 0 ? init.compress : input.compress !== void 0 ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } + get method() { + return this[INTERNALS$2].method; + } + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } + get headers() { + return this[INTERNALS$2].headers; + } + get redirect() { + return this[INTERNALS$2].redirect; + } + get signal() { + return this[INTERNALS$2].signal; + } + /** + * Clone this request + * + * @return Request + */ + clone() { + return new _Request(this); + } + }; + Body.mixIn(Request.prototype); + Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: "Request", + writable: false, + enumerable: false, + configurable: true + }); + Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true } + }); + function getNodeRequestOptions(request2) { + const parsedURL = request2[INTERNALS$2].parsedURL; + const headers = new Headers(request2[INTERNALS$2].headers); + if (!headers.has("Accept")) { + headers.set("Accept", "*/*"); + } + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError("Only absolute URLs are supported"); + } + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError("Only HTTP(S) protocols are supported"); + } + if (request2.signal && request2.body instanceof Stream.Readable && !streamDestructionSupported) { + throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8"); + } + let contentLengthValue = null; + if (request2.body == null && /^(POST|PUT)$/i.test(request2.method)) { + contentLengthValue = "0"; + } + if (request2.body != null) { + const totalBytes = getTotalBytes(request2); + if (typeof totalBytes === "number") { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set("Content-Length", contentLengthValue); + } + if (!headers.has("User-Agent")) { + headers.set("User-Agent", "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"); + } + if (request2.compress && !headers.has("Accept-Encoding")) { + headers.set("Accept-Encoding", "gzip,deflate"); + } + let agent = request2.agent; + if (typeof agent === "function") { + agent = agent(parsedURL); + } + if (!headers.has("Connection") && !agent) { + headers.set("Connection", "close"); + } + return Object.assign({}, parsedURL, { + method: request2.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); + } + function AbortError(message) { + Error.call(this, message); + this.type = "aborted"; + this.message = message; + Error.captureStackTrace(this, this.constructor); + } + AbortError.prototype = Object.create(Error.prototype); + AbortError.prototype.constructor = AbortError; + AbortError.prototype.name = "AbortError"; + var URL$1 = Url.URL || whatwgUrl.URL; + var PassThrough$1 = Stream.PassThrough; + var isDomainOrSubdomain = function isDomainOrSubdomain2(destination, original) { + const orig = new URL$1(original).hostname; + const dest = new URL$1(destination).hostname; + return orig === dest || orig[orig.length - dest.length - 1] === "." && orig.endsWith(dest); + }; + var isSameProtocol = function isSameProtocol2(destination, original) { + const orig = new URL$1(original).protocol; + const dest = new URL$1(destination).protocol; + return orig === dest; + }; + function fetch2(url2, opts) { + if (!fetch2.Promise) { + throw new Error("native promise missing, set fetch.Promise to your favorite alternative"); + } + Body.Promise = fetch2.Promise; + return new fetch2.Promise(function(resolve, reject) { + const request2 = new Request(url2, opts); + const options = getNodeRequestOptions(request2); + const send = (options.protocol === "https:" ? https2 : http).request; + const signal = request2.signal; + let response = null; + const abort = function abort2() { + let error = new AbortError("The user aborted a request."); + reject(error); + if (request2.body && request2.body instanceof Stream.Readable) { + destroyStream(request2.body, error); + } + if (!response || !response.body) + return; + response.body.emit("error", error); + }; + if (signal && signal.aborted) { + abort(); + return; + } + const abortAndFinalize = function abortAndFinalize2() { + abort(); + finalize(); + }; + const req = send(options); + let reqTimeout; + if (signal) { + signal.addEventListener("abort", abortAndFinalize); + } + function finalize() { + req.abort(); + if (signal) + signal.removeEventListener("abort", abortAndFinalize); + clearTimeout(reqTimeout); + } + if (request2.timeout) { + req.once("socket", function(socket) { + reqTimeout = setTimeout(function() { + reject(new FetchError(`network timeout at: ${request2.url}`, "request-timeout")); + finalize(); + }, request2.timeout); + }); + } + req.on("error", function(err) { + reject(new FetchError(`request to ${request2.url} failed, reason: ${err.message}`, "system", err)); + if (response && response.body) { + destroyStream(response.body, err); + } + finalize(); + }); + fixResponseChunkedTransferBadEnding(req, function(err) { + if (signal && signal.aborted) { + return; + } + if (response && response.body) { + destroyStream(response.body, err); + } + }); + if (parseInt(process.version.substring(1)) < 14) { + req.on("socket", function(s) { + s.addListener("close", function(hadError) { + const hasDataListener = s.listenerCount("data") > 0; + if (response && hasDataListener && !hadError && !(signal && signal.aborted)) { + const err = new Error("Premature close"); + err.code = "ERR_STREAM_PREMATURE_CLOSE"; + response.body.emit("error", err); + } + }); + }); + } + req.on("response", function(res) { + clearTimeout(reqTimeout); + const headers = createHeadersLenient(res.headers); + if (fetch2.isRedirect(res.statusCode)) { + const location = headers.get("Location"); + let locationURL = null; + try { + locationURL = location === null ? null : new URL$1(location, request2.url).toString(); + } catch (err) { + if (request2.redirect !== "manual") { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, "invalid-redirect")); + finalize(); + return; + } + } + switch (request2.redirect) { + case "error": + reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request2.url}`, "no-redirect")); + finalize(); + return; + case "manual": + if (locationURL !== null) { + try { + headers.set("Location", locationURL); + } catch (err) { + reject(err); + } + } + break; + case "follow": + if (locationURL === null) { + break; + } + if (request2.counter >= request2.follow) { + reject(new FetchError(`maximum redirect reached at: ${request2.url}`, "max-redirect")); + finalize(); + return; + } + const requestOpts = { + headers: new Headers(request2.headers), + follow: request2.follow, + counter: request2.counter + 1, + agent: request2.agent, + compress: request2.compress, + method: request2.method, + body: request2.body, + signal: request2.signal, + timeout: request2.timeout, + size: request2.size + }; + if (!isDomainOrSubdomain(request2.url, locationURL) || !isSameProtocol(request2.url, locationURL)) { + for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) { + requestOpts.headers.delete(name); + } + } + if (res.statusCode !== 303 && request2.body && getTotalBytes(request2) === null) { + reject(new FetchError("Cannot follow redirect with body being a readable stream", "unsupported-redirect")); + finalize(); + return; + } + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request2.method === "POST") { + requestOpts.method = "GET"; + requestOpts.body = void 0; + requestOpts.headers.delete("content-length"); + } + resolve(fetch2(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + res.once("end", function() { + if (signal) + signal.removeEventListener("abort", abortAndFinalize); + }); + let body = res.pipe(new PassThrough$1()); + const response_options = { + url: request2.url, + status: res.statusCode, + statusText: res.statusMessage, + headers, + size: request2.size, + timeout: request2.timeout, + counter: request2.counter + }; + const codings = headers.get("Content-Encoding"); + if (!request2.compress || request2.method === "HEAD" || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response2(body, response_options); + resolve(response); + return; + } + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + if (codings == "gzip" || codings == "x-gzip") { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response2(body, response_options); + resolve(response); + return; + } + if (codings == "deflate" || codings == "x-deflate") { + const raw = res.pipe(new PassThrough$1()); + raw.once("data", function(chunk) { + if ((chunk[0] & 15) === 8) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response2(body, response_options); + resolve(response); + }); + raw.on("end", function() { + if (!response) { + response = new Response2(body, response_options); + resolve(response); + } + }); + return; + } + if (codings == "br" && typeof zlib.createBrotliDecompress === "function") { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response2(body, response_options); + resolve(response); + return; + } + response = new Response2(body, response_options); + resolve(response); + }); + writeToStream(req, request2); + }); + } + function fixResponseChunkedTransferBadEnding(request2, errorCallback) { + let socket; + request2.on("socket", function(s) { + socket = s; + }); + request2.on("response", function(response) { + const headers = response.headers; + if (headers["transfer-encoding"] === "chunked" && !headers["content-length"]) { + response.once("close", function(hadError) { + const hasDataListener = socket && socket.listenerCount("data") > 0; + if (hasDataListener && !hadError) { + const err = new Error("Premature close"); + err.code = "ERR_STREAM_PREMATURE_CLOSE"; + errorCallback(err); + } + }); + } + }); + } + function destroyStream(stream, err) { + if (stream.destroy) { + stream.destroy(err); + } else { + stream.emit("error", err); + stream.end(); + } + } + fetch2.isRedirect = function(code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; + }; + fetch2.Promise = global.Promise; + module2.exports = exports = fetch2; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = exports; + exports.Headers = Headers; + exports.Request = Request; + exports.Response = Response2; + exports.FetchError = FetchError; + } +}); + +// ../sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../sdk-v2-to-v3-adapter/lib/index.js +var require_lib5 = __commonJS({ + "../sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// lib/assertions/providers/lambda-handler/index.ts +var lambda_handler_exports = {}; +__export(lambda_handler_exports, { + handler: () => handler, + isComplete: () => isComplete, + onTimeout: () => onTimeout +}); +module.exports = __toCommonJS(lambda_handler_exports); + +// lib/assertions/providers/lambda-handler/assertion.ts +var import_helpers_internal = __toESM(require_helpers_internal()); + +// lib/assertions/providers/lambda-handler/base.ts +var https = __toESM(require("https")); +var url = __toESM(require("url")); +var import_client_sfn = __toESM(require_dist_cjs53()); +var CustomResourceHandler = class { + constructor(event, context) { + this.event = event; + this.context = context; + this.timeout = setTimeout(async () => { + await this.respond({ + status: "FAILED", + reason: "Lambda Function Timeout", + data: this.context.logStreamName + }); + this.timedOut = true; + }, context.getRemainingTimeInMillis() - 1200); + this.event = event; + this.physicalResourceId = extractPhysicalResourceId(event); + } + physicalResourceId; + timeout; + timedOut = false; + /** + * Handles executing the custom resource event. If `stateMachineArn` is present + * in the props then trigger the waiter statemachine + */ + async handle() { + try { + if ("stateMachineArn" in this.event.ResourceProperties) { + const req = { + stateMachineArn: this.event.ResourceProperties.stateMachineArn, + name: this.event.RequestId, + input: JSON.stringify(this.event) + }; + await this.startExecution(req); + return; + } else { + const response = await this.processEvent(this.event.ResourceProperties); + return response; + } + } catch (e) { + console.log(e); + throw e; + } finally { + clearTimeout(this.timeout); + } + } + /** + * Handle async requests from the waiter state machine + */ + async handleIsComplete() { + try { + const result = await this.processEvent(this.event.ResourceProperties); + return result; + } catch (e) { + console.log(e); + return; + } finally { + clearTimeout(this.timeout); + } + } + /** + * Start a step function state machine which will wait for the request + * to be successful. + */ + async startExecution(req) { + try { + const sfn = new import_client_sfn.SFN({}); + await sfn.startExecution(req); + } finally { + clearTimeout(this.timeout); + } + } + respond(response) { + if (this.timedOut) { + return; + } + const cfResponse = { + Status: response.status, + Reason: response.reason, + PhysicalResourceId: this.physicalResourceId, + StackId: this.event.StackId, + RequestId: this.event.RequestId, + LogicalResourceId: this.event.LogicalResourceId, + NoEcho: false, + Data: response.data + }; + const responseBody = JSON.stringify(cfResponse); + console.log("Responding to CloudFormation", responseBody); + const parsedUrl = url.parse(this.event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request2 = https.request(requestOptions, resolve); + request2.on("error", reject); + request2.write(responseBody); + request2.end(); + } catch (e) { + reject(e); + } finally { + clearTimeout(this.timeout); + } + }); + } +}; +function extractPhysicalResourceId(event) { + switch (event.RequestType) { + case "Create": + return event.LogicalResourceId; + case "Update": + case "Delete": + return event.PhysicalResourceId; + } +} + +// lib/assertions/providers/lambda-handler/assertion.ts +var AssertionHandler = class extends CustomResourceHandler { + async processEvent(request2) { + let actual = decodeCall(request2.actual); + const expected = decodeCall(request2.expected); + let result; + const matcher = new MatchCreator(expected).getMatcher(); + console.log(`Testing equality between ${JSON.stringify(request2.actual)} and ${JSON.stringify(request2.expected)}`); + const matchResult = matcher.test(actual); + matchResult.finished(); + if (matchResult.hasFailed()) { + result = { + failed: true, + assertion: JSON.stringify({ + status: "fail", + message: matchResult.renderMismatch() + }) + }; + if (request2.failDeployment) { + throw new Error(result.assertion); + } + } else { + result = { + assertion: JSON.stringify({ + status: "success" + }) + }; + } + return result; + } +}; +var MatchCreator = class { + parsedObj; + constructor(obj) { + this.parsedObj = { + matcher: obj + }; + } + /** + * Return a Matcher that can be tested against the actual results. + * This will convert the encoded matchers into their corresponding + * assertions matcher. + * + * For example: + * + * ExpectedResult.objectLike({ + * Messages: [{ + * Body: Match.objectLike({ + * Elements: Match.arrayWith([{ Asdf: 3 }]), + * Payload: Match.serializedJson({ key: 'value' }), + * }), + * }], + * }); + * + * Will be encoded as: + * { + * $ObjectLike: { + * Messages: [{ + * Body: { + * $ObjectLike: { + * Elements: { + * $ArrayWith: [{ Asdf: 3 }], + * }, + * Payload: { + * $SerializedJson: { key: 'value' } + * } + * }, + * }, + * }], + * }, + * } + * + * Which can then be parsed by this function. For each key (recursively) + * the parser will check if the value has one of the encoded matchers as a key + * and if so, it will set the value as the Matcher. So, + * + * { + * Body: { + * $ObjectLike: { + * Elements: { + * $ArrayWith: [{ Asdf: 3 }], + * }, + * Payload: { + * $SerializedJson: { key: 'value' } + * } + * }, + * }, + * } + * + * Will be converted to + * { + * Body: Match.objectLike({ + * Elements: Match.arrayWith([{ Asdf: 3 }]), + * Payload: Match.serializedJson({ key: 'value' }), + * }), + * } + */ + getMatcher() { + try { + const final = JSON.parse(JSON.stringify(this.parsedObj), function(_k, v) { + const nested = Object.keys(v)[0]; + switch (nested) { + case "$ArrayWith": + return import_helpers_internal.Match.arrayWith(v[nested]); + case "$ObjectLike": + return import_helpers_internal.Match.objectLike(v[nested]); + case "$StringLike": + return import_helpers_internal.Match.stringLikeRegexp(v[nested]); + case "$SerializedJson": + return import_helpers_internal.Match.serializedJson(v[nested]); + default: + return v; + } + }); + if (import_helpers_internal.Matcher.isMatcher(final.matcher)) { + return final.matcher; + } + return import_helpers_internal.Match.exact(final.matcher); + } catch { + return import_helpers_internal.Match.exact(this.parsedObj.matcher); + } + } +}; +function decodeCall(call) { + if (!call) { + return void 0; + } + try { + const parsed = JSON.parse(call); + return parsed; + } catch { + return call; + } +} + +// lib/assertions/providers/lambda-handler/http.ts +var import_node_fetch = __toESM(require_lib4()); +var HttpHandler = class extends CustomResourceHandler { + async processEvent(request2) { + console.log("request", request2); + const response = await (0, import_node_fetch.default)(request2.parameters.url, request2.parameters.fetchOptions); + const result = { + ok: response.ok, + status: response.status, + statusText: response.statusText, + headers: response.headers.raw() + }; + try { + const jsonResponse = await response.json(); + result.body = jsonResponse; + } catch (e) { + result.body = {}; + } + return { + apiCallResponse: result + }; + } +}; + +// lib/assertions/providers/lambda-handler/sdk.ts +var import_sdk_v2_to_v3_adapter = __toESM(require_lib5()); + +// lib/assertions/providers/lambda-handler/utils.ts +function parseJsonPayload(payload) { + try { + const buffer = Buffer.from(payload); + return JSON.parse(new TextDecoder().decode(buffer)); + } catch { + return payload; + } +} +function decodeParameters(obj) { + return Object.fromEntries(Object.entries(obj).map(([key, value]) => { + try { + return [key, JSON.parse(value)]; + } catch { + return [key, value]; + } + })); +} + +// lib/assertions/providers/lambda-handler/sdk.ts +function flatten(object) { + return Object.assign( + {}, + ...function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + let childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; + if (typeof childKey === "string") { + childKey = isJsonString(childKey); + } + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + }(object) + ); +} +function getServicePackage(service) { + const packageName = (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(service); + try { + const pkg = require(packageName); + return { + service, + pkg, + packageName + }; + } catch (e) { + throw Error(`Service ${service} client package with name '${packageName}' does not exist.`); + } +} +function getServiceClient(sdkPkg) { + try { + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(sdkPkg.pkg); + return new ServiceClient({}); + } catch (e) { + console.error(e); + throw Error(`No client constructor found within package: ${sdkPkg.packageName}`); + } +} +function getSdkCommand(sdkPkg, api) { + const commandName = api.endsWith("Command") ? api : `${api}Command`; + const command = Object.entries(sdkPkg.pkg).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + if (!command) { + throw new Error(`Unable to find command named: ${commandName} for api: ${api} in service package`); + } + return command; +} +var AwsApiCallHandler = class extends CustomResourceHandler { + async processEvent(request2) { + const sdkPkg = getServicePackage(request2.service); + const client = getServiceClient(sdkPkg); + const Command = getSdkCommand(sdkPkg, request2.api); + const commandInput = (request2.parameters && decodeParameters(request2.parameters)) ?? {}; + console.log(`SDK request to ${sdkPkg.service}.${request2.api} with parameters ${JSON.stringify(commandInput)}`); + const response = await client.send(new Command(commandInput)); + if (response.Payload) { + response.Payload = parseJsonPayload(response.Payload); + } + console.log(`SDK response received ${JSON.stringify(response)}`); + delete response.$metadata; + const respond = { + apiCallResponse: response + }; + const flatData = { + ...flatten(respond) + }; + let resp = respond; + if (request2.outputPaths) { + resp = filterKeys(flatData, request2.outputPaths); + } else if (request2.flattenResponse === "true") { + resp = flatData; + } + console.log(`Returning result ${JSON.stringify(resp)}`); + return resp; + } +}; +function filterKeys(object, searchStrings) { + return Object.entries(object).reduce((filteredObject, [key, value]) => { + for (const searchString of searchStrings) { + if (key.startsWith(`apiCallResponse.${searchString}`)) { + filteredObject[key] = value; + } + } + return filteredObject; + }, {}); +} +function isJsonString(value) { + try { + return JSON.parse(value); + } catch { + return value; + } +} + +// lib/assertions/providers/lambda-handler/types.ts +var ASSERT_RESOURCE_TYPE = "Custom::DeployAssert@AssertEquals"; +var SDK_RESOURCE_TYPE_PREFIX = "Custom::DeployAssert@SdkCall"; +var HTTP_RESOURCE_TYPE = "Custom::DeployAssert@HttpCall"; + +// lib/assertions/providers/lambda-handler/index.ts +async function handler(event, context) { + console.log(`Event: ${JSON.stringify({ ...event, ResponseURL: "..." })}`); + const provider = createResourceHandler(event, context); + try { + if (event.RequestType === "Delete") { + await provider.respond({ + status: "SUCCESS", + reason: "OK" + }); + return; + } + const result = await provider.handle(); + if ("stateMachineArn" in event.ResourceProperties) { + console.info('Found "stateMachineArn", waiter statemachine started'); + return; + } else if ("expected" in event.ResourceProperties) { + console.info('Found "expected", testing assertions'); + const actualPath = event.ResourceProperties.actualPath; + const actual = actualPath ? result[`apiCallResponse.${actualPath}`] : result.apiCallResponse; + const assertion = new AssertionHandler({ + ...event, + ResourceProperties: { + ServiceToken: event.ServiceToken, + actual, + expected: event.ResourceProperties.expected + } + }, context); + try { + const assertionResult = await assertion.handle(); + await provider.respond({ + status: "SUCCESS", + reason: "OK", + // return both the result of the API call _and_ the assertion results + data: { + ...assertionResult, + ...result + } + }); + return; + } catch (e) { + await provider.respond({ + status: "FAILED", + reason: e.message ?? "Internal Error" + }); + return; + } + } + await provider.respond({ + status: "SUCCESS", + reason: "OK", + data: result + }); + } catch (e) { + await provider.respond({ + status: "FAILED", + reason: e.message ?? "Internal Error" + }); + return; + } + return; +} +async function onTimeout(timeoutEvent) { + const isCompleteRequest = JSON.parse(JSON.parse(timeoutEvent.Cause).errorMessage); + const provider = createResourceHandler(isCompleteRequest, standardContext); + await provider.respond({ + status: "FAILED", + reason: "Operation timed out: " + JSON.stringify(isCompleteRequest) + }); +} +async function isComplete(event, context) { + console.log(`Event: ${JSON.stringify({ ...event, ResponseURL: "..." })}`); + const provider = createResourceHandler(event, context); + try { + const result = await provider.handleIsComplete(); + const actualPath = event.ResourceProperties.actualPath; + if (result) { + const actual = actualPath ? result[`apiCallResponse.${actualPath}`] : result.apiCallResponse; + if ("expected" in event.ResourceProperties) { + const assertion = new AssertionHandler({ + ...event, + ResourceProperties: { + ServiceToken: event.ServiceToken, + actual, + expected: event.ResourceProperties.expected + } + }, context); + const assertionResult = await assertion.handleIsComplete(); + if (!assertionResult?.failed) { + await provider.respond({ + status: "SUCCESS", + reason: "OK", + data: { + ...assertionResult, + ...result + } + }); + return; + } else { + console.log(`Assertion Failed: ${JSON.stringify(assertionResult)}`); + throw new Error(JSON.stringify(event)); + } + } + await provider.respond({ + status: "SUCCESS", + reason: "OK", + data: result + }); + } else { + console.log("No result"); + throw new Error(JSON.stringify(event)); + } + return; + } catch (e) { + console.log(e); + throw new Error(JSON.stringify(event)); + } +} +function createResourceHandler(event, context) { + if (event.ResourceType.startsWith(SDK_RESOURCE_TYPE_PREFIX)) { + return new AwsApiCallHandler(event, context); + } else if (event.ResourceType.startsWith(ASSERT_RESOURCE_TYPE)) { + return new AssertionHandler(event, context); + } else if (event.ResourceType.startsWith(HTTP_RESOURCE_TYPE)) { + return new HttpHandler(event, context); + } else { + throw new Error(`Unsupported resource type "${event.ResourceType}`); + } +} +var standardContext = { + getRemainingTimeInMillis: () => 9e4 +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + handler, + isComplete, + onTimeout +}); +/*! Bundled license information: + +tslib/tslib.es6.js: + (*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** *) +*/ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk-integ-lambda-nodejs-latest.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk-integ-lambda-nodejs-latest.assets.json new file mode 100644 index 0000000000000..b9f592ae6a549 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk-integ-lambda-nodejs-latest.assets.json @@ -0,0 +1,32 @@ +{ + "version": "33.0.0", + "files": { + "50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f": { + "source": { + "path": "asset.50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "8e2d31e432456421d3ff63f3067b9f0ee19a61d38789095e335491f760bcd163": { + "source": { + "path": "cdk-integ-lambda-nodejs-latest.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "8e2d31e432456421d3ff63f3067b9f0ee19a61d38789095e335491f760bcd163.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk-integ-lambda-nodejs-latest.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk-integ-lambda-nodejs-latest.template.json new file mode 100644 index 0000000000000..7841a0a5a4185 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk-integ-lambda-nodejs-latest.template.json @@ -0,0 +1,106 @@ +{ + "Resources": { + "latestServiceRole8A40241A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "latestFE0D80B6": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f.zip" + }, + "Environment": { + "Variables": { + "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1" + } + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "latestServiceRole8A40241A", + "Arn" + ] + }, + "Runtime": "nodejs16.x" + }, + "DependsOn": [ + "latestServiceRole8A40241A" + ] + } + }, + "Outputs": { + "ExportsOutputReflatestFE0D80B6C9B17E6B": { + "Value": { + "Ref": "latestFE0D80B6" + }, + "Export": { + "Name": "cdk-integ-lambda-nodejs-latest:ExportsOutputReflatestFE0D80B6C9B17E6B" + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk.out new file mode 100644 index 0000000000000..560dae10d018f --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"33.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/integ.json new file mode 100644 index 0000000000000..cfa0a14884e47 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "33.0.0", + "testCases": { + "LambdaNodeJsLatestInteg/DefaultTest": { + "stacks": [ + "cdk-integ-lambda-nodejs-latest" + ], + "diffAssets": true, + "assertionStack": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert", + "assertionStackName": "LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/manifest.json new file mode 100644 index 0000000000000..a52c81406bf4e --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/manifest.json @@ -0,0 +1,160 @@ +{ + "version": "33.0.0", + "artifacts": { + "cdk-integ-lambda-nodejs-latest.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "cdk-integ-lambda-nodejs-latest.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "cdk-integ-lambda-nodejs-latest": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "cdk-integ-lambda-nodejs-latest.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/8e2d31e432456421d3ff63f3067b9f0ee19a61d38789095e335491f760bcd163.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "cdk-integ-lambda-nodejs-latest.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "cdk-integ-lambda-nodejs-latest.assets" + ], + "metadata": { + "/cdk-integ-lambda-nodejs-latest": [ + { + "type": "aws:cdk:warning", + "data": "If you are relying on AWS SDK v2 to be present in the Lambda environment already, please explicitly configure a NodeJS runtime of Node 16 or lower." + } + ], + "/cdk-integ-lambda-nodejs-latest/latest/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "latestServiceRole8A40241A" + } + ], + "/cdk-integ-lambda-nodejs-latest/latest/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "latestFE0D80B6" + } + ], + "/cdk-integ-lambda-nodejs-latest/Exports/Output{\"Ref\":\"latestFE0D80B6\"}": [ + { + "type": "aws:cdk:logicalId", + "data": "ExportsOutputReflatestFE0D80B6C9B17E6B" + } + ], + "/cdk-integ-lambda-nodejs-latest/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/cdk-integ-lambda-nodejs-latest/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "cdk-integ-lambda-nodejs-latest" + }, + "LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/c62c808ec232ccd52772ad7eaab2455102eb17c02f23a48068cc3a0a4f8fe4f7.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "cdk-integ-lambda-nodejs-latest", + "LambdaNodeJsLatestIntegDefaultTestDeployAssertD40B5C28.assets" + ], + "metadata": { + "/LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2/Default/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "LambdaInvoked00748c118c58ddbf17c194faa46eda2" + } + ], + "/LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2/Invoke": [ + { + "type": "aws:cdk:logicalId", + "data": "LambdaInvoked00748c118c58ddbf17c194faa46eda2InvokeC0A33EEB" + } + ], + "/LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2/AssertionResults": [ + { + "type": "aws:cdk:logicalId", + "data": "AssertionResultsLambdaInvoked00748c118c58ddbf17c194faa46eda2" + } + ], + "/LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Role": [ + { + "type": "aws:cdk:logicalId", + "data": "SingletonFunction1488541a7b23466481b69b4408076b81Role37ABCE73" + } + ], + "/LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Handler": [ + { + "type": "aws:cdk:logicalId", + "data": "SingletonFunction1488541a7b23466481b69b4408076b81HandlerCD40AE9F" + } + ], + "/LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/tree.json new file mode 100644 index 0000000000000..a48cb80e5ee0d --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.js.snapshot/tree.json @@ -0,0 +1,340 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "cdk-integ-lambda-nodejs-latest": { + "id": "cdk-integ-lambda-nodejs-latest", + "path": "cdk-integ-lambda-nodejs-latest", + "children": { + "latest": { + "id": "latest", + "path": "cdk-integ-lambda-nodejs-latest/latest", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "cdk-integ-lambda-nodejs-latest/latest/ServiceRole", + "children": { + "ImportServiceRole": { + "id": "ImportServiceRole", + "path": "cdk-integ-lambda-nodejs-latest/latest/ServiceRole/ImportServiceRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "cdk-integ-lambda-nodejs-latest/latest/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "cdk-integ-lambda-nodejs-latest/latest/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "cdk-integ-lambda-nodejs-latest/latest/Code/Stage", + "constructInfo": { + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "cdk-integ-lambda-nodejs-latest/latest/Code/AssetBucket", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3.BucketBase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3_assets.Asset", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "cdk-integ-lambda-nodejs-latest/latest/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "s3Key": "50a8879346510e33e69a511e29d588e7b2d2b477b6989a4db677027bb8605b9f.zip" + }, + "environment": { + "variables": { + "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1" + } + }, + "handler": "index.handler", + "role": { + "Fn::GetAtt": [ + "latestServiceRole8A40241A", + "Arn" + ] + }, + "runtime": "nodejs16.x" + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda_nodejs.NodejsFunction", + "version": "0.0.0" + } + }, + "Exports": { + "id": "Exports", + "path": "cdk-integ-lambda-nodejs-latest/Exports", + "children": { + "Output{\"Ref\":\"latestFE0D80B6\"}": { + "id": "Output{\"Ref\":\"latestFE0D80B6\"}", + "path": "cdk-integ-lambda-nodejs-latest/Exports/Output{\"Ref\":\"latestFE0D80B6\"}", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnOutput", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "cdk-integ-lambda-nodejs-latest/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "cdk-integ-lambda-nodejs-latest/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + }, + "LambdaNodeJsLatestInteg": { + "id": "LambdaNodeJsLatestInteg", + "path": "LambdaNodeJsLatestInteg", + "children": { + "DefaultTest": { + "id": "DefaultTest", + "path": "LambdaNodeJsLatestInteg/DefaultTest", + "children": { + "Default": { + "id": "Default", + "path": "LambdaNodeJsLatestInteg/DefaultTest/Default", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "DeployAssert": { + "id": "DeployAssert", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert", + "children": { + "LambdaInvoked00748c118c58ddbf17c194faa46eda2": { + "id": "LambdaInvoked00748c118c58ddbf17c194faa46eda2", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2", + "children": { + "SdkProvider": { + "id": "SdkProvider", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2/SdkProvider", + "children": { + "AssertionsProvider": { + "id": "AssertionsProvider", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2/SdkProvider/AssertionsProvider", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.AssertionsProvider", + "version": "0.0.0" + } + }, + "Default": { + "id": "Default", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2/Default", + "children": { + "Default": { + "id": "Default", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2/Default/Default", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.CustomResource", + "version": "0.0.0" + } + }, + "Invoke": { + "id": "Invoke", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2/Invoke", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" + } + }, + "AssertionResults": { + "id": "AssertionResults", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/LambdaInvoked00748c118c58ddbf17c194faa46eda2/AssertionResults", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnOutput", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.LambdaInvokeFunction", + "version": "0.0.0" + } + }, + "SingletonFunction1488541a7b23466481b69b4408076b81": { + "id": "SingletonFunction1488541a7b23466481b69b4408076b81", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81", + "children": { + "Staging": { + "id": "Staging", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Staging", + "constructInfo": { + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" + } + }, + "Role": { + "id": "Role", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Role", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" + } + }, + "Handler": { + "id": "Handler", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Handler", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "LambdaNodeJsLatestInteg/DefaultTest/DeployAssert/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTestCase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTest", + "version": "0.0.0" + } + }, + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.ts new file mode 100644 index 0000000000000..5f572d74f6967 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.latest.ts @@ -0,0 +1,42 @@ +import * as path from 'path'; +import { App, Stack, StackProps } from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +import * as lambda from 'aws-cdk-lib/aws-lambda-nodejs'; +import { ExpectedResult, IntegTest } from '@aws-cdk/integ-tests-alpha'; +import { LAMBDA_NODEJS_USE_LATEST_RUNTIME } from 'aws-cdk-lib/cx-api'; +import { IFunction } from 'aws-cdk-lib/aws-lambda'; + +class TestStack extends Stack { + public lambdaFunction: IFunction; + + constructor(scope: Construct, id: string, props?: StackProps) { + super(scope, id, props); + this.node.setContext(LAMBDA_NODEJS_USE_LATEST_RUNTIME, false); + + this.lambdaFunction = new lambda.NodejsFunction(this, 'latest', { + entry: path.join(__dirname, 'integ-handlers/dependencies.ts'), + bundling: { + minify: true, + nodeModules: ['delay'], + forceDockerBundling: true, + }, + }); + } +} + +const app = new App(); +const stack = new TestStack(app, 'cdk-integ-lambda-nodejs-latest'); +const integ = new IntegTest(app, 'LambdaNodeJsLatestInteg', { + testCases: [stack], + diffAssets: true, +}); + +const response = integ.assertions.invokeFunction({ + functionName: stack.lambdaFunction.functionName, +}); + +response.expect(ExpectedResult.objectLike({ + // expect invoking without error + StatusCode: 200, + ExecutedVersion: '$LATEST', +})); diff --git a/packages/@aws-cdk/cx-api/FEATURE_FLAGS.md b/packages/@aws-cdk/cx-api/FEATURE_FLAGS.md index 9c213bb2b54e6..7188dd6f4db8f 100644 --- a/packages/@aws-cdk/cx-api/FEATURE_FLAGS.md +++ b/packages/@aws-cdk/cx-api/FEATURE_FLAGS.md @@ -56,6 +56,7 @@ Flags come in three types: | [@aws-cdk/core:includePrefixInUniqueNameGeneration](#aws-cdkcoreincludeprefixinuniquenamegeneration) | Include the stack prefix in the stack name generation process | 2.84.0 | (fix) | | [@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig](#aws-cdkaws-autoscalinggeneratelaunchtemplateinsteadoflaunchconfig) | Generate a launch template when creating an AutoScalingGroup | 2.88.0 | (fix) | | [@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby](#aws-cdkaws-opensearchserviceenableopensearchmultiazwithstandby) | Enables support for Multi-AZ with Standby deployment for opensearch domains | 2.88.0 | (default) | +| [@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion](#aws-cdkaws-lambda-nodejsuselatestruntimeversion) | Enables aws-lambda-nodejs.Function to use the latest available NodeJs runtime as the default | V2NEXT | (default) | @@ -102,7 +103,8 @@ The following json shows the current recommended set of flags, as `cdk init` wou "@aws-cdk/aws-kms:aliasNameRef": true, "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": true, "@aws-cdk/core:includePrefixInUniqueNameGeneration": true, - "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": true + "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": true, + "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": true } } ``` @@ -1052,4 +1054,22 @@ multi-az with standby enabled. **Compatibility with old behavior:** Pass `capacity.multiAzWithStandbyEnabled: false` to `Domain` construct to restore the old behavior. +### @aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion + +*Enables aws-lambda-nodejs.Function to use the latest available NodeJs runtime as the default* (default) + +If this is set, and a `runtime` prop is not passed to, Lambda NodeJs +functions will us the latest version of the runtime provided by the Lambda +service. Do not use this if you your lambda function is reliant on dependencies +shipped as part of the runtime environment. + + +| Since | Default | Recommended | +| ----- | ----- | ----- | +| (not in v1) | | | +| V2NEXT | `false` | `true` | + +**Compatibility with old behavior:** Pass `runtime: lambda.Runtime.NODEJS_16_X` to `Function` construct to restore the previous behavior. + + diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/README.md b/packages/aws-cdk-lib/aws-lambda-nodejs/README.md index 3c31e52b915fb..bec3a385efd72 100644 --- a/packages/aws-cdk-lib/aws-lambda-nodejs/README.md +++ b/packages/aws-cdk-lib/aws-lambda-nodejs/README.md @@ -81,6 +81,29 @@ See also the [AWS Lambda construct library](https://github.com/aws/aws-cdk/tree/ The `NodejsFunction` construct automatically [reuses existing connections](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html) when working with the AWS SDK for JavaScript. Set the `awsSdkConnectionReuse` prop to `false` to disable it. +## Runtime + +When the `@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion` feature flag is enabled, the `NODEJS_LATEST` runtime +will be used by default. This runtime will be updated to use the latest Node.js version currently available in lambda. +Since this runtime can change from version to version, you should ensure that all of your dependencies are included +during packaging and avoid relying on depdendencies being globally installed. See [externals](#externals) for details. + +**When using `NODEJS_LATEST` runtime make sure that all of your dependencies are included during bundling, or as layers. +Usage of globally installed packages in the lambda environment may cause your function to break in future versions. If +you need to rely on packages pre-installed in the lambda environment, you must explicitly set your runtime.** + +This can be set via `lambda.Runtime`: + +```ts +import { Runtime } from 'aws-cdk-lib/aws-lambda'; + +new nodejs.NodejsFunction(this, 'my-function', { + runtime: Runtime.NODEJS_18_X, +}); +``` + +With the `@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion` disabled, the runtime will default to `NODEJ_16_X`. + ## Lock file The `NodejsFunction` requires a dependencies lock file (`yarn.lock`, `pnpm-lock.yaml` or @@ -126,8 +149,14 @@ compatible environment. This is usually the case with modules using native depen ### Externals -By default, all node modules are bundled except for `aws-sdk`. This can be configured by specifying -`bundling.externalModules`: +When the `NODEJS_LATEST` runtime is used, no modules are excluded from bundling by default. This is because the runtime +will change as new NodeJs versions become available in lambda, which may change what packages are vended as part of the +environment. + +When passing a runtime that is known to include a version of the aws sdk, it will be excluded by default. For example, when +passing `NODEJS_16_X`, `aws-sdk` is excluded. When passing `NODEJS_18_X`, all `@aws-sdk/*` packages are excluded. + +This can be configured by specifying `bundling.externalModules`: ```ts new nodejs.NodejsFunction(this, 'my-handler', { diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/lib/bundling.ts b/packages/aws-cdk-lib/aws-lambda-nodejs/lib/bundling.ts index 5fd9024d8120e..3c87c4db08227 100644 --- a/packages/aws-cdk-lib/aws-lambda-nodejs/lib/bundling.ts +++ b/packages/aws-cdk-lib/aws-lambda-nodejs/lib/bundling.ts @@ -1,5 +1,6 @@ import * as os from 'os'; import * as path from 'path'; +import { IConstruct } from 'constructs'; import { PackageInstallation } from './package-installation'; import { LockFile, PackageManager } from './package-manager'; import { BundlingOptions, OutputFormat, SourceMapMode } from './types'; @@ -26,7 +27,7 @@ export interface BundlingProps extends BundlingOptions { /** * The runtime of the lambda function */ - readonly runtime?: Runtime; + readonly runtime: Runtime; /** * The system architecture of the lambda function @@ -57,11 +58,11 @@ export class Bundling implements cdk.BundlingOptions { /** * esbuild bundled Lambda asset code */ - public static bundle(options: BundlingProps): AssetCode { + public static bundle(scope: IConstruct, options: BundlingProps): AssetCode { return Code.fromAsset(options.projectRoot, { assetHash: options.assetHash, assetHashType: options.assetHash ? cdk.AssetHashType.CUSTOM : cdk.AssetHashType.OUTPUT, - bundling: new Bundling(options), + bundling: new Bundling(scope, options), }); } @@ -97,7 +98,7 @@ export class Bundling implements cdk.BundlingOptions { private readonly externals: string[]; private readonly packageManager: PackageManager; - constructor(private readonly props: BundlingProps) { + constructor(scope: IConstruct, private readonly props: BundlingProps) { this.packageManager = PackageManager.fromLockFile(props.depsLockFilePath, props.logLevel); Bundling.esbuildInstallation = Bundling.esbuildInstallation ?? PackageInstallation.detect('esbuild'); @@ -124,8 +125,31 @@ export class Bundling implements cdk.BundlingOptions { throw new Error(`ECMAScript module output format is not supported by the ${props.runtime.name} runtime`); } + // Modules to externalize when using a constant known version of the runtime. + // Mark aws-sdk as external by default (available in the runtime) + const isV2Runtime = isSdkV2Runtime(props.runtime); + const versionedExternals = isV2Runtime ? ['aws-sdk'] : ['@aws-sdk/*']; + // Don't automatically externalize any dependencies when using a `latest` runtime which may + // update versions in the future. + const defaultExternals = props.runtime?.isVariable ? [] : versionedExternals; + const externals = props.externalModules ?? defaultExternals; + + // Warn users if they are trying to rely on global versions of the SDK that aren't available in + // their environment. + if (isV2Runtime && externals.some((pkgName) => pkgName.startsWith('@aws-sdk/'))) { + cdk.Annotations.of(scope).addWarning('If you are relying on AWS SDK v3 to be present in the Lambda environment already, please explicitly configure a NodeJS runtime of Node 18 or higher.'); + } else if (externals.includes('aws-sdk')) { + cdk.Annotations.of(scope).addWarning('If you are relying on AWS SDK v2 to be present in the Lambda environment already, please explicitly configure a NodeJS runtime of Node 16 or lower.'); + } + + // Warn users if they are using a runtime that may change and are excluding any dependencies from + // bundling. + if (externals.length && props.runtime?.isVariable) { + cdk.Annotations.of(scope).addWarning('When using NODEJS_LATEST the runtime version may change as new runtimes are released, this may affect the availability of packages shipped with the environment. Ensure that any external dependencies are available through layers or specify a specific runtime version.'); + } + this.externals = [ - ...props.externalModules ?? (isSdkV2Runtime(props.runtime) ? ['aws-sdk'] : ['@aws-sdk/*']), // Mark aws-sdk as external by default (available in the runtime) + ...externals, ...props.nodeModules ?? [], // Mark the modules that we are going to install as externals also ]; diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/lib/function.ts b/packages/aws-cdk-lib/aws-lambda-nodejs/lib/function.ts index c8a8cbfee7b1d..6df32bf9dc31f 100644 --- a/packages/aws-cdk-lib/aws-lambda-nodejs/lib/function.ts +++ b/packages/aws-cdk-lib/aws-lambda-nodejs/lib/function.ts @@ -7,6 +7,8 @@ import { BundlingOptions } from './types'; import { callsites, findUpMultiple } from './util'; import { Architecture } from '../../aws-lambda'; import * as lambda from '../../aws-lambda'; +import { FeatureFlags } from '../../core'; +import { LAMBDA_NODEJS_USE_LATEST_RUNTIME } from '../../cx-api'; /** * Properties for a NodejsFunction @@ -98,14 +100,15 @@ export class NodejsFunction extends lambda.Function { const architecture = props.architecture ?? Architecture.X86_64; const depsLockFilePath = findLockFile(props.depsLockFilePath); const projectRoot = props.projectRoot ?? path.dirname(depsLockFilePath); + const runtime = getRuntime(scope, props); super(scope, id, { ...props, - runtime: props.runtime ?? lambda.Runtime.NODEJS_18_X, - code: Bundling.bundle({ + runtime, + code: Bundling.bundle(scope, { ...props.bundling ?? {}, entry, - runtime: props.runtime, + runtime, architecture, depsLockFilePath, projectRoot, @@ -118,6 +121,18 @@ export class NodejsFunction extends lambda.Function { this.addEnvironment('AWS_NODEJS_CONNECTION_REUSE_ENABLED', '1', { removeInEdge: true }); } } + +} + +/** + * Check if the feature flag is enabled and default to NODEJS_LATEST if so. + * Otherwise default to NODEJS_16_X. + */ +function getRuntime(scope: Construct, props: NodejsFunctionProps): lambda.Runtime { + const defaultRuntime = FeatureFlags.of(scope).isEnabled(LAMBDA_NODEJS_USE_LATEST_RUNTIME) + ? lambda.Runtime.NODEJS_LATEST + : lambda.Runtime.NODEJS_16_X; + return props.runtime ?? defaultRuntime; } /** diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/lib/types.ts b/packages/aws-cdk-lib/aws-lambda-nodejs/lib/types.ts index 5f433f0161fed..d0100316681e2 100644 --- a/packages/aws-cdk-lib/aws-lambda-nodejs/lib/types.ts +++ b/packages/aws-cdk-lib/aws-lambda-nodejs/lib/types.ts @@ -176,7 +176,8 @@ export interface BundlingOptions extends DockerRunOptions { * A list of modules that should be considered as externals (already available * in the runtime). * - * @default - ['aws-sdk'] if the runtime is < Node.js 18.x, ['@aws-sdk/*'] otherwise. + * @default - ['aws-sdk'] if the runtime is <= Node.js 16.x, ['@aws-sdk/*'] if Node.js 18.x, + * [] if using a variable runtime version such as NODEJS_LATEST. */ readonly externalModules?: string[]; diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.ts b/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.ts index 59845e6d40671..718bc1167aa9b 100644 --- a/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.ts +++ b/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.ts @@ -3,14 +3,17 @@ import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; import { version as delayVersion } from 'delay/package.json'; +import { Annotations } from '../../assertions'; import { Architecture, Code, Runtime, RuntimeFamily } from '../../aws-lambda'; -import { AssetHashType, BundlingFileAccess, DockerImage } from '../../core'; +import { App, AssetHashType, BundlingFileAccess, DockerImage, Stack } from '../../core'; import { Bundling } from '../lib/bundling'; import { PackageInstallation } from '../lib/package-installation'; import { Charset, LogLevel, OutputFormat, SourceMapMode } from '../lib/types'; import * as util from '../lib/util'; let detectPackageInstallationMock: jest.SpyInstance; +const app = new App(); +const stack = new Stack(app, 'MyTestStack'); beforeEach(() => { jest.clearAllMocks(); jest.resetAllMocks(); @@ -39,7 +42,7 @@ let entry = '/project/lib/handler.ts'; let tsconfig = '/project/lib/custom-tsconfig.ts'; test('esbuild bundling in Docker', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -78,7 +81,7 @@ test('esbuild bundling in Docker', () => { }); test('esbuild bundling with handler named index.ts', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry: '/project/lib/index.ts', projectRoot, depsLockFilePath, @@ -100,7 +103,7 @@ test('esbuild bundling with handler named index.ts', () => { }); test('esbuild bundling with tsx handler', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry: '/project/lib/handler.tsx', projectRoot, depsLockFilePath, @@ -128,7 +131,7 @@ test('esbuild with Windows paths', () => { jest.spyOn(path, 'basename').mockReturnValueOnce('package-lock.json'); jest.spyOn(path, 'relative').mockReturnValueOnce('lib\\entry.ts').mockReturnValueOnce('package-lock.json'); - Bundling.bundle({ + Bundling.bundle(stack, { entry: 'C:\\my-project\\lib\\entry.ts', runtime: Runtime.NODEJS_14_X, architecture: Architecture.X86_64, @@ -150,7 +153,7 @@ test('esbuild with Windows paths', () => { test('esbuild bundling with externals and dependencies', () => { const packageLock = path.join(__dirname, '..', 'package-lock.json'); - Bundling.bundle({ + Bundling.bundle(stack, { entry: __filename, projectRoot: path.dirname(packageLock), depsLockFilePath: packageLock, @@ -180,7 +183,7 @@ test('esbuild bundling with externals and dependencies', () => { }); test('esbuild bundling with esbuild options', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -246,7 +249,7 @@ test('esbuild bundling with esbuild options', () => { }); test('throws with ESM and NODEJS_12_X', () => { - expect(() => Bundling.bundle({ + expect(() => Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -257,7 +260,7 @@ test('throws with ESM and NODEJS_12_X', () => { }); test('esbuild bundling source map default', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -283,7 +286,7 @@ test('esbuild bundling source map default', () => { }); test('esbuild bundling without aws-sdk v3 when use greater than or equal Runtime.NODEJS_18_X', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -304,7 +307,7 @@ test('esbuild bundling without aws-sdk v3 when use greater than or equal Runtime }); test('esbuild bundling source map inline', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -330,7 +333,7 @@ test('esbuild bundling source map inline', () => { }); test('esbuild bundling is correctly done with custom runtime matching predefined runtime', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -354,7 +357,7 @@ test('esbuild bundling is correctly done with custom runtime matching predefined }); test('esbuild bundling source map enabled when only source map mode exists', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -380,7 +383,7 @@ test('esbuild bundling source map enabled when only source map mode exists', () test('esbuild bundling throws when sourceMapMode used with false sourceMap', () => { expect(() => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -394,7 +397,7 @@ test('esbuild bundling throws when sourceMapMode used with false sourceMap', () test('Detects yarn.lock', () => { const yarnLock = path.join(__dirname, '..', 'yarn.lock'); - Bundling.bundle({ + Bundling.bundle(stack, { entry: __filename, projectRoot: path.dirname(yarnLock), depsLockFilePath: yarnLock, @@ -417,7 +420,7 @@ test('Detects yarn.lock', () => { test('Detects pnpm-lock.yaml', () => { const pnpmLock = '/project/pnpm-lock.yaml'; - Bundling.bundle({ + Bundling.bundle(stack, { entry: __filename, projectRoot, depsLockFilePath: pnpmLock, @@ -439,7 +442,7 @@ test('Detects pnpm-lock.yaml', () => { }); test('with Docker build args', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -468,7 +471,7 @@ test('Local bundling', () => { signal: null, }); - const bundler = new Bundling({ + const bundler = new Bundling(stack, { entry, projectRoot, depsLockFilePath, @@ -506,7 +509,7 @@ test('Incorrect esbuild version', () => { version: '3.4.5', }); - const bundler = new Bundling({ + const bundler = new Bundling(stack, { entry, projectRoot, depsLockFilePath, @@ -520,7 +523,7 @@ test('Incorrect esbuild version', () => { }); test('Custom bundling docker image', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -539,7 +542,7 @@ test('Custom bundling docker image', () => { }); test('with command hooks', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -574,7 +577,7 @@ test('with command hooks', () => { }); test('esbuild bundling with projectRoot', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry: '/project/lib/index.ts', projectRoot: '/project', depsLockFilePath, @@ -598,7 +601,7 @@ test('esbuild bundling with projectRoot', () => { test('esbuild bundling with projectRoot and externals and dependencies', () => { const repoRoot = path.join(__dirname, '../../../..'); const packageLock = path.join(repoRoot, 'common', 'package-lock.json'); - Bundling.bundle({ + Bundling.bundle(stack, { entry: __filename, projectRoot: repoRoot, depsLockFilePath: packageLock, @@ -630,7 +633,7 @@ test('esbuild bundling with projectRoot and externals and dependencies', () => { test('esbuild bundling with pre compilations', () => { const packageLock = path.join(__dirname, '..', 'package-lock.json'); - Bundling.bundle({ + Bundling.bundle(stack, { entry: __filename.replace('.js', '.ts'), projectRoot: path.dirname(packageLock), depsLockFilePath: packageLock, @@ -661,7 +664,7 @@ test('esbuild bundling with pre compilations', () => { test('throws with pre compilation and not found tsconfig', () => { expect(() => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -675,7 +678,7 @@ test('throws with pre compilation and not found tsconfig', () => { }); test('with custom hash', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -693,7 +696,7 @@ test('with custom hash', () => { }); test('Custom bundling entrypoint', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -712,7 +715,7 @@ test('Custom bundling entrypoint', () => { }); test('Custom bundling volumes', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -731,7 +734,7 @@ test('Custom bundling volumes', () => { }); test('Custom bundling volumesFrom', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -750,7 +753,7 @@ test('Custom bundling volumesFrom', () => { }); test('Custom bundling workingDirectory', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -769,7 +772,7 @@ test('Custom bundling workingDirectory', () => { }); test('Custom bundling user', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -788,7 +791,7 @@ test('Custom bundling user', () => { }); test('Custom bundling securityOpt', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -807,7 +810,7 @@ test('Custom bundling securityOpt', () => { }); test('Custom bundling network', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -826,7 +829,7 @@ test('Custom bundling network', () => { }); test('Custom bundling file copy variant', () => { - Bundling.bundle({ + Bundling.bundle(stack, { entry, projectRoot, depsLockFilePath, @@ -844,6 +847,71 @@ test('Custom bundling file copy variant', () => { }); }); +test('bundling using NODEJS_LATEST doesn\'t externalize anything by default', () => { + Bundling.bundle(stack, { + entry, + projectRoot, + depsLockFilePath, + runtime: Runtime.NODEJS_LATEST, + architecture: Architecture.X86_64, + }); + + expect(Code.fromAsset).toHaveBeenCalledWith('/project', { + assetHashType: AssetHashType.OUTPUT, + bundling: expect.objectContaining({ + command: [ + 'bash', '-c', + 'esbuild --bundle "/asset-input/lib/handler.ts" --target=node18 --platform=node --outfile="/asset-output/index.js"', + ], + }), + }); +}); + +test('bundling with <= Node16 warns when sdk v3 is external', () => { + Bundling.bundle(stack, { + entry, + projectRoot, + depsLockFilePath, + runtime: Runtime.NODEJS_16_X, + architecture: Architecture.X86_64, + externalModules: ['@aws-sdk/client-s3'], + }); + + Annotations.fromStack(stack).hasWarning('*', + 'If you are relying on AWS SDK v3 to be present in the Lambda environment already, please explicitly configure a NodeJS runtime of Node 18 or higher.', + ); +}); + +test('bundling with >= Node18 warns when sdk v3 is external', () => { + Bundling.bundle(stack, { + entry, + projectRoot, + depsLockFilePath, + runtime: Runtime.NODEJS_18_X, + architecture: Architecture.X86_64, + externalModules: ['aws-sdk'], + }); + + Annotations.fromStack(stack).hasWarning('*', + 'If you are relying on AWS SDK v2 to be present in the Lambda environment already, please explicitly configure a NodeJS runtime of Node 16 or lower.', + ); +}); + +test('bundling with NODEJS_LATEST warns when any dependencies are external', () => { + Bundling.bundle(stack, { + entry, + projectRoot, + depsLockFilePath, + runtime: Runtime.NODEJS_LATEST, + architecture: Architecture.X86_64, + externalModules: ['my-external-dep'], + }); + + Annotations.fromStack(stack).hasWarning('*', + 'When using NODEJS_LATEST the runtime version may change as new runtimes are released, this may affect the availability of packages shipped with the environment. Ensure that any external dependencies are available through layers or specify a specific runtime version.', + ); +}); + function findParentTsConfigPath(dir: string, depth: number = 1, limit: number = 5): string { const target = path.join(dir, 'tsconfig.json'); if (fs.existsSync(target)) { diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/test/function.test.ts b/packages/aws-cdk-lib/aws-lambda-nodejs/test/function.test.ts index a578285e57f87..7f5e985369eb9 100644 --- a/packages/aws-cdk-lib/aws-lambda-nodejs/test/function.test.ts +++ b/packages/aws-cdk-lib/aws-lambda-nodejs/test/function.test.ts @@ -2,7 +2,8 @@ import { bockfs } from '@aws-cdk/cdk-build-tools'; import { Template, Match } from '../../assertions'; import { Vpc } from '../../aws-ec2'; import { CodeConfig, Runtime } from '../../aws-lambda'; -import { Stack } from '../../core'; +import { App, Stack } from '../../core'; +import { LAMBDA_NODEJS_USE_LATEST_RUNTIME } from '../../cx-api'; import { NodejsFunction } from '../lib'; import { Bundling } from '../lib/bundling'; @@ -67,7 +68,7 @@ test('NodejsFunction with .ts handler', () => { // WHEN new NodejsFunction(stack, 'handler1'); - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ entry: expect.stringContaining('function.test.handler1.ts'), // Automatically finds .ts handler file })); @@ -83,7 +84,7 @@ test('NodejsFunction with overridden handler - no dots', () => { handler: 'myHandler', }); - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ entry: expect.stringContaining('function.test.handler1.ts'), // Automatically finds .ts handler file })); @@ -99,7 +100,7 @@ test('NodejsFunction with overridden handler - with dots', () => { handler: 'run.sh', }); - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ entry: expect.stringContaining('function.test.handler1.ts'), // Automatically finds .ts handler file })); @@ -114,7 +115,7 @@ test('NodejsFunction with .js handler', () => { new NodejsFunction(stack, 'handler2'); // THEN - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ entry: expect.stringContaining('function.test.handler2.js'), // Automatically finds .ts handler file })); }); @@ -124,7 +125,7 @@ test('NodejsFunction with .mjs handler', () => { new NodejsFunction(stack, 'handler3'); // THEN - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ entry: expect.stringContaining('function.test.handler3.mjs'), // Automatically finds .mjs handler file })); }); @@ -134,7 +135,7 @@ test('NodejsFunction with .mts handler', () => { new NodejsFunction(stack, 'handler4'); // THEN - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ entry: expect.stringContaining('function.test.handler4.mts'), // Automatically finds .mts handler file })); }); @@ -144,7 +145,7 @@ test('NodejsFunction with .cts handler', () => { new NodejsFunction(stack, 'handler5'); // THEN - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ entry: expect.stringContaining('function.test.handler5.cts'), // Automatically finds .cts handler file })); }); @@ -154,7 +155,7 @@ test('NodejsFunction with .cjs handler', () => { new NodejsFunction(stack, 'handler6'); // THEN - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ entry: expect.stringContaining('function.test.handler6.cjs'), // Automatically finds .cjs handler file })); }); @@ -169,7 +170,7 @@ test('NodejsFunction with container env vars', () => { }, }); - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ environment: { KEY: 'VALUE', }, @@ -223,7 +224,7 @@ test('resolves depsLockFilePath to an absolute path', () => { depsLockFilePath: './package.json', }); - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ depsLockFilePath: bockPath`/home/project/package.json`, })); }); @@ -234,7 +235,7 @@ test('resolves entry to an absolute path', () => { entry: 'aws-lambda-nodejs/lib/index.ts', }); - expect(Bundling.bundle).toHaveBeenCalledWith(expect.objectContaining({ + expect(Bundling.bundle).toHaveBeenCalledWith(stack, expect.objectContaining({ entry: bockPath`/home/project/aws-lambda-nodejs/lib/index.ts`, })); }); @@ -292,3 +293,29 @@ test('NodejsFunction in a VPC', () => { }, }); }); + +test('defaults to NODEJS_16_X with feature flag disabled', () => { + // WHEN + new NodejsFunction(stack, 'handler1'); + + Template.fromStack(stack).hasResourceProperties('AWS::Lambda::Function', { + Runtime: 'nodejs16.x', + }); +}); + +test('defaults to NODEJS_LATEST with feature flag enabled', () => { + // GIVEN + const appLocal = new App({ + context: { + [LAMBDA_NODEJS_USE_LATEST_RUNTIME]: true, + }, + }); + const stackLocal = new Stack(appLocal, 'TestStackFF'); + + // WHEN + new NodejsFunction(stackLocal, 'handler1'); + + Template.fromStack(stackLocal).hasResourceProperties('AWS::Lambda::Function', { + Runtime: 'nodejs18.x', + }); +}); diff --git a/packages/aws-cdk-lib/aws-lambda/lib/runtime.ts b/packages/aws-cdk-lib/aws-lambda/lib/runtime.ts index efbe0cf386e47..4782d8bfcc045 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/runtime.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/runtime.ts @@ -7,6 +7,12 @@ export interface LambdaRuntimeProps { */ readonly supportsInlineCode?: boolean; + /** + * Whether the runtime enum is meant to change over time, IE NODEJS_LATEST. + * @default false + */ + readonly isVariable?: boolean; + /** * The Docker image name to be used for bundling in this runtime. * @default - the latest docker image "amazon/public.ecr.aws/sam/build-" from https://gallery.ecr.aws @@ -91,6 +97,11 @@ export class Runtime { */ public static readonly NODEJS_18_X = new Runtime('nodejs18.x', RuntimeFamily.NODEJS, { supportsInlineCode: true }); + /** + * The latest NodeJS version currently available + */ + public static readonly NODEJS_LATEST = new Runtime('nodejs18.x', RuntimeFamily.NODEJS, { supportsInlineCode: true, isVariable: true }); + /** * The Python 2.7 runtime (python2.7) * @deprecated Legacy runtime no longer supported by AWS Lambda. Migrate to the latest Python runtime. @@ -274,10 +285,16 @@ export class Runtime { */ public readonly bundlingImage: DockerImage; + /** + * Enabled for runtime enums that always target the latest available. + */ + public readonly isVariable: Boolean; + constructor(name: string, family?: RuntimeFamily, props: LambdaRuntimeProps = {}) { this.name = name; this.supportsInlineCode = !!props.supportsInlineCode; this.family = family; + this.isVariable = !!props.isVariable; const imageName = props.bundlingDockerImage ?? `public.ecr.aws/sam/build-${name}`; this.bundlingDockerImage = DockerImage.fromRegistry(imageName); diff --git a/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md b/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md index 9c213bb2b54e6..7188dd6f4db8f 100644 --- a/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +++ b/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md @@ -56,6 +56,7 @@ Flags come in three types: | [@aws-cdk/core:includePrefixInUniqueNameGeneration](#aws-cdkcoreincludeprefixinuniquenamegeneration) | Include the stack prefix in the stack name generation process | 2.84.0 | (fix) | | [@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig](#aws-cdkaws-autoscalinggeneratelaunchtemplateinsteadoflaunchconfig) | Generate a launch template when creating an AutoScalingGroup | 2.88.0 | (fix) | | [@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby](#aws-cdkaws-opensearchserviceenableopensearchmultiazwithstandby) | Enables support for Multi-AZ with Standby deployment for opensearch domains | 2.88.0 | (default) | +| [@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion](#aws-cdkaws-lambda-nodejsuselatestruntimeversion) | Enables aws-lambda-nodejs.Function to use the latest available NodeJs runtime as the default | V2NEXT | (default) | @@ -102,7 +103,8 @@ The following json shows the current recommended set of flags, as `cdk init` wou "@aws-cdk/aws-kms:aliasNameRef": true, "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": true, "@aws-cdk/core:includePrefixInUniqueNameGeneration": true, - "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": true + "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": true, + "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": true } } ``` @@ -1052,4 +1054,22 @@ multi-az with standby enabled. **Compatibility with old behavior:** Pass `capacity.multiAzWithStandbyEnabled: false` to `Domain` construct to restore the old behavior. +### @aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion + +*Enables aws-lambda-nodejs.Function to use the latest available NodeJs runtime as the default* (default) + +If this is set, and a `runtime` prop is not passed to, Lambda NodeJs +functions will us the latest version of the runtime provided by the Lambda +service. Do not use this if you your lambda function is reliant on dependencies +shipped as part of the runtime environment. + + +| Since | Default | Recommended | +| ----- | ----- | ----- | +| (not in v1) | | | +| V2NEXT | `false` | `true` | + +**Compatibility with old behavior:** Pass `runtime: lambda.Runtime.NODEJS_16_X` to `Function` construct to restore the previous behavior. + + diff --git a/packages/aws-cdk-lib/cx-api/README.md b/packages/aws-cdk-lib/cx-api/README.md index bbf09ae9387fd..59c3d703ddeeb 100644 --- a/packages/aws-cdk-lib/cx-api/README.md +++ b/packages/aws-cdk-lib/cx-api/README.md @@ -205,3 +205,21 @@ _cdk.json_ } } ``` + +* `@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion` + +Enable this feature flag to automatically use the latest available NodeJS version in the aws-lambda-nodejse.Function construct. + +This allows creation of new functions using a version that will automatically stay up to date without breaking bundling of existing functions that externalize packages included in their environemnt such as `aws-sdk`. + +Functions defined previously will continue to function correctly as long as they pass an explicit runtime version, or do not exclude packages during bundling. + +_cdk.json_ + +```json +{ + "context": { + "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": true + } +} +``` diff --git a/packages/aws-cdk-lib/cx-api/lib/features.ts b/packages/aws-cdk-lib/cx-api/lib/features.ts index 6e798ae651d43..df8a4194a7a46 100644 --- a/packages/aws-cdk-lib/cx-api/lib/features.ts +++ b/packages/aws-cdk-lib/cx-api/lib/features.ts @@ -90,6 +90,7 @@ export const INCLUDE_PREFIX_IN_UNIQUE_NAME_GENERATION = '@aws-cdk/core:includePr export const KMS_ALIAS_NAME_REF = '@aws-cdk/aws-kms:aliasNameRef'; export const AUTOSCALING_GENERATE_LAUNCH_TEMPLATE = '@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig'; export const ENABLE_OPENSEARCH_MULTIAZ_WITH_STANDBY = '@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby'; +export const LAMBDA_NODEJS_USE_LATEST_RUNTIME = '@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion'; export const FLAGS: Record = { ////////////////////////////////////////////////////////////////////// @@ -859,6 +860,21 @@ export const FLAGS: Record = { recommendedValue: true, compatibilityWithOldBehaviorMd: 'Pass `capacity.multiAzWithStandbyEnabled: false` to `Domain` construct to restore the old behavior.', }, + + ////////////////////////////////////////////////////////////////////// + [LAMBDA_NODEJS_USE_LATEST_RUNTIME]: { + type: FlagType.ApiDefault, + summary: 'Enables aws-lambda-nodejs.Function to use the latest available NodeJs runtime as the default', + detailsMd: ` + If this is set, and a \`runtime\` prop is not passed to, Lambda NodeJs + functions will us the latest version of the runtime provided by the Lambda + service. Do not use this if you your lambda function is reliant on dependencies + shipped as part of the runtime environment. + `, + introducedIn: { v2: 'V2NEXT' }, + recommendedValue: true, + compatibilityWithOldBehaviorMd: 'Pass `runtime: lambda.Runtime.NODEJS_16_X` to `Function` construct to restore the previous behavior.', + }, }; const CURRENT_MV = 'v2'; From cef7136305ba9a28c87036cba081a44713e48e4b Mon Sep 17 00:00:00 2001 From: Grant Starkman <51809789+7empestx@users.noreply.github.com> Date: Wed, 16 Aug 2023 16:46:03 -0600 Subject: [PATCH 06/56] chore(cloudwatch): correct spelling error in alarm-base docstrings (#26781) This PR fixes a spelling error in alarm-base docstrings for `addAlarmAction`, `addInsufficientDataAction`, and `addOkAction` where `SnsAction` was spelled `SnsAcion`. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/aws-cdk-lib/aws-cloudwatch/lib/alarm-base.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm-base.ts b/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm-base.ts index fa7cd2f4ab59f..f96340acbf7f6 100644 --- a/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm-base.ts +++ b/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm-base.ts @@ -57,7 +57,7 @@ export abstract class AlarmBase extends Resource implements IAlarm { /** * Trigger this action if the alarm fires * - * Typically SnsAcion or AutoScalingAction. + * Typically SnsAction or AutoScalingAction. */ public addAlarmAction(...actions: IAlarmAction[]) { if (this.alarmActionArns === undefined) { @@ -70,7 +70,7 @@ export abstract class AlarmBase extends Resource implements IAlarm { /** * Trigger this action if there is insufficient data to evaluate the alarm * - * Typically SnsAcion or AutoScalingAction. + * Typically SnsAction or AutoScalingAction. */ public addInsufficientDataAction(...actions: IAlarmAction[]) { if (this.insufficientDataActionArns === undefined) { @@ -83,7 +83,7 @@ export abstract class AlarmBase extends Resource implements IAlarm { /** * Trigger this action if the alarm returns from breaching state into ok state * - * Typically SnsAcion or AutoScalingAction. + * Typically SnsAction or AutoScalingAction. */ public addOkAction(...actions: IAlarmAction[]) { if (this.okActionArns === undefined) { From 0b8f31df9550c68beaaa16d03ff2a4e768bf7544 Mon Sep 17 00:00:00 2001 From: Mitchell Valine Date: Wed, 16 Aug 2023 16:36:09 -0700 Subject: [PATCH 07/56] fix(eks): undefined constructor in custom resource (#26782) When we [upgraded the proxy-agent v6](https://github.com/aws/aws-cdk/pull/26722) we did not update how we were importing from the package. Where [in 5.0 commonjs exports were used](https://github.com/TooTallNate/node-proxy-agent/blob/5.0.0/index.js#L25) , in [6.0 a named esm export is used](https://github.com/TooTallNate/proxy-agents/blob/proxy-agent%406.1.0/packages/proxy-agent/src/index.ts#L71). Updated to use a named import statement instead of a default require. Typescript also confirms the old import was an error now since we use `import` instead of `require`. Fixes: #26771 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- ...809dd4a9c5d9750440fb835ab20fd6925e528c.zip | Bin 1437108 -> 0 bytes ...cf2dcb75a40a43a9a2efbcfc9ae39535c6260c.zip | Bin 0 -> 1575517 bytes .../cluster.d.ts | 0 .../cluster.js | 0 .../cluster.ts | 0 .../common.d.ts | 0 .../common.js | 0 .../common.ts | 0 .../compareLogging.d.ts | 0 .../compareLogging.js | 0 .../compareLogging.ts | 0 .../consts.d.ts | 0 .../consts.js | 0 .../consts.ts | 0 .../fargate.d.ts | 0 .../fargate.js | 0 .../fargate.ts | 0 .../index.d.ts | 0 .../index.js | 68 ++++++++++++++++++ .../index.ts | 5 +- .../index.js | 68 ------------------ .../aws-cdk-eks-cluster-test.assets.json | 20 +++--- .../aws-cdk-eks-cluster-test.template.json | 2 +- ...ourceProvider5F388D1A.nested.template.json | 6 +- .../manifest.json | 2 +- .../integ.eks-cluster.js.snapshot/tree.json | 8 +-- .../lib/cluster-resource-handler/index.ts | 5 +- 27 files changed, 91 insertions(+), 93 deletions(-) delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.3f579d6c1ab146cac713730c96809dd4a9c5d9750440fb835ab20fd6925e528c.zip create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.9202bb21d52e07810fc1da0f6acf2dcb75a40a43a9a2efbcfc9ae39535c6260c.zip rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/cluster.d.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/cluster.js (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/cluster.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/common.d.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/common.js (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/common.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/compareLogging.d.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/compareLogging.js (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/compareLogging.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/consts.d.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/consts.js (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/consts.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/fargate.d.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/fargate.js (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/fargate.ts (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/index.d.ts (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea/index.js rename packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/{asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31 => asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea}/index.ts (94%) delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.3f579d6c1ab146cac713730c96809dd4a9c5d9750440fb835ab20fd6925e528c.zip b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.3f579d6c1ab146cac713730c96809dd4a9c5d9750440fb835ab20fd6925e528c.zip deleted file mode 100644 index 39ed5322850505f8d22004fbbb1a8c0ad421d1fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1437108 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/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

U+QJih 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

#Okm?@v|YVAm~iq`c@n2&?6(S8+C- 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�r*$W_SB=K(;N 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%0DiD1G#<2})Nj>W!ZP1lYrP{B*&LYT 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¨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�>%x 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

oK^GLrcC$f^Q%F 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%0AfX}!N#RVBpLRxn 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

t#I)tT*!5!`d)}sdvM*ug^;q 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 Zj><5Yl!Git;6BxT){ZV?Dzk#=^?%BQ1=0Wj diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.9202bb21d52e07810fc1da0f6acf2dcb75a40a43a9a2efbcfc9ae39535c6260c.zip b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.9202bb21d52e07810fc1da0f6acf2dcb75a40a43a9a2efbcfc9ae39535c6260c.zip new file mode 100644 index 0000000000000000000000000000000000000000..1f8754c916705a52d445043a0714a34f0c8fdb97 GIT binary patch literal 1575517 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

cz%EP9Fem5M;%o(;;#+3EL^0pN_SG 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 AXF=CAYq}2qMV`QQ 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 &I#jY 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%0AZ#3N>IeU{q0nTb$fcHdqbMhKp=}Cd6mJktzP~ zUxJ+u0W_sT_y1)y=aHIsYZ#aCkFO`eF7aWqx)uWlb>CiN5~6yC+|a!gY79$D75Xf{ zbf<8gKEYRZ?Wm&*;V&f3yPO9tBtCLpIwmY!8X4uR#=E_yAwK9E?4%6IpBz}jI7ct| z8_Au|ytJ=L0YeWnCwS|6#N|#Tqt<*IR* zuN#>|f+J+WbHSJSY@)FD;|C&UO)PVLZ>>rw)SE7=W0J?pFS?nuTa^27(>ldr%AFX6 zsnrcU?xmABMQ=O!B=g55lb{@GGOnp)A)1ivJENkWN4ZJs6wS`dxD!muB7JXyoJrbd z1jZYTn{fZPxj#k?Wd)ULL)fqS;lLzoic?v{y(@w5(mc=8WPUjS9prmSciqnxDmp=RK}Cx3GgScPY^vjydK^mfC)8DAqQNv{W=%c70=tMv4^{;2fPZa( z5Vet1^vppTT`vU4QMNdmAO|*d18g*nS&M3*>)&=$_d2LnBOI@=k&wT`i;o5!*bpNV zn#2K0e$=EpiZ;A$=IvJGz|M&Y11Dv24AOTP{q~F-5ShI}%mlPjx%elKwFZ0tBOCg( zWVSb_J&)Jgzh9DsOgbIBo*8*<_r>2^uAB^1k6)9y>^ubN?%1v3)C=t*{s`{Xywv-3 z`$@B3jwSA3%eUm_zu&TvHcNZWVb@q2=-l))CYL>Is>IZy0j(LPP7;CYcX;)7*vb~^BjkRXHAd{(uqY&NNt**Ybs6bY7kbb*&FQNA{5ai{QhcMuRr%*)V?K2OQ z{3}H>+Gw1zDR(>f8ki%1yfrV>uK>b#-1F>=UIG?pPG1w}du;a{*=yW~nO|!lJNWPA zpjppR|D`Q+7CD*o*kTxlFkQhAimM6;+`x)YP?6Ydz?|2iRf+VwHjZ3zSD!-E0 zdSClEQ@KHUjgXGRq4Vc!oI!Bmgwf0WMJsxn&Ei7*D>d7t+ylS<;ELGS(y}BQsUP&O zqsN3Wqn#lXP7`at?-s7ajQ9mbh#+9{{qeNEeCemAS{^9+?#(^`Z@Gnl`wKGwL!{AufAv1yfLU*ULmjbFpoYG?RAU=+SKy=!yfNGXM#x$Y$+ zqgO}^IDPj^gPLoe`!~uvqlf!QP$_8lcfFG;N0%^0)*fib!(+3{g875JM(^+jEgaM6 z0X_Nz&n~4l&(vCt->?_0v-gKRCjzA-VrH5k#8*{O_Ucpp)qb3zkLGe)PXCv{mWl-J z1oUy?-t5C%%3_3yMH6ScNft`XCdZTp?!tkBU6+btZDs+8 z{C#!VWvt~|&aSV|+p+cX4oJ4nQ*`x#SW_utvU~%}_78o}cXQ^$IHTc)`F;a*`eXBN z;32Ig*I48(dG2Ww3A6U%@m!@tAlelS;eHT z-zFuWhT6%eSde(bp70)bH1G@G-Oz?J_BSOt0Z zjlOeFEL9ePcBESeG{!I9uS^U&A34np%tbdo@-LQ$b9)uj;rOwedn*Jx1JakLhH1!) zy`k6c&0oUe_DoEyJhC8;@@As}Y7aS0ilq}uq)W6H&OXCmHf;NPbe4Q^e_xch$P4Gi z+AIGyaKZ^yMt+e7TdmJn^cY!F!v#E4K`q5+t+XJT&cAffOFNHFU4nZW?b*=Cy#z}i zW#d?`M|p_<0URGDN8sH*@+PqF2)Qyp&N;N3k!^E)==Wr%(A`Hf<4xP4MH6^D<(kGa z%#@ojR;IhB-ofABbdB+*myRQIn0-cPc|Pe5dGD-PY+U(+cLFG*>f~}8CKdU)IZ)mE z5Yf(=-2xSDC;liwbe*ILR*f;3@#Zyyn zMpYO-L5U_g7zpebZ3WMDJQ)#1VoT#3JdSw5B5~679UBa=dj!*<+{VeQ4EaR*l1BvS zyTOLOsi_0WO!?AR87{n%-Zsnik(_v-O;?_u=c6jEn}hrXfPMBDZgju5_U!pK5P;{D z+>ySOV91m4NxG1`hX`e4_R{s+P}OOat{qq5XvPPJ>;HP)mdG!0GLKCfP=R7lwB z4qCZ14isyfzwGcaQJE4w@82f(^t>EEi{f=+KVvRQFv3SNLBIgM^8P25%Sx97 zP8lnG*v^gq7Y0|a02gU^bn56O9DY9D$+DA7P5DF}W_EJz@rMTdbKsXmAKwWfvKGV4wV=(1@>}=N3Ai! z9D~>L@=}in8DS*hL2Nx;G}tyEYVj@gf;`bXeHW`%l6$2PJkOv}XFg`sB50`t@Kj8p#W3RErdjpTg{ z`ZE5Z=xNc5ECBBes{|lWFi-t!*+LyuQW)EPjM?G8+e+2)ayGBmLM06tkH7p%)N=dJ zjgFe(SCYI&eCE@Zig7fFH`()aW-1f7*`zd+s6_wQ`kBzu*~X*03=M|<>b-6#rei~E ztL1iK$aq=yY}7)WGq!%qPapKOJKkt*;03t#a@FFg!tuXg<3M`V0@#ePAZ9QOuMU9T z9XV0ZIcbC%O)6jD_Y$}@^EvO9oWc9BDCk$!E$j*7rxy#jAe^OdX|NUUoec415n3W_ z*@i5wwNOn+OXTdPTEtxQ_Yk1%(^b3u!AE<>1-rk+*>IA450Qjz(6$Eev^2%SW!t1Y zCCbjbgzSf{)8))H>^QvTP%+-%K z9uiK(F&onyg~~rg!ho%_^~})mx*cVCe>23Tq3-AU=A@aQUCx%OimyoqwL92KbS&i{ ztnQySUI@AS9fSW1yRnnpnme|6tX+~J@!DPDyiSLm5ILuhI9l#Nfk0NAk42SXbJ!P4{tcr(8u1#CshdM|)! zG1$`7Vw!*;!ng5(RU<(wu1L%x(6u*Zb1WRN7y7Yx+r+KmI9K&aHQph3gz!^ zUYXh&->r8Xyh2(izlYxWdk^&3XKk5DzNYKvX34E>tM}DcYIIikZ6350ehdf^YkG+L zpM)i6mVKDmR%&edh(NXB`WrslEUYenmmi|GX#rDh5zid=Lp!7y%%t8t*;x_N!O1-+ z5*JPtsMA$eguuuT@YeAUI0l2`_R1<<3vZk_%u(to!4{TzN5em9rE0!=zqX>#gZ=PlT~aQl_QMxPOj5wv;c9y zLU*ty)7Dfo8BX~e;!0+oG;$y}kX@xQ9}NFCgBB#F1KwGIK9_FUH;!8yNlS3ythyG8 zFwv*ABS9|{c<^^%lMl&)nx2n>2ebA@HF8qfL{&e2L3vzD{4sD_-~mtnSr)G@d)r=J zOzoZEfW4yhM2qf#82~7k+*6yB=`9B6s?&{ieH{w!Rf^;_0B0)R(+GY;1U8_Lx$(EX zd)hFrJrcrgm{~R>sjff6CB@Rk17WYpimfI^cA8g(wD%&RIkf$Q5p~7qtm=ToI~}xDoUwwP5aY&h6+8?D_kS9gM%s6R{m#{qRU-4spi{SX-gnXPWq( zgM}Vji2-V}999U?EK0o-EF5n*>1i2xt7zN#fWKXHSHE~HoAMlWEW!dfmMs48MWAlc zJ8Ug#(&#S!(C=jqaZ*VOaxFM&IoT!tr(^lSjOHo7=(7&b+NIg#4ME)^u(ohp^gZ9v}@V7<$C%Z zDxcT3qEzYqqf0`H+QwegB4^I7ZvtKrZR3ESsoB+J#ZAt&>gJOwLnjQh^EvNx4IK>U zpD-T@QAc#C98{bj*^ekW_d=T~VMk^OpGb80QmFC}$5!RqrL3+%>?C9}#As)T+GC1p zF4SpQn9Phs7Io12de+X*i8DpNM=lIH=$WJ79a>r94)n0%nMW2P8BUcO_)tm5BEA)WB>BT2m3eVbsRvi59&%HPiV2wp z+B_95zKaLV5{=mX3*%mT`e3C+w1Ocmjy$+=k!xBENrRcjPlB~-`j|QD8)`T+7WfFD z1Kv(? zyi2~`y;h7BAefH<{Fe6hj;1njFJBqgD#F?_=MJ$CLZRA_Ldp}`=yC1M=w@SEXOPcS z&J3o5Qt{oL-N(YJ_!d*!7q{b^1P{cQ_kG*9mAibO9GmPI+Hen1HE+PdBSSA^wi6#0{Lqb46gxQx<{QG2>yppTqZ zdT+1(MRm2`Qk?#L_G-v(IKm4KQ~k*hMj`6LW*wWDgD#|VgeX#;)| zPJ;T-H64lpYPD_%VbC9?2gU-CqheoN-wcc;G^CS{MYvfj^;k ze6a%y(9{^}=aP2ly%GVbZrwaeg@d&r;W#o>gIZF;pmi~P2ePTH-F0Q^{vSTqE<`HU zQ`!DvjMueEVy-Ru5XhkHKG<%-VK7(8raRkSZBLzL^YE_}?hXh)r`eS7UQXIYrzqE5 zaX@@omaO0c6jc+BYGPtT3UH7Aap@1Btf4HQ+rOM0)b|rJDFpX*wHq9lC)3DmIJ{I) z;Dk4ppnGW9|D9jL20SKAz7)IqQqH=4Z3BtICWIJog}tp!yVzA(TXY}H{sUu+pHPWz zT%p)7RyXl%X1-@Wf_Euz!)m8&S3&7k6VTa(i7#2+bHQy2K@=B4^Q80pRo zi@Q+`4MdA@CwzLyY&3?JKJ#axD*wIMJ3{(e{BF&<+FCU>_crZK;6Bc8GHDS9NMngx zP~G~=dswN71DrgO!xqnXp2l~5MiAc5xwe#hJxaY^3jYs9=63>0yB%Cec9ET3Hz+?k zKL1U#neqR_wGM%=p0`+;93xW zvcGUs!ePN{E2OAw7weI8$5KH~#UF3j%@hJc6D=*@=+~*;N1TH+%N-lwpQ*g(0lK}6 zk*n4rK9^_z44?+rm*B5w0Z+sNegnQY>vfMJI75C4Fg9M}3*lG{Ow%{U>C{>qF+jNP z=xR~pSq7uQD;byf5!ofW==yBGRno08siIZs6qQ9Id6k}98wftLYmoikz#u;Ko4sc+ z+@Hf&=d-Vg;;U4Lrtl-RKPH{h%Y=5_l7W^D_=%$>D5t1nOUHpMsQlk)7T9}Car+MQ zTl{ww(Mew9w2^ciuhM|MqE((K$(zYgqC_}`hNd#CjYxrzEduw^p#(*1Nz&g9HjhL` zRrA-n0~~Jc16F$8exH<@vP5^Czxv&m&(-oClFS6}LYuYtHsCj{Tz5`t{w;>w4F>M3 zCYYXRx~c9@qb4ygUGG!d4_n`y$_{yJG-i{%%<_4Pu2pCPrj2|48BBqnA6cuAMHDxa?r>%)niLMAPSr9eHdjMxeE;*CJ1H(^_~Ba$Gkm0pN(k4rX7?GvUzpmh(p7e zPKr;!LyI`+IP|=JEpp8^NN0XJlo0n`?OGiBrqW{Di?~T(6B66V`+2n{mj9XbM`?xU zef6H1^!n|m4k5nYSJeF$x)n*toic78Pqm>ly8G-sl?FPx9P<+?#87^uWU3|?o6I9- z^W#}eN*L?EkL5RuaSIy!0ii8*nsbFXN#?#)0&#?l-|MWg&B;p~2A^>aE;QB-xmZ&M zyt5|%&Px~r15iAE1qIC#p-o7dC9*iBJef}SK{lRtzIz^*kMv>~Uf4*?3l$st=w-0xJ)6VBec=NEx&b8HFiNRu+ z!o9tb8a#0N)N%iOP+a$TVq$4ITh5%&?$=D;vD7n0n^dItbvv{D8{^sHJ}zx75x78F zO`qJoXrJX*h>l>vcztq~s5e^MHf(2G*-C4hkGtmD+lTe})s+i`ZqQbjGHbU88H^sC ztXHy704*|MUiX)15E+Md@=>acQW^Pi6D!5aXeBOUO(l*0%jj306?uur@;%_p0b) z2qdNv=KCcfLNj`nPcGF?XfDOX^&4oOFkk0EeK!4jhgsm6q^Gm6zY+LX`0(oKAaiTp zci^QV9t{)TyT@Ilnv1~j`oaYvWyC#NtbBPU8MP`M&$zUyZ=2uV6URbu;6z%jyzTl9 z_6GLiKZckU=HH-B=S&TG^D-G}kMkHmSf~XdZCqH`kYgwbCz=7rJ8t-Sc8FQ<{#%x3 zUl;b0h>4PMMq<%#Q2{tyd2;#XmfABoe@>Hm+l(-D!vgmLzM)@S**>HQT}~CvrD$W4 zIco!dQ7U7VaYsz^BZ-HF6Nc?#pT2RNcJ&LBYOTM;@mQOqaH{`~av2U`w;){lrFY?> z*Jx-BKZk8)Z5mVXeoxxh6kyRfQ<9`Z1foerJ<+1iFZdBnx++FoiXBqLl{~MPX(2={_OW}?&i|L4A%@Fxs_=Ddl3YsL;MN%z5^V`14@l604 zw>PS}PH4WSz!Ouw!fSt*G)5x^9lC=|enlo~8I`O91XC7aqDCjhW5lYvua^|;n=JRt zAJFa`>zpSV=_x+KUvK&vUTf7Ue~#_Z{Y5FDFVRNFqDhzruf_z@;fK~uX7@Z_W5 z$7kQfw{FDKxGhLA3&L-4dguS%@kv!xr#($&uMI`*tlq_Jmp9M!hV=XCtB5Rec4?@8 zWdBWf z=N!BDv$kw}2!HaXO8PCvc3qHp9Lkz%T0XRJvX@i@9pA=M`2ag)Jf=>|TSEATt7VhQ z9&;Y%fBQTZo>r@C{Y}p$|F^~Eak%*qj1d@WoP-atG|PC&zn`-T_*X*h-OFlG@v-)t zD-AO|&9UP(p^94UxT^teT!&&8Oh4>!1BvXaUcSJYO4$_KxDD^e@HkA16VnQ*R6g`s zt-dW;0}pwO_}zVaXdUx5?~hk8Wh+;KTDfcSj8$RFErxU_MA(A) zNOB+}btb!G`}g3LfKvl$V%Eo7i_meH+37W}uE3hFUcnWUD*P5LSC1CJ9xP$6D{QLwV zg%VEHNED>yyIhc6Wblw_p0W$=vwBhop8ih%d%u!W!3@jzE$`=VL(NF8Um}53-3rUs z0Hb366*aDvU2ie2^!(OR^OJV6?0Fwu<9f`eK5>}-&{p6SUil?s5ivevJjk|Z^>6zq zb;vlRC;qgD>Uqo-H@L1O$rjz~T7*PxKIRXHyJ<{4&zc_Nmw6Pa;NztrUGKG7z9zI* zItdXREGNlDMt|J2Uz|2(7hRtSu-r_|{5<>2D^kCrS@!^|8R?BWqUOze!8gngTI6j~ z18Nr;?pxsZDMKal%?tY?`({HJ%}0|x+Qw9HXh38$<$nuw}VUs4+iU9vt< zT#rVdE=&OiO~b%k1n}Em=c)gdyjUX*bJ@^-5ryIAJ|Uftio;8P5bUORV5`L$AL;|UIGy`lXL9l*W`NHEKzgf#QFTMFORq!> zOsED4&AiT*WT$55s244djEmqa!(p=Z5sE&@jDM}hlf>M${K0Fb0#rdECRH2QAJIdB zUfma_iKaVI4fd7&@Oh!$RM3RXu1RN5j;?>WyWd=}q(dT<56!I#D`xW@vAg75+Nj_! zzGnJ3YW{w=c;|RAUNa%HQ282U0z86kbfO!bxgq(Eg?cAfME$Of6Baq!Llq7F>Mmi0 zJ_I1OhnBAJwo0emK|y=*v>%#V|2uVGYy6xSqU-+2Z&ax1i9>1eY-*k{Pv*3vl#~O* zN8y8#FB*}PXp{5l{_|Wv-CSk*EEy$Ok)O_vEGToz-f0QSMgKS*@jEoI>yxdF`9Lh; z&Ejvy^SP zRU&wUC1}17U+W1uxPG894(U;+0U!C1mQq;(nZV}@R$^m!I7L^oY!yPm4lEHKZnOv^X^CAq5QIqpr(zdLzw1V&mK)D<=SSn0ab7P~#}4aWOJ6&eE8qsyq6 z25r9*j(_j@Y5Y_9ljsYkFnnlRfACQFbK%gb{oqMJ)XFVs(c&(_aI(WUoYDiDze=E_ z^LJhb1mJT1&$TaN$#VeN_=~ujhHVjy7U&9M4UD{{_>govuQJ})lMC|lrlh+Li5t}~ ztwv!vJ|5sQdGJY`)A>n7o9(icq&UIYnoryP#=+v8KYL|4u+XUl_W42)F+3%+yI%)h zs;K^+u%6te++uN6qn*>{R|?DFT6ZF>-GXJ+H^llt3n>VdxfSX@pgEf&J*zf0!;y<% zdcxz&6Ddpqk7X=3PMEUeC72YF9Fi63gwmO0kI&Bft|H}NGSe@1XyOi;O7=rugO&TF z)DdWL|3>}V^FXp}uUO#r8RdpA*0al^u*J2+(4l-Lhr-k|NcC^9Q2Ye-rP%Z;wa}A8F0{CuffaK zI@y7suc_X#YJay+^N(*<>aN+z2=`kc}?&xO?Q%?RCqU=@p!b&>=IJ+_)R(84ESlK z{FA>T3lnp0m(P}a@LaHO!_>R^iEo1A!tL~Q375|X>xuyvZ?Sfer`~Yoy~dGiE^(}p z=Q*X%0<|G)QOZGs-|GaZMN6)w$CcZkNj`m=PtkRWXZFpC8=%tB&*UXt6_1m|Nnc`3 zf^&S#&@M%_!9KFyE@MAt@}dvf>^IaSSB-*6J1noz0r#a?J54rOf>GfO5mtg(VsK0?<23OQIET}P?S_D zF9G%aGFt=Jc3RC`*f%A}qr<2B_=Lw>3?BdJzzgC&xALIBQ;CdVXf|d$5X-7A-&E=| zG{+RHeZ*CZy?IRN*W178(J5U#(e!xAbT!zXSG5Z6?C?S8UtKHzW74{wOMkpO2jq$@gGtX}6L@-y+ zJ1OLE%``s0xdA_knM+43iA(Qfyhh^7& z;gahBbDGgn#|WD~72=tgVjioh7!>N`&c}wQ_Ej1nZz=i=o>XSSjLpAEy58H{vrq=5 zh|Kd?)knE1>o!Kz{IdLiTPY%OP2I|f@I4*nMo#xS&v)~8SFIs^-*>1cx4n8J!hn2%<=)@S7}dAF{btq@%Ik#S{dSg~ zIhlElieH_p%M5Uqcwb~H_XjDooZ;RPN~+zc<~cK;6ud4eK?|;W>X8-_(z)r+*GA$rfQbO$gd-%F0*1mc<07>Cl5F zH>qXAP>)Hwdyk_fuV7eu=0^77{Zv|=!)#ZV?^yp~)eo5gtGVDg>oYZ;j1(M{>sD{D zuc$Py@iAT1_(S!`s)yz_iw|nlb|(o5+QZX)M!K3>JjHDUlytkAtp(TmleefN4Hqr- zZbKKslzNzeQ;DDS$#H7A{uiv%!q&0Zys;cCx8UlTP^iV&uc(^Z^K_8LBCHtoB|dCD zsoy(q5m|y%PWko`J?zB$O3R1||8JANQ@vqRz8EFg66HGTUX&tBnaqt!d_(HgOZXKk z?~$!ip}vL~suv2dx6sWvG^ZDyYU9sqy6bxPpH1aah<~8zWZgzgZByO_wEUUj*_L0S zpG?%do&LIlHYWpYH1Q+!YY;6O!`&n+w>F_}&BOB^YwV0bO>-MI45gXbBCB)P?3?3yN+qHltpii$r}4UO3j3gbuur<PPGP0exw&YAy7l z_Nt6^$~0anmIGE(RaP6U+E5pUiTt4Yl!Yz08b^E@`Jnu+is$YEJYez#w&k0{ElRAS z_vB|By%_em7`rt0@^pwb^~xmr{FvP}o5A+s$?S#sZSIs(xnmvJmgC-`-cfybC})i= zMJ)0^2;@KFvmway6M>HAPYA{%4wt#k$8#Sv4zQW(&|*>;veIQkePU%)oyg)dslJbN z;eX$DS}$ibS1R@2dvVK=GD&aMo`{mQJB!Z^T;M?+Q``%9k4iLxp@B$;9W_a;Yl>&6 zy5YPKH!0%mYs;FZS-5L=Ur~R0G*)bJ+&C{_Rg(9+oj#ZkP-yfpSNqU4Csg(*qw*v5 zGwYJ*;>-z0FG#0wjtxyaOOi_a!*`s${ZO@L7jYoa6=iW@kb>J%h*}bx( zLiIEnh`8pBv3>X_Z+LF0v9s9Gvs|>j1@aNr^x@IrYXCNCvggZLOHEam_o#;~O9(Z0 zC^3oMU8Sd9Mx+`I?-4h6NGz-s@tHLghi~K#^&Yy!)SY~v9DH~tYb9-N*eCDdrBp6) z+viwp71n(nvr0Z|KKZ1Z$j%cDDEo=d*Sas~N-fb5eIfqnmh z8?oLLx#YK;S$xM3r*SE4$XUqh)HRU1w&=Rb{yS(fTQ9fs(VyYM-;m~|^6v&osF{~)e{Gm=?ShlGU{D_vXniC5FF|JleSKq;n_50e3n{1S3tl-IjTVEz8Y zf8fDKHip<5r_lZIhgi)R|B`{!_Gxyn5{HBmzvs&Q8>{s{9lx z+JlL^Z^vQ=rvhS^SmKcI;^X3?{XtY|VaX%paQ(HxshjEL$?~A-e2H2xzxr;ROL#4}Wyi`|*Z|yn{JA{)pL6P*%-W$o;GJpJ1{J%7{o^kYEf4?ka1$lS)zuDrtJn@J$ECsnWcFTWGA(qJANY|8mvVrSI@YPt@H??Ayu{yV$m6; zgL;Rm>y_WwVtw1ZgDt+OuM-*K1W*#)D8JTz8PVjT(w&*z5G{55@e6KL#4U*K!6bBj zG4+-}FcP$BJ5lKl11a!11$2tf5CrLpZtcOqdM{$B+l4={cpl_8`C`$B5k(bUJh4D z4$h1sS8tZzaX9|nxph(8!+N%#c@C#K@5=h8(T_hzaR?xbuAh3145W*@wp|bVDypT!cU0c`Y-NS1xq0H7f2Lm;W z^ViG!vz<0$x0I*tm(`?~MP11&UgK--Ccf3Id~-MznP$h=OE zS$Aiee(Ii$WXsM_*BA31s0_pJKA?!mxvN@_&nK2s(t_;Twj^klWv_(P!|vR+%$PQA z8$sGcX*))yjk9-O_`Kd>wxd&Vz0dr#9LqHsxe;s;%zS*-tz7ezT7K(7SK;$3oh}Ry zCv=m}>&XPJM}PB4Y*WyfpEhAw>ecIfMDM$3PA^gp27xMDq+YtGo4F|$={H)4g?Qd< zn6eFt6o6v?%#cZ@qf&$DfUPms*+1bc$M3ZcvZo^r2_2r!!b%hCWqjGx3acW_8T;Hu zt%Fqw`B!Xb28lD?JJLXaDn6IRY9$Gfu-kd<8#pbv4Z^#xt>_R`Ca{Y&q;O+agKRw6 zi;(^&2Oh^B5buE3B@@DmUT#`^woP!D5$Rw)(C45x9d%r{r!>Q|GxUc&`QV*dtUE{( zv(|g_lwg{^I5Dq2VWYJv-{0bHUhg|uYo6g8Yz}y_!kgGr&iHEjKP$FKFD;o_q_`R1 z{Hvfwhll5&l%yii^CK)@%t^-3YVyIvI%9W>-cdwCLyB#Z+?CMKrl7XtHv$Sfetv`+ zQ|6A1J#6i=lYjMJU3TwS$KXHtbh%8Wx^{V$xu%tANat#u#Yjje7|FN0v zWyjS};)Hhl#@zI=-nE*UN9yptt(x3Ui$1P6^D)`AZC7|1P|27z->O3((u-{|`gDcIMtdvHzmiF&G`BdCHNE$!_8$*4 zK#*2$dI+@))MK1j;_o50Yx^0P?u#Hz>xrWwawn>PAKb`TJ=_Y~c4=x;ycoI~ID1rS z_zz`C*%hEiw}28Y#drNTJCER_R|buS-npn9h7Up$zRRxt(#e_D@4B8%d0rVWD<^f2 z`3BWJ-4qtIC3a}?Ib$RvC~4#-`o``p3Drol1)=e~tX*BweOPAUU(72_HK|C9?8&7d z<-asf)NSV3STfhF?ci+cV{UfYChDS^m7jq!#%|{3!t?D=_msk~uCKfCz5~F1-hF*L4lJ1b+y|^V~_6m=&-7Lt&XehR)SP z(M#-5hO0%PFS2!6=7s?zsS7)f)?ojv<6mK!CV-dz8Th=b7Q zN8|hfrkbKqM`=eeCIvSYQvPLW#Ksp~@R7ZtIPI+zL?vc9!OXq2zR_y-^NX*{055=G zGCpF|t@k@;$q;}n2-1W|ozk!*EpK6>vKj~$%5Pwx;8Eoq5{@$NW*1 z6lw0}&Dl4b7023rqdnYc##F*8*X5~6{#c3P8yn^EE7BAU85u9jB?w%Vo z2p=Zc;2H!tM@{>T=A~f=uPkgi!fWb&n(5d51Lk<4v9y-zNcBtA=-%TyeeN<}agol| z8>^~cn3Wubtj5?c>ej~aZ9x$_J3#}FKrJsH?f3qj*N|f^5t-*}$cw+~&Kwp%dBaKf zjFm8L(fM82%o64SX|sA=)ZH22FmDxTcM@_2-_686Iydyh?7k-MrQmO1(7R>1l}wmr z1L4sctGI9-ck}VxX_l^pO6e`|k9)+|b(fvp)J~s(U))2mQG#r~@>jJamVR>wKjiT! zDL#{cP4&J1-YBm_yzp^a#$(XF?dwSX;F^%d2V1C;X1dXL;PO-&z_6o-ZIE!`$mM&! z3^qk;XfL2&ZVwn3s?O@4eArh%h=Mgj*GKlXs!Qd6k(*Nf)ZV5{-P{nK$}I~`+`b+H zT~ReQH1*SWd!BEAxXBJf7YLc3Q(A7`b4Rq5vTc3{sdP|l;bA*H?60b4@htryEwl=J zIO>B(LoPze9gLR4>AS}((Sd%~$Azcwrk+T8yEA_fgZ7daPnyDl(N^@;txX$IrBGQf zc2>LrFYJm7aVZe00h z&!xoC%x+1dGtZ^BRnA?EJhI$s?<+Fh`=<>lI)oh-;^;2Vb{n!cKzRN2M?|{awb8J! zue|GJZi)N1n!+C!j2-%rV?W8TEMH4-%B+Cfj4B{y->~fR`mnf545^>_l;OBQX!AV- zq|k5HzIy{&Kx&OcN!_hO#{cMn0~pT>JB6=$BrHvW=RQyVWaWYl-%@nM`fE!wcB12v zWCLEc1aF2)?8d7iZKn+aEkK3aoW48pmmIBl+w97ihS{LSW1~?XkzB+Rfs&5zY zM|YP?oO34JtH2(7dbV`#^fX@!{FFidtL6OF0j@~0ciTZsvePAEdeaJhuC0qnPdIGM zfOrrOQ<57O&;H8i*)TfCPNNHfp&Da42mHI+CLd@^8e}5tbOuQSdCw!-k3@Is zw{uuEg>4L*HlYlGiBiALKE2-`s&4KW+IBUlrpgwHHp*&sCF@$7@ARaeHg6b`tFc=a ziKpOW7I$rJGJKaK07)_24~$ea8b|7E=;0w0KK5btcp-apDhoyD7Fz1?jnMd&!a%)P zli^mI(K`MUsf;7@s-ethy%4{!Mcxh2_+-b{MAE{YvD}@W-t0-<#h>-(a|x}RTe|Dq zrMub_4T$`=b#K;={xglaoZOXFyWbpU5AC592jxKPq1{*XHWF|4Nn<|teZNi~RfL-7 zrKb&#aMrs%75`k1cHFcn8<_=+>n%5jA&z_RL2qgZ2PD`W5yk$!$RqUX5WnR#QXoLg zdXMY1Eq}Zf%f;mWG&XRQx<;*I;)`ocFe2^a)%B;Bt3XeU>7bFKT(Rbzp43}+sz9;jk_kT^WkK!Q(ySlxM z{r)~0pW?95B9?F*m1YBMk*=uuvuVNN_(IIW66Z#E57s_hYYfp+;5j>vH~5Yo<)@T_ zuk^jCQ5;D>K6jVzxM;Pb3){9-=n*c1;iyZR)+qa2eUXhSV&b6;7Y&6~3UcK4k_7EBuo&|F~w$ww;R75=5lz?wVQ`D594cpZEiPueK4POl_ zKf;`BI1%^L|J^JYNkd zCx2kEelb6<(r;X8tbEY}J)*5yvDYfg%ui2?b9&XEeDH9yd{wQ(ugze`W<9{s;?ONE zO4_~=)Utd zUaQ5@;_-pN-oE-}PU6c-eXS3t-!PE>P9GjAD|wBm)XptEq>a9B;*LVA+dQ2urB=df zlN&JZY->Je2+6@Z+;-(p>PqyTcyNmDQ3t?PuRAB6-g($%vOCaCP1yk61@C)9wuIl1 zA`ZLaL%Xd0O8?eJ7km_P-R>Q(=jZ1%Q?ovJ+*CvYK7K)Jsys?a9Ux2Xi?s<(yp6V6 z`PGzN_D%ECS`|BB`M=&O*+(J1=O&i!*z=Ee^sygdWsXVmb$L$J`m_C$N;xRtJu)>y z%%^l&x^`!to2S&L&;D*~82CQ6ut_Zm4FA)@a#Hc*IIn&d%0uF_a5g{qK7{Y8el~z}oVk*0Hh9=Ool_ipNIeV)2EDrrD6e(4+^MJJcE0}$YUNE}( z3{jN1#S38V6T^RSC;`#NY)by^J&RLM0Ip^< z{+0`$n|zK=1r%`uO~=yJmjK@YoO?LuDcyO2_1fnT-A^l+8dYsWci%ZrYetpJtVsr& zc?$c*kuuynqB#mh+|hImM8-2UqV9$=C-^x)q}zs}Jq=T5rT@<)=Wk*w2+`TD3pP0E zIti#fRh7ot4{dK-^DoX2mG>rk9s+`FlpTv$o#!&NF9yBo28kNKI{Z&zHBqTF?*%$l z)InpP{n69%%_@?X47wX7*rNVP?GEbuj!h=^E3sF<`%y*CBe{~*PaFaFh;yWXs*;YJ z7Qly{gE`Zrc?pGuq;dYJxq4yr|iBV)S;Kwt>M6^mS>HF z7Td?6?N@~83#s}P)K4Diy#zY~L7NJGzV&yd_8bfGfWUh43Z!&d!LzbExJ_#6zQ zh)->odVhR&n1-+Q;T2-NsU?0rW+iM3 z$*-iNH7R@u-yR=ysz`zzz0~xsb90_( zr49d-K)W@z>V#*pSqfG^4o$=9sQ}N%;g5jN3Cz} zUJCU9nRfu+wZ}IY;-Y~eov(dflq!Zv?_t|~9aIMcm|4lCVT-5rP6zKji?JX4a51n% zNRvd9U_7R8+vb~RF*u~R7L5CMKU}c}D;oyAyXE+~RE`2chhS?wmS1l&D`<(wAN?0} zaT=}iMyM9(=l5jGv9{H-ImWISe&_Vt$;PwIc=vdu5?H`z^HF>w^Wx;hLX4#|$4>CKK1 zxO9pLzw)r*p}qQ^HIrL`^^U~(ss%ZsDB$V?x|MXEQ90#k08wXjKWOC$6|1;wq~P6_w<=R?{f&}aIV+b5l&)Cu56th|e4uSR$N7nU6at*aXkldA zxQymjbO;Wfw}TfJQhh@1oFdlnN)Tm%q5MsDMu%!~sYo67=wZ}V{}{pXr}#+RUk-}4 z;;r~7Fgr}~gK@wZ{JV+VV*DmmqS&pV+x+Mbh?Oia+$XUNZF=wOLG&IF$~oz8YT5OL z@=(ZnT7T!*>f%I6buM%vWhO|y|6BD>*Z=ey9jGKGzuzC}i`gT_pLycy?S$v#_TIat z@pbjszU_;z)5?F#Z@tmaNk34J=c__1`_ylH{FIc+#iy$99Rz=Fiat~o0j)G1Wd08Z z5e^kMOWGX0d7O`*`8#iHXVA*o5Ai1L=i+c<=?sPKn}%NrM-gv+9lQ7J0(#ZC2QT&6 zAUB!L=;zP;hOx)#z?hLA#{6Sg-X7$C8GdoZhAHhQNK6C&rh; z72T1j1lez(JYVD>6u)zqP?nU5-!5ZwwC@)rItwkl%2T`-2|Ybzs4z%a+g=>W!j#f= z+!P}6OIG@?aWbWXcpo5WIO=8Qr}`PF{Rmt2eqia->7ly#18hJj(V`Z1Fu6}sJ5^kR zmX%~~T%p2ip{r15+nT*g6dsA@pvi1;nP1AET+e(+W#^Y{PEHRPRAVwDbU{L^=Y1bBO?FXc0lAIVAa81Q@*>Q5niLmM1E{nylzoOGtX{S!TA~A{M9n(QAM?6ZONYm&*P0-!BhxJBwJ3TyZbrqzc1COuf|y=?HNFJ)DX)jsvC8 zJAK+_6ocO~npzrNe{bq$**!UuKKi`uR*@qB;^$$K=3#r#qP!jJU8gyn9CRNs-$i$4ESCyd$X+!9_v}wJo8(0k#J`ZMMPeMh+305 zmtU-0Qc|JC{ZduBD?XQl6%42_%g;aIugcHGPc!cFnxY<4VYgGDURm}^D%d_L1@WgTfHtoA{07(vTt8Ge%~^~Q>?u< zdw1MnDta}gf*G^1~F@gA;4vi|lA*EIM z3f^BwEZp!8?_BJ1N0riRBq7^5P|mGxtD+I zRD1nZhia3?4FZB{FLzbh>FET|*EB~}mH82f1^1!QrM|_Z)zBPiuRQ2nC2(s+=1;Th z#t;GXAdW5Q{CJ;hBv`(+QR!1(EO1NHQ_JU6A#uM!F!@F+sVOEnc`uG9w*3A;1qYQC zZYF)ky-=QiYW>%N6a~SL9vJLX+r_>vUQ@w|iTC**E`*hLy69*7=EQ2;<|B)zb8{Da zVYXVIJ>T~7GGt00YVUT2<(w6c_XS-eCK7^wqP{8-dQc ziQl2fVB5LWvkmJVx=3y6eatbC9fZ~ELz~3GgH(&KN%c?B+6JTo0eW!UoS2x{ztvK1#;Ew7_wj0Sk zl|rn=>89(|b2E}ku@1I7u*F<9#?7V=p|em~!G55Pu$L!LzG*Mu^fokUddZy#o|8czaMlhz!fPbp_3aN_V}Uts_^!@beHyNHE*jm8zKm4qul$e3gUA#xUtA z3d?nkPr)|Qhn#bOOt84Ep0n162Q}Yt!-9d#FTvd>I2gw9;qEq)o@s{1sg<}vBP6e( z;jU?Ola*=F@0Cl$IHorDqum1Yg7}0Fzw~BI@P{{+cbioPNFKIt*4zHcv-^+R{RA0k zD{ef5lxLaLL)9px81cV)3vWDl?$5d%ZE|WVUAyvPijs?Z2?A#|C4R6zB&j@OO&A^v zx`MZii3ZY=eU{{>v|mY`s9(UB@(SwwUa#%odJa%bDHZ!mO?KmmYns z|3lp{xqCdFFg)pq!rdfxa}(css_jU=|C`kT0`?vJ!^#D97k8xO6{B}~3a5z49uD8Y z$v(Y2(>8S%^+vg)e%Dkv`t{`U=dzC~;jwMqnY^{PspcpmK9dJoiD7vxb!`C3bugMu z$uv*yC#!$fME5iI4ONMUiHW4fhn9EreUH^4Q`sEm2blc3KSk` zS2t-jC8@S*f6R29SomB=X6&9w(SRx@Mj>m8Diyls>abY@0UvLZb7#eqaoWO(`4r5?OnRl5pDn2 z61~*4^j77y+|(;7F}%vLVRue{gMSDr+ogbqQF_5PT8k5S1?5V|fipveW3S@T zkFN*I_)3?0_;L}ImF;Yr+j6Lng6-e?LrhZ9QWJiKBRBRRdLa3ZHB}*X0;TR@eOub) z?tXiXO@e{MwK@T;l$Zi5>Pxu2Pr!bVw?FOBBS-|p1>J`-Um#xUj}Trykq_Z?=ox=m zk9Yyb4iswo*H?BNraBDEBk4S$!Fq9v%iN&q)bzTMP`YC(us&51m(VLuBiU1ke(u}~ z?D#&`<4>kr){(k-eZ8P7y6lFZY=*0UwxrJvg_8$g{*U{rza>sy>j&e}#CM!*4b}c? z3qP%IJ=R+q5Lgof=LO4c46W3LX~b(-5g%OW2&v@;H_GI2SG-djN`#SDG1zES`#M=z zKpZ5@vcBJP0pvMZ;fEOX^O15SPR(Kc<{|{VrIk;=GC+s?n&*Mx2~_4H7T&fv)HzD1 zYro)ucu-t~xN5Lhi0dboDrWyOLmXQWg#hSZzzUtNu!hO-wkG#W! z)2#e4V<*E0sKJApCL0?zE}l}lOcv|94_3E}Q5(6bu>5wa)xYoU=`nV(w$1otZ&!$+ zfkT{*7biT-AceZ?Hyx$r6cBIyY)~NCi6zf}-tCM`_LDT& z_#4ojwEzOM#(4-4vG!Cd%vkwBo?n;IU2OUnb`zZH!4G%+;ukW6Bj~uu5^ZM-s~u06 zQ8#*6OvSUW` z`)!XwBf*`}TOi`U+IN)tgftY(WWHW0I6J*}@C*YJ+l+jrFA>PRg5A9?pIz^WQ!M$F zFGOIS)cc87f8evhA5a{@X?7shG2ZvR_}HMFP2%vpWU*8|dm(-?=<7tGqLgB3?L%YW zB@34nKS6-_41hKQmGAp6gWWCGXl?clwwg0INp7d+LytOvYnYW5xu$#kl#q)~1rF3U zT?(Vwx30D$Rc4I>GHzOXyl#n;4hs=kcRf&Bju^-Qujnu-sc=Yr!lqSN{l4bX@qLH= zWeG*`xsa!9g^CvS+;FX4&$GoFOw~lClIeEDYwwDX z2B(w(QN5?G^M!-z_J@~3aYtX3A0=6R98evIXMd+S(=>PbN8PmCp#h`0#&WTs(bFhK zhr;PwmHBrY|8`#}Rq1J2&@zU>q?NO_8#0na%d8R^Q@Q_%q!8!Q9nMaxWeF5^4<8I- z-oQwMm>i=PZsbho-kgXq-HB0b%6->e+#vmY%sRo|KvG$@Mj3=gH{*+vY%s>Ms!X;kA|Wo7&M(_>3LK^8g%y3Y0xAQp~QL`)PU83N(MY9novC5 zQ#P^r@lee-a9`}{nSqRvK3lns9TD%sbO_w;T>LNNBI0wz^I$ZQLYi*x>Ng|p(kx;` zKL@(>X+-!>pZdLkfW8NfN?KK=W#3*IW*OZ>=I`_+ z|4gVVIu=3d{uRCYUb9}t*>q>=3ZH0zk50?ToxmFsUleN@IVhi8Yt|Cf=Oq?#hkAw zz!(zHXHg7xY{M416$fMs*mzFEUTLoJae|K%<1#vtp}UDfaj=mH$?I<7+||YxmwJxs zKfom@p&UZ@nne0y5%`&a_3vk@v3#7OG?~W+f%d2pW~eC42zIP4Voc$Vwau^TvKOJk zAQ<4ShQsC=C;#BgFo6!gF}6DE;tUx{;|#3AG* zu^+OxfhC0z6q*(qxU3dKdlF~4hRTWlrV_maDL9eYw640(GH}PK)Lbg4u{Bvt!~RXQ zVg2WJSjB*Swx;3ez9L8H-unc)ue76Ei-aWDQO%K!z^uOXR{t$rZ1?k^@O!?2{Qngs z+HHiYnFPu~iatCEbu!y)u~w|JV=HFo(GZ_zdn28)F~M9s0y!<%%9!qMmt(dmgxBZi zA8W_mao!mOv0x`@gz6BB=r84wDeRnSXY+FfURp!`JMZyKrAa|~X}PlK4prl;4#bf` z9L?J*R5F~I=xE7V0ii@j2j;%(RO626F2COPzm1#8eu`566E`~B@Eem-IytO3vMX6B z=%O0EqT8KFV04fXC$Kk&)_d)#-s2s9mhFNcr+UcGQ%!~UX-!A)7i)(bJmjoz5St%y zcR>Dn(gn3ICMRK!Tn6ec9^E^fL9OH>K1Ok>IRyKiX8B6jJqRS_&vn`r+u~IY2KCxg zW|`I#!i`l&Co?pp?WvhQ=TG$I&N6=C6H@2P($`qAVdhPTT;{@|ydsptlytZF=eclU|4|u#W{ic>|K>Wtt`nzQN10Zq>-K|+uHnMIs4edE90E% zp@N;|+)Y>TTWco@?bu{l&D8yME}kreiig=>ZnYuOm($T_kOoa|Bu!*nB2`$2F}zb> zQtLHvJX$rN_J?M2sxIB}Ir$$;l27SIsT9DJ3|dq9Q!9a0Ij6!-Ek?VUuCAubHgPdP zOx8+~>cA4b8x(tWhuUFFV$%9lZ~ju<2XaFSTT`?Z>8Q~6)q#E@HZ6oLx@m@7p1b(B z{B)3C;&)(_$LdVYX5S9q9cCh=z{h&5#6dt?>bQmeiJwcu>BT+6TKFraxYrP4 zsw9YaB59YYsf%28ugx*~RnK{ntLYknkCu;zsoAqC=J#xK-<3S0NMBSEKCT_H0d;0r z)$#dF*hv8lYQCv|bsQMf#NM0>`Et3Z#PqsffaS?0+FAw)B+gGrKBU_k)95oVH{*P? z9xuJ{?nzK)CFGn+kL%1!sF{n;F~#!S+X`*Y8UW<_!>Xi_VF_K!9NU9{+4pcuob~fK zcz|5~b3??-bgpw6Z>Huzyc~@`@@(+Rg`B(R5KXq41^C2T3 z(DPO}HstmPUzPG6CM!VFDqUY<{3(P|zr?)XG{<4xF7(=he9w&CnL--llC`K3J|g{? zR0KBmG-+?&+6y22^ifluk6;l#5TQAv3_C8H+Wu{0qddEKpp-q7@j@6GH{Az<_(i${ z?wiIWKS2REksJmUM6)tSw?t|T=w{S?nc;+S{f<4aI3Z_fBt@@`z1vDby=}TRk(mJ`|FHnel0%sBk^d$ml0jh1<>ds6n^{xviJX7%fxlXj$7oRZuQZo${upq ziNr{{@R1@Unbx;6V_S5rP5TZptb7lFJ(bn&QL|_#&DXJ>M8Uw11%ZE%lFeGt10H$` zV6%6Cz{PHUhIpL%uExcpiT?eWJrxhjt4*d$WJx7_Y(lzkcy)K_Qed+!tdU z4p?DVA?60dESPV9XFJ~?H9^vsbq@Qpueh&9mu@A*Msp69zx$RzetNuRbB)Lhp;QyyZjh+MegnG zWOLnE7WOm zYq2I3%Y%gyrdT#ue>{J!^`1`2xO8uCVX`I8TeY{sI#_e+Ao?P+SI^Ocz@InO;h!{R zIytst#`V|b7g&;GA>T}Ty9dXsy=o=D2tR|gbb>BR9Tt8!ym^S(VBgP}uKYdQVBz-@ z1#WzXG=s>+>X?Hfk9w)Fa4f3Ui%)+(QD=dV>5F2i;MPWreglMiX>j7`)I=_JqG{O+;Z9TwHJIAw4_>A&z>2fn;w{}%?Cb?Ce$83Mw65~L_it_71swW0%{fhyK zUK?jb!BWuqpl_{<0_DAO(krtHomkJ3qTcG__iO+0uLJ^$hNsHCTHi9R2;#mSy>HfY zmQf0vbFS6)Pva~_1?IfNPRi2PWZ;%&vcl@r+2Do{7gre@FKDPapn1z z1mQA$9doFlle=W9WdhZ;BYm)Se&#mSjcHwwW{x0o^1DfA*)tONCZ((Xg|r*xUvETQ ziGyOJ47q^Uv>hKHMkX)v8SK=f_Cz|Ldq1s@o9{S}DWQqNKC}VSERH}Gb`K9Pk*yhr zxD+R9PW318mn$WNC!x{nldgD>kp!0N=_Zn2y~OVS2%egw*zusKSl&aNA5;E9 zpA;tB2&d`kDvFr+)?;r!fD~#k7{HC3by63f2T;Vz<05g}vJ>Js@<$t!P>5x`{TeEGQ_Q~nWST;*Z9=JcWCY(vp39!#s5kOHU7^s^2c`l@B~w@2 zLGeh7+K*Dk+oBD)LF&XBoed#q+8lu5+DKR3PS19A`lTj0s9IZIGIs~P*npXY^~L3; z)z~jNeVPtCj11JmK?C%coe5yNL_3*EjH6W4L!XF*J&H? zC0xR$H9a!>=Kh?T?$dOoZ@u_gZTHyK(s9G0{#t(@rQ@d0td~OysNn#n)}$*0Q(4|y zK>PXi4kfLC+fG~Db8ls)`??zU zR2CEaR8&v8&FZA4W&!M!+YNelQ(;FnlOysP9+V<+tTyJ01Vfw@-2YczFzTY@hUj1G zp@whhNM-v@KA{4Svd7UwOG@=G$N)2Dw~!Oe!C;8QWySgn80I>gT9gp|#lL~J-G5WV z=$Fbh^=h&=DorFdvPKW69P>X7RZg#JErf-w{}=pi8GMeLa|&6J@BqVf(7Y7q5On-r zWnT`qkyX6>8`x!L(;LvPMd|N?3T~m=juU)GqK^?az-Ig>JO;?S7 z_xw0?(}HVL2eLuP)a?lvx^va{bZII6$nPB`AwlsL3495ahgKWqk#7_Tk?1!3mTbFE zxZXAhZp^NZcf;yaN;wc_GT%ZirhWp^oxj)CngtM(YTV?+--$~>_%#va6)EQ>x2|N_ znEDx48MZchx2EGcjks9N?v{=MT+ZX5C@Fdk>|f-`3&hsjC2mnXl*}orgjnO0)ZD3) zp^AaN56gi=VeeNT%}b`H0M2aI&!U$SQORY3`2k91HuQXd}_-Ut+#P6dAm9J4S5&Yh}{2}niU*FyYN687=V{XnQx4-L)avn2SPAf`WqB_|Hu*vOw6>F~hm;ZyWz$<%1ANwP^TmOB8H=HVifQr$lhJ zFlK0smps@)a0CZIdKCE&AlJy_B|#c7!Jq6T<8J{+*l{;7g1@!q0@vXJ%zNVH;q3hc zG(u?Pa_@X3`$(_t4nDZ9ks0$4->R~Qwko5t!;DTKfv3@2=~~2e`_+p{0q$|H!#k)K z{=M}M>Uz{9*7j*xLbIhu`&O!*cw#29=j8~Xbe~^R!^aQ4`2^Y7tp7*o*Tm+)$wJ2Np0JU^-h~TLv2|kims&qqtMc>>m>8I6>s7sEK z=sur&q50CCBnu|QJD@U{-c=v0&g`&YX@1pGqrR(rZC1VtJ0st+bwI&hMK0{|m1lii z>64x>&ZC;R+ipLgf@ajczHc|`#_}IaY#KojjQgu+3NuFr`gm&d?yK00L~-jYOPL*p zpqy>9(sU!{uv$nC&~Pr76j%fr6Rjy#8im8|Ms^cQ|Y9X`6XL8s}g@ zB%VJ>lb5yHP`a8T5ZrZZ+=Z7M@tt8!vG3mxr$^z=nN8K4E`Z)jy)Cg9+oAD|KiPNg ziL(K+$aKo3^B3Q~VG(@+tDtgq?2~&C21OitRR^br3jx zLo&`$_PL9P!qxU2Z7>r@ckgvRdM6cN`@f|IUGSn$3!f@?WdE}JLR&>muNKM(a~Ow_ zi|eO<;n~UE3?t;cJMwC2xM}Ic{~k=cqusyz=e>rkzq3&qZ5%&zNCvB)n#^G-cv@7z zY|CdhnCi|S3*CI7K?7!6A?sVax3`}P!#8Xf$1#x04!88XCCL() zDyJJUR@vz)7WtQ>`Pj8joPj}6Y2?fVU(wS`uMCI}+S9ijjykjd%L zZ?h3jy^+LTKZMt*Efv@r}`vo@B5nai|ZP4NyqqTdH$E|VZ3nxE&OJ1XGp)z*fm z`s7BP=CvIv6f@fsRMMh~tM5L8Epnz3J!*-c1iK+8AOC+e4SK+UD(7bLu|4 z^DzO>0jjLwa3NOBgHoRwoR0%Muo6?$f&_*0#XZx!JhUOJeRki0W5E1a$(7yQcPHEy z5iW~vEc1@Z>Dm{Ivn>d2MhT%RFB_cOxMkTkqQuxs+jz>YE5g$?y;5g-E@;?t>*Y|IY;=_1dTMJ-_`8 zMb){4s$dut@xz}RfaNNEX(`%m!`uMefWy6@oCOq zjs?X4zcNW5unu`gjoTllgQQ9oHP?T1I?sKc;TsZenfBs@*KQo#OA#v3@OGb&PI>+O z>q*p2;_@zAeae4Fmo?YA=6II6Ev;f1*7Knj2eEsP%Ulaou3<(3(I)A3?PnsqoR5tX zC+*^N9C7vu@`JB_Ffbf6f@yI$WV7aRm*4oX2d-1Feiw8cAWGBqL9d@cP@)1uIcq(In40s{`XSxw$!Vx8_Bc+Th1^^ zSeBFCW^i*0!upbQ@BWTTszpASbNb)9x5AROP6-?&*?`{^9A-^@_4l zU|%Kg?(8U28u-S@R{)fZ{t4)&8?fZdHh19>$PGv*>DfavOTDdA!Dx-KSMn!(rW&aZ zW4Mm}Ptt3~DA3c;6Xnv>3R+fnQ06$Yt4~4_6(=TvjgnBrY)hvHba5Z}hv(*DKuh4c zumiTQ$eh#Q@T{4wX$_#QE$(M>@F*dAC7COKNIK7dUb^_7GO?Ae3y>p>T-V5x?N561 z&P>r%`oCY-HYz;8n+f$bP7kw;ae*~OaEU?(t;Hi$M$Ha)V@AtM!Ub~R+W1I{!NO6R zJ8VaVR!7`duP()1==o@Jl-XeN6so^27#v&}b$g*&y@1xj{~7Kgk?0- zL)|{B%5mlHP76pY&~d}dSrQp>fQ-vNJ%2xoR4WoCKH4-saQ@GiSEQ^EtgaQudlMv} zB94H?P-H8>AY7Tv>nU%7ARxc0KQp9PXOPnOl}8t_2fUS zGh9W(l;1}A00i)nO#=bK#0ZdeCSAmE0BY^7ngn!riI^?!HZvJds z^KRVH^omKCDmUuaNSX^6vwA1J#u^_dtA|Q^Se>9wjUqR^IZY<3=L}T}8>%xth@=I( z-Bm9BzSCX!$Z#s@my3P_bb^CUx8T~i7+E`tuDE{0V)3_v^65(G!*U8g9 zniW?@Qon7-u^dHm)Bcfg5HIkE6IUz>eqDb0lrB4WIG<9!$cgJ;fOwv?gr~B&^>*&+ zFQyj#WLFXDMMXPXbON_f>)8YFYI-7`oWNiLo3{0$+52iXE|=THywjS6B9nW9 zr%T+$z6J#nLvoAbAayW8l)Fr>;(w=6pw~(Df%fj{YnrFyfi@+2y0%gjjmJgNQW0xx zu_}LtRI>gLVnCh0dS$f^c;}N?yqOp5kDEg3n?7pwSz0VI-+J5lUfAdQDO`=Rhd^_j zuL14Scpqx-ZQIuGy=&RCU8^>XF?l!OE2Oa!9h)Rvs(rzl^UM#Mgt>=5D0-=)W8PH_ zz;`o3)<(3GtZ?~mTjK~ViHYtzjSck7*Xc|!dQSiMIsYHVQm?=G`}*-cPWe6NtvL^E zw$#?+n~FcVfj`N(*1>8noZQ&ABOWxwUaahe<6Ys)ghn-bCXg>V=9uphrpSSuMe;P-5mj>fUS-DkfV zJz3$|!ydG+Yd+o6H4m4guGZk9Ml|av|8&qB=UijVztI0G?hj#I9Z#>Y*4-S&9#XQm z+h=_5BuLC!)!LA%&)oJakqd|4BQ?4@Zmu;Z*-o5DEnVJm*65F3v!3NBYI%hiL&kSg z?^W^LIDR+M%k=qs*t1*s*OAp09Z!t`I9?fg&FRy$qIbsmlPzK*;Kq0li#jJ)k>}F6 z6K`9!W6?XE4i9CXaDF)QGnbO@MNX(=ZdS^xi&$;Wu@B=6&M{XxPRY_iN9qEiX`|X= z3+Pjgg{gYWP25g1y{?t!1CBP2+r6=BHz~Zh6K*2aw&UzA=l2>OjnZYp z8!pG)qX&5befLA)vSobDY_Ene{z87lh=RGOPdw_7EwZdntT}(-zx1&dAiB{VtcAJq z4C**8*4&F>yQqCkBdO^WTDt{na!^$Kv}HgH=!+hcVjm!TSQP<FabTk`Tnm?pwqsodD2Ap+aJ8QhfI2hsM8j>I?O+`&@waBVx*(&+3yA@}aB)T{UN z+UuA*)OgR|=x3`|UQs?1TT#dDi?Xfpptd09As(4KTQssYK9Y49>V8i0nG?Yrz(#aW z49%qsbFLD-R;RtUO?`&mv!BE@ysB{x{oLi!565+U%XLrIMM7O}Xry){ywqP|Bd%ID z0(BGLvS(}~O zgm(kJtHg7t<8&sa?Og59)nAHy(ePV29vh{2&gbK^uJi!?Yc9Y=6Wjs6JG{f5 zx2olROUG<@j?+6Jf3?`30~DKAuaXDhIz_LSsLhkyRL8~Z+L5_rfA;#~L35YV7s-7x z>0!iQMr}^}m=9*sKZo9lyx}_N4uFY9A1rxi7n1Kme?|AusK%wl3cjrSKu2aI7)91A zct)R@a=NO29gn5IAN$Z(EnM;^M_R|Ybze?lzjWV#{i>Rp7j#;ec`7})*Y>p(UKhLS zIwP3HEd0WI!F!mjnG1n@6Dz%*De^I7XO#z}N0GetZB*Q&<=Kv%khe^GfQ$j{i`i-x zIn$u4iu}sAisKjOv{yLp3;YhAD|Z=f0_&coHqExr+yKj`Ci^IQxiALG zYm>$vkaAE;+(dhX)qZ^IyDvs+Mw#I3!FNJ#nd()brrXz^^uxo#hF`^-a(Fo5!ZFIP zLH;Ya*~05uY`@|)Vt=>HaT8_%S~Q#|dB(n~V~K0~ZaJ(u7@jMM`{3K*=MUq|duYNM zAtpSYN)NvBr_7T%bITdlx0K#d=9F3ruc(!Hh3;kg4Kd>g7=FoB_jFC<(D4R_F3jnE z!4WO@$2^R}#}7?28UxfaagQ6-u7iFW>Wc6`%T;NUjRns(^Tr>Ktn0GQuDhiL&0LSn zO#$9P)=b)=hX{-PwkzBtqDwmonP8JulTG}=VcGPVIBPF>OlseySB@e-7?d(rFpr9|X6}^?>fr<2v?MEb)?iCd^1M znvBcA7@-H3qUfICUUun4rX{PE^D`JN{Yfo-ye?kA{`_D7}?~U~^ z)63Bk{LaAdy=Iwct}k4j2d{06?%N~aDYB^J)W(=t$zS7~gV8bT$Z8&>M8DDFsL64B z-|9Gr@w~2w#669B>lTjeDr|6}aqm=WO;163^{_8p%z@EJ#fFM+b1`Yve`syR`dO?) zF=j*gxpGrBu}t0j#9BP1@HgUJGDhRf4{$$N#_<8!PxYArF7cq==r z@fDw*k2&K!`w4+_oaKBa+T7BIa3y?B5x=7Oc?(R!&r{{Tl6<||fGzBHrTH~GS`Q+Y zh|C4*^vuB!Yr5pO@jBn#&Eq=P-fB7v_tLT7Qfm-d^Ug}TciAFoU7d!Dj$t%R-lJ^s%v+oYm(z0;FlBGlSQAH z;=&N~A;Ae(vPB#;*+dK->voZEJ-w;>$fe)ye91k}&*0<+o#Bn=UZjNk+*aic$f_YkF&WvobBQa^BhH*Dbo?CrC`;~%j5ahBiS%+_E6)yV zUnAZV-`N@A=G*6yqxn2%O)R|3*58%0h5PBIH|V1a-bfDu_gJajUQpnK9HVGi&pLFh zH7~-+F+GYLq{Fi31)Fol$Me_;H%>p?p4iKVGYUQL4S&<$`p%LgS+M_dAw9Q6>7`$W z&c7DkJ>li^F(<%r@K5C|qHR`uh7I^?=pLhOMXqyEbGn7GWiF`LBUg_A571r> zx9N%Q&JD+rd15N5ztG%Vp>`0)0qf0je)*35;iT?UmU!0PiH;h42;p1CJuS?U^7i8S zPT1bu&l!gb>;?D7lN~vx)1FtIG;(C|{bH}>eqJvc_K2Mt9hMY(k9(l|MgLpLwFvB| zoa=DXvnALO$GS_rzdEQNb8eZQt+3)ZNw|M|&U97RC(y6)A8_e)E&}|2Ki2fVb8G1p zG6&;qdnmP@k)`ohzDC)nq8?B#_-EYL&`shvaQ!m%Nm%~HX~~?%o!(w9`%d!ox~^zz zP7kH#H)-V_3e1N>{n26spBwdnV>omur*s*xczS!n%+F)*h2ff{?o|O}> zEBc$|`|2fTt=fw8|C;mUEe$=3_~Bxi|3jm&Z0aPp^?1^GXea(>FB$M3$~`ghUEe=d zziZX@9h&z$jy6v0-er@&4T_7Cp6;b!6Hx=|gaY^z#xccyzBY#|^PxN8=xOaCR_aPT z2HnK4wlnu02nJ5>$4ZTm{a)cPp?9*{z=!hSt_!pK1Dey)v)=w*P>j>v`ghC!!Ff&? z$GVJsa>^0QJa?m)xGrC>C#ajz_g>?^y-?m#6K;=xH+dZ4T0^X|-{YQhA8XxTx1Ctw z(xu}rrap2kFo$3Hc9K-NzpI`O{?fm^7yV1l-Io7YqK|Wc?{LYuUSJ7I$%)eM3)HP$Rd^Ts9Ub_X*%lt>W$#n&1i@?P zp;HzAvK6XtfPNr*i2WsrzR~0Huh?Yp6C~{DNgeir)K{dg*UJaJ;gEX4t4L6d6?|$w4Td*avyYB z>3SKx#rxAd>H0SvWYiKiW5HN8MnWVh?7IzjUpSweKkZn*SM^lD zj|05ec5huL{ZH35`TuXfXnhu8zWZfH?!Z9L=o8Ib?myFgmS%_I7c&1)dYXOt@E_li zIBblb8#?daSUtDL%EfVY%Qy!=zEi|s$%(beDRAmCk0}HJ@4nRAbxj0~nJ1X%ryR3l z?)dHv?e^cv&rXHA`YU|tbGn18Z07^xf{?#c>@(TcFkw6~&(+v-R=O*jDo^spC!1NE z%WmPiMl=*0a^G|4<$Y@7t1|A(E?u*>TOP_n`BnRv``IeyFKEtCfOk3m*SR(yI7lA8 zzK`?#Zw`{hf8`*d>xqV^g>Cpa*JRx!OYMtZqF<>DUqZ1EZcygkylDAkqdl7f{kk$e z&BO0zZcBbG+Ut_OKdSw>(WXqG!_pBh8`y`0#^ef|`LwU)Vbq*QY67}OKGr<2MreMZ zK0p(xnZG5+oyUw9uI&iLbq|lMiyCzfgY?3)??Q8tcC10`8GCKNv!x%(oZ!$8{kYz0 zE|8TU!QMQV`O?)I6UD-X*Y^1I{+y3sku5;uM*TCGJZ`V41lS}iDd)MbY=RKvW_Y_%klCNB2E-xyt z>w1BnmG8}G9sZ1Q%*vxgYohSOkR+nL$o1dMqe~JIjmf=|GOQ5r>O3;S%|g<;{aR!M>GGvG;_WAJa0a)) zl{L++&V|~0)KUpSG>U0+7d~_G`#(NM z($-edx`SwpLvQ+t#-P^6;93st-`;t}5z#g3^=%d$7cj5Qr}l<<)mek6^NHq4$M?Z| z7e?tIkz6jgaRzT@yX9K(#P@0}N3&;SIvywBOOyNG|GXZH9doa@F?EUi3V;0y+R-uB z)!Wx_2rTE8PNulKb@p65%7E&3n*SFVT9v-$yS9^O-K@3`Mjxc{WL zp6>Gs_sRU4n9sD2_1fdiyl3e7qJ1y>eBUcXqYawldw%TrQ8Y(C#0SiKNPF(Wok~w* z%6kLQzsyO#2A+zdI>CO*y@1uuL=Lu7ypuB8iPtLP!I%g7Lp*6Uo<#p(OFIfV$?}9A z!e_RevdE(0-VFE1eT(oT=)KU_E6a6h`7GRSrZ+Xelm0$X>@J-jIf#azc>$iw4;nw! z(hSg>{1?wm%?AUXnXAQSK>n)1c+z#!r%v}K%c_O)@VYq~iIEfjQVPZpT(xz+UpYjP z^ZoI}8kA&`wr0$I?GisgKkq(rPnmt~`mtcvP@i7+z{$aS8p~wT{f7QFa40#L07ew6f{$W zy90TLIr4i8-K$D7ogSbjf;uj(?|cXpFl_lB##^Rb+fY9L#KB*jNG^wa`nS)5y_Mrl z%&V6bay|Zn_5G$?|HxU}T{xQ^I3kv)3BS?r9=Kk`yia2;mHE_sHu>i}s`b{*Vy2kY zqa&`*+7RpST^@%~%KcpG%keXlP2!qNy+`|r>=9F7Xl>*guu^mPqM62in!U8-2W&mR zf8i3oW_~Ekwf0HqZ>5h@xE{RLWYZ$s+B@g6Kp5TK>MIRCUog-@nlS=n3^HrXo^}e3{1@dceqefej=Owrj z&ZKX8t?T_-Faz|K#*A?vDYx_@V>}PA*qx_cqm7sA9Ise^lywYB&N-xvH5q|t8yW?# z+tJUW=3~!;Xe`7&XmB+eUN1rLX}jDqueRwiKM%(-m}6n{#F|8nu9f71p=%}h=?{A@ z^EL+?-tH~!BV6aWZ0uu`>q^Bxs%T(KI?9)cWg0V7Q zYMP}Xl+Dvdh!`CZo?srSC;0wlyd)|Pn>15CM^e(kHcNk z1EYAIzoY%fcC=5EwXsfz$oJUQ1abhx6r)_^UF;z-Bn*aK`bd&uRZDxWUC1jrsecO+)kCG2iG@Kk_GXZv*?(WT!g* zj`f7Y)lptSqo{ zZJi#YdPu;VENTqOxp0VwWpcC*Gg=RGdBzaylC&rOBxJ(hKv)V(%5CQHY*TlArv z==0W`0X|<@-tS~SMQw$yU@Z%t8>SPvBec(FWWL1x^bj#?bqjsWXa}M3$~M6#SBxc< zW0|Mgw>1~AHvW`ec&1~mnza;YALXi3FvOPij&SLGNQ}KQ!SW0lWi3SB9gHm-%TW~I#0Q|ir>jop1W4>js4PqTKr@QY> zmEc?x?-Mo{n6upHZ#Upne)msR62vNHeV21ycU+nQ& zEdxYVr0tS;H!UzmW1kGlYcbYz<$en#5ouj zn75zx5Pg|d99!%uj6>qQ?`(&8#QuHe&nF4v1tbomb=P_azF3;7?g3dae>3mxWv$QJ z+S>zTw4{ftE0{%(jqAg;>V8fGd~mY=ZU^Y=$2!ON#g^VSIhk)$?qT9w9cw6f!Bw@j zR~Tm{xNF%*#8(rXSk89M9MS&vbIR+G&Yx$ju?fzBiRiNdiza=M66^4Og=5w4gN{f? z#?!K{L9gR`m2lhriT?ZTvvS7Beiz68K4NA^vbIW&Tab&&-0@WV^%URqa|<5n9rWhk|*)!Iwto`1Nz|b5H)^R`_bSjDL6C*5}I(4Wbup(;voY3wH1)^LE)=5B+rsZJxp|9SLvbbxl`7Pv-}y??w5!iQ~rG}_9Xh8 zz|(*OYqUV0K*SI*m$Ud_Q;s_`9#@C|v{m%T*$oo$D9SrzdIpP`h z+hKpN+3#Bd|F}X=BKPiQ%q{%{oc(p((?+r0_hH!&(j!36_lW1q0&88+9?%zDU>4S6 z&J_)-fftR`YuhobZC`ND25|bX%%RHXK1IGO)?Dab-esJ<@2@Rmt(WLu8C3Osy=fo7 zg5&v&*WWw-CeLza*yl9dgNbpxq&c+)7FlBQN8YQag8}REV$Eca+y`97z6s8AM9fPm z9L|h2p%o7cwi#S&KY^?_j$M{Kj|DfcaR6#2qK_eaN6vps$@Ys)F6y~oV;-5O+eE!L zq^$>^`e#?JIY!8qtYgqePBuH?@ArFlBgd8NrSw-k>-WOUhBdzE-^DXNr}LKUzTnxyU752UCia5mQFg~QT;ypC^c-}oXfVGR zu2Z(+u>9iq=#cMkM*n}mr3cYHSc-qOXw}Hg;oabr^%J@ZwDMfO_wJ3c zi>zWU$i3@|2HdhW24*1I9e;}fzmr?&5;uMYNVyx0KCoee7gJVP!= zIP&4sCbyiEGh%zW&Z@n6tG!yoCv|DhIIYZmhVz+6PLdYRhx1^$>}RYKFM9;@Kr=_b z_9W4sv*f>Z<$2bERc9XCt;U1sPeg3j^y=VviJK;(W9ssr%xQ|p_U;ck*LCUs&I|XT zFFxe8v9Ad$d*ed-XrQrYS>NwaG*zY^SX;qDjf5{rYnyVeww}*sP)H5V!SDN4`lXC{ zo%0jCchvn|F^kC^;*A&0E3Uc+-kp%|QKkpte=vS3iF?A2=%;?G_XIx1{O4n0tZ^#6 zu$p%Sr=j#Sq?eo<4|}!8X}Z?AP4C>~qLoYEyKvmEsyU+|To~2+l?%DOE3Xd!h1nH+ zNQYLPznF)UOk>Sddt!92n#w(6f4yW4iA1!qrfc#}xc`9T)t&Bf^1VrXH+#6@$m28m z3cnqkI5hZqqMVep;$r=_tjALN(R1|TCeoi{(6M2p#xqf$mY!jvd>zY(p<=CFr}z`m zS?l`vcgE*Ry-xG$8DqA&Ui-9@Ysi?Y)=-E0-n*Jlv9z``#)(d*%30I%tg9zIp9S*n z3HN;(`%>rdSyLDc4A7QHbPk-*_xjOK7&^h6>RS4b^K7s8L2wq8=*$U+i_Q`5;U(WV zRc$Y?zU7Cx6~GCT>3PbgHv+YrJbbS(-X3+;|1=-nSla*l{I6@~^>=^#U)K)w#{Y*gS^qEZ z;LHE8M*izO!ZH7C9{K-a&f=K=dM)U1FS%DH)|BL#k?+|aknQA{V|ua)zmlN!1whxzlE!SeM1VZyU$akWVby90lhp zynnpx^e@VbgTt@oisC7xQnO^zjeXzXCg_^OGG*Ot@>_V_&x5yjWsOx}yyr9g>s{UJ z=Krl*#l2AOlb*O5=Q|n4`XlP*>8|k^3e<47s^!<<^`LQUi@~y5S=aEV<*dEA@AF2# zD}XDkz#hweIR!ZIOY@jQYZ`sYu{TvYXu0RstL9mzIm)GzSc&lzN#sfbR&Ob5K>L!h zPj;C*+*$ZwJ$KB&}C;dkJcft6wjry%M$5Lu#%(E#Rm%Btu5ZM3F4w91e36geo^6|Z+eW>;WIvwEWp5(4b<8>t1>aB3 zI?XHAN|bjwN31>shZx7sONmK(%!9@nu0_W9J^F019iVR?pJ(a^NZiG1`3U_T4s~*g zgZi*n(47`N`5c;))odZy8s%WRWea&-R^-CvGzos2R zdPOqHb6j1BO@pr;mX?3cIY(-pa+Q^$D?aUdyhGQ1hjYnYI_2K*VsBr!z<;P-b^6Ki zscJqiwLiRQc>2(5QtQMrj@FKSqJ6y!;aukT*3As3S(efRB{)FVyc5p7Aoxojr_zm_T$g;e z4fb^8v?a!j_4JAIgJiGK&M(BKjZ(qcd-8LZwU0UL+=sdU#`VEYc6eOr-*0^T@6W4{ z%HMCNt-telA_p4xQZIaFM)jb%_ZvB2=_@)q`_c4lw{cqOuJ%_14rshf3dtwWqGZrw=A&+egfSl{(Zq zZNWU?gH9^Xl*f9aa^7P6k|VC^N8OAv?%U9-c8|1{MGqtTcHu1`C&YScvd1j7Kd39u zPU9K-TDS%eE=kjU>U?RiS_|_^7LwOcg8@C2zJg02nez+5LyTXs$3)H$&cXRk9RrcS zys>pml!v4fdDKd_C*sG(93~x4cBW5u!F}t{+_)A_M2?SpP`Z9(t~B9bD$(P4w;qx~ z4aeqph&~C~kzT=TmhpC8a01cC5T5^peTSv4-xA7FG)Bzbt^U~7krBuf;cYdGmajyg zB|WmGsc_1`!!IIs+xs+>THCF0u2JKhj~^umc(+k=o9x3M#^2EzB?~5gxYJtjf^nr> z!_s&puET_k19P$>mZ5h(I4`}eF|fczBgfaDgYQc<3StirtxX=6LO7koNBe@EJJ#A4 z=ItDK@u^Q%-_m{s%%kc!Ge?M1zdu*s&((c)W8R-> z-&$#38}sgTHP6QN&N6{dHs$^NmV8TlO#gLm#h>l$<@|v^c2SpTuOE%;>(g);=v`IP z0}mSq3@Q1-8^rCZG0~MZM>|l5c`v%39jp9By06F@b68_^ci9qLalolR?mFgc9Ip}4eUe=0DkE23=Qa05Edn;m-OaXsT`PenCOy-HkE1aKa`&co*s`jhR2P4$@Kjb;ICpf8l!t}qplS!C6tq+I~ zhM#k?^SNM>xSkgC5d&A5n)C3!41?d?^KxdF&}H}+pTb@rOsah_%oo-0DjcoPX>~Ed zpDR%@1=ntoTmCuklOI&D-!Sc1U<0-#>hj$#bInl*s=P59o^Py`Nyh}P-QU#Q5J@=% z$LNm#PE(w}Th)BzL*$3}UD-CbO=-9eVDQ5LHj}Nq}wUjCQa4fhfjc>G3LK0*!Mzjg5VTgydU36xu{Qu&kM!&ERF@M4Niq&U)dy*sGx*NmqQ}WA-%P^7$ zV7?pOql&>}$fdWa>>V_GO@?0SW@zkM$FSxYo7KEWJGOyAvFH>-=Leiyo$SS|DdQzM z@5R0@{r)AZ`J^S5Ph%WU9>4l4);^pnkL&*VOtXJ7E;03^DepP9neTpH^Get2E85$P z1_Jw5)9WW36Bd1Mkpt&r-&>|!9`3_=S~30f^O(L@`>bL={YA?T=B|2w;C?9hJlwCs zy+>2j0ysA~7EX-39CbA&fQHq}phA8@w5*_kHQTWcjlBg%AH52^HzG&1`OBZlWgNZe zeZ@L-tex4ki36=|>Nxp#BR%qlYx;MUZSw|ez04}_6ze&l9$wcTBu{OGt66YOk_$@# zPe(j>Gh4=9pt?>cH9BW%jWVgznZdGB9)Pmu>b7L3{Gfuu(C{dP>us2Q2PYh@dlPOk z?>^_a!1KGvfg^dxB77ih21?#tQw!p`M41`A2fo z>7H<2_>x?rOL7yAB>y$qeSUwj{tzx14^N}Bn&}*J8t=K!)+VmO?`dR#9ZqBJ(-C!)Z-*&F}MZWH%QbI}^Vv<^l)q8~M4&aY;R;0!FY0ZKaD-vS(MV9^K-9)ULPI z?$qbo3`kX9^zB3fO&|c=M4f!3ke^r5gKIwA4VU>Ov2k1{{pV)Wi z^aHl#z?88bO7C)P?b*eKSKZ}eE!u9X8BOo!#=8#ofLN;w1J>kQ^P1a2dx(Eu4PuWb z4FK{I|Kg)S|A%UMa}0-gKsg`SKZCZI6YhF`mhL~Eh2!?{>v1L=a1+(5j=o02ZSvmn zeaUOO3&VTQH0BIqPI6)v$hbtU!M)F_=CknOvq8~(Rt&;z_s|H=jB5X|GWpFV(F0tRox7=TNPo#i_DlUacq?Ao2@ zzaEp2M^2)AwoM+DzkV>$Yt#KtG-ojhV;NuC0$*;0bC%*V)c46p7OgKYTtlqa;+cPt z`yV*J9y#rC&cOBhKU3^(g97+E&Qr3F{#xU1{`M8v@7*9CT&fR@_gQX^YrF;Rqlg*n z-i*?`A_V{*(V*Pw_lEI{@CBI9(pmabXEN{?WC#w|UiAy4AEl~moe5(cu%GQ{J;~o( z)VNghVG1JPYEDe7GTE%0Wv30)uT6!1H(zjDI zrxQLHpM`^L+1kfAQfiSH9nz{phpSv38N9M)8yMjxx3} zKD`j08$1i`g`)X@bGdM5jA(M>TtoZ4!nqWa}~fW2NWE$k@=*0oEx??y3#@%I;*+1D~_w*r{8ZOfft)kJ6^b$|L_&)cw+2 zw_evdCH0*+E@IAd_+nab@cy0lpQXE>C+C{0q!{dsd|cQ}aI_-lRJOQVdpf88!Esh| z@xlU}2tN_WJJXuOO}GbB;U3IOt#8EZ4dvdye9m34G$!`@3P&M*A9e_uJK%1c2zQ%j z>{M0ylyehae65=~CrXq#^5k|dU*5MfHe>+#`sE(BKmGtc4q|On2v5ZF?*=LHO zlf2YpE{yqv+l_h5G}mz9-BfE%9q_c#2029!?746ep49mZ$w_RPpC>UA$HqJ=o~uZ7-kTOrO?El^ek%NS>(8U9&3x!6nNa!oxN% z<7Zr|e2$Iqn@xoK%TC(4(ogz6&>KBI6&_~$TXJ;JDQNQ~f8^S4xaU~!hW22JdnI4* z7R+zh#%S3ZqeairwoP^X!_UaISm2E`FE*t(*9@!JAP0|g%r`F^- z{Jak}#J~8nY2Jngz^qb`@sCQ&$MUc65}$qqJ1sKcd~!5 z!*wcPXtBSX+wQ60tjmeuMla8{&=NzAg8Sg+^z+1Lx2x358FM)Tr_6vkLFstuwbeWw z`m$qh%TD)7^eQ*^X6t+7{bvH6kL;53c~62d<+}D0aG=kew<&*HilK&TD|&Lh*grI3 zp1LqiPO!(61Cxx%*36kB{`!2*90GIc4bC{Xu|)6Tff>>>x)bP+F|S>C>fjs~$F!E{ z9opk`$C^{3W6~GxgbDL9xsl^{gP6%x(Vo-&KnIfZ)j?}oImP*LK4h;H&No=l?lM^< zbL9@p8P6l{t=zYLoCjy^-i+r?_;g!Hz3WNKqu(r`I@}FQU_iF4K=R1z= z%MHbKv}Kt|Y6E)J@yxJc`6oEmFcf@44jik-z8y0Irl~|-oxdmeBH_{~gj-5@yd<~Q zv&t8R-kiB`%}1;_9s9fDm`m#SPzvo%4RDP2QD0=DaUWgR;F`$6t?B2XiCViqfw5p) zJe2$%Y%yaLQAbH$qo$f+PAj_>za!&(4ZZ)6)%e`Jh0m2<85y?``ut-raMb<a=fVfmog4N)li#%NGgqqnXBe3&4-8ehJF6ZzJ$@)F)$x)@@jW< zc6+ROG2!CrGIzk;pEFwj(sM*{0M~1@P7izxJ$pE3E*aw_XQK8(^!#?Tmer<`OY+V0g2_hRQu4&PAC26Vt?QEVJj`ctQ-KG?z;1d6-tHkVq{+;wKF)JxV-4ty zbq{@KSoS*{GqY|iKBxT$_^U1*{}lLmV3n4J^?hn zm;CLvzK6hEtwZ|TJg%L!UI#c%Jmclmt>k*BL!kd}OV=&VG~WV+;KeEL7cZnj-p_m zYvF9^vwkJ5?O$XIjFI&Y{~$~c|8RaT5zadtbJP0V_shtwx;76ZYmYYI;YpyymzP`m zeZ5Fnr&aVn_w6X}VYFwIT5Ez%_muN2lgZea`7{_u={R_>$e zyJ0>n@Y$?^hk-wx4JzOxh8^MlmjIr=GP z6OUWk$SnnqMCpmfJ#`Eewe6aFIIvd>e-hmv`akKr*Nkz^wq;0d1>T&y^)O5?%gCGa z{S~#;1a|d%GRZvI3gyii56z@&z?-u)U+v=D7}eU;ImGp2{M>2or&mG0E5jZx>$UpJ zW*nLS(=$DxAF~u*IF8Yjqr&>AT|Tt$+_S0kxKm^QQu1ZMA0XOQ9gepS#;Pd@t~c?y zuA+bT!7sfQ--mt8tEhtuJU{?*aP)8aT7oGz;d*k0{iZZ|jFZ9hN%395_BZMnd*P?y z-XQIZOvoQ~lEXe3d;xPi`#N3e->S7zrmU}RCs_&XDHC6eOTpZ8Ts0_AtAnJhaPHw) zayy|FKVb}iteMh1T?=29@JH(XLJx=5!cw)LfwmB>q8#fj;!DDn^iI^8kCHd8qIO~j z`15=2-!Z}!V|fnvsA(oT4bTJLG+Nk3b_7!lCiC$}0`?W;J2=l23@ZC^{&2};OAlya#++!>K0~j;*+h{)+ zi9Rx8)LEn1*vLOD`kHYaNF4wiXS0Y;TdKZS_O_v8PAFciaY0&FxwfJCC*W?(6_TY7VR+x&FTdw^E9Tp1jyGrY`;YS=IA$8>AL~ijPLJ~0^yV^L%nV&;0eq?W zJpZ^y+WhzK@#H_<<9U6Lj_=WYxX19@?A_z}f4s-CzQ-l*v0%IPcJgOik9#LOJvjSC zciR!)fyR7yqL`Aup2t*o$A7Nd(L3eDXZS^JMky*C=^=h|iOJ9P^@k zc6v1G$@A35uReL6%l_})`Qs{lf2yBntYc2kb8vdGqUV8*bqVc^ACVUk2F%;Z!OmY- zeMWf3ajD*CW|`ivl>ft&>2q4YpHq52;Bg5sMZ(p&_dc`9{`)*l{=@scF#7z+QRb4f z>U6(V2jiZFKA+fPGs-XW-H%T7^B^3qYYrfD623LuFXzQMUFWtv_m>!}+}<|xKRH_F zi{&C;{Pvmq;&I%!o3nfH@RIHL`7o*Zh05@Q`{;f?1E&P-QS!%s(Ox1wc0qfT(--Uv zX{X^OdjCda*J-bVe38L!*pK(-MNiPS?&b1qCBA%5@)t|ovX4^~^7`zNg)Z=gZ&czU;Aon2q&$>AteDK9~E}&t}E< z^)fefpM33VvMPJm&&jVp56j%rb)RXj_WwWH-mR-`rP&((LAk&IlE7uR)RyHFw2cYo zj+h`jPB35+nf&^%=B#Sj2G)9>z4!aAG1ed$S!(s6&NXK-=ekwc-!8qId`I5zLiSIJ z>57Q2&rdoU>*V=x>HW2im}kv#ugTsjmRrnrf4oya-WOB19E*NsA5=!XOxo5zwHH`> zE3jwWJA20M@0s66&Hh*Uldy{FD0@SD!jKcOn2PA6oIUbOj<-}<$NXzqJt)pGxC`ia zKPZPlJ=n#$a#Pi5dQC(ws;GU#-8S^?&b9vuyjk=JA3pn{Xe|_r8@9#jTUnj@n}V3q zbH6MmkG0}yFviUq|Bd#sf~QJ((2-MME*y1HV%O)ae-b+sc+XzzLzJJ_jZSvQ>Y1k% zANnSH^6Z_>j(0>`yu=Qm-W}o*Yg2sUNElI^vDo5j`4Tk0*k5&*Kp&tLY)x_ay3%KoPQP3?iUJ%O>y8Q-5j<7w{`I|)2K!f%N9@0oqz7l znrDi(TRq}b{A|W{9NIsq!+R^nEHzG4_05JYpFfAW+xoi)rMJEz_Upn2Ar`{QJ=eK% zx4C#bme0gYzIg!#Uw@`~Ce(mbuxT%DwP&iw+*NZQ+0Zz1N0WY8eZ;x|+XfiJ8StKW z-l;l26x)vL*h+EMJoSMSvqsNUVz|(BYS1Wk%Y;Z|8mq!@Q;axAh>^hE#2LEHeST0rsbQt<~?U?~cB@7u48tZgRwL zj%ZiSsn4>^4N|f4@;X%1wy@$S-!%B1j<>Efx8|xj%Hc#X>C8j=P z!XQ_S_;&p6@|y+yMCIv}GoXA^h`k|S;`-x?GP9%l7uXU*%EO`{R(HCG>inwP+=KoD zVyQK*A1n+bCf}a9b>)la{p;CF&-zUrpURbtGPE*`HMIdy3wVBmy%dV-vDSM$Lq2k! z40q;&XJ`N!C^Llno~2r2#S*+k?DUa1S%=Tf=fEZuTO{R75E~yPE>+gZXuqQAP*`@= zQ1h69aVqU+@Lp`3;%1ZIxN*57SG>Pw?mf*#_x~t=)(iLL_WvS(tcHpD|G(7V#3tz} zPWJwLu;;mQ{r$ZkRH>{ThgWhHx^?Qpit<0NH|BxIdrXS)t( z%Rb{|oOR~mjN{BZ=bZcc6P_QQ=XuZ93oxLK?nHQZg$%f+!GDhHni}$Z+nl6cKG6I< z#}O#Tw=lyVDQr2iPEJyb^2MD?hA$Ad73|N2#0z^*9GSigRez9lEHqpw9>bSkSMF}Z z0v7YkvhbWRz?cpmWs{KH(6)J=qk=%~X>~g%3bPxrSK(V5NPo_c*P$`h2`88*fgD5V z4J6g`?LkguPZAybMbJR}@Eu>v)-1^Fz!yngp*v)RWjlgb2h5t>9GxQ-}|#+$Uv7m6PMqJ*AWnAxE%KwGfr>`~F=G+tKLp z7uA696r8A5HgV;wYrRc@e5h!dK+mq<-qcDaY(JB zj{CYigU%0vI>Ct}Ua+kuB}@($aIs+{)yS39HhhAK#70;mUAFie{Zpm+SW0^i#C#u)nKV4ZI-xQM0$4 zr!ur}(G}@BsR@Qa*K(`^f0hpp)jT(B-&%G{Nomk&xw}^)))k^D8Uw1PmOl1=bLQb3 zhGbm*ld-Rmb-}r!P^%prrGe60z(lIsS-?9JU9WQABs%rh2BdM7KBdoiPZ{%}^WY~R zV%DRDrS*{8e%CWRPcVsL!T~AA61H6n+~M|p>1&v1{9w=s-7Bj(k}D>!=^oUl_WF1La9@j@&wfxQ2To3cy z3=)iJbcl-3Y!M5b1oy(rPzo|5t3%$uH6fGTt=6;b=+xMgwVf;V7H=@;cNGs6GWw>= zt8u@)2{<#-*^tV$zq^iL&|GS7&bX-dKu+kHBpV(K*=)%8Izu2iip~JeD zl|%BfU#5HK3%B(tT! ztBAwJGP<%yHZQ+KzN7VF;s8?+f|BA?fVC^xd(YGbS{|}+U~0sw-^L1Ktwdw-jEjFf*vlY{=E?gyrPc=DuE=#Sq4a zc9da9yrf`QUxSk`FSxuU$V5)RqwIZ48Pcl`5vZ%5We2Jt()j+Qe@10Bd+ilP7yvGr zMj;Lr6;ize2D=OHMCnG_2>BKj)Us?-KkxQ`4-`#u8@#T@ zA|_{Mt{Pa!Y@bjXXvYg3;s*ErMYnMfY&3%Z!hg8w0?K7Pg6up^3r?s6<8Qar)WSa) zle(=3f~-gy-oC`t>U(vE)7+w%F3%QV={{7jVU0uA7jduMV1FogKVo%1a1sGNmDMLY ziR$y>TLRBs(2)GESRHBNcDA=OY@61QIYTZE2}!q;-i;X`B`&Lzhl5R7l9JGA)*7Y) zNh{2UH=6(nmkuudguG+%9Zx8se+I zha;b1a>nXE>Nrm)dTdtL@7U-mhGygP(-rp7?PynN)6u}8$-&_5yOn#tAfU99X&x!= zXL?~#9E_*Eec8t^rEtiIgXP93RzZ;Ndm7ZC<+OA;v ztFVlr_l}xx0vji&XPX8`9svwG$|XU$F*GhfzVEatB<8$%OiEtGD06p$2!2EHjtx_& zfpK}B>nV7SEWRz=f7Xn8C4da-U43k|i`KQVNDRm&QV=T2ak3*a>8kZVVJI)i9u(V5 z8Fp3V4}AxC6xi8#*$sJ5SEX;unMvbIJ-RD(_gXh3y}pktY4|dE> zf6<|9{{F4SwSr25mEl`J`!H$reLce@grQrj8H{i<9HIP{R)y_rGP0yQD^#d9jaeKK z;^&;RY?Q$Q3z@4Hvo{yc`(#Rgu-=Q;JC=Ab*}j285g>Ya$BOWe`nA;NgFO~}?iF7% z43@xq1>I4BacFr3heRS(*mL@2bAM0aTchO)>1C+zMP&fw4&phILie=&>i^92bR zN!+*VyRrFWkPLg+{u->BBW zOB;_Ab+(yj^I{EuWI|ncjx`}t-10<&@b3yZIBCqB2W}%AZYg+FJgN(c)($2>AT)@z z)nLo!qZ~mUo&=f!>h&!z0o1h-69E)%QpJq*((1xU=4e}_M$WtfDpqO^>G0QzuetNJ zyOVu=NFpawzd>Pm_0ZJo<~vi+&}8#kDRUjpmY!b0^^PpWofCT280FuKUs{E+3bF0N zYafl(BdGbf{AOW5*y1)x>xuG()?m_lRaQ}=F7S4sA+bElDoaGuAPvOSA&5x#^7!>E zU_UsJSPJDIydf{w85L%RAf~tuJ&-$Sn^+WSF?@A)e{t33wGC4$Z#-Xwmwk4B+qQw+ zsB{jH~*?Ry3{z_$4@aBPtFaH=~$lRy0iwqEJ< z(fQa}mvu>zkMw%Xt9t{-u*;lq^g;4$AlG^{ft>!Fl(a+kj^tM#=kXrg}#!SuWYW_k!b=xAOkc3-m3H%Ng_%RvUyCDG77`bIgt4u=i`_3KC;eU}9YWAbFRIqlY+i6)S1xSK z-!U^8NFV?4dDgcySt{XapTDb=iCIE25^)f=q*zuhL`;tG3jSap%(j|0*Zp!F2k{^ov=#t@XS31FXZ|b=*=>8 zkpA(AO3rm6f~X%DTLNYX4VbQRub^sGccp)prF1$WGtu3T^`V#cr3NOOD(BrB-`uW_ zvtKqnp*$M;-cFv)8>9>#!1qXp_wp>`tbRB~Z%?(R#LTsJ2Q>|dd>&&sIQr2wdYkm9 zix5+S7)2E4Jm3Bx=8FwjTM?^CnC%FnMdgg#dJaCuME%PNRb5;I2MXIXowgD>ZvQue zUbZBfq6u4f>N6JCyISlDV@RCZI}9!42dSPAO*_tP+&#-XzOvJ#go^T(ad{N8sOX7Pz>k*JsZ_45(XuIrdowHnp{ z1v+5^g5S}da!7ONgd$o=wo7BKR%r12i#A8yL^6J6GV4M_PbkpmX?w+S2{hK|X3H=k zBw@C$6s>V^|HH=&^xo+Q{!G7$yy(-B-nm12Rl!xrFJATv2Is+WURlo!;DZ_c&Y=5F zbQLo3z_p3MSytnLGk_wNUAHxEM6z?F;IjowtRTe$Hvn0%WHkxzYM*`{{P zQQbw|rs%A?L3R)H-*&2ni~2i7nWXnzN_zM%ckr5hxxSB=WpU6Ce@q$wb~MJ=kKvLpGewp{C`$ZjWq`|mXEsP zMC%L%d!I`*k<|8Ulh&w(WR0mKbCKTRCy>F9bU#DfeEveE7Xk;G6!;~6`T8ex?j!_> z9y+v{d#zRa9s#R9`D(yW5I1tesB!bRpub15lYCIO5pxRJAkyVbn+@x&R{!JX)C0cW z+b56I*2q4IC(jYRG7@a)xZ{>Fy`2`gb|uufLVdM+&FV#4uZC}8Wo7+OG?)SQ0ykpM zFAGwRh|qy<&9SLxe`wjbzdNiDqM%=!#z#7-NelxU#q(t3MSidj-55#F=q@A~4|*Rt zo<)o78e7dN{>S0P8l0yh4V_wsF!Iibe(ln>qy(?pJU&!6LYsZ!reu=r&1pzotuGjee$wR6h@&}33+V{=+8OE$7Wbcbsvn|tH$bo zGFAENF#x|n`>|T}$!3)O)g#wzv&5>AsmO41Oh~owl#trMhSb7**o#ENr|(!(x32AY zEv9SvJW^iR%MGbY22nO|&hPdilwl zl~>Q(FRw3OwZ17Wv7KQFX76EmWz*5WH83i0Zo04f8gQ(=L;en|6j=XpKu$gt+Hg>J z&V78KqHnN0yhZ_KxVeRhKxmeUYKE(i(i-kV4l2*3VO+>0y9I>8P7Y%2Jvptw{%t=( zXiJnymo=o9VOI~sl(S|ppUCWI;jS{D^X+Hs)jC7?idDa~ciF1G%MiFw!j-pbCd?L^7}R_-o+~0#b=5 z1=FwW8j(Yubm;f4Rz2M+->A)_GC~wn$7}A)6`2Pu=Y89**)cpHMSFqp4gJ1z`kY&* zipE6lld&T&dIg#XdUzjNVctXd=SzolxWO13hK-7D6#zpu`NKH!)xs$=tlknmFLHXV z&84SPA1|Rp^wUcTTEX1>TSAJzq}Pr(3zbxWJYjOZDuA%9ulkC2B9oS{Tt!zkyxM%# zbxzAm%7@8B5j#t-Xs&#vD6>)T5Dq}d7DD3CpltGn3+f!$GDpSu@dV}_keAB&bziCQ z4Tj`h`cV-1*1`0mlK-IC_A+>>JAzcqR_R$;L;<4&6P4t-w zAvLC;4LBhi9$8nkPwgk@pN;RTVu*Ylk}96NQr>z#BcE1UMyRfO>Q?8FiXQ=SjMDFO zZUNLWNe@y3$s6DE*fAAn=Th5{Ww2QAA^=)*hh4cH+bTkx7YVGuY`Z8+^ojQq0tn3? z2Ep4Hp|ED%2evm!ZAJw7nrHOCs4B8Q~pg#WsBn|bM4}ECIt)^GHDK_$`@5Z ziuUZsrgM~my){aoGGX+ua?Wk9PH#F`nhNQ8@7-}#%K-gE__md|K93Bj>QH61d1l(b z608{UXe=}+H~B8k0kAvNXCEFai@mSZCcA#5-GjqaGj$!rtC9FncTtOB=yty(GG(Ok zBmq{Yrm+uRhhq*?(f>;gC$f|5OhINqd!WgxU1s&zxng{`kY#J3tnmEc0+%ASbu{oq zc~BkSqQR&l#h_ID`tS1Dp4$*VAekKMHKZlj>7#qkRkx|>NzCF4PtwP5M$uF`@0L8a z@TM01Q0WQ_MCp9RJUce)AH0jtVpI8OOu076k~HxZb+9|Bsu#HH69vx6m;-MBD&bGK zipCLDwC7Xd6zK5?W^xHe9%^|l0UDWRSm8I+jN|_ZM;fh%daU-`ZYvok{Rh^Z0Ls+A z$19r)c=?vx&b~wF;&>-A)aP%AV|!hHelQ7}78B{ZT>2E2&%l|QzNnGPN<2TJJervY zDlNwJtzGt{KYF_V_eoUdE3nIHHRR4whW&BHvy34=u5J!_Yiboqf+6x~=)HqOVC!cp zcE-l|@%hyI!=~XMWyyKBP}kq+n|gG)7_?K+oN68i6ioZ@WuKQ}#rrnLoqwRi`afs<((P@>U%kbx4J4r3&W>* zLE)9k1McT2yz(j-8KkH5FMJXJb@%(lgOn!WR!i>LT=RL7r+P|$tKOFtlWg51-x!dF z;#$mull#l&-EywC&2+M`8q{5L9NyG-eZ6vpNA|y~;QF%U;{mup)H*&_ZMqoY z%dMw9@C|=8!nyQ;Jdz;&;Ax-kK3@IRV!_TAj)D^x_8T-D!~QLEI;SAZrAQ5(>uudu zBteB1+2{x!tFmc8Z|i$v@cO5x#pQ+sEpkLMsspZ^a{NSXxqfDA^|_+oPlu`C`f*l& zPsL7LhO}i^0A50XURBCNl*svaUW^#p_24?DbzEb0_3xBcEh0qyW5I)Z51MJuId>P$ zfhl1+uVUP)PEV$X!1`>&SH!ozwbm-i6mXC_A%bU9SKRvdXP3WmTYGk-e|-MWOUmE9 z$f!Mo-2Kzgyn)5pykkrVt@fe=d}BtJgB}p}e%-9YVJ@ra)D6A*l)Z)~NA1{WT{EpgS=TVpL$xGC-DO1Hxk;qm){Fi-jK1&VBoy^90h?gPbtjZ; zl~6nFD5~|(;PCj~b9qeW>Q>krg~IJG{qK8W(mRz^Oeh=0I{5jel-R2MFRNP@d?wa3 zoKbDklQ_YTIT`ARH?2}0WL{ibu6f0rw>*26*IbYP&>i3n;5;k}Q_v1RB{fe?%Ylqy z`Da-9?n)rT&N=h;RASBfs+qwMAvMcQ8;9#`GP&gXk-DPLo(yG@EK}{%O1fjnJhS;3G_h0gW{5x3I;Q!C zw-}Bk(Yq2=YqFXeLyS;e-wU9KPq7NO`Qi!x)4p)TSF#9k?3B-~x*s;T2cu6M_)3_1 zT$R$CF;RlOgteub2p(vx754X+`XH8B0K1PSRf>Xs5vk3C(A?uI2QG9AP7|7vtkvOp zkM(MO{yJ~`x>w6~8fgW3%7FWtIwPoPDikdn7!&xI`znTbS>;YCt#DqoxTW7K{Y!OJ zxcp)}I$_XgJT$=f*e_ARAgVS_uNUs*ELB8a9|{Sc@#;9;2o6{=^s1SbybKRJO!E!# z7w~>HP+%LJq;~i}X}+GKSNzuQRg)0*V3xwz8L7wBAW(H^k+0NAoa}-|l7{;}Kh$qt z(LP~$z25M)1dETqdGaly32uXn=dHkGtFheA`R#H}2ZEa)yS>&kcw3t9+Gg0C#6#59 z2kXr8;k3#29vyKQ{o>r|ZOf%n*Px1&NEb>TyXV5ukd6{6%OPVt88FvyvN7q1uQ%H? zeHdubvvx_kYS{o3RP^#v-4R8_biqxUs!{HzpB*T97zM-+M3&|Zndh7%9-}@L0^&S|3szVWv);n& zcMoq=%!DsLTjl)5=_Zx6CCF{@3~6nxVm-H_?*{8 zeuq(hbv8aK^L{v#mp`6u{_%p{%!c9Cj>ow;or(n76#Tj^Y(kCeAIsL@d`nM*m%=!?y9F?%%Q&dGgHshv{i|Wr9)G8Jle3S-mG#+}$e&BpNyIZlNXr zRyHk?BO%&7SzY?Ky188a($#vczn5JEo6Un24<(u;{_s5^EA{rgZUZ7%cXsdTrLQaWI&zvi)Y5VMW9z>wD8SFStd2 zCGFJnp2DmU+K#OOl9IcCRp$yXXes}+5Hl!F?mx*M)N8>2Prx5FzJ0coR>n$^U14#n zzxjR{yfB9UV1swnUn*YeQR`dCy)x*S5=L(HVsEcaohbkju7=_my86gr<VD?{`41ADprg{L@p2*(p}uuBeYgrKSAlmb1!t z=OSw(15aPVq4q?jVvaux+i{iv~Oosb%a~n>b-G&DauHXjxO##}w`t z!-IR8-9o=^N7MU-e~+O3HDs5COuT8=$@vhAn`7;emoKTN-Isu5s`f4RnV&Huo;H(% zN<*)AkA^A2pVm*aRx^Us;pj)~i~ZUi*Hts_|=PL#v48H?>f{e<|D-Rn0GF*^^fk%ddTU zoUZUOR)0k5>=mluia=N}tv z{Mz01hEQLIn(X$rNGGB{{~-Qxj*MrMnSfWr-jtUQD|J`|)0G1A$*s1vp~+)!=N4d3 zm(J&Wj>j5VXmdWUxz~H|(zbmj<*HI?A#LQ2GtJg z!_&1<9&;jwa(>TQzCQMAD1DG7By7UJnoxCK;c9a+@8YTQvL&j~egBi{Pp4}wZFz2{ z%%at7*$WS6i@QpKsFQwbRhclg@e|yAyJlkI_#=mQar~-aSIjpb>OU}H$bc}tn>H`1 zIMT)1(P44#IKXNn5Xk%!&SA zQlM7lJLMH-ml6B@dJVTh?K9-plJ=Q@ky)k_3Lz3AT7;8Phsqgy(eQU6-uk*Of{&8+ zD|m*w0Es7Mb{|4ff_i?9t45LYVyDk5VqSYvO)V|$oCE%TmF-D4L}E|KZyc7YmiNn* z`wortvtja?R-*e7A-pyiG9QYUQjL^GKOla4UG0 zt=uYoBX%CXh?SN4R~gPg{_^E``A(weA4~#NH!lRYICG)xBUHYtJ-6HzO`whRDx;iZ zVPhj@>%;%F+g134pRg}5)B@J}6MW9?j~f|^NGl%aIu8AS#0PVn8e!xASr5y~`%N;= zn`pA^Ia7iAUXL!k>@Rl0^nz2+-pi5!#H%0IJ|5-(X?rBqOqfeme%?%Xw&ep;emfD+ zQH~}4(R33X$OH;Mu7sT9WP^k#;JOrG*pDsgg+*F?APKb3N=a)|kYsdk7v>*O>qDH2 z)3%kS!NNf2pULH|hmRdJ!NBsX`k0ZKhs7cFe)TbMn_b(=oeG&l=lv>Q71qJ-wR0Ww zPBpi#zK9A_&N#mD#-(#^N?)$uW4Wx8cxsWaG#=ZuZ?TlfKQ6ax%0Iu?MaZtXu3z~j zQhgQd6-K`ZUX%GwKFml)j-MgEv=v)hqr3CB>bx0nf=NIUJI&ukzCfW@B;0EUT~a?6trwcucM*=9|4NsAH5E+} z9M8Ie{ae?v@yanMg`0?c^m(Dwtq2qR`%V8*TUDn>{H-9i+3LR8==&jWwx=DvaxgV= zs4WG^q+LVrTP(*Aa}E2mc=oU1Z1(;ALB)9GXgyjzS&}lj@gc*v8cCUcj8127PCmsk0lx}!REf=7H~;vRvrnMXwSEd^~n7Or|!d)-Kj|w-b=90ndN!6N_Z+`~? z+tASG@M{qs>5{yDTf3A~V+c-qCTR#5t0I_@KzL<;V4f_8CtN!JUzhO_l0BcuwRQ3| zl^epn=FWcE$va& z^n;#n9^S$ab)dL)=x1-lssn2z#rxQHV#S98MGYmK&skL!(LmLMXuKcaot3Vqw9}J6 z4sCvfVl|dFaTzi{My+@I*?_G6;@Oud z1_8@VsTsY@?-voiiAhXA`ztKod7Oks+<8{#h~BoDi;hm8bIYGbXT7%Vdo{?a)^)z= zE~Qbf!<6=BFN)U0ZPZj84J_@A&5#xWAY1ka;B5dkZEOZS#b@AC5c*JJEGw86y8Ep{ zK#Pwk^lXwa?P;k8oeJYH0!vE)`2EeRv6VDigEFz=5M*k!-{5AY?715&C%b&e9WGIW zo;m2B`C-PDx5nXD$h}H=;$*4YBXqvbsJm+y1G*u&*O~*6lQhXc>kFiaH}J0fC%zze zgiOjCVM}+E)6C*!-%WJM{Q7yDgRW1;4_7_1dF4nFTn4Z|=fWC%tO#LHwCTxRuTJ8o zL0%MMcC^N)c!Ctfv{C2P+;)~ZlSb^NTg4ZPn# z=CgAg?V_h5WR=C!EUv?W`XET%uE^>$GcYHUm+$hXh)`6eS2E zv=a6ewg&au2rtvKDGYV~tGQ_)$ofNIbs-}d-7bVSi8J`FMp-gr|IJ}N5_D}e<2TPx zg-sH$Cff5w`NnBMmh4rAvJ(3L>Rh%&weg!wjW4s*QSIQVgH6H=;|H6vIt@qb;xLAe zKPrx>-Q52V!znQxmkjK_ej))m}VTvpYR|`jDRu~&3k>f z80pg!@#^vl<#XFdGp6g7T`80@^1sj2t=sC-qD{qZI=u()GSwdi=wRRuaSrgr7L3e+zVJgJpX*b4DrVpT^miwtk~UQ z-C1eG-0uVZP+rPP?)*ULU!m)ElHq|GO+`}d_1%pNNh5hLbnbbDHH-O7R#(60a$@5w#2y$Ff0 zK{EW{SN?gs*;;p&0T1j>;I+12P!Xa_V4$S4^6cR9X*Eu6*={rW`kAX?Yiy6)P1~8FK#z%c{;!nCqZ_-N2mjODk{Gl(w^~ zvS4-g402-SRD`j?Xu+}%?=ZMZf?YEh%F`qQKV;1uP3zBQWDZZ5B4MeUl;g(=4d$Tb z#drxLfebfkLs4RCkPVcQcmfVtSl|5!U%2oM)B;q?`vjw)+Ef?A*4}32EoA_z@%M4> zG;kyFg^h+@<~C6+59mR%Kd>8-eL@P2oZ9$PJQn|X^iahC<6#+in-V_i;8zrSWoY=b z_phdu9}Lo3b%T9KV^*u?nSNEzLlI`yx0f1P7}BW{ipnkeKL0!C=}E9ZlTWH*?9%0Q zmG~K2VkScGVY^^X5+f|n0%aW&eQL@^2Fz%Mbu4l{_wBawNeM&pYunQ9Wv2uU)<7Zyd=UWE}bpAwNgP53CdoHon`0xYkKm!>Q~_u^lOuKA;$$8 zW0F(`p*hV%i4nEQ<$e400bx?B7V;g1zVHMAA7RytznWno1__+#IltBdxPgZWLY235 zHzvy(CTq0IOr2h1dl=mr&#a}w^4s%rh^|&f=x8QY2zw14uO0Lkn2;D_&2A?65m-@= z@+KzSwE5k6r43!Mo_i_~UvU1ImBUSlU*&Lhwmfz9>km9zJUky#AeQP(z2!js5@jCQ zBjdGNgfVhDDg4@X0?R$3x4#2(g6Xd*H$*E--#aW0kKeZYDe`Iw^jQTcnm zcqBO|fA-6^MQufrX7YxhK+^j-PB$@t^5p&%wm8E3TR_Hu?S~Gk2Rc4OCww=w>JXYc z`30bfj*&DNM3}yPAXfNzk(mi)PVu&P%$>?5vb%!{@~gW6M%K|MS!aM>d5Lf(?O>(gR+ zqJT_^T9l!*4gzMbi%tncUqam~3`1>~_;%347Q6KDEAl;Q)1?eY(F2ole5PC7;@+XR zO=Nth%Q7SkF;qFnPHSq3%Q(L_Ig)EXGh%u(0eGMAks5wmRpDE+qK`+J!%}sl{Q#eU zYB@%*D>qC!h}X+bPiqHn$Hu=LNWi{SWZK9m4KoNc;^dqyfxX!u&}CB24)O){h7WED zq7wRzChmH?D*jq-EY4vbUK9j1#{X=;|7jz))?%eA{Da!0U_I93%af?MR<0X;UjHUO z(fRQoo6vc)ewJC^ZfeS4D9ihSqvw$AolpDXH(ge0NAG#^@uZWTG{4^RSAu+XsNsK1 zA4NwjJi95UGTiK|j%C3trw@}mMhEd+{WC_abAiru7tt>lpoDmc<65kh$`z9t;@lqC z$9V9Fc6-T49JFBj!Gh^pvREoC7QKZ4r(|T!ncr%+L{;TnwzU=J&%@8muBSjUre_*3 z&9;fYGF^AR!Oz|*<|$L~xs>-$LcJkueQge;-NS{{k%^g8XSVpu!0sIWMykI}j93Sb zGDW#e`55qa7>9A?HOq&1C-faZwHvwHoo5foIF6rp)R=GiEM8-lDRL%WVon@w_VeTK zXhkyvH&iR`WdAbZn`fO)MK?cj$faL=_~hW8_Ip3Z{KJZzk>f&6&40%coCsdxVTutZknCZ~D*g<|7^p!XCZc z*XEZC=Ar4Af~|9!26h-%Ugf7|s0Ynj~JAaZg) zb_v>fi8X!n3E24=PRZu`@23LH1pk21VeR6-3V3k|eqR-#m+=<;@eW&l{iye=CSJct z|72R4S#L3(Zk`)BDSVbQ8RL0);`d9~Fdcr>Q*FBnj_Oc}^ zxN-o1Xv_Mv*6%MK2Bsf&i_J0u%S9*s2K-e|zV`}w)&)4%-yu+!Zr7`<6(_`=msH`# z@Vax+s`I$6KLFRt)ZspoUwFs0E?@%)26ppwpN7I z2ECY_DOjUNTUw8kgK|F<63$<@(AcaTjtBQO?;(`^1#=i@EZ7sWx5y#?a=b>=#;=$Q?QU5vQ6qq;TH-sfX$Dvm?!NjO*9s zd=_gAY{5&s%9eAVaJva@&hB%5^c&zBI8t4y2SX*G_=Bds7jVIAM7P)k?d8`y4Rsd3 zRX*)VIGmNJ7KRQq;iS>-Xa)Y9@|_>i0}>q}$NueYb=C_oJA3c8+mkvf_S412>F$QZ zq!)VhaH{yizs?T!BfGCD)dL|r^#Sn;0OV%a$}IOp^|sng-aip)CnePIOctQ#P$AxZA3DH?tyyc0DBgO>5pQ!^Um(N$L8K@p(0Rbr0?CA(lp{~`jKgy{=h zPg5%pd8e%3QWT$@YqTwa>-DbrE9>#|dYAA9geJEqjE!z%w!UCqtkw1w9lwt5nreFH zAeN85(i^X9H^tjNiMSycGG7s9J}=$&J)glLXGL3Pg5h3Su_75zAYKf4n#cD;^I)~ptp#7(rVPygRJ8Qs zx)*s>UG;I5>k)}G<|grR$Y+(E9=jsx!Eg_E9!0OdAi)Vib$ckA^8rK^hTlFNZbMrb zz`rc!n!?#!Gn4{l-MulSYN22njLf|lp$gd#*<3WAia-yZt}fPN8(jT(M|g-Qbi|OhI%1~mpj~9|DNsxkSo&=ed+eh)S)Jm(Di9I+y{UmFG zoO_?!dHs0!YvWj6R0B`*hn| zE#Io=)J=3vZgO`v(7CS8+!9(;&+d2BkSi8G@3{-9&$D!~m(1v9gmV>f+gw8jzIXl$ zxSqT9XSWV*vTb@h+_02jF zgqWcwcYj1O7CND}Bo|y-Zw+zYOlI}-UYQ8&^SkJ?vkKGMSuV!&N*#zz#|D>B9}+c` z<&*x`g_Va476W{;{S33Cz@m{YlNNa;UVB}{g9N{nOzkfCTPq{$qz6Z61W~aumrK~! zHSQz2g~L9A3rv?WBm=&bGn?2?_u*~>bC3|&Z(&l=23mgh#!qcN*U#QoxEFOaH=HaV z>XpdkLDy_mTY1bYbKt&0?pIy{lr10^$R_?KVPo}Nb_a~^Zbx7P-+U9~)21K*NP-&rUhshhEu2ftP9)^>`44??e=c zZA@J9)=lKpvjwpqU_VZbPMv@WceM(UNclRN| zoHl;k1g$vU@B*h4#{z4X#V3QdimId14j#?t*dRu^n%>mz_qJ~s(v)i+=Adt;dYPk% zbB&LHo-HHnu^AfpA=upO8N;Cy#L6X;GMY7hTfnxD!Yuiw&IYNGpM$KsZh0;|eG&%m z+-r^dB8{ATp;mN)NMa;j_lEY5XGg=79=YFCf7^6=j|>_v%HsL8lX%uq!LoR-)X6WN z)8W$}oaG`bXninf{?SmInDXJl)LV~(f5qZ#_e9po&P1$pRlQ}Tz*SD4Ch_h?l|7O! zuY&h(U9<3{tk@yI1lqbgY#E>jFR|4T%{WTh_D-*U%)V z!7__m^RBg$p*^oZ&j+5Laz+NYHWi6ve<)H3jlw0NLJrJFQ8~GXvfJo)Hsc6gshpF& z+sLuNY^4DEt$5aH)Y9Q)@U8tUlQcRRt=j8KvtH7(oBkF;QTD~5RsCr@v-{Sog%Mz5 z>k`~OwAK?yZ!B?NnxD4}q@j%QrqNz5cxdsj4AIFvEIjYC8;2bc!ahBu^cDyb&(Lfr z%=$N zP0s=csphef>;p-Uy8C(Uipr-vv#Z!K-oE&G5a2z3g$kYTd_y2uAnuPQ8N>gy9!9>C z0?!@h`&2O{%U$SiUFeg~;%r&YzvB4k<<4q;RrP|pdmW31!Lk2NTSX@4Mi`r^Dt^Pd zIfbJ{xgL9O@w(Y9v|ysjd~iU}6|2#fWwY{k8Hkzn&jZUmcUXtE{(YCxu04r~-qfr2 zSLi5tjN;fsHdXJ;V%*+yl0f*`oA1Wq#i7p^o53snhRME=^?zJF@_LnVds4LtmuOl-xG|;LG3!<1 zi;<_`&5Kp*XAZ2P406D=q<8A81F^q@4~DkruC$T5e7o;wf`as4hjXdt4}SkYLudWg zOkR01oL<~}-OIlhQHpWnt4r!?&Al)F05gSV9q0|1S)R3w z;R%6->+OBGgDyV`wt(u}W`$`ESgVzJ&q{GQ6ZHW_YLo#zj`t-?Z+-44PSlzH>>N7i z>XS+Js+mr{2LNjSQ*#JaPv6ivRbRTx29n&{al<5zuRZA8ymfHNVppFxPYni-wkboB zdw$w5`4}6Qyro$E0d>tOe_TSaPrY;Hh{+E0??PIG-@gP>j?rZX)28l5{&au;Vw>0K zI}^O1!})~{w$HTs5GKK3%V*$jLe0_bGZ^QJ3@DY_%~OFwld zP7#v9JgzWO|04Th`o`jY^GarvmshI@?PNBM4a>7?#t7aUA`#o?*O-d=vO z((SOTB&Er&HRyTzm+^run*+9|hnOS6Y`yyiQ$^7&C_ zs89V*dKw8W{-4`*(u_5Spf{u9X&p=vzbx6QFeyp0`E ze6o{#Xm?sf-qbT5`ER!7yvz5BRoW^)Ehx=2>-0lmK~qclHK8e-4(z+G6!9RHhu}Su zT?iT0#n8T!B3t|o6IIESxM?Td!aLRu>JuhWjflprF}}h^`!NohPLtRn@>gB&KOg}C zukB<7o?E+?SLU(9d`kQx{qlI2wz9OpLfEy>+EMeX8ho-kA1)>C$xG;~n&^Nuh^K?v z(~iC_evx>i@XqoQ)zs$kov?Cx;2i}7fA$~b(84D68cP`vkhMXYqklgRo=(9R@e}gQTdK6br(Xt5h4u)SW^#_Bf$r_k z6KZwcJ@&|iYrAgUks5(DUEj46LCzp%haL2zl5UR7?Tw|AHfONJWdt-l*?M$4gN|-G&t;vbFYhe=oq-vtlEG_HFS!AIm zu<;Sw%=Nu*jcI0FCY<()&HeEoq{_kx_aNoXQ?{}vf^{pw@9iCa`kad;HbGphCceJg z1gZzTbrtsH^C&|E&4UBM_hC;WgvCZIr=<+9vs{?8_MrbSJ8v0nW-!GA?8{}g;~@W3 zH|@QbbbdtEMVjjrX<2CJ<7j4^wnf0yWSg?BR_%H=FI;YTK{EU+*6_5fyU;|plv!K) z+IEPwALDKy+>&N|V#MXws$E6<-nW6GF1ZqAHdjQ?(qL_OFV?$TO22OEm$jFY2s6v? z4yzc?C|lSBHkplA=E-^UN|&c99h*gncz6c&2-ujTjLnWPwPq_PCwZp*U0i@Zg!18? zfiT9anY_5}(6W_pJ(>Z8N=lAlEjG&I`}ZB2x`NBt?F3A&b3?hOfxFx1>Z_z2SvFxt z4i^kqjjQ*Qwo?~u+hs2%gpz6%YgI=OT8g(0-euyy*EYu@)hq7TK%BYw3Gy`7Fn3G-H%?Jnxn5QU1S3dtN!$L0BTKY-YW0;h??L3r zs!Rba^DEB9>WHUF@v;nkhO-lUKOfWg1zCNd^HxRML3(WLmYZ+20+=Orb=&6V_I&9i zx^%;P^^|!EkWCNfJY*viiSSPJ+!2`z{v4aN^|pE=ZPVioWBl{6~tKzdCj012423yz$sD zn8wC>o5sHP-|prxWFfrs9pmlRErYb~(J#)X!skgdyau4%(C^%XU#y5@tJ!4>iFO0c z=UDow{N{iIPvVjs_502rRfYhquvdSu;gW}7?%_dfd7)vobl?cUnZ|s_fu*f>u0yG} zHYD*}GXSqN4ta@)83Fg|eM_EO?=uP2o1ezl@mU5im##vh^lbt@dyzFg!G5^7wn%f{ zCiJ_Ce68*Rd^Gefk^s9E8+0U6qFsV)9dmyI&>Zfz&%A+x4C{v2InZP}+oQPTm7?vS|N><^S%+ybLzIm7;=MgV~R(htymHQi$@x)&lTr;n)3NRF8TDn_Azjc~+Mi}Et6@?wdr*-Q^&iD7B1Q8K~LKZci#vvmt;8h5o-5uNC9dg3!+0AEw84s zh%?nK)b|)#x?f13j>m9zxXyXRact$abVTO%)4=2NTaxX*V&!v{f3gp@M*T!y25*VS zKD;rb$W7V9zvh}@sK zChiY>Ho|rq$K<(bJ<}%tRq4M@!+y~hZ`GeyayPr_AgSK0c<69WPbrMeO;OcCx+7YT zS*EOprWD=zu-O{Zc3jP1p1Xn$$h_t`GKs$#;&qojX@P00yZ@no5?@-e{2eGL26GfA zQds7}S|X%7cxP#`Tjj_lddW5?^SPD(9a6-!J-X`-3v~ABN*l|DxI<;b=XMUn$LI$( zu|*jtJc3)ei>JT=rMy(Jt4($4xQj7{EjpqFlX{l}g4#35kAs%%s;zP7nc_XtvmG3-HX-^cGeZ#bI8vd&zS z{+dO#7Toam4T@lu{0!bI^E2}rDi&o5sM^=BH)mc<(DY~%8KJcBpfAjOOH*T#~ICCB2fP9<%8Sd04E zWt&5Psskc~=857vM*lT-cy9XT1Z{%{ZM?QMq>@`rsXEC$AnTxKI7tt)dsz{R3l0ZY z9Lfg|xiE{Hb=~3a=3h$X<+)rH$0Zx^;0_bEh@}vjcgw3Fppg`>`+c7yJrCOejZ&zB4d-uGtkIg&cC#>AynzllJSKKmu52;NQhkOgUDaFOSL zcl~U<7Iiax?h$BR$hX!y@c}Y=L0dCj1q2Z_GJIlcbn3z#b;)O)bJ={NK+mWYSg1Ml z0ThVeGt<%vjl8xeR2c>THn&;dELmpm-FlAxnRKs)g5nRMhK`jKXtlF9YGi-AA$V$RIg33y%kp`*wEJHR_%i z?nZD-A|oiTQuHczXtilbHS}RMC;Sm#6R!BTrc%*OOPjP@=mR0VdXY+i4GiTCgf#VlqFwAwm_sdo#Jo7CsV zM;vBfB=OV6vWJ`xyu!FPJ7KBE=k|^l_pZrTFsi9q)aEOl!YiCFS(n9Jx_?P|b=XcG zHsKOcu1k`k<@BzHonz#zw6~r9NKYHT{+ROJD-`7}i!o&fjQb3JHWA=i&9C~#XVPTJ z?xbmM5)ea|T(>Mmvw8-tnhFN<#II?#_tZPEUv1h9{PM7-2q(|HxWqZOCf9Zocp%5X!(PC4Z+!39pJpAh z9S%1E?_9qXTep-7K5M4D+Z>kdU}O$=JuuS47y#tFPkPJGE{}F?O&$wArj)67fMUbO z{Js23z1JOr*iX!ZLPB0r(c@d(Rnrji-&{+hr7ETvS<``Z_iKg9Jn-sqjb8e&e?+wE zChfw~J^ge`UPls-@}&Tw5s@=WYT3UwQRvFAYTi!W-A@sPg2R&8Zz?JdZ2s`(D)`uhmmJr&tF*-f8w@P|~es+U{FtVoqFLv_3QInM9je7Bw@ zFzZpEb6O&j78ZA3AhfGDK^zEhLESKGyagPnJMT*bHXkyjM(+8aF#xqsp&E)fz z_3y(5hQx=_ATz0&N*PhhiFWk`+?7)In(S~pom_T~Ba~$vcYrR|Yv@@g_$qvyv;7mN zsLx6=i{JF*Q!-=Dva>^Zc}fjb*fDKOP7wqeEWCschfCc;56#cy3grIMhX&q|dVuXk z_v&iDGg1${)qWnH8@q;(TiSA1^NmWa;Z~p5F>yA##pfnU^gn2~Fx5Px1n{w6hn(kD za^}>X*aDXq>fuf6;9N6IKkJV>Ffm0%b3Dpz99mY-&(W>lPZdTE_E)d{c)U7 zzkyTdwetG9KTg&X8$ViRV-Ht&8CjngZwB%k7m(2~IoSNGm3F3C6?>_@qS8dMrt2B& zA0Kl>DA@2q@=_mPA5)|ZIUSAqrb;_%yMTNhJTW%OGZh)2C4F@Zz^x;97jz zekw}h4ZhQC3CPmX!vtrh+=JM`j8#-j;%v3YTLei3bkp5==B#%C?DKDRnezxg4czpm z-SxKeuK0V0v^JvTsdhnvBA{fLYRpsdgHDT1kA`X7=C`HTX?`8UAF5d|AJQICFIWoYdmGw6byKZ8H?=C;nsu zE>1VxaVD>4e#~ZH+_W~oi_qR_(&pO!7;K^1J8!G7nHgtP$=$Vw?qHQ+s$tK!LyJ)L zDGF3KOgvyPCa9F{wb|=Ya#kOD5MvBVJiT6oR1-RXXtMP!d|qiFdebI{W}*5?jjHWw z?-mq}#UI~=ubGoMm%<=5 z?@4v;8D^-wJ|}iZ_(P#+e}bP&MYR0Hq;({V=glL9#@zkOJ`d92Y#q7U0+W3-#Y3tJ zk|t{Atxp{dX*S*G`s4Q$?XoicGW+A{NwMkg=ad3vp@`?W4G+3Px7|ChF=N`fj2?&# zouAf{nsMY*?Xu{rJdU@A2MgnNI+jtM8ugZa8{V|RIuOPeLbRaULfy3`qk!h%Ulo3q zv-S4!z&wjK_`gP_cmTcrS zL|M8!kI(DXcG)Ua^zpbhQ~&z6Yr-Dk{rcm=0-r};TK#8M%9|LD4*FX$E~GtLh-xev zb-#l{9Oix#kQWsTHr{XD?Y)e0boucOXh}}aY;kC>NLf?8o&jcM+Rf0TVRmbm`?*(Y zSpyiZ+m}7&6Gf(5*c7;&#eT=`s;wlAF(7ou_^Pxe^oesGL$nSk_-edSkJ}FoX7aQdeT5 z5TiG5i|mnV*AavfW5`GCwyM`lMVzf;t;=H$0e{3}^Zw)Qh~}vk?Zna(CTbM;HidR6 z;X@W7UdNRiz^P{!J-9|C~=I#s>H59AB4z+a^c)_HI(q7!=Zp=O;wYtPZ?X48MccyNGO>07X_VlYR zzj)wgVx1Uh%W*P+cQ)?|%srY5H+;nKVckO%0TpnK_Kfo!nBhSBEVn?$-bVMmD*l2k zyZb`t36?~76L^=`7QR4l@12*8@Vf|WzHP9X0K4B!4TuxC4@+p*|H}9Kt!Gn(O^=0{ zb@-o(8;loAPfYqcP0X!HaVAw*`|5mJN>;=oXLRXrX6-kgSIgkT9 z#fFNOF=fF5qdq&A+nj>;+jx{Awk{m8!$JbpojT-!keS|--bLGI6gWsHz?giK5vg4D z@iAvq^0>%h3T|rp(4Z+xZc2KcsC+~oh3ln=Z1r=V> z!fL3LmBF*QB}Gwv5xLr4`|<3ZZ~S&}xodyABV$Jv_f2X4wp5BN^QOyIy+eD)5C}Mi zc@4HKr2kL}U%1428S`OqO_G?5sPgwsEkBG4Z5{G13x9UBKYrIflCHd=sn=EpZ7EjI z_Cot9iqvK2&IB22@E#8KnXj z_=!@dQbG*Q86G>$RR!91uZ@I+VUfXwCtosCsSmVocilQ^X~!dsaAu&&)dQc>cV4>l z5e^77FTZ%&HzzER64}K}lXToY2RrG3R z-~g|exOzYSX}zj^{|`N*(3Ds!BRvOroW(9wl2$D;@p$pW+$Fe$w6#oMhJ+`XJt?Hc zkCn!Umf6UQ(GH_Eu^WBAc@(-~kK?450{Fmvuqt+4=h&5f)GBtR@mbmQfXXxoabYCS zyjf*QP<2s8_cUF$6pl5fJfK#Zw~ni6vPwTyzK=KK^K$gkpT_?XiPvw8i!{~wn2p_p zTpq_wHBCW~mX!(>#&_!Xy*rdWU<9=m**Kx<=qI9Oy9;vQ=57Tj*waLEUpDh!#i2*t z4+oST?ehNfoSwP|?oUft)-M9UHVk@L+osZRT7gIb&i|a=OkmW5Yyd4Iexb zm!BNCgasKiId*_JvlY{Pq%;qy&RYYE$F{IhrjG6K zjVIKKj!BV2owoR3#65uX2`i#5>1`|h!EWY_Lb8-Z>#YQg`LTUsvtY#*%y9j5;2qp| z-y*NeUmCJ(tl~+7$GHB!iU;m48x(iAegAf!oPXMHofh?O^8_N+SF>gBL1Em2i(bkY zoFnvZHVhg-48pW8Q{UU_D8%^07;$wTc6`bpOqTXB?wX2iK@%l>iBr;u5D=(r!F>XE zsCtwY#pmy@0%rKq>pk7XIX+8gAo5yl_M($nB6S&mPsrQhu)hs(wZLWyh2QB?L#SxG zL*oR{kQm3^yePQp+1Z#<`H8ot$u5z<96M&{ft6Yr+fXAADKVxu=8)3ExeN~JchQv_ zK_3^ZWRiyAj6Z&gzCsjd45ybXL$5#C=PKto!=9!5_T$-|Ii-n!pJvXYF1P#QCRHT; zd}fm<`-$4=+-7%i?f0Mw@714Bbb&iqYLO=NMW-G070hV^_$l}I-}-{bSK~&a%vwGc zYs~(+D8`>vjOuLvMwWtXZ+evtMmFiBln^GVr6=awhtUn3l%!@oxc!l9X52-haK}yO z@E#>Xd7x8r1W<%av7P=s0+G@+KR3)VN+$+;b&B8pmYL2o5wNbbrdJ)4D-v zX-W==$dkvZXTPS8(rD4mEZ&}%4&379F!yIpqW!yr5=!N~J)OaqGFtu_fC^?!bi%s+ zac98jG>8JJO(33O;SO!(6K=3HD9`(fdWBNq2Co+7_9uAle1+8e2%Ku$j@~)_Hp{k- zDD@OlbJI7$bez=hy*n^`@+fFhGKw5$Opj`?cOJcDN!;S7yLbA&S>MkB0)N*SCz>ye znDyBZ159V`JhE4gBeJc2uh&ebzylj+xK#NIqxV&K*)ketbCLYN4GDY~^8I7PF1$cGzOxKObJ19Kn$Z zyOyO7G-`f!YP*-*X?_~M01~zc$87$T6YkBBq}Fz#BtMSi_{DF6wFN%;8|cii)R{$R z9q7QrPUrteQ4{*9e>-KA-(Zdx=Nv*`&emV#EIyUz$ZKJ-R>nPIv5YXL19^zIAw`()6HF>|IG&k}NWdREA1NX`BeP;ullgUk{V}{ z_*LK)vp+&~BcoR6nnNxprfL6bs8s*!50VQ}F_Y@)`KT}i$RT@FMyTtL&Qjjo8N@hG zQgRn)7R{q79+e#Z&ZFQ!sC`E$hdC-!Fp@F(ykBqWdn0oO!Lb=g|HN5-J2<-lN<8$r z2T=>+p)6h8Jjc&v271rbA5SdAxG|s6VCKr!r4$F%E#E zbsuSE))58Gvemak#=F;mQ=8=UjCy%Y;A@P^;h6qLo~V$|68c`faE-nUg<~8~wHY}h z)YrpGeRmg0H!?wNg_)V&3m%mM)VxF^{s5)qXy+X&BwRFRO6+LFda*b|b#_$3IA)6!vMMy{6NeM;(>q z+0o8h4v}&to|w#IS}ZwWw9I_;WW9Lf<`gMHBxyortN+k?r2p{I%%AxuLaooGQ!C@R{N2vLIw~L=ds)T-OkOmw0um*Ck>O|tqmUe1H_f+4XFXZ8Jjw{^vbW*< zfzsRJo5%k{jDUoHSW9S%uPhgU>vQN$cRI`W5+vJ>U6STdLsvXnYKl2mp%&Dpl}BSk zt0$7yPQB@0_H7jCVbXJ-L+*_Q&UJ;3j5%+QO8e?oqm9Y-4!?eQ0S;gF7B}{xd};~m zC4%w1*@nn*SmvbK=12h4iD3>Q#b5qh(G%Dei;W0L#(XFc-AtA+kgE?~~X zLcE23Gu{f-1~)x@1n(4eLB9}sKLh&Y`Q?_IzN=DJ%4-Ea`AIa}cj97=T~5Q+V2|_6 z*kqt%3$}A)=zvG&WzOz(L43rZEH*wiNw6=fW{y zk(O_Q`e5X|8|r}f|CVY6sqH}@dng592r-A-t@iqWjfeKHg_1#HS|;^fewgcTAB&fc z=RhlFru&TSybL8h<5jzspFPiJ-;z1h=3Y~>CUvCgJ$k;D^UCxBcI2sM>gg1Q#4l2M| zZI&gCElCsqE3hz@NX}4m2{TPY<2zql8WhG2@CHexJ`ZX+e{^U)bDo>ktg48Uy$FL? z3lKQo@rm(k;h!j%B|~s+9N49}LHoom&T-4N08Ek+_>%VS=S=QJ@#a}zuH=-n5Ns`O z9{W7>s?D?Q8>S+Q=WZ+fH<(o0IG~g)yW3MO{E9W2-kX=bzL9iP5cE*l@ky0MH$B=@ zoxFF=nakTXaP4gJ`XZWrFC?jG3H9oS+f;++TKsh|DNY2JN{q4lXCj{s_9u_Fb$W24 z!n9+ZQ+L2kxpOMe{1_?=5hkA{Q zVz#>(#WNA9S{1OJ<4Y>P`D*{-pP=*LERdJ!wQu1kIbv5W{liC9ows>+eAl$qh5j@y zbgKewnic>l15^@a^LH}0!gjOQgkm=vr>0W3?9weH-;wd@d-W6XMuhvsKPJ`1vMZsy zT;b3{qZvNDe~}t!5U@OZlp64;`|Z?W7K%O^kc?M9sddHx_8z8QCM>{?k-FQjI&R3S zd}br73^F`dTD_Vy{1+Mt*=CgJ>gIMB^8GeoD@tjH_8aH%-86d0`zg{g&yDdF5AfKj z6&n%!ZCvYNCmotR9kJRJ6$m)o)9>T_C3kJ+^ZsMKX3)G=R2fEap&1`pwgB+u!`(`Y za!KXTuyf5v>r$34_&gsBEEk-al&klcidL1TCX`)PS_&QS3&A}zZi`!9`d?waq0%yP z76*&+7-(5#^t*3r3heoA!Q{47=VRGRnxmnR!ciD5;8VS5EgR0*_UqBx93$L6KGIkyz+3su4}qkNt#;L^|htqo)49rpI8r@<2&nZbp_Axr<&yUcDl;vw4F z;_e~4M_g;9VgH8iWiFSS<<$Stzw}QIPNkxt!WAWkQfXq9^$>?@ZKww<&hR8|QAhTjpLVEos^@$}5@??zs?cRz|JI7M2rh zU0j6AW%c1JV^q)@;6_+UY6h^$Gp@=iyN;bz=F`nTrDql#W>)P#t%~7!r4-IaGn;D|89CnrKKG^~lQR|HtD@%ugg4^o} zfoA8g{=0V!#&)ebpMI`hASIevISTpKfu7DmOhLqpj(4C_SeO8tX+1~IQK{qBd~@5K_EIJ0=97m3!^igg z0@Eid5oz$TepUB;5A�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 FZ+%79-^u#xZ+%79-^=>zZ~gE1_LRhQ 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�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%0Ddc_-*skBG)M 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

7H@ib9T2xCT?!S|85kys|14M1^A*w3sCFEKY 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 eb*c9jYtlnRs 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

@2DH=t;RyY~bq&d6124VBnQic_ z6nmlOTi}P5y+M6u<$-RXO|%xAM=yhNrSe+rkL_;OKtq@ibo2u>7stJ6=}cLq899eM%8MNHL~^EC6PG(f3rd0rpX!!+@N*{l7W&0YKED2}^uU8~d;sG1URBwVusd8V{e& zkIuj$0S)uJ*|i_8Ht$y_c3{utv)?qlq3QB@yj*8Ag{F~_n5Oj#BO~w*lZ=hq-Fkn6 zs5hf9GL~$hH(R%*?WB^QvQcT9P>%F+jQ8Lj_j`6<(h)EnpYGNgI#=frs`yL~MjrLs zgnVbX!cO2uzys}SKY$l;9lW8LiVy~42h+=&vokwKxO~*ibcCx*y!(kLQI3<5zX=rR z62O0>qo8UK+X@yvu3SjTzu>g^Quil6Uxs-LIzBi9iwy8nWBF_>xl80C-#&*R!xw+Z zV#P{I8QyFGkm#(;-H%pu_Ln0Q&p|FpV-sv=44T1Ne>m>MGuD7hoV7E4!_jrPq#N> zE4EV!L@XTBiAPL;_u709bx2Jr+2%5oP^JYHm+4_if$R0HS;MEJ%3pVg+Vm_Zb{{!kAw#7#D zOYcz{X)7MK7eC_EO=OeVaz$#T!8lJfO6MSlp0tUTsE;o0^JU$|De8l28T;D1h{gQ` zbFByBsuY#r8bWXga}&U!9OoBWxc-Rk4k6kF&Fk0QX7sM(W9Hltu>PUmTdAuV>(suZ zZtpK8pVql%m6y&Ig0I+sooy zsMVIa%?>x+u&q^k9d@Z7KZV!el-{AbRK#BcN9JmSvkxS>UEX(6ubg-EYDlZm+h`*{ z@kwI7FHeusjknG`T{^cs1i}YS1Hz*D(tTaKo~u;e$Z37`6W>le{?=N4hzvjNHr>cx z^5jI_>enUB9xN2PB_EV>9_My_!eFWlRjJXU&O&r$j zs0tF+i(Z42ouI0_=-ybxLhEnu*?@AVb~D#zu(Rs1u-|+o>FQxckJd+~NmPyoj6!iN z(^lI8C;MX-wlmHPlCrkZ0-H#Eo6PQhsL;+nW4Ts}G;{jxz5#Cd>hXgZO+}%|nERQT zuHqc4J`x(dtQM|1oLnCEGi6=D6CS{`UKWCZt354Mt92Le-oj4HjdhGqo>UeM)8}N+ zee-O#rvnrA)|c#o&+mBgZJYEh0_A3v+txP&ox;^u6h%#64Ovp6QBa3J810#zT`hku0d=TMp2UwsX=)2uP`!6QM<;22Qmx;eighMa*e0+vM zvR0nFLu=ON+h|q+$u}z4wbB}#5C*3d<_VvX;1hCvqFa>n;F%r=UDHIKGDhy$4ENyHp#A2DyrcY%O z3Nu5d&on3ur8=&;Zuh}`mr~ipb>VS)Els{SMrRXmkv*B4aHq;b0$6El=dBE0nh|Tk zoLht6TPa+_hyFS38L9dfFXwN@QT*T5EYg3g9{itFQ#uz9mw(q!ubMb-SImGQx|8@C zu9)ven(`GEiP@jjpt;F%PAr=f79KXnQFZ^qU8ZZRF2rPf-SJ|DFnNV|(k2~*Kbk)` zJKA0|$r-4zZyTwcm45MyX2J;K&R0(zkC4_uUl>$ejM_tA?jdvb%fwSH zR3hCo)aIFS7{L6SLl@uFv8(9;Yu8u~eRtA_?giuoAs|pXV($si-m$aHVWZJkd{^cG z-U6~Dcp%GMQyEtN)WZ*GiPZ!#u9q3j>MTTPom-$ZfHHbR+Q}iIml|4{RtpS<`SN*I z6Pk5JsSTU#Lr`+&H7pyP_IzQf;G zRv&Gmz4qZWf_To@%+p`=IM?2K7b|;KAPs%);CS=%2j0#9pGK^!=3Nr-{wiw(f7ky; zII?j0_o`YG<$pr46)EVXT2-kiXU1g~CaKgKo94qKHUa+9(Du&fAGc z@6r0v#6(kgyd@`~zl?P|ox>v@2FKf}zWpuQ=)*pIb(=M0&95yu*ueTZ>@OOss$DqR zRri3Zprw#t>y|*NHKn3cnu3)66u~19%{9o?w6iiE;Bru22d^; zn%TI6jUd5&2QpJJKWXx2sjbU%m@&Y4XXI-y29A6|h%f&icJ2s3qL@(aJ13jguC9GAo zW#=Z77pnj(v>~ZF&hoNK^d3k;h`O%bX!Y_XNLn$tX!r5r_|7gc`xKefKc~?s#0V-9 zCtkF=;gwtW8AC!8egOcjR=GueZvP%W&N~)X7EK-y@>CPU6HvFh%%E1Bn8YCJ&1xoH zzCN(e;oTsUjun7ol>+!4NBCOj1h_ZP63(=9U2bjrYAvNyOIYm$DV4xUpy`YJ+UiW1R0UX^1%k|)z%*`4 zWWx#;xVsaYlN4)d#`m#&amCKSb%t4nPx1lr>X+%>J` zH|~T;E}BWcnynOdPeuun)EVzYd3?(xh2Oe@O`t8|n4iK9v~kP4nPNm&8t~1|l)egY zlqhaVX>8zgXGlSI;Evu0KND`mf@pqnFk5`E*Ki6;cKZi8c+og87c8HSFJ^Z5&cexs z3BxxhVqiQnK=CAaF?!yC$PZuFXN?QL7e7b%hY<$QDDC!ae!To({>&ST_1(jb2?%ZG z^p5+^(ZlZ%5D&aBR!$84XG3V@Mhv}tXq*HDXy1hZ=b0V$yUWT-gWz}ls%7xL7Rg)bN8=K*;xh;QHH*6|ikbhq&R?gc(L zdK`lzFZyBcaB&<|>gU?$)A7QDhcJ*|Hmu*kfw8}^fE~dNslS~t!YvL7es^bn*up2O zC-7|e4S;LRckXEgus{+b~xW(Nd5BxZ+LkbYez@-Y4}lzCz6DAf+Ba^h7QaVk2fOUk0~bPm}Gx0 z2AFOYe1E)6C3|aroF``x>(p482|X{#wiXoHzR1WYKd8VuGaY`9MvJcJLZHT1|M%h( zDN_*qt}8%{lcwE$Gne79dp#&_>!ErCQfcbZc~lo#T&n`qA&hem+GcooQF+&k!^WR9 zyEJM2>6-5GChx=vZ%4qPF)6(p3ry5dq!I-8c_(5~`O64MkQ|piz&c!yFpMO#(g*^c zz_5qu8j#$6ev+LB`1969WyEV3o+Z+-x;auO3Zps5$Cz3=MfH6JN&0OooGB;FR3y=J z=$rGZjU7Hv7SY4-36@R~U_IRdlVs8J!T8j(ZpA-K5BdI`&bwlDhk_vJuyI5PkTKi9 z&$oz2(bH08rigT=ofP(PyGQgyq4Bx6+!#MlZ7(bxJPzBciRwP!_fTSb<73nao>AAy z?;m=StKB%!=UVx+YiRFhKg=3_*z9jWO@aBOAX@*H7_ZJ@5 z0}u2@s{)-|{3JR6*O(j(a&O^AtqG+=K?ll$0!_aTR;)n6$<{3a}gRHnh6! ztWah%Au+Paf`izW8q^NOhZ#V(PUfGKv`Tjsb_#1;0H>vJU#DBzTimL@j5vpCM7++W z(}2^FrsxQN??{b_7->$`IGWQUz=L=_z?eO{-)iE)EaD_@n`~j&l+A+ zQxW_YWWBCbjgZYi9L_U#d*WJZs?N>=`Q`2<28wc#7Fq-JJ5F%|p>7y&e@`6%-lx}Z zx+0$17ZQLXxV#0;n{&pE%uh8Q74THIbb2&Y`fw&`P*@PW1GrjaCRxRbb~O@Aq5u`` zf+AiG?~7k(2~5pnB*@5Wbt>v_+{_D=y!8C&?#_fZ+UN#RyF&dtCQk7ZVo84v=E6oD zDI2+^64^Y{8+{~w0b{(F9I~`+yGT=}PWm>EsOZC#<#hMo5u6^SJqtZ;y|3re$6PY# zWWd@<3^lQ0LcK!-`ZffBImPBVLbe2>f>eDX_Bl1m2fPA+zUTh?XI;Y`)X!hy)b2L| z;QG(K!VOneu;n7r*V>c58`Kul*Sbd3y_bvOO`Xr;3QPco2(z2Kdn|0 z#i=3z{Csa&tEg+7(vH6Q;=9hN!-u7I<-iP~v}R^%Wye_7zwe&Z^$b^PJV0a=3-P-VuT^OwFAhTACy=h8Kav_HA>{{>wYf={!>RES7D}vLm zw{BM~8Ub-9mFkm0MGgFjh%zf!Tz(*qejnQ}B}OD?SPGSHmyFIf(eqOGvz_H3D26}%H*jONxKJ*qWfmP&}V&ar-orvD+G6=YP42QvsYSWrO?GY zjDF`58CW-y&ld74i&bNe3|jW?Lp*llY^ph}U>)yPR)Gy}OBLMp&Jn_5Of~qjcYCnb z1_|e4zNBtDTR=K){7He|UX@xX_&l!GTA+v>VYo$2Z^E-fGFOB&?yLYxc#86dI(|5= ze;{K1<;?K1Izoo2ujcVq70D-L>q7!}alRy>;Ex@#Z8}R%nA=^AYe}FCKl%a`VJBdp zN5hsf@dBwf0pLr@bkAzj0Xg#5^@Gt&>X*-@(i~@sDrUNWO!qfxEyd^4M)C89tBquF zw#f7E*=Z9w9b+s0pa@(ZD|(pl5GR-c(!f&ZCBDxz zPgjUgS-+QqEw78hTM2{Hxjm4$iE+wh4v3@jfAdSmC|O2oIa`8qNq;lrluwh!)UKTT z1pKC#>Uf^w8A2&aJ`YlY=pViWdrqJsM|zPEK@Nol_xr#Jwv0!s*glG9Bs8KLYdUt= zDyV;3IaO@Qk{DX4Y7RS!mEkQ;>6fTeiTD3KDFs*6X4P04g=I4*qr67hMC1!+qI>(7 zxlwvS<5zEpt==l$5cBJ(F`hIKNaK+@l;pYk?7H+-^73rCFXvh}%NKy32h<`CC^{{0 zYz0)E9vE;BCNefwTFRcvBwnk7`_|v?dUQ7<)hJ#Y6v&?8 zl%3F1PmZ@qE!!ywI4(hRg+|OC#HOV)i?7`oOVS5fLbq*Qr6LKpS|CboZTZ4!4e|HK zZ3BY9PuI*z3cmmosTsC}23nzPxvd=%X-MV6NGD8k?POQKeIC=*@Hd^eOY9aL)0tr& zDnjoJrpiJi{QfV7-I%$15VF&PWvpQ;p;=#P*;*`2D)%%9n!2_{$1Z_ah}9{b??SW7={KSI1Ug=Sq zsz5lSR2$|c+iH|I?G-lrc;>=}dPqfrPAZWwS2t*J^V|BQ^KOF)`_f3bvvVi*$HqQ6 z5q1qj)^v4934em;+gFT0C{>$~SDS;sg-6*<^UzicD+be+Ia{AeW$@Qi^RU8kd=&1n zZ5jy(HngbOfkl(6Jupkm0^39VKiC+%x5!a!l;q5e^$nuiU8x1=D|U$t_0erA;Y9n7 ztkja2GTV&2QH>gIjM41Vlx#1CK6oe@Wk(Q~c8_Of!jvNKDM~1lE~c`qAZ@AFt-QP? z&tkS$n#->-sfJN}^H1l_MxWAT?Oz-%NsqNNf}8X13@1Ta%PYENN;^`$7NRc3tbZ|A zjEPFWJx9x_F!7;R8H!AsZ>9b}l$~R6DAAg(W81cE@7T6&+qP}nwv!$2*tTu#IJud7 z?#$GwnmIGKtGfDE_n)<@ztvB#?|HEhiJqQ>OWd#Y{-O%f|5(IAzP>tgp(~nvWlql4HvA9u5ZJ(9YXf? zZd6-sWauoGLj}OwbVvno^Qe3&h*cKj@@y1P*~*x7CIO)wvEiQBDMX7(*Mz9j*UK-D zentP*^fF$*nbRHNh%Y|qAQ0uB1s+yrk5cSNOXE^ur9$oXjj1Xfce8gdOma#&5$2=^ z>R87yr(a4yM~&E~S-ZJwn87EjSwvLFM`|^8bLMKyc`yY{Q&CpiKeX)4wVbDLS%Z)R z_vDJ6h%e?~2%#wX9WJM~-R(*GMVwk+6P7WGaU;^a$g*ramU)8B$~~N)3VfV{>q8Vwg$8J=335LZyvrSmyaw)74?@z%(>V4dB`a zmqgX#3CLTSQw_ck9rr1ih#Aof5JS&@Ffk1m-xfUjPN-{ia+W3~W}tIo66@HFwCRv* zhM`)tR-;3D3;C-+;q_p%-r+X7kqFmm9BR4Hg5GMFj|6Ve|FJb~S2LhUGqP?&;hI@c zT;8moB6Um}m#OKn{6x|a^(bGAG~P+AAoPW4VbsVYckjTji9mQmJdADIbD65W*5 zx$O`x$en-7TjjJNxbp=C{_N7n>HTIo&vKYtu^1|s#asD&r6y~+wbo`Xhxls0YaCm@ znEyk7aG>8@uuL1!Zq^IK$g9_PU#HSTSpXhVW&^~<3aGGz0^oql5~#d%m?cE|SHL&5 z@#Z-|%0YYL@!}kj%lA3FE<(8{z-^dn{&Ur8QIVa7KOK*EiIq#sdf-NpDj0AAf3)Zv zw47Sn{5$Zx-Kz9n37XDlrAn_km_gC3Ibp>yN~R`;8{ADLDZLiurCR!p-u|7p4XFV}y&u?*fp@1J)4+1THX2g=0x4WfVXkz-2++yn;F|FGUiGTOEY#-b)=<{9ELq z*ds-{(TnUuq}}c>IudZW+V<5kY9{n*E`e>;2T#u40LqGxfSkQQ8*tuU?Mj=v@6MwY z_u{xIOd$iB2_X3lVxHpQe|^C>?`=$cYm3jmy9g~soNQyzBz3rQ!ZgyW5!n?oWTc;_ z3v)AjYc4t8Xg#P5Z@$?EUUdkk8~l!1&mI74J>&_lQ7G@3kNjI~8OSBI?wTCM=dOEW z<{Iu#Jnb6=By1dSHV+VjHn?FI(>t)vxEnemZI42>YVC|*@?msrJiqN=PiH3)eeY=OEbs5VY)uNT9h3zdM z8mFR0m2>%+T8TIsB#A%eITSUH$PZ8@JQWBsA;1?rYf@ZlvZ;IR8=A$P_)9gRRKK~H z*d?rV+Ynk;mTAe*(*0bYX;5p)%)=2}$umq1XIm=Sl?)jIXLpsf89b2QcPa-ev8QH$ zHK&#tK}7RZiguru$~m5m?<+jGQ^=HxlIjxa-E?y4K7qCa-j?i`;mXES7&%kpWvAC7 z7@M#`)v%Ui*}{Bw?x)m_%*vt`*|mTv*{vGXyg-Cl~wMtwjV1_AG?g>y;{^<4`BjL(j=VIC)~Nd?=9mZ)a5srz$M_nlrO~^MRZ!*zI?Tk~Hu$5e1wPj!0GX88cRg8Eck)5T{NQBdqR zna|H7gh_8g9Y*$U)o}jK(Kt@`hdbp1UO_dDx5w-w>n-lf;K`1v%Cwso(m3d|*KnKx zgW5lX3{|9Z4jcUHonPbXsWNjiEwoW{A{<`V&{kfr@vScNt;4Wh)4RTN`yj;fTljsl zNB%Yp>9^#DxTN3fJPKcWJRX-qE0K?J0gJ}xlp^>LYxp&C0&wld`;*to!F1ZuUSeK0 zg)*MqIs^A`OqR8A6+7#rx`EF+l{zK)CrjcaD}jmsV!Vz<5gH5-Ean^RpFtoPPOnkT z4}@zL{-03re}cgOiNSsUFu2C=9ICIde!k1Geg}wWTfG!@wi#&IeXc-{bmNP0k&a+i zFi@>~Nv2?<*Bw2-jJibY(W~uWRH#}-8P~bja?g*C(L3F5O5d$*v5iMUx!OC)MCq-= zWyYCiB5c&d3aRu>JXA?ESGIOGc0V94;RnP;G9gz9x(=a)x(*RVC1HAtT6~aAh-9Of z;4MA;E|NV zM81iN^I^p5{r%G7wv8T?z`>30i;4661C-eVPf|~F@Sraj-@SiO8eJ@SQBl(N?t=KE ztSm@0*G-Nt%p39D#qR#W-(`<)p&J}97y}sjrewJ|Szdg2S-#o&{<5Ydz+3xJ_?;-Z z&xfM8+tqgyd#3i6KY!60efiosuHr;>@(Es=y}Vk6^dGhjh1Y-OBw5 z6~hHu1E`9L8b8&M1Nry&bk7~VJ4(_RlAbJC0ft^Ac|x%WW{Fb9lra5F5%}F8d}z+> zhwvurf&bi6fV-tv@CEVg6HxX9lDfVU6LLVJeZ}y_w(#&RFQ`Kr6Fq+Cf;lgIEtlb% zZIpX=x3KOl;3ZtT8r_6S?i;gN>MS6)jop|Xf{-Njobf;pw4MhATqM9lFB10;l`9cz zmIvKTtv!Bd%`x#vGJ7UUdEN&SO}qFaM@Chs z>@*w%q8pTRmw3ER4LT!L#Eov@;{F&w_lrdFWp(Rm|8zF^=Vi5c z!Q9*%Ln48|eYX|@IpQo9mTR7@He({%aN5h)b$Q0BK*Ucj$<9y+hD~`8`s}V6NRsZi zxJPlkV)BFL)#){94e9C$f<_{mZw(8?I^{;@EftXi_dKkxw^K!K>Q%e5m=n3}qD^Qd zO4eLcZNbf{2PK*$i$(c=;S=O@yF!6sMYiaq{-WkxN8~k=YL=-Q!-6z+sD=%Wg4YV# zV-m-8fSOz(Ec#M4bV?*ML7GbPlk^6R@nEsfjJ^z2V96Ob!JL%WZ(fdGKJ222SaU*c zG)+0`+Ul15y<%*@s}G1d*l6`=yeum`OFIPVOhD_2jx8=UJ5HZKSYDIt0c{_kr{xd& zUR!?y<-1ZineVbIY~wm9)NoJ5+%6e7IK$J>JIip=1ZYWT$v)rVVUH7Aub54nM|m0s1=y_Cj5tf}R9 z#A-QK%8!Bynz?@m`DB`WUbAT>?&{H8P@S70(2^!M7aeW{ek|KaLer?=Vx{l(gXcI# z8cz6$G6DOVWfQQfPy3u2vZX?JQrci+^$uBqg_`F;W7xu;rv?E$$2ZMO^IfemrqJ4C}-4ZYgN& zW7RNZSI0Q1Xv?CGSEAJFR#QknzV>eaoIRxgVG~0+T`U<3aFNo#%+QtiZJQ~Q&;dBu&4L)CPa5n0>bQMw!Xb=AFQg%JkBkh^1szP$Hm|*wc*ZnTDM3j z^Q~El5{oYjBGtfwND^>L)v7huK|s2VQxzcLXkbrof*goMm4#_b9GA&-YK;CHqJw%& z`)%Y~hTrSX@cBieyHG)XR~=&cTSl>3&iUUEoyfGIn;}m*@ibTce(}7Vm(4kb8A4Sv zyJZ7Li|p{lWB}91b5kGPG{R})YYvvI9_lX|UtDEvU~q7=WX&AFbmfY=t=fg4McqQp z&&aTAR;?+sF>g8}YOf5wzHbrAw15nI_K@__&U_l6c&45JS~{tyM_{DInB!1LH}}{- z?IIVt7x#L{LXV4{{hC7|;rmzIMM_JS14vraR#&O)Ot8_GT&6(FFfU@4)gSs`RrFeB z6#$SjY@xWnteS0rcEHrJDpR*r(D>XH@X;s57~^UWd4`xo0lNk3q(^kwx4TgI!rQq1 zQ2eo@pDGQ;&*d`D0jg@jO`wIQ+i(R5MzJSV->dxuaF)q-U_;0;@kPDtw^htgZ0R0G zyROapyD=2rqn%O&ZzVFf>p6MTd74%pI3amAGYXd}z}K*k35xW4@ytr+@Q2b_#S+f` zP`bcM+N&aJEl*$Jt|3;)4RGLSkj4`ax}q1rd3H`6flT+UC#3fGEMq!@P9BR|VG}8) zW%z8^s}=*>BsMSEU&xsbYl)R-fMgby&8y(2e9cy)LN!wc6)*}EWaWMW61ye& z0B(Lcr-BF4_N*5Gb^=Gdqd81zMM<*GqdoNYe<3I z*axn-RiKYy!QVCx?f&!VN{d(W+anoI z{qt0sXYkictErp5_=nqQ4!O>4$2F4{nE!wTx{d;$4FTYUAIKeb_3t@NGbhIWSp9{J z>i8<`gZVY`rcaHd!wfzm$;$&?(?b;3zc^!?x9TZVbeEko4 zfU-luDpoDysy>)?_z9(@x5&dBd1PY0@ENki(^LZASp(nGz}I8j0YlU8hz5kmTKt@L z&;tqw!tz6+L`gZH*$uZXCuTnzi2HCM=e^o51ydnG?C(axl`4N)cP+!dvf!e}tzq#* z1Hx%*oxH9b)61~pyezq3_k~LI^x+}y7SU2WFi$hJDMksvFT=H7+HOb-+TMc`RL0Mo zHqlmzoQGyjYS2+?61ta3JFsJfyq#+3Br@i?8=6iH1s;^p>W&pv$U2`r6b(INiOc(^ z);@dckWLlEoz(M_JS)RlYGR}Au1HB`zSycfZsH3vt^402rZ2zBshaMtcx$&vAdz&u zoFi$8S7nMMnX}Bjjv7JL7SgoY75d|tLUYh@c}%=ZRRiKPHynkiL`P`@CntJtPj5PY zS~*7mhGi7|SsHucA zsERY`XcqQoue-JYS;LNBNxHgB_cq76Rg~0Jl$DgWm3M8GQM(oi*(_k;hs$eq6iTj( z?f-ZztuIVch*Fp3exlLW>#0f!>zK7Ik7v&Y{OF{DWI%G;4W&VkPVIHZj+L=6ie(KF z#!Kt;4ybDG=|~b!KZC~G3bR)-wQUT%#a0|}QKJn690B_O#Pe+itA)9rAhdFx6+e{Z zWV@-i7Z;HslZRMeypmf%`MPoz04w$AkJ3T9$X5(d;))$tpHEe(?fV&aOp;E@k2n{U z6j(QrbgdXgFor3CSaCe=Y`IM9S-_ZUsYs!eZvN!+l)Ve>&u^s{3Y-Qmn7L@@Os?oE ziyv2ds)g%(+Xh~%7DO`>w+aB-_qe>gfMCNh7LH$q#lDOW{!a83t*zrfrjCE@?1IMO z(JW?E|H*iJxhSa{ge^;o?F>Zn_DVIw7%DoeY2!5j?o_NH8y~a2!UGtODV{`RPfuuO zs9O_hV^o%tS=&>B^4E0pPpKkR6JlHw(FQ@9N&TFf_17RZX6|lr5eL zg^1<>nZuT6xH(05U;EP&!s5ykM~IFX(6?9e<~Rf@RY%`xGCHx#%{9BOd$}W!E>I2s zjoDo)9oZ-l3(_vN&T#dL%BF0}Jb^f9;v!Ul`|7W>e!F@fe;FcOSx2hC6ib4sA}#76 z&Fsny7a5;;Znv8crhM9>P`vL?sct@nycDeC)L@HDYg-?h`C?cq$K_B)y5%?}rm1AK z3NnyRU;x)wgy`P$WLbq0%*%e5(}|6Vm^20mw?B?_bz|h8I2iH0AG+~wINc5^>F9p7 z2Q|ZfN|d)<`S9KnBGIofeA_hvzW!OeIVM?f*(#}32Wq9W8Wo6uyr$ytXMMSU{k3v` zTnOjW`#X4(Xe_TI`GzWG?1T)&N#pyz3{9L(+o&o{$8Oucl-A+}h)LgT>grwF=O9Ah zaN8+|Cqf3F#Uh)Oiid&Y?9^NOn#r68Wp1-g%Nn%GSWs+cHZdjd+ z%xuW3!OJ4f)bxjjoM9-bZ5I736SimRB%RN@8|r%e5}DBOnbOdwv;8GV$aosOylsDg zWiD5T{|b3){lYnTKCVx!63G{;?Z9#B*zE{Rka1Z~m5@FvSWu6h(^L)PJ_VkFX>2G6 zM(EzKpUkAO_92P-Wi!YOgwC4{ltfEx+;H%I+#AzzTufQ+)gmkCErp71Eb5Z$IdvpL zica89+UPkKB2tjI%E8*)*|Qm&f{XTBBkw1Tf(2L2j%%`RZj0Nxzsjt%PZn10LPO@x z@k=9jvma*XASW3fi8OBFa~3^$$Vd4U!p_$W z1=2-pmKM9hUq*1Ts3kQKX41!Aj5+A_W|nw;X|kl}^$p{CY)Da}GhRKpP$nu|vH#D< z{uh`Zfd~|`15#B8RIbzL;<)PYi0UtB6xZV|-{|s)08@}fXa_a?_6L$$+#u`KfJGQi zOD2*8-|5^a7q!mmXx~2b2Hk2G+EwPQyqMViZ&X|k5seVBjL(T(2sWYqj^IP0efgJB z3LfYxDTwn4Hvp4(FeqHKNI1G^qOA@8fDX7*^Nu~<=Isr zc%G^GmA8?Cx+!#^y;%SO>RF+_&?z4reDYx?YJ{Vc_~h#Q3K(NgvyX^*E;%b}%1>m< z#c-QBbOvfvOjg*9I)S|DiIZ9E67*aOrCP5oWlrr1J_;^Zmf+9L z;`j7o&(trk~K9{#?B##5C*ZRT%b_h!wn6@468h`RPkJ*Iu#b%|JJfP^hVh``2{IV+u z*>2`_WHkUY_DpQSx&N{WKJ?2CHY9|^(LE^hq%wb3WM&9z4$1_D9^i3n+u-=eI+%Y{ zB>1pc)%l^Qz~Zh7bodX5)FAy~e|4vhYH9@~u0^MOz+K(qv^?(XloZPD<10&5Pm@8` zkt#rP)*j4wppFR_O;a&^yC_=MU(IW(#D59>YbEx3f5$QOILjm8_cF{P0>2rd~#Dt{qyhUNY?Uy5khe*s$v$kE^SX0ZXAjvO0E-LN{a1yN!zGy_`_t z`|>`SqP&DqQ*GnWycW>ZGcq|;KHec1E*z$g@QeeRQ9EY3n} z8dLuoir{UflEH>;05z;?8*JC!z0AK)L84Y*F>J6{#W6-;%Zyk`)An1?7hEYSB-Z8^ zw?vPA{|p0TiU+D?Pyqmx10R-~c{D8puor--vn6G+r@IO+HGgnF` zY!e>+653+^;7Qgx9Tbx4M)LKfbtFRVG~b_RX&xyfBONkZ3R+fE=A~U_JEdJ_$@qHS zE5EO52EFgpi`m;!!pUsz2y;+8GUTWo($S;3!>d?kIyba7w9FdQ%S<3;6pjov#$(g_ z7Gu*-B)CF$IHY_hp%aQtREk$7BqPt+XhDIz!l5ZkZ<(g?+S<^h{Iw27tKmRVj?&^HwkYx|x_?r^u;o$l4 zVC8lfSq#FP{SoThljifG=7pJt-w|s1zPNRFzni(D75;Q}cVNPZ=>!nS&W`La>mLij z=n4ziX82YA@$Loa%+JgB&A{v8#aWoe4+j=NZqjZy%FfE*Ysf`^<902AcI+8z$(WtP0%&Ii-K{dbjb6gr=+-RFzo=H$-Sd875^X99Y4${=jyQh9hp`lF_j-r3Z$Cc`g zpI!}zl)k8F&wvw`2q^niK4;ku$ zWPTQg<4?$!$%PNL{IR~T6@YfZAIs>raP_;7$o%7WFF1|PtiN;iWQLIEkur@hOBMd9uAFh5J62^^jaLA0eJ(#jCHTVO^|mc1&1GT=ycnv#^;0U3$2>b;O(8jMC}k2I{;8tLm~?(w9W53+Z;UJ;w=>1$nUJtbb{Vm zHi$6kVP5DCHV5@s;saU(oOrCmRpG_v#s;?$GI%)606UM+D0GlkR<21ug zyFx~!EXg$u)uIXPr)-J(x}j}uJuux@F$T1EEgFQahU`%rnzf%E4@Zh`z|}omPzj0W zGF)}y?Sva|s0<8WBR+_PgtGHZazTl5ej)1UydKz830;UbkLYk%pVSXmW>|jTg%N}8 z;9{TxY{(ewQ}YAxIXEjde z0mr0}{IM0AV946ABU148YYkI*YhFFBln2DF`GgJScmR^{t3zI%hI7A$X9#mzoQ{&{ zqu~aW@&>4UqY6<40{)G9&_Oovxf>~1J#5|=FYNEZgJ^&#?Akcory zJb7wyh(jLs6@tb9vM;uOY(Q&S)OUlyQFEc_dUy==3@!hQ+l3~lhs791zFy~=Di;X4 z$<`ItR+YIpUj*)klZr?^&){@Q)li(IQlDqwc3xb7yLlM7Iwk#CBS0KZj@(gRNU0dh zls!M6|u8qw(jehn%kOYxz;T}=Dghs0=`f`ZXZ*MP3~_w>(N zvzPHZD-0T)MnDjVvwB5f3`Fh|aw??;Pnym6@j7d=T0WGA=o?bdTxe^%%v4(|aJ-x` z)OlAKc&@9wkfj#i{ogiy#DdTi(#X>b@UndW%s&vYK;V6xdXvTT-=Uw8v8xYeT_=Ef{JWf;TUQf585ukM!hfKhAx@DQKffvlFxds* zh#iQ37zm=)*CkEEBTKgG)G`T#8=|#GQBXBgsXDxcO~mGQNtwKU)qY#HAI_umFY`v* z4fs~hEU9FNK$-3C5u|U#GPBR*_1mzF&vUU%F(MhAlmzP(e=`K)*o6w5dt8uhT-(L| zjaSHEKKJc$;E|KFjk((5-(@(b*Cm*0TCGRtJlXgM&2r=;G+-sP!sJNCEIC z(C0HWvZbWV zV7Z-l6$SG==BTId7}#?6G`Tp@vIe2!epC$o&RpIX|{^{fbO_RFvet-Qdmi(3vx< zv?)XS6033_@k>wD5iw)fjoCid5@Mc&KZL9;zLR+=oR}!^Vk1OgC@6Q3*>=u!qw_KI+08p2?WhXz2mU%f0>D zbBoOQ61lw;g+n6JcI2ZrY9!ja!}$e?^Eezw(CA)*1&1U%gL(UYx#lh@{LgOb4LxPB zt4g0*k2fL@T}CYg>68U|YU%-IZalA`J|(#ngrQw$%l`I(=oFthJd8rcs#LzgXKzCTSdyZwK4v>jm_Qk5|ByadBM^VM$#(ni&#M_$! zm0yXr3stz8`QQj+b@H#An3bs8=ZC!aOn{29OMe;)(B4)xFJ3V;j)Wv@gG9jxl|HhD z5Dc%MUY=Ft7});~vx@K20W3|v=H<4ZCt6%xV;M1?s5JA+=6GduvftCeukY}f$I&3M z@aW#*@zji2!K8m*-33?Ct(vh)M!<1BqH5D%W1X zRFft3e+m*2SpGn^Ot9%4`3Trt$`vx$npv)>f2fd0zfvyF8sf|^QdI4~$}9L(ljjs1 zs&3UbwXlo5ArG!9_>ktE51Y_kP%Ay@Q*+6$!{*o1yS7?0^n~vlLK=U?sB#Sh={k8K zL!fa7z8VYQD&a#Q(^Tfa-u=B2)BbtQO8L%oFiC6yeTi7BwWu-%D@%?LQw4G;W=@Ai zo2C<>vFJqLdVKBh3q8IQUPRL%G>Ex;P{u2h6hdTGjc_Un`Z^GGDrgBXkEYB)c|L4~#)sPb+%y8E=f z`?6dyNbY;nde^C>&V}(r_NQIfCLlgYzt+ScsVftN)4e%LQ^SM^M%iZhmQWqR?&B@+ zeZ?NOd&Jpo#d?F=!)V5pT4uUR-Z%`M-?>133yYw3zk@V~a8bPmoRYLYAY#P+Bi4mnKY`nRKtay z(A*%v;SLn7qmLoZFovO@ox6r z$pl%D(4RRt{7*@s_C$*WBVk0jYpg63*TNDu%Xyq$_S%SDL4@p%Q-A@o<;j63^C7?{ zz(Lt$LmdAkwLGfJA(5<>Sk-+H`6HT~@+`t`oMdT=^%&^g?!rcoGxM4|m5ya+vR6#3 z0kxWXxHE}eUiIw}t5#V?1v#GGb-8Ce_6|5$tE#s`ETCIK^B(Hu88v}HQhB6+b$*Eb z`uUX->{Y)3GSjVM2U7XaE8sHwQ+tlL)G>V8dk5vmmTwdSMmeiG@2Co{<5@M`xO_ulIDJ6ss|z=@3aNB{uRiDF?KzWoz@KlV{S0^fOM|XC| z0NZ^`Ezwv$aB3KmfyDmlLYXu~Wt1PyMD1gnY5?$622uB@_Q*)?Quf!Qw&oN5U69kh z@GSak_o4;{&0O$FddM*wetkt@9wJUUJ5N~#UjFiz*_Qe3K=XkZF7DlR6W@(U7P;}h zZUB*x3Ys=Hm{d_YzF&_}XNzqJX&LW<}^IrX2hP$}W*l8RG`N1`c`0RAeyrZtIU1vi0KCVizmTm1pm z2|Klir7Dq2FiYH{P^EbK@Y|uyIHw9LN&r@;Rs!&x#f?m$ZJ@R#fsDBQ?DAz(T=_lE zBg1yy3q@IpDI&UTh4;hi-|zD7?WeSMt!)Jg_~2E z>lgG)ic1CsPpvykZ4B;&efZp_$YZg&Ni_XC!hH`a?9ekXP5hA&aInr>U4#=iHB3i-IwtlN zjkU}wUu7(0nsxZoTWo4F+Yov>l43fK$*rEN!d{^nWjvB5)rrf=!}d!(6<8Tnm2eZl zZWSNTf8mxqx9J1w{3M!wLpYzIWC9gvuxJ%o9m$A&0a@z46 z1825gI=b&0ZK(+RQYyCa!T{f`rp&bvgiT)RuB)S5Gv*x2)01etBYJ$kf|_m%&kJXU z+A4-`?to5Z>^K;Rg?-lOM;*`gm8aS{!2g~w53_eN;I0;dErv3Gu(~h}$NTGrQn2!! z0po?G;-}z-@dS9ihMyDJr)m|tYckUqZI|g*e)dHh9w3r0#@ds1Svk>JgJn1hxX1|8 ztsHIu&Jc7fzgR$g_D-69gY}Ad8kPZ+A;YH> zrq_PKT_v9SV$-xdp^;`wu#yuWR(H4MP4RG))P-v1r+VTHO0x^b5tLEBM1`v3U}Z9_ zkpo(UMCfnU4eGmWmPLkRo=e;5XQ_5grKQNVSgwD+q%?h$fZUorvcy8V@1s@7Z+pf5 z?Gl9L^^~U+2fI*#$OBEgyQgiC1uRh`Vf7iHDY}L5$Y+VrGAZ_{uYIf`XCHPacES>g zFBEj!WsMaGUjX=4q>NRJT@dg%M-o$5HjD7SMY3R2M9|f_8y$4QTQ8M%6C+!t3E*`2P%Q`3e~CE`Ln7e7-2-wl#pl}5`X60^+Ioa}+Ekky!*V%vo8jem*A(tx&b<-bG@^IR$d z-A#C>a|7 zO?RyM(z9VfE^TM~HLBIt6STCppw$%2YDU$O4!c6lD45*-m}Spo8>_J}oxTU}jJ@*= z9Z`DNET<-rq}YzaJ1U~#_O=-Q($=IsF&FEMMFb{;RlBfFkjRI-{j&fEx2A2)?W zQo(nSxrI~9aMA@zK=+^cagTUwV+E?2k;pj;$dZ7wNDzdxW3^e%@GLl(DCwn0l_pAX za}%t({4yeDhTLiRJQ>GT-Mfc@>u-hv7Pd*Q8a1yftDTBc9fwn2%c`^hI%tGq9&Tlw znTSD&IOg~`c$dt4yOYj}qJ)!&|Lf;l-{!VizTxWm{&Yu;0LEgbf5IzN+N$(Pc?~QY z!hy;{?qgBU?md@enHjOpRP4~a+ljnh1=?(ajvJBzC)UBwn>n{ov{GiL%j4now*T}% z5C>lEe5E>jQGruSu1`HMNWiMu)Dv0LnUeA z957NG=}+66kOq};M691+hS+wHzGiQgm+$ikAfG&Ya(j$uhd zZ&K=`Cng&whlBJ2(atFxqm$kuy+pgDC01Vp{|*6}G3wsjea3pMcmDT{d0Uf?7Nrvt zzduH;z!6fA+%%4f@p+wLxr5SyPQ^UK-zE%1tZan#~VSXL;2IN4;GwOujnA*H4Ukt zR~}0HKeqq>*Ou&m{m0M7&e+A;Qwid#`JnB}C z-J4UX(aUK0hMo z1sHBAx({Ld_E#T^pg<&JMkjgM7;8ptUo(YQP9UA{0Hnts7;H{Z_^YeWqmhccghAZe zIen+-9XJ^c_djaQ{UqOV52TfjoNGnA+{y<)no4X`Nv3a;&5~}>5HWZM8T*gg4vK+* znkyvz(37ye`7fy|8ClyYOgn6kI$N#{(wLW~&X9Yg!QZ$8NW5E|lNlfXH}UR2$2$Cz zWE$(o`SNck-M?Hk{QG$PZ|y%`uuud)2hmR`xCs##0ntD1CxV6Y`R8RzJtFLZ-Or5p z{4t>Ycar)4YDWA|9(5N*0bA^!#qB$4HzowsP0z0u1|$&B`9e5P8FPze)4~)qqLqdp zXTAz;NBzR_2xjCU;c#tHm$AEC0=WBlpRe>@ZL%7?QI#Kj!a8LP} z;WCxqbT}SfJ-cw-O{~9)39^-TrbY~p_PBL<`RR|D;Pjp-rOX|BI5_Bo-!{`o_P`8> zN`CbTB}XFC%|svtNB?rI-NW60@eqnFoZ_vb|J>VT^EP%6|Em!c;v z#21*IiK?Bc?M7J#Q`TORu%2vz$CEE57uk_ZUz?+VlB><#*XTFt1kLaA8H@Z^!?_GF z4ft31tmB8{>bawTn^x zM@)RJo`VqIB%E~z1{lm~q`{O_m%c<6sYTnsDR^Wd30>mo-Ei&u#WRk{nnOGaAdoOw zoEvq;HSam@TSXnuzA~ll2&Sc9nk&m)re1-xe zONA>t!n38%@ZIx{;I9+Kko|9JQ6e=$$WhvvwhbFO)8?)&aV{mInKQ0(<6mTj?$sB+xJDp_M7kd!mkL#=S4=z+T`!+ zYyBOn+eC4ZvdZ|$MPo-(Ph-h_=Z=S^53;)SW*9eK9hr(OTBRLvOWd=ZJ|T=22rYze-q*c0V+!)>eqgM{h88 zJmF>kzK2cyn;dw-?t3?eedbEDj4?OSY&!0=b1~m^>v9tCfZ_&xp~Q`Uj==D zv)O;>j?$f+sP)CAk}AhfL)8A;*ofj_*IzmoXXJ9ry46}LWfinttE`E z^2Zw$-}#RK*3ZOkT(l*LMUdn5QK#K6Gi_$-=>XI^m6SV83N=TTw931e0M(AX_I?Kd zJrI+EnJ7r7?GCqZ<(UP`x+a)&h+DQ`LCvDbDJz_)4Th9iDUPVSlc&dZ(Egul5}{ng zr9(4w?F{v^R5Z_^;*6u-nclrI>Ab4JBTXk)7?sXdWWJFXZGm>3HO7-fIstHutsJ`2 z`e5!aOIRND)c&%KQSZRENWwi7*{3E={FUthghh%%5COcpdN8Bg`H)^!#iH9KXVf}k z>@UaFeH?p&Hf0V~c>W!bSWyqHZj!R-kw@(>_|f(Z9;9_P+m!8tQNkC&};U;M^aF+w;?C;YfH}Gv2-`Y7qNEH?QDIh$*<|*xC*I|lE_2tarD zewNYJKYfv;jq|xqU<}V#^Na&H@XNamu7zHzudsln6*{DSkcJgNZy=`H{WclI0VdaC zuJ%`93T`P_oKky&k1oN`Fde^_R(D@bhJm7b@QgDW_3UF7H1vvMvuf~z?p$xDu{)P< z=bPM<#9_xdrY4Y$a2&Is4i@?+_LRNWu>5Y*-?p7KQ#PIT9yT5?KhKcq7e15zvFqwT z>+(-I{*MFqzp2ZnPP8WOKZz^VfMs{042?Oa9wfUUav)->8p(FQxf5%zNP-U^wr+M_x1G^a z2l)4}xIy0INiz6!McZzOHre5CpC%R-$Ul67@KGsNoS#;~_(&v7{sckyzXEFePsh4? z1$?T*&$UusidyyG_`f}~g`5`P(b+c>!v*b(ti#%_3cetP~9&qn#so zA6O0rEwh&e;Tqyb*qwM{C%%Wz-#psvUmFlv*lY!1`(NwU?Oqz5$RUbi@1J4~h&NQ6 z$GFWm96l zUW!4q-arnl*|WZr*_{(+5|d)tVag1hOyl!vIuHhIS>VJk$O_f`nI#+FX^l`W_{zEQ z@*{JK!PgYa9e5@wFj>+1{v&H!D~0DRT%!it9C)yyYo}IFrSP%5O(diX)9!m>M)HQ> z@C3KO_vWzwzH>r+PtRe_$!=B30RfwmNKbUaxycxF(uJ}-Kyx?_;7XyI2|LPJ?+DB% zl2O*@rxIxes~DiJ8nUa7Y@%B2sK7f2b0Qfbr?DF(Do+dunS`CZo7tDDZ34~Hm_ZS| zR?L82N;1hA$W)%r^nVz8r&wW_ph@`Hwr$(CZTmdOwr$(CZQHhO+xz}Ef3llw_Pd^* z%*9MkI@MiOMB1n_f-OoZ%QzQK!L*{B>f?iH-7InAk*xdl?f^XoqJk>@YUO$tAO%dC zHp%XK7#ib5XHrAaMNDke?@HWJc~awJ_fygFq#NTV z7ASbi&K1*r3oY~ijkPKZDHA!7BIZ2~BXSn(8%)$OB(r*JK(@|%lze2RXEy;gu)y}& z`O5qP{qGgW5WrMt_kS;29Si_~^8b}E|I->aMMc(b`9D|lH+2}Vb1Bs%>%RQT%}8MM zc!6?z;d)10a)-5sm>X+$%db7mt%xL1RHU+Kb22-#UF@$500TnFDKz!^a_dpo+4zx$ zH`|N`9ZCH5Y57Oh=hSJXp%!eSBYJ@p=U{1QTBjH)+V)Tmg3yT)V7iKPDYe1?UodT= z4g`?i^28H(G%D!KdDsd~xIM1T|EB+BCtyuJG0H=yaexy@)6r(A;%XQ)ohE2nAA-gC z!3RG|ZS8gkU%1_UL$|V~Ku7h2e2cV78$#tRvX@>fDJ*X@Z~4k9Y4Ms5nh8srrO@!G zw$6qaYG~XhpOr<|t^mRq2qATI5dZWEUfKN{Zn<6gHEMN#d< zu_=xH`{!aWC`D*2H<}>*N=W-zZFgXy`vg>Bl&pk&!IxZGJw$D34Meby0<|T=|Y;hPby-TDQo;~eniJFME zjs7lNnIE(H(#O4BSukt)IdUf$s-5IPWu3`3LTlwv3ixE5IToi}D9{iAkpUqzF!+^- z9=L~&6R~+9jF^IT1%p0J9-VIYeQ;i`QHR?!Te~*WO!csn=@8Qx8SSVqc8MlKE@*$T ze~&Qglw2fdl`*THgvSWU1UIGO1Gxd0>ZR*m);5OutHy=9&$U7WqQ#k(g5~$H^Km__ z(@C>R_{F4f(T8A>)drB^cXB|1zv*wjj;MUZjg68=_!9-cZNA`7Eo%uHen|{Lmmiw!@a|P9!0ZsJ);|*lwASe z8^8W|AfH0JI1w5zv^Oe|Cf(lkP>qoKh#AS;lb|;#n$AGqJT}!X2hy*v4NlOrO999X zDYsrQYGV=YS7mQqggf8tY>h$ReM|+wwx1hDRY;qST%{zpMZXd|wOmP62KeFGbl2~S z`tYv#Db<~I)ShWcVsdi=J}3p=XEdzCZc!bL8aa8ns=A{`7h;XE0YYqRu+a=BeMc5G zwnEBRbb*9Hz0uqV<@`?y<;J|Nw02lKV{fYEvSWV5^OQ|1WnX)X)8KT=V{vcVX6*>i zwQXw#!2ZmvRdepjzY-V^Ip)r#Hrflzk5e6=AjL`i92}~n3OmQnM47`XPzx#Lqp^9) zgVb=^?DuD-YKombO~zxxvV73vLi>%vgJ9kA4dv6{qaQOqSa(UMX*4UUd&{M1SI&Th$Fr2?pSU2 zIHs1jeTx{zd+GAf;Y@E5Xz@hg30{0(Sz`~SpHG*~v*+PTjM8aX6(}Impw=O^XYX3y zMA^IXTB@3sDB2bw^O`D@(q`32aRY`VM9RY!mZX8EHd=ORrS1TjsFVI9JupOLQ+C6o>P(gR;9njs4I`I!M^i)kTmaDGQC~x0v)PP@ zqX_H9wS`;i&43UcEP$&)$N_&KhlC#++*g4Rgro)nt$IKFFSSQq@GB90inS0Da6cx> z2G?t};AN07#yh+uyCF-;c2o`vA21OywP+NfV0evnvreitZ3{vP7^XRXeO2xu`@~em zonD0&P0gOnaHDACi@C{QVMr79pW=@%)<9Oz#K>wyn(e#kuOoR2zx}O+t1LKC2htbr zo#w4*fm$Q2&wYD+=DsVI^unD<+6VukJG(Fp8w!d7@N^qt6oXu!#XhnCh>ZgmI@{b< z=%yZIn93_GSR;Ya|_;Js`90PMzn(bFtm<7l1v!?N=e#qB^=#E!2w0LT7K zKTjKwD}9pzV)dE{N)u?K6V`v6j8Ga#Swa%7X@3L3am>`i!mjd6Fak!MN0un^X0Et! z0;{HJbNqii5UHlh4$|1Zc&KQi^gcPNBk8HCs$V~Aoe_15#&4VLt%@QPfX>ii1i&a4 z9|-$iHn;Eu{|*q2&Gb{o6dY&)LutM-NPVyHe4;E#dW-5THd=dae*}ho{|n((p#djo zju)`JU{Awuev0t!ixI_6L5?^11kZ1F2V&#u2flCjttWOL6VHIKeRN>ZFaQvV1Hbd) z#}s(^FM7fR-oWAkp!F>q(7MkZAS?SHKt^iperz!$G&n{q5u7 zx6U{3D*mkUq{tnw_32*lfZ$$H-&Q%VIuPN{MT%I61SXc8lzxRa2c48%GE!T41&XVhv@+Rh54YwnGFt7yML^Sx`vcKb`b-W` zo}griM!=q7PMD?V*U2^XH?n$x4$KIhiM)ky>gF9e;0t1kMu=SrUB_>d9Ea+ZnCCyT zXDeGGTlBY*?HoKkp6db#*J+bMKDM=snG}{z3Y#rElYK@P>N~bh%3#W@lDG+gh!!7lr3U@pyU|meCNf#43(~`8CTD*lE>UNX3W!jiNB=Bk(v>cKm0_ zVe}j}Ms$w8^G=$^Coieu@)>Tn3J~(9JB}fxGLV;o0Q=_l!{gW%BBJ?XKdM%DyX^OP zfwqs)U90C<^8e&!%4_W5GChEZbC81gX?V48PMK$i#q_IcW+UJzwUfr$8`_x+YM^qA zT%jq|cVd%J8eEpxHU-p6^r(}nYKv~&25Bb~M~O*bhD)9XYNdjZL}{tNZ059eHtdD1 zhHZiMi@+da)R(Yw14ESJHYZ~Z3Dd&OxBc#4i6F-LBr0&}1O{4bk{_8^0L;f?%22;BwxzIst zWqgVZ4OMoqIcU5uKt}O^xu-=?Zi5hY+2!_mpJ;qr#E8%cVIv3Wb`RDIw=>}U!yM6J zVXLg}Ko;9p95L^y{g;59lCPO7g#zUe7g}Qjn@mYlrmz%~G48@5as;T%u3I_tDaxMh zd7Gv7L&f_`G2^2VK+Sq^l0Mk&Y5|rQ;&DBoLN22}=zdmgw&1RP*2xK5!S3q6EhId} zb2Wh3dTlf{e=YcuMALd|h20#^0^(Jd0zUz&=gnA}-Xk&Yk>A+biZHqEiW@itge3qx zhx;7l=HqyXc$af!E_bU?+|AG=c1y59*`OqGgt&U-v|(&I-!6q@Jn&4vUs$I&L-6d0 zr6QrI zqe#K00SW~()PhUcQ=u9wA{X0B9!C2Ng|oy{Nmo*Kj)3G>G-wbiE}W0XIw=t`tO{D% z8W1^t_0uWly9XBS-LMwt%Sa2plC%7OScz)Zj!;$1 zaCqBDrg&knXg~_Y2vjUBnu5oP3(vpPtF@_gCUT-jL${~*>)w+e!8XaOX3;JQDNe0j zsiUMd;yJjvqExA(U0fEJ?Ep<&^FeTi0<=Pi`L0eSY^oTHNhrXHAl{r$`n278KS^qB zONmdWym;MW@f4piE-xG-v}rfM@eZy0<97(dIRCwY-uJsx=f`|klIh7!+LlGuTROd_ zl4a4&n(mw8W94@Ih3o)|PW{h!WTC<`L1zkWp%=m&@p?%@nm7ZQ;x)OI3{`hZ=i8q6 zR}4eK%CE;)-u%M_+k3@zv9ZS=I)jT+X7Gh{rkT*I;1J~r%DjY3b%7^idVR|Em$=PS7HMhUmA_gbs+LQ} z+O1X=@-wEo+(1V2T}mPU;u{MVrVv$Edvr>CXrFPav-i48TIk5Km*2nYhq0|S*{$!3 zHqK}x1YxOq{}Up&MfBAOKKugfl*$>xK4!W0NikB65aad0BDgc?2NiasqVY3gDl;DO zR6lpOy|611EKAGTg$j`0%N470Lt6R7YTYNu7LoPb%=3&3s*k^CqD6YR^_%Y=b@MfL zUR@K7c@vch)DfWs)KO!mR!!0V>{?i!HL*wxeFU_tUA7kM=IAk|GFB>E<6=UqXgtHl zTQwHEt&@{f5~X9u;U&9EX_ZFxM2K1V7>RXRSRCa*sg6=Pl=7k2N~Z$!d~>!P?4ZGU z0Ap@Wzod#aH|A9=pmgl zhprvY4T~?|2}MQWngC9a)2*h6qG^G`9;>;Uq9~tXYn8DbhD+%*sH-`{U6jbpA-ga{ zL{O#S0zucc!bR4G9u~0TwWNNK7?ww-Q+moiwcI|G7{~hJ;KDWWR=DSg2|T%f^b6cs zsr4c_yLhq(og2rr(%=IeS8n8!IaPij0=g>D$q5y^>!A!2t{JndO$BXtU9xjV`ad?e z!dt_x=O|W-SaWb-hkX!IN7X#vyI-;=lC{{2El+>2gUC_GLm@Ue?!O0?7Wv^hc4)X3 znOF)Xd!sYgFO&xGO+OWq%inehd@c=@7s4L~>X^rf`M=;1F36bckH{yrG~Tcvd?+TB zoBlycH79@)L%}W6c6-$8!Qz|y@=3IQ*qx(7%)Y|BoA4~z4Jwre`R~Rs^31yUUxe^s zmsn(D6%Wtw#+AkD$y7J*u=j)Ews<{sM?WOK6S`18$&_EYZ_ShvE?7Fu!VdhWIKaa= zmrv=;cK_Y&`GDSDPjH*T)9))##>uh6Df(RAtiw6={o9)NhN%nu9GJkvo2I-jN7wi- zca=yQcsHz5!TT`RRV>G~Jo(s5yj2uPzAyU!9UxMIC0q*S0RYf>{vQBD!V-dV;-WJ0 z;{T7fRJG1k;?`)&FTZ?%hU)8dI=a6bRZ7izL-u$CO&UpB(#k9r!8}O;ARrnRPUObs z+9vus`qo|c(hdMeakU}a$^4MCTOQxqozA`{{rQL99`^e{_mzBS(1z;U!e4D|=PtYC z;l+-tc5+G^jg*}>T9!)LlnSX{`*M$x=muNmY7bB4A~>q2#qEy<$)s2M8<@V=+FhRP z=*)r;*yRFv%BP^-+5iwari_!noYb6RH=pPK2ie9JE7&e&vDY#6Rt zP}yz$j;SX8m94FPSYDf?3MIWxiehzY7YsjikBE(GZaEJhLW1(&gvcYJ2D$k8(a%Z{ z75rBV)kq%yv7 z2~vuGe`7EYVXeJ-i6(wug;466voB^_nUi$o9tkUl@K#y-n2?90rghsq@4RkJN?H(r9kNfqtW-*cMAdEzs(8iYzoK2d z$M;XNXIBK*39D7nfvX|e2ZKJ_dfPZ^uP7Gz&Mc$!w9a$snn+c9dp4xVOWKvTM9$^2==yy^qJ~*x4?YQ8 z(j#aztl<`FqGOM=m9?d`(YtCIE%&Ue4rbqjUhGxn?fwW4b7bm}1uq1L-0LFVu~F59 zi$^%Zki=mI{&gw&q@}8vk2aA%MZynpIcfZ&Mw7%f;o{gB#l{|sjHkD-?AdnHPV;F| z)5=CRgg9 znT(cAw)lW2N($dfvnc7zkNC&wNJdKb9w-Qu=Kz<$(K9_|lta2;m*~z_IlxxnOWS`uhhA7TivBE@D8t-K;1OrmQFS~x1jv(Rd8o+a$`wPJOA$5UwJ^L%mr72)r z(zbmvtw);}?6{o&K+g@8tU+ja{QCNX&#stDrrE&l;qr9?8;C4PO?mz5rkrIL6MP$n%_>6k3G<;es8<`Viv~xfh_$e3-4vHq|Ra?*!gL^B9E{hR!}i{6u$*8$(b|tY6S%HR#h9Hnne-A}GG!D5s;A zf?l&Cl2ngCpft;-6bJ8!`|D`x_BzhW4f;KlTT27cqh$#opHiSrZ6i@GOE)uaI#l-0 z08XpiQl5{Q)EshZ8pL2xaNv8QkcHfk6!)c2?D)8EXNMqfrj@I|GW`HWah*4!xDci^ z7iT|PS(lNpsBBC@7($H=2(B9p*9zS53(5r`hu*fsJlnMX^&u-V&UB{AQe_HAD% z9bd-A8G^I3uSQ@qv^o15z^kKr9wjcFE!fQwWSBi|5j!wA8d}kSA>aycAP5G#b_?GR zDC@>hg&Ic=gXI~o(Au2IY?PRdlQgQGA^aoYXu4}itpSX2n_07_Tw?GMgiRq4DpV!T zp>RPjb@xbE;KV48nKKCb;HsY;2TKF)!-?U-n=&TSj9%|=rbAw6iRKXBJ~-HOeaKZk z<82Mz;`pYuiYahuAP&;O3GI)e(}5d{<=Pv=_w9EaadoZ8%6q=2Q0Jw{W^-(Ab%o5U zb-C{lUrTW7uX5^Ly)j5XO|yCM?4A$W{})?*CrJ6bvlr>!1|p~$LN;C7rjVtL6WBt4 z+dSVNa!skh13h~*;DF)LIl;`r#h@uy_mr(+R)W-CDZ@3ajBu>Ud`==qMF{A#Ld8Fc zI|rAG&5He-cwiZSU4keiq?lkxX9+jD&cJ+xOtZ@Zh~x{-$LC)%Q8+xnB35lQb%Ii+ zJt(m8K+!}J=K;=ky3^~zF%!POOQWx+1uQys49j;YOW=a0#dn0D_G3GcKzW6xk1Jz3 zLZM0_GBH)RaaH5IKz_J74W9r;IHq07#DMB|%A$se^potBw%rEZ78ig>+NTm&5?7#+msrr_Orn7wCYo-6u@kIW!m!c41AK1#V8s~#rx$z zNG&_T8n-p(S2;I_?gZ(C!?(NjC6b!2 zZ5qG^JT@JH2cRno;Vi zovvs;VBWhAv;t?@QR11dZPl6DX&ULIhT9W`_YX}wZH1zC(HR6FPkjMT-($D&YP#$t z5PC>Elvdx`%_@*+_2`W6T;=U`hPuSy=>57F3}xEJ&n1%PT|)G)AI7Z8MAVK@DJC}ECOfyO z5-P9cMXXt}A@sf9?^pa%MVjm`2BJ?CMDU*c1ajCpR$ndl5783R7vB&qDBsfN;sPe6 zc$)&#;+t9WOc_i&%HLaMk0`rZ*0tS(@^v<;)?6#%Re~M@#mDBRlidfA=SG>7Un} zAfE!-*Q8NbXG&6~Nwdfv=1a2;bLt&myW@RUm0RdVAAs{*#HAm$%azpN$_+5-Tpr z$+RT88j@32pW%seJ@?pi`dn-uoJCqJiGGb%x_fFS3-WUxQaI+cSg|Mb_2uZ}epMTr zE>Q${oYrj6h^Hs3mZ>)6u|p;r;NA3inpJE|F+Bu8#J$D_3U%XnLbZa+unK!StIYhi zKi*@VQG${HmnQ;dzE}>=IYCLgip#_r8VH~L2HPlztT3195Ke65l47J;$zGaT-_sI> z2RHI4i&b6jBoU$6k`*{mRnVRfHlLS6kLlA?I`EV%2@8spqW%37G#yFZ_Ziz-(omcY z?XO3&(CRiTBOv>% zn#XzBo^KQy7L})trLAplC%@#G+wiBCdU(Ihz^-{5gSZU4^0h{yML;Sn+Q0jHHdzrY z+@-mHRGix1S9ur=o1;3O?trbguu_~t*WMA}Rr=vLZfjOVJ=2_r%q%iqtmy%MQGZ^p zJ+e%)!U68rIEdqLw4p{T6D7woD@4YNCb{r{s*?b9eIGw_ca(IC+rl3H$5^)v#5lv3 zCCFmCliAox2U$aUs3o3rJ7%$Nkw&_OWfE-3Kixc)3Riqh{(>)OJvtzm+Vd@rr}GXV#?_u z#saKH`VQco-uZ?Y6P4tr+;2Hy!q(y)L-kk^KC^mPZ6;x^uY_|@NPo9Gg;V5J-?j~~ zqBMKeU$5)(yWL4dnFeGPg7{7~6_VYI))qwmNQ|Q9ZcV2k!HhXcvSHCP|HpT4sx1pX zGbjGy^u^Rr-I80^0<0YXl|VC9ebn&n{z2iY_uG(_S&#aBCUI*Oeja}IH4JzHY`nyx zZ4V$KraQ3^E_8|8<7fC*;k}rIUlz@Bw1c}f->_9wXqJ9@%pxnUj7j{^SR^R{f(8mh z|D?eZwIH_t*MOrpNuAGdF{=}K7DezJRNVN_KO7+|y^1KT;wE~mgJ*K=DUOj-oY!WFqn!?iEpgB9M>PG;pOJ_9_k z*s!9}403U#&M`WBVcO>;=D=2IH~K8zo;$&`C} z4krU*T--He5MZfTTo~n!xy(^>h6M zgo%A;YG1(VXO97m^|{4FNo3fqM;b9Luuw~2(I_1&r5U6Q8oK8Yfm)cM*!1^lZ7_rj zxhqtS38*&^!i&_KX~~3np7YRIVy=R(u_+LYDOm7Pe{y8{|1QpXe*fh8S;T8CIy-)d z@J>7$ssIKEV2=WQ1gb1n6Or^Kg1DDV&r5yJ3Apz^EhY9FF@}jGp(<&bSlJewVo)7* zRHC0b!bL7wcmn4n%ZiQH37Pnwnk5@k;0wXPe+8|h(3H7wMJ)Y z;|32|goR1C-fUINYIH*6c|=>z>Mhsgz@H9n`k2;-8Lga3_>%*{&QtlC)U)*OMi9dqT`XLjaEP^!m!m ziC)Qrp-zKZAQ4K;2HH`vdqb=2L)DXpz0Am*uM(=4K}c6+9Gcw%27EnZU20Pf^snVCCp z-=lr6{8YHpy|>Df$j^0VELYngKPNYhYe|pn4K9jy&nYnkDA!;d?Tk`r&B$_YA8(eGJx~De;&R`{Rr5a< z;V6VLGr>_?OwCz0bG_Gf#vX);>38RrrP)OLOrq1P>5)hJnD%9$jm$yQo>XP_#Fc0!mu zrJ;5Pri3v?IPtKAhkpV)vX_JAO?Z^-uN~lfrNE$(5Wyd9bOUqaTJ)xD$*zBvS?8E+ zd!C>7hg%%_9t(37eLkc<&s*=id>?qzr_lNtUvaAXy(mSwu!`tp%hvqYP~U-_yE%?B z=H|7!%5F7&xbvsLpKO>IFvPh3K8^(KILhl);MD63vj7YRu4|XVguX>G!>A%lqj^~8 zzu#>A57Bn+@{X&yIbfAmk~e(}4qKgGKenRGeikFKu{T6%}EZf>=CSV zA{YA0_doDOc7HTcTmtSc7;rS2#xakvI+wMxD)nB)>fUAQjondq_3Dqk2dWec`P6}J|W_oo*{P6YG{!_;X^4+nt#0V#CJ|E-o2~w+8 z54f?R0NQeejI&FHx|-on^?c;cn!n+$i6IERlqnaIW15 z3fh>d`xFaTQQ&qGMs!(i1%O6P`?xp*tod6jA;r5SC11@J>e|!E z@irL@sYOs$O--dg%(%@hB?dTAaBe@3T%_J>-E74io!F=qkpi#rTFwjO3FK zI8WYVGH=6wI}-$FFWL%I+wC{@aB#{Fc^qQ{*5`@9sYX5Mha`qsIN-G(bf^IpDe%Gf zn?e(IT)JD!U?b@a(_;Blv6uD{EgNdf^h#S>()VQAph4?E^uRy!HK-m^1HguH^7|)u_{=v z8DAd-OkNm33;gF1B$hO#eQ}bdBZfC4UPuj1DGulMo$NQx=qk-blf=A!en4ZJCeTxc9v!ar@!DepeV_F~!Cvc_boy{7Y6bEd7pZK$Y-|KG`%KENxjBAt>I|H(=^ zL;G*VY?&|d*HbpZ{>~mBvtf^#=)#TJZyz~5B`gO`qkfe4Z?N6Q$Dwv%b>Y^;dmp)o zefhX&zQno#DK<9IrW&FRVnFZ?*ELK9(&NL0tYCVRe1fr|#tZlK*!5o_Zi}!jz*DQi zlS$D$pdd}`D z4AuC{ZLzHFnZ&UaB_x5$#u5$DZc|&}^?KQy$ZmnhB6k?}F`({m7ZSK@1aK-u3{`Ch z5;jjFuoxr)0==Nx9#@u6#?0AsZ)8LpAf%v(e8PiSMPFBs^^ntRb)(lOSqQK~DqV84 z9HkFcVXsa{czJC&mmtybm46m+=bhjM>j`iUWY(}Is(e|IyqFjBF_-WRmo+7-L>;G` zHPLQmGM6Bwg#*I56f(!>QZzI30CNyem)<4EN)zRvKjh%|Z<aXJu3R#g43HPKnj;tbjO4~S8`u5wF3g&c@}Gy;!<51si%=wRSc(ZJu0>}>~on#g+^HEnnNtAHK^Dl&<+t7cH+ zR0Msupn88ZiO+LP){>L4Vs)8P6nZkE;DYz?7 z@Men1R!P+291U7=Hmr;r6KV)a7_WeNqZT`51-*J6SGpP(h8E@+!R7N`7l)6NFHQu? zK$=L$IB41m4Y{@86GXPIELZsi^1K5XPnjE|t*&6WE^+73rc}{9Tnf$tca86vj-wju zIhcb*z)d{z*lzq`Ii(Z+OqdeL{@v8dg*Dtf$kdTm3@3UtC!?yN9BcAlG(dfnzrmKl z9Y+=ESs**8@17Opt>7$XN?OPLO%{*|4#4_Gx? z9yHn>YL6LVT>>DXv4Y`)MT$IWoQrFz39pyn%Pa35FCsbs(Oh!&51;~QcsvhE<|=nAOw zrc{aS;#A$EmRRRRclQAm->(SOjZep)FxEvbnO9Rz#8tOGh|o6`mD?7MTe}t48bL=t zf{opSbZbo)4eE0Si&JN9Z+E@vO5RZS*zyYSyif$A74@2Pk6UHhNlAc%gH|=;s+E+z{3L4qxNeTp!Yg<2u=X`XM~m4rV9r_!HkyQBvZnXd z*IvlaGQo*;SK05;tBZF!ZWR(3Xx8x#kLqUeBq*|eKnF>Rf#8X*z8ePtJyPP+P|ywN zszfxd(!s>rwg!Bc#Q*w-8bbVqw+Ta(7ViP0;r>)bNS;MhfEI3ssoA(-G_S<&^M>!4 zr0oH>5rF(nI9MNy1P}-oqN18Nv>&36{{x9Fb%Qb)I*%4h=)3iVm=GiIJ-4*7Qrs7(=vJZXW~AEJ4qtf0g1Sb?;aI_3wxD$8FlQ%#E{p$9UUxwPgu6!w6vD@mviv=1xvlQGq8p;l8;L8znb%Xf(sIa%U{AZ%S+h63OBf9 zGl8KAtV97sDDaej;xxGFK)_B!{rXTliSp-?J-ylSz}M^_C4IB<56}||cG(tPQrH3| zIk|ltULH~`9!u8O>XaiY!luD_;ZNS_J-s5%p$T=ntDz=cwb%k{4rrmb+^^b}zvq5$ zKd<)YUIr`rLHT_gv*I$!IA?|sbA|sF%eI-x0==J^AzHCLfH6GCb&klQ!aLVZkSi;S zi_+uFIHXmwJ82UHx2;YE1?+x!62xSwW$fJQNs+n?4BBqNXm@(B433hbq+qHX^~}HZ zBwszCoe$c!-1VUb9*%vwn6B_Io}K=bV;RV5w@ABe$I?9tPqU7P4jl1tbLF@>oU^(k zdsjNIz^~vkN*)PmCyoZp_qfgohHZ;q42ypruV<=~k=}_Z>%RURXY`)VHGV}?|I?9r z!6(?RUH&BOikNfY?rOXg*6cCSSoXO_%^49x)oj3EL&b9)({10VfJCQYiLE^R`5jW+ zZo6vmRrltoQ!vO2Kraz`6XmLjUoN?!)&FE}9&VWQbR{P*eaOaQl>-7Cw0(U&a&BCI zgBC{1NTwE-vdmkR#&eMzr6Qpag<29y;2+F*~3CXLe}2>&jt*P(Di2VDzb0DP76iL*Nc@t zlJ_TyZC=mWt>Khlqn5=pM^&Gt)uDhZ)LN!WK)72p5!~*rnop1Z-JO0Cd|0Dww-0me z%fV7EbF#r$4hwWV-cFsEw>%-QyjTFL4U#sKKM*COJ&|D07XQTnf5j_7&;pVbm~BsP zu*8uU-~8*T%c^{$RyV{s?(pek!%rHA)`~4F;PE^0^#g~#(Mp|6H)4``o5QhuC0SC7 z9q-$DyrnAnRzM#6a-34ZsqTyT475|yiBaf$nv^vV!Is^?dyIjQyCYDHC@e94qV3Y` z`yozSmlL=d538{&Q5A+2=qgz%-dJ6^e};d-ShO_5&I({8>_6i(XRIfwyfnp66TNmD z@!2*|&bu{b;{I%iLolf)uk>p@-9(|&NK7t|ECkCn6`)+Z(a&!)C-rVnn}iW^{eMEt zigK2<<^LuTu0Ns5KgsP%c+T3cLDPR8mJ19}k z-EwZcuVQg#d4P-c@{pt|#k>`=%%>kOnv#-~@9;;IC*U2Gh;$kR0`}^M4X!JpjvKfErgH<-kv4Ajld>I)UF=qi)=dR`;Ne0aBK3}sL4^U3_! zeyKC&IcAQ*U&&{G928*WzhOvmALCM9FU^l0j9Ja_8`DF|&4;RB7i$yC-ynE&N|6CA zh!1`|CS}sOMD3xasxkxEBG>YwZqL= zZ4JEJ03PK*KUKuX)0{bNf@a$KqjcGjy?fr8N(B5XSm@JKi%YH~u6%*e3uWlK1g`#- zoUa@hjdsxE=IE{2f45YFi%_mv#cN)jMlGz?GYlSZ3fRxSXp7%Vef%@(PG1-;FY|;& za7V<5rg6C4%jWa)_1(l7s$lcqIB69G?#YyU&G1ai;iWk^O1AD4B>yEH(8spkUZ{c& z2IK()&c-#i7kr5iLec7*cGNn26CHWDgP@?obA*ByDpcKR&$pG>@VSBm-)IX`lgMHn z>3lL{D%MDHi!}eEp&VP(gz!qr8ro8}uMpD_iF)eS|r z*FY*>I3cp%5v7~6Q>PWE;OC?-2b=M8QD4E5j})~GDQ-her2ERsG-Irjoa!^^19a|t zy6)xS=Jav#fJ$)n5|2NtD}|0RVMI&LhS}b_t?Ed3Tw+t39|c{rO~|R)4VEI;{x;*H z0^NSexEhV6wu7$yrnz~GBIYG~QVf$aaaw^=rhB7NqiQ0HQx7#+k*!f-53%V6T(5YM zE5udI%VUY!HHgLTzvPl<40YipNsRRn+!kR$c5Vb4!Z5mig(J9@zr^8guh{9fcySgQ zQmO=D*VfO?b3Lzle{DV75_IjST9(IYYdD~-8KD*O%(@l=p4Y|iDe6*?v%17U@9yZo zBVhv4KUw?7!v0;c&tKF9kx?%8W=={m;_@&ubI&H&J#Na@OuOsz8q+^M?SO z)eGi5V(Rm;u)L2W@hod-r#3M6uZczg=W|o>rH%!(*Fvf#{^_;dsB&=+??4Xg0$>XU z?4d-(4LeN8X^PhKQY=!$7a~< zri+;`;)0qhy(q;r6PqUW5AQid$NYft0SO;m;Vje4Mi#n77OJn~3}sN*P`Lz=+v)X6 zFz6$guZ04PmK_qoa07q?#lkdRZ^{eYnzTfDjp=&-lX`2PV*w^XY~LAOIDiRvO@SAE z^PcSSfyg|XyE9Y$jZ%t|EaPYw>u2-PS2uSZ?m`~^dU`f^In?{W|8vgpIcLKs7{JMQ z1oGhb@JK~;9`ph>pdC-YcdIkfP%ayGY9YL8j?r_p6wh9=1U_lBs%OidTs~W zs3Ba-20W`J{wJAFNJ~|f;el0M)(Uc%v$A*5`eqD1-X(Z%tk@?)(5o$Sl7stl3-aRo zdHJ$(@iDSex7`^G#E)__LF7viM9?J%JfEZ696WSy%-M;%=&~WVSUC69?$1WLY$(|f z+a$c3Be1&$e?I;w3jztt-yt*!9O3Fh_V2BY8lZD8^D5<*nzb>4i`8J)K@KjlJ%b@X z$;1B?3uhD>b@9cYsCW~Vp#JWvT+pTqE!~q+5P$N+=%R+t_Bk36UnJbg3Yof|A{U#qQ zg-db%f06c%(Uo=E+GuP$6{})ZY}>YN+qPY?ZB}gCX2rIXo4wEePP=>GbJ|<){Z?yp zuJvn-xyE>UA6@h5cI_GlmJ!l12c;ImF@TLUM8`h&qI3WTcU$)YcX%wum_+T?c0X)= z+9pV1@0o&PIUzmhFC&H%s`RLsCl+xRt1@2zO(+_!Eqg=t1-;XrJKpJi7`#I1bxZ&X z#@?DvZ?OQ#W$Ia*2m5nR+hn%Z$|6y$JKs0KOxZ3rI9~2L&V!@2N1H2Hl)nnnG!=~F zF9I#wDv2O&T^Exq)sBGr-p_?$ruSuNx_cKDt=moVj~ho;+#``pzcA=#in&M?J_3f(0HHrbGb)kWOayY?4rBnk#{v!K!@TcGHx zH+sRtz)J(DojNbD+(RYJ(^+bh*iS4R6CRoHkTjKfP)r*B5ISItSv9puEt4Qc8pm&s zMWgNQYBV)qu%eb;-w7U3@y!6xGQsH14AuK`z$6j-)q(NE%|D24QkcG%FL3V@#2W82 zx{R8655%5Zc4h<;mYKV8pi)=`;#Q3BOQ(&Eo&4fg(cj6e-^*aVg5v{j~bT$p?zTa>l2YMv6oGhRd zyW^xD5P@$MkH?)*6*)drH6~R(paM+k65j7_{`BMdU}!spF)ER>){SLFIeRiDeL9d; zcg=X`=PYXGRq#(&g^8zw`3ZpfwyE40s(*jxemc+ zF_?pLZM9IlHyIw_e2%)TucV9CxI$|i(J(#;QmAs~{-o!I#ayYy18v zMLHoCXL-YO)A>F!Fr^l@LWT}n7ZN@;!3W)4PQQ(d8me4*FjVPkQS5p;LE<+FRqISc zFhfE}c0jgMTq^A5Btz|V!&c7dK1ne$C{U%9_AB&3@12iyP_bD9iYXmmMyH~l&{;(U4 zXj6C&)-_004nc)7e~fbUupQOk4pd(9ffggTo`N642EFLp6};BPyceiokk)T0GKA#X zTEJMc>x8tdcJf4bVs^s|-(oiitM7wuR5NgL&()z^em8!{tOO|I6Q+!}X9d1eCjlL+ z@Gbe~hu0sSk}t$&z$^iDtla2J@ms?w4aq;7E-lZOGbbmEqn5iFifp*xQNgz%NpLwj zZn;r|G9FA2mgVuAQbY`DZHyb_-1VDlLT9Z(vsSnD*kloRdBxz!VRy%QYsG?=+txa9 zZTK?l#Mv_9vNXbSE)PWgY7p;%By$KCBeAdfbT+o(>SU6~Y>4-Ot=gHc`4ZHI%GIx? zHAr7vN|qLj!q6UrfqV%*`dN4W1>SuV&oY>_-J$4g?lRJ3USx@hf^zlNMYt&LStz)3 z<%B!<5|nu%rLfli3d?Oj7*60rWb~a+19j<-ao?d(LIJ>3oXv{$t%AhvH`j1Q5A{qD zck?@XA4wS7ri;pgEx+4zY#3+Fg{p@!{QY;B^4}m5&KdB6%8)-h;tR z0NBU2QI0h=n!g?N#Dvue!c7Cf$*ct~Y;bZwsju|VqHi7u!|UdK;wG`&a@w9P`%Q)P z@cN@aOU#m8%7~E&JfLH{e*KqtXPND-Y5sodDDyMAvf6}iKX_&`J$>q5*kMji^^Z3; z$3`EDT1;y^o7OGtPBwO_10Ym@PeLL&jKO*5IPy_P zLUi^&@H0w#|H;QYkJtyq!ZH?y``MIQ`M}ty?*ZJ9g2WF4Rg5kOJMTsw3m!HKldLCc z2?}N57QM`w`C33t>39WUiVy6IF28$0YJPFj*EWBX?uQ;!mTnym+I)|xQ1OsGmN5#f zTBAk}lP5;l0B*KPnHz~~2>;RU<0a-gKA_DQiYbb$59|zd%2#mw^p=;st-hRAhI)cE zI?8Xzf0Vk6D_rm4jx~-RWJ88MTsJWo$nVAEGytyd@D$=Sn^BfTrKsnz^)#<&3W znPh$Dkc8Fo3lYs-F4uynd}WjG68Ea80~6D)>$|Oz`z<0&8>F^!=U>NG z4$;FRftv{~pv6^inEPa-rW8Gfm}>LEt`nYsXfEo;XuL2FU3UCUXh$QoztI7@T8uy& zMalZGN_pJwPQk^wLtQc)CkqAYH9`nEK5V(2jdyc8W-7pPqt> z!8dHn!7c=TKw#C>>;jJhnYxPWvR9L*Y3rtRug*3#WG9upf%tyq(+N133$V;v0ncjh z5i@DUWm1qMnz%$T7X!1WEirK~{#qp;!uy}=664|D;dFOdqZl*Xo-e$6G*vup3|tG> zB+%3G8nzaK5Z+>UwAUP1K!Ftck9E4O=XQBEe}gH~3nSuGMLf?_ws|^cj8u$XPd2lh z##&Dk@N`e{4X2b09b};XZcC5Kt_pUJU`xr19U9xJ-E8!aY?DLOq~C)t*AkzG1{ckW z*S8op|M5O7KT(#8r5FIly&|KEB6vG|J;>OHb(xPAsXuxJh`zd*nq9(`-9-dH zSmDjS+D7HmPCmap!f*j3Nl~0y&AeEq=At}oPg?fVqJ?D%5{J()2(l4ur`_PKGD*I5 zjsa>QoV?B+Mp6ob1H6Io=l;r@ zftX?X8yiWVt8e}iZJ9JVmLWcUQD z7zsiGMrSqpilGT=&J+otNQZF3_qYQ&5QRf;b{gY#%2uk9;cW9|JCvM(OM7l}i4jZ9 z&UDGJP1KjJUNfsxZN8{h{J#)LD&iviT($IM0ojAaG>o* zI2_~NgFDLufzVJ+{Tbw4?AhB>N(?0-2w*#mryVJiCI55F5Q1i83*qgTmpY?YfRag-X}Bs3MN3T(^#@PxDL~^o{lNTd`xm;s;82CO&!0_1yzZotQ0_0z82s? z?EOmzr*jsv;_7Y?m%Y(#E0i2wGQA$$BSxHX-!mam!u`>5$V(<5&=R|TM#yuoDngFf zB27i7D@cJk-}{9d0L;Xyh2mDr9-i}N;=;!pMA>HNz+2KRZCvNO4}~dn+8_w_(1j_$ z;*ICHY^@9{-?h{k=2pJxxH4>pO0gX3yUsm*Hy7|6zLsQ$yFn1IqR+~^iHJqxS=Onn zF*$Pi1MeRlZIt}9HEX*9^gkzE*9NI5z=y_b=~0h-;71K^%6}1&wJjP?soP*@+^6rm z3ePQ=|Dg6?h!NfFkJ-noV~AGV^w0J8@ZKWu3B;{A$X5*V9nC~E)Z7zh1D_PI758U} zaH}psSWSta%Bh&eTdwoInfUxC6W;$!9ZB$4On8=N`hQ6u`9BX${U<})>N%QzkyM&F zIQ|`y@S6h1x56*_OYkpRXr{kA&7bgvD@jd2_0qv~K9bv8K+9hSxZTn`ffN>1)HK$M z847s1uwYBW`+0t&3Xb1vExcV?#=!J@X^vY-hI1z%%SERlW@F$QgbhHh;J`mG=1{v?mk>8NOD4W;9Q`ixdCL-y$^vymN)l_x!M(o7@R=JVgd znJ_W~)=g~10an4}9k6AYqydf8{8OWXhJ1zAR4ZIq-~;CjZ4~r%vf^O{r{=%GEbF7T zce;n2&3ni6KNg)Z*3mQ2{01H!vSAj(Q9!L~VJi?#w3GAUUqe zsxfc`Iz0ndF|W(W=$IQMfb>8Hg#*(7TfF}E^qEW0z_Xu)`Y^8oF1e!Rd~ir4Ll^8~(yTM}ZNt9^Q3ppxoN+^{?l|dIdyO!dOF#2KDR$>Z6%Su7Y zfZLjq64CnAW!tM$*DLvlS}6YRckj4@hR&g4W$mPy#fSX$UV8|RKH6B&{i@;n&(*dA zPapxJ;D_4>E*&isC%5WT8|Tq4;MfO!#lH4d}Ul$z=5P76JI18{&QP@s04NQV!H4&Ws{Ue z_*C7V)R!v4$uUFL?LLn)me$CiQE}|85WytLS*DR&-kUF>SS9++EyB5N9xhah8Fwb+ zlVH<3jNcbn`hOQrvOf_{BWnjI`@bWeS=!M!_+R1)1OWi><8RF1;AUlMW^M5oGMcF* z6|;tq(DABbTTe~0`6_M=zqU!)_?Q%tE7ZffZ?IM}>T`KzCV94DNlQ;>v&rcSTpC3v zYBo|+RSq@9Z)PYPL;P%%N-Sjs;z1w}n=vD?;jB10H`o3A2$&7@#(9+O7M!_c1tFgl z;ynzAZ2lBi7U-HKO_V^Xy2SM~03x31d+}z1`tFYS1g3|+*O|3ov@4m>>D%qp5rV*` zelD>9)HQl}GXln4wlc9I|8Q>qeXW;KP+SWzlhkG92~E?K0@+^Z0iXL*PdsICxjU`} zqM;9{oWdMr(Gm?p;)kiOLw|`JlEyM%l=!RP#yH^4v@rFHMlNH3eN@!ce2?tbV@dS9 zQv~x&(Qkw#5G3LZ^vja)rgEP>rGlYy;O0BB4RM4c zwh@rEJ+iw&JL{yswQB9uwG)W3kF-U<@8i;UUqEI?W#!G?k`@}cUU!WE$aD=IB~;rC zm9IW3fg5P?^k{*ADvN>(&`T2IzW9&B>itOT`5gs$S&9dvrV8}4==8}s#Mtmd?HVXo zy7bsv>Bt9FGezuMu-|L@{XYA=^2g%5WN5@VS2BeXHq>_G& z7g)i5glql;nrmTD-vX_6?S!;-`RmUagW<`hv`CHb9`6mmVubo`hEP^EhX4+wZ%tVN zwGP$T<0gNtABhR3!K( zRO>(V_m^6t`x`L$6Ac~|I|da%hamL$9DX+I-`_E9rLyr1N|MQ6GRO>HBKp~Z+!#Dl z);9htghN2kwmY*~-K{6pJo5IfigKIOdIz;3C?M92c$alBi5dQz$d7@l%9KF}IejMw zXjD;G9;{OwbDTZSsn^OUd9*6rNmdlDct}HH8jXB3@jyA?J%245v1?;!ZPe&w6!!&liEtK;tFmj3;)#7a^e$ecjERoik7@~-jZ2bEY1-GC{~#SA2m@kc z`w|mjSO5Ulzp+ODQrp!3u%8|NLV0&6e<^QfgpN}cNtt-G@CR*t&{alIdvYj4KW!W5h!{H>OSrJ3 zyy9Lk)yvAS2jQ4Jmkn-rd4)Y=;rbUb7d$`=QdF5dS3zs&t=CITlek?Bz$XG*Lbi<#;dr9B=#usZD32Ay~7rq@tzOp&*eu`s=jbYuuz?M(huS<%<%&k1?&mr?_3_kgK>UG@g4L{~A#Clt3)sFx&Y^0mjG=6W?@Jy`w>0}>L=IH*d|dIBW7Fv2ViixetoF_sLP9VpG45Ld{FjO`FG3OAr!LuuSqIa^2LlAY5#+_vn{~ zo3^^aaS%eCQwne71rxpu_g6(FP02%p*7J1BshY|+ShZNN%32o2dvDvb?*QGWx1~f~ zJ1-Zck>m_frPDMep22Stjfr3>#!9O6Frr^k16$X!;%zz>MIy!yhGWS^w`R~o|7=Iv z{7l>>R9D49_YJB4B4^vhJZ@C;TtMRxicyFIpKtfaZak&-mPR8dja2MbbrX$amRZ?H z*q~IR9v$v@wza&))1&hKbz6RWI|+f!5XeKyD+Cs4dJRj$E(UQz7Ax{;Zr4p1r%3}O zLY~b!hVhva*BXkjklL(i&(+m20EKU_O(LUn@ByYl@EzyfIcd}30`06aLQOEftGKNr!fbEo0tOR!h0bsOakCbN+IQ>6pP5UP zi50TO`jaM?6*I42*{{0r%4*UxYV(ab3-?g#6Q}aH)5r7lai5<;MlpDjYm^1f>;?ih z8Ft5yCuivzMFIbLs^ga)pUi)q>eycn;NLmb|G>N~R2++5qx)*bMCqCUYq;?Wv?ej5 zVe<-FCTSBmY@Zz81RMV5abH)_-UQ|@W@#=87ed5ff)GhUPG#|p-ol`#2O6Q1Lu~m+ z@jiI`j(9Zb;yuyC981-_3=JHn_itw%lR%fn{l1xb5u1L{XlbsfBK)F0{8F&{_Y@2b zg52H5tyxuvAZTzI3>nU5)J4Ypx!zH=0Q}!*KB8W}i?I-?I52}n;Bg|y+cLni@!!2& zW8-~s&E59_UBn5W%{q-Se6e%yb0=?`q8*Ph0x%WySILw753gLT-=^4=G~5FXw~(Te zeu57|PFF^KZZP9tD7Fk%C-x2x+P6(+u&-k|L-NMvXHR2%1be$JXvnxKZo*MVD6PO@ znD3E6O|{BzBX8t!%XOP3{LbgCe2n=i(?ZrnJg+WJ!7ko9V{>{^7i|#~sfF!mkrR(0 zwMkk|%C54wG6~pp$AP|L9^o|cd|~CrWp+LMp>|<$>w4WGGV26$-1w5+HgOCnQfdbQ z-RM|Gqjn`sm0T(~s|`l^fUf;Yo4vv{(ZxS&f82yori&{@TPo?j7xVUBLfWRPW)|JCCyLthz?cnQ2juW(|YRZpXJ=egWStrr{lp|uh^Zo@6=UQwJ!iUw;e3B-3jWM zWA70g5*&D-vmvrrC2jg3m;#r-H^E;r@@-ZeOO^e}72-Xiuzc z9o_y$$jHDZ{>lGq)3<^DRAc;efwVJ^D6Eg~fN zdRc*IH_I%)P~l=?Y~n&`T{s= z*fZb~EYUXT^Noi0FU#~Pk*1zJ5;bly_*&o2|LO})c0X;tZInA&eJVMms zNs&QdTI@E#j2II6nogu)2p}~sZ*^HQPNDv~stB*M=A!Mf);~&v;IP~EiYC+aUC4zF zYeNMF&x!Zf&F6{Y71&xjBVdiU>c@b@(v6Rixh}}yS|vM~yyPH9{9A3a>b)4%@D4A%_tH@19Z>E8LN409N3g|gp^~21*Ea-hWeLV=0Hg*Sg0krT^LZaLs@TeJoqzx~Ro8R7ZA3~*Rk7@FDt zotW?Mz8?>1Uw9?{0@NRQ6aSjwPtc?l%?IcI4{w4?$fYo>H>*Esvm1H-2Qh5nKpI>e z#wAS@Z|uhS+oQKIyY_I5IBi5fS`O7xW?218f$n`d49tHbu>V?u|N5eKaI-e}3ms~t z*kk>55O=&%rb<}lr>!-HzyRB0)L;X_toXv7sx=<3R#Lkqt}mL_+u)I_nI#|SYWzmV z!^=)|Y=Bsl(`aQB6VI; za$1f@+P%9g)@!Dnkw^GTtx~z&K-SQ%Tq{}I9$%}sm{aUTE~Sd;+e=6p$*aRGiD4ho z`1To+yOJIpEhMjoKvOJ!d#8Uo7-Qp5w|+Ty1fjLeR7Ip*KB*|Jz+P5yd7 zQ8G0IKN4YW;YtBA%p0SGwvF4`I-#->qx9Rbs__agqGz{S7L3V({Bze2o*%5x-Ut|TtR+$ks;$Cg;m6y=#jEk-sqX7p z!d;J~`u%K($jvET$`~e=8~ovgc`FG*uK0WSQaT#4! z-r3MxlJyu*I;uQJ8aqj9GTrDJcgg~GekCbTON$y~ax>T{`hp@*QCTb&k;>y4rpnHM z#oo$X@QUzXu^C>ciRmdeAHy<8oCvkz+yTR6Z_Dv9&ofmn4jXuGwXys{7F{PwJ8|1>o4FC@E|Su_0j zD-6eKNc8a{1Z~|?g6YJIjwnORhbxD3lZ7U$-{mIOSr$3l)wf+p%U|DYWft&vaAsj1 zjI-&eiv)`DQHm!BvSC5C7ryTwBQ%81H>ZQ!#)YgkD%M~$>Lg)_pt zayUd6oqHWPxXJ)@^SV7#yu z=d!C_MSR3RZjCMu5@&1G!N%c1B8runEa|FZHB%>+2cnP;_3g-F--8DL+6u(43YTc| z#)>cSAvJ;BwvDwRZkMMtf!OC%{%{K8#ro|M*SVv)#Vu)FMXNG5@@DR2$CS3=z*ozP z69dOR37O+x8#P3OJh4&DpOlGyHM^=>N6?`ip&w`hV*lgEWqU z5H!#qy505=bcP%-r)ssw>QO{)@#~ELrF*1fE4uA%slq*p@$fPq(0bU3BvQVMl_ojK zYNQ7AY;`cE7RCrCsy?0%trk6R&p<9^yj;1pC!VM^)Var=7(eWd*S2idvQ0!dRHtfg zZEng7l12^`+N-^U!5pJp+z^*~D6yBKTCyZDqSaYLwK_OM6`HO!lCdZ(heJ8IN&y(c zrmeY@SX_eKK4Z^9#DU>q5RsF5xM|piECFZ2`BKaE>mu9ucmycSL*}2{BP01CG7R=9 ztGMDt<5FUdo5{(ZR`DNO$&-kipnu#XKc!`qt^tX5T{6*o*l5iKOJkH*ZJnyAx9*n<~V6UOU=Hu z$E)3QDOPbka5}tZA){es@JSHtexVf9sHi&dK=`eE8>)^cuGE|I?E9F&0l*K)`~%Xt z>1OJ_>~ROr{dGBZHQa+$x42(Lbf!+Pk%IIg3Nt|}=oS$XX-GnJpPY$@w|QX;{Nop& zWKt}tQ)zoAU{>xi0Y0mljz+-!<;9<&>QM2Tt*Tx+72ZXU0d}!)OOp5GwfjH0BJNz+ z$~pH9^{`-fm9>IijoiE{nMNx=RN_yH54cc7N2{^-HjN z?it`I7y@$SbF0J329009JYHN|Mx!cg|zwWZX0VBT=e^Pl7Y2@d{08BJtTF$E$akgoz%)ZEQX zXTA5?*WZJtQWDl6u||!-(ZCd!+KC)DjqPgG3qNpBb_?nvOBYQ>8K`bqYB?V{*RIRk=m8b_mM@L6+JAlyc@JE(`8V;mj zN^`5fyK3oahK+>^=+gO#zK5AxkVLq@Hc1X+DzSMP{e%n^2?DTHJ(M#2vZ3efO184~pFr%{Q0c)6vNK2J2BqP`M|77 zq=ZeUP;!ubP7IrB6qMns~bKI?K1 z`n^a{uq#ACPCYawoGskD?jcrSAwL<`K~jpzKw%>ocs2trQYORam!0Z_8zmS?=nI-k zX~{)$=x56jH(3zXmn{L|iukdioZuLnM7}niJzBC+|pM(TX`T@RcN4v#3fw7{y6 z8~)a4a?l?dN8}t~@Q5A42?P7cDRKtk;*JFlMJO8Pqb7aDN^WG1Hg&I1h^KX3&*s21 ziI$1@nyckVMV{2+B39L+IwTgWriGrB)Wdab74s@h2bQ_b_I~%9+3$4@vAxeedp|W* z;)eJ3y`f8qv+L2(FH?BL<(qrG_N1%OZA{|EV_-TwxRLd_oCR_uQ<>0ZSn+9m@b=|v zGhW4*<-0YugsDw8=`s*w&}o9DNDNrLBo$;wA(rxy&h z9uFzREg>FG^W1cZI`P;F)qwNi%XnT()p}+Pt~>f`dulqcl6~xpz|3A>I!jA!$KMD} zVdFl!0{6+NT5F3ThqjiaQ?oaKuSy%0xPaAGi}dvMLUKow+95!<`NP?%1z15b64c!} zxb(xj!v*aYwVEhMntk$!*FWhtpurkv#C7fqw#@N4t{3w}RQ1Ov*N_UfEHwe#9?hH~ z>4>@RO>Lztkg5$u3o833b>fpRjxt~sbG3fx79$|z;KYKqp7xw^&p)A<)!a405979Wd%aZ$XcoEtdH=((rR zbFn%x5bm8-T#ZjJRH9BwPiyd&Gs~S&sQTQt?!9%3Aw01grxU758gMFJKE|kVz_^R~ ztwk(%>_s%{PiaAfFNz54NHtEN9T>8Gsa=z8afiWRA4>*A`(EzF9BXrm3aen&N;e!2 z)2t(zk;Oqb>pYcwA7M1tA;=K5z9N<1DvOE?z~1|bE38-y9&@`4?34@0aGGG6n9!V; zpLXOmuQa-*MQe+n_P%(4S$a8Z+|Kiiy9hQvTL5mX4XLcJwz+OVAd1pz?wW5rmERRl zY)WpF5J|lzsveqe0`%XXD!vcj&$=Q)T+uYw)=6a@!g@6adL7=|{R~`zCY<&H@(2qJ zt$ionek-Nz`;o|CQzm&NAq~X(+*J75Fy$$s)>F&T(}_LLe}(G#>*M`p?z}NGRiTBV z(%*Zpm838+S*?|g!{Ah@X>i_wQ`Q$z{s?QxEg=l3&P~{A#}~AS0+yH!z7~gCbL!>e zmOR0lx&O8x?U*R%P(Y@) z38ziQ$>BMg)CnJ2#$HkoY}V8+gbfZ_QA|FmnBcyU?P&w>(#jf->4LREeHwhd2hCl% zDcRhYsI*g~rv97JZ5Bv}G^Rc{<}FO~P&kWH?)yUXZVTaXJkQaoE;WutKH<0$KPf-3 zwi$MkCW0b2@>`a!fO+or?+J+I!8TD3IXvrBN7_aPyc95Ly0~2U#g0`J2jv-Zz$rCYu|)|I5&u zjgzCTljGlrDv{cDClFtR$*4B*d)8S<1vdXQCUwy;v*FuAAV_841sKX@Ybqq!fq>wiZKiS z1}XfX@M=qfCBD)ns6EDXhDt?uO*!RUgsg}?`7gEDmo15ry2?U6=Q^=YQf_W>eOrjh z1Z8cMpt?afQyfdbE34_i!Y6^oUgx6=b<(oHBa5yndIIh6(TC#01UWX|(bw2chYa+j z41zE|*P2V$AO_Ub8bYM~t5wsJYFT~1q*2s3vdN_nAWqkfjS$WV+SMMi>PkN$$zxHg z9KJ&qU5`r&R&<2Vr;MlPC*RxQU!}meN203+6k|+1-Klb!UT%C)b{Z~l5ka0{7Z2Es z(US0a1*`e)Uivm#u?gjf3AB=veu0BJ-E(O=ZslA?%UQpN=fSCftDpe*d1CzrKl)XN zJ5qtDxNRkiWC2wfS9u#wkhCyYTEE$ ze)nE~N4jOz9D9eH^ina*^yqh~v}R+{Ucb(8wn%jRRcyf%riqY_pMM$7vKN@{(1ZNhyg-H27JX=J?AsdABNlhHG{pGmA#(vUtn=SO~VF@1XqVerE99@1T`=Hv5oKC0;dl|&B_?) zK5!hYve~f@Jn}~FBA!JW`3ibgb<{0mjpQo}3#jR51+DElSZ;-1uaE1e4ZA6^jup8} zU^x$NX49jQCHGo63g3D6;u<7~qsnhc9q1)li)S)HpSD zrt^*5(xtE~YAnSBkFXw7?ORsg`0YV&Mq#;b8$WAPI9V1lOIV+E7b?3A4M+?l3TeIi zrQ-r5B4yylBc7;h9-5}iIw@Z~tr~e{lKI3*j@cwJ0TglPvTf77GW)T1or_9Fd(V zYL_pmyf{J~FG~2IgsZR<(qk`?@S)#PS0!^MZ0}RD@-?D5JB$_dzD>nNv?-|?5Q#Z` z_pe7^;#vP-%{4u->2mMT^!zktdpMrhJ%0?1n&K`Go9&`$>HG$}BprBkHdlPEEox0F zK^GRvrKgjT-5kRGnZZ_X;yF?Hvp!SMwgoo)+Yt42baB-!UGoz$^_)2IxfhY95lVe8 zb&sfuHG8IxNfswz*^s))BBSZ;VfyncmD|f(&sCH4( zdRzQy@ww|gBrbG0^6HmRHB?GIEKM5J1E#v}q}L<5had?1qjZDXkq5H&*K6brDyK|!}vmQDo-bzc{F<6m!eBgN?qnbSOjA|WhfmXGp7=g)L1f2P*SU0JW(py|M5i{0^TLdI#2$FrP zx*TC&@{Fs@anR>2!W+=WtlxZtoj+!sBRt>&hxa)=Z%93|i1xQTRGD}E^C0XONoG4O zf$Z5ia!vpz$lara0$z_8lZwzg4iH!(Lc&*HOCDm42v?)^I{^s-pS^e zK07(};uUV5)!Asa_aJ>(L%U>ey%uc5ebT4n+$|&DbmEo;NSDwNz`rt9Uo2PDku$k0 z1F7>w7V)Q=JU$;81+5syyFwoO~RyhZ=26qz+yRwyXItfEgCW zLo*rHeN8ZzO5wb=;_J;LNyzj9j2m|v0`T)vokE)mSBp^e_r)SUQY*X&;qJ_`A9j#8 zp5SC*t#8Tvbt6z~Ie{@S$$Q2Q;>m6oOS1%XN9FwKni@Wcn;#x$G*Hg%Hofc#QLyfd zZ(FZWAIX_Sci{|FatI-Plc@u{b)c35&ykmi2qEp$j2t;s&5g9NGsMcSFGsXl@_Tfk zIQp|4mGPdpgQ~heSvC}R6B=BV^>up4GB|=YvuWH1auQPz%%e&?e@Ww71K#$i265I= zZ2XOWMsoq2r)2O$F>ud;7imnJIKYB}yNjszg8WQ}=c2@B?ROMIOaW+-9$}q*UVzcT zjW9TFkHr(FMHTl^91F@0`Z<|_phXveMx+F2wt?b=N<8qmY#Dp&Ogfo^)P9@;%g8E6 z1t?`JFX8v}t=qNvVd^N3-}*9yhZxF?Q9gI$q?h!=&wS#cR*X_?M5bjpUdBj0$ilG<=20W^t!lSW@zzj2-=^=D?aX{Vh1rkD zsGcMS7e%7A^EbGD(hd2Y*90$8?h2I%)Rr6UE z13r>nYuc)AE3#`)nKFju=P994>=N|N1M-5Fn&=WWb6pRRLWzV+u@6!A_deoz)n1w2 z-l>hT>cPH3V>t$O(6Z}GLgp<8=>FIl3zgq8kgCpAj353XCa|ykTJ8e1cvqc(M2${2 zDi;Q?{J6{t0{cF?fa^JeK$QvoLm<(VZsqT(2CocMQ%3_j#XKY zy=0#A7-C7cNc&?^=>)hjjK9W=6v6{d>^N5(z3^l+9h zcORXXN|0!OTP3qM5Zo_Yv=0d?qjjZ3e3MV$e>aPOqD^$&zbvMIyaD(}?&!bFqCasf zq{bznfanoGroFQBT+)2|-+d`#wjuS;cG0EO_kUw zvSN=*!_0oD&+$`n7q@&nC2Y2TVAJtxxy(?|!~0~pXmJ_@N_3u+jMk1B)CzV7hErSR zXE1X$*Gzbo>G2x&6<2x&Jv6LHsA)lkwlFr7<}iT;ljLI4{2@r250r|77(l zmE~-{D$T!aO4d8QCOHl1aHnM;SB&XG_`Vt#tq@KO@0@~!{!~Jy`0z@U=SvRx0+O{6 zUpP>tfPxF|O|QodvAIQjjB+>Q;)De#Zk2U__u335GzYSVvfR2RdX{pf5vzqFv7(bC z#a3f~o}Dspdv83&IWui#G~*TQO)V{-u7Yg5Z5EQW%G5v(HU6kBPBJwpNx9R>9e@P3 zXK^TetIAp9cycqUh8nP_&j!ss%T@7@(A8-tA(l*1ngV#q&_ts)UG3CbuTr&OAS zv`NyQK&A{!W@KOTu^)`atyiZ-d}%(vfnL3o7bs#R8dLPh6T`p~k94&o&m!Uk;uyvx zN$YEvl2=-=r7NwC1}*!|sjKPxNrZLv9mBTm(UpOXJH~!-(@-x;b;%`abj=P6i?wdd z^jU!^u7(9upt-~^%#?Ds!my-Q;d;uAo{~<{lOl zb}2^j?v{vQ7YIh-qoQ8L+4ac#wM<8n?Dj;x7#&L*YA2`xIXIYnZFx2q_@zCL9N zQsa_@7|XkmxY*E@Z1&~kmWVYskS>v7H#ym1@74tw%Aa^BbtVRvg9ODtQo~uexkzq6 z3)IhLX|M}jw+DZ&tn*>gFgS8c7sA*RI*W;Z!{TEYmV-no3&~{@Wdn4wr?f@lht-Yt z&4EajlX+^=;6*E1e^b54DSX?e}mRTQKF&eCeYz18F@S_8BN93t`My$ zrmoTlT9QX+iazgG*RTNe&8VgR1?}xwu=A#FDJ^QAeN)qA3Ou^&q6)KvXQZm$lsitv z5p(DMIDUl_Y*yzu#$PDZ_+cMuL}@OKGh6Y&;P=*5{O@&h6*@@r;JR1&82ROXY-akf ziP!<>Hk<@u2$yUc+x3(%DiQ4l!L-s0Y1+5TfN@dTyMefb40$8Uy4+_G+0pyb*LAV@ z{xQn3a+Rb1hqHH#&b3+oKV#cAc5FM@v2EM7ZQHhO+ctNc9XmUmoHJ|YhyOh1JZIkA z>w4AKwYvMR>Z<xZ08v+vwVPhp)}Mu{S?De!Z^^KmHRm z`TsV5f2)|;!qL{|KS)lI;U%l|e!Gv4?|jeSDlPrz_+!JeWQdTZ&^gzc>pqc zM^VASXgLG}jL5K%S7el}Z0}HEM?P;otyJ8AD$gKQ%9lS5(t?!QVwzaFRmYsirrYV9LWVvBQ@L(8x--BjG zxYTr+S4rqC*66=oXn#RnepPZXFQxyw{f$(D&kc5EB~Y{gZoS-HvX{H1*IO==bx9$4 zB%JFVN$UoISsFD9A~386n=POyl!hV0(qw`$Q_}sT4H95gC>TEx_G84a#GK#e@lY^O zTLewTK>V7hZ8|9pG4%$Y(w9NAg7RgG22w3JXWo`!LLVAzP)1k6hkSbp9ks>ng?2 zT_Vm2O78zW>)7XH)n|Qg)PJz^e~Y;K=L-De=Wi5K8c)@Ks~jMV+ewOS zXn6-PcMCF0KO~e1d$}T;OV(??9Qo#k<;;PvP(lD4Rl#G}$4Whyr9&ZB`yhClJMl#{ z{9cCzHX}#}M<(st>o6-TSe>@NDfa+2&_3AOdq_+YcPSl$9WltM zW;_;c*F-&;uK;6{KF;D%2j8Ina7x$6=&dfEfWv?Jr)0%{i4V9vQ~{5CPlN0CG;sX? z*@%A!ezlI1h65sm`7R(Rs4*dv=l0h`x8VWQk0^kPYWf*{dxdt(W)JSY>*+mbBuF5$ z<4~9s?T>-e4}^r*D7(g*X++)OmBwMwLC%1+}EMaG&N*y6}ob-2|E@XuBpw7z3IQR|Aztwz^y#n_@^0%!`u%v4`7) zEQ&RolO~}>C8c^P=Xt*IKoj9WwWDh2Es=Apd}51D8bbJ_uE!nAVE<=k*R+i5ualI2 z%aA%dnOpq_hLjbboD1svT1XJ`ZzBHx9RK^r+W6mBjcI4C_-C9%QG5dp z)xH#^7|9g>-ZdlY>6#>>NLtc5eSC}N^ z@eIOv3)-*v(y4mKM$a<2iu@t~Y_J<*rBkLJ7cJdeP~)i-5GFrMTrxql`>vBa;}nro zDXrABr+T}yL=KtY1CLGEBuW5MPcQC(-v}uD9q(Q3@1SZoX2PEm6={7KHPh``w-2Xo zoOseDqPxA)%=$zh&0?rI$YnC$s_oo$suHMoBoHa(8p-fJL-%|2c|bLSh>|lvA{Gku zAw|s)fdx|ydfd31HiKDa7DRiX4Y*beb(T*>O6EG_mn8MzueC11n5k-9P2zc!po@6r zg3H2AA6kWd6itvZBE*)4mvpr3@@dBK`VUTS{$JM{pPt(0WkG)H<%lo@(tU)1oz)X6 za)!)YzbBq6uhM_SdJJ0E!wH}GE0AT8Xg>h@7D)xa>FDiFpy9QvB?uqT!E$Ao& zjW)=gv>vBqZbtI5?mHGl2Y2*!EdS0tCg7(qpWJfvb1<9 zP-cyHxLo+vp8soQ+_#-wb4yoOM_Zfr%Ju}h_1?eo?Y&k`h09>MNA~1APyKR6CAa=* z>dkNgoA91>mo3uz7}gT}`lB0?Cr`JNQ}y{?)Soh#uiZ~0o44KDL#&&s)E9HU+yO5Y z^Yul+F8|>gWqPyQs4Ke}Zlz^gX0gS_q|*{tG|2aV-BY2VWclTO+roc1=D$^k_s_qa zfwPH;vBSUd$IdeX|8NMwzr1B`UCM)7$j3&w-2Bp{=n)d*q~<8QI}ND9P7Uw1105)2ucN0`?oL1RuEfoJo)if1KS`-^lOE42ysH=C`MhSj`c zU)rJjxt_YsB;hXhwxpxZ!6HazZl7#n%-RE zX)`}AhB?17gt`CMJeVz~<_~=bu|LuNCV}?Pd2n>ncltN8aH*#G9mS&jBZ`F=CI!sd zfLoIU1Q*-Xd-P)$#&v=hj-OyQc1#wIElR*F|9XR?OZbuA!%V|ywI)Qn&vA0_tNk{y zKtdr-g1(@j-|t3&a*Q;Je~yoe%nXO-r-+#jD&G;KMAitWqNJ`UU*ViMxvDL#4X;*L zZcHs1Tk1)#c6aX|Z?BK1st+e55N9d3Aw7;>(R-XN6SY~5a;O~ooiN#0WYvbd?_MCa+CvbE#j&cKXCMwDW zAf%KLvzmFJDdGtB%vjlB>uhZOzqyub{WsdK7j#Okpj@&xVmE>7%-OMVDcVmP(|o-RjM=ux7;b!qBbK`?6KY2njAe01Uw6bWsPS z_IXG!0pIP^!NcaW<@$fRI!L4>dG#Z!BMx$;K9chU^Z6CTt5Uq^JeSk4tt89GI8_ zu~AOn)aj2hc!+n^2pgw}s94W}tWAb{3()UMij>Pq zm>D5|=K6#}7pfiZj*bcpT|AwIytWGTC97^>!ON0cmD`P<>;VpKa5H%0^$ejb67+GD zjEtVnbdk3tOhrdgCr*s>XO>ad^*_O)TV62)b=C5Uk0WlMu!}mZ>NB)mQ39e8m!DQ| z2WVGEt@=q5ZaFrU#LAK>j!h(xL0^C=Lzix0c43H99|zsT=;0`VxTeN+(v+;^MdPn& z#4Q^#MpL8s^Z6lSZ>y)Mh-rYb=xcN@Qi<&HwDVfc^8Z}dD`a>UdW9}xBN zl|bLD^v^l*jaQA$=Ls4)Yv&>^7T2K2SC_Ao1N(c#j(05XYp5+Ih0l+Jp<9>OnlFNp zF56=-Dq9yBUwltE#>3Hym(bnM`~dF!vBVGpW_$)Li#>awQLvD{TOU+cn0x&m)1?Q$ zRF?WW*M>iWWxd}TBxl+Kc#rGuq*j~*R^Dg?YqlN8_xa;4k%?_xI;jOHp^@ z-ZVRc4~KZuEr>tx_DrS3H4cTUi|t$GU)8U>_U|k5C_W~gh`@JmHZ0HCe$oK|Kfg@S?C#xI}jlFE- ziTTa1>gl<*tHO<%-@M{Y%^n{HJ4rhGTly&>a(LntlQKP4tUn14v3`z{^ch&tO+3V- zS+9UO^YG##iX?}lo_Pp2-c#XDg2~;2ZN;ty4`##g{$!Edq1VMzT_=1zNSs}AYc}X+ z1L>1LCWiB8>CefK_}lO9ALfeY1;N{t!6eOU9_9NnaNz!hWksEKUoO8Y z^nQvMhQOgnS;&~H?(6t^SoFv;qN+r#8Swkpn*wfQtj2=k-N@-G(~9Nb07#~*6ronX zF06P$af@z&op`)^ z@e*u^*{BuaVV$%oFCFv~JMM=Nj4PRy@7iPghq?rwF6-g6(+!QjFg)RNyJ2Q$w3eI! zZBJo4ctJ6+I=Mv-CQe22_cA5Sx3T0FUI-}ydVc9Hd@sP7q*q7oImUOsXBQLc^!O^c z=7~id>DF*(pXEQ*!rxaEg;y{^ zzc#uum%WH6b9xUStwpQW+39muARNL_t!r@IGgQdG84^YwRl6p~4o=@R?iPl9f=>00 z;yG4C_?EVg4J7I5&yy`Z+yT8LdWv8#WnCf?Hy#hN;e;hCaoSs_7v4Ync*Rx7 zf>h&X^+afbIBKja>8MAc(ca^X4;E_o?x9*NS9~XI@0IU z^gpe`3f&OIM~hK=V+t7RCZp%N{LBGN{ec@z5-$l$HM;)XPDi@Z(bf8Td@%9PG?pGp z-hKBiEWNz#6jw~~Uc|i`gh_@A^kZh;Z|D<;-l9gUf0o>-4-pDHbY7!qkNYTyqaiAq!3~Xd%ZGx>_Gl75RuZ{acC*g zP;CUJT1zs*#LF4Yw<+ig%Jp6oVIMrh z+t2^v@-WzXosJcI1@3~qlqDuypQuLITgy!ZDbE-(k?0J^kL8@ikzlc$bQSq|&)TUw zv;wTlnk*Nt;%aGO2=oxsgnT6jioZ>&q$l+*?C8a`vCHcDN`Z1$nsaDVIYJQLC`z|C$z z2qr)fZ5fx!#t4tT__D!7A@VnG#;4bWD=0>9TXnu~^wFe2T8zO2vq(}Icehxsfdz}L zb@-alxg+fM-SBfe0FY*aoOFJB@Lj$*ThU(KXo5+AQ7`04ySq%OMxO!fP4J)njL-!8VOaRv zNE&0D5RiqcVWn}NYIa4e^^d;p*4aCBAcy@K-^KeJO{boHMDf3v2(C>bEnZaHMaRr zkl|Yqiyi&%;4Bd4ujL5;&++Z_4K2Ul^zBq_ZT=M|m#wmG^Btk}Tq`2%7*kF7hGzp{ zXECp>fSm;ltxeYzB#CJ@kuL1TVv|D9TgBG#jMo8f*Ii;Jv273*t2t0EiTL*s{_%dF zA)G~=ZTAe36OD^gmm{YBg(jUjpm?0kAlPyDsh`0n_BiSEiR~sZW(G1z1cL7G{ z1exJA{2=;cxMaYT`|$;y-hKwK6nGGyN32S`2IQ{!61Pew@jwgR^J44QE}+>^xfqhe;yRqXup6^tRkTAg1iU4 zhYyTnXx%axmx(F}EW-;V9W0HH#owTGg?6xsr~~{b#3Ea2Fam%5)JVKa7E#Q}mn>1* zDQMkKx1a05^O5~gmW`Br9#pLfvKoV+{L)ha&D%<&QJ&oW*>C1WkL48mw9F|^96*aP zbl*a=XVoxB z3q@BpN{%1Z`cttmX+_c1CH6Q|n}m~zBXe+(?1qj&s|>}liLH2!y%37WAhQzGdP?8H zyu2$tua}HuMOj)Wt+C=eKx)QdP8Y3TO@>OWo+QVj+^j{n9pw>91+kI<8mk9zGseGjir@o6#T7aNjhNo{U7AX)-Ti5m#~rP4AvLUZ>aJc!s^JHxgI z%3za-aEZ>)&P}t$69H>>GW!9DE)IVxD3>G5(CJIqQ0&Uh9G6yF7jHS$s{<1al~Z&k zA7lmV8hxxGiU(OhO}2)K(>#jZy5HCRt&MmfgU(X0O}YjnAJeXYr#2@=p_j#E{1yVJUs*4S=G}&es(bTf#zFJOQw`H6`Trf~TWGiFoeuPfp zh&b3Hh}`&Nh(gbSY`7)6ICZ?6x&UJ@;bIfP&wl1?f@|SheP0>B@BnuWxU{2$UMgqM zI3Y~u);lxZT)z1J+F1To`1F4oGox=&>;E8=?q9?7BK!^eYGM2}FaH-W`8(lLF~&b4 zk$X>{;bBi!@nFhUbs#IacM#1EUWk=y;cOqM2$lF#wPxy9LW)lRldm4G9mj|d4#_FREB7J2G*Kq;9qdG#Qn$l;>}@*}9}SimF@ zn=%T89liH0om)SO+^``3z6HGsH>hrd2zPf{zu{RnB3XbC7m-s6nMcj4k#i#Z+H==t zOf$1xi$})DqUX|6?l$mn1(H~z2IDpXitZ2t3Mki5s_W3~ z=?&t!h<5V)=v5vyyIdk9rkOSHhWgzQE7#>~F5uJ3?fG442I3HvRgKbLWHV>7}T>ZcR*wfTc;OV{Qm(Yea#HzVU)rwYG`oM6$%w@^S z2t%mdu;Xq;8wusR+dL8r?U6fnUVyk^@AhYdkS}L&1??onu@=8rnPh~Jcfu2nfs|(8 zocoHEWk0HFtYr$d!r8EALb0)U7sXnkPeh1F0tR(J{PA2YZ;o(-M>;IC$!f}|P*J1r zRzb=KL!}NPh<3MSG{byeH<~ef%9<&shQZI~Dkr&hgaWq(c_YL`%-IyAaX!A!yFSVV zlfg)w9PJ#v21(F_Cq8b`HodP}=>CCtuxO&tc%<#nH>C#Jj1WFjx5&)Kw^xC}$0`(7 zBP?T-W|HKGISLV;EeVe_R7Ft+``JOIBm11TlU$jFxX9dLnU^6CVklti@KVc$9mQ%J zzo6*a)$%y0&FAe+Rec(XlNTgV8V=nR%R_Ei$#Gh2_F*{HvFs&9RM)0g=0I7zLiNGRAy(MLTeex^Mtp z&baNXtoX&{aA;waY@m~A`o{Fik@{DRGwSKnKo~&$S7+ovxgnxlX9LB7S9l$K3Z*(O ztkhStUGtySqEcueNVQ6liZvm0_^82Rr94f2Pz_`IhuJ2*Zf%X>$byvZ*XRi;0FE+@ zhr9GRj-n}&4&#PfbFZjcFj}TkG1u-rlgcL1BuCI};zw--_nIDV(d&j`wbJ@3M)Z12 zt9eUr_+pr*eO;KcpzFI|1W+&eL_WC<75#q$I}eBeOzgL*pEa4O6eXy;M<>Gd|3FWA z^~r-{1N0^UW0BuF#MtSK`Q3tgNPWQJ`TTU8VTf6kCcSW+)+TfaPugMBy!jS0Bcm0O zMuV<1_@z;gd&CBHHTGG)*MfU()iJbUyJRifkg(soOSNt~T%qN{sb|pQQvD^IJ^w=| zk_fCvWq~cIO8!w!sM~K*Q=*C=n8UO_I^fXF4PB@&2=XC`qYH6@(eh;S|9Ag_kYQsamd z9C^~Hs<+&$igDC`Bv9y@gXxVmGJ8II-^jT^%97k0nOLVIQ?#4F7CMnaqCXdh7inL# z&NY3p&vB#YPh?4G_Pm+xG#>(D2Pk%}%*C^D@F}|lsZN$txwwJuc+ZsDYwcvf2#@+9 zjLthpVSajQ^AkSoYvFx-%l)Z=(PoEzt~EO2*-ay`Y=<;-v9!NG$lYd2DNc}6^Hd`PW{V10ijqn6M%7Y@T#nELG8v{R%D^E zAOgU{_{HpDglgL#U#84+YN>%@ZvsCCk)DKWHu#OoYE3$?^{>DWCOhG~Mov$enP1b} zuKjK%Y9c6$f26^TZCMAx;={~`Q+b(06-|U1zvnC|b%xgWTqy?Bm~FzJ0(PAUut0QL6#-VrFlG`vNyat4(iRJ zx``H;#4~NW3MPpQ@o>{}`iA2}_JFoA0<@0C9@y0NUk+e6bwR76ujJ_q&VI`r5uw6qBge z4Vi+|36Q6J&5Af6?570z822MY1daB{OYjE6)D@J})eZlU43*_}j=jVEddQ1_dC2vy zbh&~Li0a_OjO`UdUL`X0Ejnj0!JXM$1R}n2yb~v@boyZXpKOY_y7T8hM4ZmQ>7c)Y zGXCX>#fa9)k=9z@?q7v^&Ittu44o02!~AkKtvT zkEfU&fTVCXDD+BkOy;rFo(qb?v%~&ClH!C8B9BHb`6U9CAKY9IxihF*#5G5_9{Nzv z&53T;+Fl((slkqXL>~8T5w0j?o~Ic^_s~4V-lr*yvti|oXUTS-K74mUgZjw-n9(*S zq%)AREi<~>CfSX>yn9OER057^eQruUc#v^#3`Ii-r42N(ze68Ac^_wY(ouL`HkP6@ z2q8HWA^mW9{UvL?lCGBrKS3I5>km_v%$L2$bmv;3FI_pb`oGrihWz1p^?Ut#zWI&6 z>Z0;**Y97gU9qCH?LXAyo>dVr>zV{ibXy|t8DKb2&*SpH7ZomIXi3mo9<`iBVD*c4 zd7K54Qc$h;30%n3`t1<#$;&d3hn=)K~dZlfh9pbxrAjPLH5e-pQB zfJ_crXeKu#QE@62+==lj7L+4YBSq&WEsyb5zZyeUomdVA&KN&o4pcSrg(qF#z<#rS z{danGjRmFYIK!0Qx<-1=8UswV>IjGt-au}VFg5O&2JV;#ZdlZ>m4_k&pAx+gN4H%L zikV5AYK*05D2TIZuQNzHs#BO}NB>kRG5AQN%6@R9g(W*sz+}SJi@lRP>@Z9roPMRt2yYKM8f5L!!FT;(|yAwXB^oY zDG1GSZ87~S<>7kULJ@!Lec8YyDnGS842jvge{x_sn`&HEHyR`p1O_ZS+&U*e-Y1Ly zA^=e!t`oIpL!0I;V1hO0>1Bw57o2TgW?4%@3FHd9(G2&affUr?{$WaBTeB9K6bj~e z<=j_VvHMg|U;eE#7%{fcs@C1U%Z6IyqdCbgz1lhk%%3h>qq8{s2$yCs_ag0{YmyAc z(m1o%LLY25PxlCoQf=*_Ng;Ll;slurd5hOR30*qo$=0>cbKDnWDb!yi=ej+lvWw2@RVm}Q zIpQ{vvx|r96e+nSvt0L#4C3vt4L#{Sy49?8y0w#sFV{wvfwI`(&^@ofBXQ79 zR&p}^n}HJtL(UFh6)kI}zy?fyRcW&y#E-z^OmOZ*RpF+GHz)S_Cl2cDz7mI?ya|w( z6AwEftW8Ep*qKhDCqHM9V~+YLkRR1% zM+S|*Qz+YIyqk&iLQ1jIN3$0>Fi%5UX6-|K(xD z*X5Wdthd@N2f(TuD^0sQjt_PNoL?WJX!?QRTt^6n*uA72P=UcmhS{!zR-|uBSgNnR z{)tS^2{m8;jA0bo{)!OcIvdVn1|iP(?l`a+KY%;uBKlOqg&=b+B%zUT-}{5E>(Sfo z>)v)~(q7o_H*uDU+KG!ciReQFGR$oH;2Z{00iaoCmj_deOH>^cI*Q*iI2_H6WV@F= zD@e6a=D1cq{IC6rQBr@tiRI}uwA>7V99d1+Bc22srGqZWN4fpjr{nh=qiSTvE%-J+ z_;x?X`~wLAF*DoB1cQf>BC-5P?KSSvOT}Ni6;^_jAtP}DQgha%J;E*a13C@-?ty`V zsC4XJB-5%&Fl(CfJQ&MR`$nXNc0nU~GfHaHODo%-0zjq$I|m{I*CjbE`coYp?JhtC zp;GDq-Fd@|$o3;D!z0W{aH?uz-+e`XFFEO_oR&0gNDI?f?u=JQZ+;)#9{a+34nW8@ zKA<|Ug~jFN-ykl|cOnO&VhgUF46P%4Nb<-jW9P66P$<^lxRQWUU89gT{M6(Hc)#k0?Nw6YOe;F}aIa|lXduht1> z3Nt*m2uv<e{ZH(GWG%M7oGG;0oDK_an&E%mNYZnYts%dJg>^`<*m&dNr ztYIQOv=X;(6#q7o=%P9)%r7-cF&C<&q15InS#_mX)=?p@l<^L@5+q^f!13itt*AeR zmrGXxN#?JIn({_G9!Y*L!hoWULG-=hZad!f^(x=E%a32-)gw`_a|&^61)bo#W37fBU2UDvgA# zk^{ROtOR3iPR!TM;Uhhm=*kHM&JsQ_R~)ZSA+`C4+A5SwMfIcrU&0^=HWo&)PkiBF z$YRH_la!==3D|`hiuk7+Gy3q<0&X8K~LhiHXb|bo|d_O#{O3e^Z?QF1Cg&vchQ)Prlhygs)@<5^**d+YuE8Zt28bZH zF3r4+=giwbR@Oo?dW31OYYN_;3Xm-3EjA@2!i%X?)^;NynQii!*zaLdslFE&wu4%Ad%z=TF6})mQ7Tg8Sho%&k2jQ5 zdRC1S7ETu9cHk1Tj;yu}m;YD1NTqtE0s5gze8?nBWYn+KJoS3z~8lB+BHu1F`DEqXwg}>96W@W-Kta zMVZL^ob;1S7)Ejs&H)??WQZ1Ks>cnylVy{ui=B;vV2j?86jT3l#yH`PG}s8d;i4hP z1Zzx}MBPGoTe`(2z3*i1$T+5#HaUo6r4uqh)0!EeRrVScX(Z@)(!4c-{!gw$gPTIN{ zuMB$yu`^HR4-NU-%lcurv(t@`|Bhr`JWKpT0Lg#YKo{?VR>y1HGKK9TYvpgHo z94YPH?JjZO0Ux>C`aocp4qB|Z)aK|hHNteXXxhUF8W(C?XXpXlhz@^oth`v|ZWAa` zh(;~U%TbUl9W5;wQ0&Z7*|R^gHDt)9V0E<{bs$lQtTr3M>dclIOzM>7{r!$2ikOYv zT3x7;*(OAEMKAd(*z)JvqL`38rHFaqbMWbzMCt1)U=YBG;)B^4HG3z^FvUO1j11;$ z_;FE^aANtT%A1v_9>NO4IQv@M?*XjDQ-nD~ruCl*T3>-cn^_ z>2mOVKVCWB{+P06&j^kH=gZejOhd#}waNT3QM?js<2ZP%s1911jv9-1dVOCX4-B=M z=+RT&u$mAI#{Eeljpii6zocF9i3%V!_N;xiw-bMX6 zD9_w5m3wzg&G^xdxF(PyHI<^(5Ue+yu?nEuXSJNtv6d8&9AO${rWK)=5kCJw4$VV< z9+29NIj3cM64r~rCx5 z%BJ5R;#2~V3dMxuW+TyKsD*qTqB=r2wtWUZBJpkjWauSQ4ad_nI!ETtYC1WrC(x#U zmXJ!SjsnTm;umcrRhmu?aKJ)hP$p+)$(K~OXc%h1EQswo<8{AGf@K_d;V=(h1DJa> zPy-9Q54!?J^XPYbiWYz&cuwS-XXS(Ic z4A!-pep%>^AY)RU9J_9@mzY@{LTzi!L9%1Yvx%-2Clv_f_0z2xiJb_dM)9_1Zt;&= zL>_+@OkrkgM72CS^_hmODFyS513Ljtu-4gQ7VZouO)dT691;esok+xw4ouECCxSWR zL*??S;ctDQLW^kUO|U>+K~S_YkaAE{=xIj}F9(m?_vHif(OI3|Ha8cC+xOwgTKwL& zmtVJMiMDlV{$n{hS_t^RZd*)qwhBmbfU-Mmh6{f@D&hlen}!>Pm2#<-$W5NIfV62G zB8XCa5{3b)oF><}__b~6N$Kcu8elliE7dSJC-~vaNC@{h8gvYU2bZJOg3QX4i3DHy zD2lzzcFYxsVm7S@ftrQXUZ~3(kc9MKP1ZrZ4#1TrU(4{z^+jyxIUwhW%fjdri7M;5PHw1ttTRP zj_vh)x{N%apgq$WeO_XKUi6DYxk+f`f92r94)f&|HStFp`=of`NVdqFI_}>+!S&Up z^EGqn;NVLSV4hH7z0#<%M)bp7doLBxT*G$e@N@-PA;nyMU+kZe?R9-3e6>OQ1BS3e ze^xqFfIb{(pErdMpP&Q<4p{frvd&p>`-cb%E&3J@Qp^Xv&E?(~K*yHw0oJeEd_y*T zO(x}we2jM4WEF75+u6>U2Cu5$&#!}OUfXqHNe;kNE+HUOqGuyi{x>!c$sGnMl4=9C zgA4mv(z)Jm6Z~ASu(|W%ZosTnsV55ivmpSb7>e7`K#~*+b$M475-%sxqO-FM`#7cA zsb@)zh_AX)KYrJn>&eE!PG4T%M7)PcX`=^m3u(?sWq%FNq3CDZr=KIz_s;^joU~s* zOx}Wjz%&zghLCqrqkH|Kh0Jotb(KB#Kihh}X+>;?e(kN8BHr|m=LnrQ{4pGA12upF zsL_vP<1;CTNV6cb=)T0;!Vm@_w^F9Bs}&yB@s#(c#7+oJ;PEWB$^X&?$Gqdoi1iG% z$GNJ&kQccEh!4h48K+{P5TsLKu|%7>Lk8~TqJL`2!#(ZO87oI8)xfxA3WIQpCZ3Ny z%;f-AAIo|iGxB*KP`ir|9@t`tRe&GORZVpZK&kX(g|{@x0$j2+NN0g z;!C$^CMag@f~NW~xmUM8gQ7vh=)uwo0luplb6>x;d5C{P_f)gg-RjqxFx%-T1IB6e z8^WcpHuXz5P~nI>R|UY?!o-e<04HR@p&l2)&(7Od*O|KEFl|;M6M76>(W-fZO{$vO zr&Ce;2;tT;rzx+caUs#EwKOcnxm*`$0bf-)!zpl5Njq@E%48ovp+NV_Wn{-S`1si-7L|2&GC1Ch&cIVj_-0q&rwB2z<-&)sUT9k>zB0_Q>G{VB0 z*2G_ieD|za)B>K^Jv0M5x(N;DLH*=EVce;k=P6M}iBg8r^v#4eq@Rqfjn&0Jun4Yc z9K1(4r+st2-rACRx(;KrZe*>Rih9{FGSJ!WLN)+a$7x;5Bhv}rpM+nwXhHCx3VNtj zv}0PGdn2_FXj~Zzu(_F@M6|V~Wm35t@iH6kTM?6(&pOSt@ymRn3ze(ocaLWP-Q-Q1 zjvT;lLA{waM`4@*;Z?IIa;O$=2F!_OWN@Y`;g@mPhqyV{Z0@rm6*%21o9O1TvtQ40 zv(^t6-n8(tOx4r%A1#dCTiq3zvZ~p~uczzzf%77u)F+@l=gb5#V%eWW?Ha`-6g{z9 zdfcUgx)xo|i0u4q_T#(AWYjXBKNHJd=a9>>H2T^)BVb3adKhk52V$WM0dvq*$Sd_# zjVbO=m7PIj?b?UUcno5Wx4R6um1a_r?-dj0o&bGcKA|69c~G50jzZP`H9xMGEd*^) zE)I?}MW4j1jb0?Knb*W?;FO2m)QUzI4Srgr5D31{$D zE5bF%t*c`U=WFzOnFM#tHMcwM^SjglW46k`Ps7THW!RCn(fKK-AUBDpuyXI>s z9W6LX^|L1upge*VE}-TBDPIx{Js}4D9_t_g)Pw@w5rQM+{!60%lUqP_{ZGrcXO+JC z%EZ=5!uK1SSmwmMCHpmlE7I)3==^Kj{Jpg?1atkp1cE3Y8-A)c!+5;NA^e1$dSSKl z%)Ha;Hw8^tZh*4AA6G9&=Zp4;XUfbeaBE36OCu`2t>TtfH#26Y(1T?^nEMR66snmC zahe?wF+1nJXqmBHQ7W6CC=uM~?RZ*9^rt`*g#iy<*H4>?0m$hr(h>xBvrL?DNuZj! zY?>|1qg%0~01(pkoq?yj)tZneWJNEy$`}_SdS$swfKzAIyVK$4;>475N`vHqO3R{! zC_eMZqff!cp>y>B_x23NoYQb|*r;%-HlBr-Rmz^b2L~%|1qIc0mxw$i*5|_2$4C%9 z;W|@yau3?p5p4T^pCyFVqlpKffd`W4-U@o${L}&F4pn&2ZPRWI5mA+okWW27oZ5We zTJh`V35O?BcNWGYg`W(zK-KJ@>+}snWns$f`m_LL53NaUo$DMd5#ySW=GLw#lSN8NL2M z5$)a}NojTm4o%Y=UrV>fa&`sDGAJJ&6O0-?}gW<6`rJA$0lJFNMj-59Ee%d^jbeA$u*FDENncipX$uFZ+2hc&C6vqJ#tU5OiZI;FTC!L_ zb`v#86|4-wk5;<)Xeti5mDJ2759<+%2Ezq9rM>J~3r_{THYUJucpA2X0CmwlT(sjL zV6(KjZBK>KkQD6|3{)dvZj05glcve(CNv){(@ zC{_U6cM--Fd(?PwyTpPKSwo)mOn%oxSJuXo4NcUBomeNJ%E@|SDAq)zD;WZPJa|8` z6N)J_6VssfdczCm!@9E36O0@)wh>+ieq=9Dl&4Wj47?5{lRL@BOlEJ6e;oRc24 zoATwN1!QGq#RX~v0vGzXq^Daegbu9#@t_DVHDQ39uJ$D|7P=>#A6Zv3j3(DLD?t)p z{>H*Y8Akv3Il+xae}sl`U{FM$d1)jw=etVMGApE*wft}ZqK(FMG(QAk8VSIIix_Sw zf}TK$_Yw%tK(`|MMXXGMnzTjVV_>8p4oY?$Kn+FVPZSOl$(T7fBE*RJ9x{Me0Dv_- zE`P_&!Ag?I+{y7X-;aXS-Cp!qX>N$}S}$u#kwb@J&RINIV-)=0yfU^|r>oIo|WWfrw-A3BSSVyy{awqSvp4P3@Syd+D)1z@Y9n5#K}Vq$Lm#;z%t8NgwP zP{K>_;bd~3wq_K}g!h_gOemruvY-j&k<8961BiE<>}K1xK{_rJ#TZ@KoB~L?W`!F1 zXMe6e`|4apD7&pJ`ALrbPJhpu|flE!kJG}i)39YMqDqu4q_^1+p82*aEOY@Gq zCo6o(ekLQjGf~3Nv{A|#hlj1SWLPKuTLlM~Z9>2)1_~G3o%h7z-U?m|C9^%Lc zFkm9>G&urmYCAu#hp-EGjP*K%fN64Y2()`be|abdPld$|1c=`Awvp3p4^1OB_A+r+ z=@J#LS+$d&xsq9;9_w?lSPhuAmXj)|2qUI1v#ygT0y~7c3|uhYeq)2GaUimy*MujB z7Qyahl9&`6Bu+4Faf<|x_Vr-;3sCpba9XSi_Q=~R2wIR;oP0c7T)hKxZlA9>lxPU; z{lJst$!IXp!OHEdQj7wMQ)ce+3h4-UXr~L9a`{1HJxF#6a+h%y;at2tLyI^5iJNC1kl8*5edPbzF=U;; z0q8-F=%KV>Xg~C59M@2_*CVe{1$%I|0eW+gV|qCfEqww>2h#(xFDD-@*n#=@NcWfSS*VX_MoFkr46d6kq|%<#vQ@6 zpLyd{+t#2Prt7uYz!S})rlclAZ&rbaR#Mh!|LHp3)nj%E?c5irdtm70eMMPbUjMZc zu@ZC0QC1pY{1=S{j&_T6Fjw3W6(QS}j6&;uz}_`zgA*}*ZD>!y&ET4unt1pwUk-0) z^M~ph$$BX2B#04lqffT%mM%2V4sW(>5pAE$w~tG2)U+WERyySzqQ1WEyob1?q-lB* z+IDIwHoq;boUvxnJR8I-yEJM`iQk3EtFg|`nK?Mprl#2IY7x;#@tGB=Z1$E6Rd_J21Tn5wTnCsYxeS_5Or~cKA@(Hx5N1P*0kT{WP z%BxA^zs6{=zs2gAWmpvc!T=c~B2m0TOY5ZbD+C_5j;-X5M?_+UV_^G5P>7RRfO^l< zkmS-p^O4QFcBpgWET5y-X9b$ut;{5M%z*T63{;*GdDP9y+BJ--I^|3GxVHR#c&4|A zF2nsT)Ga4iqErBhXzu;@k8=_E)L_g~aL33}yrHevAy-%7EL$DF|9O;+J~DD9R1YC7 zk*(Hr*WKu;X3dClbbHM$8tbzKjRpHVqA=-PVKsN6Oe(rTTZl31I6$zli6b|J4Ze>$s{()-pImF4f zFZ;^L7Zd!jmZ&Wx;HcZHiAP-jK8>EWMUUKb=Wgpu&(Mbi&=45stNRX{-iyCov^yJT z-k)D9Xa1c$?L@WB-19g&N7lBl*B2ry6wDAvFMN$MO%D>Y;q^ddGDlbF^12j>=y)%| z2nMszYFoFWYHJ?Hkd!{uXDzl8fyF(TRte7>STLpf4ico3;_2$bFtPfsbev@{*DdFZ;2UtKNHEifp}yv%D7H&?lo9`<*cx zG+*_ixa5|(MVp$k6B}%AIp05 zS$PR`;7%D|Cx)lVH#yjAy)(*<#}(?|71M+II}XB@A-Nv#r`5gA!w*%a;_u7FU=DB& zwR|ux(<$P)p8~3>u33;J0Twel1I_>vsiob?)oB9@-z#<^H_aE6e-zHwTBsU}g!YRr zkW2vVk?<-V;f(^yinrpZ!dpE1gM$f5J`ym9tMOZb0lYclVL`(_p3!R{l+JrMlkHc! z-7_3{ei^zDj-vRjcicLB2wn*P6=VyQj3o>C89|n|24h$e{Os+&}M%7KQ}(GA6daa@jL%rg8o08tFu=4SHa$i zDmcf=#At{9Db3gd0ly|RRNZ79K!p^Sg^_sSA+pHwH}6CYO7W_=+hO6@^VpxD`f>yq zshia%5rTXRXZhDNX{n@L5=yir7KUB}5)D=ILHI0E8z9oU3Bt+`7|S7n^b8yj$_Yld*sE@X9CiFyw96?fv_AnPv zGeC(Ix3pL5rqv(3rcwC<)C?av^UN&mTFA*u>piFfi#}BtqDqbS4>Gy;s;*DDvPX+rKnZ1Vp#!r@U>Ologt_l6es!6b7JB?nn1 z63~}KHsQ~2oO+{b5l9?1qzrvA*?xcb7g={@1Pgu3AU7VZCdli2&{RM-z_A3TPRC3s_)pRjFbrUQyg8 zq2=`k>4=U4hS8`LppzI8?^R5G|3Q&(PeoEHg&rV0mLwJZWkTbFz5;(%6IDIkFep=* zpqcT937g<_;a-JYejHo|15b}K5D69{nX0f#(&sAG5OJQ^h^uy4dWeZNw}x(alAg;d zga+PEIsXhqt^&LW0l*%(OFj3j1%M_&MmQY6p|8KHL}GWf`n+l|+n}tLMCxwCf%Tqv zmNt-;P8!$VvcO1)Ygp3T*4Qw$`aAt3W?Ig4oLiJIo@9hpv^~GH_ zj;|xrki+YqA@tzGxEVKYE*zJe4r9oD3SZ)%7sQ#ptszv>X$78t~&3$R*G^(!Xv|kRUSohJBuki+}lvhu@V;S znNoSoXBcQ{&L9b?bQ4F|#kSs$F2Znik(XZO2I^INq4w?Z4ROqlL*3NLAsm8$x>O}~ z9Q!lkimK*0<9iC{ldZV7>gY)q){?+xI?Hzs(ueZ~;je1t@69TqoxFlFMDBG+sz~$z zU}Kf`6iPf{$}xjzHX?B{VnVCNI^%@G#f1J?pMj-t0)@=}nmExOPNEN(P9#m060#oR z=@Ahq5qZi%{!BfAHfCVi4It#jYuDW*hF*%`wC${0rM#~|__1v_yWo;E_%N3#=T7q? z>fr|Jm)+vRqIcHTJasE^+AkuNI5>RbRoQJl8eDzm4&DXywbD5`^mubS&6T~;D)96t zgz+1Si|&>3^YhG*h@;zYP&uRwZaORvF z-^BIjM02Svlwl^RW0V3Bo@pdeD#aaeCE3rvzN$2?mZk=9NhZUq;(;r{xo-Z0id~Mf zwfW{}ZZa70pKVqD?JoNt3G2MowEx8%#XI-Mgp%(CD8Y(Mz!f16%1x1jC1Z81!&;6S z6`o}<9^G+_Vtigr`_gyEkdJW?mn)o3-2V$GaYFiSoyr8@qrU{_zg5431nv`x-d^OQaait+yal>nnmCBpmOG1eZGwBfVD}n|AjWee0|rofr~a`AI&Pq zhY*FCMWbKk{?N-TiN)7K94*Zs z%5Gc@=b7OQlvM&}Z7?q~udrU^6&ObbQx-PKX?L-H3Q z8m|?tvL)?B+iJ;34%#rtXW^ghn8oI%`)U`eI}?5H+LJu&mwyQk|xMo%f{TbPd%u`M0K;9!YS#xz#(-)Jvy&{R~K zHVA_fl+JJ`5b?qk7Fg`PV*^Y3ox@bT0RyW9093zCI*l-KR4*kW3DcUFpgi{$*oe-$XV|LxYCwv+!7=EVnfQT>{j zS45KsL)tPg*!A9rYHLeu8~Sjg>?G>JU#i>lB5YRt@o2{>9bI%(XJ3Hulma~mgD9+9nv>oDf>ceH>!fVw@rzo!VD}w*PZ!U2n=aCz zS;Jdk4g+TRh{QC$$BAJaWY+?~fzh}(^ugDu&fbM{?~`IKN@(V}=`LYsLQzUvThVp_ zwVn<&67Xd=Xp8W$Q4#bet1$PS{-%}EJnzy;#5BxSBw6A-tLGc*6ALBe2v5Wj`bPLJ z*YQaW&~39bAq}i2q6)=?7=QJkEoFoRM`DY#4`kd9B}FA2GYbEsXSNrt2tuB)3N>&E zWL{g^b4OfZ|B&~*wPX`fkqymZfNZ27QIS$o3<{6|r)WJnyg2`OV7y)4RbbcE#vl=+dOh*xYL;T7q^fnxylHm$ zs)Yip26p@VfWaMY=zm5#^5jOH<@EWu zvC<3dSSzH#Qd=5_ONdo7Fs7vPbo)MS43 zwBSmOO#`#3G;KGk@+Z|ooe^RW(`i!RjiM!&>$q{ndjv1kCh|OO79i_7l#wiIZQ^zx z!-}!xUYlrPj^u zN*oz)Z%|Kg$z_FNb|KTSIHV**l*mL9<=1R@Mn&7+h^KneCN%#@vuN`0h6CAkMG zf@ZMhPMcN-SP!Tm-Ded<+Y^RY2%9lL0shds7M-Q3)$1v(O9dU$C^?liq(S;kT7ai%IHh5-jmN#BwE2g9L?@m52?q?-x{!QSf;3eb7Nl%1q__eH zSc-w!ZF_$x3L{_=uQy(EnPn;vfgRK<`#TqzekjD=C|8rrv3<5Nq0EV#w8JilM{=CE zGYZ*s{~=nQr9I=%!fb>V52Xc@_)hqkQ4bYX{L$YSGHrII1-vMF|5uIQif8R3 zryBQe5k2{mfgE;xGi;(cnz0V5i+V5gd8Ff~!AjfFzo+G*F|~m8jxT7Z^|5yt)D~Ln zEJMQ4272P9P1{p1xMiGWxWP$z8Jgi(+|K$r7FLP{0fSA(j3}q|Bk7qH;Y@RzPX!KEaoDMAt@WN+AO)b#Xp!xmBUBGl8&Z=5wA7vWuLio7p=VReCdH?FNHGa9I)#ri zGD`2Gz~!<(%(u3CVd3H?!HvP=7&v~ESu^zSPa4rL!ZPHqk*hr$U>K$~EBrIr5?$?j-m(~(-bNE6hSLEcwxR`B?qS2b?OAWh*E^SVJg0-gEBai$u#T}- z2p>iRW5z>L;@9C2S)jO4>#@~a&bHU97mxc;H0+qJ0~28~TYC39Gu|jqFE+!ZX9EWV z{9R0`(ERb5b`HMZ_Fv1~LVQV-2gW!IS7pbC8Mv$UyeAslzSISS$B8SCX>M_V%(b;T z-Tsi=u{`QUHq{a-`)}-Z`-ivSvtc1_onhxy3;=dQBO`Dl&a;51IR;^$e-sY$`^z_b z32+(g`}552k)wEuW}XX!q|#Xjj!Z9mKd4(A{O<7tx?5Nct&OB2!EnV6SVzu&xQ1R% z%`dQ(zAHu;n-B5Pbd_?M@QQc3|18WU`3GUHnUj;<|4%d!G8;v4`p>n<_`fJ#{HNvr z2R&E$OeLR|oAnu%3 zor3{ZliLuljt}tmrEGtc6*(=NYw+~WKa*x~+I}0yusz6J_!Y7+Q}TV9vA}JL0z?^k?ay-v}Oi zaS$qN>eRmPO3)gN3tJ2ZhB7=mUkLr?X|Ej@hP74B^9D1rh^DEA18*As9RBsGg$>t6 z$aJizLq_TvQQYzz_tMV{RHt@#Eo3GeC~72ho)v*;u%v{qRetco**5lR0)AAHn>Qeb zhck?miM?a_`k+_5Mdn1?);l$RS>$w!LvMc60FpD3m$wt4>+C&DPu}(Zt%mk5{*NOQ z{~$}j(EDclL9Yyb!KXWR+(OfM&EOc~L87_f@9-hkHjH`CtNtQ6H`DJsOaZq^%P`zzqOanft5y~iHAYRI-Sw|Rl z40OvJXmIp{90YgKj$UWr6(qk0sE|$BTk)w%jwQJlFzDL0P3m?veouh}D3F&gc=gbh z1vpeos52DJBBEWni96AZ(sbwUD6)0>dZ<&lMK)jOsI8GObrB4;lLB?XtE1b2?!_=yQ zD&0|nHpn6F8D_B)Ac4<7xCn&Hi!L2n6Rjd@S5ZCHkeD{{S5dx*IYVXcph$t*}8vSEM|w}9FsjA!kfKa!EBDW@Tv~*Nn;Y$|fNRJE@cPi$he#aKCoG>k5f3->a?E@jqbFf!?RUtk< zg|jF)X2-ACtdhyFREE5vsM*_sQ(6qTG7+|8p?Kjy!<%W>^RVnenJWVh`dQ6>q_kMj z4rqO(j!h7pXRlAr*K;y>)sloQT|Vd(oA_a#PxxvNpxz5ZP_SAP;0cRH?|aocu(blW zbUm;&VXg-nDNrlQCWbb#`^usv_=IO+g(5jl{seiPdQi04pJXn*;iunqR( z`b3*en0PGMQg;ndgnoWI9UcGU3euojy^v818$B&}ZI5rJvMvS2;AH4_A&8SU-yqJK$bO!v)gv&0?#z{OY!5);oCh@t#CYK!>tbVb7lQE<4f zS$Yu$c0qf8y9@}_kem}aD#ysmwF(O8>{JrhKg{f!x_5v@0-q*ax!rQ*|33I37wPs2 zy76?UmWN-#YVosIPA(oQW2gwJ!RUwc(GjiY{PMZS2%1c#PnXK0W#X8WOc&;-s^d0= zTp&v197Z8?r=9*Q^s1w5Sw3~3xvBWNu0%<^H}6jMjL{e`0c3>1ucIM=c54+}A^9np zyc8V7KsO3U$z~8SJJt_nt~_(^UTwx;fgB=|PBYe^BfgCjDBp|?h|3hRtYrj1B3&(^ zwnc3_s}IIixfS!x=~%TC&2dmiPq2NM%LOeLfsbZsE1sS7YBNf43w}6%dmczsp zz*Y)TBJOUDiax&fDJznV-7faSIO63y*@9YC^BKg zx-k$QWFYHe<3gs|Lr~9N_VWgz){N*S^le4!B{Py>k5x1Cr1B+c$G$ZI`L4gaR=2*A0utJEq0?@x2GRWu0SwE8s2X=){qp2k9M2h|tzaa@TJ zY)X{%g?^7$j|zltM)>|crvs}rd^xK^V@@4e`N3B`!%AY0W-*XgYaE627IxDX0UQAY ze%B2O=bYEnDPKvLiuCn))q(Ka*{8L%q3^5#^|xf?e1U(+{K_wRDsnC|EJ(=N~u#Nw&CWS_;HXRwhlfK^YcJeyaA+pqOROq|{Wk<4UCiD_;!B z1j*|*uRh$Fu+lzKBSy1^)T4j7U_XsCW6ID^8j;j20*`J(vXg|0fPAOrdtQUEjbm}| zv36RE7MX30UesPNEkiNi;0MKNM>SzE63|gHGONQ{6gp)^Fn}~8CFsijt0VyC+N5(%rLt9 zCZK~%n*i-K{&9axao4DxkFnv^NnX6EPKk0at+i|{Q~JUaNE8O7J((9*%K_IGQhaOi4Qw(;m!w#!jr1al_4BxO-Q+&n5}FeI zB^D_$xtmtNo!dzfR}gfzZ!%NtwV3~hiW8R#mrcG`#52Ke!{+10@s&MGN}d<4i&jboVL}ot{|kEr-A7gu8uQDtYql;e1awAzNagoj$YM@kgk6Y z&J5d1&!-JApU+ET^lA?eLLL?7s5eIPPiBF)ZZ4Y%Fy{`~Xm)&>lIs6Hp0$AalY&;e%D=0upkY5t}%+U6D zXq#avmPmS#&al)SV=z(!U8VQ8K5B)>9Jhi#EejE1thTt~QXQg_5#kA2mo1aaYr`cK zki5pxz1j#neE4E-93S<)lmC~{rB*(E7ucZGA&3g0X&~M7WW6+P6>AOx&ol${dlM4e zA%REmTvtvQ)zBDu)69TpEYfx`h0obR>BY5?>q7T<%b7&8&)^v*wDvk^>yDfIA8mF% z^XAsp`m@itW2W<+_-{hLrhA`<^(pLvOwRK6Q63#o|T!N!`_d zpz-YgPwCXZraJ!<-chzvzs(Ob=MybExJ|OtMp8z$;le}!p-5QXX%NND6^*5h6^r;C zn^w;Vr+1C$p2~jwib~ai=<#cOykxA*64V0q@7Yix4(|IPnlF~k*m%j+xHHNV#b;Q-=<|w2*fU(vKO%Xg!uv4#d zy=sWH*M6OOkR#!GA@nRl>=TuB>%;o$@~Vj9v}&&-&t_la~@vT)I#<)b>6pZmIT5zhzO22T2e zG2+@g3sws|I!7E=ZTs2Bv=TRDzpAXCS9)a3&0P}*OEC<-W$QB*mcwnY2=ux3 zz3iMO+8?pR3W!+l&%JrNU__~qzb#-n$zN-(gplllee-IBhv?tqUasZ1Qf?4do4sTE z*Ouk7*4naxGqV4X8wGfzun{pfc@}*4-+z^F|4R`5SN;2D zrT?t~f#0qx5=Pz0jx{)i<*~AyD=y75Q%W}v=1d@)7Y<t%<`li=ay z<$yg(U*9GYsX;hLE6Nt#B+d}vwjB9QR>j(04}5};ZAPr7+33$(`*wgTl3q!#ldUKF z+a2WX2;pyNKW+__2eSm94ue}Tq434-TzXw7U2K^-x({viGWi*2sbSY`-wD`WT;s%> zqve=bqBJT~+5n)PWSJsZWvpj$`xWVK+#=U=D2f*Idz{?~omr)at;{E_18w^a0AG$7 z;0l&7l8R|l+$)^dq}^CIx~R8XaL-LK9~PT?jfByeh;jsDM&rv?x|`c9NfTNd^+_Hx z_rXk+?CCZM4UYxQ@um%z9Y-(Mlee17GUl_L=TH9ycV+u}Vom7~s1hk7ccMhp_Q0(+ zfnn;K@XTqL3L5l>aq8@ET1+j0wB8(7>P5>me1r9&oL5+KlOT!($t)${E}#nnVS?E5 zk$5ix7(_9HQ@fRjA19!5auK)31Dsl@WEo8H+gRheGC*kZA*zcb z${3fI6W=%v2C)qRE#hLWWQg3F`p4uKlPH3rPjbYPOX%hR=^FIC*R*IZJeeQzlu)o=Za1YAkxp_djfgT8m9t&7VRF z>JNO1_5a6-{NJ;uhE>%Se<~_pbUwm^(&l4{uw>|v(9?DQ5z?yR;$QPAB}bkojfY#f&p>ThF(C85o&E1stlrCQTAY+5r;DR$Z(VXcNdx47t= zN66{doC=x@#D3E7~NfnHfz}15@D@HQm zUVZ|Za17=mRT^tQfQfxQZB0fMO(*#MD9pE9Mm>w zmvRS6EI@adw*u6}Zk{?LbaX_AKf9aRs6b%g(Vi&Br|K4w;dl7?&_JkUKwj5$u%|Mm zcOvC}MpC3QQC>O%BP)2tz(r$K*R`HS&U(RR#dO;xgD=MBA%@*`f(94KuZvgk3GuaQ zU>xy~t0-NI?zM(?k$2U+YXT3%C5Bg)7dqB?K~7<3nPLn3mo>-Zv`YZj%8hv};Hj)z zS2FCz-a}*mag}12#H5pzrrDPpUgK03HX5NS_EgDFQrw);ZycXyhB$My#j;LcAE|;@ z{`!LMsGSW!CoPR}8s`OCs3v9IrCji-=z-!Xx;+ccN-#&uIZu_fFB-;4$QC0sIwUkd zZNC-Pvu*HJyFMV`JY56uDF3UBNAQ9>2B&2Lo-|iblbSui2bUt2mk+%@aBB51uKzm{ z00&LzAj7o}-A(@DrYt_NDNiS5P5Ffh32+7H4=v|A9MU5F2zb9qk;tW$dx*!(ci@$) zhb?F#hV(H#!{ds}xXPJswKjdqla1!lB&7y`1%4@ZFJUClG0{t8B~EU*YH%kzxQglE zI0E24Xw7~t{dJ#PT>s85jHXei&Fvz18`kadF;Mag=&x-mzb7f~WgYr&_BMue!i4UgGU6 zwVZNn`O=9=tO%wyr?9k~R%<|wU}dz0wE4jOJ%dtw^zCusTtSg&JkC@t zCMhAV%#9@3?`Wb|9+>M~POiguyAEI@gVBeUg*oi#f$RapEE6e${HEljf1)i&Yv}5l zzxc6#9V3Ec0=7nOR}WU_b3Q(wZ#CW6E5@4fInRrO$o}1U(_y-!jYow0&|6fZ=Cb}p z&zd{iY@o-#oFPN5Y=mvDJ_+-8YIHlabfuPg#N7g(#{TiD?~)!-3;jhg<1(ICVH{7F z{keK&cx^4y^=8ZULZ-?C{n1A@nMlqyPG~v^Yf@kw%OIgD2K6d z#iCB)&ZII+ho@&-kDNT2^d&Rc6Pa{eUzE#qW+Vd|6XwE+FLky>iSl^ z4FydSvrzUz14ZL!Oj*0lIU>w@a2zWfnjPrfA#oJq_x@o}0ExA+qAP=AIEj*k^&aAyz}J?nIB4I2n+CA+xD8g**nlZxv4#Sll5)HjCecI`6w zjw#@P<6Rm{*px1EenULqy6vimQ=AQa4$%!^^Ko~NhDl^Y>k*u$4OUM2i3n0Q4sISa z10ok);M0KoQ427tt$KG(6PU>2*I8?I*>tElNl8@D>N&z%CR~Apc(w zthyy}mHcMGTs|zAciocKzdy<3+@TRHtsMq!B z6AhK(Xb*u}o13;mQR6K#1I+oGZ!DgRmd$vaMl}ZD(H={{juuI~7Ry6lOE`qCUNlh!0LV3Dkyk(l!;C3F*3ucLMBA>A#=N zFK11Vhmp0U$^7}8$icx9FZAJk3M60jPt6ed&wfc0G6Haw^@Z+)X}{j-MHRYYNCg}& z=gY?hfjR=q#g^z~0S8`$qy2g0%n@P2+Y9xB3A95dits%O4WA5vcRlnS@i#HFWvtKd zvNXcm_yC=MWQFC8M#230`f~vvB^ibU<+wl znE$`{*!LiUN2dP#F!*u**#q_8u59e+qHkqxr0?|Ksko=r^c@S?5kIeW=MSni4ubd_ zbZtg4Oe0o__a^GQ{Su{(9h8Ss3{4nb;_OISxV}F%5cT@vjB2lIY$`|z#Lj&@K0AKs zR&XAIhM)6r&WJVyQK&`5cul`R=Z{IAa#f(euKR?Of}mnw<-v8@{KBfmpdZMM>c7+K z$V(`z&^P9CYJ7{=8FQ;!=Mtn*d6Su#fFMYAL-`AdbCB*p0o?AOs0-bqM{>Md0?1K& z3xo3Gotth`zqHhp`y(N&#JZj^h@e)7=9hJMfi&Hrec_prfae?WcPW zM}h6+`h^KJO#F_=0IQHD@JXkH@-|DJ(XC(QBqHen#eQaUeh*{t2LHOUXA&;mD+mD3 zo&lQGO;oe|6#xt6WW;Zm8VTJ0>00NvX>4JRFrCN(p^oc-6G%|l^MoGmO_#^DF5J|% zx6jHf)97i;u`5NpsX53BkX!n6ID(lW#NIn7fCQR&mTj%A({9It0VBNuV8}hxYPixe zV|op&+XMrq+A@!c$2j7u_r=>RJ?bA0v;5b|D4(Or7Rzvj5eKE}PLCN&<3JK+4mgU8 zHmb^Ua@hR(_mR!~@|R$mR$sF@T+OZQ!6v5qb@r{Be!JoI72p;IJ&V-}=9EYX%%60g zZ1zp`oy|E1P@=&O)=*4B{#w25G()s3DnsS~*`?^5{`T;?sE2q8n%JAUxw(dE|H;-m zPfUE>FtefnCKfPMUwU6QgdY8!@+=^uNe17{J!0&je0yuH3|LIXZG1pOhP1U~7SV9e zA5ZQW%XX%fpviF~@>6H2_Yusr8Hx-nY3%;_DF)@oearz4Oo4zb#V;>jM{0p&78mJ_ z9BFM!#_RnM+jz(!^IZkpegcimC}DC2bfou~%p)!E1?9GG#=Gtx_J{;MI|3}F!7gfP zz9@2-<~l{x^klrVc?=jSUalQiYl@)@gGkCCncBi#wZD$3!GTt27&KmGgt9Pnf5$IF zH$(f|GpDFd!(vQ?MVK0e{pMu=RG!aWDwvNr0GNX5T6{h`5?SpI$heszsx-P^0;?0oVA?4p_xAOsMZoC<4epv?{)D zsgE>rZ7;|=YQ0zW0wBs1c$oR=~;LNNUChgT0a*IulWm9Toc%Mzk;j=Y`Dlg1B~GcIZK5om=#38 zXW6!}AJ8Pz)Qe+L?J8j^-kjzJRbzfal0{^Hh7}GGTfmXe9n@*=_QzWIxNy zkq#WWoD3$^Om)lrJag6~-81^T87p!C*GP&;Rx^YmI0d)+6;FAl;dz2ro+N4WQ$Q#BSb)@}a}IsVc|NUm>4)LB%`8)O`o-wk;XSrO@RGxb*RSkjFg zv?$$oWy4a2->&Su#vJ8$8rZkuHpG^Pf2=npMOdd#McJIWo5K&Gm}j=^dC1ZroDGIU zk<*|ob&Uq*j^<=$kC$c#&Tf{9GGLzhD&Iywo5t|s)&Dtcs?@|nd%2LEbN{n=^i2!( z7i|1AQ%i>Y6n{*)o7Ekxnn1jpcwa{s&38r+ujT6cyo&IkCZeJYqExU`+;ZuvrqJ6P zN|^euHqs;{arcf!Eh$8GI8H!~(qMg?@j|%LO}<^-V*363ND%(l;z+c_)yHG1VtneZ zfv($^qZ2hBmw{a00Q3}dhsAN-v4{ffO1p(%IEOl?6maTw()`NB{_S=p=B{%kZJcVc zI*N4auq$QF4R1}36A;JZwDdsB!SvCukp5_7k`Og<@>&KH4>@Cz`x+t1owB(zRN0V> zxa;7*ZTfIrI(#lnkL7}rr;0pg4$y`=TA%g1$(l7%sCx+=dm!~T%*w9K6G`Ne2jtiK zAYVjLIfD)({9v$^E^zsUDC!l;9>p$8U~L6WT2$FrQps5I!=^AsghB(IHX&?A6J39Q;2&;O zUnPLKRG&X@e$O!lBQAdzY5&qxO4$-ocw%KD4@eSt_VRfbcz8~hzjb*f{`Mr4Z2|&_ zz37a)_ZTdaC<()fRqzzZoTTpK!Ra`k_i$55MDoh z29X>vH$x?^f$-a0Hp^}M>k3egd1%MNUo<^fd%AU8;Y?2z#uP+)c@;6z=x>>>FF0B9 z;pe;sEiBhG#N;Qdsm|_Ed+@>$gxI^a5<|?T|9Kx`>?1L$QccpOg@ba6$$;Fa#op(R z*14%&ElQqJh?Ikfz2KXRRp?Znp=rtiby^ie5)jh7GVaiMiNfA~GmCK}#Lb7z=P*vElk+h%e z&20KyIi3YovtF;Fs-jT9isJygE!Fi#r*7Wbp^G%cUyn!qsGMCwDn~fNO5^=j*ZKQc z+q1P@ztZb=BIA$DK#FK@kN6hjl@+7gT5nZqDYU1l6MrI$JmxitgA6hyP8WiQ+ruQd z{4rG*_u|qR^p`%~P}V2nLkAHeZG_Lc)*|zHt!Frd|ICb9*V zVs&DTZaSI*pO*FGJFomx)!3Rw!e~GgQwk9C-{~4*Sp(F{?jLGp)TyL2NgCr1Iyaq{ zGcF6=sBu~d!wpGQ0FV^qGU6t}xR9Tqpun#wCh9%FtE4JW6AqtzRLJ}(>d3SEa)lYl zhXE>tx+4YpNM%l}jF2Bl%h_mxIZZRedazeXC^DBogZ2DV zf|Zh>Q2OLXpm7^n=#-nx-~sh1VS^#U)f51^L(D0q3xOi@n56>TDDJNzg!1YHM6JQQ zq9D^SX2*hm2aL=1C(6rl$~Q+SzGsA{%s3ojYh zR;|8~xy#8+P9I>^ck6eeRacnj)ER0uH;<)4lf~nU*-<>8h9{sgD|i|+**vEMfMz7` znLPL7oy{RaZ=?Bz-$hhdChDp}oxgE;ewppIx$Kyt>EyocLZQM)-;=uR?18X4YeG38`%;$DI;b=nabe|=kaD6Sdo|$mtntAYSd>%hq z-vHVT)|YZ*c(g#!^b{up0Ry|EeR#3_#g1*mhm#>KJVM}lmqywWgdaU`my4k z$q}L(KKtvZLrHgtKew`OcS;q`07r)3#vyq3Qh-K_!TZiCVy>|Xos8iAwbsF7n(01R z!xX4e6x|oAvKGtvr%X86?Bi>OZ9Q7pC z!iDzMEm-JY1DR_M_IC&nNpr6w?c1O63*cz3vxJyjYCWd`z?nWy{xpkb; zfS|F+AU)W`p0a@T^ASlI@iZzw?q05-#Q}_ew$8-|)_o>9HFAZXCvX^lf7Nq?nS1B6 zBG?5JALH=hFNg0%%C!3hk7UR0dS=Y#xCS_tU%by!%&ToO<*jvpq3)F zk}zkE-e1-!_RfjmaXrQ)KW68MTyP8R>_ai}>awP>{zDjAkRP#WnW~;(^;#tTDtHH7 zb+Cv|WHk%uCpjy*`B?5Zz$$~wr$(CZ6`Oj?c~O`ZQDL^GI?+2{h6va__I%+u2a2F zb??2pcYh0|{yN!KEdAGM*Q$2XmTno|cwf)kBu-hQJ^vrujshO6v8XUyy1$i8OiJ`5FU|>c!F0bc^jUTD^iBk ziumTOlT=0JGrLtO-c#1Sz}=f(=*M>@5Sgfu_jyIh56JhTkAw&@9)9*TrGt%*Ce+kA@RrV#;{;YkOJvIMN;EdhJAT|ju| zF(8~g5|>WYZo4niK*ySC6@oFwA?eTWa2}OEa3WkJ3AL)d=^02y|ty*x-9M8zx z$3)DR)nHx;PECJpUpvc^(CW!h=I&Z`e6ms%NA9Dp{#rPx_f@MgE1!!6LCf=5uEO2} zA+IgQ)6)Y_c{@-Q$u5c=o znm?riE9C!Pw*O!E{r^|yc#67|-6rdQs3(wk50R8Ld)C1Ow3uaJ9_OW;s3QZZVo25# z%MuqoQwYDVvWX}X=Pj*Hkc@|3kH{X zS`qy^zl{-BdsEPTriAq(A*=zOH{h2vSFm5k%gRmtFcWU#Yp+3AHbjuyk%^h$mb}D-``wyz zko<93xo)p2zE`NK1>iAeejFY}J5jnDVWoar=%-e5T7T@!=%gyYPI9jcIC(QfE5Hs9 zzI7ua8h7TpBQkd(Ac{#T$t<_o&*@n3PC_mV)FX5H{7$9o)-BvcN2Hp-4v8<5sGRL1 z^7p-XGJ_yO!pVEJkwhyf-mFUc))k|6kIL3HDn#plHnsM>kepE20I*gxhXGX3`KIX6CJKYEf1P1=y!QDt_OX%*+A>4<8zYb7JWWIzZ zd6c=D>?f}y4(>U7#%e*37i<{e|H@yN$*rV0w=%Wa7RTH!;3Q+F(I2??5NOq2&?;Ux zUp6W#r;u&EeTdA1s;N)Q4%i&ljcCk~Q;)&vTtz`7hvcVNsY64+BweL=FVZ$bxuRUT z(34-JR8=mTK~@9@O5&&fyHLso$q8|8FrRKO@d$}{t%8FTdd?8&6X-oy2abNoFrt>V zma;8RAzg{#8L|2o$%Z`DB{Lv+MZ{F#J_pcC9@}~+ z8EspSw)$|R^iX!It@gZ@j#EsL5F6SRbCGJvF%D8kW7RvuI=WH<0Dz8Op)x zmF*@ZMIi~D`!v)<>sV=n2Eu`{DM80AJBOPPk1s0$GOg9EM;o*B$u@UHo`K<`;nubp zlP}%uUV&n=c||LShIK`e?x2n~-^bzn5kk`x2t=9%A__YG`qayTaO!LkwG0|y4*H5u zF!8i76GWE;;5`oa{R(2Zn?$$cmh1IKLbj5MGx2Ls#2!Hzg_f#zUvX$IHWZLlucJl# zOD$>wN8U_)R=Vx8vzepcB802zeO!;o;AeJB9y6p!|A{5?-^>z)wGoYLxZ z&6A0evp#9os~SB2fupZ$p2qW$YnaoqihdC&+!|&BU*=bLQAzc&O%nWqd2GH2RH9Fjr6#$sq?Vj}1NBsK8AtTS9#E2&P7jMkYPPp4LMxE{O@$rp&w_v1D0KPs zpbd-o*27GgboN)&MuyVJu(ORQJMpw!C8^~X)4YNGSOKT}Fr1Q2sH|jEf{4p|+ljF9Un^ zNo`7Ew+P7btXDg{p1g!Z@$x>KI+*T51b53sSMYhH^&$=Tl5ao2tC z)sTf<4F)Qq)@!jOR=;O~OFuzmjo1$IuQs(tm0)(0AM#yo?9M-LZC%Aj2Xt%bBYtN) zfJ;t3MM{8GNKst7M^a2K=P?BfCtHnSq=!l$Qb>YViJvviCeBdOobELGH+ zAe1Cx%8`2y{et}H7s}O8j~eu=u;o3bas>1<_%^YGnIqo&)fj0AAC+Z+l=xaAjl787 zmjMuIyz;M9T_T(6iu8GHHEaVSVQgy^@*DTSbJpoJj zJHf(amGU<78jB^gbbf5Cn77S&aa1B+82-^_$R~WTN+Wd>@ss%tj0Ur95D`1Vxm24$ zF*!lKODJ$!$L`+W0)AB7PRTT@7iBfV|$07Txd$u{j2%se^on_?izG?LDqEY13-cah1 zJ6}%N1Jev0M;Rqhj1^l((Ip9ruf#;maIri&DvU~q;HM=A7VW(CuP!Ot(!1L!xui!M z#>|leg2p+=tjEMk=S0EKH|h!Wm{Ur8+J?2T>eB-?uIEDM?r^fy35R4|xdx42GKtSo zr(e@*ev-B4QHTp99g&I83)U@ZVsZF9k(O&md`Wu+=spiJgM2%NOzSJvwO@~9lD6ah z1zT^+1GQht(I*ngt@I$69%uzzt6)Cn!>z<+iQDINdPmvr>Z_22SZZQ7skBV z#jSTMwYa+t-u`@cC30F%Lo%FZd3OklzypoO^;t3n+3znK5$E?*duG#&B3xXCmz-50 zuZHMyJ&B}WgWcW#B)~Gl?r#4mba%&?DR3G=-AAMB&8hRIBvX=G_LC03Tu3 z;U+V&{(`>};^d4HX84?7j}n7^_e2A2qtN5kz&r1e3zb?f6p_V@WjJz@ADWF1&|4`r z4O$`mIzB^CTy5aTiaxMHi*?6W5VPjbcnsLHWYGGfDl=o@olnc4v{p1#soLnIIZNbQ zcKGs`BJdq=R$~~w6iZE5aq@Ynr_PtskHE}qr$Od!>QtZsui><;vNtQBYdYo8c6RTW zg`g*QFf?_sLdqhiF{S5cv;33>FOn>c-iYY9yXw7be)OU&d5cJUT-Q;&`#kPE1Lnsjubt<~b%B!m#4}Pk;4gVfwT73sq#x`pw|4?hbXqw+k|S z!;vv6F$S2iu{D(09KDgaBwcFsOyjy8deqs6wb@DT!*R-F*8`gJ6E{||(>SH2KROm$ zmf6HwJd$_1tYPSVrM2sXrB^DgZGm;DU*i#orNO5}?L5))M!4ZHW9ir>s}A*QXZmzQ zD}{94kW42(NXPi_!KDso8w9=Bzww#+S(^rSp|XP0ZeXlwN`!fOochj*R}fKNS&RFj z)HSV_K?b2_;W-kmBB4+V^`ioYN~Cjz%hpg>CjU|Yv%SC~|fMG69%{ip6 zVKTxwDJ!r|299VlVH^+LR^w-PcN$EL{xbSz9pI0^S*mi)3v2hh?0x)hcjt7!YXv;` z4t{-JzAp6SJim37J-7kt30!h{-`^h|dOmJ{zwMnJ=zhP7Ec(tHmCNaJ^WA(r?o&v; zwEOf)`ob^uwE~iQ#6G`00iAvh$UHvy+21dhcN~>*EVrGXheICU1<2WaXS`qKZeNFV zG2u(dJRWbqJ-xpUUSa=U4J|-4!KSQ{7M2E`j(j~_BVIOdark+E?cb~(?tToRnA`TQ zTZzrA&*){j`FU>o;`6+py*8F&sN+1=y7|ueZ1R5B?^rQns&^=S*M5@G6+{uN#}SC_ zWcYm2oa$Sd7^c=Wu3cqV*TPS_9Ydv1o)<~((r+{S(RJ!wF$&wOtK zG1EuuJbpjRQKP(LKCSb$e9!mzub-2S>VwXIo_TzW`6s!2@0U&wMLl5fb)Aa&dAv1+ zk$0c+eP4LA`rRR&dwo2D+&wOc^z^NJ%ncuF(7;JxAnxsC=h99i>zv5xKIZa$pRGkb zl*+ZJ=Y9{@^%2@M7SKoYlwF^p;L5X-$mM?Hor8N59^=gI_?|XCp7{SnLbC4e2O^6; zhh)UCjGZ2aY_FY4eAC6ve9!yMUkQbl%Fpdg)4gd~=S|ZQ4sbMow6a7u!W|IWz&C28#njrZO5>6>uF$mjwk>D>CBL0{^=kPw zeGKmLEV7;GP4;`|w^x$%{5OT=7t+0CJr-3BD4&h+8mfnUkd5B(7>f~69S~8Y!rL>b zOWYE#M(haU!%g%;=lARZsX-i3Mwwil>+rf!%k^M`;tNAtyKVCy-~Awsz5(tHvMx$I z(MrKjrw1EOIgFzeKSi#HgSW9~K6Zr1lY<-a4xXakI)U(PX40|8Sb0j` z>P_3~Az--NPEO?AK`+e>CDJNMgbaU=3r0!ronq(A}>q^0G;tct-?R-_{4jeli)U+nkf?Dfc~ z77?%bqdk#yznN@NDNnwxJyD0kCkY=vcPgWN%NzPc$yl(w8nR23!bq%D|&4P!+gkB+K z%G7c-S~=hbOzE?Das1A#`nR}|x%=^#s0hz;`;Zu+@l)W3^1$PRK4{G(K8DHf$7=ehh{k9c!i$=Or_fd;-OXiFA8@#Ox@GHmc(lkaJP$mco6CP{ zEPeWn%BLa*SV0l?FC+vE=nlV4-Hv` z@KS$KQ!>ME{CR|TUad#WfSuu_N6PfZKo2ziEuej~q^rEP4eRg;*jEnS$(pLE9z)@!yiZj34Aba7vmWqyu`qY)0O*WuR?Xfk5?(tq7F zrVgB}ypH|z0X7XR-U$Ivi_&D)23lEif5xgZg;1N$48Tx|QK}DBLO~$m6f-6Z4_(_| zkaS`j_i(ya`HVps2xF0@NbVfIzh<~{zw)Ejfkd2$gn5HpGx5xK4g3C7#q-gBo3Ot1 z-m8-*dC?f1PMZ)oh*sBRa1ER;o7}#~4XnevoPz4J=3uv3P7dv5VYPLy6tQ*o zI13D77v|j%D4U^Ysa0Y?5|AyQULxW#2t9)!aFx$Ug-~EQNgFg_&Fj;Yv(){!FV+Sf zEqnJ=JJp#`({Cp}a$#Dg>Wdts?`Cm{T}_(K4|&zjtZT~nU?O`qSw^6+m&Y3cOV58$ z#A;AfYsUX^khcPnkMst7w1`upHjtUV&VtKqjSLP|Ol{Vyh-dy|Z#%$3`I{n4^b>ot zpD|ULm>#xx84*DdA{2dV1$u!g2A*fZ+UyE89L%hOxv$p1ME{rrmX2aFU@Z|zH95~5 zcIGt$88FEd#b&OZVu@&47>Pf%R*{>F&|JReiRPnaa=2^eDu27!;Ib8y(~My~VQF4A~?tOxaNQUzlypDUf35nT#0t zJ{Tv{80~5!8Xa$jK}kt!x{dK6{uSOtlgTrmxz#Q9UppE`B8{ZAILpWOxxln=r>l^k z&OTC0v|2FAjs7*{+f-_(I}x(0ilI)_%_k3!o*+QaJ91`YxQm<7Ivt5t@QtHPq4&lm zCnpw+57y{@vz5zAP0^Ae z5JRh;~uk(1;f1V*5~YVC^V39^49A~C3BjIT}nKy`vLR-_X(k|vIxTo@PbGc0~P z5uiR<%JK-94n!>A$GHr)B|iP`I;7N%#i%g^kae9Vy|7}n!DJ9T8e%LMr|A}tNgtUnh*fCt6Z7%Wu@lq}gZ;h7 zc-6QVYuk!>(83l#JbLk4T6*zNYgCi=RY6Y*-u_ zi|%I~lr%;^_hv*keo0M)e<`M> zTI`pejS9!5lQev>ij!5#eADQdAJle5N&Cqq-HBhM zBq+Ya$Q4;6K7K*y&_>ES_uFPltlVH&<8X zl?6#XSaZEgUmoY^*2COSiGLDXp|*O~>NU~;Do;_emkb}+I({2q+2}QNDG;{@CuJ9w zP>*1@dyfwKRU38$FT%*(Sx=&0m(gaj-F=*OL~L40x3(0_O;F%+bsGEOXS|bC>Y8Mh z0CITwoPi$SSO{fK#nsKsq}b14z7!Cbbau#hKtSpL^?;3Bo_YnW5aD-M=>__k;Y}Bo zzdp1=ycG#FRuo(=pkw>8I@aulPNnY^^cH{f8-MCyd=IIN)L4g|_XYi0$stZ?&Fel$ zK_GiU{4+X$aASwwday#M9KaOa0|dxalg#laobR;0x)!yjJvPM34B&TQ3B?yteMq(u zSi@kp6QOXgPAFaRpBoK3)thjKYmP1m{u^fAFUjy4z7>b&;8I330(yaL>9N~(J z!j|%c(sen}9M4h{;6RKQ8kynjiTS=!wWvoumAy!vQnYqaFeHD7H8*`Ush4!UWg+V? zmw3U068k;A{_2UqSds30P zv7~xa4O%{vDY4?!o!_^S*1GOZIJ9iJYau0?8z*(Es8`_(iJILV$yIaOAdVL;j`5*ZFeiKwvzBsG0lSJPFs0 zXoYwXZw(I0aEG%%I~DxO9EVllqsea`EYaDU_PZpB3x<7SBlwDvN6#+)B3Eo-g?kFuh5z2dSW{A142P%%|z~j%f9j#Q{9} z^&Ph4_jDpy39;e}tZi;tjNX;)^tksaP+5j}ORSjU?OK!FuX2}wY zyx+f2fZtWYh>zq(&3rTrqsOjjkA|2?856{7;g8XyPLtVOl|-R*3$CekA;u@le$ygh zy{S|8D+r08?z^|g*!D$r=-j4j(+TH6DI6Bn-+^VvX|gs;?cKSnKTrZXv1*)#Uc5gJ zCclA)Rf#Rvg0JpLAZi<3S?YX3&gB%&3*o(-h zF7B)&mGR*vl>0-hW*aoU6)PJJ(;aI$UBAO8FKYX}$YJkfbD~A4o>0T6 zRmC*U!B?{sE$7Rz;&(}?UD7O&P)3<#y@&DdxKGYej0o4qsG})@Aa6fl9^53UpY0FY zI<@Vyu9 zWR0%@iMUc$o`z02vI9iqaUQlccQDUK4^FH>AS{Yy26>!v@X0AG3)=NLNX2TH%8?(hKHg9CR@ zfC|KnWOU-Gv)#lYZ;p?iE!LneV+Fs?FZmIkyjUKuv1;Z*&?aUa?W=*KBg=mtp=E7* zWo>r_C4#jv4Cs7H#_V+>)*;lsFZ3ZX;f(k31meLmvlMU&u4whG%77vdGN4*AN}qmp8a@)^TwwzlgVLMlG}$&=SQnuHn)22GF1_1$$Q?>IFx>)R!a*(Hh^FO^cuN%eHd8Db*a^WyGYB~lnTUjAxfO=6FU(fgD zu2=Xvbnq(KRg0DF7W06xARD@W`y81Z$~&~~@cLN?H-f`6jTw&+G$WLBOm|dps(KAl z-1sn*&XsC@3)(U!8-K_Seg~e@o${K&EuPeQs-eJEM1q0u^OuwB;|JCVAvQf+1S0FVYmbUtJx;wt-NqF>uqO$CvGEcn z*s{h&hXzE?oA_Q zh;Kxaaan2{&!DGD3boQ}0mhcUjR>h-9p?)rY<6D9+5GTObFMvW7fjY7^7oBd-v+sia@BD9z?vOpDp>>Hbdh8TY>qMO>w z=DyLbA{GZ3Z&ZBN8;RXp#a?>K*3(fA6+lbEnjOo;EzQActj2#NdCL5`c(Iri3YIsD z)0<=9`YdEB?IobLLXw%qRIgcnN2AiVjVD{$nZ0DTpbP#h9A3DFFBbrFvM{oLoW0c= zG0dV!WL&t0PYUmI=Q3%5u{A3gI$eIp1-$Gc2=e^!lC4u^JSPOQ3shmH1BzYNvMX_2 zKPNzcGCGp+r1G|mA+7qT^=xBEUgJR!7`L(~t}Ywp)c#2YTDWS`U#+eGVmK?;LXqfX zdsBfHtyYk8J8ITI6&<sr-?dbeH9y5?XqB3}!PNs?* z3<{}^OPr#1!2Z$?PRspX;A77eP6*yw2BQAU)$QQJWFP6cDP)$C$ohUH~0BT&L>38 zImq9o0;a+|p|aGqDLIAb&_A>C>1$r`O_5yLgUl}`|KHJ`EP zeUAi;N`FAq6sVVJ|BtWsG zdMj0SPQR>ZK0S`0M z#YtZK?1PiaH~Jx!$N`}U%kgkY>g3@%SMsE&7PM2*R}uKH_Mo+UUsU!Q?OL~ezEyk( zZoE0^!MaxaAGv`*u6N^j@dY{38%!Q0+Pm=*{+u0Yx>t}Ff0j=pqtqt-%uy=ngw8L@ zNk4_b@@50SEVX|L%RwV~C!%G>`@Bq=A`gc7zopT_>^)f+&gFJf!y-ak6NR)K8AIBM zyq&#>DRaB~0`6Et%^ zEVdM^qRxO6A514cH7Chs8bu8U1k#37O|H=3^DKoSAdi!lxv$%hQmczDU zo1`*Ys5{7_hDP+aB^Gw(Pltvw)_^yLv52kkr)&YGU_fWv-#+La915(P;%)1gE>J4I z9W#S*1}**Tst0A3dL`jzh$|BfD|yp}DlAbE2OZN4zUafXB?nY-BqiP zlyCK)@OHx?+WPL$*=AC!s;Q!-TpY55leCg01&;PRt*R;IB;ht^y7Hq z0Jle{K;5`_Pj}EN_;^OIh1!e$(T1p7n`+Kt#Q28w+Bo&-d{}o z5Od#OxCc*=c^RkxZ9eXi;0PTrVD{@H?C3T{Q>;%dKJx=)AS=8g{$(9Dm$sSh8^hNv z^&M9TEgSjwt7ojP?OOxVKAwgupfBtB_^z%UFTwb(bzykt29RE>KRbRlFaKk6t#p62 z8Ueus(rbyM$dC9E4|jH&fmf~$_o*%jrBX<#A_#PyW2-P#$lI{1H0=WQg6HZ01=z+& zhtn?|C!dcNvbg~3hzo$tYbBo7EmfByv7rp(IKV| z_P$We>zweXV=;^tkT2zPx=-$6k=)MCsDqtOE4VzAa0bW|)4@%rjg@xem*aPe+r1{* zfTkpaRHna2gy}cMJctc zgiLbiNajnDsth!hWhzfp#c#~oyT4TTREZ?7>fH_q+O zBb<&b?V<>AhIMIa==YY9x1kEp8-1@UB#^Jw%`RB3jc0(h7uW=T70qSD4s-!eu=!1R zckXT~%9~@Lp6nScVFJ(d=@C*c*&_(hwacAXYBzD3m(JVv0ISza1ETO)j@P4OxZE2E zQ)#nbVD%N~jqR0Esl%4B+&C*x9zy)ArWifKB}Xp?;r8+zv=6Z9EN1~s?Ayz{7%BmL zUepM)_6WVfDoPJ-E6~n}*P{u69>Py=dQf5`tEUX`s|*OM3<5rIgG-#(cn2ts+43f2 zgnUi1L=F*8uEd zWbgm;|6vm!{pp$6xra|Ec)4DRX2j7z!7TXMas2iBa>O3zhsc~=`JK5=e@3p)&AwZP z9%y{tYEt)OT{^E%pDhA}avu;CraUWBF~HS;$7lwa+kv*8?>68L#vA_t<+gRj^6KE> z=XxYB29b$NUwQ=3pm-}ns|T(&O3}@V!$SW3?4#?wc-9ne^P)-H@?ws(F6mFb=Iz4W zhc&qf6rarb3BIJO8?Pht7Xxiw+29&HVc-QG#a~+D>L-ckTPrFhQI`aG+IU(lOh9+> zKXoDaob9ImXG80Awx9Z+4ZhFWUMjv%fQX|X##q)TN9c(ztR6siuT74Q(7yfzy32Xb zgI^Cw9&kB30hD9&1_I}ri%I(3x`H|0+<#6rD0!O3klG|9PYy=<2LfXY3cjkoKa zi5+4N*!0*PFSlG>b`nB2+^LCu^b7)T{*+P{*p(6?^`Ab&SEYE&^-{4%M>tG&o}U4% zKC@A(b2?&?+YP$caDv>mn+m+d0aS(LXI;p?ZHwZ66~yC>KMTvhP_n#U_hj@l;osB1 zxa+qdG{Sih?;_GUOJA@CBVBP+1p$MeUf~O_h#O>gJ#W`UM)A$c^N{xD=S&861V2|YpnNC?&pTib zb5@Yqd|;i)oM1sJP9{$vteY?oH1TsS*T@@i%h5~Hd+Xl<8Z^yoI=nXg<$SjmcG5@7 z`*TW0PJZBt-U^cMu?{&|dri3S*ozPk&Xb%M(UTAk-V^jK@b(${ke533GNSn@0E>wh z{uCFEAKSDuLl@!h2&(ZXSUvB^|C3|bEK@gcP9U!P@mA`mX|MG)7&YSBO1(rBb98GB zn!)exjsF=J-TW7qYeQy;xu75R{&Zo=Ur2hgr{MqOYQso2E(Cf!ectB7nu}KK7GSLn zF)43NfRsAfR!cGD;UCS%F5zPl_axBZ{KX!Brbu2#+zg6mAB-oB_Zi;3Y|Emop@Al{ z=RfpEb2NQxEX#8zd4DiZ5(y^4x+h{!4$kAHYm0wBV;!1zBbZrwop1OgB9LDYPgN2Y zvoM?(+@%i9SPEj~0G}7})}yRj4Xj(XRuTq%5gLGN4S4r9toJ;WpL;B!)Ac<5q_Y#IA)DA3-BJ!i5m`Fm2w#Yw%IT7V~OR@ zRBx7v6s-q9PG{E)@}Z0cqwj6wVE>Ut@cdQ_xEM%<@r2e{-LS=gMut?8m&dVy6hQ@) z7Va7#o}KY$&s?<#0#_?-Zz8jbB{gjf97BMHghP;VA4CX(1}Q0gC>KW;`XYGV=zlNK z(J>(EN2^|KkIns@)yF_R`=lii6)zebN^uN;(4=GYOkFcKGaWTE`=eBUn zUj$u!CN-qgu-r%%t|?BKaM#|$Ecb*+A_s`a14AN+viAvF91L3$OxH)7*Gq*J)6iIy zc@{zI$!N*(H09$Jm<$I5Hc4e&rRmtW%(u>(?IBuXPm7~wy890RT#tdMfsy9Gp zEayo2-3Lx_m(^>@e(#cv?JgSCfdA8O@CbEil=tqnXU!I1JqsRt06O3K)zCpHTOU zV{-VY^W&#`0cTj*8S(J;&qbvF1X@5O?-C=4lfgAa2}?se%l8WhN2u>5LhoJb_6vWF zqyI)e=Ij3uV{h^)8vH`u!$_w~aySL2;^tLZ&M?Z73amC%BHv@Wj-c7^E(ybC##Hj` zv$h#u-V5hZY!mAVlWJr5j9WaL8F}sBaQsR-sw7d(w?Sq9sx- zG7}LkGHZc9a}RPQVe}4OPoTFzgPs4meSB*#WjRaImBI2{>LXun6G_tnxO-2Cc%?4o z$YJaG%>DL<%L0amI(dmM|V zEuIpL4?%KUH=eV2reY*sgd5q?)l zg`c~Qb%xmkkYo+c2WG@;b^3Ku?Mtz~kXG^c88%_U>B8Ib^J~J&h#lmxq2l~hCxcgk z_MlxlN~VzV1+uDb`HVs6c+1D|`@_idr%--!y^$F`!=v%@4g5`c419%A^5{7P_1?lB z11on=TKNnsvk|&pq~pq*4g7AoXqrFq|2kumYLUGJ&lnT^>;hkV(-fhsE z&tT(6g%bzC(pQ6ARB4L8L})k9I|RreITo8dpwh&D)0Rjm1K07HXK)MRtnl9M(pfiw zMI|w7?nlvU7O>3QH3h?ic^T5$_Fkq#Od26cXpR`4b6yYZ=3asjHS*maffX|YAbZ%W zvq@cLDV^HGmM48Y*G4c7rI)DlN`)Ou>yW3W^5bPPgz^>UZ(G;v6b$8XBLL7D@)1Sr zr7wZ13#=^um|j9E!n zJANJw@ONP|BsK=ajd}7t0+(kJR%At|#MPz?y~Jt#h*`+4@3D6NB#N zwYGx%Y*H4Zy5#To2Zv@RE{*56 z(L6GCe5?f!r}$MxUkleROF463#w)&tuIH+o#rW1Y2iuY2FAcj6W8m|Gt8i@c=F`M% zW1A@3Tx#*hz)vLgk-nX(>eNeRV+vufX&^B(f5~?I@#%T==-d#IH0uQ8NkOIZIz2ps zf7U~hKI+kGa>VXgFnEmUg)TChv0gCUi1DBCM`@w)nMv%+TqBgP75}XEq@wb~Hahe* z-es+v2x8)T^sJb2Kg7a$mL91o$K77W-!#hDY9%me{*pE)v z#g^x}exoqD_P7bF8eOjlwCtgHbL3l-@ze1z4gl7}i$NPc@o_&4zP=cb?Ysfa&<%b? znq3K|?~5y6$XH?ZC}g9&vTZ7uX8-D75I04ia?xsB9>YRDPmXTp`w_~m-vd4Zq!2#) zDzkqG(-Is7ls9_{(=OX_=noE@8d)*(9^M?X(|^_gChhL2(|h>hy zj4@V-%M!=454(70U(^byGTbtwZ0}cRlYPH^ARsqu=;y+lDSRwJ^V+YJ%v7vEjEv21!IcsnOd ziPs=6W}U$~Iq8A8aZ!X+Rva6)7W@U1~a3K zyUVn^E6W{z^M|rHOi>B@35^a^y?0nHe=cwhJTx}X;&Mwd0G_?Q8aic6EpiAUDpTPW zHrzL*G{6mnj)v!j{LNd}xLL~g!VW*zQ^MwfHYf1JLB+(t95=0X(+Tjy^} zYVk#Yd9a5JJeVUzAK#uj4ijn2>~v>-Xcr3__isNG?8m}4PC^zk<$-jEv)qHB=TDVL2c6S6x}g5BOI?n zvAhQ>c9piGISpN=RH6%sI=@BPalg*PBM)GHqle-msxmTNx8&%9XHS7ba1?+mprZ&0 zt<X;o8Y6}zE+$p#m(%Qmo*^3ujdbqV>}K;sPD zJ=SRm++HtpTt4MbMFHN1VP9{m+!?Pc*5+*bO~vV^1A#go+SJbq(o~bS=HWJ#Sp&kU zEg)lhX z!WiIfvUHIh2Rxtr7r%2PB2`EDx^c~!f{Zs!t5NE=(7^jM3rSO&)PqJ^@q25}f{ZQn z0(a#1AVum_0dlvm8e>Kb&2h^TN^s{K$+ahD(#B~d^2VGJV^&k>Bi3Ijm;5@(kY6fJ zm)CKAHXZMY*`M1mT<-vDbhTA;tTmBQ>+b^6HRuykQSjxjz?IanN!MBiR~883`gaqI zgipU=)h1)~Wse-Up`3?#D;KWXfu)m9I#JW@jms_n=hFGIjz|IKm6yNBH$Mc&S^1VA z75n{)Rbe^K1|fzh|8_W_Rmokx$r&JwcPPI}Ic`s@(C2}{gSKXWv>RuWmNXX&^F@Q0 z^wOWVnH~@$df*5Z2a=Pz)2290Bi3njx$B?)yt7A8St z8fR`t5-EW2<0*G*aaL?GrG-0?k147O*^^b$z|Sx87YEo_gQ@w%93D4RqU{Gw`zzo| z@-7Lq|C}%qBDfFF$MLV!p(ChBm^juAt?2d-!Y)tE2Dm0ymKKT@AvoXea#A`WSaZH9 z4xCRSvld)Ww}~$Bpo6EV7pgn7aQ-=8H&SP0^IH&7=Op-4n&X4r8L~(b(VNk&L9NFu z*X^sQKEC!20Fb5ScEJxyb9s>#J!^Lft+Rk$-oa^}4yu9xC-B%EgONEr_=`BHBUXp@kFa!{^V!C!G`>Y+J4pz2lB zUbep?LcE9iqjkU-(zaw%ql}f8WO~(TH`RIv&C`82Trj1`uV^m9JzAw`=Iq>8=k z|4IR4Qm5|kDC|G~TZx&Mm#R%$ zTRXSM1qZGQ+>@HM=2cnN7*wMz3aP{25orLqfMo=9wxOsXVXBO~i#;b^1o6yR%6LN# zX?ZCMb9%pHn?<1~qfL=gwuZ#EwzJE7d|S_Uzao(hV@;R^70pR`s%2ecq~BMwE*!dL zAV$Owuh}1jTzG*y}2tA@01inZzo2lxdrE_>lis#Y1HgKYG5jr7+gH~_D-1q%MLJExu zoYW;S8*r!2QcP43ah~wRwZdB#qr&@I_~pqsAHBZ=GFWcI&QJo_qV0Durkw_MXN(H| zH)^N-lhCnWHa#3!*m_;ypDn=3g(w!Cqs1bt#_j>45D!My#S}4<7wNa)c!z#d0Rs~@>y3$FyAW5_l zEvF-vTpep(oI&NFzhQqW?1Tvn_L2Uv0z!+?X&}==Wp&GXh*7-}Nweo~#=b89UC40@ z4YUQkBE-J#9t^)#y}Cg?z?Qzw(0w7Z`ezxrBDIopAiT!(@Y7_WN6F0bSp5K5(djV_ zZtL9GdH5oxWZj51^4!0WeNG+ZdC|(IqvzaO)6Q>c4;9RYtpfEmc0*QWceuZCwPhm9 zfecqM6>+%v4BpqcOVReGGS>7;s&8Dp^?1-?b=6xzjv#sRp(2Xxaw{Rpu4Yvo=xXDI6IB}JR ztleh*`kUkf2ti~5=EuJq(VKL_UeY;`SURkNEUk7EE37eAial+KNSe#VKPwR#zza3A zKbByCT>uuvd*d4i6LNbjOiVip;h5kNx6+ZoT-7{(*x+9Wc{Am`M``ED9o(;IZnGG0NF#Bs}2b|FH$8fZm`Rklhqy-1$ zO}vul;|9EL;Tx0JpPqZ!Md?RVraWS z(MZj!$VZ^2!Xa)%SL3(>*V=@xKn`I(hGr)5G22U*r(4%5nJ z1Ec3^17`Qtu4)-`Ls3Ok=#zl>_a&F@Rh4C;_F8AuVp+>gAwPe%Ob8AVxY07`2m|_ zpYX2}Ujgy>A&Rs*|k6H``y?IJ2( z0(UV+_BsygTn#G`J|&I1oOCl6gku@ystGf8TONGnc(98gzF6B8CZd)*eA&^ z%vOnU`aemyV~JXwwPS(WVao!4&5yiI_L=|7%phR_K~DVJjl@}zXT57z!*dYM?;W#zw zykn%&Kip`wAu;i43jQaKBC2!#oXl6jcy&}~NuEmWk>-tWEqS&Y zRL7mWH3NNaq_~T^keHQjvFsA)jt7RUl@Vvto5%Og_E#;&QRdjgIlJsE2necnj?6ek zM!UR9s;=TQWCeS?GJk=x6J%CLou|kCmM+3~cv@zu-l&ESwTg;*i&Bgjb(;t=x@u+z zbo@O{#-niNZe*|L9DS6Glj|z}gGN;=@N3Z|vL*Vb6HRtY2BK^vSVi>Eu_wQ_(6JEy zb++(^jy)CmlG!Yqz2?%HH+ySW=syqT^;{WP#@1>fyZV>?5a_GDFl(S*Yz?EC(sH>Gp zCt$kWv98ylhAcB_%Fjk+7GxVg$lcu}d1rExW?#utw<4se6)1?*dLWX`vYct~b|njG zUeLeze6yOdVBjU2iy31QT|pii2%IE*+lyzjWSES=c4W`M+E(o>+BJx&_Ry8sa3wx+ zCBAYc{_+b;ZJDXxe8W=rth_97-%R{(mUv*5XNiXvPyp4DnR?He`pB2rnfxtFJT?=* zb0vQJ$eGod`Ylv@V&(nLo$5?}z!Fc*#BEpNeHaF79Cn7+vIJAqnLYvX4~`Q2Mop9I=I-QVGGd7Z{kn;b z8%KR6JT?OtbTx$0{gewoXH?DrAcn}1o=@X(_U?Q_qLS;|1&UxY@`gVnN`ubNSLtlN z=w@$|**W+@qCyLAIY4&kT>sK}9%A_g6KxX@`02dEHqz?#2+mv+apDQ0mih9WgNhh3 z`7)4w$Nd$ZyDtFDkDn~601WbC1ymr`_UPp+iz@?R{TR>QsJAZXfQ^#(Hq`;0hSKyf z8!vAs#Y8%e=U*Cx38VcNfF*nF41i991JgDDu3c%gZC8Q(!tNLsGDsu_1N~(asVCQq8%Tcez!IIP z%9pIjcGP;MY%(G3m0McEjn?cM0Kv-_ly1$(=`cZOT)8D?qJK*rOWaP)L3Y-6ULX}mR!BB-68Smu@(&N#P^&Y9 z(UU{Q9L^F@xk6H%CIo`e;MF%^DCC{J4}HXn5-G3d4|@G~rB|C{u1T`)4N+Bc-Ps|_ zVH8iIP(sNlZ4m7-(GmE4awjKDZrAiuum@|BSPz;gqZ71aV*9a;cZ6zIYYp#+kz~9I zKPCl8_i~B2a4ox_B0hioxc`^-oLWDOaq=LZbIAlVS^CEpm=(^JOuIla+V1rmv9j;|u$G zl3maUhYJQKW{ZVc8x0}S!Cmy-FW`dwU~s}v0YH(wU2=q3G*s4J85*BZRSyQS6h?;S zF{^{?j^`R|mU-u%L$U1E;0yi=e?{H(iX=SDVG65LfGG-cDLncv+LesoX}S_Wxt)RC z%dwEc8;_$Cx=MWL_jgnI|95Q?LM$E;VW1F2{=$*bkF6 zYIvy!M^Y_1i)!#eyf^%n2}`VoZ#1{i{;JOZzTAD)h{V5JueLl3o2OHz)d=@Ng{v%} zL74s`{;z6cfx}W&-XhuvBm7&fH8M0W;!%t-1q#~XTIhlt@FQgx0z!)pa^`}8grCrQ zsl_-~EiRZ{UClu`$`Q>5+n?XmpQ=AprB~<~%U``;P-vxIwTgOGji5EwQlFspP7J@v zp&ZqJviPF1As)=KTeh5Iz^E}>N5O%E&0=yRTV%9V=3kkVyBva0?&0>=329`Xd~duX*LRCShL` z4DcpxMKAoqSkyxDq?c}dc+^-S%xJ;6k7NE6^9)rno?9Y{CYG)qSIW=_2mLxKDw^z7 zboFkaD(dVdpvFWi7!G|~d^R zQ&o?K8{H9ew`?v-1C3wmlm19j))z)yze%U5?LD-SD<~AKo%C!uT+Mk2#kSOHQgGec z-`Z7!2a7dd@RLU(HnWu>$XPNNOU}}3qRP<2Psp~d7fasT);^cPyl$xo&?N{|HF=sj z4A`QOL9GTKpUhqZEDnvL9y5RoTwFt38=7OIpWr5t<(2R)v${U zsbF)uoZrX_<${de-12PG1Xod1i-nv8gHDvNm(s~+@gH>)$XZ~m**#e`JXxqoM_Lc){Zq` zSV&Ouj0^N-mfj`^3eFG-PqTo))Nzy<+$Q@fBTwoa?l|iibzYx28CAQ#$t(+O|HUFs zuxRtCtY=u*>KLaQSdXOY&(fP{Uk&G2;~S_Q3_k18Ipz%1ZRxbH#3W=AuDyh2Vp*3~_ ziYj8o&A@H&7T{K$9ge(fNdAVf7b5msVqPT)AATl&9r29CPoO#XJGKi3E#|UKud=aR zJ@k1;6@EfJqSErOZv0DNch0=ZG!v@Lv3VWjHMkL5p8Ke#&(~)XXciem^;Gx#|`1E*+1-j|7btUVjKO5onx`#Mr`Jo?8wuw#guG9)rC3 zOoGhBPVkvf?2?$vZc(DyWv=1!j^F6RQ1ZW*X|fo9hv z$|_Or9$d$~$SvtB!SHY;7;?&RThDCb@ImftyRhO$h-XDX>m_zAvgr}o!5|gVcqP8^ zhBllVWEx@%s}ekKWkcM<*eSbMhpWMSBv)h}&-sQ1&KsszCV~;Wz#xkGvV}Dom10h- zs@3ytTG`CfbLUe`_54_~dmPV2T??g$l0KS)UerNe{bstz6-LW=toN2xS7+u`*#cP7BuwFf?F$Sc!B|hCR`d0LD zr{LS43%)%l__kf}?b~k)K7RLI;m4w{-xPfN?}Bf?JgV6=hlh(I2p)P1$D)^0I2JA! zE}89bAj|3Gm&crnrrDeVx8qJ}&Q`X?4dlif=a{U#BC{Yy6W##n~215sQy%vi=WPG?bl zI$i?zkW{#pw>ZNhc;1S{*CuHgS;v+HD5LR=K$yF`5sx_tN@%W0GKaX5>4Za+&TQPi zAbvMPNgx3&Xf|37>6rH7CT8%&;CBuEnNwY{-8alQNs>{HECMgdIct2yk`Rz=2_Lih zf(o;K4#yd*96FtR09ei}Fr%o|jPkQ(xgk!;vDb|BQ)P4I51+DlW;#4#d`Y20J|PYikn4US+cc#{j5~=I~9* z7E`ztB59NyT?Dgygd+(hWkWRomgw)#W|XrJ5Y2p+0Go=^1@-71pgv||#;A-3*h8Am zGw}7srvAd&pj<3x%Lz^P>+~&aXG(Dzr(w64wv1{=MreRd6X12Jl!n6k3#kE&0;Z~pY7}{ zhWn?@YbHi6FPmw$lMHX;y`#OI|ClGk?ddFK%=yE1Vr-QxYQmZSjB;!7_zFBO`JoS@ zb?H!JIYvR-E?=pJao^A!BcV9y#diCEdjxFdqT^I5P+;9)7yNcPbDm;Eo2^0xWexMV zEk-$g`YbnvB!J=`%-8=Xqz(2zp#8jd99`i`bSAR~Q?&d5xSdpF$%X;J`5~ zU(ZZ6v8SZ9+Iq{C8@j}guKvP|_NfC$ew847G$k$pP|Rd>=W8WWY5{?CDB52kh5UhE z!Ja@etgV3RLz=bY@gI10;TeO8tw6wLfCUFmRWOi;n-^(RYSA`KIhyn=v~Kqot@>KM zRuK4M)j@Wl!m-7y=Q#SyEL%?VMb3qyB2?*pdRf$`aF{UAPcGok)&uI}W`Lpy#~Xuc z#|IVv{HOwXRNx+-8Y&Z*=9*tg=GSU5c~X9az&TmPuPTEQzYs>H-62Y=0v^xeH;HP; zy~HcsD!M8`jFPLE?NS4&)W2m@n0lZzpZOu+44>eBc*}<14d+by$I}50Q8iJKX~0 znF#c5x;!lh#RAfyf}|3N0)!(M@V?OpqmkN|4R&TYj^|~)vGCi4LTe&7u)USpl&Aeb z?&asDYXN6Fek-b&ii)Hdq?_$D7bJ@GNappY>*y&JCgs zuUI|nU?F_uoggTf&=`k4R4&N!m9+p9T2H^of~5^-!-~Y|z#w5!MLU06(IZ{2Yt^Z? znIWizh=Oy>qMlc^syqPava%ux>{zTIkh#(wM4{YOTvYR8vbf1~4_!F?aqGBevl7)- zrBu~|N-9#*Ku6-Lr%2lo5ZNaA&8Dw7$+gdhaI-K%iz)@Picf#MZBo&SZL1)Uc!R9NG+KGBxcH9PQ2A-ZH)-Ftun!@zjyyBdf& zJ(gE9+3^l;1^da%=y(#`C0uK()ThY?&Ljgh`qAcF0iH$qtfRustgCi$SG zNGpLn4Cl7OhnR80EyM6DGWa4e>)3hyrzcl7@1hG;Mdj|BL`ocYYeX$|k_b1o23iUO zb+G{$Q1y^G5~}q-$Rd^>`c!PGFa2&F3hc%5VwuK4{S|CV#IK@?RRJ^X3~E6;)$~@C zTefvoIXCkAq0W7rk`)#)z#XR*;d6dQ(Yzj2nJkRsK-LL3wab&NTh=kM;`+oy;guQZ zVpmxgw65O7fQ3c2k;TDv#2=T2{AOvHgeZ4-lZwdgj!(nvcDjU9Uv7z5$^@>D^P6n8 zfLjke-(hddmSx9RM{IzAsB2iK3_)d`%7kBu?n~*ds^EBOP3;_Xk6$IwP91I!i}BrL|KHcz-?TRa1fq9U_IH z`TFc`6{B2iXr$d$n>lKhyG!yG!*<)K!Jir8|(b#%M zN(T_mg|hComJukfmApX3m9OaqDp6Y5PQHngiWar!9KJXm^^$SZAI zRhBz;sFJaVY9)3ixqfhSJ6Dam{Yo=Y;WP3>W0GG30osH&Q7{fT@w-r7e4ABqu&z}c zN8Gl_5Cx=|eRW{>jR+aAVA6cwn`^oyYAWdy1FO)tePt}Ur|6ipON}gWg|89N6}8_U0>Bs zz2L6t+hbB`%!|lK__6;$ft)=QWL{3H^Tj3|#;HjcdfqVIPD&w$c>o0gTLeWc65Fhz zoGW{sdI3^%uur+_fL<#OpXjo1U-<~Fo{>8*Rd^=a`6N7g7jZfcoa9FJ{sAgF!Rfd_ z(zP>pGRK1L@*jic87!em+|;Q|5sJydb^o=D=c)gT^TZ0wbgdn#gcvRU+vSLc9|#*J z^(Zi!+`7m?)eoW17pxG_ifglZeuwIAsGV7r|6aqfmvnNyT@v4Jmf%H9tUZPQx988~ z^)EU308|>@h1m~26j=TIN^_Sr$jtp?0#V*`*h0#Hw+kP?knEPY>9A6GjYei=nkS*h zO;_BjQ2@6?=0s8|9xoaSaanjJ{V$ zTGyeY(ja>YDg%>QJ_-8E`}u+Lr6lcjbF7%2lFoqT>~=itzeA#__Uu(uwIA z+%Nq@HXb=IgCl>RGbS)OKBCQz?^_Ls!u7{!1%*A&i;$@7nq!tG#R-(E81;MCTjz0< z1WA$(Y^3LQghAkYBcS83&8hMyd2sN6N&@beEjLK>h5^=LR_fVSYo zK$-uxM?F^Iq;sHZF!TtC=vcv)q@aHl&tX`53Y367nfV^YxBo4=#>_;7XHRXn_<{_KO!Ci@B}kQGd+6*`F>^=l^_OJrGN0qdpu ztG0G}8}h89>aPR~WvfkDOa}P*M`m<2EYjO3rF>?)@e^N&g=4q zo#*)RP2T@l&$kL&>iOm5U&~}NR28T$&13+$j-&wS1Nod~c`svcQg0OK*Nb_jW3Pzk zQ8w7W@`+x!A<_DA*K<6Oj%C*0%&K2bXZ8#Wg5R$`U1KGbhzZh*R$3ARa8)Ki1*`*A zIBYE`x#qtQ`{tbiLc)ShEdx zFDNl~3;iP6+>kT(D_9G(sXX3^r695P1Fns{P-o0MewRWCV>sF3=1ubxG$Lz6o+w}& zbTflK7wc=PXfk{ zl&~*UEX?jcoLE-MaZs@g9gaY4pX>Z>K7Y+I;p4D@t0mPTT*E=O7=2HYccC_~imI6!*&yp;#6_zEViC`7v3<(tQ$qd#4^x{LMJlhMb59FsQ*L7fJ4# zU$|I3W()ogY`wo=%e{ZOQkH1LA75KTr5u2s^_I26#I824>I8KI+bKLa6>J}=Dr$xC z6m_vKiH`>2rNBus-%#Scd1VOO|9I64Qu5`rdO!Y<@hp`5A>4UhH!j>2uq<>g>B6m? zg%d5z*#J*&#~&^eafms`k#(PNU7TJv%4_jk&Si7j@z3*#Z%W5`DLXh#;o2?1nlIT> zRog0AXq_IaB_fQ3)-Mb=wYiX}>TLl)+t=0N39bX)O-I_xySrhhWYrCFG|)!}WH+5V z>0+jSGR?Te#v=(AG0G4DPahz(IW|LXN)x|1RHl~k60rGJ{}sL2?{$xJ1E zqazH;Uc}eeOx6%bbxg$2xttYs2`+KGK=!r;OG7}lC31%u!4n)E z1i4KfsWoNTq8;N)w{%$bPF<%ISW(Mp2(+tgV=5jiHAb}&)wuE}yF#!OwO~Ac7k`*X zm=o@Se?vI7W6!HYl@quhNy_$noo$G=Q71&28}u(CUsn;T|5#zFuQ0|Ox|6l!k3Emg zt2V#8`IWEO=AqVK#oD~K#eO**LHL3|OZ`unJJgzG=$XRxXXeCv@SwIO@22Hx+uM%W z=wE*n0n1^W2)tA={6NT06YqkcbIFI?$X?-m=*^V&I%l@_I{v;_6fey_=YVN`_K)v~IPnzr}9^tR>9Gf$O`H9AJr)aW{$` z{NP4`4f?293-)8B^`w@DaT~!jzimhm0LOcr+2n>3%E)vS=yFxe@p%@j;MZ1-*r= zSnJDsJ#4*1uKF^9jfF*i6KKbnz~oC)@Lz z^lGtU9kXPN;~I}wtRTUd_zO$i3ho2SYN9J^RWi=5*?3qTvG^2ae>O{o$q3E_l{nIq zI35*+C7jB-OxdU`47(%dsR9;GAJLs0;FsC-6$m-IWouEPCx3C%b?EXV3{K8wElXpf z6SV2H&H#JN^8;)Ap7r&t5Wu3wJ>~dxx3FEjBAM*v^RGl9EHwCb7wEmnV^XqxngGZE zOMDmY{<;?|hO#$wl<#Fe1`PujrsMS&S?M^L4Br5(v`XpMenFEiNOQu)Zo;dXt;{31 zc=QXmD;ha``^Z5L;#a{bmvQLl$!IxD&e#CHNuoF+s8svx)hxSZ5GU;aS;C&#^fsF> zB8KT11iP~<8C$FRZ})STV7M=ZAeXO)1a)sz;j-YR8Zh<8u^B< zpqR;1QPFg0=*{?GG3Wiu6z9!~cG-gIlGncX%A=!!AItD4+H-txjMwKe(z1mf_AuH8 zqDUC)=J~&*L}m^}Q4GxQt8evJIwc|NEj=kAnqV2{7}sEf*MxW=@VnH>Lc;6g%<}p` z&G#5wdBIg;W1z0%*6E-^?jDgNwUGn;-EKdBoX+*5$|z--!bTp189tlWX>fo|qpo_e z$zb&kw^kP^sJ{B*+CGvoZWO)d5b9-i?isXD(@-{cxPSli6u!IAPQl2d*77vFs~id;_F_|BB}`Y&;IK0j#WiID(9|L zp!4h73<%9a(g4mmf(JaNx$pTEH`zeM-!4G5CC)zuYeGWnV4hK!E*@6gZx}rDH|1Y!SvVeV?z~+}AKVlSvq|Blkjd?STA& zkQ$NEhhoF8XJydk3fCGT;^~=(HwDyZRu7GgMlZeHH;VCIotfRV7ptf?-y_FM#@Dcn<_L4Y=HCXv~@yTX7(P)oThzI9L_ z+#P+RQnH5HszI}BCX+3eV|SHWx5IRAZfW9t4CY)g0Wjct$#4w8#H(+drScN*6XCBm9#o*YG?wLTBNV|YmDJ63uNI>26iT>|1-9G05Twk`~_%nbM{Nw zG)VJ5oXIvq2|MDDID_M8=nBw{1nK~ICpWm8cL*6p>X6)^;2%I`nfWng4NtD~t@*4W zM`6`Xx%3OH-xKaYxRj}c?J~Zogl#$w_|7Ux)1L+I=0>7oOldYT()e4;IbQbixjD>850bks7&dji+5hx>*F&A1XOT2o@6_05_-mTuS#7@x0; zfD_<}=1R$!H3vOX#3Q;;@-m4MCRZg8Nn#OYbgXh=iK?ntrHL;J7c%CpLrXJX-X<5x zZ92@xD@6J;Stjg%RJge8w4xX}0ugA*NO#7%13`75Tia8T&I(0IjsoTUoJJO!V7Klj z0x!Qa#>R48ERiTfaIJI(ofpFCi9AvBJBkvVF^=7T^MzVj@f#xljyqTDC#I>xW=76PuM7SI^CQd|8k*;w*(JvfC# zmCnd4%J39jP*KdlOq-*3^W!Ovl2x%;OLoF(P!@9oknM>E;yYrd@q)9vN2lm5fVvu& z*O-YNJHkR~5cgbJ!>Y`G6_fTwGv@r^$GtgwViLDIoLW(kj5Ru0aqBH_{;t8eG3l7~ zrXl;@hNE9NWLL9b%OeVi=LC%W3HWRX#q4ZQ{X7_f~_hk#Me#dOjMqDzHc zhLdQxGm@)o!3K;nEp3H}Qq|76cyhVd^*eC4^S58>ByAvkRVTfCjPP$*U}-n`1*%it za)RHMcGn{6wWo)r(q47J3~{j4o>o@}!i^u^H26FJc=hZ6+ zng)vRg>C5yY@Y$+rJFcCe%lLmgZAZzs7MiHhl@~2@}8vu#uPRM+$XD77+(j_Wwt%1 zf0ne{X{SE69K-59bZ#FYcgF)MAG$Sm5z0!waBT96S8InVdy}Swm7NcWTwIIyzq|Lr zni9;N*qP-t3$vG_4}@lGuVO9#?DlQP9I`$!bEyqs#4s7Hht*>St*Q&ozoa{D#@3+Zb3Qdb10x0xK{altt>dA_x#^iRo_z)%- z_aW<@j7h!ru(Iw%hsM4UJ^bDo&e#HxAoFhy6HYa^N4dQjqH^@2u4%U`Vlll6!`}H- zcN{P0i63P}Vz#Zlk?!0cwidcL3kUCjMaJXkTg=hUuQp39d1z$ggBsk~kQ`h*FukgI zr)1sYj*Db&9j(_}V#5^iq>@SYGPO&=x=c~@J3e#)DlS`2FzZV6w!ck0j;^_!=|0Z^$ZTsfSZE1Sb* zPHk&-4GB<%``E4rjPjUnfO{1nanTm2fm@y}W9r&0nmuH#tM$Izbp@qXA!y>Lf*S$7 z73iZi$K+priAoFTPCTZ)f?M=95&LNX^Y`i1<1Cx%$E%1Hc|#TYBKf#H6v>lrW$l); zXXS_7_ziy!-#GEp%2(l{Vq@ymb5CTi)8hduYjQxG$Nqn*B`Gl zQl@*~QE#{|<($(xR$#yTL zAQE6F2%yad5LJIgF{@q6F23dG1@xt^B)BN=OqE4gqHNV&vw2+}V*uF|r*_zAE+=@c zPvY^v*Q`ojBVnMK$^mIf-&}?*CkRrrUlj<$Z`H8k{b5*(zNlfXc(Tjh-l4&*c*cD1 zXxC?*Q%zf3dM67V(XO!6nKxw6s!(zz2Z~yG?TW$5S8WKmPp=BAT+OBk!;(&xfrk1n z&waO!Fajpa06&f|lW~C`d)Q@qGGt!)yKa# z9CtaxTpuqmApAOW56O3piKmnQdb5t&3!8S&F>k=UbL{db!tc8StMQ5+#pipO+6 zZdmEoE);)}+)hD`WhD(v#5o#NqBxi zj;wWX0?sf)`|HttsPiXlsEY4rhRetw-k(l%*_+frcg(6Dl`3`CX-L-F{?O$oVRM7l z#co`5+wC%ZRP)_fJWs6g4b?IE;v1b=6HGhZvd+x` z9*+}=NY8ib=Bn2YvxD(rQX&WE!Uga-T09q-Xa zH~Z1`W7J(+IY#M@m0SDnc0dMFaYiBFG&abV&RCKf(9TF^cYQksLN88DDm0o?l}qJI zC7Lwn`L4oyrGScqfB+qSq2NbWOF9J;I#wvhGC<)DKVvK$noV;G!>H2ir4EPiu}?OU zJ7~xx$BN>hF=gxOWN8rGD_=4KTdQ$03Oo<+m}mbo=appyd*gOBjK~sx8LZ~6Y(@Z>16ju}oq7K#8LUj~Qh+Z;)Ub&~4a=_4e`Ml466mPd$J4~L7 zTUf$r>9trD{9X%=kqc}rs`%lkk?mKxN32TNu5#R##f5Sme)k|zL!{En=5;cm3rRN) z<6lJ05F_zA9)9579f8ntx=~;aAQRU@9e!5LsBx5xlSNW61&!kB)nalv!RfB>a13CB zo2ZH#g;K9MXY<~85tXIlxoL2$xcDKP4BPv?fUI{bG$SC!)vR&7PG)eG+p%aDv2brjxjT?uoW^zeV2blKGfkWpE0`r zIBNJs8+1LCnzhk_)F0z1EAml|KXsMOqB@F6?91*$_UBs>X_kDeS<-_CzF7BCc%mXN z(^t;(9Kk}AfU;C>D%Di>meX;{hE$v;XqX_DFmM5hM_w}BgY0!1q*tuuj)K%t-5ZKi zhjUAq^D5Yo{Tq90>BJisD>EBq(o>H;T13yOXsC7kp^Ry`xWN?_^+u?2^r;w@7qhzw zqm?g9vk&$t@C!bRhJg%AlhHVldplF%hKx}&uBhYUu&&_2a6Y7-S|x(DdbJUA)r?Ae z0WR3PWHYNRwHfy0>5MnLhQ?1FV7gGWA@JJBk+J&iP?yW=>%@vH;0c4nbKh|s9Nvmk zwX&X&VRc~jSa0kFv@p}f_BftgFWImwIuwkw5PD^6AU0i^56|80P`5?5cy)6N?4O;C z@$Yz&+fUCNIS(P{6E;hVvmH^k+l2A^;+#&)tt+Etq;+LFg*?xb>m@^RE|=Pw5lgR&LHk15@LgQlGsqRz{X_u&5y4-5iZ$u_{0qtf^BqsY1 zPZ!LSbDHOtb|*p{ZgYjF8GIMPGbsz#Yw&Ad(SJk0V<0`J#I`<~441ww0v>p`P)?671)2Ox{6r{YX z41}TdS`!AgQ>zZatYqN~Zy#cfRBqpj&%GuP6x6RW7#n3#=v!7D1kJf=RS3A*yK?KH zqD>hLfufHeObfi#Rh@iCXl|UUM&09VdmGOgrKQ_B!R9ZrROL)vJNT!#Juq=6sRX%*SqGyg?Om(xi3#(rp+5@dyrq0^e z1D_|4!_lK8p9#CJ{8f+embpv&^t$W22mv9j?!y-99HWeZNrhn}5)g2>nj=o}P`T-^ zqV@?l=6Z``wyE$ET!h8%hC%~d*^FY;lz zlR-4v_`GAO``nb?fA*z%qXH4wq2DEivbBn>74hV9IgZlnNj6I&@TX&om%)JOJU7Py z9px51Cv9NvP-S-3S;&nk2=<1GCkpn~h>{8DtYPONQr^wdh5AlMHI_;qJw#lIhl~kE zvBkI8$Olx)1xalM;5PYnrO9TqX~~oE>^jg5Aov!s5}O(K^M$@5sU@sE559xqP=vH8 z8$zd;kfy_qZ^_{TKbBCdayGk-$FhCbQt!BgImnTNV+qGu(-NzY3Sv65N8P@xT*c0c zz8=_$Cfyhk4LDU4`d28!B6(hVI~@b@8wn6inNX5WfGrJy=@_9o)vC4G%e}(!-z$x! zzWXa$s`({v(6$W?Y*=(0Qtvp&(mxU8XN)q84@UE6W`crWAH%SnmP%)%$qvoU7yQ=P z07(#C=$F&SV{9vfUHmHOJT!FKH^ARf%avVfI5+c9l|F|&^rg=fBU4UfrchEwlpZO~ zD8_mEnJLKFH0+(Pwk54tRfG98#_9+W7ejs4B*ENHpEp!diAsfRJCEPe&f9&1h0MnO zcC%a5GC5BwpxkBDJx<;i*E(Y;XF?mbkKmcv1tREc6I@H5EN?Gi<$^OpxXYJmcDqc z7cL1-=^4*p6;OZAFQPotgoyhNK>yqU_e4&07C?*{J@`vQp!sxc)f^t&}kGGb4^!Hfm?`bj~S*7F`pHepFjdA|u&89YS zPhn0b3$bN%uLL=_gm%|<3&nh+AeW1b?8>-W1;jUXhha6&6PrxT0*a!T?Q z@pEu7#zb%C_!4AAWI^Sm-O5QIMxH_%u}vFpK@Js1s)#Vk_=C-%f>?#kqU?=QE*cdofVAy|>h1$4?f6E? z69}@f-jFIAsx%j>dgApejAUUz#k&?A0qT0BJ>|3^j(Y4>ZJ{vk)R7|EEb?c&s7Rc zZ%>8$C7uaf+$7t}IUE&)@yN3kN$1-1^9$vra?l+`WEv^pl|*6U=l-M+b)Ar4{5*a~ zOW{^?K2C>8z14`eTbmBAngja1aw1eDBIrscY`rvQN!b3%_Qfq8%2MsN!efI&C5Fq& zzywh+k)~JY+0Au=(0Psu$-yv%%iJr~3i{%sMVYZVa);wl*Nq2Z`dG=P6N-E3Q^dl)K4B0S6rZwPXyH zgq>56C_VV*$F^)V(hBe4A6NlU!Ti`ZQ`QCEgK4Dsfk5 zDu2vrVo*<$`Frjkyw7q?2iY3_6`I&cc$HV4#3ZL;C2iM4o*YT}-DMP?-^tOvIycNY|k!hTlnH6R?!$X||T#n?r% z-EvDLY#m9x;9Z7z-sMY8he5fimtNX-T(!sSUzlcK^SK3U;}&km<#fUNvJgQT=8&6U z5(@q+gT#)$=EJNWOSJtSVX4e41%$2MO5%c)C`%<0SDegbZ}`asWuQ0{HGqY4VSX}k ztx4#-wQ3*iFMPtH>EY|h6AmXlmj!}j8!QV=O9$AcC+f8oZV5+zl*QdC!;-%m8L|W0 zb_iAOnaoT-A2EUc;|o_9Uf86Es^V4F+|+F^_oD+^E{IbltbL=podG~aD}y?lf(b%f zRLo{nU-Ru-b=N*G?+?9f_XPn_!4WO>1lmTP#ApVqOsB*hZ;Zy2^vJ*K=rM|9&yf;+ z7cOlFOS`zr1+b z)*SA>jiy0CTb5+C!0Xz(9Cd$^sVG`$Pt>C_%ftMB8C;H5l+Oc049M;e%5iKz2BQrM z_K2ZSDY6R$f|}~PnR71#abyT!0hwWSTuD$?0dvg%RKm1CRoveCcrFnxczTUC*N*N% zY0rBA=IwYLN_Qqx+fBDK-HTb?Th2Ckat#CriT$DI@*$=*00RT8GCvi` zoQlZU5Q5m;IXW~CBVew0k(E~fGV54JhEyLy(#4EK=#8Fc~9Hs16cxp;|J%IOve2`Erf=eQs~p8N;kV$$iL=7tLbweBg;h=>7B)KpVgfMO zP_cKnDK*mmMcJ%urIS9$Sw__4uVJKpY#2SKsC)f>Ehb95u(xS^BFKrN!w9t9BR%D5 zH)B%P*1{)Y8ptyv6|QhpP0=H&nC;MpCg>lTlP;Z|%b7oc$Ir-SPp!(g=zr=sv}MKUS@!4D8&W>?na zE#%*XBrBT-ls2kC?ELT9KuApp{C5yJz1(7_K9aJa^z>ih(yE7z$_;<8keaI1KjNmA z!6uc{>mTGq5>UbHgriV0@2Ta>a~G+58w@^z%eC&YCYL6J{em>9?}KkxA*+yGVi%O3 zC^$}az@R=KI{3TCfYEJ}z1JJ^^`Jr$iXf>KO#3A7ue@`|pjH8Pj~Cop1r+$P6}Wh( zyUr^qg_+&rn@%vAHcnON06ly7?Zghu4L6wbhd?e>3e3$Kh|o_}Q!B~5=L967!-3u` zMaZS{O)_AogZm=u#1$ct#UIp_4Uxy0!RghQ-|3C!sdzPtIX??RdZ>ViHN9|DU|_MK zMofPx$LLTqs^~@iLrMWS=Vyrn6zmF!sn<=T3{vHNsnbzw7ORquH>BEs2fGrbI+_)0 zXmo6zAbrTPu`k>c+sbJi6dT^xC@@B5vqK_FUO7s!d}Og6r;z2uxD$r2hcpt%3yDGL zYYcAa%w3uuF0tc=_Efu%e?egzKr6l6e(`-XW0N0U3$s=LxLF*IU#Zh4R)`q%0PP2E zXODjOm65RI%!J!}pin1E%P4izH7KA%@$8P&V!V)80PE%J6s!ow>!sfxQ)}P75+rzOZP=0ve4mE5t)JLQisx$$z4i_1R}MN zLQi22^0g8b!c5s@4}Xn$$A-*Q;Rq@4^f7QRL+m+ETF@G*Kmz^WIjX34LF;`L*O$}Z5X=-e&ga0JN5yDwikMXQ`fp+VSRgXlekbf6QealGwf+MJsbxiX6RZ%r#& z^1w@0gazmH>N? zC9~qUd>|r}{*6Gc-Tba|g%m_xnE}1gHA*T%X(4KA8ZoqHDzMUnk{HjUYqTl8kH-?- z(!XuOS)IcK&Mc2{nS#yb8V=k+#4fx0njb zY0;hmzoKdCQg@c`(yg&PN9!!V%*|E{wbzYRuNQBik1yFcGJY#XCM5x}T8Nft)At@uVDU31JjBFf3>y)R7eEW)7m8 z*9s#pkmDkIA8ClQh%53YlI>&Zmyt9jh=9@cZgTwj{>nQ2`|pdGGiYOvQh?^m`5p?* zLb?<1qk_*nOYHA=y7G+OmZ@1LDGVy)<_2%Sp=u<~+zHX@vLqte~S@!0zl_Ctb!n$;NC0r#-`iSb-KCsX$ z5Vhe^h#P|iPE^B%(LeNib<)cCcLX^;0heYG*}_r4lAz}_8JJrfxY`9yM%3xWN)7V$ z#-}qeA87K93*FNnX+=Yki~6QdQDA{@E0Dhs({61zVpibkQ?WI*ghMr-{FHRo>_UCH z0AurBl}&WC@4rlT5til~)@vC(<~K@m3ZQUAl&=Aj(&g)N6lXq-$&oW7dsfMl-3u2N z?4A-ejxn!{J-ZJmG@H|nb_g(^(5>JE5W`Gd=a7DFvNCsVUgO)fck zB0h_*a0R_&m^Ftmd=@Ey<^#*@LGW<{I|w-@A~X>RYzJj@Z+mP^lw4;DnCfGLZQ)3@ zaayH$X!rER;gzdTtZ2XJlosTP-lW^jHyFJ(mXD!JAyWE1F|AUcvDC0G-zHP4e8EX& z)UC|!v3j6r6xjgRaL9aJ4OEagL!L)zl2YIq6X0`;ag=-%Pu+7BVvhF67lR6Iw1~`r z#d^RI+O>i#S<$f%QIHqigHoYPT25rcdtQ`~;}ttJ%>HwNiGK!{a#0w$it~-icP>RF zaSPdnY^Yp~D1=tE)_y(9s!v$9AcNz1y#w{Fc@@!PS~!}Bam<7$)C7BZtpOI3=3Dm5 zBNbG!27=#MulV@7sJhLKrj-^RCWd)7Rju+h9q$3Bp#?l zPb&!~+e~#Ee*Yc<5qMy@GFl(ewrEeF$yWZf%8wN?K@CaYIWwf%RS{OS&X%{zm-p_E zd6I=NVzL-s_Eip-i$I%Xtt3x45&`9d+#wZ?V^W)}Sd4fZu*^$HkOl}kVf)6i$h7W7 zfsfTv&j+XkDzV`(Hku-l8Kd{Jd56mcE{z};Fw21we#~@~Gg8;UwA7K!-}98PtCK*7 z_M+jk{{95fG)RZjQbsiy8>=GphBvldVR(dZz~h)==(5lUse_C1A`Vuwe7>_dRISt$ zP=`J+n-*jeKruWcUokRfG7^PWlk@;$ua7NMjHt6N-Hjp)HxK^Z)pNTPS^y0v+&`=$ z(o~`u0L+rZBVW0@1y&v2B|)6)PU6hskEt^nYs`V6UlE=>1f06FogicQ8jBh|OHRnID1`+A+$oIi4VA z!oF`?t2r4RO(MI;=mf(%CDHNajVu`x@8bVWyedW-lLW}AWs{-sWbO>php)2Z(%FF@ z^DMt7dRt*kgQ;tIq-@v!jGhyL@`|Q1@U$B@Uc7$|iFlB(c~LsYAXkmJ!frklb{w7t zl&hOOE(b9c(03npYgq^@p_$B{pQq1=ybpG%2~{lZeK<^yE1XZnCDTlF%cRje&hsWW zRXH#M;Oop)uJ*A|oSF!}v`yNd-A1{r0SbBRq1d`G2O<_`6 z97H~J42OrEWfekf2~$UTC21L-Q-#RF3TH-Y(0JYKCQpe}1PI6@KAV4$?PXo)0B znTcn?JDkGLL8V5Tz#0qXzm6Q%L7_wMkXm1M%PMfY06D$Q-i~8Bz;<2iSE=T>kIK-> zNrk~R*Q)*dLH8@iuGIOaQ}MeJ%`L|b26<1BC2&dLr|exFUr#6P zr2HJwZUTWm-dSx2cc^CAtoK-cbPGEOr7j%Oy|lbmvwo#ACQUKgCl|_mk!F>GDLs^| za`qw#YR%*UK%K%(aP@Y(V8$b0w+M8vqDvzWTNY~zroOJXAFfT2`){6v;+cz`;* zXk)3|2s-7?&rhg8%v-}q`vHr2W1Uyul$bR?6Bd#nV zBC}z{{CK+Hn&a8!K{9J`+X}~PORvfa_fqtGHsL`~cdRHSH?1hbbV*J9QU$2u?TlL| z>4q-7YJPr(hl`1plRcOqyfBMu43Vo*J3c1zoGjj~#GXM`{Pa?^7=oskx=_A2VBtrn zrMQ$$qYN~ySSa@qDkt3_Bdj`$ona0qX^%e_rD|x@(gXBbn6eof0uL?$=L<{?A$RaT zSt&)t_?#;LcVXgM)nBgBT>ZQA2kwL4l+WZ^2JKT9^<>|g8O2vyGr(5f6iWThZh=aA zn)yfZRPBflpbNJ7Lg{-n!p)7@|Yu4Ow(Ul;JbLyYPuY5DrzY{6PBxDQ?IMY6cy zf~1Y3o+dm&%#RIRmly9Hj;Cxv$$3k@besqe6?KE`9$&aB*jV$qU>KL`N6KKtAML7m zfU8gXw1{z#@@`~*++4|( z^eExDYSb-mMAgZScvghk7CA75RI zeOIQV3ICu`ZRB!A0M@F_m&USu5rNPLCUa%J`^YxcT%2L$;j*3R`9pll>Z+q_l*A}5Ju<}aTu)6HZgcT1S#~;TMN)hL8!Dl4^A}r| zuGfG;3f@I0LC_x#7exG|qJub}AxG_{lV=aesW;1=aI?2@{90uy%Y%hhP&-^c6 z0<(H0Sv~QM%>VZ#crne63zTi47{e$-s=Gf2_~tpZ)Sws1T@-L6`&tzw;n<*tr*l8C zTemM`-;MkYD1ek#z-$mHbNG7mcKDrxcX@sNA`oBdt?D=v5+2}VOWh+{UO1ag(YW)1 z-)_Rc+}zSr5!c8x($)|a?U;O6@a@#TuIn0n{Ue}$9=LsTyk{N++ol#WB>{NE^3SO; zYV_Z!UunLJt>=a>VIyxRxLf=O{!Ts7kD6mH{Pz|3xbmcYtLsWi)qda}eDe z>noD`mBX2r-Rl-3p+V~xQ@i`H8gG2lGtFk1d+$lK zR@Zwk9UVr|158*a92egY0CM@w9PYaa-W!AfYE~G7x7j;ZMV|^rcKZFI9wGq`#$}a^ z0^8G9;l4%`aGHSAh!4-!F{_!Ff%a25k0CVZ)-g3Q>Bv9@6Hu+b^%r1^kWhIKYt^(g zMu~0x@C?EUt6i5GbdYfeK^Fu7Od1JM@7|#(l2Td__S+}=@ZX7L1;Ad2ygvXCYX4xn z7z!N;%2W_V5V=1GSwIhlvan$00IoDjTxJmz7Q)5ljWTQQ!FC=P7N6$C)t>-Ds5gJf zFcKUBv3wHXtsE5i%?{v!=_io`&jue?t>VxnU~nXYaQcv@>rc9=G@(rDMbid3(tZua@sP=lqoVrw%Ws?xSsAN42|| zuTtkhd0L*DBu?F9R35imi=o}WUS2qWmrx@KvM9_99_TlizoN_!v3~j=W(h(^RcXnQ z)QyMvS$e82Hf;nP!>K`P)`t-ZZe8YEdO{&H<^TmCP;gf_e3qy+nGYKX%oBKdT_d?t zlWw|GLTp`dxmHz4{{ifzTNj>3mHHXsRVeZJ&pTXD#1Q#?E+foHAy_>`{jbgz%0{T? zePIyAlH5A}`%YOjk3vyCk#$;1csws1OK4SST$itJP^$_yQ-@!DsK5yXhwZ^yhWlVi zuDizio>Q(yV(Cn@h_G|73B{#Jt&q3w-MZK|rMF0zzE+!_yJ41B{O%i}4*_vHooT~m zy6i}u$d%Mn>8N1R$~{dmzj;Pon6=+H=%8k1fT-%702~R!$&iAvMygEjhlT zMNzKaQ)5_HRsIuJO?eJZn}_twkSZx`RMMROwE&3-QW@2>7MqpKEgYhF7!+~hDGS-K z$t+iUE!T_a6jbR~4yzb9X>@ca5$fJ8aZE(F9(0{=wyv?zd$-u1Jq(fd6rKV z1H9~P6m@$lMx?oirnIpJi%t-qCDFxy&@1lXFVa+rxQg~`t-6f81>JP@c<@UF;~+xX z&{HM{GaW=!fM`r2%HDHDG%DK7!RXc6t3Ai!JGK;D+v24O`M>ZQ!qeOCw=HBQf=F^qdu1 z4R7$m^aKa>v`)MXBbKZvp^sifxc=Ci$2D`Tu;UCL%MwH~+eL;Rz#4?y-r@_-v%}My zWCNR38giIk+zEYZfPB&Ry-f^Evpll{*;6=`wVV^w5O z5K#^1Qt*_Uv@`9&KWLH)+kw)~EzystWI{1WC@-Y`;a1KMRFv{AlM zOZ)A7!~TEy=6S39e)DA-${Y{&Y@H`$T;R9HU|sK}T<@t}@6)*6JYDa9)B*ogU%y+g zN7BG$CTs~{E_n{vRH{puBC0sJS#Pl1a>t$5rBNK zJbKKoM3^J_=vP30ayLTuFun)k7tE;`V=b7={3f=2m>PNBLGjTDZR$v&hD(gYlE(daWRhCOa*G>Se z!uR7S!K@pTD$9iNJW(xJr`l&lI#%Qw6(FC5Dp85cv=tBVq}>9IJdEY*Y@fx9c|azF@2z6E^n^2DNDF@w_$Ecb|blR%-ILud?k~&VmWW@wQSfyP=h{b ztqx10-w+8ZSV=6Jq(L_I0*v&ngI;UeKer$1$AG9${VlM&+VLa2l6_m_5oA3m-^=_X zH2wUzLP`qqkiAnp=pT7HXe3;&|G+k0u&TGy9|U>UKT#&V0<7To!lfZQJmv)#=Qlct zaZn{8ylQ5$G8Ov73cTmNXx^Our_~|_USu#M+xDofNeH4{Fin;Op?_3=%$>3C3@69K z2uBGab5ZFh@o!7y0f+g&Qk^KSAou21ITtjp>f^TvRcb?xN}F!`eO#&1R&<4rjD5vJ z`n{oEl zuvig5A5>un*09y=GL=>+R)Z$guzK+G-3o8_E>zr1`z%;PEzkGov59jN> z7RZX0q!9g^S^YepD7FYINXM}#YzsnibP-!|Z8)B$NJyVl;(2foz;7|60v@m(sC{o; zh7@zhI=rP+>j`mQl<7B7c7b=HB>ez6>tOiZj%cqSvj&41Av-BuGuuH`{e zh#RMNy)Cz(q2i#w;+37`APcxQ!T`!)NvTorgByb}0}~?-$d^dIC+PY`1PYtf zA9%Al8=X)97@B-{*p?pWoE+8JL`#OI3obi&50x)bc3JIX8GZ)~ z$pY6W9fpgV9lckiJ%@aVQQME^q%Wd-i5mJ7569N+ACl8)cdx>t7?Tey;FbKW#vUZC zk`I)n5T_sVEZ}L!njQT3PUaGeJTbwwCVIKwmHj<0Zhg1TSD`@Ri?DdEIEg*cuaxzJqjl3FD_i5ndlOaNef4+vqZ;5zkGF_p((LxJlAb5U zkCLMQk(+Y)TI4-7O2X{|2=hm&hZ?-3D+Zw7PoCe06%;%8nKxcg+&C*=%Cz`zhhb@B zkuc}#+-k? zl=$k<=+xRIh}*G7RvaIcMk6vv&Ocvi*zg4w???;YF=PWLkyzh_I+LO0oChC3DZEec zZRi^Aa0+NGn(As2I112jNy5j{J}-_|HfHZxGU#wn%z%3E@}m=tdvM4#cA85}qj6MY_ta*({ zP0U$sMS+)l4!vRg-?8TSbiO-3SJ!#iTi+X}ewsecmiTTnCj*y)KftQU)><;$5WD`1 z<_EuZN~iisyhMnk;KwQv!6?SlCX1fv-3UW;BVf)lg}qEI_HFmmKd8tg*)n$TTixbO zGsc1$?Lu^F4q~zgSeVLXys&U6EV}x9yT3h*yiaUhEx3J@ck#GA>0O-2_0%rDOG)bK z>UeX%{*V1P#66!Y_M9){^=*#l_Jp?4t;r=3-{e!ypIX%K6FfY;mp_8_dOm#rblFB` zmE0S|nJUBKyFei6nkWNH56O@!$!g7Yk|gAhEt-^>d##Xqvp}uDdXM;OcAKPXDv@jS zl%~#kpkXucfm`pEyK3Lu&~Doh_QVo=#-bof&W`erE`~a8)Vef$+Oj!};0KUkO*)FKF z3dnMg$G;Ue>v84b%JE=muDVk^;Xttp%A})(WmtnHp_LbiydLk zqc1DCzbNw*sp|TRhV5P%6~JS+8IABR4g)hTVJTd-@w9(4Szu@{*QcQleb2!nK`?J( zzZi0R3L)Cz1~&_K>=fG`->FyK3?ekxD~tuZ4Txr2R34Q`@VX?aBmnFHzHUvi+AVlL z0%iU6IUDO&{nj?R1Gxu4Z2kBvuu56mWwR}7q0XlpY|y*VjSq;u)~P}c>+OEkgCCtz z07A=wJ(q0&;u+}_X}|41Lp6b|E0sv^R|VER7C~Vo-5Z-^>_=@eW)6En0IVZ3DrNH; zC{%PYuhQ;M*lV75=z;qb0KsG9v((gQnved6W`(moALbs z0c`iU1I;vrIZDP8&gOt9#W;;8lx9&cuDKakWZox>DwDzom6<`l$Qg(U%r6FB28LfP zk|^pAnNl%pTVx!Q+o|yTO=}AFOYR|X132)4FK2B?z8QPDehm~DD$Vhz!{J^2UlG#p zja7ZLO~@*>Y}hY-J2kEmZF7@Lu$d!Np+%rWRxUtNaNm*4#>s zF8Kp~U3LxjoS1o1HbdN10u*8Rq};w{>>;m@gSXpRch?!J)uFq^l)7vj4*f%mmBjaS z)>3yNq|_nhwZU+fnp$vAJ2bmZXTMN*Vek#s3&^X5*;y$KBO20aIrCe={%%dy|6`W+_6T!63HA-`A%mj+?fBj znSMG_()G}{b7LKS{&Nw6&c}QGknDGF&iN0*0W8=UK_E~Zdq-AeJx)5q#4*l|2B}75 z?W# z=>*)%;-Pn%CK21$O1$-&NWHM_hX+~@YU!yYOp7v%GimU~fD|2q)gyB+}Sb zW_LT%h_#*tk@9})7Jdn%@^3%+4b*X)EBwi7*OmlQ+%L+pr1>9ER!B1^8bkl5uoyy` zI*}Yg8v8=$yKT%KyhTPe=Ly>@p@QKF+yCDs)NlQuL}LkQOwMuE18F4UHw!Yeid^9n zMFxsUJ^z&)mOX4ghk2JI+E>v(LHt|7UoijmMgtaUh|b6D{WDBFi6Z+)PL}4k7qy@& zx;dN*mKV}=L(pcQ={M!UCr6vOf14@d(WrvgQaB?LaGJVA?xjc$x&|C`zeAU0jwMY- zMl}jM6!w?dXJ4ZFZE6Z9P5#@opQ%fMDn&vLEr0?Xwig!O=s##z+)p1%F|C9FhBTB0 zG{C>lzEGYlKJ73IhBQ*}Xq|qN#6GPgi6@Rj$8t&%or2|rG$!?HJa<$C6g+qbUIi9* zFeJl@486?1|N2ky-{9RsCVDfRV<)L(xiI#I(Ilge?S(kpn3hzs(7o%L)`gnEzD4|9 zQJ&Ui8Bm>}7>#t+iY_PEkohz{fQ!+73}+{u~R zqyCRl^w&?75)I+SiMhkB?j{9?vF%I)w?g#$531bn?Sp$iczt#tNjNI~X+@Dh0+ln0 z$GQ2D6p6>VETPaD#T&cxA*(+II(W#CE|iGWDO^EvZ!>x&LbE6!W4D)}}Vhnb0TxZQ!7pqTNr~#9PFVL_FSSkd4!E%I+>z z3di!&qkikfW8#&Bo*jSI-mB876nL_s5wnXVjiwfrAWuIPC8ok`3kxM*O)bhV`-;-3 zKInny9x&y$6AG6W;ve4HabiUB2VZ0u@k)T2-gw=h@TiGie7XrU7#I`_$2qgh%04&( z_HmBC7I1_t>V-wYObFwsxJIAZ9RY^~rrDC26a>28q-_r@bp$F%KR#(C64sPRP6iSO z4dW;*)h74jN(JVSA`_?uPCTo;If{nwA`4obsqPw-kVs*eNbTwH+qo6;FGVF1yKt$F z9Pv18CI-D~>XeWkj*|vE-ANg2btDp}bd4L-W??g^q6G%PU#ivS@ij zmDT{+TM#0Y#{A~pIT6Dg8p))26U*Xb$;!mf4-eC#g!3~OA4u^#yE18P7RDTC6-i$Y zF12a)Y;jKx*d#-UnyMOEP{Z0ndD`M*j~AGau|vDMyrPGZ0nMvT$4!VRRTl>H<9OEY z_7sbo9)dwPJ&~~8=EeZ!wo`yPRHyvJP z6-na67>lkwHc4|%ik-xlWR;fV#F2%Wtjd!!4H8OdtP9;70 z4G3X+wkffod*uF(LmL+!xsUY4(Icy@%wcs{^*}oE_S>c!YCfKeChl^!J{dJLTVpu}r@p6%wgXF>^2KzogT{@xn0=UuV)1+*RIBC34BdueDl#H$!!L zd{VSz5B7fd%Lx+y2epgA+dG^yX|i_t1e>8{NY5`4qgAz{*+KM^8OipY=}B|~w0QRI z^+B}r5EzBH8gvd<1Dht?=Hv>;ETvz=Z~vwEBsc*Z)F0$uw*!*t+blv)Zgaf87Pjur zq`H=R$6UK%nn3a^jqrpTp~}+f#dy&lxr316le)yd)>MqtK8Ww(Y<}! zd9`BCZ6BmobV+uDkAklThd>Mvyd_|VfEAS9X@R5%3jGJ_+g->10jeJ`!sGUdKlub3 z5RuazGJ?syd+q%B?`bWIgjqgAZHL%{x4bKUaTP;+>ybE8Cc1Broh@#LaO!mPH zJ(Of1lU^ruIzg=}jyTtRvDcEaw_kMzi-MKf#;XYjFj z$GG>PO@VHP*3bXiAbG*gCw92&xBtb>V@TBSp)NJDT8VvZ+6(hvx?+X|8N|!*ZUTXZ zUs^5M=&(IBd0iZon4R<@ul&;*%wvnLLkGZp%`6jPD+|79JLt46D>H1aI;DBkgZ?~R zivv2P%7wN%BgQY!r}nSRVySg*HMa`F4e-yg40r_wO>46z#|~Uo1E5KU?!$DZ1R_D+ z7(-RekOvBxc$=7@~`sK<}76QZj2+p)->ibye2<`(St~ zRiqr_n>r!3T|TUp6A4`5HEZtYXiG`p@hBwmQ=&zdjCptH3jAECde-!Zs37tOIPA4j zmVL}J^lPd+UgQC`foj(j_I8tpWzr;X=Lx!Z$VS%u7 z)Gg%CF3qU>*s;NIGyc{knusRfu29?nFx$^HD0YVXw2Qxl05Q}1wK-4^8rv;9HkuM& za83638k_A>%0vbAU~5-gde|QV%<$ z!!IB{(AKZN=n-^=#j8l{lk0ErxkRrMVP-b&^2dDwxXdSqn(L&k9Zok@X6?7vny4!I z%v44@z7@xdvSp*RW%ll`JHN>~dUeIVEjn*-)s(5@U&C5_oIG*NwrlgL{bL5AjZJU` zBK}!e1!GuV2sdzj^tPx?7_TE)7YX1x9Q(d|do5-;^PO{V zXQSS+O%6!i=FE#kVyP-5H-Fx#Kb2-NvM1k8xri{yLdFMdXNJJ$82WVAwcV3)WYM#q z2Tz*3yB;9&ly1VXK}*kWtZl~N`}2&d_WrovRH}m#rwn`1)Awh4-y%cb;Z}zzZF)NP zy(F1hHI5q7%1S8DuCdUHH`F-^kK4l4P+hr59TO~Sa>J`;>0@VT z^NPx`6Z7sL=kgx@j-`gqeJ`LglWFMu@>SCW(tR1_p<={fiwD_rBj#B_?#juO0=y0l z)~fg&5>aR9ldMbQbvi_xa+;Sg|JpOrYCa&q_b#WVxf=+0c;E+LUJ4il1poj50^qL= zw5kuCZZI|o0DvbX001cf4uFlVk+Fp%-G3)tYg;2{D`Q7GV@Ep&b8CG%MG*mE84+4* zBV{E>0N^U_WuyNNXE$g7z~3GK0RE>aQqi~FU`6<<*0mSmU4_D-gk855j{`Kn$h}%; zE{)Lllczy(Z$6VRlvHe9%KNzDQgo;UTT8bFL|QvM=s4(bEkTJ1pQv!H6}>2&%Ndrs zv2;y8sn;;Fp;UlOkw~~`A79~UUmp)Qw&@aonVm98nEM_#-c)j*dWF^8h07otDhO~9 zNR3hn4)cW}EdRkda3@akOEc}Z_r)I2Y)+=t^|qO9?l^EC$`tb?Hvs3^XJm4*KM{s` z?TOTfXGY@G}UVW4xZQLIG=iGx|5fn?9< z1jOSs4WJYPgGsfi2}ZftSPe0cNbGYj1gP5!Q>{ocUgf2BySefns4Racvnv6+4@DOi zFS0xs;TGr1JO5RTZQZ}e&6+3y^u8aEXns^qU!3G@tgV~(TqIz*{MVaGX`0LGT#%~# zXVc69jy?s&b~PQA2~sd`n)P0EnZl^k46pmh(d3g` zXux2%aaIm?c0XvzhPu=ELkL=|qFxqf>q_wQCHcyPgAqQ(rvb@Wbf5glV!`(fo$sF| zNy;G1Hqm6LJi9;U&7ii3gzv*Uo+3_wb)JdiiCr`1XXYwliBM1-e)m$k0cV$nyH!={ zguVdw;@0h?;1f`kRkq4h+mk*Ue0`*M4bZM<8H=eF+PM}s*w zh4g@l;3Yb1xD+JNv1AnK0}8_EJpSCBm?Nsla&|qPj*RQ#YtvrUkk@|;wjd~`$Eo^ zHWoL}`#Jc9G zMjdzSGZ%x+HguFu6zBW=Vu_Dnb@!0{!Nx{Z`AaSce!MGf%u!0Eh}Zvm^zXX#%u|>! z$LbK3vLK7dy{p`@f3X9(rK!t(x&%B&-0LOnkeN7*0riK z^5I|EY&hRbx6PJDxth!OSiZgKLZ;sa#zUHkP1*w|tlJ1-H%be)`LOH6@X^xAsOQDc zeKGjHZyXd#)`OWbTAV}wG?KK3vTm6@&Ne8F7($1HylS6l)(!0}lqyv6LFx?X+#2S^ zmKxod;##st6Fz%2?gj<&$}31cEXheMX#stCS+uZCI}Xm2oxdsFl(*ZNC?u}BcU4(z zW6DXc+&)b@;JwV`Dq(z?ZQdcCD4m8aVnZ@M^)n z(P5_J!I#}xc|HjafxR1N@JXQo?KaBp=L@1ZTvPEi!Zre56I*skk)jwp&t+Tml(8=X z`eTjTon@Qy9jMMt6@(C+Hz0%)sW@8E{6ki)lez?B*3A`idWU2!K;!K4S4a?fna?R) z2(l#nx@cF!z|((94(fNi-f{_Sv)wQ=l@IDEV+_a-*&ye5@4%Y4?@ec~2{eGQKUb8> zk?XW)3kYUx z)Cz2x%S{H2@s)$9?s9`|5f|t@#h#`^GO3r&y-*MUTw@lH#bKGS=Q(wT>LxA^$=W53 z(_jOY_HoIB%>oeqfr2p-4_Ad_3#Lp2`Y7h!z&&E+mBz*Q#1oo#H?50Sus=0LWi_`b zy29$+jS`$$6twc*^~>86Fta0fi!{wOg=&QOPtLs73%vuhB#|X(K8+TU#VmkOr^591 zltBGcfV_pTc$ddOvU{EkBaVUey0M_Z&t1eX=G2D-tOuNx49f=hrtjlLVC_Kg24NoZ@I@AjgG|mDT;WPVxq;5lpJ~S*!+E(;CWgtVi$r6lUFU$< zj0S<$CGb6cVIS6fYdhTmq4XF;RR4e#4K@}6mL+k^bwCa;bLFhDb&!b6dKjZLn4X`T z6AO|lKYF^XfG@RF;Ln9UD3Pq;UTvygbC-ijPqv~{s!gx;o=bkMiuT{z81z#snI=Y! zfg*5%%d>yYd>JthSLl$~>2JUQ zKs4Ie4X5y6iIFwvgz=;eJgiB&>cVDGR({JGzHnPctX$A8@K@|jLHuVDEYdF&h=nxj zHGWjC?Q9Oc|3%q5#)=kYS)<3g_t>^=+qP}nwr$(CZQHhO-gDon&P%^nU%sxY{Deg9p8nK;FDn8@!dS>p|e&l({FBq=<(?3QKvQ7L_~>A=Zjx!<>~Swo&H3ADn= z4K)&EZ|dl!odlf%a>>Tf+Mqn_&ET|wKW^frznJ3QiK>VQd^na(#Zmtu85A0jMe&U; zI?XIfyV3GF4d&3}FZnhx46Po)-=5Jecvl8a=c1s!r>5VGD-8cqg&S>qs!-; z-X1PkioY+idafUKL+c4VL+N@tIcAF$H+f%5l_7;)ghG{aTm+|ey0L)``s_2yo~}P+ zzSKeGLlv+|YjUs4e*WtXyFll@SK_RO6Q#w#1~aZ|f1}y4hJ2caHwOh;(tFPl6i4%Y z1__PY=rHb=h4+Sv*Mo6SAj{l$r9iHNpjciKUuy0kt=PGUhfRFH#uk%+U$h?z!-0EH zslWO-#|`osfh}fUr>&aip?Ua5(o-@Apec0cg+a`OE<^WgkMG;Y0zaCavuBh)mszd3 zuGDhGh?1WE4*^Pus@XtjMx;T@*P9jaUR<^h_98Hq?%`JGuf~*E?FS=c;W+pcMGGk@ zcqGs|uWn!(eNe19n@#>Wh`yXnzoBn{YFJw-*#MGv%ullBZsRmJN3W~d`z6YrFuJIe zY**t?G?62BGgo+Y6B;bjUw1jwIN*(EUZ6V{e}_U#EpO>wJn$B$eXVF-TfF^xbS?Ca z1g!^U$hFMDPldSEHQ9)6H5n z>3Kb(?N12h!lE0JJI5sptA<%p$(|e*fi#%KuH749O}`I0A(6(khtYyX6a;3tzI(Wj zo#jl)E}Z*WC-)?*IKnVa8Pg|Blg!%#hn90(l>jL>?Y-eIZ?Au09!EM?S4gKU=>O_~ znB7gHBl&}whi=UxUB?+uOU#sWwj9)V7pUIrIh8c3YRBB=-QjU1K^4O9?X_jX*ZYvx z4LNz3^Z==@DiBW_3Yy?X^+3Vg#vvPoPW1f^onmJ)E?ISTQL4Hz`o3ZZHYF1xvrFUa!=V7 z#KcZ#{2b^mt3_bs^oxVWdk>mSj`4A#f|S$oJ;!D+uMa7a z^8RDd>>DO;*GSGQK*tm;Ffs(g`}Z2odZIqzHeVBoc&_k{a=0&Y_>?Uv6QY*~I+6>2 zNI*nLd87D`zD>tRS8?*l(fc>U!hBjq$$rorN^B+eU`2VXK`gh=E#1EFtm#QZ?fA%aeV16a}H9cmv1xI8e85ibhIow?vVy- zc55z4S573THj%})G`dFY9)-A)V`}&6teNo-<+u=hpCVs`B=ew#gJ6cEKLyidHl(_Ho%MV-w2I^I*MAsNmbWxfiUQ!xQ7aI+1OYi30yDc?pj4Kie`Ts zCcDN~0g4aW_z=ejfQ*U4d||r)lJpXX5=3@yIgA&Wbk1H!*qZ_(8X1V?e`%Rdk7PS)(fS$qt5ce zsA&xq@7dV~^M&5x-17sga5uFvo{!d$Qh9}ard(I~3M|lhXMD{>;vCoU_)4Gq z(Y_wMLqoXK$}fZw&2Wa$W9yW`0!?{3V};3FKg>`Sb5dfK`Xro*YAsVUrJHjtRif!i zExHn+<>ue)v{!i^Dl)8sfx9is=FSb;K`uzT3M9pxA4gY?r_t7{-`Rd)7OqEUXo=Tc z8bOX~_~CG*->UUW>8~vucB1MiC+bFspJ_@EjDx6wdxli6iOqYGP&6VgHx}2Ep1$TZ zjw0X3P4p+~^+$6pAK=-?l!jkR<+6E_@w@(UK|?^|pS9Kbg8j#_2I?R9$A1AT|Ml|! zKJfkrK*i3%*3F$--_+Q~iS}QeX#V-YM5%n&Wex-YFartzK=mJ3w$nGX{8@v>!qL{| zU#;S;G-QGU~fgQ*PqJRxu0( zAJi^up@yhQ<2YJUegHReBdDtclkJbuO*Mr}kZ6Np7%!}eRY+l-*8pFaBb-1@mtEgQ zQ(=9>{F1OFNfMXT5)}%7MG?Y}Wf|Y1ET9{srWlcz8rHop|0hJqk$g zsK7U728EzKq+Mp zZx2Fu5$Uau+_(X4MX6xkwGw?`XOlE~evGXlPl=p29UKnfPY{)oM3yr0AH_O z7-5z5$n2nQn#2T=P0KUi>+bYpct>%nUIB95pl-g40xf3*U~l0kvp)n^i;VKUTq8cowZ_nM! z?hkDh<&62K)oIjCyIqh!1NT$o*GI$sT-RUp{woh3ufW<32%)EnBZ(R*2%mjL6`~5# zUhNcHvHOMwt5V;$7$z0W5_#D5Jy%;Sl0q!SxMfnn|+RkI-4(PA@qdXMQ2}}TEM#b3mcQ!n`XDS0@{sGd4TQF-NpVq={vxaOf?HK}i0N*9B!Jt6Xx# zmK-VhHVLt40P|Ao* z8<`AWVFFa&3V}>SC>s}!lP-O$Y?n60fCFMFQ8PLZ;NXg(rJqg)8LxAMg3-qZNk~B6 z;}asq9Pg6eKO9CrlZm7O&li?Hq zJ}nw8%DAojt^#L2L+R2fv;5n_)@5c$T^C|+bkWg|JTy-xk3}6*XXz{8>g5Cd| zy3aRkozIkaT1HQhdEtSt1HhVImvCmU008#BY*o1C$DUZ9i+B+&HSLf~#;X(|7Exjoh4 z%nCkaFU@9`1iCk-1=FhScz`OA8$M5Y^zs3PBUcGT6&05pnoXiS9X2ubk^&)fa4^*} zVMnS(ibAc%^1O51VAUpGgKEO_ z95zG_Db-O8;}9LY47h;if^{);!D@3X4m09VIc) zad1a0hVg>r8rSK)`~GvONCvW|^#%w4p!-uQGXC$9pAn6dBaOAb-M>nK$x8CFKNaIQ ztxwAYT4o8etSPCaAgVHU1xJWmm;f2zMiPnOa>*apnOyAACImD0I;-8+?QK`r8QpuW z>y3`}u={kR)@MWFk%FBqrO)~4GRt5j>qk#j72b>z!${s%121Bc!bBI<95uGU+Tt}N z%Qd%7nwCwE#)HJLFkW`TjB)aLB@?0asc?r*GlJ>3qsWFd_W3Q16rstTs@rB}(%;QK zb(-V_$qk-yG~qO!3LTN$7RRFWy6*liUD@=qwv*sYz@mNDI{cMNEsP3glxaEWF+itNURyb2!%kqdcLhF z<&1czeQDC^)lAy$XF$o??KiAcjfJzfWLNN)-F#tT1CmEG1jf8&%7-ixnL*Ue1s%%C zk8tDGp$J93s(%8jh%13r@xiZ(-iG3*3B4&yXp>6mLm@hwBjgZ9-M24~_#S)_zJZ7M zFzhFOy15my7`zpv*_T#-wKCc9x2?Tbzr6ze^Ct7$w^VWj1^|%zp^j<)_nYirZLnb# zY1;=8xSmH!5hV{`^0m|#Abe$^<(D`L`Guzdg8DUJE5q9kPD_Z1&+pfnDr+ntA#NoK z)LWC2^dG91#U5)gd61Zc2{K?8SuC-pp4?^FR@0Rqf4X)^( zT=9w#XPWb{sVl&~qyt3AODOI};s&m-m8>O?i2Tx}Lr)KE%O2$wZBuXYMCBjjaz-oK zsPoyJ+)-?E*f&LE4&#g+5|%*7r=wbzb&=iNbOzl#O91Kl@lJ;O75b4q6c4Oq2TF{4 z>p+{At6 zfsV?S7&QdfJ7%Rzy8D9SctZC}fWIcMdDHl_KU@aS0~!{+;mGbtbR^$?8#YO4=i|k} z0Y*>Od9Q|BNqL(ncNbv zsdJ4B<#V=1Nt&VqoR#k%nZQ$2-Vw>>0zaw@VWg% zK{6;-e?w(NyQ~}`oQkklqo6P30U{V6?~ui`Zdw~fe9=ZAWR7-`=%i_DS+lOY3bH7J zhUlC}!LZf9fMvSpzYf_+c%?RPaicL(V4(K#>;uqAY zv5iM3CxzBQN{rg(ohD138LL8^jEr4^?Xw@^#E*!BC$tXS&lm_6a~X>jZNVVuYT+i!RWLhpjXxJovghR1{iWH)|C;~K?x|=o?(V6noRQcNO~15n zk{$_tblpm~-o%-Nne^`2aK@Tuxn5`Ne}Wabx%XS)DNQ%24zBgsr9)N6>mR6RjYG~Bm2|obxL+*_oY7(7y6wRa%U6I;fQ8=U&P;rz^RXm z1KN8O4iJK%AWbE*z!gX^g6l~dQvrg7@pAYXiKfLOAt7k-%?0j(1SAF+kSO7H#MVL% zpo3zGmay?b_GKnG?J19|&BWH>q@yTO8VCjGP`t@M1rC3MZ#68NNJ>tiSl?&D6)YK7DggFG#v(j(P z>80U`nUtEfubkwOrrEqmMfVIjrN$vj(Kdzu0a@JmD_||T?jj|9BYt98S9VKB%#x+o z;f-oB`fyiPUSfEC_P!p3U~06OVr4j?5OfiNkD5Sk;Baad<7`rTN-@}a+TxYC#(&TvLYsQK}1ow&bB2j$m**k&sTj5(KJ9gXDJ~Tfr?3! zte6v66@F!EZ*-ZKCr|U>3`(gho$$Afn-AhXN1L z>N@Gd%Mpq8i`vH-#o9p1N*fU)`)zN3jL20}v2#ol&HuOi2&QjQ z_~r>i(cbvYuhkAQ<0k`zkuN?J<*f;$-*r`+T=lsLc+ktR7L6bu)Kr+ir-{uB%(PJW zgqHLc**u}$tX(zer0#10@1GrFEwY?yMySr0h?@$@jncdA{oZpTAtDLiX@nH@#P^xF zYgi_zMs@D8t&Ms9UPzx=)KVl zvntz9)$;WH3;54rz>(XyL+l4c>4pISApZ}-z<<;s)~vE`vnU4l-78CvfFR9Ay6-0; z3g_AuE?FgcJ!VgiEU;$JGTjohdaBK;)YrK?wIQ>>0xEM*MKWDuYTA?j?qc#F;L~$H zgvzye_57kAi^Cm|$fg>X2;gm*KBnZK0!Q6E)5($@&R6x2RC{My6+DGxxUWE_HtwG8 zz~MrDqQ#%(eT!6;N}w*FWzjwmO(e63NrtRi)llPRKm7}|QSF|6Y#4|)FBPliP++V9 zY@OT@j4^vY*7#Vzi*S8UVVtB8rTOt_gA$0+AYPK_i8KszBhG=w3x6<(6 zipNs&VsmpgUcY_G94U0{*QRY!(+2U$BQ-Wd2+Hd7ajOovL~SW9%jKRFj6@1aO!Y<- z+iw_0dIpNvLG)0}CfM`^jI$zI>Tu%ZT7|M^>HQ6KKeMM7ceSs)eW>aw7etSk+33c2 z=L!;SZ_h_zarIBjiI-f3qeO}{i4}#r2+t)++2w2he!ZId3PoEZ|FPJ#=)G5B9?``( zlps;9aQ0q{k!x1xs`?m3m@^YP9GfB#TzGy|D{rPcu}#vtpNRnrJUU(+{HX{q%-w!R zcjaeIojVMhdjh}EeUOv=1-#n-8}>3xEBXmE&l45>+fe?J%N#;DGBo)+2t*0Pw-QqN zIZ<`Bp(1aD2TCZ4d9}GmJxW-<2zhXT;1{$ko{C->q>|Zw-xrVDa@Su4<)8{YuS#PV zzkH(0=RPFraAC@MXYRMH~Oyl`|VWBJ)a@CQdlWYo(Bwxq8KtaZff${f0lRGpDMdq30OmimkXUHn!7XG7ks+b2?Jpm9?K# z-?XL`ccETx4pk_PXcqZ(wqKXWRszqA_CaNn&&XgFe2gTg9XhtAOSx>E2a5#FvzvrlnK zeLh|#kP5WYeGDgPI%$W6e|_nO+H`8`cG0`_QQs0T%?fAc}=}S zR{Q=KFEk)A(B`k%eqOLm&d^?MTeBbeZX&x9#XDd-SrWrlbd5ca!29#L=bZugoJX&t zwn!<_;(S=6I+bG%x0|$Vwtl@J$cg9F8{kBRqyr zvn!>NE=Lx$&6{vg!OtO|%QQtE3&<$7=o_n}H0mbP!(BWl?^pwdyKcI^;$Z<^2v*VA zt#U(u>^4QHG5ftj4=B={yJ!TiQ}$#ODCT^V%&0sFcY6-!7PXKVZV_!oj;>4|3dYya zULL2;?#@oDS%@}xrB>owSY(lh9hOd3P_%Z=%q!i0q^kcr?}qa~q$*=a!=Jw9AKLBT zvTpx(y9EE%u7UZ#xBdS$U)Q?44MG1vG$}vJ(fmiY|N9UA9Z8`g@30-wp^?7f3QdhUXs_7UNwBW1rt6*RHyeP39 zDl4J4mPMg9(7oP$vwuyAy2)9@mm-_SA?_VWqLS}aFLGf@*|ZechT(P{c{OlhmQX-%kDnVKu@n{T$N;_Hn*55(U3ku94VR~9t3Rj2KdPge}|4%TM1@gk<4IHD| z4&lCQ2A~9XOnX3r_KBN;B)}R{bBD=LD~LdJ8-}oiajN6h!rvm}Zet37`dmVmS;by- z(+Esm5TGJGd`ufqhv;>#iAj)v;!s~E3?~qwZ{}#GS&+DHSka||IJ%#HaB!sPQSZ>R zbJUVv5|L`V-~tYytW?n=ZkRA{X{L=7hsd)A6E4B$0%<|!BZcQ|Qu++iq~UmU6gFeR zOfc`zm|$Z7jX<5o_Fx7`F{5`UO>?budSaAVQR>lHvv6i(iYUfP1NzAMI%8&6foXMN zivit+V!TqOJm!8DkT0i5*>;E_`_gXHAOY@w@j+e)GD@yO)C{f-IN;D{OV9%^iO^LZ zpi*`o!oq(AVUiXsm{Fv~syEb0#Nd&|wdFnQQMeH!$1CyAP67`>bo3r#W%@T30}k^VARTysnUIhdqWNy)RZ~GbiL}_n~qXi5H1vX%X4(u z>1TXw)V|#E*GApER@_ZjP%bs^CP)Q0*E8Qo$i3>7uufXl-msai#p$aa02qSW@+Cdvo!}UJj$>-AkX#0<)wMnm{+Mi6=a2Qp_{OY-WhXA8F9MH zGqfvyNP#7`ZHc7jK3>@GpBrFP>*T)Gbj;A>ck?Runh(8Mn)p$<@7rC)e*uPD1VI1z ztTU;Ey?rJ5@Z#*?WFz3pagpq{;J@N=s4gZB#l31TrB=9r;_7_B9j1w^o*yNbP|S_a zrPjGi<561Tj_}>t^)6GHjrLloDtia-4ya~Qad#`5Np1$b;bp2R`t`0Lc2{5B!+l|_ zusQdL7Z)GvotMt3bR0n&!NlEyk*=s46a5BO+RA5LbFS;e;Q^^LOx`!HF<+#kGcc)> zh#kV!QIY*hiIHphRI#9Oid{9>y5G9k->2{w zPJByDb@uxJs$98oSD=5McKac9bzA$yw67Q8(eo~ez8mE(hCAcep)>j)fPU7$#Bjev z`@o?r#5@+GQV`TB|FNJ2TN%m0HK_Ia&sbB0X;lD3KDMv_sKN=Z)(BycZCS|W=G zNHzrUcL2{&pw&&Wb{!JUSs4 zlkgJCOo6D^_AQ*G6vl)EkQ1k7Ujdo`LrPFs7TnW`=L&W{q%Gv8$a zO@2UUxwT;^xP2eY7i7Sy^*OtWMQ%x%{2G57X9JS4ISW80=YB!17B&cK3ezQ;B`;`S zY{}qZ_PLt*S)d8e4*^{r0+zcdg!(`|O@FS!YXl+?MU%!=;Qg-v2r$eM8(crtB-r>L zUah>z22qO3g7xr;JHcTRwJ3~hD3>h=;&&BXW7|q&|4{Qcl@lv|^tvOiP8bECHl31j z1= zxk+Ooc$oV|ycsfmoH@3r2li-MEq|0!zQpg>mYLAm&nFr&@-(8p;tLTm^l`Mn zP=oN(9&rWqs0X-+Q&WgfW**Qd%~DK3XcCNeCMLx^garp=;Atd&WaDPSLggFspnpOx z9B1>T`ivPRax`N?$vZ=#_?5xHDjDd*@4K?=VM`P z#fe`hKz9{JhuNVoWEFQMUILdG8Kx7*MzoTnmSs5+7Rg*N#W6>7=j$CsD60{)umT4m)p zg;LFuZ7}nXDPgkRh$Xj6_Y2SsyH1(^Fb}R(MGf@ERm$Jul;p)4iE@e_#2JlGiM#4; z!&l{fuaBk_O?~N_%l@@jSUQ1C{8sp7yqMsd>F1pteVe-tST`)!(VEBVTx2oS(8RI{ z@+ik?R)dH=2r48QsJFT7dE9=4`(CpwQl5o79NAYG#kadQW8U2yE^KUisF1Vs zxIM{QnxVLBQ-5&MqtRi?E<{Zwm4wDi@iCU6`%;)^4hk&}Nl$Tca(P-RLv@5}SXu@| z*T1+`HQ3nLf8{sFzHII+R~ULmloH##!8{L3iVr|THYswZTN%%G|QIxw)07wf#OIPNvQcYTXGX(V|quMPrjw^RBn`=#oKWN1j3JyQRy} z$QPZn{%}!5DjRmOeXwhUEv=U|`mg`m_tOsKI9(3xk7(~`Ung!<8QY9*>#(H#(3rfWkmw++ zOi|;b#z?l<9Ql}j2z$OVzc&uGqsd*i?`lNgWF+stsMFqyFcmmNw|8ZR6faLr(bjej z3ODgR9mYscIAmp{Ua-Bar-m*Y3BITy{01FaNJ9a;3+1KOsUP|>ao4^ErB}A@x)G>+ zVbz7cak$uU)_Vg_N3eN((Hccdx4h#XgAalB>7WRVuy!z5zpe+FAWCqwhreVZn^1qn z2E4{#7G1jsy^0VO?KQnFS$Fx#179?d!K_a+nCRh*x{fmxfNU{CrR=9Yq+p(K?jxpy z>~mElf}_le!9Dc$Gk_62_8FfAh84(U#U+43pHjt?OQPu8&1$)Yndbd*69J4q1%;i; zO|akV{0%PbHJ3HgIfjUj$=*YNAcYWOhY`pA1`UD0*++KZWE0?dl|Zp425}#l7Hy7= z$M&}?box9R5?2SKQA{vtv4_xY;- zpZmoyuM1pU^+0^{*O~Wx)1HOgZ1VqcZcaYj^!Ot}u z?_;FSm$J~M4!#;`na#lXZFWu@*s=5Vy(V5EBeJb{?klX;YsAYkKr8@d1Me0OLWZv; z9v+fUcmCZ(!Cz|@xHy_Xj<=L}91Y+qra=TovefUh?){cdR@K7wt0lE>@{xJ zhj{wkwDBHsaA0aU=P_6~9{7PEF>MW=4mRdbD;vLxtmxUfa5Q{&V?cPpQ~>a7(jig1 zfvkOS+epxf_}(GU7tpjVTpoQTf?fkF5xxeoP#8eq%%hj<@xfym6^ToDtc)6d7A{|^ zt?i0(oxaRf_(xyi1FZ$zxnq{)*!R!F`ZKysd0J&}#;s{D@O)SiJ|bXU@iZ03+ATZt zh!3;sSTX5#nb}Bn?|})>duxH{V_lEzBaoPg`D!=BO|SwE=;}#1H$07cbtqdNx$?kL zqLJ8(L?2G%glTYzx&?&4tEDO?$1TSF>`m{q5A#j@Slp5vd{}$#FgtZjDw_O3M(Aef zl6q8QXx5mGX|Fy^)7w_~q2nj&qHhP7O4}8N!q^zeQL7s_^~2gpypnhc$1AEbQNrTs zQrNh4vZTV`!ih$|x*Nf}a3vx5;4b1jyfbp^nIIP++!VNrNMoXFhkmlWPfz79QMqst z;bfgEMA8|8-KF`bj=0Oc{L?qrQM}**7^#oMm$Q$doAvG5;1j~iO&-n=cjBoW^e`+U z9i?ic>g0``U&Ce`aJB*vFa%xTcn$N=^CW;7(hu<;Oi1;(DhOg(WbN(*it`fHqDhno z^f=%}F_Q&Vl^1~|2%;!7@U()tc>zQpcvfU(CNfLDcd~;3E6;D?u(m_8zbJ@54W&;) z>P+OdI-t6Wxi9Ne@HJu^t!n&j7`FuLfLU%5R7{R)qdabC)@L*}@`B1^kD5+o8r%f4 z@HnB|(7<4|$un0LA+geU#crin+_0qZogY2|wI5pMpzhsLzw$z2-u#7;{C%mKeELsv zp{B7$XVn{@FA)^p-^^3HCNaR591+x8G(oWjWnElBxGPk&lD=_*)>VYK)II1m-MG+? zyd#SC_C{nb<}Xw)d^@7@bG_1(`AwgPDIt-&XM#b-;W9@^?%=>D#x+V0s) zvgToz$)SWGj1*RFiqGN%!F@tz_qUrw%Tc;58cUx$&%8cw{mNs8N#b$fhFJ;Y&!gp- z9qf`Yk@>A2J`lH&@9vWKO5jEb_lMJV;|yXQHgc8c%B2?WOKcBGx9yUSeBD}Z_2tZ& zB+$J|Fq#IbOR4YHt@f*|DC7_*7eI{{KhUz0tIox*^Wyo@a>dPAl^cAG{X*Ln{@EXy=8U~1}2kF7Qz!(+( z8o{bcM8(ezZDddO5Cxni{BrsQkaJ(t$fe2#lIi3IlWE@u3kYG_#B5iLp#{0}J#GKW z=QWFSHK~@Rx23+vmA$?4B86ac8;;_8_-r;f1fd*w<>f0RBUfQsNFi4q`)R#wpu}}{=a^`F$HWh&XM+T*Wxv0OnQh7a6o66(!XnVd zMB|J-mih!$2vZ3F8~x!-8uw+%(_JBVBgriAsq-Z9AC8^a+XaxV8dPQ!9`{%i!Sl`V zv*mG7{jJ#j)R0Ez*&|IY@RbK(k7)5PXse%B^hl}Sq!)>-xmS3H%MV7x}K#hBeXZv zle%nh>nDTXwEQB~^Cy=9s!Xq$9$_d$K`#kD6JD*}^BnIB{c054o^v@u%N`mY3f>V^ zVf&m3q4#e+f+KyYny_T)Ahsp*2=DpPxQ}VN$%u`Qdu1{-CIcw!L%sOh^7j~B&4b;6qbQS5*`e5@=DTmB&-|rs4gk{01c2PEn+@oTZuOX)ebCv8&4mcK6!nc z@3mYdN@!*DEIL#eCtCdEV$h|2>c_Vd(Bm<%G_%6+I0RM->RB~`mgdw$)d<>fAso!b zi$U?gB942)GkEqpM}8?W(08X5Zo9l7o=U8aWGBBVMEg5lwTjiI_Gjz$7si z&WbQXx*j%;wr+otjqdAJ}nH%n}l|E1qGJh*dpAGNTVFt`YU(AC*r5)qA;)v zQ45$zQg71EJYsEjddGG*>QY#_9LioMobM^eYVjJ|YZOyCIvf?mJc?IrfYC*@xG#Cd z5JL{bp6)2!%lUIuqdEwe?(=dLG=>GVqX85z+Y>?sVRu5|_Ub4`)a2wxM6|gAn-pjd zg0_y#9Bmig4)WyMzAMZnbDErJV-m9~bt#B|DWaUzB{%abN9`Ml;n>S%X3~Ve0l4PZ zGd)%2p*r^Dq9+O!At#5^h-*AJq@>N~FsuO?n%C+eC1dg=RIgYfix!Qm1}E>KHSzaT z%n+dZN7ODpf>M44N~m8)Ym}+n-4|yzSy(Yqk190RK}O@z<@E7!LqKAhp^`ly2#+1! zk(B0NA%wuFG5Jj|Vi_H~^8Eqb4`&B-A6V4{^6b)Ul+)4E?0k0WIJe+O77~5B+c7*~ zHHnK1B3Oi!>JX=l*?<$7C=;0k{H>~}i=ckr-et&_C`8w~KZ0&;j2%Nc`q1D8>spn^ z4&+xzpl&;5c}hN=dQ`45@^T4#@oUfBa7lQY_ivWX?(0=LUybg~@}IRPHjoFC?4b;* ziz8Y5@-`2L6+j(W%fm0q;~F*AAbUU8JN))BF+SW9U(o>F#|Q0*1v16Ee=U=MGU>zZ zuGxATIVPqXrCdmcl1HLe9=FLdze(wh4W1V3C?Ak5-e`0DfCK%jsudrUDl}cs?Gobq z*VnR;w$sU7#+XcOx2kqZ5FEEHh)}4zl-xJL-mP~dD^Y)LHHoK|rhT%41_#kYl49YiVd{y~FCLIzu4+sfyYJ}RUbId# z)Q}U6o+_B=x5YscYPod0O*IlE;WpeDQ#vAK?gUWHzUgObDdXCX1$cBHhJm&|(oMTl zSwosw;rAaNMzn}d?43bs#wD~8pY6I4+YXZ33>azR(74lgeH9d>+}Jg#%+~ygsxvAn z+~vc~K^p*ymknDrWn98Vs+#sxzu)p3LZc7Cf; zcXcqzi47$YMk%AG$zhITtI-LrR8YK;+B`+{pHRH^nc9Q4`v>3Aq;6o4KFq+7K3uR9 zWMK4UPDHo|^Uke(glYs7OWUWVtSJFbw}(b8fbGgHxavUrVMI+dbF!cKy3!sGHFE=ZI>V=RJgnToIaMelJuX`Ya6v}S2+%^*?$1Y8i)hU_aRkMs3rKZ&L>Z>Qr%U%(f?C!Uy(K7j=v&DK!pipO z75Sna<1n03YTnDm2uSvX!|NdP!lA7ncqK{0B>2I6y`>&zt6hHE$K`}+0xbxd8p9j9 z&n=;Sp`wT(_k>XqoO-TIGFU_M7iI}oN#p`*kxIg=|Nc=h_|>l)Vb#LUBYbgLk=5v7 z5XYEmpcuxTvUfwcx}lBE(Ydm?D_Ke?hS+w&D$ahNayT)DQuakj#v7jNZJ2ry6jr!) zeL8-sh!TXtuqev6AM*WA>@&KpTYp=W`#7iyA9|;k%84dY>=)rb72Q`n(p%%QBCCSUF7QwNxhuJjRihXCWjqgLk?O9 zk@mzzW_%yEhGQ6iT84{VL5FMzK6^VCUG|j3wU(Vo&D5k8i3&TTfPC>58QY2hcsr|O z;RV8){Lm83{c-T_0u7p(#b}k7zHDb*yyQv+hjV;F78< zkxW~z^tZAT^Pu`zmC`O(kQ7}~EH5xDveSCzo2W$5ul3!v;nw(z`;%8z_rIF-#eCp>2RFutMSqSz96#Tt6z=%Z((C9V*b(L6 z7sqP%h!Z?1yoo=vWEl@#6q+1DRwy*tLD}=Ui086$b@@3TZ1Y%dO*0HBw zk^O=#_08KC2O2k{3H-h{;r@QZe3A0zdbsd0!sb_68-qw7;ZOB?JL4<45x4lVKph;) zE~D5m#wBi3}T zRZi#2w_i*EpZML||0`Sql$C}~0>g-o#`Haob_ikYt|fqdi2lqec(Z^prCDy)g?Uux>f^RNqJXRHG2$ zy$(um4P~cWkqy;H$Ya&PaaywKaD?muk2Mwt^u4{AAeA%pV?Ye0%;UjA@9)}-gUyO% z7V)f!ENrC=Owj0k_79Q90?&mAB`46Bg&(dr)=ehkN)V%k;`mh&YGs_rsl@R*SA77t%x&*YaVljPH!C>s2|gmVqf8%Q(_!FmOdxSdX-09Jei(bq zFDfF1J8UaK&jcbgn$beCiEl6c@9NWB1xBuT>V#f1bRH22(#hfEeK6euA|HL>HN*@& zG`ZAP%)8@0K|mEhL<*Te5)+~5zvj2+xrZ&$f4F@?kI#cRGDeUJ+OSGxTAST zTsBtancoB{jG?q+*y@7BllXD+JQM3&y%C2G3wW? znUx?A&7Ns5cG#hbdA(Mx6i2?yx+0D(h6dlsA_R%VL)RDkWira`R-|>jOOn!ZXCfOnw6k;BNApof6l^NHTsWG zT_4r9vxmmC1TtoHR3%*B^v zhz@Df7JX7nc;~$0rFi*vN^VHsm(GOme4O8EN1ASiLgCJdVFpgZa~y{j%PX4` zE%axk>b-dLCS9lhb*RJg^|-feCAz(o?YOr8XUW^XYD2LnPq+i+lris+@q(2livD&- zB#7=Ra^@TP))a=T9V(Awfo=?h5Lo#5N^s~OR{!_NYExLJc*#^pw)L3}feMioeWy;Lq+6j&8_DkaA@5NHcLMF5aflU0eKv5R`!DerjM zO8DX-9*Mz}PA38rj}vC`b$S~`ir3WmW=-~~%YI~UO0?=)lk#_P&WZ2RqAu)5$QDD5 zJSK0Ar%m&z_URL26HAJ|rKZ2VZZ*6IVP?1m1e;sY23)A+X0MV!5C`~qja>P)?i938 z4XEpg*w&rUq1@{>K$9|kd`~FAdNVBq(n}B)pwf2$TrTsMdzTaDb}A1PBNIP)5t_BZ znO7Y{Js-Ox(_L&nnyXJj2k?$$PEoGeWFN>qlETo{)+Crst~RZa-Q#MM9#m-i zJ_*m+NaM0MV1~d1{0Bh#xaSG?w*fjm5}x5e$EV_mOqfnENVSu)y{H&4x27T(1K=>d z1mAYqCQ5gqU!wQE1b%HZIgJ;H3_Zjxb#j8op`W@X%8UNbnB4kE2ueTyM5sFxDvhbQ zjwx8&pj1#hPK~}7^XG6`*lBLJGuQ@xG$5wgnpe4DpwDuQgqOy6 z#4Mvf?i_GJgB`h9Ly zZ<7%DZLA&I)A!X20hzx_+C^7}1fUprrW9(4BQ_GQez>gMV= zcpiz>r*A{Mt=-2_@GhD`u?lZ!Iza;7e6V=ALY&}4N7JOqB=D$GI988xU2qZNCcsbM zM%%J3`_ctUQ-~s!;_I`~jJD&ax(xa}5TvoVgje0|J6+!1>m!`w*z|E}b6f5#YDqNC z%*Y`W_r-C|h~Ed4fYJ*o#NkEoIh)=xygQAVb>8(sg2u&mCvgd0k#u~JFB(x17-Wsq zIWe_H;sg>xW^ut?WtfbF5&CN%e{AE)niRn36^#2)h^+dWyAo@Ox2UZSCVv-^T?PlL zINS!`+tjyJA7Etr9eaeSe}>q zJGOfwOY1!^u?TdY$geWNnH9%-19D+6V&Bi5Ydx#Y((_=&P7*B%Zwm)tkj(=c=z5=T zrWY`lScGmQ)R(9;&)42A;RL(^sSOVB{KT)g%ScfjZl}R3$I}^zIf%*GI&Laep4l~V zm)=O#`18};lmSgHa~_7plUbvc^FENH<%e>Z1PC}Lzztp{&x8fHaQDpF8a63Zjrdi@ zZatuzp3R(mVG#|`y$2#^unBu)0#zE$hT z8#N*aLBy|tQbyxmR%K^Mb~n|6tK>aC2zpIn$C4mpCXMM6w`=vcGIblcE~We(us?O@ zBo$P?gqx>yiN{)^0Oi`1FUW~vbKA+?TxgK4@2R2Ud6N%ez~cHRp^ zBX9}Zc0RCudQqoEq#VMtw<|N2W`N<_23qO@vk}cDq$GccQ0h%y3dfO7XG2klVy?Tk zYeW;}0!V6m(q?_U@Gw>0EMES^?=Dhs(5rzbbvqkK^LDaXOjDrb3_dc2hy(=N&1uzb z?WpB71{9m*yzs(Wg~KWpfnk!&;N3wvn8z&a>vzv>Nk<6B)wV2k3hHy8weT`WHrIlf?q zy~7Qbm~gJ*!eTOrsM(pH>;@~U2Vek2C7gbQ>Hj+1HRUa^(5*%AT}P97@h>nx5h1~H z5W9571otj-`FZJNh8F?(Ijv%oF)Y@>eY~ViDe(F720}bhmdyaquN!f>xI&X3b3`$B z**~1cMYweOaPVea6YwlW?%4JDi8o^^jGWjWVs{1m_*eTn_4!e6HmSQuf)25Sx_V#0fT+p%K z${QyMkH9G_$DzfF*n+}xE}VQ#4WK)xHrfmi0!6$lzfnp4n1-rQfY1`G@lqH2O~e!= z#B`U4l7o!%Ep9x~gb;uc1(~WYuoBx*a8yijcJKvP(4Fv~t=jbtH^3Y%IKW!q;VkI{ z!xx-a_Q!rEB9*#61QEbh<8C;GD8D&{{L0CRDRT;!6s1314?e}w#vB*$XcLgzq@2Ir zk}P?bAbVoTt8C%W_5I~)!@EXaI$7RVe&|!8!RA^)19W?KSbTA|;*XNL?a35cO@tACobJ?O{~Lf`w6T zU}Z;CpRgUkN^f#(xL`^@e`av}ie(AoMY+mA(f)tFKkO|Yvq1aLGCGkRG*)54sE*e!M8v`YBqB9zE~sAK z5HBgBbX*E1H1M6bW8sObX-_^=t8tqKi4zJjJ+~b!2X?|=X=-l@et3iXK3*mWmk!uU zV+X@VZ8C+J+fxkcDfM$bU;1Y-C{BxmJe)npZU z6{0y5@F*;{7l5FnFc%E%_Os2h$I^#myO_%FW&_bA4oA-E47c~@l%nfo32xd--}Yr1DpXinj_uG&|2ROc6~Q$JQvs%31|xIdh0lS)Kjvu=0nu-uF1o)zwCJ6wN2 z-2ZNL-@!9;@6FiG+79J`LgmIu6C$rZ5P;vR-EF7UzMmUbB`lF{>~RwDEN!L)o>`WK z7IZXJrKr7cs8pyt zmbn}&cmEeo1<*gn0;)U0S5SM%c|&Gk6|*^qd~?#-o>jUv(e2>ro&$EZ5P_&p#OU%B z9B!{hepC?<46HESTba6hv(d^O=bc(fPh!0*UYs+G>cKp^nInK;&}ULvA4T+wm!(L;ZAnT zc+!@?b;nCjJL_9`&F}FG58B(xeR*K1$21}=1FUDmRp zlQBdHJE26f0>{%m2MktYWV|cgz z(Dsv>MN?)6h5@k(dysVdolwr(cLz+KjN9QwU6D`M-NQhW zdofV({un5!&Q-2pJ+f5TTYZo%c`bL%0S0mSGU#b>sR0Of#>P{1yt9o$OzBH045tp> zL=XJiGO09W&os0$puJH?ekFkWk7s@xFshdl?+b7FqE>ccIJs*@s!sid7xUbo)~27H zp#qtt3=Dd!yCH`!X09fB1pP|`-^L`>4Jo~2z&|d@4_1aA6HFrOP;|CcAq!#?7ewT$ zmuv4{#C{7>AjKrNMLih3w-B2QlA-tdEK=CX=)wnLfusCOSE{p7APbT@zC0?=9{zKS z>cly1z?={FaPK%+76Y$+naq7Et^e%*EO_-Neat_!qG!!R1cMiyA44x}G;K0GV z@<%uF#}3z#F#EV=vjko%dJq`E?}uK1&-7$T*{IC?61i?tDY|g+k+}PUbmINeB)F)1 zvd=M+_ylw;1}FzBBi&_h?5HbX4D}H-Z;wgo2!IZ3sY7ia%xVoXk@{|Yn`=>=2cOH< z$HB~QOJ&T!YeEC&BfOrB?vbOi$~y9uXg}8es8gKC+^Gk+q2k%oA)(K=OjiB85+Cr^ z`xO)Bb^Z=cm_r2;vi)W8Q-`eAqdHXUVrIw%n5r&BfUb&h__RShYER{Fmn9=l?lLV| zx;BH6%96+h+Ldd9PMcQpi7inKRfK|u8mTQ`ZzKv>z4pabLw4fB;Igqx-a zBxQGkVW^=PLqYbqqQEn#IK+%=Xy5!JGP7A!0*cr>$wT5y}zd z!)1L>TS(x#d9(^)!UsfHt<%YPeQe|K`zD3#&H^-4Ukn(3uD?^TI%$K9;LmPt@%1;I z2R}3y!oAk^LsCj6%5_ou#RS-+Bv~>Tg+n%G=6GXoV#gf za>f!M5Rg5DD4O^SP?mhktuaV6c2;TgWx_E-> zpg`*l^U=t$rNfSsKo2%X)|Buv;fEL9rI63#{ut~zh|iwC;-S-i#$D^{F4YJSOfamc z@5b~ToC9ZfvzBT9$lwLF_v2ga$=cAQ|AE>%P6+QT@5PZS24gE<{Kp}K4wM*VLpX#5 zv~_q2DVR0Zvs?cZOTt(wRh<6bU3}CR*~Z2ilXuBX$JMxKN#JlC%9p zpp6QtkguOoZX>mE0f`B&l}9L|#uy{CZl%4SWOQbs8{h$)@b6ujiB!FuaZSsYdzxR~ zxXI?zj{ZA1gp8v*hF0w{pkD(r&fOl{$h-+N&0L=MyzuS%j=JhZ8pWp#7jYA43`#Es z4ziplT4M3j^8*ynPE1Ww2_neTlfjxBK-tsUvcMM}5`Nl4J(;bJH?^meABOyGI-Elv z!&gc9OxC_rB^9xF5h*ej@(JLolXmtW`SYWgJ^M)M(6=Z5zzTE)n9n?EJ?S~ar5cs5 z?Zk@aB-V1GTRd3NATQTdQ7!@Lg~nNX1rqXlf$0%ajj$AbOf_T^1-BnWQuUihMdfIfbxOM?{wB?1#PTXF$huS|SUVYS^=I4Ct`@FFeH3E=dK~4pndo z52S1YM8QM6q*<~-$ax^B=hDzkQYdCzaz|>pqIsGHLfa z-BmuSrnWm14V?5Zz)unILZ*J?9ZYp%gt}N7y{*>3(p~2-$36S1oqtJd_U^jse7#}o zQ|7Q%Z$&N)oJroPDJ!zHzuK;a8EA>GWEzkYTh)O=r>AjFP}-HCQrb6x-*-FR7%si#v}aj$J42im2oy8C%_!o>=tlo^^Rm{c6&l}p@5;0_EY%v#Hiz+kjF7o7 zx0ybv_4jys93`*C_y4)vN;ZeoMoIkA1^rWrqf)Aj_VNJxMy=4rJ_0WBJc)010XF^T zEqPgJa7CxxcxL+}!ch{g?fdNCK>MJvZ5>H`Gy3WARQ8zkNRO9tD{f~S)7lvJ4r1Y@ zvem6KHq)xe!iZs?HK3sWoiwJ3W0f9MjJ6;*9-_4 zJ6lMH>S9%M@BA&lP)CduH?KTpA-fqCZ&z_{dAn<&A5lB0&vKk)K3eI?y>ki?S!R(xusKV*ulDA}aaX z_NxD`=vps)g$Gw^PcBmtsbQH;UJ8?UNdO!08nV!j(9uI%*=Ihlw1A_j#NW*od$)US z&GABSH03>6YuNTK_qEBrw(a%Ngd6ilBs#DW4K6R8{};k(-n5qCZ1$tVDI+lx#i1KM z`uB?1y67e~Q~DEzK4|-QA6E<|xGCv~LpjntCylI^npSGs$l8EF!Pm&W7RE5=fG5H% zl6Y|4&eLqT7Y^8>)#xqs@1{y!=ze)AEh%F7sfVkOPl^qo3JamH^CAE$XCUzp*lo9d zz-I96>PBrrG+g{QD`I$>M|T`#`TNweSmyT;*0W<>?#MAH`r%*;lh5$hvsD=!;Qok= z71>4%u5=kzU=K<^$eE^_duDgV8qlIBIBpe2R=zX4@rC!orDgYI=VjrmhEabtX+q~M zxPP|UO))i`&RVqQ=)x3wLP>9j2}h3liK@xJT0j9dgEwcwUXL%fN^{(gVB_DT6-$s$ z1<8-7&d>bj4KA}lHi-m#q2gz71e8}ZwKLDoZdDj#-%(eIr{Ui2ajSQ)I|tlldF)Vf zk3J`->A6liJfMe(s2tf19A#bSxF$0nmoxB<-l;W1^!Im9Uy%EpKT&aksq#$p6JSGj zB9=kEBlxBQAARxRMFGd*A@~WRqh3<2WDR1|k4bID>RpJ!_CuJI+WdxuEvFrVH*}ad zZHMe0oJrU)rSHRpM|{P4A8`O9QQpu~CDkfC0fVI)lf8+!HlEmnuKURsMKe2C(+ zP5QUJN7&-^iDmVqxE&5;9WCAD#SYTAO#De#YwQT4IJ{b-n5;b#vo@%89YUMYuSwGr zqL9Y}@vJ0WN8I#_X!Cu!5mTNnK28ClnM3fGJBX4rilbPfp#VYEi{cvVR%;EuusTzY zYU-IYMq}xD8ioS!>Y}x2(k+X&6KI?)Lxt~s3{DN;1E9Rr6UPk&2F7;AU8ThvW~Xq~ z#KIdPHYI4(eRcN1qqc%wLrb)ZyHQqmDB7E5v}B)PH!SrAFw40~Gk&$*V>kv$CItZuTbOb3}8I+E6q~Ijz-?8nD>9;ux)B=p!(SjQG&+7yd9PM^!MAty>G5 zM_;4gs{n~#0birqtpb_ZRo;JM7%+_;3Ur8$?Bvp>-ffQfa2^BfVjJ{nZ`r4_#C69H zR+)skX=gVZ@p8r4B}Xl{D5@C|%ZKH%eGgCV15`ea zvckgV`ZiMk>Tx&X7U{!ml7wHC73{S)Q(KpB~Ibw=Zb?O zw9;WK1WI8PRykpolYj+3yA@tf_@rPb8{|S#j8(yS>kHCJB+>zF^})UbT&kX`ji+kZ z&VLKcyh%u(-;UDRlNny0My>Udg_U06iHYYtRWqdH%OkG&O3#GPRn?;(;{Yb)?UtPk z`*_qlQE`?YJFTK^>EwxC-b#rPgyqTRS&8;I1v{s(z~=29U< zuw^CtY)iBI0uR^nQ+ael}v?H z_qEy2=Z4(ho`0q{IPXh?u9qoZ@?**2tfa6z$BB;Mgm*m}{4N&3M?Z00n9FbKbl%`( zJkr{-bhwXuL<`)Lc|_94%vNMU#!CjqE#LW^)TcLKrCWx{PtSc7UEy!HHp9CS(<5T3 z%jI%x!)HnPZtY3Cp0YA9sO^b7G_D3Ns&99CT}y*LpnubJ_|InrVFx;Nwi$lbPSUylee<*eIJ2}dQpvx1kM{C~Jo1uFdB(!Y zU`q#$4DYaOhF5Bzdsi?_sGCNy?Jk`B_V2eidp}J~F*tn#2ZOR!}CMtL%Om!W>Hs6URsL!=q0qpsI?(b(`eiC}krLzB8Mw zFamiJd*CW_md}Ni;eA5!7-6@}tW<@Mg%<7!C(=pK6v)m5aV?H$L+}cPnN{ZoKi1+= zWV9nr6vMo40v22>U3$fukzIPaiM7TN|xT+23BOD6{mBa9rNc<>? zw=t6tVo13=IZ0qB%#1mcCx~2_@&ee^8JOwWz*fQJ;M2}}yxTDXi(ss;Ezh%Z3S0K$ zHNl@)tj~bFi8CXDWaJOemh^&Y2_P4$$>w6u2XDdBp7EdO6ZB8vBd|s@W!(8PdV1i5 zK?X*UHr(Bt#2%33Q!ob-wjeY0`*VWhtZ+NG2I(oETDsT&jv13S;!WSO*-Y;Yi>$Kq z^~zG;Q5d;ByF6CHN*%e4x)6_64hDL~l_SOPzc*}1jbHD*M}pWovZT;Jx@byAJ-{>H zU^~R7{POK(k4NDVZj&JXLD18w$2{^L{W;jK9$&K)3pXiOYHcesA0~pDuH0`J0&aj5 zXwjGPTVN$8^v#mqKN>iRM)``PqXJc(E8MiTw6=eH+Xtdk=ma6-}9$`=(fot_Hjca3?;C4w#r*TO*7wgcI5z zKc>&`t+Bi0ey6ByQv1G4%vjNo^pT=d2aNN2gql!@el#g&pUNSpjbeR8U7Awk`lO0f z9;%Tlv*obtBGYKxuk?12b%hYItj$O|q&q@Hq6%CUszBwFh9Gt}M%{$zs_Lf5j zlAKZNr@Fb{H-wP_GsRTI4{!B!rRn038CGhF510eZ!HP*(4f59&r0@+BH*MpQS3N+$ zD>vUKBzBQir(5P%4yyr^;qubjWns2&zITeg;afaqtp0Y1y@feXH?tvw0oAy{n`3o;aw27uG@Hrrd(P0fhm9C-s z3xTf|9&?$bu=S!Hs*`&*63@k2-g0_PZ?`Q=TJwuQPYU4fn1I+EVxuIc~dguomuSzKD0kRn0M9^vff)iGDi z=c1Q2o7hxVZm?_G`$E?)(E1YI81K*BhG94su~DJhdDIYLy=|;^{9^Cyf9A? z#9wPTFB+FtHG%uvc!fhXD;p5vVU1TTF`j=({fy!vccR`V}U5(>@B4N_%r=q5Y}nn*ZvwZlj-^9DVwFwrkm75l3SQ z6B84bkP+MTo{jP5Y;Q(A<#q276UN_Rfe&*!0=Q5O1YSJUy3VP&-C8Q^LXrF42EbRt z@I>~{JP(kH2v)MwtFE;1Bx0N3FqW{ zdPC|cV+?cN`7~KDV!cd0TOZ%r>AtP4#%)YMe1^;Wju9spET2!+FKf<&9B9JtNlvT! zFbS=DYR;@g$I_^kj0@SU22w%UK^IDR=l@Mv=LR7@Xu+&t(c~$UB*~3xU>dksqm*)! zL2$?<+t>dq6@n>r3tWMd{+^Id(?$xb>0LR1b1{!#*`|_Z8JMGMiwlqbw|UvYhbBu| z%#vO;Q)<-1u=Sp!;cxp#mc@ze$iNf&yR{&)Au|r(>S&^`Od$O^_Nzf;T=bjHvLY%k zG(4F5RqU9EE`A#dHQ!Hm+rCsoD;kf2)U1Yy5|bao0DkR!gak_`+dA{}d)r0ST4)vY zoL!VMA3~t=(}|gPPWN#0d8|8M%}xP@b(&5iira!^xdAyW^oXDQoqm`dpyomC8f zBPn~Valh&{A@764;5NkWphZ=pNz3Zht0NXzA1g z;BWqj(Pf1cnDwrnF+v9oelc*x2rf{=HjO>2&P|PJ)4ACYKHWOr90Xlov;YzN%<^^^ zN1S|_p(^S|(!cN7Nv&)+eKxg#gk{@XtaTKN`iyudjKt#;w$jP zy`@+0+FI{XpdEEtZ^!-l1}I8u3axO3&Mf~uM?8_cgohxVb+TxbaYV*r5t9aX*zm}4 z7wBi+^m2&*!`vGA?WM5lRX&1_(BJw(%{RcU3HQkfG*hKJBHxx zl@nP|$-L7j2_0$U1)FTM8gzZ~{@}y3B#RVTyL9qa$VZFjr8u}HO7GVsb51j)=RhiO zXxQxo#CfA&W%kIsPhhOfJ0$ueQ(@WF4VlWlNfYm}6aI=nX=^ICxEcwKj8mnMHxzE%+nE#=WokkJC07SgbQ^%JAzRmIB77T=n zqSOySMN7trI;(!x)!4hh&Z++S^|;n`B6~Rl0^1A>awP43pz%YNh1KTb=XpD9KB?__ zV)k6$!DAx5V0yJQSld`*`ZM}Hr_0;*gG$W7e&ciZU%2q`ghi(@zY3wPU#91Ok9YV_ z1wwyRr0o|35PDwJH8>Akt>;mw6cy)j5-7l(gdz%Kd0kt!!kgp66he2VFTHX+w$ucQ zaNK(AkF(NF?kEO#M3jE%KsG=nN~|md- z)PS_MLUql}SDuP2lQmmWDpDv0RZ5#E@+KgrOmpP!C8KJ9UNG?n0LZ4nP?QM@I5yxj z64%9Gn}HGr*M*C;2L=hRSGzxF2R?V6?F9I#>VtLqXld#z&_w42bLQ{aj}*nJYA>rq zO-9PWZ{Cak0JcV@(oRBgA7}wK=`b0v>jaE#=6YROgv{lGtqc43gQQD1UCHJCt|ME* zEiS#Ayx1n|mc|U%n$t?szx1O=--B4cBI9Q;wV8OonxgtXPT0yO_jS@IYl}aIZE_n; zDxJ2%g&6j$5~Xka*O+&?lF?Qcg3AQdY}eFW*5~AiB=&NW?f4=?Ii{N+2!u){29+84 zfZ0SINfi~hq>6q|g&m4=>Iu;6?-;%DV>UQ{!@|?HEQ?)M^Rn2>_+(p>xiuJd!5>*O zk{Ur&v1i-E!VKRwy7pm;U{y8;n*f(G8#D~wP{#Jmhjm*s@5jnE?5*!4YJb0!>HGrJT4#4kA8fFOa!0_rX9) z@Q97E7xo;~0x#LX>BaPpo#k+Qh&OQ;<|b)e+F!evd%bBm(dC%3N^yQL7~a)D7oO%=)UxVWg|ArTwKgfft` zi_Rk3AxY@R#prG#cXKmyiK_)`d%PAnx-*cP9-r8GU-_Zl z*81fa0m#{6@NsJ|j(%lpd_6_RFs$%G%hUX|4Q;tw-a1p#KVWMe&QBY3>GnMA0r^?!ToVr8+S|qB4D1g*2K7-1?U!W zEI19>c^r&Yw0UXOX#a7hFG{eM0ZWe9rq5hh_fr52_W_zcVmIQu(f*z?Zw|AIaN096 zB-@R>JqZWtx%z<0V3XqnDmD3(DFLQ|u2khQfRwJ9uMDPw^5-yGMVP7~L=u!l{+4AW zX-10nb~lJ3yDQ=obd1`dHPl2ZFrhC^bOaG*j&zLGoC+*=p-RT1Cjt$i@=y^yx{}xukcRS4ImE>_PE}>C$1f8aIatA8D;W$b*K%&M6n18kg(ka!@^ygXu zHT7o49LEWm4?L-=EzQ?vqzIM2C&~a*Hr`GC@6P`WcIN(kmcIN=ij`l!JNbXh`T5VV z&Z;-|2W^O7)4fI=ZwYND|J()V;MclEO*0}jS5v9SvY>+s3rN@ZM3F#~8ra=ef4YUo zd)d;i3qh^=>SU%Ty&tv{xVV9>oKz#4%f<%t@XkwuVrRuF-t*Aqm)VZJ7&PvUXoFNM z^?}O4dNTu8OF_&UuU!Lwj|aD}52~et7Nu@1<3wX8wrYW>J;bu4wZo+785gQne8vmx zKt5X#&qZ_~xPJe_EP)!MCko%`7GHvSRS4OBnAZW4>0{;JY6E6Wx|R6zh@=g@LU1-i zqQix61>2gNZ7-m|ptqSkEb;641-AQX|7g*al3V58AvtBi% zwCghhUl!4|(M<+)oL2Vgfy%d>CqnCCfyP>`Ctciw=2|yb2V#4?a_`)#8=Us5@lA-K zB>hf5**m~oK1CeBNN8Eu{R#V{hRP$eWZyvZ)*i^YB4z<`aw#HTk63IK0#`v-gWQ5w z6iXA5Tk)>h1=BIa|1+q#G2wy>G>I>vm)s@V&S{~i#Z)IN$h6MY58A9Q0 z66(U)b`*f%BFE0&A|2Zw&m#I zF4$jtyfq3ROm|F7Xb*a+s8&(U8*_BQ3S<=+KG67;+J8aas>J?Zghrci=TykJ92rQICZnkyWl>N(& zV2)B&$uj;T{ebdgA0RxfB8#vlJz36>Z@ zIt`e~6d<+iMCyprvn_Z)Q&q(FjJiC1C0=*F+ZF8E>v4JO-Srm;sYXF;^Q6Te2gByb ziG5CbG&+GcckatlIJ=eXwH|(hJcGZRkKTK|a9g7KTxt=`QBnhaN1$t{M*nXI8Jtm- z$r~9wjDwC_g`5eU74c`@LK=0X%ELZ66kQ>n&e!V#D$izXi7#40OKsAo=3>{pv zixSq-xz6jKVtzY22x=U*5Ko}4iOpIo+H#dZCRcPJ{I-z?8keIslxvfNP8j^`Grh$> zRMO3^gW)nzXX5MRssr!VhcmaVW3(Gbb9rI|GEwvgaCKU_DU|w26Kn6FMsqSE~o2imCL$Z7baiWU}poT=b%nh zrG2LGmY&ht8%k*n^w-jh6GqtAbki03PCSwPjflB|_IOQEH`$J?k!wfYy-SZFQEfIG5Qpn~oe!_&=4A;8Jodz2+20H}n5RMI#>Ma-{k<;mu zJhPSd*RkqZGDB>n!~qM5iDuk+3KWn3;pY)8 zLaxcYCrn!oZ32IV5k02MV@9{&m3Go=?&75eIM~&?0d;$1qwsGfFq3 z(KbP`JMcI(m9@N&6lL+1Cv!Y+)+}m@htNC?tOtQg?s1k>){+N|a*oP5Wv&7inlQ1FY9f;YM zTcynrUA!8p8ON2jgdYegrVDVbb0;*S^O>-_PC(`JtyO|Z{ud_^xx8#{~toKdkQKa(r*Fh`U~v* zUs@dh-?#ox_bj%`{c#Hn2;Dd88oYrb*>3L8rl6Ig1cYz|Azs2&hhz&QwoGs>%39U$ zHSee$1Qzm`%%?e z`3Um>`>EjNC{V_6>&vPH7dYpVBVEHm!=sy7V-@y4!sCsqts{J5=L02FDGkFFIFiV36%$F_X;oGnUu3h8vZc zqv%fld#R*Np#-aUh8x=UY19fX7=RsnQ2vCr)r;P^;k*eK=O05W?k(oy+i#fomLd9- zreco}cHNax@t~^1Z&gwVe-ggF+)*~f4fAsME|GcJ?a}X-fZLX^en@}ttPGV8oz&~6 zInv6JuBcoow?Y~|YY|3S+r>4*6nv1JknNoR^N1-X zK5z|+Md|!bN^0{h$F?#1eRlqc{=deFll>=a`v0e%wD)9&G3i$mJoYbXNKw zIb>*LV@mg*nA%jM1)+lkP(pqtxcQfb(`FYa8X_YIToO(VT84u<_L+kVf40>WSW4es z&90l$C9AM0bQp7N%qd8y{~)f=P8BepmzfcgIi{7f{&8-^_tE?X)F}nZ*xtU}=kYGg zKHfyu`ZCA4ad;CEh(1P%)ey^L_l)#$9b=Vo0wPTZ#327TqpKFA* zCwSPVh#j1RjhL-Nigx29s7OF^I2ozGc`?hh0aAJIF zLk3IY#N0)zABoi842*0a^NtJ}f(XA}If~{6YZGSc0?#l7F9%uCQj0Q>x}QPW8rNYd zCqhrYPiJz6i!lK`rmtL~wN3URuY(qELXrw<{7V@^i%WyB)&p)$pazbvwC6_`xOA?s zk~!!V{<<5I*3IXI{n*&hZfo@;z0BzPwcIt3?Cw1>XXXALB&PgeA%#8oi@fft&vPpX za8O^m|4rMcclSD^tiD(m-gEHG7Yv#8xbSiHQ{wm6Hvngz9tB^?e{S;@i4FRkzJ0Sr z5vNC=F0+^3%iGi!4(+daaC<9H&ZDu@6^iN8?Gtowi8XCC4|(oi(v& zwkzrEI&(W=jy~sBt`osZ*}P;^JeqG_k?I_%qWvt(oiHoxzWQFO32u=%fx1eaNH;Mj zS2dxjx)$9;y@HBK-?Gvf%x4Ug7Z(hfB2gOJi1H61D}rVHxPrjKexej_dB zC}L}~jJ}KK5_aHmS-CMlRs@9LhnBM*lvN!k&J0#1vn$7qPe_S#&#{a6mHddtfww=fp^?S*@t|0SwcReFVlAp%liutu*)=bbfX1!=-3%JRV|dbOYlC+!3cg| z#dwiNe{+e{&nH)2xU!qQ=GYVS|C|Ivbip%-zqUr9-$W4jkCVX0-q_Ga!rs|M-buvX z*3i;U()l+b{yTMJsG_X&pa8-by)&NHQ1B{mcTNaPh?bSSDo;pKOCpJOLpk2i&$XY0 za`7%+SnI=fmS>jFtoG8zx(iFE>H3naD6`dMi_P%}+yoz^t)_c>PM4NZ!||ehrMNLz zDc26|RIVjc#=0MOw;3)?H-oDwb_!g}(Vd37w>xq1Zd`{SQ?|=72-6AcZB6@00V-^kLirG*KKO<2oh0>5`q^Je6bpKo$Q$y;*dXk5dkkpxT)FmR95a6 z(X@P#yNtT~jbt*+F{`@mDVVFGV1(qS@!9*|7s4KYO^G~-a+y@R4V(S_NtR|~phDaY zPqzhHG9i_3aWp@B=RTY^AS$|mAnW{NFpK46E@%xlM4k3Ssr*eBNXZQ#HjHDAq%951h!FY<2L|)CoJjJmg&=}LLlL~| zUbwVzCuL98)S~>lF>Bn?s~dh#mptZnmLtQD2WJSg1bBuO)CE!p`2%aCfNWu+sR*D| zVDgkh7fh^~#){f$j;YaW`;>^NRamc}5!)OH;&h6+zn75P-?gV=IjJ6ejfbX;F-gC29_o9-V4iF=mDNvRl0;ho-FGYFbXRe6?IZrl8f1|PaEzka?o z3@ZS8;r`sLX*17`f1`C)E%ztB)!ea$)GMe#(GgYN24;iKuuqf)rR}fB{s^|lj&>!) z6dBqBV0CsZwx&X4?0&>AdfHlUWd5EUVID=3UsNAM)?ho(9?a7Zwx3OJ9-0fC{%`UI zvWOxCoY3Eo{}R#OmUp11--zb_R?;m0aYS7#ZB3O7?acqLYU6(w#~fu@>kR>f?hkdI zd0|>&lQA+DH_8y9v*Pxmu`O#$68l8A;cF^6tot4A&Qx1cRc#6h3-{x0cKpnY88hTb z2Xii=UsNoWOmlzgX0C*&19y-uWm<6&kQ^IJv*G~C%=^7S6kLMU&T! zfx8#{nbEUkv>L`-0&%byk0U@+7!4(Oc^6uw54bK^j!-Ho<_&kU)?ewdbw-hHba}J^ zFdN!SfMs*Eq>E(DmzOECVEpAgA5^ijsFF1zC@_6rOBdi`R`sI9=BfIBgj`}RFfbE) zK43>eEV}xRH2l;VQ_D|=Bo^4aDxa9H z$}d=OjhUTaX~3brSn?A?la{6h%Yp#wQmj>9^(TIIPi5ZC;DI*70C>pB-nUYQZ}W!R zDihBkAkumVIPz9@4c_skVk#UJ^#@!r=z09z{rL5OuA%O_Nsz>Y8Fe1FK(qX8tR7jV!x)8UgNlU95<{25pCo49Me zaTuDXMZc`19Bu!(itW8MF0(>D4UD{n;Az|9Kv9XRbEo8t=R7|6o%=M6JomkFWX$aJ zJ3TmcAlgn?ZteK}AEdowc;DUDH5%KtoyJbuG`8)uF&o>qZQC}RG&UOBwsHRV-p~8& zefK(NxBERGeqZt-*Y%%kt~tjXYmBv??R_bPw=AZE@BV?A|23?QL|RU+5K<-`dzVzi1|nN3Os*B7i?cpa6Cun7ee≈_ahsFNmp?iu&Tka%xPlh(kg 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

0&sX-IcDwaR( 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 getEksClient().createCluster(req), + deleteCluster: req => getEksClient().deleteCluster(req), + describeCluster: req => getEksClient().describeCluster(req), + describeUpdate: req => getEksClient().describeUpdate(req), + updateClusterConfig: req => getEksClient().updateClusterConfig(req), + updateClusterVersion: req => getEksClient().updateClusterVersion(req), + createFargateProfile: req => getEksClient().createFargateProfile(req), + deleteFargateProfile: req => getEksClient().deleteFargateProfile(req), + describeFargateProfile: req => getEksClient().describeFargateProfile(req), + configureAssumeRole: (req) => { + eks = new client_eks_1.EKS({ + ...awsConfig, + credentials: (0, credential_providers_1.fromTemporaryCredentials)({ + params: req, + }), + }); + }, +}; +function getEksClient() { + if (!eks) { + throw new Error('EKS client not initialized (call "configureAssumeRole")'); + } + return eks; +} +async function onEvent(event) { + const provider = createResourceHandler(event); + return provider.onEvent(); +} +exports.onEvent = onEvent; +async function isComplete(event) { + const provider = createResourceHandler(event); + return provider.isComplete(); +} +exports.isComplete = isComplete; +function createResourceHandler(event) { + switch (event.ResourceType) { + case consts.CLUSTER_RESOURCE_TYPE: return new cluster_1.ClusterResourceHandler(defaultEksClient, event); + case consts.FARGATE_PROFILE_RESOURCE_TYPE: return new fargate_1.FargateProfileResourceHandler(defaultEksClient, event); + default: + throw new Error(`Unsupported resource type "${event.ResourceType}`); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsNkRBQTZEO0FBQzdELG9EQUEwQztBQUMxQyw2REFBNkQ7QUFDN0Qsd0VBQXlFO0FBQ3pFLDZEQUE2RDtBQUM3RCxrRUFBNkQ7QUFDN0QsNkRBQTZEO0FBQzdELDZDQUF5QztBQUN6Qyx1Q0FBbUQ7QUFFbkQsbUNBQW1DO0FBQ25DLHVDQUEwRDtBQUcxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLHdCQUFVLEVBQUUsQ0FBQztBQUNwQyxNQUFNLFNBQVMsR0FBRztJQUNoQixNQUFNLEVBQUUsT0FBTztJQUNmLGNBQWMsRUFBRSxJQUFJLG1DQUFlLENBQUM7UUFDbEMsU0FBUyxFQUFFLFVBQVU7UUFDckIsVUFBVSxFQUFFLFVBQVU7S0FDdkIsQ0FBQztDQUNILENBQUM7QUFFRixJQUFJLEdBQW9CLENBQUM7QUFFekIsTUFBTSxnQkFBZ0IsR0FBYztJQUNsQyxhQUFhLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQ3ZELGFBQWEsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7SUFDdkQsZUFBZSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztJQUMzRCxjQUFjLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO0lBQ3pELG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDO0lBQ25FLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDO0lBQ3JFLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDO0lBQ3JFLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDO0lBQ3JFLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDO0lBQ3pFLG1CQUFtQixFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDM0IsR0FBRyxHQUFHLElBQUksZ0JBQUcsQ0FBQztZQUNaLEdBQUcsU0FBUztZQUNaLFdBQVcsRUFBRSxJQUFBLCtDQUF3QixFQUFDO2dCQUNwQyxNQUFNLEVBQUUsR0FBRzthQUNaLENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQztBQUVGLFNBQVMsWUFBWTtJQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0tBQzVFO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRU0sS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFrRDtJQUM5RSxNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxPQUFPLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBSEQsMEJBR0M7QUFFTSxLQUFLLFVBQVUsVUFBVSxDQUFDLEtBQWtEO0lBQ2pGLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFIRCxnQ0FHQztBQUVELFNBQVMscUJBQXFCLENBQUMsS0FBa0Q7SUFDL0UsUUFBUSxLQUFLLENBQUMsWUFBWSxFQUFFO1FBQzFCLEtBQUssTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxJQUFJLGdDQUFzQixDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlGLEtBQUssTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUMsT0FBTyxJQUFJLHVDQUE2QixDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdHO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7S0FDdkU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgRUtTIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVrcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBmcm9tVGVtcG9yYXJ5Q3JlZGVudGlhbHMgfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVycyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBOb2RlSHR0cEhhbmRsZXIgfSBmcm9tICdAYXdzLXNkay9ub2RlLWh0dHAtaGFuZGxlcic7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBQcm94eUFnZW50IH0gZnJvbSAncHJveHktYWdlbnQnO1xuaW1wb3J0IHsgQ2x1c3RlclJlc291cmNlSGFuZGxlciB9IGZyb20gJy4vY2x1c3Rlcic7XG5pbXBvcnQgeyBFa3NDbGllbnQgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBjb25zdHMgZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgRmFyZ2F0ZVByb2ZpbGVSZXNvdXJjZUhhbmRsZXIgfSBmcm9tICcuL2ZhcmdhdGUnO1xuaW1wb3J0IHsgSXNDb21wbGV0ZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXJlc291cmNlcy9saWIvcHJvdmlkZXItZnJhbWV3b3JrL3R5cGVzJztcblxuY29uc3QgcHJveHlBZ2VudCA9IG5ldyBQcm94eUFnZW50KCk7XG5jb25zdCBhd3NDb25maWcgPSB7XG4gIGxvZ2dlcjogY29uc29sZSxcbiAgcmVxdWVzdEhhbmRsZXI6IG5ldyBOb2RlSHR0cEhhbmRsZXIoe1xuICAgIGh0dHBBZ2VudDogcHJveHlBZ2VudCxcbiAgICBodHRwc0FnZW50OiBwcm94eUFnZW50LFxuICB9KSxcbn07XG5cbmxldCBla3M6IEVLUyB8IHVuZGVmaW5lZDtcblxuY29uc3QgZGVmYXVsdEVrc0NsaWVudDogRWtzQ2xpZW50ID0ge1xuICBjcmVhdGVDbHVzdGVyOiByZXEgPT4gZ2V0RWtzQ2xpZW50KCkuY3JlYXRlQ2x1c3RlcihyZXEpLFxuICBkZWxldGVDbHVzdGVyOiByZXEgPT4gZ2V0RWtzQ2xpZW50KCkuZGVsZXRlQ2x1c3RlcihyZXEpLFxuICBkZXNjcmliZUNsdXN0ZXI6IHJlcSA9PiBnZXRFa3NDbGllbnQoKS5kZXNjcmliZUNsdXN0ZXIocmVxKSxcbiAgZGVzY3JpYmVVcGRhdGU6IHJlcSA9PiBnZXRFa3NDbGllbnQoKS5kZXNjcmliZVVwZGF0ZShyZXEpLFxuICB1cGRhdGVDbHVzdGVyQ29uZmlnOiByZXEgPT4gZ2V0RWtzQ2xpZW50KCkudXBkYXRlQ2x1c3RlckNvbmZpZyhyZXEpLFxuICB1cGRhdGVDbHVzdGVyVmVyc2lvbjogcmVxID0+IGdldEVrc0NsaWVudCgpLnVwZGF0ZUNsdXN0ZXJWZXJzaW9uKHJlcSksXG4gIGNyZWF0ZUZhcmdhdGVQcm9maWxlOiByZXEgPT4gZ2V0RWtzQ2xpZW50KCkuY3JlYXRlRmFyZ2F0ZVByb2ZpbGUocmVxKSxcbiAgZGVsZXRlRmFyZ2F0ZVByb2ZpbGU6IHJlcSA9PiBnZXRFa3NDbGllbnQoKS5kZWxldGVGYXJnYXRlUHJvZmlsZShyZXEpLFxuICBkZXNjcmliZUZhcmdhdGVQcm9maWxlOiByZXEgPT4gZ2V0RWtzQ2xpZW50KCkuZGVzY3JpYmVGYXJnYXRlUHJvZmlsZShyZXEpLFxuICBjb25maWd1cmVBc3N1bWVSb2xlOiAocmVxKSA9PiB7XG4gICAgZWtzID0gbmV3IEVLUyh7XG4gICAgICAuLi5hd3NDb25maWcsXG4gICAgICBjcmVkZW50aWFsczogZnJvbVRlbXBvcmFyeUNyZWRlbnRpYWxzKHtcbiAgICAgICAgcGFyYW1zOiByZXEsXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGdldEVrc0NsaWVudCgpIHtcbiAgaWYgKCFla3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VLUyBjbGllbnQgbm90IGluaXRpYWxpemVkIChjYWxsIFwiY29uZmlndXJlQXNzdW1lUm9sZVwiKScpO1xuICB9XG5cbiAgcmV0dXJuIGVrcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uRXZlbnQoZXZlbnQ6IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQpIHtcbiAgY29uc3QgcHJvdmlkZXIgPSBjcmVhdGVSZXNvdXJjZUhhbmRsZXIoZXZlbnQpO1xuICByZXR1cm4gcHJvdmlkZXIub25FdmVudCgpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNDb21wbGV0ZShldmVudDogQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCk6IFByb21pc2U8SXNDb21wbGV0ZVJlc3BvbnNlPiB7XG4gIGNvbnN0IHByb3ZpZGVyID0gY3JlYXRlUmVzb3VyY2VIYW5kbGVyKGV2ZW50KTtcbiAgcmV0dXJuIHByb3ZpZGVyLmlzQ29tcGxldGUoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUmVzb3VyY2VIYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50KSB7XG4gIHN3aXRjaCAoZXZlbnQuUmVzb3VyY2VUeXBlKSB7XG4gICAgY2FzZSBjb25zdHMuQ0xVU1RFUl9SRVNPVVJDRV9UWVBFOiByZXR1cm4gbmV3IENsdXN0ZXJSZXNvdXJjZUhhbmRsZXIoZGVmYXVsdEVrc0NsaWVudCwgZXZlbnQpO1xuICAgIGNhc2UgY29uc3RzLkZBUkdBVEVfUFJPRklMRV9SRVNPVVJDRV9UWVBFOiByZXR1cm4gbmV3IEZhcmdhdGVQcm9maWxlUmVzb3VyY2VIYW5kbGVyKGRlZmF1bHRFa3NDbGllbnQsIGV2ZW50KTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCByZXNvdXJjZSB0eXBlIFwiJHtldmVudC5SZXNvdXJjZVR5cGV9YCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31/index.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea/index.ts similarity index 94% rename from packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31/index.ts rename to packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea/index.ts index a6e6980e9ec83..4004ddf5cd22e 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31/index.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea/index.ts @@ -5,15 +5,14 @@ import { EKS } from '@aws-sdk/client-eks'; import { fromTemporaryCredentials } from '@aws-sdk/credential-providers'; // eslint-disable-next-line import/no-extraneous-dependencies import { NodeHttpHandler } from '@aws-sdk/node-http-handler'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { ProxyAgent } from 'proxy-agent'; import { ClusterResourceHandler } from './cluster'; import { EksClient } from './common'; import * as consts from './consts'; import { FargateProfileResourceHandler } from './fargate'; import { IsCompleteResponse } from '../../../custom-resources/lib/provider-framework/types'; -// eslint-disable-next-line @typescript-eslint/no-require-imports, import/no-extraneous-dependencies -const ProxyAgent = require('proxy-agent'); - const proxyAgent = new ProxyAgent(); const awsConfig = { logger: console, diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31/index.js deleted file mode 100644 index e3d914f9b8064..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31/index.js +++ /dev/null @@ -1,68 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isComplete = exports.onEvent = void 0; -/* eslint-disable no-console */ -// eslint-disable-next-line import/no-extraneous-dependencies -const client_eks_1 = require("@aws-sdk/client-eks"); -// eslint-disable-next-line import/no-extraneous-dependencies -const credential_providers_1 = require("@aws-sdk/credential-providers"); -// eslint-disable-next-line import/no-extraneous-dependencies -const node_http_handler_1 = require("@aws-sdk/node-http-handler"); -const cluster_1 = require("./cluster"); -const consts = require("./consts"); -const fargate_1 = require("./fargate"); -// eslint-disable-next-line @typescript-eslint/no-require-imports, import/no-extraneous-dependencies -const ProxyAgent = require('proxy-agent'); -const proxyAgent = new ProxyAgent(); -const awsConfig = { - logger: console, - requestHandler: new node_http_handler_1.NodeHttpHandler({ - httpAgent: proxyAgent, - httpsAgent: proxyAgent, - }), -}; -let eks; -const defaultEksClient = { - createCluster: req => getEksClient().createCluster(req), - deleteCluster: req => getEksClient().deleteCluster(req), - describeCluster: req => getEksClient().describeCluster(req), - describeUpdate: req => getEksClient().describeUpdate(req), - updateClusterConfig: req => getEksClient().updateClusterConfig(req), - updateClusterVersion: req => getEksClient().updateClusterVersion(req), - createFargateProfile: req => getEksClient().createFargateProfile(req), - deleteFargateProfile: req => getEksClient().deleteFargateProfile(req), - describeFargateProfile: req => getEksClient().describeFargateProfile(req), - configureAssumeRole: (req) => { - eks = new client_eks_1.EKS({ - ...awsConfig, - credentials: (0, credential_providers_1.fromTemporaryCredentials)({ - params: req, - }), - }); - }, -}; -function getEksClient() { - if (!eks) { - throw new Error('EKS client not initialized (call "configureAssumeRole")'); - } - return eks; -} -async function onEvent(event) { - const provider = createResourceHandler(event); - return provider.onEvent(); -} -exports.onEvent = onEvent; -async function isComplete(event) { - const provider = createResourceHandler(event); - return provider.isComplete(); -} -exports.isComplete = isComplete; -function createResourceHandler(event) { - switch (event.ResourceType) { - case consts.CLUSTER_RESOURCE_TYPE: return new cluster_1.ClusterResourceHandler(defaultEksClient, event); - case consts.FARGATE_PROFILE_RESOURCE_TYPE: return new fargate_1.FargateProfileResourceHandler(defaultEksClient, event); - default: - throw new Error(`Unsupported resource type "${event.ResourceType}`); - } -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsNkRBQTZEO0FBQzdELG9EQUEwQztBQUMxQyw2REFBNkQ7QUFDN0Qsd0VBQXlFO0FBQ3pFLDZEQUE2RDtBQUM3RCxrRUFBNkQ7QUFDN0QsdUNBQW1EO0FBRW5ELG1DQUFtQztBQUNuQyx1Q0FBMEQ7QUFHMUQsb0dBQW9HO0FBQ3BHLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUUxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsY0FBYyxFQUFFLElBQUksbUNBQWUsQ0FBQztRQUNsQyxTQUFTLEVBQUUsVUFBVTtRQUNyQixVQUFVLEVBQUUsVUFBVTtLQUN2QixDQUFDO0NBQ0gsQ0FBQztBQUVGLElBQUksR0FBb0IsQ0FBQztBQUV6QixNQUFNLGdCQUFnQixHQUFjO0lBQ2xDLGFBQWEsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7SUFDdkQsYUFBYSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztJQUN2RCxlQUFlLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO0lBQzNELGNBQWMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7SUFDekQsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7SUFDbkUsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7SUFDckUsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7SUFDckUsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7SUFDckUsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUM7SUFDekUsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUMzQixHQUFHLEdBQUcsSUFBSSxnQkFBRyxDQUFDO1lBQ1osR0FBRyxTQUFTO1lBQ1osV0FBVyxFQUFFLElBQUEsK0NBQXdCLEVBQUM7Z0JBQ3BDLE1BQU0sRUFBRSxHQUFHO2FBQ1osQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsU0FBUyxZQUFZO0lBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7S0FDNUU7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFTSxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWtEO0lBQzlFLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLE9BQU8sUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFIRCwwQkFHQztBQUVNLEtBQUssVUFBVSxVQUFVLENBQUMsS0FBa0Q7SUFDakYsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDL0IsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxLQUFrRDtJQUMvRSxRQUFRLEtBQUssQ0FBQyxZQUFZLEVBQUU7UUFDMUIsS0FBSyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxPQUFPLElBQUksZ0NBQXNCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUYsS0FBSyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxPQUFPLElBQUksdUNBQTZCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0c7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztLQUN2RTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBFS1MgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWtzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IGZyb21UZW1wb3JhcnlDcmVkZW50aWFscyB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IE5vZGVIdHRwSGFuZGxlciB9IGZyb20gJ0Bhd3Mtc2RrL25vZGUtaHR0cC1oYW5kbGVyJztcbmltcG9ydCB7IENsdXN0ZXJSZXNvdXJjZUhhbmRsZXIgfSBmcm9tICcuL2NsdXN0ZXInO1xuaW1wb3J0IHsgRWtzQ2xpZW50IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0ICogYXMgY29uc3RzIGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IEZhcmdhdGVQcm9maWxlUmVzb3VyY2VIYW5kbGVyIH0gZnJvbSAnLi9mYXJnYXRlJztcbmltcG9ydCB7IElzQ29tcGxldGVSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS1yZXNvdXJjZXMvbGliL3Byb3ZpZGVyLWZyYW1ld29yay90eXBlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzLCBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmNvbnN0IFByb3h5QWdlbnQgPSByZXF1aXJlKCdwcm94eS1hZ2VudCcpO1xuXG5jb25zdCBwcm94eUFnZW50ID0gbmV3IFByb3h5QWdlbnQoKTtcbmNvbnN0IGF3c0NvbmZpZyA9IHtcbiAgbG9nZ2VyOiBjb25zb2xlLFxuICByZXF1ZXN0SGFuZGxlcjogbmV3IE5vZGVIdHRwSGFuZGxlcih7XG4gICAgaHR0cEFnZW50OiBwcm94eUFnZW50LFxuICAgIGh0dHBzQWdlbnQ6IHByb3h5QWdlbnQsXG4gIH0pLFxufTtcblxubGV0IGVrczogRUtTIHwgdW5kZWZpbmVkO1xuXG5jb25zdCBkZWZhdWx0RWtzQ2xpZW50OiBFa3NDbGllbnQgPSB7XG4gIGNyZWF0ZUNsdXN0ZXI6IHJlcSA9PiBnZXRFa3NDbGllbnQoKS5jcmVhdGVDbHVzdGVyKHJlcSksXG4gIGRlbGV0ZUNsdXN0ZXI6IHJlcSA9PiBnZXRFa3NDbGllbnQoKS5kZWxldGVDbHVzdGVyKHJlcSksXG4gIGRlc2NyaWJlQ2x1c3RlcjogcmVxID0+IGdldEVrc0NsaWVudCgpLmRlc2NyaWJlQ2x1c3RlcihyZXEpLFxuICBkZXNjcmliZVVwZGF0ZTogcmVxID0+IGdldEVrc0NsaWVudCgpLmRlc2NyaWJlVXBkYXRlKHJlcSksXG4gIHVwZGF0ZUNsdXN0ZXJDb25maWc6IHJlcSA9PiBnZXRFa3NDbGllbnQoKS51cGRhdGVDbHVzdGVyQ29uZmlnKHJlcSksXG4gIHVwZGF0ZUNsdXN0ZXJWZXJzaW9uOiByZXEgPT4gZ2V0RWtzQ2xpZW50KCkudXBkYXRlQ2x1c3RlclZlcnNpb24ocmVxKSxcbiAgY3JlYXRlRmFyZ2F0ZVByb2ZpbGU6IHJlcSA9PiBnZXRFa3NDbGllbnQoKS5jcmVhdGVGYXJnYXRlUHJvZmlsZShyZXEpLFxuICBkZWxldGVGYXJnYXRlUHJvZmlsZTogcmVxID0+IGdldEVrc0NsaWVudCgpLmRlbGV0ZUZhcmdhdGVQcm9maWxlKHJlcSksXG4gIGRlc2NyaWJlRmFyZ2F0ZVByb2ZpbGU6IHJlcSA9PiBnZXRFa3NDbGllbnQoKS5kZXNjcmliZUZhcmdhdGVQcm9maWxlKHJlcSksXG4gIGNvbmZpZ3VyZUFzc3VtZVJvbGU6IChyZXEpID0+IHtcbiAgICBla3MgPSBuZXcgRUtTKHtcbiAgICAgIC4uLmF3c0NvbmZpZyxcbiAgICAgIGNyZWRlbnRpYWxzOiBmcm9tVGVtcG9yYXJ5Q3JlZGVudGlhbHMoe1xuICAgICAgICBwYXJhbXM6IHJlcSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9LFxufTtcblxuZnVuY3Rpb24gZ2V0RWtzQ2xpZW50KCkge1xuICBpZiAoIWVrcykge1xuICAgIHRocm93IG5ldyBFcnJvcignRUtTIGNsaWVudCBub3QgaW5pdGlhbGl6ZWQgKGNhbGwgXCJjb25maWd1cmVBc3N1bWVSb2xlXCIpJyk7XG4gIH1cblxuICByZXR1cm4gZWtzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb25FdmVudChldmVudDogQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCkge1xuICBjb25zdCBwcm92aWRlciA9IGNyZWF0ZVJlc291cmNlSGFuZGxlcihldmVudCk7XG4gIHJldHVybiBwcm92aWRlci5vbkV2ZW50KCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0NvbXBsZXRlKGV2ZW50OiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50KTogUHJvbWlzZTxJc0NvbXBsZXRlUmVzcG9uc2U+IHtcbiAgY29uc3QgcHJvdmlkZXIgPSBjcmVhdGVSZXNvdXJjZUhhbmRsZXIoZXZlbnQpO1xuICByZXR1cm4gcHJvdmlkZXIuaXNDb21wbGV0ZSgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZXNvdXJjZUhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQpIHtcbiAgc3dpdGNoIChldmVudC5SZXNvdXJjZVR5cGUpIHtcbiAgICBjYXNlIGNvbnN0cy5DTFVTVEVSX1JFU09VUkNFX1RZUEU6IHJldHVybiBuZXcgQ2x1c3RlclJlc291cmNlSGFuZGxlcihkZWZhdWx0RWtzQ2xpZW50LCBldmVudCk7XG4gICAgY2FzZSBjb25zdHMuRkFSR0FURV9QUk9GSUxFX1JFU09VUkNFX1RZUEU6IHJldHVybiBuZXcgRmFyZ2F0ZVByb2ZpbGVSZXNvdXJjZUhhbmRsZXIoZGVmYXVsdEVrc0NsaWVudCwgZXZlbnQpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHJlc291cmNlIHR5cGUgXCIke2V2ZW50LlJlc291cmNlVHlwZX1gKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster-test.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster-test.assets.json index 168e179bcd186..f802306395198 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster-test.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster-test.assets.json @@ -15,29 +15,29 @@ } } }, - "3f579d6c1ab146cac713730c96809dd4a9c5d9750440fb835ab20fd6925e528c": { + "9202bb21d52e07810fc1da0f6acf2dcb75a40a43a9a2efbcfc9ae39535c6260c": { "source": { - "path": "asset.3f579d6c1ab146cac713730c96809dd4a9c5d9750440fb835ab20fd6925e528c.zip", + "path": "asset.9202bb21d52e07810fc1da0f6acf2dcb75a40a43a9a2efbcfc9ae39535c6260c.zip", "packaging": "file" }, "destinations": { "current_account-us-east-1": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "3f579d6c1ab146cac713730c96809dd4a9c5d9750440fb835ab20fd6925e528c.zip", + "objectKey": "9202bb21d52e07810fc1da0f6acf2dcb75a40a43a9a2efbcfc9ae39535c6260c.zip", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } } }, - "bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31": { + "acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea": { "source": { - "path": "asset.bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31", + "path": "asset.acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea", "packaging": "zip" }, "destinations": { "current_account-us-east-1": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31.zip", + "objectKey": "acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea.zip", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } @@ -127,7 +127,7 @@ } } }, - "9ed92d6ca2f94ae73ed093332b1f59259597979e72e0d3ed2f89c0a775034d7b": { + "10f52f7e1cae4868df3700d82e3d31b19d73ad74fa99aefab4a7e994f5752106": { "source": { "path": "awscdkeksclustertestawscdkawseksClusterResourceProvider5F388D1A.nested.template.json", "packaging": "file" @@ -135,7 +135,7 @@ "destinations": { "current_account-us-east-1": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "9ed92d6ca2f94ae73ed093332b1f59259597979e72e0d3ed2f89c0a775034d7b.json", + "objectKey": "10f52f7e1cae4868df3700d82e3d31b19d73ad74fa99aefab4a7e994f5752106.json", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } @@ -155,7 +155,7 @@ } } }, - "f50b3b98b38aa353e06b0440b8467a084c8f4727c45a3b6cd28669a7f6f5945d": { + "6be1ccd4181b8be66d2ddaca1de5fc94578bd0ef370c51f60f4f0e701f3e598e": { "source": { "path": "aws-cdk-eks-cluster-test.template.json", "packaging": "file" @@ -163,7 +163,7 @@ "destinations": { "current_account-us-east-1": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1", - "objectKey": "f50b3b98b38aa353e06b0440b8467a084c8f4727c45a3b6cd28669a7f6f5945d.json", + "objectKey": "6be1ccd4181b8be66d2ddaca1de5fc94578bd0ef370c51f60f4f0e701f3e598e.json", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-us-east-1" } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster-test.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster-test.template.json index b76903f01b706..2931ae48e3b42 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster-test.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/aws-cdk-eks-cluster-test.template.json @@ -4178,7 +4178,7 @@ { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "/9ed92d6ca2f94ae73ed093332b1f59259597979e72e0d3ed2f89c0a775034d7b.json" + "/10f52f7e1cae4868df3700d82e3d31b19d73ad74fa99aefab4a7e994f5752106.json" ] ] } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/awscdkeksclustertestawscdkawseksClusterResourceProvider5F388D1A.nested.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/awscdkeksclustertestawscdkawseksClusterResourceProvider5F388D1A.nested.template.json index 75083f6d75292..d74a1782e02b5 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/awscdkeksclustertestawscdkawseksClusterResourceProvider5F388D1A.nested.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/awscdkeksclustertestawscdkawseksClusterResourceProvider5F388D1A.nested.template.json @@ -7,7 +7,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "S3Key": "3f579d6c1ab146cac713730c96809dd4a9c5d9750440fb835ab20fd6925e528c.zip" + "S3Key": "9202bb21d52e07810fc1da0f6acf2dcb75a40a43a9a2efbcfc9ae39535c6260c.zip" }, "Description": "/opt/nodejs/node_modules/proxy-agent" } @@ -50,7 +50,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "S3Key": "bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31.zip" + "S3Key": "acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea.zip" }, "Description": "onEvent handler for EKS cluster resource provider", "Environment": { @@ -115,7 +115,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "S3Key": "bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31.zip" + "S3Key": "acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea.zip" }, "Description": "isComplete handler for EKS cluster resource provider", "Environment": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/manifest.json index 52f99fa11aab2..f58bb6dbb9596 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-us-east-1", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-us-east-1", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/f50b3b98b38aa353e06b0440b8467a084c8f4727c45a3b6cd28669a7f6f5945d.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1/6be1ccd4181b8be66d2ddaca1de5fc94578bd0ef370c51f60f4f0e701f3e598e.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/tree.json index 33fb17e796dbe..29d7be4a86904 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-eks/test/integ.eks-cluster.js.snapshot/tree.json @@ -5422,7 +5422,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "s3Key": "3f579d6c1ab146cac713730c96809dd4a9c5d9750440fb835ab20fd6925e528c.zip" + "s3Key": "9202bb21d52e07810fc1da0f6acf2dcb75a40a43a9a2efbcfc9ae39535c6260c.zip" }, "description": "/opt/nodejs/node_modules/proxy-agent" } @@ -5535,7 +5535,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "s3Key": "bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31.zip" + "s3Key": "acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea.zip" }, "description": "onEvent handler for EKS cluster resource provider", "environment": { @@ -5667,7 +5667,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "s3Key": "bb544555825b6abfdf2cf0c13f9410a77d62ad0fe0bf5c38cef55631cf427f31.zip" + "s3Key": "acb2f8cda93fc5e8f324cbdf29471a1182441f7707645a562b4d29eb57c80eea.zip" }, "description": "isComplete handler for EKS cluster resource provider", "environment": { @@ -6569,7 +6569,7 @@ { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-east-1" }, - "/9ed92d6ca2f94ae73ed093332b1f59259597979e72e0d3ed2f89c0a775034d7b.json" + "/10f52f7e1cae4868df3700d82e3d31b19d73ad74fa99aefab4a7e994f5752106.json" ] ] } diff --git a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/index.ts b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/index.ts index a6e6980e9ec83..4004ddf5cd22e 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/index.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/index.ts @@ -5,15 +5,14 @@ import { EKS } from '@aws-sdk/client-eks'; import { fromTemporaryCredentials } from '@aws-sdk/credential-providers'; // eslint-disable-next-line import/no-extraneous-dependencies import { NodeHttpHandler } from '@aws-sdk/node-http-handler'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { ProxyAgent } from 'proxy-agent'; import { ClusterResourceHandler } from './cluster'; import { EksClient } from './common'; import * as consts from './consts'; import { FargateProfileResourceHandler } from './fargate'; import { IsCompleteResponse } from '../../../custom-resources/lib/provider-framework/types'; -// eslint-disable-next-line @typescript-eslint/no-require-imports, import/no-extraneous-dependencies -const ProxyAgent = require('proxy-agent'); - const proxyAgent = new ProxyAgent(); const awsConfig = { logger: console, From 6d315b8539e714143c35762a45e8f8f4ddcc9217 Mon Sep 17 00:00:00 2001 From: Masashi Tomooka Date: Thu, 17 Aug 2023 17:29:10 +0900 Subject: [PATCH 08/56] fix(cli): cannot hotswap ECS task definitions containing certain intrinsics (#26404) ## Reason for this change Currently an ECS task definition cannot be hotswapped in many cases, for example when it contains references to certain AWS resources as environment variables. This PR removes the limitation and make hotswaps possible in much more various situations. Specifically, if there is any token that is not part of the following, we cannot hotswap a task definition: 1. Ref functions, which will be resolved as physical resource ids 2. GetAtt functions for some resources and attributes (manually supported one by one, [code](https://github.com/aws/aws-cdk/blob/5ccc56975c323ea19fd0917def51184e13f440d9/packages/aws-cdk/lib/api/evaluate-cloudformation-template.ts#L352)) 3. several simple CFn functions (join, split, select, sub) 4. parameters like AWS::AccountId, Region, Partition, or UrlSuffix Although it is not supported much, using `GetAtt` function in a task definition is very common (imagine you reference other resource's property as an environment variable). This PR allows to hotswap a task definition even if it contains these tokens. ## Solution To hotswap a task definition, we need to construct a task definition to call `registerTaskDefinition` API. For this, we have to [evaluate](https://github.com/aws/aws-cdk/blob/5ccc56975c323ea19fd0917def51184e13f440d9/packages/aws-cdk/lib/api/evaluate-cloudformation-template.ts#L134) CloudFormation template locally to resolve all the intrinsics in the template. However, some intrinsics such as `Fn::GetAtt` is not fully supported by CDK CLI because we have to manually support them for each AWS resource type. The reason why some task definitions are unhotswappable is that there are such intrinsics in the template and the CDK fails to evaluate it locally. So the basic idea to overcome this limitation in this PR is that we don't try to evaluate it locally, but we fetch the latest task definition already deployed and get the required values from it. Here's how we can implement the idea. ### How we determine if changes to a task definition can be hotswapped In the hotswap process, we have to decide whether the change can be hotswapped or not. Now we can hotswap the task definition if 1. there are only changes in `ContainerDefinitions` field, and all the fields in the task definition can be evaluated locally. (original behavior) OR, 2. there are only changes in `ContainerDefinitions` field, and all the **updated** field can be evaluated locally (added in this PR). The first condition can actually be included in the second condition, but for now I keep it as-is to avoid the possibility of breaking the existing behavior. If the second condition is true, we fetch the latest task definition from AWS account, override the updated fields, and register a new task definition to update a service. By this way, we don't have to evaluate tokens in unchanged fields locally, allowing to use hotswap in much more situations. ### How we compare the old and new task definition Here is an example task definition: ```json { "ContainerDefinitions": [ { "Environment": [ { "Name": "VPC_ID", "Value": { "Fn::GetAtt": [ "Vpc8378EB38", "CidrBlock" ] } } ], "Essential": true, "Image": "nginx:stable", "Name": "EcsApp" } ], "Cpu": "256", "Family": "myteststackTask289798EC", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": [ "FARGATE" ], "TaskRoleArn": { "Fn::GetAtt": [ "TaskTaskRoleE98524A1", "Arn" ] } } ``` We compare the old and new task definition in the following steps: 1. Check if there are only changes in `ContainerDefinitions` field. If not, we cannot hotswap. 2. Try `evaluateCfnExpression` on the containerDefinitons. If it can be evaluated, proceed to hotswap. If not, proceed to step 3. 3. Check if the length of `ContainerDefinitions` is the same. If not, we cannot hotswap. 4. For each container definition, deep-compare each key (e.g. `Environment`, `Image`, `Name`, etc) 5. For each key, if there is any diff in the corresponding value, try `evaluateCfnExpression` on the value. If the evaluation fails, we cannot hotswap. 6. After checking all the keys and there is no field that cannot be hotswapped, proceed to hotswap. Imagine if there is a change only in `Image` field (container image tag) but `Environment` field contains unsupported intrinsics (e.g. `"Fn::GetAtt": ["Vpc8378EB38", "CidrBlock"]`). In the previous CDK CLI we cannot hotswap it due to an evaluation error. We can now hotswap it because we don't have to evaluate the `Environment` field when it has no diffs. Closes #25563 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/aws-cdk/lib/api/hotswap/common.ts | 212 ++++++ .../aws-cdk/lib/api/hotswap/ecs-services.ts | 107 ++- .../ecs-services-hotswap-deployments.test.ts | 608 +++++++++++++----- 3 files changed, 734 insertions(+), 193 deletions(-) diff --git a/packages/aws-cdk/lib/api/hotswap/common.ts b/packages/aws-cdk/lib/api/hotswap/common.ts index d72d7b270fc85..5bbb69535faf1 100644 --- a/packages/aws-cdk/lib/api/hotswap/common.ts +++ b/packages/aws-cdk/lib/api/hotswap/common.ts @@ -1,5 +1,6 @@ import * as cfn_diff from '@aws-cdk/cloudformation-diff'; import { ISDK } from '../aws-auth'; +import { CfnEvaluationException, EvaluateCloudFormationTemplate } from '../evaluate-cloudformation-template'; export const ICON = '✨'; @@ -135,6 +136,13 @@ export function lowerCaseFirstCharacter(str: string): string { return str.length > 0 ? `${str[0].toLowerCase()}${str.slice(1)}` : str; } +/** + * This function upper cases the first character of the string provided. + */ +export function upperCaseFirstCharacter(str: string): string { + return str.length > 0 ? `${str[0].toUpperCase()}${str.slice(1)}` : str; +} + export type PropDiffs = Record>; export class ClassifiedChanges { @@ -213,3 +221,207 @@ export function reportNonHotswappableResource( reason, }]; } + +type ChangedProps = { + /** + * Array to specify the property from an object. + * e.g. Given this object `{ 'a': { 'b': 1 } }`, the key array for the element `1` will be `['a', 'b']` + */ + key: string[]; + + /** + * Whether the property is added (also modified) or removed. + */ + type: 'removed' | 'added'; + + /** + * evaluated value of the property. + * undefined if type == 'removed' + */ + value?: any +}; + +function detectChangedProps(next: any, prev: any): ChangedProps[] { + const changedProps: ChangedProps[] = []; + changedProps.push(...detectAdditions(next, prev)); + changedProps.push(...detectRemovals(next, prev)); + return changedProps; +} + +function detectAdditions(next: any, prev: any, keys: string[] = []): ChangedProps[] { + // Compare each value of two objects, detect additions (added or modified properties) + // If we encounter CFn intrinsic (key.startsWith('Fn::') || key == 'Ref'), stop recursion + + if (typeof next !== 'object') { + if (next !== prev) { + // there is an addition or change to the property + return [{ key: new Array(...keys), type: 'added' }]; + } else { + return []; + } + } + + if (typeof prev !== 'object') { + // there is an addition or change to the property + return [{ key: new Array(...keys), type: 'added' }]; + } + + // If the next is a CFn intrinsic, don't recurse further. + const childKeys = Object.keys(next); + if (childKeys.length === 1 && (childKeys[0].startsWith('Fn::') || childKeys[0] === 'Ref')) { + if (!deepCompareObject(prev, next)) { + // there is an addition or change to the property + return [{ key: new Array(...keys), type: 'added' }]; + } else { + return []; + } + } + + const changedProps: ChangedProps[] = []; + // compare children + for (const key of childKeys) { + keys.push(key); + changedProps.push(...detectAdditions((next as any)[key], (prev as any)[key], keys)); + keys.pop(); + } + return changedProps; +} + +function detectRemovals(next: any, prev: any, keys: string[] = []): ChangedProps[] { + // Compare each value of two objects, detect removed properties + // To do this, find any keys that exist only in prev object. + // If we encounter CFn intrinsic (key.startsWith('Fn::') || key == 'Ref'), stop recursion + if (next === undefined) { + return [{ key: new Array(...keys), type: 'removed' }]; + } + + if (typeof prev !== 'object' || typeof next !== 'object') { + // either prev or next is not an object nor undefined, then the property is not removed + return []; + } + + // If the prev is a CFn intrinsic, don't recurse further. + const childKeys = Object.keys(prev); + if (childKeys.length === 1 && (childKeys[0].startsWith('Fn::') || childKeys[0] === 'Ref')) { + // next is not undefined here, so it is at least not removed + return []; + } + + const changedProps: ChangedProps[] = []; + // compare children + for (const key of childKeys) { + keys.push(key); + changedProps.push(...detectRemovals((next as any)[key], (prev as any)[key], keys)); + keys.pop(); + } + return changedProps; +} + +/** + * return true when two objects are identical + */ +function deepCompareObject(lhs: any, rhs: any): boolean { + if (typeof lhs !== 'object') { + return lhs === rhs; + } + if (typeof rhs !== 'object') { + return false; + } + if (Object.keys(lhs).length != Object.keys(rhs).length) { + return false; + } + for (const key of Object.keys(lhs)) { + if (!deepCompareObject((lhs as any)[key], (rhs as any)[key])) { + return false; + } + } + return true; +} + +interface EvaluatedPropertyUpdates { + readonly updates: ChangedProps[]; + readonly unevaluatableUpdates: ChangedProps[]; +} + +/** + * Diff each property of the changes, and check if each diff can be actually hotswapped (i.e. evaluated by EvaluateCloudFormationTemplate.) + * If any diff cannot be evaluated, they are reported by unevaluatableUpdates. + * This method works on more granular level than HotswappableChangeCandidate.propertyUpdates. + * + * If propertiesToInclude is specified, we only compare properties that are under keys in the argument. + */ +export async function evaluatableProperties( + evaluate: EvaluateCloudFormationTemplate, + change: HotswappableChangeCandidate, + propertiesToInclude?: string[], +): Promise { + const prev = change.oldValue.Properties!; + const next = change.newValue.Properties!; + const changedProps = detectChangedProps(next, prev).filter( + prop => propertiesToInclude?.includes(prop.key[0]) ?? true, + ); + const evaluatedUpdates = await Promise.all( + changedProps + .filter((prop) => prop.type === 'added') + .map(async (prop) => { + const val = getPropertyFromKey(prop.key, next); + try { + const evaluated = await evaluate.evaluateCfnExpression(val); + return { + ...prop, + value: evaluated, + }; + } catch (e) { + if (e instanceof CfnEvaluationException) { + return prop; + } + throw e; + } + })); + const unevaluatableUpdates = evaluatedUpdates.filter(update => update.value === undefined); + evaluatedUpdates.push(...changedProps.filter(prop => prop.type == 'removed')); + + return { + updates: evaluatedUpdates, + unevaluatableUpdates, + }; +} + +function getPropertyFromKey(key: string[], obj: object) { + return key.reduce((prev, cur) => (prev as any)?.[cur], obj); +} + +function overwriteProperty(key: string[], newValue: any, target: object) { + for (const next of key.slice(0, -1)) { + if (next in target) { + target = (target as any)[next]; + } else if (Array.isArray(target)) { + // When an element is added to an array, we need explicitly allocate the new element. + target = {}; + (target as any)[next] = {}; + } else { + // This is an unexpected condition. Perhaps the deployed task definition is modified outside of CFn. + return false; + } + } + if (newValue === undefined) { + delete (target as any)[key[key.length - 1]]; + } else { + (target as any)[key[key.length - 1]] = newValue; + } + return true; +} + +/** + * Take the old template and property updates, and synthesize a new template. + */ +export function applyPropertyUpdates(patches: ChangedProps[], target: any) { + target = JSON.parse(JSON.stringify(target)); + for (const patch of patches) { + const res = overwriteProperty(patch.key, patch.value, target); + if (!res) { + throw new Error(`failed to applying patch to ${patch.key.join('.')}. Please try deploying without hotswap first.`); + } + } + return target; +} diff --git a/packages/aws-cdk/lib/api/hotswap/ecs-services.ts b/packages/aws-cdk/lib/api/hotswap/ecs-services.ts index ad62950fc861b..7f2dea19ea493 100644 --- a/packages/aws-cdk/lib/api/hotswap/ecs-services.ts +++ b/packages/aws-cdk/lib/api/hotswap/ecs-services.ts @@ -1,5 +1,5 @@ import * as AWS from 'aws-sdk'; -import { ChangeHotswapResult, classifyChanges, HotswappableChangeCandidate, lowerCaseFirstCharacter, reportNonHotswappableChange, transformObjectKeys } from './common'; +import { ChangeHotswapResult, classifyChanges, HotswappableChangeCandidate, lowerCaseFirstCharacter, reportNonHotswappableChange, transformObjectKeys, upperCaseFirstCharacter, applyPropertyUpdates, evaluatableProperties } from './common'; import { ISDK } from '../aws-auth'; import { EvaluateCloudFormationTemplate } from '../evaluate-cloudformation-template'; @@ -16,7 +16,8 @@ export async function isHotswappableEcsServiceChange( // We only allow a change in the ContainerDefinitions of the TaskDefinition for now - // it contains the image and environment variables, so seems like a safe bet for now. // We might revisit this decision in the future though! - const classifiedChanges = classifyChanges(change, ['ContainerDefinitions']); + const propertiesToHotswap = ['ContainerDefinitions']; + const classifiedChanges = classifyChanges(change, propertiesToHotswap); classifiedChanges.reportNonHotswappablePropertyChanges(ret); // find all ECS Services that reference the TaskDefinition that changed @@ -33,7 +34,8 @@ export async function isHotswappableEcsServiceChange( // if there are no resources referencing the TaskDefinition, // hotswap is not possible in FALL_BACK mode reportNonHotswappableChange(ret, change, undefined, 'No ECS services reference the changed task definition', false); - } if (resourcesReferencingTaskDef.length > ecsServicesReferencingTaskDef.length) { + } + if (resourcesReferencingTaskDef.length > ecsServicesReferencingTaskDef.length) { // if something besides an ECS Service is referencing the TaskDefinition, // hotswap is not possible in FALL_BACK mode const nonEcsServiceTaskDefRefs = resourcesReferencingTaskDef.filter(r => r.Type !== 'AWS::ECS::Service'); @@ -44,14 +46,32 @@ export async function isHotswappableEcsServiceChange( const namesOfHotswappableChanges = Object.keys(classifiedChanges.hotswappableProps); if (namesOfHotswappableChanges.length > 0) { - const taskDefinitionResource = await prepareTaskDefinitionChange(evaluateCfnTemplate, logicalId, change); + const familyName = await getFamilyName(evaluateCfnTemplate, logicalId, change); + if (familyName === undefined) { + reportNonHotswappableChange(ret, change, undefined, 'Failed to determine family name of the task definition', false); + return ret; + } + const oldTaskDefinitionArn = await evaluateCfnTemplate.findPhysicalNameFor(logicalId); + if (oldTaskDefinitionArn === undefined) { + reportNonHotswappableChange(ret, change, undefined, 'Failed to determine ARN of the task definition', false); + return ret; + } + + const changes = await evaluatableProperties(evaluateCfnTemplate, change, propertiesToHotswap); + if (changes.unevaluatableUpdates.length > 0) { + reportNonHotswappableChange(ret, change, undefined, `Found changes that cannot be evaluated locally in the task definition - ${ + changes.unevaluatableUpdates.map(p => p.key.join('.')).join(', ') + }`, false); + return ret; + } + ret.push({ hotswappable: true, resourceType: change.newValue.Type, propsChanged: namesOfHotswappableChanges, service: 'ecs-service', resourceNames: [ - `ECS Task Definition '${await taskDefinitionResource.Family}'`, + `ECS Task Definition '${familyName}'`, ...ecsServicesReferencingTaskDef.map(ecsService => `ECS Service '${ecsService.serviceArn.split('/')[2]}'`), ], apply: async (sdk: ISDK) => { @@ -59,11 +79,43 @@ export async function isHotswappableEcsServiceChange( // we need to lowercase the evaluated TaskDef from CloudFormation, // as the AWS SDK uses lowercase property names for these - // The SDK requires more properties here than its worth doing explicit typing for - // instead, just use all the old values in the diff to fill them in implicitly - const lowercasedTaskDef = transformObjectKeys(taskDefinitionResource, lowerCaseFirstCharacter, { - // All the properties that take arbitrary string as keys i.e. { "string" : "string" } - // https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html#API_RegisterTaskDefinition_RequestSyntax + // get the task definition of the family and revision corresponding to the old CFn template + const target = await sdk + .ecs() + .describeTaskDefinition({ + taskDefinition: oldTaskDefinitionArn, + include: ['TAGS'], + }) + .promise(); + if (target.taskDefinition === undefined) { + throw new Error(`Could not find a task definition: ${oldTaskDefinitionArn}. Try deploying without hotswap first.`); + } + + // The describeTaskDefinition response contains several keys that must not exist in a registerTaskDefinition request. + // We remove these keys here, comparing these two structs: + // https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html#API_RegisterTaskDefinition_RequestSyntax + // https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTaskDefinition.html#API_DescribeTaskDefinition_ResponseSyntax + [ + 'compatibilities', + 'taskDefinitionArn', + 'revision', + 'status', + 'requiresAttributes', + 'compatibilities', + 'registeredAt', + 'registeredBy', + ].forEach(key=> delete (target.taskDefinition as any)[key]); + + // the tags field is in a different location in describeTaskDefinition response, + // moving it as intended for registerTaskDefinition request. + if (target.tags !== undefined && target.tags.length > 0) { + (target.taskDefinition as any).tags = target.tags; + delete target.tags; + } + + // Don't transform the properties that take arbitrary string as keys i.e. { "string" : "string" } + // https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html#API_RegisterTaskDefinition_RequestSyntax + const excludeFromTransform = { ContainerDefinitions: { DockerLabels: true, FirelensConfiguration: { @@ -79,7 +131,14 @@ export async function isHotswappableEcsServiceChange( Labels: true, }, }, - }); + } as const; + // We first uppercase the task definition to properly merge it with the one from CloudFormation template. + const upperCasedTaskDef = transformObjectKeys(target.taskDefinition, upperCaseFirstCharacter, excludeFromTransform); + // merge evaluatable diff from CloudFormation template. + const updatedTaskDef = applyPropertyUpdates(changes.updates, upperCasedTaskDef); + // lowercase the merged task definition to use it in AWS SDK. + const lowercasedTaskDef = transformObjectKeys(updatedTaskDef, lowerCaseFirstCharacter, excludeFromTransform); + const registerTaskDefResponse = await sdk.ecs().registerTaskDefinition(lowercasedTaskDef).promise(); const taskDefRevArn = registerTaskDefResponse.taskDefinition?.taskDefinitionArn; @@ -171,14 +230,15 @@ interface EcsService { readonly serviceArn: string; } -async function prepareTaskDefinitionChange( - evaluateCfnTemplate: EvaluateCloudFormationTemplate, logicalId: string, change: HotswappableChangeCandidate, -) { +async function getFamilyName( + evaluateCfnTemplate: EvaluateCloudFormationTemplate, + logicalId: string, + change: HotswappableChangeCandidate) { const taskDefinitionResource: { [name: string]: any } = { ...change.oldValue.Properties, ContainerDefinitions: change.newValue.Properties?.ContainerDefinitions, }; - // first, let's get the name of the family + // first, let's get the name of the family const familyNameOrArn = await evaluateCfnTemplate.establishResourcePhysicalName(logicalId, taskDefinitionResource?.Family); if (!familyNameOrArn) { // if the Family property has not been provided, and we can't find it in the current Stack, @@ -189,17 +249,12 @@ async function prepareTaskDefinitionChange( // remove it if needed const familyNameOrArnParts = familyNameOrArn.split(':'); const family = familyNameOrArnParts.length > 1 - // familyNameOrArn is actually an ARN, of the format 'arn:aws:ecs:region:account:task-definition/:' - // so, take the 6th element, at index 5, and split it on '/' + // familyNameOrArn is actually an ARN, of the format 'arn:aws:ecs:region:account:task-definition/:' + // so, take the 6th element, at index 5, and split it on '/' ? familyNameOrArnParts[5].split('/')[1] - // otherwise, familyNameOrArn is just the simple name evaluated from the CloudFormation template + // otherwise, familyNameOrArn is just the simple name evaluated from the CloudFormation template : familyNameOrArn; - // then, let's evaluate the body of the remainder of the TaskDef (without the Family property) - return { - ...await evaluateCfnTemplate.evaluateCfnExpression({ - ...(taskDefinitionResource ?? {}), - Family: undefined, - }), - Family: family, - }; + // then, let's evaluate the body of the remainder of the TaskDef (without the Family property) + + return family; } diff --git a/packages/aws-cdk/test/api/hotswap/ecs-services-hotswap-deployments.test.ts b/packages/aws-cdk/test/api/hotswap/ecs-services-hotswap-deployments.test.ts index e0267635a59d8..b9be0725315c8 100644 --- a/packages/aws-cdk/test/api/hotswap/ecs-services-hotswap-deployments.test.ts +++ b/packages/aws-cdk/test/api/hotswap/ecs-services-hotswap-deployments.test.ts @@ -1,19 +1,22 @@ /* eslint-disable import/order */ import * as AWS from 'aws-sdk'; import * as setup from './hotswap-test-setup'; -import { HotswapMode } from '../../../lib/api/hotswap/common'; +import { HotswapMode, lowerCaseFirstCharacter, transformObjectKeys } from '../../../lib/api/hotswap/common'; let hotswapMockSdkProvider: setup.HotswapMockSdkProvider; let mockRegisterTaskDef: jest.Mock; +let mockDescribeTaskDef: jest.Mock; let mockUpdateService: (params: AWS.ECS.UpdateServiceRequest) => AWS.ECS.UpdateServiceResponse; beforeEach(() => { hotswapMockSdkProvider = setup.setupHotswapTests(); mockRegisterTaskDef = jest.fn(); + mockDescribeTaskDef = jest.fn(); mockUpdateService = jest.fn(); hotswapMockSdkProvider.stubEcs({ registerTaskDefinition: mockRegisterTaskDef, + describeTaskDefinition: mockDescribeTaskDef, updateService: mockUpdateService, }, { // these are needed for the waiter API that the ECS service hotswap uses @@ -30,36 +33,71 @@ beforeEach(() => { }); }); -describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hotswapMode) => { - test('should call registerTaskDefinition and updateService for a difference only in the TaskDefinition with a Family property', async () => { - // GIVEN - setup.setCurrentCfnStackTemplate({ - Resources: { - TaskDef: { - Type: 'AWS::ECS::TaskDefinition', - Properties: { - Family: 'my-task-def', - ContainerDefinitions: [ - { Image: 'image1' }, - ], - }, - }, +function setupCurrentTaskDefinition(props: {taskDefinitionProperties: any, includeService: boolean, otherResources?: any}) { + setup.setCurrentCfnStackTemplate({ + Resources: { + TaskDef: { + Type: 'AWS::ECS::TaskDefinition', + Properties: props.taskDefinitionProperties, + }, + ...(props.includeService ? { Service: { Type: 'AWS::ECS::Service', Properties: { TaskDefinition: { Ref: 'TaskDef' }, }, }, - }, - }); + } : {}), + ...(props.otherResources ?? {}), + }, + }); + if (props.includeService) { setup.pushStackResourceSummaries( setup.stackSummaryOf('Service', 'AWS::ECS::Service', 'arn:aws:ecs:region:account:service/my-cluster/my-service'), ); - mockRegisterTaskDef.mockReturnValue({ - taskDefinition: { - taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + } + setup.pushStackResourceSummaries( + setup.stackSummaryOf('TaskDef', 'AWS::ECS::TaskDefinition', + 'arn:aws:ecs:region:account:task-definition/my-task-def:2'), + ); + mockRegisterTaskDef.mockReturnValue({ + taskDefinition: { + taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + }, + }); + mockDescribeTaskDef.mockReturnValue({ + taskDefinition: transformObjectKeys(props.taskDefinitionProperties, lowerCaseFirstCharacter, { + ContainerDefinitions: { + DockerLabels: true, + FirelensConfiguration: { + Options: true, + }, + LogConfiguration: { + Options: true, + }, + }, + Volumes: { + DockerVolumeConfiguration: { + DriverOpts: true, + Labels: true, + }, }, + }), + }); +} + +describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hotswapMode) => { + test('should call registerTaskDefinition and updateService for a difference only in the TaskDefinition with a Family property', async () => { + // GIVEN + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { Image: 'image1' }, + ], + }, + includeService: true, }); const cdkStackArtifact = setup.cdkStackArtifactOf({ template: { @@ -94,6 +132,10 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot { image: 'image2' }, ], }); + expect(mockDescribeTaskDef).toBeCalledWith({ + taskDefinition: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + include: ['TAGS'], + }); expect(mockUpdateService).toBeCalledWith({ service: 'arn:aws:ecs:region:account:service/my-cluster/my-service', cluster: 'my-cluster', @@ -107,34 +149,15 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot test('any other TaskDefinition property change besides ContainerDefinition cannot be hotswapped in CLASSIC mode but does not block HOTSWAP_ONLY mode deployments', async () => { // GIVEN - setup.setCurrentCfnStackTemplate({ - Resources: { - TaskDef: { - Type: 'AWS::ECS::TaskDefinition', - Properties: { - Family: 'my-task-def', - ContainerDefinitions: [ - { Image: 'image1' }, - ], - Cpu: '256', - }, - }, - Service: { - Type: 'AWS::ECS::Service', - Properties: { - TaskDefinition: { Ref: 'TaskDef' }, - }, - }, - }, - }); - setup.pushStackResourceSummaries( - setup.stackSummaryOf('Service', 'AWS::ECS::Service', - 'arn:aws:ecs:region:account:service/my-cluster/my-service'), - ); - mockRegisterTaskDef.mockReturnValue({ - taskDefinition: { - taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { Image: 'image1' }, + ], + Cpu: '256', }, + includeService: true, }); const cdkStackArtifact = setup.cdkStackArtifactOf({ template: { @@ -166,6 +189,7 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot // THEN expect(deployStackResult).toBeUndefined(); expect(mockRegisterTaskDef).not.toHaveBeenCalled(); + expect(mockDescribeTaskDef).not.toHaveBeenCalled(); expect(mockUpdateService).not.toHaveBeenCalled(); } else if (hotswapMode === HotswapMode.HOTSWAP_ONLY) { // WHEN @@ -180,6 +204,10 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot ], cpu: '256', // this uses the old value because a new value could cause a service replacement }); + expect(mockDescribeTaskDef).toBeCalledWith({ + taskDefinition: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + include: ['TAGS'], + }); expect(mockUpdateService).toBeCalledWith({ service: 'arn:aws:ecs:region:account:service/my-cluster/my-service', cluster: 'my-cluster', @@ -194,34 +222,15 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot test('deleting any other TaskDefinition property besides ContainerDefinition results in a full deployment in CLASSIC mode and a hotswap deployment in HOTSWAP_ONLY mode', async () => { // GIVEN - setup.setCurrentCfnStackTemplate({ - Resources: { - TaskDef: { - Type: 'AWS::ECS::TaskDefinition', - Properties: { - Family: 'my-task-def', - ContainerDefinitions: [ - { Image: 'image1' }, - ], - Cpu: '256', - }, - }, - Service: { - Type: 'AWS::ECS::Service', - Properties: { - TaskDefinition: { Ref: 'TaskDef' }, - }, - }, - }, - }); - setup.pushStackResourceSummaries( - setup.stackSummaryOf('Service', 'AWS::ECS::Service', - 'arn:aws:ecs:region:account:service/my-cluster/my-service'), - ); - mockRegisterTaskDef.mockReturnValue({ - taskDefinition: { - taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { Image: 'image1' }, + ], + Cpu: '256', }, + includeService: true, }); const cdkStackArtifact = setup.cdkStackArtifactOf({ template: { @@ -252,6 +261,7 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot // THEN expect(deployStackResult).toBeUndefined(); expect(mockRegisterTaskDef).not.toHaveBeenCalled(); + expect(mockDescribeTaskDef).not.toHaveBeenCalled(); expect(mockUpdateService).not.toHaveBeenCalled(); } else if (hotswapMode === HotswapMode.HOTSWAP_ONLY) { // WHEN @@ -259,6 +269,10 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot // THEN expect(deployStackResult).not.toBeUndefined(); + expect(mockDescribeTaskDef).toBeCalledWith({ + taskDefinition: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + include: ['TAGS'], + }); expect(mockRegisterTaskDef).toBeCalledWith({ family: 'my-task-def', containerDefinitions: [ @@ -280,33 +294,23 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot test('should call registerTaskDefinition and updateService for a difference only in the TaskDefinition without a Family property', async () => { // GIVEN - setup.setCurrentCfnStackTemplate({ - Resources: { - TaskDef: { - Type: 'AWS::ECS::TaskDefinition', - Properties: { - ContainerDefinitions: [ - { Image: 'image1' }, - ], - }, - }, - Service: { - Type: 'AWS::ECS::Service', - Properties: { - TaskDefinition: { Ref: 'TaskDef' }, - }, - }, + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + ContainerDefinitions: [ + { Image: 'image1' }, + ], }, + includeService: true, }); - setup.pushStackResourceSummaries( - setup.stackSummaryOf('TaskDef', 'AWS::ECS::TaskDefinition', - 'arn:aws:ecs:region:account:task-definition/my-task-def:2'), - setup.stackSummaryOf('Service', 'AWS::ECS::Service', - 'arn:aws:ecs:region:account:service/my-cluster/my-service'), - ); - mockRegisterTaskDef.mockReturnValue({ + mockDescribeTaskDef.mockReturnValue({ taskDefinition: { - taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + family: 'my-task-def', + containerDefinitions: [ + { + image: 'image1', + }, + ], }, }); const cdkStackArtifact = setup.cdkStackArtifactOf({ @@ -335,6 +339,10 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot // THEN expect(deployStackResult).not.toBeUndefined(); + expect(mockDescribeTaskDef).toBeCalledWith({ + taskDefinition: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + include: ['TAGS'], + }); expect(mockRegisterTaskDef).toBeCalledWith({ family: 'my-task-def', containerDefinitions: [ @@ -354,26 +362,14 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot test('a difference just in a TaskDefinition, without any services using it, is not hotswappable in FALL_BACK mode', async () => { // GIVEN - setup.setCurrentCfnStackTemplate({ - Resources: { - TaskDef: { - Type: 'AWS::ECS::TaskDefinition', - Properties: { - ContainerDefinitions: [ - { Image: 'image1' }, - ], - }, - }, - }, - }); - setup.pushStackResourceSummaries( - setup.stackSummaryOf('TaskDef', 'AWS::ECS::TaskDefinition', - 'arn:aws:ecs:region:account:task-definition/my-task-def:2'), - ); - mockRegisterTaskDef.mockReturnValue({ - taskDefinition: { - taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { Image: 'image1' }, + ], }, + includeService: false, }); const cdkStackArtifact = setup.cdkStackArtifactOf({ template: { @@ -396,6 +392,7 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot // THEN expect(deployStackResult).toBeUndefined(); + expect(mockDescribeTaskDef).not.toHaveBeenCalled(); expect(mockRegisterTaskDef).not.toHaveBeenCalled(); expect(mockUpdateService).not.toHaveBeenCalled(); } else if (hotswapMode === HotswapMode.HOTSWAP_ONLY) { @@ -404,6 +401,10 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot // THEN expect(deployStackResult).not.toBeUndefined(); + expect(mockDescribeTaskDef).toBeCalledWith({ + taskDefinition: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + include: ['TAGS'], + }); expect(mockRegisterTaskDef).toBeCalledWith({ family: 'my-task-def', containerDefinitions: [ @@ -417,23 +418,15 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot test('if anything besides an ECS Service references the changed TaskDefinition, hotswapping is not possible in CLASSIC mode but is possible in HOTSWAP_ONLY', async () => { // GIVEN - setup.setCurrentCfnStackTemplate({ - Resources: { - TaskDef: { - Type: 'AWS::ECS::TaskDefinition', - Properties: { - Family: 'my-task-def', - ContainerDefinitions: [ - { Image: 'image1' }, - ], - }, - }, - Service: { - Type: 'AWS::ECS::Service', - Properties: { - TaskDefinition: { Ref: 'TaskDef' }, - }, - }, + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { Image: 'image1' }, + ], + }, + includeService: true, + otherResources: { Function: { Type: 'AWS::Lambda::Function', Properties: { @@ -446,15 +439,6 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot }, }, }); - setup.pushStackResourceSummaries( - setup.stackSummaryOf('Service', 'AWS::ECS::Service', - 'arn:aws:ecs:region:account:service/my-cluster/my-service'), - ); - mockRegisterTaskDef.mockReturnValue({ - taskDefinition: { - taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', - }, - }); const cdkStackArtifact = setup.cdkStackArtifactOf({ template: { Resources: { @@ -493,6 +477,7 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot // THEN expect(deployStackResult).toBeUndefined(); + expect(mockDescribeTaskDef).not.toHaveBeenCalled(); expect(mockRegisterTaskDef).not.toHaveBeenCalled(); expect(mockUpdateService).not.toHaveBeenCalled(); } else if (hotswapMode === HotswapMode.HOTSWAP_ONLY) { @@ -501,6 +486,10 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot // THEN expect(deployStackResult).not.toBeUndefined(); + expect(mockDescribeTaskDef).toBeCalledWith({ + taskDefinition: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + include: ['TAGS'], + }); expect(mockRegisterTaskDef).toBeCalledWith({ family: 'my-task-def', containerDefinitions: [ @@ -519,43 +508,328 @@ describe.each([HotswapMode.FALL_BACK, HotswapMode.HOTSWAP_ONLY])('%p mode', (hot } }); - test('should call registerTaskDefinition with certain properties not lowercased', async () => { + test('should call registerTaskDefinition, describeTaskDefinition, and updateService for a difference only in the container image but with environment variables of unsupported intrinsics', async () => { // GIVEN - setup.setCurrentCfnStackTemplate({ - Resources: { - TaskDef: { - Type: 'AWS::ECS::TaskDefinition', - Properties: { - Family: 'my-task-def', - ContainerDefinitions: [ - { Image: 'image1' }, + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { + Image: 'image1', + Environment: [ + { + Name: 'FOO', + Value: { 'Fn::GetAtt': ['Bar', 'Baz'] }, + }, ], - Volumes: [ + }, + ], + }, + includeService: true, + }); + mockDescribeTaskDef.mockReturnValue({ + taskDefinition: { + taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + family: 'my-task-def', + containerDefinitions: [ + { + image: 'image1', + environment: [ { - DockerVolumeConfiguration: { - DriverOpts: { Option1: 'option1' }, - Labels: { Label1: 'label1' }, - }, + name: 'FOO', + value: 'value', }, ], }, + ], + }, + }); + const cdkStackArtifact = setup.cdkStackArtifactOf({ + template: { + Resources: { + TaskDef: { + Type: 'AWS::ECS::TaskDefinition', + Properties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { + Image: 'image2', + Environment: [ + { + Name: 'FOO', + Value: { 'Fn::GetAtt': ['Bar', 'Baz'] }, + }, + ], + }, + ], + }, + }, + Service: { + Type: 'AWS::ECS::Service', + Properties: { + TaskDefinition: { Ref: 'TaskDef' }, + }, + }, }, - Service: { - Type: 'AWS::ECS::Service', - Properties: { - TaskDefinition: { Ref: 'TaskDef' }, + }, + }); + + // WHEN + const deployStackResult = await hotswapMockSdkProvider.tryHotswapDeployment(hotswapMode, cdkStackArtifact); + + // THEN + expect(deployStackResult).not.toBeUndefined(); + expect(mockRegisterTaskDef).toBeCalledWith({ + family: 'my-task-def', + containerDefinitions: [ + { + image: 'image2', + environment: [ + { + name: 'FOO', + value: 'value', + }, + ], + }, + ], + }); + expect(mockUpdateService).toBeCalledWith({ + service: 'arn:aws:ecs:region:account:service/my-cluster/my-service', + cluster: 'my-cluster', + taskDefinition: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + deploymentConfiguration: { + minimumHealthyPercent: 0, + }, + forceNewDeployment: true, + }); + }); + + test('should call registerTaskDefinition, describeTaskDefinition, and updateService for a simple environment variable addition', async () => { + // GIVEN + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { + Image: 'image1', + Environment: [ + { + Name: 'FOO', + Value: { 'Fn::GetAtt': ['Bar', 'Baz'] }, + }, + ], + }, + ], + }, + includeService: true, + }); + mockDescribeTaskDef.mockReturnValue({ + taskDefinition: { + taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + family: 'my-task-def', + containerDefinitions: [ + { + image: 'image1', + environment: [ + { + name: 'FOO', + value: 'value', + }, + ], + }, + ], + }, + }); + const cdkStackArtifact = setup.cdkStackArtifactOf({ + template: { + Resources: { + TaskDef: { + Type: 'AWS::ECS::TaskDefinition', + Properties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { + Image: 'image2', + Environment: [ + { + Name: 'FOO', + Value: { 'Fn::GetAtt': ['Bar', 'Baz'] }, + }, + { + Name: 'BAR', + Value: '1', + }, + ], + }, + ], + }, + }, + Service: { + Type: 'AWS::ECS::Service', + Properties: { + TaskDefinition: { Ref: 'TaskDef' }, + }, }, }, }, }); - setup.pushStackResourceSummaries( - setup.stackSummaryOf('Service', 'AWS::ECS::Service', - 'arn:aws:ecs:region:account:service/my-cluster/my-service'), - ); - mockRegisterTaskDef.mockReturnValue({ + + // WHEN + const deployStackResult = await hotswapMockSdkProvider.tryHotswapDeployment(hotswapMode, cdkStackArtifact); + + // THEN + expect(deployStackResult).not.toBeUndefined(); + expect(mockRegisterTaskDef).toBeCalledWith({ + family: 'my-task-def', + containerDefinitions: [ + { + image: 'image2', + environment: [ + { + name: 'FOO', + value: 'value', + }, + { + name: 'BAR', + value: '1', + }, + ], + }, + ], + }); + expect(mockUpdateService).toBeCalledWith({ + service: 'arn:aws:ecs:region:account:service/my-cluster/my-service', + cluster: 'my-cluster', + taskDefinition: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + deploymentConfiguration: { + minimumHealthyPercent: 0, + }, + forceNewDeployment: true, + }); + }); + + test('should call registerTaskDefinition, describeTaskDefinition, and updateService for a environment variable deletion', async () => { + // GIVEN + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { + Image: 'image1', + Environment: [ + { + Name: 'FOO', + Value: { 'Fn::GetAtt': ['Bar', 'Baz'] }, + }, + { + Name: 'BAR', + Value: '1', + }, + ], + }, + ], + }, + includeService: true, + }); + mockDescribeTaskDef.mockReturnValue({ taskDefinition: { - taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + taskDefinitionArn: 'arn:aws:ecs:region:account:task-definition/my-task-def:2', + family: 'my-task-def', + containerDefinitions: [ + { + image: 'image1', + environment: [ + { + name: 'FOO', + value: 'value', + }, + { + name: 'BAR', + value: '1', + }, + ], + }, + ], + }, + }); + const cdkStackArtifact = setup.cdkStackArtifactOf({ + template: { + Resources: { + TaskDef: { + Type: 'AWS::ECS::TaskDefinition', + Properties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { + Image: 'image2', + Environment: [ + { + Name: 'FOO', + Value: { 'Fn::GetAtt': ['Bar', 'Baz'] }, + }, + ], + }, + ], + }, + }, + Service: { + Type: 'AWS::ECS::Service', + Properties: { + TaskDefinition: { Ref: 'TaskDef' }, + }, + }, + }, + }, + }); + + // WHEN + const deployStackResult = await hotswapMockSdkProvider.tryHotswapDeployment(hotswapMode, cdkStackArtifact); + + // THEN + expect(deployStackResult).not.toBeUndefined(); + expect(mockRegisterTaskDef).toBeCalledWith({ + family: 'my-task-def', + containerDefinitions: [ + { + image: 'image2', + environment: [ + { + name: 'FOO', + value: 'value', + }, + ], + }, + ], + }); + expect(mockUpdateService).toBeCalledWith({ + service: 'arn:aws:ecs:region:account:service/my-cluster/my-service', + cluster: 'my-cluster', + taskDefinition: 'arn:aws:ecs:region:account:task-definition/my-task-def:3', + deploymentConfiguration: { + minimumHealthyPercent: 0, + }, + forceNewDeployment: true, + }); + }); + + test('should call registerTaskDefinition with certain properties not lowercased', async () => { + // GIVEN + setupCurrentTaskDefinition({ + taskDefinitionProperties: { + Family: 'my-task-def', + ContainerDefinitions: [ + { Image: 'image1' }, + ], + Volumes: [ + { + DockerVolumeConfiguration: { + DriverOpts: { Option1: 'option1' }, + Labels: { Label1: 'label1' }, + }, + }, + ], }, + includeService: true, }); const cdkStackArtifact = setup.cdkStackArtifactOf({ template: { From 0446e4aae38d61b8e8a7adb1bd56655887880aa1 Mon Sep 17 00:00:00 2001 From: Rico Hermans Date: Thu, 17 Aug 2023 11:11:52 +0200 Subject: [PATCH 09/56] fix(lambda): use of `currentVersion` fails deployment after upgrade (#26777) Between version `2.87.0` and version `2.88.0`, the hash calculation used to make sure that `fn.currentVersion` is automatically updated when a new version of the Lambda Function is deployed changed. This causes a creation of a new Version upon upgrading CDK, but that new Version creation will fail because the underlying Function hasn't changed. The change was due to property ordering used in calculating a unique hash for the Function configuration. This change restores the property ordering to the pre-2.88.0 behavior. Fixes #26739. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../aws-lambda/lib/function-hash.ts | 136 ++++++++++++------ .../aws-lambda/test/function.test.ts | 62 ++++++++ packages/aws-cdk-lib/aws-lambda/test/x.zip | 1 + 3 files changed, 155 insertions(+), 44 deletions(-) create mode 100644 packages/aws-cdk-lib/aws-lambda/test/x.zip diff --git a/packages/aws-cdk-lib/aws-lambda/lib/function-hash.ts b/packages/aws-cdk-lib/aws-lambda/lib/function-hash.ts index f853db60b1d8f..87a224016b052 100644 --- a/packages/aws-cdk-lib/aws-lambda/lib/function-hash.ts +++ b/packages/aws-cdk-lib/aws-lambda/lib/function-hash.ts @@ -8,26 +8,16 @@ export function calculateFunctionHash(fn: LambdaFunction, additional: string = ' const stack = Stack.of(fn); const functionResource = fn.node.defaultChild as CfnResource; - - // render the cloudformation resource from this function - const config = stack.resolve((functionResource as any)._toCloudFormation()); - // config is of the shape: { Resources: { LogicalId: { Type: 'Function', Properties: { ... } }}} - const resources = config.Resources; - const resourceKeys = Object.keys(resources); - if (resourceKeys.length !== 1) { - throw new Error(`Expected one rendered CloudFormation resource but found ${resourceKeys.length}`); - } - const logicalId = resourceKeys[0]; - const properties = resources[logicalId].Properties; + const { properties, template, logicalId } = resolveSingleResourceProperties(stack, functionResource); let stringifiedConfig; if (FeatureFlags.of(fn).isEnabled(LAMBDA_RECOGNIZE_VERSION_PROPS)) { - const updatedProps = sortProperties(filterUsefulKeys(properties)); + const updatedProps = sortFunctionProperties(filterUsefulKeys(properties)); stringifiedConfig = JSON.stringify(updatedProps); } else { - const sorted = sortProperties(properties); - config.Resources[logicalId].Properties = sorted; - stringifiedConfig = JSON.stringify(config); + const sorted = sortFunctionProperties(properties); + template.Resources[logicalId].Properties = sorted; + stringifiedConfig = JSON.stringify(template); } if (FeatureFlags.of(fn).isEnabled(LAMBDA_RECOGNIZE_LAYER_VERSION)) { @@ -103,26 +93,6 @@ function filterUsefulKeys(properties: any) { return ret; } -function sortProperties(properties: any) { - const ret: any = {}; - // We take all required properties in the order that they were historically, - // to make sure the hash we calculate is stable. - // There cannot be more required properties added in the future, - // as that would be a backwards-incompatible change. - const requiredProperties = ['Code', 'Handler', 'Role', 'Runtime']; - for (const requiredProperty of requiredProperties) { - ret[requiredProperty] = properties[requiredProperty]; - } - // then, add all of the non-required properties, - // in the original order - for (const property of Object.keys(properties)) { - if (requiredProperties.indexOf(property) === -1) { - ret[property] = properties[property]; - } - } - return ret; -} - function calculateLayersHash(layers: ILayerVersion[]): string { const layerConfig: {[key: string]: any } = {}; for (const layer of layers) { @@ -143,17 +113,95 @@ function calculateLayersHash(layers: ILayerVersion[]): string { } continue; } - const config = stack.resolve((layerResource as any)._toCloudFormation()); - const resources = config.Resources; - const resourceKeys = Object.keys(resources); - if (resourceKeys.length !== 1) { - throw new Error(`Expected one rendered CloudFormation resource but found ${resourceKeys.length}`); - } - const logicalId = resourceKeys[0]; - const properties = resources[logicalId].Properties; + + const { properties } = resolveSingleResourceProperties(stack, layerResource); + // all properties require replacement, so they are all version locked. - layerConfig[layer.node.id] = properties; + layerConfig[layer.node.id] = sortLayerVersionProperties(properties); } return md5hash(JSON.stringify(layerConfig)); } + +/** + * Sort properties in an object according to a sort order of known keys + * + * Any additional keys are added at the end, but also sorted. + * + * We only sort one level deep, because we rely on the fact that everything + * that needs to be sorted happens to be sorted by the codegen already, and + * we explicitly rely on some objects NOT being sorted. + */ +class PropertySort { + constructor(private readonly knownKeysOrder: string[]) { + } + + public sortObject(properties: any): any { + const ret: any = {}; + + // Scratch-off set for keys we don't know about yet + const unusedKeys = new Set(Object.keys(properties)); + for (const prop of this.knownKeysOrder) { + ret[prop] = properties[prop]; + unusedKeys.delete(prop); + } + + for (const prop of Array.from(unusedKeys).sort()) { + ret[prop] = properties[prop]; + } + + return ret; + } +} + +/** + * Sort properties in a stable order, even as we switch to new codegen + * + * <=2.87.0, we used to generate properties in the order that they occurred in + * the CloudFormation spec. >= 2.88.0, we switched to a new spec source, which + * sorts the properties lexicographically. The order change changed the hash, + * even though the properties themselves have not changed. + * + * We now have a set of properties with the sort order <=2.87.0, and add any + * additional properties later on, but also sort them. + * + * We should be making sure that the orderings for all subobjects + * between 2.87.0 and 2.88.0 are the same, but fortunately all the subobjects + * were already in lexicographic order in <=2.87.0 so we only need to sort some + * top-level properties on the resource. + * + * We also can't deep-sort everything, because for backwards compatibility + * reasons we have a test that ensures that environment variables are not + * lexicographically sorted, but emitted in the order they are added in source + * code, so for now we rely on the codegen being lexicographically sorted. + */ +function sortFunctionProperties(properties: any) { + return new PropertySort([ + // <= 2.87 explicitly fixed order + 'Code', 'Handler', 'Role', 'Runtime', + // <= 2.87 implicitly fixed order + 'Architectures', 'CodeSigningConfigArn', 'DeadLetterConfig', 'Description', 'Environment', + 'EphemeralStorage', 'FileSystemConfigs', 'FunctionName', 'ImageConfig', 'KmsKeyArn', 'Layers', + 'MemorySize', 'PackageType', 'ReservedConcurrentExecutions', 'RuntimeManagementConfig', 'SnapStart', + 'Tags', 'Timeout', 'TracingConfig', 'VpcConfig', + ]).sortObject(properties); +} + +function sortLayerVersionProperties(properties: any) { + return new PropertySort([ + // <=2.87.0 implicit sort order + 'Content', 'CompatibleArchitectures', 'CompatibleRuntimes', 'Description', + 'LayerName', 'LicenseInfo', + ]).sortObject(properties); +} + +function resolveSingleResourceProperties(stack: Stack, res: CfnResource): any { + const template = stack.resolve(res._toCloudFormation()); + const resources = template.Resources; + const resourceKeys = Object.keys(resources); + if (resourceKeys.length !== 1) { + throw new Error(`Expected one rendered CloudFormation resource but found ${resourceKeys.length}`); + } + const logicalId = resourceKeys[0]; + return { properties: resources[logicalId].Properties, template, logicalId }; +} diff --git a/packages/aws-cdk-lib/aws-lambda/test/function.test.ts b/packages/aws-cdk-lib/aws-lambda/test/function.test.ts index 83d25a6c13155..f4364373cdce7 100644 --- a/packages/aws-cdk-lib/aws-lambda/test/function.test.ts +++ b/packages/aws-cdk-lib/aws-lambda/test/function.test.ts @@ -3246,6 +3246,68 @@ test('set SnapStart to desired value', () => { }); }); +test('test 2.87.0 version hash stability', () => { + // GIVEN + const app = new cdk.App({ + context: { + '@aws-cdk/aws-lambda:recognizeLayerVersion': true, + }, + }); + const stack = new cdk.Stack(app, 'Stack'); + + // WHEN + const layer = new lambda.LayerVersion(stack, 'MyLayer', { + code: lambda.Code.fromAsset(path.join(__dirname, 'x.zip')), + compatibleRuntimes: [ + lambda.Runtime.NODEJS_18_X, + ], + }); + + const role = new iam.Role(stack, 'MyRole', { + assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'), + managedPolicies: [ + iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole'), + iam.ManagedPolicy.fromAwsManagedPolicyName('AWSXRayDaemonWriteAccess'), + ], + }); + + const lambdaFn = new lambda.Function(stack, 'MyLambda', { + runtime: lambda.Runtime.NODEJS_18_X, + memorySize: 128, + handler: 'index.handler', + timeout: cdk.Duration.seconds(30), + environment: { + VARIABLE_1: 'ONE', + }, + code: lambda.Code.fromAsset(path.join(__dirname, 'x.zip')), + role, + currentVersionOptions: { + removalPolicy: cdk.RemovalPolicy.RETAIN, + }, + layers: [ + layer, + ], + }); + + new lambda.Alias(stack, 'MyAlias', { + aliasName: 'current', + version: lambdaFn.currentVersion, + }); + + // THEN + // Precalculated version hash using 2.87.0 version + Template.fromStack(stack).hasResource('AWS::Lambda::Alias', { + Properties: { + FunctionVersion: { + 'Fn::GetAtt': [ + 'MyLambdaCurrentVersionE7A382CCd55a48b26bd9a860d8842137f2243c37', + 'Version', + ], + }, + }, + }); +}); + function newTestLambda(scope: constructs.Construct) { return new lambda.Function(scope, 'MyLambda', { code: new lambda.InlineCode('foo'), diff --git a/packages/aws-cdk-lib/aws-lambda/test/x.zip b/packages/aws-cdk-lib/aws-lambda/test/x.zip new file mode 100644 index 0000000000000..c1b0730e01334 --- /dev/null +++ b/packages/aws-cdk-lib/aws-lambda/test/x.zip @@ -0,0 +1 @@ +x \ No newline at end of file From 8dc51900e09d82685fb34e199289796504bec248 Mon Sep 17 00:00:00 2001 From: Luca Pizzini Date: Thu, 17 Aug 2023 13:49:04 +0200 Subject: [PATCH 10/56] fix(apigateway): duplicate methodResponses if the same array is reused between addMethod calls (#26636) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adding a new method to an API with `addMethod` and passing `methodOptions.methodResponses` was generating duplicate entries using `StepFunctionsIntegration.startExecution` as integration: For example: ``` const integ = apigw.StepFunctionsIntegration.startExecution(stateMachine, integrationOptions); api.root.addMethod('GET', integ, methodOptions); api.root.addMethod('POST', integ, methodOptions); ``` Would generate (fails on deployment): ``` "MethodResponses": [ { "ResponseParameters": { "method.response.header.Access-Control-Allow-Origin": true }, "StatusCode": "200" }, { "ResponseModels": { "application/json": "Empty" }, "StatusCode": "200" }, { "ResponseModels": { "application/json": "Error" }, "StatusCode": "400" }, { "ResponseModels": { "application/json": "Error" }, "StatusCode": "500" }, { "ResponseModels": { "application/json": "Empty" }, "StatusCode": "200" }, { "ResponseModels": { "application/json": "Error" }, "StatusCode": "400" }, { "ResponseModels": { "application/json": "Error" }, "StatusCode": "500" } ], ``` With this fix, it will keep only the specified `methodResponses`. Also, the `integrationResponses` option in `StepFunctionsIntegration.startExecution` was not used by the corresponding `Integration`. This fix will allow to use the specified option value. Closes #26586. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- ...y-stepfunctions-startexecution.assets.json | 19 + ...stepfunctions-startexecution.template.json | 394 +++++++++++ ...efaultTestDeployAssert3A9ACD49.assets.json | 19 + ...aultTestDeployAssert3A9ACD49.template.json | 36 + .../cdk.out | 1 + .../integ.json | 12 + .../manifest.json | 198 ++++++ .../tree.json | 668 ++++++++++++++++++ .../integ.stepfunctions-startexecution.ts | 51 ++ .../lib/integrations/stepfunctions.ts | 2 +- .../aws-cdk-lib/aws-apigateway/lib/method.ts | 26 +- .../test/integrations/stepfunctions.test.ts | 116 +++ 12 files changed, 1531 insertions(+), 11 deletions(-) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/aws-cdk-aws-apigateway-stepfunctions-startexecution.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/aws-cdk-aws-apigateway-stepfunctions-startexecution.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/integ.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/tree.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.ts diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/aws-cdk-aws-apigateway-stepfunctions-startexecution.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/aws-cdk-aws-apigateway-stepfunctions-startexecution.assets.json new file mode 100644 index 0000000000000..b4c64ab60cc31 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/aws-cdk-aws-apigateway-stepfunctions-startexecution.assets.json @@ -0,0 +1,19 @@ +{ + "version": "33.0.0", + "files": { + "11071ca702d34295486ea4a64c45b64857f4bd23c672fe0895a0b7e753065d77": { + "source": { + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "11071ca702d34295486ea4a64c45b64857f4bd23c672fe0895a0b7e753065d77.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/aws-cdk-aws-apigateway-stepfunctions-startexecution.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/aws-cdk-aws-apigateway-stepfunctions-startexecution.template.json new file mode 100644 index 0000000000000..d117c9978ce39 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/aws-cdk-aws-apigateway-stepfunctions-startexecution.template.json @@ -0,0 +1,394 @@ +{ + "Resources": { + "myrestapiBAC2BF45": { + "Type": "AWS::ApiGateway::RestApi", + "Properties": { + "Name": "my-rest-api" + } + }, + "myrestapiDeployment010A9D4F8d8391dd5e41be487121f43257df00d7": { + "Type": "AWS::ApiGateway::Deployment", + "Properties": { + "Description": "Automatically created by the RestApi construct", + "RestApiId": { + "Ref": "myrestapiBAC2BF45" + } + }, + "DependsOn": [ + "myrestapiGET3A49A218", + "myrestapiPOST155A9625" + ] + }, + "myrestapiDeploymentStageprod3140E1BE": { + "Type": "AWS::ApiGateway::Stage", + "Properties": { + "DeploymentId": { + "Ref": "myrestapiDeployment010A9D4F8d8391dd5e41be487121f43257df00d7" + }, + "RestApiId": { + "Ref": "myrestapiBAC2BF45" + }, + "StageName": "prod" + } + }, + "myrestapiGETStartSyncExecutionRoleC284C05B": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "apigateway.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "myrestapiGETStartSyncExecutionRoleDefaultPolicy8B2F6ADF": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "states:StartSyncExecution", + "Effect": "Allow", + "Resource": { + "Ref": "StateMachine2E01A3A5" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "myrestapiGETStartSyncExecutionRoleDefaultPolicy8B2F6ADF", + "Roles": [ + { + "Ref": "myrestapiGETStartSyncExecutionRoleC284C05B" + } + ] + } + }, + "myrestapiGET3A49A218": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "GET", + "Integration": { + "Credentials": { + "Fn::GetAtt": [ + "myrestapiGETStartSyncExecutionRoleC284C05B", + "Arn" + ] + }, + "IntegrationHttpMethod": "POST", + "IntegrationResponses": [ + { + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'" + }, + "StatusCode": "200" + } + ], + "PassthroughBehavior": "NEVER", + "RequestTemplates": { + "application/json": { + "Fn::Join": [ + "", + [ + "## Velocity Template used for API Gateway request mapping template\n##\n## This template forwards the request body, header, path, and querystring\n## to the execution input of the state machine.\n##\n## \"@@\" is used here as a placeholder for '\"' to avoid using escape characters.\n\n#set($inputString = '')\n#set($includeHeaders = false)\n#set($includeQueryString = true)\n#set($includePath = true)\n#set($includeAuthorizer = false)\n#set($allParams = $input.params())\n{\n \"stateMachineArn\": \"", + { + "Ref": "StateMachine2E01A3A5" + }, + "\",\n\n #set($inputString = \"$inputString,@@body@@: $input.body\")\n\n #if ($includeHeaders)\n #set($inputString = \"$inputString, @@header@@:{\")\n #foreach($paramName in $allParams.header.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.header.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n \n #end\n\n #if ($includeQueryString)\n #set($inputString = \"$inputString, @@querystring@@:{\")\n #foreach($paramName in $allParams.querystring.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.querystring.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n\n #if ($includePath)\n #set($inputString = \"$inputString, @@path@@:{\")\n #foreach($paramName in $allParams.path.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.path.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n \n #if ($includeAuthorizer)\n #set($inputString = \"$inputString, @@authorizer@@:{\")\n #foreach($paramName in $context.authorizer.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($context.authorizer.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n\n #set($requestContext = \"\")\n ## Check if the request context should be included as part of the execution input\n #if($requestContext && !$requestContext.empty)\n #set($inputString = \"$inputString,\")\n #set($inputString = \"$inputString @@requestContext@@: $requestContext\")\n #end\n\n #set($inputString = \"$inputString}\")\n #set($inputString = $inputString.replaceAll(\"@@\",'\"'))\n #set($len = $inputString.length() - 1)\n \"input\": \"{$util.escapeJavaScript($inputString.substring(1,$len)).replaceAll(\"\\\\'\",\"'\")}\"\n}\n" + ] + ] + } + }, + "Type": "AWS", + "Uri": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":apigateway:", + { + "Ref": "AWS::Region" + }, + ":states:action/StartSyncExecution" + ] + ] + } + }, + "MethodResponses": [ + { + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": true + }, + "StatusCode": "200" + }, + { + "ResponseModels": { + "application/json": "Empty" + }, + "StatusCode": "200" + }, + { + "ResponseModels": { + "application/json": "Error" + }, + "StatusCode": "400" + }, + { + "ResponseModels": { + "application/json": "Error" + }, + "StatusCode": "500" + } + ], + "ResourceId": { + "Fn::GetAtt": [ + "myrestapiBAC2BF45", + "RootResourceId" + ] + }, + "RestApiId": { + "Ref": "myrestapiBAC2BF45" + } + } + }, + "myrestapiPOSTStartSyncExecutionRole7AFBE835": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "apigateway.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "myrestapiPOSTStartSyncExecutionRoleDefaultPolicy7D411AE9": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "states:StartSyncExecution", + "Effect": "Allow", + "Resource": { + "Ref": "StateMachine2E01A3A5" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "myrestapiPOSTStartSyncExecutionRoleDefaultPolicy7D411AE9", + "Roles": [ + { + "Ref": "myrestapiPOSTStartSyncExecutionRole7AFBE835" + } + ] + } + }, + "myrestapiPOST155A9625": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "POST", + "Integration": { + "Credentials": { + "Fn::GetAtt": [ + "myrestapiPOSTStartSyncExecutionRole7AFBE835", + "Arn" + ] + }, + "IntegrationHttpMethod": "POST", + "IntegrationResponses": [ + { + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'" + }, + "StatusCode": "200" + } + ], + "PassthroughBehavior": "NEVER", + "RequestTemplates": { + "application/json": { + "Fn::Join": [ + "", + [ + "## Velocity Template used for API Gateway request mapping template\n##\n## This template forwards the request body, header, path, and querystring\n## to the execution input of the state machine.\n##\n## \"@@\" is used here as a placeholder for '\"' to avoid using escape characters.\n\n#set($inputString = '')\n#set($includeHeaders = false)\n#set($includeQueryString = true)\n#set($includePath = true)\n#set($includeAuthorizer = false)\n#set($allParams = $input.params())\n{\n \"stateMachineArn\": \"", + { + "Ref": "StateMachine2E01A3A5" + }, + "\",\n\n #set($inputString = \"$inputString,@@body@@: $input.body\")\n\n #if ($includeHeaders)\n #set($inputString = \"$inputString, @@header@@:{\")\n #foreach($paramName in $allParams.header.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.header.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n \n #end\n\n #if ($includeQueryString)\n #set($inputString = \"$inputString, @@querystring@@:{\")\n #foreach($paramName in $allParams.querystring.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.querystring.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n\n #if ($includePath)\n #set($inputString = \"$inputString, @@path@@:{\")\n #foreach($paramName in $allParams.path.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.path.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n \n #if ($includeAuthorizer)\n #set($inputString = \"$inputString, @@authorizer@@:{\")\n #foreach($paramName in $context.authorizer.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($context.authorizer.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n\n #set($requestContext = \"\")\n ## Check if the request context should be included as part of the execution input\n #if($requestContext && !$requestContext.empty)\n #set($inputString = \"$inputString,\")\n #set($inputString = \"$inputString @@requestContext@@: $requestContext\")\n #end\n\n #set($inputString = \"$inputString}\")\n #set($inputString = $inputString.replaceAll(\"@@\",'\"'))\n #set($len = $inputString.length() - 1)\n \"input\": \"{$util.escapeJavaScript($inputString.substring(1,$len)).replaceAll(\"\\\\'\",\"'\")}\"\n}\n" + ] + ] + } + }, + "Type": "AWS", + "Uri": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":apigateway:", + { + "Ref": "AWS::Region" + }, + ":states:action/StartSyncExecution" + ] + ] + } + }, + "MethodResponses": [ + { + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": true + }, + "StatusCode": "200" + }, + { + "ResponseModels": { + "application/json": "Empty" + }, + "StatusCode": "200" + }, + { + "ResponseModels": { + "application/json": "Error" + }, + "StatusCode": "400" + }, + { + "ResponseModels": { + "application/json": "Error" + }, + "StatusCode": "500" + } + ], + "ResourceId": { + "Fn::GetAtt": [ + "myrestapiBAC2BF45", + "RootResourceId" + ] + }, + "RestApiId": { + "Ref": "myrestapiBAC2BF45" + } + } + }, + "StateMachineRoleB840431D": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "states.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "StateMachine2E01A3A5": { + "Type": "AWS::StepFunctions::StateMachine", + "Properties": { + "DefinitionString": "{\"StartAt\":\"passTask\",\"States\":{\"passTask\":{\"Type\":\"Pass\",\"InputPath\":\"$.somekey\",\"End\":true}}}", + "RoleArn": { + "Fn::GetAtt": [ + "StateMachineRoleB840431D", + "Arn" + ] + }, + "StateMachineType": "EXPRESS" + }, + "DependsOn": [ + "StateMachineRoleB840431D" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + } + }, + "Outputs": { + "myrestapiEndpoint0DE8A5DE": { + "Value": { + "Fn::Join": [ + "", + [ + "https://", + { + "Ref": "myrestapiBAC2BF45" + }, + ".execute-api.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/", + { + "Ref": "myrestapiDeploymentStageprod3140E1BE" + }, + "/" + ] + ] + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.assets.json new file mode 100644 index 0000000000000..914ca646ec74f --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.assets.json @@ -0,0 +1,19 @@ +{ + "version": "33.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "source": { + "path": "awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/cdk.out new file mode 100644 index 0000000000000..560dae10d018f --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"33.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/integ.json new file mode 100644 index 0000000000000..d0083afa83de3 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "33.0.0", + "testCases": { + "aws-apigateway-stepfunctions-startexecution/DefaultTest": { + "stacks": [ + "aws-cdk-aws-apigateway-stepfunctions-startexecution" + ], + "assertionStack": "aws-apigateway-stepfunctions-startexecution/DefaultTest/DeployAssert", + "assertionStackName": "awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/manifest.json new file mode 100644 index 0000000000000..7f56cd4cd730a --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/manifest.json @@ -0,0 +1,198 @@ +{ + "version": "33.0.0", + "artifacts": { + "aws-cdk-aws-apigateway-stepfunctions-startexecution.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-aws-apigateway-stepfunctions-startexecution.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-aws-apigateway-stepfunctions-startexecution": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-aws-apigateway-stepfunctions-startexecution.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/11071ca702d34295486ea4a64c45b64857f4bd23c672fe0895a0b7e753065d77.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-aws-apigateway-stepfunctions-startexecution.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-aws-apigateway-stepfunctions-startexecution.assets" + ], + "metadata": { + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiBAC2BF45" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Deployment/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiDeployment010A9D4F8d8391dd5e41be487121f43257df00d7" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/DeploymentStage.prod/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiDeploymentStageprod3140E1BE" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Endpoint": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiEndpoint0DE8A5DE" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET": [ + { + "type": "aws:cdk:warning", + "data": "addMethodResponse called multiple times with statusCode=200, deployment will be nondeterministic. Use a single addMethodResponse call to configure the entire response." + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET/StartSyncExecutionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiGETStartSyncExecutionRoleC284C05B" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET/StartSyncExecutionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiGETStartSyncExecutionRoleDefaultPolicy8B2F6ADF" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiGET3A49A218" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST": [ + { + "type": "aws:cdk:warning", + "data": "addMethodResponse called multiple times with statusCode=200, deployment will be nondeterministic. Use a single addMethodResponse call to configure the entire response." + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST/StartSyncExecutionRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiPOSTStartSyncExecutionRole7AFBE835" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST/StartSyncExecutionRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiPOSTStartSyncExecutionRoleDefaultPolicy7D411AE9" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiPOST155A9625" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/StateMachine/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "StateMachineRoleB840431D" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/StateMachine/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "StateMachine2E01A3A5" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-aws-apigateway-stepfunctions-startexecution/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ], + "myrestapiDeployment010A9D4F59b46296e944eb988c600755d169a00d": [ + { + "type": "aws:cdk:logicalId", + "data": "myrestapiDeployment010A9D4F59b46296e944eb988c600755d169a00d", + "trace": [ + "!!DESTRUCTIVE_CHANGES: WILL_DESTROY" + ] + } + ] + }, + "displayName": "aws-cdk-aws-apigateway-stepfunctions-startexecution" + }, + "awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "awsapigatewaystepfunctionsstartexecutionDefaultTestDeployAssert3A9ACD49.assets" + ], + "metadata": { + "/aws-apigateway-stepfunctions-startexecution/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-apigateway-stepfunctions-startexecution/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-apigateway-stepfunctions-startexecution/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/tree.json new file mode 100644 index 0000000000000..73b02800aefcc --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.js.snapshot/tree.json @@ -0,0 +1,668 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "aws-cdk-aws-apigateway-stepfunctions-startexecution": { + "id": "aws-cdk-aws-apigateway-stepfunctions-startexecution", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution", + "children": { + "my-rest-api": { + "id": "my-rest-api", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::RestApi", + "aws:cdk:cloudformation:props": { + "name": "my-rest-api" + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Deployment": { + "id": "Deployment", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Deployment", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Deployment/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Deployment", + "aws:cdk:cloudformation:props": { + "description": "Automatically created by the RestApi construct", + "restApiId": { + "Ref": "myrestapiBAC2BF45" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "DeploymentStage.prod": { + "id": "DeploymentStage.prod", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/DeploymentStage.prod", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/DeploymentStage.prod/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Stage", + "aws:cdk:cloudformation:props": { + "deploymentId": { + "Ref": "myrestapiDeployment010A9D4F8d8391dd5e41be487121f43257df00d7" + }, + "restApiId": { + "Ref": "myrestapiBAC2BF45" + }, + "stageName": "prod" + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Endpoint": { + "id": "Endpoint", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Endpoint", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Default": { + "id": "Default", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default", + "children": { + "GET": { + "id": "GET", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET", + "children": { + "StartSyncExecutionRole": { + "id": "StartSyncExecutionRole", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET/StartSyncExecutionRole", + "children": { + "ImportStartSyncExecutionRole": { + "id": "ImportStartSyncExecutionRole", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET/StartSyncExecutionRole/ImportStartSyncExecutionRole", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET/StartSyncExecutionRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "apigateway.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET/StartSyncExecutionRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET/StartSyncExecutionRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "states:StartSyncExecution", + "Effect": "Allow", + "Resource": { + "Ref": "StateMachine2E01A3A5" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "myrestapiGETStartSyncExecutionRoleDefaultPolicy8B2F6ADF", + "roles": [ + { + "Ref": "myrestapiGETStartSyncExecutionRoleC284C05B" + } + ] + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/GET/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Method", + "aws:cdk:cloudformation:props": { + "authorizationType": "NONE", + "httpMethod": "GET", + "integration": { + "type": "AWS", + "uri": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":apigateway:", + { + "Ref": "AWS::Region" + }, + ":states:action/StartSyncExecution" + ] + ] + }, + "integrationHttpMethod": "POST", + "requestTemplates": { + "application/json": { + "Fn::Join": [ + "", + [ + "## Velocity Template used for API Gateway request mapping template\n##\n## This template forwards the request body, header, path, and querystring\n## to the execution input of the state machine.\n##\n## \"@@\" is used here as a placeholder for '\"' to avoid using escape characters.\n\n#set($inputString = '')\n#set($includeHeaders = false)\n#set($includeQueryString = true)\n#set($includePath = true)\n#set($includeAuthorizer = false)\n#set($allParams = $input.params())\n{\n \"stateMachineArn\": \"", + { + "Ref": "StateMachine2E01A3A5" + }, + "\",\n\n #set($inputString = \"$inputString,@@body@@: $input.body\")\n\n #if ($includeHeaders)\n #set($inputString = \"$inputString, @@header@@:{\")\n #foreach($paramName in $allParams.header.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.header.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n \n #end\n\n #if ($includeQueryString)\n #set($inputString = \"$inputString, @@querystring@@:{\")\n #foreach($paramName in $allParams.querystring.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.querystring.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n\n #if ($includePath)\n #set($inputString = \"$inputString, @@path@@:{\")\n #foreach($paramName in $allParams.path.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.path.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n \n #if ($includeAuthorizer)\n #set($inputString = \"$inputString, @@authorizer@@:{\")\n #foreach($paramName in $context.authorizer.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($context.authorizer.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n\n #set($requestContext = \"\")\n ## Check if the request context should be included as part of the execution input\n #if($requestContext && !$requestContext.empty)\n #set($inputString = \"$inputString,\")\n #set($inputString = \"$inputString @@requestContext@@: $requestContext\")\n #end\n\n #set($inputString = \"$inputString}\")\n #set($inputString = $inputString.replaceAll(\"@@\",'\"'))\n #set($len = $inputString.length() - 1)\n \"input\": \"{$util.escapeJavaScript($inputString.substring(1,$len)).replaceAll(\"\\\\'\",\"'\")}\"\n}\n" + ] + ] + } + }, + "passthroughBehavior": "NEVER", + "integrationResponses": [ + { + "responseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'" + }, + "statusCode": "200" + } + ], + "credentials": { + "Fn::GetAtt": [ + "myrestapiGETStartSyncExecutionRoleC284C05B", + "Arn" + ] + } + }, + "methodResponses": [ + { + "statusCode": "200", + "responseParameters": { + "method.response.header.Access-Control-Allow-Origin": true + } + }, + { + "statusCode": "200", + "responseModels": { + "application/json": "Empty" + } + }, + { + "statusCode": "400", + "responseModels": { + "application/json": "Error" + } + }, + { + "statusCode": "500", + "responseModels": { + "application/json": "Error" + } + } + ], + "resourceId": { + "Fn::GetAtt": [ + "myrestapiBAC2BF45", + "RootResourceId" + ] + }, + "restApiId": { + "Ref": "myrestapiBAC2BF45" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "POST": { + "id": "POST", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST", + "children": { + "StartSyncExecutionRole": { + "id": "StartSyncExecutionRole", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST/StartSyncExecutionRole", + "children": { + "ImportStartSyncExecutionRole": { + "id": "ImportStartSyncExecutionRole", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST/StartSyncExecutionRole/ImportStartSyncExecutionRole", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST/StartSyncExecutionRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "apigateway.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST/StartSyncExecutionRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST/StartSyncExecutionRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "states:StartSyncExecution", + "Effect": "Allow", + "Resource": { + "Ref": "StateMachine2E01A3A5" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "myrestapiPOSTStartSyncExecutionRoleDefaultPolicy7D411AE9", + "roles": [ + { + "Ref": "myrestapiPOSTStartSyncExecutionRole7AFBE835" + } + ] + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/my-rest-api/Default/POST/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::ApiGateway::Method", + "aws:cdk:cloudformation:props": { + "authorizationType": "NONE", + "httpMethod": "POST", + "integration": { + "type": "AWS", + "uri": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":apigateway:", + { + "Ref": "AWS::Region" + }, + ":states:action/StartSyncExecution" + ] + ] + }, + "integrationHttpMethod": "POST", + "requestTemplates": { + "application/json": { + "Fn::Join": [ + "", + [ + "## Velocity Template used for API Gateway request mapping template\n##\n## This template forwards the request body, header, path, and querystring\n## to the execution input of the state machine.\n##\n## \"@@\" is used here as a placeholder for '\"' to avoid using escape characters.\n\n#set($inputString = '')\n#set($includeHeaders = false)\n#set($includeQueryString = true)\n#set($includePath = true)\n#set($includeAuthorizer = false)\n#set($allParams = $input.params())\n{\n \"stateMachineArn\": \"", + { + "Ref": "StateMachine2E01A3A5" + }, + "\",\n\n #set($inputString = \"$inputString,@@body@@: $input.body\")\n\n #if ($includeHeaders)\n #set($inputString = \"$inputString, @@header@@:{\")\n #foreach($paramName in $allParams.header.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.header.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n \n #end\n\n #if ($includeQueryString)\n #set($inputString = \"$inputString, @@querystring@@:{\")\n #foreach($paramName in $allParams.querystring.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.querystring.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n\n #if ($includePath)\n #set($inputString = \"$inputString, @@path@@:{\")\n #foreach($paramName in $allParams.path.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($allParams.path.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n \n #if ($includeAuthorizer)\n #set($inputString = \"$inputString, @@authorizer@@:{\")\n #foreach($paramName in $context.authorizer.keySet())\n #set($inputString = \"$inputString @@$paramName@@: @@$util.escapeJavaScript($context.authorizer.get($paramName))@@\")\n #if($foreach.hasNext)\n #set($inputString = \"$inputString,\")\n #end\n #end\n #set($inputString = \"$inputString }\")\n #end\n\n #set($requestContext = \"\")\n ## Check if the request context should be included as part of the execution input\n #if($requestContext && !$requestContext.empty)\n #set($inputString = \"$inputString,\")\n #set($inputString = \"$inputString @@requestContext@@: $requestContext\")\n #end\n\n #set($inputString = \"$inputString}\")\n #set($inputString = $inputString.replaceAll(\"@@\",'\"'))\n #set($len = $inputString.length() - 1)\n \"input\": \"{$util.escapeJavaScript($inputString.substring(1,$len)).replaceAll(\"\\\\'\",\"'\")}\"\n}\n" + ] + ] + } + }, + "passthroughBehavior": "NEVER", + "integrationResponses": [ + { + "responseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'" + }, + "statusCode": "200" + } + ], + "credentials": { + "Fn::GetAtt": [ + "myrestapiPOSTStartSyncExecutionRole7AFBE835", + "Arn" + ] + } + }, + "methodResponses": [ + { + "statusCode": "200", + "responseParameters": { + "method.response.header.Access-Control-Allow-Origin": true + } + }, + { + "statusCode": "200", + "responseModels": { + "application/json": "Empty" + } + }, + { + "statusCode": "400", + "responseModels": { + "application/json": "Error" + } + }, + { + "statusCode": "500", + "responseModels": { + "application/json": "Error" + } + } + ], + "resourceId": { + "Fn::GetAtt": [ + "myrestapiBAC2BF45", + "RootResourceId" + ] + }, + "restApiId": { + "Ref": "myrestapiBAC2BF45" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "passTask": { + "id": "passTask", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/passTask", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "StateMachine": { + "id": "StateMachine", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/StateMachine", + "children": { + "Role": { + "id": "Role", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/StateMachine/Role", + "children": { + "ImportRole": { + "id": "ImportRole", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/StateMachine/Role/ImportRole", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/StateMachine/Role/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "states.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/StateMachine/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::StepFunctions::StateMachine", + "aws:cdk:cloudformation:props": { + "definitionString": "{\"StartAt\":\"passTask\",\"States\":{\"passTask\":{\"Type\":\"Pass\",\"InputPath\":\"$.somekey\",\"End\":true}}}", + "roleArn": { + "Fn::GetAtt": [ + "StateMachineRoleB840431D", + "Arn" + ] + }, + "stateMachineType": "EXPRESS" + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/BootstrapVersion", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "aws-cdk-aws-apigateway-stepfunctions-startexecution/CheckBootstrapVersion", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "aws-apigateway-stepfunctions-startexecution": { + "id": "aws-apigateway-stepfunctions-startexecution", + "path": "aws-apigateway-stepfunctions-startexecution", + "children": { + "DefaultTest": { + "id": "DefaultTest", + "path": "aws-apigateway-stepfunctions-startexecution/DefaultTest", + "children": { + "Default": { + "id": "Default", + "path": "aws-apigateway-stepfunctions-startexecution/DefaultTest/Default", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "DeployAssert": { + "id": "DeployAssert", + "path": "aws-apigateway-stepfunctions-startexecution/DefaultTest/DeployAssert", + "children": { + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "aws-apigateway-stepfunctions-startexecution/DefaultTest/DeployAssert/BootstrapVersion", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "aws-apigateway-stepfunctions-startexecution/DefaultTest/DeployAssert/CheckBootstrapVersion", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTestCase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTest", + "version": "0.0.0" + } + }, + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.ts new file mode 100644 index 0000000000000..86dbe8f9c0974 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-apigateway/test/integ.stepfunctions-startexecution.ts @@ -0,0 +1,51 @@ +import * as sfn from 'aws-cdk-lib/aws-stepfunctions'; +import * as cdk from 'aws-cdk-lib'; +import { IntegTest } from '@aws-cdk/integ-tests-alpha'; +import * as apigw from 'aws-cdk-lib/aws-apigateway'; + +const app = new cdk.App(); +const stack = new cdk.Stack(app, 'aws-cdk-aws-apigateway-stepfunctions-startexecution'); + +const api = new apigw.RestApi(stack, 'my-rest-api'); +const passTask = new sfn.Pass(stack, 'passTask', { + inputPath: '$.somekey', +}); + +const stateMachine: sfn.IStateMachine = new sfn.StateMachine(stack, 'StateMachine', { + definitionBody: sfn.DefinitionBody.fromChainable(passTask), + stateMachineType: sfn.StateMachineType.EXPRESS, +}); + +const methodOptions = { + methodResponses: [ + { + statusCode: '200', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + }, + ], +}; + +const integrationOptions = { + integrationResponses: [ + { + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': "'*'", + }, + statusCode: '200', + }, + ], +}; + +const integ = apigw.StepFunctionsIntegration.startExecution(stateMachine, integrationOptions); +api.root.addMethod('GET', integ, methodOptions); +api.root.addMethod('POST', integ, methodOptions); + +new IntegTest(app, 'aws-apigateway-stepfunctions-startexecution', { + testCases: [ + stack, + ], +}); + +app.synth(); \ No newline at end of file diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/integrations/stepfunctions.ts b/packages/aws-cdk-lib/aws-apigateway/lib/integrations/stepfunctions.ts index 4e75eb967afab..252322158d2b3 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/integrations/stepfunctions.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/integrations/stepfunctions.ts @@ -117,7 +117,7 @@ class StepFunctionsExecutionIntegration extends AwsIntegration { action: 'StartSyncExecution', options: { credentialsRole: options.credentialsRole, - integrationResponses: integrationResponse(), + integrationResponses: options.integrationResponses ?? integrationResponse(), passthroughBehavior: PassthroughBehavior.NEVER, requestTemplates: requestTemplates(stateMachine, options), ...options, diff --git a/packages/aws-cdk-lib/aws-apigateway/lib/method.ts b/packages/aws-cdk-lib/aws-apigateway/lib/method.ts index db93c7ffef611..5b4ca0428f86f 100644 --- a/packages/aws-cdk-lib/aws-apigateway/lib/method.ts +++ b/packages/aws-cdk-lib/aws-apigateway/lib/method.ts @@ -13,7 +13,7 @@ import { IStage } from './stage'; import { validateHttpMethod } from './util'; import * as cloudwatch from '../../aws-cloudwatch'; import * as iam from '../../aws-iam'; -import { ArnFormat, FeatureFlags, Lazy, Names, Resource, Stack } from '../../core'; +import { Annotations, ArnFormat, FeatureFlags, Lazy, Names, Resource, Stack } from '../../core'; import { APIGATEWAY_REQUEST_VALIDATOR_UNIQUE_ID } from '../../cx-api'; export interface MethodOptions { @@ -173,7 +173,7 @@ export class Method extends Resource { */ public readonly api: IRestApi; - private methodResponses: MethodResponse[]; + private readonly methodResponses: MethodResponse[] = []; constructor(scope: Construct, id: string, props: MethodProps) { super(scope, id); @@ -203,7 +203,9 @@ export class Method extends Resource { authorizer._attachToApi(this.api); } - this.methodResponses = options.methodResponses ?? defaultMethodOptions.methodResponses ?? []; + for (const mr of options.methodResponses ?? defaultMethodOptions.methodResponses ?? []) { + this.addMethodResponse(mr); + } const integration = props.integration ?? this.resource.defaultIntegration ?? new MockIntegration(); const bindResult = integration.bind(this); @@ -278,8 +280,16 @@ export class Method extends Resource { /** * Add a method response to this method + * + * You should only add one method reponse for every status code. The API allows it + * for historical reasons, but will add a warning if this happens. If you do, your Method + * will nondeterministically use one of the responses, and ignore the rest. */ public addMethodResponse(methodResponse: MethodResponse): void { + const mr = this.methodResponses.find((x) => x.statusCode === methodResponse.statusCode); + if (mr) { + Annotations.of(this).addWarning(`addMethodResponse called multiple times with statusCode=${methodResponse.statusCode}, deployment will be nondeterministic. Use a single addMethodResponse call to configure the entire response.`); + } this.methodResponses.push(methodResponse); } @@ -322,12 +332,8 @@ export class Method extends Resource { let responseModels: {[contentType: string]: string} | undefined; if (mr.responseModels) { - responseModels = {}; - for (const contentType in mr.responseModels) { - if (mr.responseModels.hasOwnProperty(contentType)) { - responseModels[contentType] = mr.responseModels[contentType].modelId; - } - } + responseModels = Object.fromEntries(Object.entries(mr.responseModels) + .map(([contentType, rm]) => [contentType, rm.modelId])); } const methodResponseProp = { @@ -506,4 +512,4 @@ export enum AuthorizationType { function pathForArn(path: string): string { return path.replace(/\{[^\}]*\}/g, '*'); // replace path parameters (like '{bookId}') with asterisk -} +} \ No newline at end of file diff --git a/packages/aws-cdk-lib/aws-apigateway/test/integrations/stepfunctions.test.ts b/packages/aws-cdk-lib/aws-apigateway/test/integrations/stepfunctions.test.ts index 0f2a5c65bcf9a..26b2a34662b09 100644 --- a/packages/aws-cdk-lib/aws-apigateway/test/integrations/stepfunctions.test.ts +++ b/packages/aws-cdk-lib/aws-apigateway/test/integrations/stepfunctions.test.ts @@ -372,6 +372,122 @@ describe('StepFunctionsIntegration', () => { .toThrow(/State Machine must be of type "EXPRESS". Please use StateMachineType.EXPRESS as the stateMachineType/); }); }); + + test('addMethod is not susceptible to false sharing of arrays', () => { + //GIVEN + const { stack, api, stateMachine } = givenSetup(); + + //WHEN + const methodOptions = { + methodResponses: [ + { + statusCode: '200', + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + }, + ], + }; + + const integrationOptions = { + integrationResponses: [ + { + responseParameters: { + 'method.response.header.Access-Control-Allow-Origin': "'*'", + }, + statusCode: '200', + }, + ], + }; + + const integ = apigw.StepFunctionsIntegration.startExecution(stateMachine, integrationOptions); + api.root.addMethod('GET', integ, methodOptions); + api.root.addMethod('POST', integ, methodOptions); + + // THEN - the MethodResponses arrays have 4 elements instead of 8 + // (This is still incorrect because 200 occurs multiple times, but that's a separate + // issue with a non-straightforward solution) + Template.fromStack(stack).resourceCountIs('AWS::ApiGateway::Method', 2); + Template.fromStack(stack).hasResourceProperties('AWS::ApiGateway::Method', { + HttpMethod: 'GET', + MethodResponses: [ + { + ResponseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + StatusCode: '200', + }, + { + ResponseModels: { + 'application/json': 'Empty', + }, + StatusCode: '200', + }, + { + ResponseModels: { + 'application/json': 'Error', + }, + StatusCode: '400', + }, + { + ResponseModels: { + 'application/json': 'Error', + }, + StatusCode: '500', + }, + ], + Integration: { + IntegrationResponses: [ + { + ResponseParameters: { + 'method.response.header.Access-Control-Allow-Origin': "'*'", + }, + StatusCode: '200', + }, + ], + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::ApiGateway::Method', { + HttpMethod: 'POST', + MethodResponses: [ + { + ResponseParameters: { + 'method.response.header.Access-Control-Allow-Origin': true, + }, + StatusCode: '200', + }, + { + ResponseModels: { + 'application/json': 'Empty', + }, + StatusCode: '200', + }, + { + ResponseModels: { + 'application/json': 'Error', + }, + StatusCode: '400', + }, + { + ResponseModels: { + 'application/json': 'Error', + }, + StatusCode: '500', + }, + ], + Integration: { + IntegrationResponses: [ + { + ResponseParameters: { + 'method.response.header.Access-Control-Allow-Origin': "'*'", + }, + StatusCode: '200', + }, + ], + }, + }); + }); }); function givenSetup() { From e264a2f2c95e57e38d77c5fedad4aa06b2ec9ead Mon Sep 17 00:00:00 2001 From: "k.goto" <24818752+go-to-k@users.noreply.github.com> Date: Thu, 17 Aug 2023 21:18:54 +0900 Subject: [PATCH 11/56] fix(ecr): autoDeleteImages fails when repository is renamed (#26742) This PR fixes the bug that ECRAutoDeleteImages fails on repo rename. The customResource depends on the role, and when the repository name changes, the role is updated to match the new repository instead of the old one, before customResource runs and the old repository is deleted. It was difficult to delete the old repo before the role update ran, so I changed the resource of the role to a wildcard. Closes #26711. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../aws-ecr-integ-stack.assets.json | 4 +- .../aws-ecr-integ-stack.template.json | 27 ++++++-- .../manifest.json | 2 +- .../tree.json | 64 +++++++++---------- ...-resourcesmax-ACCOUNT-REGION.template.json | 33 +++++++--- .../aws-cdk-lib/aws-ecr/lib/repository.ts | 15 ++--- .../aws-ecr/test/repository.test.ts | 24 ++++--- 7 files changed, 102 insertions(+), 67 deletions(-) diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/aws-ecr-integ-stack.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/aws-ecr-integ-stack.assets.json index 2ed59aaf47afa..e63f36bac2b52 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/aws-ecr-integ-stack.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/aws-ecr-integ-stack.assets.json @@ -14,7 +14,7 @@ } } }, - "32b456cdb8ff646c98c4580ff6d88bd51e84e33af74af927bb882158a53a0d21": { + "adb4722adf5406a51ec51892647c61e7ac61ba38b845cd1163397018822e542e": { "source": { "path": "aws-ecr-integ-stack.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "32b456cdb8ff646c98c4580ff6d88bd51e84e33af74af927bb882158a53a0d21.json", + "objectKey": "adb4722adf5406a51ec51892647c61e7ac61ba38b845cd1163397018822e542e.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/aws-ecr-integ-stack.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/aws-ecr-integ-stack.template.json index f4a8953a85a42..b9c3c667b0ed7 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/aws-ecr-integ-stack.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/aws-ecr-integ-stack.template.json @@ -69,12 +69,31 @@ ], "Resource": [ { - "Fn::GetAtt": [ - "Repo02AC86CF", - "Arn" + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":repository/*" + ] ] } - ] + ], + "Condition": { + "StringEquals": { + "ecr:ResourceTag/aws-cdk:auto-delete-images": "true" + } + } } ] } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/manifest.json index 646bcf69283fc..549c403bbf383 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/32b456cdb8ff646c98c4580ff6d88bd51e84e33af74af927bb882158a53a0d21.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/adb4722adf5406a51ec51892647c61e7ac61ba38b845cd1163397018822e542e.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/tree.json index 694514e724fea..99ef3b4059be5 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-ecr/test/integ.repository-auto-delete-images.js.snapshot/tree.json @@ -28,8 +28,8 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_ecr.CfnRepository", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "AutoDeleteImagesCustomResource": { @@ -40,20 +40,20 @@ "id": "Default", "path": "aws-ecr-integ-stack/Repo/AutoDeleteImagesCustomResource/Default", "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.CustomResource", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_ecr.Repository", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "Custom::ECRAutoDeleteImagesCustomResourceProvider": { @@ -64,60 +64,60 @@ "id": "Staging", "path": "aws-ecr-integ-stack/Custom::ECRAutoDeleteImagesCustomResourceProvider/Staging", "constructInfo": { - "fqn": "aws-cdk-lib.AssetStaging", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "Role": { "id": "Role", "path": "aws-ecr-integ-stack/Custom::ECRAutoDeleteImagesCustomResourceProvider/Role", "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "Handler": { "id": "Handler", "path": "aws-ecr-integ-stack/Custom::ECRAutoDeleteImagesCustomResourceProvider/Handler", "constructInfo": { - "fqn": "aws-cdk-lib.CfnResource", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.CustomResourceProvider", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "RepositoryURI": { "id": "RepositoryURI", "path": "aws-ecr-integ-stack/RepositoryURI", "constructInfo": { - "fqn": "aws-cdk-lib.CfnOutput", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "BootstrapVersion": { "id": "BootstrapVersion", "path": "aws-ecr-integ-stack/BootstrapVersion", "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "CheckBootstrapVersion": { "id": "CheckBootstrapVersion", "path": "aws-ecr-integ-stack/CheckBootstrapVersion", "constructInfo": { - "fqn": "aws-cdk-lib.CfnRule", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.Stack", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "cdk-integ-auto-delete-images": { @@ -144,22 +144,22 @@ "id": "BootstrapVersion", "path": "cdk-integ-auto-delete-images/DefaultTest/DeployAssert/BootstrapVersion", "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "CheckBootstrapVersion": { "id": "CheckBootstrapVersion", "path": "cdk-integ-auto-delete-images/DefaultTest/DeployAssert/CheckBootstrapVersion", "constructInfo": { - "fqn": "aws-cdk-lib.CfnRule", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.Stack", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, @@ -184,8 +184,8 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.App", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/StagingStack-default-resourcesmax-ACCOUNT-REGION.template.json b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/StagingStack-default-resourcesmax-ACCOUNT-REGION.template.json index bb7b4bebdd950..e414b1a846fa0 100644 --- a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/StagingStack-default-resourcesmax-ACCOUNT-REGION.template.json +++ b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/StagingStack-default-resourcesmax-ACCOUNT-REGION.template.json @@ -636,18 +636,31 @@ ], "Resource": [ { - "Fn::GetAtt": [ - "defaultresourcesmaxecrasset13112F7F9", - "Arn" - ] - }, - { - "Fn::GetAtt": [ - "defaultresourcesmaxecrasset2904B88A7", - "Arn" + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ecr:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":repository/*" + ] ] } - ] + ], + "Condition": { + "StringEquals": { + "ecr:ResourceTag/aws-cdk:auto-delete-images": "true" + } + } } ] } diff --git a/packages/aws-cdk-lib/aws-ecr/lib/repository.ts b/packages/aws-cdk-lib/aws-ecr/lib/repository.ts index cefd1407f5851..41b2d452acd81 100644 --- a/packages/aws-cdk-lib/aws-ecr/lib/repository.ts +++ b/packages/aws-cdk-lib/aws-ecr/lib/repository.ts @@ -20,11 +20,11 @@ import { CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, + Aws, } from '../../core'; const AUTO_DELETE_IMAGES_RESOURCE_TYPE = 'Custom::ECRAutoDeleteImages'; const AUTO_DELETE_IMAGES_TAG = 'aws-cdk:auto-delete-images'; -const REPO_ARN_SYMBOL = Symbol.for('@aws-cdk/aws-ecr.RepoArns'); /** * Represents an ECR repository. @@ -867,12 +867,8 @@ export class Repository extends RepositoryBase { }); if (firstTime) { - const repoArns = [this._resource.attrArn]; - (provider as any)[REPO_ARN_SYMBOL] = repoArns; - // Use a iam policy to allow the custom resource to list & delete // images in the repository and the ability to get all repositories to find the arn needed on delete. - // We lazily produce a list of repositories associated with this custom resource provider. provider.addToRolePolicy({ Effect: 'Allow', Action: [ @@ -881,10 +877,13 @@ export class Repository extends RepositoryBase { 'ecr:ListImages', 'ecr:ListTagsForResource', ], - Resource: Lazy.list({ produce: () => repoArns }), + Resource: [`arn:${Aws.PARTITION}:ecr:${Stack.of(this).region}:${Stack.of(this).account}:repository/*`], + Condition: { + StringEquals: { + ['ecr:ResourceTag/' + AUTO_DELETE_IMAGES_TAG]: 'true', + }, + }, }); - } else { - (provider as any)[REPO_ARN_SYMBOL].push(this._resource.attrArn); } const customResource = new CustomResource(this, 'AutoDeleteImagesCustomResource', { diff --git a/packages/aws-cdk-lib/aws-ecr/test/repository.test.ts b/packages/aws-cdk-lib/aws-ecr/test/repository.test.ts index 6b58bbb3e2d88..38e7bdebac650 100644 --- a/packages/aws-cdk-lib/aws-ecr/test/repository.test.ts +++ b/packages/aws-cdk-lib/aws-ecr/test/repository.test.ts @@ -1006,18 +1006,22 @@ describe('repository', () => { ], Resource: [ { - 'Fn::GetAtt': [ - 'Repo1DBD717D9', - 'Arn', - ], - }, - { - 'Fn::GetAtt': [ - 'Repo2730A8200', - 'Arn', - ], + 'Fn::Join': ['', [ + 'arn:', + { Ref: 'AWS::Partition' }, + ':ecr:', + { Ref: 'AWS::Region' }, + ':', + { Ref: 'AWS::AccountId' }, + ':repository/*', + ]], }, ], + Condition: { + StringEquals: { + 'ecr:ResourceTag/aws-cdk:auto-delete-images': 'true', + }, + }, }, ], }, From ecb34bbaacc3e9ed70c8dcb59ab6b573f229340f Mon Sep 17 00:00:00 2001 From: Rico Hermans Date: Thu, 17 Aug 2023 16:21:06 +0200 Subject: [PATCH 12/56] docs(iot): fix CloudWatch Metric example (#26784) This example gets replicated to the CloudWatch Metrics documentation, where it is wrong. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/@aws-cdk/aws-iot-actions-alpha/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-iot-actions-alpha/README.md b/packages/@aws-cdk/aws-iot-actions-alpha/README.md index cd5814022cb49..c2b56a455e5aa 100644 --- a/packages/@aws-cdk/aws-iot-actions-alpha/README.md +++ b/packages/@aws-cdk/aws-iot-actions-alpha/README.md @@ -192,7 +192,7 @@ import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; const metric = new cloudwatch.Metric({ namespace: 'MyNamespace', metricName: 'MyMetric', - dimensions: { MyDimension: 'MyDimensionValue' }, + dimensionsMap: { MyDimension: 'MyDimensionValue' }, }); const alarm = new cloudwatch.Alarm(this, 'MyAlarm', { metric: metric, From 8c9f0e2391ad3f67b033758706c5611525081c10 Mon Sep 17 00:00:00 2001 From: Luca Pizzini Date: Thu, 17 Aug 2023 17:11:46 +0200 Subject: [PATCH 13/56] fix(redshift): adding distKey to an existing table fails deployment (#26789) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The current implementation executes a `CREATE TABLE` if the table has no `distKey` specified and one is added, or if a `distKey` is present and is removed. The resulting table is created with the same name, causing the update operation to fail. This fixes the problem by using [`ALTER TABLE`](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_TABLE.html) when adding/removing `distKey` on a table update. Closes #26733. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../private/database-query-provider/table.ts | 9 +- .../database-query-provider/table.test.ts | 12 +- .../cfn-response.js | 87 + .../consts.js | 10 + .../framework.js | 172 + .../outbound.js | 79 + .../util.js | 39 + .../handler-name.js | 10 + .../index.js | 21 + .../privileges.js | 58 + .../redshift-data.js | 37 + .../table.js | 177 ++ .../types.js | 24 + .../user.js | 70 + .../util.js | 34 + ...ws-cdk-redshift-distkey-create.assets.json | 45 + ...-cdk-redshift-distkey-create.template.json | 888 ++++++ ...ws-cdk-redshift-distkey-update.assets.json | 45 + ...-cdk-redshift-distkey-update.template.json | 888 ++++++ ...efaultTestDeployAssert61A36BE8.assets.json | 19 + ...aultTestDeployAssert61A36BE8.template.json | 36 + .../integ.cluster-distkey.js.snapshot/cdk.out | 1 + .../integ.json | 13 + .../manifest.json | 597 ++++ .../tree.json | 2813 +++++++++++++++++ .../test/integ.cluster-distkey.ts | 88 + 26 files changed, 6264 insertions(+), 8 deletions(-) create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/cfn-response.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/consts.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/framework.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/outbound.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/util.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/handler-name.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/index.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/privileges.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/redshift-data.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/table.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/types.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/user.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/util.js create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-create.assets.json create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-create.template.json create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-update.assets.json create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-update.template.json create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.assets.json create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.template.json create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.ts diff --git a/packages/@aws-cdk/aws-redshift-alpha/lib/private/database-query-provider/table.ts b/packages/@aws-cdk/aws-redshift-alpha/lib/private/database-query-provider/table.ts index ba4e71aeca843..e239fe12ae038 100644 --- a/packages/@aws-cdk/aws-redshift-alpha/lib/private/database-query-provider/table.ts +++ b/packages/@aws-cdk/aws-redshift-alpha/lib/private/database-query-provider/table.ts @@ -164,9 +164,14 @@ async function updateTable( const oldDistKey = getDistKeyColumn(oldTableColumns)?.name; const newDistKey = getDistKeyColumn(tableColumns)?.name; - if ((!oldDistKey && newDistKey ) || (oldDistKey && !newDistKey)) { - return createTable(tableNamePrefix, tableNameSuffix, tableColumns, tableAndClusterProps); + if (!oldDistKey && newDistKey) { + // Table has no existing distribution key, add a new one + alterationStatements.push(`ALTER TABLE ${tableName} ALTER DISTSTYLE KEY DISTKEY ${newDistKey}`); + } else if (oldDistKey && !newDistKey) { + // Table has a distribution key, remove and set to AUTO + alterationStatements.push(`ALTER TABLE ${tableName} ALTER DISTSTYLE AUTO`); } else if (oldDistKey !== newDistKey) { + // Table has an existing distribution key, change it alterationStatements.push(`ALTER TABLE ${tableName} ALTER DISTKEY ${newDistKey}`); } diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/database-query-provider/table.test.ts b/packages/@aws-cdk/aws-redshift-alpha/test/database-query-provider/table.test.ts index 0894e73915fd3..86a0be5722c4e 100644 --- a/packages/@aws-cdk/aws-redshift-alpha/test/database-query-provider/table.test.ts +++ b/packages/@aws-cdk/aws-redshift-alpha/test/database-query-provider/table.test.ts @@ -384,21 +384,21 @@ describe('update', () => { })); }); - test('replaces if distKey is added', async () => { + test('adds key without creating table if distKey is added', async () => { const newResourceProperties: ResourcePropertiesType = { ...resourceProperties, tableColumns: [{ name: 'col1', dataType: 'varchar(1)', distKey: true }], }; - await expect(manageTable(newResourceProperties, event)).resolves.not.toMatchObject({ + await expect(manageTable(newResourceProperties, event)).resolves.toMatchObject({ PhysicalResourceId: physicalResourceId, }); expect(mockExecuteStatement).toHaveBeenCalledWith(expect.objectContaining({ - Sql: `CREATE TABLE ${tableNamePrefix}${requestIdTruncated} (col1 varchar(1)) DISTKEY(col1)`, + Sql: `ALTER TABLE ${physicalResourceId} ALTER DISTSTYLE KEY DISTKEY col1`, })); }); - test('replaces if distKey is removed', async () => { + test('removes key without replacing table if distKey is removed', async () => { const newEvent: AWSLambda.CloudFormationCustomResourceEvent = { ...event, OldResourceProperties: { @@ -410,11 +410,11 @@ describe('update', () => { ...resourceProperties, }; - await expect(manageTable(newResourceProperties, newEvent)).resolves.not.toMatchObject({ + await expect(manageTable(newResourceProperties, newEvent)).resolves.toMatchObject({ PhysicalResourceId: physicalResourceId, }); expect(mockExecuteStatement).toHaveBeenCalledWith(expect.objectContaining({ - Sql: `CREATE TABLE ${tableNamePrefix}${requestIdTruncated} (col1 varchar(1))`, + Sql: `ALTER TABLE ${physicalResourceId} ALTER DISTSTYLE AUTO`, })); }); diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/cfn-response.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/cfn-response.js new file mode 100644 index 0000000000000..18467aae70501 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/cfn-response.js @@ -0,0 +1,87 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Retry = exports.safeHandler = exports.includeStackTraces = exports.submitResponse = exports.MISSING_PHYSICAL_ID_MARKER = exports.CREATE_FAILED_PHYSICAL_ID_MARKER = void 0; +/* eslint-disable max-len */ +/* eslint-disable no-console */ +const url = require("url"); +const outbound_1 = require("./outbound"); +const util_1 = require("./util"); +exports.CREATE_FAILED_PHYSICAL_ID_MARKER = 'AWSCDK::CustomResourceProviderFramework::CREATE_FAILED'; +exports.MISSING_PHYSICAL_ID_MARKER = 'AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID'; +async function submitResponse(status, event, options = {}) { + const json = { + Status: status, + Reason: options.reason || status, + StackId: event.StackId, + RequestId: event.RequestId, + PhysicalResourceId: event.PhysicalResourceId || exports.MISSING_PHYSICAL_ID_MARKER, + LogicalResourceId: event.LogicalResourceId, + NoEcho: options.noEcho, + Data: event.Data, + }; + (0, util_1.log)('submit response to cloudformation', json); + const responseBody = JSON.stringify(json); + const parsedUrl = url.parse(event.ResponseURL); + const retryOptions = { + attempts: 5, + sleep: 1000, + }; + await (0, util_1.withRetries)(retryOptions, outbound_1.httpRequest)({ + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }, responseBody); +} +exports.submitResponse = submitResponse; +exports.includeStackTraces = true; // for unit tests +function safeHandler(block) { + return async (event) => { + // ignore DELETE event when the physical resource ID is the marker that + // indicates that this DELETE is a subsequent DELETE to a failed CREATE + // operation. + if (event.RequestType === 'Delete' && event.PhysicalResourceId === exports.CREATE_FAILED_PHYSICAL_ID_MARKER) { + (0, util_1.log)('ignoring DELETE event caused by a failed CREATE event'); + await submitResponse('SUCCESS', event); + return; + } + try { + await block(event); + } + catch (e) { + // tell waiter state machine to retry + if (e instanceof Retry) { + (0, util_1.log)('retry requested by handler'); + throw e; + } + if (!event.PhysicalResourceId) { + // special case: if CREATE fails, which usually implies, we usually don't + // have a physical resource id. in this case, the subsequent DELETE + // operation does not have any meaning, and will likely fail as well. to + // address this, we use a marker so the provider framework can simply + // ignore the subsequent DELETE. + if (event.RequestType === 'Create') { + (0, util_1.log)('CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored'); + event.PhysicalResourceId = exports.CREATE_FAILED_PHYSICAL_ID_MARKER; + } + else { + // otherwise, if PhysicalResourceId is not specified, something is + // terribly wrong because all other events should have an ID. + (0, util_1.log)(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify({ ...event, ResponseURL: '...' })}`); + } + } + // this is an actual error, fail the activity altogether and exist. + await submitResponse('FAILED', event, { + reason: exports.includeStackTraces ? e.stack : e.message, + }); + } + }; +} +exports.safeHandler = safeHandler; +class Retry extends Error { +} +exports.Retry = Retry; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2ZuLXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRCQUE0QjtBQUM1QiwrQkFBK0I7QUFDL0IsMkJBQTJCO0FBQzNCLHlDQUF5QztBQUN6QyxpQ0FBMEM7QUFFN0IsUUFBQSxnQ0FBZ0MsR0FBRyx3REFBd0QsQ0FBQztBQUM1RixRQUFBLDBCQUEwQixHQUFHLDhEQUE4RCxDQUFDO0FBZ0JsRyxLQUFLLFVBQVUsY0FBYyxDQUFDLE1BQTRCLEVBQUUsS0FBaUMsRUFBRSxVQUF5QyxFQUFHO0lBQ2hKLE1BQU0sSUFBSSxHQUFtRDtRQUMzRCxNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLE1BQU07UUFDaEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLElBQUksa0NBQTBCO1FBQzFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7UUFDMUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtLQUNqQixDQUFDO0lBRUYsSUFBQSxVQUFHLEVBQUMsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUvQyxNQUFNLFlBQVksR0FBRztRQUNuQixRQUFRLEVBQUUsQ0FBQztRQUNYLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQztJQUNGLE1BQU0sSUFBQSxrQkFBVyxFQUFDLFlBQVksRUFBRSxzQkFBVyxDQUFDLENBQUM7UUFDM0MsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1FBQzVCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRTtZQUNQLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztTQUMxRDtLQUNGLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQS9CRCx3Q0ErQkM7QUFFVSxRQUFBLGtCQUFrQixHQUFHLElBQUksQ0FBQyxDQUFDLGlCQUFpQjtBQUV2RCxTQUFnQixXQUFXLENBQUMsS0FBb0M7SUFDOUQsT0FBTyxLQUFLLEVBQUUsS0FBVSxFQUFFLEVBQUU7UUFFMUIsdUVBQXVFO1FBQ3ZFLHVFQUF1RTtRQUN2RSxhQUFhO1FBQ2IsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEtBQUssd0NBQWdDLEVBQUU7WUFDbkcsSUFBQSxVQUFHLEVBQUMsdURBQXVELENBQUMsQ0FBQztZQUM3RCxNQUFNLGNBQWMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkMsT0FBTztTQUNSO1FBRUQsSUFBSTtZQUNGLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BCO1FBQUMsT0FBTyxDQUFNLEVBQUU7WUFDZixxQ0FBcUM7WUFDckMsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFO2dCQUN0QixJQUFBLFVBQUcsRUFBQyw0QkFBNEIsQ0FBQyxDQUFDO2dCQUNsQyxNQUFNLENBQUMsQ0FBQzthQUNUO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtnQkFDN0IseUVBQXlFO2dCQUN6RSxtRUFBbUU7Z0JBQ25FLHdFQUF3RTtnQkFDeEUscUVBQXFFO2dCQUNyRSxnQ0FBZ0M7Z0JBQ2hDLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7b0JBQ2xDLElBQUEsVUFBRyxFQUFDLDRHQUE0RyxDQUFDLENBQUM7b0JBQ2xILEtBQUssQ0FBQyxrQkFBa0IsR0FBRyx3Q0FBZ0MsQ0FBQztpQkFDN0Q7cUJBQU07b0JBQ0wsa0VBQWtFO29CQUNsRSw2REFBNkQ7b0JBQzdELElBQUEsVUFBRyxFQUFDLDZEQUE2RCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN0SDthQUNGO1lBRUQsbUVBQW1FO1lBQ25FLE1BQU0sY0FBYyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUU7Z0JBQ3BDLE1BQU0sRUFBRSwwQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87YUFDakQsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBM0NELGtDQTJDQztBQUVELE1BQWEsS0FBTSxTQUFRLEtBQUs7Q0FBSTtBQUFwQyxzQkFBb0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB7IGh0dHBSZXF1ZXN0IH0gZnJvbSAnLi9vdXRib3VuZCc7XG5pbXBvcnQgeyBsb2csIHdpdGhSZXRyaWVzIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGNvbnN0IENSRUFURV9GQUlMRURfUEhZU0lDQUxfSURfTUFSS0VSID0gJ0FXU0NESzo6Q3VzdG9tUmVzb3VyY2VQcm92aWRlckZyYW1ld29yazo6Q1JFQVRFX0ZBSUxFRCc7XG5leHBvcnQgY29uc3QgTUlTU0lOR19QSFlTSUNBTF9JRF9NQVJLRVIgPSAnQVdTQ0RLOjpDdXN0b21SZXNvdXJjZVByb3ZpZGVyRnJhbWV3b3JrOjpNSVNTSU5HX1BIWVNJQ0FMX0lEJztcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZvcm1hdGlvblJlc3BvbnNlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHJlYXNvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgbm9FY2hvPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZvcm1hdGlvbkV2ZW50Q29udGV4dCB7XG4gIFN0YWNrSWQ6IHN0cmluZztcbiAgUmVxdWVzdElkOiBzdHJpbmc7XG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZztcbiAgTG9naWNhbFJlc291cmNlSWQ6IHN0cmluZztcbiAgUmVzcG9uc2VVUkw6IHN0cmluZztcbiAgRGF0YT86IGFueVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VibWl0UmVzcG9uc2Uoc3RhdHVzOiAnU1VDQ0VTUycgfCAnRkFJTEVEJywgZXZlbnQ6IENsb3VkRm9ybWF0aW9uRXZlbnRDb250ZXh0LCBvcHRpb25zOiBDbG91ZEZvcm1hdGlvblJlc3BvbnNlT3B0aW9ucyA9IHsgfSkge1xuICBjb25zdCBqc29uOiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZVJlc3BvbnNlID0ge1xuICAgIFN0YXR1czogc3RhdHVzLFxuICAgIFJlYXNvbjogb3B0aW9ucy5yZWFzb24gfHwgc3RhdHVzLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBldmVudC5QaHlzaWNhbFJlc291cmNlSWQgfHwgTUlTU0lOR19QSFlTSUNBTF9JRF9NQVJLRVIsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogb3B0aW9ucy5ub0VjaG8sXG4gICAgRGF0YTogZXZlbnQuRGF0YSxcbiAgfTtcblxuICBsb2coJ3N1Ym1pdCByZXNwb25zZSB0byBjbG91ZGZvcm1hdGlvbicsIGpzb24pO1xuXG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xuXG4gIGNvbnN0IHBhcnNlZFVybCA9IHVybC5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG5cbiAgY29uc3QgcmV0cnlPcHRpb25zID0ge1xuICAgIGF0dGVtcHRzOiA1LFxuICAgIHNsZWVwOiAxMDAwLFxuICB9O1xuICBhd2FpdCB3aXRoUmV0cmllcyhyZXRyeU9wdGlvbnMsIGh0dHBSZXF1ZXN0KSh7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9LCByZXNwb25zZUJvZHkpO1xufVxuXG5leHBvcnQgbGV0IGluY2x1ZGVTdGFja1RyYWNlcyA9IHRydWU7IC8vIGZvciB1bml0IHRlc3RzXG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlSGFuZGxlcihibG9jazogKGV2ZW50OiBhbnkpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgcmV0dXJuIGFzeW5jIChldmVudDogYW55KSA9PiB7XG5cbiAgICAvLyBpZ25vcmUgREVMRVRFIGV2ZW50IHdoZW4gdGhlIHBoeXNpY2FsIHJlc291cmNlIElEIGlzIHRoZSBtYXJrZXIgdGhhdFxuICAgIC8vIGluZGljYXRlcyB0aGF0IHRoaXMgREVMRVRFIGlzIGEgc3Vic2VxdWVudCBERUxFVEUgdG8gYSBmYWlsZWQgQ1JFQVRFXG4gICAgLy8gb3BlcmF0aW9uLlxuICAgIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ0RlbGV0ZScgJiYgZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkID09PSBDUkVBVEVfRkFJTEVEX1BIWVNJQ0FMX0lEX01BUktFUikge1xuICAgICAgbG9nKCdpZ25vcmluZyBERUxFVEUgZXZlbnQgY2F1c2VkIGJ5IGEgZmFpbGVkIENSRUFURSBldmVudCcpO1xuICAgICAgYXdhaXQgc3VibWl0UmVzcG9uc2UoJ1NVQ0NFU1MnLCBldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGJsb2NrKGV2ZW50KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIC8vIHRlbGwgd2FpdGVyIHN0YXRlIG1hY2hpbmUgdG8gcmV0cnlcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgUmV0cnkpIHtcbiAgICAgICAgbG9nKCdyZXRyeSByZXF1ZXN0ZWQgYnkgaGFuZGxlcicpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCkge1xuICAgICAgICAvLyBzcGVjaWFsIGNhc2U6IGlmIENSRUFURSBmYWlscywgd2hpY2ggdXN1YWxseSBpbXBsaWVzLCB3ZSB1c3VhbGx5IGRvbid0XG4gICAgICAgIC8vIGhhdmUgYSBwaHlzaWNhbCByZXNvdXJjZSBpZC4gaW4gdGhpcyBjYXNlLCB0aGUgc3Vic2VxdWVudCBERUxFVEVcbiAgICAgICAgLy8gb3BlcmF0aW9uIGRvZXMgbm90IGhhdmUgYW55IG1lYW5pbmcsIGFuZCB3aWxsIGxpa2VseSBmYWlsIGFzIHdlbGwuIHRvXG4gICAgICAgIC8vIGFkZHJlc3MgdGhpcywgd2UgdXNlIGEgbWFya2VyIHNvIHRoZSBwcm92aWRlciBmcmFtZXdvcmsgY2FuIHNpbXBseVxuICAgICAgICAvLyBpZ25vcmUgdGhlIHN1YnNlcXVlbnQgREVMRVRFLlxuICAgICAgICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdDcmVhdGUnKSB7XG4gICAgICAgICAgbG9nKCdDUkVBVEUgZmFpbGVkLCByZXNwb25kaW5nIHdpdGggYSBtYXJrZXIgcGh5c2ljYWwgcmVzb3VyY2UgaWQgc28gdGhhdCB0aGUgc3Vic2VxdWVudCBERUxFVEUgd2lsbCBiZSBpZ25vcmVkJyk7XG4gICAgICAgICAgZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkID0gQ1JFQVRFX0ZBSUxFRF9QSFlTSUNBTF9JRF9NQVJLRVI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlLCBpZiBQaHlzaWNhbFJlc291cmNlSWQgaXMgbm90IHNwZWNpZmllZCwgc29tZXRoaW5nIGlzXG4gICAgICAgICAgLy8gdGVycmlibHkgd3JvbmcgYmVjYXVzZSBhbGwgb3RoZXIgZXZlbnRzIHNob3VsZCBoYXZlIGFuIElELlxuICAgICAgICAgIGxvZyhgRVJST1I6IE1hbGZvcm1lZCBldmVudC4gXCJQaHlzaWNhbFJlc291cmNlSWRcIiBpcyByZXF1aXJlZDogJHtKU09OLnN0cmluZ2lmeSh7IC4uLmV2ZW50LCBSZXNwb25zZVVSTDogJy4uLicgfSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gdGhpcyBpcyBhbiBhY3R1YWwgZXJyb3IsIGZhaWwgdGhlIGFjdGl2aXR5IGFsdG9nZXRoZXIgYW5kIGV4aXN0LlxuICAgICAgYXdhaXQgc3VibWl0UmVzcG9uc2UoJ0ZBSUxFRCcsIGV2ZW50LCB7XG4gICAgICAgIHJlYXNvbjogaW5jbHVkZVN0YWNrVHJhY2VzID8gZS5zdGFjayA6IGUubWVzc2FnZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFJldHJ5IGV4dGVuZHMgRXJyb3IgeyB9XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/consts.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/consts.js new file mode 100644 index 0000000000000..31faa077ae313 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/consts.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FRAMEWORK_ON_TIMEOUT_HANDLER_NAME = exports.FRAMEWORK_IS_COMPLETE_HANDLER_NAME = exports.FRAMEWORK_ON_EVENT_HANDLER_NAME = exports.WAITER_STATE_MACHINE_ARN_ENV = exports.USER_IS_COMPLETE_FUNCTION_ARN_ENV = exports.USER_ON_EVENT_FUNCTION_ARN_ENV = void 0; +exports.USER_ON_EVENT_FUNCTION_ARN_ENV = 'USER_ON_EVENT_FUNCTION_ARN'; +exports.USER_IS_COMPLETE_FUNCTION_ARN_ENV = 'USER_IS_COMPLETE_FUNCTION_ARN'; +exports.WAITER_STATE_MACHINE_ARN_ENV = 'WAITER_STATE_MACHINE_ARN'; +exports.FRAMEWORK_ON_EVENT_HANDLER_NAME = 'onEvent'; +exports.FRAMEWORK_IS_COMPLETE_HANDLER_NAME = 'isComplete'; +exports.FRAMEWORK_ON_TIMEOUT_HANDLER_NAME = 'onTimeout'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsOEJBQThCLEdBQUcsNEJBQTRCLENBQUM7QUFDOUQsUUFBQSxpQ0FBaUMsR0FBRywrQkFBK0IsQ0FBQztBQUNwRSxRQUFBLDRCQUE0QixHQUFHLDBCQUEwQixDQUFDO0FBRTFELFFBQUEsK0JBQStCLEdBQUcsU0FBUyxDQUFDO0FBQzVDLFFBQUEsa0NBQWtDLEdBQUcsWUFBWSxDQUFDO0FBQ2xELFFBQUEsaUNBQWlDLEdBQUcsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFVTRVJfT05fRVZFTlRfRlVOQ1RJT05fQVJOX0VOViA9ICdVU0VSX09OX0VWRU5UX0ZVTkNUSU9OX0FSTic7XG5leHBvcnQgY29uc3QgVVNFUl9JU19DT01QTEVURV9GVU5DVElPTl9BUk5fRU5WID0gJ1VTRVJfSVNfQ09NUExFVEVfRlVOQ1RJT05fQVJOJztcbmV4cG9ydCBjb25zdCBXQUlURVJfU1RBVEVfTUFDSElORV9BUk5fRU5WID0gJ1dBSVRFUl9TVEFURV9NQUNISU5FX0FSTic7XG5cbmV4cG9ydCBjb25zdCBGUkFNRVdPUktfT05fRVZFTlRfSEFORExFUl9OQU1FID0gJ29uRXZlbnQnO1xuZXhwb3J0IGNvbnN0IEZSQU1FV09SS19JU19DT01QTEVURV9IQU5ETEVSX05BTUUgPSAnaXNDb21wbGV0ZSc7XG5leHBvcnQgY29uc3QgRlJBTUVXT1JLX09OX1RJTUVPVVRfSEFORExFUl9OQU1FID0gJ29uVGltZW91dCc7XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/framework.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/framework.js new file mode 100644 index 0000000000000..b92c20b34ad9d --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/framework.js @@ -0,0 +1,172 @@ +"use strict"; +/* eslint-disable max-len */ +/* eslint-disable no-console */ +const cfnResponse = require("./cfn-response"); +const consts = require("./consts"); +const outbound_1 = require("./outbound"); +const util_1 = require("./util"); +/** + * The main runtime entrypoint of the async custom resource lambda function. + * + * Any lifecycle event changes to the custom resources will invoke this handler, which will, in turn, + * interact with the user-defined `onEvent` and `isComplete` handlers. + * + * This function will always succeed. If an error occurs + * + * @param cfnRequest The cloudformation custom resource event. + */ +async function onEvent(cfnRequest) { + const sanitizedRequest = { ...cfnRequest, ResponseURL: '...' }; + (0, util_1.log)('onEventHandler', sanitizedRequest); + cfnRequest.ResourceProperties = cfnRequest.ResourceProperties || {}; + const onEventResult = await invokeUserFunction(consts.USER_ON_EVENT_FUNCTION_ARN_ENV, sanitizedRequest, cfnRequest.ResponseURL); + (0, util_1.log)('onEvent returned:', onEventResult); + // merge the request and the result from onEvent to form the complete resource event + // this also performs validation. + const resourceEvent = createResponseEvent(cfnRequest, onEventResult); + (0, util_1.log)('event:', onEventResult); + // determine if this is an async provider based on whether we have an isComplete handler defined. + // if it is not defined, then we are basically ready to return a positive response. + if (!process.env[consts.USER_IS_COMPLETE_FUNCTION_ARN_ENV]) { + return cfnResponse.submitResponse('SUCCESS', resourceEvent, { noEcho: resourceEvent.NoEcho }); + } + // ok, we are not complete, so kick off the waiter workflow + const waiter = { + stateMachineArn: (0, util_1.getEnv)(consts.WAITER_STATE_MACHINE_ARN_ENV), + name: resourceEvent.RequestId, + input: JSON.stringify(resourceEvent), + }; + (0, util_1.log)('starting waiter', waiter); + // kick off waiter state machine + await (0, outbound_1.startExecution)(waiter); +} +// invoked a few times until `complete` is true or until it times out. +async function isComplete(event) { + const sanitizedRequest = { ...event, ResponseURL: '...' }; + (0, util_1.log)('isComplete', sanitizedRequest); + const isCompleteResult = await invokeUserFunction(consts.USER_IS_COMPLETE_FUNCTION_ARN_ENV, sanitizedRequest, event.ResponseURL); + (0, util_1.log)('user isComplete returned:', isCompleteResult); + // if we are not complete, return false, and don't send a response back. + if (!isCompleteResult.IsComplete) { + if (isCompleteResult.Data && Object.keys(isCompleteResult.Data).length > 0) { + throw new Error('"Data" is not allowed if "IsComplete" is "False"'); + } + // This must be the full event, it will be deserialized in `onTimeout` to send the response to CloudFormation + throw new cfnResponse.Retry(JSON.stringify(event)); + } + const response = { + ...event, + ...isCompleteResult, + Data: { + ...event.Data, + ...isCompleteResult.Data, + }, + }; + await cfnResponse.submitResponse('SUCCESS', response, { noEcho: event.NoEcho }); +} +// invoked when completion retries are exhaused. +async function onTimeout(timeoutEvent) { + (0, util_1.log)('timeoutHandler', timeoutEvent); + const isCompleteRequest = JSON.parse(JSON.parse(timeoutEvent.Cause).errorMessage); + await cfnResponse.submitResponse('FAILED', isCompleteRequest, { + reason: 'Operation timed out', + }); +} +async function invokeUserFunction(functionArnEnv, sanitizedPayload, responseUrl) { + const functionArn = (0, util_1.getEnv)(functionArnEnv); + (0, util_1.log)(`executing user function ${functionArn} with payload`, sanitizedPayload); + // transient errors such as timeouts, throttling errors (429), and other + // errors that aren't caused by a bad request (500 series) are retried + // automatically by the JavaScript SDK. + const resp = await (0, outbound_1.invokeFunction)({ + FunctionName: functionArn, + // Cannot strip 'ResponseURL' here as this would be a breaking change even though the downstream CR doesn't need it + Payload: JSON.stringify({ ...sanitizedPayload, ResponseURL: responseUrl }), + }); + (0, util_1.log)('user function response:', resp, typeof (resp)); + const jsonPayload = parseJsonPayload(resp.Payload); + if (resp.FunctionError) { + (0, util_1.log)('user function threw an error:', resp.FunctionError); + const errorMessage = jsonPayload.errorMessage || 'error'; + // parse function name from arn + // arn:${Partition}:lambda:${Region}:${Account}:function:${FunctionName} + const arn = functionArn.split(':'); + const functionName = arn[arn.length - 1]; + // append a reference to the log group. + const message = [ + errorMessage, + '', + `Logs: /aws/lambda/${functionName}`, + '', + ].join('\n'); + const e = new Error(message); + // the output that goes to CFN is what's in `stack`, not the error message. + // if we have a remote trace, construct a nice message with log group information + if (jsonPayload.trace) { + // skip first trace line because it's the message + e.stack = [message, ...jsonPayload.trace.slice(1)].join('\n'); + } + throw e; + } + return jsonPayload; +} +function parseJsonPayload(payload) { + if (!payload) { + return {}; + } + // sdk v3 returns payloads in Uint8Array, either it or a string or Buffer + // can be cast into a buffer and then decoded. + let text = new TextDecoder().decode(Buffer.from(payload)); + try { + return JSON.parse(text); + } + catch { + throw new Error(`return values from user-handlers must be JSON objects. got: "${text}"`); + } +} +function createResponseEvent(cfnRequest, onEventResult) { + // + // validate that onEventResult always includes a PhysicalResourceId + onEventResult = onEventResult || {}; + // if physical ID is not returned, we have some defaults for you based + // on the request type. + const physicalResourceId = onEventResult.PhysicalResourceId || defaultPhysicalResourceId(cfnRequest); + // if we are in DELETE and physical ID was changed, it's an error. + if (cfnRequest.RequestType === 'Delete' && physicalResourceId !== cfnRequest.PhysicalResourceId) { + throw new Error(`DELETE: cannot change the physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${onEventResult.PhysicalResourceId}" during deletion`); + } + // if we are in UPDATE and physical ID was changed, it's a replacement (just log) + if (cfnRequest.RequestType === 'Update' && physicalResourceId !== cfnRequest.PhysicalResourceId) { + (0, util_1.log)(`UPDATE: changing physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${onEventResult.PhysicalResourceId}"`); + } + // merge request event and result event (result prevails). + return { + ...cfnRequest, + ...onEventResult, + PhysicalResourceId: physicalResourceId, + }; +} +/** + * Calculates the default physical resource ID based in case user handler did + * not return a PhysicalResourceId. + * + * For "CREATE", it uses the RequestId. + * For "UPDATE" and "DELETE" and returns the current PhysicalResourceId (the one provided in `event`). + */ +function defaultPhysicalResourceId(req) { + switch (req.RequestType) { + case 'Create': + return req.RequestId; + case 'Update': + case 'Delete': + return req.PhysicalResourceId; + default: + throw new Error(`Invalid "RequestType" in request "${JSON.stringify(req)}"`); + } +} +module.exports = { + [consts.FRAMEWORK_ON_EVENT_HANDLER_NAME]: cfnResponse.safeHandler(onEvent), + [consts.FRAMEWORK_IS_COMPLETE_HANDLER_NAME]: cfnResponse.safeHandler(isComplete), + [consts.FRAMEWORK_ON_TIMEOUT_HANDLER_NAME]: onTimeout, +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnJhbWV3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0QkFBNEI7QUFDNUIsK0JBQStCO0FBQy9CLDhDQUE4QztBQUM5QyxtQ0FBbUM7QUFDbkMseUNBQTREO0FBQzVELGlDQUFxQztBQVVyQzs7Ozs7Ozs7O0dBU0c7QUFDSCxLQUFLLFVBQVUsT0FBTyxDQUFDLFVBQXVEO0lBQzVFLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFXLENBQUM7SUFDeEUsSUFBQSxVQUFHLEVBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUV4QyxVQUFVLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLGtCQUFrQixJQUFJLEVBQUcsQ0FBQztJQUVyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFvQixDQUFDO0lBQ25KLElBQUEsVUFBRyxFQUFDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXhDLG9GQUFvRjtJQUNwRixpQ0FBaUM7SUFDakMsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JFLElBQUEsVUFBRyxFQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUU3QixpR0FBaUc7SUFDakcsbUZBQW1GO0lBQ25GLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFO1FBQzFELE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQy9GO0lBRUQsMkRBQTJEO0lBQzNELE1BQU0sTUFB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QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMseUJBQXlCLENBQUMsR0FBZ0Q7SUFDakYsUUFBUSxHQUFHLENBQUMsV0FBVyxFQUFFO1FBQ3ZCLEtBQUssUUFBUTtZQUNYLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUV2QixLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssUUFBUTtZQUNYLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDO1FBRWhDO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDaEY7QUFDSCxDQUFDO0FBdE1ELGlCQUFTO0lBQ1AsQ0FBQyxNQUFNLENBQUMsK0JBQStCLENBQUMsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUMxRSxDQUFDLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO0lBQ2hGLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsU0FBUztDQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0ICogYXMgY2ZuUmVzcG9uc2UgZnJvbSAnLi9jZm4tcmVzcG9uc2UnO1xuaW1wb3J0ICogYXMgY29uc3RzIGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IGludm9rZUZ1bmN0aW9uLCBzdGFydEV4ZWN1dGlvbiB9IGZyb20gJy4vb3V0Ym91bmQnO1xuaW1wb3J0IHsgZ2V0RW52LCBsb2cgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSXNDb21wbGV0ZVJlc3BvbnNlLCBPbkV2ZW50UmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vIHVzZSBjb25zdHMgZm9yIGhhbmRsZXIgbmFtZXMgdG8gY29tcGlsZXItZW5mb3JjZSB0aGUgY291cGxpbmcgd2l0aCBjb25zdHJ1Y3Rpb24gY29kZS5cbmV4cG9ydCA9IHtcbiAgW2NvbnN0cy5GUkFNRVdPUktfT05fRVZFTlRfSEFORExFUl9OQU1FXTogY2ZuUmVzcG9uc2Uuc2FmZUhhbmRsZXIob25FdmVudCksXG4gIFtjb25zdHMuRlJBTUVXT1JLX0lTX0NPTVBMRVRFX0hBTkRMRVJfTkFNRV06IGNmblJlc3BvbnNlLnNhZmVIYW5kbGVyKGlzQ29tcGxldGUpLFxuICBbY29uc3RzLkZSQU1FV09SS19PTl9USU1FT1VUX0hBTkRMRVJfTkFNRV06IG9uVGltZW91dCxcbn07XG5cbi8qKlxuICogVGhlIG1haW4gcnVudGltZSBlbnRyeXBvaW50IG9mIHRoZSBhc3luYyBjdXN0b20gcmVzb3VyY2UgbGFtYmRhIGZ1bmN0aW9uLlxuICpcbiAqIEFueSBsaWZlY3ljbGUgZXZlbnQgY2hhbmdlcyB0byB0aGUgY3VzdG9tIHJlc291cmNlcyB3aWxsIGludm9rZSB0aGlzIGhhbmRsZXIsIHdoaWNoIHdpbGwsIGluIHR1cm4sXG4gKiBpbnRlcmFjdCB3aXRoIHRoZSB1c2VyLWRlZmluZWQgYG9uRXZlbnRgIGFuZCBgaXNDb21wbGV0ZWAgaGFuZGxlcnMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyBzdWNjZWVkLiBJZiBhbiBlcnJvciBvY2N1cnNcbiAqXG4gKiBAcGFyYW0gY2ZuUmVxdWVzdCBUaGUgY2xvdWRmb3JtYXRpb24gY3VzdG9tIHJlc291cmNlIGV2ZW50LlxuICovXG5hc3luYyBmdW5jdGlvbiBvbkV2ZW50KGNmblJlcXVlc3Q6IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQpIHtcbiAgY29uc3Qgc2FuaXRpemVkUmVxdWVzdCA9IHsgLi4uY2ZuUmVxdWVzdCwgUmVzcG9uc2VVUkw6ICcuLi4nIH0gYXMgY29uc3Q7XG4gIGxvZygnb25FdmVudEhhbmRsZXInLCBzYW5pdGl6ZWRSZXF1ZXN0KTtcblxuICBjZm5SZXF1ZXN0LlJlc291cmNlUHJvcGVydGllcyA9IGNmblJlcXVlc3QuUmVzb3VyY2VQcm9wZXJ0aWVzIHx8IHsgfTtcblxuICBjb25zdCBvbkV2ZW50UmVzdWx0ID0gYXdhaXQgaW52b2tlVXNlckZ1bmN0aW9uKGNvbnN0cy5VU0VSX09OX0VWRU5UX0ZVTkNUSU9OX0FSTl9FTlYsIHNhbml0aXplZFJlcXVlc3QsIGNmblJlcXVlc3QuUmVzcG9uc2VVUkwpIGFzIE9uRXZlbnRSZXNwb25zZTtcbiAgbG9nKCdvbkV2ZW50IHJldHVybmVkOicsIG9uRXZlbnRSZXN1bHQpO1xuXG4gIC8vIG1lcmdlIHRoZSByZXF1ZXN0IGFuZCB0aGUgcmVzdWx0IGZyb20gb25FdmVudCB0byBmb3JtIHRoZSBjb21wbGV0ZSByZXNvdXJjZSBldmVudFxuICAvLyB0aGlzIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbi5cbiAgY29uc3QgcmVzb3VyY2VFdmVudCA9IGNyZWF0ZVJlc3BvbnNlRXZlbnQoY2ZuUmVxdWVzdCwgb25FdmVudFJlc3VsdCk7XG4gIGxvZygnZXZlbnQ6Jywgb25FdmVudFJlc3VsdCk7XG5cbiAgLy8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYW4gYXN5bmMgcHJvdmlkZXIgYmFzZWQgb24gd2hldGhlciB3ZSBoYXZlIGFuIGlzQ29tcGxldGUgaGFuZGxlciBkZWZpbmVkLlxuICAvLyBpZiBpdCBpcyBub3QgZGVmaW5lZCwgdGhlbiB3ZSBhcmUgYmFzaWNhbGx5IHJlYWR5IHRvIHJldHVybiBhIHBvc2l0aXZlIHJlc3BvbnNlLlxuICBpZiAoIXByb2Nlc3MuZW52W2NvbnN0cy5VU0VSX0lTX0NPTVBMRVRFX0ZVTkNUSU9OX0FSTl9FTlZdKSB7XG4gICAgcmV0dXJuIGNmblJlc3BvbnNlLnN1Ym1pdFJlc3BvbnNlKCdTVUNDRVNTJywgcmVzb3VyY2VFdmVudCwgeyBub0VjaG86IHJlc291cmNlRXZlbnQuTm9FY2hvIH0pO1xuICB9XG5cbiAgLy8gb2ssIHdlIGFyZSBub3QgY29tcGxldGUsIHNvIGtpY2sgb2ZmIHRoZSB3YWl0ZXIgd29ya2Zsb3dcbiAgY29uc3Qgd2FpdGVyID0ge1xuICAgIHN0YXRlTWFjaGluZUFybjogZ2V0RW52KGNvbnN0cy5XQUlURVJfU1RBVEVfTUFDSElORV9BUk5fRU5WKSxcbiAgICBuYW1lOiByZXNvdXJjZUV2ZW50LlJlcXVlc3RJZCxcbiAgICBpbnB1dDogSlNPTi5zdHJpbmdpZnkocmVzb3VyY2VFdmVudCksXG4gIH07XG5cbiAgbG9nKCdzdGFydGluZyB3YWl0ZXInLCB3YWl0ZXIpO1xuXG4gIC8vIGtpY2sgb2ZmIHdhaXRlciBzdGF0ZSBtYWNoaW5lXG4gIGF3YWl0IHN0YXJ0RXhlY3V0aW9uKHdhaXRlcik7XG59XG5cbi8vIGludm9rZWQgYSBmZXcgdGltZXMgdW50aWwgYGNvbXBsZXRlYCBpcyB0cnVlIG9yIHVudGlsIGl0IHRpbWVzIG91dC5cbmFzeW5jIGZ1bmN0aW9uIGlzQ29tcGxldGUoZXZlbnQ6IEFXU0NES0FzeW5jQ3VzdG9tUmVzb3VyY2UuSXNDb21wbGV0ZVJlcXVlc3QpIHtcbiAgY29uc3Qgc2FuaXRpemVkUmVxdWVzdCA9IHsgLi4uZXZlbnQsIFJlc3BvbnNlVVJMOiAnLi4uJyB9IGFzIGNvbnN0O1xuICBsb2coJ2lzQ29tcGxldGUnLCBzYW5pdGl6ZWRSZXF1ZXN0KTtcblxuICBjb25zdCBpc0NvbXBsZXRlUmVzdWx0ID0gYXdhaXQgaW52b2tlVXNlckZ1bmN0aW9uKGNvbnN0cy5VU0VSX0lTX0NPTVBMRVRFX0ZVTkNUSU9OX0FSTl9FTlYsIHNhbml0aXplZFJlcXVlc3QsIGV2ZW50LlJlc3BvbnNlVVJMKSBhcyBJc0NvbXBsZXRlUmVzcG9uc2U7XG4gIGxvZygndXNlciBpc0NvbXBsZXRlIHJldHVybmVkOicsIGlzQ29tcGxldGVSZXN1bHQpO1xuXG4gIC8vIGlmIHdlIGFyZSBub3QgY29tcGxldGUsIHJldHVybiBmYWxzZSwgYW5kIGRvbid0IHNlbmQgYSByZXNwb25zZSBiYWNrLlxuICBpZiAoIWlzQ29tcGxldGVSZXN1bHQuSXNDb21wbGV0ZSkge1xuICAgIGlmIChpc0NvbXBsZXRlUmVzdWx0LkRhdGEgJiYgT2JqZWN0LmtleXMoaXNDb21wbGV0ZVJlc3VsdC5EYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiRGF0YVwiIGlzIG5vdCBhbGxvd2VkIGlmIFwiSXNDb21wbGV0ZVwiIGlzIFwiRmFsc2VcIicpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgbXVzdCBiZSB0aGUgZnVsbCBldmVudCwgaXQgd2lsbCBiZSBkZXNlcmlhbGl6ZWQgaW4gYG9uVGltZW91dGAgdG8gc2VuZCB0aGUgcmVzcG9uc2UgdG8gQ2xvdWRGb3JtYXRpb25cbiAgICB0aHJvdyBuZXcgY2ZuUmVzcG9uc2UuUmV0cnkoSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIC4uLmV2ZW50LFxuICAgIC4uLmlzQ29tcGxldGVSZXN1bHQsXG4gICAgRGF0YToge1xuICAgICAgLi4uZXZlbnQuRGF0YSxcbiAgICAgIC4uLmlzQ29tcGxldGVSZXN1bHQuRGF0YSxcbiAgICB9LFxuICB9O1xuXG4gIGF3YWl0IGNmblJlc3BvbnNlLnN1Ym1pdFJlc3BvbnNlKCdTVUNDRVNTJywgcmVzcG9uc2UsIHsgbm9FY2hvOiBldmVudC5Ob0VjaG8gfSk7XG59XG5cbi8vIGludm9rZWQgd2hlbiBjb21wbGV0aW9uIHJldHJpZXMgYXJlIGV4aGF1c2VkLlxuYXN5bmMgZnVuY3Rpb24gb25UaW1lb3V0KHRpbWVvdXRFdmVudDogYW55KSB7XG4gIGxvZygndGltZW91dEhhbmRsZXInLCB0aW1lb3V0RXZlbnQpO1xuXG4gIGNvbnN0IGlzQ29tcGxldGVSZXF1ZXN0ID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKHRpbWVvdXRFdmVudC5DYXVzZSkuZXJyb3JNZXNzYWdlKSBhcyBBV1NDREtBc3luY0N1c3RvbVJlc291cmNlLklzQ29tcGxldGVSZXF1ZXN0O1xuICBhd2FpdCBjZm5SZXNwb25zZS5zdWJtaXRSZXNwb25zZSgnRkFJTEVEJywgaXNDb21wbGV0ZVJlcXVlc3QsIHtcbiAgICByZWFzb246ICdPcGVyYXRpb24gdGltZWQgb3V0JyxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGludm9rZVVzZXJGdW5jdGlvbjxBIGV4dGVuZHMgeyBSZXNwb25zZVVSTDogJy4uLicgfT4oZnVuY3Rpb25Bcm5FbnY6IHN0cmluZywgc2FuaXRpemVkUGF5bG9hZDogQSwgcmVzcG9uc2VVcmw6IHN0cmluZykge1xuICBjb25zdCBmdW5jdGlvbkFybiA9IGdldEVudihmdW5jdGlvbkFybkVudik7XG4gIGxvZyhgZXhlY3V0aW5nIHVzZXIgZnVuY3Rpb24gJHtmdW5jdGlvbkFybn0gd2l0aCBwYXlsb2FkYCwgc2FuaXRpemVkUGF5bG9hZCk7XG5cbiAgLy8gdHJhbnNpZW50IGVycm9ycyBzdWNoIGFzIHRpbWVvdXRzLCB0aHJvdHRsaW5nIGVycm9ycyAoNDI5KSwgYW5kIG90aGVyXG4gIC8vIGVycm9ycyB0aGF0IGFyZW4ndCBjYXVzZWQgYnkgYSBiYWQgcmVxdWVzdCAoNTAwIHNlcmllcykgYXJlIHJldHJpZWRcbiAgLy8gYXV0b21hdGljYWxseSBieSB0aGUgSmF2YVNjcmlwdCBTREsuXG4gIGNvbnN0IHJlc3AgPSBhd2FpdCBpbnZva2VGdW5jdGlvbih7XG4gICAgRnVuY3Rpb25OYW1lOiBmdW5jdGlvbkFybixcblxuICAgIC8vIENhbm5vdCBzdHJpcCAnUmVzcG9uc2VVUkwnIGhlcmUgYXMgdGhpcyB3b3VsZCBiZSBhIGJyZWFraW5nIGNoYW5nZSBldmVuIHRob3VnaCB0aGUgZG93bnN0cmVhbSBDUiBkb2Vzbid0IG5lZWQgaXRcbiAgICBQYXlsb2FkOiBKU09OLnN0cmluZ2lmeSh7IC4uLnNhbml0aXplZFBheWxvYWQsIFJlc3BvbnNlVVJMOiByZXNwb25zZVVybCB9KSxcbiAgfSk7XG5cbiAgbG9nKCd1c2VyIGZ1bmN0aW9uIHJlc3BvbnNlOicsIHJlc3AsIHR5cGVvZihyZXNwKSk7XG5cbiAgY29uc3QganNvblBheWxvYWQgPSBwYXJzZUpzb25QYXlsb2FkKHJlc3AuUGF5bG9hZCk7XG4gIGlmIChyZXNwLkZ1bmN0aW9uRXJyb3IpIHtcbiAgICBsb2coJ3VzZXIgZnVuY3Rpb24gdGhyZXcgYW4gZXJyb3I6JywgcmVzcC5GdW5jdGlvbkVycm9yKTtcblxuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGpzb25QYXlsb2FkLmVycm9yTWVzc2FnZSB8fCAnZXJyb3InO1xuXG4gICAgLy8gcGFyc2UgZnVuY3Rpb24gbmFtZSBmcm9tIGFyblxuICAgIC8vIGFybjoke1BhcnRpdGlvbn06bGFtYmRhOiR7UmVnaW9ufToke0FjY291bnR9OmZ1bmN0aW9uOiR7RnVuY3Rpb25OYW1lfVxuICAgIGNvbnN0IGFybiA9IGZ1bmN0aW9uQXJuLnNwbGl0KCc6Jyk7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gYXJuW2Fybi5sZW5ndGggLSAxXTtcblxuICAgIC8vIGFwcGVuZCBhIHJlZmVyZW5jZSB0byB0aGUgbG9nIGdyb3VwLlxuICAgIGNvbnN0IG1lc3NhZ2UgPSBbXG4gICAgICBlcnJvck1lc3NhZ2UsXG4gICAgICAnJyxcbiAgICAgIGBMb2dzOiAvYXdzL2xhbWJkYS8ke2Z1bmN0aW9uTmFtZX1gLCAvLyBjbG91ZHdhdGNoIGxvZyBncm91cFxuICAgICAgJycsXG4gICAgXS5qb2luKCdcXG4nKTtcblxuICAgIGNvbnN0IGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG5cbiAgICAvLyB0aGUgb3V0cHV0IHRoYXQgZ29lcyB0byBDRk4gaXMgd2hhdCdzIGluIGBzdGFja2AsIG5vdCB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgICAvLyBpZiB3ZSBoYXZlIGEgcmVtb3RlIHRyYWNlLCBjb25zdHJ1Y3QgYSBuaWNlIG1lc3NhZ2Ugd2l0aCBsb2cgZ3JvdXAgaW5mb3JtYXRpb25cbiAgICBpZiAoanNvblBheWxvYWQudHJhY2UpIHtcbiAgICAgIC8vIHNraXAgZmlyc3QgdHJhY2UgbGluZSBiZWNhdXNlIGl0J3MgdGhlIG1lc3NhZ2VcbiAgICAgIGUuc3RhY2sgPSBbbWVzc2FnZSwgLi4uanNvblBheWxvYWQudHJhY2Uuc2xpY2UoMSldLmpvaW4oJ1xcbicpO1xuICAgIH1cblxuICAgIHRocm93IGU7XG4gIH1cblxuICByZXR1cm4ganNvblBheWxvYWQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSnNvblBheWxvYWQocGF5bG9hZDogYW55KTogYW55IHtcbiAgaWYgKCFwYXlsb2FkKSB7IHJldHVybiB7IH07IH1cbiAgLy8gc2RrIHYzIHJldHVybnMgcGF5bG9hZHMgaW4gVWludDhBcnJheSwgZWl0aGVyIGl0IG9yIGEgc3RyaW5nIG9yIEJ1ZmZlclxuICAvLyBjYW4gYmUgY2FzdCBpbnRvIGEgYnVmZmVyIGFuZCB0aGVuIGRlY29kZWQuXG4gIGxldCB0ZXh0ID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKEJ1ZmZlci5mcm9tKHBheWxvYWQpKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGByZXR1cm4gdmFsdWVzIGZyb20gdXNlci1oYW5kbGVycyBtdXN0IGJlIEpTT04gb2JqZWN0cy4gZ290OiBcIiR7dGV4dH1cImApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlRXZlbnQoY2ZuUmVxdWVzdDogQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCwgb25FdmVudFJlc3VsdDogT25FdmVudFJlc3BvbnNlKTogQVdTQ0RLQXN5bmNDdXN0b21SZXNvdXJjZS5Jc0NvbXBsZXRlUmVxdWVzdCB7XG4gIC8vXG4gIC8vIHZhbGlkYXRlIHRoYXQgb25FdmVudFJlc3VsdCBhbHdheXMgaW5jbHVkZXMgYSBQaHlzaWNhbFJlc291cmNlSWRcblxuICBvbkV2ZW50UmVzdWx0ID0gb25FdmVudFJlc3VsdCB8fCB7IH07XG5cbiAgLy8gaWYgcGh5c2ljYWwgSUQgaXMgbm90IHJldHVybmVkLCB3ZSBoYXZlIHNvbWUgZGVmYXVsdHMgZm9yIHlvdSBiYXNlZFxuICAvLyBvbiB0aGUgcmVxdWVzdCB0eXBlLlxuICBjb25zdCBwaHlzaWNhbFJlc291cmNlSWQgPSBvbkV2ZW50UmVzdWx0LlBoeXNpY2FsUmVzb3VyY2VJZCB8fCBkZWZhdWx0UGh5c2ljYWxSZXNvdXJjZUlkKGNmblJlcXVlc3QpO1xuXG4gIC8vIGlmIHdlIGFyZSBpbiBERUxFVEUgYW5kIHBoeXNpY2FsIElEIHdhcyBjaGFuZ2VkLCBpdCdzIGFuIGVycm9yLlxuICBpZiAoY2ZuUmVxdWVzdC5SZXF1ZXN0VHlwZSA9PT0gJ0RlbGV0ZScgJiYgcGh5c2ljYWxSZXNvdXJjZUlkICE9PSBjZm5SZXF1ZXN0LlBoeXNpY2FsUmVzb3VyY2VJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgREVMRVRFOiBjYW5ub3QgY2hhbmdlIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBJRCBmcm9tIFwiJHtjZm5SZXF1ZXN0LlBoeXNpY2FsUmVzb3VyY2VJZH1cIiB0byBcIiR7b25FdmVudFJlc3VsdC5QaHlzaWNhbFJlc291cmNlSWR9XCIgZHVyaW5nIGRlbGV0aW9uYCk7XG4gIH1cblxuICAvLyBpZiB3ZSBhcmUgaW4gVVBEQVRFIGFuZCBwaHlzaWNhbCBJRCB3YXMgY2hhbmdlZCwgaXQncyBhIHJlcGxhY2VtZW50IChqdXN0IGxvZylcbiAgaWYgKGNmblJlcXVlc3QuUmVxdWVzdFR5cGUgPT09ICdVcGRhdGUnICYmIHBoeXNpY2FsUmVzb3VyY2VJZCAhPT0gY2ZuUmVxdWVzdC5QaHlzaWNhbFJlc291cmNlSWQpIHtcbiAgICBsb2coYFVQREFURTogY2hhbmdpbmcgcGh5c2ljYWwgcmVzb3VyY2UgSUQgZnJvbSBcIiR7Y2ZuUmVxdWVzdC5QaHlzaWNhbFJlc291cmNlSWR9XCIgdG8gXCIke29uRXZlbnRSZXN1bHQuUGh5c2ljYWxSZXNvdXJjZUlkfVwiYCk7XG4gIH1cblxuICAvLyBtZXJnZSByZXF1ZXN0IGV2ZW50IGFuZCByZXN1bHQgZXZlbnQgKHJlc3VsdCBwcmV2YWlscykuXG4gIHJldHVybiB7XG4gICAgLi4uY2ZuUmVxdWVzdCxcbiAgICAuLi5vbkV2ZW50UmVzdWx0LFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICB9O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRlZmF1bHQgcGh5c2ljYWwgcmVzb3VyY2UgSUQgYmFzZWQgaW4gY2FzZSB1c2VyIGhhbmRsZXIgZGlkXG4gKiBub3QgcmV0dXJuIGEgUGh5c2ljYWxSZXNvdXJjZUlkLlxuICpcbiAqIEZvciBcIkNSRUFURVwiLCBpdCB1c2VzIHRoZSBSZXF1ZXN0SWQuXG4gKiBGb3IgXCJVUERBVEVcIiBhbmQgXCJERUxFVEVcIiBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBQaHlzaWNhbFJlc291cmNlSWQgKHRoZSBvbmUgcHJvdmlkZWQgaW4gYGV2ZW50YCkuXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRQaHlzaWNhbFJlc291cmNlSWQocmVxOiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50KTogc3RyaW5nIHtcbiAgc3dpdGNoIChyZXEuUmVxdWVzdFR5cGUpIHtcbiAgICBjYXNlICdDcmVhdGUnOlxuICAgICAgcmV0dXJuIHJlcS5SZXF1ZXN0SWQ7XG5cbiAgICBjYXNlICdVcGRhdGUnOlxuICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICByZXR1cm4gcmVxLlBoeXNpY2FsUmVzb3VyY2VJZDtcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgXCJSZXF1ZXN0VHlwZVwiIGluIHJlcXVlc3QgXCIke0pTT04uc3RyaW5naWZ5KHJlcSl9XCJgKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/outbound.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/outbound.js new file mode 100644 index 0000000000000..24158e35fffb2 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/outbound.js @@ -0,0 +1,79 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.httpRequest = exports.invokeFunction = exports.startExecution = void 0; +/* istanbul ignore file */ +const https = require("https"); +// eslint-disable-next-line import/no-extraneous-dependencies +const client_lambda_1 = require("@aws-sdk/client-lambda"); +// eslint-disable-next-line import/no-extraneous-dependencies +const client_sfn_1 = require("@aws-sdk/client-sfn"); +// eslint-disable-next-line import/no-extraneous-dependencies +const FRAMEWORK_HANDLER_TIMEOUT = 900000; // 15 minutes +// In order to honor the overall maximum timeout set for the target process, +// the default 2 minutes from AWS SDK has to be overriden: +// https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#httpOptions-property +const awsSdkConfig = { + httpOptions: { timeout: FRAMEWORK_HANDLER_TIMEOUT }, +}; +async function defaultHttpRequest(options, responseBody) { + return new Promise((resolve, reject) => { + try { + const request = https.request(options, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +let sfn; +let lambda; +async function defaultStartExecution(req) { + if (!sfn) { + sfn = new client_sfn_1.SFN(awsSdkConfig); + } + return sfn.startExecution(req); +} +async function defaultInvokeFunction(req) { + if (!lambda) { + lambda = new client_lambda_1.Lambda(awsSdkConfig); + } + try { + /** + * Try an initial invoke. + * + * When you try to invoke a function that is inactive, the invocation fails and Lambda sets + * the function to pending state until the function resources are recreated. + * If Lambda fails to recreate the resources, the function is set to the inactive state. + * + * We're using invoke first because `waitFor` doesn't trigger an inactive function to do anything, + * it just runs `getFunction` and checks the state. + */ + return await lambda.invoke(req); + } + catch { + /** + * The status of the Lambda function is checked every second for up to 300 seconds. + * Exits the loop on 'Active' state and throws an error on 'Inactive' or 'Failed'. + * + * And now we wait. + * + * Use functionActive instead of functionActiveV2, since functionActiveV2 is only + * available on SDK 2.1080.0 and up, Lambda installs 2.1055.0 by default, + * and we use the SDK version that Lambda includes by default. + */ + await (0, client_lambda_1.waitUntilFunctionActive)({ + client: lambda, + maxWaitTime: 60, + }, { + FunctionName: req.FunctionName, + }); + return await lambda.invoke(req); + } +} +exports.startExecution = defaultStartExecution; +exports.invokeFunction = defaultInvokeFunction; +exports.httpRequest = defaultHttpRequest; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvdXRib3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwQkFBMEI7QUFDMUIsK0JBQStCO0FBQy9CLDZEQUE2RDtBQUM3RCwwREFBaUg7QUFDakgsNkRBQTZEO0FBQzdELG9EQUFxRjtBQUNyRiw2REFBNkQ7QUFFN0QsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUMsQ0FBQyxhQUFhO0FBRXZELDRFQUE0RTtBQUM1RSwwREFBMEQ7QUFDMUQsMkZBQTJGO0FBQzNGLE1BQU0sWUFBWSxHQUFHO0lBQ25CLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRTtDQUNwRCxDQUFDO0FBRUYsS0FBSyxVQUFVLGtCQUFrQixDQUFDLE9BQTZCLEVBQUUsWUFBb0I7SUFDbkYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxJQUFJO1lBQ0YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDaEQsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1QixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDZjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1g7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxJQUFJLEdBQVEsQ0FBQztBQUNiLElBQUksTUFBYyxDQUFDO0FBRW5CLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxHQUF3QjtJQUMzRCxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsR0FBRyxHQUFHLElBQUksZ0JBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUM3QjtJQUVELE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsS0FBSyxVQUFVLHFCQUFxQixDQUFDLEdBQXVCO0lBQzFELElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLEdBQUcsSUFBSSxzQkFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQ25DO0lBRUQsSUFBSTtRQUNGOzs7Ozs7Ozs7V0FTRztRQUNILE9BQU8sTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2pDO0lBQUMsTUFBTTtRQUVOOzs7Ozs7Ozs7V0FTRztRQUNILE1BQU0sSUFBQSx1Q0FBdUIsRUFBQztZQUM1QixNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxFQUFFO1NBQ2hCLEVBQUU7WUFDRCxZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDakM7QUFDSCxDQUFDO0FBRVUsUUFBQSxjQUFjLEdBQUcscUJBQXFCLENBQUM7QUFDdkMsUUFBQSxjQUFjLEdBQUcscUJBQXFCLENBQUM7QUFDdkMsUUFBQSxXQUFXLEdBQUcsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgTGFtYmRhLCB3YWl0VW50aWxGdW5jdGlvbkFjdGl2ZSwgSW52b2NhdGlvblJlc3BvbnNlLCBJbnZva2VDb21tYW5kSW5wdXQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtbGFtYmRhJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IFNGTiwgU3RhcnRFeGVjdXRpb25JbnB1dCwgU3RhcnRFeGVjdXRpb25PdXRwdXQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2ZuJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcblxuY29uc3QgRlJBTUVXT1JLX0hBTkRMRVJfVElNRU9VVCA9IDkwMDAwMDsgLy8gMTUgbWludXRlc1xuXG4vLyBJbiBvcmRlciB0byBob25vciB0aGUgb3ZlcmFsbCBtYXhpbXVtIHRpbWVvdXQgc2V0IGZvciB0aGUgdGFyZ2V0IHByb2Nlc3MsXG4vLyB0aGUgZGVmYXVsdCAyIG1pbnV0ZXMgZnJvbSBBV1MgU0RLIGhhcyB0byBiZSBvdmVycmlkZW46XG4vLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL0NvbmZpZy5odG1sI2h0dHBPcHRpb25zLXByb3BlcnR5XG5jb25zdCBhd3NTZGtDb25maWcgPSB7XG4gIGh0dHBPcHRpb25zOiB7IHRpbWVvdXQ6IEZSQU1FV09SS19IQU5ETEVSX1RJTUVPVVQgfSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRIdHRwUmVxdWVzdChvcHRpb25zOiBodHRwcy5SZXF1ZXN0T3B0aW9ucywgcmVzcG9uc2VCb2R5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGh0dHBzLnJlcXVlc3Qob3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5sZXQgc2ZuOiBTRk47XG5sZXQgbGFtYmRhOiBMYW1iZGE7XG5cbmFzeW5jIGZ1bmN0aW9uIGRlZmF1bHRTdGFydEV4ZWN1dGlvbihyZXE6IFN0YXJ0RXhlY3V0aW9uSW5wdXQpOiBQcm9taXNlPFN0YXJ0RXhlY3V0aW9uT3V0cHV0PiB7XG4gIGlmICghc2ZuKSB7XG4gICAgc2ZuID0gbmV3IFNGTihhd3NTZGtDb25maWcpO1xuICB9XG5cbiAgcmV0dXJuIHNmbi5zdGFydEV4ZWN1dGlvbihyZXEpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0SW52b2tlRnVuY3Rpb24ocmVxOiBJbnZva2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEludm9jYXRpb25SZXNwb25zZT4ge1xuICBpZiAoIWxhbWJkYSkge1xuICAgIGxhbWJkYSA9IG5ldyBMYW1iZGEoYXdzU2RrQ29uZmlnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgLyoqXG4gICAgICogVHJ5IGFuIGluaXRpYWwgaW52b2tlLlxuICAgICAqXG4gICAgICogV2hlbiB5b3UgdHJ5IHRvIGludm9rZSBhIGZ1bmN0aW9uIHRoYXQgaXMgaW5hY3RpdmUsIHRoZSBpbnZvY2F0aW9uIGZhaWxzIGFuZCBMYW1iZGEgc2V0c1xuICAgICAqIHRoZSBmdW5jdGlvbiB0byBwZW5kaW5nIHN0YXRlIHVudGlsIHRoZSBmdW5jdGlvbiByZXNvdXJjZXMgYXJlIHJlY3JlYXRlZC5cbiAgICAgKiBJZiBMYW1iZGEgZmFpbHMgdG8gcmVjcmVhdGUgdGhlIHJlc291cmNlcywgdGhlIGZ1bmN0aW9uIGlzIHNldCB0byB0aGUgaW5hY3RpdmUgc3RhdGUuXG4gICAgICpcbiAgICAgKiBXZSdyZSB1c2luZyBpbnZva2UgZmlyc3QgYmVjYXVzZSBgd2FpdEZvcmAgZG9lc24ndCB0cmlnZ2VyIGFuIGluYWN0aXZlIGZ1bmN0aW9uIHRvIGRvIGFueXRoaW5nLFxuICAgICAqIGl0IGp1c3QgcnVucyBgZ2V0RnVuY3Rpb25gIGFuZCBjaGVja3MgdGhlIHN0YXRlLlxuICAgICAqL1xuICAgIHJldHVybiBhd2FpdCBsYW1iZGEuaW52b2tlKHJlcSk7XG4gIH0gY2F0Y2gge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHN0YXR1cyBvZiB0aGUgTGFtYmRhIGZ1bmN0aW9uIGlzIGNoZWNrZWQgZXZlcnkgc2Vjb25kIGZvciB1cCB0byAzMDAgc2Vjb25kcy5cbiAgICAgKiBFeGl0cyB0aGUgbG9vcCBvbiAnQWN0aXZlJyBzdGF0ZSBhbmQgdGhyb3dzIGFuIGVycm9yIG9uICdJbmFjdGl2ZScgb3IgJ0ZhaWxlZCcuXG4gICAgICpcbiAgICAgKiBBbmQgbm93IHdlIHdhaXQuXG4gICAgICpcbiAgICAgKiBVc2UgZnVuY3Rpb25BY3RpdmUgaW5zdGVhZCBvZiBmdW5jdGlvbkFjdGl2ZVYyLCBzaW5jZSBmdW5jdGlvbkFjdGl2ZVYyIGlzIG9ubHlcbiAgICAgKiBhdmFpbGFibGUgb24gU0RLIDIuMTA4MC4wIGFuZCB1cCwgTGFtYmRhIGluc3RhbGxzIDIuMTA1NS4wIGJ5IGRlZmF1bHQsXG4gICAgICogYW5kIHdlIHVzZSB0aGUgU0RLIHZlcnNpb24gdGhhdCBMYW1iZGEgaW5jbHVkZXMgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBhd2FpdCB3YWl0VW50aWxGdW5jdGlvbkFjdGl2ZSh7XG4gICAgICBjbGllbnQ6IGxhbWJkYSxcbiAgICAgIG1heFdhaXRUaW1lOiA2MCxcbiAgICB9LCB7XG4gICAgICBGdW5jdGlvbk5hbWU6IHJlcS5GdW5jdGlvbk5hbWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IGxhbWJkYS5pbnZva2UocmVxKTtcbiAgfVxufVxuXG5leHBvcnQgbGV0IHN0YXJ0RXhlY3V0aW9uID0gZGVmYXVsdFN0YXJ0RXhlY3V0aW9uO1xuZXhwb3J0IGxldCBpbnZva2VGdW5jdGlvbiA9IGRlZmF1bHRJbnZva2VGdW5jdGlvbjtcbmV4cG9ydCBsZXQgaHR0cFJlcXVlc3QgPSBkZWZhdWx0SHR0cFJlcXVlc3Q7XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/util.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/util.js new file mode 100644 index 0000000000000..f09276d40ac91 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4/util.js @@ -0,0 +1,39 @@ +"use strict"; +/* eslint-disable no-console */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.withRetries = exports.log = exports.getEnv = void 0; +function getEnv(name) { + const value = process.env[name]; + if (!value) { + throw new Error(`The environment variable "${name}" is not defined`); + } + return value; +} +exports.getEnv = getEnv; +function log(title, ...args) { + console.log('[provider-framework]', title, ...args.map(x => typeof (x) === 'object' ? JSON.stringify(x, undefined, 2) : x)); +} +exports.log = log; +function withRetries(options, fn) { + return async (...xs) => { + let attempts = options.attempts; + let ms = options.sleep; + while (true) { + try { + return await fn(...xs); + } + catch (e) { + if (attempts-- <= 0) { + throw e; + } + await sleep(Math.floor(Math.random() * ms)); + ms *= 2; + } + } + }; +} +exports.withRetries = withRetries; +async function sleep(ms) { + return new Promise((ok) => setTimeout(ok, ms)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjs7O0FBRS9CLFNBQWdCLE1BQU0sQ0FBQyxJQUFZO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLElBQUksa0JBQWtCLENBQUMsQ0FBQztLQUN0RTtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQU5ELHdCQU1DO0FBRUQsU0FBZ0IsR0FBRyxDQUFDLEtBQVUsRUFBRSxHQUFHLElBQVc7SUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdILENBQUM7QUFGRCxrQkFFQztBQVNELFNBQWdCLFdBQVcsQ0FBMEIsT0FBcUIsRUFBRSxFQUE0QjtJQUN0RyxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUssRUFBRSxFQUFFO1FBQ3hCLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN2QixPQUFPLElBQUksRUFBRTtZQUNYLElBQUk7Z0JBQ0YsT0FBTyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ3hCO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsSUFBSSxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ25CLE1BQU0sQ0FBQyxDQUFDO2lCQUNUO2dCQUNELE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDVDtTQUNGO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWhCRCxrQ0FnQkM7QUFFRCxLQUFLLFVBQVUsS0FBSyxDQUFDLEVBQVU7SUFDN0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnYobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudltuYW1lXTtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFwiJHtuYW1lfVwiIGlzIG5vdCBkZWZpbmVkYCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9nKHRpdGxlOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gIGNvbnNvbGUubG9nKCdbcHJvdmlkZXItZnJhbWV3b3JrXScsIHRpdGxlLCAuLi5hcmdzLm1hcCh4ID0+IHR5cGVvZih4KSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh4LCB1bmRlZmluZWQsIDIpIDogeCkpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5T3B0aW9ucyB7XG4gIC8qKiBIb3cgbWFueSByZXRyaWVzICh3aWxsIGF0IGxlYXN0IHRyeSBvbmNlKSAqL1xuICByZWFkb25seSBhdHRlbXB0czogbnVtYmVyO1xuICAvKiogU2xlZXAgYmFzZSwgaW4gbXMgKi9cbiAgcmVhZG9ubHkgc2xlZXA6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhSZXRyaWVzPEEgZXh0ZW5kcyBBcnJheTxhbnk+LCBCPihvcHRpb25zOiBSZXRyeU9wdGlvbnMsIGZuOiAoLi4ueHM6IEEpID0+IFByb21pc2U8Qj4pOiAoLi4ueHM6IEEpID0+IFByb21pc2U8Qj4ge1xuICByZXR1cm4gYXN5bmMgKC4uLnhzOiBBKSA9PiB7XG4gICAgbGV0IGF0dGVtcHRzID0gb3B0aW9ucy5hdHRlbXB0cztcbiAgICBsZXQgbXMgPSBvcHRpb25zLnNsZWVwO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZm4oLi4ueHMpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoYXR0ZW1wdHMtLSA8PSAwKSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzbGVlcChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBtcykpO1xuICAgICAgICBtcyAqPSAyO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rKSA9PiBzZXRUaW1lb3V0KG9rLCBtcykpO1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/handler-name.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/handler-name.js new file mode 100644 index 0000000000000..a8e809f76444f --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/handler-name.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HandlerName = void 0; +var HandlerName; +(function (HandlerName) { + HandlerName["User"] = "user"; + HandlerName["Table"] = "table"; + HandlerName["UserTablePrivileges"] = "user-table-privileges"; +})(HandlerName || (exports.HandlerName = HandlerName = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci1uYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaGFuZGxlci1uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNyQiw0QkFBYSxDQUFBO0lBQ2IsOEJBQWUsQ0FBQTtJQUNmLDREQUE2QyxDQUFBO0FBQy9DLENBQUMsRUFKVyxXQUFXLDJCQUFYLFdBQVcsUUFJdEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBIYW5kbGVyTmFtZSB7XG4gIFVzZXIgPSAndXNlcicsXG4gIFRhYmxlID0gJ3RhYmxlJyxcbiAgVXNlclRhYmxlUHJpdmlsZWdlcyA9ICd1c2VyLXRhYmxlLXByaXZpbGVnZXMnLFxufVxuIl19 \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/index.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/index.js new file mode 100644 index 0000000000000..d7a8b52f2944c --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/index.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.handler = void 0; +const handler_name_1 = require("./handler-name"); +const privileges_1 = require("./privileges"); +const table_1 = require("./table"); +const user_1 = require("./user"); +const HANDLERS = { + [handler_name_1.HandlerName.Table]: table_1.handler, + [handler_name_1.HandlerName.User]: user_1.handler, + [handler_name_1.HandlerName.UserTablePrivileges]: privileges_1.handler, +}; +async function handler(event) { + const subHandler = HANDLERS[event.ResourceProperties.handler]; + if (!subHandler) { + throw new Error(`Requested handler ${event.ResourceProperties.handler} is not in supported set: ${JSON.stringify(Object.keys(HANDLERS))}`); + } + return subHandler(event.ResourceProperties, event); +} +exports.handler = handler; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxpREFBNkM7QUFDN0MsNkNBQTJEO0FBQzNELG1DQUFpRDtBQUNqRCxpQ0FBK0M7QUFFL0MsTUFBTSxRQUFRLEdBQWlIO0lBQzdILENBQUMsMEJBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxlQUFXO0lBQ2hDLENBQUMsMEJBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxjQUFVO0lBQzlCLENBQUMsMEJBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLG9CQUFnQjtDQUNwRCxDQUFDO0FBRUssS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFrRDtJQUM5RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQXNCLENBQUMsQ0FBQztJQUM3RSxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sNkJBQTZCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUM1STtJQUNELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBTkQsMEJBTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCB7IEhhbmRsZXJOYW1lIH0gZnJvbSAnLi9oYW5kbGVyLW5hbWUnO1xuaW1wb3J0IHsgaGFuZGxlciBhcyBtYW5hZ2VQcml2aWxlZ2VzIH0gZnJvbSAnLi9wcml2aWxlZ2VzJztcbmltcG9ydCB7IGhhbmRsZXIgYXMgbWFuYWdlVGFibGUgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IGhhbmRsZXIgYXMgbWFuYWdlVXNlciB9IGZyb20gJy4vdXNlcic7XG5cbmNvbnN0IEhBTkRMRVJTOiB7IFtrZXkgaW4gSGFuZGxlck5hbWVdOiAoKHByb3BzOiBhbnksIGV2ZW50OiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50KSA9PiBQcm9taXNlPGFueT4pIH0gPSB7XG4gIFtIYW5kbGVyTmFtZS5UYWJsZV06IG1hbmFnZVRhYmxlLFxuICBbSGFuZGxlck5hbWUuVXNlcl06IG1hbmFnZVVzZXIsXG4gIFtIYW5kbGVyTmFtZS5Vc2VyVGFibGVQcml2aWxlZ2VzXTogbWFuYWdlUHJpdmlsZWdlcyxcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50KSB7XG4gIGNvbnN0IHN1YkhhbmRsZXIgPSBIQU5ETEVSU1tldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuaGFuZGxlciBhcyBIYW5kbGVyTmFtZV07XG4gIGlmICghc3ViSGFuZGxlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVxdWVzdGVkIGhhbmRsZXIgJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuaGFuZGxlcn0gaXMgbm90IGluIHN1cHBvcnRlZCBzZXQ6ICR7SlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoSEFORExFUlMpKX1gKTtcbiAgfVxuICByZXR1cm4gc3ViSGFuZGxlcihldmVudC5SZXNvdXJjZVByb3BlcnRpZXMsIGV2ZW50KTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/privileges.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/privileges.js new file mode 100644 index 0000000000000..933b0fa5ac57a --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/privileges.js @@ -0,0 +1,58 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.handler = void 0; +const redshift_data_1 = require("./redshift-data"); +const util_1 = require("./util"); +async function handler(props, event) { + const username = props.username; + const tablePrivileges = props.tablePrivileges; + const clusterProps = props; + if (event.RequestType === 'Create') { + await grantPrivileges(username, tablePrivileges, clusterProps); + return { PhysicalResourceId: (0, util_1.makePhysicalId)(username, clusterProps, event.RequestId) }; + } + else if (event.RequestType === 'Delete') { + await revokePrivileges(username, tablePrivileges, clusterProps); + return; + } + else if (event.RequestType === 'Update') { + const { replace } = await updatePrivileges(username, tablePrivileges, clusterProps, event.OldResourceProperties); + const physicalId = replace ? (0, util_1.makePhysicalId)(username, clusterProps, event.RequestId) : event.PhysicalResourceId; + return { PhysicalResourceId: physicalId }; + } + else { + /* eslint-disable-next-line dot-notation */ + throw new Error(`Unrecognized event type: ${event['RequestType']}`); + } +} +exports.handler = handler; +async function revokePrivileges(username, tablePrivileges, clusterProps) { + await Promise.all(tablePrivileges.map(({ tableName, actions }) => { + return (0, redshift_data_1.executeStatement)(`REVOKE ${actions.join(', ')} ON ${tableName} FROM ${username}`, clusterProps); + })); +} +async function grantPrivileges(username, tablePrivileges, clusterProps) { + await Promise.all(tablePrivileges.map(({ tableName, actions }) => { + return (0, redshift_data_1.executeStatement)(`GRANT ${actions.join(', ')} ON ${tableName} TO ${username}`, clusterProps); + })); +} +async function updatePrivileges(username, tablePrivileges, clusterProps, oldResourceProperties) { + const oldClusterProps = oldResourceProperties; + if (clusterProps.clusterName !== oldClusterProps.clusterName || clusterProps.databaseName !== oldClusterProps.databaseName) { + await grantPrivileges(username, tablePrivileges, clusterProps); + return { replace: true }; + } + const oldUsername = oldResourceProperties.username; + if (oldUsername !== username) { + await grantPrivileges(username, tablePrivileges, clusterProps); + return { replace: true }; + } + const oldTablePrivileges = oldResourceProperties.tablePrivileges; + if (oldTablePrivileges !== tablePrivileges) { + await revokePrivileges(username, oldTablePrivileges, clusterProps); + await grantPrivileges(username, tablePrivileges, clusterProps); + return { replace: false }; + } + return { replace: false }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmlsZWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByaXZpbGVnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsbURBQW1EO0FBRW5ELGlDQUF3QztBQUdqQyxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQXFELEVBQUUsS0FBa0Q7SUFDckksTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNoQyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQztJQUUzQixJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFO1FBQ2xDLE1BQU0sZUFBZSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLElBQUEscUJBQWMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0tBQ3hGO1NBQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRTtRQUN6QyxNQUFNLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEUsT0FBTztLQUNSO1NBQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRTtRQUN6QyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsQ0FDeEMsUUFBUSxFQUNSLGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxDQUFDLHFCQUF1RSxDQUM5RSxDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFBLHFCQUFjLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNoSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLENBQUM7S0FDM0M7U0FBTTtRQUNMLDJDQUEyQztRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ3JFO0FBQ0gsQ0FBQztBQXhCRCwwQkF3QkM7QUFFRCxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxlQUFpQyxFQUFFLFlBQTBCO0lBQzdHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtRQUMvRCxPQUFPLElBQUEsZ0NBQWdCLEVBQUMsVUFBVSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLFNBQVMsU0FBUyxRQUFRLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6RyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELEtBQUssVUFBVSxlQUFlLENBQUMsUUFBZ0IsRUFBRSxlQUFpQyxFQUFFLFlBQTBCO0lBQzVHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtRQUMvRCxPQUFPLElBQUEsZ0NBQWdCLEVBQUMsU0FBUyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLFNBQVMsT0FBTyxRQUFRLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELEtBQUssVUFBVSxnQkFBZ0IsQ0FDN0IsUUFBZ0IsRUFDaEIsZUFBaUMsRUFDakMsWUFBMEIsRUFDMUIscUJBQXFFO0lBRXJFLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0lBQzlDLElBQUksWUFBWSxDQUFDLFdBQVcsS0FBSyxlQUFlLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxZQUFZLEtBQUssZUFBZSxDQUFDLFlBQVksRUFBRTtRQUMxSCxNQUFNLGVBQWUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDMUI7SUFFRCxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7SUFDbkQsSUFBSSxXQUFXLEtBQUssUUFBUSxFQUFFO1FBQzVCLE1BQU0sZUFBZSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUMxQjtJQUVELE1BQU0sa0JBQWtCLEdBQUcscUJBQXFCLENBQUMsZUFBZSxDQUFDO0lBQ2pFLElBQUksa0JBQWtCLEtBQUssZUFBZSxFQUFFO1FBQzFDLE1BQU0sZ0JBQWdCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ25FLE1BQU0sZUFBZSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztLQUMzQjtJQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW5yZXNvbHZlZCAqL1xuaW1wb3J0ICogYXMgQVdTTGFtYmRhIGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgZXhlY3V0ZVN0YXRlbWVudCB9IGZyb20gJy4vcmVkc2hpZnQtZGF0YSc7XG5pbXBvcnQgeyBDbHVzdGVyUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1ha2VQaHlzaWNhbElkIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IFRhYmxlUHJpdmlsZWdlLCBVc2VyVGFibGVQcml2aWxlZ2VzSGFuZGxlclByb3BzIH0gZnJvbSAnLi4vaGFuZGxlci1wcm9wcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKHByb3BzOiBVc2VyVGFibGVQcml2aWxlZ2VzSGFuZGxlclByb3BzICYgQ2x1c3RlclByb3BzLCBldmVudDogQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCkge1xuICBjb25zdCB1c2VybmFtZSA9IHByb3BzLnVzZXJuYW1lO1xuICBjb25zdCB0YWJsZVByaXZpbGVnZXMgPSBwcm9wcy50YWJsZVByaXZpbGVnZXM7XG4gIGNvbnN0IGNsdXN0ZXJQcm9wcyA9IHByb3BzO1xuXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ0NyZWF0ZScpIHtcbiAgICBhd2FpdCBncmFudFByaXZpbGVnZXModXNlcm5hbWUsIHRhYmxlUHJpdmlsZWdlcywgY2x1c3RlclByb3BzKTtcbiAgICByZXR1cm4geyBQaHlzaWNhbFJlc291cmNlSWQ6IG1ha2VQaHlzaWNhbElkKHVzZXJuYW1lLCBjbHVzdGVyUHJvcHMsIGV2ZW50LlJlcXVlc3RJZCkgfTtcbiAgfSBlbHNlIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ0RlbGV0ZScpIHtcbiAgICBhd2FpdCByZXZva2VQcml2aWxlZ2VzKHVzZXJuYW1lLCB0YWJsZVByaXZpbGVnZXMsIGNsdXN0ZXJQcm9wcyk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnVXBkYXRlJykge1xuICAgIGNvbnN0IHsgcmVwbGFjZSB9ID0gYXdhaXQgdXBkYXRlUHJpdmlsZWdlcyhcbiAgICAgIHVzZXJuYW1lLFxuICAgICAgdGFibGVQcml2aWxlZ2VzLFxuICAgICAgY2x1c3RlclByb3BzLFxuICAgICAgZXZlbnQuT2xkUmVzb3VyY2VQcm9wZXJ0aWVzIGFzIFVzZXJUYWJsZVByaXZpbGVnZXNIYW5kbGVyUHJvcHMgJiBDbHVzdGVyUHJvcHMsXG4gICAgKTtcbiAgICBjb25zdCBwaHlzaWNhbElkID0gcmVwbGFjZSA/IG1ha2VQaHlzaWNhbElkKHVzZXJuYW1lLCBjbHVzdGVyUHJvcHMsIGV2ZW50LlJlcXVlc3RJZCkgOiBldmVudC5QaHlzaWNhbFJlc291cmNlSWQ7XG4gICAgcmV0dXJuIHsgUGh5c2ljYWxSZXNvdXJjZUlkOiBwaHlzaWNhbElkIH07XG4gIH0gZWxzZSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvbiAqL1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGV2ZW50IHR5cGU6ICR7ZXZlbnRbJ1JlcXVlc3RUeXBlJ119YCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmV2b2tlUHJpdmlsZWdlcyh1c2VybmFtZTogc3RyaW5nLCB0YWJsZVByaXZpbGVnZXM6IFRhYmxlUHJpdmlsZWdlW10sIGNsdXN0ZXJQcm9wczogQ2x1c3RlclByb3BzKSB7XG4gIGF3YWl0IFByb21pc2UuYWxsKHRhYmxlUHJpdmlsZWdlcy5tYXAoKHsgdGFibGVOYW1lLCBhY3Rpb25zIH0pID0+IHtcbiAgICByZXR1cm4gZXhlY3V0ZVN0YXRlbWVudChgUkVWT0tFICR7YWN0aW9ucy5qb2luKCcsICcpfSBPTiAke3RhYmxlTmFtZX0gRlJPTSAke3VzZXJuYW1lfWAsIGNsdXN0ZXJQcm9wcyk7XG4gIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ3JhbnRQcml2aWxlZ2VzKHVzZXJuYW1lOiBzdHJpbmcsIHRhYmxlUHJpdmlsZWdlczogVGFibGVQcml2aWxlZ2VbXSwgY2x1c3RlclByb3BzOiBDbHVzdGVyUHJvcHMpIHtcbiAgYXdhaXQgUHJvbWlzZS5hbGwodGFibGVQcml2aWxlZ2VzLm1hcCgoeyB0YWJsZU5hbWUsIGFjdGlvbnMgfSkgPT4ge1xuICAgIHJldHVybiBleGVjdXRlU3RhdGVtZW50KGBHUkFOVCAke2FjdGlvbnMuam9pbignLCAnKX0gT04gJHt0YWJsZU5hbWV9IFRPICR7dXNlcm5hbWV9YCwgY2x1c3RlclByb3BzKTtcbiAgfSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVQcml2aWxlZ2VzKFxuICB1c2VybmFtZTogc3RyaW5nLFxuICB0YWJsZVByaXZpbGVnZXM6IFRhYmxlUHJpdmlsZWdlW10sXG4gIGNsdXN0ZXJQcm9wczogQ2x1c3RlclByb3BzLFxuICBvbGRSZXNvdXJjZVByb3BlcnRpZXM6IFVzZXJUYWJsZVByaXZpbGVnZXNIYW5kbGVyUHJvcHMgJiBDbHVzdGVyUHJvcHMsXG4pOiBQcm9taXNlPHsgcmVwbGFjZTogYm9vbGVhbiB9PiB7XG4gIGNvbnN0IG9sZENsdXN0ZXJQcm9wcyA9IG9sZFJlc291cmNlUHJvcGVydGllcztcbiAgaWYgKGNsdXN0ZXJQcm9wcy5jbHVzdGVyTmFtZSAhPT0gb2xkQ2x1c3RlclByb3BzLmNsdXN0ZXJOYW1lIHx8IGNsdXN0ZXJQcm9wcy5kYXRhYmFzZU5hbWUgIT09IG9sZENsdXN0ZXJQcm9wcy5kYXRhYmFzZU5hbWUpIHtcbiAgICBhd2FpdCBncmFudFByaXZpbGVnZXModXNlcm5hbWUsIHRhYmxlUHJpdmlsZWdlcywgY2x1c3RlclByb3BzKTtcbiAgICByZXR1cm4geyByZXBsYWNlOiB0cnVlIH07XG4gIH1cblxuICBjb25zdCBvbGRVc2VybmFtZSA9IG9sZFJlc291cmNlUHJvcGVydGllcy51c2VybmFtZTtcbiAgaWYgKG9sZFVzZXJuYW1lICE9PSB1c2VybmFtZSkge1xuICAgIGF3YWl0IGdyYW50UHJpdmlsZWdlcyh1c2VybmFtZSwgdGFibGVQcml2aWxlZ2VzLCBjbHVzdGVyUHJvcHMpO1xuICAgIHJldHVybiB7IHJlcGxhY2U6IHRydWUgfTtcbiAgfVxuXG4gIGNvbnN0IG9sZFRhYmxlUHJpdmlsZWdlcyA9IG9sZFJlc291cmNlUHJvcGVydGllcy50YWJsZVByaXZpbGVnZXM7XG4gIGlmIChvbGRUYWJsZVByaXZpbGVnZXMgIT09IHRhYmxlUHJpdmlsZWdlcykge1xuICAgIGF3YWl0IHJldm9rZVByaXZpbGVnZXModXNlcm5hbWUsIG9sZFRhYmxlUHJpdmlsZWdlcywgY2x1c3RlclByb3BzKTtcbiAgICBhd2FpdCBncmFudFByaXZpbGVnZXModXNlcm5hbWUsIHRhYmxlUHJpdmlsZWdlcywgY2x1c3RlclByb3BzKTtcbiAgICByZXR1cm4geyByZXBsYWNlOiBmYWxzZSB9O1xuICB9XG5cbiAgcmV0dXJuIHsgcmVwbGFjZTogZmFsc2UgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/redshift-data.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/redshift-data.js new file mode 100644 index 0000000000000..a01b636202fb2 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/redshift-data.js @@ -0,0 +1,37 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.executeStatement = void 0; +/* eslint-disable-next-line import/no-extraneous-dependencies */ +const client_redshift_data_1 = require("@aws-sdk/client-redshift-data"); +const redshiftData = new client_redshift_data_1.RedshiftData({}); +async function executeStatement(statement, clusterProps) { + const executeStatementProps = { + ClusterIdentifier: clusterProps.clusterName, + Database: clusterProps.databaseName, + SecretArn: clusterProps.adminUserArn, + Sql: statement, + }; + const executedStatement = await redshiftData.executeStatement(executeStatementProps); + if (!executedStatement.Id) { + throw new Error('Service error: Statement execution did not return a statement ID'); + } + await waitForStatementComplete(executedStatement.Id); +} +exports.executeStatement = executeStatement; +const waitTimeout = 100; +async function waitForStatementComplete(statementId) { + await new Promise((resolve) => { + setTimeout(() => resolve(), waitTimeout); + }); + const statement = await redshiftData.describeStatement({ Id: statementId }); + if (statement.Status !== 'FINISHED' && statement.Status !== 'FAILED' && statement.Status !== 'ABORTED') { + return waitForStatementComplete(statementId); + } + else if (statement.Status === 'FINISHED') { + return; + } + else { + throw new Error(`Statement status was ${statement.Status}: ${statement.Error}`); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc2hpZnQtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlZHNoaWZ0LWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQWdFO0FBQ2hFLHdFQUE2RDtBQUc3RCxNQUFNLFlBQVksR0FBRyxJQUFJLG1DQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFbkMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLFNBQWlCLEVBQUUsWUFBMEI7SUFDbEYsTUFBTSxxQkFBcUIsR0FBRztRQUM1QixpQkFBaUIsRUFBRSxZQUFZLENBQUMsV0FBVztRQUMzQyxRQUFRLEVBQUUsWUFBWSxDQUFDLFlBQVk7UUFDbkMsU0FBUyxFQUFFLFlBQVksQ0FBQyxZQUFZO1FBQ3BDLEdBQUcsRUFBRSxTQUFTO0tBQ2YsQ0FBQztJQUNGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxZQUFZLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNyRixJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztLQUNyRjtJQUNELE1BQU0sd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQVpELDRDQVlDO0FBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLEtBQUssVUFBVSx3QkFBd0IsQ0FBQyxXQUFtQjtJQUN6RCxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBOEIsRUFBRSxFQUFFO1FBQ25ELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDNUUsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFVBQVUsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtRQUN0RyxPQUFPLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQzlDO1NBQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRTtRQUMxQyxPQUFPO0tBQ1I7U0FBTTtRQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFNBQVMsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDakY7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgUmVkc2hpZnREYXRhIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXJlZHNoaWZ0LWRhdGEnO1xuaW1wb3J0IHsgQ2x1c3RlclByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IHJlZHNoaWZ0RGF0YSA9IG5ldyBSZWRzaGlmdERhdGEoe30pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQ6IHN0cmluZywgY2x1c3RlclByb3BzOiBDbHVzdGVyUHJvcHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZXhlY3V0ZVN0YXRlbWVudFByb3BzID0ge1xuICAgIENsdXN0ZXJJZGVudGlmaWVyOiBjbHVzdGVyUHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgRGF0YWJhc2U6IGNsdXN0ZXJQcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgU2VjcmV0QXJuOiBjbHVzdGVyUHJvcHMuYWRtaW5Vc2VyQXJuLFxuICAgIFNxbDogc3RhdGVtZW50LFxuICB9O1xuICBjb25zdCBleGVjdXRlZFN0YXRlbWVudCA9IGF3YWl0IHJlZHNoaWZ0RGF0YS5leGVjdXRlU3RhdGVtZW50KGV4ZWN1dGVTdGF0ZW1lbnRQcm9wcyk7XG4gIGlmICghZXhlY3V0ZWRTdGF0ZW1lbnQuSWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlcnZpY2UgZXJyb3I6IFN0YXRlbWVudCBleGVjdXRpb24gZGlkIG5vdCByZXR1cm4gYSBzdGF0ZW1lbnQgSUQnKTtcbiAgfVxuICBhd2FpdCB3YWl0Rm9yU3RhdGVtZW50Q29tcGxldGUoZXhlY3V0ZWRTdGF0ZW1lbnQuSWQpO1xufVxuXG5jb25zdCB3YWl0VGltZW91dCA9IDEwMDtcbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JTdGF0ZW1lbnRDb21wbGV0ZShzdGF0ZW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlOiAodmFsdWU6IHZvaWQpID0+IHZvaWQpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoKSwgd2FpdFRpbWVvdXQpO1xuICB9KTtcbiAgY29uc3Qgc3RhdGVtZW50ID0gYXdhaXQgcmVkc2hpZnREYXRhLmRlc2NyaWJlU3RhdGVtZW50KHsgSWQ6IHN0YXRlbWVudElkIH0pO1xuICBpZiAoc3RhdGVtZW50LlN0YXR1cyAhPT0gJ0ZJTklTSEVEJyAmJiBzdGF0ZW1lbnQuU3RhdHVzICE9PSAnRkFJTEVEJyAmJiBzdGF0ZW1lbnQuU3RhdHVzICE9PSAnQUJPUlRFRCcpIHtcbiAgICByZXR1cm4gd2FpdEZvclN0YXRlbWVudENvbXBsZXRlKHN0YXRlbWVudElkKTtcbiAgfSBlbHNlIGlmIChzdGF0ZW1lbnQuU3RhdHVzID09PSAnRklOSVNIRUQnKSB7XG4gICAgcmV0dXJuO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RhdGVtZW50IHN0YXR1cyB3YXMgJHtzdGF0ZW1lbnQuU3RhdHVzfTogJHtzdGF0ZW1lbnQuRXJyb3J9YCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/table.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/table.js new file mode 100644 index 0000000000000..a1a3886aa1ffc --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/table.js @@ -0,0 +1,177 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.handler = void 0; +const redshift_data_1 = require("./redshift-data"); +const types_1 = require("./types"); +const util_1 = require("./util"); +async function handler(props, event) { + const tableNamePrefix = props.tableName.prefix; + const tableNameSuffix = props.tableName.generateSuffix === 'true' ? `${event.RequestId.substring(0, 8)}` : ''; + const tableColumns = props.tableColumns; + const tableAndClusterProps = props; + const useColumnIds = props.useColumnIds; + if (event.RequestType === 'Create') { + const tableName = await createTable(tableNamePrefix, tableNameSuffix, tableColumns, tableAndClusterProps); + return { PhysicalResourceId: tableName }; + } + else if (event.RequestType === 'Delete') { + await dropTable(event.PhysicalResourceId, tableAndClusterProps); + return; + } + else if (event.RequestType === 'Update') { + const tableName = await updateTable(event.PhysicalResourceId, tableNamePrefix, tableNameSuffix, tableColumns, useColumnIds, tableAndClusterProps, event.OldResourceProperties); + return { PhysicalResourceId: tableName }; + } + else { + /* eslint-disable-next-line dot-notation */ + throw new Error(`Unrecognized event type: ${event['RequestType']}`); + } +} +exports.handler = handler; +async function createTable(tableNamePrefix, tableNameSuffix, tableColumns, tableAndClusterProps) { + const tableName = tableNamePrefix + tableNameSuffix; + const tableColumnsString = tableColumns.map(column => `${column.name} ${column.dataType}${getEncodingColumnString(column)}`).join(); + let statement = `CREATE TABLE ${tableName} (${tableColumnsString})`; + if (tableAndClusterProps.distStyle) { + statement += ` DISTSTYLE ${tableAndClusterProps.distStyle}`; + } + const distKeyColumn = (0, util_1.getDistKeyColumn)(tableColumns); + if (distKeyColumn) { + statement += ` DISTKEY(${distKeyColumn.name})`; + } + const sortKeyColumns = (0, util_1.getSortKeyColumns)(tableColumns); + if (sortKeyColumns.length > 0) { + const sortKeyColumnsString = getSortKeyColumnsString(sortKeyColumns); + statement += ` ${tableAndClusterProps.sortStyle} SORTKEY(${sortKeyColumnsString})`; + } + await (0, redshift_data_1.executeStatement)(statement, tableAndClusterProps); + for (const column of tableColumns) { + if (column.comment) { + await (0, redshift_data_1.executeStatement)(`COMMENT ON COLUMN ${tableName}.${column.name} IS '${column.comment}'`, tableAndClusterProps); + } + } + if (tableAndClusterProps.tableComment) { + await (0, redshift_data_1.executeStatement)(`COMMENT ON TABLE ${tableName} IS '${tableAndClusterProps.tableComment}'`, tableAndClusterProps); + } + return tableName; +} +async function dropTable(tableName, clusterProps) { + await (0, redshift_data_1.executeStatement)(`DROP TABLE ${tableName}`, clusterProps); +} +async function updateTable(tableName, tableNamePrefix, tableNameSuffix, tableColumns, useColumnIds, tableAndClusterProps, oldResourceProperties) { + const alterationStatements = []; + const oldClusterProps = oldResourceProperties; + if (tableAndClusterProps.clusterName !== oldClusterProps.clusterName || tableAndClusterProps.databaseName !== oldClusterProps.databaseName) { + return createTable(tableNamePrefix, tableNameSuffix, tableColumns, tableAndClusterProps); + } + const oldTableNamePrefix = oldResourceProperties.tableName.prefix; + if (tableNamePrefix !== oldTableNamePrefix) { + return createTable(tableNamePrefix, tableNameSuffix, tableColumns, tableAndClusterProps); + } + const oldTableColumns = oldResourceProperties.tableColumns; + const columnDeletions = oldTableColumns.filter(oldColumn => (tableColumns.every(column => { + if (useColumnIds) { + return oldColumn.id ? oldColumn.id !== column.id : oldColumn.name !== column.name; + } + return oldColumn.name !== column.name; + }))); + if (columnDeletions.length > 0) { + alterationStatements.push(...columnDeletions.map(column => `ALTER TABLE ${tableName} DROP COLUMN ${column.name}`)); + } + const columnAdditions = tableColumns.filter(column => { + return !oldTableColumns.some(oldColumn => { + if (useColumnIds) { + return oldColumn.id ? oldColumn.id === column.id : oldColumn.name === column.name; + } + return oldColumn.name === column.name; + }); + }).map(column => `ADD ${column.name} ${column.dataType}`); + if (columnAdditions.length > 0) { + alterationStatements.push(...columnAdditions.map(addition => `ALTER TABLE ${tableName} ${addition}`)); + } + const columnEncoding = tableColumns.filter(column => { + return oldTableColumns.some(oldColumn => column.name === oldColumn.name && column.encoding !== oldColumn.encoding); + }).map(column => `ALTER COLUMN ${column.name} ENCODE ${column.encoding || 'AUTO'}`); + if (columnEncoding.length > 0) { + alterationStatements.push(`ALTER TABLE ${tableName} ${columnEncoding.join(', ')}`); + } + const columnComments = tableColumns.filter(column => { + return oldTableColumns.some(oldColumn => column.name === oldColumn.name && column.comment !== oldColumn.comment); + }).map(column => `COMMENT ON COLUMN ${tableName}.${column.name} IS ${column.comment ? `'${column.comment}'` : 'NULL'}`); + if (columnComments.length > 0) { + alterationStatements.push(...columnComments); + } + if (useColumnIds) { + const columnNameUpdates = tableColumns.reduce((updates, column) => { + const oldColumn = oldTableColumns.find(oldCol => oldCol.id && oldCol.id === column.id); + if (oldColumn && oldColumn.name !== column.name) { + updates[oldColumn.name] = column.name; + } + return updates; + }, {}); + if (Object.keys(columnNameUpdates).length > 0) { + alterationStatements.push(...Object.entries(columnNameUpdates).map(([oldName, newName]) => (`ALTER TABLE ${tableName} RENAME COLUMN ${oldName} TO ${newName}`))); + } + } + const oldDistStyle = oldResourceProperties.distStyle; + if ((!oldDistStyle && tableAndClusterProps.distStyle) || + (oldDistStyle && !tableAndClusterProps.distStyle)) { + return createTable(tableNamePrefix, tableNameSuffix, tableColumns, tableAndClusterProps); + } + else if (oldDistStyle !== tableAndClusterProps.distStyle) { + alterationStatements.push(`ALTER TABLE ${tableName} ALTER DISTSTYLE ${tableAndClusterProps.distStyle}`); + } + const oldDistKey = (0, util_1.getDistKeyColumn)(oldTableColumns)?.name; + const newDistKey = (0, util_1.getDistKeyColumn)(tableColumns)?.name; + if (!oldDistKey && newDistKey) { + // Table has no existing distribution key, add a new one + alterationStatements.push(`ALTER TABLE ${tableName} ALTER DISTSTYLE KEY DISTKEY ${newDistKey}`); + } + else if (oldDistKey && !newDistKey) { + // Table has a distribution key, remove and set to AUTO + alterationStatements.push(`ALTER TABLE ${tableName} ALTER DISTSTYLE AUTO`); + } + else if (oldDistKey !== newDistKey) { + // Table has an existing distribution key, change it + alterationStatements.push(`ALTER TABLE ${tableName} ALTER DISTKEY ${newDistKey}`); + } + const oldSortKeyColumns = (0, util_1.getSortKeyColumns)(oldTableColumns); + const newSortKeyColumns = (0, util_1.getSortKeyColumns)(tableColumns); + const oldSortStyle = oldResourceProperties.sortStyle; + const newSortStyle = tableAndClusterProps.sortStyle; + if ((oldSortStyle === newSortStyle && !(0, util_1.areColumnsEqual)(oldSortKeyColumns, newSortKeyColumns)) + || (oldSortStyle !== newSortStyle)) { + switch (newSortStyle) { + case types_1.TableSortStyle.INTERLEAVED: + // INTERLEAVED sort key addition requires replacement. + // https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_TABLE.html + return createTable(tableNamePrefix, tableNameSuffix, tableColumns, tableAndClusterProps); + case types_1.TableSortStyle.COMPOUND: { + const sortKeyColumnsString = getSortKeyColumnsString(newSortKeyColumns); + alterationStatements.push(`ALTER TABLE ${tableName} ALTER ${newSortStyle} SORTKEY(${sortKeyColumnsString})`); + break; + } + case types_1.TableSortStyle.AUTO: { + alterationStatements.push(`ALTER TABLE ${tableName} ALTER SORTKEY ${newSortStyle}`); + break; + } + } + } + const oldComment = oldResourceProperties.tableComment; + const newComment = tableAndClusterProps.tableComment; + if (oldComment !== newComment) { + alterationStatements.push(`COMMENT ON TABLE ${tableName} IS ${newComment ? `'${newComment}'` : 'NULL'}`); + } + await Promise.all(alterationStatements.map(statement => (0, redshift_data_1.executeStatement)(statement, tableAndClusterProps))); + return tableName; +} +function getSortKeyColumnsString(sortKeyColumns) { + return sortKeyColumns.map(column => column.name).join(); +} +function getEncodingColumnString(column) { + if (column.encoding) { + return ` ENCODE ${column.encoding}`; + } + return ''; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxtREFBbUQ7QUFDbkQsbUNBQTZFO0FBQzdFLGlDQUE4RTtBQUd2RSxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQTJCLEVBQUUsS0FBa0Q7SUFDM0csTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDL0MsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUcsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztJQUN4QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUNuQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBRXhDLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7UUFDbEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxXQUFXLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUMxRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLENBQUM7S0FDMUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFO1FBQ3pDLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2hFLE9BQU87S0FDUjtTQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7UUFDekMsTUFBTSxTQUFTLEdBQUcsTUFBTSxXQUFXLENBQ2pDLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsZUFBZSxFQUNmLGVB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O1NBQ0Y7S0FDRjtJQUVELE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQztJQUN0RCxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxZQUFZLENBQUM7SUFDckQsSUFBSSxVQUFVLEtBQUssVUFBVSxFQUFFO1FBQzdCLG9CQUFvQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsU0FBUyxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUMxRztJQUVELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFBLGdDQUFnQixFQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1RyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxjQUF3QjtJQUN2RCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsTUFBYztJQUM3QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDbkIsT0FBTyxXQUFXLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUNyQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW5yZXNvbHZlZCAqL1xuaW1wb3J0ICogYXMgQVdTTGFtYmRhIGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgZXhlY3V0ZVN0YXRlbWVudCB9IGZyb20gJy4vcmVkc2hpZnQtZGF0YSc7XG5pbXBvcnQgeyBDbHVzdGVyUHJvcHMsIFRhYmxlQW5kQ2x1c3RlclByb3BzLCBUYWJsZVNvcnRTdHlsZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYXJlQ29sdW1uc0VxdWFsLCBnZXREaXN0S2V5Q29sdW1uLCBnZXRTb3J0S2V5Q29sdW1ucyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuLi8uLi90YWJsZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKHByb3BzOiBUYWJsZUFuZENsdXN0ZXJQcm9wcywgZXZlbnQ6IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQpIHtcbiAgY29uc3QgdGFibGVOYW1lUHJlZml4ID0gcHJvcHMudGFibGVOYW1lLnByZWZpeDtcbiAgY29uc3QgdGFibGVOYW1lU3VmZml4ID0gcHJvcHMudGFibGVOYW1lLmdlbmVyYXRlU3VmZml4ID09PSAndHJ1ZScgPyBgJHtldmVudC5SZXF1ZXN0SWQuc3Vic3RyaW5nKDAsIDgpfWAgOiAnJztcbiAgY29uc3QgdGFibGVDb2x1bW5zID0gcHJvcHMudGFibGVDb2x1bW5zO1xuICBjb25zdCB0YWJsZUFuZENsdXN0ZXJQcm9wcyA9IHByb3BzO1xuICBjb25zdCB1c2VDb2x1bW5JZHMgPSBwcm9wcy51c2VDb2x1bW5JZHM7XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnQ3JlYXRlJykge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IGF3YWl0IGNyZWF0ZVRhYmxlKHRhYmxlTmFtZVByZWZpeCwgdGFibGVOYW1lU3VmZml4LCB0YWJsZUNvbHVtbnMsIHRhYmxlQW5kQ2x1c3RlclByb3BzKTtcbiAgICByZXR1cm4geyBQaHlzaWNhbFJlc291cmNlSWQ6IHRhYmxlTmFtZSB9O1xuICB9IGVsc2UgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnRGVsZXRlJykge1xuICAgIGF3YWl0IGRyb3BUYWJsZShldmVudC5QaHlzaWNhbFJlc291cmNlSWQsIHRhYmxlQW5kQ2x1c3RlclByb3BzKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdVcGRhdGUnKSB7XG4gICAgY29uc3QgdGFibGVOYW1lID0gYXdhaXQgdXBkYXRlVGFibGUoXG4gICAgICBldmVudC5QaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICB0YWJsZU5hbWVQcmVmaXgsXG4gICAgICB0YWJsZU5hbWVTdWZmaXgsXG4gICAgICB0YWJsZUNvbHVtbnMsXG4gICAgICB1c2VDb2x1bW5JZHMsXG4gICAgICB0YWJsZUFuZENsdXN0ZXJQcm9wcyxcbiAgICAgIGV2ZW50Lk9sZFJlc291cmNlUHJvcGVydGllcyBhcyBUYWJsZUFuZENsdXN0ZXJQcm9wcyxcbiAgICApO1xuICAgIHJldHVybiB7IFBoeXNpY2FsUmVzb3VyY2VJZDogdGFibGVOYW1lIH07XG4gIH0gZWxzZSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvbiAqL1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGV2ZW50IHR5cGU6ICR7ZXZlbnRbJ1JlcXVlc3RUeXBlJ119YCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGFibGUoXG4gIHRhYmxlTmFtZVByZWZpeDogc3RyaW5nLFxuICB0YWJsZU5hbWVTdWZmaXg6IHN0cmluZyxcbiAgdGFibGVDb2x1bW5zOiBDb2x1bW5bXSxcbiAgdGFibGVBbmRDbHVzdGVyUHJvcHM6IFRhYmxlQW5kQ2x1c3RlclByb3BzLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgdGFibGVOYW1lID0gdGFibGVOYW1lUHJlZml4ICsgdGFibGVOYW1lU3VmZml4O1xuICBjb25zdCB0YWJsZUNvbHVtbnNTdHJpbmcgPSB0YWJsZUNvbHVtbnMubWFwKGNvbHVtbiA9PiBgJHtjb2x1bW4ubmFtZX0gJHtjb2x1bW4uZGF0YVR5cGV9JHtnZXRFbmNvZGluZ0NvbHVtblN0cmluZyhjb2x1bW4pfWApLmpvaW4oKTtcblxuICBsZXQgc3RhdGVtZW50ID0gYENSRUFURSBUQUJMRSAke3RhYmxlTmFtZX0gKCR7dGFibGVDb2x1bW5zU3RyaW5nfSlgO1xuXG4gIGlmICh0YWJsZUFuZENsdXN0ZXJQcm9wcy5kaXN0U3R5bGUpIHtcbiAgICBzdGF0ZW1lbnQgKz0gYCBESVNUU1RZTEUgJHt0YWJsZUFuZENsdXN0ZXJQcm9wcy5kaXN0U3R5bGV9YDtcbiAgfVxuXG4gIGNvbnN0IGRpc3RLZXlDb2x1bW4gPSBnZXREaXN0S2V5Q29sdW1uKHRhYmxlQ29sdW1ucyk7XG4gIGlmIChkaXN0S2V5Q29sdW1uKSB7XG4gICAgc3RhdGVtZW50ICs9IGAgRElTVEtFWSgke2Rpc3RLZXlDb2x1bW4ubmFtZX0pYDtcbiAgfVxuXG4gIGNvbnN0IHNvcnRLZXlDb2x1bW5zID0gZ2V0U29ydEtleUNvbHVtbnModGFibGVDb2x1bW5zKTtcbiAgaWYgKHNvcnRLZXlDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBzb3J0S2V5Q29sdW1uc1N0cmluZyA9IGdldFNvcnRLZXlDb2x1bW5zU3RyaW5nKHNvcnRLZXlDb2x1bW5zKTtcbiAgICBzdGF0ZW1lbnQgKz0gYCAke3RhYmxlQW5kQ2x1c3RlclByb3BzLnNvcnRTdHlsZX0gU09SVEtFWSgke3NvcnRLZXlDb2x1bW5zU3RyaW5nfSlgO1xuICB9XG5cbiAgYXdhaXQgZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQsIHRhYmxlQW5kQ2x1c3RlclByb3BzKTtcblxuICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZUNvbHVtbnMpIHtcbiAgICBpZiAoY29sdW1uLmNvbW1lbnQpIHtcbiAgICAgIGF3YWl0IGV4ZWN1dGVTdGF0ZW1lbnQoYENPTU1FTlQgT04gQ09MVU1OICR7dGFibGVOYW1lfS4ke2NvbHVtbi5uYW1lfSBJUyAnJHtjb2x1bW4uY29tbWVudH0nYCwgdGFibGVBbmRDbHVzdGVyUHJvcHMpO1xuICAgIH1cbiAgfVxuICBpZiAodGFibGVBbmRDbHVzdGVyUHJvcHMudGFibGVDb21tZW50KSB7XG4gICAgYXdhaXQgZXhlY3V0ZVN0YXRlbWVudChgQ09NTUVOVCBPTiBUQUJMRSAke3RhYmxlTmFtZX0gSVMgJyR7dGFibGVBbmRDbHVzdGVyUHJvcHMudGFibGVDb21tZW50fSdgLCB0YWJsZUFuZENsdXN0ZXJQcm9wcyk7XG4gIH1cblxuICByZXR1cm4gdGFibGVOYW1lO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkcm9wVGFibGUodGFibGVOYW1lOiBzdHJpbmcsIGNsdXN0ZXJQcm9wczogQ2x1c3RlclByb3BzKSB7XG4gIGF3YWl0IGV4ZWN1dGVTdGF0ZW1lbnQoYERST1AgVEFCTEUgJHt0YWJsZU5hbWV9YCwgY2x1c3RlclByb3BzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlVGFibGUoXG4gIHRhYmxlTmFtZTogc3RyaW5nLFxuICB0YWJsZU5hbWVQcmVmaXg6IHN0cmluZyxcbiAgdGFibGVOYW1lU3VmZml4OiBzdHJpbmcsXG4gIHRhYmxlQ29sdW1uczogQ29sdW1uW10sXG4gIHVzZUNvbHVtbklkczogYm9vbGVhbixcbiAgdGFibGVBbmRDbHVzdGVyUHJvcHM6IFRhYmxlQW5kQ2x1c3RlclByb3BzLFxuICBvbGRSZXNvdXJjZVByb3BlcnRpZXM6IFRhYmxlQW5kQ2x1c3RlclByb3BzLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgYWx0ZXJhdGlvblN0YXRlbWVudHM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3Qgb2xkQ2x1c3RlclByb3BzID0gb2xkUmVzb3VyY2VQcm9wZXJ0aWVzO1xuICBpZiAodGFibGVBbmRDbHVzdGVyUHJvcHMuY2x1c3Rlck5hbWUgIT09IG9sZENsdXN0ZXJQcm9wcy5jbHVzdGVyTmFtZSB8fCB0YWJsZUFuZENsdXN0ZXJQcm9wcy5kYXRhYmFzZU5hbWUgIT09IG9sZENsdXN0ZXJQcm9wcy5kYXRhYmFzZU5hbWUpIHtcbiAgICByZXR1cm4gY3JlYXRlVGFibGUodGFibGVOYW1lUHJlZml4LCB0YWJsZU5hbWVTdWZmaXgsIHRhYmxlQ29sdW1ucywgdGFibGVBbmRDbHVzdGVyUHJvcHMpO1xuICB9XG5cbiAgY29uc3Qgb2xkVGFibGVOYW1lUHJlZml4ID0gb2xkUmVzb3VyY2VQcm9wZXJ0aWVzLnRhYmxlTmFtZS5wcmVmaXg7XG4gIGlmICh0YWJsZU5hbWVQcmVmaXggIT09IG9sZFRhYmxlTmFtZVByZWZpeCkge1xuICAgIHJldHVybiBjcmVhdGVUYWJsZSh0YWJsZU5hbWVQcmVmaXgsIHRhYmxlTmFtZVN1ZmZpeCwgdGFibGVDb2x1bW5zLCB0YWJsZUFuZENsdXN0ZXJQcm9wcyk7XG4gIH1cblxuICBjb25zdCBvbGRUYWJsZUNvbHVtbnMgPSBvbGRSZXNvdXJjZVByb3BlcnRpZXMudGFibGVDb2x1bW5zO1xuICBjb25zdCBjb2x1bW5EZWxldGlvbnMgPSBvbGRUYWJsZUNvbHVtbnMuZmlsdGVyKG9sZENvbHVtbiA9PiAoXG4gICAgdGFibGVDb2x1bW5zLmV2ZXJ5KGNvbHVtbiA9PiB7XG4gICAgICBpZiAodXNlQ29sdW1uSWRzKSB7XG4gICAgICAgIHJldHVybiBvbGRDb2x1bW4uaWQgPyBvbGRDb2x1bW4uaWQgIT09IGNvbHVtbi5pZCA6IG9sZENvbHVtbi5uYW1lICE9PSBjb2x1bW4ubmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvbGRDb2x1bW4ubmFtZSAhPT0gY29sdW1uLm5hbWU7XG4gICAgfSlcbiAgKSk7XG4gIGlmIChjb2x1bW5EZWxldGlvbnMubGVuZ3RoID4gMCkge1xuICAgIGFsdGVyYXRpb25TdGF0ZW1lbnRzLnB1c2goLi4uY29sdW1uRGVsZXRpb25zLm1hcChjb2x1bW4gPT4gYEFMVEVSIFRBQkxFICR7dGFibGVOYW1lfSBEUk9QIENPTFVNTiAke2NvbHVtbi5uYW1lfWApKTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkFkZGl0aW9ucyA9IHRhYmxlQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IHtcbiAgICByZXR1cm4gIW9sZFRhYmxlQ29sdW1ucy5zb21lKG9sZENvbHVtbiA9PiB7XG4gICAgICBpZiAodXNlQ29sdW1uSWRzKSB7XG4gICAgICAgIHJldHVybiBvbGRDb2x1bW4uaWQgPyBvbGRDb2x1bW4uaWQgPT09IGNvbHVtbi5pZCA6IG9sZENvbHVtbi5uYW1lID09PSBjb2x1bW4ubmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvbGRDb2x1bW4ubmFtZSA9PT0gY29sdW1uLm5hbWU7XG4gICAgfSk7XG4gIH0pLm1hcChjb2x1bW4gPT4gYEFERCAke2NvbHVtbi5uYW1lfSAke2NvbHVtbi5kYXRhVHlwZX1gKTtcbiAgaWYgKGNvbHVtbkFkZGl0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgYWx0ZXJhdGlvblN0YXRlbWVudHMucHVzaCguLi5jb2x1bW5BZGRpdGlvbnMubWFwKGFkZGl0aW9uID0+IGBBTFRFUiBUQUJMRSAke3RhYmxlTmFtZX0gJHthZGRpdGlvbn1gKSk7XG4gIH1cblxuICBjb25zdCBjb2x1bW5FbmNvZGluZyA9IHRhYmxlQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IHtcbiAgICByZXR1cm4gb2xkVGFibGVDb2x1bW5zLnNvbWUob2xkQ29sdW1uID0+IGNvbHVtbi5uYW1lID09PSBvbGRDb2x1bW4ubmFtZSAmJiBjb2x1bW4uZW5jb2RpbmcgIT09IG9sZENvbHVtbi5lbmNvZGluZyk7XG4gIH0pLm1hcChjb2x1bW4gPT4gYEFMVEVSIENPTFVNTiAke2NvbHVtbi5uYW1lfSBFTkNPREUgJHtjb2x1bW4uZW5jb2RpbmcgfHwgJ0FVVE8nfWApO1xuICBpZiAoY29sdW1uRW5jb2RpbmcubGVuZ3RoID4gMCkge1xuICAgIGFsdGVyYXRpb25TdGF0ZW1lbnRzLnB1c2goYEFMVEVSIFRBQkxFICR7dGFibGVOYW1lfSAke2NvbHVtbkVuY29kaW5nLmpvaW4oJywgJyl9YCk7XG4gIH1cblxuICBjb25zdCBjb2x1bW5Db21tZW50cyA9IHRhYmxlQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IHtcbiAgICByZXR1cm4gb2xkVGFibGVDb2x1bW5zLnNvbWUob2xkQ29sdW1uID0+IGNvbHVtbi5uYW1lID09PSBvbGRDb2x1bW4ubmFtZSAmJiBjb2x1bW4uY29tbWVudCAhPT0gb2xkQ29sdW1uLmNvbW1lbnQpO1xuICB9KS5tYXAoY29sdW1uID0+IGBDT01NRU5UIE9OIENPTFVNTiAke3RhYmxlTmFtZX0uJHtjb2x1bW4ubmFtZX0gSVMgJHtjb2x1bW4uY29tbWVudCA/IGAnJHtjb2x1bW4uY29tbWVudH0nYCA6ICdOVUxMJ31gKTtcbiAgaWYgKGNvbHVtbkNvbW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICBhbHRlcmF0aW9uU3RhdGVtZW50cy5wdXNoKC4uLmNvbHVtbkNvbW1lbnRzKTtcbiAgfVxuXG4gIGlmICh1c2VDb2x1bW5JZHMpIHtcbiAgICBjb25zdCBjb2x1bW5OYW1lVXBkYXRlcyA9IHRhYmxlQ29sdW1ucy5yZWR1Y2UoKHVwZGF0ZXMsIGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qgb2xkQ29sdW1uID0gb2xkVGFibGVDb2x1bW5zLmZpbmQob2xkQ29sID0+IG9sZENvbC5pZCAmJiBvbGRDb2wuaWQgPT09IGNvbHVtbi5pZCk7XG4gICAgICBpZiAob2xkQ29sdW1uICYmIG9sZENvbHVtbi5uYW1lICE9PSBjb2x1bW4ubmFtZSkge1xuICAgICAgICB1cGRhdGVzW29sZENvbHVtbi5uYW1lXSA9IGNvbHVtbi5uYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVwZGF0ZXM7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG4gICAgaWYgKE9iamVjdC5rZXlzKGNvbHVtbk5hbWVVcGRhdGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICBhbHRlcmF0aW9uU3RhdGVtZW50cy5wdXNoKC4uLk9iamVjdC5lbnRyaWVzKGNvbHVtbk5hbWVVcGRhdGVzKS5tYXAoKFtvbGROYW1lLCBuZXdOYW1lXSkgPT4gKFxuICAgICAgICBgQUxURVIgVEFCTEUgJHt0YWJsZU5hbWV9IFJFTkFNRSBDT0xVTU4gJHtvbGROYW1lfSBUTyAke25ld05hbWV9YFxuICAgICAgKSkpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9sZERpc3RTdHlsZSA9IG9sZFJlc291cmNlUHJvcGVydGllcy5kaXN0U3R5bGU7XG4gIGlmICgoIW9sZERpc3RTdHlsZSAmJiB0YWJsZUFuZENsdXN0ZXJQcm9wcy5kaXN0U3R5bGUpIHx8XG4gICAgKG9sZERpc3RTdHlsZSAmJiAhdGFibGVBbmRDbHVzdGVyUHJvcHMuZGlzdFN0eWxlKSkge1xuICAgIHJldHVybiBjcmVhdGVUYWJsZSh0YWJsZU5hbWVQcmVmaXgsIHRhYmxlTmFtZVN1ZmZpeCwgdGFibGVDb2x1bW5zLCB0YWJsZUFuZENsdXN0ZXJQcm9wcyk7XG4gIH0gZWxzZSBpZiAob2xkRGlzdFN0eWxlICE9PSB0YWJsZUFuZENsdXN0ZXJQcm9wcy5kaXN0U3R5bGUpIHtcbiAgICBhbHRlcmF0aW9uU3RhdGVtZW50cy5wdXNoKGBBTFRFUiBUQUJMRSAke3RhYmxlTmFtZX0gQUxURVIgRElTVFNUWUxFICR7dGFibGVBbmRDbHVzdGVyUHJvcHMuZGlzdFN0eWxlfWApO1xuICB9XG5cbiAgY29uc3Qgb2xkRGlzdEtleSA9IGdldERpc3RLZXlDb2x1bW4ob2xkVGFibGVDb2x1bW5zKT8ubmFtZTtcbiAgY29uc3QgbmV3RGlzdEtleSA9IGdldERpc3RLZXlDb2x1bW4odGFibGVDb2x1bW5zKT8ubmFtZTtcbiAgaWYgKCFvbGREaXN0S2V5ICYmIG5ld0Rpc3RLZXkpIHtcbiAgICAvLyBUYWJsZSBoYXMgbm8gZXhpc3RpbmcgZGlzdHJpYnV0aW9uIGtleSwgYWRkIGEgbmV3IG9uZVxuICAgIGFsdGVyYXRpb25TdGF0ZW1lbnRzLnB1c2goYEFMVEVSIFRBQkxFICR7dGFibGVOYW1lfSBBTFRFUiBESVNUU1RZTEUgS0VZIERJU1RLRVkgJHtuZXdEaXN0S2V5fWApO1xuICB9IGVsc2UgaWYgKG9sZERpc3RLZXkgJiYgIW5ld0Rpc3RLZXkpIHtcbiAgICAvLyBUYWJsZSBoYXMgYSBkaXN0cmlidXRpb24ga2V5LCByZW1vdmUgYW5kIHNldCB0byBBVVRPXG4gICAgYWx0ZXJhdGlvblN0YXRlbWVudHMucHVzaChgQUxURVIgVEFCTEUgJHt0YWJsZU5hbWV9IEFMVEVSIERJU1RTVFlMRSBBVVRPYCk7XG4gIH0gZWxzZSBpZiAob2xkRGlzdEtleSAhPT0gbmV3RGlzdEtleSkge1xuICAgIC8vIFRhYmxlIGhhcyBhbiBleGlzdGluZyBkaXN0cmlidXRpb24ga2V5LCBjaGFuZ2UgaXRcbiAgICBhbHRlcmF0aW9uU3RhdGVtZW50cy5wdXNoKGBBTFRFUiBUQUJMRSAke3RhYmxlTmFtZX0gQUxURVIgRElTVEtFWSAke25ld0Rpc3RLZXl9YCk7XG4gIH1cblxuICBjb25zdCBvbGRTb3J0S2V5Q29sdW1ucyA9IGdldFNvcnRLZXlDb2x1bW5zKG9sZFRhYmxlQ29sdW1ucyk7XG4gIGNvbnN0IG5ld1NvcnRLZXlDb2x1bW5zID0gZ2V0U29ydEtleUNvbHVtbnModGFibGVDb2x1bW5zKTtcbiAgY29uc3Qgb2xkU29ydFN0eWxlID0gb2xkUmVzb3VyY2VQcm9wZXJ0aWVzLnNvcnRTdHlsZTtcbiAgY29uc3QgbmV3U29ydFN0eWxlID0gdGFibGVBbmRDbHVzdGVyUHJvcHMuc29ydFN0eWxlO1xuICBpZiAoKG9sZFNvcnRTdHlsZSA9PT0gbmV3U29ydFN0eWxlICYmICFhcmVDb2x1bW5zRXF1YWwob2xkU29ydEtleUNvbHVtbnMsIG5ld1NvcnRLZXlDb2x1bW5zKSlcbiAgICB8fCAob2xkU29ydFN0eWxlICE9PSBuZXdTb3J0U3R5bGUpKSB7XG4gICAgc3dpdGNoIChuZXdTb3J0U3R5bGUpIHtcbiAgICAgIGNhc2UgVGFibGVTb3J0U3R5bGUuSU5URVJMRUFWRUQ6XG4gICAgICAgIC8vIElOVEVSTEVBVkVEIHNvcnQga2V5IGFkZGl0aW9uIHJlcXVpcmVzIHJlcGxhY2VtZW50LlxuICAgICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQUxURVJfVEFCTEUuaHRtbFxuICAgICAgICByZXR1cm4gY3JlYXRlVGFibGUodGFibGVOYW1lUHJlZml4LCB0YWJsZU5hbWVTdWZmaXgsIHRhYmxlQ29sdW1ucywgdGFibGVBbmRDbHVzdGVyUHJvcHMpO1xuXG4gICAgICBjYXNlIFRhYmxlU29ydFN0eWxlLkNPTVBPVU5EOiB7XG4gICAgICAgIGNvbnN0IHNvcnRLZXlDb2x1bW5zU3RyaW5nID0gZ2V0U29ydEtleUNvbHVtbnNTdHJpbmcobmV3U29ydEtleUNvbHVtbnMpO1xuICAgICAgICBhbHRlcmF0aW9uU3RhdGVtZW50cy5wdXNoKGBBTFRFUiBUQUJMRSAke3RhYmxlTmFtZX0gQUxURVIgJHtuZXdTb3J0U3R5bGV9IFNPUlRLRVkoJHtzb3J0S2V5Q29sdW1uc1N0cmluZ30pYCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRhYmxlU29ydFN0eWxlLkFVVE86IHtcbiAgICAgICAgYWx0ZXJhdGlvblN0YXRlbWVudHMucHVzaChgQUxURVIgVEFCTEUgJHt0YWJsZU5hbWV9IEFMVEVSIFNPUlRLRVkgJHtuZXdTb3J0U3R5bGV9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9sZENvbW1lbnQgPSBvbGRSZXNvdXJjZVByb3BlcnRpZXMudGFibGVDb21tZW50O1xuICBjb25zdCBuZXdDb21tZW50ID0gdGFibGVBbmRDbHVzdGVyUHJvcHMudGFibGVDb21tZW50O1xuICBpZiAob2xkQ29tbWVudCAhPT0gbmV3Q29tbWVudCkge1xuICAgIGFsdGVyYXRpb25TdGF0ZW1lbnRzLnB1c2goYENPTU1FTlQgT04gVEFCTEUgJHt0YWJsZU5hbWV9IElTICR7bmV3Q29tbWVudCA/IGAnJHtuZXdDb21tZW50fSdgIDogJ05VTEwnfWApO1xuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoYWx0ZXJhdGlvblN0YXRlbWVudHMubWFwKHN0YXRlbWVudCA9PiBleGVjdXRlU3RhdGVtZW50KHN0YXRlbWVudCwgdGFibGVBbmRDbHVzdGVyUHJvcHMpKSk7XG5cbiAgcmV0dXJuIHRhYmxlTmFtZTtcbn1cblxuZnVuY3Rpb24gZ2V0U29ydEtleUNvbHVtbnNTdHJpbmcoc29ydEtleUNvbHVtbnM6IENvbHVtbltdKSB7XG4gIHJldHVybiBzb3J0S2V5Q29sdW1ucy5tYXAoY29sdW1uID0+IGNvbHVtbi5uYW1lKS5qb2luKCk7XG59XG5cbmZ1bmN0aW9uIGdldEVuY29kaW5nQ29sdW1uU3RyaW5nKGNvbHVtbjogQ29sdW1uKTogc3RyaW5nIHtcbiAgaWYgKGNvbHVtbi5lbmNvZGluZykge1xuICAgIHJldHVybiBgIEVOQ09ERSAke2NvbHVtbi5lbmNvZGluZ31gO1xuICB9XG4gIHJldHVybiAnJztcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/types.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/types.js new file mode 100644 index 0000000000000..bbb29ad542beb --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/types.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TableSortStyle = void 0; +/** + * The sort style of a table. + * This has been duplicated here to exporting private types. + */ +var TableSortStyle; +(function (TableSortStyle) { + /** + * Amazon Redshift assigns an optimal sort key based on the table data. + */ + TableSortStyle["AUTO"] = "AUTO"; + /** + * Specifies that the data is sorted using a compound key made up of all of the listed columns, + * in the order they are listed. + */ + TableSortStyle["COMPOUND"] = "COMPOUND"; + /** + * Specifies that the data is sorted using an interleaved sort key. + */ + TableSortStyle["INTERLEAVED"] = "INTERLEAVED"; +})(TableSortStyle || (exports.TableSortStyle = TableSortStyle = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQTs7O0dBR0c7QUFDSCxJQUFZLGNBZ0JYO0FBaEJELFdBQVksY0FBYztJQUN4Qjs7T0FFRztJQUNILCtCQUFhLENBQUE7SUFFYjs7O09BR0c7SUFDSCx1Q0FBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILDZDQUEyQixDQUFBO0FBQzdCLENBQUMsRUFoQlcsY0FBYyw4QkFBZCxjQUFjLFFBZ0J6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFiYXNlUXVlcnlIYW5kbGVyUHJvcHMsIFRhYmxlSGFuZGxlclByb3BzIH0gZnJvbSAnLi4vaGFuZGxlci1wcm9wcyc7XG5cbmV4cG9ydCB0eXBlIENsdXN0ZXJQcm9wcyA9IE9taXQ8RGF0YWJhc2VRdWVyeUhhbmRsZXJQcm9wcywgJ2hhbmRsZXInPjtcbmV4cG9ydCB0eXBlIFRhYmxlQW5kQ2x1c3RlclByb3BzID0gVGFibGVIYW5kbGVyUHJvcHMgJiBDbHVzdGVyUHJvcHM7XG5cbi8qKlxuICogVGhlIHNvcnQgc3R5bGUgb2YgYSB0YWJsZS5cbiAqIFRoaXMgaGFzIGJlZW4gZHVwbGljYXRlZCBoZXJlIHRvIGV4cG9ydGluZyBwcml2YXRlIHR5cGVzLlxuICovXG5leHBvcnQgZW51bSBUYWJsZVNvcnRTdHlsZSB7XG4gIC8qKlxuICAgKiBBbWF6b24gUmVkc2hpZnQgYXNzaWducyBhbiBvcHRpbWFsIHNvcnQga2V5IGJhc2VkIG9uIHRoZSB0YWJsZSBkYXRhLlxuICAgKi9cbiAgQVVUTyA9ICdBVVRPJyxcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoYXQgdGhlIGRhdGEgaXMgc29ydGVkIHVzaW5nIGEgY29tcG91bmQga2V5IG1hZGUgdXAgb2YgYWxsIG9mIHRoZSBsaXN0ZWQgY29sdW1ucyxcbiAgICogaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGxpc3RlZC5cbiAgICovXG4gIENPTVBPVU5EID0gJ0NPTVBPVU5EJyxcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoYXQgdGhlIGRhdGEgaXMgc29ydGVkIHVzaW5nIGFuIGludGVybGVhdmVkIHNvcnQga2V5LlxuICAgKi9cbiAgSU5URVJMRUFWRUQgPSAnSU5URVJMRUFWRUQnLFxufVxuIl19 \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/user.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/user.js new file mode 100644 index 0000000000000..8d42c3199d0d4 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/user.js @@ -0,0 +1,70 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.handler = void 0; +/* eslint-disable-next-line import/no-extraneous-dependencies */ +const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager"); +const redshift_data_1 = require("./redshift-data"); +const util_1 = require("./util"); +const secretsManager = new client_secrets_manager_1.SecretsManager({}); +async function handler(props, event) { + const username = props.username; + const passwordSecretArn = props.passwordSecretArn; + const clusterProps = props; + if (event.RequestType === 'Create') { + await createUser(username, passwordSecretArn, clusterProps); + return { PhysicalResourceId: (0, util_1.makePhysicalId)(username, clusterProps, event.RequestId), Data: { username: username } }; + } + else if (event.RequestType === 'Delete') { + await dropUser(username, clusterProps); + return; + } + else if (event.RequestType === 'Update') { + const { replace } = await updateUser(username, passwordSecretArn, clusterProps, event.OldResourceProperties); + const physicalId = replace ? (0, util_1.makePhysicalId)(username, clusterProps, event.RequestId) : event.PhysicalResourceId; + return { PhysicalResourceId: physicalId, Data: { username: username } }; + } + else { + /* eslint-disable-next-line dot-notation */ + throw new Error(`Unrecognized event type: ${event['RequestType']}`); + } +} +exports.handler = handler; +async function dropUser(username, clusterProps) { + await (0, redshift_data_1.executeStatement)(`DROP USER ${username}`, clusterProps); +} +async function createUser(username, passwordSecretArn, clusterProps) { + const password = await getPasswordFromSecret(passwordSecretArn); + await (0, redshift_data_1.executeStatement)(`CREATE USER ${username} PASSWORD '${password}'`, clusterProps); +} +async function updateUser(username, passwordSecretArn, clusterProps, oldResourceProperties) { + const oldClusterProps = oldResourceProperties; + if (clusterProps.clusterName !== oldClusterProps.clusterName || clusterProps.databaseName !== oldClusterProps.databaseName) { + await createUser(username, passwordSecretArn, clusterProps); + return { replace: true }; + } + const oldUsername = oldResourceProperties.username; + const oldPasswordSecretArn = oldResourceProperties.passwordSecretArn; + const oldPassword = await getPasswordFromSecret(oldPasswordSecretArn); + const password = await getPasswordFromSecret(passwordSecretArn); + if (username !== oldUsername) { + await createUser(username, passwordSecretArn, clusterProps); + return { replace: true }; + } + if (password !== oldPassword) { + await (0, redshift_data_1.executeStatement)(`ALTER USER ${username} PASSWORD '${password}'`, clusterProps); + return { replace: false }; + } + return { replace: false }; +} +async function getPasswordFromSecret(passwordSecretArn) { + const secretValue = await secretsManager.getSecretValue({ + SecretId: passwordSecretArn, + }); + const secretString = secretValue.SecretString; + if (!secretString) { + throw new Error(`Secret string for ${passwordSecretArn} was empty`); + } + const { password } = JSON.parse(secretString); + return password; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsZ0VBQWdFO0FBQ2hFLDRFQUFpRTtBQUNqRSxtREFBbUQ7QUFFbkQsaUNBQXdDO0FBR3hDLE1BQU0sY0FBYyxHQUFHLElBQUksdUNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUV2QyxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQXNDLEVBQUUsS0FBa0Q7SUFDdEgsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNoQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFM0IsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRTtRQUNsQyxNQUFNLFVBQVUsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLElBQUEscUJBQWMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztLQUN0SDtTQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7UUFDekMsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU87S0FDUjtTQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7UUFDekMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLHFCQUF3RCxDQUFDLENBQUM7UUFDaEosTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFBLHFCQUFjLEVBQUMs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YWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCB7IFNlY3JldHNNYW5hZ2VyIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XG5pbXBvcnQgeyBleGVjdXRlU3RhdGVtZW50IH0gZnJvbSAnLi9yZWRzaGlmdC1kYXRhJztcbmltcG9ydCB7IENsdXN0ZXJQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgbWFrZVBoeXNpY2FsSWQgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgVXNlckhhbmRsZXJQcm9wcyB9IGZyb20gJy4uL2hhbmRsZXItcHJvcHMnO1xuXG5jb25zdCBzZWNyZXRzTWFuYWdlciA9IG5ldyBTZWNyZXRzTWFuYWdlcih7fSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKHByb3BzOiBVc2VySGFuZGxlclByb3BzICYgQ2x1c3RlclByb3BzLCBldmVudDogQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCkge1xuICBjb25zdCB1c2VybmFtZSA9IHByb3BzLnVzZXJuYW1lO1xuICBjb25zdCBwYXNzd29yZFNlY3JldEFybiA9IHByb3BzLnBhc3N3b3JkU2VjcmV0QXJuO1xuICBjb25zdCBjbHVzdGVyUHJvcHMgPSBwcm9wcztcblxuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdDcmVhdGUnKSB7XG4gICAgYXdhaXQgY3JlYXRlVXNlcih1c2VybmFtZSwgcGFzc3dvcmRTZWNyZXRBcm4sIGNsdXN0ZXJQcm9wcyk7XG4gICAgcmV0dXJuIHsgUGh5c2ljYWxSZXNvdXJjZUlkOiBtYWtlUGh5c2ljYWxJZCh1c2VybmFtZSwgY2x1c3RlclByb3BzLCBldmVudC5SZXF1ZXN0SWQpLCBEYXRhOiB7IHVzZXJuYW1lOiB1c2VybmFtZSB9IH07XG4gIH0gZWxzZSBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdEZWxldGUnKSB7XG4gICAgYXdhaXQgZHJvcFVzZXIodXNlcm5hbWUsIGNsdXN0ZXJQcm9wcyk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnVXBkYXRlJykge1xuICAgIGNvbnN0IHsgcmVwbGFjZSB9ID0gYXdhaXQgdXBkYXRlVXNlcih1c2VybmFtZSwgcGFzc3dvcmRTZWNyZXRBcm4sIGNsdXN0ZXJQcm9wcywgZXZlbnQuT2xkUmVzb3VyY2VQcm9wZXJ0aWVzIGFzIFVzZXJIYW5kbGVyUHJvcHMgJiBDbHVzdGVyUHJvcHMpO1xuICAgIGNvbnN0IHBoeXNpY2FsSWQgPSByZXBsYWNlID8gbWFrZVBoeXNpY2FsSWQodXNlcm5hbWUsIGNsdXN0ZXJQcm9wcywgZXZlbnQuUmVxdWVzdElkKSA6IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICByZXR1cm4geyBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsSWQsIERhdGE6IHsgdXNlcm5hbWU6IHVzZXJuYW1lIH0gfTtcbiAgfSBlbHNlIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZG90LW5vdGF0aW9uICovXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgZXZlbnQgdHlwZTogJHtldmVudFsnUmVxdWVzdFR5cGUnXX1gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBkcm9wVXNlcih1c2VybmFtZTogc3RyaW5nLCBjbHVzdGVyUHJvcHM6IENsdXN0ZXJQcm9wcykge1xuICBhd2FpdCBleGVjdXRlU3RhdGVtZW50KGBEUk9QIFVTRVIgJHt1c2VybmFtZX1gLCBjbHVzdGVyUHJvcHMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkU2VjcmV0QXJuOiBzdHJpbmcsIGNsdXN0ZXJQcm9wczogQ2x1c3RlclByb3BzKSB7XG4gIGNvbnN0IHBhc3N3b3JkID0gYXdhaXQgZ2V0UGFzc3dvcmRGcm9tU2VjcmV0KHBhc3N3b3JkU2VjcmV0QXJuKTtcblxuICBhd2FpdCBleGVjdXRlU3RhdGVtZW50KGBDUkVBVEUgVVNFUiAke3VzZXJuYW1lfSBQQVNTV09SRCAnJHtwYXNzd29yZH0nYCwgY2x1c3RlclByb3BzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlVXNlcihcbiAgdXNlcm5hbWU6IHN0cmluZyxcbiAgcGFzc3dvcmRTZWNyZXRBcm46IHN0cmluZyxcbiAgY2x1c3RlclByb3BzOiBDbHVzdGVyUHJvcHMsXG4gIG9sZFJlc291cmNlUHJvcGVydGllczogVXNlckhhbmRsZXJQcm9wcyAmIENsdXN0ZXJQcm9wcyxcbik6IFByb21pc2U8eyByZXBsYWNlOiBib29sZWFuIH0+IHtcbiAgY29uc3Qgb2xkQ2x1c3RlclByb3BzID0gb2xkUmVzb3VyY2VQcm9wZXJ0aWVzO1xuICBpZiAoY2x1c3RlclByb3BzLmNsdXN0ZXJOYW1lICE9PSBvbGRDbHVzdGVyUHJvcHMuY2x1c3Rlck5hbWUgfHwgY2x1c3RlclByb3BzLmRhdGFiYXNlTmFtZSAhPT0gb2xkQ2x1c3RlclByb3BzLmRhdGFiYXNlTmFtZSkge1xuICAgIGF3YWl0IGNyZWF0ZVVzZXIodXNlcm5hbWUsIHBhc3N3b3JkU2VjcmV0QXJuLCBjbHVzdGVyUHJvcHMpO1xuICAgIHJldHVybiB7IHJlcGxhY2U6IHRydWUgfTtcbiAgfVxuXG4gIGNvbnN0IG9sZFVzZXJuYW1lID0gb2xkUmVzb3VyY2VQcm9wZXJ0aWVzLnVzZXJuYW1lO1xuICBjb25zdCBvbGRQYXNzd29yZFNlY3JldEFybiA9IG9sZFJlc291cmNlUHJvcGVydGllcy5wYXNzd29yZFNlY3JldEFybjtcbiAgY29uc3Qgb2xkUGFzc3dvcmQgPSBhd2FpdCBnZXRQYXNzd29yZEZyb21TZWNyZXQob2xkUGFzc3dvcmRTZWNyZXRBcm4pO1xuICBjb25zdCBwYXNzd29yZCA9IGF3YWl0IGdldFBhc3N3b3JkRnJvbVNlY3JldChwYXNzd29yZFNlY3JldEFybik7XG5cbiAgaWYgKHVzZXJuYW1lICE9PSBvbGRVc2VybmFtZSkge1xuICAgIGF3YWl0IGNyZWF0ZVVzZXIodXNlcm5hbWUsIHBhc3N3b3JkU2VjcmV0QXJuLCBjbHVzdGVyUHJvcHMpO1xuICAgIHJldHVybiB7IHJlcGxhY2U6IHRydWUgfTtcbiAgfVxuXG4gIGlmIChwYXNzd29yZCAhPT0gb2xkUGFzc3dvcmQpIHtcbiAgICBhd2FpdCBleGVjdXRlU3RhdGVtZW50KGBBTFRFUiBVU0VSICR7dXNlcm5hbWV9IFBBU1NXT1JEICcke3Bhc3N3b3JkfSdgLCBjbHVzdGVyUHJvcHMpO1xuICAgIHJldHVybiB7IHJlcGxhY2U6IGZhbHNlIH07XG4gIH1cblxuICByZXR1cm4geyByZXBsYWNlOiBmYWxzZSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRQYXNzd29yZEZyb21TZWNyZXQocGFzc3dvcmRTZWNyZXRBcm46IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNlY3JldFZhbHVlID0gYXdhaXQgc2VjcmV0c01hbmFnZXIuZ2V0U2VjcmV0VmFsdWUoe1xuICAgIFNlY3JldElkOiBwYXNzd29yZFNlY3JldEFybixcbiAgfSk7XG4gIGNvbnN0IHNlY3JldFN0cmluZyA9IHNlY3JldFZhbHVlLlNlY3JldFN0cmluZztcbiAgaWYgKCFzZWNyZXRTdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNlY3JldCBzdHJpbmcgZm9yICR7cGFzc3dvcmRTZWNyZXRBcm59IHdhcyBlbXB0eWApO1xuICB9XG4gIGNvbnN0IHsgcGFzc3dvcmQgfSA9IEpTT04ucGFyc2Uoc2VjcmV0U3RyaW5nKTtcblxuICByZXR1cm4gcGFzc3dvcmQ7XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/util.js b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/util.js new file mode 100644 index 0000000000000..d8dc8cad799c9 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386/util.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.areColumnsEqual = exports.getSortKeyColumns = exports.getDistKeyColumn = exports.makePhysicalId = void 0; +function makePhysicalId(resourceName, clusterProps, requestId) { + return `${clusterProps.clusterName}:${clusterProps.databaseName}:${resourceName}:${requestId}`; +} +exports.makePhysicalId = makePhysicalId; +function getDistKeyColumn(columns) { + // string comparison is required for custom resource since everything is passed as string + const distKeyColumns = columns.filter(column => column.distKey === true || column.distKey === 'true'); + if (distKeyColumns.length === 0) { + return undefined; + } + else if (distKeyColumns.length > 1) { + throw new Error('Multiple dist key columns found'); + } + return distKeyColumns[0]; +} +exports.getDistKeyColumn = getDistKeyColumn; +function getSortKeyColumns(columns) { + // string comparison is required for custom resource since everything is passed as string + return columns.filter(column => column.sortKey === true || column.sortKey === 'true'); +} +exports.getSortKeyColumns = getSortKeyColumns; +function areColumnsEqual(columnsA, columnsB) { + if (columnsA.length !== columnsB.length) { + return false; + } + return columnsA.every(columnA => { + return columnsB.find(column => column.name === columnA.name && column.dataType === columnA.dataType); + }); +} +exports.areColumnsEqual = areColumnsEqual; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsU0FBZ0IsY0FBYyxDQUFDLFlBQW9CLEVBQUUsWUFBMEIsRUFBRSxTQUFpQjtJQUNoRyxPQUFPLEdBQUcsWUFBWSxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsWUFBWSxJQUFJLFlBQVksSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUNqRyxDQUFDO0FBRkQsd0NBRUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUFpQjtJQUNoRCx5RkFBeUY7SUFDekYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFLLE1BQU0sQ0FBQyxPQUE2QixLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBRTdILElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDL0IsT0FBTyxTQUFTLENBQUM7S0FDbEI7U0FBTSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztLQUNwRDtJQUVELE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFYRCw0Q0FXQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLE9BQWlCO0lBQ2pELHlGQUF5RjtJQUN6RixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSyxNQUFNLENBQUMsT0FBNkIsS0FBSyxNQUFNLENBQUMsQ0FBQztBQUMvRyxDQUFDO0FBSEQsOENBR0M7QUFFRCxTQUFnQixlQUFlLENBQUMsUUFBa0IsRUFBRSxRQUFrQjtJQUNwRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE1BQU0sRUFBRTtRQUN2QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzlCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFQRCwwQ0FPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsdXN0ZXJQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnLi4vLi4vdGFibGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFrZVBoeXNpY2FsSWQocmVzb3VyY2VOYW1lOiBzdHJpbmcsIGNsdXN0ZXJQcm9wczogQ2x1c3RlclByb3BzLCByZXF1ZXN0SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtjbHVzdGVyUHJvcHMuY2x1c3Rlck5hbWV9OiR7Y2x1c3RlclByb3BzLmRhdGFiYXNlTmFtZX06JHtyZXNvdXJjZU5hbWV9OiR7cmVxdWVzdElkfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXN0S2V5Q29sdW1uKGNvbHVtbnM6IENvbHVtbltdKTogQ29sdW1uIHwgdW5kZWZpbmVkIHtcbiAgLy8gc3RyaW5nIGNvbXBhcmlzb24gaXMgcmVxdWlyZWQgZm9yIGN1c3RvbSByZXNvdXJjZSBzaW5jZSBldmVyeXRoaW5nIGlzIHBhc3NlZCBhcyBzdHJpbmdcbiAgY29uc3QgZGlzdEtleUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmRpc3RLZXkgPT09IHRydWUgfHwgKGNvbHVtbi5kaXN0S2V5IGFzIHVua25vd24gYXMgc3RyaW5nKSA9PT0gJ3RydWUnKTtcblxuICBpZiAoZGlzdEtleUNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIGlmIChkaXN0S2V5Q29sdW1ucy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNdWx0aXBsZSBkaXN0IGtleSBjb2x1bW5zIGZvdW5kJyk7XG4gIH1cblxuICByZXR1cm4gZGlzdEtleUNvbHVtbnNbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0S2V5Q29sdW1ucyhjb2x1bW5zOiBDb2x1bW5bXSk6IENvbHVtbltdIHtcbiAgLy8gc3RyaW5nIGNvbXBhcmlzb24gaXMgcmVxdWlyZWQgZm9yIGN1c3RvbSByZXNvdXJjZSBzaW5jZSBldmVyeXRoaW5nIGlzIHBhc3NlZCBhcyBzdHJpbmdcbiAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uc29ydEtleSA9PT0gdHJ1ZSB8fCAoY29sdW1uLnNvcnRLZXkgYXMgdW5rbm93biBhcyBzdHJpbmcpID09PSAndHJ1ZScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJlQ29sdW1uc0VxdWFsKGNvbHVtbnNBOiBDb2x1bW5bXSwgY29sdW1uc0I6IENvbHVtbltdKTogYm9vbGVhbiB7XG4gIGlmIChjb2x1bW5zQS5sZW5ndGggIT09IGNvbHVtbnNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gY29sdW1uc0EuZXZlcnkoY29sdW1uQSA9PiB7XG4gICAgcmV0dXJuIGNvbHVtbnNCLmZpbmQoY29sdW1uID0+IGNvbHVtbi5uYW1lID09PSBjb2x1bW5BLm5hbWUgJiYgY29sdW1uLmRhdGFUeXBlID09PSBjb2x1bW5BLmRhdGFUeXBlKTtcbiAgfSk7XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-create.assets.json b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-create.assets.json new file mode 100644 index 0000000000000..83069d0d4dd53 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-create.assets.json @@ -0,0 +1,45 @@ +{ + "version": "33.0.0", + "files": { + "95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386": { + "source": { + "path": "asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4": { + "source": { + "path": "asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "eb47b5477029fcb632fd7321d9e49e555755ddf5de0aff32fca72fdf28081319": { + "source": { + "path": "aws-cdk-redshift-distkey-create.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "eb47b5477029fcb632fd7321d9e49e555755ddf5de0aff32fca72fdf28081319.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-create.template.json b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-create.template.json new file mode 100644 index 0000000000000..da957ce721b07 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-create.template.json @@ -0,0 +1,888 @@ +{ + "Resources": { + "customkmskey377C6F9A": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": "kms:*", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "Vpc8378EB38": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1Subnet5C2D37C4": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1RouteTable6C95E38E": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1RouteTableAssociation97140677": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + }, + "SubnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1DefaultRoute3DA9E72A": { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "RouteTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + } + }, + "DependsOn": [ + "VpcVPCGWBF912B6E" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1EIPD7E02669": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1NATGateway4D7517AA": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet1EIPD7E02669", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1" + } + ] + }, + "DependsOn": [ + "VpcPublicSubnet1DefaultRoute3DA9E72A", + "VpcPublicSubnet1RouteTableAssociation97140677" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2Subnet691E08A3": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.64.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2RouteTable94F7E489": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2RouteTableAssociationDD5762D8": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + }, + "SubnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2DefaultRoute97F91067": { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "RouteTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + } + }, + "DependsOn": [ + "VpcVPCGWBF912B6E" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2EIP3C605A87": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2NATGateway9182C01D": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet2EIP3C605A87", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2" + } + ] + }, + "DependsOn": [ + "VpcPublicSubnet2DefaultRoute97F91067", + "VpcPublicSubnet2RouteTableAssociationDD5762D8" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet1Subnet536B997A": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.128.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet1RouteTableB2C5B500": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet1RouteTableAssociation70C59FA6": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + }, + "SubnetId": { + "Ref": "VpcPrivateSubnet1Subnet536B997A" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet1DefaultRouteBE02A9ED": { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "VpcPublicSubnet1NATGateway4D7517AA" + }, + "RouteTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet2Subnet3788AAA1": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.192.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet2RouteTableA678073B": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet2RouteTableAssociationA89CAD56": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + }, + "SubnetId": { + "Ref": "VpcPrivateSubnet2Subnet3788AAA1" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet2DefaultRoute060D2087": { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "VpcPublicSubnet2NATGateway9182C01D" + }, + "RouteTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcIGWD7BA715C": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-create/Vpc" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcVPCGWBF912B6E": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "InternetGatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterSubnetsDCFA5CB7": { + "Type": "AWS::Redshift::ClusterSubnetGroup", + "Properties": { + "Description": "Subnets for Cluster Redshift cluster", + "SubnetIds": [ + { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterSecurityGroup0921994B": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Redshift security group", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterSecret6368BD0F": { + "Type": "AWS::SecretsManager::Secret", + "Properties": { + "GenerateSecretString": { + "ExcludeCharacters": "\"@/\\ '", + "GenerateStringKey": "password", + "PasswordLength": 30, + "SecretStringTemplate": "{\"username\":\"admin\"}" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterSecretAttachment769E6258": { + "Type": "AWS::SecretsManager::SecretTargetAttachment", + "Properties": { + "SecretId": { + "Ref": "ClusterSecret6368BD0F" + }, + "TargetId": { + "Ref": "ClusterEB0386A7" + }, + "TargetType": "AWS::Redshift::Cluster" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterEB0386A7": { + "Type": "AWS::Redshift::Cluster", + "Properties": { + "AllowVersionUpgrade": true, + "AutomatedSnapshotRetentionPeriod": 1, + "ClusterParameterGroupName": { + "Ref": "ClusterParameterGroup879806FD" + }, + "ClusterSubnetGroupName": { + "Ref": "ClusterSubnetsDCFA5CB7" + }, + "ClusterType": "multi-node", + "DBName": "my_db", + "Encrypted": true, + "KmsKeyId": { + "Ref": "customkmskey377C6F9A" + }, + "MasterUserPassword": { + "Fn::Join": [ + "", + [ + "{{resolve:secretsmanager:", + { + "Ref": "ClusterSecret6368BD0F" + }, + ":SecretString:password::}}" + ] + ] + }, + "MasterUsername": { + "Fn::Join": [ + "", + [ + "{{resolve:secretsmanager:", + { + "Ref": "ClusterSecret6368BD0F" + }, + ":SecretString:username::}}" + ] + ] + }, + "NodeType": "dc2.large", + "NumberOfNodes": 2, + "PubliclyAccessible": true, + "VpcSecurityGroupIds": [ + { + "Fn::GetAtt": [ + "ClusterSecurityGroup0921994B", + "GroupId" + ] + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterParameterGroup879806FD": { + "Type": "AWS::Redshift::ClusterParameterGroup", + "Properties": { + "Description": "Cluster parameter group for family redshift-1.0", + "ParameterGroupFamily": "redshift-1.0", + "Parameters": [ + { + "ParameterName": "enable_user_activity_logging", + "ParameterValue": "true" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "TableProviderframeworkonEventServiceRoleC3128F67": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D", + "Roles": [ + { + "Ref": "TableProviderframeworkonEventServiceRoleC3128F67" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "TableProviderframeworkonEvent97F3951A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4.zip" + }, + "Description": "AWS CDK resource provider framework - onEvent (aws-cdk-redshift-distkey-create/Table/Resource/Provider)", + "Environment": { + "Variables": { + "USER_ON_EVENT_FUNCTION_ARN": { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + } + } + }, + "Handler": "framework.onEvent", + "Role": { + "Fn::GetAtt": [ + "TableProviderframeworkonEventServiceRoleC3128F67", + "Arn" + ] + }, + "Runtime": "nodejs18.x", + "Timeout": 900 + }, + "DependsOn": [ + "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D", + "TableProviderframeworkonEventServiceRoleC3128F67" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "Table7ABB320E": { + "Type": "Custom::RedshiftDatabaseQuery", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "TableProviderframeworkonEvent97F3951A", + "Arn" + ] + }, + "handler": "table", + "clusterName": { + "Ref": "ClusterEB0386A7" + }, + "adminUserArn": { + "Ref": "ClusterSecretAttachment769E6258" + }, + "databaseName": "my_db", + "tableName": { + "prefix": "mytable", + "generateSuffix": "false" + }, + "tableColumns": [ + { + "name": "col1", + "dataType": "varchar(4)", + "distKey": false, + "comment": "A test column", + "id": "col1" + } + ], + "sortStyle": "AUTO", + "tableComment": "A test table", + "useColumnIds": true + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "redshift-data:DescribeStatement", + "redshift-data:ExecuteStatement" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue" + ], + "Effect": "Allow", + "Resource": { + "Ref": "ClusterSecretAttachment769E6258" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D", + "Roles": [ + { + "Ref": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386.zip" + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717", + "Arn" + ] + }, + "Runtime": "nodejs18.x", + "Timeout": 60 + }, + "DependsOn": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D", + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-update.assets.json b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-update.assets.json new file mode 100644 index 0000000000000..107ac0064c059 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-update.assets.json @@ -0,0 +1,45 @@ +{ + "version": "33.0.0", + "files": { + "95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386": { + "source": { + "path": "asset.95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4": { + "source": { + "path": "asset.73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "65747181e631ebd4dcb64c9875500b198110a0ab7ccec1fce9d85799b12403af": { + "source": { + "path": "aws-cdk-redshift-distkey-update.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "65747181e631ebd4dcb64c9875500b198110a0ab7ccec1fce9d85799b12403af.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-update.template.json b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-update.template.json new file mode 100644 index 0000000000000..567db0d575e18 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/aws-cdk-redshift-distkey-update.template.json @@ -0,0 +1,888 @@ +{ + "Resources": { + "customkmskey377C6F9A": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": "kms:*", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "Vpc8378EB38": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1Subnet5C2D37C4": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.0.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1RouteTable6C95E38E": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1RouteTableAssociation97140677": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + }, + "SubnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1DefaultRoute3DA9E72A": { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "RouteTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + } + }, + "DependsOn": [ + "VpcVPCGWBF912B6E" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1EIPD7E02669": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet1NATGateway4D7517AA": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet1EIPD7E02669", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1" + } + ] + }, + "DependsOn": [ + "VpcPublicSubnet1DefaultRoute3DA9E72A", + "VpcPublicSubnet1RouteTableAssociation97140677" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2Subnet691E08A3": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.64.0/18", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2RouteTable94F7E489": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2RouteTableAssociationDD5762D8": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + }, + "SubnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2DefaultRoute97F91067": { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "RouteTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + } + }, + "DependsOn": [ + "VpcVPCGWBF912B6E" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2EIP3C605A87": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPublicSubnet2NATGateway9182C01D": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet2EIP3C605A87", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + }, + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2" + } + ] + }, + "DependsOn": [ + "VpcPublicSubnet2DefaultRoute97F91067", + "VpcPublicSubnet2RouteTableAssociationDD5762D8" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet1Subnet536B997A": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.128.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet1RouteTableB2C5B500": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet1RouteTableAssociation70C59FA6": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + }, + "SubnetId": { + "Ref": "VpcPrivateSubnet1Subnet536B997A" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet1DefaultRouteBE02A9ED": { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "VpcPublicSubnet1NATGateway4D7517AA" + }, + "RouteTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet2Subnet3788AAA1": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.0.192.0/18", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet2RouteTableA678073B": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet2RouteTableAssociationA89CAD56": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + }, + "SubnetId": { + "Ref": "VpcPrivateSubnet2Subnet3788AAA1" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcPrivateSubnet2DefaultRoute060D2087": { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "VpcPublicSubnet2NATGateway9182C01D" + }, + "RouteTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcIGWD7BA715C": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-redshift-distkey-update/Vpc" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "VpcVPCGWBF912B6E": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "InternetGatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterSubnetsDCFA5CB7": { + "Type": "AWS::Redshift::ClusterSubnetGroup", + "Properties": { + "Description": "Subnets for Cluster Redshift cluster", + "SubnetIds": [ + { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterSecurityGroup0921994B": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Redshift security group", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "Vpc8378EB38" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterSecret6368BD0F": { + "Type": "AWS::SecretsManager::Secret", + "Properties": { + "GenerateSecretString": { + "ExcludeCharacters": "\"@/\\ '", + "GenerateStringKey": "password", + "PasswordLength": 30, + "SecretStringTemplate": "{\"username\":\"admin\"}" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterSecretAttachment769E6258": { + "Type": "AWS::SecretsManager::SecretTargetAttachment", + "Properties": { + "SecretId": { + "Ref": "ClusterSecret6368BD0F" + }, + "TargetId": { + "Ref": "ClusterEB0386A7" + }, + "TargetType": "AWS::Redshift::Cluster" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterEB0386A7": { + "Type": "AWS::Redshift::Cluster", + "Properties": { + "AllowVersionUpgrade": true, + "AutomatedSnapshotRetentionPeriod": 1, + "ClusterParameterGroupName": { + "Ref": "ClusterParameterGroup879806FD" + }, + "ClusterSubnetGroupName": { + "Ref": "ClusterSubnetsDCFA5CB7" + }, + "ClusterType": "multi-node", + "DBName": "my_db", + "Encrypted": true, + "KmsKeyId": { + "Ref": "customkmskey377C6F9A" + }, + "MasterUserPassword": { + "Fn::Join": [ + "", + [ + "{{resolve:secretsmanager:", + { + "Ref": "ClusterSecret6368BD0F" + }, + ":SecretString:password::}}" + ] + ] + }, + "MasterUsername": { + "Fn::Join": [ + "", + [ + "{{resolve:secretsmanager:", + { + "Ref": "ClusterSecret6368BD0F" + }, + ":SecretString:username::}}" + ] + ] + }, + "NodeType": "dc2.large", + "NumberOfNodes": 2, + "PubliclyAccessible": true, + "VpcSecurityGroupIds": [ + { + "Fn::GetAtt": [ + "ClusterSecurityGroup0921994B", + "GroupId" + ] + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ClusterParameterGroup879806FD": { + "Type": "AWS::Redshift::ClusterParameterGroup", + "Properties": { + "Description": "Cluster parameter group for family redshift-1.0", + "ParameterGroupFamily": "redshift-1.0", + "Parameters": [ + { + "ParameterName": "enable_user_activity_logging", + "ParameterValue": "true" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "TableProviderframeworkonEventServiceRoleC3128F67": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D", + "Roles": [ + { + "Ref": "TableProviderframeworkonEventServiceRoleC3128F67" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "TableProviderframeworkonEvent97F3951A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4.zip" + }, + "Description": "AWS CDK resource provider framework - onEvent (aws-cdk-redshift-distkey-update/Table/Resource/Provider)", + "Environment": { + "Variables": { + "USER_ON_EVENT_FUNCTION_ARN": { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + } + } + }, + "Handler": "framework.onEvent", + "Role": { + "Fn::GetAtt": [ + "TableProviderframeworkonEventServiceRoleC3128F67", + "Arn" + ] + }, + "Runtime": "nodejs18.x", + "Timeout": 900 + }, + "DependsOn": [ + "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D", + "TableProviderframeworkonEventServiceRoleC3128F67" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "Table7ABB320E": { + "Type": "Custom::RedshiftDatabaseQuery", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "TableProviderframeworkonEvent97F3951A", + "Arn" + ] + }, + "handler": "table", + "clusterName": { + "Ref": "ClusterEB0386A7" + }, + "adminUserArn": { + "Ref": "ClusterSecretAttachment769E6258" + }, + "databaseName": "my_db", + "tableName": { + "prefix": "mytable", + "generateSuffix": "false" + }, + "tableColumns": [ + { + "name": "col1", + "dataType": "varchar(4)", + "distKey": true, + "comment": "A test column", + "id": "col1" + } + ], + "sortStyle": "AUTO", + "tableComment": "A test table", + "useColumnIds": true + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "redshift-data:DescribeStatement", + "redshift-data:ExecuteStatement" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue" + ], + "Effect": "Allow", + "Resource": { + "Ref": "ClusterSecretAttachment769E6258" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D", + "Roles": [ + { + "Ref": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386.zip" + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717", + "Arn" + ] + }, + "Runtime": "nodejs18.x", + "Timeout": 60 + }, + "DependsOn": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D", + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.assets.json b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.assets.json new file mode 100644 index 0000000000000..abbb77a78451b --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.assets.json @@ -0,0 +1,19 @@ +{ + "version": "33.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "source": { + "path": "awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.template.json b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/cdk.out b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/cdk.out new file mode 100644 index 0000000000000..560dae10d018f --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"33.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/integ.json b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/integ.json new file mode 100644 index 0000000000000..28a589785d073 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "33.0.0", + "testCases": { + "aws-cdk-redshift-distkey-test/DefaultTest": { + "stacks": [ + "aws-cdk-redshift-distkey-create", + "aws-cdk-redshift-distkey-update" + ], + "assertionStack": "aws-cdk-redshift-distkey-test/DefaultTest/DeployAssert", + "assertionStackName": "awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/manifest.json b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/manifest.json new file mode 100644 index 0000000000000..32756b3c28245 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/manifest.json @@ -0,0 +1,597 @@ +{ + "version": "33.0.0", + "artifacts": { + "aws-cdk-redshift-distkey-create.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-redshift-distkey-create.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-redshift-distkey-create": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-redshift-distkey-create.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/eb47b5477029fcb632fd7321d9e49e555755ddf5de0aff32fca72fdf28081319.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-redshift-distkey-create.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-redshift-distkey-create.assets" + ], + "metadata": { + "/aws-cdk-redshift-distkey-create/custom-kms-key/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "customkmskey377C6F9A" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Vpc8378EB38" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1Subnet5C2D37C4" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1RouteTable6C95E38E" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1RouteTableAssociation97140677" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1DefaultRoute3DA9E72A" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1EIPD7E02669" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1NATGateway4D7517AA" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2Subnet691E08A3" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2RouteTable94F7E489" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2RouteTableAssociationDD5762D8" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2DefaultRoute97F91067" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2EIP3C605A87" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2NATGateway9182C01D" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1Subnet536B997A" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1RouteTableB2C5B500" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1RouteTableAssociation70C59FA6" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1DefaultRouteBE02A9ED" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2Subnet3788AAA1" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2RouteTableA678073B" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2RouteTableAssociationA89CAD56" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2DefaultRoute060D2087" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcIGWD7BA715C" + } + ], + "/aws-cdk-redshift-distkey-create/Vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcVPCGWBF912B6E" + } + ], + "/aws-cdk-redshift-distkey-create/Cluster/Subnets/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterSubnetsDCFA5CB7" + } + ], + "/aws-cdk-redshift-distkey-create/Cluster/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterSecurityGroup0921994B" + } + ], + "/aws-cdk-redshift-distkey-create/Cluster/Secret/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterSecret6368BD0F" + } + ], + "/aws-cdk-redshift-distkey-create/Cluster/Secret/Attachment/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterSecretAttachment769E6258" + } + ], + "/aws-cdk-redshift-distkey-create/Cluster/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterEB0386A7" + } + ], + "/aws-cdk-redshift-distkey-create/Cluster/ParameterGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterParameterGroup879806FD" + } + ], + "/aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TableProviderframeworkonEventServiceRoleC3128F67" + } + ], + "/aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D" + } + ], + "/aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TableProviderframeworkonEvent97F3951A" + } + ], + "/aws-cdk-redshift-distkey-create/Table/Resource/Resource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "Table7ABB320E" + } + ], + "/aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717" + } + ], + "/aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D" + } + ], + "/aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997" + } + ], + "/aws-cdk-redshift-distkey-create/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-redshift-distkey-create/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-redshift-distkey-create" + }, + "aws-cdk-redshift-distkey-update.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-redshift-distkey-update.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-redshift-distkey-update": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-redshift-distkey-update.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/65747181e631ebd4dcb64c9875500b198110a0ab7ccec1fce9d85799b12403af.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-redshift-distkey-update.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-redshift-distkey-create", + "aws-cdk-redshift-distkey-update.assets" + ], + "metadata": { + "/aws-cdk-redshift-distkey-update/custom-kms-key/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "customkmskey377C6F9A" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Vpc8378EB38" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1Subnet5C2D37C4" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1RouteTable6C95E38E" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1RouteTableAssociation97140677" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1DefaultRoute3DA9E72A" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1EIPD7E02669" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet1NATGateway4D7517AA" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2Subnet691E08A3" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2RouteTable94F7E489" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2RouteTableAssociationDD5762D8" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2DefaultRoute97F91067" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/EIP": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2EIP3C605A87" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/NATGateway": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPublicSubnet2NATGateway9182C01D" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1Subnet536B997A" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1RouteTableB2C5B500" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1RouteTableAssociation70C59FA6" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet1DefaultRouteBE02A9ED" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2/Subnet": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2Subnet3788AAA1" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2/RouteTable": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2RouteTableA678073B" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2/RouteTableAssociation": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2RouteTableAssociationA89CAD56" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2/DefaultRoute": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcPrivateSubnet2DefaultRoute060D2087" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/IGW": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcIGWD7BA715C" + } + ], + "/aws-cdk-redshift-distkey-update/Vpc/VPCGW": [ + { + "type": "aws:cdk:logicalId", + "data": "VpcVPCGWBF912B6E" + } + ], + "/aws-cdk-redshift-distkey-update/Cluster/Subnets/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterSubnetsDCFA5CB7" + } + ], + "/aws-cdk-redshift-distkey-update/Cluster/SecurityGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterSecurityGroup0921994B" + } + ], + "/aws-cdk-redshift-distkey-update/Cluster/Secret/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterSecret6368BD0F" + } + ], + "/aws-cdk-redshift-distkey-update/Cluster/Secret/Attachment/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterSecretAttachment769E6258" + } + ], + "/aws-cdk-redshift-distkey-update/Cluster/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterEB0386A7" + } + ], + "/aws-cdk-redshift-distkey-update/Cluster/ParameterGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ClusterParameterGroup879806FD" + } + ], + "/aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TableProviderframeworkonEventServiceRoleC3128F67" + } + ], + "/aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D" + } + ], + "/aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TableProviderframeworkonEvent97F3951A" + } + ], + "/aws-cdk-redshift-distkey-update/Table/Resource/Resource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "Table7ABB320E" + } + ], + "/aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717" + } + ], + "/aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D" + } + ], + "/aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997" + } + ], + "/aws-cdk-redshift-distkey-update/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-redshift-distkey-update/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-redshift-distkey-update" + }, + "awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "awscdkredshiftdistkeytestDefaultTestDeployAssert61A36BE8.assets" + ], + "metadata": { + "/aws-cdk-redshift-distkey-test/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-redshift-distkey-test/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-redshift-distkey-test/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/tree.json b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/tree.json new file mode 100644 index 0000000000000..c3ad3fc6d0f83 --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.js.snapshot/tree.json @@ -0,0 +1,2813 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "aws-cdk-redshift-distkey-create": { + "id": "aws-cdk-redshift-distkey-create", + "path": "aws-cdk-redshift-distkey-create", + "children": { + "custom-kms-key": { + "id": "custom-kms-key", + "path": "aws-cdk-redshift-distkey-create/custom-kms-key", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/custom-kms-key/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::KMS::Key", + "aws:cdk:cloudformation:props": { + "keyPolicy": { + "Statement": [ + { + "Action": "kms:*", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_kms.CfnKey", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_kms.Key", + "version": "0.0.0" + } + }, + "Vpc": { + "id": "Vpc", + "path": "aws-cdk-redshift-distkey-create/Vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnVPC", + "version": "0.0.0" + } + }, + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/Acl", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + }, + "subnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "routeTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnEIP", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "allocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet1EIPD7E02669", + "AllocationId" + ] + }, + "subnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnNatGateway", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.PublicSubnet", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.64.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/Acl", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + }, + "subnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "routeTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnEIP", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "allocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet2EIP3C605A87", + "AllocationId" + ] + }, + "subnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + }, + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnNatGateway", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.PublicSubnet", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.128.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1/Acl", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + }, + "subnetId": { + "Ref": "VpcPrivateSubnet1Subnet536B997A" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "VpcPublicSubnet1NATGateway4D7517AA" + }, + "routeTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.PrivateSubnet", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.192.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2/Acl", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + }, + "subnetId": { + "Ref": "VpcPrivateSubnet2Subnet3788AAA1" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-cdk-redshift-distkey-create/Vpc/PrivateSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "VpcPublicSubnet2NATGateway9182C01D" + }, + "routeTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.PrivateSubnet", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "aws-cdk-redshift-distkey-create/Vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-create/Vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnInternetGateway", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "aws-cdk-redshift-distkey-create/Vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "internetGatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.Vpc", + "version": "0.0.0" + } + }, + "Cluster": { + "id": "Cluster", + "path": "aws-cdk-redshift-distkey-create/Cluster", + "children": { + "Subnets": { + "id": "Subnets", + "path": "aws-cdk-redshift-distkey-create/Cluster/Subnets", + "children": { + "Default": { + "id": "Default", + "path": "aws-cdk-redshift-distkey-create/Cluster/Subnets/Default", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Redshift::ClusterSubnetGroup", + "aws:cdk:cloudformation:props": { + "description": "Subnets for Cluster Redshift cluster", + "subnetIds": [ + { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_redshift.CfnClusterSubnetGroup", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.ClusterSubnetGroup", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-cdk-redshift-distkey-create/Cluster/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Cluster/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "Redshift security group", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", + "version": "0.0.0" + } + }, + "Secret": { + "id": "Secret", + "path": "aws-cdk-redshift-distkey-create/Cluster/Secret", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Cluster/Secret/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SecretsManager::Secret", + "aws:cdk:cloudformation:props": { + "generateSecretString": { + "passwordLength": 30, + "secretStringTemplate": "{\"username\":\"admin\"}", + "generateStringKey": "password", + "excludeCharacters": "\"@/\\ '" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_secretsmanager.CfnSecret", + "version": "0.0.0" + } + }, + "Attachment": { + "id": "Attachment", + "path": "aws-cdk-redshift-distkey-create/Cluster/Secret/Attachment", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Cluster/Secret/Attachment/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SecretsManager::SecretTargetAttachment", + "aws:cdk:cloudformation:props": { + "secretId": { + "Ref": "ClusterSecret6368BD0F" + }, + "targetId": { + "Ref": "ClusterEB0386A7" + }, + "targetType": "AWS::Redshift::Cluster" + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_secretsmanager.CfnSecretTargetAttachment", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_secretsmanager.SecretTargetAttachment", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.DatabaseSecret", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Cluster/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Redshift::Cluster", + "aws:cdk:cloudformation:props": { + "allowVersionUpgrade": true, + "automatedSnapshotRetentionPeriod": 1, + "clusterParameterGroupName": { + "Ref": "ClusterParameterGroup879806FD" + }, + "clusterSubnetGroupName": { + "Ref": "ClusterSubnetsDCFA5CB7" + }, + "clusterType": "multi-node", + "dbName": "my_db", + "encrypted": true, + "kmsKeyId": { + "Ref": "customkmskey377C6F9A" + }, + "masterUsername": { + "Fn::Join": [ + "", + [ + "{{resolve:secretsmanager:", + { + "Ref": "ClusterSecret6368BD0F" + }, + ":SecretString:username::}}" + ] + ] + }, + "masterUserPassword": { + "Fn::Join": [ + "", + [ + "{{resolve:secretsmanager:", + { + "Ref": "ClusterSecret6368BD0F" + }, + ":SecretString:password::}}" + ] + ] + }, + "nodeType": "dc2.large", + "numberOfNodes": 2, + "publiclyAccessible": true, + "vpcSecurityGroupIds": [ + { + "Fn::GetAtt": [ + "ClusterSecurityGroup0921994B", + "GroupId" + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_redshift.CfnCluster", + "version": "0.0.0" + } + }, + "ParameterGroup": { + "id": "ParameterGroup", + "path": "aws-cdk-redshift-distkey-create/Cluster/ParameterGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Cluster/ParameterGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Redshift::ClusterParameterGroup", + "aws:cdk:cloudformation:props": { + "description": "Cluster parameter group for family redshift-1.0", + "parameterGroupFamily": "redshift-1.0", + "parameters": [ + { + "parameterName": "enable_user_activity_logging", + "parameterValue": "true" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_redshift.CfnClusterParameterGroup", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.ClusterParameterGroup", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.Cluster", + "version": "0.0.0" + } + }, + "Table": { + "id": "Table", + "path": "aws-cdk-redshift-distkey-create/Table", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Table/Resource", + "children": { + "Handler": { + "id": "Handler", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Handler", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.SingletonFunction", + "version": "0.0.0" + } + }, + "Provider": { + "id": "Provider", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider", + "children": { + "framework-onEvent": { + "id": "framework-onEvent", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/ServiceRole", + "children": { + "ImportServiceRole": { + "id": "ImportServiceRole", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/ServiceRole/ImportServiceRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/ServiceRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/ServiceRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "policyName": "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D", + "roles": [ + { + "Ref": "TableProviderframeworkonEventServiceRoleC3128F67" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/Code/Stage", + "constructInfo": { + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/Code/AssetBucket", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3.BucketBase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3_assets.Asset", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Provider/framework-onEvent/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "s3Key": "73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4.zip" + }, + "description": "AWS CDK resource provider framework - onEvent (aws-cdk-redshift-distkey-create/Table/Resource/Provider)", + "environment": { + "variables": { + "USER_ON_EVENT_FUNCTION_ARN": { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + } + } + }, + "handler": "framework.onEvent", + "role": { + "Fn::GetAtt": [ + "TableProviderframeworkonEventServiceRoleC3128F67", + "Arn" + ] + }, + "runtime": "nodejs18.x", + "timeout": 900 + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.custom_resources.Provider", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Resource", + "children": { + "Default": { + "id": "Default", + "path": "aws-cdk-redshift-distkey-create/Table/Resource/Resource/Default", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.CustomResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.Table", + "version": "0.0.0" + } + }, + "Query Redshift Database3de5bea727da479686625efb56431b5f": { + "id": "Query Redshift Database3de5bea727da479686625efb56431b5f", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole", + "children": { + "ImportServiceRole": { + "id": "ImportServiceRole", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/ImportServiceRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "redshift-data:DescribeStatement", + "redshift-data:ExecuteStatement" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue" + ], + "Effect": "Allow", + "Resource": { + "Ref": "ClusterSecretAttachment769E6258" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D", + "roles": [ + { + "Ref": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/Code/Stage", + "constructInfo": { + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/Code/AssetBucket", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3.BucketBase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3_assets.Asset", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-create/Query Redshift Database3de5bea727da479686625efb56431b5f/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "s3Key": "95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386.zip" + }, + "handler": "index.handler", + "role": { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717", + "Arn" + ] + }, + "runtime": "nodejs18.x", + "timeout": 60 + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "aws-cdk-redshift-distkey-create/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "aws-cdk-redshift-distkey-create/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + }, + "aws-cdk-redshift-distkey-update": { + "id": "aws-cdk-redshift-distkey-update", + "path": "aws-cdk-redshift-distkey-update", + "children": { + "custom-kms-key": { + "id": "custom-kms-key", + "path": "aws-cdk-redshift-distkey-update/custom-kms-key", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/custom-kms-key/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::KMS::Key", + "aws:cdk:cloudformation:props": { + "keyPolicy": { + "Statement": [ + { + "Action": "kms:*", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_kms.CfnKey", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_kms.Key", + "version": "0.0.0" + } + }, + "Vpc": { + "id": "Vpc", + "path": "aws-cdk-redshift-distkey-update/Vpc", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Vpc/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPC", + "aws:cdk:cloudformation:props": { + "cidrBlock": "10.0.0.0/16", + "enableDnsHostnames": true, + "enableDnsSupport": true, + "instanceTenancy": "default", + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnVPC", + "version": "0.0.0" + } + }, + "PublicSubnet1": { + "id": "PublicSubnet1", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.0.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/Acl", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + }, + "subnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "routeTableId": { + "Ref": "VpcPublicSubnet1RouteTable6C95E38E" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnEIP", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "allocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet1EIPD7E02669", + "AllocationId" + ] + }, + "subnetId": { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet1" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnNatGateway", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.PublicSubnet", + "version": "0.0.0" + } + }, + "PublicSubnet2": { + "id": "PublicSubnet2", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.64.0/18", + "mapPublicIpOnLaunch": true, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Public" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Public" + }, + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/Acl", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + }, + "subnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "destinationCidrBlock": "0.0.0.0/0", + "gatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "routeTableId": { + "Ref": "VpcPublicSubnet2RouteTable94F7E489" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" + } + }, + "EIP": { + "id": "EIP", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/EIP", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::EIP", + "aws:cdk:cloudformation:props": { + "domain": "vpc", + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnEIP", + "version": "0.0.0" + } + }, + "NATGateway": { + "id": "NATGateway", + "path": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2/NATGateway", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::NatGateway", + "aws:cdk:cloudformation:props": { + "allocationId": { + "Fn::GetAtt": [ + "VpcPublicSubnet2EIP3C605A87", + "AllocationId" + ] + }, + "subnetId": { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + }, + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PublicSubnet2" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnNatGateway", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.PublicSubnet", + "version": "0.0.0" + } + }, + "PrivateSubnet1": { + "id": "PrivateSubnet1", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "availabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.128.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1/Acl", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + }, + "subnetId": { + "Ref": "VpcPrivateSubnet1Subnet536B997A" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet1/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "VpcPublicSubnet1NATGateway4D7517AA" + }, + "routeTableId": { + "Ref": "VpcPrivateSubnet1RouteTableB2C5B500" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.PrivateSubnet", + "version": "0.0.0" + } + }, + "PrivateSubnet2": { + "id": "PrivateSubnet2", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2", + "children": { + "Subnet": { + "id": "Subnet", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2/Subnet", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Subnet", + "aws:cdk:cloudformation:props": { + "availabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "cidrBlock": "10.0.192.0/18", + "mapPublicIpOnLaunch": false, + "tags": [ + { + "key": "aws-cdk:subnet-name", + "value": "Private" + }, + { + "key": "aws-cdk:subnet-type", + "value": "Private" + }, + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnet", + "version": "0.0.0" + } + }, + "Acl": { + "id": "Acl", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2/Acl", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "RouteTable": { + "id": "RouteTable", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2/RouteTable", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::RouteTable", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRouteTable", + "version": "0.0.0" + } + }, + "RouteTableAssociation": { + "id": "RouteTableAssociation", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2/RouteTableAssociation", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SubnetRouteTableAssociation", + "aws:cdk:cloudformation:props": { + "routeTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + }, + "subnetId": { + "Ref": "VpcPrivateSubnet2Subnet3788AAA1" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSubnetRouteTableAssociation", + "version": "0.0.0" + } + }, + "DefaultRoute": { + "id": "DefaultRoute", + "path": "aws-cdk-redshift-distkey-update/Vpc/PrivateSubnet2/DefaultRoute", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::Route", + "aws:cdk:cloudformation:props": { + "destinationCidrBlock": "0.0.0.0/0", + "natGatewayId": { + "Ref": "VpcPublicSubnet2NATGateway9182C01D" + }, + "routeTableId": { + "Ref": "VpcPrivateSubnet2RouteTableA678073B" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnRoute", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.PrivateSubnet", + "version": "0.0.0" + } + }, + "IGW": { + "id": "IGW", + "path": "aws-cdk-redshift-distkey-update/Vpc/IGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::InternetGateway", + "aws:cdk:cloudformation:props": { + "tags": [ + { + "key": "Name", + "value": "aws-cdk-redshift-distkey-update/Vpc" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnInternetGateway", + "version": "0.0.0" + } + }, + "VPCGW": { + "id": "VPCGW", + "path": "aws-cdk-redshift-distkey-update/Vpc/VPCGW", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::VPCGatewayAttachment", + "aws:cdk:cloudformation:props": { + "internetGatewayId": { + "Ref": "VpcIGWD7BA715C" + }, + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnVPCGatewayAttachment", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.Vpc", + "version": "0.0.0" + } + }, + "Cluster": { + "id": "Cluster", + "path": "aws-cdk-redshift-distkey-update/Cluster", + "children": { + "Subnets": { + "id": "Subnets", + "path": "aws-cdk-redshift-distkey-update/Cluster/Subnets", + "children": { + "Default": { + "id": "Default", + "path": "aws-cdk-redshift-distkey-update/Cluster/Subnets/Default", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Redshift::ClusterSubnetGroup", + "aws:cdk:cloudformation:props": { + "description": "Subnets for Cluster Redshift cluster", + "subnetIds": [ + { + "Ref": "VpcPublicSubnet1Subnet5C2D37C4" + }, + { + "Ref": "VpcPublicSubnet2Subnet691E08A3" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_redshift.CfnClusterSubnetGroup", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.ClusterSubnetGroup", + "version": "0.0.0" + } + }, + "SecurityGroup": { + "id": "SecurityGroup", + "path": "aws-cdk-redshift-distkey-update/Cluster/SecurityGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Cluster/SecurityGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::EC2::SecurityGroup", + "aws:cdk:cloudformation:props": { + "groupDescription": "Redshift security group", + "securityGroupEgress": [ + { + "cidrIp": "0.0.0.0/0", + "description": "Allow all outbound traffic by default", + "ipProtocol": "-1" + } + ], + "vpcId": { + "Ref": "Vpc8378EB38" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.CfnSecurityGroup", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_ec2.SecurityGroup", + "version": "0.0.0" + } + }, + "Secret": { + "id": "Secret", + "path": "aws-cdk-redshift-distkey-update/Cluster/Secret", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Cluster/Secret/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SecretsManager::Secret", + "aws:cdk:cloudformation:props": { + "generateSecretString": { + "passwordLength": 30, + "secretStringTemplate": "{\"username\":\"admin\"}", + "generateStringKey": "password", + "excludeCharacters": "\"@/\\ '" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_secretsmanager.CfnSecret", + "version": "0.0.0" + } + }, + "Attachment": { + "id": "Attachment", + "path": "aws-cdk-redshift-distkey-update/Cluster/Secret/Attachment", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Cluster/Secret/Attachment/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::SecretsManager::SecretTargetAttachment", + "aws:cdk:cloudformation:props": { + "secretId": { + "Ref": "ClusterSecret6368BD0F" + }, + "targetId": { + "Ref": "ClusterEB0386A7" + }, + "targetType": "AWS::Redshift::Cluster" + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_secretsmanager.CfnSecretTargetAttachment", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_secretsmanager.SecretTargetAttachment", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.DatabaseSecret", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Cluster/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Redshift::Cluster", + "aws:cdk:cloudformation:props": { + "allowVersionUpgrade": true, + "automatedSnapshotRetentionPeriod": 1, + "clusterParameterGroupName": { + "Ref": "ClusterParameterGroup879806FD" + }, + "clusterSubnetGroupName": { + "Ref": "ClusterSubnetsDCFA5CB7" + }, + "clusterType": "multi-node", + "dbName": "my_db", + "encrypted": true, + "kmsKeyId": { + "Ref": "customkmskey377C6F9A" + }, + "masterUsername": { + "Fn::Join": [ + "", + [ + "{{resolve:secretsmanager:", + { + "Ref": "ClusterSecret6368BD0F" + }, + ":SecretString:username::}}" + ] + ] + }, + "masterUserPassword": { + "Fn::Join": [ + "", + [ + "{{resolve:secretsmanager:", + { + "Ref": "ClusterSecret6368BD0F" + }, + ":SecretString:password::}}" + ] + ] + }, + "nodeType": "dc2.large", + "numberOfNodes": 2, + "publiclyAccessible": true, + "vpcSecurityGroupIds": [ + { + "Fn::GetAtt": [ + "ClusterSecurityGroup0921994B", + "GroupId" + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_redshift.CfnCluster", + "version": "0.0.0" + } + }, + "ParameterGroup": { + "id": "ParameterGroup", + "path": "aws-cdk-redshift-distkey-update/Cluster/ParameterGroup", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Cluster/ParameterGroup/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Redshift::ClusterParameterGroup", + "aws:cdk:cloudformation:props": { + "description": "Cluster parameter group for family redshift-1.0", + "parameterGroupFamily": "redshift-1.0", + "parameters": [ + { + "parameterName": "enable_user_activity_logging", + "parameterValue": "true" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_redshift.CfnClusterParameterGroup", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.ClusterParameterGroup", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.Cluster", + "version": "0.0.0" + } + }, + "Table": { + "id": "Table", + "path": "aws-cdk-redshift-distkey-update/Table", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Table/Resource", + "children": { + "Handler": { + "id": "Handler", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Handler", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.SingletonFunction", + "version": "0.0.0" + } + }, + "Provider": { + "id": "Provider", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider", + "children": { + "framework-onEvent": { + "id": "framework-onEvent", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/ServiceRole", + "children": { + "ImportServiceRole": { + "id": "ImportServiceRole", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/ServiceRole/ImportServiceRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/ServiceRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/ServiceRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "policyName": "TableProviderframeworkonEventServiceRoleDefaultPolicyAD08715D", + "roles": [ + { + "Ref": "TableProviderframeworkonEventServiceRoleC3128F67" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/Code/Stage", + "constructInfo": { + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/Code/AssetBucket", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3.BucketBase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3_assets.Asset", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Provider/framework-onEvent/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "s3Key": "73b60c2cf141bf58c33cfaa33858f5c84103a0232ba7192d696536488f7731c4.zip" + }, + "description": "AWS CDK resource provider framework - onEvent (aws-cdk-redshift-distkey-update/Table/Resource/Provider)", + "environment": { + "variables": { + "USER_ON_EVENT_FUNCTION_ARN": { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5f3DF81997", + "Arn" + ] + } + } + }, + "handler": "framework.onEvent", + "role": { + "Fn::GetAtt": [ + "TableProviderframeworkonEventServiceRoleC3128F67", + "Arn" + ] + }, + "runtime": "nodejs18.x", + "timeout": 900 + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.custom_resources.Provider", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Resource", + "children": { + "Default": { + "id": "Default", + "path": "aws-cdk-redshift-distkey-update/Table/Resource/Resource/Default", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.CustomResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-redshift-alpha.Table", + "version": "0.0.0" + } + }, + "Query Redshift Database3de5bea727da479686625efb56431b5f": { + "id": "Query Redshift Database3de5bea727da479686625efb56431b5f", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole", + "children": { + "ImportServiceRole": { + "id": "ImportServiceRole", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/ImportServiceRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/ServiceRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": [ + "redshift-data:DescribeStatement", + "redshift-data:ExecuteStatement" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "secretsmanager:DescribeSecret", + "secretsmanager:GetSecretValue" + ], + "Effect": "Allow", + "Resource": { + "Ref": "ClusterSecretAttachment769E6258" + } + } + ], + "Version": "2012-10-17" + }, + "policyName": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRoleDefaultPolicyDDD1388D", + "roles": [ + { + "Ref": "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/Code/Stage", + "constructInfo": { + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/Code/AssetBucket", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3.BucketBase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3_assets.Asset", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-redshift-distkey-update/Query Redshift Database3de5bea727da479686625efb56431b5f/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "s3Key": "95dfca0d51dadef71390a414c093b29c52f39e1ff2acef2a26ded36e756bf386.zip" + }, + "handler": "index.handler", + "role": { + "Fn::GetAtt": [ + "QueryRedshiftDatabase3de5bea727da479686625efb56431b5fServiceRole0A90D717", + "Arn" + ] + }, + "runtime": "nodejs18.x", + "timeout": 60 + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "aws-cdk-redshift-distkey-update/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "aws-cdk-redshift-distkey-update/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + }, + "aws-cdk-redshift-distkey-test": { + "id": "aws-cdk-redshift-distkey-test", + "path": "aws-cdk-redshift-distkey-test", + "children": { + "DefaultTest": { + "id": "DefaultTest", + "path": "aws-cdk-redshift-distkey-test/DefaultTest", + "children": { + "Default": { + "id": "Default", + "path": "aws-cdk-redshift-distkey-test/DefaultTest/Default", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "DeployAssert": { + "id": "DeployAssert", + "path": "aws-cdk-redshift-distkey-test/DefaultTest/DeployAssert", + "children": { + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "aws-cdk-redshift-distkey-test/DefaultTest/DeployAssert/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "aws-cdk-redshift-distkey-test/DefaultTest/DeployAssert/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTestCase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTest", + "version": "0.0.0" + } + }, + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.ts b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.ts new file mode 100644 index 0000000000000..1b1d9940d08fc --- /dev/null +++ b/packages/@aws-cdk/aws-redshift-alpha/test/integ.cluster-distkey.ts @@ -0,0 +1,88 @@ +import * as ec2 from 'aws-cdk-lib/aws-ec2'; +import * as kms from 'aws-cdk-lib/aws-kms'; +import * as cdk from 'aws-cdk-lib'; +import * as integ from '@aws-cdk/integ-tests-alpha'; +import * as constructs from 'constructs'; +import * as redshift from '../lib'; + +/** + * This test does the following + * + * 1. Creates a stack with a Redshift cluster with a table without distkey + * 2. Creates a stack with the same cluster to update the table and cause the disktkey creation. + */ + +const app = new cdk.App(); + +interface RedshiftDistKeyStackProps extends cdk.StackProps { + hasDistKey: boolean; +} + +class RedshiftDistKeyStack extends cdk.Stack { + constructor(scope: constructs.Construct, id: string, props: RedshiftDistKeyStackProps) { + super(scope, id, props); + + const key = new kms.Key(this, 'custom-kms-key'); + const vpc = new ec2.Vpc(this, 'Vpc', { restrictDefaultSecurityGroup: false }); + const databaseName = 'my_db'; + + const cluster = new redshift.Cluster(this, 'Cluster', { + vpc: vpc, + vpcSubnets: { + subnetType: ec2.SubnetType.PUBLIC, + }, + masterUser: { + masterUsername: 'admin', + }, + defaultDatabaseName: databaseName, + publiclyAccessible: true, + encryptionKey: key, + }); + + cluster.addToParameterGroup('enable_user_activity_logging', 'true'); + + const databaseOptions = { + cluster: cluster, + databaseName: databaseName, + }; + + const tableOptions = { + tableName: 'mytable', + sortStyle: redshift.TableSortStyle.AUTO, + tableComment: 'A test table', + }; + new redshift.Table(this, 'Table', { + ...databaseOptions, + tableColumns: [ + { name: 'col1', dataType: 'varchar(4)', distKey: props.hasDistKey, comment: 'A test column' }, + ], + ...tableOptions, + }); + } +} + +const createStack = new RedshiftDistKeyStack(app, 'aws-cdk-redshift-distkey-create', { + hasDistKey: false, +}); + +const updateStack = new RedshiftDistKeyStack(app, 'aws-cdk-redshift-distkey-update', { + hasDistKey: true, +}); + +updateStack.addDependency(createStack); +const stacks = [createStack, updateStack]; +stacks.forEach(s => { + cdk.Aspects.of(s).add({ + visit(node: constructs.IConstruct) { + if (cdk.CfnResource.isCfnResource(node)) { + node.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY); + } + }, + }); +}); + +new integ.IntegTest(app, 'aws-cdk-redshift-distkey-test', { + testCases: stacks, +}); + +app.synth(); From 66b16f3c3f01063a157aacc294f4bd2f413f4473 Mon Sep 17 00:00:00 2001 From: Kirk Watson <60279003+kirkwat@users.noreply.github.com> Date: Thu, 17 Aug 2023 10:38:36 -0500 Subject: [PATCH 14/56] refactor(stepfunctions): deprecate unused DISCARD variable and include JsonPath.DISCARD in docs (#26770) The `DISCARD` variable is removed because it unused. The docs are updated to be more clear to use `JsonPath.DISCARD` for `CatchProps` and `ChoiceProps`. Closes #26760 . ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/aws-cdk-lib/aws-stepfunctions/lib/states/choice.ts | 4 ++-- packages/aws-cdk-lib/aws-stepfunctions/lib/states/state.ts | 2 +- packages/aws-cdk-lib/aws-stepfunctions/lib/types.ts | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/states/choice.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/states/choice.ts index cd10a4fad1c34..b27f046c4c1d2 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/states/choice.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/states/choice.ts @@ -19,7 +19,7 @@ export interface ChoiceProps { /** * JSONPath expression to select part of the state to be the input to this state. * - * May also be the special value DISCARD, which will cause the effective + * May also be the special value JsonPath.DISCARD, which will cause the effective * input to be the empty object {}. * * @default $ @@ -29,7 +29,7 @@ export interface ChoiceProps { /** * JSONPath expression to select part of the state to be the output to this state. * - * May also be the special value DISCARD, which will cause the effective + * May also be the special value JsonPath.DISCARD, which will cause the effective * output to be the empty object {}. * * @default $ diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/states/state.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/states/state.ts index f5d8abe8ea2bf..66165ebd7f198 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/states/state.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/states/state.ts @@ -574,7 +574,7 @@ export function renderList(xs: T[], mapFn: (x: T) => any, sortFn?: (a: T, b: } /** - * Render JSON path, respecting the special value DISCARD + * Render JSON path, respecting the special value JsonPath.DISCARD */ export function renderJsonPath(jsonPath?: string): undefined | null | string { if (jsonPath === undefined) { return undefined; } diff --git a/packages/aws-cdk-lib/aws-stepfunctions/lib/types.ts b/packages/aws-cdk-lib/aws-stepfunctions/lib/types.ts index 3a496ab4cf20e..6c3196097c88b 100644 --- a/packages/aws-cdk-lib/aws-stepfunctions/lib/types.ts +++ b/packages/aws-cdk-lib/aws-stepfunctions/lib/types.ts @@ -146,7 +146,7 @@ export interface CatchProps { /** * JSONPath expression to indicate where to inject the error data * - * May also be the special value DISCARD, which will cause the error + * May also be the special value JsonPath.DISCARD, which will cause the error * data to be discarded. * * @default $ @@ -156,5 +156,6 @@ export interface CatchProps { /** * Special string value to discard state input, output or result + * @deprecated use JsonPath.DISCARD */ -export const DISCARD = 'DISCARD'; +export const DISCARD = 'DISCARD'; \ No newline at end of file From a68f7d704c00bb8e20564db3989786946a416cff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Ate=C5=9F=20Uzun?= Date: Thu, 17 Aug 2023 19:09:48 +0300 Subject: [PATCH 15/56] chore(spec2cdk): assertTruthy error message typo (#26792) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- tools/@aws-cdk/spec2cdk/lib/cdk/union-ordering.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/@aws-cdk/spec2cdk/lib/cdk/union-ordering.ts b/tools/@aws-cdk/spec2cdk/lib/cdk/union-ordering.ts index 1690481619bd7..9b06b137c8f8d 100644 --- a/tools/@aws-cdk/spec2cdk/lib/cdk/union-ordering.ts +++ b/tools/@aws-cdk/spec2cdk/lib/cdk/union-ordering.ts @@ -114,7 +114,7 @@ function requiredPropertyNames(t: TypeDefinition): Set { function assertTruthy(x: T): NonNullable { if (x == null) { - throw new Error('Expected truhty value'); + throw new Error('Expected truthy value'); } return x; -} \ No newline at end of file +} From 0bcc4b4b9d0a3dab29be343c4c3db4da7bbde00a Mon Sep 17 00:00:00 2001 From: Torben <8199725+tenjaa@users.noreply.github.com> Date: Thu, 17 Aug 2023 18:43:14 +0200 Subject: [PATCH 16/56] feat(app-staging-synthesizer): enable tag immutability (#26656) Closes https://github.com/aws/aws-cdk/issues/26655 I cannot run the integration tests and therefore cannot update the snapshot :( ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../lib/default-staging-stack.ts | 1 + ...-resourcesmax-ACCOUNT-REGION.template.json | 2 + .../tree.json | 254 +++++++++--------- 3 files changed, 131 insertions(+), 126 deletions(-) diff --git a/packages/@aws-cdk/app-staging-synthesizer-alpha/lib/default-staging-stack.ts b/packages/@aws-cdk/app-staging-synthesizer-alpha/lib/default-staging-stack.ts index 6875de6a123d2..3b3469cdbd827 100644 --- a/packages/@aws-cdk/app-staging-synthesizer-alpha/lib/default-staging-stack.ts +++ b/packages/@aws-cdk/app-staging-synthesizer-alpha/lib/default-staging-stack.ts @@ -422,6 +422,7 @@ export class DefaultStagingStack extends Stack implements IStagingResources { if (this.stagingRepos[asset.assetName] === undefined) { this.stagingRepos[asset.assetName] = new ecr.Repository(this, repoName, { repositoryName: repoName, + imageTagMutability: ecr.TagMutability.IMMUTABLE, lifecycleRules: [{ description: 'Garbage collect old image versions', maxImageCount: this.props.imageAssetVersionCount ?? 3, diff --git a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/StagingStack-default-resourcesmax-ACCOUNT-REGION.template.json b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/StagingStack-default-resourcesmax-ACCOUNT-REGION.template.json index e414b1a846fa0..0be5d5c16bf64 100644 --- a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/StagingStack-default-resourcesmax-ACCOUNT-REGION.template.json +++ b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/StagingStack-default-resourcesmax-ACCOUNT-REGION.template.json @@ -567,6 +567,7 @@ "defaultresourcesmaxecrasset13112F7F9": { "Type": "AWS::ECR::Repository", "Properties": { + "ImageTagMutability": "IMMUTABLE", "LifecyclePolicy": { "LifecyclePolicyText": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Garbage collect old image versions\",\"selection\":{\"tagStatus\":\"any\",\"countType\":\"imageCountMoreThan\",\"countNumber\":3},\"action\":{\"type\":\"expire\"}}]}" }, @@ -693,6 +694,7 @@ "defaultresourcesmaxecrasset2904B88A7": { "Type": "AWS::ECR::Repository", "Properties": { + "ImageTagMutability": "IMMUTABLE", "LifecyclePolicy": { "LifecyclePolicyText": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Garbage collect old image versions\",\"selection\":{\"tagStatus\":\"any\",\"countType\":\"imageCountMoreThan\",\"countNumber\":3},\"action\":{\"type\":\"expire\"}}]}" }, diff --git a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/tree.json b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/tree.json index 7cc6ef475d20b..567d7bd469420 100644 --- a/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/tree.json +++ b/packages/@aws-cdk/app-staging-synthesizer-alpha/test/integ.synth-default-resources.js.snapshot/tree.json @@ -28,8 +28,8 @@ "id": "ImportServiceRole", "path": "synthesize-default-resources/lambda-s3/ServiceRole/ImportServiceRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -67,14 +67,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "Code": { @@ -85,22 +85,22 @@ "id": "Stage", "path": "synthesize-default-resources/lambda-s3/Code/Stage", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" } }, "AssetBucket": { "id": "AssetBucket", "path": "synthesize-default-resources/lambda-s3/Code/AssetBucket", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_s3.BucketBase", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_s3_assets.Asset", + "version": "0.0.0" } }, "Resource": { @@ -126,14 +126,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" } }, "lambda-ecr-1-copy": { @@ -148,8 +148,8 @@ "id": "ImportServiceRole", "path": "synthesize-default-resources/lambda-ecr-1-copy/ServiceRole/ImportServiceRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -187,14 +187,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "AssetImage": { @@ -205,22 +205,22 @@ "id": "Staging", "path": "synthesize-default-resources/lambda-ecr-1-copy/AssetImage/Staging", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" } }, "Repository": { "id": "Repository", "path": "synthesize-default-resources/lambda-ecr-1-copy/AssetImage/Repository", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_ecr.RepositoryBase", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_ecr_assets.DockerImageAsset", + "version": "0.0.0" } }, "Resource": { @@ -244,14 +244,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" } }, "lambda-ecr-two": { @@ -266,8 +266,8 @@ "id": "ImportServiceRole", "path": "synthesize-default-resources/lambda-ecr-two/ServiceRole/ImportServiceRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -305,14 +305,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "AssetImage": { @@ -323,22 +323,22 @@ "id": "Staging", "path": "synthesize-default-resources/lambda-ecr-two/AssetImage/Staging", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" } }, "Repository": { "id": "Repository", "path": "synthesize-default-resources/lambda-ecr-two/AssetImage/Repository", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_ecr.RepositoryBase", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_ecr_assets.DockerImageAsset", + "version": "0.0.0" } }, "Resource": { @@ -362,20 +362,20 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" } }, "StagingStack-default-resourcesmax-ACCOUNT-REGION": { @@ -390,8 +390,8 @@ "id": "ImportCdkFileRole", "path": "StagingStack-default-resourcesmax-ACCOUNT-REGION/CdkFileRole/ImportCdkFileRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -441,8 +441,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } }, "DefaultPolicy": { @@ -522,20 +522,20 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "BucketKey": { @@ -617,8 +617,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_kms.CfnKey", + "version": "0.0.0" } }, "Alias": { @@ -641,20 +641,20 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_kms.CfnAlias", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_kms.Alias", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_kms.Key", + "version": "0.0.0" } }, "CdkStagingBucket": { @@ -724,8 +724,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_s3.CfnBucket", + "version": "0.0.0" } }, "Policy": { @@ -876,14 +876,14 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_s3.CfnBucketPolicy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_s3.BucketPolicy", + "version": "0.0.0" } }, "AutoDeleteObjectsCustomResource": { @@ -894,20 +894,20 @@ "id": "Default", "path": "StagingStack-default-resourcesmax-ACCOUNT-REGION/CdkStagingBucket/AutoDeleteObjectsCustomResource/Default", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CustomResource", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_s3.Bucket", + "version": "0.0.0" } }, "Custom::S3AutoDeleteObjectsCustomResourceProvider": { @@ -918,22 +918,22 @@ "id": "Role", "path": "StagingStack-default-resourcesmax-ACCOUNT-REGION/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" } }, "Handler": { "id": "Handler", "path": "StagingStack-default-resourcesmax-ACCOUNT-REGION/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CustomResourceProvider", + "version": "0.0.0" } }, "CdkImageRole": { @@ -944,8 +944,8 @@ "id": "ImportCdkImageRole", "path": "StagingStack-default-resourcesmax-ACCOUNT-REGION/CdkImageRole/ImportCdkImageRole", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" } }, "Resource": { @@ -995,8 +995,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" } }, "DefaultPolicy": { @@ -1056,20 +1056,20 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" } }, "default-resourcesmax--ecr-asset--1": { @@ -1082,6 +1082,7 @@ "attributes": { "aws:cdk:cloudformation:type": "AWS::ECR::Repository", "aws:cdk:cloudformation:props": { + "imageTagMutability": "IMMUTABLE", "lifecyclePolicy": { "lifecyclePolicyText": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Garbage collect old image versions\",\"selection\":{\"tagStatus\":\"any\",\"countType\":\"imageCountMoreThan\",\"countNumber\":3},\"action\":{\"type\":\"expire\"}}]}" }, @@ -1095,8 +1096,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_ecr.CfnRepository", + "version": "0.0.0" } }, "AutoDeleteImagesCustomResource": { @@ -1107,20 +1108,20 @@ "id": "Default", "path": "StagingStack-default-resourcesmax-ACCOUNT-REGION/default-resourcesmax--ecr-asset--1/AutoDeleteImagesCustomResource/Default", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CustomResource", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_ecr.Repository", + "version": "0.0.0" } }, "Custom::ECRAutoDeleteImagesCustomResourceProvider": { @@ -1131,22 +1132,22 @@ "id": "Role", "path": "StagingStack-default-resourcesmax-ACCOUNT-REGION/Custom::ECRAutoDeleteImagesCustomResourceProvider/Role", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" } }, "Handler": { "id": "Handler", "path": "StagingStack-default-resourcesmax-ACCOUNT-REGION/Custom::ECRAutoDeleteImagesCustomResourceProvider/Handler", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CustomResourceProvider", + "version": "0.0.0" } }, "default-resourcesmax--ecr-asset-2": { @@ -1159,6 +1160,7 @@ "attributes": { "aws:cdk:cloudformation:type": "AWS::ECR::Repository", "aws:cdk:cloudformation:props": { + "imageTagMutability": "IMMUTABLE", "lifecyclePolicy": { "lifecyclePolicyText": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Garbage collect old image versions\",\"selection\":{\"tagStatus\":\"any\",\"countType\":\"imageCountMoreThan\",\"countNumber\":3},\"action\":{\"type\":\"expire\"}}]}" }, @@ -1172,8 +1174,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_ecr.CfnRepository", + "version": "0.0.0" } }, "AutoDeleteImagesCustomResource": { @@ -1184,20 +1186,20 @@ "id": "Default", "path": "StagingStack-default-resourcesmax-ACCOUNT-REGION/default-resourcesmax--ecr-asset-2/AutoDeleteImagesCustomResource/Default", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CustomResource", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.aws_ecr.Repository", + "version": "0.0.0" } } }, @@ -1230,22 +1232,22 @@ "id": "BootstrapVersion", "path": "integ-tests/DefaultTest/DeployAssert/BootstrapVersion", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" } }, "CheckBootstrapVersion": { "id": "CheckBootstrapVersion", "path": "integ-tests/DefaultTest/DeployAssert/CheckBootstrapVersion", "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" } } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" } } }, @@ -1270,8 +1272,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "aws-cdk-lib.App", + "version": "0.0.0" } } } \ No newline at end of file From 7cee5b346b38c7a962a8decaf04c53d2224932d5 Mon Sep 17 00:00:00 2001 From: Mitchell Valine Date: Thu, 17 Aug 2023 14:55:03 -0700 Subject: [PATCH 17/56] chore(aws-cdk-lib): use ts-jest (#25728) Switch to using ts-jest for unit tests in `aws-cdk-lib` instead of requiring all tests to be compiled. This lets us ignore test files when building which speeds up the build marginally, and allows for better integration with various tools, such as IDE plugins for jest so you can run individual tests without rebuilding. The workflow I have been using is running `jest --watch` either for all tests or only the directory or individual test I'm working on. When running all tests, the watch mode can be set to only rerun failed tests on change, which makes iterating on failures across multiple modules much easier. --- nx.json | 4 ++++ .../cloud-assembly-schema/jest.config.js | 8 ++++++++ .../cloud-assembly-schema/package.json | 3 +++ packages/@aws-cdk/cx-api/jest.config.js | 18 +++++++++++++----- packages/@aws-cdk/cx-api/package.json | 3 +++ packages/@aws-cdk/region-info/jest.config.js | 12 +++++++++++- packages/@aws-cdk/region-info/package.json | 3 +++ ...render.test.js.snap => render.test.ts.snap} | 0 .../aws-iam/test/custom-resource/.gitignore | 1 + .../custom-resource/{index.ts => index.js} | 0 ...ling.test.js.snap => bundling.test.ts.snap} | 0 .../aws-lambda-nodejs/test/bundling.test.ts | 4 ++-- .../aws-lambda-nodejs/test/util.test.ts | 2 +- .../aws-cdk-lib/aws-lambda/test/code.test.ts | 6 +++--- .../aws-cdk-lib/aws-lambda/test/layers.test.ts | 2 +- ...fest.test.js.snap => manifest.test.ts.snap} | 0 .../mock-provider/.gitignore | 1 + .../mock-provider/index.js | 0 .../mock-provider/index.ts | 10 ---------- .../stack-synthesis/clicreds-synthesis.test.ts | 6 +++--- .../new-style-synthesis.test.ts | 6 +++--- ...est.js.snap => cloud-assembly.test.ts.snap} | 0 packages/aws-cdk-lib/jest.config.js | 16 +++++++++++++--- packages/aws-cdk-lib/package.json | 3 ++- ...o.test.js.snap => region-info.test.ts.snap} | 0 25 files changed, 75 insertions(+), 33 deletions(-) rename packages/aws-cdk-lib/assertions/test/__snapshots__/{render.test.js.snap => render.test.ts.snap} (100%) create mode 100644 packages/aws-cdk-lib/aws-iam/test/custom-resource/.gitignore rename packages/aws-cdk-lib/aws-iam/test/custom-resource/{index.ts => index.js} (100%) rename packages/aws-cdk-lib/aws-lambda-nodejs/test/__snapshots__/{bundling.test.js.snap => bundling.test.ts.snap} (100%) rename packages/aws-cdk-lib/cloud-assembly-schema/test/__snapshots__/{manifest.test.js.snap => manifest.test.ts.snap} (100%) create mode 100644 packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/.gitignore create mode 100644 packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/index.js delete mode 100644 packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/index.ts rename packages/aws-cdk-lib/cx-api/test/__snapshots__/{cloud-assembly.test.js.snap => cloud-assembly.test.ts.snap} (100%) rename packages/aws-cdk-lib/region-info/test/__snapshots__/{region-info.test.js.snap => region-info.test.ts.snap} (100%) diff --git a/nx.json b/nx.json index 382134e82895e..e8872e82abceb 100644 --- a/nx.json +++ b/nx.json @@ -5,6 +5,7 @@ "^build" ], "inputs": [ + "{projectRoot}/**/bin/!(*.d|*.generated).ts", "{projectRoot}/**/lib/!(*.d|*.generated).ts", "{projectRoot}/**/test/!(*.d).ts", "!{workspaceRoot}/**/tsconfig.json", @@ -33,6 +34,9 @@ "test": { "dependsOn": [ "build" + ], + "inputs": [ + "{projectRoot}/**/test/!(*.d|*.generated).ts" ] } }, diff --git a/packages/@aws-cdk/cloud-assembly-schema/jest.config.js b/packages/@aws-cdk/cloud-assembly-schema/jest.config.js index 6478d8fb36426..1700f0873cc01 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/jest.config.js +++ b/packages/@aws-cdk/cloud-assembly-schema/jest.config.js @@ -1,6 +1,14 @@ const baseConfig = require('@aws-cdk/cdk-build-tools/config/jest.config'); module.exports = { ...baseConfig, + moduleFileExtensions: [ + 'js', + 'ts', + ], + preset: 'ts-jest', + testMatch: [ + '/**/test/**/?(*.)+(test).ts', + ], coverageThreshold: { global: { branches: 70, diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index 0156681da010e..949bb02bb4816 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -23,6 +23,9 @@ } }, "jsii": { + "excludeTypescript": [ + "**/test/**/*.ts" + ], "outdir": "dist", "targets": { "java": { diff --git a/packages/@aws-cdk/cx-api/jest.config.js b/packages/@aws-cdk/cx-api/jest.config.js index 751c263a6e75c..37c818dbced5f 100644 --- a/packages/@aws-cdk/cx-api/jest.config.js +++ b/packages/@aws-cdk/cx-api/jest.config.js @@ -1,10 +1,18 @@ const baseConfig = require('@aws-cdk/cdk-build-tools/config/jest.config'); module.exports = { ...baseConfig, - coverageThreshold: { - global: { - ...baseConfig.coverageThreshold.global, - branches: 70, - }, + moduleFileExtensions: [ + 'js', + 'ts', + ], + preset: 'ts-jest', + testMatch: [ + '/**/test/**/?(*.)+(test).ts', + ], + coverageThreshold: { + global: { + ...baseConfig.coverageThreshold.global, + branches: 70, }, + }, }; diff --git a/packages/@aws-cdk/cx-api/package.json b/packages/@aws-cdk/cx-api/package.json index 31a552cece62f..1ab29c951658d 100644 --- a/packages/@aws-cdk/cx-api/package.json +++ b/packages/@aws-cdk/cx-api/package.json @@ -22,6 +22,9 @@ } }, "jsii": { + "excludeTypescript": [ + "**/test/**/*.ts" + ], "outdir": "dist", "targets": { "java": { diff --git a/packages/@aws-cdk/region-info/jest.config.js b/packages/@aws-cdk/region-info/jest.config.js index 3a2fd93a1228a..036d2133dfe23 100644 --- a/packages/@aws-cdk/region-info/jest.config.js +++ b/packages/@aws-cdk/region-info/jest.config.js @@ -1,2 +1,12 @@ const baseConfig = require('@aws-cdk/cdk-build-tools/config/jest.config'); -module.exports = baseConfig; +module.exports = { + ...baseConfig, + moduleFileExtensions: [ + 'js', + 'ts', + ], + preset: 'ts-jest', + testMatch: [ + '/**/test/**/?(*.)+(test).ts', + ], +}; diff --git a/packages/@aws-cdk/region-info/package.json b/packages/@aws-cdk/region-info/package.json index febbd32615f2e..8f976481aba98 100644 --- a/packages/@aws-cdk/region-info/package.json +++ b/packages/@aws-cdk/region-info/package.json @@ -22,6 +22,9 @@ } }, "jsii": { + "excludeTypescript": [ + "**/test/**/*.ts" + ], "outdir": "dist", "targets": { "java": { diff --git a/packages/aws-cdk-lib/assertions/test/__snapshots__/render.test.js.snap b/packages/aws-cdk-lib/assertions/test/__snapshots__/render.test.ts.snap similarity index 100% rename from packages/aws-cdk-lib/assertions/test/__snapshots__/render.test.js.snap rename to packages/aws-cdk-lib/assertions/test/__snapshots__/render.test.ts.snap diff --git a/packages/aws-cdk-lib/aws-iam/test/custom-resource/.gitignore b/packages/aws-cdk-lib/aws-iam/test/custom-resource/.gitignore new file mode 100644 index 0000000000000..033e6722bb6e0 --- /dev/null +++ b/packages/aws-cdk-lib/aws-iam/test/custom-resource/.gitignore @@ -0,0 +1 @@ +!index.js diff --git a/packages/aws-cdk-lib/aws-iam/test/custom-resource/index.ts b/packages/aws-cdk-lib/aws-iam/test/custom-resource/index.js similarity index 100% rename from packages/aws-cdk-lib/aws-iam/test/custom-resource/index.ts rename to packages/aws-cdk-lib/aws-iam/test/custom-resource/index.js diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/test/__snapshots__/bundling.test.js.snap b/packages/aws-cdk-lib/aws-lambda-nodejs/test/__snapshots__/bundling.test.ts.snap similarity index 100% rename from packages/aws-cdk-lib/aws-lambda-nodejs/test/__snapshots__/bundling.test.js.snap rename to packages/aws-cdk-lib/aws-lambda-nodejs/test/__snapshots__/bundling.test.ts.snap diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.ts b/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.ts index 718bc1167aa9b..d865c8be34a0a 100644 --- a/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.ts +++ b/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.ts @@ -171,7 +171,7 @@ test('esbuild bundling with externals and dependencies', () => { command: [ 'bash', '-c', [ - 'esbuild --bundle "/asset-input/test/bundling.test.js" --target=node14 --platform=node --outfile="/asset-output/index.js" --external:abc --external:delay', + 'esbuild --bundle "/asset-input/test/bundling.test.ts" --target=node14 --platform=node --outfile="/asset-output/index.js" --external:abc --external:delay', `echo \'{\"dependencies\":{\"delay\":\"${delayVersion}\"}}\' > "/asset-output/package.json"`, 'cp "/asset-input/package-lock.json" "/asset-output/package-lock.json"', 'cd "/asset-output"', @@ -619,7 +619,7 @@ test('esbuild bundling with projectRoot and externals and dependencies', () => { command: [ 'bash', '-c', [ - 'esbuild --bundle "/asset-input/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.js" --target=node14 --platform=node --outfile="/asset-output/index.js" --external:abc --external:delay', + 'esbuild --bundle "/asset-input/packages/aws-cdk-lib/aws-lambda-nodejs/test/bundling.test.ts" --target=node14 --platform=node --outfile="/asset-output/index.js" --external:abc --external:delay', `echo \'{\"dependencies\":{\"delay\":\"${delayVersion}\"}}\' > "/asset-output/package.json"`, 'cp "/asset-input/common/package-lock.json" "/asset-output/package-lock.json"', 'cd "/asset-output"', diff --git a/packages/aws-cdk-lib/aws-lambda-nodejs/test/util.test.ts b/packages/aws-cdk-lib/aws-lambda-nodejs/test/util.test.ts index 90e3c067c02a0..71c0171897d57 100644 --- a/packages/aws-cdk-lib/aws-lambda-nodejs/test/util.test.ts +++ b/packages/aws-cdk-lib/aws-lambda-nodejs/test/util.test.ts @@ -9,7 +9,7 @@ beforeEach(() => { }); describe('callsites', () => { - expect(callsites()[0].getFileName()).toMatch(/\/test\/util.test.js$/); + expect(callsites()[0].getFileName()).toMatch(/\/test\/util.test.ts$/); }); describe('findUp helpers', () => { diff --git a/packages/aws-cdk-lib/aws-lambda/test/code.test.ts b/packages/aws-cdk-lib/aws-lambda/test/code.test.ts index 2808ac4fcefea..4c6da0a8b6e86 100644 --- a/packages/aws-cdk-lib/aws-lambda/test/code.test.ts +++ b/packages/aws-cdk-lib/aws-lambda/test/code.test.ts @@ -349,7 +349,7 @@ describe('code', () => { // then Template.fromStack(stack).hasResource('AWS::Lambda::Function', { Metadata: { - [cxapi.ASSET_RESOURCE_METADATA_PATH_KEY]: 'asset.30b57ded32316be9aa6553a1d81689f1e0cb475a94306c557e05048f9f56bd79', + [cxapi.ASSET_RESOURCE_METADATA_PATH_KEY]: 'asset.a8922a1fd787021d071844bc2b1fe3622372bbdfda823528c00983a806ba0e26', [cxapi.ASSET_RESOURCE_METADATA_DOCKERFILE_PATH_KEY]: dockerfilePath, [cxapi.ASSET_RESOURCE_METADATA_DOCKER_BUILD_ARGS_KEY]: dockerBuildArgs, [cxapi.ASSET_RESOURCE_METADATA_DOCKER_BUILD_TARGET_KEY]: dockerBuildTarget, @@ -373,7 +373,7 @@ describe('code', () => { // then Template.fromStack(stack).hasResource('AWS::Lambda::Function', { Metadata: { - [cxapi.ASSET_RESOURCE_METADATA_PATH_KEY]: 'asset.768d7b6c1d41b85135f498fe0cca69fea410be3c3322c69cf08690aaad29a610', + [cxapi.ASSET_RESOURCE_METADATA_PATH_KEY]: 'asset.9aa0b55c7d044a059d82665d34dd01705b055e9f691643e9606783faa9c92c54', [cxapi.ASSET_RESOURCE_METADATA_DOCKERFILE_PATH_KEY]: 'Dockerfile', [cxapi.ASSET_RESOURCE_METADATA_PROPERTY_KEY]: 'Code.ImageUri', }, @@ -437,7 +437,7 @@ describe('code', () => { // then Template.fromStack(stack).hasResource('AWS::Lambda::Function', { Metadata: { - [cxapi.ASSET_RESOURCE_METADATA_PATH_KEY]: 'asset.fbafdbb9ae8d1bae0def415b791a93c486d18ebc63270c748abecc3ac0ab9533', + [cxapi.ASSET_RESOURCE_METADATA_PATH_KEY]: 'asset.7bbf7edf9881819a1b91e5b02acae3e3973f96fa93325c676a1285351ddacc62', [cxapi.ASSET_RESOURCE_METADATA_IS_BUNDLED_KEY]: false, [cxapi.ASSET_RESOURCE_METADATA_PROPERTY_KEY]: 'Code', }, diff --git a/packages/aws-cdk-lib/aws-lambda/test/layers.test.ts b/packages/aws-cdk-lib/aws-lambda/test/layers.test.ts index 4f04e61d0f23f..9c8ac9c694978 100644 --- a/packages/aws-cdk-lib/aws-lambda/test/layers.test.ts +++ b/packages/aws-cdk-lib/aws-lambda/test/layers.test.ts @@ -85,7 +85,7 @@ describe('layers', () => { // THEN Template.fromStack(stack).hasResource('AWS::Lambda::LayerVersion', { Metadata: { - 'aws:asset:path': 'asset.8811a2632ac5564a08fd269e159298f7e497f259578b0dc5e927a1f48ab24d34', + 'aws:asset:path': 'asset.77023498ccd2a36a67da602f712470107a3e7476646238ed135367d435d0fa43', 'aws:asset:is-bundled': false, 'aws:asset:property': 'Content', }, diff --git a/packages/aws-cdk-lib/cloud-assembly-schema/test/__snapshots__/manifest.test.js.snap b/packages/aws-cdk-lib/cloud-assembly-schema/test/__snapshots__/manifest.test.ts.snap similarity index 100% rename from packages/aws-cdk-lib/cloud-assembly-schema/test/__snapshots__/manifest.test.js.snap rename to packages/aws-cdk-lib/cloud-assembly-schema/test/__snapshots__/manifest.test.ts.snap diff --git a/packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/.gitignore b/packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/.gitignore new file mode 100644 index 0000000000000..033e6722bb6e0 --- /dev/null +++ b/packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/.gitignore @@ -0,0 +1 @@ +!index.js diff --git a/packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/index.js b/packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/index.js new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/index.ts b/packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/index.ts deleted file mode 100644 index 7ed7ebf8df0b3..0000000000000 --- a/packages/aws-cdk-lib/core/test/custom-resource-provider/mock-provider/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable no-console */ - -export function handler(event: any) { - console.log('I am a custom resource'); - console.log({ ...event, ResponseURL: undefined }); - return { - PhysicalResourceId: event.ResourceProperties.physicalResourceId, - Data: event.ResourceProperties.attributes, - }; -} diff --git a/packages/aws-cdk-lib/core/test/stack-synthesis/clicreds-synthesis.test.ts b/packages/aws-cdk-lib/core/test/stack-synthesis/clicreds-synthesis.test.ts index 07f9b8bb10db8..b47e65ba74f62 100644 --- a/packages/aws-cdk-lib/core/test/stack-synthesis/clicreds-synthesis.test.ts +++ b/packages/aws-cdk-lib/core/test/stack-synthesis/clicreds-synthesis.test.ts @@ -64,7 +64,7 @@ describe('CLI creds synthesis', () => { // THEN - we have a fixed asset location with region placeholders expect(evalCFN(location.bucketName)).toEqual('cdk-hnb659fds-assets-the_account-the_region'); - expect(evalCFN(location.s3Url)).toEqual('https://s3.the_region.domain.aws/cdk-hnb659fds-assets-the_account-the_region/abcdef.js'); + expect(evalCFN(location.s3Url)).toEqual('https://s3.the_region.domain.aws/cdk-hnb659fds-assets-the_account-the_region/abcdef.ts'); // THEN - object key contains source hash somewhere expect(location.objectKey.indexOf('abcdef')).toBeGreaterThan(-1); @@ -135,7 +135,7 @@ describe('CLI creds synthesis', () => { expect(manifest.files?.['file-asset-hash']?.destinations?.['current_account-current_region']).toEqual({ bucketName: 'file-asset-bucket', - objectKey: 'file-asset-hash.js', + objectKey: 'file-asset-hash.ts', }); expect(manifest.dockerImages?.['docker-asset-hash']?.destinations?.['current_account-current_region']).toEqual({ @@ -174,7 +174,7 @@ describe('CLI creds synthesis', () => { // THEN expect(manifest.files?.['file-asset-hash-with-prefix']?.destinations?.['current_account-current_region']).toEqual({ bucketName: 'file-asset-bucket', - objectKey: '000000000000/file-asset-hash-with-prefix.js', + objectKey: '000000000000/file-asset-hash-with-prefix.ts', }); const templateHash = last(stackArtifact.stackTemplateAssetObjectUrl?.split('/')); diff --git a/packages/aws-cdk-lib/core/test/stack-synthesis/new-style-synthesis.test.ts b/packages/aws-cdk-lib/core/test/stack-synthesis/new-style-synthesis.test.ts index 0a61f07537a09..6c8fee21b79fd 100644 --- a/packages/aws-cdk-lib/core/test/stack-synthesis/new-style-synthesis.test.ts +++ b/packages/aws-cdk-lib/core/test/stack-synthesis/new-style-synthesis.test.ts @@ -216,7 +216,7 @@ describe('new style synthesis', () => { // THEN - we have a fixed asset location with region placeholders expect(evalCFN(location.bucketName)).toEqual('cdk-hnb659fds-assets-the_account-the_region'); - expect(evalCFN(location.s3Url)).toEqual('https://s3.the_region.domain.aws/cdk-hnb659fds-assets-the_account-the_region/abcdef.js'); + expect(evalCFN(location.s3Url)).toEqual('https://s3.the_region.domain.aws/cdk-hnb659fds-assets-the_account-the_region/abcdef.ts'); // THEN - object key contains source hash somewhere expect(location.objectKey.indexOf('abcdef')).toBeGreaterThan(-1); @@ -331,7 +331,7 @@ describe('new style synthesis', () => { expect(manifest.files?.['file-asset-hash']?.destinations?.['current_account-current_region']).toEqual({ bucketName: 'file-asset-bucket', - objectKey: 'file-asset-hash.js', + objectKey: 'file-asset-hash.ts', assumeRoleArn: 'file:role:arn', assumeRoleExternalId: 'file-external-id', }); @@ -396,7 +396,7 @@ describe('new style synthesis', () => { // THEN expect(manifest.files?.['file-asset-hash-with-prefix']?.destinations?.['current_account-current_region']).toEqual({ bucketName: 'file-asset-bucket', - objectKey: '000000000000/file-asset-hash-with-prefix.js', + objectKey: '000000000000/file-asset-hash-with-prefix.ts', assumeRoleArn: 'file:role:arn', assumeRoleExternalId: 'file-external-id', }); diff --git a/packages/aws-cdk-lib/cx-api/test/__snapshots__/cloud-assembly.test.js.snap b/packages/aws-cdk-lib/cx-api/test/__snapshots__/cloud-assembly.test.ts.snap similarity index 100% rename from packages/aws-cdk-lib/cx-api/test/__snapshots__/cloud-assembly.test.js.snap rename to packages/aws-cdk-lib/cx-api/test/__snapshots__/cloud-assembly.test.ts.snap diff --git a/packages/aws-cdk-lib/jest.config.js b/packages/aws-cdk-lib/jest.config.js index 3e40b01eb4e1d..cea26228ba11f 100644 --- a/packages/aws-cdk-lib/jest.config.js +++ b/packages/aws-cdk-lib/jest.config.js @@ -1,12 +1,22 @@ const baseConfig = require('@aws-cdk/cdk-build-tools/config/jest.config'); +const cpuCount = require('os').cpus().length; + +/** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { ...baseConfig, + moduleFileExtensions: [ + 'js', + 'ts', + ], + // Limit workers to a reasonable fixed number. If we scale in the number of available CPUs, we will explode + // our memory limit on the CodeBuild instance that has 72 CPUs. + maxWorkers: Math.min(8, cpuCount - 1), + preset: 'ts-jest', testMatch: [ - "/**/test/**/?(*.)+(test).js", + '/**/test/**/?(*.)+(test).ts', ], - testEnvironment: 'node', - coverageThreshold: { + coverageThreshold: { global: { branches: 35, statements: 55, diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index eb5ac86bdb618..dbbac2914c953 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -15,7 +15,7 @@ "gen": "ts-node -P tsconfig.dev.json scripts/gen.ts", "build": "cdk-build", "lint": "cdk-lint", - "test": "jest --maxWorkers=50%", + "test": "jest", "package": "cdk-package", "pkglint": "pkglint -f", "build+test": "yarn build && yarn test", @@ -70,6 +70,7 @@ "jsii": { "excludeTypescript": [ "scripts", + "**/test/**/*.ts", "**/*.d.ts" ], "outdir": "dist", diff --git a/packages/aws-cdk-lib/region-info/test/__snapshots__/region-info.test.js.snap b/packages/aws-cdk-lib/region-info/test/__snapshots__/region-info.test.ts.snap similarity index 100% rename from packages/aws-cdk-lib/region-info/test/__snapshots__/region-info.test.js.snap rename to packages/aws-cdk-lib/region-info/test/__snapshots__/region-info.test.ts.snap From 89393a20f7e4c490de5fbb0be9f2db2c75f0a516 Mon Sep 17 00:00:00 2001 From: Vasi Vasireddy <41936996+vasireddy99@users.noreply.github.com> Date: Thu, 17 Aug 2023 16:33:36 -0700 Subject: [PATCH 18/56] feat(aws-cdk-lib): ADOT Lambda Layer v0.32.0 (#26793) Add Latest ADOT Lambda Layer ARNs Reference Links : * [Release Blog and Update Layer ARNs for Lambda Layer August Release](https://github.com/aws-otel/aws-otel.github.io/pull/611) * [Update ReadMe with latest Layern ARN versions](https://github.com/aws-observability/aws-otel-lambda/pull/679) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../region-info/build-tools/fact-tables.ts | 210 ++++++++++++++++++ 1 file changed, 210 insertions(+) diff --git a/packages/aws-cdk-lib/region-info/build-tools/fact-tables.ts b/packages/aws-cdk-lib/region-info/build-tools/fact-tables.ts index b545ef311f92c..df50bf86d7202 100644 --- a/packages/aws-cdk-lib/region-info/build-tools/fact-tables.ts +++ b/packages/aws-cdk-lib/region-info/build-tools/fact-tables.ts @@ -762,6 +762,48 @@ export const PARAMS_AND_SECRETS_LAMBDA_LAYER_ARNS: { [version: string]: { [arch: }; const ADOT_LAMBDA_LAYER_JAVA_SDK_ARNS: { [version: string]: { [arch: string]: { [region: string]: string } } } = { + '1.28.1': { + x86_64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-1:1', + }, + arm64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-java-wrapper-arm64-ver-1-28-1:1', + }, + }, '1.28.0': { x86_64: { 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-java-wrapper-amd64-ver-1-28-0:1', @@ -1049,6 +1091,48 @@ const ADOT_LAMBDA_LAYER_JAVA_SDK_ARNS: { [version: string]: { [arch: string]: { const ADOT_LAMBDA_LAYER_JAVA_AUTO_INSTRUMENTATION_ARNS: { [version: string]: { [arch: string]: { [region: string]: string } }; } = { + '1.28.1': { + x86_64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-1:1', + }, + arm64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-java-agent-arm64-ver-1-28-1:1', + }, + }, '1.28.0': { x86_64: { 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-java-agent-amd64-ver-1-28-0:1', @@ -1334,6 +1418,48 @@ const ADOT_LAMBDA_LAYER_JAVA_AUTO_INSTRUMENTATION_ARNS: { }; const ADOT_LAMBDA_LAYER_JAVASCRIPT_SDK_ARNS: { [version: string]: { [arch: string]: { [region: string]: string } } } = { + '1.15.0-1': { + x86_64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:2', + }, + arm64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-nodejs-arm64-ver-1-15-0:2', + }, + }, '1.15.0': { x86_64: { 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-15-0:1', @@ -1581,6 +1707,48 @@ const ADOT_LAMBDA_LAYER_JAVASCRIPT_SDK_ARNS: { [version: string]: { [arch: strin }; const ADOT_LAMBDA_LAYER_PYTHON_SDK_ARNS: { [version: string]: { [arch: string]: { [region: string]: string } } } = { + '1.19.0-1': { + x86_64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:2', + }, + arm64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-python-arm64-ver-1-19-0:2', + }, + }, '1.19.0': { x86_64: { 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-python-amd64-ver-1-19-0:1', @@ -1828,6 +1996,48 @@ const ADOT_LAMBDA_LAYER_PYTHON_SDK_ARNS: { [version: string]: { [arch: string]: }; const ADOT_LAMBDA_LAYER_GENERIC_ARNS: { [version: string]: { [arch: string]: { [region: string]: string } } } = { + '0.82.0': { + x86_64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-collector-amd64-ver-0-82-0:1', + }, + arm64: { + 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'ap-northeast-2': 'arn:aws:lambda:ap-northeast-2:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'ap-south-1': 'arn:aws:lambda:ap-south-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'ap-south-2': 'arn:aws:lambda:ap-south-2:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'ap-southeast-1': 'arn:aws:lambda:ap-southeast-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'ap-southeast-2': 'arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'ca-central-1': 'arn:aws:lambda:ca-central-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'eu-central-1': 'arn:aws:lambda:eu-central-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'eu-north-1': 'arn:aws:lambda:eu-north-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'eu-south-2': 'arn:aws:lambda:eu-south-2:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'eu-west-1': 'arn:aws:lambda:eu-west-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'eu-west-2': 'arn:aws:lambda:eu-west-2:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'eu-west-3': 'arn:aws:lambda:eu-west-3:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'sa-east-1': 'arn:aws:lambda:sa-east-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'us-east-1': 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'us-east-2': 'arn:aws:lambda:us-east-2:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'us-west-1': 'arn:aws:lambda:us-west-1:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + 'us-west-2': 'arn:aws:lambda:us-west-2:901920570463:layer:aws-otel-collector-arm64-ver-0-82-0:1', + }, + }, '0.80.0': { x86_64: { 'ap-northeast-1': 'arn:aws:lambda:ap-northeast-1:901920570463:layer:aws-otel-collector-amd64-ver-0-80-0:1', From 58e87fb6b96a50016d01d9859fdbd939eac62c2d Mon Sep 17 00:00:00 2001 From: Jane Chen <125300057+chenjane-dev@users.noreply.github.com> Date: Fri, 18 Aug 2023 04:30:18 -0400 Subject: [PATCH 19/56] refactor(appconfig): refactoring deployTo and contentType properties (#26768) Refactoring deployTo property to only create a deployment if specified. Refactoring contentType to be passed in by ConfigurationContent. **Includes breaking change. Deployments will not be created anymore if deployTo is not specified and contentType cannot be passed in as a HostedConfiguration prop, only can be passed directly to ConfigurationContent ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- package.json | 2 + packages/@aws-cdk/aws-appconfig-alpha/NOTICE | 32 ++++ .../@aws-cdk/aws-appconfig-alpha/README.md | 14 +- .../aws-appconfig-alpha/lib/configuration.ts | 67 ++++--- .../@aws-cdk/aws-appconfig-alpha/package.json | 15 +- .../test/configuration.test.ts | 178 ++++++++++-------- .../test/extension.test.ts | 2 +- .../aws-appconfig-configuration.assets.json | 4 +- .../aws-appconfig-configuration.template.json | 4 +- .../manifest.json | 2 +- .../integ.configuration.js.snapshot/tree.json | 62 +++--- .../test/integ.configuration.ts | 4 +- .../test/integ.extension.ts | 2 +- yarn.lock | 9 +- 14 files changed, 239 insertions(+), 158 deletions(-) diff --git a/package.json b/package.json index 4756155a19828..ca669ebbb6326 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,8 @@ "@aws-cdk/assertions-alpha/fs-extra/**", "@aws-cdk/assertions/fs-extra", "@aws-cdk/assertions/fs-extra/**", + "@aws-cdk/aws-appconfig-alpha/mime-types", + "@aws-cdk/aws-appconfig-alpha/mime-types/**", "@aws-cdk/aws-codebuild/yaml", "@aws-cdk/aws-codebuild/yaml/**", "@aws-cdk/aws-codepipeline-actions/case", diff --git a/packages/@aws-cdk/aws-appconfig-alpha/NOTICE b/packages/@aws-cdk/aws-appconfig-alpha/NOTICE index a27b7dd317649..b1adfdf58a098 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/NOTICE +++ b/packages/@aws-cdk/aws-appconfig-alpha/NOTICE @@ -1,2 +1,34 @@ AWS Cloud Development Kit (AWS CDK) Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +------------------------------------------------------------------------------- + +The AWS CDK includes the following third-party software/licensing: + +** mime-db - https://www.npmjs.com/package/mime-db +** mime-types - https://www.npmjs.com/package/mime-types +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +---------------- diff --git a/packages/@aws-cdk/aws-appconfig-alpha/README.md b/packages/@aws-cdk/aws-appconfig-alpha/README.md index c20878cbbad24..2f29be7bba89e 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/README.md +++ b/packages/@aws-cdk/aws-appconfig-alpha/README.md @@ -79,7 +79,7 @@ declare const application: appconfig.Application; new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', { application, - content: appconfig.ConfigurationContent.fromInline('This is my configuration content.'), + content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'), }); ``` @@ -95,7 +95,7 @@ declare const application: appconfig.Application; new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', { application, - content: appconfig.ConfigurationContent.fromInline('This is my configuration content.'), + content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'), type: appconfig.ConfigurationType.FEATURE_FLAGS, }); ``` @@ -111,7 +111,7 @@ declare const fn: lambda.Function; new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', { application, - content: appconfig.ConfigurationContent.fromInline('This is my configuration content.'), + content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'), validators: [ appconfig.JsonSchemaValidator.fromFile('schema.json'), appconfig.LambdaValidator.fromFunction(fn), @@ -128,7 +128,7 @@ declare const application: appconfig.Application; new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', { application, - content: appconfig.ConfigurationContent.fromInline('This is my configuration content.'), + content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'), deploymentStrategy: new appconfig.DeploymentStrategy(this, 'MyDeploymentStrategy', { rolloutStrategy: appconfig.RolloutStrategy.linear({ growthFactor: 15, @@ -139,7 +139,7 @@ new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', { }); ``` -The `deployTo` parameter is used to specify which environments to deploy the configuration to. If this parameter is not specified, there will only be a deployment if there is one environment associated to the AWS AppConfig application. +The `deployTo` parameter is used to specify which environments to deploy the configuration to. If this parameter is not specified, there will not be a deployment. A hosted configuration with `deployTo`: @@ -149,7 +149,7 @@ declare const env: appconfig.Environment; new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', { application, - content: appconfig.ConfigurationContent.fromInline('This is my configuration content.'), + content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'), deployTo: [env], }); ``` @@ -301,7 +301,7 @@ new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', { }); ``` -The `deployTo` parameter is used to specify which environments to deploy the configuration to. If this parameter is not specified, there will only be a deployment if there is one environment associated to the AWS AppConfig application. +The `deployTo` parameter is used to specify which environments to deploy the configuration to. If this parameter is not specified, there will not be a deployment. A sourced configuration with `deployTo`: diff --git a/packages/@aws-cdk/aws-appconfig-alpha/lib/configuration.ts b/packages/@aws-cdk/aws-appconfig-alpha/lib/configuration.ts index 0681f73487e08..51f36b406dd9c 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/lib/configuration.ts +++ b/packages/@aws-cdk/aws-appconfig-alpha/lib/configuration.ts @@ -1,4 +1,5 @@ import * as fs from 'fs'; +import * as mimeTypes from 'mime-types'; import { PhysicalName, Stack, ArnFormat, Names, RemovalPolicy } from 'aws-cdk-lib'; import { CfnConfigurationProfile, CfnDeployment, CfnHostedConfigurationVersion } from 'aws-cdk-lib/aws-appconfig'; import * as cp from 'aws-cdk-lib/aws-codepipeline'; @@ -55,9 +56,8 @@ export interface ConfigurationOptions { /** * The list of environments to deploy the configuration to. * - * If this parameter is not specified and there is only one environment - * associated to the application, then we will deploy to that one. Otherwise, - * there will be no deployment. + * If this parameter is not specified, then there will be no + * deployment. * * @default - None. */ @@ -305,13 +305,7 @@ abstract class ConfigurationBase extends Construct implements IConfiguration, IE } protected deployConfigToEnvironments() { - if (this.application.environments.length == 0) { - this.application.addEnvironment('Environment', { - description: this.description, - }); - } - - if ((!this.deployTo && this.application.environments.length > 1) || !this.versionNumber) { + if (!this.deployTo || !this.versionNumber) { return; } @@ -320,9 +314,6 @@ abstract class ConfigurationBase extends Construct implements IConfiguration, IE return; } const logicalId = `Deployment${this.getDeploymentHash(environment)}`; - if (this.node.tryFindChild(logicalId)) { - return; - } new CfnDeployment(this, logicalId, { applicationId: this.application.applicationId, configurationProfileId: this.configurationProfileId, @@ -342,11 +333,6 @@ export interface HostedConfigurationOptions extends ConfigurationOptions { */ readonly content: ConfigurationContent; - /** - * The content type of the hosted configuration. - */ - readonly contentType?: string; - /** * The latest version number of the hosted configuration. */ @@ -364,11 +350,6 @@ export interface HostedConfigurationProps extends ConfigurationProps { */ readonly content: ConfigurationContent; - /** - * The content type of the hosted configuration. - */ - readonly contentType?: string; - /** * The latest version number of the hosted configuration. */ @@ -444,7 +425,7 @@ export class HostedConfiguration extends ConfigurationBase { this.extensible = new ExtensibleBase(scope, this.configurationProfileArn, this.name); this.content = props.content.content; - this.contentType = props.contentType || 'application/json'; + this.contentType = props.content.contentType; this.latestVersionNumber = props.latestVersionNumber; this.versionLabel = props.versionLabel; this._cfnHostedConfigurationVersion = new CfnHostedConfigurationVersion(this, 'Resource', { @@ -792,10 +773,12 @@ export abstract class ConfigurationContent { * Defines the hosted configuration content from a file. * * @param path The path to the file that defines configuration content + * @param contentType The content type of the configuration */ - public static fromFile(path: string): ConfigurationContent { + public static fromFile(path: string, contentType?: string): ConfigurationContent { return { content: fs.readFileSync(path).toString(), + contentType: contentType || mimeTypes.lookup(path) || 'application/json', }; } @@ -803,10 +786,37 @@ export abstract class ConfigurationContent { * Defines the hosted configuration content from inline code. * * @param content The inline code that defines the configuration content + * @param contentType The content type of the configuration */ - public static fromInline(content: string): ConfigurationContent { + public static fromInline(content: string, contentType?: string): ConfigurationContent { return { content, + contentType: contentType || 'application/octet-stream', + }; + } + + /** + * Defines the hosted configuration content as JSON from inline code. + * + * @param content The inline code that defines the configuration content + * @param contentType The content type of the configuration + */ + public static fromInlineJson(content: string, contentType?: string): ConfigurationContent { + return { + content, + contentType: contentType || 'application/json', + }; + } + + /** + * Defines the hosted configuration content as text from inline code. + * + * @param content The inline code that defines the configuration content + */ + public static fromInlineText(content: string): ConfigurationContent { + return { + content, + contentType: 'text/plain', }; } @@ -814,6 +824,11 @@ export abstract class ConfigurationContent { * The configuration content. */ public abstract readonly content: string; + + /** + * The configuration content type. + */ + public abstract readonly contentType: string; } /** diff --git a/packages/@aws-cdk/aws-appconfig-alpha/package.json b/packages/@aws-cdk/aws-appconfig-alpha/package.json index 0c6b1342a7064..1b3a2512a7897 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/package.json +++ b/packages/@aws-cdk/aws-appconfig-alpha/package.json @@ -76,18 +76,20 @@ }, "license": "Apache-2.0", "devDependencies": { - "aws-cdk-lib": "0.0.0", "@aws-cdk/cdk-build-tools": "0.0.0", "@aws-cdk/integ-runner": "0.0.0", - "@aws-cdk/pkglint": "0.0.0", "@aws-cdk/integ-tests-alpha": "0.0.0", + "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^29.5.3", + "@types/mime-types": "^2.1.1", + "aws-cdk-lib": "0.0.0", "constructs": "^10.0.0", - "jest": "^29.6.2" + "jest": "^29.6.1" }, "dependencies": { "aws-cdk-lib": "0.0.0", - "constructs": "^10.0.0" + "constructs": "^10.0.0", + "mime-types": "^2.1.35" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -115,5 +117,8 @@ "env": { "AWSLINT_BASE_CONSTRUCT": true } - } + }, + "bundleDependencies": [ + "mime-types" + ] } diff --git a/packages/@aws-cdk/aws-appconfig-alpha/test/configuration.test.ts b/packages/@aws-cdk/aws-appconfig-alpha/test/configuration.test.ts index 6022720431473..5e4479b61979b 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/test/configuration.test.ts +++ b/packages/@aws-cdk/aws-appconfig-alpha/test/configuration.test.ts @@ -25,7 +25,7 @@ describe('configuration', () => { const stack = new cdk.Stack(); const app = new Application(stack, 'MyAppConfig'); new HostedConfiguration(stack, 'MyHostedConfig', { - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), application: app, deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { rolloutStrategy: RolloutStrategy.linear({ @@ -35,12 +35,7 @@ describe('configuration', () => { }), }); - Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::Environment', { - Name: 'MyAppConfig-Environment-CF46384A', - ApplicationId: { - Ref: 'MyAppConfigB4B63E75', - }, - }); + Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Environment', 0); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { Name: 'MyHostedConfig', ApplicationId: { @@ -55,25 +50,9 @@ describe('configuration', () => { Ref: 'MyHostedConfigConfigurationProfile2E1A2BBC', }, Content: 'This is my content', - ContentType: 'application/json', - }); - Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::Deployment', { - ApplicationId: { - Ref: 'MyAppConfigB4B63E75', - }, - EnvironmentId: { - Ref: 'MyAppConfigEnvironment833A9182', - }, - ConfigurationVersion: { - Ref: 'MyHostedConfig51D3877D', - }, - ConfigurationProfileId: { - Ref: 'MyHostedConfigConfigurationProfile2E1A2BBC', - }, - DeploymentStrategyId: { - Ref: 'MyDeploymentStrategy60D31FB0', - }, + ContentType: 'text/plain', }); + Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 0); }); test('configuration with environments and no deployTo prop', () => { @@ -84,7 +63,7 @@ describe('configuration', () => { app.addEnvironment('MyEnv1'); app.addEnvironment('MyEnv2'); new HostedConfiguration(stack, 'MyHostedConfig', { - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), application: app, deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { rolloutStrategy: RolloutStrategy.linear({ @@ -108,7 +87,7 @@ describe('configuration', () => { Ref: 'MyHostedConfigConfigurationProfile2E1A2BBC', }, Content: 'This is my content', - ContentType: 'application/json', + ContentType: 'text/plain', }); Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Environment', 2); Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 0); @@ -122,7 +101,7 @@ describe('configuration', () => { app.addEnvironment('MyEnv1'); const env = app.addEnvironment('MyEnv2'); new HostedConfiguration(stack, 'MyHostedConfig', { - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), application: app, deployTo: [env], deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { @@ -147,7 +126,7 @@ describe('configuration', () => { Ref: 'MyHostedConfigConfigurationProfile2E1A2BBC', }, Content: 'This is my content', - ContentType: 'application/json', + ContentType: 'text/plain', }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::Deployment', { ApplicationId: { @@ -179,7 +158,7 @@ describe('configuration', () => { const env2 = app.addEnvironment('MyEnv2'); const bucket = new Bucket(stack, 'MyBucket'); new HostedConfiguration(stack, 'MyHostedConfig', { - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), application: app, deployTo: [env1], deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy1', { @@ -217,7 +196,7 @@ describe('configuration', () => { Ref: 'MyHostedConfigConfigurationProfile2E1A2BBC', }, Content: 'This is my content', - ContentType: 'application/json', + ContentType: 'text/plain', }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { Name: 'MySourcedConfig', @@ -292,7 +271,7 @@ describe('configuration', () => { }); const bucket = new Bucket(stack, 'MyBucket'); new HostedConfiguration(stack, 'MyHostedConfig', { - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), application: app, }); new SourcedConfiguration(stack, 'MySourcedConfig', { @@ -333,6 +312,7 @@ describe('configuration', () => { deploymentDuration: cdk.Duration.minutes(30), }), }), + deployTo: [app.addEnvironment('Environment')], }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::Deployment', { @@ -358,13 +338,14 @@ describe('configuration', () => { const app = new Application(stack, 'MyAppConfig'); new HostedConfiguration(stack, 'MyConfiguration', { application: app, - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { rolloutStrategy: RolloutStrategy.linear({ growthFactor: 15, deploymentDuration: cdk.Duration.minutes(30), }), }), + deployTo: [app.addEnvironment('Environment')], }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { @@ -382,41 +363,76 @@ describe('configuration', () => { Ref: 'MyConfigurationConfigurationProfileEE0ECA85', }, Content: 'This is my content', - ContentType: 'application/json', + ContentType: 'text/plain', }); Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 1); }); - // test('default configuration from asset', () => { - // const stack = new cdk.Stack(); - // const app = new AppConfig(stack, 'MyAppConfig', { - // deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { - // rolloutStrategy: RolloutStrategy.linear(15, cdk.Duration.minutes(30)), - // }), - // }); - // new HostedConfiguration(stack, 'MyConfiguration', { - // appConfig: app, - // content: ConfigurationContent.fromAsset('/Users/chenjane/Documents/appconfig-l2-constructs/test/config.json'), - // }); + test('default configuration from file', () => { + const stack = new cdk.Stack(); + const app = new Application(stack, 'MyAppConfig'); + new HostedConfiguration(stack, 'MyConfiguration', { + deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { + rolloutStrategy: RolloutStrategy.linear({ + growthFactor: 15, + deploymentDuration: cdk.Duration.minutes(30), + }), + }), + application: app, + content: ConfigurationContent.fromFile('./test/config.json'), + }); - // Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { - // Name: 'MyConfiguration', - // ApplicationId: { - // Ref: 'MyAppConfigB4B63E75', - // }, - // LocationUri: 'hosted', - // }); - // Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::HostedConfigurationVersion', { - // ApplicationId: { - // Ref: 'MyAppConfigB4B63E75', - // }, - // ConfigurationProfileId: { - // Ref: 'MyConfigurationConfigurationProfileEE0ECA85', - // }, - // Content: '{\n "content": "This is the configuration content"\n}', - // ContentType: 'application/json', - // }); - // }); + Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { + Name: 'MyConfiguration', + ApplicationId: { + Ref: 'MyAppConfigB4B63E75', + }, + LocationUri: 'hosted', + }); + Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::HostedConfigurationVersion', { + ApplicationId: { + Ref: 'MyAppConfigB4B63E75', + }, + ConfigurationProfileId: { + Ref: 'MyConfigurationConfigurationProfileEE0ECA85', + }, + Content: '{\n "content": "This is the configuration content"\n}', + ContentType: 'application/json', + }); + }); + + test('default configuration from inline octet', () => { + const stack = new cdk.Stack(); + const app = new Application(stack, 'MyAppConfig'); + new HostedConfiguration(stack, 'MyConfiguration', { + deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { + rolloutStrategy: RolloutStrategy.linear({ + growthFactor: 15, + deploymentDuration: cdk.Duration.minutes(30), + }), + }), + application: app, + content: ConfigurationContent.fromInline('This should be of content type application/octet'), + }); + + Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { + Name: 'MyConfiguration', + ApplicationId: { + Ref: 'MyAppConfigB4B63E75', + }, + LocationUri: 'hosted', + }); + Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::HostedConfigurationVersion', { + ApplicationId: { + Ref: 'MyAppConfigB4B63E75', + }, + ConfigurationProfileId: { + Ref: 'MyConfigurationConfigurationProfileEE0ECA85', + }, + Content: 'This should be of content type application/octet', + ContentType: 'application/octet-stream', + }); + }); test('configuration profile with name', () => { const stack = new cdk.Stack(); @@ -424,7 +440,7 @@ describe('configuration', () => { new HostedConfiguration(stack, 'MyConfigurationProfile', { name: 'TestConfigProfile', application: app, - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { rolloutStrategy: RolloutStrategy.linear({ growthFactor: 15, @@ -448,9 +464,9 @@ describe('configuration', () => { Ref: 'MyConfigurationProfile33A97163', }, Content: 'This is my content', - ContentType: 'application/json', + ContentType: 'text/plain', }); - Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 1); + Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 0); }); test('configuration profile with type', () => { @@ -460,7 +476,7 @@ describe('configuration', () => { name: 'TestConfigProfile', application: app, type: ConfigurationType.FEATURE_FLAGS, - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { rolloutStrategy: RolloutStrategy.linear({ growthFactor: 15, @@ -485,9 +501,9 @@ describe('configuration', () => { Ref: 'MyConfigurationProfile33A97163', }, Content: 'This is my content', - ContentType: 'application/json', + ContentType: 'text/plain', }); - Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 1); + Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 0); }); test('configuration profile with description', () => { @@ -496,7 +512,7 @@ describe('configuration', () => { new HostedConfiguration(stack, 'MyConfigurationProfile', { name: 'TestConfigProfile', application: app, - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), description: 'This is my description', deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { rolloutStrategy: RolloutStrategy.linear({ @@ -522,10 +538,10 @@ describe('configuration', () => { Ref: 'MyConfigurationProfile33A97163', }, Content: 'This is my content', - ContentType: 'application/json', + ContentType: 'text/plain', Description: 'This is my description', }); - Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 1); + Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 0); }); test('configuration profile with validator', () => { @@ -534,7 +550,7 @@ describe('configuration', () => { new HostedConfiguration(stack, 'MyConfigurationProfile', { name: 'TestConfigProfile', application: app, - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), validators: [ { content: 'dummy validator', @@ -570,9 +586,9 @@ describe('configuration', () => { Ref: 'MyConfigurationProfile33A97163', }, Content: 'This is my content', - ContentType: 'application/json', + ContentType: 'text/plain', }); - Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 1); + Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 0); }); test('configuration profile with inline json schema validator', () => { @@ -715,7 +731,7 @@ describe('configuration', () => { validators: [ JsonSchemaValidator.fromInline(validatorContent), ], - content: ConfigurationContent.fromInline('This is my content'), + content: ConfigurationContent.fromInlineText('This is my content'), deploymentStrategy: new DeploymentStrategy(stack, 'MyDeploymentStrategy', { rolloutStrategy: RolloutStrategy.linear({ growthFactor: 15, @@ -745,9 +761,9 @@ describe('configuration', () => { Ref: 'MyConfigurationConfigurationProfileEE0ECA85', }, Content: 'This is my content', - ContentType: 'application/json', + ContentType: 'text/plain', }); - Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 1); + Template.fromStack(stack).resourceCountIs('AWS::AppConfig::Deployment', 0); }); test('configuration profile with ssm parameter', () => { @@ -768,6 +784,7 @@ describe('configuration', () => { deploymentDuration: cdk.Duration.minutes(30), }), }), + deployTo: [app.addEnvironment('Environment')], }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { @@ -848,6 +865,7 @@ describe('configuration', () => { deploymentDuration: cdk.Duration.minutes(30), }), }), + deployTo: [app.addEnvironment('Environment')], }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { @@ -915,6 +933,7 @@ describe('configuration', () => { deploymentDuration: cdk.Duration.minutes(30), }), }), + deployTo: [app.addEnvironment('Environment')], }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { @@ -1030,6 +1049,7 @@ describe('configuration', () => { deploymentDuration: cdk.Duration.minutes(30), }), }), + deployTo: [app.addEnvironment('Environment')], }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { @@ -1074,6 +1094,7 @@ describe('configuration', () => { deploymentDuration: cdk.Duration.minutes(30), }), }), + deployTo: [app.addEnvironment('Environment')], }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { @@ -1125,6 +1146,7 @@ describe('configuration', () => { deploymentDuration: cdk.Duration.minutes(30), }), }), + deployTo: [app.addEnvironment('Environment')], }); Template.fromStack(stack).hasResourceProperties('AWS::AppConfig::ConfigurationProfile', { diff --git a/packages/@aws-cdk/aws-appconfig-alpha/test/extension.test.ts b/packages/@aws-cdk/aws-appconfig-alpha/test/extension.test.ts index c4faed3acb4c3..7be5ace16bc12 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/test/extension.test.ts +++ b/packages/@aws-cdk/aws-appconfig-alpha/test/extension.test.ts @@ -497,7 +497,7 @@ describe('extension', () => { const app = new Application(stack, 'MyApplication'); const configProfile = new HostedConfiguration(stack, 'MyConfiguration', { application: app, - content: ConfigurationContent.fromInline('This is my content.'), + content: ConfigurationContent.fromInlineJson('This is my content.'), }); const ext = new Extension(stack, 'MyExtension', { actions: [ diff --git a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/aws-appconfig-configuration.assets.json b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/aws-appconfig-configuration.assets.json index e245698a2ce83..3f2c4e58bfe66 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/aws-appconfig-configuration.assets.json +++ b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/aws-appconfig-configuration.assets.json @@ -53,7 +53,7 @@ } } }, - "62a9b3aeb4a84560d1814dd4ac31c12a8f5047e3cde5873f6f4c351d7668af04": { + "76b9cabe996a7bad89a83038f1c4375968b6a16e8f5f1e2ce353b667d8576cbe": { "source": { "path": "aws-appconfig-configuration.template.json", "packaging": "file" @@ -61,7 +61,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "62a9b3aeb4a84560d1814dd4ac31c12a8f5047e3cde5873f6f4c351d7668af04.json", + "objectKey": "76b9cabe996a7bad89a83038f1c4375968b6a16e8f5f1e2ce353b667d8576cbe.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/aws-appconfig-configuration.template.json b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/aws-appconfig-configuration.template.json index b1eda3c6e7502..6dbdcb9b930ac 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/aws-appconfig-configuration.template.json +++ b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/aws-appconfig-configuration.template.json @@ -105,7 +105,7 @@ "Ref": "MyHostedConfigConfigurationProfile2E1A2BBC" }, "Content": "This is my configuration content.", - "ContentType": "application/json" + "ContentType": "text/plain" }, "UpdateReplacePolicy": "Retain", "DeletionPolicy": "Retain" @@ -150,7 +150,7 @@ "Ref": "MyHostedConfigFromJsonConfigurationProfile863E1E42" }, "Content": "This is the configuration content", - "ContentType": "application/json" + "ContentType": "text/plain" }, "UpdateReplacePolicy": "Retain", "DeletionPolicy": "Retain" diff --git a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/manifest.json b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/manifest.json index 745926ca84296..803f0bed5f4f7 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/62a9b3aeb4a84560d1814dd4ac31c12a8f5047e3cde5873f6f4c351d7668af04.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/76b9cabe996a7bad89a83038f1c4375968b6a16e8f5f1e2ce353b667d8576cbe.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/tree.json b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/tree.json index 0f0a957f37369..df892fd33b39c 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.js.snapshot/tree.json @@ -49,7 +49,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.Environment", "version": "0.0.0" } }, @@ -76,7 +76,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.Environment", "version": "0.0.0" } }, @@ -103,7 +103,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.Environment", "version": "0.0.0" } }, @@ -130,7 +130,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.Environment", "version": "0.0.0" } }, @@ -157,7 +157,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.Environment", "version": "0.0.0" } }, @@ -184,7 +184,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.Environment", "version": "0.0.0" } }, @@ -211,13 +211,13 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.Environment", "version": "0.0.0" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.Application", "version": "0.0.0" } }, @@ -245,7 +245,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.DeploymentStrategy", "version": "0.0.0" } }, @@ -290,7 +290,7 @@ "Ref": "MyHostedConfigConfigurationProfile2E1A2BBC" }, "content": "This is my configuration content.", - "contentType": "application/json" + "contentType": "text/plain" } }, "constructInfo": { @@ -328,8 +328,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "@aws-cdk/aws-appconfig-alpha.HostedConfiguration", + "version": "0.0.0" } }, "MyHostedConfigFromJson": { @@ -367,7 +367,7 @@ "Ref": "MyHostedConfigFromJsonConfigurationProfile863E1E42" }, "content": "This is the configuration content", - "contentType": "application/json" + "contentType": "text/plain" } }, "constructInfo": { @@ -405,8 +405,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "@aws-cdk/aws-appconfig-alpha.HostedConfiguration", + "version": "0.0.0" } }, "MyValidatorFunction": { @@ -717,8 +717,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "@aws-cdk/aws-appconfig-alpha.SourcedConfiguration", + "version": "0.0.0" } }, "MyDocument": { @@ -897,8 +897,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "@aws-cdk/aws-appconfig-alpha.SourcedConfiguration", + "version": "0.0.0" } }, "MyBucket": { @@ -1349,7 +1349,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.DeploymentStrategy", "version": "0.0.0" } }, @@ -1515,8 +1515,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "@aws-cdk/aws-appconfig-alpha.SourcedConfiguration", + "version": "0.0.0" } }, "MySecret": { @@ -1572,7 +1572,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.DeploymentStrategy", "version": "0.0.0" } }, @@ -1664,8 +1664,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "@aws-cdk/aws-appconfig-alpha.SourcedConfiguration", + "version": "0.0.0" } }, "MyKey": { @@ -1824,7 +1824,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.DeploymentStrategy", "version": "0.0.0" } }, @@ -1926,8 +1926,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "@aws-cdk/aws-appconfig-alpha.SourcedConfiguration", + "version": "0.0.0" } }, "MyPipeline": { @@ -2787,7 +2787,7 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.Resource", + "fqn": "@aws-cdk/aws-appconfig-alpha.DeploymentStrategy", "version": "0.0.0" } }, @@ -2821,8 +2821,8 @@ } }, "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.2.69" + "fqn": "@aws-cdk/aws-appconfig-alpha.SourcedConfiguration", + "version": "0.0.0" } }, "BootstrapVersion": { diff --git a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.ts b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.ts index 5722d6ae23a7f..ff28df311f576 100644 --- a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.ts +++ b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.configuration.ts @@ -52,7 +52,7 @@ const deploymentStrategy = new DeploymentStrategy(stack, 'MyDeployStrategy', { const hostedEnv = appConfigApp.addEnvironment('HostedEnv'); new HostedConfiguration(stack, 'MyHostedConfig', { application: appConfigApp, - content: ConfigurationContent.fromInline('This is my configuration content.'), + content: ConfigurationContent.fromInlineText('This is my configuration content.'), deployTo: [hostedEnv], validators: [ JsonSchemaValidator.fromInline(SCHEMA_STR), @@ -65,7 +65,7 @@ new HostedConfiguration(stack, 'MyHostedConfig', { const hostedEnvFromJson = appConfigApp.addEnvironment('HostedEnvFromJson'); new HostedConfiguration(stack, 'MyHostedConfigFromJson', { application: appConfigApp, - content: ConfigurationContent.fromInline('This is the configuration content'), + content: ConfigurationContent.fromInlineText('This is the configuration content'), deployTo: [hostedEnvFromJson], deploymentStrategy, }); diff --git a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.extension.ts b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.extension.ts index 65ff5986da603..7e6becd0d0e90 100755 --- a/packages/@aws-cdk/aws-appconfig-alpha/test/integ.extension.ts +++ b/packages/@aws-cdk/aws-appconfig-alpha/test/integ.extension.ts @@ -102,7 +102,7 @@ app.addExtension(busExtension); const env = app.addEnvironment('MyEnv'); const hostedConfig = new HostedConfiguration(stack, 'HostedConfiguration', { application: app, - content: ConfigurationContent.fromInline('This is my configuration content'), + content: ConfigurationContent.fromInlineJson('This is my configuration content'), deployTo: [env], deploymentStrategy: new DeploymentStrategy(stack, 'MyDeployStrategy', { rolloutStrategy: RolloutStrategy.linear({ diff --git a/yarn.lock b/yarn.lock index 75711b6c0dccf..c7ef459617048 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3874,6 +3874,11 @@ resolved "https://registry.npmjs.org/@types/md5/-/md5-2.3.2.tgz#529bb3f8a7e9e9f621094eb76a443f585d882528" integrity sha512-v+JFDu96+UYJ3/UWzB0mEglIS//MZXgRaJ4ubUPwOM0gvLc/kcQ3TWNYwENEK7/EcXGQVrW8h/XqednSjBd/Og== +"@types/mime-types@^2.1.1": + version "2.1.1" + resolved "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz#d9ba43490fa3a3df958759adf69396c3532cf2c1" + integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== + "@types/mime@^2.0.3": version "2.0.3" resolved "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a" @@ -8851,7 +8856,7 @@ jest-worker@^29.6.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29, jest@^29.6.2: +jest@^29, jest@^29.6.1, jest@^29.6.2: version "29.6.2" resolved "https://registry.npmjs.org/jest/-/jest-29.6.2.tgz#3bd55b9fd46a161b2edbdf5f1d1bd0d1eab76c42" integrity sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg== @@ -9906,7 +9911,7 @@ mime-db@1.52.0: resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12: +mime-types@^2.1.12, mime-types@^2.1.35: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== From 52b43fc39964ab1791da0ae3d1344e68012bfd33 Mon Sep 17 00:00:00 2001 From: Luca Pizzini Date: Fri, 18 Aug 2023 13:15:36 +0200 Subject: [PATCH 20/56] chore(ecs-patterns): ScheduledFargateTaskProps is exposing unused props from FargateServiceBaseProps (#26737) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `ScheduledFargateTaskProps` was extending the `FargateServiceBaseProps` interface. The only property used from that interface is [`platformVersion`](https://github.com/aws/aws-cdk/blob/694b4067023d7422927dfde51cf9621395ca753b/packages/aws-cdk-lib/aws-ecs-patterns/lib/fargate/scheduled-fargate-task.ts#L97). This change adds warning messages if the unused properties are specified: - `taskDefinition` - `cpu` - `memoryLimitMiB` - `runtimePlatform` Closes #26702. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../lib/fargate/scheduled-fargate-task.ts | 15 ++++++++- .../fargate/scheduled-fargate-task.test.ts | 32 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/packages/aws-cdk-lib/aws-ecs-patterns/lib/fargate/scheduled-fargate-task.ts b/packages/aws-cdk-lib/aws-ecs-patterns/lib/fargate/scheduled-fargate-task.ts index 46b96a7bb1d4e..ec6d1dd1ebd2b 100644 --- a/packages/aws-cdk-lib/aws-ecs-patterns/lib/fargate/scheduled-fargate-task.ts +++ b/packages/aws-cdk-lib/aws-ecs-patterns/lib/fargate/scheduled-fargate-task.ts @@ -1,6 +1,7 @@ import { Construct } from 'constructs'; import { FargateTaskDefinition } from '../../../aws-ecs'; import { EcsTask } from '../../../aws-events-targets'; +import { Annotations } from '../../../core'; import { FargateServiceBaseProps } from '../base/fargate-service-base'; import { ScheduledTaskBase, ScheduledTaskBaseProps, ScheduledTaskImageProps } from '../base/scheduled-task-base'; @@ -23,7 +24,6 @@ export interface ScheduledFargateTaskProps extends ScheduledTaskBaseProps, Farga * @default none */ readonly scheduledFargateTaskImageOptions?: ScheduledFargateTaskImageOptions; - } /** @@ -88,6 +88,19 @@ export class ScheduledFargateTask extends ScheduledTaskBase { throw new Error('You must specify one of: taskDefinition or image'); } + if (props.taskDefinition) { + Annotations.of(this).addWarning('Property \'taskDefinition\' is ignored, use \'scheduledFargateTaskDefinitionOptions\' or \'scheduledFargateTaskImageOptions\' instead.'); + } + if (props.cpu) { + Annotations.of(this).addWarning('Property \'cpu\' is ignored, use \'scheduledFargateTaskImageOptions.cpu\' instead.'); + } + if (props.memoryLimitMiB) { + Annotations.of(this).addWarning('Property \'memoryLimitMiB\' is ignored, use \'scheduledFargateTaskImageOptions.memoryLimitMiB\' instead.'); + } + if (props.runtimePlatform) { + Annotations.of(this).addWarning('Property \'runtimePlatform\' is ignored.'); + } + // Use the EcsTask as the target of the EventRule this.task = new EcsTask( { cluster: this.cluster, diff --git a/packages/aws-cdk-lib/aws-ecs-patterns/test/fargate/scheduled-fargate-task.test.ts b/packages/aws-cdk-lib/aws-ecs-patterns/test/fargate/scheduled-fargate-task.test.ts index caca8ef0d32b5..e18588fc10932 100644 --- a/packages/aws-cdk-lib/aws-ecs-patterns/test/fargate/scheduled-fargate-task.test.ts +++ b/packages/aws-cdk-lib/aws-ecs-patterns/test/fargate/scheduled-fargate-task.test.ts @@ -548,3 +548,35 @@ test('Scheduled Fargate Task - with list of tags', () => { ], }); }); + +test('Scheduled Fargate Task - with unused properties', () => { + // GIVEN + const stack = new cdk.Stack(); + const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 1 }); + const cluster = new ecs.Cluster(stack, 'EcsCluster', { vpc }); + + new ScheduledFargateTask(stack, 'ScheduledFargateTask', { + cluster, + scheduledFargateTaskImageOptions: { + image: ecs.ContainerImage.fromRegistry('henk'), + memoryLimitMiB: 512, + }, + schedule: events.Schedule.expression('rate(1 minute)'), + taskDefinition: new ecs.FargateTaskDefinition(stack, 'ScheduledFargateTaskDefinition'), + cpu: 256, + memoryLimitMiB: 512, + runtimePlatform: { + cpuArchitecture: ecs.CpuArchitecture.X86_64, + }, + }); + + // THEN + Annotations.fromStack(stack).hasWarning( + '/Default/ScheduledFargateTask', + Match.stringLikeRegexp('Property \'taskDefinition\' is ignored, use \'scheduledFargateTaskDefinitionOptions\' or \'scheduledFargateTaskImageOptions\' instead.'), + ); + Annotations.fromStack(stack).hasWarning('/Default/ScheduledFargateTask', Match.stringLikeRegexp('Property \'cpu\' is ignored, use \'scheduledFargateTaskImageOptions.cpu\' instead.')); + Annotations.fromStack(stack).hasWarning('/Default/ScheduledFargateTask', Match.stringLikeRegexp('Property \'memoryLimitMiB\' is ignored, use \'scheduledFargateTaskImageOptions.memoryLimitMiB\' instead.')); + Annotations.fromStack(stack).hasWarning('/Default/ScheduledFargateTask', Match.stringLikeRegexp('Property \'runtimePlatform\' is ignored.')); +}); + From e78e355729b01bfd7a6ba31256b8d3b85f6d04f4 Mon Sep 17 00:00:00 2001 From: Mitchell Valine Date: Fri, 18 Aug 2023 04:53:23 -0700 Subject: [PATCH 21/56] fix: aws-sdk still used in EKS custom resources (#26756) Removes usage of aws-sdk in eks custom resources. The remaining usage was only type references that appear to be forward compatible but this cleans up the code and makes it possible to remove aws-sdk as a dev dependency to aws-cdk-lib once the rout53 cross account zone delegation handler is updated. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../lib/cluster-resource-handler/cluster.ts | 28 +++++++------- .../lib/cluster-resource-handler/common.ts | 18 ++++----- .../compareLogging.ts | 12 +++--- .../lib/cluster-resource-handler/fargate.ts | 13 +++---- .../test/cluster-resource-handler-mocks.ts | 37 +++++++++++-------- 5 files changed, 56 insertions(+), 52 deletions(-) diff --git a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/cluster.ts b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/cluster.ts index 3a0a7294db31d..433de220b6c83 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/cluster.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/cluster.ts @@ -1,9 +1,7 @@ /* eslint-disable no-console */ // eslint-disable-next-line import/no-extraneous-dependencies -import { ResourceNotFoundException } from '@aws-sdk/client-eks'; -// eslint-disable-next-line import/no-extraneous-dependencies -import * as aws from 'aws-sdk'; +import * as EKS from '@aws-sdk/client-eks'; import { EksClient, ResourceEvent, ResourceHandler } from './common'; import { compareLoggingProps } from './compareLogging'; import { IsCompleteResponse, OnEventResponse } from '../../../custom-resources/lib/provider-framework/types'; @@ -19,8 +17,8 @@ export class ClusterResourceHandler extends ResourceHandler { return this.physicalResourceId; } - private readonly newProps: aws.EKS.CreateClusterRequest; - private readonly oldProps: Partial; + private readonly newProps: EKS.CreateClusterCommandInput; + private readonly oldProps: Partial; constructor(eks: EksClient, event: ResourceEvent) { super(eks, event); @@ -28,7 +26,7 @@ export class ClusterResourceHandler extends ResourceHandler { this.newProps = parseProps(this.event.ResourceProperties); this.oldProps = event.RequestType === 'Update' ? parseProps(event.OldResourceProperties) : {}; // compare newProps and oldProps and update the newProps by appending disabled LogSetup if any - const compared: Partial = compareLoggingProps(this.oldProps, this.newProps); + const compared: Partial = compareLoggingProps(this.oldProps, this.newProps); this.newProps.logging = compared.logging; } @@ -71,7 +69,7 @@ export class ClusterResourceHandler extends ResourceHandler { try { await this.eks.deleteCluster({ name: this.clusterName }); } catch (e: any) { - if (!(e instanceof ResourceNotFoundException)) { + if (!(e instanceof EKS.ResourceNotFoundException)) { throw e; } else { console.log(`cluster ${this.clusterName} not found, idempotently succeeded`); @@ -90,7 +88,7 @@ export class ClusterResourceHandler extends ResourceHandler { console.log('describeCluster returned:', JSON.stringify(resp, undefined, 2)); } catch (e: any) { // see https://aws.amazon.com/blogs/developer/service-error-handling-modular-aws-sdk-js/ - if (e instanceof ResourceNotFoundException) { + if (e instanceof EKS.ResourceNotFoundException) { console.log('received ResourceNotFoundException, this means the cluster has been deleted (or never existed)'); return { IsComplete: true }; } @@ -147,7 +145,7 @@ export class ClusterResourceHandler extends ResourceHandler { } if (updates.updateLogging || updates.updateAccess) { - const config: aws.EKS.UpdateClusterConfigRequest = { + const config: EKS.UpdateClusterConfigCommandInput = { name: this.clusterName, }; if (updates.updateLogging) { @@ -158,9 +156,9 @@ export class ClusterResourceHandler extends ResourceHandler { // https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/update-cluster-config.html) // will fail, therefore we take only the access fields explicitly config.resourcesVpcConfig = { - endpointPrivateAccess: this.newProps.resourcesVpcConfig.endpointPrivateAccess, - endpointPublicAccess: this.newProps.resourcesVpcConfig.endpointPublicAccess, - publicAccessCidrs: this.newProps.resourcesVpcConfig.publicAccessCidrs, + endpointPrivateAccess: this.newProps.resourcesVpcConfig?.endpointPrivateAccess, + endpointPublicAccess: this.newProps.resourcesVpcConfig?.endpointPublicAccess, + publicAccessCidrs: this.newProps.resourcesVpcConfig?.publicAccessCidrs, }; } const updateResponse = await this.eks.updateClusterConfig(config); @@ -241,7 +239,7 @@ export class ClusterResourceHandler extends ResourceHandler { OpenIdConnectIssuer: cluster.identity?.oidc?.issuer?.substring(8) ?? '', // Strips off https:// from the issuer url // We can safely return the first item from encryption configuration array, because it has a limit of 1 item - // https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#AmazonEKS-CreateCluster-request-encryptionConfig + // https://docs.amazon.com/eks/latest/APIReference/API_CreateCluster.html#AmazonEKS-CreateCluster-request-encryptionConfig EncryptionConfigKeyArn: cluster.encryptionConfig?.shift()?.provider?.keyArn ?? '', }, }; @@ -283,7 +281,7 @@ export class ClusterResourceHandler extends ResourceHandler { } } -function parseProps(props: any): aws.EKS.CreateClusterRequest { +function parseProps(props: any): EKS.CreateClusterCommandInput { const parsed = props?.Config ?? {}; @@ -317,7 +315,7 @@ interface UpdateMap { updateAccess: boolean; // resourcesVpcConfig.endpointPrivateAccess and endpointPublicAccess } -function analyzeUpdate(oldProps: Partial, newProps: aws.EKS.CreateClusterRequest): UpdateMap { +function analyzeUpdate(oldProps: Partial, newProps: EKS.CreateClusterCommandInput): UpdateMap { console.log('old props: ', JSON.stringify(oldProps)); console.log('new props: ', JSON.stringify(newProps)); diff --git a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/common.ts b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/common.ts index 368da91e414df..3e7eec86ef067 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/common.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/common.ts @@ -77,13 +77,13 @@ export abstract class ResourceHandler { export interface EksClient { configureAssumeRole(request: sts.AssumeRoleCommandInput): void; - createCluster(request: _eks.CreateClusterCommandInput): Promise<_eks.CreateClusterResponse>; - deleteCluster(request: _eks.DeleteClusterCommandInput): Promise<_eks.DeleteClusterResponse>; - describeCluster(request: _eks.DescribeClusterCommandInput): Promise<_eks.DescribeClusterResponse>; - updateClusterConfig(request: _eks.UpdateClusterConfigCommandInput): Promise<_eks.UpdateClusterConfigResponse>; - updateClusterVersion(request: _eks.UpdateClusterVersionCommandInput): Promise<_eks.UpdateClusterVersionResponse>; - describeUpdate(req: _eks.DescribeUpdateCommandInput): Promise<_eks.DescribeUpdateResponse>; - createFargateProfile(request: _eks.CreateFargateProfileCommandInput): Promise<_eks.CreateFargateProfileResponse>; - describeFargateProfile(request: _eks.DescribeFargateProfileCommandInput): Promise<_eks.DescribeFargateProfileResponse>; - deleteFargateProfile(request: _eks.DeleteFargateProfileCommandInput): Promise<_eks.DeleteFargateProfileResponse>; + createCluster(request: _eks.CreateClusterCommandInput): Promise<_eks.CreateClusterCommandOutput>; + deleteCluster(request: _eks.DeleteClusterCommandInput): Promise<_eks.DeleteClusterCommandOutput>; + describeCluster(request: _eks.DescribeClusterCommandInput): Promise<_eks.DescribeClusterCommandOutput>; + updateClusterConfig(request: _eks.UpdateClusterConfigCommandInput): Promise<_eks.UpdateClusterConfigCommandOutput>; + updateClusterVersion(request: _eks.UpdateClusterVersionCommandInput): Promise<_eks.UpdateClusterVersionCommandOutput>; + describeUpdate(req: _eks.DescribeUpdateCommandInput): Promise<_eks.DescribeUpdateCommandOutput>; + createFargateProfile(request: _eks.CreateFargateProfileCommandInput): Promise<_eks.CreateFargateProfileCommandOutput>; + describeFargateProfile(request: _eks.DescribeFargateProfileCommandInput): Promise<_eks.DescribeFargateProfileCommandOutput>; + deleteFargateProfile(request: _eks.DeleteFargateProfileCommandInput): Promise<_eks.DeleteFargateProfileCommandOutput>; } diff --git a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/compareLogging.ts b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/compareLogging.ts index 0eb9a9b6d253f..0a43d6c26365f 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/compareLogging.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/compareLogging.ts @@ -6,12 +6,14 @@ * @param newProps new properties * @returns result with LogSet with enabled:false if any */ +// eslint-disable-next-line import/no-extraneous-dependencies +import * as EKS from '@aws-sdk/client-eks'; -export function compareLoggingProps(oldProps: Partial, - newProps: Partial): Partial { - const result: Partial = { logging: {} }; - let enabledTypes: AWS.EKS.LogType[] = []; - let disabledTypes: AWS.EKS.LogType[] = []; +export function compareLoggingProps(oldProps: Partial, + newProps: Partial): Partial { + const result: Partial = { logging: {} }; + let enabledTypes: (EKS.LogType | string)[] = []; + let disabledTypes: (EKS.LogType | string)[] = []; if (newProps.logging?.clusterLogging === undefined && oldProps.logging?.clusterLogging === undefined) { return newProps; diff --git a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/fargate.ts b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/fargate.ts index 16b9f9abfeb49..a47a17cbec0a7 100644 --- a/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/fargate.ts +++ b/packages/aws-cdk-lib/aws-eks/lib/cluster-resource-handler/fargate.ts @@ -1,6 +1,5 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import { ResourceNotFoundException } from '@aws-sdk/client-eks'; -import * as aws from 'aws-sdk'; // eslint-disable-line import/no-extraneous-dependencies +import * as EKS from '@aws-sdk/client-eks'; import { ResourceHandler } from './common'; const MAX_NAME_LEN = 63; @@ -9,7 +8,7 @@ export class FargateProfileResourceHandler extends ResourceHandler { protected async onCreate() { const fargateProfileName = this.event.ResourceProperties.Config.fargateProfileName ?? this.generateProfileName(); - const createFargateProfile: aws.EKS.CreateFargateProfileRequest = { + const createFargateProfile: EKS.CreateFargateProfileCommandInput = { fargateProfileName, ...this.event.ResourceProperties.Config, }; @@ -35,7 +34,7 @@ export class FargateProfileResourceHandler extends ResourceHandler { throw new Error('Cannot delete a profile without a physical id'); } - const deleteFargateProfile: aws.EKS.DeleteFargateProfileRequest = { + const deleteFargateProfile: EKS.DeleteFargateProfileCommandInput = { clusterName: this.event.ResourceProperties.Config.clusterName, fargateProfileName: this.physicalResourceId, }; @@ -86,12 +85,12 @@ export class FargateProfileResourceHandler extends ResourceHandler { * Queries the Fargate profile's current status and returns the status or * NOT_FOUND if the profile doesn't exist (i.e. it has been deleted). */ - private async queryStatus(): Promise { + private async queryStatus(): Promise { if (!this.physicalResourceId) { throw new Error('Unable to determine status for fargate profile without a resource name'); } - const describeFargateProfile: aws.EKS.DescribeFargateProfileRequest = { + const describeFargateProfile: EKS.DescribeFargateProfileCommandInput = { clusterName: this.event.ResourceProperties.Config.clusterName, fargateProfileName: this.physicalResourceId, }; @@ -109,7 +108,7 @@ export class FargateProfileResourceHandler extends ResourceHandler { return status; } catch (describeFargateProfileError: any) { - if (describeFargateProfileError instanceof ResourceNotFoundException) { + if (describeFargateProfileError instanceof EKS.ResourceNotFoundException) { this.log('received ResourceNotFoundException, this means the profile has been deleted (or never existed)'); return 'NOT_FOUND'; } diff --git a/packages/aws-cdk-lib/aws-eks/test/cluster-resource-handler-mocks.ts b/packages/aws-cdk-lib/aws-eks/test/cluster-resource-handler-mocks.ts index 8cd2f45acf69e..bb1c49b5789df 100644 --- a/packages/aws-cdk-lib/aws-eks/test/cluster-resource-handler-mocks.ts +++ b/packages/aws-cdk-lib/aws-eks/test/cluster-resource-handler-mocks.ts @@ -1,6 +1,5 @@ import * as eks from '@aws-sdk/client-eks'; import * as sts from '@aws-sdk/client-sts'; -import * as sdk from 'aws-sdk'; import { EksClient } from '../lib/cluster-resource-handler/common'; /** @@ -9,15 +8,15 @@ import { EksClient } from '../lib/cluster-resource-handler/common'; */ export let actualRequest: { configureAssumeRoleRequest?: sts.AssumeRoleRequest; - createClusterRequest?: eks.CreateClusterRequest; - describeClusterRequest?: eks.DescribeClusterRequest; - describeUpdateRequest?: eks.DescribeUpdateRequest; - deleteClusterRequest?: eks.DeleteClusterRequest; - updateClusterConfigRequest?: eks.UpdateClusterConfigRequest; - updateClusterVersionRequest?: eks.UpdateClusterVersionRequest; - createFargateProfile?: eks.CreateFargateProfileRequest; - describeFargateProfile?: eks.DescribeFargateProfileRequest; - deleteFargateProfile?: eks.DeleteFargateProfileRequest; + createClusterRequest?: eks.CreateClusterCommandInput; + describeClusterRequest?: eks.DescribeClusterCommandInput; + describeUpdateRequest?: eks.DescribeUpdateCommandInput; + deleteClusterRequest?: eks.DeleteClusterCommandInput; + updateClusterConfigRequest?: eks.UpdateClusterConfigCommandInput; + updateClusterVersionRequest?: eks.UpdateClusterVersionCommandInput; + createFargateProfile?: eks.CreateFargateProfileCommandInput; + describeFargateProfile?: eks.DescribeFargateProfileCommandInput; + deleteFargateProfile?: eks.DeleteFargateProfileCommandInput; } = { }; /** @@ -26,7 +25,7 @@ export let actualRequest: { export let simulateResponse: { describeClusterResponseMockStatus?: string; describeUpdateResponseMockStatus?: string; - describeUpdateResponseMockErrors?: sdk.EKS.ErrorDetails; + describeUpdateResponseMockErrors?: eks.ErrorDetail[]; deleteClusterError?: Error; describeClusterException?: Error; } = { }; @@ -47,6 +46,7 @@ export const client: EksClient = { createCluster: async req => { actualRequest.createClusterRequest = req; return { + $metadata: {}, cluster: { name: req.name, roleArn: req.roleArn, @@ -64,6 +64,7 @@ export const client: EksClient = { throw simulateResponse.deleteClusterError; } return { + $metadata: {}, cluster: { name: req.name, }, @@ -78,6 +79,7 @@ export const client: EksClient = { } return { + $metadata: {}, cluster: { name: req.name, version: '1.0', @@ -94,6 +96,7 @@ export const client: EksClient = { actualRequest.describeUpdateRequest = req; return { + $metadata: {}, update: { id: req.updateId, errors: simulateResponse.describeUpdateResponseMockErrors, @@ -105,6 +108,7 @@ export const client: EksClient = { updateClusterConfig: async req => { actualRequest.updateClusterConfigRequest = req; return { + $metadata: {}, update: { id: MOCK_UPDATE_STATUS_ID, }, @@ -114,6 +118,7 @@ export const client: EksClient = { updateClusterVersion: async req => { actualRequest.updateClusterVersionRequest = req; return { + $metadata: {}, update: { id: MOCK_UPDATE_STATUS_ID, }, @@ -122,17 +127,17 @@ export const client: EksClient = { createFargateProfile: async req => { actualRequest.createFargateProfile = req; - return { }; + return { $metadata: {} }; }, describeFargateProfile: async req => { actualRequest.describeFargateProfile = req; - return { }; + return { $metadata: {} }; }, deleteFargateProfile: async req => { actualRequest.deleteFargateProfile = req; - return { }; + return { $metadata: {} }; }, }; @@ -148,8 +153,8 @@ export const MOCK_ASSUME_ROLE_ARN = 'assume:role:arn'; export function newRequest( requestType: T, - props?: Partial, - oldProps?: Partial) { + props?: Partial, + oldProps?: Partial) { return { StackId: 'fake-stack-id', RequestId: 'fake-request-id', From dbe5615b8e80c3bae67e3dd05674e340cac43931 Mon Sep 17 00:00:00 2001 From: Pahud Hsieh Date: Fri, 18 Aug 2023 08:20:31 -0400 Subject: [PATCH 22/56] chore(codebuild): improve the doc for subnetSelection (#26592) If `vpc` is specified with `subnetSelection` undefined, according to this: https://github.com/aws/aws-cdk/blob/d5c64cba9aa8af8e92af4893657d144ef8e4f873/packages/aws-cdk-lib/aws-ec2/lib/vpc.ts#L655-L660 CDK will look for `PRIVATE_WITH_EGRESS`, `PRIVATE_ISOLATED`, and `PUBLIC` in order. If customer does not have `PRIVATE_WITH_EGRESS` subnets, they will need to have vpc endpoints if they need to access AWS services such as AWS Secrets Manager or Amazon ECR. This PR improves the doc to clarify. Closes #. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/aws-cdk-lib/aws-codebuild/lib/project.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/aws-cdk-lib/aws-codebuild/lib/project.ts b/packages/aws-cdk-lib/aws-codebuild/lib/project.ts index 245b36ab1c99c..403fdbe7e157b 100644 --- a/packages/aws-cdk-lib/aws-codebuild/lib/project.ts +++ b/packages/aws-cdk-lib/aws-codebuild/lib/project.ts @@ -616,9 +616,18 @@ export interface CommonProjectProps { /** * Where to place the network interfaces within the VPC. * - * Only used if 'vpc' is supplied. + * To access AWS services, your CodeBuild project needs to be in one of the following types of subnets: + * + * 1. Subnets with access to the internet (of type PRIVATE_WITH_EGRESS). + * 2. Private subnets unconnected to the internet, but with [VPC endpoints](https://docs.aws.amazon.com/codebuild/latest/userguide/use-vpc-endpoints-with-codebuild.html) for the necessary services. + * + * If you don't specify a subnet selection, the default behavior is to use PRIVATE_WITH_EGRESS subnets first if they exist, + * then PRIVATE_WITHOUT_EGRESS, and finally PUBLIC subnets. If your VPC doesn't have PRIVATE_WITH_EGRESS subnets but you need + * AWS service access, add VPC Endpoints to your private subnets. + * + * @see https://docs.aws.amazon.com/codebuild/latest/userguide/vpc-support.html for more details. * - * @default - All private subnets. + * @default - private subnets if available else public subnets */ readonly subnetSelection?: ec2.SubnetSelection; From 01a7b5b72a163c2bc2c69db6843567f6a81a4a36 Mon Sep 17 00:00:00 2001 From: Chris Rybicki Date: Fri, 18 Aug 2023 10:28:06 -0400 Subject: [PATCH 23/56] fix(assertions): stack overflow while parsing template (#26767) Closes #26766 The function `findCycle` tries to find a cycle by using a depth-first search (DFS). The DFS is implemented recursively in the recurse function. For each node, it tries to find a path that eventually leads back to the start of the path. If such a path is found, a cycle exists, and the nodes forming this cycle are returned. One of the bugs in the current implementation is that it only checks whether the current dependency `dep` is equal to the first node of the current path `path[0]`. This means it will only detect a cycle if the cycle includes the first node of the search, which might not always be the case. To fix this, the function should check whether the current dependency `dep` is already somewhere in the current path `path`. If it is, then a cycle has been found. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../assertions/lib/private/cyclic.ts | 4 ++-- .../assertions/test/template.test.ts | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/packages/aws-cdk-lib/assertions/lib/private/cyclic.ts b/packages/aws-cdk-lib/assertions/lib/private/cyclic.ts index 109434cc14a8e..b7154c15e6fc8 100644 --- a/packages/aws-cdk-lib/assertions/lib/private/cyclic.ts +++ b/packages/aws-cdk-lib/assertions/lib/private/cyclic.ts @@ -167,7 +167,7 @@ function findCycle(deps: ReadonlyMap>): string[] { function recurse(node: string, path: string[]): string[] | undefined { for (const dep of deps.get(node) ?? []) { - if (dep === path[0]) { return [...path, dep]; } + if (path.includes(dep)) { return [...path, dep]; } const cycle = recurse(dep, [...path, dep]); if (cycle) { return cycle; } @@ -175,4 +175,4 @@ function findCycle(deps: ReadonlyMap>): string[] { return undefined; } -} \ No newline at end of file +} diff --git a/packages/aws-cdk-lib/assertions/test/template.test.ts b/packages/aws-cdk-lib/assertions/test/template.test.ts index 5ad22f6cb9164..46f4df1b4356e 100644 --- a/packages/aws-cdk-lib/assertions/test/template.test.ts +++ b/packages/aws-cdk-lib/assertions/test/template.test.ts @@ -1345,6 +1345,29 @@ describe('Template', () => { }).toThrow(/dependency cycle/); }); + test('throws when given a more complex template with cyclic dependencies', () => { + expect(() => { + Template.fromJSON({ + Resources: { + Res1: { + Type: 'Foo', + Properties: { + Thing: { Ref: 'Res2' }, + }, + }, + Res2: { + Type: 'Foo', + DependsOn: ['Res3'], + }, + Res3: { + Type: 'Foo', + DependsOn: ['Res2'], + }, + }, + }); + }).toThrow(/dependency cycle/); + }); + test('does not throw when given a template with cyclic dependencies if check is skipped', () => { expect(() => { Template.fromJSON({ From 70c374f75a1e3c4bedaab00067468e7a114f6aac Mon Sep 17 00:00:00 2001 From: Rico Hermans Date: Fri, 18 Aug 2023 16:54:13 +0200 Subject: [PATCH 24/56] fix(cloudformation-diff): fails on CloudFormation intrinsics in unexpected places (#26791) The `cloudformation-diff` module was written to parse templates that CDK itself would produce, mostly consisting of concrete values and barely any CloudFormation intrinsics. It would crash when encountering CloudFormation intrinsics in unexpected places (for example, an intrinsic where it expected an array). Make the parsing more robust, checking the types of various values before we try and access it. Property-based tests generate random templates to make sure we didn't forget any edge cases. Upgrade `fast-check` to the latest version while we're at it. Fixes #7413. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../lib/diff/maybe-parsed.ts | 25 ++ .../cloudformation-diff/lib/diff/util.ts | 6 + .../lib/iam/iam-changes.ts | 11 +- .../lib/iam/managed-policy.ts | 9 +- .../cloudformation-diff/lib/iam/statement.ts | 9 +- .../lib/network/security-group-changes.ts | 8 +- .../lib/network/security-group-rule.ts | 8 +- .../@aws-cdk/cloudformation-diff/package.json | 2 +- .../test/diff-template.test.ts | 12 + .../test/iam/detect-changes.test.ts | 79 +++++- .../test/iam/statement.test.ts | 75 +----- .../test/network/rule.test.ts | 33 +-- .../test/test-arbitraries.ts | 253 ++++++++++++++++++ .../aws-applicationautoscaling/test/util.ts | 12 +- .../aws-autoscaling-common/test/util.ts | 12 +- packages/aws-cdk-lib/core/test/fn.test.ts | 16 +- packages/aws-cdk-lib/package.json | 2 +- packages/aws-cdk/package.json | 2 +- yarn.lock | 15 +- 19 files changed, 431 insertions(+), 158 deletions(-) create mode 100644 packages/@aws-cdk/cloudformation-diff/lib/diff/maybe-parsed.ts create mode 100644 packages/@aws-cdk/cloudformation-diff/test/test-arbitraries.ts diff --git a/packages/@aws-cdk/cloudformation-diff/lib/diff/maybe-parsed.ts b/packages/@aws-cdk/cloudformation-diff/lib/diff/maybe-parsed.ts new file mode 100644 index 0000000000000..4ae35a26caf80 --- /dev/null +++ b/packages/@aws-cdk/cloudformation-diff/lib/diff/maybe-parsed.ts @@ -0,0 +1,25 @@ +/** + * A value that may or may not be parseable + */ +export type MaybeParsed = Parsed | UnparseableCfn; + +export interface Parsed { + readonly type: 'parsed'; + readonly value: A; +} + +export interface UnparseableCfn { + readonly type: 'unparseable'; + readonly repr: string; +} + +export function mkParsed(value: A): Parsed { + return { type: 'parsed', value }; +} + +export function mkUnparseable(value: any): UnparseableCfn { + return { + type: 'unparseable', + repr: typeof value === 'string' ? value : JSON.stringify(value), + }; +} diff --git a/packages/@aws-cdk/cloudformation-diff/lib/diff/util.ts b/packages/@aws-cdk/cloudformation-diff/lib/diff/util.ts index 8b076dd36221e..53c816778b2e4 100644 --- a/packages/@aws-cdk/cloudformation-diff/lib/diff/util.ts +++ b/packages/@aws-cdk/cloudformation-diff/lib/diff/util.ts @@ -113,6 +113,12 @@ export function diffKeyedEntities( for (const logicalId of unionOf(Object.keys(oldValue || {}), Object.keys(newValue || {}))) { const oldElement = oldValue && oldValue[logicalId]; const newElement = newValue && newValue[logicalId]; + + if (oldElement === undefined && newElement === undefined) { + // Shouldn't happen in reality, but may happen in tests. Skip. + continue; + } + result[logicalId] = elementDiff(oldElement, newElement, logicalId); } return result; diff --git a/packages/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.ts b/packages/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.ts index 2eabea69e6638..f18ac6dfcab52 100644 --- a/packages/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.ts +++ b/packages/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.ts @@ -2,6 +2,7 @@ import * as cfnspec from '@aws-cdk/cfnspec'; import * as chalk from 'chalk'; import { ManagedPolicyAttachment, ManagedPolicyJson } from './managed-policy'; import { parseLambdaPermission, parseStatements, Statement, StatementJson } from './statement'; +import { MaybeParsed } from '../diff/maybe-parsed'; import { PropertyChange, PropertyMap, ResourceChange } from '../diff/types'; import { DiffableCollection } from '../diffable'; import { renderIntrinsics } from '../render-intrinsics'; @@ -184,7 +185,7 @@ export class IamChanges { * Parse a list of policies on an identity */ private readIdentityPolicies(policies: any, logicalId: string): Statement[] { - if (policies === undefined) { return []; } + if (policies === undefined || !Array.isArray(policies)) { return []; } const appliesToPrincipal = 'AWS:${' + logicalId + '}'; @@ -276,8 +277,8 @@ function defaultResource(resource: string, statements: Statement[]) { } export interface IamChangesJson { - statementAdditions?: StatementJson[]; - statementRemovals?: StatementJson[]; - managedPolicyAdditions?: ManagedPolicyJson[]; - managedPolicyRemovals?: ManagedPolicyJson[]; + statementAdditions?: Array>; + statementRemovals?: Array>; + managedPolicyAdditions?: Array>; + managedPolicyRemovals?: Array>; } diff --git a/packages/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.ts b/packages/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.ts index f0d54140398bc..57f6fe76a6877 100644 --- a/packages/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.ts +++ b/packages/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.ts @@ -1,3 +1,5 @@ +import { MaybeParsed, mkParsed } from '../diff/maybe-parsed'; + export class ManagedPolicyAttachment { public static parseManagedPolicies(identityArn: string, arns: string | string[]): ManagedPolicyAttachment[] { return typeof arns === 'string' @@ -19,8 +21,11 @@ export class ManagedPolicyAttachment { * * @internal */ - public _toJson(): ManagedPolicyJson { - return { identityArn: this.identityArn, managedPolicyArn: this.managedPolicyArn }; + public _toJson(): MaybeParsed { + return mkParsed({ + identityArn: this.identityArn, + managedPolicyArn: this.managedPolicyArn, + }); } } diff --git a/packages/@aws-cdk/cloudformation-diff/lib/iam/statement.ts b/packages/@aws-cdk/cloudformation-diff/lib/iam/statement.ts index c0bedec4292de..a2eacf037959d 100644 --- a/packages/@aws-cdk/cloudformation-diff/lib/iam/statement.ts +++ b/packages/@aws-cdk/cloudformation-diff/lib/iam/statement.ts @@ -1,3 +1,4 @@ +import { MaybeParsed, mkParsed, mkUnparseable } from '../diff/maybe-parsed'; import { deepRemoveUndefined } from '../util'; // namespace object imports won't work in the bundle for function exports @@ -94,17 +95,17 @@ export class Statement { * * @internal */ - public _toJson(): StatementJson { + public _toJson(): MaybeParsed { return this.serializedIntrinsic - ? this.serializedIntrinsic - : deepRemoveUndefined({ + ? mkUnparseable(this.serializedIntrinsic) + : mkParsed(deepRemoveUndefined({ sid: this.sid, effect: this.effect, resources: this.resources._toJson(), principals: this.principals._toJson(), actions: this.actions._toJson(), condition: this.condition, - }); + })); } /** diff --git a/packages/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.ts b/packages/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.ts index f03e29efe9927..3d6092067388f 100644 --- a/packages/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.ts +++ b/packages/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.ts @@ -97,12 +97,16 @@ export class SecurityGroupChanges { } private readInlineRules(rules: any, logicalId: string): SecurityGroupRule[] { - if (!rules) { return []; } + if (!rules || !Array.isArray(rules)) { return []; } // UnCloudFormation so the parser works in an easier domain const ref = '${' + logicalId + '.GroupId}'; - return rules.map((r: any) => new SecurityGroupRule(renderIntrinsics(r), ref)); + return rules.flatMap((r: any) => { + const rendered = renderIntrinsics(r); + // SecurityGroupRule is not robust against unparsed objects + return typeof rendered === 'object' ? [new SecurityGroupRule(rendered, ref)] : []; + }); } private readRuleResource(resource: any): SecurityGroupRule[] { diff --git a/packages/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.ts b/packages/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.ts index f382918afa98b..fda8cb0404d25 100644 --- a/packages/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.ts +++ b/packages/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.ts @@ -121,8 +121,12 @@ function peerEqual(a?: RulePeer, b?: RulePeer) { function findFirst(obj: any, keys: string[], fn: (x: string) => T): T | undefined { for (const key of keys) { - if (key in obj) { - return fn(obj[key]); + try { + if (key in obj) { + return fn(obj[key]); + } + } catch (e) { + debugger; } } return undefined; diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index 92eea6c2988a8..229a1efa6c8ca 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -35,7 +35,7 @@ "@aws-cdk/pkglint": "0.0.0", "@types/jest": "^29.5.3", "@types/string-width": "^4.0.1", - "fast-check": "^2.25.0", + "fast-check": "^3.12.0", "jest": "^29.6.2", "ts-jest": "^29.1.1" }, diff --git a/packages/@aws-cdk/cloudformation-diff/test/diff-template.test.ts b/packages/@aws-cdk/cloudformation-diff/test/diff-template.test.ts index 642f5cc8b86a2..5c755339fd737 100644 --- a/packages/@aws-cdk/cloudformation-diff/test/diff-template.test.ts +++ b/packages/@aws-cdk/cloudformation-diff/test/diff-template.test.ts @@ -1,3 +1,5 @@ +import * as fc from 'fast-check'; +import { arbitraryTemplate } from './test-arbitraries'; import { diffTemplate, ResourceImpact } from '../lib/diff-template'; const POLICY_DOCUMENT = { foo: 'Bar' }; // Obviously a fake one! @@ -689,3 +691,13 @@ test('handles a resource changing its Type', () => { resourceTypes: { newType: 'AWS::ApiGateway::RestApi', oldType: 'AWS::Serverless::Api' }, }); }); + +test('diffing any two arbitrary templates should not crash', () => { + // We're not interested in making sure we find the right differences here -- just + // that we're not crashing. + fc.assert(fc.property(arbitraryTemplate, arbitraryTemplate, (t1, t2) => { + diffTemplate(t1, t2); + }), { + // path: '1:0:0:0:3:0:1:1:1:1:1:1:1:1:1:1:1:1:1:2:1:1:1', + }); +}); diff --git a/packages/@aws-cdk/cloudformation-diff/test/iam/detect-changes.test.ts b/packages/@aws-cdk/cloudformation-diff/test/iam/detect-changes.test.ts index fd457cd701b66..c9e70ec456c4e 100644 --- a/packages/@aws-cdk/cloudformation-diff/test/iam/detect-changes.test.ts +++ b/packages/@aws-cdk/cloudformation-diff/test/iam/detect-changes.test.ts @@ -1,4 +1,7 @@ import { diffTemplate } from '../../lib'; +import { MaybeParsed } from '../../lib/diff/maybe-parsed'; +import { IamChangesJson } from '../../lib/iam/iam-changes'; +import { deepRemoveUndefined } from '../../lib/util'; import { poldoc, policy, resource, role, template } from '../util'; test('shows new AssumeRolePolicyDocument', () => { @@ -14,7 +17,7 @@ test('shows new AssumeRolePolicyDocument', () => { })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ statementAdditions: [ { effect: 'Allow', @@ -41,7 +44,7 @@ test('implicitly knows principal of identity policy for all resource types', () })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ statementAdditions: [ { effect: 'Allow', @@ -73,7 +76,7 @@ test('policies on an identity object', () => { })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ statementAdditions: [ { effect: 'Allow', @@ -86,6 +89,39 @@ test('policies on an identity object', () => { } }); +test('statement is an intrinsic', () => { + const diff = diffTemplate({}, template({ + MyIdentity: resource('AWS::IAM::User', { + Policies: [ + { + PolicyName: 'Polly', + PolicyDocument: poldoc({ + 'Fn::If': [ + 'SomeCondition', + { + Effect: 'Allow', + Action: 's3:DoThatThing', + Resource: '*', + }, + { Ref: 'AWS::NoValue' }, + ], + }), + }, + ], + }), + })); + + // THEN + expect(diff.iamChanges._toJson()).toEqual({ + statementAdditions: [ + { + type: 'unparseable', + repr: '{"Fn::If":["SomeCondition",{"Effect":"Allow","Action":"s3:DoThatThing","Resource":"*"}]}', + }, + ], + }); +}); + test('if policy is attached to multiple roles all are shown', () => { // WHEN const diff = diffTemplate({}, template({ @@ -100,7 +136,7 @@ test('if policy is attached to multiple roles all are shown', () => { })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ statementAdditions: [ { effect: 'Allow', @@ -131,7 +167,7 @@ test('correctly parses Lambda permissions', () => { })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ statementAdditions: [ { effect: 'Allow', @@ -162,7 +198,7 @@ test('implicitly knows resource of (queue) resource policy even if * given', () })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ statementAdditions: [ { effect: 'Allow', @@ -189,7 +225,7 @@ test('finds sole statement removals', () => { }), {}); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ statementRemovals: [ { effect: 'Allow', @@ -233,7 +269,7 @@ test('finds one of many statement removals', () => { })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ statementRemovals: [ { effect: 'Allow', @@ -254,7 +290,7 @@ test('finds policy attachments', () => { })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ managedPolicyAdditions: [ { identityArn: '${SomeRole}', @@ -279,7 +315,7 @@ test('finds policy removals', () => { })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ managedPolicyRemovals: [ { identityArn: '${SomeRole}', @@ -314,7 +350,7 @@ test('queuepolicy queue change counts as removal+addition', () => { })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ statementAdditions: [ { effect: 'Allow', @@ -354,7 +390,7 @@ test('supports Fn::If in the top-level property value of Role', () => { })); // THEN - expect(diff.iamChanges._toJson()).toEqual({ + expect(unwrapParsed(diff.iamChanges._toJson())).toEqual({ managedPolicyAdditions: [ { identityArn: '${MyRole}', @@ -420,3 +456,22 @@ test('supports Fn::If in the elements of an array-typed property of Role', () => expect(changedPolicies[resourceColumn]).toContain('{"Fn::If":["SomeCondition",{"PolicyName":"S3","PolicyDocument":{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"s3:GetObject","Resource":"*"}]}}]}'); expect(changedPolicies[principalColumn]).toContain('AWS:${MyRole}'); }); + +/** + * Assume that all types are parsed, and unwrap them + */ +function unwrapParsed(chg: IamChangesJson) { + return deepRemoveUndefined({ + managedPolicyAdditions: chg.managedPolicyAdditions?.map(unwrap1), + managedPolicyRemovals: chg.managedPolicyRemovals?.map(unwrap1), + statementAdditions: chg.statementAdditions?.map(unwrap1), + statementRemovals: chg.statementRemovals?.map(unwrap1), + }); + + function unwrap1(x: MaybeParsed): A { + if (x.type !== 'parsed') { + throw new Error(`Expected parsed expression, found: "${x.repr}"`); + } + return x.value; + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/cloudformation-diff/test/iam/statement.test.ts b/packages/@aws-cdk/cloudformation-diff/test/iam/statement.test.ts index b0037d7d15b5c..9e65daa5bc987 100644 --- a/packages/@aws-cdk/cloudformation-diff/test/iam/statement.test.ts +++ b/packages/@aws-cdk/cloudformation-diff/test/iam/statement.test.ts @@ -1,5 +1,6 @@ import * as fc from 'fast-check'; import { parseLambdaPermission, renderCondition, Statement } from '../../lib/iam/statement'; +import { arbitraryStatement, twoArbitraryStatements } from '../test-arbitraries'; test('can parse all positive fields', () => { const statement = new Statement({ @@ -138,77 +139,3 @@ test('equality is symmetric', () => { }, )); }); - -// We should be testing transitivity as well but it's too much code to generate -// arbitraries that satisfy the precondition enough times to be useful. - -const arbitraryResource = fc.oneof(fc.constantFrom('*', 'arn:resource')); -const arbitraryAction = fc.constantFrom('*', 's3:*', 's3:GetObject', 's3:PutObject'); -const arbitraryPrincipal = fc.oneof( - fc.constant(undefined), - fc.constant('*'), - fc.record({ AWS: fc.oneof(fc.string(), fc.constant('*')) }), - fc.record({ Service: fc.string() }), - fc.record({ Federated: fc.string() }), -); -const arbitraryCondition = fc.oneof( - fc.constant(undefined), - fc.constant({ StringEquals: { Key: 'Value' } }), - fc.constant({ StringEquals: { Key: 'Value' }, NumberEquals: { Key: 5 } }), -); - -const arbitraryStatement = fc.record({ - Sid: fc.oneof(fc.string(), fc.constant(undefined)), - Effect: fc.constantFrom('Allow', 'Deny'), - Resource: fc.array(arbitraryResource, 0, 2), - NotResource: fc.boolean(), - Action: fc.array(arbitraryAction, 1, 2), - NotAction: fc.boolean(), - Principal: fc.array(arbitraryPrincipal, 0, 2), - NotPrincipal: fc.boolean(), - Condition: arbitraryCondition, -}).map(record => { - // This map() that shuffles keys is the easiest way to create variation between Action/NotAction etc. - makeNot(record, 'Resource', 'NotResource'); - makeNot(record, 'Action', 'NotAction'); - makeNot(record, 'Principal', 'NotPrincipal'); - return record; -}); - -function makeNot(obj: any, key: string, notKey: string) { - if (obj[notKey]) { - obj[notKey] = obj[key]; - delete obj[key]; - } else { - delete obj[notKey]; - } -} - -/** - * Two statements where one is a modification of the other - * - * This is to generate two statements that have a higher chance of being similar - * than generating two arbitrary statements independently. - */ -const twoArbitraryStatements = fc.record({ - statement1: arbitraryStatement, - statement2: arbitraryStatement, - copySid: fc.boolean(), - copyEffect: fc.boolean(), - copyResource: fc.boolean(), - copyAction: fc.boolean(), - copyPrincipal: fc.boolean(), - copyCondition: fc.boolean(), -}).map(op => { - const original = op.statement1; - const modified = Object.create(original, {}); - - if (op.copySid) { modified.Sid = op.statement2.Sid; } - if (op.copyEffect) { modified.Effect = op.statement2.Effect; } - if (op.copyResource) { modified.Resource = op.statement2.Resource; modified.NotResource = op.statement2.NotResource; } - if (op.copyAction) { modified.Action = op.statement2.Action; modified.NotAction = op.statement2.NotAction; } - if (op.copyPrincipal) { modified.Principal = op.statement2.Principal; modified.NotPrincipal = op.statement2.NotPrincipal; } - if (op.copyCondition) { modified.Condition = op.statement2.Condition; } - - return { statement1: original, statement2: modified }; -}); diff --git a/packages/@aws-cdk/cloudformation-diff/test/network/rule.test.ts b/packages/@aws-cdk/cloudformation-diff/test/network/rule.test.ts index e790deb4ed7ad..234eb3ebd7c99 100644 --- a/packages/@aws-cdk/cloudformation-diff/test/network/rule.test.ts +++ b/packages/@aws-cdk/cloudformation-diff/test/network/rule.test.ts @@ -1,5 +1,6 @@ import * as fc from 'fast-check'; import { SecurityGroupRule } from '../../lib/network/security-group-rule'; +import { arbitraryRule, twoArbitraryRules } from '../test-arbitraries'; test('can parse cidr-ip', () => { const rule = new SecurityGroupRule({ @@ -73,35 +74,3 @@ test('equality is symmetric', () => { }, )); }); - -const arbitraryRule = fc.record({ - IpProtocol: fc.constantFrom('tcp', 'udp', 'icmp'), - FromPort: fc.integer(80, 81), - ToPort: fc.integer(81, 82), - CidrIp: fc.constantFrom('0.0.0.0/0', '1.2.3.4/8', undefined, undefined), - DestinationSecurityGroupId: fc.constantFrom('sg-1234', undefined), - DestinationPrefixListId: fc.constantFrom('pl-1', undefined), -}); - -const twoArbitraryRules = fc.record({ - rule1: arbitraryRule, - rule2: arbitraryRule, - copyIp: fc.boolean(), - copyFromPort: fc.boolean(), - copyToPort: fc.boolean(), - copyCidrIp: fc.boolean(), - copySecurityGroupId: fc.boolean(), - copyPrefixListId: fc.boolean(), -}).map(op => { - const original = op.rule1; - const modified = Object.create(original, {}); - - if (op.copyIp) { modified.IpProtocol = op.rule2.IpProtocol; } - if (op.copyFromPort) { modified.FromPort = op.rule2.FromPort; } - if (op.copyToPort) { modified.ToPort = op.rule2.ToPort; } - if (op.copyCidrIp) { modified.CidrIp = op.rule2.CidrIp; } - if (op.copySecurityGroupId) { modified.DestinationSecurityGroupId = op.rule2.DestinationSecurityGroupId; } - if (op.copyPrefixListId) { modified.DestinationPrefixListId = op.rule2.DestinationPrefixListId; } - - return { rule1: original, rule2: modified }; -}); diff --git a/packages/@aws-cdk/cloudformation-diff/test/test-arbitraries.ts b/packages/@aws-cdk/cloudformation-diff/test/test-arbitraries.ts new file mode 100644 index 0000000000000..b1fbb12596715 --- /dev/null +++ b/packages/@aws-cdk/cloudformation-diff/test/test-arbitraries.ts @@ -0,0 +1,253 @@ +import * as fc from 'fast-check'; + +// We should be testing transitivity as well but it's too much code to generate +// arbitraries that satisfy the precondition enough times to be useful. + +function makeNot(obj: any, key: string, notKey: string) { + if (obj[notKey]) { + obj[notKey] = obj[key]; + delete obj[key]; + } else { + delete obj[notKey]; + } +} + +/** + * fc.option generates 'null' by default which our code is not robust against + * + * Use a variant that always produces 'undefined'. + */ +function maybe(x: fc.Arbitrary) { + return fc.option(x, { nil: undefined }); +} + +////////////////////////////////////////////////////////////////////// +// IAM + +const arbitraryArn = fc.oneof(fc.constantFrom('*', 'arn:resource', { Ref: 'SomeResource' })); +const arbitraryAction = fc.constantFrom('*', 's3:*', 's3:GetObject', 's3:PutObject', { Ref: 'SomeAction' }); +const arbitraryPrincipal = fc.oneof( + fc.constant(undefined), + fc.constant('*'), + fc.record({ AWS: fc.oneof(fc.string(), fc.constant('*')) }), + fc.record({ Service: fc.string() }), + fc.string({ minLength: 1 }).map((svcName) => ({ Service: { 'Fn::Join': ['', [svcName, '.amazonaws.com']] } })), + fc.record({ Federated: fc.string() }), +); +const arbitraryCondition = fc.oneof( + fc.constant(undefined), + fc.constant({ StringEquals: { Key: 'Value' } }), + fc.constant({ StringEquals: { Key: 'Value' }, NumberEquals: { Key: 5 } }), +); + +export const arbitraryStatement = fc.record({ + Sid: fc.oneof(fc.string(), fc.constant(undefined)), + Effect: fc.constantFrom('Allow', 'Deny'), + Resource: fc.array(arbitraryArn, { minLength: 0, maxLength: 2 }), + NotResource: fc.boolean(), + Action: fc.array(arbitraryAction, { minLength: 1, maxLength: 2 }), + NotAction: fc.boolean(), + Principal: fc.array(arbitraryPrincipal, { minLength: 0, maxLength: 2 }), + NotPrincipal: fc.boolean(), + Condition: arbitraryCondition, +}).map(record => { + // This map() that shuffles keys is the easiest way to create variation between Action/NotAction etc. + makeNot(record, 'Resource', 'NotResource'); + makeNot(record, 'Action', 'NotAction'); + makeNot(record, 'Principal', 'NotPrincipal'); + return record; +}); + +/** + * Two statements where one is a modification of the other + * + * This is to generate two statements that have a higher chance of being similar + * than generating two arbitrary statements independently. + */ +export const twoArbitraryStatements = fc.record({ + statement1: arbitraryStatement, + statement2: arbitraryStatement, + copySid: fc.boolean(), + copyEffect: fc.boolean(), + copyResource: fc.boolean(), + copyAction: fc.boolean(), + copyPrincipal: fc.boolean(), + copyCondition: fc.boolean(), +}).map(op => { + const original = op.statement1; + const modified = Object.create(original, {}); + + if (op.copySid) { modified.Sid = op.statement2.Sid; } + if (op.copyEffect) { modified.Effect = op.statement2.Effect; } + if (op.copyResource) { modified.Resource = op.statement2.Resource; modified.NotResource = op.statement2.NotResource; } + if (op.copyAction) { modified.Action = op.statement2.Action; modified.NotAction = op.statement2.NotAction; } + if (op.copyPrincipal) { modified.Principal = op.statement2.Principal; modified.NotPrincipal = op.statement2.NotPrincipal; } + if (op.copyCondition) { modified.Condition = op.statement2.Condition; } + + return { statement1: original, statement2: modified }; +}); + +////////////////////////////////////////////////////////////////////// +// SECURITY GROUPS + +export const arbitraryRule = fc.record({ + IpProtocol: fc.constantFrom('tcp', 'udp', 'icmp'), + FromPort: fc.integer({ min: 80, max: 81 }), + ToPort: fc.integer({ min: 81, max: 82 }), + CidrIp: fc.constantFrom('0.0.0.0/0', '1.2.3.4/8', undefined, undefined), + DestinationSecurityGroupId: fc.constantFrom('sg-1234', undefined), + DestinationPrefixListId: fc.constantFrom('pl-1', undefined), +}); + +export const twoArbitraryRules = fc.record({ + rule1: arbitraryRule, + rule2: arbitraryRule, + copyIp: fc.boolean(), + copyFromPort: fc.boolean(), + copyToPort: fc.boolean(), + copyCidrIp: fc.boolean(), + copySecurityGroupId: fc.boolean(), + copyPrefixListId: fc.boolean(), +}).map(op => { + const original = op.rule1; + const modified = Object.create(original, {}); + + if (op.copyIp) { modified.IpProtocol = op.rule2.IpProtocol; } + if (op.copyFromPort) { modified.FromPort = op.rule2.FromPort; } + if (op.copyToPort) { modified.ToPort = op.rule2.ToPort; } + if (op.copyCidrIp) { modified.CidrIp = op.rule2.CidrIp; } + if (op.copySecurityGroupId) { modified.DestinationSecurityGroupId = op.rule2.DestinationSecurityGroupId; } + if (op.copyPrefixListId) { modified.DestinationPrefixListId = op.rule2.DestinationPrefixListId; } + + return { rule1: original, rule2: modified }; +}); + +function maybeIntrinsic(x: fc.Arbitrary) { + return fc.oneof( + x, + x.map((value) => ({ 'Fn::If': ['Condition', value, { Ref: 'AWS::NoValue' }] })), + ); +} + +const arbitraryPolicyDocument = fc.record({ + Version: fc.constant('2012-10-17'), + Statement: maybeIntrinsic(fc.array(maybeIntrinsic(arbitraryStatement), { maxLength: 5 })), +}); + +////////////////////////////////////////////////////////////////////// +// Generate a template with a subset of a predefined number of resources in it + +const arbitraryRole = fc.record({ + AssumeRolePolicyDocument: arbitraryPolicyDocument, + ManagedPolicyArns: maybe(maybeIntrinsic(fc.array(arbitraryArn, { maxLength: 2 }))), + Policies: maybe(maybeIntrinsic(fc.array(maybeIntrinsic(fc.record({ + PolicyName: fc.hexaString(), + PolicyDocument: maybeIntrinsic(arbitraryPolicyDocument), + })), { maxLength: 3 }))), +}); + +const arbitraryPolicy = fc.record({ + PolicyName: fc.hexaString(), + PolicyDocument: maybeIntrinsic(arbitraryPolicyDocument), +}); + +const arbitraryBucketPolicy = fc.record({ + PolicyDocument: maybeIntrinsic(arbitraryPolicyDocument), +}); + +const arbitraryIngress = fc.record({ + CidrIp: maybe(fc.hexaString()), + CidrIpv6: maybe(fc.hexaString()), + Description: maybe(fc.hexaString()), + FromPort: maybe(fc.integer()), + IpProtocol: fc.hexaString(), + SourcePrefixListId: maybe(fc.hexaString()), + SourceSecurityGroupId: maybe(fc.hexaString()), + ToPort: maybe(fc.integer()), +}); + +const arbitraryEgress = fc.record({ + CidrIp: maybe(fc.hexaString()), + CidrIpv6: maybe(fc.hexaString()), + Description: maybe(fc.hexaString()), + DestinationPrefixListId: maybe(fc.hexaString()), + DestinationSecurityGroupId: maybe(fc.hexaString()), + IpProtocol: fc.hexaString(), + FromPort: maybe(fc.integer()), + ToPort: maybe(fc.integer()), +}); + +const arbitrarySecurityGroup = fc.record({ + SecurityGroupIngress: maybe(maybeIntrinsic(fc.array(maybeIntrinsic(arbitraryIngress), { maxLength: 5 }))), + SecurityGroupEgress: maybe(maybeIntrinsic(fc.array(maybeIntrinsic(arbitraryEgress), { maxLength: 5 }))), +}); + +export const arbitraryTemplate = fc.record({ + role: maybe(arbitraryRole), + policy: maybe(arbitraryPolicy), + bucketWithPolicy: maybe(arbitraryBucketPolicy), + securityGroup: maybe(arbitrarySecurityGroup), + ingressRule: maybe(arbitraryIngress), + egressRule: maybe(arbitraryEgress), +}).map((generate) => { + return { + Resources: Object.assign( + {}, + mapVal(generate.role, (roleProps) => ({ + MyRole: { + Type: 'AWS::IAM::Role', + Properties: roleProps, + }, + })), + mapVal(generate.role && generate.policy, (policyProps) => ({ + MyPolicy: { + Type: 'AWS::IAM::Policy', + Properties: { + Roles: [{ Ref: 'MyRole' }], + ...policyProps, + }, + }, + })), + mapVal(generate.bucketWithPolicy, (bucketPol) => ({ + MyBucket: { + Type: 'AWS::S3::Bucket', + }, + MyBucketPolicy: { + Type: 'AWS::S3::BucketPolicy', + Properties: { + Bucket: { Ref: 'MyBucket' }, + ...bucketPol, + }, + }, + })), + mapVal(generate.securityGroup, (sgProps) => ({ + MySecurityGroup: { + Type: 'AWS::EC2::SecurityGroup', + Properties: sgProps, + }, + })), + mapVal(generate.securityGroup && generate.ingressRule, (ingressProps) => ({ + MyIngress: { + Type: 'AWS::EC2::SecurityGroupIngress', + Properties: { + GroupId: { Ref: 'MySecurityGroup' }, + ...ingressProps, + }, + }, + })), + mapVal(generate.securityGroup && generate.egressRule, (egressProps) => ({ + MyEgress: { + Type: 'AWS::EC2::SecurityGroupEgress', + Properties: { + GroupId: { Ref: 'MySecurityGroup' }, + ...egressProps, + }, + }, + })), + ), + }; + + function mapVal(cond: A, cb: (x: NonNullable) => B): B | {} { + return cond ? cb(cond) : {}; + } +}); \ No newline at end of file diff --git a/packages/aws-cdk-lib/aws-applicationautoscaling/test/util.ts b/packages/aws-cdk-lib/aws-applicationautoscaling/test/util.ts index 11e67ac50fd57..28716be20a254 100644 --- a/packages/aws-cdk-lib/aws-applicationautoscaling/test/util.ts +++ b/packages/aws-cdk-lib/aws-applicationautoscaling/test/util.ts @@ -14,9 +14,17 @@ export function createScalableTarget(scope: constructs.Construct) { } export class ArbitraryInputIntervals extends fc.Arbitrary { - public generate(mrng: fc.Random): fc.Shrinkable { + public generate(mrng: fc.Random): fc.Value { const ret = scalingcommon.generateArbitraryIntervals(mrng); - return new fc.Shrinkable(ret.intervals); + return new fc.Value(ret.intervals, {}); + } + + public canShrinkWithoutContext(_value: unknown): _value is appscaling.ScalingInterval[] { + return false; + } + + public shrink(_value: appscaling.ScalingInterval[], _context: unknown): fc.Stream> { + return fc.Stream.nil(); } } diff --git a/packages/aws-cdk-lib/aws-autoscaling-common/test/util.ts b/packages/aws-cdk-lib/aws-autoscaling-common/test/util.ts index 8b744072554cb..819d267d4f579 100644 --- a/packages/aws-cdk-lib/aws-autoscaling-common/test/util.ts +++ b/packages/aws-cdk-lib/aws-autoscaling-common/test/util.ts @@ -2,9 +2,17 @@ import * as fc from 'fast-check'; import * as scalingcommon from '../lib'; export class ArbitraryCompleteIntervals extends fc.Arbitrary { - public generate(mrng: fc.Random): fc.Shrinkable { + public generate(mrng: fc.Random): fc.Value { const ret = scalingcommon.generateArbitraryIntervals(mrng); - return new fc.Shrinkable(scalingcommon.normalizeIntervals(ret.intervals, ret.absolute)); + return new fc.Value(scalingcommon.normalizeIntervals(ret.intervals, ret.absolute), {}); + } + + public canShrinkWithoutContext(_value: unknown): _value is scalingcommon.CompleteScalingInterval[] { + return false; + } + + public shrink(_value: scalingcommon.CompleteScalingInterval[], _context: unknown): fc.Stream> { + return fc.Stream.nil(); } } diff --git a/packages/aws-cdk-lib/core/test/fn.test.ts b/packages/aws-cdk-lib/core/test/fn.test.ts index cd29f060b8b30..8356e14cfcd0a 100644 --- a/packages/aws-cdk-lib/core/test/fn.test.ts +++ b/packages/aws-cdk-lib/core/test/fn.test.ts @@ -18,8 +18,8 @@ function asyncTest(cb: () => Promise): () => void { }; } -const nonEmptyString = fc.string(1, 16); -const tokenish = fc.array(nonEmptyString, 2, 2).map(arr => ({ [arr[0]]: arr[1] })); +const nonEmptyString = fc.string({ minLength: 1, maxLength: 16 }); +const tokenish = fc.array(nonEmptyString, { minLength: 2, maxLength: 2 }).map(arr => ({ [arr[0]]: arr[1] })); const anyValue = fc.oneof(nonEmptyString, tokenish); describe('fn', () => { @@ -106,7 +106,7 @@ describe('fn', () => { const stack = new Stack(); fc.assert( fc.property( - fc.string(), fc.array(nonEmptyString, 1, 15), + fc.string(), fc.array(nonEmptyString, { minLength: 1, maxLength: 15 }), (delimiter, values) => stack.resolve(Fn.join(delimiter, values)) === values.join(delimiter), ), { verbose: true }, @@ -117,7 +117,7 @@ describe('fn', () => { const stack = new Stack(); fc.assert( fc.property( - fc.string(), fc.array(nonEmptyString, 1, 3), tokenish, fc.array(nonEmptyString, 1, 3), + fc.string(), fc.array(nonEmptyString, { minLength: 1, maxLength: 3 }), tokenish, fc.array(nonEmptyString, { minLength: 1, maxLength: 3 }), (delimiter, prefix, obj, suffix) => _.isEqual(stack.resolve(Fn.join(delimiter, [...prefix, stringToken(obj), ...suffix])), { 'Fn::Join': [delimiter, [prefix.join(delimiter), obj, suffix.join(delimiter)]] }), @@ -131,7 +131,7 @@ describe('fn', () => { fc.assert( fc.property( fc.string(), fc.array(anyValue), - fc.array(anyValue, 1, 3), + fc.array(anyValue, { minLength: 1, maxLength: 3 }), fc.array(anyValue), (delimiter, prefix, nested, suffix) => // Gonna test @@ -147,9 +147,9 @@ describe('fn', () => { fc.assert( fc.property( fc.string(), fc.string(), - fc.array(anyValue, 1, 3), - fc.array(tokenish, 2, 3), - fc.array(anyValue, 3), + fc.array(anyValue, { minLength: 1, maxLength: 3 }), + fc.array(tokenish, { minLength: 2, maxLength: 3 }), + fc.array(anyValue, { minLength: 3 }), (delimiter1, delimiter2, prefix, nested, suffix) => { fc.pre(delimiter1 !== delimiter2); const join = Fn.join(delimiter1, [...prefix as string[], Fn.join(delimiter2, stringListToken(nested)), ...suffix as string[]]); diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index dbbac2914c953..ab84f81ed660d 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -176,7 +176,7 @@ "constructs": "^10.0.0", "delay": "5.0.0", "esbuild": "^0.19.2", - "fast-check": "^2.25.0", + "fast-check": "^3.12.0", "fs-extra": "^11.1.1", "jest": "^29.6.2", "jest-each": "^29.6.2", diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index 3796392a98e2f..fa792237a83b5 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -80,7 +80,7 @@ "aws-sdk-mock": "5.6.0", "axios": "^0.27.2", "constructs": "^10.0.0", - "fast-check": "^2.25.0", + "fast-check": "^3.12.0", "jest": "^29.6.2", "madge": "^5.0.2", "make-runnable": "^1.4.1", diff --git a/yarn.lock b/yarn.lock index c7ef459617048..5967fe5e306f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6870,12 +6870,12 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -fast-check@^2.25.0: - version "2.25.0" - resolved "https://registry.npmjs.org/fast-check/-/fast-check-2.25.0.tgz#5146601851bf3be0953bd17eb2b7d547936c6561" - integrity sha512-wRUT2KD2lAmT75WNIJIHECawoUUMHM0I5jrlLXGtGeqmPL8jl/EldUDjY1VCp6fDY8yflyfUeIOsOBrIbIiArg== +fast-check@^3.12.0: + version "3.12.0" + resolved "https://registry.npmjs.org/fast-check/-/fast-check-3.12.0.tgz#440949277387a053f7f82cd532fa3fcf67346ba1" + integrity sha512-SqahE9mlL3+lhjJ39joMLwcj6F+24hfZdf/tchlNO8sHcTdrUUdA5P/ZbSFZM9Xpzs36XaneGwE0FWepm/zyOA== dependencies: - pure-rand "^5.0.1" + pure-rand "^6.0.0" fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -11573,11 +11573,6 @@ pupa@^3.1.0: dependencies: escape-goat "^4.0.0" -pure-rand@^5.0.1: - version "5.0.5" - resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.5.tgz#bda2a7f6a1fc0f284d78d78ca5902f26f2ad35cf" - integrity sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== - pure-rand@^6.0.0: version "6.0.2" resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" From 728af19ba04d212ef65c8d2b360d6fceae391cae Mon Sep 17 00:00:00 2001 From: David Adams <56132666+funguy-tech@users.noreply.github.com> Date: Fri, 18 Aug 2023 12:17:06 -0400 Subject: [PATCH 25/56] chore(ec2): add M7gd, R7gd, C7gd instance types (#26776) As of v2.92.0, we don't yet have C7gd, M7gd, and R7gd instance types available via instance type selection. Closes #26774 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../aws-cdk-lib/aws-ec2/lib/instance-types.ts | 48 +++++++++++++++++++ .../aws-cdk-lib/aws-ec2/test/instance.test.ts | 2 +- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/packages/aws-cdk-lib/aws-ec2/lib/instance-types.ts b/packages/aws-cdk-lib/aws-ec2/lib/instance-types.ts index e8e18c608dd0d..be0e852a9b223 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/instance-types.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/instance-types.ts @@ -312,6 +312,20 @@ export enum InstanceClass { */ R7G = 'r7g', + /** + * Memory optimized instances, 7th generation with Graviton3 processors and local NVME drive + * + * This instance class is currently only available in US East (Ohio), US East (N. Virginia), US West (Oregon), and Europe (Ireland). + */ + MEMORY7_GRAVITON3_NVME_DRIVE = 'memory7-graviton3-nvme-drive', + + /** + * Memory optimized instances, 7th generation with Graviton3 processors and local NVME drive + * + * This instance class is currently only available in US East (Ohio), US East (N. Virginia), US West (Oregon), and Europe (Ireland). + */ + R7GD = 'r7gd', + /** * Compute optimized instances, 3rd generation */ @@ -454,6 +468,20 @@ export enum InstanceClass { */ C6GD = 'c6gd', + /** + * Compute optimized instances for high performance computing, 7th generation with Graviton3 processors and local NVME drive + * + * This instance class is currently only available in US East (Ohio), US East (N. Virginia), US West (Oregon), and Europe (Ireland). + */ + COMPUTE7_GRAVITON3_NVME_DRIVE = 'compute7-graviton3-nvme-drive', + + /** + * Compute optimized instances for high performance computing, 7th generation with Graviton3 processors and local NVME drive + * + * This instance class is currently only available in US East (Ohio), US East (N. Virginia), US West (Oregon), and Europe (Ireland). + */ + C7GD = 'c7gd', + /** * Compute optimized instances for high performance computing, 6th generation with Graviton2 processors * and high network bandwidth capabilities @@ -864,6 +892,20 @@ export enum InstanceClass { */ M7G = 'm7g', + /** + * Standard instances, 7th generation with Graviton3 processors and local NVME drive + * + * This instance class is currently only available in US East (Ohio), US East (N. Virginia), US West (Oregon), and Europe (Ireland). + */ + STANDARD7_GRAVITON3_NVME_DRIVE = 'standard7-graviton3-nvme-drive', + + /** + * Standard instances, 7th generation with Graviton3 processors and local NVME drive + * + * This instance class is currently only available in US East (Ohio), US East (N. Virginia), US West (Oregon), and Europe (Ireland). + */ + M7GD = 'm7gd', + /** * High memory and compute capacity instances, 1st generation */ @@ -1143,6 +1185,8 @@ export class InstanceType { [InstanceClass.R6GD]: 'r6gd', [InstanceClass.MEMORY7_GRAVITON]: 'r7g', [InstanceClass.R7G]: 'r7g', + [InstanceClass.MEMORY7_GRAVITON3_NVME_DRIVE]: 'r7gd', + [InstanceClass.R7GD]: 'r7gd', [InstanceClass.COMPUTE3]: 'c3', [InstanceClass.C3]: 'c3', [InstanceClass.COMPUTE4]: 'c4', @@ -1173,6 +1217,8 @@ export class InstanceType { [InstanceClass.C6GN]: 'c6gn', [InstanceClass.COMPUTE7_GRAVITON3]: 'c7g', [InstanceClass.C7G]: 'c7g', + [InstanceClass.COMPUTE7_GRAVITON3_NVME_DRIVE]: 'c7gd', + [InstanceClass.C7GD]: 'c7gd', [InstanceClass.STORAGE2]: 'd2', [InstanceClass.D2]: 'd2', [InstanceClass.STORAGE3]: 'd3', @@ -1243,6 +1289,8 @@ export class InstanceType { [InstanceClass.M6GD]: 'm6gd', [InstanceClass.STANDARD7_GRAVITON]: 'm7g', [InstanceClass.M7G]: 'm7g', + [InstanceClass.STANDARD7_GRAVITON3_NVME_DRIVE]: 'm7gd', + [InstanceClass.M7GD]: 'm7gd', [InstanceClass.HIGH_COMPUTE_MEMORY1]: 'z1d', [InstanceClass.Z1D]: 'z1d', [InstanceClass.INFERENCE1]: 'inf1', diff --git a/packages/aws-cdk-lib/aws-ec2/test/instance.test.ts b/packages/aws-cdk-lib/aws-ec2/test/instance.test.ts index 4a70080b265de..82cf2031a9bd5 100644 --- a/packages/aws-cdk-lib/aws-ec2/test/instance.test.ts +++ b/packages/aws-cdk-lib/aws-ec2/test/instance.test.ts @@ -104,7 +104,7 @@ describe('instance', () => { test('instance architecture is correctly discerned for arm instances', () => { // GIVEN const sampleInstanceClasses = [ - 'a1', 't4g', 'c6g', 'c7g', 'c6gd', 'c6gn', 'm6g', 'm6gd', 'm7g', 'r6g', 'r6gd', 'r7g', 'g5g', 'im4gn', 'is4gen', // current Graviton-based instance classes + 'a1', 't4g', 'c6g', 'c7g', 'c6gd', 'c6gn', 'c7g', 'c7gd', 'm6g', 'm6gd', 'm7g', 'm7gd', 'r6g', 'r6gd', 'r7g', 'r7gd', 'g5g', 'im4gn', 'is4gen', // current Graviton-based instance classes 'a13', 't11g', 'y10ng', 'z11ngd', // theoretical future Graviton-based instance classes ]; From 4d3ec71e33847e80fe99da073ca0ece472e71111 Mon Sep 17 00:00:00 2001 From: Mitchell Valine Date: Fri, 18 Aug 2023 09:43:10 -0700 Subject: [PATCH 26/56] fix(custom-resources): bad payload deserialization (#26797) When `AwsCustomResource` was updated to use sdkv3, it wasn't updated to correctly handle the change in returned value when calling `lambda.invokeFunction`. The payload property was changed from type `Buffer` to `Uint8Array` to increase compatibility in browsers. Added a check in the `flatten` function used to format payloads in `AwsCustomResource`'s runtime to correctly decode values if they are a typed array or a buffer. Created a new integ test which fails to deploy if the payload property is not serialized correctly and able to be made a Cfn output. Fixes: #26730 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../index.js | 249 ++++-- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 22 +- .../index.js | 0 .../shared.js | 123 +++ .../shared.js | 106 --- .../integ-cognito.assets.json | 10 +- .../integ-cognito.template.json | 2 +- ...efaultTestDeployAssert6F2623C9.assets.json | 10 +- ...aultTestDeployAssert6F2623C9.template.json | 4 +- .../integ.cognito.js.snapshot/manifest.json | 4 +- .../test/integ.cognito.js.snapshot/tree.json | 2 +- .../IntegAlbOidc.assets.json | 10 +- .../IntegAlbOidc.template.json | 2 +- ...efaultTestDeployAssert2476ECB6.assets.json | 10 +- ...aultTestDeployAssert2476ECB6.template.json | 4 +- .../index.js | 249 ++++-- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 22 +- .../index.js | 0 .../shared.js | 123 +++ .../shared.js | 106 --- .../integ.alb.oidc.js.snapshot/manifest.json | 4 +- .../test/integ.alb.oidc.js.snapshot/tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 22 +- .../index.js | 0 .../shared.js | 123 +++ .../shared.js | 106 --- ...g-elasticsearch-custom-kms-key.assets.json | 10 +- ...elasticsearch-custom-kms-key.template.json | 2 +- .../manifest.json | 2 +- .../tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 22 +- .../index.js | 0 .../shared.js | 123 +++ .../shared.js | 106 --- ...lasticsearch-unsignedbasicauth.assets.json | 10 +- ...sticsearch-unsignedbasicauth.template.json | 2 +- .../manifest.json | 2 +- .../tree.json | 2 +- ...efaultTestDeployAssert353EE07A.assets.json | 10 +- ...aultTestDeployAssert353EE07A.template.json | 22 +- .../index.js | 249 ++++-- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- .../log-group-events.assets.json | 10 +- .../log-group-events.template.json | 8 +- .../integ.log-group.js.snapshot/manifest.json | 34 +- .../integ.log-group.js.snapshot/tree.json | 32 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- .../integ-globalaccelerator.assets.json | 10 +- .../integ-globalaccelerator.template.json | 2 +- .../manifest.json | 2 +- .../tree.json | 2 +- ...efaultTestDeployAssert03DFA015.assets.json | 19 + ...aultTestDeployAssert03DFA015.template.json | 36 + .../cdk-integ-lambda-nodejs-esm.assets.json | 6 +- .../cdk-integ-lambda-nodejs-esm.template.json | 12 +- .../test/integ.esm.js.snapshot/cdk.out | 2 +- .../test/integ.esm.js.snapshot/integ.json | 13 +- .../test/integ.esm.js.snapshot/manifest.json | 51 +- .../test/integ.esm.js.snapshot/tree.json | 68 +- ...861cefeee8f1fe360b256c7f66b9bc521c11e3.zip | Bin 0 -> 1002 bytes ...c84320861bfe911d58e603bee8767c2d6e9e8a.zip | Bin 0 -> 332 bytes ...dc13c1c6935e59b0490249af5b05a1becfb7ab.zip | Bin 0 -> 331 bytes .../aws-lambda-nodejs/test/integ.modules.ts | 7 +- ...efaultTestDeployAssert7BC530B7.assets.json | 10 +- ...aultTestDeployAssert7BC530B7.template.json | 6 +- .../index.js | 249 ++++-- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- .../lambda-logssubscription-integ.assets.json | 10 +- ...ambda-logssubscription-integ.template.json | 4 +- .../integ.lambda.js.snapshot/manifest.json | 10 +- .../test/integ.lambda.js.snapshot/tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- ...nteg-opensearch-custom-kms-key.assets.json | 10 +- ...eg-opensearch-custom-kms-key.template.json | 4 +- .../manifest.json | 8 +- .../tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- .../cdk-integ-opensearch.assets.json | 10 +- .../cdk-integ-opensearch.template.json | 10 +- .../manifest.json | 26 +- .../integ.opensearch.js.snapshot/tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- ...g-opensearch-unsignedbasicauth.assets.json | 10 +- ...opensearch-unsignedbasicauth.template.json | 4 +- .../manifest.json | 8 +- .../tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- ...aws-cdk-vpc-endpoint-dns-integ.assets.json | 10 +- ...s-cdk-vpc-endpoint-dns-integ.template.json | 2 +- .../manifest.json | 2 +- .../tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- ...-s3-bucket-auto-delete-objects.assets.json | 10 +- ...3-bucket-auto-delete-objects.template.json | 4 +- .../manifest.json | 8 +- .../tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- ...aws-cdk-customresources-athena.assets.json | 10 +- ...s-cdk-customresources-athena.template.json | 2 +- .../manifest.json | 2 +- .../tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- .../aws-cdk-customresources-vpc.assets.json | 10 +- .../aws-cdk-customresources-vpc.template.json | 4 +- .../manifest.json | 8 +- .../tree.json | 2 +- .../aws-sdk-v2-handler.js | 0 .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 0 .../shared.js | 123 +++ .../aws-sdk-v3-handler.bundled.js | 769 ----------------- .../shared.js | 106 --- .../aws-cdk-sdk-js-v3.assets.json | 10 +- .../aws-cdk-sdk-js-v3.template.json | 12 +- .../aws-cdk-sdk-js.assets.json | 10 +- .../aws-cdk-sdk-js.template.json | 12 +- .../manifest.json | 64 +- .../tree.json | 4 +- ...efaultTestDeployAssertB4B64337.assets.json | 19 + ...aultTestDeployAssertB4B64337.template.json | 36 + ...stomResourceInvokePayloadStack.assets.json | 32 + ...omResourceInvokePayloadStack.template.json | 271 ++++++ .../aws-sdk-v2-handler.js | 161 ++++ .../aws-sdk-v3-handler.bundled.js | 779 ++++++++++++++++++ .../index.js | 10 + .../shared.js | 123 +++ .../cdk.out | 1 + .../integ.json | 12 + .../manifest.json | 159 ++++ .../tree.json | 456 ++++++++++ .../integ.invoke-function-payload.ts | 44 + .../lib/aws-custom-resource/runtime/shared.ts | 38 +- .../runtime/shared.test.ts | 21 +- 187 files changed, 13825 insertions(+), 10656 deletions(-) rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/{asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle => asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle}/index.js (99%) rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) rename packages/@aws-cdk-testing/framework-integ/test/{aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v3-handler.bundled.js (97%) rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/{aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle => aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle}/index.js (99%) rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) rename packages/@aws-cdk-testing/framework-integ/test/{aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v3-handler.bundled.js (97%) rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v3-handler.bundled.js (97%) rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v3-handler.bundled.js (97%) rename packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/{aws-logs-destinations/test/integ.lambda.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle => aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle}/index.js (99%) rename packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.modules.js.snapshot/.cache/2149a129ab87c93e19bbdbfc0f861cefeee8f1fe360b256c7f66b9bc521c11e3.zip create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.modules.js.snapshot/.cache/28de77e42ea798836445f0dd73c84320861bfe911d58e603bee8767c2d6e9e8a.zip create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.modules.js.snapshot/.cache/3df927e5941c39836eafe07496dc13c1c6935e59b0490249af5b05a1becfb7ab.zip rename packages/@aws-cdk-testing/framework-integ/test/{aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle => aws-logs-destinations/test/integ.lambda.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle}/index.js (99%) rename packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js rename packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/aws-sdk-v2-handler.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js rename packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/{asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83 => asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6}/index.js (100%) create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js delete mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadStack.assets.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadStack.template.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/integ.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/tree.json create mode 100644 packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.ts diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle/index.js similarity index 99% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle/index.js index f995c420af68c..88c13ce7441ab 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle/index.js +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle/index.js @@ -1538,6 +1538,88 @@ var require_eventStream = __commonJS({ } }); +// ../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js +var require_checksum2 = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveChecksumRuntimeConfig = exports.getChecksumConfiguration = exports.AlgorithmId = void 0; + var AlgorithmId; + (function(AlgorithmId2) { + AlgorithmId2["MD5"] = "md5"; + AlgorithmId2["CRC32"] = "crc32"; + AlgorithmId2["CRC32C"] = "crc32c"; + AlgorithmId2["SHA1"] = "sha1"; + AlgorithmId2["SHA256"] = "sha256"; + })(AlgorithmId = exports.AlgorithmId || (exports.AlgorithmId = {})); + var getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.SHA256, + checksumConstructor: () => runtimeConfig.sha256 + }); + } + if (runtimeConfig.md5 != void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.MD5, + checksumConstructor: () => runtimeConfig.md5 + }); + } + return { + _checksumAlgorithms: checksumAlgorithms, + addChecksumAlgorithm(algo) { + this._checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return this._checksumAlgorithms; + } + }; + }; + exports.getChecksumConfiguration = getChecksumConfiguration; + var resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; + }; + exports.resolveChecksumRuntimeConfig = resolveChecksumRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js +var require_defaultClientConfiguration = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveDefaultRuntimeConfig = exports.getDefaultClientConfiguration = void 0; + var checksum_1 = require_checksum2(); + var getDefaultClientConfiguration = (runtimeConfig) => { + return { + ...(0, checksum_1.getChecksumConfiguration)(runtimeConfig) + }; + }; + exports.getDefaultClientConfiguration = getDefaultClientConfiguration; + var resolveDefaultRuntimeConfig = (config) => { + return { + ...(0, checksum_1.resolveChecksumRuntimeConfig)(config) + }; + }; + exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/index.js +var require_extensions = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_defaultClientConfiguration(), exports); + } +}); + // ../../../node_modules/@smithy/types/dist-cjs/http.js var require_http = __commonJS({ "../../../node_modules/@smithy/types/dist-cjs/http.js"(exports) { @@ -1756,6 +1838,7 @@ var require_dist_cjs = __commonJS({ tslib_1.__exportStar(require_endpoint(), exports); tslib_1.__exportStar(require_endpoints(), exports); tslib_1.__exportStar(require_eventStream(), exports); + tslib_1.__exportStar(require_extensions(), exports); tslib_1.__exportStar(require_http(), exports); tslib_1.__exportStar(require_identity2(), exports); tslib_1.__exportStar(require_logger(), exports); @@ -5224,7 +5307,7 @@ var require_blob_types = __commonJS({ }); // ../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js -var require_checksum2 = __commonJS({ +var require_checksum3 = __commonJS({ "../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -5518,7 +5601,7 @@ var require_dist_cjs17 = __commonJS({ tslib_1.__exportStar(require_abort2(), exports); tslib_1.__exportStar(require_auth2(), exports); tslib_1.__exportStar(require_blob_types(), exports); - tslib_1.__exportStar(require_checksum2(), exports); + tslib_1.__exportStar(require_checksum3(), exports); tslib_1.__exportStar(require_client2(), exports); tslib_1.__exportStar(require_command2(), exports); tslib_1.__exportStar(require_connection2(), exports); @@ -10396,7 +10479,7 @@ var require_package = __commonJS({ module2.exports = { name: "@aws-sdk/client-sfn", description: "AWS SDK for JavaScript Sfn Client for Node.js, Browser and React Native", - version: "3.388.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -10416,37 +10499,37 @@ var require_package = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.388.0", - "@aws-sdk/credential-provider-node": "3.388.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-signing": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/client-sts": "3.391.0", + "@aws-sdk/credential-provider-node": "3.391.0", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-signing": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", tslib: "^2.5.0" @@ -10535,7 +10618,7 @@ var require_package2 = __commonJS({ module2.exports = { name: "@aws-sdk/client-sts", description: "AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native", - version: "3.388.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -10557,37 +10640,37 @@ var require_package2 = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/credential-provider-node": "3.388.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-sdk-sts": "3.387.0", - "@aws-sdk/middleware-signing": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/credential-provider-node": "3.391.0", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-sdk-sts": "3.391.0", + "@aws-sdk/middleware-signing": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "fast-xml-parser": "4.2.5", @@ -14806,7 +14889,7 @@ var require_package3 = __commonJS({ module2.exports = { name: "@aws-sdk/client-sso", description: "AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native", - version: "3.387.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -14826,34 +14909,34 @@ var require_package3 = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", tslib: "^2.5.0" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js similarity index 97% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js index 1b662725f1b0b..9f6e97928f257 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -561,15 +561,25 @@ var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); // custom-resources/lib/aws-custom-resource/runtime/shared.ts var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } return Object.assign( {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) + ..._flatten(object) ); } function decodeSpecialValues(object, physicalResourceId) { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLEVBQUUsRUFDRixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDcEIsQ0FBQztBQUNKLENBQUM7QUFkRCwwQkFjQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsTUFBYyxFQUFFLGtCQUEwQjtJQUM1RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNsRCxRQUFRLENBQUMsRUFBRTtZQUNULEtBQUssc0NBQThCO2dCQUNqQyxPQUFPLGtCQUFrQixDQUFDO1lBQzVCO2dCQUNFLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFURCxrREFTQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE1BQWMsRUFBRSxJQUE4QjtJQUN2RSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQzFCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNwQixDQUFDLENBQUMsR0FBRyxFQUNQLEVBQUUsQ0FDSCxDQUFDO0FBQ04sQ0FBQztBQVJELGdDQVFDO0FBSUQsU0FBZ0IsT0FBTyxDQUFDLEtBQVksRUFBRSxjQUFzQixFQUFFLE1BQWMsRUFBRSxrQkFBMEIsRUFBRSxJQUFTO0lBQ2pILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEMsTUFBTSxFQUFFLGNBQWM7UUFDdEIsTUFBTSxFQUFFLE1BQU07UUFDZCxrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSCxzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFeEMsaUVBQWlFO0lBQ2pFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELE1BQU0sY0FBYyxHQUFHO1FBQ3JCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtRQUM1QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUU7WUFDUCxjQUFjLEVBQUUsRUFBRTtZQUNsQixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUM7U0FDMUQ7S0FDRixDQUFDO0lBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxJQUFJO1lBQ0YsaUVBQWlFO1lBQ2pFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integ-cognito.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integ-cognito.assets.json index 109fc49055762..8655c485c5dfd 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integ-cognito.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integ-cognito.assets.json @@ -1,15 +1,15 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -27,7 +27,7 @@ } } }, - "a4abeaa129dc6ad5ea942859fb3378b4ca6fac422104feb34fd11fb90a19c39c": { + "666e94920b35d1e6c48738aafa11d6724921169527f2d6d136c0eb8d350ed5cb": { "source": { "path": "integ-cognito.template.json", "packaging": "file" @@ -35,7 +35,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "a4abeaa129dc6ad5ea942859fb3378b4ca6fac422104feb34fd11fb90a19c39c.json", + "objectKey": "666e94920b35d1e6c48738aafa11d6724921169527f2d6d136c0eb8d350ed5cb.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integ-cognito.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integ-cognito.template.json index 56ea2c7cf2ed9..6f7685479f509 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integ-cognito.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integ-cognito.template.json @@ -827,7 +827,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integtestcognitoDefaultTestDeployAssert6F2623C9.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integtestcognitoDefaultTestDeployAssert6F2623C9.assets.json index 88f76a975a0f5..e0a74f633e070 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integtestcognitoDefaultTestDeployAssert6F2623C9.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integtestcognitoDefaultTestDeployAssert6F2623C9.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907": { + "54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5": { "source": { - "path": "asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle", + "path": "asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.zip", + "objectKey": "54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "3134b7cc7efa6bcf89ff590b3730d4c7664b45d5057f072ee873fa976a3e18a7": { + "e614ea6f3d7b8b9e1f0857e2135e052b62b5a2d12e4af0c00269a9ee43a6d683": { "source": { "path": "integtestcognitoDefaultTestDeployAssert6F2623C9.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "3134b7cc7efa6bcf89ff590b3730d4c7664b45d5057f072ee873fa976a3e18a7.json", + "objectKey": "e614ea6f3d7b8b9e1f0857e2135e052b62b5a2d12e4af0c00269a9ee43a6d683.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integtestcognitoDefaultTestDeployAssert6F2623C9.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integtestcognitoDefaultTestDeployAssert6F2623C9.template.json index 0d364b7ceab46..0043fa803333c 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integtestcognitoDefaultTestDeployAssert6F2623C9.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/integtestcognitoDefaultTestDeployAssert6F2623C9.template.json @@ -27,7 +27,7 @@ } }, "flattenResponse": "false", - "salt": "1691773610689" + "salt": "1692315261454" }, "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" @@ -127,7 +127,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.zip" + "S3Key": "54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.zip" }, "Timeout": 120, "Handler": "index.handler", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/manifest.json index 491cf0fd6b8e8..bf4ab45c9c57a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/a4abeaa129dc6ad5ea942859fb3378b4ca6fac422104feb34fd11fb90a19c39c.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/666e94920b35d1e6c48738aafa11d6724921169527f2d6d136c0eb8d350ed5cb.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -316,7 +316,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/3134b7cc7efa6bcf89ff590b3730d4c7664b45d5057f072ee873fa976a3e18a7.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/e614ea6f3d7b8b9e1f0857e2135e052b62b5a2d12e4af0c00269a9ee43a6d683.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/tree.json index 846fa02dbe5d7..991d7b31698bf 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/tree.json @@ -1362,7 +1362,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegAlbOidc.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegAlbOidc.assets.json index e2fae9c6d4330..f162dd394fceb 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegAlbOidc.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegAlbOidc.assets.json @@ -14,15 +14,15 @@ } } }, - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } @@ -40,7 +40,7 @@ } } }, - "9b0301b4bf2179ca19a22b4c4906f23b2b6af34d2c5961ccfbfb4cdfc56b9105": { + "3de5385d7ffdd5f8db4cb2984e3f080e567de6adbfab08ba87aa0fd81dc0a5cc": { "source": { "path": "IntegAlbOidc.template.json", "packaging": "file" @@ -48,7 +48,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "9b0301b4bf2179ca19a22b4c4906f23b2b6af34d2c5961ccfbfb4cdfc56b9105.json", + "objectKey": "3de5385d7ffdd5f8db4cb2984e3f080e567de6adbfab08ba87aa0fd81dc0a5cc.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegAlbOidc.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegAlbOidc.template.json index 5c1d8e93a2a6e..8fdfb30ee2067 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegAlbOidc.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegAlbOidc.template.json @@ -895,7 +895,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegTestAlbOidcDefaultTestDeployAssert2476ECB6.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegTestAlbOidcDefaultTestDeployAssert2476ECB6.assets.json index d323ca7f1e8fe..89c892d73e56e 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegTestAlbOidcDefaultTestDeployAssert2476ECB6.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegTestAlbOidcDefaultTestDeployAssert2476ECB6.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907": { + "54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5": { "source": { - "path": "asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle", + "path": "asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.zip", + "objectKey": "54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "e54ace7f676f0ee0c00fbb0f491d9c2e7317dce04bcaca7717fb9e983caf6e1d": { + "d94e1d1d13f55070b80f7cadc4a2635a88d90d3e3a9c893e85e33dff0a53aa43": { "source": { "path": "IntegTestAlbOidcDefaultTestDeployAssert2476ECB6.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "e54ace7f676f0ee0c00fbb0f491d9c2e7317dce04bcaca7717fb9e983caf6e1d.json", + "objectKey": "d94e1d1d13f55070b80f7cadc4a2635a88d90d3e3a9c893e85e33dff0a53aa43.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegTestAlbOidcDefaultTestDeployAssert2476ECB6.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegTestAlbOidcDefaultTestDeployAssert2476ECB6.template.json index 137906401097d..9b40d527056fb 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegTestAlbOidcDefaultTestDeployAssert2476ECB6.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/IntegTestAlbOidcDefaultTestDeployAssert2476ECB6.template.json @@ -27,7 +27,7 @@ } }, "flattenResponse": "false", - "salt": "1691773610714" + "salt": "1692315262180" }, "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" @@ -127,7 +127,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.zip" + "S3Key": "54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.zip" }, "Timeout": 120, "Handler": "index.handler", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle/index.js similarity index 99% rename from packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle/index.js index f995c420af68c..88c13ce7441ab 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle/index.js +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle/index.js @@ -1538,6 +1538,88 @@ var require_eventStream = __commonJS({ } }); +// ../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js +var require_checksum2 = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveChecksumRuntimeConfig = exports.getChecksumConfiguration = exports.AlgorithmId = void 0; + var AlgorithmId; + (function(AlgorithmId2) { + AlgorithmId2["MD5"] = "md5"; + AlgorithmId2["CRC32"] = "crc32"; + AlgorithmId2["CRC32C"] = "crc32c"; + AlgorithmId2["SHA1"] = "sha1"; + AlgorithmId2["SHA256"] = "sha256"; + })(AlgorithmId = exports.AlgorithmId || (exports.AlgorithmId = {})); + var getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.SHA256, + checksumConstructor: () => runtimeConfig.sha256 + }); + } + if (runtimeConfig.md5 != void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.MD5, + checksumConstructor: () => runtimeConfig.md5 + }); + } + return { + _checksumAlgorithms: checksumAlgorithms, + addChecksumAlgorithm(algo) { + this._checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return this._checksumAlgorithms; + } + }; + }; + exports.getChecksumConfiguration = getChecksumConfiguration; + var resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; + }; + exports.resolveChecksumRuntimeConfig = resolveChecksumRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js +var require_defaultClientConfiguration = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveDefaultRuntimeConfig = exports.getDefaultClientConfiguration = void 0; + var checksum_1 = require_checksum2(); + var getDefaultClientConfiguration = (runtimeConfig) => { + return { + ...(0, checksum_1.getChecksumConfiguration)(runtimeConfig) + }; + }; + exports.getDefaultClientConfiguration = getDefaultClientConfiguration; + var resolveDefaultRuntimeConfig = (config) => { + return { + ...(0, checksum_1.resolveChecksumRuntimeConfig)(config) + }; + }; + exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/index.js +var require_extensions = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_defaultClientConfiguration(), exports); + } +}); + // ../../../node_modules/@smithy/types/dist-cjs/http.js var require_http = __commonJS({ "../../../node_modules/@smithy/types/dist-cjs/http.js"(exports) { @@ -1756,6 +1838,7 @@ var require_dist_cjs = __commonJS({ tslib_1.__exportStar(require_endpoint(), exports); tslib_1.__exportStar(require_endpoints(), exports); tslib_1.__exportStar(require_eventStream(), exports); + tslib_1.__exportStar(require_extensions(), exports); tslib_1.__exportStar(require_http(), exports); tslib_1.__exportStar(require_identity2(), exports); tslib_1.__exportStar(require_logger(), exports); @@ -5224,7 +5307,7 @@ var require_blob_types = __commonJS({ }); // ../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js -var require_checksum2 = __commonJS({ +var require_checksum3 = __commonJS({ "../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -5518,7 +5601,7 @@ var require_dist_cjs17 = __commonJS({ tslib_1.__exportStar(require_abort2(), exports); tslib_1.__exportStar(require_auth2(), exports); tslib_1.__exportStar(require_blob_types(), exports); - tslib_1.__exportStar(require_checksum2(), exports); + tslib_1.__exportStar(require_checksum3(), exports); tslib_1.__exportStar(require_client2(), exports); tslib_1.__exportStar(require_command2(), exports); tslib_1.__exportStar(require_connection2(), exports); @@ -10396,7 +10479,7 @@ var require_package = __commonJS({ module2.exports = { name: "@aws-sdk/client-sfn", description: "AWS SDK for JavaScript Sfn Client for Node.js, Browser and React Native", - version: "3.388.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -10416,37 +10499,37 @@ var require_package = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.388.0", - "@aws-sdk/credential-provider-node": "3.388.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-signing": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/client-sts": "3.391.0", + "@aws-sdk/credential-provider-node": "3.391.0", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-signing": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", tslib: "^2.5.0" @@ -10535,7 +10618,7 @@ var require_package2 = __commonJS({ module2.exports = { name: "@aws-sdk/client-sts", description: "AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native", - version: "3.388.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -10557,37 +10640,37 @@ var require_package2 = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/credential-provider-node": "3.388.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-sdk-sts": "3.387.0", - "@aws-sdk/middleware-signing": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/credential-provider-node": "3.391.0", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-sdk-sts": "3.391.0", + "@aws-sdk/middleware-signing": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "fast-xml-parser": "4.2.5", @@ -14806,7 +14889,7 @@ var require_package3 = __commonJS({ module2.exports = { name: "@aws-sdk/client-sso", description: "AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native", - version: "3.387.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -14826,34 +14909,34 @@ var require_package3 = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", tslib: "^2.5.0" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js similarity index 97% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js index 1b662725f1b0b..9f6e97928f257 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2-actions/test/integ.cognito.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -561,15 +561,25 @@ var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); // custom-resources/lib/aws-custom-resource/runtime/shared.ts var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } return Object.assign( {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) + ..._flatten(object) ); } function decodeSpecialValues(object, physicalResourceId) { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLEVBQUUsRUFDRixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDcEIsQ0FBQztBQUNKLENBQUM7QUFkRCwwQkFjQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsTUFBYyxFQUFFLGtCQUEwQjtJQUM1RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNsRCxRQUFRLENBQUMsRUFBRTtZQUNULEtBQUssc0NBQThCO2dCQUNqQyxPQUFPLGtCQUFrQixDQUFDO1lBQzVCO2dCQUNFLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFURCxrREFTQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE1BQWMsRUFBRSxJQUE4QjtJQUN2RSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQzFCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNwQixDQUFDLENBQUMsR0FBRyxFQUNQLEVBQUUsQ0FDSCxDQUFDO0FBQ04sQ0FBQztBQVJELGdDQVFDO0FBSUQsU0FBZ0IsT0FBTyxDQUFDLEtBQVksRUFBRSxjQUFzQixFQUFFLE1BQWMsRUFBRSxrQkFBMEIsRUFBRSxJQUFTO0lBQ2pILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEMsTUFBTSxFQUFFLGNBQWM7UUFDdEIsTUFBTSxFQUFFLE1BQU07UUFDZCxrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSCxzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFeEMsaUVBQWlFO0lBQ2pFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELE1BQU0sY0FBYyxHQUFHO1FBQ3JCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtRQUM1QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUU7WUFDUCxjQUFjLEVBQUUsRUFBRTtZQUNsQixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUM7U0FDMUQ7S0FDRixDQUFDO0lBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxJQUFJO1lBQ0YsaUVBQWlFO1lBQ2pFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/manifest.json index 4c670cd8ac6c4..d8e5db02cbaa2 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/9b0301b4bf2179ca19a22b4c4906f23b2b6af34d2c5961ccfbfb4cdfc56b9105.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/3de5385d7ffdd5f8db4cb2984e3f080e567de6adbfab08ba87aa0fd81dc0a5cc.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -334,7 +334,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/e54ace7f676f0ee0c00fbb0f491d9c2e7317dce04bcaca7717fb9e983caf6e1d.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/d94e1d1d13f55070b80f7cadc4a2635a88d90d3e3a9c893e85e33dff0a53aa43.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/tree.json index 66bf4f686424d..1d1e877a1d47f 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticloadbalancingv2/test/integ.alb.oidc.js.snapshot/tree.json @@ -1265,7 +1265,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js similarity index 97% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js index 1b662725f1b0b..9f6e97928f257 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -561,15 +561,25 @@ var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); // custom-resources/lib/aws-custom-resource/runtime/shared.ts var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } return Object.assign( {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) + ..._flatten(object) ); } function decodeSpecialValues(object, physicalResourceId) { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/cdk-integ-elasticsearch-custom-kms-key.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/cdk-integ-elasticsearch-custom-kms-key.assets.json index 3f4c95a3b8c8f..961a8f7aeb487 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/cdk-integ-elasticsearch-custom-kms-key.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/cdk-integ-elasticsearch-custom-kms-key.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "970be226058fcc5e3ea0e33edf03d33a5acaa0555046c88841788a8a2d6d070a": { + "12d2b19cc48d75e824a29142e5f0ede5f48c6c31e25d00884a290cf7269b1de0": { "source": { "path": "cdk-integ-elasticsearch-custom-kms-key.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "970be226058fcc5e3ea0e33edf03d33a5acaa0555046c88841788a8a2d6d070a.json", + "objectKey": "12d2b19cc48d75e824a29142e5f0ede5f48c6c31e25d00884a290cf7269b1de0.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/cdk-integ-elasticsearch-custom-kms-key.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/cdk-integ-elasticsearch-custom-kms-key.template.json index 49fcc02c368a6..7f6851eaad064 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/cdk-integ-elasticsearch-custom-kms-key.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/cdk-integ-elasticsearch-custom-kms-key.template.json @@ -355,7 +355,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/manifest.json index fe7ff8b362fd1..eeb5bcdd3790a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/970be226058fcc5e3ea0e33edf03d33a5acaa0555046c88841788a8a2d6d070a.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/12d2b19cc48d75e824a29142e5f0ede5f48c6c31e25d00884a290cf7269b1de0.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/tree.json index 47d8e46e930ae..7839cb3a94a74 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.js.snapshot/tree.json @@ -481,7 +481,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js similarity index 97% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js index 1b662725f1b0b..9f6e97928f257 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -561,15 +561,25 @@ var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); // custom-resources/lib/aws-custom-resource/runtime/shared.ts var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } return Object.assign( {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) + ..._flatten(object) ); } function decodeSpecialValues(object, physicalResourceId) { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/cdk-integ-elasticsearch-unsignedbasicauth.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/cdk-integ-elasticsearch-unsignedbasicauth.assets.json index 393af1005234e..aabd0154c0137 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/cdk-integ-elasticsearch-unsignedbasicauth.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/cdk-integ-elasticsearch-unsignedbasicauth.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "71c5510ca40271f6d68ae02b24bd509584eb7ac75a5ec1f0aea86ec19c34496a": { + "c3c8eabf3887499e2d06973603ec7b606debb96913c5f1ea575e2e972f2c0efa": { "source": { "path": "cdk-integ-elasticsearch-unsignedbasicauth.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "71c5510ca40271f6d68ae02b24bd509584eb7ac75a5ec1f0aea86ec19c34496a.json", + "objectKey": "c3c8eabf3887499e2d06973603ec7b606debb96913c5f1ea575e2e972f2c0efa.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/cdk-integ-elasticsearch-unsignedbasicauth.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/cdk-integ-elasticsearch-unsignedbasicauth.template.json index d374d5d606b6b..2b7a14452f2fc 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/cdk-integ-elasticsearch-unsignedbasicauth.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/cdk-integ-elasticsearch-unsignedbasicauth.template.json @@ -191,7 +191,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/manifest.json index 71913886117ce..7956c8e88ce38 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/71c5510ca40271f6d68ae02b24bd509584eb7ac75a5ec1f0aea86ec19c34496a.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/c3c8eabf3887499e2d06973603ec7b606debb96913c5f1ea575e2e972f2c0efa.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/tree.json index f5e5ed2d46c11..6ed6fac693149 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.js.snapshot/tree.json @@ -281,7 +281,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/LogGroupDefaultTestDeployAssert353EE07A.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/LogGroupDefaultTestDeployAssert353EE07A.assets.json index 2b1d8fc4fda6c..643f1adf6d700 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/LogGroupDefaultTestDeployAssert353EE07A.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/LogGroupDefaultTestDeployAssert353EE07A.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907": { + "54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5": { "source": { - "path": "asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle", + "path": "asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.zip", + "objectKey": "54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "52d728c85f35a58bbfdfd2b6dbdad511312ae00ed2707bd69ad2bf8dfc772400": { + "69fcede415ffed48915f848f7515603039a2ec603b4ebf6fb36a165f18bdc98d": { "source": { "path": "LogGroupDefaultTestDeployAssert353EE07A.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "52d728c85f35a58bbfdfd2b6dbdad511312ae00ed2707bd69ad2bf8dfc772400.json", + "objectKey": "69fcede415ffed48915f848f7515603039a2ec603b4ebf6fb36a165f18bdc98d.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/LogGroupDefaultTestDeployAssert353EE07A.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/LogGroupDefaultTestDeployAssert353EE07A.template.json index 87a6e46bcd2e2..3ab41b7b9db11 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/LogGroupDefaultTestDeployAssert353EE07A.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/LogGroupDefaultTestDeployAssert353EE07A.template.json @@ -1,6 +1,6 @@ { "Resources": { - "AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31": { + "AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f": { "Type": "Custom::DeployAssert@SdkCallEventBridgeputEvents", "Properties": { "ServiceToken": { @@ -12,10 +12,10 @@ "service": "EventBridge", "api": "putEvents", "parameters": { - "Entries": "[{\"Detail\":\"{\\\"date\\\":\\\"abc1691773608972\\\"}\",\"DetailType\":\"cdk-integ-custom-rule\",\"Source\":\"cdk-integ\"}]" + "Entries": "[{\"Detail\":\"{\\\"date\\\":\\\"abc1692313412724\\\"}\",\"DetailType\":\"cdk-integ-custom-rule\",\"Source\":\"cdk-integ\"}]" }, "flattenResponse": "false", - "salt": "1691773608988" + "salt": "1692313412731" }, "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" @@ -87,7 +87,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.zip" + "S3Key": "54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.zip" }, "Timeout": 120, "Handler": "index.handler", @@ -99,7 +99,7 @@ } } }, - "AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593": { + "AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267": { "Type": "Custom::DeployAssert@SdkCallCloudWatchLogsfilterLogEvents", "Properties": { "ServiceToken": { @@ -110,7 +110,7 @@ }, "service": "CloudWatchLogs", "api": "filterLogEvents", - "expected": "{\"$StringLike\":\"abc1691773608972\"}", + "expected": "{\"$StringLike\":\"abc1692313412724\"}", "actualPath": "events.0.message", "parameters": { "logGroupName": { @@ -125,27 +125,27 @@ ] ] }, - "startTime": "1691773608972", + "startTime": "1692313412724", "limit": "1" }, "flattenResponse": "true", "outputPaths": [ "events.0.message" ], - "salt": "1691773608989" + "salt": "1692313412731" }, "DependsOn": [ - "AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31" + "AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f" ], "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" } }, "Outputs": { - "AssertionResultsAwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593": { + "AssertionResultsAwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267": { "Value": { "Fn::GetAtt": [ - "AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593", + "AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267", "assertion" ] } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle/index.js similarity index 99% rename from packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle/index.js index f995c420af68c..88c13ce7441ab 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.53f3cc9aed6e22e9f14f47dee475ebce282c77825ed736209307c57d588df907.bundle/index.js +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.54ed1902ad5ad220444041937ce65cb63c7fbccd0c11fdfd9ecbec43770cdaa5.bundle/index.js @@ -1538,6 +1538,88 @@ var require_eventStream = __commonJS({ } }); +// ../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js +var require_checksum2 = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/checksum.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveChecksumRuntimeConfig = exports.getChecksumConfiguration = exports.AlgorithmId = void 0; + var AlgorithmId; + (function(AlgorithmId2) { + AlgorithmId2["MD5"] = "md5"; + AlgorithmId2["CRC32"] = "crc32"; + AlgorithmId2["CRC32C"] = "crc32c"; + AlgorithmId2["SHA1"] = "sha1"; + AlgorithmId2["SHA256"] = "sha256"; + })(AlgorithmId = exports.AlgorithmId || (exports.AlgorithmId = {})); + var getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.SHA256, + checksumConstructor: () => runtimeConfig.sha256 + }); + } + if (runtimeConfig.md5 != void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.MD5, + checksumConstructor: () => runtimeConfig.md5 + }); + } + return { + _checksumAlgorithms: checksumAlgorithms, + addChecksumAlgorithm(algo) { + this._checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return this._checksumAlgorithms; + } + }; + }; + exports.getChecksumConfiguration = getChecksumConfiguration; + var resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; + }; + exports.resolveChecksumRuntimeConfig = resolveChecksumRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js +var require_defaultClientConfiguration = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveDefaultRuntimeConfig = exports.getDefaultClientConfiguration = void 0; + var checksum_1 = require_checksum2(); + var getDefaultClientConfiguration = (runtimeConfig) => { + return { + ...(0, checksum_1.getChecksumConfiguration)(runtimeConfig) + }; + }; + exports.getDefaultClientConfiguration = getDefaultClientConfiguration; + var resolveDefaultRuntimeConfig = (config) => { + return { + ...(0, checksum_1.resolveChecksumRuntimeConfig)(config) + }; + }; + exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/index.js +var require_extensions = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_defaultClientConfiguration(), exports); + } +}); + // ../../../node_modules/@smithy/types/dist-cjs/http.js var require_http = __commonJS({ "../../../node_modules/@smithy/types/dist-cjs/http.js"(exports) { @@ -1756,6 +1838,7 @@ var require_dist_cjs = __commonJS({ tslib_1.__exportStar(require_endpoint(), exports); tslib_1.__exportStar(require_endpoints(), exports); tslib_1.__exportStar(require_eventStream(), exports); + tslib_1.__exportStar(require_extensions(), exports); tslib_1.__exportStar(require_http(), exports); tslib_1.__exportStar(require_identity2(), exports); tslib_1.__exportStar(require_logger(), exports); @@ -5224,7 +5307,7 @@ var require_blob_types = __commonJS({ }); // ../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js -var require_checksum2 = __commonJS({ +var require_checksum3 = __commonJS({ "../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -5518,7 +5601,7 @@ var require_dist_cjs17 = __commonJS({ tslib_1.__exportStar(require_abort2(), exports); tslib_1.__exportStar(require_auth2(), exports); tslib_1.__exportStar(require_blob_types(), exports); - tslib_1.__exportStar(require_checksum2(), exports); + tslib_1.__exportStar(require_checksum3(), exports); tslib_1.__exportStar(require_client2(), exports); tslib_1.__exportStar(require_command2(), exports); tslib_1.__exportStar(require_connection2(), exports); @@ -10396,7 +10479,7 @@ var require_package = __commonJS({ module2.exports = { name: "@aws-sdk/client-sfn", description: "AWS SDK for JavaScript Sfn Client for Node.js, Browser and React Native", - version: "3.388.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -10416,37 +10499,37 @@ var require_package = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.388.0", - "@aws-sdk/credential-provider-node": "3.388.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-signing": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/client-sts": "3.391.0", + "@aws-sdk/credential-provider-node": "3.391.0", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-signing": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", tslib: "^2.5.0" @@ -10535,7 +10618,7 @@ var require_package2 = __commonJS({ module2.exports = { name: "@aws-sdk/client-sts", description: "AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native", - version: "3.388.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -10557,37 +10640,37 @@ var require_package2 = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/credential-provider-node": "3.388.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-sdk-sts": "3.387.0", - "@aws-sdk/middleware-signing": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/credential-provider-node": "3.391.0", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-sdk-sts": "3.391.0", + "@aws-sdk/middleware-signing": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "fast-xml-parser": "4.2.5", @@ -14806,7 +14889,7 @@ var require_package3 = __commonJS({ module2.exports = { name: "@aws-sdk/client-sso", description: "AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native", - version: "3.387.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -14826,34 +14909,34 @@ var require_package3 = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", tslib: "^2.5.0" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/log-group-events.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/log-group-events.assets.json index 4a1a59325210d..3a4040ef3605a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/log-group-events.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/log-group-events.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "6feea734979602727e48e034646a8a447ddc1aa154848f139a3291416ef27212": { + "c7d0acde3d0eb5ed37c977f9c75f871f44eb1767d1e831ab9e6c96f97d438cb0": { "source": { "path": "log-group-events.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "6feea734979602727e48e034646a8a447ddc1aa154848f139a3291416ef27212.json", + "objectKey": "c7d0acde3d0eb5ed37c977f9c75f871f44eb1767d1e831ab9e6c96f97d438cb0.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/log-group-events.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/log-group-events.template.json index e20945f5c3f8e..6c2d264035f40 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/log-group-events.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/log-group-events.template.json @@ -100,7 +100,7 @@ ] }, "Delete": "{\"service\":\"CloudWatchLogs\",\"action\":\"deleteResourcePolicy\",\"parameters\":{\"policyName\":\"loggroupeventsEventsLogGroupPolicyloggroupeventsTimerC63340B025F606BE\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "EventsLogGroupPolicyloggroupeventsTimerC63340B0CustomResourcePolicy67B796AA" @@ -170,7 +170,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { @@ -275,7 +275,7 @@ ] }, "Delete": "{\"service\":\"CloudWatchLogs\",\"action\":\"deleteResourcePolicy\",\"parameters\":{\"policyName\":\"loggroupeventsEventsLogGroupPolicyloggroupeventsCustomRule99E1EEF62FFABD78\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "EventsLogGroupPolicyloggroupeventsCustomRule99E1EEF6CustomResourcePolicy361E9A96" @@ -406,7 +406,7 @@ ] }, "Delete": "{\"service\":\"CloudWatchLogs\",\"action\":\"deleteResourcePolicy\",\"parameters\":{\"policyName\":\"loggroupeventsEventsLogGroupPolicyloggroupeventsTimer37DF74C17EF314A8E\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "EventsLogGroupPolicyloggroupeventsTimer37DF74C17CustomResourcePolicyAE930E1E" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/manifest.json index efc5a9707e128..5f9d9daecd194 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/6feea734979602727e48e034646a8a447ddc1aa154848f139a3291416ef27212.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/c7d0acde3d0eb5ed37c977f9c75f871f44eb1767d1e831ab9e6c96f97d438cb0.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -57,6 +57,12 @@ "data": "TimerBF6F831F" } ], + "/log-group-events/EventsLogGroupPolicyloggroupeventsTimerC63340B0": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/log-group-events/EventsLogGroupPolicyloggroupeventsTimerC63340B0/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -87,6 +93,12 @@ "data": "CustomRuleB1CBBADE" } ], + "/log-group-events/EventsLogGroupPolicyloggroupeventsCustomRule99E1EEF6": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/log-group-events/EventsLogGroupPolicyloggroupeventsCustomRule99E1EEF6/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -111,6 +123,12 @@ "data": "Timer30894E3BB" } ], + "/log-group-events/EventsLogGroupPolicyloggroupeventsTimer37DF74C17": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/log-group-events/EventsLogGroupPolicyloggroupeventsTimer37DF74C17/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -160,7 +178,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/52d728c85f35a58bbfdfd2b6dbdad511312ae00ed2707bd69ad2bf8dfc772400.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/69fcede415ffed48915f848f7515603039a2ec603b4ebf6fb36a165f18bdc98d.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -177,10 +195,10 @@ "LogGroupDefaultTestDeployAssert353EE07A.assets" ], "metadata": { - "/LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31/Default/Default": [ + "/LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f/Default/Default": [ { "type": "aws:cdk:logicalId", - "data": "AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31" + "data": "AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f" } ], "/LogGroup/DefaultTest/DeployAssert/SingletonFunction1488541a7b23466481b69b4408076b81/Role": [ @@ -195,16 +213,16 @@ "data": "SingletonFunction1488541a7b23466481b69b4408076b81HandlerCD40AE9F" } ], - "/LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593/Default/Default": [ + "/LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267/Default/Default": [ { "type": "aws:cdk:logicalId", - "data": "AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593" + "data": "AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267" } ], - "/LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593/AssertionResults": [ + "/LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267/AssertionResults": [ { "type": "aws:cdk:logicalId", - "data": "AssertionResultsAwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593" + "data": "AssertionResultsAwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267" } ], "/LogGroup/DefaultTest/DeployAssert/BootstrapVersion": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/tree.json index 67949aa42f57c..906d67fdf2ae6 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-events-targets/test/logs/integ.log-group.js.snapshot/tree.json @@ -317,7 +317,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { @@ -708,17 +708,17 @@ "id": "DeployAssert", "path": "LogGroup/DefaultTest/DeployAssert", "children": { - "AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31": { - "id": "AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31", + "AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f": { + "id": "AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f", "children": { "SdkProvider": { "id": "SdkProvider", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31/SdkProvider", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f/SdkProvider", "children": { "AssertionsProvider": { "id": "AssertionsProvider", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31/SdkProvider/AssertionsProvider", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f/SdkProvider/AssertionsProvider", "constructInfo": { "fqn": "constructs.Construct", "version": "10.2.69" @@ -732,11 +732,11 @@ }, "Default": { "id": "Default", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31/Default", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f/Default", "children": { "Default": { "id": "Default", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents86d1feecd8251713d5bdf1c558f2aa31/Default/Default", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallEventBridgeputEvents4923866d22d2c71d8b1a85360b620e5f/Default/Default", "constructInfo": { "fqn": "aws-cdk-lib.CfnResource", "version": "0.0.0" @@ -788,17 +788,17 @@ "version": "10.2.69" } }, - "AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593": { - "id": "AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593", + "AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267": { + "id": "AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267", "children": { "SdkProvider": { "id": "SdkProvider", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593/SdkProvider", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267/SdkProvider", "children": { "AssertionsProvider": { "id": "AssertionsProvider", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593/SdkProvider/AssertionsProvider", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267/SdkProvider/AssertionsProvider", "constructInfo": { "fqn": "constructs.Construct", "version": "10.2.69" @@ -812,11 +812,11 @@ }, "Default": { "id": "Default", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593/Default", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267/Default", "children": { "Default": { "id": "Default", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593/Default/Default", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267/Default/Default", "constructInfo": { "fqn": "aws-cdk-lib.CfnResource", "version": "0.0.0" @@ -830,7 +830,7 @@ }, "AssertionResults": { "id": "AssertionResults", - "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents5769f20437ecc1683899ac2c8e798593/AssertionResults", + "path": "LogGroup/DefaultTest/DeployAssert/AwsApiCallCloudWatchLogsfilterLogEvents9ba36aa083750b6bbe1071e7a7e08267/AssertionResults", "constructInfo": { "fqn": "aws-cdk-lib.CfnOutput", "version": "0.0.0" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/integ-globalaccelerator.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/integ-globalaccelerator.assets.json index 6b06882937c12..4b3bc8117dea4 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/integ-globalaccelerator.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/integ-globalaccelerator.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "b22f407a50269df52f0053453119aaa83f7af1ddc90b84487a0670bf23fec2fa": { + "5d06550cb3aa28ad881835bfafbbd4fcacbb8c47a366a31f8b5b8d9458f6802e": { "source": { "path": "integ-globalaccelerator.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "b22f407a50269df52f0053453119aaa83f7af1ddc90b84487a0670bf23fec2fa.json", + "objectKey": "5d06550cb3aa28ad881835bfafbbd4fcacbb8c47a366a31f8b5b8d9458f6802e.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/integ-globalaccelerator.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/integ-globalaccelerator.template.json index 25982da4d6f9b..9aa705b6d4c89 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/integ-globalaccelerator.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/integ-globalaccelerator.template.json @@ -817,7 +817,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/manifest.json index 52f05f96e6200..0e8dcd8de040b 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/b22f407a50269df52f0053453119aaa83f7af1ddc90b84487a0670bf23fec2fa.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/5d06550cb3aa28ad881835bfafbbd4fcacbb8c47a366a31f8b5b8d9458f6802e.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/tree.json index 89e77db2a6de1..b9799ef33f642 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-globalaccelerator-endpoints/test/integ.globalaccelerator.js.snapshot/tree.json @@ -1408,7 +1408,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.assets.json new file mode 100644 index 0000000000000..093dbaf41efd1 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.assets.json @@ -0,0 +1,19 @@ +{ + "version": "33.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "source": { + "path": "LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk-integ-lambda-nodejs-esm.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk-integ-lambda-nodejs-esm.assets.json index c19d24e5bb499..66a53be2b5a66 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk-integ-lambda-nodejs-esm.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk-integ-lambda-nodejs-esm.assets.json @@ -1,5 +1,5 @@ { - "version": "32.0.0", + "version": "33.0.0", "files": { "b1fe61f2900194572e27cce06c685324999fd8e34728c4ffc45e81f234b79e3f": { "source": { @@ -14,7 +14,7 @@ } } }, - "6ae70d9cadb5311510f7423a4502e70982bde6b4c21d58d0e2cd031c2041689d": { + "2f14fc060bb60751213b507a2252cd34052b5da4fd8778ddfd34cf233124612f": { "source": { "path": "cdk-integ-lambda-nodejs-esm.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "6ae70d9cadb5311510f7423a4502e70982bde6b4c21d58d0e2cd031c2041689d.json", + "objectKey": "2f14fc060bb60751213b507a2252cd34052b5da4fd8778ddfd34cf233124612f.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk-integ-lambda-nodejs-esm.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk-integ-lambda-nodejs-esm.template.json index b42d6814d3e1c..b419b9d6a9f52 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk-integ-lambda-nodejs-esm.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk-integ-lambda-nodejs-esm.template.json @@ -40,18 +40,18 @@ }, "S3Key": "b1fe61f2900194572e27cce06c685324999fd8e34728c4ffc45e81f234b79e3f.zip" }, - "Role": { - "Fn::GetAtt": [ - "esmServiceRole84AC2522", - "Arn" - ] - }, "Environment": { "Variables": { "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1" } }, "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "esmServiceRole84AC2522", + "Arn" + ] + }, "Runtime": "nodejs18.x" }, "DependsOn": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk.out index f0b901e7c06e5..560dae10d018f 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk.out +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/cdk.out @@ -1 +1 @@ -{"version":"32.0.0"} \ No newline at end of file +{"version":"33.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/integ.json index 0e51f6f0b625f..0e1f762ec8534 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/integ.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/integ.json @@ -1,14 +1,13 @@ { - "version": "32.0.0", + "version": "33.0.0", "testCases": { - "integ.esm": { + "LambdaNodeJsEsmInteg/DefaultTest": { "stacks": [ "cdk-integ-lambda-nodejs-esm" ], - "diffAssets": false, - "stackUpdateWorkflow": true + "diffAssets": true, + "assertionStack": "LambdaNodeJsEsmInteg/DefaultTest/DeployAssert", + "assertionStackName": "LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015" } - }, - "synthContext": {}, - "enableLookups": false + } } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/manifest.json index d3d433b1690c9..3cfb1047d6712 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/manifest.json @@ -1,5 +1,5 @@ { - "version": "32.0.0", + "version": "33.0.0", "artifacts": { "cdk-integ-lambda-nodejs-esm.assets": { "type": "cdk:asset-manifest", @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/6ae70d9cadb5311510f7423a4502e70982bde6b4c21d58d0e2cd031c2041689d.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/2f14fc060bb60751213b507a2252cd34052b5da4fd8778ddfd34cf233124612f.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -60,6 +60,53 @@ }, "displayName": "cdk-integ-lambda-nodejs-esm" }, + "LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "LambdaNodeJsEsmIntegDefaultTestDeployAssert03DFA015.assets" + ], + "metadata": { + "/LambdaNodeJsEsmInteg/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/LambdaNodeJsEsmInteg/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "LambdaNodeJsEsmInteg/DefaultTest/DeployAssert" + }, "Tree": { "type": "cdk:tree", "properties": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/tree.json index 30d66dfe47469..e9a425f29ff31 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.esm.js.snapshot/tree.json @@ -107,18 +107,18 @@ }, "s3Key": "b1fe61f2900194572e27cce06c685324999fd8e34728c4ffc45e81f234b79e3f.zip" }, - "role": { - "Fn::GetAtt": [ - "esmServiceRole84AC2522", - "Arn" - ] - }, "environment": { "variables": { "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1" } }, "handler": "index.handler", + "role": { + "Fn::GetAtt": [ + "esmServiceRole84AC2522", + "Arn" + ] + }, "runtime": "nodejs18.x" } }, @@ -155,12 +155,66 @@ "version": "0.0.0" } }, + "LambdaNodeJsEsmInteg": { + "id": "LambdaNodeJsEsmInteg", + "path": "LambdaNodeJsEsmInteg", + "children": { + "DefaultTest": { + "id": "DefaultTest", + "path": "LambdaNodeJsEsmInteg/DefaultTest", + "children": { + "Default": { + "id": "Default", + "path": "LambdaNodeJsEsmInteg/DefaultTest/Default", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "DeployAssert": { + "id": "DeployAssert", + "path": "LambdaNodeJsEsmInteg/DefaultTest/DeployAssert", + "children": { + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "LambdaNodeJsEsmInteg/DefaultTest/DeployAssert/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "LambdaNodeJsEsmInteg/DefaultTest/DeployAssert/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTestCase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTest", + "version": "0.0.0" + } + }, "Tree": { "id": "Tree", "path": "Tree", "constructInfo": { "fqn": "constructs.Construct", - "version": "10.2.55" + "version": "10.2.69" } } }, diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.modules.js.snapshot/.cache/2149a129ab87c93e19bbdbfc0f861cefeee8f1fe360b256c7f66b9bc521c11e3.zip b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.modules.js.snapshot/.cache/2149a129ab87c93e19bbdbfc0f861cefeee8f1fe360b256c7f66b9bc521c11e3.zip new file mode 100644 index 0000000000000000000000000000000000000000..8ccd5f1f80c3ffa8038241bba530e9c283a0d139 GIT binary patch literal 1002 zcmWIWW@Zs#-~d7f21Ou70FX##UP@|(URH5w=vQa)4?o+ttFc;gzSXYvYEK+@8m^YS*}3w-rO4`7PTTThMn*1c-psRT z%$g-}lYI}1L#mF_L*LcY0MYwXp(QNqLAsmz0FfnwEEqqrE>Jg_ex6B)TCwcoOSzXK-gb{N zCZ;Aon*5O0Urq2z>!K6aRln9)UV6#CNNi$A-y1dKndT7BTs%p`xk0zL-s zJJGym;W?XkR^Q;dyjD~A%Dc&$nb}@m1||2Go0N%2Mg=ELbo}ny+&}$pr%m)@pRVN= z$E5V1y9fkZFJ_2X`=OlGPT*D8vL2l*_24DGo*F*4HP@Aw27mT+66|4>XL+=M*E#c! zZ4SG8=v{#y3nbW|Zcx6Y(Nm{#I;4qLSOJf3Td=HcNm7p4Dx)X`8Fe{KlB&x7B{>&N*3i`tga(M1R@Yg7x1w^y>V*etp`af(tE$ zP2WGN1-x6r?Gw(K{32tAU+cwlCR5DPySG z(0y%d*>{N9w*Ath&0ijxujM^`|6Q8f@yYtnZ~pu_Wwt@ii!F0rKTx;K+H|MZ`LYT3 zR>ox|w!!xq1H9Qe9x`ZmWiT@^B(XCv1b8zt=`thoC$bzUe?ou)!;(f23zl00yjj^m Qd`2KN1Jd(=rZF%802;@<2LJ#7 literal 0 HcmV?d00001 diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.modules.js.snapshot/.cache/28de77e42ea798836445f0dd73c84320861bfe911d58e603bee8767c2d6e9e8a.zip b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.modules.js.snapshot/.cache/28de77e42ea798836445f0dd73c84320861bfe911d58e603bee8767c2d6e9e8a.zip new file mode 100644 index 0000000000000000000000000000000000000000..ed99294eabc559784c95723284616066ed971e21 GIT binary patch literal 332 zcmWIWW@Zs#-~d7f21Ou70FX##UP@|(URJSb@4>vo3IZ7I7c!#&I!{~yu5Es(B#WYVbz=Xu3< zT{F8K(!#dCc>i=Gz59Z>D<`VieTYBY7m>8=n4QlbE%Ixc{XTcd=fA(TBez#$x7oQ{ zJ7%yYz5L=~p6j!IUe?OO(@$P(yQapYUa_a|!Ohk20p9E!XXRLDoC5kzijjdKz?+dt jml+WP$a0_%fB*%CC5<2!EIb0dS=m5*Mj$kUFn}ZgrVDkp literal 0 HcmV?d00001 diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.modules.js.snapshot/.cache/3df927e5941c39836eafe07496dc13c1c6935e59b0490249af5b05a1becfb7ab.zip b/packages/@aws-cdk-testing/framework-integ/test/aws-lambda-nodejs/test/integ.modules.js.snapshot/.cache/3df927e5941c39836eafe07496dc13c1c6935e59b0490249af5b05a1becfb7ab.zip new file mode 100644 index 0000000000000000000000000000000000000000..99ef52652f442b6957e1e2afeea90ee29b6e1dec GIT binary patch literal 331 zcmWIWW@Zs#-~d7f21Ou70FX##UP@|(URJSb@4>vo3IZH743>g#6~{>J$w=}gn6Eq>v+QXt{5#bXbddmj(!ExXCN@rhAe@!_d@ zThHo=FEo5(^JXdQ_46(3uDHb4JlNkhd&81esdkM&Ja$~G<#PmX=T7EQ&-ik;Sa~u3 zqPGhs-D--*p$hxn+|5 zI#{mr=!?#Ew{AJwUWp2hKXJKqwXcL { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.SHA256, + checksumConstructor: () => runtimeConfig.sha256 + }); + } + if (runtimeConfig.md5 != void 0) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.MD5, + checksumConstructor: () => runtimeConfig.md5 + }); + } + return { + _checksumAlgorithms: checksumAlgorithms, + addChecksumAlgorithm(algo) { + this._checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return this._checksumAlgorithms; + } + }; + }; + exports.getChecksumConfiguration = getChecksumConfiguration; + var resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; + }; + exports.resolveChecksumRuntimeConfig = resolveChecksumRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js +var require_defaultClientConfiguration = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/defaultClientConfiguration.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.resolveDefaultRuntimeConfig = exports.getDefaultClientConfiguration = void 0; + var checksum_1 = require_checksum2(); + var getDefaultClientConfiguration = (runtimeConfig) => { + return { + ...(0, checksum_1.getChecksumConfiguration)(runtimeConfig) + }; + }; + exports.getDefaultClientConfiguration = getDefaultClientConfiguration; + var resolveDefaultRuntimeConfig = (config) => { + return { + ...(0, checksum_1.resolveChecksumRuntimeConfig)(config) + }; + }; + exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig; + } +}); + +// ../../../node_modules/@smithy/types/dist-cjs/extensions/index.js +var require_extensions = __commonJS({ + "../../../node_modules/@smithy/types/dist-cjs/extensions/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_defaultClientConfiguration(), exports); + } +}); + // ../../../node_modules/@smithy/types/dist-cjs/http.js var require_http = __commonJS({ "../../../node_modules/@smithy/types/dist-cjs/http.js"(exports) { @@ -1756,6 +1838,7 @@ var require_dist_cjs = __commonJS({ tslib_1.__exportStar(require_endpoint(), exports); tslib_1.__exportStar(require_endpoints(), exports); tslib_1.__exportStar(require_eventStream(), exports); + tslib_1.__exportStar(require_extensions(), exports); tslib_1.__exportStar(require_http(), exports); tslib_1.__exportStar(require_identity2(), exports); tslib_1.__exportStar(require_logger(), exports); @@ -5224,7 +5307,7 @@ var require_blob_types = __commonJS({ }); // ../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js -var require_checksum2 = __commonJS({ +var require_checksum3 = __commonJS({ "../../../node_modules/@aws-sdk/types/dist-cjs/checksum.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); @@ -5518,7 +5601,7 @@ var require_dist_cjs17 = __commonJS({ tslib_1.__exportStar(require_abort2(), exports); tslib_1.__exportStar(require_auth2(), exports); tslib_1.__exportStar(require_blob_types(), exports); - tslib_1.__exportStar(require_checksum2(), exports); + tslib_1.__exportStar(require_checksum3(), exports); tslib_1.__exportStar(require_client2(), exports); tslib_1.__exportStar(require_command2(), exports); tslib_1.__exportStar(require_connection2(), exports); @@ -10396,7 +10479,7 @@ var require_package = __commonJS({ module2.exports = { name: "@aws-sdk/client-sfn", description: "AWS SDK for JavaScript Sfn Client for Node.js, Browser and React Native", - version: "3.388.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -10416,37 +10499,37 @@ var require_package = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.388.0", - "@aws-sdk/credential-provider-node": "3.388.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-signing": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/client-sts": "3.391.0", + "@aws-sdk/credential-provider-node": "3.391.0", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-signing": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", tslib: "^2.5.0" @@ -10535,7 +10618,7 @@ var require_package2 = __commonJS({ module2.exports = { name: "@aws-sdk/client-sts", description: "AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native", - version: "3.388.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -10557,37 +10640,37 @@ var require_package2 = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/credential-provider-node": "3.388.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-sdk-sts": "3.387.0", - "@aws-sdk/middleware-signing": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/credential-provider-node": "3.391.0", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-sdk-sts": "3.391.0", + "@aws-sdk/middleware-signing": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", "fast-xml-parser": "4.2.5", @@ -14806,7 +14889,7 @@ var require_package3 = __commonJS({ module2.exports = { name: "@aws-sdk/client-sso", description: "AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native", - version: "3.387.0", + version: "3.391.0", scripts: { build: "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", "build:cjs": "tsc -p tsconfig.cjs.json", @@ -14826,34 +14909,34 @@ var require_package3 = __commonJS({ dependencies: { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.387.0", - "@aws-sdk/middleware-logger": "3.387.0", - "@aws-sdk/middleware-recursion-detection": "3.387.0", - "@aws-sdk/middleware-user-agent": "3.387.0", - "@aws-sdk/types": "3.387.0", - "@aws-sdk/util-endpoints": "3.387.0", - "@aws-sdk/util-user-agent-browser": "3.387.0", - "@aws-sdk/util-user-agent-node": "3.387.0", - "@smithy/config-resolver": "^2.0.2", - "@smithy/fetch-http-handler": "^2.0.2", - "@smithy/hash-node": "^2.0.2", - "@smithy/invalid-dependency": "^2.0.2", - "@smithy/middleware-content-length": "^2.0.2", - "@smithy/middleware-endpoint": "^2.0.2", - "@smithy/middleware-retry": "^2.0.2", - "@smithy/middleware-serde": "^2.0.2", + "@aws-sdk/middleware-host-header": "3.391.0", + "@aws-sdk/middleware-logger": "3.391.0", + "@aws-sdk/middleware-recursion-detection": "3.391.0", + "@aws-sdk/middleware-user-agent": "3.391.0", + "@aws-sdk/types": "3.391.0", + "@aws-sdk/util-endpoints": "3.391.0", + "@aws-sdk/util-user-agent-browser": "3.391.0", + "@aws-sdk/util-user-agent-node": "3.391.0", + "@smithy/config-resolver": "^2.0.3", + "@smithy/fetch-http-handler": "^2.0.3", + "@smithy/hash-node": "^2.0.3", + "@smithy/invalid-dependency": "^2.0.3", + "@smithy/middleware-content-length": "^2.0.3", + "@smithy/middleware-endpoint": "^2.0.3", + "@smithy/middleware-retry": "^2.0.3", + "@smithy/middleware-serde": "^2.0.3", "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.2", - "@smithy/node-http-handler": "^2.0.2", - "@smithy/protocol-http": "^2.0.2", - "@smithy/smithy-client": "^2.0.2", - "@smithy/types": "^2.1.0", - "@smithy/url-parser": "^2.0.2", + "@smithy/node-config-provider": "^2.0.3", + "@smithy/node-http-handler": "^2.0.3", + "@smithy/protocol-http": "^2.0.3", + "@smithy/smithy-client": "^2.0.3", + "@smithy/types": "^2.2.0", + "@smithy/url-parser": "^2.0.3", "@smithy/util-base64": "^2.0.0", "@smithy/util-body-length-browser": "^2.0.0", "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.2", - "@smithy/util-defaults-mode-node": "^2.0.2", + "@smithy/util-defaults-mode-browser": "^2.0.3", + "@smithy/util-defaults-mode-node": "^2.0.3", "@smithy/util-retry": "^2.0.0", "@smithy/util-utf8": "^2.0.0", tslib: "^2.5.0" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/lambda-logssubscription-integ.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/lambda-logssubscription-integ.assets.json index 020b2327680e7..6e7e5bc6cdeef 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/lambda-logssubscription-integ.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/lambda-logssubscription-integ.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "d338402de2b8b5577dc1a0490725a97b1ba218a8d0b2d35ea0ced080554a6ee5": { + "bd78339fed9b30f484dc9edf39147adec5b2092338273253436cbd20bb244339": { "source": { "path": "lambda-logssubscription-integ.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "d338402de2b8b5577dc1a0490725a97b1ba218a8d0b2d35ea0ced080554a6ee5.json", + "objectKey": "bd78339fed9b30f484dc9edf39147adec5b2092338273253436cbd20bb244339.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/lambda-logssubscription-integ.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/lambda-logssubscription-integ.template.json index 7752a275ad436..43b11c219956a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/lambda-logssubscription-integ.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/lambda-logssubscription-integ.template.json @@ -238,7 +238,7 @@ ] }, "Delete": "{\"service\":\"CloudWatchLogs\",\"action\":\"deleteResourcePolicy\",\"parameters\":{\"policyName\":\"lambdalogssubscriptionintegEventsLogGroupPolicylambdalogssubscriptionintegCustomRuleBA3E2AD7F3616134\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "EventsLogGroupPolicylambdalogssubscriptionintegCustomRuleBA3E2AD7CustomResourcePolicy0DA87EF1" @@ -308,7 +308,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/manifest.json index d453b59895a03..f353daa198d9e 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/d338402de2b8b5577dc1a0490725a97b1ba218a8d0b2d35ea0ced080554a6ee5.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/bd78339fed9b30f484dc9edf39147adec5b2092338273253436cbd20bb244339.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -87,6 +87,12 @@ "data": "CustomRuleB1CBBADE" } ], + "/lambda-logssubscription-integ/EventsLogGroupPolicylambdalogssubscriptionintegCustomRuleBA3E2AD7": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/lambda-logssubscription-integ/EventsLogGroupPolicylambdalogssubscriptionintegCustomRuleBA3E2AD7/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -148,7 +154,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/c1d2086d6e491024ccf5ae6e2ec76bc1cb174a150a7a0f66465dc299575182e1.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/725f3f8ae4d3206e7efe91a058bf9c3e31ee64bb5dad9c3c2dd1197e60a32c76.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/tree.json index 3153cf32cd800..4f7d49bd9149e 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-logs-destinations/test/integ.lambda.js.snapshot/tree.json @@ -531,7 +531,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/cdk-integ-opensearch-custom-kms-key.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/cdk-integ-opensearch-custom-kms-key.assets.json index e658964c087f8..6a1ef6e46a9d5 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/cdk-integ-opensearch-custom-kms-key.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/cdk-integ-opensearch-custom-kms-key.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "cf6d254bc4102ef4b7aa36d06d8731088f36337c132dfc14b47376b8ff673920": { + "b072c207781a5005869487486f0102e1e46667f0349c3b3123f7b96c86bab019": { "source": { "path": "cdk-integ-opensearch-custom-kms-key.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cf6d254bc4102ef4b7aa36d06d8731088f36337c132dfc14b47376b8ff673920.json", + "objectKey": "b072c207781a5005869487486f0102e1e46667f0349c3b3123f7b96c86bab019.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/cdk-integ-opensearch-custom-kms-key.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/cdk-integ-opensearch-custom-kms-key.template.json index 084fd98d30fb8..93a24757445d4 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/cdk-integ-opensearch-custom-kms-key.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/cdk-integ-opensearch-custom-kms-key.template.json @@ -126,7 +126,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "DomainAccessPolicyCustomResourcePolicyE61F1845" @@ -228,7 +228,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/manifest.json index 378cca77158a3..8f2e49a8dbf9a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/cf6d254bc4102ef4b7aa36d06d8731088f36337c132dfc14b47376b8ff673920.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/b072c207781a5005869487486f0102e1e46667f0349c3b3123f7b96c86bab019.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -45,6 +45,12 @@ "data": "Domain66AC69E0" } ], + "/cdk-integ-opensearch-custom-kms-key/Domain/AccessPolicy": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/cdk-integ-opensearch-custom-kms-key/Domain/AccessPolicy/Resource/Default": [ { "type": "aws:cdk:logicalId", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/tree.json index abf3c259aef4d..14c2a416f4c27 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.custom-kms-key.js.snapshot/tree.json @@ -334,7 +334,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsa0JBQTBCO0lBQzVFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xELFFBQVEsQ0FBQyxFQUFFO1lBQ1QsS0FBSyxzQ0FBOEI7Z0JBQ2pDLE9BQU8sa0JBQWtCLENBQUM7WUFDNUI7Z0JBQ0UsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVRELGtEQVNDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixVQUFVLENBQUMsTUFBYyxFQUFFLElBQThCO0lBQ3ZFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDMUIsTUFBTSxDQUNMLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ3BCLENBQUMsQ0FBQyxHQUFHLEVBQ1AsRUFBRSxDQUNILENBQUM7QUFDTixDQUFDO0FBUkQsZ0NBUUM7QUFJRCxTQUFnQixPQUFPLENBQUMsS0FBWSxFQUFFLGNBQXNCLEVBQUUsTUFBYyxFQUFFLGtCQUEwQixFQUFFLElBQVM7SUFDakgsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxNQUFNLEVBQUUsY0FBYztRQUN0QixNQUFNLEVBQUUsTUFBTTtRQUNkLGtCQUFrQixFQUFFLGtCQUFrQjtRQUN0QyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7UUFDMUMsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsSUFBSTtLQUNYLENBQUMsQ0FBQztJQUVILHNDQUFzQztJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV4QyxpRUFBaUU7SUFDakUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsTUFBTSxjQUFjLEdBQUc7UUFDckIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1FBQzVCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRTtZQUNQLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztTQUMxRDtLQUNGLENBQUM7SUFFRixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUk7WUFDRixpRUFBaUU7WUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1QixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDZjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1g7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUF0Q0QsMEJBc0NDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLElBQXdCO0lBQ2pELElBQUksQ0FBQyxJQUFJLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBSEQsZ0NBR0M7QUFFRCxTQUFnQixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/cdk-integ-opensearch.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/cdk-integ-opensearch.assets.json index a05a46a351204..7344c9b35946f 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/cdk-integ-opensearch.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/cdk-integ-opensearch.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "ce6e75bf3cdf510cdcdbfa8a7df2329ae432033c5c58209c24a71caddaa49e4c": { + "4bbcc696b5ac8948a1ae22b870387ba4be60c6381cc91f0beb6d22fa8385dbd0": { "source": { "path": "cdk-integ-opensearch.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "ce6e75bf3cdf510cdcdbfa8a7df2329ae432033c5c58209c24a71caddaa49e4c.json", + "objectKey": "4bbcc696b5ac8948a1ae22b870387ba4be60c6381cc91f0beb6d22fa8385dbd0.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/cdk-integ-opensearch.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/cdk-integ-opensearch.template.json index 76da9abc36c86..1aa9c92319c0b 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/cdk-integ-opensearch.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/cdk-integ-opensearch.template.json @@ -70,7 +70,7 @@ ] }, "Delete": "{\"service\":\"CloudWatchLogs\",\"action\":\"deleteResourcePolicy\",\"parameters\":{\"policyName\":\"ESLogPolicyc881416c4fcb1ec2b4bf7f47a5cde4097f01ec50fc\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "Domain1ESLogGroupPolicyc881416c4fcb1ec2b4bf7f47a5cde4097f01ec50fcCustomResourcePolicyBE9BFE5D" @@ -230,7 +230,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "Domain1AccessPolicyCustomResourcePolicy3BA04487" @@ -302,7 +302,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { @@ -388,7 +388,7 @@ ] }, "Delete": "{\"service\":\"CloudWatchLogs\",\"action\":\"deleteResourcePolicy\",\"parameters\":{\"policyName\":\"ESLogPolicyc80140a7754e9c0dd4e81167ef19e15da5b55dca02\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "Domain2ESLogGroupPolicyc80140a7754e9c0dd4e81167ef19e15da5b55dca02CustomResourcePolicy2DB46870" @@ -548,7 +548,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "Domain2AccessPolicyCustomResourcePolicy7C8260FD" diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/manifest.json index cdb842dcc7f78..cc01086951771 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/ce6e75bf3cdf510cdcdbfa8a7df2329ae432033c5c58209c24a71caddaa49e4c.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/4bbcc696b5ac8948a1ae22b870387ba4be60c6381cc91f0beb6d22fa8385dbd0.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -45,6 +45,12 @@ "data": "Domain1AppLogs6E8D1D67" } ], + "/cdk-integ-opensearch/Domain1/ESLogGroupPolicyc881416c4fcb1ec2b4bf7f47a5cde4097f01ec50fc": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/cdk-integ-opensearch/Domain1/ESLogGroupPolicyc881416c4fcb1ec2b4bf7f47a5cde4097f01ec50fc/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -63,6 +69,12 @@ "data": "Domain19FCBCB91" } ], + "/cdk-integ-opensearch/Domain1/AccessPolicy": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/cdk-integ-opensearch/Domain1/AccessPolicy/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -99,6 +111,12 @@ "data": "Domain2AppLogs810876E2" } ], + "/cdk-integ-opensearch/Domain2/ESLogGroupPolicyc80140a7754e9c0dd4e81167ef19e15da5b55dca02": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/cdk-integ-opensearch/Domain2/ESLogGroupPolicyc80140a7754e9c0dd4e81167ef19e15da5b55dca02/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -117,6 +135,12 @@ "data": "Domain2644FE48C" } ], + "/cdk-integ-opensearch/Domain2/AccessPolicy": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/cdk-integ-opensearch/Domain2/AccessPolicy/Resource/Default": [ { "type": "aws:cdk:logicalId", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/tree.json index ec612b6486cd8..db51f98296ff2 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.js.snapshot/tree.json @@ -394,7 +394,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/cdk-integ-opensearch-unsignedbasicauth.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/cdk-integ-opensearch-unsignedbasicauth.assets.json index b64843c3bb10a..b2bedef44af22 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/cdk-integ-opensearch-unsignedbasicauth.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/cdk-integ-opensearch-unsignedbasicauth.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "816cbbbf0f44e5a9de745cf16f2324b2ac634287e31a48abf79f9217ca563d70": { + "06e19620909f22ac507df5eab09e0137ca6fae1d9c26b2f7d17495a203ba4aab": { "source": { "path": "cdk-integ-opensearch-unsignedbasicauth.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "816cbbbf0f44e5a9de745cf16f2324b2ac634287e31a48abf79f9217ca563d70.json", + "objectKey": "06e19620909f22ac507df5eab09e0137ca6fae1d9c26b2f7d17495a203ba4aab.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/cdk-integ-opensearch-unsignedbasicauth.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/cdk-integ-opensearch-unsignedbasicauth.template.json index 45395f9622ad5..928cb4014e24c 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/cdk-integ-opensearch-unsignedbasicauth.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/cdk-integ-opensearch-unsignedbasicauth.template.json @@ -117,7 +117,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "DomainAccessPolicyCustomResourcePolicyE61F1845" @@ -189,7 +189,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/manifest.json index 664447f41ccd5..631a082782ce2 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/816cbbbf0f44e5a9de745cf16f2324b2ac634287e31a48abf79f9217ca563d70.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/06e19620909f22ac507df5eab09e0137ca6fae1d9c26b2f7d17495a203ba4aab.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -45,6 +45,12 @@ "data": "Domain66AC69E0" } ], + "/cdk-integ-opensearch-unsignedbasicauth/Domain/AccessPolicy": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/cdk-integ-opensearch-unsignedbasicauth/Domain/AccessPolicy/Resource/Default": [ { "type": "aws:cdk:logicalId", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/tree.json index f675e6caf3055..0003b23d11583 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-opensearchservice/test/integ.opensearch.unsignedbasicauth.js.snapshot/tree.json @@ -279,7 +279,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/aws-cdk-vpc-endpoint-dns-integ.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/aws-cdk-vpc-endpoint-dns-integ.assets.json index 3c16da8013044..1f04cf1b8d0bb 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/aws-cdk-vpc-endpoint-dns-integ.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/aws-cdk-vpc-endpoint-dns-integ.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "8973d9342d0142923a7754dc2fa4648ef9211d90607c7000c2d37b80d363b219": { + "2dd1aeed92e7c095ab32b5f30ab9df95f2fc00f51b9aca50d23de6454817bf29": { "source": { "path": "aws-cdk-vpc-endpoint-dns-integ.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "8973d9342d0142923a7754dc2fa4648ef9211d90607c7000c2d37b80d363b219.json", + "objectKey": "2dd1aeed92e7c095ab32b5f30ab9df95f2fc00f51b9aca50d23de6454817bf29.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/aws-cdk-vpc-endpoint-dns-integ.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/aws-cdk-vpc-endpoint-dns-integ.template.json index 160dfa961f486..8f3252da3c100 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/aws-cdk-vpc-endpoint-dns-integ.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/aws-cdk-vpc-endpoint-dns-integ.template.json @@ -815,7 +815,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/manifest.json index 3789c6d5396a7..9637b0d6415f4 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/8973d9342d0142923a7754dc2fa4648ef9211d90607c7000c2d37b80d363b219.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/2dd1aeed92e7c095ab32b5f30ab9df95f2fc00f51b9aca50d23de6454817bf29.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/tree.json index 99a56eeecca24..a1756e54eadb9 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.vpc-endpoint-service-domain-name.js.snapshot/tree.json @@ -1159,7 +1159,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLEVBQUUsRUFDRixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDcEIsQ0FBQztBQUNKLENBQUM7QUFkRCwwQkFjQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsTUFBYyxFQUFFLGtCQUEwQjtJQUM1RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNsRCxRQUFRLENBQUMsRUFBRTtZQUNULEtBQUssc0NBQThCO2dCQUNqQyxPQUFPLGtCQUFrQixDQUFDO1lBQzVCO2dCQUNFLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFURCxrREFTQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE1BQWMsRUFBRSxJQUE4QjtJQUN2RSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQzFCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNwQixDQUFDLENBQUMsR0FBRyxFQUNQLEVBQUUsQ0FDSCxDQUFDO0FBQ04sQ0FBQztBQVJELGdDQVFDO0FBSUQsU0FBZ0IsT0FBTyxDQUFDLEtBQVksRUFBRSxjQUFzQixFQUFFLE1BQWMsRUFBRSxrQkFBMEIsRUFBRSxJQUFTO0lBQ2pILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEMsTUFBTSxFQUFFLGNBQWM7UUFDdEIsTUFBTSxFQUFFLE1BQU07UUFDZCxrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSCxzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFeEMsaUVBQWlFO0lBQ2pFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELE1BQU0sY0FBYyxHQUFHO1FBQ3JCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtRQUM1QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUU7WUFDUCxjQUFjLEVBQUUsRUFBRTtZQUNsQixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUM7U0FDMUQ7S0FDRixDQUFDO0lBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxJQUFJO1lBQ0YsaUVBQWlFO1lBQ2pFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsa0JBQTBCO0lBQzVFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xELFFBQVEsQ0FBQyxFQUFFO1lBQ1QsS0FBSyxzQ0FBOEI7Z0JBQ2pDLE9BQU8sa0JBQWtCLENBQUM7WUFDNUI7Z0JBQ0UsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVRELGtEQVNDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixVQUFVLENBQUMsTUFBYyxFQUFFLElBQThCO0lBQ3ZFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDMUIsTUFBTSxDQUNMLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ3BCLENBQUMsQ0FBQyxHQUFHLEVBQ1AsRUFBRSxDQUNILENBQUM7QUFDTixDQUFDO0FBUkQsZ0NBUUM7QUFJRCxTQUFnQixPQUFPLENBQUMsS0FBWSxFQUFFLGNBQXNCLEVBQUUsTUFBYyxFQUFFLGtCQUEwQixFQUFFLElBQVM7SUFDakgsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxNQUFNLEVBQUUsY0FBYztRQUN0QixNQUFNLEVBQUUsTUFBTTtRQUNkLGtCQUFrQixFQUFFLGtCQUFrQjtRQUN0QyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7UUFDMUMsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsSUFBSTtLQUNYLENBQUMsQ0FBQztJQUVILHNDQUFzQztJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV4QyxpRUFBaUU7SUFDakUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsTUFBTSxjQUFjLEdBQUc7UUFDckIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1FBQzVCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRTtZQUNQLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztTQUMxRDtLQUNGLENBQUM7SUFFRixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUk7WUFDRixpRUFBaUU7WUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1QixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDZjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1g7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUF0Q0QsMEJBc0NDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLElBQXdCO0lBQ2pELElBQUksQ0FBQyxJQUFJLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBSEQsZ0NBR0M7QUFFRCxTQUFnQixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/cdk-s3-bucket-auto-delete-objects.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/cdk-s3-bucket-auto-delete-objects.assets.json index befd65f1d3146..e5a83da44f6d1 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/cdk-s3-bucket-auto-delete-objects.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/cdk-s3-bucket-auto-delete-objects.assets.json @@ -27,20 +27,20 @@ } } }, - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "41e9944f400b2655416b1af760056d00f3aa0a91d1b01c857fe04b621f00b097": { + "79fa68e972898219a5b9dc2b9ff159d76c901fff8c49cff22afe786fd60315bd": { "source": { "path": "cdk-s3-bucket-auto-delete-objects.template.json", "packaging": "file" @@ -48,7 +48,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "41e9944f400b2655416b1af760056d00f3aa0a91d1b01c857fe04b621f00b097.json", + "objectKey": "79fa68e972898219a5b9dc2b9ff159d76c901fff8c49cff22afe786fd60315bd.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/cdk-s3-bucket-auto-delete-objects.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/cdk-s3-bucket-auto-delete-objects.template.json index 6d548ed2c311d..2f9ef14e4dcff 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/cdk-s3-bucket-auto-delete-objects.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/cdk-s3-bucket-auto-delete-objects.template.json @@ -342,7 +342,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "DeleteBucketCustomResourcePolicy99AB6B27" @@ -414,7 +414,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/manifest.json index 4eae6320c2f59..09ed08ea9c6b4 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/41e9944f400b2655416b1af760056d00f3aa0a91d1b01c857fe04b621f00b097.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/79fa68e972898219a5b9dc2b9ff159d76c901fff8c49cff22afe786fd60315bd.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -99,6 +99,12 @@ "data": "RemovedBucketAutoDeleteObjectsCustomResourceDE96EADE" } ], + "/cdk-s3-bucket-auto-delete-objects/DeleteBucket": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/cdk-s3-bucket-auto-delete-objects/DeleteBucket/Resource/Default": [ { "type": "aws:cdk:logicalId", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/tree.json index e84e2c4b8c303..19e3ea7545a3a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-s3/test/integ.bucket-auto-delete-objects.js.snapshot/tree.json @@ -503,7 +503,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/aws-cdk-customresources-athena.assets.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/aws-cdk-customresources-athena.assets.json index cd8d0559c212f..7a918a90445c9 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/aws-cdk-customresources-athena.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/aws-cdk-customresources-athena.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "8bd023db41a39938041d9ea6e2f4d6fb968dcce253cd7fede116fddf9fcc47a2": { + "7972e87a087b9f71e52b066a01f0c2ceb889b6a40ce2dd6e90ab2fa5144140dd": { "source": { "path": "aws-cdk-customresources-athena.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "8bd023db41a39938041d9ea6e2f4d6fb968dcce253cd7fede116fddf9fcc47a2.json", + "objectKey": "7972e87a087b9f71e52b066a01f0c2ceb889b6a40ce2dd6e90ab2fa5144140dd.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/aws-cdk-customresources-athena.template.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/aws-cdk-customresources-athena.template.json index d1f0ea6393318..1122a5cfd3538 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/aws-cdk-customresources-athena.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/aws-cdk-customresources-athena.template.json @@ -161,7 +161,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/manifest.json index a89ee53be1dc5..ec8f9c5612823 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/8bd023db41a39938041d9ea6e2f4d6fb968dcce253cd7fede116fddf9fcc47a2.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/7972e87a087b9f71e52b066a01f0c2ceb889b6a40ce2dd6e90ab2fa5144140dd.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/tree.json index 7fa041fbd2b2a..b5d3364398973 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-athena.js.snapshot/tree.json @@ -273,7 +273,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/aws-cdk-customresources-vpc.assets.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/aws-cdk-customresources-vpc.assets.json index eee117fc9693c..0da9b1df7720b 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/aws-cdk-customresources-vpc.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/aws-cdk-customresources-vpc.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "e156e994bd8b199ada07e704f8e41973d5a4754bb6850d96a2d271a56427aaac": { + "2fce543a9b15be3ef8efef63a88ed521bcf800d891ca815b68663dfd8a19cc9a": { "source": { "path": "aws-cdk-customresources-vpc.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "e156e994bd8b199ada07e704f8e41973d5a4754bb6850d96a2d271a56427aaac.json", + "objectKey": "2fce543a9b15be3ef8efef63a88ed521bcf800d891ca815b68663dfd8a19cc9a.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/aws-cdk-customresources-vpc.template.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/aws-cdk-customresources-vpc.template.json index b4d9d7e2d65b2..b38935b84fbe0 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/aws-cdk-customresources-vpc.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/aws-cdk-customresources-vpc.template.json @@ -432,7 +432,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "DescribeVpcAttributeCustomResourcePolicyAF7C66C1" @@ -539,7 +539,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/manifest.json index f8aeb4cb40b9c..4f5665b30f3ca 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/e156e994bd8b199ada07e704f8e41973d5a4754bb6850d96a2d271a56427aaac.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/2fce543a9b15be3ef8efef63a88ed521bcf800d891ca815b68663dfd8a19cc9a.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -171,6 +171,12 @@ "data": "VpcVPCGWBF912B6E" } ], + "/aws-cdk-customresources-vpc/DescribeVpcAttribute": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-customresources-vpc/DescribeVpcAttribute/Resource/Default": [ { "type": "aws:cdk:logicalId", diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/tree.json index dd3985f355979..e45b9f46b61e9 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource-vpc.js.snapshot/tree.json @@ -869,7 +869,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v2-handler.js rename to packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js similarity index 100% rename from packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/index.js rename to packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js deleted file mode 100644 index 1b662725f1b0b..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/aws-sdk-v3-handler.bundled.js +++ /dev/null @@ -1,769 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts -var CLIENT_NAMES; -var init_client_names = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { - "use strict"; - CLIENT_NAMES = [ - "ACM", - "ACMPCA", - "APIGateway", - "ARCZonalShift", - "AccessAnalyzer", - "Account", - "AlexaForBusiness", - "Amp", - "Amplify", - "AmplifyBackend", - "AmplifyUIBuilder", - "ApiGatewayManagementApi", - "ApiGatewayV2", - "AppConfig", - "AppConfigData", - "AppIntegrations", - "AppMesh", - "AppRunner", - "AppStream", - "AppSync", - "Appflow", - "ApplicationAutoScaling", - "ApplicationCostProfiler", - "ApplicationInsights", - "Athena", - "AuditManager", - "AugmentedAIRuntime", - "AutoScaling", - "AutoScalingPlans", - "Backup", - "BackupGateway", - "BackupStorage", - "Batch", - "Billingconductor", - "Braket", - "Budgets", - "CUR", - "Chime", - "ChimeSDKIdentity", - "ChimeSDKMediaPipelines", - "ChimeSDKMeetings", - "ChimeSDKMessaging", - "ChimeSDKVoice", - "Cloud9", - "CloudControl", - "CloudDirectory", - "CloudFormation", - "CloudFront", - "CloudHSM", - "CloudHSMV2", - "CloudSearch", - "CloudSearchDomain", - "CloudTrail", - "CloudWatch", - "CloudWatchEvents", - "CloudWatchLogs", - "CodeArtifact", - "CodeBuild", - "CodeCatalyst", - "CodeCommit", - "CodeDeploy", - "CodeGuruProfiler", - "CodeGuruReviewer", - "CodePipeline", - "CodeStar", - "CodeStarNotifications", - "CodeStarconnections", - "CognitoIdentity", - "CognitoIdentityServiceProvider", - "CognitoSync", - "Comprehend", - "ComprehendMedical", - "ComputeOptimizer", - "ConfigService", - "Connect", - "ConnectCampaigns", - "ConnectCases", - "ConnectContactLens", - "ConnectParticipant", - "ControlTower", - "CostExplorer", - "CustomerProfiles", - "DAX", - "DLM", - "DMS", - "DataBrew", - "DataExchange", - "DataPipeline", - "DataSync", - "Detective", - "DevOpsGuru", - "DeviceFarm", - "DirectConnect", - "DirectoryService", - "Discovery", - "DocDB", - "DocDBElastic", - "Drs", - "DynamoDB", - "DynamoDBStreams", - "EBS", - "EC2", - "EC2InstanceConnect", - "ECR", - "ECRPUBLIC", - "ECS", - "EFS", - "EKS", - "ELB", - "ELBv2", - "EMR", - "EMRServerless", - "EMRcontainers", - "ES", - "ElastiCache", - "ElasticBeanstalk", - "ElasticInference", - "ElasticTranscoder", - "EventBridge", - "Evidently", - "FMS", - "FSx", - "Finspace", - "Finspacedata", - "Firehose", - "Fis", - "ForecastQueryService", - "ForecastService", - "FraudDetector", - "GameLift", - "GameSparks", - "Glacier", - "GlobalAccelerator", - "Glue", - "Grafana", - "Greengrass", - "GreengrassV2", - "GroundStation", - "GuardDuty", - "Health", - "HealthLake", - "Honeycode", - "IAM", - "IVS", - "IdentityStore", - "Imagebuilder", - "Inspector", - "Inspector2", - "IoT1ClickDevicesService", - "IoT1ClickProjects", - "IoTAnalytics", - "IoTEvents", - "IoTEventsData", - "IoTFleetHub", - "IoTFleetWise", - "IoTJobsDataPlane", - "IoTRoboRunner", - "IoTSecureTunneling", - "IoTSiteWise", - "IoTThingsGraph", - "IoTTwinMaker", - "IoTWireless", - "Iot", - "IotData", - "IotDeviceAdvisor", - "Ivschat", - "KMS", - "Kafka", - "KafkaConnect", - "Kendra", - "Keyspaces", - "Kinesis", - "KinesisAnalytics", - "KinesisAnalyticsV2", - "KinesisVideo", - "KinesisVideoArchivedMedia", - "KinesisVideoMedia", - "KinesisVideoSignalingChannels", - "KinesisVideoWebRTCStorage", - "LakeFormation", - "Lambda", - "LexModelBuildingService", - "LexModelsV2", - "LexRuntime", - "LexRuntimeV2", - "LicenseManager", - "LicenseManagerLinuxSubscriptions", - "LicenseManagerUserSubscriptions", - "Lightsail", - "Location", - "LookoutEquipment", - "LookoutMetrics", - "LookoutVision", - "M2", - "MQ", - "MTurk", - "MWAA", - "MachineLearning", - "Macie", - "Macie2", - "ManagedBlockchain", - "MarketplaceCatalog", - "MarketplaceCommerceAnalytics", - "MarketplaceEntitlementService", - "MarketplaceMetering", - "MediaConnect", - "MediaConvert", - "MediaLive", - "MediaPackage", - "MediaPackageVod", - "MediaStore", - "MediaStoreData", - "MediaTailor", - "MemoryDB", - "Mgn", - "MigrationHub", - "MigrationHubConfig", - "MigrationHubOrchestrator", - "MigrationHubRefactorSpaces", - "MigrationHubStrategy", - "Mobile", - "Neptune", - "NetworkFirewall", - "NetworkManager", - "Nimble", - "OAM", - "Omics", - "OpenSearch", - "OpenSearchServerless", - "OpsWorks", - "OpsWorksCM", - "Organizations", - "Outposts", - "PI", - "Panorama", - "Personalize", - "PersonalizeEvents", - "PersonalizeRuntime", - "Pinpoint", - "PinpointEmail", - "PinpointSMSVoice", - "PinpointSMSVoiceV2", - "Pipes", - "Polly", - "Pricing", - "PrivateNetworks", - "Proton", - "QLDB", - "QLDBSession", - "QuickSight", - "RAM", - "RDS", - "RDSDataService", - "RUM", - "Rbin", - "Redshift", - "RedshiftData", - "RedshiftServerless", - "Rekognition", - "Resiliencehub", - "ResourceExplorer2", - "ResourceGroups", - "ResourceGroupsTaggingAPI", - "RoboMaker", - "RolesAnywhere", - "Route53", - "Route53Domains", - "Route53RecoveryCluster", - "Route53RecoveryControlConfig", - "Route53RecoveryReadiness", - "Route53Resolver", - "S3", - "S3Control", - "S3Outposts", - "SES", - "SESV2", - "SMS", - "SNS", - "SQS", - "SSM", - "SSMContacts", - "SSMIncidents", - "SSO", - "SSOAdmin", - "SSOOIDC", - "STS", - "SWF", - "SageMaker", - "SageMakerFeatureStoreRuntime", - "SageMakerGeospatial", - "SageMakerMetrics", - "SageMakerRuntime", - "SagemakerEdge", - "SavingsPlans", - "Scheduler", - "Schemas", - "SecretsManager", - "SecurityHub", - "SecurityLake", - "ServerlessApplicationRepository", - "ServiceCatalog", - "ServiceCatalogAppRegistry", - "ServiceDiscovery", - "ServiceQuotas", - "Shield", - "Signer", - "SimSpaceWeaver", - "SnowDeviceManagement", - "Snowball", - "SsmSap", - "StepFunctions", - "StorageGateway", - "Support", - "SupportApp", - "Synthetics", - "Textract", - "TimestreamQuery", - "TimestreamWrite", - "TranscribeService", - "Transfer", - "Translate", - "VoiceID", - "WAF", - "WAFRegional", - "WAFV2", - "WellArchitected", - "Wisdom", - "WorkDocs", - "WorkLink", - "WorkMail", - "WorkMailMessageFlow", - "WorkSpaces", - "WorkSpacesWeb", - "XRay" - ]; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts -var CLIENT_PACKAGE_NAMES_MAP; -var init_client_package_names_map = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { - "use strict"; - init_client_names(); - CLIENT_PACKAGE_NAMES_MAP = { - ...CLIENT_NAMES.reduce( - (acc, name) => ({ - ...acc, - [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") - }), - {} - ), - AccessAnalyzer: "client-accessanalyzer", - ACMPCA: "client-acm-pca", - APIGateway: "client-api-gateway", - ApiGatewayManagementApi: "client-apigatewaymanagementapi", - ApiGatewayV2: "client-apigatewayv2", - AppConfig: "client-appconfig", - AppConfigData: "client-appconfigdata", - AppIntegrations: "client-appintegrations", - AppRunner: "client-apprunner", - AppStream: "client-appstream", - AppSync: "client-appsync", - ApplicationCostProfiler: "client-applicationcostprofiler", - ARCZonalShift: "client-arc-zonal-shift", - AugmentedAIRuntime: "client-sage-maker-a2iruntime", - AuditManager: "client-auditmanager", - BackupStorage: "client-backupstorage", - CUR: "client-cost-and-usage-report-service", - CloudHSMV2: "client-cloudhsm-v2", - CodeGuruProfiler: "client-codeguruprofiler", - CodeStarconnections: "client-codestar-connections", - CognitoIdentityServiceProvider: "client-cognito-identity-provider", - ComprehendMedical: "client-comprehendmedical", - ConnectContactLens: "client-connect-contact-lens", - ControlTower: "client-controltower", - DMS: "client-database-migration-service", - DataPipeline: "client-data-pipeline", - Discovery: "client-application-discovery-service", - DevOpsGuru: "client-devops-guru", - DynamoDB: "client-dynamodb", - DynamoDBStreams: "client-dynamodb-streams", - DocDB: "client-docdb", - DocDBElastic: "client-docdb-elastic", - EC2InstanceConnect: "client-ec2-instance-connect", - ECRPUBLIC: "client-ecr-public", - ELB: "client-elastic-load-balancing", - ELBv2: "client-elastic-load-balancing-v2", - ElastiCache: "client-elasticache", - EMRcontainers: "client-emr-containers", - EMRServerless: "client-emr-serverless", - ES: "client-elasticsearch-service", - EventBridge: "client-eventbridge", - Finspacedata: "client-finspace-data", - ForecastQueryService: "client-forecastquery", - ForecastService: "client-forecast", - FraudDetector: "client-frauddetector", - GameLift: "client-gamelift", - GameSparks: "client-gamesparks", - GreengrassV2: "client-greengrassv2", - GroundStation: "client-groundstation", - GuardDuty: "client-guardduty", - HealthLake: "client-healthlake", - IdentityStore: "client-identitystore", - IoTAnalytics: "client-iotanalytics", - IotData: "client-iot-data-plane", - IotDeviceAdvisor: "client-iotdeviceadvisor", - IoTSecureTunneling: "client-iotsecuretunneling", - IoTSiteWise: "client-iotsitewise", - IoTThingsGraph: "client-iotthingsgraph", - IoTTwinMaker: "client-iottwinmaker", - IoTRoboRunner: "client-iot-roborunner", - KafkaConnect: "client-kafkaconnect", - KinesisVideoSignalingChannels: "client-kinesis-video-signaling", - KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", - LakeFormation: "client-lakeformation", - LexRuntime: "client-lex-runtime-service", - ManagedBlockchain: "client-managedblockchain", - MigrationHubConfig: "client-migrationhub-config", - MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", - NetworkManager: "client-networkmanager", - OpenSearch: "client-opensearch", - OpenSearchServerless: "client-opensearchserverless", - OpsWorks: "client-opsworks", - OpsWorksCM: "client-opsworkscm", - PrivateNetworks: "client-privatenetworks", - QLDBSession: "client-qldb-session", - QuickSight: "client-quicksight", - ResourceExplorer2: "client-resource-explorer-2", - RDSDataService: "client-rds-data", - RoboMaker: "client-robomaker", - RolesAnywhere: "client-rolesanywhere", - Route53: "client-route-53", - Route53Domains: "client-route-53-domains", - Route53Resolver: "client-route53resolver", - S3Control: "client-s3-control", - SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", - SavingsPlans: "client-savingsplans", - SecurityHub: "client-securityhub", - ServerlessApplicationRepository: "client-serverlessapplicationrepository", - ServiceCatalogAppRegistry: "client-service-catalog-appregistry", - ServiceDiscovery: "client-servicediscovery", - SimSpaceWeaver: "client-simspaceweaver", - SSMContacts: "client-ssm-contacts", - SSMIncidents: "client-ssm-incidents", - SSOAdmin: "client-sso-admin", - SSOOIDC: "client-sso-oidc", - StepFunctions: "client-sfn", - TranscribeService: "client-transcribe", - WAFRegional: "client-waf-regional", - WellArchitected: "client-wellarchitected", - WorkMailMessageFlow: "client-workmailmessageflow" - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts -var get_v3_client_package_name_exports = {}; -__export(get_v3_client_package_name_exports, { - getV3ClientPackageName: () => getV3ClientPackageName -}); -var getV3ClientPackageName; -var init_get_v3_client_package_name = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { - "use strict"; - init_client_package_names_map(); - getV3ClientPackageName = (clientName) => { - if (clientName in CLIENT_PACKAGE_NAMES_MAP) { - return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; - } - throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); - }; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts -var find_client_constructor_exports = {}; -__export(find_client_constructor_exports, { - findV3ClientConstructor: () => findV3ClientConstructor -}); -function findV3ClientConstructor(pkg) { - const [_clientName, ServiceClient] = Object.entries(pkg).find( - ([name]) => { - return name.endsWith("Client") && name !== "__Client"; - } - ); - return ServiceClient; -} -var init_find_client_constructor = __esm({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { - "use strict"; - } -}); - -// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js -var require_lib = __commonJS({ - "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; - var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); - Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { - return get_v3_client_package_name_1.getV3ClientPackageName; - } }); - var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); - Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { - return find_client_constructor_1.findV3ClientConstructor; - } }); - } -}); - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var aws_sdk_v3_handler_exports = {}; -__export(aws_sdk_v3_handler_exports, { - forceSdkInstallation: () => forceSdkInstallation, - handler: () => handler -}); -module.exports = __toCommonJS(aws_sdk_v3_handler_exports); -var import_child_process = require("child_process"); -var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); - -// custom-resources/lib/aws-custom-resource/runtime/shared.ts -var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; -function flatten(object) { - return Object.assign( - {}, - ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child).map((key) => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString("utf8") : child[key]; - return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; - })); - }(object) - ); -} -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -function filterKeys(object, pred) { - return Object.entries(object).reduce( - (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, - {} - ); -} -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data - }); - console.log("Responding", responseBody); - const parsedUrl = require("url").parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: "PUT", - headers: { - "content-type": "", - "content-length": Buffer.byteLength(responseBody, "utf8") - } - }; - return new Promise((resolve, reject) => { - try { - const request = require("https").request(requestOptions, resolve); - request.on("error", reject); - request.write(responseBody); - request.end(); - } catch (e) { - reject(e); - } - }); -} -function decodeCall(call) { - if (!call) { - return void 0; - } - return JSON.parse(call); -} -function startsWithOneOf(searchStrings) { - return function(string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} - -// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts -var installedSdk = {}; -function forceSdkInstallation() { - installedSdk = {}; -} -function installLatestSdk(packageName) { - console.log(`Installing latest AWS SDK v3: ${packageName}`); - (0, import_child_process.execSync)( - `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` - ); - installedSdk = { - ...installedSdk, - [packageName]: true - }; -} -async function loadAwsSdk(packageName, installLatestAwsSdk) { - let awsSdk; - try { - if (!installedSdk[packageName] && installLatestAwsSdk === "true") { - try { - installLatestSdk(packageName); - awsSdk = require(`/tmp/node_modules/${packageName}`); - } catch (e) { - console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); - return require(packageName); - } - } else if (installedSdk[packageName]) { - awsSdk = require(`/tmp/node_modules/${packageName}`); - } else { - awsSdk = require(packageName); - } - } catch (error) { - throw Error(`Package ${packageName} does not exist.`); - } - return awsSdk; -} -async function handler(event, context) { - try { - event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); - event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); - event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); - let data = {}; - let physicalResourceId; - switch (event.RequestType) { - case "Create": - physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; - break; - case "Update": - case "Delete": - physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; - break; - } - const call = event.ResourceProperties[event.RequestType]; - if (call) { - const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); - let awsSdk = loadAwsSdk( - packageName, - event.ResourceProperties.InstallLatestAwsSdk - ); - console.log(JSON.stringify({ ...event, ResponseURL: "..." })); - let credentials; - if (call.assumedRoleArn) { - const timestamp = (/* @__PURE__ */ new Date()).getTime(); - const params = { - RoleArn: call.assumedRoleArn, - RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) - }; - const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); - credentials = fromTemporaryCredentials({ - params - }); - } - awsSdk = await awsSdk; - const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); - const client = new ServiceClient({ - apiVersion: call.apiVersion, - credentials, - region: call.region - }); - const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; - const Command = Object.entries(awsSdk).find( - ([name]) => name.toLowerCase() === commandName.toLowerCase() - )?.[1]; - let flatData = {}; - try { - const response = await client.send( - new Command( - (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} - ) - ); - flatData = { - apiVersion: client.config.apiVersion, - // For test purposes: check if apiVersion was correctly passed. - region: await client.config.region().catch(() => void 0), - // For test purposes: check if region was correctly passed. - ...flatten(response) - }; - let outputPaths; - if (call.outputPath) { - outputPaths = [call.outputPath]; - } else if (call.outputPaths) { - outputPaths = call.outputPaths; - } - if (outputPaths) { - data = filterKeys(flatData, startsWithOneOf(outputPaths)); - } else { - data = flatData; - } - } catch (e) { - const exceptionName = e.name ?? e.constructor.name; - if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { - throw e; - } - } - if (call.physicalResourceId?.responsePath) { - physicalResourceId = flatData[call.physicalResourceId.responsePath]; - } - } - await respond(event, "SUCCESS", "OK", physicalResourceId, data); - } catch (e) { - console.log(e); - await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); - } -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - forceSdkInstallation, - handler -}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js deleted file mode 100644 index 6c53eaeef8cd1..0000000000000 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83/shared.js +++ /dev/null @@ -1,106 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; -/** - * Serialized form of the physical resource id for use in the operation parameters - */ -exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; -/** - * Flattens a nested object - * - * @param object the object to be flattened - * @returns a flat object with path as keys - */ -function flatten(object) { - return Object.assign({}, ...function _flatten(child, path = []) { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object)); -} -exports.flatten = flatten; -/** - * Decodes encoded special values (physicalResourceId) - */ -function decodeSpecialValues(object, physicalResourceId) { - return JSON.parse(JSON.stringify(object), (_k, v) => { - switch (v) { - case exports.PHYSICAL_RESOURCE_ID_REFERENCE: - return physicalResourceId; - default: - return v; - } - }); -} -exports.decodeSpecialValues = decodeSpecialValues; -/** - * Filters the keys of an object. - */ -function filterKeys(object, pred) { - return Object.entries(object) - .reduce((acc, [k, v]) => pred(k) - ? { ...acc, [k]: v } - : acc, {}); -} -exports.filterKeys = filterKeys; -function respond(event, responseStatus, reason, physicalResourceId, data) { - const responseBody = JSON.stringify({ - Status: responseStatus, - Reason: reason, - PhysicalResourceId: physicalResourceId, - StackId: event.StackId, - RequestId: event.RequestId, - LogicalResourceId: event.LogicalResourceId, - NoEcho: false, - Data: data, - }); - // eslint-disable-next-line no-console - console.log('Responding', responseBody); - // eslint-disable-next-line @typescript-eslint/no-require-imports - const parsedUrl = require('url').parse(event.ResponseURL); - const requestOptions = { - hostname: parsedUrl.hostname, - path: parsedUrl.path, - method: 'PUT', - headers: { - 'content-type': '', - 'content-length': Buffer.byteLength(responseBody, 'utf8'), - }, - }; - return new Promise((resolve, reject) => { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const request = require('https').request(requestOptions, resolve); - request.on('error', reject); - request.write(responseBody); - request.end(); - } - catch (e) { - reject(e); - } - }); -} -exports.respond = respond; -function decodeCall(call) { - if (!call) { - return undefined; - } - return JSON.parse(call); -} -exports.decodeCall = decodeCall; -function startsWithOneOf(searchStrings) { - return function (string) { - for (const searchString of searchStrings) { - if (string.startsWith(searchString)) { - return true; - } - } - return false; - }; -} -exports.startsWithOneOf = startsWithOneOf; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7Ozs7R0FLRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIs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QixlQUFlLENBQUMsYUFBdUI7SUFDckQsT0FBTyxVQUFTLE1BQWM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qKlxuICogU2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwaHlzaWNhbCByZXNvdXJjZSBpZCBmb3IgdXNlIGluIHRoZSBvcGVyYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFID0gJ1BIWVNJQ0FMOlJFU09VUkNFSUQ6JztcblxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLmZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCguLi5PYmplY3Qua2V5cyhjaGlsZClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gQnVmZmVyLmlzQnVmZmVyKGNoaWxkW2tleV0pID8gY2hpbGRba2V5XS50b1N0cmluZygndXRmOCcpIDogY2hpbGRba2V5XTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkS2V5ID09PSAnb2JqZWN0JyAmJiBjaGlsZEtleSAhPT0gbnVsbFxuICAgICAgICAgICAgPyBfZmxhdHRlbihjaGlsZEtleSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgICB9KSk7XG4gICAgfShvYmplY3QpLFxuICApO1xufVxuXG4vKipcbiAqIERlY29kZXMgZW5jb2RlZCBzcGVjaWFsIHZhbHVlcyAocGh5c2ljYWxSZXNvdXJjZUlkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3BlY2lhbFZhbHVlcyhvYmplY3Q6IG9iamVjdCwgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgKF9rLCB2KSA9PiB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlIFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRTpcbiAgICAgICAgcmV0dXJuIHBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmlsdGVycyB0aGUga2V5cyBvZiBhbiBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJLZXlzKG9iamVjdDogb2JqZWN0LCBwcmVkOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdClcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgW2ssIHZdKSA9PiBwcmVkKGspXG4gICAgICAgID8geyAuLi5hY2MsIFtrXTogdiB9XG4gICAgICAgIDogYWNjLFxuICAgICAge30sXG4gICAgKTtcbn1cblxudHlwZSBFdmVudCA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnRcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbmQoZXZlbnQ6IEV2ZW50LCByZXNwb25zZVN0YXR1czogc3RyaW5nLCByZWFzb246IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCByZXNwb25zZUJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgU3RhdHVzOiByZXNwb25zZVN0YXR1cyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IGRhdGEsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKCdSZXNwb25kaW5nJywgcmVzcG9uc2VCb2R5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBwYXJzZWRVcmwgPSByZXF1aXJlKCd1cmwnKS5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGgsXG4gICAgbWV0aG9kOiAnUFVUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnY29udGVudC10eXBlJzogJycsXG4gICAgICAnY29udGVudC1sZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChyZXNwb25zZUJvZHksICd1dGY4JyksXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ2h0dHBzJykucmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgcmVzb2x2ZSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQ2FsbChjYWxsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFjYWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgcmV0dXJuIEpTT04ucGFyc2UoY2FsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydHNXaXRoT25lT2Yoc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiAoc3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFN0cmluZyBvZiBzZWFyY2hTdHJpbmdzKSB7XG4gICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xufSJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js-v3.assets.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js-v3.assets.json index 279df01301eb9..935cd59358df1 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js-v3.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js-v3.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "f7014d6ee9fca77abf913cdb6de3cc5313693f863b4fc8fe4ec59b5765eec3cf": { + "80951151b958a24f50acb6314e49c2f7be8df66a6376a7db7b51d369f7170477": { "source": { "path": "aws-cdk-sdk-js-v3.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "f7014d6ee9fca77abf913cdb6de3cc5313693f863b4fc8fe4ec59b5765eec3cf.json", + "objectKey": "80951151b958a24f50acb6314e49c2f7be8df66a6376a7db7b51d369f7170477.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js-v3.template.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js-v3.template.json index c9fcc96a54cb8..0c8a8e19267af 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js-v3.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js-v3.template.json @@ -44,7 +44,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "PublishCustomResourcePolicyDF696FCA" @@ -111,7 +111,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { @@ -138,7 +138,7 @@ }, "Create": "{\"service\":\"SNS\",\"action\":\"listTopics\",\"physicalResourceId\":{\"responsePath\":\"Topics.0.TopicArn\"}}", "Update": "{\"service\":\"SNS\",\"action\":\"listTopics\",\"physicalResourceId\":{\"responsePath\":\"Topics.0.TopicArn\"}}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "ListTopicsCustomResourcePolicy31A8396A", @@ -211,7 +211,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "GetParameterCustomResourcePolicyD8E5D455" @@ -311,7 +311,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" @@ -327,7 +327,7 @@ }, "Create": "{\"service\":\"EKS\",\"action\":\"describeCluster\",\"parameters\":{\"name\":\"fake-cluster\"},\"physicalResourceId\":{\"id\":\"fake-cluster\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", "Update": "{\"service\":\"EKS\",\"action\":\"describeCluster\",\"parameters\":{\"name\":\"fake-cluster\"},\"physicalResourceId\":{\"id\":\"fake-cluster\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "DescribeClusterCustomResourcePolicyD7730CF4" diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js.assets.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js.assets.json index 1a660f88d7732..84b8884186349 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js.assets.json @@ -1,20 +1,20 @@ { "version": "33.0.0", "files": { - "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { "source": { - "path": "asset.cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83", + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", "packaging": "zip" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } }, - "f7014d6ee9fca77abf913cdb6de3cc5313693f863b4fc8fe4ec59b5765eec3cf": { + "80951151b958a24f50acb6314e49c2f7be8df66a6376a7db7b51d369f7170477": { "source": { "path": "aws-cdk-sdk-js.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "f7014d6ee9fca77abf913cdb6de3cc5313693f863b4fc8fe4ec59b5765eec3cf.json", + "objectKey": "80951151b958a24f50acb6314e49c2f7be8df66a6376a7db7b51d369f7170477.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js.template.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js.template.json index c9fcc96a54cb8..0c8a8e19267af 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/aws-cdk-sdk-js.template.json @@ -44,7 +44,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "PublishCustomResourcePolicyDF696FCA" @@ -111,7 +111,7 @@ "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "S3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "Handler": "index.handler", "Role": { @@ -138,7 +138,7 @@ }, "Create": "{\"service\":\"SNS\",\"action\":\"listTopics\",\"physicalResourceId\":{\"responsePath\":\"Topics.0.TopicArn\"}}", "Update": "{\"service\":\"SNS\",\"action\":\"listTopics\",\"physicalResourceId\":{\"responsePath\":\"Topics.0.TopicArn\"}}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "ListTopicsCustomResourcePolicy31A8396A", @@ -211,7 +211,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "GetParameterCustomResourcePolicyD8E5D455" @@ -311,7 +311,7 @@ ] ] }, - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" @@ -327,7 +327,7 @@ }, "Create": "{\"service\":\"EKS\",\"action\":\"describeCluster\",\"parameters\":{\"name\":\"fake-cluster\"},\"physicalResourceId\":{\"id\":\"fake-cluster\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", "Update": "{\"service\":\"EKS\",\"action\":\"describeCluster\",\"parameters\":{\"name\":\"fake-cluster\"},\"physicalResourceId\":{\"id\":\"fake-cluster\"},\"ignoreErrorCodesMatching\":\"ResourceNotFoundException\"}", - "InstallLatestAwsSdk": false + "InstallLatestAwsSdk": "false" }, "DependsOn": [ "DescribeClusterCustomResourcePolicyD7730CF4" diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/manifest.json index 9192e2bb1b501..d7bbbc20684e7 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/f7014d6ee9fca77abf913cdb6de3cc5313693f863b4fc8fe4ec59b5765eec3cf.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/80951151b958a24f50acb6314e49c2f7be8df66a6376a7db7b51d369f7170477.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -39,6 +39,12 @@ "data": "TopicBFC7AF6E" } ], + "/aws-cdk-sdk-js/Publish": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js/Publish/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -63,6 +69,12 @@ "data": "AWS679f53fac002430cb0da5b7982bd22872D164C4C" } ], + "/aws-cdk-sdk-js/ListTopics": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js/ListTopics/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -81,6 +93,12 @@ "data": "Utf8Parameter6C885A19" } ], + "/aws-cdk-sdk-js/GetParameter": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js/GetParameter/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -105,12 +123,24 @@ "data": "CustomRoleDefaultPolicyC5C189DF" } ], + "/aws-cdk-sdk-js/GetParameterNoPolicy": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js/GetParameterNoPolicy/Resource/Default": [ { "type": "aws:cdk:logicalId", "data": "GetParameterNoPolicyFCF7AA3B" } ], + "/aws-cdk-sdk-js/DescribeCluster": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js/DescribeCluster/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -178,7 +208,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/f7014d6ee9fca77abf913cdb6de3cc5313693f863b4fc8fe4ec59b5765eec3cf.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/80951151b958a24f50acb6314e49c2f7be8df66a6376a7db7b51d369f7170477.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -200,6 +230,12 @@ "data": "TopicBFC7AF6E" } ], + "/aws-cdk-sdk-js-v3/Publish": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js-v3/Publish/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -224,6 +260,12 @@ "data": "AWS679f53fac002430cb0da5b7982bd22872D164C4C" } ], + "/aws-cdk-sdk-js-v3/ListTopics": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js-v3/ListTopics/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -242,6 +284,12 @@ "data": "Utf8Parameter6C885A19" } ], + "/aws-cdk-sdk-js-v3/GetParameter": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js-v3/GetParameter/Resource/Default": [ { "type": "aws:cdk:logicalId", @@ -266,12 +314,24 @@ "data": "CustomRoleDefaultPolicyC5C189DF" } ], + "/aws-cdk-sdk-js-v3/GetParameterNoPolicy": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js-v3/GetParameterNoPolicy/Resource/Default": [ { "type": "aws:cdk:logicalId", "data": "GetParameterNoPolicyFCF7AA3B" } ], + "/aws-cdk-sdk-js-v3/DescribeCluster": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], "/aws-cdk-sdk-js-v3/DescribeCluster/Resource/Default": [ { "type": "aws:cdk:logicalId", diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/tree.json index 569de7b58df41..161f9d3d62dad 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.aws-custom-resource.js.snapshot/tree.json @@ -202,7 +202,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { @@ -846,7 +846,7 @@ "s3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" }, - "s3Key": "cb3fb24b24fb811fe6094748adf3e7571ee53cfadc9bf6753cbb223d266daf83.zip" + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" }, "handler": "index.handler", "role": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.assets.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.assets.json new file mode 100644 index 0000000000000..2f0cfe8c4337c --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.assets.json @@ -0,0 +1,19 @@ +{ + "version": "33.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "source": { + "path": "AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.template.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadStack.assets.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadStack.assets.json new file mode 100644 index 0000000000000..5664d86b6597a --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadStack.assets.json @@ -0,0 +1,32 @@ +{ + "version": "33.0.0", + "files": { + "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6": { + "source": { + "path": "asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "5873734ee9738f2cc2e5299d2cdbd51b7cba842b46af87b9047f5d77044b81b3": { + "source": { + "path": "AwsCustomResourceInvokePayloadStack.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "5873734ee9738f2cc2e5299d2cdbd51b7cba842b46af87b9047f5d77044b81b3.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadStack.template.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadStack.template.json new file mode 100644 index 0000000000000..39cf4fdfd06bf --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/AwsCustomResourceInvokePayloadStack.template.json @@ -0,0 +1,271 @@ +{ + "Resources": { + "FunctionServiceRole675BB04A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "Function76856677": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "exports.handler = async () => { return { statusCode: 200, body: 'Hello World' }; };" + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "FunctionServiceRole675BB04A", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "FunctionServiceRole675BB04A" + ] + }, + "ListLambdaFunctionsF9FB8E2B": { + "Type": "Custom::AWS", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "AWS679f53fac002430cb0da5b7982bd22872D164C4C", + "Arn" + ] + }, + "Create": { + "Fn::Join": [ + "", + [ + "{\"service\":\"Lambda\",\"action\":\"invoke\",\"parameters\":{\"FunctionName\":\"", + { + "Ref": "Function76856677" + }, + "\"},\"physicalResourceId\":{\"id\":\"", + { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + "\"}}" + ] + ] + }, + "Update": { + "Fn::Join": [ + "", + [ + "{\"service\":\"Lambda\",\"action\":\"invoke\",\"parameters\":{\"FunctionName\":\"", + { + "Ref": "Function76856677" + }, + "\"},\"physicalResourceId\":{\"id\":\"", + { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + "\"}}" + ] + ] + }, + "InstallLatestAwsSdk": "false" + }, + "DependsOn": [ + "ListLambdaFunctionsCustomResourcePolicyCFFF021A" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ListLambdaFunctionsCustomResourcePolicyCFFF021A": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "*", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "ListLambdaFunctionsCustomResourcePolicyCFFF021A", + "Roles": [ + { + "Ref": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + } + ] + } + }, + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleDefaultPolicyD28E1A5E": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleDefaultPolicyD28E1A5E", + "Roles": [ + { + "Ref": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + } + ] + } + }, + "AWS679f53fac002430cb0da5b7982bd22872D164C4C": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", + "Arn" + ] + }, + "Runtime": "nodejs18.x", + "Timeout": 120 + }, + "DependsOn": [ + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleDefaultPolicyD28E1A5E", + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + ] + } + }, + "Outputs": { + "FunctionPayload": { + "Value": { + "Fn::GetAtt": [ + "ListLambdaFunctionsF9FB8E2B", + "Payload" + ] + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js new file mode 100644 index 0000000000000..470bc12d6fd54 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v2-handler.js @@ -0,0 +1,161 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.handler = exports.forceSdkInstallation = void 0; +/* eslint-disable no-console */ +const child_process_1 = require("child_process"); +const fs = require("fs"); +const path_1 = require("path"); +const shared_1 = require("./shared"); +let latestSdkInstalled = false; +function forceSdkInstallation() { + latestSdkInstalled = false; +} +exports.forceSdkInstallation = forceSdkInstallation; +/** + * Installs latest AWS SDK v2 + */ +function installLatestSdk() { + console.log('Installing latest AWS SDK v2'); + // Both HOME and --prefix are needed here because /tmp is the only writable location + (0, child_process_1.execSync)('HOME=/tmp npm install aws-sdk@2 --production --no-package-lock --no-save --prefix /tmp'); + latestSdkInstalled = true; +} +// no currently patched services +const patchedServices = []; +/** + * Patches the AWS SDK by loading service models in the same manner as the actual SDK + */ +function patchSdk(awsSdk) { + const apiLoader = awsSdk.apiLoader; + patchedServices.forEach(({ serviceName, apiVersions }) => { + const lowerServiceName = serviceName.toLowerCase(); + if (!awsSdk.Service.hasService(lowerServiceName)) { + apiLoader.services[lowerServiceName] = {}; + awsSdk[serviceName] = awsSdk.Service.defineService(lowerServiceName, apiVersions); + } + else { + awsSdk.Service.addVersions(awsSdk[serviceName], apiVersions); + } + apiVersions.forEach(apiVersion => { + Object.defineProperty(apiLoader.services[lowerServiceName], apiVersion, { + get: function get() { + const modelFilePrefix = `aws-sdk-patch/${lowerServiceName}-${apiVersion}`; + const model = JSON.parse(fs.readFileSync((0, path_1.join)(__dirname, `${modelFilePrefix}.service.json`), 'utf-8')); + model.paginators = JSON.parse(fs.readFileSync((0, path_1.join)(__dirname, `${modelFilePrefix}.paginators.json`), 'utf-8')).pagination; + return model; + }, + enumerable: true, + configurable: true, + }); + }); + }); + return awsSdk; +} +/* eslint-disable @typescript-eslint/no-require-imports, import/no-extraneous-dependencies */ +async function handler(event, context) { + try { + let AWS; + if (!latestSdkInstalled && event.ResourceProperties.InstallLatestAwsSdk === 'true') { + try { + installLatestSdk(); + AWS = require('/tmp/node_modules/aws-sdk'); + } + catch (e) { + console.log(`Failed to install latest AWS SDK v2: ${e}`); + AWS = require('aws-sdk'); // Fallback to pre-installed version + } + } + else if (latestSdkInstalled) { + AWS = require('/tmp/node_modules/aws-sdk'); + } + else { + AWS = require('aws-sdk'); + } + try { + AWS = patchSdk(AWS); + } + catch (e) { + console.log(`Failed to patch AWS SDK: ${e}. Proceeding with the installed copy.`); + } + console.log(JSON.stringify({ ...event, ResponseURL: '...' })); + console.log('AWS SDK VERSION: ' + AWS.VERSION); + event.ResourceProperties.Create = (0, shared_1.decodeCall)(event.ResourceProperties.Create); + event.ResourceProperties.Update = (0, shared_1.decodeCall)(event.ResourceProperties.Update); + event.ResourceProperties.Delete = (0, shared_1.decodeCall)(event.ResourceProperties.Delete); + // Default physical resource id + let physicalResourceId; + switch (event.RequestType) { + case 'Create': + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? + event.ResourceProperties.Update?.physicalResourceId?.id ?? + event.ResourceProperties.Delete?.physicalResourceId?.id ?? + event.LogicalResourceId; + break; + case 'Update': + case 'Delete': + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + let flatData = {}; + let data = {}; + const call = event.ResourceProperties[event.RequestType]; + if (call) { + let credentials; + if (call.assumedRoleArn) { + const timestamp = (new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64), + }; + credentials = new AWS.ChainableTemporaryCredentials({ + params: params, + stsConfig: { stsRegionalEndpoints: 'regional' }, + }); + } + if (!Object.prototype.hasOwnProperty.call(AWS, call.service)) { + throw Error(`Service ${call.service} does not exist in AWS SDK version ${AWS.VERSION}.`); + } + const awsService = new AWS[call.service]({ + apiVersion: call.apiVersion, + credentials: credentials, + region: call.region, + }); + try { + const response = await awsService[call.action](call.parameters && (0, shared_1.decodeSpecialValues)(call.parameters, physicalResourceId)).promise(); + flatData = { + apiVersion: awsService.config.apiVersion, + region: awsService.config.region, + ...(0, shared_1.flatten)(response), + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } + else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = (0, shared_1.filterKeys)(flatData, (0, shared_1.startsWithOneOf)(outputPaths)); + } + else { + data = flatData; + } + } + catch (e) { + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(e.code)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await (0, shared_1.respond)(event, 'SUCCESS', 'OK', physicalResourceId, data); + } + catch (e) { + console.log(e); + await (0, shared_1.respond)(event, 'FAILED', e.message || 'Internal Error', context.logStreamName, {}); + } +} +exports.handler = handler; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNkay12Mi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLXNkay12Mi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQixpREFBeUM7QUFDekMseUJBQXlCO0FBQ3pCLCtCQUE0QjtBQU81QixxQ0FBMEc7QUFHMUcsSUFBSSxrQkFBa0IsR0FBRyxLQUFLLENBQUM7QUFFL0IsU0FBZ0Isb0JBQW9CO0lBQ2xDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztBQUM3QixDQUFDO0FBRkQsb0RBRUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM1QyxvRkFBb0Y7SUFDcEYsSUFBQSx3QkFBUSxFQUFDLHdGQUF3RixDQUFDLENBQUM7SUFDbkcsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBQzVCLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxlQUFlLEdBQXFELEVBQUUsQ0FBQztBQUM3RTs7R0FFRztBQUNILFNBQVMsUUFBUSxDQUFDLE1BQVc7SUFDM0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTtRQUN2RCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNoRCxTQUFTLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNuRjthQUFNO1lBQ0wsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxVQUFVLEVBQUU7Z0JBQ3RFLEdBQUcsRUFBRSxTQUFTLEdBQUc7b0JBQ2YsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLGdCQUFnQixJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLEdBQUcsZUFBZSxlQUFlLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUN2RyxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsR0FBRyxlQUFlLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7b0JBQzFILE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsNkZBQTZGO0FBQ3RGLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBa0QsRUFBRSxPQUEwQjtJQUMxRyxJQUFJO1FBQ0YsSUFBSSxHQUFRLENBQUM7UUFDYixJQUFJLENBQUMsa0JBQWtCLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixLQUFLLE1BQU0sRUFBRTtZQUNsRixJQUFJO2dCQUNGLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLEdBQUcsR0FBRyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQzthQUM1QztZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0NBQXdDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pELEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7YUFDL0Q7U0FDRjthQUFNLElBQUksa0JBQWtCLEVBQUU7WUFDN0IsR0FBRyxHQUFHLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQzVDO2FBQU07WUFDTCxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSTtZQUNGLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsdUNBQXVDLENBQUMsQ0FBQztTQUNuRjtRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0MsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxJQUFBLG1CQUFVLEVBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsSUFBQSxtQkFBVSxFQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLElBQUEsbUJBQVUsRUFBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUUsK0JBQStCO1FBQy9CLElBQUksa0JBQTBCLENBQUM7UUFDL0IsUUFBUSxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQ3pCLEtBQUssUUFBUTtnQkFDWCxrQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEVBQUU7b0JBQ3ZELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTtvQkFDdkQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxFQUFFO29CQUN2RCxLQUFLLENBQUMsaUJBQWlCLENBQUM7Z0JBQzdDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxrQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3JILE1BQU07U0FDVDtRQUVELElBQUksUUFBUSxHQUE4QixFQUFFLENBQUM7UUFDN0MsSUFBSSxJQUFJLEdBQThCLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksR0FBMkIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRixJQUFJLElBQUksRUFBRTtZQUVSLElBQUksV0FBVyxDQUFDO1lBQ2hCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDdkIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBRXpDLE1BQU0sTUFBTSxHQUFHO29CQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYztvQkFDNUIsZUFBZSxFQUFFLEdBQUcsU0FBUyxJQUFJLGtCQUFrQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQ3ZFLENBQUM7Z0JBRUYsV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLDZCQUE2QixDQUFDO29CQUNsRCxNQUFNLEVBQUUsTUFBTTtvQkFDZCxTQUFTLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUU7aUJBQ2hELENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM1RCxNQUFNLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLHNDQUFzQyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQzthQUMxRjtZQUNELE1BQU0sVUFBVSxHQUFHLElBQUssR0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEQsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixXQUFXLEVBQUUsV0FBVztnQkFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3BCLENBQUMsQ0FBQztZQUVILElBQUk7Z0JBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUM1QyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUEsNEJBQW1CLEVBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3pGLFFBQVEsR0FBRztvQkFDVCxVQUFVLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVO29CQUN4QyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNO29CQUNoQyxHQUFHLElBQUEsZ0JBQU8sRUFBQyxRQUFRLENBQUM7aUJBQ3JCLENBQUM7Z0JBRUYsSUFBSSxXQUFpQyxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ25CLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDakM7cUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUMzQixXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztpQkFDaEM7Z0JBRUQsSUFBSSxXQUFXLEVBQUU7b0JBQ2YsSUFBSSxHQUFHLElBQUEsbUJBQVUsRUFBQyxRQUFRLEVBQUUsSUFBQSx3QkFBZSxFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7aUJBQzNEO3FCQUFNO29CQUNMLElBQUksR0FBRyxRQUFRLENBQUM7aUJBQ2pCO2FBQ0Y7WUFBQyxPQUFPLENBQU0sRUFBRTtnQkFDZixJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDN0YsTUFBTSxDQUFDLENBQUM7aUJBQ1Q7YUFDRjtZQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRTtnQkFDekMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNyRTtTQUNGO1FBRUQsTUFBTSxJQUFBLGdCQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDakU7SUFBQyxPQUFPLENBQU0sRUFBRTtRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixNQUFNLElBQUEsZ0JBQU8sRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUMxRjtBQUNILENBQUM7QUE5R0QsMEJBOEdDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbi8vIGltcG9ydCB0aGUgQVdTTGFtYmRhIHBhY2thZ2UgZXhwbGljaXRseSxcbi8vIHdoaWNoIGlzIGdsb2JhbGx5IGF2YWlsYWJsZSBpbiB0aGUgTGFtYmRhIHJ1bnRpbWUsXG4vLyBhcyBvdGhlcndpc2UgbGlua2luZyB0aGlzIHJlcG9zaXRvcnkgd2l0aCBsaW5rLWFsbC5zaFxuLy8gZmFpbHMgaW4gdGhlIENESyBhcHAgZXhlY3V0ZWQgd2l0aCB0cy1ub2RlXG4vKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBkZWNvZGVDYWxsLCBkZWNvZGVTcGVjaWFsVmFsdWVzLCBmaWx0ZXJLZXlzLCBmbGF0dGVuLCByZXNwb25kLCBzdGFydHNXaXRoT25lT2YgfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQgeyBBd3NTZGtDYWxsIH0gZnJvbSAnLi4vYXdzLWN1c3RvbS1yZXNvdXJjZSc7XG5cbmxldCBsYXRlc3RTZGtJbnN0YWxsZWQgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZvcmNlU2RrSW5zdGFsbGF0aW9uKCkge1xuICBsYXRlc3RTZGtJbnN0YWxsZWQgPSBmYWxzZTtcbn1cblxuLyoqXG4gKiBJbnN0YWxscyBsYXRlc3QgQVdTIFNESyB2MlxuICovXG5mdW5jdGlvbiBpbnN0YWxsTGF0ZXN0U2RrKCk6IHZvaWQge1xuICBjb25zb2xlLmxvZygnSW5zdGFsbGluZyBsYXRlc3QgQVdTIFNESyB2MicpO1xuICAvLyBCb3RoIEhPTUUgYW5kIC0tcHJlZml4IGFyZSBuZWVkZWQgaGVyZSBiZWNhdXNlIC90bXAgaXMgdGhlIG9ubHkgd3JpdGFibGUgbG9jYXRpb25cbiAgZXhlY1N5bmMoJ0hPTUU9L3RtcCBucG0gaW5zdGFsbCBhd3Mtc2RrQDIgLS1wcm9kdWN0aW9uIC0tbm8tcGFja2FnZS1sb2NrIC0tbm8tc2F2ZSAtLXByZWZpeCAvdG1wJyk7XG4gIGxhdGVzdFNka0luc3RhbGxlZCA9IHRydWU7XG59XG5cbi8vIG5vIGN1cnJlbnRseSBwYXRjaGVkIHNlcnZpY2VzXG5jb25zdCBwYXRjaGVkU2VydmljZXM6IHsgc2VydmljZU5hbWU6IHN0cmluZzsgYXBpVmVyc2lvbnM6IHN0cmluZ1tdIH1bXSA9IFtdO1xuLyoqXG4gKiBQYXRjaGVzIHRoZSBBV1MgU0RLIGJ5IGxvYWRpbmcgc2VydmljZSBtb2RlbHMgaW4gdGhlIHNhbWUgbWFubmVyIGFzIHRoZSBhY3R1YWwgU0RLXG4gKi9cbmZ1bmN0aW9uIHBhdGNoU2RrKGF3c1NkazogYW55KTogYW55IHtcbiAgY29uc3QgYXBpTG9hZGVyID0gYXdzU2RrLmFwaUxvYWRlcjtcbiAgcGF0Y2hlZFNlcnZpY2VzLmZvckVhY2goKHsgc2VydmljZU5hbWUsIGFwaVZlcnNpb25zIH0pID0+IHtcbiAgICBjb25zdCBsb3dlclNlcnZpY2VOYW1lID0gc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIWF3c1Nkay5TZXJ2aWNlLmhhc1NlcnZpY2UobG93ZXJTZXJ2aWNlTmFtZSkpIHtcbiAgICAgIGFwaUxvYWRlci5zZXJ2aWNlc1tsb3dlclNlcnZpY2VOYW1lXSA9IHt9O1xuICAgICAgYXdzU2RrW3NlcnZpY2VOYW1lXSA9IGF3c1Nkay5TZXJ2aWNlLmRlZmluZVNlcnZpY2UobG93ZXJTZXJ2aWNlTmFtZSwgYXBpVmVyc2lvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd3NTZGsuU2VydmljZS5hZGRWZXJzaW9ucyhhd3NTZGtbc2VydmljZU5hbWVdLCBhcGlWZXJzaW9ucyk7XG4gICAgfVxuICAgIGFwaVZlcnNpb25zLmZvckVhY2goYXBpVmVyc2lvbiA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBpTG9hZGVyLnNlcnZpY2VzW2xvd2VyU2VydmljZU5hbWVdLCBhcGlWZXJzaW9uLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgIGNvbnN0IG1vZGVsRmlsZVByZWZpeCA9IGBhd3Mtc2RrLXBhdGNoLyR7bG93ZXJTZXJ2aWNlTmFtZX0tJHthcGlWZXJzaW9ufWA7XG4gICAgICAgICAgY29uc3QgbW9kZWwgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhqb2luKF9fZGlybmFtZSwgYCR7bW9kZWxGaWxlUHJlZml4fS5zZXJ2aWNlLmpzb25gKSwgJ3V0Zi04JykpO1xuICAgICAgICAgIG1vZGVsLnBhZ2luYXRvcnMgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhqb2luKF9fZGlybmFtZSwgYCR7bW9kZWxGaWxlUHJlZml4fS5wYWdpbmF0b3JzLmpzb25gKSwgJ3V0Zi04JykpLnBhZ2luYXRpb247XG4gICAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBhd3NTZGs7XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMsIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQsIGNvbnRleHQ6IEFXU0xhbWJkYS5Db250ZXh0KSB7XG4gIHRyeSB7XG4gICAgbGV0IEFXUzogYW55O1xuICAgIGlmICghbGF0ZXN0U2RrSW5zdGFsbGVkICYmIGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5JbnN0YWxsTGF0ZXN0QXdzU2RrID09PSAndHJ1ZScpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGluc3RhbGxMYXRlc3RTZGsoKTtcbiAgICAgICAgQVdTID0gcmVxdWlyZSgnL3RtcC9ub2RlX21vZHVsZXMvYXdzLXNkaycpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGluc3RhbGwgbGF0ZXN0IEFXUyBTREsgdjI6ICR7ZX1gKTtcbiAgICAgICAgQVdTID0gcmVxdWlyZSgnYXdzLXNkaycpOyAvLyBGYWxsYmFjayB0byBwcmUtaW5zdGFsbGVkIHZlcnNpb25cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxhdGVzdFNka0luc3RhbGxlZCkge1xuICAgICAgQVdTID0gcmVxdWlyZSgnL3RtcC9ub2RlX21vZHVsZXMvYXdzLXNkaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBBV1MgPSByZXF1aXJlKCdhd3Mtc2RrJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBBV1MgPSBwYXRjaFNkayhBV1MpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gcGF0Y2ggQVdTIFNESzogJHtlfS4gUHJvY2VlZGluZyB3aXRoIHRoZSBpbnN0YWxsZWQgY29weS5gKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IC4uLmV2ZW50LCBSZXNwb25zZVVSTDogJy4uLicgfSkpO1xuICAgIGNvbnNvbGUubG9nKCdBV1MgU0RLIFZFUlNJT046ICcgKyBBV1MuVkVSU0lPTik7XG5cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuQ3JlYXRlID0gZGVjb2RlQ2FsbChldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuQ3JlYXRlKTtcbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuVXBkYXRlID0gZGVjb2RlQ2FsbChldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuVXBkYXRlKTtcbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRGVsZXRlID0gZGVjb2RlQ2FsbChldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRGVsZXRlKTtcbiAgICAvLyBEZWZhdWx0IHBoeXNpY2FsIHJlc291cmNlIGlkXG4gICAgbGV0IHBoeXNpY2FsUmVzb3VyY2VJZDogc3RyaW5nO1xuICAgIHN3aXRjaCAoZXZlbnQuUmVxdWVzdFR5cGUpIHtcbiAgICAgIGNhc2UgJ0NyZWF0ZSc6XG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZCA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5DcmVhdGU/LnBoeXNpY2FsUmVzb3VyY2VJZD8uaWQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLlVwZGF0ZT8ucGh5c2ljYWxSZXNvdXJjZUlkPy5pZCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRGVsZXRlPy5waHlzaWNhbFJlc291cmNlSWQ/LmlkID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXNbZXZlbnQuUmVxdWVzdFR5cGVdPy5waHlzaWNhbFJlc291cmNlSWQ/LmlkID8/IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbGV0IGZsYXREYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgbGV0IGRhdGE6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBjb25zdCBjYWxsOiBBd3NTZGtDYWxsIHwgdW5kZWZpbmVkID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzW2V2ZW50LlJlcXVlc3RUeXBlXTtcblxuICAgIGlmIChjYWxsKSB7XG5cbiAgICAgIGxldCBjcmVkZW50aWFscztcbiAgICAgIGlmIChjYWxsLmFzc3VtZWRSb2xlQXJuKSB7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgIFJvbGVBcm46IGNhbGwuYXNzdW1lZFJvbGVBcm4sXG4gICAgICAgICAgUm9sZVNlc3Npb25OYW1lOiBgJHt0aW1lc3RhbXB9LSR7cGh5c2ljYWxSZXNvdXJjZUlkfWAuc3Vic3RyaW5nKDAsIDY0KSxcbiAgICAgICAgfTtcblxuICAgICAgICBjcmVkZW50aWFscyA9IG5ldyBBV1MuQ2hhaW5hYmxlVGVtcG9yYXJ5Q3JlZGVudGlhbHMoe1xuICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICAgIHN0c0NvbmZpZzogeyBzdHNSZWdpb25hbEVuZHBvaW50czogJ3JlZ2lvbmFsJyB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQVdTLCBjYWxsLnNlcnZpY2UpKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBTZXJ2aWNlICR7Y2FsbC5zZXJ2aWNlfSBkb2VzIG5vdCBleGlzdCBpbiBBV1MgU0RLIHZlcnNpb24gJHtBV1MuVkVSU0lPTn0uYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBhd3NTZXJ2aWNlID0gbmV3IChBV1MgYXMgYW55KVtjYWxsLnNlcnZpY2VdKHtcbiAgICAgICAgYXBpVmVyc2lvbjogY2FsbC5hcGlWZXJzaW9uLFxuICAgICAgICBjcmVkZW50aWFsczogY3JlZGVudGlhbHMsXG4gICAgICAgIHJlZ2lvbjogY2FsbC5yZWdpb24sXG4gICAgICB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhd3NTZXJ2aWNlW2NhbGwuYWN0aW9uXShcbiAgICAgICAgICBjYWxsLnBhcmFtZXRlcnMgJiYgZGVjb2RlU3BlY2lhbFZhbHVlcyhjYWxsLnBhcmFtZXRlcnMsIHBoeXNpY2FsUmVzb3VyY2VJZCkpLnByb21pc2UoKTtcbiAgICAgICAgZmxhdERhdGEgPSB7XG4gICAgICAgICAgYXBpVmVyc2lvbjogYXdzU2VydmljZS5jb25maWcuYXBpVmVyc2lvbiwgLy8gRm9yIHRlc3QgcHVycG9zZXM6IGNoZWNrIGlmIGFwaVZlcnNpb24gd2FzIGNvcnJlY3RseSBwYXNzZWQuXG4gICAgICAgICAgcmVnaW9uOiBhd3NTZXJ2aWNlLmNvbmZpZy5yZWdpb24sIC8vIEZvciB0ZXN0IHB1cnBvc2VzOiBjaGVjayBpZiByZWdpb24gd2FzIGNvcnJlY3RseSBwYXNzZWQuXG4gICAgICAgICAgLi4uZmxhdHRlbihyZXNwb25zZSksXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IG91dHB1dFBhdGhzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGNhbGwub3V0cHV0UGF0aCkge1xuICAgICAgICAgIG91dHB1dFBhdGhzID0gW2NhbGwub3V0cHV0UGF0aF07XG4gICAgICAgIH0gZWxzZSBpZiAoY2FsbC5vdXRwdXRQYXRocykge1xuICAgICAgICAgIG91dHB1dFBhdGhzID0gY2FsbC5vdXRwdXRQYXRocztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvdXRwdXRQYXRocykge1xuICAgICAgICAgIGRhdGEgPSBmaWx0ZXJLZXlzKGZsYXREYXRhLCBzdGFydHNXaXRoT25lT2Yob3V0cHV0UGF0aHMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhID0gZmxhdERhdGE7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBpZiAoIWNhbGwuaWdub3JlRXJyb3JDb2Rlc01hdGNoaW5nIHx8ICFuZXcgUmVnRXhwKGNhbGwuaWdub3JlRXJyb3JDb2Rlc01hdGNoaW5nKS50ZXN0KGUuY29kZSkpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYWxsLnBoeXNpY2FsUmVzb3VyY2VJZD8ucmVzcG9uc2VQYXRoKSB7XG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZCA9IGZsYXREYXRhW2NhbGwucGh5c2ljYWxSZXNvdXJjZUlkLnJlc3BvbnNlUGF0aF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgcmVzcG9uZChldmVudCwgJ1NVQ0NFU1MnLCAnT0snLCBwaHlzaWNhbFJlc291cmNlSWQsIGRhdGEpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICBhd2FpdCByZXNwb25kKGV2ZW50LCAnRkFJTEVEJywgZS5tZXNzYWdlIHx8ICdJbnRlcm5hbCBFcnJvcicsIGNvbnRleHQubG9nU3RyZWFtTmFtZSwge30pO1xuICB9XG59Il19 \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js new file mode 100644 index 0000000000000..9f6e97928f257 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/aws-sdk-v3-handler.bundled.js @@ -0,0 +1,779 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts +var CLIENT_NAMES; +var init_client_names = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-names.ts"() { + "use strict"; + CLIENT_NAMES = [ + "ACM", + "ACMPCA", + "APIGateway", + "ARCZonalShift", + "AccessAnalyzer", + "Account", + "AlexaForBusiness", + "Amp", + "Amplify", + "AmplifyBackend", + "AmplifyUIBuilder", + "ApiGatewayManagementApi", + "ApiGatewayV2", + "AppConfig", + "AppConfigData", + "AppIntegrations", + "AppMesh", + "AppRunner", + "AppStream", + "AppSync", + "Appflow", + "ApplicationAutoScaling", + "ApplicationCostProfiler", + "ApplicationInsights", + "Athena", + "AuditManager", + "AugmentedAIRuntime", + "AutoScaling", + "AutoScalingPlans", + "Backup", + "BackupGateway", + "BackupStorage", + "Batch", + "Billingconductor", + "Braket", + "Budgets", + "CUR", + "Chime", + "ChimeSDKIdentity", + "ChimeSDKMediaPipelines", + "ChimeSDKMeetings", + "ChimeSDKMessaging", + "ChimeSDKVoice", + "Cloud9", + "CloudControl", + "CloudDirectory", + "CloudFormation", + "CloudFront", + "CloudHSM", + "CloudHSMV2", + "CloudSearch", + "CloudSearchDomain", + "CloudTrail", + "CloudWatch", + "CloudWatchEvents", + "CloudWatchLogs", + "CodeArtifact", + "CodeBuild", + "CodeCatalyst", + "CodeCommit", + "CodeDeploy", + "CodeGuruProfiler", + "CodeGuruReviewer", + "CodePipeline", + "CodeStar", + "CodeStarNotifications", + "CodeStarconnections", + "CognitoIdentity", + "CognitoIdentityServiceProvider", + "CognitoSync", + "Comprehend", + "ComprehendMedical", + "ComputeOptimizer", + "ConfigService", + "Connect", + "ConnectCampaigns", + "ConnectCases", + "ConnectContactLens", + "ConnectParticipant", + "ControlTower", + "CostExplorer", + "CustomerProfiles", + "DAX", + "DLM", + "DMS", + "DataBrew", + "DataExchange", + "DataPipeline", + "DataSync", + "Detective", + "DevOpsGuru", + "DeviceFarm", + "DirectConnect", + "DirectoryService", + "Discovery", + "DocDB", + "DocDBElastic", + "Drs", + "DynamoDB", + "DynamoDBStreams", + "EBS", + "EC2", + "EC2InstanceConnect", + "ECR", + "ECRPUBLIC", + "ECS", + "EFS", + "EKS", + "ELB", + "ELBv2", + "EMR", + "EMRServerless", + "EMRcontainers", + "ES", + "ElastiCache", + "ElasticBeanstalk", + "ElasticInference", + "ElasticTranscoder", + "EventBridge", + "Evidently", + "FMS", + "FSx", + "Finspace", + "Finspacedata", + "Firehose", + "Fis", + "ForecastQueryService", + "ForecastService", + "FraudDetector", + "GameLift", + "GameSparks", + "Glacier", + "GlobalAccelerator", + "Glue", + "Grafana", + "Greengrass", + "GreengrassV2", + "GroundStation", + "GuardDuty", + "Health", + "HealthLake", + "Honeycode", + "IAM", + "IVS", + "IdentityStore", + "Imagebuilder", + "Inspector", + "Inspector2", + "IoT1ClickDevicesService", + "IoT1ClickProjects", + "IoTAnalytics", + "IoTEvents", + "IoTEventsData", + "IoTFleetHub", + "IoTFleetWise", + "IoTJobsDataPlane", + "IoTRoboRunner", + "IoTSecureTunneling", + "IoTSiteWise", + "IoTThingsGraph", + "IoTTwinMaker", + "IoTWireless", + "Iot", + "IotData", + "IotDeviceAdvisor", + "Ivschat", + "KMS", + "Kafka", + "KafkaConnect", + "Kendra", + "Keyspaces", + "Kinesis", + "KinesisAnalytics", + "KinesisAnalyticsV2", + "KinesisVideo", + "KinesisVideoArchivedMedia", + "KinesisVideoMedia", + "KinesisVideoSignalingChannels", + "KinesisVideoWebRTCStorage", + "LakeFormation", + "Lambda", + "LexModelBuildingService", + "LexModelsV2", + "LexRuntime", + "LexRuntimeV2", + "LicenseManager", + "LicenseManagerLinuxSubscriptions", + "LicenseManagerUserSubscriptions", + "Lightsail", + "Location", + "LookoutEquipment", + "LookoutMetrics", + "LookoutVision", + "M2", + "MQ", + "MTurk", + "MWAA", + "MachineLearning", + "Macie", + "Macie2", + "ManagedBlockchain", + "MarketplaceCatalog", + "MarketplaceCommerceAnalytics", + "MarketplaceEntitlementService", + "MarketplaceMetering", + "MediaConnect", + "MediaConvert", + "MediaLive", + "MediaPackage", + "MediaPackageVod", + "MediaStore", + "MediaStoreData", + "MediaTailor", + "MemoryDB", + "Mgn", + "MigrationHub", + "MigrationHubConfig", + "MigrationHubOrchestrator", + "MigrationHubRefactorSpaces", + "MigrationHubStrategy", + "Mobile", + "Neptune", + "NetworkFirewall", + "NetworkManager", + "Nimble", + "OAM", + "Omics", + "OpenSearch", + "OpenSearchServerless", + "OpsWorks", + "OpsWorksCM", + "Organizations", + "Outposts", + "PI", + "Panorama", + "Personalize", + "PersonalizeEvents", + "PersonalizeRuntime", + "Pinpoint", + "PinpointEmail", + "PinpointSMSVoice", + "PinpointSMSVoiceV2", + "Pipes", + "Polly", + "Pricing", + "PrivateNetworks", + "Proton", + "QLDB", + "QLDBSession", + "QuickSight", + "RAM", + "RDS", + "RDSDataService", + "RUM", + "Rbin", + "Redshift", + "RedshiftData", + "RedshiftServerless", + "Rekognition", + "Resiliencehub", + "ResourceExplorer2", + "ResourceGroups", + "ResourceGroupsTaggingAPI", + "RoboMaker", + "RolesAnywhere", + "Route53", + "Route53Domains", + "Route53RecoveryCluster", + "Route53RecoveryControlConfig", + "Route53RecoveryReadiness", + "Route53Resolver", + "S3", + "S3Control", + "S3Outposts", + "SES", + "SESV2", + "SMS", + "SNS", + "SQS", + "SSM", + "SSMContacts", + "SSMIncidents", + "SSO", + "SSOAdmin", + "SSOOIDC", + "STS", + "SWF", + "SageMaker", + "SageMakerFeatureStoreRuntime", + "SageMakerGeospatial", + "SageMakerMetrics", + "SageMakerRuntime", + "SagemakerEdge", + "SavingsPlans", + "Scheduler", + "Schemas", + "SecretsManager", + "SecurityHub", + "SecurityLake", + "ServerlessApplicationRepository", + "ServiceCatalog", + "ServiceCatalogAppRegistry", + "ServiceDiscovery", + "ServiceQuotas", + "Shield", + "Signer", + "SimSpaceWeaver", + "SnowDeviceManagement", + "Snowball", + "SsmSap", + "StepFunctions", + "StorageGateway", + "Support", + "SupportApp", + "Synthetics", + "Textract", + "TimestreamQuery", + "TimestreamWrite", + "TranscribeService", + "Transfer", + "Translate", + "VoiceID", + "WAF", + "WAFRegional", + "WAFV2", + "WellArchitected", + "Wisdom", + "WorkDocs", + "WorkLink", + "WorkMail", + "WorkMailMessageFlow", + "WorkSpaces", + "WorkSpacesWeb", + "XRay" + ]; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts +var CLIENT_PACKAGE_NAMES_MAP; +var init_client_package_names_map = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/client-package-names-map.ts"() { + "use strict"; + init_client_names(); + CLIENT_PACKAGE_NAMES_MAP = { + ...CLIENT_NAMES.reduce( + (acc, name) => ({ + ...acc, + [name]: `client-${name.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()}`.replace("-chime-sdk", "-chime-sdk-").replace("client-amplify-", "client-amplify").replace("client-cloud-", "client-cloud").replace("client-code-", "client-code").replace("client-connect-", "client-connect").replace("client-data-", "client-data").replace("client-io-t", "client-iot-").replace("client-iot-fleet-", "client-iotfleet").replace("client-lookout-", "client-lookout").replace("client-media-", "client-media").replace("client-migration-hub-", "client-migrationhub").replace("client-pinpoint-sms", "client-pinpoint-sms-").replace("client-route53", "client-route53-").replace("client-sage-maker", "client-sagemaker").replace("client-security-", "client-security").replace("client-work-", "client-work") + }), + {} + ), + AccessAnalyzer: "client-accessanalyzer", + ACMPCA: "client-acm-pca", + APIGateway: "client-api-gateway", + ApiGatewayManagementApi: "client-apigatewaymanagementapi", + ApiGatewayV2: "client-apigatewayv2", + AppConfig: "client-appconfig", + AppConfigData: "client-appconfigdata", + AppIntegrations: "client-appintegrations", + AppRunner: "client-apprunner", + AppStream: "client-appstream", + AppSync: "client-appsync", + ApplicationCostProfiler: "client-applicationcostprofiler", + ARCZonalShift: "client-arc-zonal-shift", + AugmentedAIRuntime: "client-sage-maker-a2iruntime", + AuditManager: "client-auditmanager", + BackupStorage: "client-backupstorage", + CUR: "client-cost-and-usage-report-service", + CloudHSMV2: "client-cloudhsm-v2", + CodeGuruProfiler: "client-codeguruprofiler", + CodeStarconnections: "client-codestar-connections", + CognitoIdentityServiceProvider: "client-cognito-identity-provider", + ComprehendMedical: "client-comprehendmedical", + ConnectContactLens: "client-connect-contact-lens", + ControlTower: "client-controltower", + DMS: "client-database-migration-service", + DataPipeline: "client-data-pipeline", + Discovery: "client-application-discovery-service", + DevOpsGuru: "client-devops-guru", + DynamoDB: "client-dynamodb", + DynamoDBStreams: "client-dynamodb-streams", + DocDB: "client-docdb", + DocDBElastic: "client-docdb-elastic", + EC2InstanceConnect: "client-ec2-instance-connect", + ECRPUBLIC: "client-ecr-public", + ELB: "client-elastic-load-balancing", + ELBv2: "client-elastic-load-balancing-v2", + ElastiCache: "client-elasticache", + EMRcontainers: "client-emr-containers", + EMRServerless: "client-emr-serverless", + ES: "client-elasticsearch-service", + EventBridge: "client-eventbridge", + Finspacedata: "client-finspace-data", + ForecastQueryService: "client-forecastquery", + ForecastService: "client-forecast", + FraudDetector: "client-frauddetector", + GameLift: "client-gamelift", + GameSparks: "client-gamesparks", + GreengrassV2: "client-greengrassv2", + GroundStation: "client-groundstation", + GuardDuty: "client-guardduty", + HealthLake: "client-healthlake", + IdentityStore: "client-identitystore", + IoTAnalytics: "client-iotanalytics", + IotData: "client-iot-data-plane", + IotDeviceAdvisor: "client-iotdeviceadvisor", + IoTSecureTunneling: "client-iotsecuretunneling", + IoTSiteWise: "client-iotsitewise", + IoTThingsGraph: "client-iotthingsgraph", + IoTTwinMaker: "client-iottwinmaker", + IoTRoboRunner: "client-iot-roborunner", + KafkaConnect: "client-kafkaconnect", + KinesisVideoSignalingChannels: "client-kinesis-video-signaling", + KinesisVideoWebRTCStorage: "client-kinesis-video-webrtc-storage", + LakeFormation: "client-lakeformation", + LexRuntime: "client-lex-runtime-service", + ManagedBlockchain: "client-managedblockchain", + MigrationHubConfig: "client-migrationhub-config", + MigrationHubRefactorSpaces: "client-migration-hub-refactor-spaces", + NetworkManager: "client-networkmanager", + OpenSearch: "client-opensearch", + OpenSearchServerless: "client-opensearchserverless", + OpsWorks: "client-opsworks", + OpsWorksCM: "client-opsworkscm", + PrivateNetworks: "client-privatenetworks", + QLDBSession: "client-qldb-session", + QuickSight: "client-quicksight", + ResourceExplorer2: "client-resource-explorer-2", + RDSDataService: "client-rds-data", + RoboMaker: "client-robomaker", + RolesAnywhere: "client-rolesanywhere", + Route53: "client-route-53", + Route53Domains: "client-route-53-domains", + Route53Resolver: "client-route53resolver", + S3Control: "client-s3-control", + SageMakerFeatureStoreRuntime: "client-sagemaker-featurestore-runtime", + SavingsPlans: "client-savingsplans", + SecurityHub: "client-securityhub", + ServerlessApplicationRepository: "client-serverlessapplicationrepository", + ServiceCatalogAppRegistry: "client-service-catalog-appregistry", + ServiceDiscovery: "client-servicediscovery", + SimSpaceWeaver: "client-simspaceweaver", + SSMContacts: "client-ssm-contacts", + SSMIncidents: "client-ssm-incidents", + SSOAdmin: "client-sso-admin", + SSOOIDC: "client-sso-oidc", + StepFunctions: "client-sfn", + TranscribeService: "client-transcribe", + WAFRegional: "client-waf-regional", + WellArchitected: "client-wellarchitected", + WorkMailMessageFlow: "client-workmailmessageflow" + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts +var get_v3_client_package_name_exports = {}; +__export(get_v3_client_package_name_exports, { + getV3ClientPackageName: () => getV3ClientPackageName +}); +var getV3ClientPackageName; +var init_get_v3_client_package_name = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/get-v3-client-package-name.ts"() { + "use strict"; + init_client_package_names_map(); + getV3ClientPackageName = (clientName) => { + if (clientName in CLIENT_PACKAGE_NAMES_MAP) { + return `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[clientName]}`; + } + throw new Error(`Client '${clientName}' is either deprecated or newly added. Please consider using the v3 package format (@aws-sdk/client-xxx).`); + }; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts +var find_client_constructor_exports = {}; +__export(find_client_constructor_exports, { + findV3ClientConstructor: () => findV3ClientConstructor +}); +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find( + ([name]) => { + return name.endsWith("Client") && name !== "__Client"; + } + ); + return ServiceClient; +} +var init_find_client_constructor = __esm({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.ts"() { + "use strict"; + } +}); + +// ../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js +var require_lib = __commonJS({ + "../@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findV3ClientConstructor = exports.getV3ClientPackageName = void 0; + var get_v3_client_package_name_1 = (init_get_v3_client_package_name(), __toCommonJS(get_v3_client_package_name_exports)); + Object.defineProperty(exports, "getV3ClientPackageName", { enumerable: true, get: function() { + return get_v3_client_package_name_1.getV3ClientPackageName; + } }); + var find_client_constructor_1 = (init_find_client_constructor(), __toCommonJS(find_client_constructor_exports)); + Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function() { + return find_client_constructor_1.findV3ClientConstructor; + } }); + } +}); + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var aws_sdk_v3_handler_exports = {}; +__export(aws_sdk_v3_handler_exports, { + forceSdkInstallation: () => forceSdkInstallation, + handler: () => handler +}); +module.exports = __toCommonJS(aws_sdk_v3_handler_exports); +var import_child_process = require("child_process"); +var import_sdk_v2_to_v3_adapter = __toESM(require_lib()); + +// custom-resources/lib/aws-custom-resource/runtime/shared.ts +var PHYSICAL_RESOURCE_ID_REFERENCE = "PHYSICAL:RESOURCEID:"; +var decoder = new TextDecoder(); +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString("utf8"); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child).map((key) => { + const childKey = parseField(child[key]); + return typeof childKey === "object" && childKey !== null ? _flatten(childKey, path.concat([key])) : { [path.concat([key]).join(".")]: childKey }; + })); + } + return Object.assign( + {}, + ..._flatten(object) + ); +} +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +function filterKeys(object, pred) { + return Object.entries(object).reduce( + (acc, [k, v]) => pred(k) ? { ...acc, [k]: v } : acc, + {} + ); +} +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data + }); + console.log("Responding", responseBody); + const parsedUrl = require("url").parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: "PUT", + headers: { + "content-type": "", + "content-length": Buffer.byteLength(responseBody, "utf8") + } + }; + return new Promise((resolve, reject) => { + try { + const request = require("https").request(requestOptions, resolve); + request.on("error", reject); + request.write(responseBody); + request.end(); + } catch (e) { + reject(e); + } + }); +} +function decodeCall(call) { + if (!call) { + return void 0; + } + return JSON.parse(call); +} +function startsWithOneOf(searchStrings) { + return function(string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} + +// custom-resources/lib/aws-custom-resource/runtime/aws-sdk-v3-handler.ts +var installedSdk = {}; +function forceSdkInstallation() { + installedSdk = {}; +} +function installLatestSdk(packageName) { + console.log(`Installing latest AWS SDK v3: ${packageName}`); + (0, import_child_process.execSync)( + `NPM_CONFIG_UPDATE_NOTIFIER=false HOME=/tmp npm install ${packageName} --omit=dev --no-package-lock --no-save --prefix /tmp` + ); + installedSdk = { + ...installedSdk, + [packageName]: true + }; +} +async function loadAwsSdk(packageName, installLatestAwsSdk) { + let awsSdk; + try { + if (!installedSdk[packageName] && installLatestAwsSdk === "true") { + try { + installLatestSdk(packageName); + awsSdk = require(`/tmp/node_modules/${packageName}`); + } catch (e) { + console.log(`Failed to install latest AWS SDK v3. Falling back to pre-installed version. Error: ${e}`); + return require(packageName); + } + } else if (installedSdk[packageName]) { + awsSdk = require(`/tmp/node_modules/${packageName}`); + } else { + awsSdk = require(packageName); + } + } catch (error) { + throw Error(`Package ${packageName} does not exist.`); + } + return awsSdk; +} +async function handler(event, context) { + try { + event.ResourceProperties.Create = decodeCall(event.ResourceProperties.Create); + event.ResourceProperties.Update = decodeCall(event.ResourceProperties.Update); + event.ResourceProperties.Delete = decodeCall(event.ResourceProperties.Delete); + let data = {}; + let physicalResourceId; + switch (event.RequestType) { + case "Create": + physicalResourceId = event.ResourceProperties.Create?.physicalResourceId?.id ?? event.ResourceProperties.Update?.physicalResourceId?.id ?? event.ResourceProperties.Delete?.physicalResourceId?.id ?? event.LogicalResourceId; + break; + case "Update": + case "Delete": + physicalResourceId = event.ResourceProperties[event.RequestType]?.physicalResourceId?.id ?? event.PhysicalResourceId; + break; + } + const call = event.ResourceProperties[event.RequestType]; + if (call) { + const packageName = call.service.startsWith("@aws-sdk/") ? call.service : (0, import_sdk_v2_to_v3_adapter.getV3ClientPackageName)(call.service); + let awsSdk = loadAwsSdk( + packageName, + event.ResourceProperties.InstallLatestAwsSdk + ); + console.log(JSON.stringify({ ...event, ResponseURL: "..." })); + let credentials; + if (call.assumedRoleArn) { + const timestamp = (/* @__PURE__ */ new Date()).getTime(); + const params = { + RoleArn: call.assumedRoleArn, + RoleSessionName: `${timestamp}-${physicalResourceId}`.substring(0, 64) + }; + const { fromTemporaryCredentials } = await import("@aws-sdk/credential-providers"); + credentials = fromTemporaryCredentials({ + params + }); + } + awsSdk = await awsSdk; + const ServiceClient = (0, import_sdk_v2_to_v3_adapter.findV3ClientConstructor)(awsSdk); + const client = new ServiceClient({ + apiVersion: call.apiVersion, + credentials, + region: call.region + }); + const commandName = call.action.endsWith("Command") ? call.action : `${call.action}Command`; + const Command = Object.entries(awsSdk).find( + ([name]) => name.toLowerCase() === commandName.toLowerCase() + )?.[1]; + let flatData = {}; + try { + const response = await client.send( + new Command( + (call.parameters && decodeSpecialValues(call.parameters, physicalResourceId)) ?? {} + ) + ); + flatData = { + apiVersion: client.config.apiVersion, + // For test purposes: check if apiVersion was correctly passed. + region: await client.config.region().catch(() => void 0), + // For test purposes: check if region was correctly passed. + ...flatten(response) + }; + let outputPaths; + if (call.outputPath) { + outputPaths = [call.outputPath]; + } else if (call.outputPaths) { + outputPaths = call.outputPaths; + } + if (outputPaths) { + data = filterKeys(flatData, startsWithOneOf(outputPaths)); + } else { + data = flatData; + } + } catch (e) { + const exceptionName = e.name ?? e.constructor.name; + if (!call.ignoreErrorCodesMatching || !new RegExp(call.ignoreErrorCodesMatching).test(exceptionName)) { + throw e; + } + } + if (call.physicalResourceId?.responsePath) { + physicalResourceId = flatData[call.physicalResourceId.responsePath]; + } + } + await respond(event, "SUCCESS", "OK", physicalResourceId, data); + } catch (e) { + console.log(e); + await respond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {}); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + forceSdkInstallation, + handler +}); diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js new file mode 100644 index 0000000000000..ceb54f8e2b70f --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/index.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.handler = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +var shared_1 = require("./shared"); +Object.defineProperty(exports, "PHYSICAL_RESOURCE_ID_REFERENCE", { enumerable: true, get: function () { return shared_1.PHYSICAL_RESOURCE_ID_REFERENCE; } }); +const env = process.env.AWS_EXECUTION_ENV; +// eslint-disable-next-line @typescript-eslint/no-require-imports +const runtime = env && env >= 'AWS_Lambda_nodejs18.x' ? require('./aws-sdk-v3-handler.bundled') : require('./aws-sdk-v2-handler'); +exports.handler = runtime.handler; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMEQ7QUFBakQsd0hBQUEsOEJBQThCLE9BQUE7QUFFdkMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztBQUMxQyxpRUFBaUU7QUFDakUsTUFBTSxPQUFPLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3JILFFBQUEsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQSFlTSUNBTF9SRVNPVVJDRV9JRF9SRUZFUkVOQ0UgfSBmcm9tICcuL3NoYXJlZCc7XG5cbmNvbnN0IGVudiA9IHByb2Nlc3MuZW52LkFXU19FWEVDVVRJT05fRU5WO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IHJ1bnRpbWUgPSBlbnYgJiYgZW52ID49ICdBV1NfTGFtYmRhX25vZGVqczE4LngnID8gcmVxdWlyZSgnLi9hd3Mtc2RrLXYzLWhhbmRsZXIuYnVuZGxlZCcpIDogcmVxdWlyZSgnLi9hd3Mtc2RrLXYyLWhhbmRsZXInKTtcbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gcnVudGltZS5oYW5kbGVyO1xuIl19 \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js new file mode 100644 index 0000000000000..ee5f1a0267449 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/asset.66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6/shared.js @@ -0,0 +1,123 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.startsWithOneOf = exports.decodeCall = exports.respond = exports.filterKeys = exports.decodeSpecialValues = exports.flatten = exports.PHYSICAL_RESOURCE_ID_REFERENCE = void 0; +/** + * Serialized form of the physical resource id for use in the operation parameters + */ +exports.PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value) { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + return value; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(object) { + function _flatten(child, path = []) { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } + return Object.assign({}, ..._flatten(object)); +} +exports.flatten = flatten; +/** + * Decodes encoded special values (physicalResourceId) + */ +function decodeSpecialValues(object, physicalResourceId) { + return JSON.parse(JSON.stringify(object), (_k, v) => { + switch (v) { + case exports.PHYSICAL_RESOURCE_ID_REFERENCE: + return physicalResourceId; + default: + return v; + } + }); +} +exports.decodeSpecialValues = decodeSpecialValues; +/** + * Filters the keys of an object. + */ +function filterKeys(object, pred) { + return Object.entries(object) + .reduce((acc, [k, v]) => pred(k) + ? { ...acc, [k]: v } + : acc, {}); +} +exports.filterKeys = filterKeys; +function respond(event, responseStatus, reason, physicalResourceId, data) { + const responseBody = JSON.stringify({ + Status: responseStatus, + Reason: reason, + PhysicalResourceId: physicalResourceId, + StackId: event.StackId, + RequestId: event.RequestId, + LogicalResourceId: event.LogicalResourceId, + NoEcho: false, + Data: data, + }); + // eslint-disable-next-line no-console + console.log('Responding', responseBody); + // eslint-disable-next-line @typescript-eslint/no-require-imports + const parsedUrl = require('url').parse(event.ResponseURL); + const requestOptions = { + hostname: parsedUrl.hostname, + path: parsedUrl.path, + method: 'PUT', + headers: { + 'content-type': '', + 'content-length': Buffer.byteLength(responseBody, 'utf8'), + }, + }; + return new Promise((resolve, reject) => { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const request = require('https').request(requestOptions, resolve); + request.on('error', reject); + request.write(responseBody); + request.end(); + } + catch (e) { + reject(e); + } + }); +} +exports.respond = respond; +function decodeCall(call) { + if (!call) { + return undefined; + } + return JSON.parse(call); +} +exports.decodeCall = decodeCall; +function startsWithOneOf(searchStrings) { + return function (string) { + for (const searchString of searchStrings) { + if (string.startsWith(searchString)) { + return true; + } + } + return false; + }; +} +exports.startsWithOneOf = startsWithOneOf; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ1UsUUFBQSw4QkFBOEIsR0FBRyxzQkFBc0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7U0FBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLE1BQWM7SUFDcEMsU0FBUyxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWlCLEVBQUU7UUFDL0MsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJO2dCQUN0RCxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFH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LE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdENELDBCQXNDQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUF3QjtJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUhELGdDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGFBQXVCO0lBQ3JELE9BQU8sVUFBUyxNQUFjO1FBQzVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO1lBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsMENBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKipcbiAqIFNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgaWQgZm9yIHVzZSBpbiB0aGUgb3BlcmF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBIWVNJQ0FMX1JFU09VUkNFX0lEX1JFRkVSRU5DRSA9ICdQSFlTSUNBTDpSRVNPVVJDRUlEOic7XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8qKlxuICogUGFyc2UgYm90aCBidWZmZXJzIGFuZCBBcnJheUJ1ZmZlcnMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IHNka3YzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh2YWx1ZS5idWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBGbGF0dGVucyBhIG5lc3RlZCBvYmplY3RcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHRoZSBvYmplY3QgdG8gYmUgZmxhdHRlbmVkXG4gKiBAcmV0dXJucyBhIGZsYXQgb2JqZWN0IHdpdGggcGF0aCBhcyBrZXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iamVjdDogb2JqZWN0KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGZ1bmN0aW9uIF9mbGF0dGVuKGNoaWxkOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uT2JqZWN0LmtleXMoY2hpbGQpXG4gICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGFyc2VGaWVsZChjaGlsZFtrZXldKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZEtleSA9PT0gJ29iamVjdCcgJiYgY2hpbGRLZXkgIT09IG51bGxcbiAgICAgICAgICA/IF9mbGF0dGVuKGNoaWxkS2V5LCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgICAgICAgOiAoeyBbcGF0aC5jb25jYXQoW2tleV0pLmpvaW4oJy4nKV06IGNoaWxkS2V5IH0pO1xuICAgICAgfSkpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIC4uLl9mbGF0dGVuKG9iamVjdCksXG4gICk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBlbmNvZGVkIHNwZWNpYWwgdmFsdWVzIChwaHlzaWNhbFJlc291cmNlSWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTcGVjaWFsVmFsdWVzKG9iamVjdDogb2JqZWN0LCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCAoX2ssIHYpID0+IHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgUEhZU0lDQUxfUkVTT1VSQ0VfSURfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gcGh5c2ljYWxSZXNvdXJjZUlkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBrZXlzIG9mIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcktleXMob2JqZWN0OiBvYmplY3QsIHByZWQ6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqZWN0KVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaywgdl0pID0+IHByZWQoaylcbiAgICAgICAgPyB7IC4uLmFjYywgW2tdOiB2IH1cbiAgICAgICAgOiBhY2MsXG4gICAgICB7fSxcbiAgICApO1xufVxuXG50eXBlIEV2ZW50ID0gQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uZChldmVudDogRXZlbnQsIHJlc3BvbnNlU3RhdHVzOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlc3BvbnNlQm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBTdGF0dXM6IHJlc3BvbnNlU3RhdHVzLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YTogZGF0YSxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coJ1Jlc3BvbmRpbmcnLCByZXNwb25zZUJvZHkpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHBhcnNlZFVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlKGV2ZW50LlJlc3BvbnNlVVJMKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aCxcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdjb250ZW50LXR5cGUnOiAnJyxcbiAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlc3BvbnNlQm9keSwgJ3V0ZjgnKSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnaHR0cHMnKS5yZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXNvbHZlKTtcbiAgICAgIHJlcXVlc3Qub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIHJlcXVlc3Qud3JpdGUocmVzcG9uc2VCb2R5KTtcbiAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVDYWxsKGNhbGw6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWNhbGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICByZXR1cm4gSlNPTi5wYXJzZShjYWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGhPbmVPZihzZWFyY2hTdHJpbmdzOiBzdHJpbmdbXSk6IChzdHJpbmc6IHN0cmluZykgPT4gYm9vbGVhbiB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgc2VhcmNoU3RyaW5nIG9mIHNlYXJjaFN0cmluZ3MpIHtcbiAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG59XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/cdk.out b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/cdk.out new file mode 100644 index 0000000000000..560dae10d018f --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"33.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/integ.json new file mode 100644 index 0000000000000..a205345464bd5 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "33.0.0", + "testCases": { + "AwsCustomResourceInvokePayloadInteg/DefaultTest": { + "stacks": [ + "AwsCustomResourceInvokePayloadStack" + ], + "assertionStack": "AwsCustomResourceInvokePayloadInteg/DefaultTest/DeployAssert", + "assertionStackName": "AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/manifest.json new file mode 100644 index 0000000000000..3c4723af50fc5 --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/manifest.json @@ -0,0 +1,159 @@ +{ + "version": "33.0.0", + "artifacts": { + "AwsCustomResourceInvokePayloadStack.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "AwsCustomResourceInvokePayloadStack.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "AwsCustomResourceInvokePayloadStack": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "AwsCustomResourceInvokePayloadStack.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/5873734ee9738f2cc2e5299d2cdbd51b7cba842b46af87b9047f5d77044b81b3.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "AwsCustomResourceInvokePayloadStack.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "AwsCustomResourceInvokePayloadStack.assets" + ], + "metadata": { + "/AwsCustomResourceInvokePayloadStack/Function/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "FunctionServiceRole675BB04A" + } + ], + "/AwsCustomResourceInvokePayloadStack/Function/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Function76856677" + } + ], + "/AwsCustomResourceInvokePayloadStack/ListLambdaFunctions": [ + { + "type": "aws:cdk:warning", + "data": "installLatestAwsSdk was not specified, and defaults to true. You probably do not want this. Set the global context flag '@aws-cdk/customresources:installLatestAwsSdkDefault' to false to switch this behavior off project-wide, or set the property explicitly to true if you know you need to call APIs that are not in Lambda's built-in SDK version." + } + ], + "/AwsCustomResourceInvokePayloadStack/ListLambdaFunctions/Resource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "ListLambdaFunctionsF9FB8E2B" + } + ], + "/AwsCustomResourceInvokePayloadStack/ListLambdaFunctions/CustomResourcePolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ListLambdaFunctionsCustomResourcePolicyCFFF021A" + } + ], + "/AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + } + ], + "/AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleDefaultPolicyD28E1A5E" + } + ], + "/AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AWS679f53fac002430cb0da5b7982bd22872D164C4C" + } + ], + "/AwsCustomResourceInvokePayloadStack/FunctionPayload": [ + { + "type": "aws:cdk:logicalId", + "data": "FunctionPayload" + } + ], + "/AwsCustomResourceInvokePayloadStack/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/AwsCustomResourceInvokePayloadStack/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "AwsCustomResourceInvokePayloadStack" + }, + "AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "AwsCustomResourceInvokePayloadIntegDefaultTestDeployAssertB4B64337.assets" + ], + "metadata": { + "/AwsCustomResourceInvokePayloadInteg/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/AwsCustomResourceInvokePayloadInteg/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "AwsCustomResourceInvokePayloadInteg/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/tree.json new file mode 100644 index 0000000000000..0dd92b4e2f2ed --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.js.snapshot/tree.json @@ -0,0 +1,456 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "AwsCustomResourceInvokePayloadStack": { + "id": "AwsCustomResourceInvokePayloadStack", + "path": "AwsCustomResourceInvokePayloadStack", + "children": { + "Function": { + "id": "Function", + "path": "AwsCustomResourceInvokePayloadStack/Function", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "AwsCustomResourceInvokePayloadStack/Function/ServiceRole", + "children": { + "ImportServiceRole": { + "id": "ImportServiceRole", + "path": "AwsCustomResourceInvokePayloadStack/Function/ServiceRole/ImportServiceRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "AwsCustomResourceInvokePayloadStack/Function/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "AwsCustomResourceInvokePayloadStack/Function/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "zipFile": "exports.handler = async () => { return { statusCode: 200, body: 'Hello World' }; };" + }, + "handler": "index.handler", + "role": { + "Fn::GetAtt": [ + "FunctionServiceRole675BB04A", + "Arn" + ] + }, + "runtime": "nodejs18.x" + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" + } + }, + "ListLambdaFunctions": { + "id": "ListLambdaFunctions", + "path": "AwsCustomResourceInvokePayloadStack/ListLambdaFunctions", + "children": { + "Provider": { + "id": "Provider", + "path": "AwsCustomResourceInvokePayloadStack/ListLambdaFunctions/Provider", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.SingletonFunction", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "AwsCustomResourceInvokePayloadStack/ListLambdaFunctions/Resource", + "children": { + "Default": { + "id": "Default", + "path": "AwsCustomResourceInvokePayloadStack/ListLambdaFunctions/Resource/Default", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.CustomResource", + "version": "0.0.0" + } + }, + "CustomResourcePolicy": { + "id": "CustomResourcePolicy", + "path": "AwsCustomResourceInvokePayloadStack/ListLambdaFunctions/CustomResourcePolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "AwsCustomResourceInvokePayloadStack/ListLambdaFunctions/CustomResourcePolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "*", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "policyName": "ListLambdaFunctionsCustomResourcePolicyCFFF021A", + "roles": [ + { + "Ref": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.custom_resources.AwsCustomResource", + "version": "0.0.0" + } + }, + "AWS679f53fac002430cb0da5b7982bd2287": { + "id": "AWS679f53fac002430cb0da5b7982bd2287", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287", + "children": { + "ServiceRole": { + "id": "ServiceRole", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole", + "children": { + "ImportServiceRole": { + "id": "ImportServiceRole", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole/ImportServiceRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "managedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "Function76856677", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "policyName": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleDefaultPolicyD28E1A5E", + "roles": [ + { + "Ref": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" + } + }, + "Code": { + "id": "Code", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/Code", + "children": { + "Stage": { + "id": "Stage", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/Code/Stage", + "constructInfo": { + "fqn": "aws-cdk-lib.AssetStaging", + "version": "0.0.0" + } + }, + "AssetBucket": { + "id": "AssetBucket", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/Code/AssetBucket", + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3.BucketBase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_s3_assets.Asset", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "AwsCustomResourceInvokePayloadStack/AWS679f53fac002430cb0da5b7982bd2287/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Lambda::Function", + "aws:cdk:cloudformation:props": { + "code": { + "s3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "s3Key": "66db480cb40e7e6208f01c9d9e882f4c416110a2c66dd0c6d12844e8ca9129b6.zip" + }, + "handler": "index.handler", + "role": { + "Fn::GetAtt": [ + "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", + "Arn" + ] + }, + "runtime": "nodejs18.x", + "timeout": 120 + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.CfnFunction", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_lambda.Function", + "version": "0.0.0" + } + }, + "FunctionPayload": { + "id": "FunctionPayload", + "path": "AwsCustomResourceInvokePayloadStack/FunctionPayload", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnOutput", + "version": "0.0.0" + } + }, + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "AwsCustomResourceInvokePayloadStack/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "AwsCustomResourceInvokePayloadStack/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + }, + "AwsCustomResourceInvokePayloadInteg": { + "id": "AwsCustomResourceInvokePayloadInteg", + "path": "AwsCustomResourceInvokePayloadInteg", + "children": { + "DefaultTest": { + "id": "DefaultTest", + "path": "AwsCustomResourceInvokePayloadInteg/DefaultTest", + "children": { + "Default": { + "id": "Default", + "path": "AwsCustomResourceInvokePayloadInteg/DefaultTest/Default", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "DeployAssert": { + "id": "DeployAssert", + "path": "AwsCustomResourceInvokePayloadInteg/DefaultTest/DeployAssert", + "children": { + "BootstrapVersion": { + "id": "BootstrapVersion", + "path": "AwsCustomResourceInvokePayloadInteg/DefaultTest/DeployAssert/BootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnParameter", + "version": "0.0.0" + } + }, + "CheckBootstrapVersion": { + "id": "CheckBootstrapVersion", + "path": "AwsCustomResourceInvokePayloadInteg/DefaultTest/DeployAssert/CheckBootstrapVersion", + "constructInfo": { + "fqn": "aws-cdk-lib.CfnRule", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.Stack", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTestCase", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/integ-tests-alpha.IntegTest", + "version": "0.0.0" + } + }, + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.App", + "version": "0.0.0" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.ts b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.ts new file mode 100644 index 0000000000000..5c066e9939dff --- /dev/null +++ b/packages/@aws-cdk-testing/framework-integ/test/custom-resources/test/aws-custom-resource/integ.invoke-function-payload.ts @@ -0,0 +1,44 @@ +import { IntegTest } from '@aws-cdk/integ-tests-alpha'; +import * as cdk from 'aws-cdk-lib'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as cr from 'aws-cdk-lib/custom-resources'; +import * as iam from 'aws-cdk-lib/aws-iam'; + +const app = new cdk.App(); + +const stack = new cdk.Stack(app, 'AwsCustomResourceInvokePayloadStack'); + +const fn = new lambda.Function(stack, 'Function', { + code: lambda.Code.fromInline("exports.handler = async () => { return { statusCode: 200, body: 'Hello World' }; };"), + handler: 'index.handler', + runtime: lambda.Runtime.NODEJS_18_X, +}); + +const testCr = new cr.AwsCustomResource(stack, 'ListLambdaFunctions', { + onUpdate: { + service: 'Lambda', + action: 'invoke', + parameters: { + FunctionName: fn.functionName, + }, + physicalResourceId: cr.PhysicalResourceId.of(fn.functionArn), + }, + policy: cr.AwsCustomResourcePolicy.fromStatements([ + new iam.PolicyStatement({ + actions: ['*'], + resources: ['*'], + effect: iam.Effect.ALLOW, + }), + ]), +}); + +fn.grantInvoke(testCr); +const payload = testCr.getResponseField('Payload'); + +new cdk.CfnOutput(stack, 'FunctionPayload', { + value: payload, +}); + +new IntegTest(app, 'AwsCustomResourceInvokePayloadInteg', { + testCases: [stack], +}); diff --git a/packages/aws-cdk-lib/custom-resources/lib/aws-custom-resource/runtime/shared.ts b/packages/aws-cdk-lib/custom-resources/lib/aws-custom-resource/runtime/shared.ts index c7989e10f1530..08af4c121178d 100644 --- a/packages/aws-cdk-lib/custom-resources/lib/aws-custom-resource/runtime/shared.ts +++ b/packages/aws-cdk-lib/custom-resources/lib/aws-custom-resource/runtime/shared.ts @@ -5,6 +5,23 @@ import * as AWSLambda from 'aws-lambda'; */ export const PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); + +/** + * Parse both buffers and ArrayBuffers which can be returned by sdkv3 + */ +function parseField(value: any): any { + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } else if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + + return value; +} /** * Flattens a nested object * @@ -12,17 +29,18 @@ export const PHYSICAL_RESOURCE_ID_REFERENCE = 'PHYSICAL:RESOURCEID:'; * @returns a flat object with path as keys */ export function flatten(object: object): { [key: string]: any } { + function _flatten(child: any, path: string[] = []): any { + return [].concat(...Object.keys(child) + .map(key => { + const childKey = parseField(child[key]); + return typeof childKey === 'object' && childKey !== null + ? _flatten(childKey, path.concat([key])) + : ({ [path.concat([key]).join('.')]: childKey }); + })); + } return Object.assign( {}, - ...function _flatten(child: any, path: string[] = []): any { - return [].concat(...Object.keys(child) - .map(key => { - const childKey = Buffer.isBuffer(child[key]) ? child[key].toString('utf8') : child[key]; - return typeof childKey === 'object' && childKey !== null - ? _flatten(childKey, path.concat([key])) - : ({ [path.concat([key]).join('.')]: childKey }); - })); - }(object), + ..._flatten(object), ); } @@ -109,4 +127,4 @@ export function startsWithOneOf(searchStrings: string[]): (string: string) => bo } return false; }; -} \ No newline at end of file +} diff --git a/packages/aws-cdk-lib/custom-resources/test/aws-custom-resource/runtime/shared.test.ts b/packages/aws-cdk-lib/custom-resources/test/aws-custom-resource/runtime/shared.test.ts index 62496f03e7270..c69f758cfcb23 100644 --- a/packages/aws-cdk-lib/custom-resources/test/aws-custom-resource/runtime/shared.test.ts +++ b/packages/aws-cdk-lib/custom-resources/test/aws-custom-resource/runtime/shared.test.ts @@ -33,4 +33,23 @@ test('flatten correctly flattens an object with buffers', () => { 'nested.array.0': 'array.0', 'nested.array.1': 'array.1', }); -}); \ No newline at end of file +}); + +test('flatten correctly flattens an object with Uint8Array', () => { + const encoder = new TextEncoder(); + expect(flatten({ + body: encoder.encode('body'), + nested: { + buffer: encoder.encode('buffer'), + array: [ + encoder.encode('array.0'), + encoder.encode('array.1'), + ], + }, + })).toEqual({ + 'body': 'body', + 'nested.buffer': 'buffer', + 'nested.array.0': 'array.0', + 'nested.array.1': 'array.1', + }); +}); From a93af2fec36d05d9d0e3afcbbc39eb7a25e6f422 Mon Sep 17 00:00:00 2001 From: Luca Pizzini Date: Fri, 18 Aug 2023 19:10:18 +0200 Subject: [PATCH 27/56] feat(route53): add support for grantDelegation on imported PublicHostedZone (#26333) Imported `PublicHostedZone` with `fromPublicHostedZoneId` and `fromPublicHostedZoneAttributes` don't have support for the `grantDelegation` method since they return an instance of type `IPublicHostedZone`. This change adds support for `grantDelegation` to those instances as well. Closes #26240. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- ...dk-route53-cross-account-integ.assets.json | 4 +- ...-route53-cross-account-integ.template.json | 80 +++++++++++ .../manifest.json | 14 +- .../tree.json | 132 ++++++++++++++++++ .../integ.cross-account-zone-delegation.ts | 8 ++ packages/aws-cdk-lib/aws-ec2/README.md | 4 +- packages/aws-cdk-lib/aws-route53/README.md | 14 ++ .../aws-route53/lib/hosted-zone.ts | 39 ++---- packages/aws-cdk-lib/aws-route53/lib/util.ts | 22 +++ .../aws-route53/test/hosted-zone.test.ts | 51 +++++++ 10 files changed, 339 insertions(+), 29 deletions(-) diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/aws-cdk-route53-cross-account-integ.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/aws-cdk-route53-cross-account-integ.assets.json index 03a8cf2340c2f..53d04417642e3 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/aws-cdk-route53-cross-account-integ.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/aws-cdk-route53-cross-account-integ.assets.json @@ -14,7 +14,7 @@ } } }, - "3222f491727b0389ac87f972f2443b490ff3cee14d24c28f1527c3f085cab460": { + "52da24cb67101152630cedcc08830f183f595580f8a7f6fcef1e0aac216c7198": { "source": { "path": "aws-cdk-route53-cross-account-integ.template.json", "packaging": "file" @@ -22,7 +22,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "3222f491727b0389ac87f972f2443b490ff3cee14d24c28f1527c3f085cab460.json", + "objectKey": "52da24cb67101152630cedcc08830f183f595580f8a7f6fcef1e0aac216c7198.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/aws-cdk-route53-cross-account-integ.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/aws-cdk-route53-cross-account-integ.template.json index 0dc079b05fef5..1d8521c793e6e 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/aws-cdk-route53-cross-account-integ.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/aws-cdk-route53-cross-account-integ.template.json @@ -302,6 +302,86 @@ ], "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" + }, + "Role1ABCC5F0": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + } + } + ], + "Version": "2012-10-17" + } + } + }, + "RoleDefaultPolicy5FFB7DAB": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "route53:ChangeResourceRecordSets", + "Condition": { + "ForAllValues:StringEquals": { + "route53:ChangeResourceRecordSetsRecordTypes": [ + "NS" + ], + "route53:ChangeResourceRecordSetsActions": [ + "UPSERT", + "DELETE" + ] + } + }, + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":route53:::hostedzone/imported-public-zone-id" + ] + ] + } + }, + { + "Action": "route53:ListHostedZonesByName", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "RoleDefaultPolicy5FFB7DAB", + "Roles": [ + { + "Ref": "Role1ABCC5F0" + } + ] + } } }, "Parameters": { diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/manifest.json index 646cd1f7d8514..4ccccaed927c8 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/manifest.json @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/3222f491727b0389ac87f972f2443b490ff3cee14d24c28f1527c3f085cab460.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/52da24cb67101152630cedcc08830f183f595580f8a7f6fcef1e0aac216c7198.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -93,6 +93,18 @@ "data": "DelegationWithZoneNameCrossAccountZoneDelegationCustomResourceA1A1C94A" } ], + "/aws-cdk-route53-cross-account-integ/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "Role1ABCC5F0" + } + ], + "/aws-cdk-route53-cross-account-integ/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "RoleDefaultPolicy5FFB7DAB" + } + ], "/aws-cdk-route53-cross-account-integ/BootstrapVersion": [ { "type": "aws:cdk:logicalId", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/tree.json index d74a2a27509b1..583d08a41ccc4 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.js.snapshot/tree.json @@ -427,6 +427,138 @@ "version": "0.0.0" } }, + "Role": { + "id": "Role", + "path": "aws-cdk-route53-cross-account-integ/Role", + "children": { + "ImportRole": { + "id": "ImportRole", + "path": "aws-cdk-route53-cross-account-integ/Role/ImportRole", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, + "Resource": { + "id": "Resource", + "path": "aws-cdk-route53-cross-account-integ/Role/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnRole", + "version": "0.0.0" + } + }, + "DefaultPolicy": { + "id": "DefaultPolicy", + "path": "aws-cdk-route53-cross-account-integ/Role/DefaultPolicy", + "children": { + "Resource": { + "id": "Resource", + "path": "aws-cdk-route53-cross-account-integ/Role/DefaultPolicy/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Policy", + "aws:cdk:cloudformation:props": { + "policyDocument": { + "Statement": [ + { + "Action": "route53:ChangeResourceRecordSets", + "Condition": { + "ForAllValues:StringEquals": { + "route53:ChangeResourceRecordSetsRecordTypes": [ + "NS" + ], + "route53:ChangeResourceRecordSetsActions": [ + "UPSERT", + "DELETE" + ] + } + }, + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":route53:::hostedzone/imported-public-zone-id" + ] + ] + } + }, + { + "Action": "route53:ListHostedZonesByName", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "policyName": "RoleDefaultPolicy5FFB7DAB", + "roles": [ + { + "Ref": "Role1ABCC5F0" + } + ] + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.CfnPolicy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Policy", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "aws-cdk-lib.aws_iam.Role", + "version": "0.0.0" + } + }, + "ImportedPublicZone": { + "id": "ImportedPublicZone", + "path": "aws-cdk-route53-cross-account-integ/ImportedPublicZone", + "constructInfo": { + "fqn": "aws-cdk-lib.Resource", + "version": "0.0.0" + } + }, "BootstrapVersion": { "id": "BootstrapVersion", "path": "aws-cdk-route53-cross-account-integ/BootstrapVersion", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.ts index 0e72c2df287d5..e8e5d3d154b1b 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-route53/test/integ.cross-account-zone-delegation.ts @@ -32,8 +32,16 @@ new CrossAccountZoneDelegationRecord(stack, 'DelegationWithZoneName', { delegationRole: parentZone.crossAccountZoneDelegationRole!, }); +const role = new iam.Role(stack, 'Role', { + assumedBy: new iam.AccountRootPrincipal(), +}); + +const importedPublicZone = PublicHostedZone.fromPublicHostedZoneId(stack, 'ImportedPublicZone', 'imported-public-zone-id'); +importedPublicZone.grantDelegation(role); + new IntegTest(app, 'Route53CrossAccountInteg', { testCases: [stack], diffAssets: true, }); + app.synth(); diff --git a/packages/aws-cdk-lib/aws-ec2/README.md b/packages/aws-cdk-lib/aws-ec2/README.md index 709e363140811..9f909c613d08c 100644 --- a/packages/aws-cdk-lib/aws-ec2/README.md +++ b/packages/aws-cdk-lib/aws-ec2/README.md @@ -980,8 +980,8 @@ Endpoint services support private DNS, which makes it easier for clients to conn You can enable private DNS on an endpoint service like so: ```ts -import { HostedZone, VpcEndpointServiceDomainName } from 'aws-cdk-lib/aws-route53'; -declare const zone: HostedZone; +import { PublicHostedZone, VpcEndpointServiceDomainName } from 'aws-cdk-lib/aws-route53'; +declare const zone: PublicHostedZone; declare const vpces: ec2.VpcEndpointService; new VpcEndpointServiceDomainName(this, 'EndpointDomain', { diff --git a/packages/aws-cdk-lib/aws-route53/README.md b/packages/aws-cdk-lib/aws-route53/README.md index 3b5ee894c9494..af2036ca097fd 100644 --- a/packages/aws-cdk-lib/aws-route53/README.md +++ b/packages/aws-cdk-lib/aws-route53/README.md @@ -289,6 +289,20 @@ const zoneFromAttributes = route53.PublicHostedZone.fromPublicHostedZoneAttribut const zoneFromId = route53.PublicHostedZone.fromPublicHostedZoneId(this, 'MyZone', 'ZOJJZC49E0EPZ'); ``` +You can use `CrossAccountZoneDelegationRecord` on imported Public Hosted Zones with the `grantDelegation` method: + +```ts +const crossAccountRole = new iam.Role(this, 'CrossAccountRole', { + // The role name must be predictable + roleName: 'MyDelegationRole', + // The other account + assumedBy: new iam.AccountPrincipal('12345678901'), +}); + +const zoneFromId = route53.PublicHostedZone.fromPublicHostedZoneId(this, 'MyZone', 'ZOJJZC49E0EPZ'); +zoneFromId.grantDelegation(crossAccountRole); +``` + ## VPC Endpoint Service Private DNS When you create a VPC endpoint service, AWS generates endpoint-specific DNS hostnames that consumers use to communicate with the service. diff --git a/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts b/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts index efe94731622ae..cbb8ad6faf524 100644 --- a/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts +++ b/packages/aws-cdk-lib/aws-route53/lib/hosted-zone.ts @@ -3,7 +3,7 @@ import { HostedZoneProviderProps } from './hosted-zone-provider'; import { HostedZoneAttributes, IHostedZone, PublicHostedZoneAttributes } from './hosted-zone-ref'; import { CaaAmazonRecord, ZoneDelegationRecord } from './record-set'; import { CfnHostedZone } from './route53.generated'; -import { makeHostedZoneArn, validateZoneName } from './util'; +import { makeGrantDelegation, makeHostedZoneArn, validateZoneName } from './util'; import * as ec2 from '../../aws-ec2'; import * as iam from '../../aws-iam'; import * as cxschema from '../../cloud-assembly-schema'; @@ -238,7 +238,12 @@ export interface PublicHostedZoneProps extends CommonHostedZoneProps { /** * Represents a Route 53 public hosted zone */ -export interface IPublicHostedZone extends IHostedZone { } +export interface IPublicHostedZone extends IHostedZone { + /** + * Grant permissions to add delegation records to this zone + */ + grantDelegation(grantee: iam.IGrantable): iam.Grant; +} /** * Create a Route53 public hosted zone. @@ -264,6 +269,9 @@ export class PublicHostedZone extends HostedZone implements IPublicHostedZone { public get hostedZoneArn(): string { return makeHostedZoneArn(this, this.hostedZoneId); } + public grantDelegation(grantee: iam.IGrantable): iam.Grant { + return makeGrantDelegation(grantee, this.hostedZoneArn); + }; } return new Import(scope, id); } @@ -284,6 +292,9 @@ export class PublicHostedZone extends HostedZone implements IPublicHostedZone { public get hostedZoneArn(): string { return makeHostedZoneArn(this, this.hostedZoneId); } + public grantDelegation(grantee: iam.IGrantable): iam.Grant { + return makeGrantDelegation(grantee, this.hostedZoneArn); + }; } return new Import(scope, id); } @@ -354,28 +365,8 @@ export class PublicHostedZone extends HostedZone implements IPublicHostedZone { }); } - /** - * Grant permissions to add delegation records to this zone - */ - public grantDelegation(grantee: iam.IGrantable) { - const g1 = iam.Grant.addToPrincipal({ - grantee, - actions: ['route53:ChangeResourceRecordSets'], - resourceArns: [this.hostedZoneArn], - conditions: { - 'ForAllValues:StringEquals': { - 'route53:ChangeResourceRecordSetsRecordTypes': ['NS'], - 'route53:ChangeResourceRecordSetsActions': ['UPSERT', 'DELETE'], - }, - }, - }); - const g2 = iam.Grant.addToPrincipal({ - grantee, - actions: ['route53:ListHostedZonesByName'], - resourceArns: ['*'], - }); - - return g1.combine(g2); + public grantDelegation(grantee: iam.IGrantable): iam.Grant { + return makeGrantDelegation(grantee, this.hostedZoneArn); } } diff --git a/packages/aws-cdk-lib/aws-route53/lib/util.ts b/packages/aws-cdk-lib/aws-route53/lib/util.ts index b6416e49a366f..6f8f832289a98 100644 --- a/packages/aws-cdk-lib/aws-route53/lib/util.ts +++ b/packages/aws-cdk-lib/aws-route53/lib/util.ts @@ -1,5 +1,6 @@ import { Construct } from 'constructs'; import { IHostedZone } from './hosted-zone-ref'; +import * as iam from '../../aws-iam'; import { Stack } from '../../core'; /** @@ -69,3 +70,24 @@ export function makeHostedZoneArn(construct: Construct, hostedZoneId: string): s resourceName: hostedZoneId, }); } + +export function makeGrantDelegation(grantee: iam.IGrantable, hostedZoneArn: string): iam.Grant { + const g1 = iam.Grant.addToPrincipal({ + grantee, + actions: ['route53:ChangeResourceRecordSets'], + resourceArns: [hostedZoneArn], + conditions: { + 'ForAllValues:StringEquals': { + 'route53:ChangeResourceRecordSetsRecordTypes': ['NS'], + 'route53:ChangeResourceRecordSetsActions': ['UPSERT', 'DELETE'], + }, + }, + }); + const g2 = iam.Grant.addToPrincipal({ + grantee, + actions: ['route53:ListHostedZonesByName'], + resourceArns: ['*'], + }); + + return g1.combine(g2); +} \ No newline at end of file diff --git a/packages/aws-cdk-lib/aws-route53/test/hosted-zone.test.ts b/packages/aws-cdk-lib/aws-route53/test/hosted-zone.test.ts index 4f37b586ee041..a5b2722a8adf5 100644 --- a/packages/aws-cdk-lib/aws-route53/test/hosted-zone.test.ts +++ b/packages/aws-cdk-lib/aws-route53/test/hosted-zone.test.ts @@ -288,6 +288,57 @@ test('grantDelegation', () => { }); }); +test('grantDelegation on imported public zones', () => { + // GIVEN + const stack = new cdk.Stack(undefined, 'TestStack', { + env: { account: '123456789012', region: 'us-east-1' }, + }); + + const role = new iam.Role(stack, 'Role', { + assumedBy: new iam.AccountPrincipal('22222222222222'), + }); + + const zone = PublicHostedZone.fromPublicHostedZoneId(stack, 'Zone', 'hosted-id'); + + // WHEN + zone.grantDelegation(role); + + // THEN + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: [ + { + Action: 'route53:ChangeResourceRecordSets', + Effect: 'Allow', + Resource: { + 'Fn::Join': [ + '', + [ + 'arn:', + { + Ref: 'AWS::Partition', + }, + ':route53:::hostedzone/hosted-id', + ], + ], + }, + Condition: { + 'ForAllValues:StringEquals': { + 'route53:ChangeResourceRecordSetsRecordTypes': ['NS'], + 'route53:ChangeResourceRecordSetsActions': ['UPSERT', 'DELETE'], + }, + }, + }, + { + Action: 'route53:ListHostedZonesByName', + Effect: 'Allow', + Resource: '*', + }, + ], + }, + }); +}); + describe('Hosted Zone with dot', () => { test('Hosted Zone constructs without trailing dot by default', () => { // GIVEN From 3305d4f8cf2a15f36c90065c21c7d8525ac1ccbc Mon Sep 17 00:00:00 2001 From: Tatsuya Mori Date: Sat, 19 Aug 2023 02:37:19 +0900 Subject: [PATCH 28/56] docs(events-targets): add link for Run an ECS task section (#26805) README for aws-cdk-lib.aws_events_targets is missing the link for `Run an ECS task` section. This PR introduces the link. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/aws-cdk-lib/aws-events-targets/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/aws-cdk-lib/aws-events-targets/README.md b/packages/aws-cdk-lib/aws-events-targets/README.md index 693a93ab2dbd1..1ca040a96e49d 100644 --- a/packages/aws-cdk-lib/aws-events-targets/README.md +++ b/packages/aws-cdk-lib/aws-events-targets/README.md @@ -9,7 +9,7 @@ Currently supported are: * [Start a CodeBuild build](#start-a-codebuild-build) * [Start a CodePipeline pipeline](#start-a-codepipeline-pipeline) -* Run an ECS task +* [Run an ECS task](#run-an-ecs-task) * [Invoke a Lambda function](#invoke-a-lambda-function) * [Invoke a API Gateway REST API](#invoke-an-api-gateway-rest-api) * Publish a message to an SNS topic @@ -416,7 +416,7 @@ rule.addTarget( ); ``` -### enable Amazon ECS Exec for ECS Task +### Enable Amazon ECS Exec for ECS Task If you use Amazon ECS Exec, you can run commands in or get a shell to a container running on an Amazon EC2 instance or on AWS Fargate. From 94e48c6f5adf4aa5ebfe1491990ef8c4cf4ddaad Mon Sep 17 00:00:00 2001 From: Luca Pizzini Date: Fri, 18 Aug 2023 20:05:04 +0200 Subject: [PATCH 29/56] fix(secretsmanager): rotation resource creation can fail due to race condition (#26512) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Setting up a `RotationSchedule` with `rotationLambda` could cause failures due to the lambda invoking permission and the`RotationSchedule` being created concurrently. This fix adds a dependency to ensure the policy is created first and to prevent race conditions. Closes #26481. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- ...integ-secret-lambda-rotation.template.json | 5 ++++- .../test/integ.lambda-rotation.ts | 9 +++++++- .../lib/rotation-schedule.ts | 3 ++- .../test/rotation-schedule.test.ts | 22 +++++++++++++++++++ 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-secretsmanager/test/integ.lambda-rotation.js.snapshot/cdk-integ-secret-lambda-rotation.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-secretsmanager/test/integ.lambda-rotation.js.snapshot/cdk-integ-secret-lambda-rotation.template.json index f21330a12b17c..f8b5c879ce48a 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-secretsmanager/test/integ.lambda-rotation.js.snapshot/cdk-integ-secret-lambda-rotation.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-secretsmanager/test/integ.lambda-rotation.js.snapshot/cdk-integ-secret-lambda-rotation.template.json @@ -144,7 +144,10 @@ "RotationRules": { "AutomaticallyAfterDays": 30 } - } + }, + "DependsOn": [ + "LambdaInvokeN0a2GKfZP0JmDqDEVhhu6A0TUv3NyNbk4YMFKNc69846677" + ] }, "SecretPolicy06C9821C": { "Type": "AWS::SecretsManager::ResourcePolicy", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-secretsmanager/test/integ.lambda-rotation.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-secretsmanager/test/integ.lambda-rotation.ts index eedd5f6654472..18cdb2597de5f 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-secretsmanager/test/integ.lambda-rotation.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-secretsmanager/test/integ.lambda-rotation.ts @@ -2,6 +2,7 @@ import * as kms from 'aws-cdk-lib/aws-kms'; import * as lambda from 'aws-cdk-lib/aws-lambda'; import * as cdk from 'aws-cdk-lib'; import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager'; +import * as integ from '@aws-cdk/integ-tests-alpha'; class TestStack extends cdk.Stack { constructor(scope: cdk.App, id: string) { @@ -24,5 +25,11 @@ class TestStack extends cdk.Stack { } const app = new cdk.App(); -new TestStack(app, 'cdk-integ-secret-lambda-rotation'); + +const stack = new TestStack(app, 'cdk-integ-secret-lambda-rotation'); + +new integ.IntegTest(app, 'cdk-integ-secret-lambda-rotation-test', { + testCases: [stack], +}); + app.synth(); diff --git a/packages/aws-cdk-lib/aws-secretsmanager/lib/rotation-schedule.ts b/packages/aws-cdk-lib/aws-secretsmanager/lib/rotation-schedule.ts index 411199c3f3aa6..b2460667599f1 100644 --- a/packages/aws-cdk-lib/aws-secretsmanager/lib/rotation-schedule.ts +++ b/packages/aws-cdk-lib/aws-secretsmanager/lib/rotation-schedule.ts @@ -100,7 +100,8 @@ export class RotationSchedule extends Resource { ); } - props.rotationLambda.grantInvoke(new iam.ServicePrincipal('secretsmanager.amazonaws.com')); + const grant = props.rotationLambda.grantInvoke(new iam.ServicePrincipal('secretsmanager.amazonaws.com')); + grant.applyBefore(this); props.rotationLambda.addToRolePolicy( new iam.PolicyStatement({ diff --git a/packages/aws-cdk-lib/aws-secretsmanager/test/rotation-schedule.test.ts b/packages/aws-cdk-lib/aws-secretsmanager/test/rotation-schedule.test.ts index 2452c751c7830..8e2052f02ca1d 100644 --- a/packages/aws-cdk-lib/aws-secretsmanager/test/rotation-schedule.test.ts +++ b/packages/aws-cdk-lib/aws-secretsmanager/test/rotation-schedule.test.ts @@ -629,3 +629,25 @@ describe('manual rotations', () => { checkRotationNotSet(Duration.millis(0)); }); }); + +test('rotation schedule should have a dependency on lambda permissions', () => { + // GIVEN + const secret = new secretsmanager.Secret(stack, 'Secret'); + const rotationLambda = new lambda.Function(stack, 'Lambda', { + runtime: lambda.Runtime.NODEJS_14_X, + code: lambda.Code.fromInline('export.handler = event => event;'), + handler: 'index.handler', + }); + + // WHEN + secret.addRotationSchedule('RotationSchedule', { + rotationLambda, + }); + + // THEN + Template.fromStack(stack).hasResource('AWS::SecretsManager::RotationSchedule', { + DependsOn: [ + 'LambdaInvokeN0a2GKfZP0JmDqDEVhhu6A0TUv3NyNbk4YMFKNc69846677', + ], + }); +}); From 00a7f033f6ad19160a7350784243ecf9c71c388b Mon Sep 17 00:00:00 2001 From: Tatsuya Mori Date: Sat, 19 Aug 2023 03:32:10 +0900 Subject: [PATCH 30/56] fix(backup): validation for vault name fails when parameters are referred in the name (#25943) Validation for Backup vault name fails when parameters are referred in the name now. Current implementation simply validates vault name with regular expression described in [CFn reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-backupvault.html#cfn-backup-backupvault-backupvaultname), so it does not consider the special characters for parameters. This PR solves the issue by checking props.backupVaultName is resolved. Closes #21735 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../cdk-backup.assets.json | 4 +- .../cdk-backup.template.json | 34 ++++- .../test/integ.backup.js.snapshot/integ.json | 2 +- .../integ.backup.js.snapshot/manifest.json | 16 ++- .../test/integ.backup.js.snapshot/tree.json | 131 ++++++++++++------ .../test/aws-backup/test/integ.backup.ts | 13 +- packages/aws-cdk-lib/aws-backup/lib/vault.ts | 4 +- .../aws-cdk-lib/aws-backup/test/vault.test.ts | 17 ++- 8 files changed, 165 insertions(+), 56 deletions(-) diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/cdk-backup.assets.json b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/cdk-backup.assets.json index ebc526f444743..19ddf51ac30c3 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/cdk-backup.assets.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/cdk-backup.assets.json @@ -1,7 +1,7 @@ { "version": "32.0.0", "files": { - "cf2d89a4eac2c90005b9a1e142f1cac80cf9cd29d1b8f98f002b9f3a1849454c": { + "0c52c355c71ac95690274d7987110017ff9cd1a1bc79fa4206fda2f55d6b62d5": { "source": { "path": "cdk-backup.template.json", "packaging": "file" @@ -9,7 +9,7 @@ "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "cf2d89a4eac2c90005b9a1e142f1cac80cf9cd29d1b8f98f002b9f3a1849454c.json", + "objectKey": "0c52c355c71ac95690274d7987110017ff9cd1a1bc79fa4206fda2f55d6b62d5.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/cdk-backup.template.json b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/cdk-backup.template.json index 577d8efd46f37..2722b98da789d 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/cdk-backup.template.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/cdk-backup.template.json @@ -3,16 +3,16 @@ "TableCD117FA1": { "Type": "AWS::DynamoDB::Table", "Properties": { - "KeySchema": [ + "AttributeDefinitions": [ { "AttributeName": "id", - "KeyType": "HASH" + "AttributeType": "S" } ], - "AttributeDefinitions": [ + "KeySchema": [ { "AttributeName": "id", - "AttributeType": "S" + "KeyType": "HASH" } ], "ProvisionedThroughput": { @@ -50,6 +50,27 @@ "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" }, + "ThirdVault3441C01E": { + "Type": "AWS::Backup::BackupVault", + "Properties": { + "BackupVaultName": { + "Fn::Join": [ + "", + [ + "backupVault-", + { + "Ref": "Env" + } + ] + ] + }, + "LockConfiguration": { + "MinRetentionDays": 5 + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, "PlanDAF4E53A": { "Type": "AWS::Backup::BackupPlan", "Properties": { @@ -234,6 +255,11 @@ } }, "Parameters": { + "Env": { + "Type": "String", + "Default": "test", + "Description": "Env" + }, "BootstrapVersion": { "Type": "AWS::SSM::Parameter::Value", "Default": "/cdk-bootstrap/hnb659fds/version", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/integ.json b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/integ.json index 0a26289ba381b..266124ac58c12 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/integ.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/integ.json @@ -1,5 +1,5 @@ { - "version": "32.0.0", + "version": "33.0.0", "testCases": { "integ.backup": { "stacks": [ diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/manifest.json b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/manifest.json index 210b015870fa2..aa4d73d1faac8 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/manifest.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/manifest.json @@ -1,5 +1,5 @@ { - "version": "32.0.0", + "version": "33.0.0", "artifacts": { "cdk-backup.assets": { "type": "cdk:asset-manifest", @@ -17,7 +17,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/cf2d89a4eac2c90005b9a1e142f1cac80cf9cd29d1b8f98f002b9f3a1849454c.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/0c52c355c71ac95690274d7987110017ff9cd1a1bc79fa4206fda2f55d6b62d5.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -57,6 +57,18 @@ "data": "SecondaryVault67665B5E" } ], + "/cdk-backup/Env": [ + { + "type": "aws:cdk:logicalId", + "data": "Env" + } + ], + "/cdk-backup/ThirdVault/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ThirdVault3441C01E" + } + ], "/cdk-backup/Plan/Resource": [ { "type": "aws:cdk:logicalId", diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/tree.json b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/tree.json index e367a29532898..3728b496ca8cf 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/tree.json +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.js.snapshot/tree.json @@ -18,16 +18,16 @@ "attributes": { "aws:cdk:cloudformation:type": "AWS::DynamoDB::Table", "aws:cdk:cloudformation:props": { - "keySchema": [ + "attributeDefinitions": [ { "attributeName": "id", - "keyType": "HASH" + "attributeType": "S" } ], - "attributeDefinitions": [ + "keySchema": [ { "attributeName": "id", - "attributeType": "S" + "keyType": "HASH" } ], "provisionedThroughput": { @@ -37,22 +37,22 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_dynamodb.CfnTable", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "ScalingRole": { "id": "ScalingRole", "path": "cdk-backup/Table/ScalingRole", "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_dynamodb.Table", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "FileSystem": { @@ -63,8 +63,8 @@ "aws:cdk:cloudformation:props": {} }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_efs.CfnFileSystem", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "Vault": { @@ -84,14 +84,14 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_backup.CfnBackupVault", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_backup.BackupVault", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "SecondaryVault": { @@ -111,14 +111,59 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_backup.CfnBackupVault", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_backup.BackupVault", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "Env": { + "id": "Env", + "path": "cdk-backup/Env", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + }, + "ThirdVault": { + "id": "ThirdVault", + "path": "cdk-backup/ThirdVault", + "children": { + "Resource": { + "id": "Resource", + "path": "cdk-backup/ThirdVault/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::Backup::BackupVault", + "aws:cdk:cloudformation:props": { + "backupVaultName": { + "Fn::Join": [ + "", + [ + "backupVault-", + { + "Ref": "Env" + } + ] + ] + }, + "lockConfiguration": { + "minRetentionDays": 5 + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "Plan": { @@ -205,8 +250,8 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_backup.CfnBackupPlan", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "Selection": { @@ -221,8 +266,8 @@ "id": "ImportRole", "path": "cdk-backup/Plan/Selection/Role/ImportRole", "constructInfo": { - "fqn": "aws-cdk-lib.Resource", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "Resource": { @@ -260,14 +305,14 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.CfnRole", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_iam.Role", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "Resource": { @@ -349,42 +394,42 @@ } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_backup.CfnBackupSelection", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_backup.BackupSelection", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.aws_backup.BackupPlan", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "BootstrapVersion": { "id": "BootstrapVersion", "path": "cdk-backup/BootstrapVersion", "constructInfo": { - "fqn": "aws-cdk-lib.CfnParameter", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "CheckBootstrapVersion": { "id": "CheckBootstrapVersion", "path": "cdk-backup/CheckBootstrapVersion", "constructInfo": { - "fqn": "aws-cdk-lib.CfnRule", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.Stack", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } }, "Tree": { @@ -392,13 +437,13 @@ "path": "Tree", "constructInfo": { "fqn": "constructs.Construct", - "version": "10.2.26" + "version": "10.2.69" } } }, "constructInfo": { - "fqn": "aws-cdk-lib.App", - "version": "0.0.0" + "fqn": "constructs.Construct", + "version": "10.2.69" } } } \ No newline at end of file diff --git a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.ts b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.ts index 32ff7b52f454b..d5138ced8bc41 100644 --- a/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.ts +++ b/packages/@aws-cdk-testing/framework-integ/test/aws-backup/test/integ.backup.ts @@ -1,6 +1,6 @@ import * as dynamodb from 'aws-cdk-lib/aws-dynamodb'; import * as efs from 'aws-cdk-lib/aws-efs'; -import { App, Duration, RemovalPolicy, Stack, StackProps } from 'aws-cdk-lib'; +import { App, Duration, RemovalPolicy, Stack, StackProps, CfnParameter } from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as backup from 'aws-cdk-lib/aws-backup'; @@ -31,6 +31,17 @@ class TestStack extends Stack { minRetention: Duration.days(5), }, }); + + const env = new CfnParameter(this, 'Env', { type: 'String', description: 'Env', default: 'test' }); + + new backup.BackupVault(this, 'ThirdVault', { + removalPolicy: RemovalPolicy.DESTROY, + backupVaultName: `backupVault-${env.valueAsString}`, + lockConfiguration: { + minRetention: Duration.days(5), + }, + }); + const plan = backup.BackupPlan.dailyWeeklyMonthly5YearRetention(this, 'Plan', vault); plan.addSelection('Selection', { diff --git a/packages/aws-cdk-lib/aws-backup/lib/vault.ts b/packages/aws-cdk-lib/aws-backup/lib/vault.ts index ac530bafab2f1..8208cf6c37aba 100644 --- a/packages/aws-cdk-lib/aws-backup/lib/vault.ts +++ b/packages/aws-cdk-lib/aws-backup/lib/vault.ts @@ -3,7 +3,7 @@ import { CfnBackupVault } from './backup.generated'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as sns from '../../aws-sns'; -import { ArnFormat, Duration, IResource, Lazy, Names, RemovalPolicy, Resource, Stack } from '../../core'; +import { ArnFormat, Duration, IResource, Lazy, Names, RemovalPolicy, Resource, Stack, Token } from '../../core'; /** * A backup vault @@ -270,7 +270,7 @@ export class BackupVault extends BackupVaultBase { constructor(scope: Construct, id: string, props: BackupVaultProps = {}) { super(scope, id); - if (props.backupVaultName && !/^[a-zA-Z0-9\-_]{2,50}$/.test(props.backupVaultName)) { + if (props.backupVaultName && !Token.isUnresolved(props.backupVaultName) && !/^[a-zA-Z0-9\-_]{2,50}$/.test(props.backupVaultName)) { throw new Error('Expected vault name to match pattern `^[a-zA-Z0-9\-_]{2,50}$`'); } diff --git a/packages/aws-cdk-lib/aws-backup/test/vault.test.ts b/packages/aws-cdk-lib/aws-backup/test/vault.test.ts index dc2f5c50bd2c4..46cb2b4a18be2 100644 --- a/packages/aws-cdk-lib/aws-backup/test/vault.test.ts +++ b/packages/aws-cdk-lib/aws-backup/test/vault.test.ts @@ -2,7 +2,7 @@ import { Template } from '../../assertions'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import * as sns from '../../aws-sns'; -import { ArnFormat, Duration, Stack } from '../../core'; +import { ArnFormat, Duration, Stack, Fn } from '../../core'; import { BackupVault, BackupVaultEvents } from '../lib'; let stack: Stack; @@ -303,6 +303,21 @@ test('import from name', () => { })); }); +test('specify imported value as vault name', () => { + // WHEN + const vaultName = Fn.importValue('VaultName'); + new BackupVault(stack, 'Vault', { + backupVaultName: vaultName, + }); + + // THEN + Template.fromStack(stack).hasResourceProperties('AWS::Backup::BackupVault', { + BackupVaultName: { + 'Fn::ImportValue': 'VaultName', + }, + }); +}); + test('grant action', () => { // GIVEN const vaultName = 'myVaultName'; From 95f8cef0505dd2deb8ee5e45ab98c6ab1b764b02 Mon Sep 17 00:00:00 2001 From: Rico Hermans Date: Mon, 21 Aug 2023 17:05:49 +0200 Subject: [PATCH 31/56] fix(lambda-python): poetry bundling is broken after Aug 20 (#26823) The Dockerfile that builds an executable container to run `poetry` in installs the latest version of `poetry` on a Python 3.7 Docker image. Unfortunately `poetry 1.6.0`, released August 20, drops support for Python 3.7 which means that all poetry bundling jobs started failing on that date. `1.6.0` also does not work on Python 3.8, which I don't see mentioned in the change log, but our integration tests that use Python 3.8 are also broken. Lock the poetry version back to `1.5.1` by using a version specifier so the command is not dependent on the date it is run. This is the last version that supported both Python 3.7 and 3.8. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/@aws-cdk/aws-lambda-python-alpha/lib/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/@aws-cdk/aws-lambda-python-alpha/lib/Dockerfile b/packages/@aws-cdk/aws-lambda-python-alpha/lib/Dockerfile index e61f15fcb0fa8..334b2a80ac4d9 100644 --- a/packages/@aws-cdk/aws-lambda-python-alpha/lib/Dockerfile +++ b/packages/@aws-cdk/aws-lambda-python-alpha/lib/Dockerfile @@ -6,6 +6,7 @@ FROM $IMAGE ARG PIP_INDEX_URL ARG PIP_EXTRA_INDEX_URL ARG HTTPS_PROXY +ARG POETRY_VERSION=1.5.1 # Add virtualenv path ENV PATH="/usr/app/venv/bin:$PATH" @@ -17,7 +18,7 @@ ENV PIP_CACHE_DIR=/tmp/pip-cache ENV POETRY_CACHE_DIR=/tmp/poetry-cache RUN \ -# create a new virtualenv for python to use +# create a new virtualenv for python to use # so that it isn't using root python -m venv /usr/app/venv && \ # Create a new location for the pip cache @@ -31,7 +32,7 @@ RUN \ # Ensure all users can write to poetry cache chmod -R 777 /tmp/poetry-cache && \ # pipenv 2022.4.8 is the last version with Python 3.6 support - pip install pipenv==2022.4.8 poetry && \ + pip install pipenv==2022.4.8 poetry==$POETRY_VERSION && \ # Ensure no temporary files remain in the caches rm -rf /tmp/pip-cache/* /tmp/poetry-cache/* From 26dcc1e11a07d93681145049aa06d80a7d2114b9 Mon Sep 17 00:00:00 2001 From: Calvin Combs <66279577+comcalvi@users.noreply.github.com> Date: Mon, 21 Aug 2023 10:38:36 -0700 Subject: [PATCH 32/56] fix(CLI): diff reports wrong count of changed stacks (#26796) The current logic counts the number of changes in any parent stacks. It doesn't count nested stacks correctly, and doesn't count parent stacks correctly. With this change: Screenshot 2023-08-18 at 9 43 49 AM Without this change: Screenshot 2023-08-18 at 9 51 55 AM Closes #26818. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/aws-cdk/lib/api/deployments.ts | 10 +- .../aws-cdk/lib/api/nested-stack-helpers.ts | 28 +++++ packages/aws-cdk/lib/cdk-toolkit.ts | 16 ++- .../api/cloudformation-deployments.test.ts | 16 ++- packages/aws-cdk/test/diff.test.ts | 103 +++++++++++++----- 5 files changed, 135 insertions(+), 38 deletions(-) diff --git a/packages/aws-cdk/lib/api/deployments.ts b/packages/aws-cdk/lib/api/deployments.ts index a375bf25c4f65..cab9eb922a66d 100644 --- a/packages/aws-cdk/lib/api/deployments.ts +++ b/packages/aws-cdk/lib/api/deployments.ts @@ -6,7 +6,7 @@ import { ISDK } from './aws-auth/sdk'; import { CredentialsOptions, SdkForEnvironment, SdkProvider } from './aws-auth/sdk-provider'; import { deployStack, DeployStackResult, destroyStack, makeBodyParameterAndUpload, DeploymentMethod } from './deploy-stack'; import { HotswapMode } from './hotswap/common'; -import { loadCurrentTemplateWithNestedStacks, loadCurrentTemplate } from './nested-stack-helpers'; +import { loadCurrentTemplateWithNestedStacks, loadCurrentTemplate, flattenNestedStackNames, TemplateWithNestedStackCount } from './nested-stack-helpers'; import { ToolkitInfo } from './toolkit-info'; import { CloudFormationStack, Template, ResourcesToImport, ResourceIdentifierSummaries } from './util/cloudformation'; import { StackActivityProgress } from './util/cloudformation/stack-activity-monitor'; @@ -300,9 +300,13 @@ export class Deployments { public async readCurrentTemplateWithNestedStacks( rootStackArtifact: cxapi.CloudFormationStackArtifact, retrieveProcessedTemplate: boolean = false, - ): Promise

cfFK4&K{zIna0q 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