aws-sdk-wafv2 1.42.0 → 1.44.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.
@@ -13,6 +13,7 @@ module Aws::WAFV2
13
13
 
14
14
  include Seahorse::Model
15
15
 
16
+ AWSManagedRulesBotControlRuleSet = Shapes::StructureShape.new(name: 'AWSManagedRulesBotControlRuleSet')
16
17
  Action = Shapes::StringShape.new(name: 'Action')
17
18
  ActionCondition = Shapes::StructureShape.new(name: 'ActionCondition')
18
19
  ActionValue = Shapes::StringShape.new(name: 'ActionValue')
@@ -31,6 +32,9 @@ module Aws::WAFV2
31
32
  CaptchaAction = Shapes::StructureShape.new(name: 'CaptchaAction')
32
33
  CaptchaConfig = Shapes::StructureShape.new(name: 'CaptchaConfig')
33
34
  CaptchaResponse = Shapes::StructureShape.new(name: 'CaptchaResponse')
35
+ ChallengeAction = Shapes::StructureShape.new(name: 'ChallengeAction')
36
+ ChallengeConfig = Shapes::StructureShape.new(name: 'ChallengeConfig')
37
+ ChallengeResponse = Shapes::StructureShape.new(name: 'ChallengeResponse')
34
38
  CheckCapacityRequest = Shapes::StructureShape.new(name: 'CheckCapacityRequest')
35
39
  CheckCapacityResponse = Shapes::StructureShape.new(name: 'CheckCapacityResponse')
36
40
  ComparisonOperator = Shapes::StringShape.new(name: 'ComparisonOperator')
@@ -147,6 +151,7 @@ module Aws::WAFV2
147
151
  IPSetSummary = Shapes::StructureShape.new(name: 'IPSetSummary')
148
152
  IPString = Shapes::StringShape.new(name: 'IPString')
149
153
  ImmunityTimeProperty = Shapes::StructureShape.new(name: 'ImmunityTimeProperty')
154
+ InspectionLevel = Shapes::StringShape.new(name: 'InspectionLevel')
150
155
  JsonBody = Shapes::StructureShape.new(name: 'JsonBody')
151
156
  JsonMatchPattern = Shapes::StructureShape.new(name: 'JsonMatchPattern')
152
157
  JsonMatchScope = Shapes::StringShape.new(name: 'JsonMatchScope')
@@ -254,6 +259,8 @@ module Aws::WAFV2
254
259
  ResponseStatusCode = Shapes::IntegerShape.new(name: 'ResponseStatusCode')
255
260
  Rule = Shapes::StructureShape.new(name: 'Rule')
256
261
  RuleAction = Shapes::StructureShape.new(name: 'RuleAction')
262
+ RuleActionOverride = Shapes::StructureShape.new(name: 'RuleActionOverride')
263
+ RuleActionOverrides = Shapes::ListShape.new(name: 'RuleActionOverrides')
257
264
  RuleGroup = Shapes::StructureShape.new(name: 'RuleGroup')
258
265
  RuleGroupReferenceStatement = Shapes::StructureShape.new(name: 'RuleGroupReferenceStatement')
259
266
  RuleGroupSummaries = Shapes::ListShape.new(name: 'RuleGroupSummaries')
@@ -293,6 +300,8 @@ module Aws::WAFV2
293
300
  TimeWindowDay = Shapes::IntegerShape.new(name: 'TimeWindowDay')
294
301
  TimeWindowSecond = Shapes::IntegerShape.new(name: 'TimeWindowSecond')
295
302
  Timestamp = Shapes::TimestampShape.new(name: 'Timestamp')
303
+ TokenDomain = Shapes::StringShape.new(name: 'TokenDomain')
304
+ TokenDomains = Shapes::ListShape.new(name: 'TokenDomains')
296
305
  URIString = Shapes::StringShape.new(name: 'URIString')
297
306
  UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest')
298
307
  UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse')
@@ -336,6 +345,9 @@ module Aws::WAFV2
336
345
  WebACLSummary = Shapes::StructureShape.new(name: 'WebACLSummary')
337
346
  XssMatchStatement = Shapes::StructureShape.new(name: 'XssMatchStatement')
338
347
 
