aws-sdk-inspector2 1.5.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 550bf40c860a707908defa7adc3b507a6159dcda536cb6628dcdebb03bb69c00
4
- data.tar.gz: 95bf9a63a5502a7030bf4755fb3bed86cefa2971e5a99485726c1bf1a3670bed
3
+ metadata.gz: 73e3edf61bf8e8e5224f5447dbe0f3e1a398f89c6f9113e8ebc83c8727fdcefc
4
+ data.tar.gz: 7fa4dfc68c818951770c074b9fc4f8cc733fac3e7e7070f9b8329057e0b7a544
5
5
  SHA512:
6
- metadata.gz: 60aba8cab1bbb4994f08cbf8d076e598f5711f76b0bd273fd784ab4b2763cb80d52b74908d4370f08dbdc2a92f2c37f119bf6b2eae4d921d6f4b911c7fa36158
7
- data.tar.gz: 572b4f4a7db6f8ea9c27f31864f90a025799fc67ac24727fc7712a6b71df65cc5a24186235f7f3a2bc3ccdbf9f69745e37e121d013dbe6af331bce91f3800042
6
+ metadata.gz: 4c551baa743c674258a1d16241d9e64f0e788b2c8e44ad878b475888ee1345ef547f4393aaa703203cec140a8975d72a490338cede900b38427881bdffd3b56e
7
+ data.tar.gz: 84a8b0a894d3cadd8052b74f6b2cf0563f10fb02dc19de860766db4a0806163710e09cbe134b9f72712c2eb0ad8d4e1fec878beced0702aef669e6d10e4ee05d
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.7.0 (2022-10-25)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ 1.6.0 (2022-09-07)
10
+ ------------------
11
+
12
+ * Feature - This release adds new fields like fixAvailable, fixedInVersion and remediation to the finding model. The requirement to have vulnerablePackages in the finding model has also been removed. The documentation has been updated to reflect these changes.
13
+
4
14
  1.5.0 (2022-07-14)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.0
1
+ 1.7.0
@@ -30,7 +30,7 @@ require 'aws-sdk-core/plugins/http_checksum.rb'
30
30
  require 'aws-sdk-core/plugins/checksum_algorithm.rb'
31
31
  require 'aws-sdk-core/plugins/defaults_mode.rb'
32
32
  require 'aws-sdk-core/plugins/recursion_detection.rb'
33
- require 'aws-sdk-core/plugins/signature_v4.rb'
33
+ require 'aws-sdk-core/plugins/sign.rb'
34
34
  require 'aws-sdk-core/plugins/protocols/rest_json.rb'
35
35
 
36
36
  Aws::Plugins::GlobalConfiguration.add_identifier(:inspector2)
@@ -79,8 +79,9 @@ module Aws::Inspector2
79
79
  add_plugin(Aws::Plugins::ChecksumAlgorithm)
80
80
  add_plugin(Aws::Plugins::DefaultsMode)
81
81
  add_plugin(Aws::Plugins::RecursionDetection)
82
- add_plugin(Aws::Plugins::SignatureV4)
82
+ add_plugin(Aws::Plugins::Sign)
83
83
  add_plugin(Aws::Plugins::Protocols::RestJson)
84
+ add_plugin(Aws::Inspector2::Plugins::Endpoints)
84
85
 
85
86
  # @overload initialize(options)
86
87
  # @param [Hash] options
@@ -287,6 +288,19 @@ module Aws::Inspector2
287
288
  # ** Please note ** When response stubbing is enabled, no HTTP
288
289
  # requests are made, and retries are disabled.
289
290
  #
291
+ # @option options [Aws::TokenProvider] :token_provider
292
+ # A Bearer Token Provider. This can be an instance of any one of the
293
+ # following classes:
294
+ #
295
+ # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
296
+ # tokens.
297
+ #
298
+ # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
299
+ # access token generated from `aws login`.
300
+ #
301
+ # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
302
+ # will be used to search for tokens configured for your profile in shared configuration files.
303
+ #
290
304
  # @option options [Boolean] :use_dualstack_endpoint
291
305
  # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
292
306
  # will be used if available.
@@ -300,6 +314,9 @@ module Aws::Inspector2
300
314
  # When `true`, request parameters are validated before
301
315
  # sending the request.
302
316
  #
317
+ # @option options [Aws::Inspector2::EndpointProvider] :endpoint_provider
318
+ # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::Inspector2::EndpointParameters`
319
+ #
303
320
  # @option options [URI::HTTP,String] :http_proxy A proxy to send
304
321
  # requests through. Formatted like 'http://proxy.com:123'.
305
322
  #
@@ -625,6 +642,12 @@ module Aws::Inspector2
625
642
  # start_inclusive: Time.now,
626
643
  # },
627
644
  # ],
645
+ # fix_available: [
646
+ # {
647
+ # comparison: "EQUALS", # required, accepts EQUALS, PREFIX, NOT_EQUALS
648
+ # value: "StringInput", # required
649
+ # },
650
+ # ],
628
651
  # inspector_score: [
629
652
  # {
630
653
  # lower_inclusive: 1.0,
@@ -874,6 +897,12 @@ module Aws::Inspector2
874
897
  # start_inclusive: Time.now,
875
898
  # },
876
899
  # ],
