p6-cdk-s3-protector 0.0.48 → 0.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +7 -7
- package/lib/p6cdks3protector.js +1 -1
- package/node_modules/@aws/lambda-invoke-store/README.md +35 -27
- package/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js +104 -46
- package/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js +104 -46
- package/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.benchmark.d.ts +1 -0
- package/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.d.ts +40 -47
- package/node_modules/@aws/lambda-invoke-store/package.json +2 -2
- package/node_modules/@aws-sdk/client-s3/dist-cjs/index.js +525 -491
- package/node_modules/@aws-sdk/client-s3/dist-es/index.js +2 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/models/enums.js +392 -0
- package/node_modules/@aws-sdk/client-s3/dist-es/models/errors.js +173 -0
- package/node_modules/@aws-sdk/client-s3/dist-es/models/models_0.js +1 -436
- package/node_modules/@aws-sdk/client-s3/dist-es/models/models_1.js +1 -126
- package/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js +62 -33
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectCommand.d.ts +8 -3
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectsCommand.d.ts +5 -0
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketEncryptionCommand.d.ts +7 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectVersionsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsV2Command.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListPartsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAccelerateConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAclCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAnalyticsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketCorsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketEncryptionCommand.d.ts +7 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketInventoryConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLifecycleConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLoggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketMetricsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketNotificationConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketOwnershipControlsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketPolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketReplicationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketRequestPaymentCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketTaggingCommand.d.ts +2 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketVersioningCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketWebsiteCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectAclCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLegalHoldCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLockConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectRetentionCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutPublicAccessBlockCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/RenameObjectCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/RestoreObjectCommand.d.ts +2 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/index.d.ts +4 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/models/enums.d.ts +960 -0
- package/node_modules/@aws-sdk/client-s3/dist-types/models/errors.d.ts +207 -0
- package/node_modules/@aws-sdk/client-s3/dist-types/models/models_0.d.ts +3701 -929
- package/node_modules/@aws-sdk/client-s3/dist-types/models/models_1.d.ts +3 -3889
- package/node_modules/@aws-sdk/client-s3/dist-types/schemas/schemas_0.d.ts +2 -0
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectVersionsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectsV2Command.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListPartsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAccelerateConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAclCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAnalyticsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketCorsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketEncryptionCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketInventoryConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLifecycleConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLoggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketMetricsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketNotificationConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketOwnershipControlsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketPolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketReplicationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketRequestPaymentCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketVersioningCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketWebsiteCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectAclCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectLegalHoldCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectLockConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectRetentionCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutPublicAccessBlockCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RenameObjectCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RestoreObjectCommand.d.ts +2 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/index.d.ts +4 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/enums.d.ts +514 -0
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/errors.d.ts +87 -0
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_0.d.ts +607 -487
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_1.d.ts +11 -677
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/schemas/schemas_0.d.ts +2 -0
- package/node_modules/@aws-sdk/client-s3/package.json +27 -27
- package/node_modules/@aws-sdk/client-s3-control/dist-cjs/index.js +282 -282
- package/node_modules/@aws-sdk/client-s3-control/dist-es/index.js +2 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-es/models/enums.js +281 -0
- package/node_modules/@aws-sdk/client-s3-control/dist-es/models/errors.js +165 -0
- package/node_modules/@aws-sdk/client-s3-control/dist-es/models/models_0.js +1 -370
- package/node_modules/@aws-sdk/client-s3-control/dist-es/schemas/schemas_0.js +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/ListAccessPointsForObjectLambdaCommand.d.ts +1 -2
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/ListCallerAccessGrantsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/ListJobsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/ListMultiRegionAccessPointsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/ListRegionalBucketsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/ListStorageLensConfigurationsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/ListStorageLensGroupsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/ListTagsForResourceCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutAccessGrantsInstanceResourcePolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutAccessPointConfigurationForObjectLambdaCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutAccessPointPolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutAccessPointPolicyForObjectLambdaCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutAccessPointScopeCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutBucketLifecycleConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutBucketPolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutBucketReplicationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutBucketTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutBucketVersioningCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutJobTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutMultiRegionAccessPointPolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutPublicAccessBlockCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutStorageLensConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/PutStorageLensConfigurationTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/SubmitMultiRegionAccessPointRoutesCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/TagResourceCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/UntagResourceCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/UpdateAccessGrantsLocationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/UpdateJobPriorityCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/UpdateJobStatusCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/commands/UpdateStorageLensGroupCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/index.d.ts +3 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/models/enums.d.ts +689 -0
- package/node_modules/@aws-sdk/client-s3-control/dist-types/models/errors.d.ts +160 -0
- package/node_modules/@aws-sdk/client-s3-control/dist-types/models/models_0.d.ts +1165 -753
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/ListAccessPointsForObjectLambdaCommand.d.ts +4 -2
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/ListCallerAccessGrantsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/ListJobsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/ListMultiRegionAccessPointsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/ListRegionalBucketsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/ListStorageLensConfigurationsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/ListStorageLensGroupsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/ListTagsForResourceCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutAccessGrantsInstanceResourcePolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutAccessPointConfigurationForObjectLambdaCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutAccessPointPolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutAccessPointPolicyForObjectLambdaCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutAccessPointScopeCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutBucketLifecycleConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutBucketPolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutBucketReplicationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutBucketTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutBucketVersioningCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutJobTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutMultiRegionAccessPointPolicyCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutPublicAccessBlockCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutStorageLensConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/PutStorageLensConfigurationTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/SubmitMultiRegionAccessPointRoutesCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/TagResourceCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/UntagResourceCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/UpdateAccessGrantsLocationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/UpdateJobPriorityCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/UpdateJobStatusCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/commands/UpdateStorageLensGroupCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/index.d.ts +3 -1
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/models/enums.d.ts +371 -0
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/models/errors.d.ts +95 -0
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/models/models_0.d.ts +307 -412
- package/node_modules/@aws-sdk/client-s3-control/package.json +21 -21
- package/node_modules/@aws-sdk/client-sso/dist-es/index.js +1 -1
- package/node_modules/@aws-sdk/client-sso/dist-es/models/errors.js +49 -0
- package/node_modules/@aws-sdk/client-sso/dist-es/models/models_0.js +1 -49
- package/node_modules/@aws-sdk/client-sso/dist-es/schemas/schemas_0.js +1 -1
- package/node_modules/@aws-sdk/client-sso/dist-types/index.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sso/dist-types/models/errors.d.ts +53 -0
- package/node_modules/@aws-sdk/client-sso/dist-types/models/models_0.d.ts +0 -53
- package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/index.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/models/errors.d.ts +30 -0
- package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/models/models_0.d.ts +0 -30
- package/node_modules/@aws-sdk/client-sso/package.json +18 -18
- package/node_modules/@aws-sdk/client-sts/README.md +8 -0
- package/node_modules/@aws-sdk/client-sts/dist-cjs/index.js +125 -0
- package/node_modules/@aws-sdk/client-sts/dist-es/STS.js +2 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js → client-sts/dist-es/commands/GetWebIdentityTokenCommand.js} +5 -5
- package/node_modules/@aws-sdk/client-sts/dist-es/commands/index.js +1 -0
- package/node_modules/@aws-sdk/client-sts/dist-es/index.js +1 -1
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js → client-sts/dist-es/models/errors.js} +60 -0
- package/node_modules/@aws-sdk/client-sts/dist-es/models/models_0.js +1 -109
- package/node_modules/@aws-sdk/client-sts/dist-es/schemas/schemas_0.js +74 -1
- package/node_modules/@aws-sdk/client-sts/dist-types/STS.d.ts +7 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/STSClient.d.ts +3 -2
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRoleCommand.d.ts +2 -3
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRoleWithSAMLCommand.d.ts +2 -3
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRoleWithWebIdentityCommand.d.ts +2 -3
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRootCommand.d.ts +2 -3
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/GetDelegatedAccessTokenCommand.d.ts +19 -5
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/GetFederationTokenCommand.d.ts +2 -3
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/GetSessionTokenCommand.d.ts +2 -3
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/GetWebIdentityTokenCommand.d.ts +98 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/index.d.ts +1 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/index.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sts/dist-types/models/errors.d.ts +172 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/models/models_0.d.ts +61 -137
- package/node_modules/@aws-sdk/client-sts/dist-types/schemas/schemas_0.d.ts +8 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/STS.d.ts +17 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/STSClient.d.ts +8 -2
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/commands/GetWebIdentityTokenCommand.d.ts +51 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/commands/index.d.ts +1 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/index.d.ts +2 -1
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts → client-sts/dist-types/ts3.4/models/errors.d.ts} +47 -59
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/models/models_0.d.ts +10 -71
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/schemas/schemas_0.d.ts +8 -0
- package/node_modules/@aws-sdk/client-sts/package.json +19 -19
- package/node_modules/@aws-sdk/core/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-login/README.md +7 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js +286 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-es/LoginCredentialsFetcher.js +262 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-es/fromLoginCredentials.js +21 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-es/index.js +2 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-types/LoginCredentialsFetcher.d.ts +42 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-types/fromLoginCredentials.d.ts +7 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-types/index.d.ts +8 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/LoginCredentialsFetcher.d.ts +24 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/fromLoginCredentials.d.ts +5 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/index.d.ts +2 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/types.d.ts +39 -0
- package/node_modules/@aws-sdk/credential-provider-login/dist-types/types.d.ts +59 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/LICENSE +201 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/README.md +10 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-cjs/index.js +117 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js +8 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-es/ProviderError.js +23 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js +8 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-es/chain.js +21 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-es/fromStatic.js +1 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-es/index.js +6 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-es/memoize.js +45 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts +31 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts +39 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts +31 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/chain.d.ts +13 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts +5 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/index.d.ts +24 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/memoize.d.ts +40 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts +31 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts +39 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts +31 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts +13 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts +5 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts +24 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts +40 -0
- package/node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider/package.json +61 -0
- package/node_modules/@aws-sdk/credential-provider-login/package.json +68 -0
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-http/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js +15 -0
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveLoginCredentials.js +12 -0
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js +4 -0
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini/dist-types/fromIni.d.ts +4 -3
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveLoginCredentials.d.ts +10 -0
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/fromIni.d.ts +3 -1
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveLoginCredentials.d.ts +7 -0
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini/package.json +10 -9
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/package.json +5 -5
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-node/package.json +8 -8
- package/node_modules/@aws-sdk/middleware-bucket-endpoint/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-expect-continue/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-flexible-checksums/package.json +3 -3
- package/node_modules/@aws-sdk/middleware-host-header/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-location-constraint/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-logger/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js +2 -1
- package/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.js +2 -1
- package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +3 -3
- package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +5 -5
- package/node_modules/@aws-sdk/middleware-sdk-s3-control/package.json +4 -4
- package/node_modules/@aws-sdk/middleware-ssec/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-user-agent/package.json +5 -5
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc → nested-clients/dist-cjs/submodules/signin}/auth/httpAuthSchemeProvider.js +7 -7
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/ruleset.js +7 -0
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +439 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc → nested-clients/dist-cjs/submodules/signin}/runtimeConfig.shared.js +4 -4
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sso-oidc/index.js +10 -9
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/Signin.js +9 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js → nested-clients/dist-es/submodules/signin/SigninClient.js} +3 -3
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/signin}/auth/httpAuthSchemeProvider.js +4 -4
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js → nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js} +5 -5
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/index.js +1 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/signin}/endpoint/EndpointParameters.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/ruleset.js +4 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js +6 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js → nested-clients/dist-es/submodules/signin/models/SigninServiceException.js} +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js +8 -0
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/errors.js +57 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/signin}/runtimeConfig.shared.js +5 -5
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/schemas/schemas_0.js +221 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/index.js +2 -1
- package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/enums.js +9 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js → nested-clients/dist-es/submodules/sso-oidc/models/errors.js} +0 -9
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/schemas/schemas_0.js +1 -1
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/index.js +1 -1
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/schemas/schemas_0.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/Signin.d.ts +18 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts → nested-clients/dist-types/submodules/signin/SigninClient.d.ts} +15 -18
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts → nested-clients/dist-types/submodules/signin}/auth/httpAuthExtensionConfiguration.d.ts +4 -4
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc → nested-clients/dist-types/submodules/signin}/auth/httpAuthSchemeProvider.d.ts +8 -8
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts +157 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/index.d.ts +1 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts → nested-clients/dist-types/submodules/signin}/extensionConfiguration.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/index.d.ts +16 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/STSServiceException.d.ts → nested-clients/dist-types/submodules/signin/models/SigninServiceException.d.ts} +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/enums.d.ts +34 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/errors.d.ts +102 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/models_0.d.ts +142 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc → nested-clients/dist-types/submodules/signin}/runtimeConfig.browser.d.ts +4 -3
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc → nested-clients/dist-types/submodules/signin}/runtimeConfig.d.ts +4 -3
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc → nested-clients/dist-types/submodules/signin}/runtimeConfig.native.d.ts +4 -3
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc → nested-clients/dist-types/submodules/signin}/runtimeConfig.shared.d.ts +3 -3
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts → nested-clients/dist-types/submodules/signin}/runtimeExtensions.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/schemas/schemas_0.d.ts +14 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/index.d.ts +3 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/enums.d.ts +25 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts → nested-clients/dist-types/submodules/sso-oidc/models/errors.d.ts} +1 -134
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts +109 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/index.d.ts +2 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/errors.d.ts +108 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/models/models_0.d.ts +0 -108
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts +1 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/Signin.d.ts +22 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts → nested-clients/dist-types/ts3.4/submodules/signin/SigninClient.d.ts} +16 -14
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts → nested-clients/dist-types/ts3.4/submodules/signin}/auth/httpAuthExtensionConfiguration.d.ts +4 -4
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc → nested-clients/dist-types/ts3.4/submodules/signin}/auth/httpAuthSchemeProvider.d.ts +13 -13
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts +47 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/index.d.ts +1 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts → nested-clients/dist-types/ts3.4/submodules/signin}/extensionConfiguration.d.ts +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/index.d.ts +10 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts → nested-clients/dist-types/ts3.4/submodules/signin/models/SigninServiceException.d.ts} +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/enums.d.ts +10 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/errors.d.ts +35 -0
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/models_0.d.ts +26 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts → nested-clients/dist-types/ts3.4/submodules/signin}/runtimeConfig.browser.d.ts +4 -8
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc → nested-clients/dist-types/ts3.4/submodules/signin}/runtimeConfig.d.ts +6 -3
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts → nested-clients/dist-types/ts3.4/submodules/signin}/runtimeConfig.native.d.ts +4 -8
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc → nested-clients/dist-types/ts3.4/submodules/signin}/runtimeConfig.shared.d.ts +3 -3
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts → nested-clients/dist-types/ts3.4/submodules/signin}/runtimeExtensions.d.ts +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/schemas/schemas_0.d.ts +19 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/index.d.ts +3 -1
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/enums.d.ts +13 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts → nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/errors.d.ts} +4 -31
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts +18 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/index.d.ts +2 -1
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts → nested-clients/dist-types/ts3.4/submodules/sts/models/errors.d.ts} +0 -59
- package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts +59 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/package.json +29 -18
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/sts.d.ts → nested-clients/signin.d.ts} +2 -2
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/sts.js → nested-clients/signin.js} +1 -1
- package/node_modules/@aws-sdk/region-config-resolver/package.json +2 -2
- package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +3 -3
- package/node_modules/@aws-sdk/token-providers/package.json +4 -4
- package/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts +2 -0
- package/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts +2 -0
- package/node_modules/@aws-sdk/types/package.json +1 -1
- package/node_modules/@aws-sdk/util-endpoints/package.json +2 -2
- package/node_modules/@aws-sdk/util-user-agent-browser/package.json +2 -2
- package/node_modules/@aws-sdk/util-user-agent-node/package.json +3 -3
- package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +0 -1
- package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +6 -0
- package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +3 -0
- package/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js +0 -1
- package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +6 -0
- package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js +3 -0
- package/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts +6 -2
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts +6 -2
- package/node_modules/@smithy/core/package.json +2 -2
- package/node_modules/@smithy/middleware-endpoint/package.json +3 -3
- package/node_modules/@smithy/middleware-retry/package.json +2 -2
- package/node_modules/@smithy/middleware-serde/dist-cjs/index.js +3 -0
- package/node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js +3 -0
- package/node_modules/@smithy/middleware-serde/package.json +1 -1
- package/node_modules/@smithy/smithy-client/package.json +3 -3
- package/node_modules/@smithy/util-defaults-mode-browser/package.json +2 -2
- package/node_modules/@smithy/util-defaults-mode-node/package.json +2 -2
- package/node_modules/cdk-iam-floyd/README.md +4 -4
- package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/cdk-iam-floyd.d.ts +8 -0
- package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/cdk-iam-floyd.js +17 -1
- package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/iam-floyd.d.ts +8 -0
- package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/iam-floyd.js +9 -1
- package/node_modules/cdk-iam-floyd/lib/generated/index.d.ts +3 -1
- package/node_modules/cdk-iam-floyd/lib/generated/index.js +15 -11
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/appstream2-0.d.ts +94 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/appstream2-0.js +123 -2
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/athena.d.ts +38 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/athena.js +47 -1
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/billing.d.ts +8 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/billing.js +9 -1
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudformation.d.ts +26 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudformation.js +32 -1
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/eksmcpserver.d.ts +41 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/eksmcpserver.js +60 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/glue.d.ts +55 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/glue.js +61 -1
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/healthlake.d.ts +56 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/healthlake.js +78 -1
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/lambda.d.ts +2 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/lambda.js +3 -1
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/mwaaserverless.d.ts +213 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/mwaaserverless.js +280 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/opensearchservice.d.ts +32 -0
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/opensearchservice.js +45 -1
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/route53.d.ts +0 -8
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/route53.js +1 -12
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/{sagemakerunifiedstudiomcpisamanagedmcpsolutionforawsdataprocessingserviceslikeemr-glue-athena.d.ts → sagemakerunifiedstudiomcpisamanagedmcpsolutionforawsdataprocessingserviceslikeemr-glue_athena.d.ts} +2 -2
- package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/{sagemakerunifiedstudiomcpisamanagedmcpsolutionforawsdataprocessingserviceslikeemr-glue-athena.js → sagemakerunifiedstudiomcpisamanagedmcpsolutionforawsdataprocessingserviceslikeemr-glue_athena.js} +3 -3
- package/node_modules/cdk-iam-floyd/package.json +1 -1
- package/package.json +12 -12
- package/node_modules/@aws-sdk/client-s3/dist-es/models/index.js +0 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/models/index.d.ts +0 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/index.d.ts +0 -2
- package/node_modules/@aws-sdk/client-s3-control/dist-es/models/index.js +0 -2
- package/node_modules/@aws-sdk/client-s3-control/dist-es/models/models_1.js +0 -77
- package/node_modules/@aws-sdk/client-s3-control/dist-types/models/index.d.ts +0 -2
- package/node_modules/@aws-sdk/client-s3-control/dist-types/models/models_1.d.ts +0 -1263
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/models/index.d.ts +0 -2
- package/node_modules/@aws-sdk/client-s3-control/dist-types/ts3.4/models/models_1.d.ts +0 -330
- package/node_modules/@aws-sdk/client-sso/dist-es/models/index.js +0 -1
- package/node_modules/@aws-sdk/client-sso/dist-types/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/client-sts/dist-es/models/index.js +0 -1
- package/node_modules/@aws-sdk/client-sts/dist-types/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/index.js +0 -1
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/schemas/schemas_0.js +0 -211
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js +0 -6
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/index.js +0 -1
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts +0 -412
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/models_0.d.ts +0 -696
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts +0 -8
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/nested-clients/package.json +0 -116
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/README.md +0 -13
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js +0 -2
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js +0 -7
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +0 -560
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js +0 -38
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js +0 -54
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js +0 -43
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js +0 -62
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/EndpointParameters.js +0 -19
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/endpointResolver.js +0 -18
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/ruleset.js +0 -7
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +0 -488
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.js +0 -68
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.native.js +0 -15
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.shared.js +0 -47
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeExtensions.js +0 -13
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js +0 -9
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js +0 -50
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js +0 -1
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/ruleset.js +0 -4
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js +0 -5
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js +0 -8
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/index.js +0 -1
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js +0 -190
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js +0 -33
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js +0 -11
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js +0 -38
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js +0 -55
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js +0 -16
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js +0 -2
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js +0 -22
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js +0 -106
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js +0 -15
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js +0 -14
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/ruleset.js +0 -4
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/index.js +0 -1
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js +0 -63
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js +0 -11
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js +0 -43
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js +0 -9
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/schemas/schemas_0.js +0 -214
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/index.d.ts +0 -7
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDC.d.ts +0 -55
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts +0 -229
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts +0 -29
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +0 -176
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/index.d.ts +0 -1
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts +0 -9
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts +0 -51
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts +0 -14
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts +0 -17
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/schemas/schemas_0.d.ts +0 -23
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STS.d.ts +0 -27
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts +0 -85
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts +0 -271
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +0 -291
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/index.d.ts +0 -2
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultRoleAssumers.d.ts +0 -23
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts +0 -43
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts +0 -44
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/endpointResolver.d.ts +0 -5
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts +0 -17
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts +0 -60
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts +0 -58
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts +0 -59
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts +0 -33
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/schemas/schemas_0.d.ts +0 -26
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts +0 -22
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts +0 -32
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +0 -43
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts +0 -1
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts +0 -2
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts +0 -9
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts +0 -9
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts +0 -132
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts +0 -116
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts +0 -120
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts +0 -11
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/schemas/schemas_0.d.ts +0 -28
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STS.d.ts +0 -39
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts +0 -132
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts +0 -57
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts +0 -47
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +0 -51
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/index.d.ts +0 -2
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts +0 -19
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts +0 -33
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts +0 -57
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/endpointResolver.d.ts +0 -8
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts +0 -2
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts +0 -9
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/index.d.ts +0 -1
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +0 -107
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts +0 -53
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/schemas/schemas_0.d.ts +0 -32
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts +0 -7
- package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/sso-oidc.js +0 -5
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/index.js → credential-provider-login/dist-es/types.js} +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/README.md +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/index.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc → nested-clients/dist-cjs/submodules/signin}/endpoint/endpointResolver.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts → nested-clients/dist-cjs/submodules/signin}/runtimeConfig.browser.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc → nested-clients/dist-cjs/submodules/signin}/runtimeConfig.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc → nested-clients/dist-cjs/submodules/signin}/runtimeConfig.native.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sso-oidc/runtimeConfig.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts → nested-clients/dist-cjs/submodules/sso-oidc}/runtimeConfig.native.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sso-oidc/runtimeConfig.shared.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/STSClient.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/endpoint/EndpointParameters.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/endpoint/endpointResolver.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/endpoint/ruleset.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/index.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/runtimeConfig.browser.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/runtimeConfig.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc → nested-clients/dist-cjs/submodules/sts}/runtimeConfig.native.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/runtimeConfig.shared.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-cjs/submodules/sts/runtimeExtensions.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/index.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/signin}/auth/httpAuthExtensionConfiguration.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/signin}/endpoint/endpointResolver.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/signin}/extensionConfiguration.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/extensionConfiguration.js → nested-clients/dist-es/submodules/signin/models/models_0.js} +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts → nested-clients/dist-es/submodules/signin}/runtimeConfig.browser.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/signin}/runtimeConfig.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/signin}/runtimeConfig.native.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/signin}/runtimeExtensions.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/SSOOIDC.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/SSOOIDCClient.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts → nested-clients/dist-es/submodules/sso-oidc}/auth/httpAuthExtensionConfiguration.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/commands/index.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/endpoint/ruleset.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/extensionConfiguration.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts → nested-clients/dist-es/submodules/sso-oidc/models/models_0.js} +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/runtimeConfig.browser.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/runtimeConfig.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts → nested-clients/dist-es/submodules/sso-oidc}/runtimeConfig.native.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sso-oidc/runtimeConfig.shared.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts → nested-clients/dist-es/submodules/sso-oidc}/runtimeExtensions.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/STS.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/STSClient.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/sts}/auth/httpAuthExtensionConfiguration.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/commands/AssumeRoleCommand.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/commands/index.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/defaultRoleAssumers.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/defaultStsRoleAssumers.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/endpoint/EndpointParameters.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/endpoint/endpointResolver.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/endpoint/ruleset.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/extensionConfiguration.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/models/STSServiceException.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js → nested-clients/dist-es/submodules/sts/models/errors.js} +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts → nested-clients/dist-es/submodules/sts/models/models_0.js} +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/runtimeConfig.browser.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/runtimeConfig.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/sts}/runtimeConfig.native.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-es/submodules/sts/runtimeConfig.shared.js +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc → nested-clients/dist-es/submodules/sts}/runtimeExtensions.js +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/index.d.ts +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc → nested-clients/dist-types/submodules/signin}/endpoint/EndpointParameters.d.ts +2 -2
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc → nested-clients/dist-types/submodules/signin}/endpoint/endpointResolver.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc → nested-clients/dist-types/submodules/signin}/endpoint/ruleset.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/SSOOIDC.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/commands/index.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/endpoint/EndpointParameters.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts → nested-clients/dist-types/submodules/sso-oidc}/endpoint/endpointResolver.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts → nested-clients/dist-types/submodules/sso-oidc}/endpoint/ruleset.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/runtimeConfig.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sso-oidc/schemas/schemas_0.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/STS.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/STSClient.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/commands/index.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/defaultRoleAssumers.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc → nested-clients/dist-types/submodules/sts}/endpoint/endpointResolver.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc → nested-clients/dist-types/submodules/sts}/endpoint/ruleset.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/extensionConfiguration.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/models/STSServiceException.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/runtimeConfig.browser.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/runtimeConfig.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/runtimeConfig.native.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/runtimeConfig.shared.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/runtimeExtensions.d.ts +0 -0
- package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/submodules/sts/schemas/schemas_0.d.ts +0 -0
- package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc → nested-clients/dist-types/ts3.4/submodules/signin}/endpoint/EndpointParameters.d.ts +2 -2
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc → nested-clients/dist-types/ts3.4/submodules/signin}/endpoint/endpointResolver.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts → nested-clients/dist-types/ts3.4/submodules/signin}/endpoint/ruleset.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/endpoint/EndpointParameters.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts → nested-clients/dist-types/ts3.4/submodules/sso-oidc}/endpoint/endpointResolver.d.ts +0 -0
- /package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types → nested-clients/dist-types/ts3.4}/submodules/sso-oidc/endpoint/ruleset.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sso-oidc/schemas/schemas_0.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/STS.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/STSClient.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/commands/index.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts +0 -0
- /package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc → nested-clients/dist-types/ts3.4/submodules/sts}/endpoint/endpointResolver.d.ts +0 -0
- /package/node_modules/@aws-sdk/{token-providers/node_modules/@aws-sdk/nested-clients/dist-types → nested-clients/dist-types/ts3.4}/submodules/sts/endpoint/ruleset.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/extensionConfiguration.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/runtimeExtensions.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/dist-types/ts3.4/submodules/sts/schemas/schemas_0.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/sso-oidc.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/sso-oidc.js +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/sts.d.ts +0 -0
- /package/node_modules/@aws-sdk/{credential-provider-node/node_modules/@aws-sdk/nested-clients → nested-clients}/sts.js +0 -0
|
@@ -57,6 +57,19 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
57
57
|
toAssociateFleet() {
|
|
58
58
|
return this.to('AssociateFleet');
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Grants permission to associate license included application(s) with an existing image builder instance
|
|
62
|
+
*
|
|
63
|
+
* Access Level: Write
|
|
64
|
+
*
|
|
65
|
+
* Possible conditions:
|
|
66
|
+
* - .ifAwsResourceTag()
|
|
67
|
+
*
|
|
68
|
+
* https://docs.aws.amazon.com/appstream2/latest/APIReference/API_AssociateSoftwareToImageBuilder.html
|
|
69
|
+
*/
|
|
70
|
+
toAssociateSoftwareToImageBuilder() {
|
|
71
|
+
return this.to('AssociateSoftwareToImageBuilder');
|
|
72
|
+
}
|
|
60
73
|
/**
|
|
61
74
|
* Grants permission to associate the specified users with the specified stacks. Users in a user pool cannot be assigned to stacks with fleets that are joined to an Active Directory domain
|
|
62
75
|
*
|
|
@@ -173,6 +186,19 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
173
186
|
toCreateEntitlement() {
|
|
174
187
|
return this.to('CreateEntitlement');
|
|
175
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Grants permission to create an export task for an AppStream 2.0 image
|
|
191
|
+
*
|
|
192
|
+
* Access Level: Write
|
|
193
|
+
*
|
|
194
|
+
* Possible conditions:
|
|
195
|
+
* - .ifAwsResourceTag()
|
|
196
|
+
*
|
|
197
|
+
* https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateExportImageTask.html
|
|
198
|
+
*/
|
|
199
|
+
toCreateExportImageTask() {
|
|
200
|
+
return this.to('CreateExportImageTask');
|
|
201
|
+
}
|
|
176
202
|
/**
|
|
177
203
|
* Grants permission to create a fleet. A fleet is a group of streaming instances from which applications are launched and streamed to users
|
|
178
204
|
*
|
|
@@ -214,6 +240,20 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
214
240
|
toCreateImageBuilderStreamingURL() {
|
|
215
241
|
return this.to('CreateImageBuilderStreamingURL');
|
|
216
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Grants permission to create an AppStream 2.0 image from an imported AMI
|
|
245
|
+
*
|
|
246
|
+
* Access Level: Write
|
|
247
|
+
*
|
|
248
|
+
* Possible conditions:
|
|
249
|
+
* - .ifAwsRequestTag()
|
|
250
|
+
* - .ifAwsTagKeys()
|
|
251
|
+
*
|
|
252
|
+
* https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateImportedImage.html
|
|
253
|
+
*/
|
|
254
|
+
toCreateImportedImage() {
|
|
255
|
+
return this.to('CreateImportedImage');
|
|
256
|
+
}
|
|
217
257
|
/**
|
|
218
258
|
* Grants permission to create a stack to start streaming applications to users. A stack consists of an associated fleet, user access policies, and storage configurations
|
|
219
259
|
*
|
|
@@ -470,6 +510,16 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
470
510
|
toDescribeAppBlocks() {
|
|
471
511
|
return this.to('DescribeAppBlocks');
|
|
472
512
|
}
|
|
513
|
+
/**
|
|
514
|
+
* Grants permission to retrieve license included application usage information
|
|
515
|
+
*
|
|
516
|
+
* Access Level: List
|
|
517
|
+
*
|
|
518
|
+
* https://docs.aws.amazon.com/appstream2/latest/APIReference/API_DescribeAppLicenseUsage.html
|
|
519
|
+
*/
|
|
520
|
+
toDescribeAppLicenseUsage() {
|
|
521
|
+
return this.to('DescribeAppLicenseUsage');
|
|
522
|
+
}
|
|
473
523
|
/**
|
|
474
524
|
* Grants permission to retrieve the associations that are associated with the specified application or fleet
|
|
475
525
|
*
|
|
@@ -560,6 +610,16 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
560
610
|
toDescribeSessions() {
|
|
561
611
|
return this.to('DescribeSessions');
|
|
562
612
|
}
|
|
613
|
+
/**
|
|
614
|
+
* Grants permission to retrieve license included application associations for a specified resource
|
|
615
|
+
*
|
|
616
|
+
* Access Level: List
|
|
617
|
+
*
|
|
618
|
+
* https://docs.aws.amazon.com/appstream2/latest/APIReference/API_DescribeSoftwareAssociations.html
|
|
619
|
+
*/
|
|
620
|
+
toDescribeSoftwareAssociations() {
|
|
621
|
+
return this.to('DescribeSoftwareAssociations');
|
|
622
|
+
}
|
|
563
623
|
/**
|
|
564
624
|
* Grants permission to retrieve a list that describes one or more specified stacks, if the stack names are provided. Otherwise, all stacks in the account are described
|
|
565
625
|
*
|
|
@@ -669,6 +729,19 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
669
729
|
toDisassociateFleet() {
|
|
670
730
|
return this.to('DisassociateFleet');
|
|
671
731
|
}
|
|
732
|
+
/**
|
|
733
|
+
* Grants permission to remove license included application(s) association(s) from an image builder instance
|
|
734
|
+
*
|
|
735
|
+
* Access Level: Write
|
|
736
|
+
*
|
|
737
|
+
* Possible conditions:
|
|
738
|
+
* - .ifAwsResourceTag()
|
|
739
|
+
*
|
|
740
|
+
* https://docs.aws.amazon.com/appstream2/latest/APIReference/API_DisassociateSoftwareFromImageBuilder.html
|
|
741
|
+
*/
|
|
742
|
+
toDisassociateSoftwareFromImageBuilder() {
|
|
743
|
+
return this.to('DisassociateSoftwareFromImageBuilder');
|
|
744
|
+
}
|
|
672
745
|
/**
|
|
673
746
|
* Grants permission to enable a user in the user pool
|
|
674
747
|
*
|
|
@@ -689,6 +762,16 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
689
762
|
toExpireSession() {
|
|
690
763
|
return this.to('ExpireSession');
|
|
691
764
|
}
|
|
765
|
+
/**
|
|
766
|
+
* Grants permission to retrieve details of a specific export image task
|
|
767
|
+
*
|
|
768
|
+
* Access Level: Read
|
|
769
|
+
*
|
|
770
|
+
* https://docs.aws.amazon.com/appstream2/latest/APIReference/API_GetExportImageTask.html
|
|
771
|
+
*/
|
|
772
|
+
toGetExportImageTask() {
|
|
773
|
+
return this.to('GetExportImageTask');
|
|
774
|
+
}
|
|
692
775
|
/**
|
|
693
776
|
* Grants permission to retrieve the name of the fleet that is associated with the specified stack
|
|
694
777
|
*
|
|
@@ -719,6 +802,16 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
719
802
|
toListEntitledApplications() {
|
|
720
803
|
return this.to('ListEntitledApplications');
|
|
721
804
|
}
|
|
805
|
+
/**
|
|
806
|
+
* Grants permission to list export image tasks
|
|
807
|
+
*
|
|
808
|
+
* Access Level: List
|
|
809
|
+
*
|
|
810
|
+
* https://docs.aws.amazon.com/appstream2/latest/APIReference/API_ListExportImageTasks.html
|
|
811
|
+
*/
|
|
812
|
+
toListExportImageTasks() {
|
|
813
|
+
return this.to('ListExportImageTasks');
|
|
814
|
+
}
|
|
722
815
|
/**
|
|
723
816
|
* Grants permission to retrieve a list of all tags for the specified AppStream 2.0 resource. The following resources can be tagged: Image builders, images, fleets, and stacks
|
|
724
817
|
*
|
|
@@ -768,6 +861,19 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
768
861
|
toStartImageBuilder() {
|
|
769
862
|
return this.to('StartImageBuilder');
|
|
770
863
|
}
|
|
864
|
+
/**
|
|
865
|
+
* Grants permission to initiate license included applications deployment to an image builder instance
|
|
866
|
+
*
|
|
867
|
+
* Access Level: Write
|
|
868
|
+
*
|
|
869
|
+
* Possible conditions:
|
|
870
|
+
* - .ifAwsResourceTag()
|
|
871
|
+
*
|
|
872
|
+
* https://docs.aws.amazon.com/appstream2/latest/APIReference/API_StartSoftwareDeploymentToImageBuilder.html
|
|
873
|
+
*/
|
|
874
|
+
toStartSoftwareDeploymentToImageBuilder() {
|
|
875
|
+
return this.to('StartSoftwareDeploymentToImageBuilder');
|
|
876
|
+
}
|
|
771
877
|
/**
|
|
772
878
|
* Grants permission to stop the specified app block builder
|
|
773
879
|
*
|
|
@@ -1080,6 +1186,7 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1080
1186
|
* - .toCreateApplication()
|
|
1081
1187
|
* - .toCreateFleet()
|
|
1082
1188
|
* - .toCreateImageBuilder()
|
|
1189
|
+
* - .toCreateImportedImage()
|
|
1083
1190
|
* - .toCreateStack()
|
|
1084
1191
|
* - .toCreateUpdatedImage()
|
|
1085
1192
|
* - .toTagResource()
|
|
@@ -1100,12 +1207,14 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1100
1207
|
* - .toAssociateAppBlockBuilderAppBlock()
|
|
1101
1208
|
* - .toAssociateApplicationFleet()
|
|
1102
1209
|
* - .toAssociateFleet()
|
|
1210
|
+
* - .toAssociateSoftwareToImageBuilder()
|
|
1103
1211
|
* - .toBatchAssociateUserStack()
|
|
1104
1212
|
* - .toBatchDisassociateUserStack()
|
|
1105
1213
|
* - .toCopyImage()
|
|
1106
1214
|
* - .toCreateAppBlock()
|
|
1107
1215
|
* - .toCreateAppBlockBuilderStreamingURL()
|
|
1108
1216
|
* - .toCreateApplication()
|
|
1217
|
+
* - .toCreateExportImageTask()
|
|
1109
1218
|
* - .toCreateImageBuilderStreamingURL()
|
|
1110
1219
|
* - .toCreateStreamingURL()
|
|
1111
1220
|
* - .toCreateUpdatedImage()
|
|
@@ -1120,9 +1229,11 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1120
1229
|
* - .toDisassociateAppBlockBuilderAppBlock()
|
|
1121
1230
|
* - .toDisassociateApplicationFleet()
|
|
1122
1231
|
* - .toDisassociateFleet()
|
|
1232
|
+
* - .toDisassociateSoftwareFromImageBuilder()
|
|
1123
1233
|
* - .toStartAppBlockBuilder()
|
|
1124
1234
|
* - .toStartFleet()
|
|
1125
1235
|
* - .toStartImageBuilder()
|
|
1236
|
+
* - .toStartSoftwareDeploymentToImageBuilder()
|
|
1126
1237
|
* - .toStopAppBlockBuilder()
|
|
1127
1238
|
* - .toStopFleet()
|
|
1128
1239
|
* - .toStopImageBuilder()
|
|
@@ -1160,6 +1271,7 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1160
1271
|
* - .toCreateApplication()
|
|
1161
1272
|
* - .toCreateFleet()
|
|
1162
1273
|
* - .toCreateImageBuilder()
|
|
1274
|
+
* - .toCreateImportedImage()
|
|
1163
1275
|
* - .toCreateStack()
|
|
1164
1276
|
* - .toCreateUpdatedImage()
|
|
1165
1277
|
* - .toTagResource()
|
|
@@ -1184,6 +1296,7 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1184
1296
|
'AssociateApplicationFleet',
|
|
1185
1297
|
'AssociateApplicationToEntitlement',
|
|
1186
1298
|
'AssociateFleet',
|
|
1299
|
+
'AssociateSoftwareToImageBuilder',
|
|
1187
1300
|
'BatchAssociateUserStack',
|
|
1188
1301
|
'BatchDisassociateUserStack',
|
|
1189
1302
|
'CopyImage',
|
|
@@ -1193,9 +1306,11 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1193
1306
|
'CreateApplication',
|
|
1194
1307
|
'CreateDirectoryConfig',
|
|
1195
1308
|
'CreateEntitlement',
|
|
1309
|
+
'CreateExportImageTask',
|
|
1196
1310
|
'CreateFleet',
|
|
1197
1311
|
'CreateImageBuilder',
|
|
1198
1312
|
'CreateImageBuilderStreamingURL',
|
|
1313
|
+
'CreateImportedImage',
|
|
1199
1314
|
'CreateStack',
|
|
1200
1315
|
'CreateStreamingURL',
|
|
1201
1316
|
'CreateThemeForStack',
|
|
@@ -1220,11 +1335,13 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1220
1335
|
'DisassociateApplicationFleet',
|
|
1221
1336
|
'DisassociateApplicationFromEntitlement',
|
|
1222
1337
|
'DisassociateFleet',
|
|
1338
|
+
'DisassociateSoftwareFromImageBuilder',
|
|
1223
1339
|
'EnableUser',
|
|
1224
1340
|
'ExpireSession',
|
|
1225
1341
|
'StartAppBlockBuilder',
|
|
1226
1342
|
'StartFleet',
|
|
1227
1343
|
'StartImageBuilder',
|
|
1344
|
+
'StartSoftwareDeploymentToImageBuilder',
|
|
1228
1345
|
'StopAppBlockBuilder',
|
|
1229
1346
|
'StopFleet',
|
|
1230
1347
|
'StopImageBuilder',
|
|
@@ -1242,6 +1359,7 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1242
1359
|
'DescribeAppBlockBuilderAppBlockAssociations',
|
|
1243
1360
|
'DescribeAppBlockBuilders',
|
|
1244
1361
|
'DescribeAppBlocks',
|
|
1362
|
+
'DescribeAppLicenseUsage',
|
|
1245
1363
|
'DescribeApplicationFleetAssociations',
|
|
1246
1364
|
'DescribeApplications',
|
|
1247
1365
|
'DescribeDirectoryConfigs',
|
|
@@ -1250,15 +1368,18 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1250
1368
|
'DescribeImageBuilders',
|
|
1251
1369
|
'DescribeImages',
|
|
1252
1370
|
'DescribeSessions',
|
|
1371
|
+
'DescribeSoftwareAssociations',
|
|
1253
1372
|
'DescribeStacks',
|
|
1254
1373
|
'DescribeUsageReportSubscriptions',
|
|
1255
1374
|
'DescribeUserStackAssociations',
|
|
1256
1375
|
'DescribeUsers',
|
|
1257
|
-
'ListEntitledApplications'
|
|
1376
|
+
'ListEntitledApplications',
|
|
1377
|
+
'ListExportImageTasks'
|
|
1258
1378
|
],
|
|
1259
1379
|
Read: [
|
|
1260
1380
|
'DescribeImagePermissions',
|
|
1261
1381
|
'DescribeThemeForStack',
|
|
1382
|
+
'GetExportImageTask',
|
|
1262
1383
|
'ListAssociatedFleets',
|
|
1263
1384
|
'ListAssociatedStacks',
|
|
1264
1385
|
'ListTagsForResource'
|
|
@@ -1271,4 +1392,4 @@ class Appstream extends shared_1.PolicyStatement {
|
|
|
1271
1392
|
}
|
|
1272
1393
|
}
|
|
1273
1394
|
exports.Appstream = Appstream;
|
|
1274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwc3RyZWFtMi0wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwc3RyZWFtMi0wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUF5RDtBQUd6RDs7OztHQUlHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsd0JBQWU7SUFHNUM7Ozs7Ozs7OztPQVNHO0lBQ0ksa0NBQWtDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSwyQkFBMkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG1DQUFtQztRQUN4QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLDRCQUE0QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksdUJBQXVC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Q25CLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixvQkFBb0I7Z0JBQ3BCLHdCQUF3QjtnQkFDeEIsYUFBYTtnQkFDYixxQkFBcUI7Z0JBQ3JCLCtCQUErQjtnQkFDL0IsWUFBWTtnQkFDWixhQUFhO2dCQUNiLHFDQUFxQztnQkFDckMsOEJBQThCO2dCQUM5Qix3Q0FBd0M7Z0JBQ3hDLG1CQUFtQjtnQkFDbkIsWUFBWTtnQkFDWixlQUFlO2dCQUNmLHNCQUFzQjtnQkFDdEIsWUFBWTtnQkFDWixtQkFBbUI7Z0JBQ25CLHFCQUFxQjtnQkFDckIsV0FBVztnQkFDWCxrQkFBa0I7Z0JBQ2xCLFFBQVE7Z0JBQ1IsdUJBQXVCO2dCQUN2QixtQkFBbUI7Z0JBQ25CLHVCQUF1QjtnQkFDdkIsbUJBQW1CO2dCQUNuQixhQUFhO2dCQUNiLHdCQUF3QjtnQkFDeEIsYUFBYTtnQkFDYixxQkFBcUI7YUFDdEI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osNkNBQTZDO2dCQUM3QywwQkFBMEI7Z0JBQzFCLG1CQUFtQjtnQkFDbkIsc0NBQXNDO2dCQUN0QyxzQkFBc0I7Z0JBQ3RCLDBCQUEwQjtnQkFDMUIsc0JBQXNCO2dCQUN0QixnQkFBZ0I7Z0JBQ2hCLHVCQUF1QjtnQkFDdkIsZ0JBQWdCO2dCQUNoQixrQkFBa0I7Z0JBQ2xCLGdCQUFnQjtnQkFDaEIsa0NBQWtDO2dCQUNsQywrQkFBK0I7Z0JBQy9CLGVBQWU7Z0JBQ2YsMEJBQTBCO2FBQzNCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLDBCQUEwQjtnQkFDMUIsdUJBQXVCO2dCQUN2QixzQkFBc0I7Z0JBQ3RCLHNCQUFzQjtnQkFDdEIscUJBQXFCO2FBQ3RCO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLGFBQWE7Z0JBQ2IsZUFBZTthQUNoQjtTQUNGLENBQUM7SUF1UEYsQ0FBQztDQUNGO0FBMzBDRCw4QkEyMENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzTGV2ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IGF3c19pYW0gYXMgaWFtIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbi8qKlxuICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFthcHBzdHJlYW1dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2FtYXpvbmFwcHN0cmVhbTIuMC5odG1sKS5cbiAqXG4gKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEFwcHN0cmVhbSBleHRlbmRzIFBvbGljeVN0YXRlbWVudCB7XG4gIHB1YmxpYyBzZXJ2aWNlUHJlZml4ID0gJ2FwcHN0cmVhbSc7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGFzc29jaWF0ZSB0aGUgc3BlY2lmaWVkIGFwcCBibG9jayBidWlsZGVyIHdpdGggdGhlIGFwcCBibG9ja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9Bc3NvY2lhdGVBcHBCbG9ja0J1aWxkZXJBcHBCbG9jay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9Bc3NvY2lhdGVBcHBCbG9ja0J1aWxkZXJBcHBCbG9jaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQXNzb2NpYXRlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBhc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvbiB3aXRoIHRoZSBmbGVldFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9Bc3NvY2lhdGVBcHBsaWNhdGlvbkZsZWV0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Fzc29jaWF0ZUFwcGxpY2F0aW9uRmxlZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Fzc29jaWF0ZUFwcGxpY2F0aW9uRmxlZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBhc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvbiB0byB0aGUgc3BlY2lmaWVkIGVudGl0bGVtZW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQXNzb2NpYXRlQXBwbGljYXRpb25Ub0VudGl0bGVtZW50Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Fzc29jaWF0ZUFwcGxpY2F0aW9uVG9FbnRpdGxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQXNzb2NpYXRlQXBwbGljYXRpb25Ub0VudGl0bGVtZW50Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYXNzb2NpYXRlIHRoZSBzcGVjaWZpZWQgZmxlZXQgd2l0aCB0aGUgc3BlY2lmaWVkIHN0YWNrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Fzc29jaWF0ZUZsZWV0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Fzc29jaWF0ZUZsZWV0KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdBc3NvY2lhdGVGbGVldCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGFzc29jaWF0ZSB0aGUgc3BlY2lmaWVkIHVzZXJzIHdpdGggdGhlIHNwZWNpZmllZCBzdGFja3MuIFVzZXJzIGluIGEgdXNlciBwb29sIGNhbm5vdCBiZSBhc3NpZ25lZCB0byBzdGFja3Mgd2l0aCBmbGVldHMgdGhhdCBhcmUgam9pbmVkIHRvIGFuIEFjdGl2ZSBEaXJlY3RvcnkgZG9tYWluXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0JhdGNoQXNzb2NpYXRlVXNlclN0YWNrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0JhdGNoQXNzb2NpYXRlVXNlclN0YWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdCYXRjaEFzc29jaWF0ZVVzZXJTdGFjaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRpc2Fzc29jaWF0ZSB0aGUgc3BlY2lmaWVkIHVzZXJzIGZyb20gdGhlIHNwZWNpZmllZCBzdGFja3NcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQmF0Y2hEaXNhc3NvY2lhdGVVc2VyU3RhY2suaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQmF0Y2hEaXNhc3NvY2lhdGVVc2VyU3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0JhdGNoRGlzYXNzb2NpYXRlVXNlclN0YWNrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY29weSB0aGUgc3BlY2lmaWVkIGltYWdlIHdpdGhpbiB0aGUgc2FtZSBSZWdpb24gb3IgdG8gYSBuZXcgUmVnaW9uIHdpdGhpbiB0aGUgc2FtZSBBV1MgYWNjb3VudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9Db3B5SW1hZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ29weUltYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDb3B5SW1hZ2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gYXBwIGJsb2NrLiBBcHAgYmxvY2tzIHN0b3JlIGRldGFpbHMgYWJvdXQgdGhlIHZpcnR1YWwgaGFyZCBkaXNrIHRoYXQgY29udGFpbnMgdGhlIGZpbGVzIGZvciB0aGUgYXBwbGljYXRpb24gaW4gYW4gUzMgYnVja2V0LiBJdCBhbHNvIHN0b3JlcyB0aGUgc2V0dXAgc2NyaXB0IHdpdGggZGV0YWlscyBhYm91dCBob3cgdG8gbW91bnQgdGhlIHZpcnR1YWwgaGFyZCBkaXNrLiBBcHAgYmxvY2tzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgRWxhc3RpYyBmbGVldHNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlQXBwQmxvY2suaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlQXBwQmxvY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUFwcEJsb2NrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGFuIGFwcCBibG9jayBidWlsZGVyLiBBbiBhcHAgYmxvY2sgYnVpbGRlciBpcyBhIHZpcnR1YWwgbWFjaGluZSB0aGF0IGlzIHVzZWQgdG8gY3JlYXRlIGFuIGFwcCBibG9ja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUFwcEJsb2NrQnVpbGRlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVBcHBCbG9ja0J1aWxkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUFwcEJsb2NrQnVpbGRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIFVSTCB0byBzdGFydCBhbiBhcHAgYmxvY2sgYnVpbGRlciBzdHJlYW1pbmcgc2Vzc2lvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVBcHBCbG9ja0J1aWxkZXJTdHJlYW1pbmdVUkwuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlQXBwQmxvY2tCdWlsZGVyU3RyZWFtaW5nVVJMKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVBcHBCbG9ja0J1aWxkZXJTdHJlYW1pbmdVUkwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gYXBwbGljYXRpb24gd2l0aGluIGN1c3RvbWVyIGFjY291bnQuIEFwcGxpY2F0aW9ucyBzdG9yZSB0aGUgZGV0YWlscyBhYm91dCBob3cgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBvbiBzdHJlYW1pbmcgaW5zdGFuY2VzLiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBFbGFzdGljIGZsZWV0c1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVBcHBsaWNhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVBcHBsaWNhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlQXBwbGljYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBEaXJlY3RvcnkgQ29uZmlnIG9iamVjdCBpbiBBcHBTdHJlYW0gMi4wLiBUaGlzIG9iamVjdCBpbmNsdWRlcyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBqb2luIGZsZWV0cyBhbmQgaW1hZ2UgYnVpbGRlcnMgdG8gTWljcm9zb2Z0IEFjdGl2ZSBEaXJlY3RvcnkgZG9tYWluc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZURpcmVjdG9yeUNvbmZpZy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVEaXJlY3RvcnlDb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZURpcmVjdG9yeUNvbmZpZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBlbnRpdGxlbWVudCB0byBjb250cm9sIGFjY2VzcyB0byBhcHBsaWNhdGlvbnMgYmFzZWQgb24gdXNlciBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlRW50aXRsZW1lbnQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlRW50aXRsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUVudGl0bGVtZW50Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgZmxlZXQuIEEgZmxlZXQgaXMgYSBncm91cCBvZiBzdHJlYW1pbmcgaW5zdGFuY2VzIGZyb20gd2hpY2ggYXBwbGljYXRpb25zIGFyZSBsYXVuY2hlZCBhbmQgc3RyZWFtZWQgdG8gdXNlcnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVGbGVldC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVGbGVldCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlRmxlZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gaW1hZ2UgYnVpbGRlci4gQW4gaW1hZ2UgYnVpbGRlciBpcyBhIHZpcnR1YWwgbWFjaGluZSB0aGF0IGlzIHVzZWQgdG8gY3JlYXRlIGFuIGltYWdlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlSW1hZ2VCdWlsZGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUltYWdlQnVpbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlSW1hZ2VCdWlsZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgVVJMIHRvIHN0YXJ0IGFuIGltYWdlIGJ1aWxkZXIgc3RyZWFtaW5nIHNlc3Npb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlSW1hZ2VCdWlsZGVyU3RyZWFtaW5nVVJMLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUltYWdlQnVpbGRlclN0cmVhbWluZ1VSTCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlSW1hZ2VCdWlsZGVyU3RyZWFtaW5nVVJMJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgc3RhY2sgdG8gc3RhcnQgc3RyZWFtaW5nIGFwcGxpY2F0aW9ucyB0byB1c2Vycy4gQSBzdGFjayBjb25zaXN0cyBvZiBhbiBhc3NvY2lhdGVkIGZsZWV0LCB1c2VyIGFjY2VzcyBwb2xpY2llcywgYW5kIHN0b3JhZ2UgY29uZmlndXJhdGlvbnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVTdGFjay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlU3RhY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgVVJMIHRvIHN0YXJ0IGFuIEFwcFN0cmVhbSAyLjAgc3RyZWFtaW5nIHNlc3Npb24gZm9yIHRoZSBzcGVjaWZpZWQgdXNlci4gQSBzdHJlYW1pbmcgVVJMIGVuYWJsZXMgYXBwbGljYXRpb24gc3RyZWFtaW5nIHRvIGJlIHRlc3RlZCB3aXRob3V0IHVzZXIgc2V0dXBcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlU3RyZWFtaW5nVVJMLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVN0cmVhbWluZ1VSTCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlU3RyZWFtaW5nVVJMJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgY3VzdG9tIGJyYW5kaW5nIHRoZW1lLCB3aGljaCBtaWdodCBpbmNsdWRlcyBhIGN1c3RvbSBsb2dvLCB3ZWJzaXRlIGxpbmtzLCBhbmQgb3RoZXIgYnJhbmRpbmcgdG8gZGlzcGxheSB0byB5b3VyIHVzZXJzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlVGhlbWVGb3JTdGFjay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVUaGVtZUZvclN0YWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVUaGVtZUZvclN0YWNrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBkYXRlIGFuIGV4aXN0aW5nIGltYWdlIHdpdGhpbiBjdXN0b21lciBhY2NvdW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZVVwZGF0ZWRJbWFnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVVcGRhdGVkSW1hZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZVVwZGF0ZWRJbWFnZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIHVzYWdlIHJlcG9ydCBzdWJzY3JpcHRpb24uIFVzYWdlIHJlcG9ydHMgYXJlIGdlbmVyYXRlZCBkYWlseVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZVVzYWdlUmVwb3J0U3Vic2NyaXB0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVVzYWdlUmVwb3J0U3Vic2NyaXB0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVVc2FnZVJlcG9ydFN1YnNjcmlwdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIG5ldyB1c2VyIGluIHRoZSB1c2VyIHBvb2xcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVVc2VyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZVVzZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIHNwZWNpZmllZCBhcHAgYmxvY2tcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlQXBwQmxvY2suaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlQXBwQmxvY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUFwcEJsb2NrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzcGVjaWZpZWQgYXBwIGJsb2NrIGJ1aWxkZXIgYW5kIHJlbGVhc2UgY2FwYWNpdHlcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlQXBwQmxvY2tCdWlsZGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZUFwcEJsb2NrQnVpbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlQXBwQmxvY2tCdWlsZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzcGVjaWZpZWQgYXBwbGljYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlQXBwbGljYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlQXBwbGljYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUFwcGxpY2F0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzcGVjaWZpZWQgRGlyZWN0b3J5IENvbmZpZyBvYmplY3QgZnJvbSBBcHBTdHJlYW0gMi4wLiBUaGlzIG9iamVjdCBpbmNsdWRlcyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBqb2luIGZsZWV0cyBhbmQgaW1hZ2UgYnVpbGRlcnMgdG8gTWljcm9zb2Z0IEFjdGl2ZSBEaXJlY3RvcnkgZG9tYWluc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZURpcmVjdG9yeUNvbmZpZy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVEaXJlY3RvcnlDb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZURpcmVjdG9yeUNvbmZpZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgc3BlY2lmaWVkIGVudGl0bGVtZW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlRW50aXRsZW1lbnQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlRW50aXRsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUVudGl0bGVtZW50Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzcGVjaWZpZWQgZmxlZXRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlRmxlZXQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlRmxlZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUZsZWV0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzcGVjaWZpZWQgaW1hZ2UuIEFuIGltYWdlIGNhbm5vdCBiZSBkZWxldGVkIHdoZW4gaXQgaXMgaW4gdXNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZUltYWdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZUltYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVJbWFnZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgc3BlY2lmaWVkIGltYWdlIGJ1aWxkZXIgYW5kIHJlbGVhc2UgY2FwYWNpdHlcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlSW1hZ2VCdWlsZGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZUltYWdlQnVpbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlSW1hZ2VCdWlsZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHBlcm1pc3Npb25zIGZvciB0aGUgc3BlY2lmaWVkIHByaXZhdGUgaW1hZ2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlSW1hZ2VQZXJtaXNzaW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVJbWFnZVBlcm1pc3Npb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVJbWFnZVBlcm1pc3Npb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzcGVjaWZpZWQgc3RhY2suIEFmdGVyIHRoZSBzdGFjayBpcyBkZWxldGVkLCB0aGUgYXBwbGljYXRpb24gc3RyZWFtaW5nIGVudmlyb25tZW50IHByb3ZpZGVkIGJ5IHRoZSBzdGFjayBpcyBubyBsb25nZXIgYXZhaWxhYmxlIHRvIHVzZXJzLiBBbHNvLCBhbnkgcmVzZXJ2YXRpb25zIG1hZGUgZm9yIGFwcGxpY2F0aW9uIHN0cmVhbWluZyBzZXNzaW9ucyBmb3IgdGhlIHN0YWNrIGFyZSByZWxlYXNlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVTdGFjay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlU3RhY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgYSBjdXN0b20gYnJhbmRpbmcgdGhlbWUsIHdoaWNoIG1pZ2h0IGluY2x1ZGVzIGEgY3VzdG9tIGxvZ28sIHdlYnNpdGUgbGlua3MsIGFuZCBvdGhlciBicmFuZGluZyB0byBkaXNwbGF5IHRvIHlvdXIgdXNlcnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVUaGVtZUZvclN0YWNrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZVRoZW1lRm9yU3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZVRoZW1lRm9yU3RhY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkaXNhYmxlIHVzYWdlIHJlcG9ydCBnZW5lcmF0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZVVzYWdlUmVwb3J0U3Vic2NyaXB0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIGEgdXNlciBmcm9tIHRoZSB1c2VyIHBvb2xcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVVc2VyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZVVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZVVzZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSB0aGUgYXNzb2NpYXRpb25zIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFwcCBibG9jayBidWlsZGVyIG9yIGFwcCBibG9ja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVBcHBCbG9ja0J1aWxkZXJBcHBCbG9ja0Fzc29jaWF0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUFwcEJsb2NrQnVpbGRlckFwcEJsb2NrQXNzb2NpYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUFwcEJsb2NrQnVpbGRlckFwcEJsb2NrQXNzb2NpYXRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IHRoYXQgZGVzY3JpYmVzIG9uZSBvciBtb3JlIHNwZWNpZmllZCBhcHAgYmxvY2sgYnVpbGRlcnMsIGlmIHRoZSBhcHAgYmxvY2sgYnVpbGRlciBuYW1lcyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYWxsIGFwcCBibG9jayBidWlsZGVycyBpbiB0aGUgYWNjb3VudCBhcmUgZGVzY3JpYmVkXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUFwcEJsb2NrQnVpbGRlcnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVBcHBCbG9ja0J1aWxkZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUFwcEJsb2NrQnVpbGRlcnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb25lIG9yIG1vcmUgc3BlY2lmaWVkIGFwcCBibG9ja3MsIGlmIHRoZSBhcHAgYmxvY2sgYXJucyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYWxsIGFwcCBibG9ja3MgaW4gdGhlIGFjY291bnQgYXJlIGRlc2NyaWJlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVBcHBCbG9ja3MuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVBcHBCbG9ja3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlQXBwQmxvY2tzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgdGhlIGFzc29jaWF0aW9ucyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvbiBvciBmbGVldFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVBcHBsaWNhdGlvbkZsZWV0QXNzb2NpYXRpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlQXBwbGljYXRpb25GbGVldEFzc29jaWF0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVBcHBsaWNhdGlvbkZsZWV0QXNzb2NpYXRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IHRoYXQgZGVzY3JpYmVzIG9uZSBvciBtb3JlIHNwZWNpZmllZCBhcHBsaWNhdGlvbnMsIGlmIHRoZSBhcHBsaWNhdGlvbiBhcm5zIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhbGwgYXBwbGljYXRpb25zIGluIHRoZSBhY2NvdW50IGFyZSBkZXNjcmliZWRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlQXBwbGljYXRpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlQXBwbGljYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUFwcGxpY2F0aW9ucycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGEgbGlzdCB0aGF0IGRlc2NyaWJlcyBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgRGlyZWN0b3J5IENvbmZpZyBvYmplY3RzIGZvciBBcHBTdHJlYW0gMi4wLCBpZiB0aGUgbmFtZXMgZm9yIHRoZXNlIG9iamVjdHMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGFsbCBEaXJlY3RvcnkgQ29uZmlnIG9iamVjdHMgaW4gdGhlIGFjY291bnQgYXJlIGRlc2NyaWJlZC4gVGhpcyBvYmplY3QgaW5jbHVkZXMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gam9pbiBmbGVldHMgYW5kIGltYWdlIGJ1aWxkZXJzIHRvIE1pY3Jvc29mdCBBY3RpdmUgRGlyZWN0b3J5IGRvbWFpbnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlRGlyZWN0b3J5Q29uZmlncy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZURpcmVjdG9yeUNvbmZpZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlRGlyZWN0b3J5Q29uZmlncycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIG9uZSBvciBhbGwgZW50aXRsZW1lbnRzIGZvciB0aGUgc3BlY2lmaWVkIHN0YWNrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUVudGl0bGVtZW50cy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUVudGl0bGVtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVFbnRpdGxlbWVudHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb25lIG9yIG1vcmUgc3BlY2lmaWVkIGZsZWV0cywgaWYgdGhlIGZsZWV0IG5hbWVzIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhbGwgZmxlZXRzIGluIHRoZSBhY2NvdW50IGFyZSBkZXNjcmliZWRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlRmxlZXRzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlRmxlZXRzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUZsZWV0cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGEgbGlzdCB0aGF0IGRlc2NyaWJlcyBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgaW1hZ2UgYnVpbGRlcnMsIGlmIHRoZSBpbWFnZSBidWlsZGVyIG5hbWVzIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhbGwgaW1hZ2UgYnVpbGRlcnMgaW4gdGhlIGFjY291bnQgYXJlIGRlc2NyaWJlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVJbWFnZUJ1aWxkZXJzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlSW1hZ2VCdWlsZGVycygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVJbWFnZUJ1aWxkZXJzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IHRoYXQgZGVzY3JpYmVzIHRoZSBwZXJtaXNzaW9ucyBmb3Igc2hhcmVkIEFXUyBhY2NvdW50IElEcyBvbiBhIHByaXZhdGUgaW1hZ2UgdGhhdCB5b3Ugb3duXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUltYWdlUGVybWlzc2lvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVJbWFnZVBlcm1pc3Npb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUltYWdlUGVybWlzc2lvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb25lIG9yIG1vcmUgc3BlY2lmaWVkIGltYWdlcywgaWYgdGhlIGltYWdlIG5hbWVzIG9yIGltYWdlIEFSTnMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGFsbCBpbWFnZXMgaW4gdGhlIGFjY291bnQgYXJlIGRlc2NyaWJlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVJbWFnZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVJbWFnZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlSW1hZ2VzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IHRoYXQgZGVzY3JpYmVzIHRoZSBzdHJlYW1pbmcgc2Vzc2lvbnMgZm9yIHRoZSBzcGVjaWZpZWQgc3RhY2sgYW5kIGZsZWV0LiBJZiBhIHVzZXIgSUQgaXMgcHJvdmlkZWQgZm9yIHRoZSBzdGFjayBhbmQgZmxlZXQsIG9ubHkgdGhlIHN0cmVhbWluZyBzZXNzaW9ucyBmb3IgdGhhdCB1c2VyIGFyZSBkZXNjcmliZWRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlU2Vzc2lvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVTZXNzaW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVTZXNzaW9ucycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGEgbGlzdCB0aGF0IGRlc2NyaWJlcyBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgc3RhY2tzLCBpZiB0aGUgc3RhY2sgbmFtZXMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGFsbCBzdGFja3MgaW4gdGhlIGFjY291bnQgYXJlIGRlc2NyaWJlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVTdGFja3MuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVTdGFja3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlU3RhY2tzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IHRoZSBjdXN0b20gYnJhbmRpbmcgdGhlbWUgaW5mb3JtYXRpb24sIHdoaWNoIG1pZ2h0IGluY2x1ZGVzIGEgY3VzdG9tIGxvZ28sIHdlYnNpdGUgbGlua3MsIGFuZCBvdGhlciBicmFuZGluZyB0byBkaXNwbGF5IHRvIHlvdXIgdXNlcnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlVGhlbWVGb3JTdGFjay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZVRoZW1lRm9yU3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlVGhlbWVGb3JTdGFjaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGEgbGlzdCB0aGF0IGRlc2NyaWJlcyBvbmUgb3IgbW9yZSB1c2FnZSByZXBvcnQgc3Vic2NyaXB0aW9uc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVVc2FnZVJlcG9ydFN1YnNjcmlwdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVVc2FnZVJlcG9ydFN1YnNjcmlwdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IHRoYXQgZGVzY3JpYmVzIHRoZSBVc2VyU3RhY2tBc3NvY2lhdGlvbiBvYmplY3RzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZVVzZXJTdGFja0Fzc29jaWF0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZVVzZXJTdGFja0Fzc29jaWF0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVVc2VyU3RhY2tBc3NvY2lhdGlvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgdXNlcnMgaW4gdGhlIHVzZXIgcG9vbFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVVc2Vycy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZVVzZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZVVzZXJzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGlzYWJsZSB0aGUgc3BlY2lmaWVkIHVzZXIgaW4gdGhlIHVzZXIgcG9vbC4gVGhpcyBhY3Rpb24gZG9lcyBub3QgZGVsZXRlIHRoZSB1c2VyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGlzYWJsZVVzZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGlzYWJsZVVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rpc2FibGVVc2VyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGlzYXNzb2NpYXRlIHRoZSBzcGVjaWZpZWQgYXBwIGJsb2NrIGJ1aWxkZXIgd2l0aCB0aGUgYXBwIGJsb2NrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rpc2Fzc29jaWF0ZUFwcEJsb2NrQnVpbGRlckFwcEJsb2NrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rpc2Fzc29jaWF0ZUFwcEJsb2NrQnVpbGRlckFwcEJsb2NrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEaXNhc3NvY2lhdGVBcHBCbG9ja0J1aWxkZXJBcHBCbG9jaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRpc2Fzc29jaWF0ZSB0aGUgc3BlY2lmaWVkIGFwcGxpY2F0aW9uIGZyb20gdGhlIHNwZWNpZmllZCBmbGVldFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EaXNhc3NvY2lhdGVBcHBsaWNhdGlvbkZsZWV0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rpc2Fzc29jaWF0ZUFwcGxpY2F0aW9uRmxlZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rpc2Fzc29jaWF0ZUFwcGxpY2F0aW9uRmxlZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkaXNhc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvbiBmcm9tIHRoZSBzcGVjaWZpZWQgZW50aXRsZW1lbnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EaXNhc3NvY2lhdGVBcHBsaWNhdGlvbkZyb21FbnRpdGxlbWVudC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EaXNhc3NvY2lhdGVBcHBsaWNhdGlvbkZyb21FbnRpdGxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGlzYXNzb2NpYXRlQXBwbGljYXRpb25Gcm9tRW50aXRsZW1lbnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkaXNhc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBmbGVldCBmcm9tIHRoZSBzcGVjaWZpZWQgc3RhY2tcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGlzYXNzb2NpYXRlRmxlZXQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGlzYXNzb2NpYXRlRmxlZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rpc2Fzc29jaWF0ZUZsZWV0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZW5hYmxlIGEgdXNlciBpbiB0aGUgdXNlciBwb29sXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRW5hYmxlVXNlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9FbmFibGVVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdFbmFibGVVc2VyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gaW1tZWRpYXRlbHkgc3RvcCB0aGUgc3BlY2lmaWVkIHN0cmVhbWluZyBzZXNzaW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRXhwaXJlU2Vzc2lvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9FeHBpcmVTZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdFeHBpcmVTZXNzaW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGZsZWV0IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgc3RhY2tcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3RBc3NvY2lhdGVkRmxlZXRzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RBc3NvY2lhdGVkRmxlZXRzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0QXNzb2NpYXRlZEZsZWV0cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBzdGFjayB3aXRoIHdoaWNoIHRoZSBzcGVjaWZpZWQgZmxlZXQgaXMgYXNzb2NpYXRlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdEFzc29jaWF0ZWRTdGFja3MuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdEFzc29jaWF0ZWRTdGFja3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RBc3NvY2lhdGVkU3RhY2tzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgdGhlIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBlbnRpdGxlbWVudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdEVudGl0bGVkQXBwbGljYXRpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RFbnRpdGxlZEFwcGxpY2F0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEVudGl0bGVkQXBwbGljYXRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IG9mIGFsbCB0YWdzIGZvciB0aGUgc3BlY2lmaWVkIEFwcFN0cmVhbSAyLjAgcmVzb3VyY2UuIFRoZSBmb2xsb3dpbmcgcmVzb3VyY2VzIGNhbiBiZSB0YWdnZWQ6IEltYWdlIGJ1aWxkZXJzLCBpbWFnZXMsIGZsZWV0cywgYW5kIHN0YWNrc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdFRhZ3NGb3JSZXNvdXJjZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0VGFnc0ZvclJlc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0VGFnc0ZvclJlc291cmNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3RhcnQgdGhlIHNwZWNpZmllZCBhcHAgYmxvY2sgYnVpbGRlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9TdGFydEFwcEJsb2NrQnVpbGRlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TdGFydEFwcEJsb2NrQnVpbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3RhcnRBcHBCbG9ja0J1aWxkZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzdGFydCB0aGUgc3BlY2lmaWVkIGZsZWV0XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1N0YXJ0RmxlZXQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvU3RhcnRGbGVldCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3RhcnRGbGVldCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHN0YXJ0IHRoZSBzcGVjaWZpZWQgaW1hZ2UgYnVpbGRlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9TdGFydEltYWdlQnVpbGRlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TdGFydEltYWdlQnVpbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3RhcnRJbWFnZUJ1aWxkZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzdG9wIHRoZSBzcGVjaWZpZWQgYXBwIGJsb2NrIGJ1aWxkZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfU3RvcEFwcEJsb2NrQnVpbGRlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TdG9wQXBwQmxvY2tCdWlsZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTdG9wQXBwQmxvY2tCdWlsZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3RvcCB0aGUgc3BlY2lmaWVkIGZsZWV0XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1N0b3BGbGVldC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TdG9wRmxlZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1N0b3BGbGVldCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHN0b3AgdGhlIHNwZWNpZmllZCBpbWFnZSBidWlsZGVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1N0b3BJbWFnZUJ1aWxkZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvU3RvcEltYWdlQnVpbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3RvcEltYWdlQnVpbGRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGZlZGVyYXRlZCB1c2VycyB0byBzaWduIGluIGJ5IHVzaW5nIHRoZWlyIGV4aXN0aW5nIGNyZWRlbnRpYWxzIGFuZCBzdHJlYW0gYXBwbGljYXRpb25zIGZyb20gdGhlIHNwZWNpZmllZCBzdGFja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmVXNlcklkKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2V4dGVybmFsLWlkZW50aXR5LXByb3ZpZGVycy1zZXR0aW5nLXVwLXNhbWwuaHRtbCNleHRlcm5hbC1pZGVudGl0eS1wcm92aWRlcnMtZW1iZWQtaW5saW5lLXBvbGljeS1mb3ItSUFNLXJvbGVcbiAgICovXG4gIHB1YmxpYyB0b1N0cmVhbSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3RyZWFtJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYWRkIG9yIG92ZXJ3cml0ZSBvbmUgb3IgbW9yZSB0YWdzIGZvciB0aGUgc3BlY2lmaWVkIEFwcFN0cmVhbSAyLjAgcmVzb3VyY2UuIFRoZSBmb2xsb3dpbmcgcmVzb3VyY2VzIGNhbiBiZSB0YWdnZWQ6IEltYWdlIGJ1aWxkZXJzLCBpbWFnZXMsIGZsZWV0cywgc3RhY2tzLCBhcHAgYmxvY2tzIGFuZCBhcHBsaWNhdGlvbnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBUYWdnaW5nXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9UYWdSZXNvdXJjZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9UYWdSZXNvdXJjZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVGFnUmVzb3VyY2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkaXNhc3NvY2lhdGUgb25lIG9yIG1vcmUgdGFncyBmcm9tIHRoZSBzcGVjaWZpZWQgQXBwU3RyZWFtIDIuMCByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFRhZ2dpbmdcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVW50YWdSZXNvdXJjZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VbnRhZ1Jlc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVbnRhZ1Jlc291cmNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBkYXRlIGEgc3BlY2lmaWMgYXBwIGJsb2NrIGJ1aWxkZXIuIEFuIGFwcCBibG9jayBidWlsZGVyIGlzIGEgdmlydHVhbCBtYWNoaW5lIHRoYXQgaXMgdXNlZCB0byBjcmVhdGUgYW4gYXBwIGJsb2NrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZUFwcEJsb2NrQnVpbGRlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVBcHBCbG9ja0J1aWxkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZUFwcEJsb2NrQnVpbGRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc3BlY2lmaWVkIGZpZWxkcyBmb3IgdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9VcGRhdGVBcHBsaWNhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVBcHBsaWNhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlQXBwbGljYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhlIHNwZWNpZmllZCBEaXJlY3RvcnkgQ29uZmlnIG9iamVjdCBpbiBBcHBTdHJlYW0gMi4wLiBUaGlzIG9iamVjdCBpbmNsdWRlcyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBqb2luIGZsZWV0cyBhbmQgaW1hZ2UgYnVpbGRlcnMgdG8gTWljcm9zb2Z0IEFjdGl2ZSBEaXJlY3RvcnkgZG9tYWluc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZURpcmVjdG9yeUNvbmZpZy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVEaXJlY3RvcnlDb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZURpcmVjdG9yeUNvbmZpZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc3BlY2lmaWVkIGZpZWxkcyBmb3IgdGhlIHNwZWNpZmllZCBlbnRpdGxlbWVudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZUVudGl0bGVtZW50Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZUVudGl0bGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVcGRhdGVFbnRpdGxlbWVudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc3BlY2lmaWVkIGZsZWV0LiBBbGwgYXR0cmlidXRlcyBleGNlcHQgdGhlIGZsZWV0IG5hbWUgY2FuIGJlIHVwZGF0ZWQgd2hlbiB0aGUgZmxlZXQgaXMgaW4gdGhlIFNUT1BQRUQgc3RhdGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVXBkYXRlRmxlZXQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlRmxlZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZUZsZWV0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYWRkIG9yIHVwZGF0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHNwZWNpZmllZCBwcml2YXRlIGltYWdlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZUltYWdlUGVybWlzc2lvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlSW1hZ2VQZXJtaXNzaW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlSW1hZ2VQZXJtaXNzaW9ucycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc3BlY2lmaWVkIGZpZWxkcyBmb3IgdGhlIHNwZWNpZmllZCBzdGFja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9VcGRhdGVTdGFjay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlU3RhY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhlIGN1c3RvbSBicmFuZGluZyB0aGVtZSBpbmZvcm1hdGlvbiwgd2hpY2ggbWlnaHQgaW5jbHVkZXMgYSBjdXN0b20gbG9nbywgd2Vic2l0ZSBsaW5rcywgYW5kIG90aGVyIGJyYW5kaW5nIHRvIGRpc3BsYXkgdG8geW91ciB1c2Vyc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZVRoZW1lRm9yU3RhY2suaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlVGhlbWVGb3JTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlVGhlbWVGb3JTdGFjaycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFjY2Vzc0xldmVsTGlzdDogQWNjZXNzTGV2ZWxMaXN0ID0ge1xuICAgIFdyaXRlOiBbXG4gICAgICAnQXNzb2NpYXRlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2snLFxuICAgICAgJ0Fzc29jaWF0ZUFwcGxpY2F0aW9uRmxlZXQnLFxuICAgICAgJ0Fzc29jaWF0ZUFwcGxpY2F0aW9uVG9FbnRpdGxlbWVudCcsXG4gICAgICAnQXNzb2NpYXRlRmxlZXQnLFxuICAgICAgJ0JhdGNoQXNzb2NpYXRlVXNlclN0YWNrJyxcbiAgICAgICdCYXRjaERpc2Fzc29jaWF0ZVVzZXJTdGFjaycsXG4gICAgICAnQ29weUltYWdlJyxcbiAgICAgICdDcmVhdGVBcHBCbG9jaycsXG4gICAgICAnQ3JlYXRlQXBwQmxvY2tCdWlsZGVyJyxcbiAgICAgICdDcmVhdGVBcHBCbG9ja0J1aWxkZXJTdHJlYW1pbmdVUkwnLFxuICAgICAgJ0NyZWF0ZUFwcGxpY2F0aW9uJyxcbiAgICAgICdDcmVhdGVEaXJlY3RvcnlDb25maWcnLFxuICAgICAgJ0NyZWF0ZUVudGl0bGVtZW50JyxcbiAgICAgICdDcmVhdGVGbGVldCcsXG4gICAgICAnQ3JlYXRlSW1hZ2VCdWlsZGVyJyxcbiAgICAgICdDcmVhdGVJbWFnZUJ1aWxkZXJTdHJlYW1pbmdVUkwnLFxuICAgICAgJ0NyZWF0ZVN0YWNrJyxcbiAgICAgICdDcmVhdGVTdHJlYW1pbmdVUkwnLFxuICAgICAgJ0NyZWF0ZVRoZW1lRm9yU3RhY2snLFxuICAgICAgJ0NyZWF0ZVVwZGF0ZWRJbWFnZScsXG4gICAgICAnQ3JlYXRlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb24nLFxuICAgICAgJ0NyZWF0ZVVzZXInLFxuICAgICAgJ0RlbGV0ZUFwcEJsb2NrJyxcbiAgICAgICdEZWxldGVBcHBCbG9ja0J1aWxkZXInLFxuICAgICAgJ0RlbGV0ZUFwcGxpY2F0aW9uJyxcbiAgICAgICdEZWxldGVEaXJlY3RvcnlDb25maWcnLFxuICAgICAgJ0RlbGV0ZUVudGl0bGVtZW50JyxcbiAgICAgICdEZWxldGVGbGVldCcsXG4gICAgICAnRGVsZXRlSW1hZ2UnLFxuICAgICAgJ0RlbGV0ZUltYWdlQnVpbGRlcicsXG4gICAgICAnRGVsZXRlSW1hZ2VQZXJtaXNzaW9ucycsXG4gICAgICAnRGVsZXRlU3RhY2snLFxuICAgICAgJ0RlbGV0ZVRoZW1lRm9yU3RhY2snLFxuICAgICAgJ0RlbGV0ZVVzYWdlUmVwb3J0U3Vic2NyaXB0aW9uJyxcbiAgICAgICdEZWxldGVVc2VyJyxcbiAgICAgICdEaXNhYmxlVXNlcicsXG4gICAgICAnRGlzYXNzb2NpYXRlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2snLFxuICAgICAgJ0Rpc2Fzc29jaWF0ZUFwcGxpY2F0aW9uRmxlZXQnLFxuICAgICAgJ0Rpc2Fzc29jaWF0ZUFwcGxpY2F0aW9uRnJvbUVudGl0bGVtZW50JyxcbiAgICAgICdEaXNhc3NvY2lhdGVGbGVldCcsXG4gICAgICAnRW5hYmxlVXNlcicsXG4gICAgICAnRXhwaXJlU2Vzc2lvbicsXG4gICAgICAnU3RhcnRBcHBCbG9ja0J1aWxkZXInLFxuICAgICAgJ1N0YXJ0RmxlZXQnLFxuICAgICAgJ1N0YXJ0SW1hZ2VCdWlsZGVyJyxcbiAgICAgICdTdG9wQXBwQmxvY2tCdWlsZGVyJyxcbiAgICAgICdTdG9wRmxlZXQnLFxuICAgICAgJ1N0b3BJbWFnZUJ1aWxkZXInLFxuICAgICAgJ1N0cmVhbScsXG4gICAgICAnVXBkYXRlQXBwQmxvY2tCdWlsZGVyJyxcbiAgICAgICdVcGRhdGVBcHBsaWNhdGlvbicsXG4gICAgICAnVXBkYXRlRGlyZWN0b3J5Q29uZmlnJyxcbiAgICAgICdVcGRhdGVFbnRpdGxlbWVudCcsXG4gICAgICAnVXBkYXRlRmxlZXQnLFxuICAgICAgJ1VwZGF0ZUltYWdlUGVybWlzc2lvbnMnLFxuICAgICAgJ1VwZGF0ZVN0YWNrJyxcbiAgICAgICdVcGRhdGVUaGVtZUZvclN0YWNrJ1xuICAgIF0sXG4gICAgTGlzdDogW1xuICAgICAgJ0Rlc2NyaWJlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2tBc3NvY2lhdGlvbnMnLFxuICAgICAgJ0Rlc2NyaWJlQXBwQmxvY2tCdWlsZGVycycsXG4gICAgICAnRGVzY3JpYmVBcHBCbG9ja3MnLFxuICAgICAgJ0Rlc2NyaWJlQXBwbGljYXRpb25GbGVldEFzc29jaWF0aW9ucycsXG4gICAgICAnRGVzY3JpYmVBcHBsaWNhdGlvbnMnLFxuICAgICAgJ0Rlc2NyaWJlRGlyZWN0b3J5Q29uZmlncycsXG4gICAgICAnRGVzY3JpYmVFbnRpdGxlbWVudHMnLFxuICAgICAgJ0Rlc2NyaWJlRmxlZXRzJyxcbiAgICAgICdEZXNjcmliZUltYWdlQnVpbGRlcnMnLFxuICAgICAgJ0Rlc2NyaWJlSW1hZ2VzJyxcbiAgICAgICdEZXNjcmliZVNlc3Npb25zJyxcbiAgICAgICdEZXNjcmliZVN0YWNrcycsXG4gICAgICAnRGVzY3JpYmVVc2FnZVJlcG9ydFN1YnNjcmlwdGlvbnMnLFxuICAgICAgJ0Rlc2NyaWJlVXNlclN0YWNrQXNzb2NpYXRpb25zJyxcbiAgICAgICdEZXNjcmliZVVzZXJzJyxcbiAgICAgICdMaXN0RW50aXRsZWRBcHBsaWNhdGlvbnMnXG4gICAgXSxcbiAgICBSZWFkOiBbXG4gICAgICAnRGVzY3JpYmVJbWFnZVBlcm1pc3Npb25zJyxcbiAgICAgICdEZXNjcmliZVRoZW1lRm9yU3RhY2snLFxuICAgICAgJ0xpc3RBc3NvY2lhdGVkRmxlZXRzJyxcbiAgICAgICdMaXN0QXNzb2NpYXRlZFN0YWNrcycsXG4gICAgICAnTGlzdFRhZ3NGb3JSZXNvdXJjZSdcbiAgICBdLFxuICAgIFRhZ2dpbmc6IFtcbiAgICAgICdUYWdSZXNvdXJjZScsXG4gICAgICAnVW50YWdSZXNvdXJjZSdcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIGZsZWV0IHRvIHRoZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3doYXQtaXMtYXBwc3RyZWFtLmh0bWwjd2hhdC1pcy1jb25jZXB0c1xuICAgKlxuICAgKiBAcGFyYW0gZmxlZXROYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGZsZWV0TmFtZS5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKi9cbiAgcHVibGljIG9uRmxlZXQoZmxlZXROYW1lOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06YXBwc3RyZWFtOiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTpmbGVldC8keyBmbGVldE5hbWUgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIGltYWdlIHRvIHRoZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3doYXQtaXMtYXBwc3RyZWFtLmh0bWwjd2hhdC1pcy1jb25jZXB0c1xuICAgKlxuICAgKiBAcGFyYW0gaW1hZ2VOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGltYWdlTmFtZS5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2UoaW1hZ2VOYW1lOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06YXBwc3RyZWFtOiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTppbWFnZS8keyBpbWFnZU5hbWUgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIGltYWdlLWJ1aWxkZXIgdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvd2hhdC1pcy1hcHBzdHJlYW0uaHRtbCN3aGF0LWlzLWNvbmNlcHRzXG4gICAqXG4gICAqIEBwYXJhbSBpbWFnZUJ1aWxkZXJOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGltYWdlQnVpbGRlck5hbWUuXG4gICAqIEBwYXJhbSBhY2NvdW50IC0gQWNjb3VudCBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgYWNjb3VudC5cbiAgICogQHBhcmFtIHJlZ2lvbiAtIFJlZ2lvbiBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcmVnaW9uLlxuICAgKiBAcGFyYW0gcGFydGl0aW9uIC0gUGFydGl0aW9uIG9mIHRoZSBBV1MgYWNjb3VudCBbYXdzLCBhd3MtY24sIGF3cy11cy1nb3ZdOyBkZWZhdWx0cyB0byBgYXdzYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcGFydGl0aW9uLlxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlQnVpbGRlcihpbWFnZUJ1aWxkZXJOYW1lOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06YXBwc3RyZWFtOiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTppbWFnZS1idWlsZGVyLyR7IGltYWdlQnVpbGRlck5hbWUgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIHN0YWNrIHRvIHRoZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3doYXQtaXMtYXBwc3RyZWFtLmh0bWwjd2hhdC1pcy1jb25jZXB0c1xuICAgKlxuICAgKiBAcGFyYW0gc3RhY2tOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIHN0YWNrTmFtZS5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKi9cbiAgcHVibGljIG9uU3RhY2soc3RhY2tOYW1lOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06YXBwc3RyZWFtOiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTpzdGFjay8keyBzdGFja05hbWUgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIGFwcC1ibG9jayB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS93aGF0LWlzLWFwcHN0cmVhbS5odG1sI3doYXQtaXMtY29uY2VwdHNcbiAgICpcbiAgICogQHBhcmFtIGFwcEJsb2NrTmFtZSAtIElkZW50aWZpZXIgZm9yIHRoZSBhcHBCbG9ja05hbWUuXG4gICAqIEBwYXJhbSBhY2NvdW50IC0gQWNjb3VudCBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgYWNjb3VudC5cbiAgICogQHBhcmFtIHJlZ2lvbiAtIFJlZ2lvbiBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcmVnaW9uLlxuICAgKiBAcGFyYW0gcGFydGl0aW9uIC0gUGFydGl0aW9uIG9mIHRoZSBBV1MgYWNjb3VudCBbYXdzLCBhd3MtY24sIGF3cy11cy1nb3ZdOyBkZWZhdWx0cyB0byBgYXdzYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcGFydGl0aW9uLlxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICovXG4gIHB1YmxpYyBvbkFwcEJsb2NrKGFwcEJsb2NrTmFtZTogc3RyaW5nLCBhY2NvdW50Pzogc3RyaW5nLCByZWdpb24/OiBzdHJpbmcsIHBhcnRpdGlvbj86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm9uKGBhcm46JHsgcGFydGl0aW9uID8/IHRoaXMuZGVmYXVsdFBhcnRpdGlvbiB9OmFwcHN0cmVhbTokeyByZWdpb24gPz8gdGhpcy5kZWZhdWx0UmVnaW9uIH06JHsgYWNjb3VudCA/PyB0aGlzLmRlZmF1bHRBY2NvdW50IH06YXBwLWJsb2NrLyR7IGFwcEJsb2NrTmFtZSB9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgYXBwbGljYXRpb24gdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvd2hhdC1pcy1hcHBzdHJlYW0uaHRtbCN3aGF0LWlzLWNvbmNlcHRzXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbk5hbWUgLSBJZGVudGlmaWVyIGZvciB0aGUgYXBwbGljYXRpb25OYW1lLlxuICAgKiBAcGFyYW0gYWNjb3VudCAtIEFjY291bnQgb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIGFjY291bnQuXG4gICAqIEBwYXJhbSByZWdpb24gLSBSZWdpb24gb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHJlZ2lvbi5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqL1xuICBwdWJsaWMgb25BcHBsaWNhdGlvbihhcHBsaWNhdGlvbk5hbWU6IHN0cmluZywgYWNjb3VudD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTphcHBzdHJlYW06JHsgcmVnaW9uID8/IHRoaXMuZGVmYXVsdFJlZ2lvbiB9OiR7IGFjY291bnQgPz8gdGhpcy5kZWZhdWx0QWNjb3VudCB9OmFwcGxpY2F0aW9uLyR7IGFwcGxpY2F0aW9uTmFtZSB9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgYXBwLWJsb2NrLWJ1aWxkZXIgdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvd2hhdC1pcy1hcHBzdHJlYW0uaHRtbCN3aGF0LWlzLWNvbmNlcHRzXG4gICAqXG4gICAqIEBwYXJhbSBhcHBCbG9ja0J1aWxkZXJOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGFwcEJsb2NrQnVpbGRlck5hbWUuXG4gICAqIEBwYXJhbSBhY2NvdW50IC0gQWNjb3VudCBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgYWNjb3VudC5cbiAgICogQHBhcmFtIHJlZ2lvbiAtIFJlZ2lvbiBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcmVnaW9uLlxuICAgKiBAcGFyYW0gcGFydGl0aW9uIC0gUGFydGl0aW9uIG9mIHRoZSBBV1MgYWNjb3VudCBbYXdzLCBhd3MtY24sIGF3cy11cy1nb3ZdOyBkZWZhdWx0cyB0byBgYXdzYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcGFydGl0aW9uLlxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICovXG4gIHB1YmxpYyBvbkFwcEJsb2NrQnVpbGRlcihhcHBCbG9ja0J1aWxkZXJOYW1lOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06YXBwc3RyZWFtOiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTphcHAtYmxvY2stYnVpbGRlci8keyBhcHBCbG9ja0J1aWxkZXJOYW1lIH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIGFjY2VzcyBieSB0aGUgSUQgb2YgdGhlIEFwcFN0cmVhbSAyLjAgdXNlclxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvZXh0ZXJuYWwtaWRlbnRpdHktcHJvdmlkZXJzLXNldHRpbmctdXAtc2FtbC5odG1sI2V4dGVybmFsLWlkZW50aXR5LXByb3ZpZGVycy1lbWJlZC1pbmxpbmUtcG9saWN5LWZvci1JQU0tcm9sZVxuICAgKlxuICAgKiBBcHBsaWVzIHRvIGFjdGlvbnM6XG4gICAqIC0gLnRvU3RyZWFtKClcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZShzKSB0byBjaGVja1xuICAgKiBAcGFyYW0gb3BlcmF0b3IgV29ya3Mgd2l0aCBbc3RyaW5nIG9wZXJhdG9yc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19jb25kaXRpb25fb3BlcmF0b3JzLmh0bWwjQ29uZGl0aW9uc19TdHJpbmcpLiAqKkRlZmF1bHQ6KiogYFN0cmluZ0xpa2VgXG4gICAqL1xuICBwdWJsaWMgaWZVc2VySWQodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBvcGVyYXRvcj86IE9wZXJhdG9yIHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaWYoYHVzZXJJZGAsIHZhbHVlLCBvcGVyYXRvciA/PyAnU3RyaW5nTGlrZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgYWNjZXNzIGJ5IHRoZSBwcmVzZW5jZSBvZiB0YWcga2V5LXZhbHVlIHBhaXJzIGluIHRoZSByZXF1ZXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfY29uZGl0aW9uLWtleXMuaHRtbCNjb25kaXRpb24ta2V5cy1yZXF1ZXN0dGFnXG4gICAqXG4gICAqIEFwcGxpZXMgdG8gYWN0aW9uczpcbiAgICogLSAudG9DcmVhdGVBcHBCbG9jaygpXG4gICAqIC0gLnRvQ3JlYXRlQXBwQmxvY2tCdWlsZGVyKClcbiAgICogLSAudG9DcmVhdGVBcHBsaWNhdGlvbigpXG4gICAqIC0gLnRvQ3JlYXRlRmxlZXQoKVxuICAgKiAtIC50b0NyZWF0ZUltYWdlQnVpbGRlcigpXG4gICAqIC0gLnRvQ3JlYXRlU3RhY2soKVxuICAgKiAtIC50b0NyZWF0ZVVwZGF0ZWRJbWFnZSgpXG4gICAqIC0gLnRvVGFnUmVzb3VyY2UoKVxuICAgKlxuICAgKiBAcGFyYW0gdGFnS2V5IFRoZSB0YWcga2V5IHRvIGNoZWNrXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUocykgdG8gY2hlY2tcbiAgICogQHBhcmFtIG9wZXJhdG9yIFdvcmtzIHdpdGggW3N0cmluZyBvcGVyYXRvcnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfY29uZGl0aW9uX29wZXJhdG9ycy5odG1sI0NvbmRpdGlvbnNfU3RyaW5nKS4gKipEZWZhdWx0OioqIGBTdHJpbmdMaWtlYFxuICAgKi9cbiAgcHVibGljIGlmQXdzUmVxdWVzdFRhZyh0YWdLZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBvcGVyYXRvcj86IE9wZXJhdG9yIHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaWYoYGF3czpSZXF1ZXN0VGFnLyR7IHRhZ0tleSB9YCwgdmFsdWUsIG9wZXJhdG9yID8/ICdTdHJpbmdMaWtlJyk7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVycyBhY2Nlc3MgYnkgdGhlIHRhZyBrZXktdmFsdWUgcGFpcnMgYXR0YWNoZWQgdG8gdGhlIHJlc291cmNlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfY29uZGl0aW9uLWtleXMuaHRtbCNjb25kaXRpb24ta2V5cy1yZXNvdXJjZXRhZ1xuICAgKlxuICAgKiBBcHBsaWVzIHRvIGFjdGlvbnM6XG4gICAqIC0gLnRvQXNzb2NpYXRlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2soKVxuICAgKiAtIC50b0Fzc29jaWF0ZUFwcGxpY2F0aW9uRmxlZXQoKVxuICAgKiAtIC50b0Fzc29jaWF0ZUZsZWV0KClcbiAgICogLSAudG9CYXRjaEFzc29jaWF0ZVVzZXJTdGFjaygpXG4gICAqIC0gLnRvQmF0Y2hEaXNhc3NvY2lhdGVVc2VyU3RhY2soKVxuICAgKiAtIC50b0NvcHlJbWFnZSgpXG4gICAqIC0gLnRvQ3JlYXRlQXBwQmxvY2soKVxuICAgKiAtIC50b0NyZWF0ZUFwcEJsb2NrQnVpbGRlclN0cmVhbWluZ1VSTCgpXG4gICAqIC0gLnRvQ3JlYXRlQXBwbGljYXRpb24oKVxuICAgKiAtIC50b0NyZWF0ZUltYWdlQnVpbGRlclN0cmVhbWluZ1VSTCgpXG4gICAqIC0gLnRvQ3JlYXRlU3RyZWFtaW5nVVJMKClcbiAgICogLSAudG9DcmVhdGVVcGRhdGVkSW1hZ2UoKVxuICAgKiAtIC50b0RlbGV0ZUFwcEJsb2NrKClcbiAgICogLSAudG9EZWxldGVBcHBCbG9ja0J1aWxkZXIoKVxuICAgKiAtIC50b0RlbGV0ZUFwcGxpY2F0aW9uKClcbiAgICogLSAudG9EZWxldGVGbGVldCgpXG4gICAqIC0gLnRvRGVsZXRlSW1hZ2UoKVxuICAgKiAtIC50b0RlbGV0ZUltYWdlQnVpbGRlcigpXG4gICAqIC0gLnRvRGVsZXRlSW1hZ2VQZXJtaXNzaW9ucygpXG4gICAqIC0gLnRvRGVsZXRlU3RhY2soKVxuICAgKiAtIC50b0Rpc2Fzc29jaWF0ZUFwcEJsb2NrQnVpbGRlckFwcEJsb2NrKClcbiAgICogLSAudG9EaXNhc3NvY2lhdGVBcHBsaWNhdGlvbkZsZWV0KClcbiAgICogLSAudG9EaXNhc3NvY2lhdGVGbGVldCgpXG4gICAqIC0gLnRvU3RhcnRBcHBCbG9ja0J1aWxkZXIoKVxuICAgKiAtIC50b1N0YXJ0RmxlZXQoKVxuICAgKiAtIC50b1N0YXJ0SW1hZ2VCdWlsZGVyKClcbiAgICogLSAudG9TdG9wQXBwQmxvY2tCdWlsZGVyKClcbiAgICogLSAudG9TdG9wRmxlZXQoKVxuICAgKiAtIC50b1N0b3BJbWFnZUJ1aWxkZXIoKVxuICAgKiAtIC50b1RhZ1Jlc291cmNlKClcbiAgICogLSAudG9VcGRhdGVBcHBCbG9ja0J1aWxkZXIoKVxuICAgKiAtIC50b1VwZGF0ZUFwcGxpY2F0aW9uKClcbiAgICogLSAudG9VcGRhdGVGbGVldCgpXG4gICAqIC0gLnRvVXBkYXRlSW1hZ2VQZXJtaXNzaW9ucygpXG4gICAqIC0gLnRvVXBkYXRlU3RhY2soKVxuICAgKlxuICAgKiBBcHBsaWVzIHRvIHJlc291cmNlIHR5cGVzOlxuICAgKiAtIGZsZWV0XG4gICAqIC0gaW1hZ2VcbiAgICogLSBpbWFnZS1idWlsZGVyXG4gICAqIC0gc3RhY2tcbiAgICogLSBhcHAtYmxvY2tcbiAgICogLSBhcHBsaWNhdGlvblxuICAgKiAtIGFwcC1ibG9jay1idWlsZGVyXG4gICAqXG4gICAqIEBwYXJhbSB0YWdLZXkgVGhlIHRhZyBrZXkgdG8gY2hlY2tcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZShzKSB0byBjaGVja1xuICAgKiBAcGFyYW0gb3BlcmF0b3IgV29ya3Mgd2l0aCBbc3RyaW5nIG9wZXJhdG9yc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19jb25kaXRpb25fb3BlcmF0b3JzLmh0bWwjQ29uZGl0aW9uc19TdHJpbmcpLiAqKkRlZmF1bHQ6KiogYFN0cmluZ0xpa2VgXG4gICAqL1xuICBwdWJsaWMgaWZBd3NSZXNvdXJjZVRhZyh0YWdLZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBvcGVyYXRvcj86IE9wZXJhdG9yIHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaWYoYGF3czpSZXNvdXJjZVRhZy8keyB0YWdLZXkgfWAsIHZhbHVlLCBvcGVyYXRvciA/PyAnU3RyaW5nTGlrZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgYWNjZXNzIGJ5IHRoZSBwcmVzZW5jZSBvZiB0YWcga2V5cyBpbiB0aGUgcmVxdWVzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2NvbmRpdGlvbi1rZXlzLmh0bWwjY29uZGl0aW9uLWtleXMtdGFna2V5c1xuICAgKlxuICAgKiBBcHBsaWVzIHRvIGFjdGlvbnM6XG4gICAqIC0gLnRvQ3JlYXRlQXBwQmxvY2soKVxuICAgKiAtIC50b0NyZWF0ZUFwcEJsb2NrQnVpbGRlcigpXG4gICAqIC0gLnRvQ3JlYXRlQXBwbGljYXRpb24oKVxuICAgKiAtIC50b0NyZWF0ZUZsZWV0KClcbiAgICogLSAudG9DcmVhdGVJbWFnZUJ1aWxkZXIoKVxuICAgKiAtIC50b0NyZWF0ZVN0YWNrKClcbiAgICogLSAudG9DcmVhdGVVcGRhdGVkSW1hZ2UoKVxuICAgKiAtIC50b1RhZ1Jlc291cmNlKClcbiAgICogLSAudG9VbnRhZ1Jlc291cmNlKClcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZShzKSB0byBjaGVja1xuICAgKiBAcGFyYW0gb3BlcmF0b3IgV29ya3Mgd2l0aCBbc3RyaW5nIG9wZXJhdG9yc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19jb25kaXRpb25fb3BlcmF0b3JzLmh0bWwjQ29uZGl0aW9uc19TdHJpbmcpLiAqKkRlZmF1bHQ6KiogYFN0cmluZ0xpa2VgXG4gICAqL1xuICBwdWJsaWMgaWZBd3NUYWdLZXlzKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3BlcmF0b3I/OiBPcGVyYXRvciB8IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmlmKGBhd3M6VGFnS2V5c2AsIHZhbHVlLCBvcGVyYXRvciA/PyAnU3RyaW5nTGlrZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbYXBwc3RyZWFtXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hbWF6b25hcHBzdHJlYW0yLjAuaHRtbCkuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxufVxuIl19
|
|
1395
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwc3RyZWFtMi0wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwc3RyZWFtMi0wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUF5RDtBQUd6RDs7OztHQUlHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsd0JBQWU7SUFHNUM7Ozs7Ozs7OztPQVNHO0lBQ0ksa0NBQWtDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSwyQkFBMkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG1DQUFtQztRQUN4QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxpQ0FBaUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksNEJBQTRCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxnQkFBZ0I7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Q2IscUJBQXFCO2dCQUNyQiwrQkFBK0I7Z0JBQy9CLFlBQVk7Z0JBQ1osYUFBYTtnQkFDYixxQ0FBcUM7Z0JBQ3JDLDhCQUE4QjtnQkFDOUIsd0NBQXdDO2dCQUN4QyxtQkFBbUI7Z0JBQ25CLHNDQUFzQztnQkFDdEMsWUFBWTtnQkFDWixlQUFlO2dCQUNmLHNCQUFzQjtnQkFDdEIsWUFBWTtnQkFDWixtQkFBbUI7Z0JBQ25CLHVDQUF1QztnQkFDdkMscUJBQXFCO2dCQUNyQixXQUFXO2dCQUNYLGtCQUFrQjtnQkFDbEIsUUFBUTtnQkFDUix1QkFBdUI7Z0JBQ3ZCLG1CQUFtQjtnQkFDbkIsdUJBQXVCO2dCQUN2QixtQkFBbUI7Z0JBQ25CLGFBQWE7Z0JBQ2Isd0JBQXdCO2dCQUN4QixhQUFhO2dCQUNiLHFCQUFxQjthQUN0QjtZQUNELElBQUksRUFBRTtnQkFDSiw2Q0FBNkM7Z0JBQzdDLDBCQUEwQjtnQkFDMUIsbUJBQW1CO2dCQUNuQix5QkFBeUI7Z0JBQ3pCLHNDQUFzQztnQkFDdEMsc0JBQXNCO2dCQUN0QiwwQkFBMEI7Z0JBQzFCLHNCQUFzQjtnQkFDdEIsZ0JBQWdCO2dCQUNoQix1QkFBdUI7Z0JBQ3ZCLGdCQUFnQjtnQkFDaEIsa0JBQWtCO2dCQUNsQiw4QkFBOEI7Z0JBQzlCLGdCQUFnQjtnQkFDaEIsa0NBQWtDO2dCQUNsQywrQkFBK0I7Z0JBQy9CLGVBQWU7Z0JBQ2YsMEJBQTBCO2dCQUMxQixzQkFBc0I7YUFDdkI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osMEJBQTBCO2dCQUMxQix1QkFBdUI7Z0JBQ3ZCLG9CQUFvQjtnQkFDcEIsc0JBQXNCO2dCQUN0QixzQkFBc0I7Z0JBQ3RCLHFCQUFxQjthQUN0QjtZQUNELE9BQU8sRUFBRTtnQkFDUCxhQUFhO2dCQUNiLGVBQWU7YUFDaEI7U0FDRixDQUFDO0lBNlBGLENBQUM7Q0FDRjtBQTc4Q0QsOEJBNjhDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY2Vzc0xldmVsTGlzdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9hY2Nlc3MtbGV2ZWwnO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBPcGVyYXRvciB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBhd3NfaWFtIGFzIGlhbSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG4vKipcbiAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbYXBwc3RyZWFtXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hbWF6b25hcHBzdHJlYW0yLjAuaHRtbCkuXG4gKlxuICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBzdHJlYW0gZXh0ZW5kcyBQb2xpY3lTdGF0ZW1lbnQge1xuICBwdWJsaWMgc2VydmljZVByZWZpeCA9ICdhcHBzdHJlYW0nO1xuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBhc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBhcHAgYmxvY2sgYnVpbGRlciB3aXRoIHRoZSBhcHAgYmxvY2tcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQXNzb2NpYXRlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2suaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQXNzb2NpYXRlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Fzc29jaWF0ZUFwcEJsb2NrQnVpbGRlckFwcEJsb2NrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYXNzb2NpYXRlIHRoZSBzcGVjaWZpZWQgYXBwbGljYXRpb24gd2l0aCB0aGUgZmxlZXRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQXNzb2NpYXRlQXBwbGljYXRpb25GbGVldC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9Bc3NvY2lhdGVBcHBsaWNhdGlvbkZsZWV0KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdBc3NvY2lhdGVBcHBsaWNhdGlvbkZsZWV0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYXNzb2NpYXRlIHRoZSBzcGVjaWZpZWQgYXBwbGljYXRpb24gdG8gdGhlIHNwZWNpZmllZCBlbnRpdGxlbWVudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Fzc29jaWF0ZUFwcGxpY2F0aW9uVG9FbnRpdGxlbWVudC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9Bc3NvY2lhdGVBcHBsaWNhdGlvblRvRW50aXRsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Fzc29jaWF0ZUFwcGxpY2F0aW9uVG9FbnRpdGxlbWVudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGFzc29jaWF0ZSB0aGUgc3BlY2lmaWVkIGZsZWV0IHdpdGggdGhlIHNwZWNpZmllZCBzdGFja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9Bc3NvY2lhdGVGbGVldC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9Bc3NvY2lhdGVGbGVldCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQXNzb2NpYXRlRmxlZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBhc3NvY2lhdGUgbGljZW5zZSBpbmNsdWRlZCBhcHBsaWNhdGlvbihzKSB3aXRoIGFuIGV4aXN0aW5nIGltYWdlIGJ1aWxkZXIgaW5zdGFuY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQXNzb2NpYXRlU29mdHdhcmVUb0ltYWdlQnVpbGRlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9Bc3NvY2lhdGVTb2Z0d2FyZVRvSW1hZ2VCdWlsZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdBc3NvY2lhdGVTb2Z0d2FyZVRvSW1hZ2VCdWlsZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYXNzb2NpYXRlIHRoZSBzcGVjaWZpZWQgdXNlcnMgd2l0aCB0aGUgc3BlY2lmaWVkIHN0YWNrcy4gVXNlcnMgaW4gYSB1c2VyIHBvb2wgY2Fubm90IGJlIGFzc2lnbmVkIHRvIHN0YWNrcyB3aXRoIGZsZWV0cyB0aGF0IGFyZSBqb2luZWQgdG8gYW4gQWN0aXZlIERpcmVjdG9yeSBkb21haW5cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQmF0Y2hBc3NvY2lhdGVVc2VyU3RhY2suaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQmF0Y2hBc3NvY2lhdGVVc2VyU3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0JhdGNoQXNzb2NpYXRlVXNlclN0YWNrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGlzYXNzb2NpYXRlIHRoZSBzcGVjaWZpZWQgdXNlcnMgZnJvbSB0aGUgc3BlY2lmaWVkIHN0YWNrc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9CYXRjaERpc2Fzc29jaWF0ZVVzZXJTdGFjay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9CYXRjaERpc2Fzc29jaWF0ZVVzZXJTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQmF0Y2hEaXNhc3NvY2lhdGVVc2VyU3RhY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjb3B5IHRoZSBzcGVjaWZpZWQgaW1hZ2Ugd2l0aGluIHRoZSBzYW1lIFJlZ2lvbiBvciB0byBhIG5ldyBSZWdpb24gd2l0aGluIHRoZSBzYW1lIEFXUyBhY2NvdW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NvcHlJbWFnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9Db3B5SW1hZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NvcHlJbWFnZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBhcHAgYmxvY2suIEFwcCBibG9ja3Mgc3RvcmUgZGV0YWlscyBhYm91dCB0aGUgdmlydHVhbCBoYXJkIGRpc2sgdGhhdCBjb250YWlucyB0aGUgZmlsZXMgZm9yIHRoZSBhcHBsaWNhdGlvbiBpbiBhbiBTMyBidWNrZXQuIEl0IGFsc28gc3RvcmVzIHRoZSBzZXR1cCBzY3JpcHQgd2l0aCBkZXRhaWxzIGFib3V0IGhvdyB0byBtb3VudCB0aGUgdmlydHVhbCBoYXJkIGRpc2suIEFwcCBibG9ja3MgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBFbGFzdGljIGZsZWV0c1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVBcHBCbG9jay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVBcHBCbG9jaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlQXBwQmxvY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gYXBwIGJsb2NrIGJ1aWxkZXIuIEFuIGFwcCBibG9jayBidWlsZGVyIGlzIGEgdmlydHVhbCBtYWNoaW5lIHRoYXQgaXMgdXNlZCB0byBjcmVhdGUgYW4gYXBwIGJsb2NrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlQXBwQmxvY2tCdWlsZGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUFwcEJsb2NrQnVpbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlQXBwQmxvY2tCdWlsZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgVVJMIHRvIHN0YXJ0IGFuIGFwcCBibG9jayBidWlsZGVyIHN0cmVhbWluZyBzZXNzaW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUFwcEJsb2NrQnVpbGRlclN0cmVhbWluZ1VSTC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVBcHBCbG9ja0J1aWxkZXJTdHJlYW1pbmdVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUFwcEJsb2NrQnVpbGRlclN0cmVhbWluZ1VSTCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBhcHBsaWNhdGlvbiB3aXRoaW4gY3VzdG9tZXIgYWNjb3VudC4gQXBwbGljYXRpb25zIHN0b3JlIHRoZSBkZXRhaWxzIGFib3V0IGhvdyB0byBsYXVuY2ggYXBwbGljYXRpb25zIG9uIHN0cmVhbWluZyBpbnN0YW5jZXMuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEVsYXN0aWMgZmxlZXRzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUFwcGxpY2F0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUFwcGxpY2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVBcHBsaWNhdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIERpcmVjdG9yeSBDb25maWcgb2JqZWN0IGluIEFwcFN0cmVhbSAyLjAuIFRoaXMgb2JqZWN0IGluY2x1ZGVzIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGpvaW4gZmxlZXRzIGFuZCBpbWFnZSBidWlsZGVycyB0byBNaWNyb3NvZnQgQWN0aXZlIERpcmVjdG9yeSBkb21haW5zXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlRGlyZWN0b3J5Q29uZmlnLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZURpcmVjdG9yeUNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlRGlyZWN0b3J5Q29uZmlnJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGFuIGVudGl0bGVtZW50IHRvIGNvbnRyb2wgYWNjZXNzIHRvIGFwcGxpY2F0aW9ucyBiYXNlZCBvbiB1c2VyIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVFbnRpdGxlbWVudC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVFbnRpdGxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlRW50aXRsZW1lbnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gZXhwb3J0IHRhc2sgZm9yIGFuIEFwcFN0cmVhbSAyLjAgaW1hZ2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlRXhwb3J0SW1hZ2VUYXNrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUV4cG9ydEltYWdlVGFzaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlRXhwb3J0SW1hZ2VUYXNrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgZmxlZXQuIEEgZmxlZXQgaXMgYSBncm91cCBvZiBzdHJlYW1pbmcgaW5zdGFuY2VzIGZyb20gd2hpY2ggYXBwbGljYXRpb25zIGFyZSBsYXVuY2hlZCBhbmQgc3RyZWFtZWQgdG8gdXNlcnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVGbGVldC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVGbGVldCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlRmxlZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gaW1hZ2UgYnVpbGRlci4gQW4gaW1hZ2UgYnVpbGRlciBpcyBhIHZpcnR1YWwgbWFjaGluZSB0aGF0IGlzIHVzZWQgdG8gY3JlYXRlIGFuIGltYWdlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlSW1hZ2VCdWlsZGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUltYWdlQnVpbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlSW1hZ2VCdWlsZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgVVJMIHRvIHN0YXJ0IGFuIGltYWdlIGJ1aWxkZXIgc3RyZWFtaW5nIHNlc3Npb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlSW1hZ2VCdWlsZGVyU3RyZWFtaW5nVVJMLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUltYWdlQnVpbGRlclN0cmVhbWluZ1VSTCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlSW1hZ2VCdWlsZGVyU3RyZWFtaW5nVVJMJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGFuIEFwcFN0cmVhbSAyLjAgaW1hZ2UgZnJvbSBhbiBpbXBvcnRlZCBBTUlcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVJbXBvcnRlZEltYWdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUltcG9ydGVkSW1hZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUltcG9ydGVkSW1hZ2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBzdGFjayB0byBzdGFydCBzdHJlYW1pbmcgYXBwbGljYXRpb25zIHRvIHVzZXJzLiBBIHN0YWNrIGNvbnNpc3RzIG9mIGFuIGFzc29jaWF0ZWQgZmxlZXQsIHVzZXIgYWNjZXNzIHBvbGljaWVzLCBhbmQgc3RvcmFnZSBjb25maWd1cmF0aW9uc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZVN0YWNrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVN0YWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVTdGFjaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBVUkwgdG8gc3RhcnQgYW4gQXBwU3RyZWFtIDIuMCBzdHJlYW1pbmcgc2Vzc2lvbiBmb3IgdGhlIHNwZWNpZmllZCB1c2VyLiBBIHN0cmVhbWluZyBVUkwgZW5hYmxlcyBhcHBsaWNhdGlvbiBzdHJlYW1pbmcgdG8gYmUgdGVzdGVkIHdpdGhvdXQgdXNlciBzZXR1cFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVTdHJlYW1pbmdVUkwuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlU3RyZWFtaW5nVVJMKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVTdHJlYW1pbmdVUkwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBjdXN0b20gYnJhbmRpbmcgdGhlbWUsIHdoaWNoIG1pZ2h0IGluY2x1ZGVzIGEgY3VzdG9tIGxvZ28sIHdlYnNpdGUgbGlua3MsIGFuZCBvdGhlciBicmFuZGluZyB0byBkaXNwbGF5IHRvIHlvdXIgdXNlcnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVUaGVtZUZvclN0YWNrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVRoZW1lRm9yU3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZVRoZW1lRm9yU3RhY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB1cGRhdGUgYW4gZXhpc3RpbmcgaW1hZ2Ugd2l0aGluIGN1c3RvbWVyIGFjY291bnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlVXBkYXRlZEltYWdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVVwZGF0ZWRJbWFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlVXBkYXRlZEltYWdlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgdXNhZ2UgcmVwb3J0IHN1YnNjcmlwdGlvbi4gVXNhZ2UgcmVwb3J0cyBhcmUgZ2VuZXJhdGVkIGRhaWx5XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZVVzYWdlUmVwb3J0U3Vic2NyaXB0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgbmV3IHVzZXIgaW4gdGhlIHVzZXIgcG9vbFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZVVzZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlVXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlVXNlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgc3BlY2lmaWVkIGFwcCBibG9ja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVBcHBCbG9jay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVBcHBCbG9jaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlQXBwQmxvY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIHNwZWNpZmllZCBhcHAgYmxvY2sgYnVpbGRlciBhbmQgcmVsZWFzZSBjYXBhY2l0eVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVBcHBCbG9ja0J1aWxkZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlQXBwQmxvY2tCdWlsZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVBcHBCbG9ja0J1aWxkZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVBcHBsaWNhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVBcHBsaWNhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlQXBwbGljYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIHNwZWNpZmllZCBEaXJlY3RvcnkgQ29uZmlnIG9iamVjdCBmcm9tIEFwcFN0cmVhbSAyLjAuIFRoaXMgb2JqZWN0IGluY2x1ZGVzIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGpvaW4gZmxlZXRzIGFuZCBpbWFnZSBidWlsZGVycyB0byBNaWNyb3NvZnQgQWN0aXZlIERpcmVjdG9yeSBkb21haW5zXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlRGlyZWN0b3J5Q29uZmlnLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZURpcmVjdG9yeUNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlRGlyZWN0b3J5Q29uZmlnJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzcGVjaWZpZWQgZW50aXRsZW1lbnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVFbnRpdGxlbWVudC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVFbnRpdGxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlRW50aXRsZW1lbnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIHNwZWNpZmllZCBmbGVldFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVGbGVldC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVGbGVldCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlRmxlZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIHNwZWNpZmllZCBpbWFnZS4gQW4gaW1hZ2UgY2Fubm90IGJlIGRlbGV0ZWQgd2hlbiBpdCBpcyBpbiB1c2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlSW1hZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlSW1hZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUltYWdlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzcGVjaWZpZWQgaW1hZ2UgYnVpbGRlciBhbmQgcmVsZWFzZSBjYXBhY2l0eVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVJbWFnZUJ1aWxkZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlSW1hZ2VCdWlsZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVJbWFnZUJ1aWxkZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgcGVybWlzc2lvbnMgZm9yIHRoZSBzcGVjaWZpZWQgcHJpdmF0ZSBpbWFnZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVJbWFnZVBlcm1pc3Npb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZUltYWdlUGVybWlzc2lvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUltYWdlUGVybWlzc2lvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIHNwZWNpZmllZCBzdGFjay4gQWZ0ZXIgdGhlIHN0YWNrIGlzIGRlbGV0ZWQsIHRoZSBhcHBsaWNhdGlvbiBzdHJlYW1pbmcgZW52aXJvbm1lbnQgcHJvdmlkZWQgYnkgdGhlIHN0YWNrIGlzIG5vIGxvbmdlciBhdmFpbGFibGUgdG8gdXNlcnMuIEFsc28sIGFueSByZXNlcnZhdGlvbnMgbWFkZSBmb3IgYXBwbGljYXRpb24gc3RyZWFtaW5nIHNlc3Npb25zIGZvciB0aGUgc3RhY2sgYXJlIHJlbGVhc2VkXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZVN0YWNrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZVN0YWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVTdGFjaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBhIGN1c3RvbSBicmFuZGluZyB0aGVtZSwgd2hpY2ggbWlnaHQgaW5jbHVkZXMgYSBjdXN0b20gbG9nbywgd2Vic2l0ZSBsaW5rcywgYW5kIG90aGVyIGJyYW5kaW5nIHRvIGRpc3BsYXkgdG8geW91ciB1c2Vyc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZVRoZW1lRm9yU3RhY2suaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlVGhlbWVGb3JTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlVGhlbWVGb3JTdGFjaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRpc2FibGUgdXNhZ2UgcmVwb3J0IGdlbmVyYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVVc2FnZVJlcG9ydFN1YnNjcmlwdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVVc2FnZVJlcG9ydFN1YnNjcmlwdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgYSB1c2VyIGZyb20gdGhlIHVzZXIgcG9vbFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZVVzZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlVXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlVXNlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIHRoZSBhc3NvY2lhdGlvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXBwIGJsb2NrIGJ1aWxkZXIgb3IgYXBwIGJsb2NrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUFwcEJsb2NrQnVpbGRlckFwcEJsb2NrQXNzb2NpYXRpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2tBc3NvY2lhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2tBc3NvY2lhdGlvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb25lIG9yIG1vcmUgc3BlY2lmaWVkIGFwcCBibG9jayBidWlsZGVycywgaWYgdGhlIGFwcCBibG9jayBidWlsZGVyIG5hbWVzIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhbGwgYXBwIGJsb2NrIGJ1aWxkZXJzIGluIHRoZSBhY2NvdW50IGFyZSBkZXNjcmliZWRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlQXBwQmxvY2tCdWlsZGVycy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUFwcEJsb2NrQnVpbGRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlQXBwQmxvY2tCdWlsZGVycycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGEgbGlzdCB0aGF0IGRlc2NyaWJlcyBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgYXBwIGJsb2NrcywgaWYgdGhlIGFwcCBibG9jayBhcm5zIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhbGwgYXBwIGJsb2NrcyBpbiB0aGUgYWNjb3VudCBhcmUgZGVzY3JpYmVkXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUFwcEJsb2Nrcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUFwcEJsb2NrcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVBcHBCbG9ja3MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBsaWNlbnNlIGluY2x1ZGVkIGFwcGxpY2F0aW9uIHVzYWdlIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUFwcExpY2Vuc2VVc2FnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUFwcExpY2Vuc2VVc2FnZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVBcHBMaWNlbnNlVXNhZ2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSB0aGUgYXNzb2NpYXRpb25zIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFwcGxpY2F0aW9uIG9yIGZsZWV0XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUFwcGxpY2F0aW9uRmxlZXRBc3NvY2lhdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVBcHBsaWNhdGlvbkZsZWV0QXNzb2NpYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUFwcGxpY2F0aW9uRmxlZXRBc3NvY2lhdGlvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb25lIG9yIG1vcmUgc3BlY2lmaWVkIGFwcGxpY2F0aW9ucywgaWYgdGhlIGFwcGxpY2F0aW9uIGFybnMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGFsbCBhcHBsaWNhdGlvbnMgaW4gdGhlIGFjY291bnQgYXJlIGRlc2NyaWJlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVBcHBsaWNhdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVBcHBsaWNhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlQXBwbGljYXRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IHRoYXQgZGVzY3JpYmVzIG9uZSBvciBtb3JlIHNwZWNpZmllZCBEaXJlY3RvcnkgQ29uZmlnIG9iamVjdHMgZm9yIEFwcFN0cmVhbSAyLjAsIGlmIHRoZSBuYW1lcyBmb3IgdGhlc2Ugb2JqZWN0cyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYWxsIERpcmVjdG9yeSBDb25maWcgb2JqZWN0cyBpbiB0aGUgYWNjb3VudCBhcmUgZGVzY3JpYmVkLiBUaGlzIG9iamVjdCBpbmNsdWRlcyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBqb2luIGZsZWV0cyBhbmQgaW1hZ2UgYnVpbGRlcnMgdG8gTWljcm9zb2Z0IEFjdGl2ZSBEaXJlY3RvcnkgZG9tYWluc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVEaXJlY3RvcnlDb25maWdzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlRGlyZWN0b3J5Q29uZmlncygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVEaXJlY3RvcnlDb25maWdzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgb25lIG9yIGFsbCBlbnRpdGxlbWVudHMgZm9yIHRoZSBzcGVjaWZpZWQgc3RhY2tcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlRW50aXRsZW1lbnRzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlRW50aXRsZW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUVudGl0bGVtZW50cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGEgbGlzdCB0aGF0IGRlc2NyaWJlcyBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgZmxlZXRzLCBpZiB0aGUgZmxlZXQgbmFtZXMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGFsbCBmbGVldHMgaW4gdGhlIGFjY291bnQgYXJlIGRlc2NyaWJlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVGbGVldHMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVGbGVldHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlRmxlZXRzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IHRoYXQgZGVzY3JpYmVzIG9uZSBvciBtb3JlIHNwZWNpZmllZCBpbWFnZSBidWlsZGVycywgaWYgdGhlIGltYWdlIGJ1aWxkZXIgbmFtZXMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGFsbCBpbWFnZSBidWlsZGVycyBpbiB0aGUgYWNjb3VudCBhcmUgZGVzY3JpYmVkXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUltYWdlQnVpbGRlcnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVJbWFnZUJ1aWxkZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUltYWdlQnVpbGRlcnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgdGhlIHBlcm1pc3Npb25zIGZvciBzaGFyZWQgQVdTIGFjY291bnQgSURzIG9uIGEgcHJpdmF0ZSBpbWFnZSB0aGF0IHlvdSBvd25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlSW1hZ2VQZXJtaXNzaW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUltYWdlUGVybWlzc2lvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlSW1hZ2VQZXJtaXNzaW9ucycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGEgbGlzdCB0aGF0IGRlc2NyaWJlcyBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgaW1hZ2VzLCBpZiB0aGUgaW1hZ2UgbmFtZXMgb3IgaW1hZ2UgQVJOcyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYWxsIGltYWdlcyBpbiB0aGUgYWNjb3VudCBhcmUgZGVzY3JpYmVkXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUltYWdlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUltYWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVJbWFnZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgdGhlIHN0cmVhbWluZyBzZXNzaW9ucyBmb3IgdGhlIHNwZWNpZmllZCBzdGFjayBhbmQgZmxlZXQuIElmIGEgdXNlciBJRCBpcyBwcm92aWRlZCBmb3IgdGhlIHN0YWNrIGFuZCBmbGVldCwgb25seSB0aGUgc3RyZWFtaW5nIHNlc3Npb25zIGZvciB0aGF0IHVzZXIgYXJlIGRlc2NyaWJlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVTZXNzaW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZVNlc3Npb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZVNlc3Npb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgbGljZW5zZSBpbmNsdWRlZCBhcHBsaWNhdGlvbiBhc3NvY2lhdGlvbnMgZm9yIGEgc3BlY2lmaWVkIHJlc291cmNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZVNvZnR3YXJlQXNzb2NpYXRpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlU29mdHdhcmVBc3NvY2lhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlU29mdHdhcmVBc3NvY2lhdGlvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb25lIG9yIG1vcmUgc3BlY2lmaWVkIHN0YWNrcywgaWYgdGhlIHN0YWNrIG5hbWVzIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhbGwgc3RhY2tzIGluIHRoZSBhY2NvdW50IGFyZSBkZXNjcmliZWRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlU3RhY2tzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlU3RhY2tzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZVN0YWNrcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCB0aGUgY3VzdG9tIGJyYW5kaW5nIHRoZW1lIGluZm9ybWF0aW9uLCB3aGljaCBtaWdodCBpbmNsdWRlcyBhIGN1c3RvbSBsb2dvLCB3ZWJzaXRlIGxpbmtzLCBhbmQgb3RoZXIgYnJhbmRpbmcgdG8gZGlzcGxheSB0byB5b3VyIHVzZXJzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZVRoZW1lRm9yU3RhY2suaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVUaGVtZUZvclN0YWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZVRoZW1lRm9yU3RhY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb25lIG9yIG1vcmUgdXNhZ2UgcmVwb3J0IHN1YnNjcmlwdGlvbnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZVVzYWdlUmVwb3J0U3Vic2NyaXB0aW9ucycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGEgbGlzdCB0aGF0IGRlc2NyaWJlcyB0aGUgVXNlclN0YWNrQXNzb2NpYXRpb24gb2JqZWN0c1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVVc2VyU3RhY2tBc3NvY2lhdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVVc2VyU3RhY2tBc3NvY2lhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlVXNlclN0YWNrQXNzb2NpYXRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IHRoYXQgZGVzY3JpYmVzIHVzZXJzIGluIHRoZSB1c2VyIHBvb2xcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlVXNlcnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVVc2VycygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVVc2VycycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRpc2FibGUgdGhlIHNwZWNpZmllZCB1c2VyIGluIHRoZSB1c2VyIHBvb2wuIFRoaXMgYWN0aW9uIGRvZXMgbm90IGRlbGV0ZSB0aGUgdXNlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rpc2FibGVVc2VyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rpc2FibGVVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEaXNhYmxlVXNlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRpc2Fzc29jaWF0ZSB0aGUgc3BlY2lmaWVkIGFwcCBibG9jayBidWlsZGVyIHdpdGggdGhlIGFwcCBibG9ja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EaXNhc3NvY2lhdGVBcHBCbG9ja0J1aWxkZXJBcHBCbG9jay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EaXNhc3NvY2lhdGVBcHBCbG9ja0J1aWxkZXJBcHBCbG9jaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGlzYXNzb2NpYXRlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkaXNhc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvbiBmcm9tIHRoZSBzcGVjaWZpZWQgZmxlZXRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGlzYXNzb2NpYXRlQXBwbGljYXRpb25GbGVldC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EaXNhc3NvY2lhdGVBcHBsaWNhdGlvbkZsZWV0KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEaXNhc3NvY2lhdGVBcHBsaWNhdGlvbkZsZWV0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGlzYXNzb2NpYXRlIHRoZSBzcGVjaWZpZWQgYXBwbGljYXRpb24gZnJvbSB0aGUgc3BlY2lmaWVkIGVudGl0bGVtZW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGlzYXNzb2NpYXRlQXBwbGljYXRpb25Gcm9tRW50aXRsZW1lbnQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGlzYXNzb2NpYXRlQXBwbGljYXRpb25Gcm9tRW50aXRsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rpc2Fzc29jaWF0ZUFwcGxpY2F0aW9uRnJvbUVudGl0bGVtZW50Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGlzYXNzb2NpYXRlIHRoZSBzcGVjaWZpZWQgZmxlZXQgZnJvbSB0aGUgc3BlY2lmaWVkIHN0YWNrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rpc2Fzc29jaWF0ZUZsZWV0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rpc2Fzc29jaWF0ZUZsZWV0KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEaXNhc3NvY2lhdGVGbGVldCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJlbW92ZSBsaWNlbnNlIGluY2x1ZGVkIGFwcGxpY2F0aW9uKHMpIGFzc29jaWF0aW9uKHMpIGZyb20gYW4gaW1hZ2UgYnVpbGRlciBpbnN0YW5jZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EaXNhc3NvY2lhdGVTb2Z0d2FyZUZyb21JbWFnZUJ1aWxkZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGlzYXNzb2NpYXRlU29mdHdhcmVGcm9tSW1hZ2VCdWlsZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEaXNhc3NvY2lhdGVTb2Z0d2FyZUZyb21JbWFnZUJ1aWxkZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBlbmFibGUgYSB1c2VyIGluIHRoZSB1c2VyIHBvb2xcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9FbmFibGVVc2VyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0VuYWJsZVVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0VuYWJsZVVzZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBpbW1lZGlhdGVseSBzdG9wIHRoZSBzcGVjaWZpZWQgc3RyZWFtaW5nIHNlc3Npb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9FeHBpcmVTZXNzaW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0V4cGlyZVNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0V4cGlyZVNlc3Npb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBkZXRhaWxzIG9mIGEgc3BlY2lmaWMgZXhwb3J0IGltYWdlIHRhc2tcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldEV4cG9ydEltYWdlVGFzay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRFeHBvcnRJbWFnZVRhc2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldEV4cG9ydEltYWdlVGFzaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBmbGVldCB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHN0YWNrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0QXNzb2NpYXRlZEZsZWV0cy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0QXNzb2NpYXRlZEZsZWV0cygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEFzc29jaWF0ZWRGbGVldHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgc3RhY2sgd2l0aCB3aGljaCB0aGUgc3BlY2lmaWVkIGZsZWV0IGlzIGFzc29jaWF0ZWRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3RBc3NvY2lhdGVkU3RhY2tzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RBc3NvY2lhdGVkU3RhY2tzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0QXNzb2NpYXRlZFN0YWNrcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIHRoZSBhcHBsaWNhdGlvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgZW50aXRsZW1lbnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3RFbnRpdGxlZEFwcGxpY2F0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0RW50aXRsZWRBcHBsaWNhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RFbnRpdGxlZEFwcGxpY2F0aW9ucycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGxpc3QgZXhwb3J0IGltYWdlIHRhc2tzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0RXhwb3J0SW1hZ2VUYXNrcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0RXhwb3J0SW1hZ2VUYXNrcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEV4cG9ydEltYWdlVGFza3MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBhIGxpc3Qgb2YgYWxsIHRhZ3MgZm9yIHRoZSBzcGVjaWZpZWQgQXBwU3RyZWFtIDIuMCByZXNvdXJjZS4gVGhlIGZvbGxvd2luZyByZXNvdXJjZXMgY2FuIGJlIHRhZ2dlZDogSW1hZ2UgYnVpbGRlcnMsIGltYWdlcywgZmxlZXRzLCBhbmQgc3RhY2tzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0VGFnc0ZvclJlc291cmNlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RUYWdzRm9yUmVzb3VyY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RUYWdzRm9yUmVzb3VyY2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzdGFydCB0aGUgc3BlY2lmaWVkIGFwcCBibG9jayBidWlsZGVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1N0YXJ0QXBwQmxvY2tCdWlsZGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1N0YXJ0QXBwQmxvY2tCdWlsZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTdGFydEFwcEJsb2NrQnVpbGRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHN0YXJ0IHRoZSBzcGVjaWZpZWQgZmxlZXRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfU3RhcnRGbGVldC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TdGFydEZsZWV0KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTdGFydEZsZWV0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3RhcnQgdGhlIHNwZWNpZmllZCBpbWFnZSBidWlsZGVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1N0YXJ0SW1hZ2VCdWlsZGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1N0YXJ0SW1hZ2VCdWlsZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTdGFydEltYWdlQnVpbGRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGluaXRpYXRlIGxpY2Vuc2UgaW5jbHVkZWQgYXBwbGljYXRpb25zIGRlcGxveW1lbnQgdG8gYW4gaW1hZ2UgYnVpbGRlciBpbnN0YW5jZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9TdGFydFNvZnR3YXJlRGVwbG95bWVudFRvSW1hZ2VCdWlsZGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1N0YXJ0U29mdHdhcmVEZXBsb3ltZW50VG9JbWFnZUJ1aWxkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1N0YXJ0U29mdHdhcmVEZXBsb3ltZW50VG9JbWFnZUJ1aWxkZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzdG9wIHRoZSBzcGVjaWZpZWQgYXBwIGJsb2NrIGJ1aWxkZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfU3RvcEFwcEJsb2NrQnVpbGRlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TdG9wQXBwQmxvY2tCdWlsZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTdG9wQXBwQmxvY2tCdWlsZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3RvcCB0aGUgc3BlY2lmaWVkIGZsZWV0XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1N0b3BGbGVldC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TdG9wRmxlZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1N0b3BGbGVldCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHN0b3AgdGhlIHNwZWNpZmllZCBpbWFnZSBidWlsZGVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1N0b3BJbWFnZUJ1aWxkZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvU3RvcEltYWdlQnVpbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3RvcEltYWdlQnVpbGRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGZlZGVyYXRlZCB1c2VycyB0byBzaWduIGluIGJ5IHVzaW5nIHRoZWlyIGV4aXN0aW5nIGNyZWRlbnRpYWxzIGFuZCBzdHJlYW0gYXBwbGljYXRpb25zIGZyb20gdGhlIHNwZWNpZmllZCBzdGFja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmVXNlcklkKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2V4dGVybmFsLWlkZW50aXR5LXByb3ZpZGVycy1zZXR0aW5nLXVwLXNhbWwuaHRtbCNleHRlcm5hbC1pZGVudGl0eS1wcm92aWRlcnMtZW1iZWQtaW5saW5lLXBvbGljeS1mb3ItSUFNLXJvbGVcbiAgICovXG4gIHB1YmxpYyB0b1N0cmVhbSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3RyZWFtJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYWRkIG9yIG92ZXJ3cml0ZSBvbmUgb3IgbW9yZSB0YWdzIGZvciB0aGUgc3BlY2lmaWVkIEFwcFN0cmVhbSAyLjAgcmVzb3VyY2UuIFRoZSBmb2xsb3dpbmcgcmVzb3VyY2VzIGNhbiBiZSB0YWdnZWQ6IEltYWdlIGJ1aWxkZXJzLCBpbWFnZXMsIGZsZWV0cywgc3RhY2tzLCBhcHAgYmxvY2tzIGFuZCBhcHBsaWNhdGlvbnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBUYWdnaW5nXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9UYWdSZXNvdXJjZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9UYWdSZXNvdXJjZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVGFnUmVzb3VyY2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkaXNhc3NvY2lhdGUgb25lIG9yIG1vcmUgdGFncyBmcm9tIHRoZSBzcGVjaWZpZWQgQXBwU3RyZWFtIDIuMCByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFRhZ2dpbmdcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVW50YWdSZXNvdXJjZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VbnRhZ1Jlc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVbnRhZ1Jlc291cmNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBkYXRlIGEgc3BlY2lmaWMgYXBwIGJsb2NrIGJ1aWxkZXIuIEFuIGFwcCBibG9jayBidWlsZGVyIGlzIGEgdmlydHVhbCBtYWNoaW5lIHRoYXQgaXMgdXNlZCB0byBjcmVhdGUgYW4gYXBwIGJsb2NrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZUFwcEJsb2NrQnVpbGRlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVBcHBCbG9ja0J1aWxkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZUFwcEJsb2NrQnVpbGRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc3BlY2lmaWVkIGZpZWxkcyBmb3IgdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9VcGRhdGVBcHBsaWNhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVBcHBsaWNhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlQXBwbGljYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhlIHNwZWNpZmllZCBEaXJlY3RvcnkgQ29uZmlnIG9iamVjdCBpbiBBcHBTdHJlYW0gMi4wLiBUaGlzIG9iamVjdCBpbmNsdWRlcyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBqb2luIGZsZWV0cyBhbmQgaW1hZ2UgYnVpbGRlcnMgdG8gTWljcm9zb2Z0IEFjdGl2ZSBEaXJlY3RvcnkgZG9tYWluc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZURpcmVjdG9yeUNvbmZpZy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVEaXJlY3RvcnlDb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZURpcmVjdG9yeUNvbmZpZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc3BlY2lmaWVkIGZpZWxkcyBmb3IgdGhlIHNwZWNpZmllZCBlbnRpdGxlbWVudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZUVudGl0bGVtZW50Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZUVudGl0bGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVcGRhdGVFbnRpdGxlbWVudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc3BlY2lmaWVkIGZsZWV0LiBBbGwgYXR0cmlidXRlcyBleGNlcHQgdGhlIGZsZWV0IG5hbWUgY2FuIGJlIHVwZGF0ZWQgd2hlbiB0aGUgZmxlZXQgaXMgaW4gdGhlIFNUT1BQRUQgc3RhdGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVXBkYXRlRmxlZXQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlRmxlZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZUZsZWV0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYWRkIG9yIHVwZGF0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHNwZWNpZmllZCBwcml2YXRlIGltYWdlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZUltYWdlUGVybWlzc2lvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlSW1hZ2VQZXJtaXNzaW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlSW1hZ2VQZXJtaXNzaW9ucycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc3BlY2lmaWVkIGZpZWxkcyBmb3IgdGhlIHNwZWNpZmllZCBzdGFja1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9VcGRhdGVTdGFjay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlU3RhY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhlIGN1c3RvbSBicmFuZGluZyB0aGVtZSBpbmZvcm1hdGlvbiwgd2hpY2ggbWlnaHQgaW5jbHVkZXMgYSBjdXN0b20gbG9nbywgd2Vic2l0ZSBsaW5rcywgYW5kIG90aGVyIGJyYW5kaW5nIHRvIGRpc3BsYXkgdG8geW91ciB1c2Vyc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZVRoZW1lRm9yU3RhY2suaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlVGhlbWVGb3JTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlVGhlbWVGb3JTdGFjaycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFjY2Vzc0xldmVsTGlzdDogQWNjZXNzTGV2ZWxMaXN0ID0ge1xuICAgIFdyaXRlOiBbXG4gICAgICAnQXNzb2NpYXRlQXBwQmxvY2tCdWlsZGVyQXBwQmxvY2snLFxuICAgICAgJ0Fzc29jaWF0ZUFwcGxpY2F0aW9uRmxlZXQnLFxuICAgICAgJ0Fzc29jaWF0ZUFwcGxpY2F0aW9uVG9FbnRpdGxlbWVudCcsXG4gICAgICAnQXNzb2NpYXRlRmxlZXQnLFxuICAgICAgJ0Fzc29jaWF0ZVNvZnR3YXJlVG9JbWFnZUJ1aWxkZXInLFxuICAgICAgJ0JhdGNoQXNzb2NpYXRlVXNlclN0YWNrJyxcbiAgICAgICdCYXRjaERpc2Fzc29jaWF0ZVVzZXJTdGFjaycsXG4gICAgICAnQ29weUltYWdlJyxcbiAgICAgICdDcmVhdGVBcHBCbG9jaycsXG4gICAgICAnQ3JlYXRlQXBwQmxvY2tCdWlsZGVyJyxcbiAgICAgICdDcmVhdGVBcHBCbG9ja0J1aWxkZXJTdHJlYW1pbmdVUkwnLFxuICAgICAgJ0NyZWF0ZUFwcGxpY2F0aW9uJyxcbiAgICAgICdDcmVhdGVEaXJlY3RvcnlDb25maWcnLFxuICAgICAgJ0NyZWF0ZUVudGl0bGVtZW50JyxcbiAgICAgICdDcmVhdGVFeHBvcnRJbWFnZVRhc2snLFxuICAgICAgJ0NyZWF0ZUZsZWV0JyxcbiAgICAgICdDcmVhdGVJbWFnZUJ1aWxkZXInLFxuICAgICAgJ0NyZWF0ZUltYWdlQnVpbGRlclN0cmVhbWluZ1VSTCcsXG4gICAgICAnQ3JlYXRlSW1wb3J0ZWRJbWFnZScsXG4gICAgICAnQ3JlYXRlU3RhY2snLFxuICAgICAgJ0NyZWF0ZVN0cmVhbWluZ1VSTCcsXG4gICAgICAnQ3JlYXRlVGhlbWVGb3JTdGFjaycsXG4gICAgICAnQ3JlYXRlVXBkYXRlZEltYWdlJyxcbiAgICAgICdDcmVhdGVVc2FnZVJlcG9ydFN1YnNjcmlwdGlvbicsXG4gICAgICAnQ3JlYXRlVXNlcicsXG4gICAgICAnRGVsZXRlQXBwQmxvY2snLFxuICAgICAgJ0RlbGV0ZUFwcEJsb2NrQnVpbGRlcicsXG4gICAgICAnRGVsZXRlQXBwbGljYXRpb24nLFxuICAgICAgJ0RlbGV0ZURpcmVjdG9yeUNvbmZpZycsXG4gICAgICAnRGVsZXRlRW50aXRsZW1lbnQnLFxuICAgICAgJ0RlbGV0ZUZsZWV0JyxcbiAgICAgICdEZWxldGVJbWFnZScsXG4gICAgICAnRGVsZXRlSW1hZ2VCdWlsZGVyJyxcbiAgICAgICdEZWxldGVJbWFnZVBlcm1pc3Npb25zJyxcbiAgICAgICdEZWxldGVTdGFjaycsXG4gICAgICAnRGVsZXRlVGhlbWVGb3JTdGFjaycsXG4gICAgICAnRGVsZXRlVXNhZ2VSZXBvcnRTdWJzY3JpcHRpb24nLFxuICAgICAgJ0RlbGV0ZVVzZXInLFxuICAgICAgJ0Rpc2FibGVVc2VyJyxcbiAgICAgICdEaXNhc3NvY2lhdGVBcHBCbG9ja0J1aWxkZXJBcHBCbG9jaycsXG4gICAgICAnRGlzYXNzb2NpYXRlQXBwbGljYXRpb25GbGVldCcsXG4gICAgICAnRGlzYXNzb2NpYXRlQXBwbGljYXRpb25Gcm9tRW50aXRsZW1lbnQnLFxuICAgICAgJ0Rpc2Fzc29jaWF0ZUZsZWV0JyxcbiAgICAgICdEaXNhc3NvY2lhdGVTb2Z0d2FyZUZyb21JbWFnZUJ1aWxkZXInLFxuICAgICAgJ0VuYWJsZVVzZXInLFxuICAgICAgJ0V4cGlyZVNlc3Npb24nLFxuICAgICAgJ1N0YXJ0QXBwQmxvY2tCdWlsZGVyJyxcbiAgICAgICdTdGFydEZsZWV0JyxcbiAgICAgICdTdGFydEltYWdlQnVpbGRlcicsXG4gICAgICAnU3RhcnRTb2Z0d2FyZURlcGxveW1lbnRUb0ltYWdlQnVpbGRlcicsXG4gICAgICAnU3RvcEFwcEJsb2NrQnVpbGRlcicsXG4gICAgICAnU3RvcEZsZWV0JyxcbiAgICAgICdTdG9wSW1hZ2VCdWlsZGVyJyxcbiAgICAgICdTdHJlYW0nLFxuICAgICAgJ1VwZGF0ZUFwcEJsb2NrQnVpbGRlcicsXG4gICAgICAnVXBkYXRlQXBwbGljYXRpb24nLFxuICAgICAgJ1VwZGF0ZURpcmVjdG9yeUNvbmZpZycsXG4gICAgICAnVXBkYXRlRW50aXRsZW1lbnQnLFxuICAgICAgJ1VwZGF0ZUZsZWV0JyxcbiAgICAgICdVcGRhdGVJbWFnZVBlcm1pc3Npb25zJyxcbiAgICAgICdVcGRhdGVTdGFjaycsXG4gICAgICAnVXBkYXRlVGhlbWVGb3JTdGFjaydcbiAgICBdLFxuICAgIExpc3Q6IFtcbiAgICAgICdEZXNjcmliZUFwcEJsb2NrQnVpbGRlckFwcEJsb2NrQXNzb2NpYXRpb25zJyxcbiAgICAgICdEZXNjcmliZUFwcEJsb2NrQnVpbGRlcnMnLFxuICAgICAgJ0Rlc2NyaWJlQXBwQmxvY2tzJyxcbiAgICAgICdEZXNjcmliZUFwcExpY2Vuc2VVc2FnZScsXG4gICAgICAnRGVzY3JpYmVBcHBsaWNhdGlvbkZsZWV0QXNzb2NpYXRpb25zJyxcbiAgICAgICdEZXNjcmliZUFwcGxpY2F0aW9ucycsXG4gICAgICAnRGVzY3JpYmVEaXJlY3RvcnlDb25maWdzJyxcbiAgICAgICdEZXNjcmliZUVudGl0bGVtZW50cycsXG4gICAgICAnRGVzY3JpYmVGbGVldHMnLFxuICAgICAgJ0Rlc2NyaWJlSW1hZ2VCdWlsZGVycycsXG4gICAgICAnRGVzY3JpYmVJbWFnZXMnLFxuICAgICAgJ0Rlc2NyaWJlU2Vzc2lvbnMnLFxuICAgICAgJ0Rlc2NyaWJlU29mdHdhcmVBc3NvY2lhdGlvbnMnLFxuICAgICAgJ0Rlc2NyaWJlU3RhY2tzJyxcbiAgICAgICdEZXNjcmliZVVzYWdlUmVwb3J0U3Vic2NyaXB0aW9ucycsXG4gICAgICAnRGVzY3JpYmVVc2VyU3RhY2tBc3NvY2lhdGlvbnMnLFxuICAgICAgJ0Rlc2NyaWJlVXNlcnMnLFxuICAgICAgJ0xpc3RFbnRpdGxlZEFwcGxpY2F0aW9ucycsXG4gICAgICAnTGlzdEV4cG9ydEltYWdlVGFza3MnXG4gICAgXSxcbiAgICBSZWFkOiBbXG4gICAgICAnRGVzY3JpYmVJbWFnZVBlcm1pc3Npb25zJyxcbiAgICAgICdEZXNjcmliZVRoZW1lRm9yU3RhY2snLFxuICAgICAgJ0dldEV4cG9ydEltYWdlVGFzaycsXG4gICAgICAnTGlzdEFzc29jaWF0ZWRGbGVldHMnLFxuICAgICAgJ0xpc3RBc3NvY2lhdGVkU3RhY2tzJyxcbiAgICAgICdMaXN0VGFnc0ZvclJlc291cmNlJ1xuICAgIF0sXG4gICAgVGFnZ2luZzogW1xuICAgICAgJ1RhZ1Jlc291cmNlJyxcbiAgICAgICdVbnRhZ1Jlc291cmNlJ1xuICAgIF1cbiAgfTtcblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgZmxlZXQgdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvd2hhdC1pcy1hcHBzdHJlYW0uaHRtbCN3aGF0LWlzLWNvbmNlcHRzXG4gICAqXG4gICAqIEBwYXJhbSBmbGVldE5hbWUgLSBJZGVudGlmaWVyIGZvciB0aGUgZmxlZXROYW1lLlxuICAgKiBAcGFyYW0gYWNjb3VudCAtIEFjY291bnQgb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIGFjY291bnQuXG4gICAqIEBwYXJhbSByZWdpb24gLSBSZWdpb24gb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHJlZ2lvbi5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqL1xuICBwdWJsaWMgb25GbGVldChmbGVldE5hbWU6IHN0cmluZywgYWNjb3VudD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTphcHBzdHJlYW06JHsgcmVnaW9uID8/IHRoaXMuZGVmYXVsdFJlZ2lvbiB9OiR7IGFjY291bnQgPz8gdGhpcy5kZWZhdWx0QWNjb3VudCB9OmZsZWV0LyR7IGZsZWV0TmFtZSB9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgaW1hZ2UgdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvd2hhdC1pcy1hcHBzdHJlYW0uaHRtbCN3aGF0LWlzLWNvbmNlcHRzXG4gICAqXG4gICAqIEBwYXJhbSBpbWFnZU5hbWUgLSBJZGVudGlmaWVyIGZvciB0aGUgaW1hZ2VOYW1lLlxuICAgKiBAcGFyYW0gYWNjb3VudCAtIEFjY291bnQgb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIGFjY291bnQuXG4gICAqIEBwYXJhbSByZWdpb24gLSBSZWdpb24gb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHJlZ2lvbi5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZShpbWFnZU5hbWU6IHN0cmluZywgYWNjb3VudD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTphcHBzdHJlYW06JHsgcmVnaW9uID8/IHRoaXMuZGVmYXVsdFJlZ2lvbiB9OiR7IGFjY291bnQgPz8gdGhpcy5kZWZhdWx0QWNjb3VudCB9OmltYWdlLyR7IGltYWdlTmFtZSB9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgaW1hZ2UtYnVpbGRlciB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS93aGF0LWlzLWFwcHN0cmVhbS5odG1sI3doYXQtaXMtY29uY2VwdHNcbiAgICpcbiAgICogQHBhcmFtIGltYWdlQnVpbGRlck5hbWUgLSBJZGVudGlmaWVyIGZvciB0aGUgaW1hZ2VCdWlsZGVyTmFtZS5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZGVyKGltYWdlQnVpbGRlck5hbWU6IHN0cmluZywgYWNjb3VudD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTphcHBzdHJlYW06JHsgcmVnaW9uID8/IHRoaXMuZGVmYXVsdFJlZ2lvbiB9OiR7IGFjY291bnQgPz8gdGhpcy5kZWZhdWx0QWNjb3VudCB9OmltYWdlLWJ1aWxkZXIvJHsgaW1hZ2VCdWlsZGVyTmFtZSB9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgc3RhY2sgdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvd2hhdC1pcy1hcHBzdHJlYW0uaHRtbCN3aGF0LWlzLWNvbmNlcHRzXG4gICAqXG4gICAqIEBwYXJhbSBzdGFja05hbWUgLSBJZGVudGlmaWVyIGZvciB0aGUgc3RhY2tOYW1lLlxuICAgKiBAcGFyYW0gYWNjb3VudCAtIEFjY291bnQgb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIGFjY291bnQuXG4gICAqIEBwYXJhbSByZWdpb24gLSBSZWdpb24gb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHJlZ2lvbi5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqL1xuICBwdWJsaWMgb25TdGFjayhzdGFja05hbWU6IHN0cmluZywgYWNjb3VudD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTphcHBzdHJlYW06JHsgcmVnaW9uID8/IHRoaXMuZGVmYXVsdFJlZ2lvbiB9OiR7IGFjY291bnQgPz8gdGhpcy5kZWZhdWx0QWNjb3VudCB9OnN0YWNrLyR7IHN0YWNrTmFtZSB9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgYXBwLWJsb2NrIHRvIHRoZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3doYXQtaXMtYXBwc3RyZWFtLmh0bWwjd2hhdC1pcy1jb25jZXB0c1xuICAgKlxuICAgKiBAcGFyYW0gYXBwQmxvY2tOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGFwcEJsb2NrTmFtZS5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKi9cbiAgcHVibGljIG9uQXBwQmxvY2soYXBwQmxvY2tOYW1lOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06YXBwc3RyZWFtOiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTphcHAtYmxvY2svJHsgYXBwQmxvY2tOYW1lIH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVzb3VyY2Ugb2YgdHlwZSBhcHBsaWNhdGlvbiB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS93aGF0LWlzLWFwcHN0cmVhbS5odG1sI3doYXQtaXMtY29uY2VwdHNcbiAgICpcbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uTmFtZSAtIElkZW50aWZpZXIgZm9yIHRoZSBhcHBsaWNhdGlvbk5hbWUuXG4gICAqIEBwYXJhbSBhY2NvdW50IC0gQWNjb3VudCBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgYWNjb3VudC5cbiAgICogQHBhcmFtIHJlZ2lvbiAtIFJlZ2lvbiBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcmVnaW9uLlxuICAgKiBAcGFyYW0gcGFydGl0aW9uIC0gUGFydGl0aW9uIG9mIHRoZSBBV1MgYWNjb3VudCBbYXdzLCBhd3MtY24sIGF3cy11cy1nb3ZdOyBkZWZhdWx0cyB0byBgYXdzYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcGFydGl0aW9uLlxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICovXG4gIHB1YmxpYyBvbkFwcGxpY2F0aW9uKGFwcGxpY2F0aW9uTmFtZTogc3RyaW5nLCBhY2NvdW50Pzogc3RyaW5nLCByZWdpb24/OiBzdHJpbmcsIHBhcnRpdGlvbj86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm9uKGBhcm46JHsgcGFydGl0aW9uID8/IHRoaXMuZGVmYXVsdFBhcnRpdGlvbiB9OmFwcHN0cmVhbTokeyByZWdpb24gPz8gdGhpcy5kZWZhdWx0UmVnaW9uIH06JHsgYWNjb3VudCA/PyB0aGlzLmRlZmF1bHRBY2NvdW50IH06YXBwbGljYXRpb24vJHsgYXBwbGljYXRpb25OYW1lIH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVzb3VyY2Ugb2YgdHlwZSBhcHAtYmxvY2stYnVpbGRlciB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS93aGF0LWlzLWFwcHN0cmVhbS5odG1sI3doYXQtaXMtY29uY2VwdHNcbiAgICpcbiAgICogQHBhcmFtIGFwcEJsb2NrQnVpbGRlck5hbWUgLSBJZGVudGlmaWVyIGZvciB0aGUgYXBwQmxvY2tCdWlsZGVyTmFtZS5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKi9cbiAgcHVibGljIG9uQXBwQmxvY2tCdWlsZGVyKGFwcEJsb2NrQnVpbGRlck5hbWU6IHN0cmluZywgYWNjb3VudD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTphcHBzdHJlYW06JHsgcmVnaW9uID8/IHRoaXMuZGVmYXVsdFJlZ2lvbiB9OiR7IGFjY291bnQgPz8gdGhpcy5kZWZhdWx0QWNjb3VudCB9OmFwcC1ibG9jay1idWlsZGVyLyR7IGFwcEJsb2NrQnVpbGRlck5hbWUgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgYWNjZXNzIGJ5IHRoZSBJRCBvZiB0aGUgQXBwU3RyZWFtIDIuMCB1c2VyXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9leHRlcm5hbC1pZGVudGl0eS1wcm92aWRlcnMtc2V0dGluZy11cC1zYW1sLmh0bWwjZXh0ZXJuYWwtaWRlbnRpdHktcHJvdmlkZXJzLWVtYmVkLWlubGluZS1wb2xpY3ktZm9yLUlBTS1yb2xlXG4gICAqXG4gICAqIEFwcGxpZXMgdG8gYWN0aW9uczpcbiAgICogLSAudG9TdHJlYW0oKVxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlKHMpIHRvIGNoZWNrXG4gICAqIEBwYXJhbSBvcGVyYXRvciBXb3JrcyB3aXRoIFtzdHJpbmcgb3BlcmF0b3JzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX2NvbmRpdGlvbl9vcGVyYXRvcnMuaHRtbCNDb25kaXRpb25zX1N0cmluZykuICoqRGVmYXVsdDoqKiBgU3RyaW5nTGlrZWBcbiAgICovXG4gIHB1YmxpYyBpZlVzZXJJZCh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIG9wZXJhdG9yPzogT3BlcmF0b3IgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5pZihgdXNlcklkYCwgdmFsdWUsIG9wZXJhdG9yID8/ICdTdHJpbmdMaWtlJyk7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVycyBhY2Nlc3MgYnkgdGhlIHByZXNlbmNlIG9mIHRhZyBrZXktdmFsdWUgcGFpcnMgaW4gdGhlIHJlcXVlc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19jb25kaXRpb24ta2V5cy5odG1sI2NvbmRpdGlvbi1rZXlzLXJlcXVlc3R0YWdcbiAgICpcbiAgICogQXBwbGllcyB0byBhY3Rpb25zOlxuICAgKiAtIC50b0NyZWF0ZUFwcEJsb2NrKClcbiAgICogLSAudG9DcmVhdGVBcHBCbG9ja0J1aWxkZXIoKVxuICAgKiAtIC50b0NyZWF0ZUFwcGxpY2F0aW9uKClcbiAgICogLSAudG9DcmVhdGVGbGVldCgpXG4gICAqIC0gLnRvQ3JlYXRlSW1hZ2VCdWlsZGVyKClcbiAgICogLSAudG9DcmVhdGVJbXBvcnRlZEltYWdlKClcbiAgICogLSAudG9DcmVhdGVTdGFjaygpXG4gICAqIC0gLnRvQ3JlYXRlVXBkYXRlZEltYWdlKClcbiAgICogLSAudG9UYWdSZXNvdXJjZSgpXG4gICAqXG4gICAqIEBwYXJhbSB0YWdLZXkgVGhlIHRhZyBrZXkgdG8gY2hlY2tcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZShzKSB0byBjaGVja1xuICAgKiBAcGFyYW0gb3BlcmF0b3IgV29ya3Mgd2l0aCBbc3RyaW5nIG9wZXJhdG9yc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19jb25kaXRpb25fb3BlcmF0b3JzLmh0bWwjQ29uZGl0aW9uc19TdHJpbmcpLiAqKkRlZmF1bHQ6KiogYFN0cmluZ0xpa2VgXG4gICAqL1xuICBwdWJsaWMgaWZBd3NSZXF1ZXN0VGFnKHRhZ0tleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIG9wZXJhdG9yPzogT3BlcmF0b3IgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5pZihgYXdzOlJlcXVlc3RUYWcvJHsgdGFnS2V5IH1gLCB2YWx1ZSwgb3BlcmF0b3IgPz8gJ1N0cmluZ0xpa2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIGFjY2VzcyBieSB0aGUgdGFnIGtleS12YWx1ZSBwYWlycyBhdHRhY2hlZCB0byB0aGUgcmVzb3VyY2VcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19jb25kaXRpb24ta2V5cy5odG1sI2NvbmRpdGlvbi1rZXlzLXJlc291cmNldGFnXG4gICAqXG4gICAqIEFwcGxpZXMgdG8gYWN0aW9uczpcbiAgICogLSAudG9Bc3NvY2lhdGVBcHBCbG9ja0J1aWxkZXJBcHBCbG9jaygpXG4gICAqIC0gLnRvQXNzb2NpYXRlQXBwbGljYXRpb25GbGVldCgpXG4gICAqIC0gLnRvQXNzb2NpYXRlRmxlZXQoKVxuICAgKiAtIC50b0Fzc29jaWF0ZVNvZnR3YXJlVG9JbWFnZUJ1aWxkZXIoKVxuICAgKiAtIC50b0JhdGNoQXNzb2NpYXRlVXNlclN0YWNrKClcbiAgICogLSAudG9CYXRjaERpc2Fzc29jaWF0ZVVzZXJTdGFjaygpXG4gICAqIC0gLnRvQ29weUltYWdlKClcbiAgICogLSAudG9DcmVhdGVBcHBCbG9jaygpXG4gICAqIC0gLnRvQ3JlYXRlQXBwQmxvY2tCdWlsZGVyU3RyZWFtaW5nVVJMKClcbiAgICogLSAudG9DcmVhdGVBcHBsaWNhdGlvbigpXG4gICAqIC0gLnRvQ3JlYXRlRXhwb3J0SW1hZ2VUYXNrKClcbiAgICogLSAudG9DcmVhdGVJbWFnZUJ1aWxkZXJTdHJlYW1pbmdVUkwoKVxuICAgKiAtIC50b0NyZWF0ZVN0cmVhbWluZ1VSTCgpXG4gICAqIC0gLnRvQ3JlYXRlVXBkYXRlZEltYWdlKClcbiAgICogLSAudG9EZWxldGVBcHBCbG9jaygpXG4gICAqIC0gLnRvRGVsZXRlQXBwQmxvY2tCdWlsZGVyKClcbiAgICogLSAudG9EZWxldGVBcHBsaWNhdGlvbigpXG4gICAqIC0gLnRvRGVsZXRlRmxlZXQoKVxuICAgKiAtIC50b0RlbGV0ZUltYWdlKClcbiAgICogLSAudG9EZWxldGVJbWFnZUJ1aWxkZXIoKVxuICAgKiAtIC50b0RlbGV0ZUltYWdlUGVybWlzc2lvbnMoKVxuICAgKiAtIC50b0RlbGV0ZVN0YWNrKClcbiAgICogLSAudG9EaXNhc3NvY2lhdGVBcHBCbG9ja0J1aWxkZXJBcHBCbG9jaygpXG4gICAqIC0gLnRvRGlzYXNzb2NpYXRlQXBwbGljYXRpb25GbGVldCgpXG4gICAqIC0gLnRvRGlzYXNzb2NpYXRlRmxlZXQoKVxuICAgKiAtIC50b0Rpc2Fzc29jaWF0ZVNvZnR3YXJlRnJvbUltYWdlQnVpbGRlcigpXG4gICAqIC0gLnRvU3RhcnRBcHBCbG9ja0J1aWxkZXIoKVxuICAgKiAtIC50b1N0YXJ0RmxlZXQoKVxuICAgKiAtIC50b1N0YXJ0SW1hZ2VCdWlsZGVyKClcbiAgICogLSAudG9TdGFydFNvZnR3YXJlRGVwbG95bWVudFRvSW1hZ2VCdWlsZGVyKClcbiAgICogLSAudG9TdG9wQXBwQmxvY2tCdWlsZGVyKClcbiAgICogLSAudG9TdG9wRmxlZXQoKVxuICAgKiAtIC50b1N0b3BJbWFnZUJ1aWxkZXIoKVxuICAgKiAtIC50b1RhZ1Jlc291cmNlKClcbiAgICogLSAudG9VcGRhdGVBcHBCbG9ja0J1aWxkZXIoKVxuICAgKiAtIC50b1VwZGF0ZUFwcGxpY2F0aW9uKClcbiAgICogLSAudG9VcGRhdGVGbGVldCgpXG4gICAqIC0gLnRvVXBkYXRlSW1hZ2VQZXJtaXNzaW9ucygpXG4gICAqIC0gLnRvVXBkYXRlU3RhY2soKVxuICAgKlxuICAgKiBBcHBsaWVzIHRvIHJlc291cmNlIHR5cGVzOlxuICAgKiAtIGZsZWV0XG4gICAqIC0gaW1hZ2VcbiAgICogLSBpbWFnZS1idWlsZGVyXG4gICAqIC0gc3RhY2tcbiAgICogLSBhcHAtYmxvY2tcbiAgICogLSBhcHBsaWNhdGlvblxuICAgKiAtIGFwcC1ibG9jay1idWlsZGVyXG4gICAqXG4gICAqIEBwYXJhbSB0YWdLZXkgVGhlIHRhZyBrZXkgdG8gY2hlY2tcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZShzKSB0byBjaGVja1xuICAgKiBAcGFyYW0gb3BlcmF0b3IgV29ya3Mgd2l0aCBbc3RyaW5nIG9wZXJhdG9yc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19jb25kaXRpb25fb3BlcmF0b3JzLmh0bWwjQ29uZGl0aW9uc19TdHJpbmcpLiAqKkRlZmF1bHQ6KiogYFN0cmluZ0xpa2VgXG4gICAqL1xuICBwdWJsaWMgaWZBd3NSZXNvdXJjZVRhZyh0YWdLZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBvcGVyYXRvcj86IE9wZXJhdG9yIHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaWYoYGF3czpSZXNvdXJjZVRhZy8keyB0YWdLZXkgfWAsIHZhbHVlLCBvcGVyYXRvciA/PyAnU3RyaW5nTGlrZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgYWNjZXNzIGJ5IHRoZSBwcmVzZW5jZSBvZiB0YWcga2V5cyBpbiB0aGUgcmVxdWVzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2NvbmRpdGlvbi1rZXlzLmh0bWwjY29uZGl0aW9uLWtleXMtdGFna2V5c1xuICAgKlxuICAgKiBBcHBsaWVzIHRvIGFjdGlvbnM6XG4gICAqIC0gLnRvQ3JlYXRlQXBwQmxvY2soKVxuICAgKiAtIC50b0NyZWF0ZUFwcEJsb2NrQnVpbGRlcigpXG4gICAqIC0gLnRvQ3JlYXRlQXBwbGljYXRpb24oKVxuICAgKiAtIC50b0NyZWF0ZUZsZWV0KClcbiAgICogLSAudG9DcmVhdGVJbWFnZUJ1aWxkZXIoKVxuICAgKiAtIC50b0NyZWF0ZUltcG9ydGVkSW1hZ2UoKVxuICAgKiAtIC50b0NyZWF0ZVN0YWNrKClcbiAgICogLSAudG9DcmVhdGVVcGRhdGVkSW1hZ2UoKVxuICAgKiAtIC50b1RhZ1Jlc291cmNlKClcbiAgICogLSAudG9VbnRhZ1Jlc291cmNlKClcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZShzKSB0byBjaGVja1xuICAgKiBAcGFyYW0gb3BlcmF0b3IgV29ya3Mgd2l0aCBbc3RyaW5nIG9wZXJhdG9yc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19jb25kaXRpb25fb3BlcmF0b3JzLmh0bWwjQ29uZGl0aW9uc19TdHJpbmcpLiAqKkRlZmF1bHQ6KiogYFN0cmluZ0xpa2VgXG4gICAqL1xuICBwdWJsaWMgaWZBd3NUYWdLZXlzKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3BlcmF0b3I/OiBPcGVyYXRvciB8IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmlmKGBhd3M6VGFnS2V5c2AsIHZhbHVlLCBvcGVyYXRvciA/PyAnU3RyaW5nTGlrZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbYXBwc3RyZWFtXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hbWF6b25hcHBzdHJlYW0yLjAuaHRtbCkuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxufVxuIl19
|