aws-sdk-mediatailor 1.56.0 → 1.58.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: a615567d1b1f8c6acc0fbfd00424eaadc759e62b4ec7f5d187482b561220b26e
4
- data.tar.gz: 7a88d19a79922466a4bf4ff9117ee8c1df4a37b2f3322549b4358c7378488a35
3
+ metadata.gz: a0e810a70482c27c24b907780f9167e31692ae71586d28c0a2ddc9da945d3903
4
+ data.tar.gz: 90554cb9cfb0552266deecc936f506ae2052425d5ade7e70d37b2aa8d6b03849
5
5
  SHA512:
6
- metadata.gz: fb92663f9d1d1c4d6e844e15613aa2fe7b296e508720ce136ea730e958d41dd044bf90ff7ff179e4fb0b4662af01c93586f9e5ff69254406a85bd68d45af899b
7
- data.tar.gz: 4640ff5ee64b74c6e69308b629c7b55799b8ca3d7e51255d4ca1fc0fd29c3f48cf62cf322d8150565d104bf5216f8cd05f8067b008b8a1fa01e2aa34c0243a63
6
+ metadata.gz: 80760a9689992a3d6d51f6802cfb7929c1356fb5ab754f6f50fc0b2616297dd0eb7cc2e5611428c244746386492cdfeb93c507d96afc0a77a2f8bedaccc221a7
7
+ data.tar.gz: 5b4e851b68bb626d4589f1636c5022a3ca04ed1481f55ee4288b1711deaf60adb0502de97d5dd2b698c26266f4f7bd62e6b1322218282895ec74d0fd70daf022
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.58.0 (2023-01-18)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ * Issue - Replace runtime endpoint resolution approach with generated ruby code.
10
+
11
+ 1.57.0 (2022-10-28)
12
+ ------------------
13
+
14
+ * Feature - This release introduces support for SCTE-35 segmentation descriptor messages which can be sent within time signal messages.
15
+
4
16
  1.56.0 (2022-10-25)
5
17
  ------------------
6
18
 
@@ -295,4 +307,4 @@ Unreleased Changes
295
307
  1.0.0 (2018-06-01)
296
308
  ------------------
297
309
 
298
- * Feature - Initial release of `aws-sdk-mediatailor`.
310
+ * Feature - Initial release of `aws-sdk-mediatailor`.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.56.0
1
+ 1.58.0
@@ -742,7 +742,7 @@ module Aws::MediaTailor
742
742
  # resp = client.create_program({
743
743
  # ad_breaks: [
744
744
  # {
745
- # message_type: "SPLICE_INSERT", # accepts SPLICE_INSERT
745
+ # message_type: "SPLICE_INSERT", # accepts SPLICE_INSERT, TIME_SIGNAL
746
746
  # offset_millis: 1,
747
747
  # slate: {
748
748
  # source_location_name: "__string",
@@ -754,6 +754,20 @@ module Aws::MediaTailor
754
754
  # splice_event_id: 1,
755
755
  # unique_program_id: 1,
756
756
  # },
757
+ # time_signal_message: {
758
+ # segmentation_descriptors: [
759
+ # {
760
+ # segment_num: 1,
761
+ # segmentation_event_id: 1,
762
+ # segmentation_type_id: 1,
763
+ # segmentation_upid: "String",
764
+ # segmentation_upid_type: 1,
765
+ # segments_expected: 1,
766
+ # sub_segment_num: 1,
767
+ # sub_segments_expected: 1,
768
+ # },
769
+ # ],
770
+ # },
757
771
  # },
758
772
  # ],
759
773
  # channel_name: "__string", # required
@@ -775,7 +789,7 @@ module Aws::MediaTailor
775
789
  # @example Response structure
776
790
  #
777
791
  # resp.ad_breaks #=> Array
778
- # resp.ad_breaks[0].message_type #=> String, one of "SPLICE_INSERT"
792
+ # resp.ad_breaks[0].message_type #=> String, one of "SPLICE_INSERT", "TIME_SIGNAL"
779
793
  # resp.ad_breaks[0].offset_millis #=> Integer
780
794
  # resp.ad_breaks[0].slate.source_location_name #=> String