900
+ # fix_available: [
901
+ # {
902
+ # comparison: "EQUALS", # required, accepts EQUALS, PREFIX, NOT_EQUALS
903
+ # value: "StringInput", # required
904
+ # },
905
+ # ],
877
906
  # inspector_score: [
878
907
  # {
879
908
  # lower_inclusive: 1.0,
@@ -1373,6 +1402,9 @@ module Aws::Inspector2
1373
1402
  # resp.filter_criteria.first_observed_at #=> Array
1374
1403
  # resp.filter_criteria.first_observed_at[0].end_inclusive #=> Time
1375
1404
  # resp.filter_criteria.first_observed_at[0].start_inclusive #=> Time
1405
+ # resp.filter_criteria.fix_available #=> Array
1406
+ # resp.filter_criteria.fix_available[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS"
1407
+ # resp.filter_criteria.fix_available[0].value #=> String
1376
1408
  # resp.filter_criteria.inspector_score #=> Array
1377
1409
  # resp.filter_criteria.inspector_score[0].lower_inclusive #=> Float
1378
1410
  # resp.filter_criteria.inspector_score[0].upper_inclusive #=> Float
@@ -1620,7 +1652,7 @@ module Aws::Inspector2
1620
1652
  # resp.covered_resources[0].resource_metadata.ecr_repository.name #=> String
1621
1653
  # resp.covered_resources[0].resource_metadata.ecr_repository.scan_frequency #=> String, one of "MANUAL", "SCAN_ON_PUSH", "CONTINUOUS_SCAN"
1622
1654
  # resp.covered_resources[0].resource_type #=> String, one of "AWS_EC2_INSTANCE", "AWS_ECR_CONTAINER_IMAGE", "AWS_ECR_REPOSITORY"
1623
- # resp.covered_resources[0].scan_status.reason #=> String, one of "PENDING_INITIAL_SCAN", "ACCESS_DENIED", "INTERNAL_ERROR", "UNMANAGED_EC2_INSTANCE", "UNSUPPORTED_OS", "SCAN_ELIGIBILITY_EXPIRED", "RESOURCE_TERMINATED", "SUCCESSFUL", "NO_RESOURCES_FOUND", "IMAGE_SIZE_EXCEEDED", "SCAN_FREQUENCY_MANUAL", "SCAN_FREQUENCY_SCAN_ON_PUSH", "EC2_INSTANCE_STOPPED", "PENDING_DISABLE"
1655
+ # resp.covered_resources[0].scan_status.reason #=> String, one of "PENDING_INITIAL_SCAN", "ACCESS_DENIED", "INTERNAL_ERROR", "UNMANAGED_EC2_INSTANCE", "UNSUPPORTED_OS", "SCAN_ELIGIBILITY_EXPIRED", "RESOURCE_TERMINATED", "SUCCESSFUL", "NO_RESOURCES_FOUND", "IMAGE_SIZE_EXCEEDED", "SCAN_FREQUENCY_MANUAL", "SCAN_FREQUENCY_SCAN_ON_PUSH", "EC2_INSTANCE_STOPPED", "PENDING_DISABLE", "NO_INVENTORY", "STALE_INVENTORY"
1624
1656
  # resp.covered_resources[0].scan_status.status_code #=> String, one of "ACTIVE", "INACTIVE"
1625
1657
  # resp.covered_resources[0].scan_type #=> String, one of "NETWORK", "PACKAGE"
1626
1658
  # resp.next_token #=> String
@@ -1870,6 +1902,9 @@ module Aws::Inspector2
1870
1902
  # resp.filters[0].criteria.first_observed_at #=> Array
1871
1903
  # resp.filters[0].criteria.first_observed_at[0].end_inclusive #=> Time
1872
1904
  # resp.filters[0].criteria.first_observed_at[0].start_inclusive #=> Time
1905
+ # resp.filters[0].criteria.fix_available #=> Array
1906
+ # resp.filters[0].criteria.fix_available[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS"
1907
+ # resp.filters[0].criteria.fix_available[0].value #=> String
1873
1908
  # resp.filters[0].criteria.inspector_score #=> Array
1874
1909
  # resp.filters[0].criteria.inspector_score[0].lower_inclusive #=> Float
1875
1910
  # resp.filters[0].criteria.inspector_score[0].upper_inclusive #=> Float
@@ -2343,6 +2378,12 @@ module Aws::Inspector2
2343
2378
  # start_inclusive: Time.now,
2344
2379
  # },
2345
2380
  # ],
2381
+ # fix_available: [
2382
+ # {
2383
+ # comparison: "EQUALS", # required, accepts EQUALS, PREFIX, NOT_EQUALS
2384
+ # value: "StringInput", # required
2385
+ # },
2386
+ # ],
2346
2387
  # inspector_score: [
2347
2388
  # {
2348
2389
  # lower_inclusive: 1.0,
@@ -2472,6 +2513,7 @@ module Aws::Inspector2
2472
2513
  # resp.findings[0].description #=> String
2473
2514
  # resp.findings[0].finding_arn #=> String
2474
2515
  # resp.findings[0].first_observed_at #=> Time
2516
+ # resp.findings[0].fix_available #=> String, one of "YES", "NO", "PARTIAL"
2475
2517
  # resp.findings[0].inspector_score #=> Float