348
+ AWSManagedRulesBotControlRuleSet.add_member(:inspection_level, Shapes::ShapeRef.new(shape: InspectionLevel, required: true, location_name: "InspectionLevel"))
349
+ AWSManagedRulesBotControlRuleSet.struct_class = Types::AWSManagedRulesBotControlRuleSet
350
+
339
351
  ActionCondition.add_member(:action, Shapes::ShapeRef.new(shape: ActionValue, required: true, location_name: "Action"))
340
352
  ActionCondition.struct_class = Types::ActionCondition
341
353
 
@@ -378,6 +390,17 @@ module Aws::WAFV2
378
390
  CaptchaResponse.add_member(:failure_reason, Shapes::ShapeRef.new(shape: FailureReason, location_name: "FailureReason"))
379
391
  CaptchaResponse.struct_class = Types::CaptchaResponse
380
392
 
393
+ ChallengeAction.add_member(:custom_request_handling, Shapes::ShapeRef.new(shape: CustomRequestHandling, location_name: "CustomRequestHandling"))
394
+ ChallengeAction.struct_class = Types::ChallengeAction
395
+
396
+ ChallengeConfig.add_member(:immunity_time_property, Shapes::ShapeRef.new(shape: ImmunityTimeProperty, location_name: "ImmunityTimeProperty"))
397
+ ChallengeConfig.struct_class = Types::ChallengeConfig
398
+
399
+ ChallengeResponse.add_member(:response_code, Shapes::ShapeRef.new(shape: ResponseCode, location_name: "ResponseCode"))
400
+ ChallengeResponse.add_member(:solve_timestamp, Shapes::ShapeRef.new(shape: SolveTimestamp, location_name: "SolveTimestamp"))
401
+ ChallengeResponse.add_member(:failure_reason, Shapes::ShapeRef.new(shape: FailureReason, location_name: "FailureReason"))
402
+ ChallengeResponse.struct_class = Types::ChallengeResponse
403
+
381
404
  CheckCapacityRequest.add_member(:scope, Shapes::ShapeRef.new(shape: Scope, required: true, location_name: "Scope"))
382
405
  CheckCapacityRequest.add_member(:rules, Shapes::ShapeRef.new(shape: Rules, required: true, location_name: "Rules"))
383
406
  CheckCapacityRequest.struct_class = Types::CheckCapacityRequest
@@ -451,6 +474,8 @@ module Aws::WAFV2
451
474
  CreateWebACLRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags"))
452
475
  CreateWebACLRequest.add_member(:custom_response_bodies, Shapes::ShapeRef.new(shape: CustomResponseBodies, location_name: "CustomResponseBodies"))
453
476
  CreateWebACLRequest.add_member(:captcha_config, Shapes::ShapeRef.new(shape: CaptchaConfig, location_name: "CaptchaConfig"))
477
+ CreateWebACLRequest.add_member(:challenge_config, Shapes::ShapeRef.new(shape: ChallengeConfig, location_name: "ChallengeConfig"))
478
+ CreateWebACLRequest.add_member(:token_domains, Shapes::ShapeRef.new(shape: TokenDomains, location_name: "TokenDomains"))
454
479
  CreateWebACLRequest.struct_class = Types::CreateWebACLRequest
455
480
 
456
481
  CreateWebACLResponse.add_member(:summary, Shapes::ShapeRef.new(shape: WebACLSummary, location_name: "Summary"))
@@ -902,6 +927,7 @@ module Aws::WAFV2
902
927
  ManagedRuleGroupConfig.add_member(:payload_type, Shapes::ShapeRef.new(shape: PayloadType, location_name: "PayloadType"))
903
928
  ManagedRuleGroupConfig.add_member(:username_field, Shapes::ShapeRef.new(shape: UsernameField, location_name: "UsernameField"))
904
929
  ManagedRuleGroupConfig.add_member(:password_field, Shapes::ShapeRef.new(shape: PasswordField, location_name: "PasswordField"))
930
+ ManagedRuleGroupConfig.add_member(:aws_managed_rules_bot_control_rule_set, Shapes::ShapeRef.new(shape: AWSManagedRulesBotControlRuleSet, location_name: "AWSManagedRulesBotControlRuleSet"))
905
931
  ManagedRuleGroupConfig.struct_class = Types::ManagedRuleGroupConfig
906
932
 
907
933
  ManagedRuleGroupConfigs.member = Shapes::ShapeRef.new(shape: ManagedRuleGroupConfig)