781
795
  # resp.ad_breaks[0].slate.vod_source_name #=> String
@@ -783,6 +797,15 @@ module Aws::MediaTailor
783
797
  # resp.ad_breaks[0].splice_insert_message.avails_expected #=> Integer
784
798
  # resp.ad_breaks[0].splice_insert_message.splice_event_id #=> Integer
785
799
  # resp.ad_breaks[0].splice_insert_message.unique_program_id #=> Integer
800
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors #=> Array
801
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segment_num #=> Integer
802
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_event_id #=> Integer
803
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_type_id #=> Integer
804
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_upid #=> String
805
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_upid_type #=> Integer
806
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segments_expected #=> Integer
807
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].sub_segment_num #=> Integer
808
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].sub_segments_expected #=> Integer
786
809
  # resp.arn #=> String
787
810
  # resp.channel_name #=> String
788
811
  # resp.creation_time #=> Time
@@ -1342,7 +1365,7 @@ module Aws::MediaTailor
1342
1365
  # @example Response structure
1343
1366
  #
1344
1367
  # resp.ad_breaks #=> Array
1345
- # resp.ad_breaks[0].message_type #=> String, one of "SPLICE_INSERT"
1368
+ # resp.ad_breaks[0].message_type #=> String, one of "SPLICE_INSERT", "TIME_SIGNAL"
1346
1369
  # resp.ad_breaks[0].offset_millis #=> Integer
1347
1370
  # resp.ad_breaks[0].slate.source_location_name #=> String
1348
1371
  # resp.ad_breaks[0].slate.vod_source_name #=> String
@@ -1350,6 +1373,15 @@ module Aws::MediaTailor
1350
1373
  # resp.ad_breaks[0].splice_insert_message.avails_expected #=> Integer
1351
1374
  # resp.ad_breaks[0].splice_insert_message.splice_event_id #=> Integer
1352
1375
  # resp.ad_breaks[0].splice_insert_message.unique_program_id #=> Integer
1376
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors #=> Array
1377
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segment_num #=> Integer
1378
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_event_id #=> Integer
1379
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_type_id #=> Integer
1380
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_upid #=> String
1381
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_upid_type #=> Integer
1382
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segments_expected #=> Integer
1383
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].sub_segment_num #=> Integer
1384
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].sub_segments_expected #=> Integer
1353
1385
  # resp.arn #=> String
1354
1386
  # resp.channel_name #=> String
1355
1387
  # resp.creation_time #=> Time
@@ -2847,7 +2879,7 @@ module Aws::MediaTailor
2847
2879
  params: params,
2848
2880
  config: config)
2849
2881
  context[:gem_name] = 'aws-sdk-mediatailor'
2850
- context[:gem_version] = '1.56.0'
2882
+ context[:gem_version] = '1.58.0'
2851
2883
  Seahorse::Client::Request.new(handlers, context)
2852
2884
  end
2853
2885
 
@@ -84,6 +84,7 @@ module Aws::MediaTailor
84
84
  HttpConfiguration = Shapes::StructureShape.new(name: 'HttpConfiguration')
85
85
  HttpPackageConfiguration = Shapes::StructureShape.new(name: 'HttpPackageConfiguration')
86
86
  HttpPackageConfigurations = Shapes::ListShape.new(name: 'HttpPackageConfigurations')
87
+ Integer = Shapes::IntegerShape.new(name: 'Integer')
87
88
  ListAlertsRequest = Shapes::StructureShape.new(name: 'ListAlertsRequest')
88
89
  ListAlertsResponse = Shapes::StructureShape.new(name: 'ListAlertsResponse')
89
90
  ListChannelsRequest = Shapes::StructureShape.new(name: 'ListChannelsRequest')
@@ -129,6 +130,8 @@ module Aws::MediaTailor
129
130
  ScheduleEntryType = Shapes::StringShape.new(name: 'ScheduleEntryType')
130
131
  SecretsManagerAccessTokenConfiguration = Shapes::StructureShape.new(name: 'SecretsManagerAccessTokenConfiguration')
131
132
  SegmentDeliveryConfiguration = Shapes::StructureShape.new(name: 'SegmentDeliveryConfiguration')