2476
2518
  # resp.findings[0].inspector_score_details.adjusted_cvss.adjustments #=> Array
2477
2519
  # resp.findings[0].inspector_score_details.adjusted_cvss.adjustments[0].metric #=> String
@@ -2511,6 +2553,7 @@ module Aws::Inspector2
2511
2553
  # resp.findings[0].package_vulnerability_details.vulnerable_packages[0].name #=> String
2512
2554
  # resp.findings[0].package_vulnerability_details.vulnerable_packages[0].package_manager #=> String, one of "BUNDLER", "CARGO", "COMPOSER", "NPM", "NUGET", "PIPENV", "POETRY", "YARN", "GOBINARY", "GOMOD", "JAR", "OS", "PIP", "PYTHONPKG", "NODEPKG", "POM"
2513
2555
  # resp.findings[0].package_vulnerability_details.vulnerable_packages[0].release #=> String
2556
+ # resp.findings[0].package_vulnerability_details.vulnerable_packages[0].remediation #=> String
2514
2557
  # resp.findings[0].package_vulnerability_details.vulnerable_packages[0].source_layer_hash #=> String
2515
2558
  # resp.findings[0].package_vulnerability_details.vulnerable_packages[0].version #=> String
2516
2559
  # resp.findings[0].remediation.recommendation.url #=> String
@@ -2899,6 +2942,12 @@ module Aws::Inspector2
2899
2942
  # start_inclusive: Time.now,
2900
2943
  # },
2901
2944
  # ],
2945
+ # fix_available: [
2946
+ # {
2947
+ # comparison: "EQUALS", # required, accepts EQUALS, PREFIX, NOT_EQUALS
2948
+ # value: "StringInput", # required
2949
+ # },
2950
+ # ],
2902
2951
  # inspector_score: [
2903
2952
  # {
2904
2953
  # lower_inclusive: 1.0,
@@ -3076,7 +3125,7 @@ module Aws::Inspector2
3076
3125
  params: params,
3077
3126
  config: config)
3078
3127
  context[:gem_name] = 'aws-sdk-inspector2'
3079
- context[:gem_version] = '1.5.0'
3128
+ context[:gem_version] = '1.7.0'
3080
3129
  Seahorse::Client::Request.new(handlers, context)
3081
3130
  end
3082
3131
 
@@ -142,6 +142,7 @@ module Aws::Inspector2
142
142
  FindingTypeAggregation = Shapes::StructureShape.new(name: 'FindingTypeAggregation')
143
143
  FindingTypeAggregationResponse = Shapes::StructureShape.new(name: 'FindingTypeAggregationResponse')
144
144
  FindingTypeSortBy = Shapes::StringShape.new(name: 'FindingTypeSortBy')
145
+ FixAvailable = Shapes::StringShape.new(name: 'FixAvailable')
145
146
  FreeTrialAccountInfo = Shapes::StructureShape.new(name: 'FreeTrialAccountInfo')
146
147
  FreeTrialAccountInfoList = Shapes::ListShape.new(name: 'FreeTrialAccountInfoList')
147
148
  FreeTrialInfo = Shapes::StructureShape.new(name: 'FreeTrialInfo')
@@ -316,6 +317,7 @@ module Aws::Inspector2
316
317
  VulnerabilityIdList = Shapes::ListShape.new(name: 'VulnerabilityIdList')
317
318
  VulnerablePackage = Shapes::StructureShape.new(name: 'VulnerablePackage')
318
319
  VulnerablePackageList = Shapes::ListShape.new(name: 'VulnerablePackageList')
320
+ VulnerablePackageRemediation = Shapes::StringShape.new(name: 'VulnerablePackageRemediation')
319
321
 
320
322
  AccessDeniedException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
321
323
  AccessDeniedException.struct_class = Types::AccessDeniedException
@@ -398,7 +400,7 @@ module Aws::Inspector2
398
400
  AmiAggregation.struct_class = Types::AmiAggregation
399
401
 
400
402
  AmiAggregationResponse.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location_name: "accountId"))
401
- AmiAggregationResponse.add_member(:affected_instances, Shapes::ShapeRef.new(shape: Long, location_name: "affectedInstances"))
403
+ AmiAggregationResponse.add_member(:affected_instances, Shapes::ShapeRef.new(shape: Long, location_name: "affectedInstances", metadata: {"box"=>true}))
402
404
  AmiAggregationResponse.add_member(:ami, Shapes::ShapeRef.new(shape: AmiId, required: true, location_name: "ami"))
403
405
  AmiAggregationResponse.add_member(:severity_counts, Shapes::ShapeRef.new(shape: SeverityCounts, location_name: "severityCounts"))
404
406
  AmiAggregationResponse.struct_class = Types::AmiAggregationResponse
@@ -409,8 +411,8 @@ module Aws::Inspector2
409
411
  AssociateMemberResponse.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location_name: "accountId"))
410
412
  AssociateMemberResponse.struct_class = Types::AssociateMemberResponse
411
413
 
412
- AutoEnable.add_member(:ec2, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "ec2"))
413
- AutoEnable.add_member(:ecr, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "ecr"))
414
+ AutoEnable.add_member(:ec2, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "ec2", metadata: {"box"=>true}))
415
+ AutoEnable.add_member(:ecr, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "ecr", metadata: {"box"=>true}))
414
416
  AutoEnable.struct_class = Types::AutoEnable