@@ -912,6 +938,7 @@ module Aws::WAFV2
912
938
  ManagedRuleGroupStatement.add_member(:excluded_rules, Shapes::ShapeRef.new(shape: ExcludedRules, location_name: "ExcludedRules"))
913
939
  ManagedRuleGroupStatement.add_member(:scope_down_statement, Shapes::ShapeRef.new(shape: Statement, location_name: "ScopeDownStatement"))
914
940
  ManagedRuleGroupStatement.add_member(:managed_rule_group_configs, Shapes::ShapeRef.new(shape: ManagedRuleGroupConfigs, location_name: "ManagedRuleGroupConfigs"))
941
+ ManagedRuleGroupStatement.add_member(:rule_action_overrides, Shapes::ShapeRef.new(shape: RuleActionOverrides, location_name: "RuleActionOverrides"))
915
942
  ManagedRuleGroupStatement.struct_class = Types::ManagedRuleGroupStatement
916
943
 
917
944
  ManagedRuleGroupSummaries.member = Shapes::ShapeRef.new(shape: ManagedRuleGroupSummary)
@@ -1065,14 +1092,22 @@ module Aws::WAFV2
1065
1092
  Rule.add_member(:rule_labels, Shapes::ShapeRef.new(shape: Labels, location_name: "RuleLabels"))
1066
1093
  Rule.add_member(:visibility_config, Shapes::ShapeRef.new(shape: VisibilityConfig, required: true, location_name: "VisibilityConfig"))
1067
1094
  Rule.add_member(:captcha_config, Shapes::ShapeRef.new(shape: CaptchaConfig, location_name: "CaptchaConfig"))
1095
+ Rule.add_member(:challenge_config, Shapes::ShapeRef.new(shape: ChallengeConfig, location_name: "ChallengeConfig"))
1068
1096
  Rule.struct_class = Types::Rule
1069
1097
 
1070
1098
  RuleAction.add_member(:block, Shapes::ShapeRef.new(shape: BlockAction, location_name: "Block"))
1071
1099
  RuleAction.add_member(:allow, Shapes::ShapeRef.new(shape: AllowAction, location_name: "Allow"))
1072
1100
  RuleAction.add_member(:count, Shapes::ShapeRef.new(shape: CountAction, location_name: "Count"))
1073
1101
  RuleAction.add_member(:captcha, Shapes::ShapeRef.new(shape: CaptchaAction, location_name: "Captcha"))
1102
+ RuleAction.add_member(:challenge, Shapes::ShapeRef.new(shape: ChallengeAction, location_name: "Challenge"))
1074
1103
  RuleAction.struct_class = Types::RuleAction
1075
1104
 
1105
+ RuleActionOverride.add_member(:name, Shapes::ShapeRef.new(shape: EntityName, required: true, location_name: "Name"))
1106
+ RuleActionOverride.add_member(:action_to_use, Shapes::ShapeRef.new(shape: RuleAction, required: true, location_name: "ActionToUse"))
1107
+ RuleActionOverride.struct_class = Types::RuleActionOverride
1108
+
1109
+ RuleActionOverrides.member = Shapes::ShapeRef.new(shape: RuleActionOverride)
1110
+
1076
1111
  RuleGroup.add_member(:name, Shapes::ShapeRef.new(shape: EntityName, required: true, location_name: "Name"))
1077
1112
  RuleGroup.add_member(:id, Shapes::ShapeRef.new(shape: EntityId, required: true, location_name: "Id"))
1078
1113
  RuleGroup.add_member(:capacity, Shapes::ShapeRef.new(shape: CapacityUnit, required: true, location_name: "Capacity"))
@@ -1088,6 +1123,7 @@ module Aws::WAFV2
1088
1123
 
1089
1124
  RuleGroupReferenceStatement.add_member(:arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location_name: "ARN"))
1090
1125
  RuleGroupReferenceStatement.add_member(:excluded_rules, Shapes::ShapeRef.new(shape: ExcludedRules, location_name: "ExcludedRules"))
1126
+ RuleGroupReferenceStatement.add_member(:rule_action_overrides, Shapes::ShapeRef.new(shape: RuleActionOverrides, location_name: "RuleActionOverrides"))
1091
1127
  RuleGroupReferenceStatement.struct_class = Types::RuleGroupReferenceStatement
1092
1128
 