133
+ SegmentationDescriptor = Shapes::StructureShape.new(name: 'SegmentationDescriptor')
134
+ SegmentationDescriptorList = Shapes::ListShape.new(name: 'SegmentationDescriptorList')
132
135
  SlateSource = Shapes::StructureShape.new(name: 'SlateSource')
133
136
  SourceLocation = Shapes::StructureShape.new(name: 'SourceLocation')
134
137
  SpliceInsertMessage = Shapes::StructureShape.new(name: 'SpliceInsertMessage')
@@ -136,8 +139,10 @@ module Aws::MediaTailor
136
139
  StartChannelResponse = Shapes::StructureShape.new(name: 'StartChannelResponse')
137
140
  StopChannelRequest = Shapes::StructureShape.new(name: 'StopChannelRequest')
138
141
  StopChannelResponse = Shapes::StructureShape.new(name: 'StopChannelResponse')
142
+ String = Shapes::StringShape.new(name: 'String')
139
143
  TagResourceRequest = Shapes::StructureShape.new(name: 'TagResourceRequest')
140
144
  Tier = Shapes::StringShape.new(name: 'Tier')
145
+ TimeSignalMessage = Shapes::StructureShape.new(name: 'TimeSignalMessage')
141
146
  Transition = Shapes::StructureShape.new(name: 'Transition')
142
147
  Type = Shapes::StringShape.new(name: 'Type')
143
148
  UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest')
@@ -180,6 +185,7 @@ module Aws::MediaTailor
180
185
  AdBreak.add_member(:offset_millis, Shapes::ShapeRef.new(shape: __long, location_name: "OffsetMillis"))
181
186
  AdBreak.add_member(:slate, Shapes::ShapeRef.new(shape: SlateSource, location_name: "Slate"))
182
187
  AdBreak.add_member(:splice_insert_message, Shapes::ShapeRef.new(shape: SpliceInsertMessage, location_name: "SpliceInsertMessage"))
188
+ AdBreak.add_member(:time_signal_message, Shapes::ShapeRef.new(shape: TimeSignalMessage, location_name: "TimeSignalMessage"))
183
189
  AdBreak.struct_class = Types::AdBreak
184
190
 
185
191
  AdMarkerPassthrough.add_member(:enabled, Shapes::ShapeRef.new(shape: __boolean, location_name: "Enabled"))
@@ -756,6 +762,18 @@ module Aws::MediaTailor
756
762
  SegmentDeliveryConfiguration.add_member(:name, Shapes::ShapeRef.new(shape: __string, location_name: "Name"))
757
763
  SegmentDeliveryConfiguration.struct_class = Types::SegmentDeliveryConfiguration
758
764
 