415
417
 
416
418
  AwsEc2InstanceDetails.add_member(:iam_instance_profile_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "iamInstanceProfileArn"))
@@ -483,7 +485,7 @@ module Aws::Inspector2
483
485
  ConflictException.add_member(:resource_type, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceType"))
484
486
  ConflictException.struct_class = Types::ConflictException
485
487
 
486
- Counts.add_member(:count, Shapes::ShapeRef.new(shape: AggCounts, location_name: "count"))
488
+ Counts.add_member(:count, Shapes::ShapeRef.new(shape: AggCounts, location_name: "count", metadata: {"default"=>0}))
487
489
  Counts.add_member(:group_key, Shapes::ShapeRef.new(shape: GroupKey, location_name: "groupKey"))
488
490
  Counts.struct_class = Types::Counts
489
491
 
@@ -542,7 +544,7 @@ module Aws::Inspector2
542
544
  CreateFindingsReportResponse.add_member(:report_id, Shapes::ShapeRef.new(shape: ReportId, location_name: "reportId"))
543
545
  CreateFindingsReportResponse.struct_class = Types::CreateFindingsReportResponse
544
546
 
545
- CvssScore.add_member(:base_score, Shapes::ShapeRef.new(shape: Double, required: true, location_name: "baseScore"))
547
+ CvssScore.add_member(:base_score, Shapes::ShapeRef.new(shape: Double, required: true, location_name: "baseScore", metadata: {"box"=>true}))
546
548
  CvssScore.add_member(:scoring_vector, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "scoringVector"))
547
549
  CvssScore.add_member(:source, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "source"))
548
550
  CvssScore.add_member(:version, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "version"))
@@ -556,7 +558,7 @@ module Aws::Inspector2
556
558
 
557
559
  CvssScoreDetails.add_member(:adjustments, Shapes::ShapeRef.new(shape: CvssScoreAdjustmentList, location_name: "adjustments"))
558
560
  CvssScoreDetails.add_member(:cvss_source, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "cvssSource"))
559
- CvssScoreDetails.add_member(:score, Shapes::ShapeRef.new(shape: Double, required: true, location_name: "score"))
561
+ CvssScoreDetails.add_member(:score, Shapes::ShapeRef.new(shape: Double, required: true, location_name: "score", metadata: {"box"=>true}))
560
562
  CvssScoreDetails.add_member(:score_source, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "scoreSource"))
561
563
  CvssScoreDetails.add_member(:scoring_vector, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "scoringVector"))
562
564
  CvssScoreDetails.add_member(:version, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "version"))
@@ -589,7 +591,7 @@ module Aws::Inspector2
589
591
  DescribeOrganizationConfigurationRequest.struct_class = Types::DescribeOrganizationConfigurationRequest
590
592
 
591
593
  DescribeOrganizationConfigurationResponse.add_member(:auto_enable, Shapes::ShapeRef.new(shape: AutoEnable, location_name: "autoEnable"))
592
- DescribeOrganizationConfigurationResponse.add_member(:max_account_limit_reached, Shapes::ShapeRef.new(shape: Boolean, location_name: "maxAccountLimitReached"))
594
+ DescribeOrganizationConfigurationResponse.add_member(:max_account_limit_reached, Shapes::ShapeRef.new(shape: Boolean, location_name: "maxAccountLimitReached", metadata: {"box"=>true}))
593
595
  DescribeOrganizationConfigurationResponse.struct_class = Types::DescribeOrganizationConfigurationResponse
594
596
 
595
597
  Destination.add_member(:bucket_name, Shapes::ShapeRef.new(shape: String, required: true, location_name: "bucketName"))
@@ -631,7 +633,7 @@ module Aws::Inspector2
631
633
  Ec2InstanceAggregationResponse.add_member(:ami, Shapes::ShapeRef.new(shape: AmiId, location_name: "ami"))
632
634
  Ec2InstanceAggregationResponse.add_member(:instance_id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "instanceId"))
633
635
  Ec2InstanceAggregationResponse.add_member(:instance_tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "instanceTags"))
634
- Ec2InstanceAggregationResponse.add_member(:network_findings, Shapes::ShapeRef.new(shape: Long, location_name: "networkFindings"))
636
+ Ec2InstanceAggregationResponse.add_member(:network_findings, Shapes::ShapeRef.new(shape: Long, location_name: "networkFindings", metadata: {"box"=>true}))
635
637
  Ec2InstanceAggregationResponse.add_member(:operating_system, Shapes::ShapeRef.new(shape: String, location_name: "operatingSystem"))
636
638
  Ec2InstanceAggregationResponse.add_member(:severity_counts, Shapes::ShapeRef.new(shape: SeverityCounts, location_name: "severityCounts"))
637
639
  Ec2InstanceAggregationResponse.struct_class = Types::Ec2InstanceAggregationResponse
@@ -716,6 +718,7 @@ module Aws::Inspector2
716
718
  FilterCriteria.add_member(:finding_status, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "findingStatus"))
717
719
  FilterCriteria.add_member(:finding_type, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "findingType"))