1093
1129
  RuleGroupSummaries.member = Shapes::ShapeRef.new(shape: RuleGroupSummary)
@@ -1116,6 +1152,8 @@ module Aws::WAFV2
1116
1152
  SampledHTTPRequest.add_member(:response_code_sent, Shapes::ShapeRef.new(shape: ResponseStatusCode, location_name: "ResponseCodeSent"))
1117
1153
  SampledHTTPRequest.add_member(:labels, Shapes::ShapeRef.new(shape: Labels, location_name: "Labels"))
1118
1154
  SampledHTTPRequest.add_member(:captcha_response, Shapes::ShapeRef.new(shape: CaptchaResponse, location_name: "CaptchaResponse"))
1155
+ SampledHTTPRequest.add_member(:challenge_response, Shapes::ShapeRef.new(shape: ChallengeResponse, location_name: "ChallengeResponse"))
1156
+ SampledHTTPRequest.add_member(:overridden_action, Shapes::ShapeRef.new(shape: Action, location_name: "OverriddenAction"))
1119
1157
  SampledHTTPRequest.struct_class = Types::SampledHTTPRequest
1120
1158
 
1121
1159
  SampledHTTPRequests.member = Shapes::ShapeRef.new(shape: SampledHTTPRequest)
@@ -1184,6 +1222,8 @@ module Aws::WAFV2
1184
1222
  TimeWindow.add_member(:end_time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "EndTime"))
1185
1223
  TimeWindow.struct_class = Types::TimeWindow
1186
1224
 
1225
+ TokenDomains.member = Shapes::ShapeRef.new(shape: TokenDomain)
1226
+
1187
1227
  UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location_name: "ResourceARN"))
1188
1228
  UntagResourceRequest.add_member(:tag_keys, Shapes::ShapeRef.new(shape: TagKeyList, required: true, location_name: "TagKeys"))
1189
1229
  UntagResourceRequest.struct_class = Types::UntagResourceRequest
@@ -1248,6 +1288,8 @@ module Aws::WAFV2
1248
1288
  UpdateWebACLRequest.add_member(:lock_token, Shapes::ShapeRef.new(shape: LockToken, required: true, location_name: "LockToken"))
1249
1289
  UpdateWebACLRequest.add_member(:custom_response_bodies, Shapes::ShapeRef.new(shape: CustomResponseBodies, location_name: "CustomResponseBodies"))
1250
1290
  UpdateWebACLRequest.add_member(:captcha_config, Shapes::ShapeRef.new(shape: CaptchaConfig, location_name: "CaptchaConfig"))
1291
+ UpdateWebACLRequest.add_member(:challenge_config, Shapes::ShapeRef.new(shape: ChallengeConfig, location_name: "ChallengeConfig"))
1292
+ UpdateWebACLRequest.add_member(:token_domains, Shapes::ShapeRef.new(shape: TokenDomains, location_name: "TokenDomains"))
1251
1293
  UpdateWebACLRequest.struct_class = Types::UpdateWebACLRequest
1252
1294
 
1253
1295
  UpdateWebACLResponse.add_member(:next_lock_token, Shapes::ShapeRef.new(shape: LockToken, location_name: "NextLockToken"))
@@ -1341,6 +1383,8 @@ module Aws::WAFV2
1341
1383
  WebACL.add_member(:label_namespace, Shapes::ShapeRef.new(shape: LabelName, location_name: "LabelNamespace"))
1342
1384
  WebACL.add_member(:custom_response_bodies, Shapes::ShapeRef.new(shape: CustomResponseBodies, location_name: "CustomResponseBodies"))
1343
1385
  WebACL.add_member(:captcha_config, Shapes::ShapeRef.new(shape: CaptchaConfig, location_name: "CaptchaConfig"))
1386
+ WebACL.add_member(:challenge_config, Shapes::ShapeRef.new(shape: ChallengeConfig, location_name: "ChallengeConfig"))
1387
+ WebACL.add_member(:token_domains, Shapes::ShapeRef.new(shape: TokenDomains, location_name: "TokenDomains"))
1344
1388
  WebACL.struct_class = Types::WebACL
1345
1389
 
1346
1390
  WebACLSummaries.member = Shapes::ShapeRef.new(shape: WebACLSummary)
@@ -1475,6 +1519,7 @@ module Aws::WAFV2
1475
1519
  o.errors << Shapes::ShapeRef.new(shape: WAFSubscriptionNotFoundException)
