logstash-integration-logstash 0.0.3-java → 0.0.4-java

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/VERSION +1 -1
  4. data/docs/index.asciidoc +4 -3
  5. data/docs/input-logstash.asciidoc +3 -5
  6. data/docs/output-logstash.asciidoc +35 -22
  7. data/lib/logstash/inputs/logstash.rb +1 -1
  8. data/lib/logstash/outputs/logstash.rb +29 -4
  9. data/logstash-integration-logstash.gemspec +1 -0
  10. data/spec/fixtures/certs/generated/client_from_root.jks +0 -0
  11. data/spec/fixtures/certs/generated/client_from_root.key.pem +50 -50
  12. data/spec/fixtures/certs/generated/client_from_root.key.pkcs8.pem +52 -52
  13. data/spec/fixtures/certs/generated/client_from_root.p12 +0 -0
  14. data/spec/fixtures/certs/generated/client_from_root.pem +28 -28
  15. data/spec/fixtures/certs/generated/client_from_untrusted.jks +0 -0
  16. data/spec/fixtures/certs/generated/client_from_untrusted.key.pem +50 -50
  17. data/spec/fixtures/certs/generated/client_from_untrusted.key.pkcs8.pem +52 -52
  18. data/spec/fixtures/certs/generated/client_from_untrusted.p12 +0 -0
  19. data/spec/fixtures/certs/generated/client_from_untrusted.pem +28 -28
  20. data/spec/fixtures/certs/generated/client_self_signed.jks +0 -0
  21. data/spec/fixtures/certs/generated/client_self_signed.key.pem +50 -50
  22. data/spec/fixtures/certs/generated/client_self_signed.key.pkcs8.pem +52 -52
  23. data/spec/fixtures/certs/generated/client_self_signed.p12 +0 -0
  24. data/spec/fixtures/certs/generated/client_self_signed.pem +28 -28
  25. data/spec/fixtures/certs/generated/root.key.pem +50 -50
  26. data/spec/fixtures/certs/generated/root.pem +28 -28
  27. data/spec/fixtures/certs/generated/server_from_root-key-pkcs8.pem +50 -50
  28. data/spec/fixtures/certs/generated/server_from_root.jks +0 -0
  29. data/spec/fixtures/certs/generated/server_from_root.key.pem +50 -50
  30. data/spec/fixtures/certs/generated/server_from_root.key.pkcs8.pem +52 -52
  31. data/spec/fixtures/certs/generated/server_from_root.p12 +0 -0
  32. data/spec/fixtures/certs/generated/server_from_root.pem +29 -29
  33. data/spec/fixtures/certs/generated/untrusted.key.pem +50 -50
  34. data/spec/fixtures/certs/generated/untrusted.pem +28 -28
  35. data/spec/unit/full_transmission_spec.rb +7 -7
  36. data/spec/unit/logstash_input_spec.rb +31 -2
  37. data/spec/unit/logstash_output_spec.rb +25 -2
  38. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d00baaa86ceb845df51e6a51e7690b675849c78c71a60f5a7a8e1419085a20fb
4
- data.tar.gz: 1b7f3c00680fd4872dd4ecb23cb99f6fe31534c67214aea873da3e7a91ffa3ab
3
+ metadata.gz: 27a5393272c2cfde9c75782f701b1751dd1d3b35225876fb54c36f13ba0696b6
4
+ data.tar.gz: d7d9337f2c85dcaddfbc7ef79723e3993dda720fe407b5b189d8bc9ee4e1570a
5
5
  SHA512:
6
- metadata.gz: 766dbd186c6f11110fa26dd7434bc11b5c9267fdfe371b9e5cf86c134988f25f2fdb3a140447a23a36d135489fdd2c309ed815879f991ef5b6b7768cc1e02260
7
- data.tar.gz: deb1117264de1d90453b5407751d7d8cd40add339d3de8b3bfd0f6b5f33aa87e99c28da96c8e2ea62a40f1b03b2efa3f3462d88d057370d79de5359343761e1f
6
+ metadata.gz: e4bf91d282d3bfac6a0dae1864db3da98f6ffa02623b9f68eb683d77155d97910b7480442f53a992dda28883a05582e610bc037499b4ed5fcbf51a33b19d65f0
7
+ data.tar.gz: c6eeb96c776110b415e48d0ce2299f102a3469aaf9673b8870b8e46c02f569c2cf0fd21782a273aa34923673b824730cf128a1569c1e38fdfbc9d831642eb5a9
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.0.4
2
+ - Simplify configuration [#13](https://github.com/logstash-plugins/logstash-integration-logstash/pull/13)
3
+ - Introduce a default `port` of `9800` for both input and output plugins
4
+ - BREAKING: Introduce `hosts` config to output plugin, _replacing_ its separate `host` and `port` configurations
5
+
1
6
  ## 0.0.3
2
7
  - Doc: Minor doc changes and version bump to facilitate adding integration files to doc build [#14](https://github.com/logstash-plugins/logstash-integration-logstash/pull/14)
3
8
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
data/docs/index.asciidoc CHANGED
@@ -40,7 +40,7 @@ NOTE: You will need a TCP route from the upstream pipeline to the interface that
40
40
  ----
41
41
  input {
42
42
  logstash {
43
- port => 8080
43
+ port => 9800
44
44
 
45
45
  # SSL IDENTITY <1>
46
46
  ssl_keystore_path => "/path/to/identity.p12"
@@ -53,12 +53,13 @@ input {
53
53
  Once the downstream pipeline is configured and running, you may send events from any number of upstream pipelines by adding a `logstash` output plugin that points to the downstream input.
54
54
  You may need to configure SSL to trust the certificates presented by the downstream input plugin.
55
55
 
56
+ NOTE: Single host endpoint is supported for `hosts`. Multi-host support is coming soon.
57
+
56
58
  [source]
57
59
  ----
58
60
  output {
59
61
  logstash {
60
- host => "10.0.0.123"
61
- port => 8080
62
+ hosts => "10.0.0.123:9800"
62
63
 
63
64
  # SSL TRUST <1>
64
65
  ssl_truststore_path => "/path/to/truststore.p12"
@@ -23,7 +23,7 @@ include::{include_path}/plugin_header-integration.asciidoc[]
23
23
  ==== Description
24
24
 
25
25
  Listen for events that are sent by a <<plugins-outputs-logstash>> in a pipeline that may be in another process or on another host.
26
- The upstream output must have a TCP route to the port on an interface that this plugin is bound to.
26
+ The upstream output must have a TCP route to the port (defaults to 9800) on an interface that this plugin is bound to.
27
27
 
28
28
  NOTE: Sending events to this input by _any_ means other than `plugins-outputs-logstash` is neither advised nor supported.
29
29
  We will maintain cross-compatibility with any two supported versions of output/input pair and reserve the right to change details such as protocol and encoding.
@@ -40,7 +40,6 @@ We will maintain cross-compatibility with any two supported versions of output/i
40
40
  ----
41
41
  input {
42
42
  logstash {
43
- port => 8080
44
43
  ssl_keystore_path
45
44
  => "/path/to/logstash.p12"
46
45
  ssl_keystore_password
@@ -55,7 +54,6 @@ input {
55
54
  ----
56
55
  input {
57
56
  logstash {
58
- port => 8080
59
57
  ssl_enabled => false
60
58
  }
61
59
  }
@@ -107,7 +105,7 @@ This plugin supports the following configuration options plus the <<plugins-{typ
107
105
  |Setting |Input type |Required
108
106
  | <<plugins-{type}s-{plugin}-host>> |<<string,string>> |No
109
107
  | <<plugins-{type}s-{plugin}-password>> |<<password,password>>|No
110
- | <<plugins-{type}s-{plugin}-port>> |<<number,number>> |Yes
108
+ | <<plugins-{type}s-{plugin}-port>> |<<number,number>> |No
111
109
  | <<plugins-{type}s-{plugin}-ssl_certificate>> | <<path,path>>|No
112
110
  | <<plugins-{type}s-{plugin}-ssl_certificate_authorities>> |<<array,array>>|No
113
111
  | <<plugins-{type}s-{plugin}-ssl_client_authentication>> | <<string,string>>, one of `["none", "optional", "required"]`|No
@@ -146,7 +144,7 @@ Requires <<plugins-{type}s-{plugin}-username>>.
146
144
  ===== `port`
147
145
 
148
146
  * Value type is a <<number,number>> port
149
- * There is no default value
147
+ * Default value is 9800
150
148
 
151
149
  Specify which port to listen on.
152
150
 
@@ -23,7 +23,7 @@ include::{include_path}/plugin_header-integration.asciidoc[]
23
23
  ==== Description
24
24
 
25
25
  Send events to a <<plugins-inputs-logstash>> in a pipeline that may be in another process or on another host.
26
- You must have a TCP route to the port on an interface that the downstream input is bound to.
26
+ You must have a TCP route to the port (defaults to 9800) on an interface that the downstream input is bound to.
27
27
 
28
28
  NOTE: Sending events to _any_ destination other than <<plugins-inputs-logstash>> is neither advised nor supported.
29
29
  We will maintain cross-compatibility with any two supported versions of output/input pair and reserve the right to change details such as protocol and encoding.
@@ -40,8 +40,7 @@ NOTE: Sending events to _any_ destination other than <<plugins-inputs-logstash>>
40
40
  ----
41
41
  output {
42
42
  logstash {
43
- host => "10.0.0.123"
44
- port => 8080
43
+ hosts => "10.0.0.123:9801"
45
44
  }
46
45
  }
47
46
  ----
@@ -52,8 +51,7 @@ output {
52
51
  ----
53
52
  output {
54
53
  logstash {
55
- host => "10.0.0.123"
56
- port => 8080
54
+ hosts => "10.0.0.123:9801"
57
55
  ssl_enabled
58
56
  => false
59
57
  }
@@ -65,15 +63,15 @@ output {
65
63
  [id="plugins-{type}s-{plugin}-config-connecting"]
66
64
  ===== Configuration Concepts
67
65
 
68
- This output plugin needs to be configured to connect to a <<plugins-inputs-logstash>> by specifying its <<plugins-{type}s-{plugin}-host>> and <<plugins-{type}s-{plugin}-port>>.
69
- Depending on the downstream plugin's configuration, you may need to also configure SSL and/or credentials.
66
+ This output plugin needs to be configured to connect to a <<plugins-inputs-logstash>> by specifying its <<plugins-{type}s-{plugin}-hosts>>.
67
+ Depending on the downstream plugin's configuration, you may need to also configure the target port, SSL, and/or credentials.
70
68
 
71
69
  [id="plugins-{type}s-{plugin}-config-ssl-trust"]
72
70
  ===== Security: SSL Trust
73
71
 
74
72
  When communicating over SSL, this plugin establishes trust of the server it connects to before transmitting credentials or events.
75
73
 
76
- It does so by ensuring that the server presents a currently-valid certificate with identity claims matching the <<plugins-{type}s-{plugin}-host>> we are configured to connect to, signed by a trusted signing authority, along with proof-of-possession of the associated private key material.
74
+ It does so by ensuring that the responding server presents a currently-valid certificate with identity claims matching host it is connecting to, signed by a trusted signing authority, along with proof-of-possession of the associated private key material.
77
75
 
78
76
  The system trust store is used by default.
79
77
  You can provide an _alternate_ source of trust with _ONE OF_:
@@ -105,9 +103,8 @@ This plugin supports the following configuration options plus the <<plugins-{typ
105
103
  [cols="<,<,<",options="header",]
106
104
  |=======================================================================
107
105
  |Setting |Input type |Required
108
- | <<plugins-{type}s-{plugin}-host>> |<<string,string>> |Yes
106
+ | <<plugins-{type}s-{plugin}-hosts>> |<<string,string>> |Yes
109
107
  | <<plugins-{type}s-{plugin}-password>> |<<password,password>>|No
110
- | <<plugins-{type}s-{plugin}-port>> |<<number,number>> |Yes
111
108
  | <<plugins-{type}s-{plugin}-ssl_enabled>> |<<boolean,boolean>>|No
112
109
  | <<plugins-{type}s-{plugin}-ssl_certificate>> | <<path,path>>|No
113
110
  | <<plugins-{type}s-{plugin}-ssl_certificate_authorities>> |list of <<path,path>>|No
@@ -125,23 +122,39 @@ output plugins.
125
122
 
126
123
  &nbsp;
127
124
 
128
- [id="plugins-{type}s-{plugin}-host"]
129
- ===== `host`
125
+ [id="plugins-{type}s-{plugin}-hosts"]
126
+ ===== `hosts`
130
127
 
131
- * Value type is a <<string,string>> ip address or hostname
132
- * There is no default value
128
+ * Value type is <<string,string>>
129
+ * There is no default value for this setting.
130
+ * Constraints:
131
+ ** When using IPv6, IP address must be in an enclosed in brackets.
132
+ ** When a port is not provided, the default `9800` is used.
133
133
 
134
- Specify which host to connect to by providing its ip address or resolvable hostname.
134
+ A downstream input {ls} host or IP address to connect.
135
135
 
136
- NOTE: when using SSL, the server that responds must present a certificated with identity claim matching this host name or ip address.
136
+ NOTE: Single host endpoint is supported for `hosts`. Multi-host support is coming soon.
137
137
 
138
- [id="plugins-{type}s-{plugin}-port"]
139
- ===== `port`
138
+ Host can be any of IPv4, IPv6 (in enclosed bracket) or host name, examples:
140
139
 
141
- * Value type is a <<number,number>> port
142
- * There is no default value
140
+ * `"127.0.0.1"`
141
+ * `"127.0.0.1:9801"`
142
+ * `"ds.example.com"`
143
+ * `"ds.example:9802"`
144
+ * `"[::1]"`
145
+ * `"[::1]:9803"`
146
+ * `"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"`
147
+ * `"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:9804"`
143
148
 
144
- Specify which port to connect to.
149
+ When connecting, communication to downstream input {ls} is secured with SSL unless configured otherwise.
150
+
151
+ [WARNING]
152
+ .Disabling SSL is dangerous
153
+ ============
154
+ The security of this plugin relies on SSL to avoid leaking credentials and to avoid running illegitimate ingest pipeline definitions.
155
+ ============
156
+
157
+ NOTE: when using SSL, the server that responds must present a certificated with identity claim matching this host name or ip address.
145
158
 
146
159
  [id="plugins-{type}s-{plugin}-password"]
147
160
  ===== `password`
@@ -244,7 +257,7 @@ Password for the <<plugins-{type}s-{plugin}-ssl_truststore_path>>
244
257
 
245
258
  * Value type is <<string,string>>
246
259
  * The supported modes are:
247
- ** `full`: verifies that a certificate provided by the client has an identity claim matching <<plugins-{type}s-{plugin}-host>>, is signed by a trusted authority (CA), is within its valid date range, and that the client has possession of the associated key.
260
+ ** `full`: verifies that a certificate provided by the client has an identity claim matching <<plugins-{type}s-{plugin}-hosts>>, is signed by a trusted authority (CA), is within its valid date range, and that the client has possession of the associated key.
248
261
  ** `none`: performs no validation of the presented certificate
249
262
 
250
263
  * The default value is `full`.
@@ -13,7 +13,7 @@ class LogStash::Inputs::Logstash < LogStash::Inputs::Base
13
13
  config_name "logstash"
14
14
 
15
15
  config :host, :validate => :string, :default => "0.0.0.0"
16
- config :port, :validate => :number, :required => true
16
+ config :port, :validate => :number, :default => 9800
17
17
 
18
18
  # optional username/password credentials
19
19
  config :username, :validate => :string, :required => false
@@ -4,14 +4,28 @@ require 'logstash/outputs/base'
4
4
  require 'logstash/namespace'
5
5
 
6
6
  require "logstash/plugin_mixins/plugin_factory_support"
7
+ require "logstash/plugin_mixins/validator_support/required_host_optional_port_validation_adapter"
7
8
 
8
9
  class LogStash::Outputs::Logstash < LogStash::Outputs::Base
10
+ extend LogStash::PluginMixins::ValidatorSupport::RequiredHostOptionalPortValidationAdapter
11
+
9
12
  include LogStash::PluginMixins::PluginFactorySupport
10
13
 
11
14
  config_name "logstash"
12
15
 
13
- config :host, :validate => :string, :required => true
14
- config :port, :validate => :number, :required => true
16
+ # Sets the host of the downstream Logstash instance.
17
+ # Host can be any of IPv4, IPv6 (requires to be in enclosed bracket) or host name, the forms:
18
+ # `"127.0.0.1"`
19
+ # `"127.0.0.1:9800"`
20
+ # `"foo-bar.com"`
21
+ # `"foo-bar.com:9800"`
22
+ # `"[::1]"`
23
+ # `"[::1]:9000"`
24
+ # `"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"`
25
+ #
26
+ # NOTE: `hosts` naming is intentional and multi-host support is planned.
27
+ #
28
+ config :hosts, :validate => :required_host_optional_port, :required => true
15
29
 
16
30
  # optional username/password credentials
17
31
  config :username, :validate => :string, :required => false
@@ -31,7 +45,7 @@ class LogStash::Outputs::Logstash < LogStash::Outputs::Base
31
45
  config :ssl_verification_mode, :validate => %w(full none), :default => 'full'
32
46
 
33
47
  # SSL:TRUST:SOURCE ca file
34
- config :ssl_certificate_authorities, :validate => :path, :list => true
48
+ config :ssl_certificate_authorities, :validate => :path, :list => true
35
49
 
36
50
  # SSL:TRUST:SOURCE truststore
37
51
  config :ssl_truststore_path, :validate => :path
@@ -83,10 +97,12 @@ class LogStash::Outputs::Logstash < LogStash::Outputs::Base
83
97
  logger.debug('inner HTTP output plugin has been closed')
84
98
  end
85
99
 
100
+ DEFAULT_PORT = 9800.freeze
101
+
86
102
  def inner_http_output_options
87
103
  @_inner_http_output_options ||= begin
88
104
  http_options = {
89
- 'url' => "#{@ssl_enabled ? 'https' : 'http'}://#{@host}:#{@port}",
105
+ 'url' => construct_host_uri.to_s,
90
106
  'http_method' => 'post',
91
107
  'retry_non_idempotent' => 'true',
92
108
 
@@ -119,6 +135,15 @@ class LogStash::Outputs::Logstash < LogStash::Outputs::Base
119
135
  end
120
136
  end
121
137
 
138
+ def construct_host_uri
139
+ scheme = @ssl_enabled ? 'https'.freeze : 'http'.freeze
140
+ host_port_pair = @hosts # Struct(:host, :port)
141
+ uri = LogStash::Util::SafeURI.new(host_port_pair[:host])
142
+ uri.port = host_port_pair[:port].nil? ? DEFAULT_PORT : host_port_pair[:port]
143
+ uri.update(:scheme, scheme)
144
+ uri.freeze
145
+ end
146
+
122
147
  def ssl_identity_options
123
148
  if @ssl_certificate && @ssl_keystore_path
124
149
  fail(LogStash::ConfigurationError, 'SSL identity can be configured with EITHER `ssl_certificate` OR `ssl_keystore_*`, but not both')
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_runtime_dependency "logstash-core-plugin-api", ">= 2.1.12", "<= 2.99"
27
27
  s.add_runtime_dependency "logstash-mixin-plugin_factory_support", "~> 1.0"
28
+ s.add_runtime_dependency "logstash-mixin-validator_support", "~> 1.1"
28
29
  s.add_runtime_dependency "logstash-codec-json_lines", "~> 3.1"
29
30
 
30
31
  s.add_runtime_dependency "logstash-input-http", ">= 3.7.0" # some params not available in older versions because they are renamed, such as `cacert` to `ssl_certificate_authorities`
@@ -1,52 +1,52 @@
1
1
  -----BEGIN PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- jVrZXjSsyVQ8uIEkac0j+cCxrtZ/SfzhyInNUPvKdP6Y+vlGRzOcJjnYcf96Z1uf
8
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- pjBYWReBukd94Rpu4RS/0JUjgsi/7Qna2HkuKOrloHUBC5CWTK3bHgiRyIVgGvtt
16
- 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
- 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
- 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
- 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
- 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
- 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
- QYwBAXQH5dik9sQWB0+RGct9Q1rSV+mKybpJHBVH5o9gwh1ZOaKT35thdGCAEd/o
23
- PbYGoVPqPNSnqPxWvoAT09icV9yh5B6XjRcFkjzmKk9FF33G/QbpkbwH5PZUsfab
24
- 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
- a11/OPdA6tmrztlZt8LG2hIKL5+citGALnzPO5zma0/Vx0JfbhaP8bniUI1NOFCw
26
- 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
- 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
- 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
- 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
- iTNjKLxLEvqzIrK4/MLlQ08U+gNvb1R4Gs5HDh5bVwECfI2fPdaoP0sqfwnxuIzl
31
- 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
- MGXv6aexGkH3dmOOrXFSum8f0Ujpp7vODGL447+VcvDUyN9N5hFWIEbD90f+PmVH
33
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- JzTV9SwHIhKqLxg4DE59vwbit3XTQFpe7BzLLz4XY7nKBRLTeslpv2COv1XZErTP
44
- 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
- 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
- 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
- 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
- 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
- +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
- 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
51
- xUKu1zX8CNNJGBd63eLC0TC4pzXG
2
+ MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDN6cNsA43zDVMD
3
+ u7UQt8rejwFHvE2lCIPKQW0cUaunm1jQiWTtiTzpUDkLQM2j+t1Q56UJ7Z/zjBr3
4
+ 44f2yF9GB8+oOtmoP30xt/+vvyewL4i1i/63189TP5O7eGDw8kj+hyDuvNDvulq1
5
+ 1YddXPdXRLWjG6zXbmP3iOL/jjzNiMVNLOR7q3nFcpikYZYA9KZDE1qivb6vaASm
6
+ p9E098r4P1MfJlfSw5H8wPUA4sxtU5Ob2mzCGx8Coi5N8ZUlYAQw9S4gwLnGvt77
7
+ xpltMM/VMPz90OvP20bNf3hAvW3Zvv7DkHvlaaW1kLTVFob96UKSlcxum3wHB93y
8
+ GZbYqyqoewIaRglO2OS9Mu1YpKKqk5pr7S6pFcpRPHQjFF0eVJpyBUGUuIOxOsUC
9
+ Ex6VJK7vlmAruMCuJwsAOXjwYcNr0AHJOv9jGnrba9N9jvr1gEpx8sG83upLKAl/
10
+ uNnhsVYhSo8rOhw40VzOqJYjeDic2UAjfIgbz3mVJ8nD/h7gxOiGfGuYVUhIbOw1
11
+ GyKXUPjobdu3tkO+TofYgNbF2TdJWZHHiSE8wz4eaB0UIUa1lIWdsF1Cwz0xIJe/
12
+ 46Rf5pQcHxND81MIwPVkK4WuYAqbQ+JwOZIMIStZdG9Lh2aPlfsZqHwupNPfkZM/
13
+ SgFM7cZkU443hs0NW0i0LhsSslsA0QIDAQABAoICABj5qo9WWwhI7HG+eba+ZCfc
14
+ do5J460JvFpy1xYhPc3FhN8+WvSIuc+ewFyCDq8+BUwD3Lu4i7cRnk/E1D/1i8DF
15
+ v8Uq5i2HDdtS8vtRFzJCgbVrdoi771SsmHGbpz5yVLIyl6b9VeZN1yTI8nM7jHCU
16
+ T+epuqwiopNqkgXnLa7MUQoMUOZDJTDytlrxzyzsf6IRHeQxWYiS+EVyg2iGSaMU
17
+ ozNbBjn1KKbcjJr/50W3Zmb39ksQ2RELtMwVaj6vR7LceizU03OswQUO0Jsy2XKF
18
+ T5pFleSPNyZDuMU5dLJ9fQ8hXjW0O7orBBP4eIUhnsaCztn3l/KOXLg5rFc5Y6H1
19
+ 5awWy6hfuThbQ2MTbbEUOvcktQJkGrN3eeEl/RcbusSCWRU+ptzsubi3esG2EVYx
20
+ I/KJDd6zXtl4UYEsbtDMMoG02Hz8uU9QTrtbOrh9ByOCE4s6BrTL4K3ErFzVgG1+
21
+ 0ilNk0qSFf88/QBH/ofo/cRXS/It05LH0xIjxUoO1DxabsmCoRlFeZujteRNRYGC
22
+ RwVX8mFp9TEJ4mlmJOAEtx+oU7dhT7q082q5oZgOmt3rbII5GsmRyvlFNGRoUwQe
23
+ OowjO6PgF0/d/pTXY0hN+pb6C/q/dP91s2dMZxntuTM8GP4oNnifeOVcXJ5p3rwz
24
+ F2CFmCVUHxjMezk4AnNBAoIBAQD7Mevw5+gPXI29jDUKSkcY7SsqbJYMDd6/K50q
25
+ PWssaNQeebrGo7nUrUYIrn7Np/rzBWQd22aKVFoec7fF6c/yRB5hHedkHoBmkI+7
26
+ dhFSTfF/R8XMmxRrnh68GqezKiaB3ECF37111WNtvjNVAJZFXftfmI/ifov8yhJO
27
+ 2F1wO6+86Y/dQUZmrn8LyzXXjcUlVv7x76PjydTYJB5aXPTLQn1ABQD+rABs6KvL
28
+ 2m77vwS6X+6r+4jIwdJFuRjgao10dTucyFcs1Jmm/L/twv980xpt2HKa6QZ+emj+
29
+ CGN+cuCpVTnrMEWr0pnxFMNV39RHYY1EsjWTnGil7/aYMACpAoIBAQDR2hnFPsys
30
+ LH6KCAQcsAj8G8UBnjHKWmVYCvVp3+Xi3BqhAUEbYlCe6g2cP4w3j6Bn5iy6zEvb
31
+ A1W3N4rMevtzfFut2ZDtxsr6gN7iXP9/chDqy6DGb5X7AuJP/lUldC8cDqpuRGZQ
32
+ uM+1/SigNrVWzOP27Jm/xbdrBxo6a7c1rybadZJLTooCSKAFb+u59tG/FNIMkuyT
33
+ 8g7lbC4QSH/aX8RtAdWk2FL4JCeAupOwnDLL2en8n1I1GdCgWGbJoonT6lCtodBH
34
+ aLT2Zf50FEh8ec6sjTo3Ao9remh8Fh5ID7Yzivo5w4WcJYztbF4Ztyd7hZisz86X
35
+ xSC+oHm/bI/pAoIBAB9dSV+IJVKdtNkBA7JoOd5j5qriag3RQYnPMU2P46zk3e98
36
+ NZUN5msmw4Lb/ttA6TWk665Ksc/93k7FFiIxIpTWapCnwjefE1s7G6dFg74qG0hQ
37
+ NuNoTbFuSdok3eGiFrLKRIgyup5W6ZZPVGt9qkW5CWUTUIvwTxxeQtDzdR9JZJUK
38
+ +LqgpuC1Uwmu8ucaPY5/AVBGIsmTbu8Z+2w/BRXIFImE1m32Hgt7NdA7UvY+EKIQ
39
+ zmVM//RJNy8bgH6s70KmTK4z2aawWQsfrftLCMmWNkuW5iBvji8Gq8tkUr/8Kg8a
40
+ pCO4oEpm/m+6rvUvAHt1M8VrFwN6WRq3DqxL+hkCggEAQghM/6IJKUw+7RQkpxpF
41
+ WX8reJzcsf3L0e5w1sXbQo1b27nXUNSY5chkS/w7FOie4tKs1IKgg+QCvso9ZKZ2
42
+ JRrGhmflkMxy5mxStgvpYaL068zzZD2MhhWcPOucw1JR2JRM0LG5OEFPKsbkV7Wf
43
+ ThbezL4aixud4ZG0kRl/5uacZTWFuSiXiKxtnghftn6R9XyJs+cvhkYupcZqoDkP
44
+ 8hkcZ+ih32MqiGZn/7u16WbdHQQO+qzvY0IiQbJPdbctg39Br8ExFqc9+iKR9NjF
45
+ DlYN0IIIBXNKydkUs6cKFEbNYF6k6jQ6AK5YMAVfftwBEn8xUX96VIt1CEbayH9S
46
+ sQKCAQEA55p0t4PZ4ATXxWX7Lv/9yXNdQi37e31zl+VxCeI8H+xwZ0Luhkb7xEGP
47
+ T/pXYASzuabRIWnFoj54yWbNfJiSlokfvMbOYgJTFt4xL8rb27IDYO19gwjJ8Ofk
48
+ eo9hxsZlNIKDZWRCCQaMrkz2DknFCX+ICSlsD6BWSFkUZ+fOIRhlznsVgaCCuMf5
49
+ JUq0LcCjhZ/rpWCHq4kuTB32mEPoxvausfNvCYNzgUyuyxbO2zczthXtT+MKpNfV
50
+ 8tQYtWWJrQJuddue2G/inz3w2Uzn+v5UX0kDlZAqTnA8RrgKnzijM6p2u3qjCScw
51
+ CjgbIk+XQOnoNKbVTTRkwYuPtxAl7A==
52
52
  -----END PRIVATE KEY-----
@@ -1,54 +1,54 @@
1
1
  -----BEGIN ENCRYPTED PRIVATE KEY-----
2
- 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
- MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBDH7sVEv2qKzCN5iDQmMlQhBIIJ
4
- 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
- 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
- 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
- ycUfQkGP3yGmlS2n5DaOeB7xyw4wWVhkuyrQZbFR9H/NBWRrbEtshs9Da+iVJeMY
8
- 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
- jzNy9sfb/kzHiySQtVL5Ll/4SZyqgc4nAgv2IDWrPoPWu0WN7oJD/BSZoAKIH30L
10
- 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
- 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
- +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
- sH8vNgyzt0fQNDQUwjEfbR297n8cNWd1jHiNCOUuVpGETGg/ef47+PKm0+mQxfdD
14
- 74aLESuGmooihcQGFnScyuLWbr5TgaxD6cCf3sa6qi5/ycJa4W7ePWrq0vWA8rBn
15
- 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
- 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
- 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
- YukyuTZLjw6nMoWtuCEjpEqWrvJWEsmTIaeT+7zCpkIraK1Yqq8WI3wK9JMH1vEz
19
- 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
- cti35/lW91PZmUfXNLKCLjcVO2PREU2j7o5feQ0LJ5I+Qea5m2DVIu2weVoev2c/
21
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- bFdi3/fLGKsKBaZ1UFe+NMqP0yjnvrOj1VNkZ38Oj/QTUS+7uVqZxsQullt+HTfi
31
- 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
- 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
- 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
- zADX1MPXCPkEst4OksIoISOH//kjpo29ft+UrxAZYXZRljuiRjeT22iiY4OIy0jx
35
- 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
- 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
- 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
- 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
- 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
- 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
- 80YMvOUq4ltKf8XTuuvJerIFY8ojYG5X2ubA78zT8I/ysY6Wyl2IeiHa+drUXroG
42
- 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
- XjLzGfYGagWsgpZD967ful7akUFmemcz8afb7fC2ZY8vBTRrwd6R3vcSv1TmQK5S
44
- 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
- mdMB7eNjTyHCRDdM3h2t+8vKkD9T4mVqrboM16A/DVVVru8eHqpKc7P4ijQQSDei
46
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
54
54
  -----END ENCRYPTED PRIVATE KEY-----
@@ -1,35 +1,35 @@
1
1
  -----BEGIN CERTIFICATE-----
2
2
  MIIGATCCA+mgAwIBAgIBBDANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJMUzEL
3
3
  MAkGA1UECAwCTkExEzARBgNVBAcMCkh0dHAgSW5wdXQxETAPBgNVBAoMCExvZ3N0
4
- YXNoMQ0wCwYDVQQDDARyb290MB4XDTIzMDkyOTIxMzA0NloXDTI2MDkyOTIxMzA0
5
- NlowUzELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
4
+ YXNoMQ0wCwYDVQQDDARyb290MB4XDTIzMTAwMzA0MzY1MloXDTI2MTAwMzA0MzY1
5
+ MlowUzELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
6
6
  cHV0MREwDwYDVQQKDAhMb2dzdGFzaDEPMA0GA1UEAwwGY2xpZW50MIICIjANBgkq
7
- hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAy7sOesETzYvyYG4nnD4qMoZCl9DG4C4W
8
- tPLr1H6Pq1q9tvt/4CvAjvRZTpol747kBImy1HIMvacYFPEirZ1I+7vpEzuPwlE3
9
- uA4JcjK2/wMrs4fgeI0czUMnCOx4JLt+Dsgm9D6OTXvH79BjkLAaS/hb74qLqpd5
10
- Ju9YHF0INXg9vYZRPmxEtH+8A0hrlXQRTsIhtLoCVA90hAp7EzZ7UAAv/rlAnXwD
11
- BlZSYyWl8dYqxiCWbImXWG7JsIePaiceWio9steelDhcI41a2V40rMlUPLiBJGnN
12
- I/nAsa7Wf0n84ciJzVD7ynT+mPr5RkcznCY52HH/emdbnxPpFSCFgL/P9JA3pa+l
13
- newJy4fGZvYyRkNkBk7dpxrOnPoObHJuRRAzvCIhCpnOM2GM+Ll2hnbpxzo7t9Sb
14
- Su/kw48kzZTKdLdaEbk5C/VTX/yQ7FSKhWYjT/IFFVi33Y30eFTboVjrq/nrTLsn
15
- /k7RpOmTn5x1qm8PLp84ZVx1Yn4Er/bEu2EAnYsjfeHeOQy2cRY3nXXsn9/wEWWX
16
- Tydf7G2qccqkVsgnvpHPy2V0/T/XBziI1VqXtnQMEekCy/dDS1r0aht0QhyiK4l6
17
- lK8wGFyiXrSl2uEDSRQVyFx87Za0jUqycuG0AOCiVq7wgrC/ldu7TyguWa3s9mnY
18
- aBJmQSPG2W8CAwEAAaOB4TCB3jAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIF
7
+ hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzenDbAON8w1TA7u1ELfK3o8BR7xNpQiD
8
+ ykFtHFGrp5tY0Ilk7Yk86VA5C0DNo/rdUOelCe2f84wa9+OH9shfRgfPqDrZqD99
9
+ Mbf/r78nsC+ItYv+t9fPUz+Tu3hg8PJI/ocg7rzQ77patdWHXVz3V0S1oxus125j
10
+ 94ji/448zYjFTSzke6t5xXKYpGGWAPSmQxNaor2+r2gEpqfRNPfK+D9THyZX0sOR
11
+ /MD1AOLMbVOTm9pswhsfAqIuTfGVJWAEMPUuIMC5xr7e+8aZbTDP1TD8/dDrz9tG
12
+ zX94QL1t2b7+w5B75WmltZC01RaG/elCkpXMbpt8Bwfd8hmW2KsqqHsCGkYJTtjk
13
+ vTLtWKSiqpOaa+0uqRXKUTx0IxRdHlSacgVBlLiDsTrFAhMelSSu75ZgK7jAricL
14
+ ADl48GHDa9AByTr/Yxp622vTfY769YBKcfLBvN7qSygJf7jZ4bFWIUqPKzocONFc
15
+ zqiWI3g4nNlAI3yIG895lSfJw/4e4MTohnxrmFVISGzsNRsil1D46G3bt7ZDvk6H
16
+ 2IDWxdk3SVmRx4khPMM+HmgdFCFGtZSFnbBdQsM9MSCXv+OkX+aUHB8TQ/NTCMD1
17
+ ZCuFrmAKm0PicDmSDCErWXRvS4dmj5X7Gah8LqTT35GTP0oBTO3GZFOON4bNDVtI
18
+ tC4bErJbANECAwEAAaOB4TCB3jAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIF
19
19
  oDAzBglghkgBhvhCAQ0EJhYkT3BlblNTTCBHZW5lcmF0ZWQgQ2xpZW50IENlcnRp
20
- ZmljYXRlMB0GA1UdDgQWBBRDosYG+0spuKpG6rnBBxO1CJrUCTAfBgNVHSMEGDAW
21
- gBR81PQUn3jB9/i0sWoSUloY3jeVGjAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYw
20
+ ZmljYXRlMB0GA1UdDgQWBBS1DozP7Ov25cJeDW3IXq1c6+Sx4zAfBgNVHSMEGDAW
21
+ gBQz/zI1tCfs7stYavc3NvY/DDDBGDAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYw
22
22
  FAYIKwYBBQUHAwIGCCsGAQUFBwMEMBoGA1UdEQQTMBGCCWxvY2FsaG9zdIcEfwAA
23
- ATANBgkqhkiG9w0BAQsFAAOCAgEASlKD2Iw8MM69Qqhv/65kHXEnwjvl7ZxSuB9p
24
- YEI3jLmKLAONM6b1OP2iPZVKUbtQ6lTwAME64/fPIhnm8dbAt7If7ptcdFHHNe/4
25
- n143YeF6fxonMJGACIKwDsELinp9jGUtrQdtm7pIKRDATTzYspdvhn2HFbSSqCr+
26
- y3TGxmkg7x8/+bQTgnJs9CHtEopThhTYoC2olBMEXFq1Sh2oNEcm1nlKjOx/iApI
27
- lqqowADqjHz6pThrladTIQMF9i1MxsNLAeSVqC19RCzryspBx1POU0xukM6VsFep
28
- CCSfjT60UHhMMKkHmr9JcuUUy3h1yymf+z7fq40YefiSHRuWDNrKM9GXXlesObob
29
- T0FW+Jig9qGVPTdBZs6l3Fj8hhmvZc8TgadZ4nY2qFe4AXQH84ajpraw50WZQMtE
30
- 6M7aECSHzSSbzpuZL22lsRHW41cT86KkH4Yjv3UfeR7Q1N6ADHOekHjtueh1lCHH
31
- gJomI+nkvNI8M/+nDy58aZ/Pu2hn4vF0CBN6/dzddbMpqLi8toeJFkfJRoXuQiBd
32
- AQZNzjTcC/w8G1eTMY+llGrE+w5GRzVa1PRqrQ+g79+OXsgVsV5RTxJ3ShGI867y
33
- U8njiuI7jlm2W1oo+NRko+a4B9t7A0O2rE6xJo4IFIC6y4qwJKvg/fezBQUZvUP5
34
- V+CM/k0=
23
+ ATANBgkqhkiG9w0BAQsFAAOCAgEAtdiU8wM37Q7V3axzEBZf2prwRQSyA1Sxd1+a
24
+ EuAk0B93ynRhOkIoW0EmJQzOh5lB/V4fkce+PwIZb9j2cH1DnTJyE/XjZ6Y/p1f/
25
+ Fpk2xbSiaRGwhetotQCpEmNBwKng1VD3wgzp942sCn0ddswgJQ/5KEt+H9vJuuKu
26
+ CC503HUQ58pfiYJc5Kwz9cboYSR0VoRJ+iVdmXGHOW+8oHwt6F/Hd6GN/HX/s9FC
27
+ UQ6KYxFUQM/oAvxJ8FNmaL4kNQvZW9MQebpyTVPwZwq7hNqDndUicXVMuD2DzbCU
28
+ S0OLvYzLnAW9v4niTNRRTh6hjQnlAZOXdGuwPgmcIIfq3X7Mdme26d+J2AddPDc/
29
+ olOQFydJJ7dyYh6DKI/bK71IengFm3vokPZooZU/0D1VZkcMFITvNnXxgtud5nW5
30
+ ghNCfDCE+y8gU+C9djUC3kBZtxEP4n2RDoAzy44U0QKA31j7dy/KTy1UzIaVHiLL
31
+ TtJc5Kuyb2xAM76ySoIZCpF+k7c1ZipOkKnOV7ZYDYqWIxzfTBgDOcux9LJDkBUF
32
+ LLsBdg/818evYFC8sf28DiLJNZen8o2DHhN4XDx7dT5VPHLquLWOJMubYMCBbFGB
33
+ wKu5HdANuPV+ohUCnatFlfwG2Vju/0qPozfkixy5esF5EuUHrTHvDUvoMliA7rCN
34
+ yzJa2MI=
35
35
  -----END CERTIFICATE-----