718
720
  FilterCriteria.add_member(:first_observed_at, Shapes::ShapeRef.new(shape: DateFilterList, location_name: "firstObservedAt"))
721
+ FilterCriteria.add_member(:fix_available, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "fixAvailable"))
719
722
  FilterCriteria.add_member(:inspector_score, Shapes::ShapeRef.new(shape: NumberFilterList, location_name: "inspectorScore"))
720
723
  FilterCriteria.add_member(:last_observed_at, Shapes::ShapeRef.new(shape: DateFilterList, location_name: "lastObservedAt"))
721
724
  FilterCriteria.add_member(:network_protocol, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "networkProtocol"))
@@ -739,7 +742,8 @@ module Aws::Inspector2
739
742
  Finding.add_member(:description, Shapes::ShapeRef.new(shape: FindingDescription, required: true, location_name: "description"))
740
743
  Finding.add_member(:finding_arn, Shapes::ShapeRef.new(shape: FindingArn, required: true, location_name: "findingArn"))
741
744
  Finding.add_member(:first_observed_at, Shapes::ShapeRef.new(shape: DateTimeTimestamp, required: true, location_name: "firstObservedAt"))
742
- Finding.add_member(:inspector_score, Shapes::ShapeRef.new(shape: Double, location_name: "inspectorScore"))
745
+ Finding.add_member(:fix_available, Shapes::ShapeRef.new(shape: FixAvailable, location_name: "fixAvailable"))
746
+ Finding.add_member(:inspector_score, Shapes::ShapeRef.new(shape: Double, location_name: "inspectorScore", metadata: {"box"=>true}))
743
747
  Finding.add_member(:inspector_score_details, Shapes::ShapeRef.new(shape: InspectorScoreDetails, location_name: "inspectorScoreDetails"))
744
748
  Finding.add_member(:last_observed_at, Shapes::ShapeRef.new(shape: DateTimeTimestamp, required: true, location_name: "lastObservedAt"))
745
749
  Finding.add_member(:network_reachability_details, Shapes::ShapeRef.new(shape: NetworkReachabilityDetails, location_name: "networkReachabilityDetails"))
@@ -833,14 +837,14 @@ module Aws::Inspector2
833
837
  InspectorScoreDetails.struct_class = Types::InspectorScoreDetails
834
838
 
835
839
  InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
836
- InternalServerException.add_member(:retry_after_seconds, Shapes::ShapeRef.new(shape: Integer, location: "header", location_name: "Retry-After"))
840
+ InternalServerException.add_member(:retry_after_seconds, Shapes::ShapeRef.new(shape: Integer, location: "header", location_name: "Retry-After", metadata: {"box"=>true}))
837
841
  InternalServerException.struct_class = Types::InternalServerException
838
842
 
839
843
  IpV4AddressList.member = Shapes::ShapeRef.new(shape: IpV4Address)
840
844
 
841
845
  IpV6AddressList.member = Shapes::ShapeRef.new(shape: IpV6Address)
842
846
 
843
- ListAccountPermissionsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListAccountPermissionsMaxResults, location_name: "maxResults"))
847
+ ListAccountPermissionsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListAccountPermissionsMaxResults, location_name: "maxResults", metadata: {"box"=>true}))
844
848
  ListAccountPermissionsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
845
849
  ListAccountPermissionsRequest.add_member(:service, Shapes::ShapeRef.new(shape: Service, location_name: "service"))
846
850
  ListAccountPermissionsRequest.struct_class = Types::ListAccountPermissionsRequest
@@ -850,7 +854,7 @@ module Aws::Inspector2
850
854
  ListAccountPermissionsResponse.struct_class = Types::ListAccountPermissionsResponse
851
855
 
852
856
  ListCoverageRequest.add_member(:filter_criteria, Shapes::ShapeRef.new(shape: CoverageFilterCriteria, location_name: "filterCriteria"))
853
- ListCoverageRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListCoverageMaxResults, location_name: "maxResults"))
857
+ ListCoverageRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListCoverageMaxResults, location_name: "maxResults", metadata: {"box"=>true}))
854
858
  ListCoverageRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
855
859
  ListCoverageRequest.struct_class = Types::ListCoverageRequest
856
860
 
@@ -865,10 +869,10 @@ module Aws::Inspector2
865
869
 
866
870
  ListCoverageStatisticsResponse.add_member(:counts_by_group, Shapes::ShapeRef.new(shape: CountsList, location_name: "countsByGroup"))
867
871
  ListCoverageStatisticsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
868
- ListCoverageStatisticsResponse.add_member(:total_counts, Shapes::ShapeRef.new(shape: Long, required: true, location_name: "totalCounts"))
872
+ ListCoverageStatisticsResponse.add_member(:total_counts, Shapes::ShapeRef.new(shape: Long, required: true, location_name: "totalCounts", metadata: {"box"=>true}))
869
873
  ListCoverageStatisticsResponse.struct_class = Types::ListCoverageStatisticsResponse
870
874
 
871
- ListDelegatedAdminAccountsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListDelegatedAdminMaxResults, location_name: "maxResults"))
875
+ ListDelegatedAdminAccountsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListDelegatedAdminMaxResults, location_name: "maxResults", metadata: {"box"=>true}))
872
876
  ListDelegatedAdminAccountsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
