aws-sdk-workspacesweb 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: 6021725633ca1ae7c1dc0358fe31b6a965eaec819fdf053a0d83bc9c48133b5d
4
- data.tar.gz: a799380337e166bf117ae751848eca7539f78df05376c663a20d5f5b1a1e294e
3
+ metadata.gz: 4fcf86aaeffa27b89e493f5e009e7cbdbf5e1e5041f4ccedf216901877bffd6a
4
+ data.tar.gz: 5e9df216e1f1466c1876641fc68a1569167d83a08e83efb37554a9c5897b3180
5
5
  SHA512:
6
- metadata.gz: 7085df3083c3c0fd45626d4e6c8a5920fdb151448405812b166d61694abec15638875d89c983e285135bf8237c482d1c5de0ca99131108015df1be43f71e57c8
7
- data.tar.gz: f57117619ab604960798114f78e8b0f86b4e82e33a66950d95e63f07d94bb27952fbcc044e6c21ecceabe14121a56df44030fbee30638105f21dc53469e1988d
6
+ metadata.gz: ed214ad034e1e1452363d500abcf03df106babc390f116246eed022e66e020e75153d4a1c18e57be51dd5f375f1eeb01aa0525914feab62df6627279c34f24cd
7
+ data.tar.gz: 482e4adef697d70534a901ea05fd2d513c7a1a727137ecc94caecbb470f92d8f83a3577506e65b658cd0c96468e5f3aca118752e578a51b65ed3acabc7d6be6b
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.7.0 (2023-01-09)
5
+ ------------------
6
+
7
+ * Feature - This release adds support for a new portal authentication type: AWS IAM Identity Center (successor to AWS Single Sign-On).
8
+
9
+ 1.6.0 (2022-10-25)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
4
14
  1.5.0 (2022-10-19)
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(:workspacesweb)
@@ -79,8 +79,9 @@ module Aws::WorkSpacesWeb
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::WorkSpacesWeb::Plugins::Endpoints)
84
85
 
85
86
  # @overload initialize(options)
86
87
  # @param [Hash] options
@@ -287,6 +288,19 @@ module Aws::WorkSpacesWeb
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::WorkSpacesWeb
300
314
  # When `true`, request parameters are validated before
301
315
  # sending the request.
302
316
  #
317
+ # @option options [Aws::WorkSpacesWeb::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::WorkSpacesWeb::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
  #
@@ -775,6 +792,23 @@ module Aws::WorkSpacesWeb
775
792
  # @option params [Hash<String,String>] :additional_encryption_context
776
793
  # The additional encryption context of the portal.
777
794
  #
795
+ # @option params [String] :authentication_type
796
+ # The type of authentication integration points used when signing into
797
+ # the web portal. Defaults to `Standard`.
798
+ #
799
+ # `Standard` web portals are authenticated directly through your
800
+ # identity provider. You need to call `CreateIdentityProvider` to
801
+ # integrate your identity provider with your web portal. User and group
802
+ # access to your web portal is controlled through your identity
803
+ # provider.
804
+ #
805
+ # `IAM_Identity_Center` web portals are authenticated through AWS IAM
806
+ # Identity Center (successor to AWS Single Sign-On). They provide
807
+ # additional features, such as IdP-initiated authentication. Identity
808
+ # sources (including external identity provider integration), plus user
809
+ # and group access to your web portal, can be configured in the IAM
810
+ # Identity Center.
811
+ #
778
812
  # @option params [String] :client_token
779
813
  # A unique, case-sensitive identifier that you provide to ensure the
780
814
  # idempotency of the request. Idempotency ensures that an API request
@@ -809,6 +843,7 @@ module Aws::WorkSpacesWeb
809
843
  # additional_encryption_context: {
810
844
  # "StringType" => "StringType",
811
845
  # },
846
+ # authentication_type: "Standard", # accepts Standard, IAM_Identity_Center
812
847
  # client_token: "ClientToken",
813
848
  # customer_managed_key: "keyArn",
814
849
  # display_name: "DisplayName",
@@ -1409,6 +1444,7 @@ module Aws::WorkSpacesWeb
1409
1444
  #
1410
1445
  # @example Response structure
1411
1446
  #
1447
+ # resp.portal.authentication_type #=> String, one of "Standard", "IAM_Identity_Center"
1412
1448
  # resp.portal.browser_settings_arn #=> String
1413
1449
  # resp.portal.browser_type #=> String, one of "Chrome"
1414
1450
  # resp.portal.creation_date #=> Time
@@ -1747,6 +1783,7 @@ module Aws::WorkSpacesWeb
1747
1783
  #
1748
1784
  # resp.next_token #=> String