1476
1520
  o.errors << Shapes::ShapeRef.new(shape: WAFInvalidOperationException)
1477
1521
  o.errors << Shapes::ShapeRef.new(shape: WAFConfigurationWarningException)
1522
+ o.errors << Shapes::ShapeRef.new(shape: WAFExpiredManagedRuleGroupVersionException)
1478
1523
  end)
1479
1524
 
1480
1525
  api.add_operation(:delete_firewall_manager_rule_groups, Seahorse::Model::Operation.new.tap do |o|
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::WAFV2
11
+ # Endpoint parameters used to influence endpoints per request.
12
+ #
13
+ # @!attribute region
14
+ # The AWS region used to dispatch the request.
15
+ #
16
+ # @return [String]
17
+ #
18
+ # @!attribute use_dual_stack
19
+ # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
20
+ #
21
+ # @return [Boolean]
22
+ #
23
+ # @!attribute use_fips
24
+ # When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
25
+ #
26
+ # @return [Boolean]
27
+ #
28
+ # @!attribute endpoint
29
+ # Override the endpoint used to send this request
30
+ #
31
+ # @return [String]
32
+ #
33
+ EndpointParameters = Struct.new(
34
+ :region,
35
+ :use_dual_stack,
36
+ :use_fips,
37
+ :endpoint,
38
+ ) do
39
+ include Aws::Structure
40
+
41
+ # @api private
42
+ class << self
43
+ PARAM_MAP = {
44
+ 'Region' => :region,
45
+ 'UseDualStack' => :use_dual_stack,
46
+ 'UseFIPS' => :use_fips,
47
+ 'Endpoint' => :endpoint,
48
+ }.freeze
49
+ end
50
+
51
+ def initialize(options = {})
52
+ self[:region] = options[:region]
53
+ self[:use_dual_stack] = options[:use_dual_stack]
54
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
+ if self[:use_dual_stack].nil?
56
+ raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
57
+ end
58
+ self[:use_fips] = options[:use_fips]
59
+ self[:use_fips] = false if self[:use_fips].nil?
60
+ if self[:use_fips].nil?
61
+ raise ArgumentError, "Missing required EndpointParameter: :use_fips"
62
+ end
63
+ self[:endpoint] = options[:endpoint]
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::WAFV2
11
+ class EndpointProvider
12
+ def initialize(rule_set = nil)
13
+ @@rule_set ||= begin
14
+ endpoint_rules = Aws::Json.load(Base64.decode64(RULES))
15
+ Aws::Endpoints::RuleSet.new(
16
+ version: endpoint_rules['version'],
17
+ service_id: endpoint_rules['serviceId'],
18
+ parameters: endpoint_rules['parameters'],
19
+ rules: endpoint_rules['rules']
20
+ )
21
+ end
22
+ @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
+ end
24
+
25
+ def resolve_endpoint(parameters)
26
+ @provider.resolve_endpoint(parameters)
27
+ end
28
+
29
+ # @api private
30
+ RULES = <<-JSON
31
+ eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
32
+ bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1bWVu
33
+ dGF0aW9uIjoiVGhlIEFXUyByZWdpb24gdXNlZCB0byBkaXNwYXRjaCB0aGUg
34
+ cmVxdWVzdC4iLCJ0eXBlIjoiU3RyaW5nIn0sIlVzZUR1YWxTdGFjayI6eyJi
35
+ dWlsdEluIjoiQVdTOjpVc2VEdWFsU3RhY2siLCJyZXF1aXJlZCI6dHJ1ZSwi
36
+ ZGVmYXVsdCI6ZmFsc2UsImRvY3VtZW50YXRpb24iOiJXaGVuIHRydWUsIHVz
37
+ ZSB0aGUgZHVhbC1zdGFjayBlbmRwb2ludC4gSWYgdGhlIGNvbmZpZ3VyZWQg
38
+ ZW5kcG9pbnQgZG9lcyBub3Qgc3VwcG9ydCBkdWFsLXN0YWNrLCBkaXNwYXRj
39
+ aGluZyB0aGUgcmVxdWVzdCBNQVkgcmV0dXJuIGFuIGVycm9yLiIsInR5cGUi
40
+ OiJCb29sZWFuIn0sIlVzZUZJUFMiOnsiYnVpbHRJbiI6IkFXUzo6VXNlRklQ
41
+ UyIsInJlcXVpcmVkIjp0cnVlLCJkZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRh
42
+ dGlvbiI6IldoZW4gdHJ1ZSwgc2VuZCB0aGlzIHJlcXVlc3QgdG8gdGhlIEZJ
43
+ UFMtY29tcGxpYW50IHJlZ2lvbmFsIGVuZHBvaW50LiBJZiB0aGUgY29uZmln
44
+ dXJlZCBlbmRwb2ludCBkb2VzIG5vdCBoYXZlIGEgRklQUyBjb21wbGlhbnQg
45
+ ZW5kcG9pbnQsIGRpc3BhdGNoaW5nIHRoZSByZXF1ZXN0IHdpbGwgcmV0dXJu
46
+ IGFuIGVycm9yLiIsInR5cGUiOiJCb29sZWFuIn0sIkVuZHBvaW50Ijp7ImJ1
47
+ aWx0SW4iOiJTREs6OkVuZHBvaW50IiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1
48
+ bWVudGF0aW9uIjoiT3ZlcnJpZGUgdGhlIGVuZHBvaW50IHVzZWQgdG8gc2Vu
49
+ ZCB0aGlzIHJlcXVlc3QiLCJ0eXBlIjoiU3RyaW5nIn19LCJydWxlcyI6W3si
50
+ Y29uZGl0aW9ucyI6W3siZm4iOiJhd3MucGFydGl0aW9uIiwiYXJndiI6W3si
51
+ cmVmIjoiUmVnaW9uIn1dLCJhc3NpZ24iOiJQYXJ0aXRpb25SZXN1bHQifV0s
52
+ InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
53
+ aXNTZXQiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XX0seyJmbiI6InBh
54
+ cnNlVVJMIiwiYXJndiI6W3sicmVmIjoiRW5kcG9pbnQifV0sImFzc2lnbiI6
55
+ InVybCJ9XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6
56
+ W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQ
57
+ UyJ9LHRydWVdfV0sImVycm9yIjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBG
58
+ SVBTIGFuZCBjdXN0b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0
59
+ eXBlIjoiZXJyb3IifSx7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIs
60
+ InJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMi
61
+ LCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJlcnJv
62
+ ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRHVhbHN0YWNrIGFuZCBjdXN0
63
+ b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0eXBlIjoiZXJyb3Ii
64
+ fSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOnsicmVmIjoi
65
+ RW5kcG9pbnQifSwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlw
66
+ ZSI6ImVuZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29s
67
+ ZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9LHRydWVdfSx7
68
+ ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxT
69
+ dGFjayJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
70
+ dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
71
+ Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
72
+ In0sInN1cHBvcnRzRklQUyJdfV19LHsiZm4iOiJib29sZWFuRXF1YWxzIiwi
73
+ YXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQ
74
+ YXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5
75
+ cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2lu
76
+ dCI6eyJ1cmwiOiJodHRwczovL3dhZnYyLWZpcHMue1JlZ2lvbn0ue1BhcnRp
77
+ dGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVydGllcyI6
78
+ e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7ImNvbmRp
79
+ dGlvbnMiOltdLCJlcnJvciI6IkZJUFMgYW5kIER1YWxTdGFjayBhcmUgZW5h
80
+ YmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgb25l
81
+ IG9yIGJvdGgiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3si
82
+ Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9
83
+ LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMi
84
+ Olt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJn
85
+ ZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1
86
+ cHBvcnRzRklQUyJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29u
87
+ ZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlv
88
+ bnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3dhZnYyLWZpcHMu
89
+ e1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVy
90
+ dGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
91
+ LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBpcyBlbmFibGVkIGJ1
92
+ dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IEZJUFMiLCJ0eXBl
93
+ IjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1
94
+ YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwi
95
+ dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJi
96
+ b29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJh
97
+ cmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFs
98
+ U3RhY2siXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlv
99
+ bnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3dhZnYyLntSZWdp
100
+ b259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInBy
101
+ b3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9
102
+ XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5h
103
+ YmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFs
104
+ U3RhY2siLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVu
105
+ ZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vd2FmdjIue1JlZ2lvbn0ue1BhcnRp
106
+ dGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVydGllcyI6e30sImhlYWRl
107
+ cnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
108
+
109
+ JSON
110
+ end
111
+ end