873
877
  ListDelegatedAdminAccountsRequest.struct_class = Types::ListDelegatedAdminAccountsRequest
874
878
 
@@ -878,7 +882,7 @@ module Aws::Inspector2
878
882
 
879
883
  ListFiltersRequest.add_member(:action, Shapes::ShapeRef.new(shape: FilterAction, location_name: "action"))
880
884
  ListFiltersRequest.add_member(:arns, Shapes::ShapeRef.new(shape: FilterArnList, location_name: "arns"))
881
- ListFiltersRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListFilterMaxResults, location_name: "maxResults"))
885
+ ListFiltersRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListFilterMaxResults, location_name: "maxResults", metadata: {"box"=>true}))
882
886
  ListFiltersRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
883
887
  ListFiltersRequest.struct_class = Types::ListFiltersRequest
884
888
 
@@ -889,7 +893,7 @@ module Aws::Inspector2
889
893
  ListFindingAggregationsRequest.add_member(:account_ids, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "accountIds"))
890
894
  ListFindingAggregationsRequest.add_member(:aggregation_request, Shapes::ShapeRef.new(shape: AggregationRequest, location_name: "aggregationRequest"))
891
895
  ListFindingAggregationsRequest.add_member(:aggregation_type, Shapes::ShapeRef.new(shape: AggregationType, required: true, location_name: "aggregationType"))
892
- ListFindingAggregationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListFindingAggregationsMaxResults, location_name: "maxResults"))
896
+ ListFindingAggregationsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListFindingAggregationsMaxResults, location_name: "maxResults", metadata: {"box"=>true}))
893
897
  ListFindingAggregationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
894
898
  ListFindingAggregationsRequest.struct_class = Types::ListFindingAggregationsRequest
895
899
 
@@ -899,7 +903,7 @@ module Aws::Inspector2
899
903
  ListFindingAggregationsResponse.struct_class = Types::ListFindingAggregationsResponse
900
904
 
901
905
  ListFindingsRequest.add_member(:filter_criteria, Shapes::ShapeRef.new(shape: FilterCriteria, location_name: "filterCriteria"))
902
- ListFindingsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListFindingsMaxResults, location_name: "maxResults"))
906
+ ListFindingsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListFindingsMaxResults, location_name: "maxResults", metadata: {"box"=>true}))
903
907
  ListFindingsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
904
908
  ListFindingsRequest.add_member(:sort_criteria, Shapes::ShapeRef.new(shape: SortCriteria, location_name: "sortCriteria"))
905
909
  ListFindingsRequest.struct_class = Types::ListFindingsRequest
@@ -908,9 +912,9 @@ module Aws::Inspector2
908
912
  ListFindingsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
909
913
  ListFindingsResponse.struct_class = Types::ListFindingsResponse
910
914
 
911
- ListMembersRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListMembersMaxResults, location_name: "maxResults"))
915
+ ListMembersRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListMembersMaxResults, location_name: "maxResults", metadata: {"box"=>true}))
912
916
  ListMembersRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
913
- ListMembersRequest.add_member(:only_associated, Shapes::ShapeRef.new(shape: Boolean, location_name: "onlyAssociated"))
917
+ ListMembersRequest.add_member(:only_associated, Shapes::ShapeRef.new(shape: Boolean, location_name: "onlyAssociated", metadata: {"box"=>true}))
914
918
  ListMembersRequest.struct_class = Types::ListMembersRequest
915
919
 
916
920
  ListMembersResponse.add_member(:members, Shapes::ShapeRef.new(shape: MemberList, location_name: "members"))
@@ -924,7 +928,7 @@ module Aws::Inspector2
924
928
  ListTagsForResourceResponse.struct_class = Types::ListTagsForResourceResponse
925
929
 
926
930
  ListUsageTotalsRequest.add_member(:account_ids, Shapes::ShapeRef.new(shape: UsageAccountIdList, location_name: "accountIds"))
927
- ListUsageTotalsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListUsageTotalsMaxResults, location_name: "maxResults"))
931
+ ListUsageTotalsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: ListUsageTotalsMaxResults, location_name: "maxResults", metadata: {"box"=>true}))
928
932
  ListUsageTotalsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: ListUsageTotalsNextToken, location_name: "nextToken"))
929
933
  ListUsageTotalsRequest.struct_class = Types::ListUsageTotalsRequest
930
934
 
@@ -957,8 +961,8 @@ module Aws::Inspector2
957
961
 
958
962
  NonEmptyStringList.member = Shapes::ShapeRef.new(shape: NonEmptyString)
959
963
 
960
- NumberFilter.add_member(:lower_inclusive, Shapes::ShapeRef.new(shape: Double, location_name: "lowerInclusive"))
961
- NumberFilter.add_member(:upper_inclusive, Shapes::ShapeRef.new(shape: Double, location_name: "upperInclusive"))
964
+ NumberFilter.add_member(:lower_inclusive, Shapes::ShapeRef.new(shape: Double, location_name: "lowerInclusive", metadata: {"box"=>true}))
965
+ NumberFilter.add_member(:upper_inclusive, Shapes::ShapeRef.new(shape: Double, location_name: "upperInclusive", metadata: {"box"=>true}))
962
966
  NumberFilter.struct_class = Types::NumberFilter