1749
1785
  # resp.portals #=> Array
1786
+ # resp.portals[0].authentication_type #=> String, one of "Standard", "IAM_Identity_Center"
1750
1787
  # resp.portals[0].browser_settings_arn #=> String
1751
1788
  # resp.portals[0].browser_type #=> String, one of "Chrome"
1752
1789
  # resp.portals[0].creation_date #=> Time
@@ -2277,6 +2314,23 @@ module Aws::WorkSpacesWeb
2277
2314
 
2278
2315
  # Updates a web portal.
2279
2316
  #
2317
+ # @option params [String] :authentication_type
2318
+ # The type of authentication integration points used when signing into
2319
+ # the web portal. Defaults to `Standard`.
2320
+ #
2321
+ # `Standard` web portals are authenticated directly through your
2322
+ # identity provider. You need to call `CreateIdentityProvider` to
2323
+ # integrate your identity provider with your web portal. User and group
2324
+ # access to your web portal is controlled through your identity
2325
+ # provider.
2326
+ #
2327
+ # `IAM_Identity_Center` web portals are authenticated through AWS IAM
2328
+ # Identity Center (successor to AWS Single Sign-On). They provide
2329
+ # additional features, such as IdP-initiated authentication. Identity
2330
+ # sources (including external identity provider integration), plus user
2331
+ # and group access to your web portal, can be configured in the IAM
2332
+ # Identity Center.
2333
+ #
2280
2334
  # @option params [String] :display_name
2281
2335
  # The name of the web portal. This is not visible to users who log into
2282
2336
  # the web portal.
@@ -2291,12 +2345,14 @@ module Aws::WorkSpacesWeb
2291
2345
  # @example Request syntax with placeholder values
2292
2346
  #
2293
2347
  # resp = client.update_portal({
2348
+ # authentication_type: "Standard", # accepts Standard, IAM_Identity_Center
2294
2349
  # display_name: "DisplayName",
2295
2350
  # portal_arn: "ARN", # required
2296
2351
  # })
2297
2352
  #
2298
2353
  # @example Response structure
2299
2354
  #
2355
+ # resp.portal.authentication_type #=> String, one of "Standard", "IAM_Identity_Center"
2300
2356
  # resp.portal.browser_settings_arn #=> String
2301
2357
  # resp.portal.browser_type #=> String, one of "Chrome"
2302
2358
  # resp.portal.creation_date #=> Time
@@ -2518,7 +2574,7 @@ module Aws::WorkSpacesWeb
2518
2574
  params: params,
2519
2575
  config: config)
2520
2576
  context[:gem_name] = 'aws-sdk-workspacesweb'
2521
- context[:gem_version] = '1.5.0'
2577
+ context[:gem_version] = '1.7.0'
2522
2578
  Seahorse::Client::Request.new(handlers, context)
2523
2579
  end
2524
2580
 
@@ -26,6 +26,7 @@ module Aws::WorkSpacesWeb
26
26
  AssociateUserAccessLoggingSettingsResponse = Shapes::StructureShape.new(name: 'AssociateUserAccessLoggingSettingsResponse')
27
27
  AssociateUserSettingsRequest = Shapes::StructureShape.new(name: 'AssociateUserSettingsRequest')
28
28
  AssociateUserSettingsResponse = Shapes::StructureShape.new(name: 'AssociateUserSettingsResponse')
29
+ AuthenticationType = Shapes::StringShape.new(name: 'AuthenticationType')
29
30
  BrowserPolicy = Shapes::StringShape.new(name: 'BrowserPolicy')
30
31
  BrowserSettings = Shapes::StructureShape.new(name: 'BrowserSettings')
31
32
  BrowserSettingsList = Shapes::ListShape.new(name: 'BrowserSettingsList')
@@ -310,6 +311,7 @@ module Aws::WorkSpacesWeb
310
311
  CreateNetworkSettingsResponse.struct_class = Types::CreateNetworkSettingsResponse
311
312
 
312
313
  CreatePortalRequest.add_member(:additional_encryption_context, Shapes::ShapeRef.new(shape: EncryptionContextMap, location_name: "additionalEncryptionContext"))
314
+ CreatePortalRequest.add_member(:authentication_type, Shapes::ShapeRef.new(shape: AuthenticationType, location_name: "authenticationType"))
313
315
  CreatePortalRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location_name: "clientToken", metadata: {"idempotencyToken"=>true}))
314
316
  CreatePortalRequest.add_member(:customer_managed_key, Shapes::ShapeRef.new(shape: keyArn, location_name: "customerManagedKey"))
315
317
  CreatePortalRequest.add_member(:display_name, Shapes::ShapeRef.new(shape: DisplayName, location_name: "displayName"))