765
+ SegmentationDescriptor.add_member(:segment_num, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentNum"))
766
+ SegmentationDescriptor.add_member(:segmentation_event_id, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentationEventId"))
767
+ SegmentationDescriptor.add_member(:segmentation_type_id, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentationTypeId"))
768
+ SegmentationDescriptor.add_member(:segmentation_upid, Shapes::ShapeRef.new(shape: String, location_name: "SegmentationUpid"))
769
+ SegmentationDescriptor.add_member(:segmentation_upid_type, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentationUpidType"))
770
+ SegmentationDescriptor.add_member(:segments_expected, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentsExpected"))
771
+ SegmentationDescriptor.add_member(:sub_segment_num, Shapes::ShapeRef.new(shape: Integer, location_name: "SubSegmentNum"))
772
+ SegmentationDescriptor.add_member(:sub_segments_expected, Shapes::ShapeRef.new(shape: Integer, location_name: "SubSegmentsExpected"))
773
+ SegmentationDescriptor.struct_class = Types::SegmentationDescriptor
774
+
775
+ SegmentationDescriptorList.member = Shapes::ShapeRef.new(shape: SegmentationDescriptor)
776
+
759
777
  SlateSource.add_member(:source_location_name, Shapes::ShapeRef.new(shape: __string, location_name: "SourceLocationName"))
760
778
  SlateSource.add_member(:vod_source_name, Shapes::ShapeRef.new(shape: __string, location_name: "VodSourceName"))
761
779
  SlateSource.struct_class = Types::SlateSource
@@ -791,6 +809,9 @@ module Aws::MediaTailor
791
809
  TagResourceRequest.add_member(:tags, Shapes::ShapeRef.new(shape: __mapOf__string, required: true, location_name: "tags"))
792
810
  TagResourceRequest.struct_class = Types::TagResourceRequest
793
811
 
812
+ TimeSignalMessage.add_member(:segmentation_descriptors, Shapes::ShapeRef.new(shape: SegmentationDescriptorList, location_name: "SegmentationDescriptors"))
813
+ TimeSignalMessage.struct_class = Types::TimeSignalMessage
814
+
794
815
  Transition.add_member(:duration_millis, Shapes::ShapeRef.new(shape: __long, location_name: "DurationMillis"))
795
816
  Transition.add_member(:relative_position, Shapes::ShapeRef.new(shape: RelativePosition, required: true, location_name: "RelativePosition"))
796
817
  Transition.add_member(:relative_program, Shapes::ShapeRef.new(shape: __string, location_name: "RelativeProgram"))
@@ -9,104 +9,43 @@
9
9
 
10
10
  module Aws::MediaTailor
11
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
- )
12
+ def resolve_endpoint(parameters)
13
+ region = parameters.region
14
+ use_dual_stack = parameters.use_dual_stack
15
+ use_fips = parameters.use_fips
16
+ endpoint = parameters.endpoint
17
+ if (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
18
+ if Aws::Endpoints::Matchers.set?(endpoint) && (url = Aws::Endpoints::Matchers.parse_url(endpoint))
19
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
20
+ raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported"
21
+ end
22
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
23
+ raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported"
24
+ end
25
+ return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {})
26
+ end
27
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
28
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
29
+ return Aws::Endpoints::Endpoint.new(url: "https://api.mediatailor-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
30
+ end
31
+ raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
32
+ end
33
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
34
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
35
+ return Aws::Endpoints::Endpoint.new(url: "https://api.mediatailor-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
36
+ end
37
+ raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
38
+ end
39
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
40
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
41
+ return Aws::Endpoints::Endpoint.new(url: "https://api.mediatailor.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
42
+ end
43
+ raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
44
+ end
45
+ return Aws::Endpoints::Endpoint.new(url: "https://api.mediatailor.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
21
46
  end
22
- @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
- end
47
+ raise ArgumentError, 'No endpoint could be resolved'
24
48
 
25
- def resolve_endpoint(parameters)
26
- @provider.resolve_endpoint(parameters)
27
49
  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
- dCI6eyJ1cmwiOiJodHRwczovL2FwaS5tZWRpYXRhaWxvci1maXBzLntSZWdp
77
- b259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInBy
78
- b3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9
79
- XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3Rh
80
- Y2sgYXJlIGVuYWJsZWQsIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBz
81
- dXBwb3J0IG9uZSBvciBib3RoIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRp
82
- dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6
83
- IlVzZUZJUFMifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
84
- b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
85
- ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
86
- c3VsdCJ9LCJzdXBwb3J0c0ZJUFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVs
87
- ZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
88
- eyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9h
89
- cGkubWVkaWF0YWlsb3ItZmlwcy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0
90
- I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0
91
- eXBlIjoiZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3Ii
92
- OiJGSVBTIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90
93
- IHN1cHBvcnQgRklQUyIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
94
- IjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VE
95
- dWFsU3RhY2sifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
96
- b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
97
- ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
98
- c3VsdCJ9LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUi
99
- LCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
100
- Imh0dHBzOi8vYXBpLm1lZGlhdGFpbG9yLntSZWdpb259LntQYXJ0aXRpb25S
101
- ZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJo
102
- ZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25z
103
- IjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBw
104
- YXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoi
105
- ZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
106
- Imh0dHBzOi8vYXBpLm1lZGlhdGFpbG9yLntSZWdpb259LntQYXJ0aXRpb25S
107
- ZXN1bHQjZG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7
108
- fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1dfQ==
109
-
110
- JSON
111
50
  end
112
51
  end