963
967
 
964
968
  NumberFilterList.member = Shapes::ShapeRef.new(shape: NumberFilter)
@@ -992,7 +996,7 @@ module Aws::Inspector2
992
996
  PackageVulnerabilityDetails.add_member(:vendor_severity, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "vendorSeverity"))
993
997
  PackageVulnerabilityDetails.add_member(:vendor_updated_at, Shapes::ShapeRef.new(shape: DateTimeTimestamp, location_name: "vendorUpdatedAt"))
994
998
  PackageVulnerabilityDetails.add_member(:vulnerability_id, Shapes::ShapeRef.new(shape: VulnerabilityId, required: true, location_name: "vulnerabilityId"))
995
- PackageVulnerabilityDetails.add_member(:vulnerable_packages, Shapes::ShapeRef.new(shape: VulnerablePackageList, required: true, location_name: "vulnerablePackages"))
999
+ PackageVulnerabilityDetails.add_member(:vulnerable_packages, Shapes::ShapeRef.new(shape: VulnerablePackageList, location_name: "vulnerablePackages"))
996
1000
  PackageVulnerabilityDetails.struct_class = Types::PackageVulnerabilityDetails
997
1001
 
998
1002
  Permission.add_member(:operation, Shapes::ShapeRef.new(shape: Operation, required: true, location_name: "operation"))
@@ -1001,12 +1005,12 @@ module Aws::Inspector2
1001
1005
 
1002
1006
  Permissions.member = Shapes::ShapeRef.new(shape: Permission)
1003
1007
 
1004
- PortRange.add_member(:begin, Shapes::ShapeRef.new(shape: Port, required: true, location_name: "begin"))
1005
- PortRange.add_member(:end, Shapes::ShapeRef.new(shape: Port, required: true, location_name: "end"))
1008
+ PortRange.add_member(:begin, Shapes::ShapeRef.new(shape: Port, required: true, location_name: "begin", metadata: {"box"=>true}))
1009
+ PortRange.add_member(:end, Shapes::ShapeRef.new(shape: Port, required: true, location_name: "end", metadata: {"box"=>true}))
1006
1010
  PortRange.struct_class = Types::PortRange
1007
1011
 
1008
- PortRangeFilter.add_member(:begin_inclusive, Shapes::ShapeRef.new(shape: Port, location_name: "beginInclusive"))
1009
- PortRangeFilter.add_member(:end_inclusive, Shapes::ShapeRef.new(shape: Port, location_name: "endInclusive"))
1012
+ PortRangeFilter.add_member(:begin_inclusive, Shapes::ShapeRef.new(shape: Port, location_name: "beginInclusive", metadata: {"box"=>true}))
1013
+ PortRangeFilter.add_member(:end_inclusive, Shapes::ShapeRef.new(shape: Port, location_name: "endInclusive", metadata: {"box"=>true}))
1010
1014
  PortRangeFilter.struct_class = Types::PortRangeFilter
1011
1015
 
1012
1016
  PortRangeFilterList.member = Shapes::ShapeRef.new(shape: PortRangeFilter)
@@ -1024,7 +1028,7 @@ module Aws::Inspector2
1024
1028
  RepositoryAggregation.struct_class = Types::RepositoryAggregation
1025
1029
 
1026
1030
  RepositoryAggregationResponse.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, location_name: "accountId"))
1027
- RepositoryAggregationResponse.add_member(:affected_images, Shapes::ShapeRef.new(shape: Long, location_name: "affectedImages"))
1031
+ RepositoryAggregationResponse.add_member(:affected_images, Shapes::ShapeRef.new(shape: Long, location_name: "affectedImages", metadata: {"box"=>true}))
1028
1032
  RepositoryAggregationResponse.add_member(:repository, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "repository"))
1029
1033
  RepositoryAggregationResponse.add_member(:severity_counts, Shapes::ShapeRef.new(shape: SeverityCounts, location_name: "severityCounts"))
1030
1034
  RepositoryAggregationResponse.struct_class = Types::RepositoryAggregationResponse
@@ -1067,10 +1071,10 @@ module Aws::Inspector2
1067
1071
  ServiceQuotaExceededException.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "resourceId"))
1068
1072
  ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException
1069
1073
 
1070
- SeverityCounts.add_member(:all, Shapes::ShapeRef.new(shape: Long, location_name: "all"))
1071
- SeverityCounts.add_member(:critical, Shapes::ShapeRef.new(shape: Long, location_name: "critical"))
1072
- SeverityCounts.add_member(:high, Shapes::ShapeRef.new(shape: Long, location_name: "high"))
1073
- SeverityCounts.add_member(:medium, Shapes::ShapeRef.new(shape: Long, location_name: "medium"))
1074
+ SeverityCounts.add_member(:all, Shapes::ShapeRef.new(shape: Long, location_name: "all", metadata: {"box"=>true}))
1075
+ SeverityCounts.add_member(:critical, Shapes::ShapeRef.new(shape: Long, location_name: "critical", metadata: {"box"=>true}))
1076
+ SeverityCounts.add_member(:high, Shapes::ShapeRef.new(shape: Long, location_name: "high", metadata: {"box"=>true}))
1077
+ SeverityCounts.add_member(:medium, Shapes::ShapeRef.new(shape: Long, location_name: "medium", metadata: {"box"=>true}))
1074
1078
  SeverityCounts.struct_class = Types::SeverityCounts