@@ -576,6 +578,7 @@ module Aws::WorkSpacesWeb
576
578
  NetworkSettingsSummary.add_member(:vpc_id, Shapes::ShapeRef.new(shape: VpcId, location_name: "vpcId"))
577
579
  NetworkSettingsSummary.struct_class = Types::NetworkSettingsSummary
578
580
 
581
+ Portal.add_member(:authentication_type, Shapes::ShapeRef.new(shape: AuthenticationType, location_name: "authenticationType"))
579
582
  Portal.add_member(:browser_settings_arn, Shapes::ShapeRef.new(shape: ARN, location_name: "browserSettingsArn"))
580
583
  Portal.add_member(:browser_type, Shapes::ShapeRef.new(shape: BrowserType, location_name: "browserType"))
581
584
  Portal.add_member(:creation_date, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationDate"))
@@ -593,6 +596,7 @@ module Aws::WorkSpacesWeb
593
596
 
594
597
  PortalList.member = Shapes::ShapeRef.new(shape: PortalSummary)
595
598
 
599
+ PortalSummary.add_member(:authentication_type, Shapes::ShapeRef.new(shape: AuthenticationType, location_name: "authenticationType"))
596
600
  PortalSummary.add_member(:browser_settings_arn, Shapes::ShapeRef.new(shape: ARN, location_name: "browserSettingsArn"))
597
601
  PortalSummary.add_member(:browser_type, Shapes::ShapeRef.new(shape: BrowserType, location_name: "browserType"))
598
602
  PortalSummary.add_member(:creation_date, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationDate"))
@@ -691,6 +695,7 @@ module Aws::WorkSpacesWeb
691
695
  UpdateNetworkSettingsResponse.add_member(:network_settings, Shapes::ShapeRef.new(shape: NetworkSettings, required: true, location_name: "networkSettings"))
692
696
  UpdateNetworkSettingsResponse.struct_class = Types::UpdateNetworkSettingsResponse
693
697
 
698
+ UpdatePortalRequest.add_member(:authentication_type, Shapes::ShapeRef.new(shape: AuthenticationType, location_name: "authenticationType"))
694
699
  UpdatePortalRequest.add_member(:display_name, Shapes::ShapeRef.new(shape: DisplayName, location_name: "displayName"))
695
700
  UpdatePortalRequest.add_member(:portal_arn, Shapes::ShapeRef.new(shape: ARN, required: true, location: "uri", location_name: "portalArn"))
696
701
  UpdatePortalRequest.struct_class = Types::UpdatePortalRequest
@@ -0,0 +1,69 @@
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::WorkSpacesWeb
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
+ if self[:region].nil?
54
+ raise ArgumentError, "Missing required EndpointParameter: :region"
55
+ end
56
+ self[:use_dual_stack] = options[:use_dual_stack]
57
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
58
+ if self[:use_dual_stack].nil?
59
+ raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
60
+ end
61
+ self[:use_fips] = options[:use_fips]
62
+ self[:use_fips] = false if self[:use_fips].nil?
63
+ if self[:use_fips].nil?
64
+ raise ArgumentError, "Missing required EndpointParameter: :use_fips"
65
+ end
66
+ self[:endpoint] = options[:endpoint]
67
+ end
68
+ end
69
+ 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::WorkSpacesWeb
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
+ bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOnRydWUsImRvY3VtZW50
33
+ YXRpb24iOiJUaGUgQVdTIHJlZ2lvbiB1c2VkIHRvIGRpc3BhdGNoIHRoZSBy
34
+ ZXF1ZXN0LiIsInR5cGUiOiJTdHJpbmcifSwiVXNlRHVhbFN0YWNrIjp7ImJ1
35
+ aWx0SW4iOiJBV1M6OlVzZUR1YWxTdGFjayIsInJlcXVpcmVkIjp0cnVlLCJk
36
+ ZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRhdGlvbiI6IldoZW4gdHJ1ZSwgdXNl
37
+ IHRoZSBkdWFsLXN0YWNrIGVuZHBvaW50LiBJZiB0aGUgY29uZmlndXJlZCBl
38
+ bmRwb2ludCBkb2VzIG5vdCBzdXBwb3J0IGR1YWwtc3RhY2ssIGRpc3BhdGNo
39
+ aW5nIHRoZSByZXF1ZXN0IE1BWSByZXR1cm4gYW4gZXJyb3IuIiwidHlwZSI6
40
+ IkJvb2xlYW4ifSwiVXNlRklQUyI6eyJidWlsdEluIjoiQVdTOjpVc2VGSVBT
41
+ IiwicmVxdWlyZWQiOnRydWUsImRlZmF1bHQiOmZhbHNlLCJkb2N1bWVudGF0
42
+ aW9uIjoiV2hlbiB0cnVlLCBzZW5kIHRoaXMgcmVxdWVzdCB0byB0aGUgRklQ
43
+ Uy1jb21wbGlhbnQgcmVnaW9uYWwgZW5kcG9pbnQuIElmIHRoZSBjb25maWd1
44
+ cmVkIGVuZHBvaW50IGRvZXMgbm90IGhhdmUgYSBGSVBTIGNvbXBsaWFudCBl
45
+ bmRwb2ludCwgZGlzcGF0Y2hpbmcgdGhlIHJlcXVlc3Qgd2lsbCByZXR1cm4g
46
+ YW4gZXJyb3IuIiwidHlwZSI6IkJvb2xlYW4ifSwiRW5kcG9pbnQiOnsiYnVp
47
+ bHRJbiI6IlNESzo6RW5kcG9pbnQiLCJyZXF1aXJlZCI6ZmFsc2UsImRvY3Vt
48
+ ZW50YXRpb24iOiJPdmVycmlkZSB0aGUgZW5kcG9pbnQgdXNlZCB0byBzZW5k
49
+ IHRoaXMgcmVxdWVzdCIsInR5cGUiOiJTdHJpbmcifX0sInJ1bGVzIjpbeyJj
50
+ b25kaXRpb25zIjpbeyJmbiI6ImF3cy5wYXJ0aXRpb24iLCJhcmd2IjpbeyJy
51
+ ZWYiOiJSZWdpb24ifV0sImFzc2lnbiI6IlBhcnRpdGlvblJlc3VsdCJ9XSwi
52
+ dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJp
53
+ c1NldCIsImFyZ3YiOlt7InJlZiI6IkVuZHBvaW50In1dfV0sInR5cGUiOiJ0
54
+ cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVx
55
+ dWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX1dLCJlcnJv
56
+ ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRklQUyBhbmQgY3VzdG9tIGVu
57
+ ZHBvaW50IGFyZSBub3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJj
58
+ b25kaXRpb25zIjpbXSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
59
+ aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoi
60
+ VXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwiZXJyb3IiOiJJbnZhbGlkIENvbmZp
61
+ Z3VyYXRpb246IER1YWxzdGFjayBhbmQgY3VzdG9tIGVuZHBvaW50IGFyZSBu
62
+ b3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJjb25kaXRpb25zIjpb
63
+ XSwiZW5kcG9pbnQiOnsidXJsIjp7InJlZiI6IkVuZHBvaW50In0sInByb3Bl
64
+ cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1d
65
+ fSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3Yi
66
+ Olt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX0seyJmbiI6ImJvb2xlYW5FcXVh
67
+ bHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJ0
68
+ eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJv
69
+ b2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFy
70
+ Z3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0ZJUFMi
71
+ XX1dfSx7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4i
72
+ OiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0s
73
+ InN1cHBvcnRzRHVhbFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVz
74
+ IjpbeyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6
75
+ Ly93b3Jrc3BhY2VzLXdlYi1maXBzLntSZWdpb259LntQYXJ0aXRpb25SZXN1
76
+ bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFk
77
+ ZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpb
78
+ XSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3RhY2sgYXJlIGVuYWJsZWQsIGJ1
79
+ dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9uZSBvciBib3Ro
80
+ IiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9v
81
+ bGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX1d
82
+ LCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6
83
+ ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIs
84
+ ImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0ZJ
85
+ UFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMi
86
+ OltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbXSwi
87
+ ZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly93b3Jrc3BhY2VzLXdlYi1maXBz
88
+ LntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4fSIsInByb3Bl
89
+ cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1d
90
+ fSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgaXMgZW5hYmxlZCBi
91
+ dXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBGSVBTIiwidHlw
92
+ ZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVx
93
+ dWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxTdGFjayJ9LHRydWVdfV0s
94
+ InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
95
+ Ym9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJnZXRBdHRyIiwi
96
+ YXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1cHBvcnRzRHVh
97
+ bFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRp
98
+ b25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly93b3Jrc3BhY2Vz
99
+ LXdlYi57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2R1YWxTdGFja0Ruc1N1
100
+ ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoi
101
+ ZW5kcG9pbnQifV19LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRHVhbFN0
102
+ YWNrIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1
103
+ cHBvcnQgRHVhbFN0YWNrIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlv
104
+ bnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3dvcmtzcGFjZXMt
105
+ d2ViLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4fSIsInBy
106
+ b3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9
107
+ XX1dfQ==
108
+
109
+ JSON
110
+ end
111
+ end