@aws-solutions-constructs/aws-cloudfront-apigateway-lambda 2.47.0 → 2.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,178 @@
1
1
  {
2
2
  "Description": "Integration Test for aws-cloudfront-apigateway-lambda",
3
3
  "Resources": {
4
+ "cftaplamnoargumentsauthorizerAuthFunctionServiceRole122160C6": {
5
+ "Type": "AWS::IAM::Role",
6
+ "Properties": {
7
+ "AssumeRolePolicyDocument": {
8
+ "Statement": [
9
+ {
10
+ "Action": "sts:AssumeRole",
11
+ "Effect": "Allow",
12
+ "Principal": {
13
+ "Service": "lambda.amazonaws.com"
14
+ }
15
+ }
16
+ ],
17
+ "Version": "2012-10-17"
18
+ },
19
+ "ManagedPolicyArns": [
20
+ {
21
+ "Fn::Join": [
22
+ "",
23
+ [
24
+ "arn:",
25
+ {
26
+ "Ref": "AWS::Partition"
27
+ },
28
+ ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
29
+ ]
30
+ ]
31
+ }
32
+ ]
33
+ }
34
+ },
35
+ "cftaplamnoargumentsauthorizerAuthFunction9B127993": {
36
+ "Type": "AWS::Lambda::Function",
37
+ "Properties": {
38
+ "Code": {
39
+ "S3Bucket": {
40
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
41
+ },
42
+ "S3Key": "42a35bbf0dec9ef0ac5b0dde87e71a1b8929e8d2d178dd09ccfb2c928ec0198c.zip"
43
+ },
44
+ "Handler": ".handler",
45
+ "Role": {
46
+ "Fn::GetAtt": [
47
+ "cftaplamnoargumentsauthorizerAuthFunctionServiceRole122160C6",
48
+ "Arn"
49
+ ]
50
+ },
51
+ "Runtime": "nodejs16.x"
52
+ },
53
+ "DependsOn": [
54
+ "cftaplamnoargumentsauthorizerAuthFunctionServiceRole122160C6"
55
+ ],
56
+ "Metadata": {
57
+ "cfn_nag": {
58
+ "rules_to_suppress": [
59
+ {
60
+ "id": "W58",
61
+ "reason": "Test Resource"
62
+ },
63
+ {
64
+ "id": "W89",
65
+ "reason": "Test Resource"
66
+ },
67
+ {
68
+ "id": "W92",
69
+ "reason": "Test Resource"
70
+ }
71
+ ]
72
+ }
73
+ }
74
+ },
75
+ "cftaplamnoargumentsauthorizerAuthFunctioncftaplamnoargumentscftaplamnoargumentsauthorizer14876A7BPermissionsE711C432": {
76
+ "Type": "AWS::Lambda::Permission",
77
+ "Properties": {
78
+ "Action": "lambda:InvokeFunction",
79
+ "FunctionName": {
80
+ "Fn::GetAtt": [
81
+ "cftaplamnoargumentsauthorizerAuthFunction9B127993",
82
+ "Arn"
83
+ ]
84
+ },
85
+ "Principal": "apigateway.amazonaws.com",
86
+ "SourceArn": {
87
+ "Fn::Join": [
88
+ "",
89
+ [
90
+ "arn:",
91
+ {
92
+ "Ref": "AWS::Partition"
93
+ },
94
+ ":execute-api:",
95
+ {
96
+ "Ref": "AWS::Region"
97
+ },
98
+ ":",
99
+ {
100
+ "Ref": "AWS::AccountId"
101
+ },
102
+ ":",
103
+ {
104
+ "Ref": "testcloudfrontapigatewaylambdaLambdaRestApi6A4CBD44"
105
+ },
106
+ "/authorizers/",
107
+ {
108
+ "Ref": "cftaplamnoargumentsauthorizerD7B341B1"
109
+ }
110
+ ]
111
+ ]
112
+ }
113
+ }
114
+ },
115
+ "cftaplamnoargumentsauthorizerD7B341B1": {
116
+ "Type": "AWS::ApiGateway::Authorizer",
117
+ "Properties": {
118
+ "AuthorizerResultTtlInSeconds": 300,
119
+ "AuthorizerUri": {
120
+ "Fn::Join": [
121
+ "",
122
+ [
123
+ "arn:",
124
+ {
125
+ "Fn::Select": [
126
+ 1,
127
+ {
128
+ "Fn::Split": [
129
+ ":",
130
+ {
131
+ "Fn::GetAtt": [
132
+ "cftaplamnoargumentsauthorizerAuthFunction9B127993",
133
+ "Arn"
134
+ ]
135
+ }
136
+ ]
137
+ }
138
+ ]
139
+ },
140
+ ":apigateway:",
141
+ {
142
+ "Fn::Select": [
143
+ 3,
144
+ {
145
+ "Fn::Split": [
146
+ ":",
147
+ {
148
+ "Fn::GetAtt": [
149
+ "cftaplamnoargumentsauthorizerAuthFunction9B127993",
150
+ "Arn"
151
+ ]
152
+ }
153
+ ]
154
+ }
155
+ ]
156
+ },
157
+ ":lambda:path/2015-03-31/functions/",
158
+ {
159
+ "Fn::GetAtt": [
160
+ "cftaplamnoargumentsauthorizerAuthFunction9B127993",
161
+ "Arn"
162
+ ]
163
+ },
164
+ "/invocations"
165
+ ]
166
+ ]
167
+ },
168
+ "IdentitySource": "method.request.header.Authorization",
169
+ "Name": "cftaplamnoargumentscftaplamnoargumentsauthorizer14876A7B",
170
+ "RestApiId": {
171
+ "Ref": "testcloudfrontapigatewaylambdaLambdaRestApi6A4CBD44"
172
+ },
173
+ "Type": "REQUEST"
174
+ }
175
+ },
4
176
  "testcloudfrontapigatewaylambdaLambdaFunctionServiceRoleCB74590F": {
5
177
  "Type": "AWS::IAM::Role",
6
178
  "Properties": {
@@ -169,7 +341,7 @@
169
341
  "Name": "LambdaRestApi"
170
342
  }
171
343
  },
172
- "testcloudfrontapigatewaylambdaLambdaRestApiDeployment0C4661C03abb023c303d9e3ff2b4d984cd5d60ab": {
344
+ "testcloudfrontapigatewaylambdaLambdaRestApiDeployment0C4661C0be4652c0c81d13dbdf8cd82fdf384ca9": {
173
345
  "Type": "AWS::ApiGateway::Deployment",
174
346
  "Properties": {
175
347
  "Description": "Automatically created by the RestApi construct",
@@ -206,7 +378,7 @@
206
378
  "Format": "{\"requestId\":\"$context.requestId\",\"ip\":\"$context.identity.sourceIp\",\"user\":\"$context.identity.user\",\"caller\":\"$context.identity.caller\",\"requestTime\":\"$context.requestTime\",\"httpMethod\":\"$context.httpMethod\",\"resourcePath\":\"$context.resourcePath\",\"status\":\"$context.status\",\"protocol\":\"$context.protocol\",\"responseLength\":\"$context.responseLength\"}"
207
379
  },
208
380
  "DeploymentId": {
209
- "Ref": "testcloudfrontapigatewaylambdaLambdaRestApiDeployment0C4661C03abb023c303d9e3ff2b4d984cd5d60ab"
381
+ "Ref": "testcloudfrontapigatewaylambdaLambdaRestApiDeployment0C4661C0be4652c0c81d13dbdf8cd82fdf384ca9"
210
382
  },
211
383
  "MethodSettings": [
212
384
  {
@@ -319,7 +491,10 @@
319
491
  "testcloudfrontapigatewaylambdaLambdaRestApiproxyANYAE500A13": {
320
492
  "Type": "AWS::ApiGateway::Method",
321
493
  "Properties": {
322
- "AuthorizationType": "NONE",
494
+ "AuthorizationType": "CUSTOM",
495
+ "AuthorizerId": {
496
+ "Ref": "cftaplamnoargumentsauthorizerD7B341B1"
497
+ },
323
498
  "HttpMethod": "ANY",
324
499
  "Integration": {
325
500
  "IntegrationHttpMethod": "POST",
@@ -354,16 +529,6 @@
354
529
  "RestApiId": {
355
530
  "Ref": "testcloudfrontapigatewaylambdaLambdaRestApi6A4CBD44"
356
531
  }
357
- },
358
- "Metadata": {
359
- "cfn_nag": {
360
- "rules_to_suppress": [
361
- {
362
- "id": "W59",
363
- "reason": "AWS::ApiGateway::Method AuthorizationType is set to 'NONE' because API Gateway behind CloudFront does not support AWS_IAM authentication"
364
- }
365
- ]
366
- }
367
532
  }
368
533
  },
369
534
  "testcloudfrontapigatewaylambdaLambdaRestApiANYApiPermissioncftaplamnoargumentstestcloudfrontapigatewaylambdaLambdaRestApiF14A7709ANY1BADAD44": {
@@ -447,7 +612,10 @@
447
612
  "testcloudfrontapigatewaylambdaLambdaRestApiANYBC435DFD": {
448
613
  "Type": "AWS::ApiGateway::Method",
449
614
  "Properties": {
450
- "AuthorizationType": "NONE",
615
+ "AuthorizationType": "CUSTOM",
616
+ "AuthorizerId": {
617
+ "Ref": "cftaplamnoargumentsauthorizerD7B341B1"
618
+ },
451
619
  "HttpMethod": "ANY",
452
620
  "Integration": {
453
621
  "IntegrationHttpMethod": "POST",
@@ -485,16 +653,6 @@
485
653
  "RestApiId": {
486
654
  "Ref": "testcloudfrontapigatewaylambdaLambdaRestApi6A4CBD44"
487
655
  }
488
- },
489
- "Metadata": {
490
- "cfn_nag": {
491
- "rules_to_suppress": [
492
- {
493
- "id": "W59",
494
- "reason": "AWS::ApiGateway::Method AuthorizationType is set to 'NONE' because API Gateway behind CloudFront does not support AWS_IAM authentication"
495
- }
496
- ]
497
- }
498
656
  }
499
657
  },
500
658
  "testcloudfrontapigatewaylambdaLambdaRestApiUsagePlan59548A66": {
@@ -598,10 +756,9 @@
598
756
  "Name": "SetHttpSecurityHeadersc87d9e55c0a6a55f893f95e9a700c7ce19634229d0"
599
757
  }
600
758
  },
601
- "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucket7F467421": {
759
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57": {
602
760
  "Type": "AWS::S3::Bucket",
603
761
  "Properties": {
604
- "AccessControl": "LogDeliveryWrite",
605
762
  "BucketEncryption": {
606
763
  "ServerSideEncryptionConfiguration": [
607
764
  {
@@ -641,12 +798,197 @@
641
798
  "rules_to_suppress": [
642
799
  {
643
800
  "id": "W35",
644
- "reason": "This S3 bucket is used as the access logging bucket for CloudFront Distribution"
801
+ "reason": "This S3 bucket is used as the access logging bucket for another bucket"
645
802
  }
646
803
  ]
647
804
  }
648
805
  }
649
806
  },
807
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLogPolicy521355D8": {
808
+ "Type": "AWS::S3::BucketPolicy",
809
+ "Properties": {
810
+ "Bucket": {
811
+ "Ref": "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57"
812
+ },
813
+ "PolicyDocument": {
814
+ "Statement": [
815
+ {
816
+ "Action": "s3:*",
817
+ "Condition": {
818
+ "Bool": {
819
+ "aws:SecureTransport": "false"
820
+ }
821
+ },
822
+ "Effect": "Deny",
823
+ "Principal": {
824
+ "AWS": "*"
825
+ },
826
+ "Resource": [
827
+ {
828
+ "Fn::GetAtt": [
829
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57",
830
+ "Arn"
831
+ ]
832
+ },
833
+ {
834
+ "Fn::Join": [
835
+ "",
836
+ [
837
+ {
838
+ "Fn::GetAtt": [
839
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57",
840
+ "Arn"
841
+ ]
842
+ },
843
+ "/*"
844
+ ]
845
+ ]
846
+ }
847
+ ]
848
+ },
849
+ {
850
+ "Action": [
851
+ "s3:PutBucketPolicy",
852
+ "s3:GetBucket*",
853
+ "s3:List*",
854
+ "s3:DeleteObject*"
855
+ ],
856
+ "Effect": "Allow",
857
+ "Principal": {
858
+ "AWS": {
859
+ "Fn::GetAtt": [
860
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
861
+ "Arn"
862
+ ]
863
+ }
864
+ },
865
+ "Resource": [
866
+ {
867
+ "Fn::GetAtt": [
868
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57",
869
+ "Arn"
870
+ ]
871
+ },
872
+ {
873
+ "Fn::Join": [
874
+ "",
875
+ [
876
+ {
877
+ "Fn::GetAtt": [
878
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57",
879
+ "Arn"
880
+ ]
881
+ },
882
+ "/*"
883
+ ]
884
+ ]
885
+ }
886
+ ]
887
+ },
888
+ {
889
+ "Action": "s3:PutObject",
890
+ "Condition": {
891
+ "ArnLike": {
892
+ "aws:SourceArn": {
893
+ "Fn::GetAtt": [
894
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucket7F467421",
895
+ "Arn"
896
+ ]
897
+ }
898
+ },
899
+ "StringEquals": {
900
+ "aws:SourceAccount": {
901
+ "Ref": "AWS::AccountId"
902
+ }
903
+ }
904
+ },
905
+ "Effect": "Allow",
906
+ "Principal": {
907
+ "Service": "logging.s3.amazonaws.com"
908
+ },
909
+ "Resource": {
910
+ "Fn::Join": [
911
+ "",
912
+ [
913
+ {
914
+ "Fn::GetAtt": [
915
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57",
916
+ "Arn"
917
+ ]
918
+ },
919
+ "/*"
920
+ ]
921
+ ]
922
+ }
923
+ }
924
+ ],
925
+ "Version": "2012-10-17"
926
+ }
927
+ }
928
+ },
929
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLogAutoDeleteObjectsCustomResource2395E2A2": {
930
+ "Type": "Custom::S3AutoDeleteObjects",
931
+ "Properties": {
932
+ "ServiceToken": {
933
+ "Fn::GetAtt": [
934
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
935
+ "Arn"
936
+ ]
937
+ },
938
+ "BucketName": {
939
+ "Ref": "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57"
940
+ }
941
+ },
942
+ "DependsOn": [
943
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLogPolicy521355D8"
944
+ ],
945
+ "UpdateReplacePolicy": "Delete",
946
+ "DeletionPolicy": "Delete"
947
+ },
948
+ "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucket7F467421": {
949
+ "Type": "AWS::S3::Bucket",
950
+ "Properties": {
951
+ "AccessControl": "LogDeliveryWrite",
952
+ "BucketEncryption": {
953
+ "ServerSideEncryptionConfiguration": [
954
+ {
955
+ "ServerSideEncryptionByDefault": {
956
+ "SSEAlgorithm": "AES256"
957
+ }
958
+ }
959
+ ]
960
+ },
961
+ "LoggingConfiguration": {
962
+ "DestinationBucketName": {
963
+ "Ref": "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57"
964
+ }
965
+ },
966
+ "OwnershipControls": {
967
+ "Rules": [
968
+ {
969
+ "ObjectOwnership": "ObjectWriter"
970
+ }
971
+ ]
972
+ },
973
+ "PublicAccessBlockConfiguration": {
974
+ "BlockPublicAcls": true,
975
+ "BlockPublicPolicy": true,
976
+ "IgnorePublicAcls": true,
977
+ "RestrictPublicBuckets": true
978
+ },
979
+ "Tags": [
980
+ {
981
+ "Key": "aws-cdk:auto-delete-objects",
982
+ "Value": "true"
983
+ }
984
+ ],
985
+ "VersioningConfiguration": {
986
+ "Status": "Enabled"
987
+ }
988
+ },
989
+ "UpdateReplacePolicy": "Delete",
990
+ "DeletionPolicy": "Delete"
991
+ },
650
992
  "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketPolicy4A551B79": {
651
993
  "Type": "AWS::S3::BucketPolicy",
652
994
  "Properties": {
@@ -910,7 +1252,7 @@
910
1252
  [
911
1253
  "Lambda function for auto-deleting objects in ",
912
1254
  {
913
- "Ref": "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucket7F467421"
1255
+ "Ref": "testcloudfrontapigatewaylambdaCloudFrontToApiGatewayCloudfrontLoggingBucketAccessLog347EED57"
914
1256
  },
915
1257
  " S3 bucket."
916
1258
  ]
@@ -17,6 +17,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
17
17
  const lib_1 = require("../lib");
18
18
  const lambda = require("aws-cdk-lib/aws-lambda");
19
19
  const core_1 = require("@aws-solutions-constructs/core");
20
+ const apigateway = require("aws-cdk-lib/aws-apigateway");
20
21
  // Setup
21
22
  const app = new aws_cdk_lib_1.App();
22
23
  const stack = new aws_cdk_lib_1.Stack(app, core_1.generateIntegStackName(__filename));
@@ -27,6 +28,12 @@ const lambdaProps = {
27
28
  handler: 'index.handler'
28
29
  };
29
30
  new lib_1.CloudFrontToApiGatewayToLambda(stack, 'test-cloudfront-apigateway-lambda', {
31
+ apiGatewayProps: {
32
+ defaultMethodOptions: {
33
+ authorizationType: apigateway.AuthorizationType.CUSTOM,
34
+ authorizer: core_1.CreateApiAuthorizer(stack, `${core_1.generateIntegStackName(__filename)}-authorizer`)
35
+ },
36
+ },
30
37
  lambdaFunctionProps: lambdaProps,
31
38
  cloudFrontLoggingBucketProps: {
32
39
  removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
@@ -36,4 +43,4 @@ new lib_1.CloudFrontToApiGatewayToLambda(stack, 'test-cloudfront-apigateway-lamb
36
43
  core_1.suppressAutoDeleteHandlerWarnings(stack);
37
44
  // Synth
38
45
  app.synth();
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY2Z0YXBsYW0tbm8tYXJndW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWcuY2Z0YXBsYW0tbm8tYXJndW1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxnQkFBZ0I7QUFDaEIsNkNBQXdEO0FBQ3hELGdDQUF3RDtBQUN4RCxpREFBaUQ7QUFDakQseURBQTJHO0FBRTNHLFFBQVE7QUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLGlCQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsR0FBRyxFQUFFLDZCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDakUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsdURBQXVELENBQUM7QUFFNUYsTUFBTSxXQUFXLEdBQXlCO0lBQ3hDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsU0FBUyxDQUFDO0lBQ2xELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7SUFDbkMsT0FBTyxFQUFFLGVBQWU7Q0FDekIsQ0FBQztBQUVGLElBQUksb0NBQThCLENBQUMsS0FBSyxFQUFFLG1DQUFtQyxFQUFFO0lBQzdFLG1CQUFtQixFQUFFLFdBQVc7SUFDaEMsNEJBQTRCLEVBQUU7UUFDNUIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsd0NBQWlDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsUUFBUTtBQUNSLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vLyAhY2RrLWludGVnICpcbmltcG9ydCB7IEFwcCwgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENsb3VkRnJvbnRUb0FwaUdhdGV3YXlUb0xhbWJkYSB9IGZyb20gXCIuLi9saWJcIjtcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IGdlbmVyYXRlSW50ZWdTdGFja05hbWUsIHN1cHByZXNzQXV0b0RlbGV0ZUhhbmRsZXJXYXJuaW5ncyB9IGZyb20gJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvY29yZSc7XG5cbi8vIFNldHVwXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5jb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsIGdlbmVyYXRlSW50ZWdTdGFja05hbWUoX19maWxlbmFtZSkpO1xuc3RhY2sudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uID0gJ0ludGVncmF0aW9uIFRlc3QgZm9yIGF3cy1jbG91ZGZyb250LWFwaWdhdGV3YXktbGFtYmRhJztcblxuY29uc3QgbGFtYmRhUHJvcHM6IGxhbWJkYS5GdW5jdGlvblByb3BzID0ge1xuICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoYCR7X19kaXJuYW1lfS9sYW1iZGFgKSxcbiAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJ1xufTtcblxubmV3IENsb3VkRnJvbnRUb0FwaUdhdGV3YXlUb0xhbWJkYShzdGFjaywgJ3Rlc3QtY2xvdWRmcm9udC1hcGlnYXRld2F5LWxhbWJkYScsIHtcbiAgbGFtYmRhRnVuY3Rpb25Qcm9wczogbGFtYmRhUHJvcHMsXG4gIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHM6IHtcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWVcbiAgfSxcbn0pO1xuXG5zdXBwcmVzc0F1dG9EZWxldGVIYW5kbGVyV2FybmluZ3Moc3RhY2spO1xuLy8gU3ludGhcbmFwcC5zeW50aCgpO1xuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY2Z0YXBsYW0tbm8tYXJndW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWcuY2Z0YXBsYW0tbm8tYXJndW1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxnQkFBZ0I7QUFDaEIsNkNBQXdEO0FBQ3hELGdDQUF3RDtBQUN4RCxpREFBaUQ7QUFDakQseURBQWdJO0FBQ2hJLHlEQUF5RDtBQUV6RCxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLHVEQUF1RCxDQUFDO0FBRTVGLE1BQU0sV0FBVyxHQUF5QjtJQUN4QyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLFNBQVMsQ0FBQztJQUNsRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO0lBQ25DLE9BQU8sRUFBRSxlQUFlO0NBQ3pCLENBQUM7QUFFRixJQUFJLG9DQUE4QixDQUFDLEtBQUssRUFBRSxtQ0FBbUMsRUFBRTtJQUM3RSxlQUFlLEVBQUU7UUFDZixvQkFBb0IsRUFBRTtZQUNwQixpQkFBaUIsRUFBRSxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTTtZQUN0RCxVQUFVLEVBQUUsMEJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsNkJBQXNCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztTQUMzRjtLQUNGO0lBQ0QsbUJBQW1CLEVBQUUsV0FBVztJQUNoQyw0QkFBNEIsRUFBRTtRQUM1QixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1FBQ3BDLGlCQUFpQixFQUFFLElBQUk7S0FDeEI7Q0FDRixDQUFDLENBQUM7QUFFSCx3Q0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxRQUFRO0FBQ1IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8vICFjZGstaW50ZWcgKlxuaW1wb3J0IHsgQXBwLCBSZW1vdmFsUG9saWN5LCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFRvQXBpR2F0ZXdheVRvTGFtYmRhIH0gZnJvbSBcIi4uL2xpYlwiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSwgc3VwcHJlc3NBdXRvRGVsZXRlSGFuZGxlcldhcm5pbmdzLCBDcmVhdGVBcGlBdXRob3JpemVyIH0gZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcbmltcG9ydCAqIGFzIGFwaWdhdGV3YXkgZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXknO1xuXG4vLyBTZXR1cFxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lKF9fZmlsZW5hbWUpKTtcbnN0YWNrLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9ICdJbnRlZ3JhdGlvbiBUZXN0IGZvciBhd3MtY2xvdWRmcm9udC1hcGlnYXRld2F5LWxhbWJkYSc7XG5cbmNvbnN0IGxhbWJkYVByb3BzOiBsYW1iZGEuRnVuY3Rpb25Qcm9wcyA9IHtcbiAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vbGFtYmRhYCksXG4gIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcidcbn07XG5cbm5ldyBDbG91ZEZyb250VG9BcGlHYXRld2F5VG9MYW1iZGEoc3RhY2ssICd0ZXN0LWNsb3VkZnJvbnQtYXBpZ2F0ZXdheS1sYW1iZGEnLCB7XG4gIGFwaUdhdGV3YXlQcm9wczoge1xuICAgIGRlZmF1bHRNZXRob2RPcHRpb25zOiB7XG4gICAgICBhdXRob3JpemF0aW9uVHlwZTogYXBpZ2F0ZXdheS5BdXRob3JpemF0aW9uVHlwZS5DVVNUT00sXG4gICAgICBhdXRob3JpemVyOiBDcmVhdGVBcGlBdXRob3JpemVyKHN0YWNrLCBgJHtnZW5lcmF0ZUludGVnU3RhY2tOYW1lKF9fZmlsZW5hbWUpfS1hdXRob3JpemVyYClcbiAgICB9LFxuICB9LFxuICBsYW1iZGFGdW5jdGlvblByb3BzOiBsYW1iZGFQcm9wcyxcbiAgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZVxuICB9LFxufSk7XG5cbnN1cHByZXNzQXV0b0RlbGV0ZUhhbmRsZXJXYXJuaW5ncyhzdGFjayk7XG4vLyBTeW50aFxuYXBwLnN5bnRoKCk7XG4iXX0=