1075
1079
 
1076
1080
  SortCriteria.add_member(:field, Shapes::ShapeRef.new(shape: SortField, required: true, location_name: "field"))
@@ -1154,8 +1158,8 @@ module Aws::Inspector2
1154
1158
  UpdateOrganizationConfigurationResponse.struct_class = Types::UpdateOrganizationConfigurationResponse
1155
1159
 
1156
1160
  Usage.add_member(:currency, Shapes::ShapeRef.new(shape: Currency, location_name: "currency"))
1157
- Usage.add_member(:estimated_monthly_cost, Shapes::ShapeRef.new(shape: MonthlyCostEstimate, location_name: "estimatedMonthlyCost"))
1158
- Usage.add_member(:total, Shapes::ShapeRef.new(shape: UsageValue, location_name: "total"))
1161
+ Usage.add_member(:estimated_monthly_cost, Shapes::ShapeRef.new(shape: MonthlyCostEstimate, location_name: "estimatedMonthlyCost", metadata: {"default"=>0}))
1162
+ Usage.add_member(:total, Shapes::ShapeRef.new(shape: UsageValue, location_name: "total", metadata: {"default"=>0}))
1159
1163
  Usage.add_member(:type, Shapes::ShapeRef.new(shape: UsageType, location_name: "type"))
1160
1164
  Usage.struct_class = Types::Usage
1161
1165
 
@@ -1183,12 +1187,13 @@ module Aws::Inspector2
1183
1187
  VulnerabilityIdList.member = Shapes::ShapeRef.new(shape: VulnerabilityId)
1184
1188
 
1185
1189
  VulnerablePackage.add_member(:arch, Shapes::ShapeRef.new(shape: PackageArchitecture, location_name: "arch"))
1186
- VulnerablePackage.add_member(:epoch, Shapes::ShapeRef.new(shape: PackageEpoch, location_name: "epoch"))
1190
+ VulnerablePackage.add_member(:epoch, Shapes::ShapeRef.new(shape: PackageEpoch, location_name: "epoch", metadata: {"default"=>0}))
1187
1191
  VulnerablePackage.add_member(:file_path, Shapes::ShapeRef.new(shape: FilePath, location_name: "filePath"))
1188
1192
  VulnerablePackage.add_member(:fixed_in_version, Shapes::ShapeRef.new(shape: PackageVersion, location_name: "fixedInVersion"))
1189
1193
  VulnerablePackage.add_member(:name, Shapes::ShapeRef.new(shape: PackageName, required: true, location_name: "name"))
1190
1194
  VulnerablePackage.add_member(:package_manager, Shapes::ShapeRef.new(shape: PackageManager, location_name: "packageManager"))
1191
1195
  VulnerablePackage.add_member(:release, Shapes::ShapeRef.new(shape: PackageRelease, location_name: "release"))
1196
+ VulnerablePackage.add_member(:remediation, Shapes::ShapeRef.new(shape: VulnerablePackageRemediation, location_name: "remediation"))
1192
1197
  VulnerablePackage.add_member(:source_layer_hash, Shapes::ShapeRef.new(shape: SourceLayerHash, location_name: "sourceLayerHash"))
1193
1198
  VulnerablePackage.add_member(:version, Shapes::ShapeRef.new(shape: PackageVersion, required: true, location_name: "version"))
1194
1199
  VulnerablePackage.struct_class = Types::VulnerablePackage
@@ -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::Inspector2
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,112 @@
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::Inspector2
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
+ dCI6eyJ1cmwiOiJodHRwczovL2luc3BlY3RvcjItZmlwcy57UmVnaW9ufS57
77
+ UGFydGl0aW9uUmVzdWx0I2R1YWxTdGFja0Ruc1N1ZmZpeH0iLCJwcm9wZXJ0
78
+ aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19LHsi
79
+ Y29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBhbmQgRHVhbFN0YWNrIGFy
80
+ ZSBlbmFibGVkLCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9y
81
+ dCBvbmUgb3IgYm90aCIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
82
+ IjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VG
83
+ SVBTIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
84
+ aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJm
85
+ biI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQi
86
+ fSwic3VwcG9ydHNGSVBTIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
87
+ eyJjb25kaXRpb25zIjpbXSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29u
88
+ ZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vaW5zcGVj
89
+ dG9yMi1maXBzLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4
90
+ fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRw
91
+ b2ludCJ9XX1dfSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgaXMg
92
+ ZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBG
93
+ SVBTIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
94
+ Ym9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxTdGFjayJ9
95
+ LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMi
96
+ Olt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJn
97
+ ZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1
98
+ cHBvcnRzRHVhbFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
99
+ eyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9p
100
+ bnNwZWN0b3IyLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNr
101
+ RG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5
102
+ cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJE
103
+ dWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBu
104
+ b3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoiZXJyb3IifV19LHsiY29u
105
+ ZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vaW5zcGVj
106
+ dG9yMi57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZpeH0iLCJw
107
+ cm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQi
108
+ fV19XX0=
109
+
110
+ JSON
111
+ end
112
+ end