diff --git a/README.md b/README.md index b187d810..ec4f0162 100644 --- a/README.md +++ b/README.md @@ -15,46 +15,46 @@ Built with the [Meltano Singer SDK](https://sdk.meltano.com). ## Settings -| Setting | Required | Default | Description | -|:--------|:--------:|:-------:|:------------| -| host | False | None | Hostname for postgres instance. Note if sqlalchemy_url is set this will be ignored. | -| port | False | 5432 | The port on which postgres is awaiting connection. Note if sqlalchemy_url is set this will be ignored. | -| user | False | None | User name used to authenticate. Note if sqlalchemy_url is set this will be ignored. | -| password | False | None | Password used to authenticate. Note if sqlalchemy_url is set this will be ignored. | -| database | False | None | Database name. Note if sqlalchemy_url is set this will be ignored. | -| max_record_count | False | None | Optional. The maximum number of records to return in a single stream. | -| sqlalchemy_url | False | None | Example postgresql://[username]:[password]@localhost:5432/[db_name] | -| filter_schemas | False | None | If an array of schema names is provided, the tap will only process the specified Postgres schemas and ignore others. If left blank, the tap automatically determines ALL available Postgres schemas. | -| dates_as_string | False | 0 | Defaults to false, if true, date, and timestamp fields will be Strings. If you see ValueError: Year is out of range, try setting this to True. | -| ssh_tunnel | False | None | SSH Tunnel Configuration, this is a json object | -| ssh_tunnel.enable | False | 0 | Enable an ssh tunnel (also known as bastion server), see the other ssh_tunnel.* properties for more details | -| ssh_tunnel.host | False | None | Host of the bastion server, this is the host we'll connect to via ssh | -| ssh_tunnel.username | False | None | Username to connect to bastion server | -| ssh_tunnel.port | False | 22 | Port to connect to bastion server | -| ssh_tunnel.private_key | False | None | Private Key for authentication to the bastion server | -| ssh_tunnel.private_key_password | False | None | Private Key Password, leave None if no password is set | -| ssl_enable | False | 0 | Whether or not to use ssl to verify the server's identity. Use ssl_certificate_authority and ssl_mode for further customization. To use a client certificate to authenticate yourself to the server, use ssl_client_certificate_enable instead. Note if sqlalchemy_url is set this will be ignored. | -| ssl_client_certificate_enable | False | 0 | Whether or not to provide client-side certificates as a method of authentication to the server. Use ssl_client_certificate and ssl_client_private_key for further customization. To use SSL to verify the server's identity, use ssl_enable instead. Note if sqlalchemy_url is set this will be ignored. | -| ssl_mode | False | verify-full | SSL Protection method, see [postgres documentation](https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION) for more information. Must be one of disable, allow, prefer, require, verify-ca, or verify-full. Note if sqlalchemy_url is set this will be ignored. | -| ssl_certificate_authority | False | ~/.postgresql/root.crl | The certificate authority that should be used to verify the server's identity. Can be provided either as the certificate itself (in .env) or as a filepath to the certificate. Note if sqlalchemy_url is set this will be ignored. | -| ssl_client_certificate | False | ~/.postgresql/postgresql.crt | The certificate that should be used to verify your identity to the server. Can be provided either as the certificate itself (in .env) or as a filepath to the certificate. Note if sqlalchemy_url is set this will be ignored. | -| ssl_client_private_key | False | ~/.postgresql/postgresql.key | The private key for the certificate you provided. Can be provided either as the certificate itself (in .env) or as a filepath to the certificate. Note if sqlalchemy_url is set this will be ignored. | -| ssl_storage_directory | False | .secrets | The folder in which to store SSL certificates provided as raw values. When a certificate/key is provided as a raw value instead of as a filepath, it must be written to a file before it can be used. This configuration option determines where that file is created. | -| default_replication_method | False | FULL_TABLE | Replication method to use if there is not a catalog entry to override this choice. One of `FULL_TABLE`, `INCREMENTAL`, or `LOG_BASED`. | -| stream_maps | False | None | Config object for stream maps capability. For more information check out [Stream Maps](https://sdk.meltano.com/en/latest/stream_maps.html). | -| stream_map_config | False | None | User-defined config values to be used within map expressions. | -| faker_config | False | None | Config for the [`Faker`](https://faker.readthedocs.io/en/master/) instance variable `fake` used within map expressions. Only applicable if the plugin specifies `faker` as an addtional dependency (through the `singer-sdk` `faker` extra or directly). | -| faker_config.seed | False | None | Value to seed the Faker generator for deterministic output: https://faker.readthedocs.io/en/master/#seeding-the-generator | -| faker_config.locale | False | None | One or more LCID locale strings to produce localized output for: https://faker.readthedocs.io/en/master/#localization | -| flattening_enabled | False | None | 'True' to enable schema flattening and automatically expand nested properties. | -| flattening_max_depth | False | None | The max depth to flatten schemas. | -| batch_config | False | None | | -| batch_config.encoding | False | None | Specifies the format and compression of the batch files. | -| batch_config.encoding.format | False | None | Format to use for batch files. | -| batch_config.encoding.compression | False | None | Compression format to use for batch files. | -| batch_config.storage | False | None | Defines the storage layer to use when writing batch files | -| batch_config.storage.root | False | None | Root path to use when writing batch files. | -| batch_config.storage.prefix | False | None | Prefix to use when writing batch files. | +| Setting | Required | Default | Description | +| :-------------------------------- | :------- | :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| host | False | None | Hostname for postgres instance. Note if sqlalchemy_url is set this will be ignored. | +| port | False | 5432 | The port on which postgres is awaiting connection. Note if sqlalchemy_url is set this will be ignored. | +| user | False | None | User name used to authenticate. Note if sqlalchemy_url is set this will be ignored. | +| password | False | None | Password used to authenticate. Note if sqlalchemy_url is set this will be ignored. | +| database | False | None | Database name. Note if sqlalchemy_url is set this will be ignored. | +| max_record_count | False | None | Optional. The maximum number of records to return in a single stream. | +| sqlalchemy_url | False | None | Example postgresql://[username]:[password]@localhost:5432/[db_name] | +| filter_schemas | False | None | If an array of schema names is provided, the tap will only process the specified Postgres schemas and ignore others. If left blank, the tap automatically determines ALL available Postgres schemas. | +| dates_as_string | False | 0 | Defaults to false, if true, date, and timestamp fields will be Strings. If you see ValueError: Year is out of range, try setting this to True. | +| ssh_tunnel | False | None | SSH Tunnel Configuration, this is a json object | +| ssh_tunnel.enable | False | 0 | Enable an ssh tunnel (also known as bastion server), see the other ssh_tunnel.* properties for more details | +| ssh_tunnel.host | False | None | Host of the bastion server, this is the host we'll connect to via ssh | +| ssh_tunnel.username | False | None | Username to connect to bastion server | +| ssh_tunnel.port | False | 22 | Port to connect to bastion server | +| ssh_tunnel.private_key | False | None | Private Key for authentication to the bastion server | +| ssh_tunnel.private_key_password | False | None | Private Key Password, leave None if no password is set | +| ssl_enable | False | 0 | Whether or not to use ssl to verify the server's identity. Use ssl_certificate_authority and ssl_mode for further customization. To use a client certificate to authenticate yourself to the server, use ssl_client_certificate_enable instead. Note if sqlalchemy_url is set this will be ignored. | +| ssl_client_certificate_enable | False | 0 | Whether or not to provide client-side certificates as a method of authentication to the server. Use ssl_client_certificate and ssl_client_private_key for further customization. To use SSL to verify the server's identity, use ssl_enable instead. Note if sqlalchemy_url is set this will be ignored. | +| ssl_mode | False | verify-full | SSL Protection method, see [postgres documentation](https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION) for more information. Must be one of disable, allow, prefer, require, verify-ca, or verify-full. Note if sqlalchemy_url is set this will be ignored. | +| ssl_certificate_authority | False | ~/.postgresql/root.crl | The certificate authority that should be used to verify the server's identity. Can be provided either as the certificate itself (in .env) or as a filepath to the certificate. Note if sqlalchemy_url is set this will be ignored. | +| ssl_client_certificate | False | ~/.postgresql/postgresql.crt | The certificate that should be used to verify your identity to the server. Can be provided either as the certificate itself (in .env) or as a filepath to the certificate. Note if sqlalchemy_url is set this will be ignored. | +| ssl_client_private_key | False | ~/.postgresql/postgresql.key | The private key for the certificate you provided. Can be provided either as the certificate itself (in .env) or as a filepath to the certificate. Note if sqlalchemy_url is set this will be ignored. | +| ssl_storage_directory | False | .secrets | The folder in which to store SSL certificates provided as raw values. When a certificate/key is provided as a raw value instead of as a filepath, it must be written to a file before it can be used. This configuration option determines where that file is created. | +| default_replication_method | False | FULL_TABLE | Replication method to use if there is not a catalog entry to override this choice. One of `FULL_TABLE`, `INCREMENTAL`, or `LOG_BASED`. | +| stream_maps | False | None | Config object for stream maps capability. For more information check out [Stream Maps](https://sdk.meltano.com/en/latest/stream_maps.html). | +| stream_map_config | False | None | User-defined config values to be used within map expressions. | +| faker_config | False | None | Config for the [`Faker`](https://faker.readthedocs.io/en/master/) instance variable `fake` used within map expressions. Only applicable if the plugin specifies `faker` as an addtional dependency (through the `singer-sdk` `faker` extra or directly). | +| faker_config.seed | False | None | Value to seed the Faker generator for deterministic output: https://faker.readthedocs.io/en/master/#seeding-the-generator | +| faker_config.locale | False | None | One or more LCID locale strings to produce localized output for: https://faker.readthedocs.io/en/master/#localization | +| flattening_enabled | False | None | 'True' to enable schema flattening and automatically expand nested properties. | +| flattening_max_depth | False | None | The max depth to flatten schemas. | +| batch_config | False | None | | +| batch_config.encoding | False | None | Specifies the format and compression of the batch files. | +| batch_config.encoding.format | False | None | Format to use for batch files. | +| batch_config.encoding.compression | False | None | Compression format to use for batch files. | +| batch_config.storage | False | None | Defines the storage layer to use when writing batch files | +| batch_config.storage.root | False | None | Root path to use when writing batch files. | +| batch_config.storage.prefix | False | None | Prefix to use when writing batch files. | A full list of supported settings and capabilities is available by running: `tap-postgres --about` @@ -92,6 +92,37 @@ poetry install pre-commit install ``` +### Setting Up SSL Files + + +We have set the provided keys in the .ssl directory to be valid for multiple centuries. However, we have also provided configuration instructions below to create all of the necessary files for testing SSL. + +A list of each file and its purpose: +1. `ca.crt`: CA for client's certificate (stored on the server) +1. `cert.crt`: Client's certificate (stored on the client) +1. `pkey.key`: Client's private key (stored on the client) +1. `public_pkey.key`: Client's private key with incorrect file permissions (stored on the client) +1. `root.crt`: CA for server's certificate (stored on the client) +1. `server.crt`: Server's certificate (stored on the server) +1. `server.key`: Server's private key (stored on the server) + +Run the following command to generate all relevant SSL files, with certificates valid for two centuries (73048 days). + +```bash +chmod 0600 ssl/*.key +openssl req -new -x509 -days 73048 -nodes -out ssl/server.crt -keyout ssl/server.key -subj "/CN=localhost" && +openssl req -new -x509 -days 73048 -nodes -out ssl/cert.crt -keyout ssl/pkey.key -subj "/CN=postgres" && +cp ssl/server.crt ssl/root.crt && +cp ssl/cert.crt ssl/ca.crt && +cp ssl/pkey.key ssl/public_pkey.key && +chown 999:999 ssl/server.key && +chmod 600 ssl/server.key && +chmod 600 ssl/pkey.key && +chmod 644 ssl/public_pkey.key +``` + +Now that all of the SSL files have been set up, you're ready to set up tests with pytest. + ### Create and Run Tests Create tests within the `tap_postgres/tests` subfolder and diff --git a/ssl/ca.crt b/ssl/ca.crt index ad69fd59..743667bb 100644 --- a/ssl/ca.crt +++ b/ssl/ca.crt @@ -1,19 +1,19 @@ -----BEGIN CERTIFICATE----- -MIIDBzCCAe+gAwIBAgIUHoTp2HQfKSdJ9MdrvWvWW9FLLHMwDQYJKoZIhvcNAQEL -BQAwEzERMA8GA1UEAwwIcG9zdGdyZXMwHhcNMjMwNTE2MjMyNjAzWhcNMjQwNTE1 -MjMyNjAzWjATMREwDwYDVQQDDAhwb3N0Z3JlczCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAJwSeW2XRRlP5DDNqwqKSZncXigDo0zBJyYs9flAGfoPPI7V -uaWaEfhpF9uoQ6RKuWJ4IrqXTVFhZmMvygfakMVhl4cYfE2ApB7qRk8vNhQ9K/c9 -ks1zL7FddqfwaARCww3LuE+j9Mh2cI8FHQPYtonmRmFIo7hbuL2ZWXOeEqPf4RDE -n10nXx7XlKO52zLFPYJ0guv0todxbuAWVNFfuFXtUANmzhoq0lYwt/kT4/bfLRXu -G24dUA60fCjm0YpFJtv/rAKPcIRpo7VEpCFq6+rUMQZKVVhX8tcZ+SbmKdWPx5I5 -41HMPPBDH8XuDJvtuKzd5Hnj7qfEg0L3Xy414EUCAwEAAaNTMFEwHQYDVR0OBBYE -FIPvcMua9Wec95+dbdBUX6EDwCsUMB8GA1UdIwQYMBaAFIPvcMua9Wec95+dbdBU -X6EDwCsUMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAH+TrUQD -POYPAzcropUbtYV40pjTK7k6Q9OXwDfVNNsQhBE+TGuk0YpJzpaRQPzyosD/eFYU -UEfsbCifhSb5h5AQB3V0MnQmC3/Oeao6On17wncM48V7BZ8o6HA8wa7bDs7tVMW5 -+lS+CqCEzdWmqWX7batImU8yVmmhIRL/Rp4Yz8WiOSZxq/ALTlAjsecVFug4MS33 -5r5G1LfYId387vy9wGchYaY3cVLuJypMf2IzXS0t7BWK6rP8VxWYlnKqRksmPhvN -1JBStTo+cRsCCqs2Hv/1cYynW2VWgNBndsw4h9Ni8dfJbLTsObixFMjzWhOYPk4Q -aE7neVvEqUwG6rE= +MIIDCTCCAfGgAwIBAgIUXzBRVNawfFm/xhVf5mSO3xducnkwDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwIcG9zdGdyZXMwIBcNMjQwNzAzMTYwNzA3WhgPMjIyNDA3 +MDMxNjA3MDdaMBMxETAPBgNVBAMMCHBvc3RncmVzMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAszdXoSeOubiLFdYvjUyPN9wQ4GVueLreWYEoM2/QN1Qu +cQud2VqkmSEoTWv0XfqYAhxFBN3O21ahX7IFH4rESj2Yzw2qrGc/nOoJy0xasFON +6hDJ7PaczDsggmkN1DFVUZmMvjx2O5jfmoU11bjgJ/XwV7EqNMQxhR0/bHaEphgQ +h6/UbrAPTgy0QObbnn1NjqAyzJYSr2n6rMOu5AZLeB0IC7vNSYFFXqF+6Y+6HMMH +35wL33dIgBDOmUtfe7rTVhVw/1CsxG7F9bk7N/TQvcekiVJmz8Xu7W2hqwPDTzJC +ECIICQmEpeN+peq6TJ5g5RWSagCv6IN6Jxe18j2YbwIDAQABo1MwUTAdBgNVHQ4E +FgQUGtwPptSvvbzvSZkjYgobkKYvPDIwHwYDVR0jBBgwFoAUGtwPptSvvbzvSZkj +YgobkKYvPDIwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEANFvL +HXFKgIC8Jrbzzw1V2ZgGGV1iUea2RVRAZ6FttCss7Iy6U6EpgRS1/8yg0b2dBodl +PpcCs4pj+7g+YWzDij9ULhHg9P+Z6Bb0NvtBczIANRml2x5KOVres3cwCL1HrsvP +DBx8tpQa0RpFgmAZYqOb3kwjNavSOSGO1icMy1JYOmeh/gu1MsK4fi3agV2WdyLr +e9lOXSAf+VGyU8Wg2ncEIR8o7FQNnmj3uOT9IXalz1LX/DSRbBR+p3cIaYnG6KEv +bCSpL8vRVtLnl3J3WleNsszvkaUh29Wbt/h8Mzh2/oqyhQipbBJA4zL06QdWIQm5 +hmIHsTJG1l/PLAVSYA== -----END CERTIFICATE----- diff --git a/ssl/cert.crt b/ssl/cert.crt index ad69fd59..743667bb 100644 --- a/ssl/cert.crt +++ b/ssl/cert.crt @@ -1,19 +1,19 @@ -----BEGIN CERTIFICATE----- -MIIDBzCCAe+gAwIBAgIUHoTp2HQfKSdJ9MdrvWvWW9FLLHMwDQYJKoZIhvcNAQEL -BQAwEzERMA8GA1UEAwwIcG9zdGdyZXMwHhcNMjMwNTE2MjMyNjAzWhcNMjQwNTE1 -MjMyNjAzWjATMREwDwYDVQQDDAhwb3N0Z3JlczCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAJwSeW2XRRlP5DDNqwqKSZncXigDo0zBJyYs9flAGfoPPI7V -uaWaEfhpF9uoQ6RKuWJ4IrqXTVFhZmMvygfakMVhl4cYfE2ApB7qRk8vNhQ9K/c9 -ks1zL7FddqfwaARCww3LuE+j9Mh2cI8FHQPYtonmRmFIo7hbuL2ZWXOeEqPf4RDE -n10nXx7XlKO52zLFPYJ0guv0todxbuAWVNFfuFXtUANmzhoq0lYwt/kT4/bfLRXu -G24dUA60fCjm0YpFJtv/rAKPcIRpo7VEpCFq6+rUMQZKVVhX8tcZ+SbmKdWPx5I5 -41HMPPBDH8XuDJvtuKzd5Hnj7qfEg0L3Xy414EUCAwEAAaNTMFEwHQYDVR0OBBYE -FIPvcMua9Wec95+dbdBUX6EDwCsUMB8GA1UdIwQYMBaAFIPvcMua9Wec95+dbdBU -X6EDwCsUMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAH+TrUQD -POYPAzcropUbtYV40pjTK7k6Q9OXwDfVNNsQhBE+TGuk0YpJzpaRQPzyosD/eFYU -UEfsbCifhSb5h5AQB3V0MnQmC3/Oeao6On17wncM48V7BZ8o6HA8wa7bDs7tVMW5 -+lS+CqCEzdWmqWX7batImU8yVmmhIRL/Rp4Yz8WiOSZxq/ALTlAjsecVFug4MS33 -5r5G1LfYId387vy9wGchYaY3cVLuJypMf2IzXS0t7BWK6rP8VxWYlnKqRksmPhvN -1JBStTo+cRsCCqs2Hv/1cYynW2VWgNBndsw4h9Ni8dfJbLTsObixFMjzWhOYPk4Q -aE7neVvEqUwG6rE= +MIIDCTCCAfGgAwIBAgIUXzBRVNawfFm/xhVf5mSO3xducnkwDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwIcG9zdGdyZXMwIBcNMjQwNzAzMTYwNzA3WhgPMjIyNDA3 +MDMxNjA3MDdaMBMxETAPBgNVBAMMCHBvc3RncmVzMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAszdXoSeOubiLFdYvjUyPN9wQ4GVueLreWYEoM2/QN1Qu +cQud2VqkmSEoTWv0XfqYAhxFBN3O21ahX7IFH4rESj2Yzw2qrGc/nOoJy0xasFON +6hDJ7PaczDsggmkN1DFVUZmMvjx2O5jfmoU11bjgJ/XwV7EqNMQxhR0/bHaEphgQ +h6/UbrAPTgy0QObbnn1NjqAyzJYSr2n6rMOu5AZLeB0IC7vNSYFFXqF+6Y+6HMMH +35wL33dIgBDOmUtfe7rTVhVw/1CsxG7F9bk7N/TQvcekiVJmz8Xu7W2hqwPDTzJC +ECIICQmEpeN+peq6TJ5g5RWSagCv6IN6Jxe18j2YbwIDAQABo1MwUTAdBgNVHQ4E +FgQUGtwPptSvvbzvSZkjYgobkKYvPDIwHwYDVR0jBBgwFoAUGtwPptSvvbzvSZkj +YgobkKYvPDIwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEANFvL +HXFKgIC8Jrbzzw1V2ZgGGV1iUea2RVRAZ6FttCss7Iy6U6EpgRS1/8yg0b2dBodl +PpcCs4pj+7g+YWzDij9ULhHg9P+Z6Bb0NvtBczIANRml2x5KOVres3cwCL1HrsvP +DBx8tpQa0RpFgmAZYqOb3kwjNavSOSGO1icMy1JYOmeh/gu1MsK4fi3agV2WdyLr +e9lOXSAf+VGyU8Wg2ncEIR8o7FQNnmj3uOT9IXalz1LX/DSRbBR+p3cIaYnG6KEv +bCSpL8vRVtLnl3J3WleNsszvkaUh29Wbt/h8Mzh2/oqyhQipbBJA4zL06QdWIQm5 +hmIHsTJG1l/PLAVSYA== -----END CERTIFICATE----- diff --git a/ssl/pkey.key b/ssl/pkey.key index f606ea3f..1fd3c5cd 100644 --- a/ssl/pkey.key +++ b/ssl/pkey.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCcEnltl0UZT+Qw -zasKikmZ3F4oA6NMwScmLPX5QBn6DzyO1bmlmhH4aRfbqEOkSrlieCK6l01RYWZj -L8oH2pDFYZeHGHxNgKQe6kZPLzYUPSv3PZLNcy+xXXan8GgEQsMNy7hPo/TIdnCP -BR0D2LaJ5kZhSKO4W7i9mVlznhKj3+EQxJ9dJ18e15SjudsyxT2CdILr9LaHcW7g -FlTRX7hV7VADZs4aKtJWMLf5E+P23y0V7htuHVAOtHwo5tGKRSbb/6wCj3CEaaO1 -RKQhauvq1DEGSlVYV/LXGfkm5inVj8eSOeNRzDzwQx/F7gyb7bis3eR54+6nxINC -918uNeBFAgMBAAECggEAGjPz1RVvkXdbTWJKVCOxhbZ8zGUH9qv7IaqsxWMguV3z -gduaJpZ+a+FhEwzmBmBRTZnz4rXiUkZzBTYRyk3Evo7K/PB8dhqh81rL4SGBB9bZ -WdIponqzSCjz8fAn1odK7jcEw8I4J6vS7AAkxe+Nfgt+R3kFm78yfgqP/RxN7ts1 -czGT2ezOJNr7Wk6d4DDAy2hTYIc89eqir+epfx1e5EnhdVeg2SPBwSTppbXIp8F1 -51jXNv60pP64Ieu7QTCR283btkQxMvUQ8i9LKVNh6EECd2bBPEt0xCWVyL8exc1u -MUtIpblhs17ziNBHNs1YQLX8Z73xbnyxO+IsAvf4gQKBgQDKpbueiPW0uQ77iesR -NkUWZNvqTXl9tWnlUeNBdcWvhOeP2OeAFyeCLCmKXE7vPiKn4C/2PMHlmUS0JdET -TV2nlUJIv78Rl26gCcYdLjwAUfmmH+BgNHw/cP58kkTiegNYd84reva0AGz7I/c2 -mim2KlzZLKCHPopZJ99KZY9HYQKBgQDFKZwFv+npFcp0W0G+c2COsZ0vRbSttQaR -wYRb6FfXaBisDwSGCujQsKG92XYZAS9q7GPJ8iTpPoT/TSUePKERlwPxUpc9sqVB -tysb7vWcGrSOGeunIHH6F2OXPHPfux9Eq/bURUF1MIB6fbgzxL+Kl/M7m/EtMESq -AtFalGUXZQKBgB09LIUDXfBlgzPoAnLJUc6ZXuG/q/fnZRAhcJjRVWSt2Ht44G4q -6RhvJs8/4mPCo111i3YL7i4inzce/bu7PfggISA+CmOPZfbRcjRjp2Skb1D46Hb5 -G7RLqWxv7mB/Glx5bNX5N/9g0FisJ89JDxupoRv0xHS/IVcb2avyW2oBAoGBAIgB -I/dzY0++EGIjcT6HKFxGeT9avj/1WArDiyI7LB0TWbGWynAMpn0O2wOzNpwZDTSc -zFlKB9w9nFDgTnKFMDaKDdYyOtH8obKrP7mNJTAB2/sKNlybLQRvjeuNcAEte2xL -k4DqJTVJt9bHUoGjft2D4+2CrOOXIEaGmxP4uaNhAoGBAJHDjgvXi2j0DloQh8hR -6+c/wRV3lMfg4joQ7tnI8HWyncUfmcl6Ei5jdgYT3VqTfqYMWKqIqlxeOqaPh/6j -me7Odgcc52pQaLYGEiwl4cd+pYXSyxGozVR9INf2KveUtiCDKlxKswbWaZ/ywTpI -9uR9je0KdLsSQ4e4D5k2JkPV +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCzN1ehJ465uIsV +1i+NTI833BDgZW54ut5ZgSgzb9A3VC5xC53ZWqSZIShNa/Rd+pgCHEUE3c7bVqFf +sgUfisRKPZjPDaqsZz+c6gnLTFqwU43qEMns9pzMOyCCaQ3UMVVRmYy+PHY7mN+a +hTXVuOAn9fBXsSo0xDGFHT9sdoSmGBCHr9RusA9ODLRA5tuefU2OoDLMlhKvafqs +w67kBkt4HQgLu81JgUVeoX7pj7ocwwffnAvfd0iAEM6ZS197utNWFXD/UKzEbsX1 +uTs39NC9x6SJUmbPxe7tbaGrA8NPMkIQIggJCYSl436l6rpMnmDlFZJqAK/og3on +F7XyPZhvAgMBAAECggEARGSp5f/1KW5Ccf5v3kIp49zxedlru9pAsbKnF14j/YF8 +Sbrvrfu4FhI/0bARrW3NZfzI4C8P2sfoRN9osh1ghJ6WOupRyIKMlcMBItsMPv9c +CMgIb4y70Pr9kJcr5l8/Wqk5O35SdrMEHnGY1mu767QhWS3s1/9JkK3VPvzJ6aJf +9lpL7g6cbKzIZL4pmZSh8OLB/4D8iderN1NyznrkbSwviit+GfR1izWkhNIxuXui +8TdlKwfbyiEWZahAxGS/dD5TeWUeu1kYyflH6AyeEU5vfxW0Vu/fKOZSjwDeqTZl +B/kBQtdpS7dXORWqaFBBHGr8lQSGOygvLM7CxwBGfQKBgQDussGCdaRKV9NFgI2t +HTj8ofOd5qDSnPra9fXYjlqLN5nma7oTfmu7rXcpnIL3jucfb+M3tC5PGw90AHiJ +dQ+oiH1msw+GLDmvw1X1umvfaseJ+ZapapdQtbGUtecMDImM42RXeiSxHylGyN+N +N2LHiPc5SApLPQQ2LQfmEyVLWwKBgQDANNjXwpOGkoGK3QsoEb8bxTQIJ5rWgLN/ +bZyrL9E28H0GCUKXe9gFdI7QkzQCIFK1mjELDG3kHqlkpAulG66vSfr7PSfnMeiN +j0qZed19BZfHRKr0PJcbsxMwBDslGU5j+KAjBo1z8vlCsY70qfnys0zVZ34UjFCf +h7WML2n3fQKBgFvs3Zc3ZRD4Z7XRfz5XDbZFTIPX6MGTkQw4QvimQfpxbESP4jZV +rnm1oTmWO93I2/uAZHn0Ww0996KN993ABkq6XcjqVqUubPzidj1PEPIWtkfNphcS +pLmBb6U8tIEwZtyqSd9ie7T2sje/blB9Lv53IfaeZtB47CFNEEirwOYXAoGABUFs +rHmljwhyglmI9I+Hqjq6MX7jvPnH7rQQlJ26GsZ4pLGcIIhCX+PQA+QCiAxaNp0A +ukyctKAiAZ56swkOvbxIIJaLgMbclQJWB9xNMh31CH3YLtV5TEiZPbbf5yPKAPHL +bym+tGzwY+J3BjmfnANLFoq959HuYm5TiIHDZAECgYA/PIf1GXn+u2Yrex9olsaD +melsqoyFn7gpox5UGM4QTqkqL3I0iQH5F05Oyn8OZaMNW4Xl/y5g+nL7wyHGKXJR +21x2cVxKb9UWYYSbn6KhHEfwaCFKAd/icvT7vWZsdX8uOD3X6pRKrpYTgkz47IsE +gjVSExzww/ZKdmmxGYZW5A== -----END PRIVATE KEY----- diff --git a/ssl/public_pkey.key b/ssl/public_pkey.key index f606ea3f..1fd3c5cd 100644 --- a/ssl/public_pkey.key +++ b/ssl/public_pkey.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCcEnltl0UZT+Qw -zasKikmZ3F4oA6NMwScmLPX5QBn6DzyO1bmlmhH4aRfbqEOkSrlieCK6l01RYWZj -L8oH2pDFYZeHGHxNgKQe6kZPLzYUPSv3PZLNcy+xXXan8GgEQsMNy7hPo/TIdnCP -BR0D2LaJ5kZhSKO4W7i9mVlznhKj3+EQxJ9dJ18e15SjudsyxT2CdILr9LaHcW7g -FlTRX7hV7VADZs4aKtJWMLf5E+P23y0V7htuHVAOtHwo5tGKRSbb/6wCj3CEaaO1 -RKQhauvq1DEGSlVYV/LXGfkm5inVj8eSOeNRzDzwQx/F7gyb7bis3eR54+6nxINC -918uNeBFAgMBAAECggEAGjPz1RVvkXdbTWJKVCOxhbZ8zGUH9qv7IaqsxWMguV3z -gduaJpZ+a+FhEwzmBmBRTZnz4rXiUkZzBTYRyk3Evo7K/PB8dhqh81rL4SGBB9bZ -WdIponqzSCjz8fAn1odK7jcEw8I4J6vS7AAkxe+Nfgt+R3kFm78yfgqP/RxN7ts1 -czGT2ezOJNr7Wk6d4DDAy2hTYIc89eqir+epfx1e5EnhdVeg2SPBwSTppbXIp8F1 -51jXNv60pP64Ieu7QTCR283btkQxMvUQ8i9LKVNh6EECd2bBPEt0xCWVyL8exc1u -MUtIpblhs17ziNBHNs1YQLX8Z73xbnyxO+IsAvf4gQKBgQDKpbueiPW0uQ77iesR -NkUWZNvqTXl9tWnlUeNBdcWvhOeP2OeAFyeCLCmKXE7vPiKn4C/2PMHlmUS0JdET -TV2nlUJIv78Rl26gCcYdLjwAUfmmH+BgNHw/cP58kkTiegNYd84reva0AGz7I/c2 -mim2KlzZLKCHPopZJ99KZY9HYQKBgQDFKZwFv+npFcp0W0G+c2COsZ0vRbSttQaR -wYRb6FfXaBisDwSGCujQsKG92XYZAS9q7GPJ8iTpPoT/TSUePKERlwPxUpc9sqVB -tysb7vWcGrSOGeunIHH6F2OXPHPfux9Eq/bURUF1MIB6fbgzxL+Kl/M7m/EtMESq -AtFalGUXZQKBgB09LIUDXfBlgzPoAnLJUc6ZXuG/q/fnZRAhcJjRVWSt2Ht44G4q -6RhvJs8/4mPCo111i3YL7i4inzce/bu7PfggISA+CmOPZfbRcjRjp2Skb1D46Hb5 -G7RLqWxv7mB/Glx5bNX5N/9g0FisJ89JDxupoRv0xHS/IVcb2avyW2oBAoGBAIgB -I/dzY0++EGIjcT6HKFxGeT9avj/1WArDiyI7LB0TWbGWynAMpn0O2wOzNpwZDTSc -zFlKB9w9nFDgTnKFMDaKDdYyOtH8obKrP7mNJTAB2/sKNlybLQRvjeuNcAEte2xL -k4DqJTVJt9bHUoGjft2D4+2CrOOXIEaGmxP4uaNhAoGBAJHDjgvXi2j0DloQh8hR -6+c/wRV3lMfg4joQ7tnI8HWyncUfmcl6Ei5jdgYT3VqTfqYMWKqIqlxeOqaPh/6j -me7Odgcc52pQaLYGEiwl4cd+pYXSyxGozVR9INf2KveUtiCDKlxKswbWaZ/ywTpI -9uR9je0KdLsSQ4e4D5k2JkPV +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCzN1ehJ465uIsV +1i+NTI833BDgZW54ut5ZgSgzb9A3VC5xC53ZWqSZIShNa/Rd+pgCHEUE3c7bVqFf +sgUfisRKPZjPDaqsZz+c6gnLTFqwU43qEMns9pzMOyCCaQ3UMVVRmYy+PHY7mN+a +hTXVuOAn9fBXsSo0xDGFHT9sdoSmGBCHr9RusA9ODLRA5tuefU2OoDLMlhKvafqs +w67kBkt4HQgLu81JgUVeoX7pj7ocwwffnAvfd0iAEM6ZS197utNWFXD/UKzEbsX1 +uTs39NC9x6SJUmbPxe7tbaGrA8NPMkIQIggJCYSl436l6rpMnmDlFZJqAK/og3on +F7XyPZhvAgMBAAECggEARGSp5f/1KW5Ccf5v3kIp49zxedlru9pAsbKnF14j/YF8 +Sbrvrfu4FhI/0bARrW3NZfzI4C8P2sfoRN9osh1ghJ6WOupRyIKMlcMBItsMPv9c +CMgIb4y70Pr9kJcr5l8/Wqk5O35SdrMEHnGY1mu767QhWS3s1/9JkK3VPvzJ6aJf +9lpL7g6cbKzIZL4pmZSh8OLB/4D8iderN1NyznrkbSwviit+GfR1izWkhNIxuXui +8TdlKwfbyiEWZahAxGS/dD5TeWUeu1kYyflH6AyeEU5vfxW0Vu/fKOZSjwDeqTZl +B/kBQtdpS7dXORWqaFBBHGr8lQSGOygvLM7CxwBGfQKBgQDussGCdaRKV9NFgI2t +HTj8ofOd5qDSnPra9fXYjlqLN5nma7oTfmu7rXcpnIL3jucfb+M3tC5PGw90AHiJ +dQ+oiH1msw+GLDmvw1X1umvfaseJ+ZapapdQtbGUtecMDImM42RXeiSxHylGyN+N +N2LHiPc5SApLPQQ2LQfmEyVLWwKBgQDANNjXwpOGkoGK3QsoEb8bxTQIJ5rWgLN/ +bZyrL9E28H0GCUKXe9gFdI7QkzQCIFK1mjELDG3kHqlkpAulG66vSfr7PSfnMeiN +j0qZed19BZfHRKr0PJcbsxMwBDslGU5j+KAjBo1z8vlCsY70qfnys0zVZ34UjFCf +h7WML2n3fQKBgFvs3Zc3ZRD4Z7XRfz5XDbZFTIPX6MGTkQw4QvimQfpxbESP4jZV +rnm1oTmWO93I2/uAZHn0Ww0996KN993ABkq6XcjqVqUubPzidj1PEPIWtkfNphcS +pLmBb6U8tIEwZtyqSd9ie7T2sje/blB9Lv53IfaeZtB47CFNEEirwOYXAoGABUFs +rHmljwhyglmI9I+Hqjq6MX7jvPnH7rQQlJ26GsZ4pLGcIIhCX+PQA+QCiAxaNp0A +ukyctKAiAZ56swkOvbxIIJaLgMbclQJWB9xNMh31CH3YLtV5TEiZPbbf5yPKAPHL +bym+tGzwY+J3BjmfnANLFoq959HuYm5TiIHDZAECgYA/PIf1GXn+u2Yrex9olsaD +melsqoyFn7gpox5UGM4QTqkqL3I0iQH5F05Oyn8OZaMNW4Xl/y5g+nL7wyHGKXJR +21x2cVxKb9UWYYSbn6KhHEfwaCFKAd/icvT7vWZsdX8uOD3X6pRKrpYTgkz47IsE +gjVSExzww/ZKdmmxGYZW5A== -----END PRIVATE KEY----- diff --git a/ssl/root.crt b/ssl/root.crt index 5eda09e9..51b3e5e6 100644 --- a/ssl/root.crt +++ b/ssl/root.crt @@ -1,19 +1,19 @@ -----BEGIN CERTIFICATE----- -MIIDCTCCAfGgAwIBAgIUekJmJEDXCI/ph9Dmsa4K8DJjcwQwDQYJKoZIhvcNAQEL -BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTIzMDYxMzE3NTYwNFoXDTI0MDYx -MjE3NTYwNFowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEA5NKGG7dk8JsNiAKX/GXfv6oVJ5GARAzrAmIATZY929Oy -KLPdmzKozzfuyNikQJF6O010UWtRG5XSxVavbOz4a0WxO1okNYhxlVxGUuzW9XZ2 -IC0elu2K5RZTmFHxlQowHfxUUq/VZVjdOxEputj8lmsvEaRS6uGug3vu7aAPzJjV -q7AP2RptKllMfKYyeXn1QHVxf5oZjcgYeXZx9xGRczjiHyVfH/RGx6CFGDTMm4Yv -qx/Zu1MG7s7J8rbchwVIamFWGOqUwx6/nC8r0U7mY5554LAt4wFPX7maJdKZ9qYM -M/hOq4o77YAl/36DGx84GjxamK4JKBM2J8fAZFHl2wIDAQABo1MwUTAdBgNVHQ4E -FgQUqkZ0vudOgBo18ND4J2Q528NG1yQwHwYDVR0jBBgwFoAUqkZ0vudOgBo18ND4 -J2Q528NG1yQwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAByf7 -JyF+qoNE6B92N2GON6T5y6dOxNEiM1fPW0tPE1pCIMlZNqwzXMxzPq++TAy260vY -MY99ZphY4IXOD24C53n/rCqTIMkhD8L1sSni3D9O3N5RKmbUNBRkTtN6eNq7wat0 -2kxF2RE711398CDZVvgPaG92N7gT/9rlChZl18hxk5+acmG/lVyZydQwJq4w+Gci -9CvRKJTZ5mssJAEGRJo2aFHBi8khGDNSzeIYI71WNmkOcLZfqJGv9YAwbEtlAmJ4 -sOhgiafWQ7dfXZaxxEgL9HM88Q9rhxXR177BTfC2ETQVyvUYOVBqWnua0Q7qvymx -v5A6ivm6OotTazgScA== +MIIDCzCCAfOgAwIBAgIUOdjK2mIpkU8+EkYx25RN/sGFt90wDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MCAXDTI0MDcwMzE2MDcwN1oYDzIyMjQw +NzAzMTYwNzA3WjAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDA2XF/8lT/1kfbRrUzeeEbuRPPHrtsYoATuY01XyVD +XVsdqCGLvxfGdlv8IPP+cg8CMEnV0uPrAj2VPiYH38ge9eVOKCx89qyDgqBS72XI +gj4wYTU98WPF/JgzlmX4Cb29sWEjTWB7UUoxDHBkyc/8R8gJCe91E8hwT7qvvpWa +i1wxP9oGZqAzvUh0HP9+tl3WXTscRZ3dTyklbHTeTiNhMYbc7EoDA8lo5SKu8FhD +U6/7f40n+VtgIXOCF1bObVIhuJ7NvXl42npkf5x5rn5EgYxBscnqCBV/m63s71k0 +JFXXkX+z4zIKY31auZR/U2/1X0qQXwpZcDSB93RXwljzAgMBAAGjUzBRMB0GA1Ud +DgQWBBTGcEBLNAlTt0+cKZ2pfQHjZLzHKDAfBgNVHSMEGDAWgBTGcEBLNAlTt0+c +KZ2pfQHjZLzHKDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCU +IAOBE9GrpQggcGuG9gcKSSr1w7jCuo+sr9fHGGN9SdiFog51uoNtifXf11EEXYLR +yRCqOARKrPkVp1SqkW2N6vJr/zEVm06kVoZrv1LL7jD8JUc8hi3Abr0RsVqfIo3B +RNV1Q0fsZuYKhid5OtzoTYHhEx8BbBULzIWng5kli9xUc18FweFkqQel6R4ungxZ +am5DkoamF7n522VuNbs5EJdqLfmHv6UUnOATpIosVWh3+54COB3xbWDRe3HxJOPk +8XhgYAyX2AgsuebJlxgxsRPnhOxVX06f3waRIw9Dzd3ixyNw73D5aL/85hud6I0T +c57UzuxpH/npO076pGHt -----END CERTIFICATE----- diff --git a/ssl/server.crt b/ssl/server.crt index 5eda09e9..51b3e5e6 100644 --- a/ssl/server.crt +++ b/ssl/server.crt @@ -1,19 +1,19 @@ -----BEGIN CERTIFICATE----- -MIIDCTCCAfGgAwIBAgIUekJmJEDXCI/ph9Dmsa4K8DJjcwQwDQYJKoZIhvcNAQEL -BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTIzMDYxMzE3NTYwNFoXDTI0MDYx -MjE3NTYwNFowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEA5NKGG7dk8JsNiAKX/GXfv6oVJ5GARAzrAmIATZY929Oy -KLPdmzKozzfuyNikQJF6O010UWtRG5XSxVavbOz4a0WxO1okNYhxlVxGUuzW9XZ2 -IC0elu2K5RZTmFHxlQowHfxUUq/VZVjdOxEputj8lmsvEaRS6uGug3vu7aAPzJjV -q7AP2RptKllMfKYyeXn1QHVxf5oZjcgYeXZx9xGRczjiHyVfH/RGx6CFGDTMm4Yv -qx/Zu1MG7s7J8rbchwVIamFWGOqUwx6/nC8r0U7mY5554LAt4wFPX7maJdKZ9qYM -M/hOq4o77YAl/36DGx84GjxamK4JKBM2J8fAZFHl2wIDAQABo1MwUTAdBgNVHQ4E -FgQUqkZ0vudOgBo18ND4J2Q528NG1yQwHwYDVR0jBBgwFoAUqkZ0vudOgBo18ND4 -J2Q528NG1yQwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAByf7 -JyF+qoNE6B92N2GON6T5y6dOxNEiM1fPW0tPE1pCIMlZNqwzXMxzPq++TAy260vY -MY99ZphY4IXOD24C53n/rCqTIMkhD8L1sSni3D9O3N5RKmbUNBRkTtN6eNq7wat0 -2kxF2RE711398CDZVvgPaG92N7gT/9rlChZl18hxk5+acmG/lVyZydQwJq4w+Gci -9CvRKJTZ5mssJAEGRJo2aFHBi8khGDNSzeIYI71WNmkOcLZfqJGv9YAwbEtlAmJ4 -sOhgiafWQ7dfXZaxxEgL9HM88Q9rhxXR177BTfC2ETQVyvUYOVBqWnua0Q7qvymx -v5A6ivm6OotTazgScA== +MIIDCzCCAfOgAwIBAgIUOdjK2mIpkU8+EkYx25RN/sGFt90wDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MCAXDTI0MDcwMzE2MDcwN1oYDzIyMjQw +NzAzMTYwNzA3WjAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDA2XF/8lT/1kfbRrUzeeEbuRPPHrtsYoATuY01XyVD +XVsdqCGLvxfGdlv8IPP+cg8CMEnV0uPrAj2VPiYH38ge9eVOKCx89qyDgqBS72XI +gj4wYTU98WPF/JgzlmX4Cb29sWEjTWB7UUoxDHBkyc/8R8gJCe91E8hwT7qvvpWa +i1wxP9oGZqAzvUh0HP9+tl3WXTscRZ3dTyklbHTeTiNhMYbc7EoDA8lo5SKu8FhD +U6/7f40n+VtgIXOCF1bObVIhuJ7NvXl42npkf5x5rn5EgYxBscnqCBV/m63s71k0 +JFXXkX+z4zIKY31auZR/U2/1X0qQXwpZcDSB93RXwljzAgMBAAGjUzBRMB0GA1Ud +DgQWBBTGcEBLNAlTt0+cKZ2pfQHjZLzHKDAfBgNVHSMEGDAWgBTGcEBLNAlTt0+c +KZ2pfQHjZLzHKDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCU +IAOBE9GrpQggcGuG9gcKSSr1w7jCuo+sr9fHGGN9SdiFog51uoNtifXf11EEXYLR +yRCqOARKrPkVp1SqkW2N6vJr/zEVm06kVoZrv1LL7jD8JUc8hi3Abr0RsVqfIo3B +RNV1Q0fsZuYKhid5OtzoTYHhEx8BbBULzIWng5kli9xUc18FweFkqQel6R4ungxZ +am5DkoamF7n522VuNbs5EJdqLfmHv6UUnOATpIosVWh3+54COB3xbWDRe3HxJOPk +8XhgYAyX2AgsuebJlxgxsRPnhOxVX06f3waRIw9Dzd3ixyNw73D5aL/85hud6I0T +c57UzuxpH/npO076pGHt -----END CERTIFICATE----- diff --git a/ssl/server.key b/ssl/server.key index 02a8c8f7..fba2206d 100644 --- a/ssl/server.key +++ b/ssl/server.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEugIBADANBgkqhkiG9w0BAQEFAASCBKQwggSgAgEAAoIBAQDk0oYbt2Twmw2I -Apf8Zd+/qhUnkYBEDOsCYgBNlj3b07Ios92bMqjPN+7I2KRAkXo7TXRRa1EbldLF -Vq9s7PhrRbE7WiQ1iHGVXEZS7Nb1dnYgLR6W7YrlFlOYUfGVCjAd/FRSr9VlWN07 -ESm62PyWay8RpFLq4a6De+7toA/MmNWrsA/ZGm0qWUx8pjJ5efVAdXF/mhmNyBh5 -dnH3EZFzOOIfJV8f9EbHoIUYNMybhi+rH9m7UwbuzsnyttyHBUhqYVYY6pTDHr+c -LyvRTuZjnnngsC3jAU9fuZol0pn2pgwz+E6rijvtgCX/foMbHzgaPFqYrgkoEzYn -x8BkUeXbAgMBAAECggEAFE0jTdk3EOvIxwzn3CJTuCcIanLLzP3Saes0+K1APr0o -/Nh8bFURyhS90D78T6g4joNgMwsQ7qAby5tVxBXAMpBD2a61MLSy0xwVNy1BIxUI -BPHL2XsozAtvjj+S7fSx8S8echmclrnMIv3yVFwFCPloeym3m5Q7TfoUaCu/yxiH -P3GVvQg+c2yswp0mjjYLeZNLg8NPUBLZmXloUusyKDVYsBNiyDIsSJtEFkz33Azh -iqgRYrYGlX7XX31VsMMSsKTq+Bhn3A3EustQYXAVTcVsnlf7aVZohxOrm8M5jm9o -unF+7cQXaLNyydWoI2z3WG94xPOMz+eW1DIqWvHnVQKBgQD6oY0kmFRRHoXjAHzG -WL8KnaSb2iYcy0v1KHFRuCYSq5021LkmhEUCHyw+BZ54pXZOs0GVP8azW+lM7v0/ -m8UBrmmkQvFXroLo5dMLuIaCJ5FMwB94PbS+biYYU5Xw2MGwAlW8RdrNi58GHBcI -Vsm2S7jcKpNeVPtYKYW5Y99ehwKBgQDpuV/pWsuMOMXSQjP7SmBG6cE5A78YdVdH -bVRijzQukK7kT2qqFhsozFAOYkDRnapeVf621Su3YlCizENHuIT2PeOXSVUEQ6s8 -afg37UNI4K8BavIna/BPzhpg2OodyJbuEI9s5V181SaOlXoxTYUtYznN4bqya9/P -NZRE5mpfDQKBgDV3k2G0MYCgr1VO/E9gDVlZag1pi2nnIMwrFYmmbFDdVYul8924 -p/Qc7FZK4pTAT63YZexOD7ihqfKkpVgVhgCm0ZieQ1g+PWUr6kr80Y0gncmuzsfa -+h0J6IyWAE3CIAfJZ7rjeBsTZxhpk6xOv3dpTgWB+7BLFtem/AUhvjwvAoGAfdq+ -VM/5b2Zaz5+qkhQ4x7azv1nPGwKEnwe2OuRV+wUZyAMjsrb4pP1v1m797GH0DZxM -7nLXeYZNWXyYdhRcNKSa2yo3x3YQzRVa/fKbGrEyS5clEilDXBXlimUDnEoZS9RL -Bx5zOvckLf87rzTJE+mshLqaZ91CxTdawcc5XDkCfwiEyeyP6yo9UBYBm6IIpP4n -RTF3IDTHfUf6RUQI3CHoD4u72pn1lMeWq8vyfcLroH628ijSSjnvBvGFwNeCuoY+ -6pv6dn0YlnvrEc2ACOnjt8e8ajzVtS1Czxxu4NLKATLQq/+AM/SpmVibQyyRhdzu -IlawZUuii0R2+mkhgB4= +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDA2XF/8lT/1kfb +RrUzeeEbuRPPHrtsYoATuY01XyVDXVsdqCGLvxfGdlv8IPP+cg8CMEnV0uPrAj2V +PiYH38ge9eVOKCx89qyDgqBS72XIgj4wYTU98WPF/JgzlmX4Cb29sWEjTWB7UUox +DHBkyc/8R8gJCe91E8hwT7qvvpWai1wxP9oGZqAzvUh0HP9+tl3WXTscRZ3dTykl +bHTeTiNhMYbc7EoDA8lo5SKu8FhDU6/7f40n+VtgIXOCF1bObVIhuJ7NvXl42npk +f5x5rn5EgYxBscnqCBV/m63s71k0JFXXkX+z4zIKY31auZR/U2/1X0qQXwpZcDSB +93RXwljzAgMBAAECgf8BuE9r9AltXSNFItbvPtH/H21EZyhBMMcXdEQdzs46MLpK +RkoxRIsYOu7ZU4A8DTkm8lWgw88QqUl9Rzx7AkDM7p3JsU4BQBjliYYNtJ68uWOy +lmZvsbvtJaidrrxlC9T/yxqSrt5uwy8XcTuPYvP/FWm7Xe04Rl9pUHXmURHAevN5 +3XyaYx6hxvW88VZgap4BhAed15pcIdbbJR5CS4czK6sz42RyfkNWO+Jpyk9fdQnI +GleRKo7AogpYBoRUvJDAaKEKiDv3dSi/JBqP0DL3L7OIr7spuV2IeMewB2eKW5Fd +FIxAbX3ZyK64fTc0c4BspxcchfyXqWkrlzY03+0CgYEA6FTwKiOrFsdmgYIPJTPd +68xw/8zk9FKMxbdK7rLVQ9bXZ6YEXO7aG6RV4O5+3WbDw0akQ6VABi6Ill+V27bD +9Pcloy13LQPDzkvKRam58gaIpcvkpeEhzSCjfOj24GGFsemnVyWIA93xoqpZy/OI +EuQs+Tdc6F3DpBBzLf9cPn0CgYEA1H7UcyaUDuxXEB2Cc3KYDu4UI9meS4hOwHzU +1F5dY3FUEl+O3D2cGWvoh3/Fbg6TOpoO4vN76qgvG1LKVE0si/fDpYM4R37veiO9 +4TNtDuNSZE4+6NyG+b8+JjLfpMrKKxHX3CKKyGPNAJhtMpjYRcV5+uOXFWPG27qp +BnE0YC8CgYBp4/yqWCNseGmB8XNRs3gcNsvx6sMXkGBU5Ruj+6I0D0GSHhqy+LI0 +EwyJPmpYIrRq1lGb+z9ZEfBzCRHWWFCr39EptFkzDRo7dlO0uIzlgJDbcDjAWgH7 +6jpZfhy3W/uBgUsh7xs1F/0/9ICE8nQ8l/7ff5o61jGLH2w/tLmoSQKBgQCutx19 +FGI2JvKqyGii/byyweQDWgHCPu/panofpvsIMX0bokA3K9z2Nfg5uL+e7xL04wiM +aAAh/2jEAX1kdRPEfdH6e3rBpkfG2C5eRMdNr3DmEkO9eNzt6eVyyO+Dck1pvkEK +ucf8XbqH28wlBvED5QuXUpu9tY0iy0YAiwGydwKBgQCpOrhy6R5foACEgMCmW5Vr +9rSlKKFgPtiqWdYmyH185kGCWLgYUpwc7RLt7qh2aaX89R5SlJDWUXSgAFdg+vqY +yCW0Y9Fz0ORPa7+tGUXaWtLN39b3OccmuHq9iqnhPbR6mIpvCgZnIez3Z8BCRn7K +CmGV0btZEXdoyG6LoCuUJQ== -----END PRIVATE KEY-----