--- /dev/null
--- /dev/null
++From: Athos Ribeiro <athos.ribeiro@canonical.com>
++Date: Tue, 15 Jul 2025 10:38:43 -0300
++Subject: Update example certificates
++
++Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078640
++Forwarded: not-needed
++Last-Update: 2025-07-15
++
++Update the example certificates so that the upstream unit tests keep
++passing throughout the next Debian release (trixie) support cycle. This
++is done by updating the certificates validity to 11 years (possibly
++covering LTS/eLTS).
++Last-Update: 2025-07-15
++---
++ examples/puma/cert_puma.pem | 30 ++++----
++ examples/puma/chain_cert/ca.crt | 33 ++++----
++ examples/puma/chain_cert/ca.key | 50 ++++++------
++ examples/puma/chain_cert/ca_chain.pem | 65 ++++++++--------
++ examples/puma/chain_cert/cert.crt | 32 ++++----
++ examples/puma/chain_cert/cert.key | 50 ++++++------
++ examples/puma/chain_cert/cert_chain.pem | 97 ++++++++++++------------
++ examples/puma/chain_cert/intermediate.crt | 32 ++++----
++ examples/puma/chain_cert/intermediate.key | 50 ++++++------
++ examples/puma/client_certs/ca.crt | 28 +++----
++ examples/puma/client_certs/ca.key | 50 ++++++------
++ examples/puma/client_certs/ca_store.jks | Bin 848 -> 848 bytes
++ examples/puma/client_certs/ca_store.p12 | Bin 2568 -> 2584 bytes
++ examples/puma/client_certs/client.crt | 30 ++++----
++ examples/puma/client_certs/client.key | 50 ++++++------
++ examples/puma/client_certs/client_expired.crt | 30 ++++----
++ examples/puma/client_certs/client_expired.key | 50 ++++++------
++ examples/puma/client_certs/client_unknown.crt | 30 ++++----
++ examples/puma/client_certs/client_unknown.key | 50 ++++++------
++ examples/puma/client_certs/keystore.jks | Bin 4392 -> 4392 bytes
++ examples/puma/client_certs/server.crt | 30 ++++----
++ examples/puma/client_certs/server.key | 50 ++++++------
++ examples/puma/client_certs/server.p12 | Bin 3408 -> 3424 bytes
++ examples/puma/client_certs/unknown_ca.crt | 28 +++----
++ examples/puma/client_certs/unknown_ca.key | 50 ++++++------
++ examples/puma/client_certs/unknown_ca_store.p12 | Bin 2592 -> 2608 bytes
++ examples/puma/encrypted_puma_keypair.pem | 56 +++++++-------
++ examples/puma/keystore.jks | Bin 2253 -> 2252 bytes
++ examples/puma/puma_keypair.pem | 50 ++++++------
++ examples/puma/server.p12 | Bin 2700 -> 2716 bytes
++ 30 files changed, 509 insertions(+), 512 deletions(-)
++
++diff --git a/examples/puma/cert_puma.pem b/examples/puma/cert_puma.pem
++index 6cbb9c1..cace838 100644
++--- a/examples/puma/cert_puma.pem
+++++ b/examples/puma/cert_puma.pem
++@@ -1,21 +1,21 @@
++ -----BEGIN CERTIFICATE-----
++ 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
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/chain_cert/ca.crt b/examples/puma/chain_cert/ca.crt
++index 9acfe79..bcc8e26 100644
++--- a/examples/puma/chain_cert/ca.crt
+++++ b/examples/puma/chain_cert/ca.crt
++@@ -1,20 +1,19 @@
++ -----BEGIN CERTIFICATE-----
++-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBwx
+++MIIDEjCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
+++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMBwx
++ GjAYBgNVBAMMEWNhLnB1bWEubG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
++-AQ8AMIIBCgKCAQEAuKZ43p+68AFTSVno4p8rxk2Ixngw9CR9K5/11LCS+nM9jPph
++-E0aWluwRAdWNs0CLN9A9ZKqJq+G67Y6CAw87g4RfUaZUkBkClwH76WUYzMTo9P3e
++-UMpwzVtdrijW2Y/9MnxMCyt14WVfoY0itjEyfeGT3FbP8yKuk2qYoz3YecrhiRGu
++-xv5gFZOd0hxIL0HkRe0lrpgWDj4MrvsBqUnb4aeqDgjz4lPUWo/GSvgU7xcV5Q6c
++-Ti8FB9k3HZfphb2JHydZfxIqCCeflZlAQBBKNevWbSxhfsfjzqHmC64M9ELoJ/1J
++-JFoX+zdlv9DqOn2k67N4rZcfptoEKPQThPmX+wIDAQABo4GFMIGCMB0GA1UdDgQW
++-BBQuEpl4C66N1A3ZvoVOcO8k6G21nTAOBgNVHQ8BAf8EBAMCAgQwEwYDVR0lBAww
++-CgYIKwYBBQUHAwEwDAYDVR0TBAUwAwEB/zAuBgNVHSMEJzAloSCkHjAcMRowGAYD
++-VQQDDBFjYS5wdW1hLmxvY2FsaG9zdIIBATANBgkqhkiG9w0BAQ0FAAOCAQEAOy3A
++-9GPAQvTeqbmvMlkJh8jtTRUOKmcGUNPFQqJ4aTx/BXh8x415zjW9ZSjLN7ZSNxjJ
++-nFm1XeD9I1EB1JjXwnkNTgC7zUn+kyuIMBxEvfsM0Pfdumr8VOrlidIJeTLBs029
++-tYd/kVlaZfoDS/cSu8ezS7urwY/usHRuku6MUCs4L1WZlDptweGUCWsESpIEGF7d
++-ZJC8f6C8rwQimOyhhouVSlOh1NxC338TvQSflhRtWiP4lIgDVNMmb4MRDAUzbkrg
++-SH4+Oho7EeoK2VSmgqSAyIpOTBBhIcdEgib7Hz+Uq+Y6KekuD8Y8SslbXitBqgS3
++-8uByucqDNovFjYNMKw==
+++AQ8AMIIBCgKCAQEArOhy3ADotcJ0F7rl0KpWlm/a6wkyeSbTNPd+gaccACR1wd92
+++kXs2/S5day5/lP6uVUxrrKU2fhFXSy+aI5bng5cQl0ita6sVZCThs9k683w/fobc
+++OMIKk3MFPxF4QJTa4iNb21g8olKYT/L2b0MUTq+AvnlC3mAAJkLrXjML3wrhwORa
+++VmTdsepqMOkQD3EcuggbkfkUK3p3xfVcHJ2iEfRhGY/7JxNcm1o6YLbj8WPqAKcH
+++0f8KNjzr0IJuMDKy/jArV7VdA9TeGoq6ECMkIIx7y9lwu0gfkJNkmmEYJbU7c0ik
+++UzwIko3qxlvB9nugrzzsG11aTwYkLu2WE1BhcQIDAQABo18wXTAdBgNVHQ4EFgQU
+++3ZgoXoMYzlhYDr93B73HJUlsQXgwDgYDVR0PAQH/BAQDAgIEMBMGA1UdJQQMMAoG
+++CCsGAQUFBwMBMAwGA1UdEwQFMAMBAf8wCQYDVR0jBAIwADANBgkqhkiG9w0BAQ0F
+++AAOCAQEAjwWu4jaf6ybB4BVNuNvvFFCa40iRsjYH7W9LSjtkObEDyOAr4GK3j83b
+++3r23HVE4y/Aiz502DlENUdhLw3rPqfY6efHG1k6W0RiKbL++0BLQOmta3e8fpgaq
+++DDkmGGt60hpizfftkkGoZUVs+MabuJwCezs5n+KcyztGhGKCTtLJfv+1N1aevrFF
+++50E7rkqTkhHsCjMvL/dnmDVzuXDkqJ2SGeWC9fSwWEKmVEA6QDCXPc8RyGEgJPgF
+++gK7Q+5JF6zd3ZSVlcX8lCivXw4GX6Mh2ZjE3DtDIaGpuQIFV/y3vo0c/8RVMBiMo
+++dGuf7tB1eQn0vSFRUc3UrZIMBspK7Q==
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/chain_cert/ca.key b/examples/puma/chain_cert/ca.key
++index c884487..8de2968 100644
++--- a/examples/puma/chain_cert/ca.key
+++++ b/examples/puma/chain_cert/ca.key
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/chain_cert/ca_chain.pem b/examples/puma/chain_cert/ca_chain.pem
++index 7d500ef..7196332 100644
++--- a/examples/puma/chain_cert/ca_chain.pem
+++++ b/examples/puma/chain_cert/ca_chain.pem
++@@ -1,40 +1,39 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDMjCCAhqgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMCYx
+++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMCYx
++ JDAiBgNVBAMMG2ludGVybWVkaWF0ZS5wdW1hLmxvY2FsaG9zdDCCASIwDQYJKoZI
++-hvcNAQEBBQADggEPADCCAQoCggEBAKe0Vb0OyhNyWi4/u1jwLOkDYGx7+aXOJJyN
++-5ExJNS0goWy8+OQKVBwFgZZ5jqqfrXlLheOpAEpRm7TIJVTIwD1/gi/zrNN1ec3D
++-uJMBvlTzNVozfBncQ9EJ62JRC3I/56W1xYMekCIG2SjzSnAfNSojyN6SLxGmtT89
++-xN6parFq/GcvEtssDRVVUm6pyIOgpDOgTuUcqT3qUgOkN9w+5ZgjKWAc1BuMipR9
++-f8wwjuhXx2XlH2lodVWl94xo4ipY7sd2frF/oil9SXDC3ZrwGdkt9TQaCMYlt74V
++-yNxPAX5XwRH8b2OAsIGkPNh7TvIkKR33JkKcXXpZbxlRP6PDWR0CAwEAAaN1MHMw
++-HQYDVR0OBBYEFNVfAg8SLxqTN54wYWiWfxVic+iHMA4GA1UdDwEB/wQEAwICBDAT
++-BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFC4S
++-mXgLro3UDdm+hU5w7yTobbWdMA0GCSqGSIb3DQEBDQUAA4IBAQAOdOtD3py2k4OO
++-0Q5KvmvyybaeSlFPM6/iXNakmqJY3lELnJgjWYgBXlOK91M7F2xG8YRFoBrUipXd
++-rMAburoWjnKvMoPaGZqbpligfkPIueo+ON/Q27UhvH2EYFzTOGjfnCiSCzpekesC
++-32MhK7mB9Uzu9yxDgtRu0IRqCk9WbU35qDzx7mUEZwCHe11T6tV4k9ZHAvhqEvaq
++-sqAgA+OoXBev6wx1tWgiqf40vuKZBRutWUSTHgGIXqain2l5b7Jv6TkCNI4HttHN
++-43oME4M6P1/iH+l99Y7fZBkLGnkGYPiWXQH9NyydQVHOBm3dN26QJzAmV06ZLxEm
++-iX6YKGNd
+++hvcNAQEBBQADggEPADCCAQoCggEBAI1oWjP0qqF7UZqnmfU2nTVC+IotygpP2jFe
+++bd+navwcWLoizHEy/h5QdmiEUu9L/kR9krMfhcOL7z0mETBVQpfN3JsYkn/gLyJd
+++6XES3dwHXINAp6LMfwQXOYCbv+yC5KRJ/kER/PIrY2/bwLR8eT5mOZJqtmpE3LiQ
+++UUEXcEX5ycQ+xdwYmKgGJCjmDdBhSgMSMY1dhZM5nk/HI8jRT10iJ/g6GKwsoveu
+++B8WSA4iX1ZUxRFGhaXbkDo+6ldzPPERa9yQELy8iQHW3hC35v0xFSfirL2DOvSRf
+++p3Vf/7zHn3EEF8QBO6FHCnDuHUqYXnjjv1k2f+pAQQLQQXT2yhsCAwEAAaN1MHMw
+++HQYDVR0OBBYEFAx+NE6dAvT7H5QU+yyK9wV64l/OMA4GA1UdDwEB/wQEAwICBDAT
+++BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFN2Y
+++KF6DGM5YWA6/dwe9xyVJbEF4MA0GCSqGSIb3DQEBDQUAA4IBAQBsxxIbUQvJEYsu
+++jGmNVXTbB3h9yh8u0pYEBbPSTKo38Ah4OAtrpnzn3SaniRdahFegn4wmcNJr2BAj
+++8EFkNdLfHzB/NnDfzmHAfZlkf2OLgDotKTT2psL6wgWFLIu47MFoge4z4zVFLaNp
+++ESJUiHDoFIms6DXDFoKiCO0IA6sCrYEkaOBfC8IMaPyDcnIrrdEuTuZd/5DxhAih
+++jlNUPszXAh7wGVoFyKiEjbACmQXAWKvTtALNl5Z3aXeucR3iamrUDVmJyKKYsdvh
+++24dNlMF6beMl8v8tIQ0iQBbkD/jsp3SjzrANMNhgOQHKcXQ84j1C3AAkNwTL0M7o
+++05PKNc+5
++ -----END CERTIFICATE-----
++ -----BEGIN CERTIFICATE-----
++-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBwx
+++MIIDEjCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
+++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMBwx
++ GjAYBgNVBAMMEWNhLnB1bWEubG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
++-AQ8AMIIBCgKCAQEAuKZ43p+68AFTSVno4p8rxk2Ixngw9CR9K5/11LCS+nM9jPph
++-E0aWluwRAdWNs0CLN9A9ZKqJq+G67Y6CAw87g4RfUaZUkBkClwH76WUYzMTo9P3e
++-UMpwzVtdrijW2Y/9MnxMCyt14WVfoY0itjEyfeGT3FbP8yKuk2qYoz3YecrhiRGu
++-xv5gFZOd0hxIL0HkRe0lrpgWDj4MrvsBqUnb4aeqDgjz4lPUWo/GSvgU7xcV5Q6c
++-Ti8FB9k3HZfphb2JHydZfxIqCCeflZlAQBBKNevWbSxhfsfjzqHmC64M9ELoJ/1J
++-JFoX+zdlv9DqOn2k67N4rZcfptoEKPQThPmX+wIDAQABo4GFMIGCMB0GA1UdDgQW
++-BBQuEpl4C66N1A3ZvoVOcO8k6G21nTAOBgNVHQ8BAf8EBAMCAgQwEwYDVR0lBAww
++-CgYIKwYBBQUHAwEwDAYDVR0TBAUwAwEB/zAuBgNVHSMEJzAloSCkHjAcMRowGAYD
++-VQQDDBFjYS5wdW1hLmxvY2FsaG9zdIIBATANBgkqhkiG9w0BAQ0FAAOCAQEAOy3A
++-9GPAQvTeqbmvMlkJh8jtTRUOKmcGUNPFQqJ4aTx/BXh8x415zjW9ZSjLN7ZSNxjJ
++-nFm1XeD9I1EB1JjXwnkNTgC7zUn+kyuIMBxEvfsM0Pfdumr8VOrlidIJeTLBs029
++-tYd/kVlaZfoDS/cSu8ezS7urwY/usHRuku6MUCs4L1WZlDptweGUCWsESpIEGF7d
++-ZJC8f6C8rwQimOyhhouVSlOh1NxC338TvQSflhRtWiP4lIgDVNMmb4MRDAUzbkrg
++-SH4+Oho7EeoK2VSmgqSAyIpOTBBhIcdEgib7Hz+Uq+Y6KekuD8Y8SslbXitBqgS3
++-8uByucqDNovFjYNMKw==
+++AQ8AMIIBCgKCAQEArOhy3ADotcJ0F7rl0KpWlm/a6wkyeSbTNPd+gaccACR1wd92
+++kXs2/S5day5/lP6uVUxrrKU2fhFXSy+aI5bng5cQl0ita6sVZCThs9k683w/fobc
+++OMIKk3MFPxF4QJTa4iNb21g8olKYT/L2b0MUTq+AvnlC3mAAJkLrXjML3wrhwORa
+++VmTdsepqMOkQD3EcuggbkfkUK3p3xfVcHJ2iEfRhGY/7JxNcm1o6YLbj8WPqAKcH
+++0f8KNjzr0IJuMDKy/jArV7VdA9TeGoq6ECMkIIx7y9lwu0gfkJNkmmEYJbU7c0ik
+++UzwIko3qxlvB9nugrzzsG11aTwYkLu2WE1BhcQIDAQABo18wXTAdBgNVHQ4EFgQU
+++3ZgoXoMYzlhYDr93B73HJUlsQXgwDgYDVR0PAQH/BAQDAgIEMBMGA1UdJQQMMAoG
+++CCsGAQUFBwMBMAwGA1UdEwQFMAMBAf8wCQYDVR0jBAIwADANBgkqhkiG9w0BAQ0F
+++AAOCAQEAjwWu4jaf6ybB4BVNuNvvFFCa40iRsjYH7W9LSjtkObEDyOAr4GK3j83b
+++3r23HVE4y/Aiz502DlENUdhLw3rPqfY6efHG1k6W0RiKbL++0BLQOmta3e8fpgaq
+++DDkmGGt60hpizfftkkGoZUVs+MabuJwCezs5n+KcyztGhGKCTtLJfv+1N1aevrFF
+++50E7rkqTkhHsCjMvL/dnmDVzuXDkqJ2SGeWC9fSwWEKmVEA6QDCXPc8RyGEgJPgF
+++gK7Q+5JF6zd3ZSVlcX8lCivXw4GX6Mh2ZjE3DtDIaGpuQIFV/y3vo0c/8RVMBiMo
+++dGuf7tB1eQn0vSFRUc3UrZIMBspK7Q==
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/chain_cert/cert.crt b/examples/puma/chain_cert/cert.crt
++index 8467b47..89010e8 100644
++--- a/examples/puma/chain_cert/cert.crt
+++++ b/examples/puma/chain_cert/cert.crt
++@@ -1,20 +1,20 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDLjCCAhagAwIBAgIBbzANBgkqhkiG9w0BAQ0FADAmMSQwIgYDVQQDDBtpbnRl
++-cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjQwODExMDAwMDAwWhcNMjUwODEx
+++cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjUwNzAxMDAwMDAwWhcNMzYwNzAx
++ MDAwMDAwWjAeMRwwGgYDVQQDDBN0ZXN0LnB1bWEubG9jYWxob3N0MIIBIjANBgkq
++-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkH1hQqC0EFwYxi5+Ihqat9Yqebpk0A9x
++-ZzdO68eBSw4glnhh/+8VNB238q3nVD+0oL5oOBFVPAA34jUrrngS3LSl7tx4y1tj
++-jqn2LwKkdjAaaQn7uNKf/Ow6JX8dsaFpEUmabOzQBbhQtUDdbHmX1jgJYy8siSdU
++-ExXtNHAA+kqlif0Hcj1Xx8dlXQlLiDgdO1I5h84rjfdX+TUGwnJO5MkIZ5X5r6tE
++-hk8s/2dvbrU2AKcP+pTY4jw/fyDNd9q8OdW186RlBdS+uyX3D2hh+8aVLONQIJOx
++-wRyQaImYzHPWMDO6MuQ5/5LAxFFYWCGSLvUTdrillB0Snmppe9uGhwIDAQABo28w
++-bTAdBgNVHQ4EFgQUQT/iPOTx/zDEIgWHiraGJdrud74wCwYDVR0PBAQDAgbAMBMG
++-A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAU1V8CDxIv
++-GpM3njBhaJZ/FWJz6IcwDQYJKoZIhvcNAQENBQADggEBADHQ75un1UtxDI9oluXu
++-wEJL0515nIAKjaWFCl0Z/CGaAWkkJERk0JBxTe9J/MrYY68NYCCAusRoUoRbvcA2
++-GQ8vKae5V6/md+npZpKQznmUk+nZMzNKr+QoMY/nvtLA5tZ85fsU40H4nbvb23EY
++-3o6IiEbLD0G3FbIFtkgQ7+j9w6bvvMwd+3Ed0jSjRl4wKi4cXgD1UIyce/MVzAzT
++-bXW2SLWjfRzcTsrAnrbno5S3g+KMD1w9zGNppYiFH0zydpatKjJW18r/6XgJqoim
++-Rl5OGVnMNgIAw+S8/G3+/IIPXWHFE29R3j3oXjm/F8570TpQTYyx8wOmEr+zJPv0
++-8gU=
+++hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnweGJw3HXhvtIAFL6i3hzFdD5F3UG2Nm
+++hIGaiKyDy71b25rkXFduG8R9i4s5rVBUdafA2OlrRDWMMrlYSudJnlB6P2jtBRxB
+++7iw66vBVCBstDiKEr5xWFceG+2WpHU1peLCj72Ujuy/Xc/85S+70a9ISXItDRuyY
+++tNTLi1HROioH6A0MfpvoLKxHYyoJ1dxu/eXikY8uk+J1cKogOP0jjn0VieJXptqc
+++nHICV5/LmX3KC7ZxowexrQhTw81cKtx0fVeyZAHlM0rmIj23iajLqLtE+tq07P50
+++OP8uABiK53L9RH55SlM/7PjDss6/VZDG7xsRBhEzaU39jOuSmZdrewIDAQABo28w
+++bTAdBgNVHQ4EFgQUBt0gNG2VFq4KeC5rPkvqxlxUZpgwCwYDVR0PBAQDAgbAMBMG
+++A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUDH40Tp0C
+++9PsflBT7LIr3BXriX84wDQYJKoZIhvcNAQENBQADggEBAIsh0gAB91/phH0XSbaV
+++5X7bOvUQZBkF6VU3FMSKz1qeP7zhxhHnsTQVAWRCT4QdQ0bXzWDaUubUfS1uL9fW
+++hMS6qJ/X56WjYvzUqr6Haxxc6nF2SzaZfNHC02uBOBqZaOWsf0rEv4M9A1PPPyy4
+++ZO5nCLsLvReiAXViAyRO2HjXej/820fXh0uwEZgR8tUaQEt5frphr9cT/Q70kn+M
+++XfpXvhGmLZ9C+0pXS0ILJRb8DccdfL6UMmQEPyfuW2OJrCDwvK3aG4KA2mdAg9Ca
+++OvxCQ9WgAkMR2P7dHovoYaMsl8Nipiy/i0YeVG1rJAledWOO05xiVPdiTPkJk8JC
+++PPU=
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/chain_cert/cert.key b/examples/puma/chain_cert/cert.key
++index ed2bd0d..790455c 100644
++--- a/examples/puma/chain_cert/cert.key
+++++ b/examples/puma/chain_cert/cert.key
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/chain_cert/cert_chain.pem b/examples/puma/chain_cert/cert_chain.pem
++index 5f391f3..40ed0f5 100644
++--- a/examples/puma/chain_cert/cert_chain.pem
+++++ b/examples/puma/chain_cert/cert_chain.pem
++@@ -1,60 +1,59 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDLjCCAhagAwIBAgIBbzANBgkqhkiG9w0BAQ0FADAmMSQwIgYDVQQDDBtpbnRl
++-cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjQwODExMDAwMDAwWhcNMjUwODEx
+++cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjUwNzAxMDAwMDAwWhcNMzYwNzAx
++ MDAwMDAwWjAeMRwwGgYDVQQDDBN0ZXN0LnB1bWEubG9jYWxob3N0MIIBIjANBgkq
++-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkH1hQqC0EFwYxi5+Ihqat9Yqebpk0A9x
++-ZzdO68eBSw4glnhh/+8VNB238q3nVD+0oL5oOBFVPAA34jUrrngS3LSl7tx4y1tj
++-jqn2LwKkdjAaaQn7uNKf/Ow6JX8dsaFpEUmabOzQBbhQtUDdbHmX1jgJYy8siSdU
++-ExXtNHAA+kqlif0Hcj1Xx8dlXQlLiDgdO1I5h84rjfdX+TUGwnJO5MkIZ5X5r6tE
++-hk8s/2dvbrU2AKcP+pTY4jw/fyDNd9q8OdW186RlBdS+uyX3D2hh+8aVLONQIJOx
++-wRyQaImYzHPWMDO6MuQ5/5LAxFFYWCGSLvUTdrillB0Snmppe9uGhwIDAQABo28w
++-bTAdBgNVHQ4EFgQUQT/iPOTx/zDEIgWHiraGJdrud74wCwYDVR0PBAQDAgbAMBMG
++-A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAU1V8CDxIv
++-GpM3njBhaJZ/FWJz6IcwDQYJKoZIhvcNAQENBQADggEBADHQ75un1UtxDI9oluXu
++-wEJL0515nIAKjaWFCl0Z/CGaAWkkJERk0JBxTe9J/MrYY68NYCCAusRoUoRbvcA2
++-GQ8vKae5V6/md+npZpKQznmUk+nZMzNKr+QoMY/nvtLA5tZ85fsU40H4nbvb23EY
++-3o6IiEbLD0G3FbIFtkgQ7+j9w6bvvMwd+3Ed0jSjRl4wKi4cXgD1UIyce/MVzAzT
++-bXW2SLWjfRzcTsrAnrbno5S3g+KMD1w9zGNppYiFH0zydpatKjJW18r/6XgJqoim
++-Rl5OGVnMNgIAw+S8/G3+/IIPXWHFE29R3j3oXjm/F8570TpQTYyx8wOmEr+zJPv0
++-8gU=
+++hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnweGJw3HXhvtIAFL6i3hzFdD5F3UG2Nm
+++hIGaiKyDy71b25rkXFduG8R9i4s5rVBUdafA2OlrRDWMMrlYSudJnlB6P2jtBRxB
+++7iw66vBVCBstDiKEr5xWFceG+2WpHU1peLCj72Ujuy/Xc/85S+70a9ISXItDRuyY
+++tNTLi1HROioH6A0MfpvoLKxHYyoJ1dxu/eXikY8uk+J1cKogOP0jjn0VieJXptqc
+++nHICV5/LmX3KC7ZxowexrQhTw81cKtx0fVeyZAHlM0rmIj23iajLqLtE+tq07P50
+++OP8uABiK53L9RH55SlM/7PjDss6/VZDG7xsRBhEzaU39jOuSmZdrewIDAQABo28w
+++bTAdBgNVHQ4EFgQUBt0gNG2VFq4KeC5rPkvqxlxUZpgwCwYDVR0PBAQDAgbAMBMG
+++A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUDH40Tp0C
+++9PsflBT7LIr3BXriX84wDQYJKoZIhvcNAQENBQADggEBAIsh0gAB91/phH0XSbaV
+++5X7bOvUQZBkF6VU3FMSKz1qeP7zhxhHnsTQVAWRCT4QdQ0bXzWDaUubUfS1uL9fW
+++hMS6qJ/X56WjYvzUqr6Haxxc6nF2SzaZfNHC02uBOBqZaOWsf0rEv4M9A1PPPyy4
+++ZO5nCLsLvReiAXViAyRO2HjXej/820fXh0uwEZgR8tUaQEt5frphr9cT/Q70kn+M
+++XfpXvhGmLZ9C+0pXS0ILJRb8DccdfL6UMmQEPyfuW2OJrCDwvK3aG4KA2mdAg9Ca
+++OvxCQ9WgAkMR2P7dHovoYaMsl8Nipiy/i0YeVG1rJAledWOO05xiVPdiTPkJk8JC
+++PPU=
++ -----END CERTIFICATE-----
++ -----BEGIN CERTIFICATE-----
++ MIIDMjCCAhqgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMCYx
+++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMCYx
++ JDAiBgNVBAMMG2ludGVybWVkaWF0ZS5wdW1hLmxvY2FsaG9zdDCCASIwDQYJKoZI
++-hvcNAQEBBQADggEPADCCAQoCggEBAKe0Vb0OyhNyWi4/u1jwLOkDYGx7+aXOJJyN
++-5ExJNS0goWy8+OQKVBwFgZZ5jqqfrXlLheOpAEpRm7TIJVTIwD1/gi/zrNN1ec3D
++-uJMBvlTzNVozfBncQ9EJ62JRC3I/56W1xYMekCIG2SjzSnAfNSojyN6SLxGmtT89
++-xN6parFq/GcvEtssDRVVUm6pyIOgpDOgTuUcqT3qUgOkN9w+5ZgjKWAc1BuMipR9
++-f8wwjuhXx2XlH2lodVWl94xo4ipY7sd2frF/oil9SXDC3ZrwGdkt9TQaCMYlt74V
++-yNxPAX5XwRH8b2OAsIGkPNh7TvIkKR33JkKcXXpZbxlRP6PDWR0CAwEAAaN1MHMw
++-HQYDVR0OBBYEFNVfAg8SLxqTN54wYWiWfxVic+iHMA4GA1UdDwEB/wQEAwICBDAT
++-BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFC4S
++-mXgLro3UDdm+hU5w7yTobbWdMA0GCSqGSIb3DQEBDQUAA4IBAQAOdOtD3py2k4OO
++-0Q5KvmvyybaeSlFPM6/iXNakmqJY3lELnJgjWYgBXlOK91M7F2xG8YRFoBrUipXd
++-rMAburoWjnKvMoPaGZqbpligfkPIueo+ON/Q27UhvH2EYFzTOGjfnCiSCzpekesC
++-32MhK7mB9Uzu9yxDgtRu0IRqCk9WbU35qDzx7mUEZwCHe11T6tV4k9ZHAvhqEvaq
++-sqAgA+OoXBev6wx1tWgiqf40vuKZBRutWUSTHgGIXqain2l5b7Jv6TkCNI4HttHN
++-43oME4M6P1/iH+l99Y7fZBkLGnkGYPiWXQH9NyydQVHOBm3dN26QJzAmV06ZLxEm
++-iX6YKGNd
+++hvcNAQEBBQADggEPADCCAQoCggEBAI1oWjP0qqF7UZqnmfU2nTVC+IotygpP2jFe
+++bd+navwcWLoizHEy/h5QdmiEUu9L/kR9krMfhcOL7z0mETBVQpfN3JsYkn/gLyJd
+++6XES3dwHXINAp6LMfwQXOYCbv+yC5KRJ/kER/PIrY2/bwLR8eT5mOZJqtmpE3LiQ
+++UUEXcEX5ycQ+xdwYmKgGJCjmDdBhSgMSMY1dhZM5nk/HI8jRT10iJ/g6GKwsoveu
+++B8WSA4iX1ZUxRFGhaXbkDo+6ldzPPERa9yQELy8iQHW3hC35v0xFSfirL2DOvSRf
+++p3Vf/7zHn3EEF8QBO6FHCnDuHUqYXnjjv1k2f+pAQQLQQXT2yhsCAwEAAaN1MHMw
+++HQYDVR0OBBYEFAx+NE6dAvT7H5QU+yyK9wV64l/OMA4GA1UdDwEB/wQEAwICBDAT
+++BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFN2Y
+++KF6DGM5YWA6/dwe9xyVJbEF4MA0GCSqGSIb3DQEBDQUAA4IBAQBsxxIbUQvJEYsu
+++jGmNVXTbB3h9yh8u0pYEBbPSTKo38Ah4OAtrpnzn3SaniRdahFegn4wmcNJr2BAj
+++8EFkNdLfHzB/NnDfzmHAfZlkf2OLgDotKTT2psL6wgWFLIu47MFoge4z4zVFLaNp
+++ESJUiHDoFIms6DXDFoKiCO0IA6sCrYEkaOBfC8IMaPyDcnIrrdEuTuZd/5DxhAih
+++jlNUPszXAh7wGVoFyKiEjbACmQXAWKvTtALNl5Z3aXeucR3iamrUDVmJyKKYsdvh
+++24dNlMF6beMl8v8tIQ0iQBbkD/jsp3SjzrANMNhgOQHKcXQ84j1C3AAkNwTL0M7o
+++05PKNc+5
++ -----END CERTIFICATE-----
++ -----BEGIN CERTIFICATE-----
++-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBwx
+++MIIDEjCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
+++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMBwx
++ GjAYBgNVBAMMEWNhLnB1bWEubG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
++-AQ8AMIIBCgKCAQEAuKZ43p+68AFTSVno4p8rxk2Ixngw9CR9K5/11LCS+nM9jPph
++-E0aWluwRAdWNs0CLN9A9ZKqJq+G67Y6CAw87g4RfUaZUkBkClwH76WUYzMTo9P3e
++-UMpwzVtdrijW2Y/9MnxMCyt14WVfoY0itjEyfeGT3FbP8yKuk2qYoz3YecrhiRGu
++-xv5gFZOd0hxIL0HkRe0lrpgWDj4MrvsBqUnb4aeqDgjz4lPUWo/GSvgU7xcV5Q6c
++-Ti8FB9k3HZfphb2JHydZfxIqCCeflZlAQBBKNevWbSxhfsfjzqHmC64M9ELoJ/1J
++-JFoX+zdlv9DqOn2k67N4rZcfptoEKPQThPmX+wIDAQABo4GFMIGCMB0GA1UdDgQW
++-BBQuEpl4C66N1A3ZvoVOcO8k6G21nTAOBgNVHQ8BAf8EBAMCAgQwEwYDVR0lBAww
++-CgYIKwYBBQUHAwEwDAYDVR0TBAUwAwEB/zAuBgNVHSMEJzAloSCkHjAcMRowGAYD
++-VQQDDBFjYS5wdW1hLmxvY2FsaG9zdIIBATANBgkqhkiG9w0BAQ0FAAOCAQEAOy3A
++-9GPAQvTeqbmvMlkJh8jtTRUOKmcGUNPFQqJ4aTx/BXh8x415zjW9ZSjLN7ZSNxjJ
++-nFm1XeD9I1EB1JjXwnkNTgC7zUn+kyuIMBxEvfsM0Pfdumr8VOrlidIJeTLBs029
++-tYd/kVlaZfoDS/cSu8ezS7urwY/usHRuku6MUCs4L1WZlDptweGUCWsESpIEGF7d
++-ZJC8f6C8rwQimOyhhouVSlOh1NxC338TvQSflhRtWiP4lIgDVNMmb4MRDAUzbkrg
++-SH4+Oho7EeoK2VSmgqSAyIpOTBBhIcdEgib7Hz+Uq+Y6KekuD8Y8SslbXitBqgS3
++-8uByucqDNovFjYNMKw==
+++AQ8AMIIBCgKCAQEArOhy3ADotcJ0F7rl0KpWlm/a6wkyeSbTNPd+gaccACR1wd92
+++kXs2/S5day5/lP6uVUxrrKU2fhFXSy+aI5bng5cQl0ita6sVZCThs9k683w/fobc
+++OMIKk3MFPxF4QJTa4iNb21g8olKYT/L2b0MUTq+AvnlC3mAAJkLrXjML3wrhwORa
+++VmTdsepqMOkQD3EcuggbkfkUK3p3xfVcHJ2iEfRhGY/7JxNcm1o6YLbj8WPqAKcH
+++0f8KNjzr0IJuMDKy/jArV7VdA9TeGoq6ECMkIIx7y9lwu0gfkJNkmmEYJbU7c0ik
+++UzwIko3qxlvB9nugrzzsG11aTwYkLu2WE1BhcQIDAQABo18wXTAdBgNVHQ4EFgQU
+++3ZgoXoMYzlhYDr93B73HJUlsQXgwDgYDVR0PAQH/BAQDAgIEMBMGA1UdJQQMMAoG
+++CCsGAQUFBwMBMAwGA1UdEwQFMAMBAf8wCQYDVR0jBAIwADANBgkqhkiG9w0BAQ0F
+++AAOCAQEAjwWu4jaf6ybB4BVNuNvvFFCa40iRsjYH7W9LSjtkObEDyOAr4GK3j83b
+++3r23HVE4y/Aiz502DlENUdhLw3rPqfY6efHG1k6W0RiKbL++0BLQOmta3e8fpgaq
+++DDkmGGt60hpizfftkkGoZUVs+MabuJwCezs5n+KcyztGhGKCTtLJfv+1N1aevrFF
+++50E7rkqTkhHsCjMvL/dnmDVzuXDkqJ2SGeWC9fSwWEKmVEA6QDCXPc8RyGEgJPgF
+++gK7Q+5JF6zd3ZSVlcX8lCivXw4GX6Mh2ZjE3DtDIaGpuQIFV/y3vo0c/8RVMBiMo
+++dGuf7tB1eQn0vSFRUc3UrZIMBspK7Q==
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/chain_cert/intermediate.crt b/examples/puma/chain_cert/intermediate.crt
++index cc9895e..501d1ad 100644
++--- a/examples/puma/chain_cert/intermediate.crt
+++++ b/examples/puma/chain_cert/intermediate.crt
++@@ -1,20 +1,20 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDMjCCAhqgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
++-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMCYx
+++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMCYx
++ JDAiBgNVBAMMG2ludGVybWVkaWF0ZS5wdW1hLmxvY2FsaG9zdDCCASIwDQYJKoZI
++-hvcNAQEBBQADggEPADCCAQoCggEBAKe0Vb0OyhNyWi4/u1jwLOkDYGx7+aXOJJyN
++-5ExJNS0goWy8+OQKVBwFgZZ5jqqfrXlLheOpAEpRm7TIJVTIwD1/gi/zrNN1ec3D
++-uJMBvlTzNVozfBncQ9EJ62JRC3I/56W1xYMekCIG2SjzSnAfNSojyN6SLxGmtT89
++-xN6parFq/GcvEtssDRVVUm6pyIOgpDOgTuUcqT3qUgOkN9w+5ZgjKWAc1BuMipR9
++-f8wwjuhXx2XlH2lodVWl94xo4ipY7sd2frF/oil9SXDC3ZrwGdkt9TQaCMYlt74V
++-yNxPAX5XwRH8b2OAsIGkPNh7TvIkKR33JkKcXXpZbxlRP6PDWR0CAwEAAaN1MHMw
++-HQYDVR0OBBYEFNVfAg8SLxqTN54wYWiWfxVic+iHMA4GA1UdDwEB/wQEAwICBDAT
++-BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFC4S
++-mXgLro3UDdm+hU5w7yTobbWdMA0GCSqGSIb3DQEBDQUAA4IBAQAOdOtD3py2k4OO
++-0Q5KvmvyybaeSlFPM6/iXNakmqJY3lELnJgjWYgBXlOK91M7F2xG8YRFoBrUipXd
++-rMAburoWjnKvMoPaGZqbpligfkPIueo+ON/Q27UhvH2EYFzTOGjfnCiSCzpekesC
++-32MhK7mB9Uzu9yxDgtRu0IRqCk9WbU35qDzx7mUEZwCHe11T6tV4k9ZHAvhqEvaq
++-sqAgA+OoXBev6wx1tWgiqf40vuKZBRutWUSTHgGIXqain2l5b7Jv6TkCNI4HttHN
++-43oME4M6P1/iH+l99Y7fZBkLGnkGYPiWXQH9NyydQVHOBm3dN26QJzAmV06ZLxEm
++-iX6YKGNd
+++hvcNAQEBBQADggEPADCCAQoCggEBAI1oWjP0qqF7UZqnmfU2nTVC+IotygpP2jFe
+++bd+navwcWLoizHEy/h5QdmiEUu9L/kR9krMfhcOL7z0mETBVQpfN3JsYkn/gLyJd
+++6XES3dwHXINAp6LMfwQXOYCbv+yC5KRJ/kER/PIrY2/bwLR8eT5mOZJqtmpE3LiQ
+++UUEXcEX5ycQ+xdwYmKgGJCjmDdBhSgMSMY1dhZM5nk/HI8jRT10iJ/g6GKwsoveu
+++B8WSA4iX1ZUxRFGhaXbkDo+6ldzPPERa9yQELy8iQHW3hC35v0xFSfirL2DOvSRf
+++p3Vf/7zHn3EEF8QBO6FHCnDuHUqYXnjjv1k2f+pAQQLQQXT2yhsCAwEAAaN1MHMw
+++HQYDVR0OBBYEFAx+NE6dAvT7H5QU+yyK9wV64l/OMA4GA1UdDwEB/wQEAwICBDAT
+++BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFN2Y
+++KF6DGM5YWA6/dwe9xyVJbEF4MA0GCSqGSIb3DQEBDQUAA4IBAQBsxxIbUQvJEYsu
+++jGmNVXTbB3h9yh8u0pYEBbPSTKo38Ah4OAtrpnzn3SaniRdahFegn4wmcNJr2BAj
+++8EFkNdLfHzB/NnDfzmHAfZlkf2OLgDotKTT2psL6wgWFLIu47MFoge4z4zVFLaNp
+++ESJUiHDoFIms6DXDFoKiCO0IA6sCrYEkaOBfC8IMaPyDcnIrrdEuTuZd/5DxhAih
+++jlNUPszXAh7wGVoFyKiEjbACmQXAWKvTtALNl5Z3aXeucR3iamrUDVmJyKKYsdvh
+++24dNlMF6beMl8v8tIQ0iQBbkD/jsp3SjzrANMNhgOQHKcXQ84j1C3AAkNwTL0M7o
+++05PKNc+5
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/chain_cert/intermediate.key b/examples/puma/chain_cert/intermediate.key
++index 9269949..a1d0df4 100644
++--- a/examples/puma/chain_cert/intermediate.key
+++++ b/examples/puma/chain_cert/intermediate.key
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/client_certs/ca.crt b/examples/puma/client_certs/ca.crt
++index c3d39dc..599b16a 100644
++--- a/examples/puma/client_certs/ca.crt
+++++ b/examples/puma/client_certs/ca.crt
++@@ -1,19 +1,19 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDDjCCAfagAwIBAgIBAzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB
++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw
++-ODAxMDAwMDAwWhcNMjgwODAxMDAwMDAwWjA4MRMwEQYKCZImiZPyLGQBGRYDbmV0
+++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUw
+++NzAxMDAwMDAwWhcNMzYwNzAxMDAwMDAwWjA4MRMwEQYKCZImiZPyLGQBGRYDbmV0
++ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwggEiMA0GCSqGSIb3
++-DQEBAQUAA4IBDwAwggEKAoIBAQDPVFa7U4cqfq2Nux7VuXIUhYtaiQwxEEZuDvGI
++-tlSVzpENnqFLbqH0QsOuxGgIZofsrSf4BrCzh4AoL3qY+HgVRCmkD09FnoWjFTfT
++-X6v7QaCtUsrb7RNASrrgyP7rB9y7sp9oc8FNJQA3gtJQxghffO9zGhnEvPt8EGGU
++-axh29BYVxvQpX1Av0SkYjTgpRus1s7r50tpoDHXhKyAHP6WEEVaN/8x1p9eXqVCT
++-XIhlJJ+dgwZz/Hfnb6gr97W5G16Ceo7ybS8syKBJf2D20DOL8kLAiNpjWm9spoJi
++-oxHvFMdDB3nUqZyRO+QU8gSoQBVYYqRlEnOXvouzqslUVdbLAgMBAAGjIzAhMA8G
+++DQEBAQUAA4IBDwAwggEKAoIBAQCxatlqNB98n2Huwg4TNhTx81t4RDUHyRH5YUCT
+++808QrxqqhNJGOSTfLDoobeObZqm8DzhZgeiMI8TQjGoQUPntARrfmS0qwBKpERJ7
+++Se2mY7J5EFZtIR4dtTlD6CPzEC1cxdgF8+2BXCb/DdSRmgEMseC32cimYZt4uumA
+++ckJfmGJst18nc8R9EPZdsW1mFjGSYrfigtqEcm4UOKnBRilMhacIXHJqUKcV6oIh
+++KXWraHLex62Mzfp+g9MQ2xEmOz6j/nJ/54xqmFNoIR2mZBAOvsKMQVph/EWFF8Ei
++++NMkzXYbePkKaQBLMsKnonfIpfPzm4Sg8V51oSOG5KsW4JLzAgMBAAGjIzAhMA8G
++ A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IB
++-AQC9iO5jvBDNgDmUq8+NfsAZngWLOG7IR+Ez5h3CzGU9yzcJgn8y6PMjzhgc20le
++-WYzAHEG/KXFIfubUW/9iA8E6We0hm0LM1s9o7A9JAqsHcZ/pK2QmDW71JupU8o1z
++-3Qcu7jRzPc7zYgNwaD4/ccpJTAPGg6keV3YGN2Z5RpWykOFzP7WswaMIcKQE869c
++-Tyi8i71XkVrL+xx2pRiiNDOmfMkmm8TZ9tBP7n6BcRd556TTIxhjONvmamCraBQP
++-msPnMtb8+H3/IsMsUw02/fQTJ91FVa3t914Y24+q5xmkasyrhinTNmsa/S939P6I
++-JNNoAM6TUZrskKPtb/pMzaqn
+++AQAayMxMY4+PRsjODW49e8YM+NfLIypZB9+QV432q6BTT+5KQh9DSBt1Bz5RaU1g
+++tsz0sS7x0Iv7CvRwR1iDZOv8annHcjuEgxfWJ0+PBhFi2Tz1eF4EnpZt2RcJ/IMW
+++xnsDLjRMASdmQxOLvxqz19fAQMAVw7ThkzicuW0ZMBX3baAf88m7w1Mu/V7P6rj5
+++yw+SfZv/qNakUv2yc/2xEDRcfrYuimZAmGhM/HaPsta2BpvWJDpYe1Hq8AFWniz0
+++C2epSzW+CdkpQZD/DIQmfWrWcBeb/XQ6hmouyJ6IWrgL45x7xcTLBOSAecBeZGMp
+++npnO0PJN8Z/PQWz4sd8e2dIN
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/client_certs/ca.key b/examples/puma/client_certs/ca.key
++index c689bd4..16a86af 100644
++--- a/examples/puma/client_certs/ca.key
+++++ b/examples/puma/client_certs/ca.key
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/client_certs/ca_store.jks b/examples/puma/client_certs/ca_store.jks
++index f522926..9071747 100644
++--- a/examples/puma/client_certs/ca_store.jks
+++++ b/examples/puma/client_certs/ca_store.jks
++@@ -1,6 +1,8 @@
++-þíþí
+++þíþí
++ \92&\89\93ò,d\ 1\19\16\ 3net1\140\12\ 6
++- \92&\89\93ò,d\ 1\19\16\ 4puma1\v0 \ 6\ 3U\ 4\ 3\f\ 2CA0\1e\17\r240801000000Z\17\r280801000000Z081\130\11\ 6
+++ \92&\89\93ò,d\ 1\19\16\ 4puma1\v0 \ 6\ 3U\ 4\ 3\f\ 2CA0\1e\17\r250701000000Z\17\r360701000000Z081\130\11\ 6
++ \92&\89\93ò,d\ 1\19\16\ 3net1\140\12\ 6
++ \92&\89\93ò,d\ 1\19\16\ 4puma1\v0 \ 6\ 3U\ 4\ 3\f\ 2CA0\82\ 1"0\r\ 6 *\86H\86÷\r\ 1\ 1\ 1\ 5
++-\ 2\82\ 1\ 1
++\ No newline at end of file
+++\ 2\82\ 1\ 1
+++i
+++ôpGX\83dëüjyÇr;\84\83\17Ö'O\8f\ 6\11bÙ<õx^\ 4\9e\96mÙ\17 ü\83\16Æ{\ 3.4L\ 1'fC\13\8b¿\1a³××À@À\15ôá\938\9c¹m\190\15÷m \1fóÉ»ÃS.ý^Ïê¸ùË\ f\92}\9bÿ¨Ö¤Rý²sý±\104\~¶.\8af@\98hLüv\8f²Ö¶\ 6\9bÖ$:X{Qêð\ 1V\9e,ô\vg©K5¾ Ù)A\90ÿ\f\84&}jÖp\17\9být:\86j.È\9e\88Z¸\vã\9c{ÅÄË\ 4ä\80yÀ^dc)\9e\99ÎÐòMñ\9fÏAlø±ß\1eÙÒ\r-ql\12ñ\11Zq\7f£LµÃ\r²6\13\82¾
++\ No newline at end of file
++diff --git a/examples/puma/client_certs/ca_store.p12 b/examples/puma/client_certs/ca_store.p12
++index 2af10d9..9b7934a 100644
++--- a/examples/puma/client_certs/ca_store.p12
+++++ b/examples/puma/client_certs/ca_store.p12
++@@ -1,11 +1,13 @@
++ 0\82
++-\ 4\ 2\ 1\ 30\82 º\ 6 *\86H\86÷\r\ 1\a\ 1 \82 «\ 4\82 §0\82 £0\82\ 4\ 2\ 6 *\86H\86÷\r\ 1\a\ 6 \82\ 3ó0\82\ 3ï\ 2\ 1
++-\16¾²÷E\88\9b\17\87ÞR_Ì\80\82\ 3\80Üæ\ 2¨ H´³ï>º\87x\95\Òùë\12\9d`\95\ 5ð\85\8a\12ËÖ/\80ê\93-\93\13\18<»À\ 3õ-®µP"1¥\96Í|ª¹9O\ 5\10MO\ 3Ú7\8fò\15\ 6ølÛF\8eø«ê )b[\80
++-óÙ\9aí/1ï\e!Áà\aK\ 4L\9bÞ_É\eü'¯QTÛ45yfN/¶&°¿?Ö¶PÅÀ\88Æwí¡.;jÐ),%Î"ÚC)4¥«o½ÂÁ[ÝÀ´\96\12Ø)4\84\9eØ\9fUn7¿Ã\18\8c±Îk×/\ 5\19.k\10Òßå\7fd2ÝíÅ%½rOë\eãwF+°xÆkøìVn`Ì~}Ñ\13\16s\1cæ:]Ù°ñ\91tT¥q_\96èï¸ÈZËL\81\17îâÑ\81:¢W\b!¢\96|*dè\9f^v£Ñ\8d\eÙ\84^òV\1ca\a\10A\8fêPI"@ÕÌêrFÑIÎf\97µ*ã\9e¶»\bRÑ\8d{\1cJ\9e¨`bBÒîö\18.å\84}Ð\17êÓ\82¯J\8eê\rVÐ@Ð\85Îß.$ð5¸AÓ4åߪ\1c\98 Ò6¾wë\10n\9bñ\v\9b\1d\7foªf2À¯\vØ\1d¸Ú\13Vï»-\98\ 3$^\9c?4\98A¡oó-ü+K\85\85\11Ë\13\8c:È-¼l§\ 5}7´Sþ4a\1dbe<¥ô±X\f$\ 6öµÅ\ 2F\fê\9bþuÐB\9ay?ûzqñí9GHÏ娢\ 4\96´o\86\15En\97Ù·\98~\99×&ÿùQtþ\9bÃÝÊ£
++-¦ÀÀÈ.íºBƼ>\92§\ 6ÇO\90Þ\ f\8e\99jJ\9b¿þmóÝ\88úç¾S\1dó°à\14\16®-\14|v¡í½\rÜÎ5¥9GEbôvVõ\11W}\1a\8d1ßU\15È+Îí\ 6ñP\17\1a»d9\8aqì^\96Û|æ\19E%\ 6ôµ}uÔ;zF¹\f\9c\82Q\18\1eJ³»\9e\ fZ&\15\92òòQ\r,Ô\b\11«ÑTÖöá ªSö\97^¢\8d\1cA\9bß\11X\83Ï\9cüûB\ f\aÀt\ fÍê5_ó\87óº\9e.\ 5\88\9f$~<fv=D±Nëv\ 2|\98i4l ä\f\NÁõ\ 2\e°Ü\ edk[h³\v+\19½Ú¯Ä=ÈUEDÃ\ 1\9aÏ|'ã,Äð°Ü±'CR.\94\9f-²41g\99mêÕK
++-\ 1\ 2 \82\ 510\82\ 5-0W\ 6 *\86H\86÷\r\ 1\ 5\r0J0)\ 6 *\86H\86÷\r\ 1\ 5\f0\1c\ 4\b\83 ôø`\ 3\95\12\ 2\ 2\b
++-\9aó\18i(>û\91\8b:úøÆm¶MîÞN\ 6)ìð\7f";Ô±µ7\80ðY´\83\19&
++-\1c=ð¸ãÈ\99\rÇ5F\7fi\94½ßO²\rK¯gL\9d^s@´´Sðûn«"\ 2¶äBÕòpe\9c~<Ó/ÒVT\9bÓ\80X©Ó Kú2¹«°wÖm\8bÁ`\9b¸¬\ 3*Úð\ 5$\13p\12/ÒÚ\1a\94õ¤În¢\ e=áÄJ½¥2]0´G
++-Ni\v¬Í\9e\ eE\8ewl\99Ðð½\18;¥yÝ¡3Ë\ 1¤L¾L\1dG\r\9e©\95)3
++-2\83\19Â5ñÚ\ 2ìÍ\9a,½'*\12\87\H\86\16Þ\18\88°8Vä)Ô*ýqÐ;ÕÏ@\b}uä/F \15ù\1a§ð'\9dè\15\8b\9a\8aüAu_ìkïe¡5ÁÇpü\9f®ZSPß\b\87¡
++-eX\1c»\8b6\v\89t)>Ç\81ßá|®\8a\193ÝZ\98\90¬\7f9_1:0\13\ 6 *\86H\86÷\r\ 1 \141\ 6\1e\ 4
++\ No newline at end of file
+++\14\ 2\ 1\ 30\82 Ê\ 6 *\86H\86÷\r\ 1\a\ 1 \82 »\ 4\82 ·0\82 ³0\82\ 4
+++\ 6 *\86H\86÷\r\ 1\a\ 6 \82\ 3û0\82\ 3÷\ 2\ 1
+++\ 1\ 2 \82\ 590\82\ 550_\ 6 *\86H\86÷\r\ 1\ 5\r0R01\ 6 *\86H\86÷\r\ 1\ 5\f0$\ 4\10\99:\19ЬL2>\15Á¶#H \v1\ 2\ 2\b
+++pac\8f¤\bèuÎ
+++æI1t^±þ*\8cqÏc\10 ·íÒ\1c\9e1o\ 3$\87~\8d¤]¦ø¯Âù°`;ö<Ø\9fåä\98*\9c=/ôÛ¹Ý\95ðã,TCUu\8b¶ý½7«`n=&\16 ðgZÅ2(\11LÐfÞG\80Ú%_ð\9b\81àða¿ÖSÔë&\9a\985Ò\88
+++Ï}!\1f\97\18\80RhCß\96ÿ
+++\9f\137NâO.*î¤ûè\87?mÏ\93\ 5n1\9eIÛ\9c }\9b¦ä\1eR&çjË0êfWúÿU*\85\ba+ù\12u Eøý\rç\19÷|M}»_å\ 6(Z\834z\83ÞÃýÅ/\ 6\83\91z¶ÂQ\8e¨tϸ¶
+++Eë\82\10N{×/°ZͰ\95ß\12Ê\80\1fÄ\16)¤Kê²°|{épLúêétz^û\ 3\1fZõ\8b0>Á6#M\94¡F*´\8fj¶\84iYî[4Kþ *¨\8d#`OØö71b;\ e\95¹n/j3¦<#½5\8cá>3APz°\87?ÿÃ-É|´pg?¬xÁ\e,ý¶\88#\8bÒH\98\ 3Nl+OdÑì¼Ð\1fø\7f=\9c×Meht}\84\90\rî\98ø\b½\ 6\7fÿìhà\94×\8e0¶e¿\f>¡\12\r¿\950\ 4\94~®\13ºkç»âcýH\9d\97\95®\e¼c©"\ 2<¤Ç1\94[8Eo\1fýçXc)6UúúÊ/'® I½\ f\16\1d>\rö\88¯,\9fH\14\9b©å\90®\eë!¤\83nr/$Ï0\10FZs%ßzÿº\8e×Gp\ 5\ 5þún¼nrµ\83Vî`,f\ 3Ó\1c\190¨µ9\1dhñìØ\b4È\ 5.k\r¡éc%±\83r\97tt¢Ê\1aFR·\ 2Ddø\95\8dXTÜ\92\1a\19©ö\83¶"ä\9e\ 6Øû\8e\1cÆÚ\843óÌ\8bÑJ\9a¾À!ï5\ 6ü;b\11ÒmOd=7T)çç¡òBp_ ;\8eî U±ï.|Ì\9f\ få^¤ôÂ\\91\80;\83D´\99Åù\fS"\ 1º]ÏÇãÝ\ 4êðK©\ 1Èó5%(qûf¯0Ý\8c\ 6Î>\8fd\9b÷ø#\18»ìÏRø
+++CÒé\ 5»%\9b \81ظÔÝYÕ³ÀD
+++lªd\12sÍÁ"´²óZØ\83¯Ká<ïÖ\17o9¨\90xlnã\ e\9e]W£\f©\8f\11\91}y\ 1¼"ðA sÒÖ«\8bUn[\95Ç\ e\8f¥q¶Z\966§\ f,Ä^í\1fs/ý UL\ 4\18¢¼Ý6Â\93t¢Ï:q-\90B\9a\ f×J!í\ f¶×0Éð\96\87kYUÛän¼\92»\ 6=MÓìVÌ\1fÜ\eïþküãmzÇlU*\87¼G+ù\11<M}\14\9bÐ\9a\9e\9aÉ\10Ì\1fyøÅ³ª\ 6\10,Æ6n\9c\88«\8aÂ\8a\1câ`é«\16_và¢Øÿ\ 3\83òï0©Ç!ÚÇ$.·%®\98/ \9a°µÖÕ϶½Úô\ 4\83d\1c\1fÃ:ÁÉðÜô&ö~·Û¤m\99ÓA\11
+++\13@¥dFQùBC~~ÛpR¬ Ì\88T\1dg\98D\8f?êÜ/o[Å9\84Eí@K-*\ eð[WU\96\ 4EÈåâè ÊÄ\9fì\ 3\ 5ªLD£A\16÷Þ\1c\eiy21:0\13\ 6 *\86H\86÷\r\ 1 \141\ 6\1e\ 4
+++Ð\1eûúk\17'¶¤A¯Rýtp\94íd(\986\84\ 4Õ:V\ 4\b£>`4~ \ 5\ e\ 2\ 2\b
++\ No newline at end of file
++diff --git a/examples/puma/client_certs/client.crt b/examples/puma/client_certs/client.crt
++index 79e7f6f..14eb1dc 100644
++--- a/examples/puma/client_certs/client.crt
+++++ b/examples/puma/client_certs/client.crt
++@@ -1,19 +1,19 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDBDCCAeygAwIBAgIBCzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB
++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw
++-ODAxMDAwMDAwWhcNMjgwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
+++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUw
+++NzAxMDAwMDAwWhcNMzYwNzAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
++ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN
++-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzl14vsZCU7E1qf/a4Yxs/SbIf/Pz
++-PW3Thbhno3JAbsTUpf9zkdDRB8fCn+R8SnJVZhCRYhUA3lNdZIskQp1h2Ix9TZxj
++-QSo29ixzik0fTd7nd4KC8WOpZUyDs0U2ugmqomJXP0e/AiFpN+3HmgTWJpDx2oET
++-Lcdl70+wRBkF2FDRJU/5KvArUnaGXrqW645GH3iXMadQRpEWBxFP/+aiz0FXqd9Z
++-IWSoobf03dY/tIaxCrFe2+yljBB6eI/oHWs7Y861JN+nRcJrtp4LmeCdDXzQN7/y
++-xDg+NVQy0sEltIMTgMyoIsb1UPD+IkepT9GKd09M6p63BX0SXr5YPhz9iQIDAQAB
++-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAHKYzIAjmllB
++-n+CRjYjtwPrkVT8azecL9efdBvE90KkGnIvRzNe4vQdH0mT4R+RUOXO4mbhAT6tX
++-zOpO2gPldBAQ1GAcjs1XJPGxSqKUO8B69Nv3mXqwR3FKR4ZGseC5MXjQb5dZc3An
++-NJZy6t+7gO0nDfV361JJjXvNdHd0cfx0aCWdTgQWxt9RSnH3QxvVbdXLAPvYyb1g
++-Ueao9M5PMMx5cAgq4ORM+TxPJxTRj2BuRj5coHsPn7R4dkwWP59+h6Vgdf0AmeUG
++-Jmdrul5ESeACbs2GixZdtqLT9QUJhTAFaXpJd3IUYyML1V7qRk1FJqRvatYxhBxQ
++-gjZp0ouJRCY=
+++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAuT6k08rCxgTQtwtZ1PB2iaVTAE
+++Z/DTKp1bUP+A06DslWT9tng5bxUNMD/8z/D4sOKzNTds9JP9QmJsgme1qlm+pIRQ
+++qgejLw6hG3v4ZdTe2CTvfE08lJlwWVU2hoDLDnurXWoQE3SSAzfuoeg48EZ8tjug
+++3KkxbCR0GUzk5aof8fskCapybRGvIek/xBkVKwEVhrvNwCvIwvw2SRgGuxHuZNCk
+++kq3pptuVC4e14RglByVV0C6MkNMP9CDMXILZfTQRnsqgq67MuB7IUbVPH6VUYqwB
+++IIR0MW7lLFLkB6x9QOkCdAXrzqKFeNeWxw2eyV2ueTDQIqsx0fx+SylDPwIDAQAB
+++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAKlWE0BFzumd
+++XtXSiD8AESuDWHAdJ5l+lzwGJ5/qJHQMTYg+7IwVumlf9z2rwTyCRNVCU3t68D7/
+++8d4l52+DcmZExa8PXnkAotNcV4cDps/ZJt+k3stYSAL2zzxOCKEaysd7UvL/b61g
+++t0Xyg3jlg5svhJomHuevB/db9oRUCxlSuSTxjeanVyvgXlURBOLT1MaN3tNhtBJM
+++RmkpGupNeS6Zwuzi+Ina2/TfmKSwtoKMyiP/QuzH7wAV0BCDsDPT32CYkvuJ9ARh
+++QsMK9a3oromDxKx98l9FScYsH6SkPlywXF4ZkimZj4Wtni5kHkeFAbc6KuPanYIL
+++eypAAM0Zm4w=
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/client_certs/client.key b/examples/puma/client_certs/client.key
++index 371a4a1..9a511c3 100644
++--- a/examples/puma/client_certs/client.key
+++++ b/examples/puma/client_certs/client.key
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/client_certs/client_expired.crt b/examples/puma/client_certs/client_expired.crt
++index 6a6fefa..58e9c98 100644
++--- a/examples/puma/client_certs/client_expired.crt
+++++ b/examples/puma/client_certs/client_expired.crt
++@@ -1,19 +1,19 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDBDCCAeygAwIBAgIBFzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB
++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjMw
++-ODAxMDAwMDAwWhcNMjQwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
+++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw
+++NzAxMDAwMDAwWhcNMjUwNzAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
++ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN
++-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzl14vsZCU7E1qf/a4Yxs/SbIf/Pz
++-PW3Thbhno3JAbsTUpf9zkdDRB8fCn+R8SnJVZhCRYhUA3lNdZIskQp1h2Ix9TZxj
++-QSo29ixzik0fTd7nd4KC8WOpZUyDs0U2ugmqomJXP0e/AiFpN+3HmgTWJpDx2oET
++-Lcdl70+wRBkF2FDRJU/5KvArUnaGXrqW645GH3iXMadQRpEWBxFP/+aiz0FXqd9Z
++-IWSoobf03dY/tIaxCrFe2+yljBB6eI/oHWs7Y861JN+nRcJrtp4LmeCdDXzQN7/y
++-xDg+NVQy0sEltIMTgMyoIsb1UPD+IkepT9GKd09M6p63BX0SXr5YPhz9iQIDAQAB
++-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAHclwiffmiFl
++-uMlhnVbcw5UILFnZLhrT5Ufxg+dpPVpd0s6vZ/emw0QgQHSUwBfo0l4De3rA4ZfK
++-wqXv87c38tA9fZ6Schj+0m/pGFbixX3ptw9jm05V79broPgzSflEUKpJiyYJmjnK
++-3ZfN1JoxYsd3WUrcbxnoOhNEbHuImyFn6sd1Aw7o4+Zs7GcKvKfY5n+anATy42bL
++-ODnB/XJf8sZtevb57ceiKGIoGbVzrdi62QY3uQS8Jv1CAVzGHogW8mAw1yjE94v0
++-vcV7U4/v2KNt2UqWLHjIpeefnN+7scbX4YAz+UXbBZ+1DwAgSZq+oyzrBn2RKggM
++-LSUeS8vdfds=
+++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAuT6k08rCxgTQtwtZ1PB2iaVTAE
+++Z/DTKp1bUP+A06DslWT9tng5bxUNMD/8z/D4sOKzNTds9JP9QmJsgme1qlm+pIRQ
+++qgejLw6hG3v4ZdTe2CTvfE08lJlwWVU2hoDLDnurXWoQE3SSAzfuoeg48EZ8tjug
+++3KkxbCR0GUzk5aof8fskCapybRGvIek/xBkVKwEVhrvNwCvIwvw2SRgGuxHuZNCk
+++kq3pptuVC4e14RglByVV0C6MkNMP9CDMXILZfTQRnsqgq67MuB7IUbVPH6VUYqwB
+++IIR0MW7lLFLkB6x9QOkCdAXrzqKFeNeWxw2eyV2ueTDQIqsx0fx+SylDPwIDAQAB
+++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAJMDA1om9i0I
+++uRNtBBYk0k6/E0Tu08VPzJNsBuO16x6wpG3icESNIBoC04Vt/POxcJGUCxJhs9z6
+++k69lY/hXW7tLDSbKVTetV77j+zzZoHo6W/Hh2hCOwXJwVc1qKc2Aj8of42dSH2vd
+++eXL8PCc9Yk+nRCs9R6xUAdE9t06dVUxvRb4B67RjhLUXvC0Q3sXHEbqWZir6aNhW
+++NJQ542RBLFM4XKOqrybZblKEMXIIz8lK+hs5qDRe7DWd1alunl1L2zJzXwZUj756
+++l4J81itIG0LcBluOQKTPhYpZCPo0btK9UiUFaCxdkW0k+q4WOcA1xBuz8F6hfd89
+++UGtEB8nmOHU=
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/client_certs/client_expired.key b/examples/puma/client_certs/client_expired.key
++index 371a4a1..9a511c3 100644
++--- a/examples/puma/client_certs/client_expired.key
+++++ b/examples/puma/client_certs/client_expired.key
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/client_certs/client_unknown.crt b/examples/puma/client_certs/client_unknown.crt
++index ed467f1..b6b66fe 100644
++--- a/examples/puma/client_certs/client_unknown.crt
+++++ b/examples/puma/client_certs/client_unknown.crt
++@@ -1,19 +1,19 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDBTCCAe2gAwIBAgIBEzANBgkqhkiG9w0BAQsFADA5MRMwEQYKCZImiZPyLGQB
++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI0
++-MDgwMTAwMDAwMFoXDTI4MDgwMTAwMDAwMFowPzETMBEGCgmSJomT8ixkARkWA25l
+++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI1
+++MDcwMTAwMDAwMFoXDTM2MDcwMTAwMDAwMFowPzETMBEGCgmSJomT8ixkARkWA25l
++ dDEUMBIGCgmSJomT8ixkARkWBHB1bWExEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIw
++-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALpCL06kbLE9BNknrrRVfW5YgkoJ
++-ih7EaPNNNqmUgnIsLBjPcCZ7qlsMaUa2ft0mRFxniFkccdrHKox1oAZQ4WrOV5Ls
++-pcLktNTESkuMG5oiobsASItz125YMoEs/q+cLhErf24EaUAhXjn3/ebvCwtza1il
++-7bL1RS0iwfkCS68cQi8MI+tQlBebcSUoWazoitg5YituPKNj493tS1nO5pL3vZuG
++-6tNmhLr8lW+3n4Fi8SElC/pBWiIvsUhaUZzRjrcyPeMS7H2+zdJXDgTj++RNyP0U
++-TLZzFigeZJXNmHia3uneHw7o3d4fyZERuBl2d990iboLbtPh/9Pf82bBIU0CAwEA
++-AaMSMBAwDgYDVR0PAQH/BAQDAgSwMA0GCSqGSIb3DQEBCwUAA4IBAQBO7O5IQJHh
++-4ENYDw/kJFdye3l204JSDrFMP8uMIWQLd1RiI22CWjoyhUSfoyumrzykbPNhxf4w
++-kj1E+z097/8Q491wxbbLbE1hfNdTtx35dnCUVGPb9lCP4YLK3v3swXw4OklVdsCb
++-k/cf8s6BdNKVPdhO0zXRBdCbq2Z2PPpzQtaZ2qH739v2tX6CulB68hUO/hQeQINA
++-eJGMck7mlR4FOE76IeHKYy4F2V4S9iNtkqvkf7M0wfdRwZFJqbdZBXTjRpOVMXgr
++-XFGvANl9HByFudJJHk8t+NmkIFP6rj5xQSV4i31KQQHMGNr3hCKgkk7X6Wn95BH5
++-FSJcNlLR8BuJ
+++DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMAqcKCOd/f/Fi9CPDGvS3/IkhEk
+++Q08pKToBNsaybIaoZq0cqjqrRT0/szOe1WfF6mYIeEnN54PlEEn4MVo15BxnqmEi
+++Ow0Bh//U0IOgLejxj5XS0xRX/01pGojgjW5wTT+gDu/WFcMWopaRS8c2b5HY2Egw
+++5Y0a2nNrMQr+ZEAITGME0mY+nr/CSEJAHRtXqJ/JdwKTcrEWPEFzRdBgQATucCdG
+++NYcEyg2iX0suE5l4ocGHIub7/XYnYnABpY4LBVutjQ5LEDOc1RVeLiYJt5GKKnTk
+++qUoUSTAuISkFwKCVa1vYQHoTrWKC5mcx697QnB0B2QDQq1+homQpLu+KhpcCAwEA
+++AaMSMBAwDgYDVR0PAQH/BAQDAgSwMA0GCSqGSIb3DQEBCwUAA4IBAQBLU/+Nb6ZM
+++QV63HgVF2RZ/q2zFjziP4qZS07WYFUl51aOH8xZ4D8wrjI949LHcloRsyky65T4s
+++UH7kbgvd1MasHHWn80tcH5Wq2ekUGqdZsH46dmq6/QLzNb1/zdZTNmAwuGf5m9DM
+++R+hd6qMbt9a3DZn3cznNXt6/pqoU570fmF/VchZKXj7rfo24niddBKXJbBtQkNhE
+++oE0RPCi/mvYeVkMtJKZaX+ua0L/rn7txKqDusWHcsd5Bkmew6gIT1mI+PSNlO6b/
+++wfu9YKTuGIhWbaqNET9T83mNgJs3+acdiphFLZWqsQOmyWC9QTZGjAlVyhFW2SJq
+++M15arUrhr8Yu
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/client_certs/client_unknown.key b/examples/puma/client_certs/client_unknown.key
++index efa436f..90ea42d 100644
++--- a/examples/puma/client_certs/client_unknown.key
+++++ b/examples/puma/client_certs/client_unknown.key
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/client_certs/keystore.jks b/examples/puma/client_certs/keystore.jks
++index 17e7d5b..574fd32 100644
++--- a/examples/puma/client_certs/keystore.jks
+++++ b/examples/puma/client_certs/keystore.jks
++@@ -1,27 +1,23 @@
++ 0\82\11$\ 2\ 1\ 30\82\10Î\ 6 *\86H\86÷\r\ 1\a\ 1 \82\10¿\ 4\82\10»0\82\10·0\82\ 5®\ 6 *\86H\86÷\r\ 1\a\ 1 \82\ 5\9f\ 4\82\ 5\9b0\82\ 5\970\82\ 5\93\ 6\v*\86H\86÷\r\ 1\f
++-\ 1\ 2 \82\ 5@0\82\ 5<0f\ 6 *\86H\86÷\r\ 1\ 5\r0Y08\ 6 *\86H\86÷\r\ 1\ 5\f0+\ 4\14¢\1f?\9bÞð\ 4"\9c¿è\94\1d]\ f2V.%m\ 2\ 2'\10\ 2\ 1 0\f\ 6\b*\86H\86÷\r\ 2 \ 5
++-0¤Pßíg\8dçÚ}\ 4\99\97£6¿W° \a©yb\9e\18ò*Io\9c\8b§uö\ 1ø®\9b["5\13ê¼DX-ËÁ\8cg²íð\82£Dw·¢\13æòË&Ùm\98\10\90É\ 4OS\9dó~ü\88\96\98tUK%«ô\8b>>]Eö\86\15_\ f=\b>å\r\96ä6,Ö-\97µ\9e0J\r\85 Ú÷¶¹\8bê\9f\9c\9a\13\ 1/Ì\1d\82ÎÁ\9fbõí¾\82
++-æ³6ËHçD§E)R\89ìo;ä\ 4¬\86lð\12\94x\90\17\r½)Ó.~i\16´ø6\802 M5\99\ e¢\80»:±\92§ÚfÓ¤\82EÔþºÖLÒÁ2=îg@Ò!ªó/¦p=À\97øÏ̪èB\7fÂÝsã\12Ùª\88ârÒ\ 3rbh
++-æqñWÈóÓÁ\1e\ 3\9bv..\17pöA~\13¶A\ fM,7ß\7f\83ûWmX\ 6HÐeÃEèH;Ú\a\9eLKC\91,-\ 1TMjêÅ«ô!Køuojó\9cNxâÕ\9f\ 4Vãoª³-ÿ\9b\1c5ÿ5U²&$µ\13M&ÿN¬qDX\1a%\8fîÒ\f\84\87
++-ÍÚBJ\r\17 Õ,\br\9aN\a°\1cüú
++-®xNû]ÄÑ\1dÏO²eZçy-è?Â'g.¡6\87Hýç\9fh\ fþÓð\128¼\91µ\b|óo\87(Õ\1a\1d½\éE\9fÛcµ¹ÌR^&|tÕÇ\11ÿ\f\r\9e¬\90\v\9bã
++-Ò\1c$\11x\81Öb<\13Åæ²^ªO\ 3%ô\8fÝÆ×\1d&£sT\9a._\ 4f\1dýø7ÿ\8a0O\9e\88£·!^û\1eeK\ eü\94\ eú-ÀÇ\ 38\14¦\a¢l\ 4B,Öå\ebÉ\\99½ä\8eTå\8d@\8aPõ`c
++-O\e\10úÚ«-Ó\ 2ð\f9¥«g\12\ e\1f\8eì$1Y\1e\12P¼\ 4\1f§õ\82Û¯\16ìÁ\95\ 5øÒ1@0\e\ 6 *\86H\86÷\r\ 1 \141\ e\1e\f
+++\ 1\ 2 \82\ 5@0\82\ 5<0f\ 6 *\86H\86÷\r\ 1\ 5\r0Y08\ 6 *\86H\86÷\r\ 1\ 5\f0+\ 4\14À1Ð[Ç\eEJ*¨Oj\10F\ 3Wv§<\83\ 2\ 2'\10\ 2\ 1 0\f\ 6\b*\86H\86÷\r\ 2 \ 5
+++¬\10ª[É\9e²Yó
+++nÐ\1dÛ.¦\84\83Ï0Áñ)Óq(ÙÿÜ \88綯EÊ\ f\8fÄLÎϲü\1cK\96>tXcèí´nÍýd"ÏÃXÜgÕ|\9aÜY\8cT¡h¿\ 3\9e\1a¹NÎþÕp5\1e9KÙò&ÖoÆ\17Dº7\9d=u\8cï\89À.\82¯\96wË2͸µ<V
+++À\88\14\9aD£ 1iOl¹Ó\f\9c×\7f\13÷ÖÜ\97¶:ÁÜ\83Ë\b©G+Wâ\85\9e\91Ãå>´b¼ð¡Ã¶þEô¢.~Ê®4\92%\92zAjô»[-Ñ·\91õ\1c-Á\18\ 2ݾ7\81\ 1\91ûÅ´µ\14á)\fù;\99ìfâ8 |Íp©;¡Õß+\ 6Ý6Òê\95<j)í$\ e\1f\92¸kq\b6r\1386¨\bBéÊ\966GÜ\ eª 1|AÁþ\1d·±^îd'(\91*¦\f\81Ó\ 4e\8fý¿\1e Þp½£\v&ßK=L\93¾\ e\9d\8fO.Ìïsá,â[7qâNSq\10Þs\93Þ¶ýá5ä¨\f\aZH\91w¡;\8e¸\9aÛÔ\94¢D~v0±\11ëM#éÿ$èÍ6ï\96íÓW¡ì\10\ 5\8e\1dårH
+++;¼9\91"\9cÛµÜ\v\ fÂ\86Ø\9e\11r¨H\8aº:ÿ4 ;<â®awÆ2\9a\8bs\1dëü\8ch.ü\85¥G¸÷WÀpØ_QÈ\82è\1e\18Å\82\91\7fDѦS\87|¦½ùö\9aü\r\84\877¡\9bÍ?=Ì\13\88#2 Lo\1c\95»\ 1â%@\15ÚÓæ%é\12\9b·pv\1e|Ù!\ 5\ f³°4$¹{\ 5*ÝP'\83\96\1cO"÷\ er\9eo(ù\19É\1c0\84+1X\9e¦³ÿRCMµÒ0\ eÀcj(,\17ËFo\83è\ e\91õ,o\1dn\8e)2+\99\97r,çEÉU\98>\vÇ\ 6\85\ 5ÆÆ\vçd%|'\ 1ÿ\12AxÒ\87\10ò\ê\90-\ fÙ \13öÌ\97Ð\9a\1d\9f'\93\ 1µ\1e/\92÷F\²\10ú\12\9b¯ë«ºþ\87"\14dn_Éñ1X8\99
+++{º\19\80\8câ¼Fö¢Ô¶Ý7È\9cgv\ 5æÐÿ\97\b\ e\8099»k=º¬&WÌ8\ 6F¯\90\83S\9cPs#\9a\1f\9a¶üë^¿';ÆÍ
+++å\1e.\1e\82Vj\81aÔã6\8f?eIÃ'¡p\94¦_\97\94%<ôò!!z\1fs\1a¾\1d\9d\7fï7\1dÿ»+\ 3¶H\ e\97fÿå~zê\ 32âóI×®«í\95w\83\9dý\82\1c+,øpÑ\ 36ªSè\ 6\99.S\9dJfÍ+\88\851
+++\ 2\9cÂ\94Ü÷\80jÁì\90ö\90\ 4Cµ=Þ¬\87?_S\96¿\8f\9fÀ³H\19л\81aÔ\1f\95W;ÂikJ<ÍSYð&\8exG\ 4uùýü\8e8> \vi.²Y\16\93¤°Ê\1a\9f\99ô\8c9\92¿Þ÷\ f\94¥6\11\99
+++ã\8aÛ<Z\7f\8d½ýÔÒÞûO\9cÇo,\19Ofµ!K70$ù\84 Â\1f<.\8c¿¢/j±]¨w\14Aµ£ðÏ\19FdÕ\99
++ ò0\82
++ î\ 2\ 1
++-ç\ 6 *\86H\86÷\r\ 1\a\ 10f\ 6 *\86H\86÷\r\ 1\ 5\r0Y08\ 6 *\86H\86÷\r\ 1\ 5\f0+\ 4\14^AM\11\96\80\16óÓJ6Xýk+\85ë?K\8e\ 2\ 2'\10\ 2\ 1 0\f\ 6\b*\86H\86÷\r\ 2 \ 5
++-puû\93|\94¾\1e\9fÃÀôs!c\19\boCpRì"å\18E\9c
++-\80µ*ðë#n\1a\98ù\92æ\b'\95ï Ç\9eò@\8bãU÷mß
++-\16\ãŧ«\80WøÃioÙó\94\84\979#Ëø\1fSw¦Ý'C\ 1 î]A\eI&¾5Åù¶CjQ'*\9d51²\7f/û\8f\9bqLª\ 3'oIëôLl\95\ 6\ 1ÓË?Z\ 6"« \86 ¨>{\16CßÙF°¥rPf\133\a[¹\ 2%në\14JÚ\1e]\8fz\99\v&x?Q\1dÞ\16;u\15ò\1e®/¤A+ZÆ] \83ðB\8a(Aí\10\f¬Â®kP¥\935±G:Î\15Qº¨j\92À|Ö\8d(ç9¤\99ºËJãºLìknCj\9e§v\8d\88\ ex0Ûh´Q\ 6\1cÜy?¤ù÷\89¢ÚHÑ\1fûI(1_s\88íR\85D\93\97\14\84+¿»ÈÁ\84\1e+Y\b\95\11\ 3\83co\84ú\11DSáRaÊ9&\1e\1fnÇC3[9\9b\92S\88þ@3F\91ä¦oÖÁ6ýy\1cO\11õ\85\1f\19\89`+\9fG"I¨K\ 5ö,ß\87wÛ\94\ 4
++-ÄÊÊ\9bPP\87¤õ¼\87\8cZo³r\8b2¹¤â\e3Ť\rÅ\83áV½\9fò\ 1\v1*\10*«Ïå£UïÚcÐ\15SR]\ e\8c½Å@=\8a~\fd\855\16?\80Ïï:\ fà\83\r\ 6s\83[ö(V\99\17Ú÷*\98îÜ\7fmý\aW¿õfR¤Ó_\9báVðUL¥y\88úÓ½±,ÀC?-\8bò³.½,±\15¯vèÈ|ôk ¹Ò_ó \866x£\82è-\92µàB`÷\ e¸4\8cc\16\9bZñ^Z±Y÷Ú\9f\ 2K\95\81ÒB\95öZ7\9cIB[N¤}\ 2 \9f\9d9¥ðxå*`Bý)Ò\9c¶bÐ.ä\95D°t`\aÞÕ%µÓ'©gQÁ»\1a=Jx\93\12Ýù2Ëà.\10~\9c#\ 6-\f[@#~<B&\16
++-\9d©Ý$=D\ 4\\15|ø\80ØÕÉQ\1c\85\85\8d\88<·\9a±|Î\99ÄÄg.\ fÀè*±×e¼w\94ã\96m¢n\84ã\1a6JÄí\1es·¢é>ÿ®\ 4bYö\93\bõ\ 3!òð\86êi¥á\7fÑ(Â[\8að²µ
++-%¢:r\8b_?òÏú½Lð¿;Û\94tÖITPov[\99\9d¯.ðÄô\89»µ\1d\ 2ÖÍ\15Ü\92ù,ø\81t\9f\8cùE²z.U\14?\10d¼\15î<\9az\11'\83(OßÜFgiKnîa¥¿6ÖµÃ+,Æô¡¶o«\1ec÷¢\18Õ6pkús\9eà¹7ÕCµ8¬!\10/\87*Ó\ 4Êê'ý4ÙÍ\80åÌNu\1f\97M]\84>$dp .ûr6`I\1c#§§ýt[?D\97Ë%¨\81\85\94U
++-$ÈA¥Ù½×ª."]\9cÁqá\9a\ 4â`þßI\83!U
++-©½\ f\aÓt§5u=@±åô9ØÂAß\84ÉAð\1cãý\81¤\7f\80ä\15\16\12Òá\ 4\12^[
++-KAÍ,\ 4»òq,Û¼\80"\ 6^\8e¡¨\89íÝ\94Þ'©\83ÿ÷¨×\9f
++-Æ\87{¤Öy\19\89\98\14ï\96\ 1¹;&o\r\82Íô9¬\82\99M\9a°·\14¦ñf8è\82\91u\85\9c\90?\ e]aE\85\1cËý5´\ 3ã\9c7¥\19¯½h\9f\12Èr~BÖæ\90Á\96Æ \1d#rÚ)\ 12\19)Ñ<\r2Z\82é\95ã0<]ÔÓ\96Ãí4\11\1e»C\11\ f¯\8eÎX«[\13\87¨\18À¼¤ÅIWöAè¦0öç\81»\ 2"\9dgTþÜ\8fX\17§¾þA !ª9(À\86¿/åÝn7ý!\9b\ eW®¶ä\95`Ó¨)Ù\10ɶTüD\9a@)\96\12³\86\94°HP\\9d\8c\82k\ eI4ÃÔ¾^\9btÚ\84\10\ 6é\1c¤\19\828ä\9c\ 5\89¯4H\1a/\1a\8bú\bØ¥¤\1c\f^@6þvJV.y18D`Ç^§\1cC7\vô·T:³\90ÉUJMÞ\81\e\avY\9eT\85Â59:ø\8f£\9aÑ\9fÍ\fö\89$:¦^øWk\ 6¼sc°Öx\85ÆÉ_TjÔË
++- N«^\82N\90FI\1d\b \¥%\r\899u¨Ã3\95Uí\\15 è\89\85\8b\7fL\18þÀk\9eY\8a's\aR_\ 4<;$\ e\ 6$\99fü\18¦,W\8cÚÌ+\8e³vü\176\ 5¦M\8fVÜ Vz®\91¼\\11÷Î\8b+ê^51\89Ñ \86«\9cfÅóðµý>ù\82\97H\r\98æG 9\7fºÞçÌÁ\8aì\91ö"µ\ 1ôcÇë\90Ñö\97]\87\97që÷\81AÁòèÉ\a\e¢\b
++-\12\87\ 4\90\8c&\ 3%[\83Ïu¥öÒî>\12\ 4»»èã¢\97dLÏ\9b\12¯\fù®n#Ï5\93]\97D·\99ý\9f
++-U\92¦\1eÒ\9e£{¬E+x\8dÇ\80RH8¨¦iEæ>Q&\b\\ 4À!\8bW?ALë\83aAø\10Å\8e\19ª`\rº\17Ei%\98Hu\17Ø\83\ 5ßÔÐ/³¤Á<\1aöÜ\ 5»\ 2[Hu\973í\b\81·\ f0\ré*¢\94\9e\1eÌ|\fÝÕÌçFàÌ{æä6\9d¬>¯ P¿¡1ùÿ\13\87\8b`¶\ eø+p\95VA\rCÞ4î¤Ñø\1ddÆ?I\v\v=,õ!\83×c¶Ì\81ÉùL\15®ú\81\96\1fÁ»^0Ý\85xkÈ®\94ÃE\1e\19\89» v\f\1e\9bs\1aÈcò¾äv294ó¦gá\91ä¤Ã\ 5\ e·)³àÅ·Ì©ÉúÇ/\1cå9AÒµ\93ôѱ¾¶\r\ 1kÎmjô\8f¢c-uÏ\8b\99N9z
++-\95Ü
++-µÿº ¡\9dbû\9fTK:E¢\80?\87ÂôÝA\8b²p?
++\ No newline at end of file
+++ç\ 6 *\86H\86÷\r\ 1\a\ 10f\ 6 *\86H\86÷\r\ 1\ 5\r0Y08\ 6 *\86H\86÷\r\ 1\ 5\f0+\ 4\14H͸@\ 2\bÃ5\rÊØ\ fÒ\ 6ÂÙ"\11\1dÏ\ 2\ 2'\10\ 2\ 1 0\f\ 6\b*\86H\86÷\r\ 2 \ 5
+++p(G\ 4\9c\9eÂ)Ï\v#õÏs¢>£i\10¼mh%äN;Có;Îr§¯ç\9dÒ\13+\ 3Ù¦u\aÜ*³®È\10</úpNs2Úª\8eóùF\92?èÕz¬Zý,ØR^Ý\87^\v¬Í\\19ýó&\8cXúȼÕ3Bµâ
+++y\18An¼äE\8b=}"o\18\8e\1c\16&\1aúëë\ eÃ\e¬Ä$ä\1dH\82ËÀ`ÒìCA\9bÙ\1aJ\15fvö·I\9fnùÆÏ\e\15~ѨÖ\ 3;\12\94ÅûlÆKð¬4·)SP]\1a\97H³w\f\15VKéD>Êè\ 6Ó ß\8b>\9d{\18îv\92¤L}É\f\9fÛ\ ff$ªÝC\946JÁ\a\ 6ã\12\1f§ã¥\17Û~}1«µx+Ü\82(ô~)çoÃ#þ\ 2ÀÆH¸¦2\90k\oT´\80¥gÓ\1fñ\94¼Ð\86 \81\ eÌ\ 4çÇ\ 1°\ 1\a³(Òd\12ò!\ 6EÅ\8c\ 2ômàX1ò\9aÄÐÚzÖo\1fóMFi\ 3#&æ5 \8f\85\1d¸\88\ fyÙ2\82Û\1a¢¬\eÖè\8dÅi ìç6\ 1þ>í±ý¼g9óêL{X(Ë|äÌÞ\1c\1d\9ccv#^x\8c\90^y\12\8djܼ\8b«Ø¢1âZ\85$.ìá\foK{\90\8bq\98\99ÚA\86g\19\bIðV>\85ë+2¦äT:ýòdÖÖ ´§\8fávUó\85\12yرçÞü\91í®¢\18ÞmÃ+E/¡;ó|°\7fÏs5\80.\1f\82\98\ 5\15\81V515\bH\96Iy$(\9chÃ9s·\94,\ 1è &°ÿ\11P\91\1dk\9aO\96h¥%O\vìÕú\16_øh6vçp\ 5¯º#m
+++j&\vM\10\8aÑÀ\90Â\ 1\12\93^:\91\999Ï\10%»Á¡qìÒ¼\1eaD\16û\82LÙmÄ\8d\ 4ñ
+++l\1c\1c
+++l{7\e\147»\a¾þ\93Eí1ÛÓó
+++S\b ï
+++>\9f4c\16å¶\9dÂCÎñÔçÁØó³Ú\18\99\81À'þr/¢\1dHÛo\fн Ë\8cØÕB\ 1\12\9a}6\v¤»\94\8b1oY¢\ 6y\fá\f\ 2s\9axu\84ìXÏÇða+b]³(6\99ì\15"\8aá\88óCÅË\14pM6Z²²Þ¸\1d¹\85ú»ÙÐ[\965\a\ 24Ð\8a©á9\951\8dÌ\9c=X\ 6\ 1ð_\8e~÷p\8b¤v~z\1fHrXÁóvÇå|%«PÙÉ\8fzÐ.ég¶\ 1 ÐP\94U\90\ 2y¾V1Ùþ¨ª4\8eÈNÎï\83wñ@Sp\19>>Ù®ÊT·P`E£\ 2\172"#:\9e0kFÁtßCÜ}\18\88\15´\90²¯j$q\86òÌ\8fn\1cê\8e\87ò*ô\9f>\93q\vi¨\ 2\f7\ 2ånmý°Ã!À$\944\10@0ðq¦\ 6Døm÷rîs\14géï¿ã\17-Ñ\9f\96\92gítÅ>¬hÍt£³A\95\b¸ÀDÿO\1edz&¬¿\14~\80µÕ\95ñ\89ÀI«\89\9fvdJ¬K\9f\1d°Gw W\86©§&9?hªOʯGO\1a°ôö¢¾\11|¨´}«Ëê\99òeö>÷Ðt ¯\99à ,§y\89½\9fÞdȨùûX6}\8aO\ f\16 z#\11ü÷
+++]\1eU̳wÂâ1}X\9bsËà^7Khå\ 35üî=H\9a\19é\1d8\ 1\1c×\ fVs\aºï\9dÕV\v\aæ\80\8b~\19ªbÞÝ\1aÀEâ\82\94\ 1Ólv\9fl\1a\82ׯ3þP-\80r,aÂ\83\18\b3\8bôí
+++u\1aý\15_.u:?\1fð¥\9cç5L:\1a`¡\9b®àÁA\94mfé£*AúÌ\1fí´\V\9aó*ÁÝ\1c¨%e!\9e\vwÿQ¶+g\996{¦ßÁ\8aª%\1a¼á\15åsa\80£sÒPéŹÛ÷\7fFþn¨Y°âfTì&TìËðñ\ 1ºDK\10\87/!T&X\91""Î(\999\12Þ¸%\15\8fî\96c90=KÞt\97 u°S\9e\12\18.\16Á\96D
+++áòWÌ\8a\13N\8a=DÜE·8ónæ\b0M010\r\ 6 `\86H\ 1e\ 3\ 4\ 2\ 1\ 5
++\ No newline at end of file
++diff --git a/examples/puma/client_certs/server.crt b/examples/puma/client_certs/server.crt
++index 1335881..3a7cd3d 100644
++--- a/examples/puma/client_certs/server.crt
+++++ b/examples/puma/client_certs/server.crt
++@@ -1,19 +1,19 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDBDCCAeygAwIBAgIBBzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB
++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw
++-ODAxMDAwMDAwWhcNMjgwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
+++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUw
+++NzAxMDAwMDAwWhcNMzYwNzAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
++ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN
++-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxqbRfVxcH5wKCTGfuZTVisUKUIWS
++-TUOWkIoyIfBKVknREnVSN40aw72bs9GDh55F+R2IJ3y9F7TQXo0Y6PJ9tFXZqJMb
++-2NHXYTfhQCSN/w5wqKIrWOR7wbA4JHjs6x/vHYnjFVbvbx43M+wceKsMBlQ1eDLz
++-Ukr5vjLGASmdgzTq8AUd5bNKiNq+ERyAUTcuwXWC6ndXNdr3vdEgcYnzPWtgM7eo
++-1SpewqCqrlSeA1dzXThB8vCFkCNy7DYrJbCuGIIxm1D2garE2814LXztE/rhwdIG
++-zonh44/Zc43cFhzJQUhcJ/jOxFovgijHd5lvUfvqj6YoquC5yFVYEfsSwwIDAQAB
++-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAK8iNpb7JRQ+
++-CNHl/dUV2DW9Js1TndISLs0YqAcAJHgzwtp5OPV8GHUV/BF7sf91sHU8y6ivety8
++-QsvG1ToZhWAVJXG+AStgJDM8Iw6g2xZbIY3wP3bBSuxAE5PGdcXM7nRfjwnAJM7i
++-Q1gdPcntc5J3dZ1Kt5d9iofI7UMBTuf0Ws+LWG73i/NeRj0lef6+VErQ6M93Yi7/
++-knXVzvRkpK2664fRmUHlavXP2Alleuuibgg8kgJ9M1yjluwwx66LXUbhMClrS/OD
++-hPM29fPZmO+XHJ1dtR79DhdmwqX+GOqjD78asYHIg2Yjy3yZsOX6chKvD0MWk6pc
++-DyFSu5fEHQ0=
+++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwemh+fx2FupgRmKG7ru3X2m//xDX
+++DttQXdXI8OwqwQcWW/7fGxzYXImPGKSYToXUctU7pFM4+PjBvp0l4iZLXANn5lLA
+++e3zEUzC6tZEGVol7Id0nRNVqVgt3CXLLmcxyuTwFZmTPM3AwxtxTu6WbGWz0l6v8
+++ElFkIZ023Kb5e/D0GBUVHOJJDcqiaDf18WrzPjJd59VOE6gH8iO4GX2ckzpf2hBq
+++VPVsmXi/3sTv+5RlBr5VSNPRq4LxBrARfWU/vTq8Q0u4mc0saLNPB3O3i3iN9wMj
+++KKJV3tBNzV72OnsIhs2KprVrcE9bm1XT1U8KTqkpPprOmY+iVWHcjJTa9wIDAQAB
+++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBADTBxt0J0+jn
+++VWiuVEvkVNLutKP//CbQxwt/h9KsigHdwhBBQ4yeqZ45OnVMh8npTLc+7PHgqwnb
+++VUO+0aqIOGJbeEAbGbjxI4ND0LA1sHwKkGRUPIQEETXOB4H4DPiM+HHsUMd+DuPb
+++cWn5RqBZByj23wFCp9/Bf6Db8jzVNRnZx26+rjjtP8muQuxeIACjsgt58akLLQEk
+++IVvLPoKrnZGxMbKnLejmXGYB8iLeWnF+nrR2+IrJNcBk3A+Fkb92EsJUpernqmzU
+++3+Vrx1xeOrm5gRMgJshqUEdqZVeolOsQX6FW7LNV2AtvKHHGm3LtssaR/zHuZ36G
+++ONP85Zw7QHA=
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/client_certs/server.key b/examples/puma/client_certs/server.key
++index ea6f467..8b890fd 100644
++--- a/examples/puma/client_certs/server.key
+++++ b/examples/puma/client_certs/server.key
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/client_certs/server.p12 b/examples/puma/client_certs/server.p12
++index 7f7e8ff..12cd7db 100644
++--- a/examples/puma/client_certs/server.p12
+++++ b/examples/puma/client_certs/server.p12
++@@ -1,15 +1,14 @@
++-0\82\rL\ 2\ 1\ 30\82\r\ 2\ 6 *\86H\86÷\r\ 1\a\ 1 \82\fó\ 4\82\fï0\82\fë0\82\aB\ 6 *\86H\86÷\r\ 1\a\ 6 \82\a30\82\a/\ 2\ 1
++-¤\960dÆÂ\94\ 5d+\17¹b{\17#\1cÐ\89\9b¯¢\1dÊ!|Þö¸\98Â\1fLØ\9c#\ 5Äm <¨O¢%4/®*ò\1a¢\7f\9eÍ7óélá·Öß\8c,z\923\96 »Â6s+,\83Ù\8e/x´gòéèAÓ\10R\15Øøö\98 \8bã<\ 3\17\8d*bsÄ\80\86z·\vf{ ×7=\9a\ 5\10p\a%)\91ÏH\8a®ð\9daht\ 6Dñ\87\81;F\85ÖôÿaÐÄ«³²°\1f÷ìD\8e ú6g[o\16\9d\91£§/!R\9b÷Í4¾\887V¢ú^¿N\ 2Y\9d \9aÿ¥ë½\15Ö¦ãÏn¿b¾%«ô`ô7?àëA
++-céÆu>\eí¥\ 3\13`°½#\1f`Ú\99bý~*NÑEÄ~Y£f§ÿpî¼&ÕÍ+Ò\bTC§¿Z9Í\ 3\10\84)RÊZ\98ï\92\em\ fS2D\ fJ ¡hVÁìúÕØ6.¬øÚ¸fåZ\19\11¹¯ÌBÉ\18½üì\103\9d\86¯Qo3õ\85Ñ\86\ e\16\93¹JÞ\9dHû\94o\117Ü\97ã\f´TVl,l\92þ¯êÚ
++-?\ e\92F+yú¦\bä^Á\ f\r`ºì\1a\93áúH]\89lÍ\18\89®Ú®LŶ|"\13_¥\98\ 2K£ã\8d
++-é8\1c7\8fEÔ ÃÑÞ\94¤&\ f¸ÿ\9eF\9c\ 5Iô\82¹\93Î\ f(0SÅ\1e\10,cî¶²\9c\17 ò®\vûRF¿§¾úEP&\9fñÙ\18\<*6\99ù\ e\8cær-¤\91ëèJ\v\8cv\9bÒ\1clþ\92AJm}Ѳ\84ðAíO¢ÔØa'Ïæ{\eL©\17\ 3bî\96\13<\9aÍ\94\95\9fºHÇÖ\81òLܹ:Û®*)Y\92'×ã¿»\8eQtQÉ\15µ\13\95¯z¼o\1e\12áô\90 ÿ\1cörð\7f8\9bö\15\8ek\16\17\ 1\a\1e}\82\81Ñ\1dò\eé\9dÂÒN<çõOr\8fiáÖÏ3ÙV\1a\1e&CBMà\90ò¿3\a\1féÚ¦\99Þ°0qdu&ïU&d@@ènÒ|Ð\86¬\ f°M êVs\8eSµD\7fkBrªk[PÇ)ÕÝ\bÍ\ 3!n\rCýH4¶«/\fñ\88î\1cpÃÓÕyv\15O\8dßÝU\81Kí-Xý\94t'\13;¦\ 2´y(Ò\95\90$uË`__²u7QY³}\86a\83ÔÚÂÁYU²\f\10åï\9e¡Ê\adºËÐ\1c¹\90{\8cÐW?\81ܽZrÁg\87\90d¯×\80G\14ï¦U»]\1eyLA\94BxøÜûSß\87Zà\98Gw1{×\17¿sVsq
++-¡\18\ 5\87Ã¥±¿\9fé!\99
++-\99\v+\1fN²\995÷rXô¶\88è´\1f\92\83õR\150%R÷ù6]Ù!®\99¹Æ\10\8dª²\1f.(ÁëªÇT\96U\85\92Ú\88öV¢çú´ì@\9bIq±Y(í½\85á\17y%è³bÓ5Sá\98Ü\ e©ñb\83\1f/sø\16¥\ e\ 4\ 5j\r\ 1]j®oÈÌ´æ¡pò¼\9b#\e\94\9c\ 4±8àw²\94ø\97e \90S!K¦\18©y:°óÀb6Òø½#GÈÓ*½3\86\8eÉwnÿôO~q_\1e\91'Ñç
++-\ 1\ 2 \82\ 510\82\ 5-0W\ 6 *\86H\86÷\r\ 1\ 5\r0J0)\ 6 *\86H\86÷\r\ 1\ 5\f0\1c\ 4\b\92\aù÷"~n)\ 2\ 2\b
++-Ùº½íw¸\1e=,\ 5\89¦/\19$ûò\93OUH\b\1c&7?Ñʦ%ÉM\15Æ{þBã\96?\8bF½\ÇlZï\9a\9c0\86\aÉ\e\90ÕW\ ehÖ\/OùyÿW\7f°È$ÄÝ]ÏÀÄ../\7fÅÙ{T±\aêÛø \84Où(ÒºT\97gyÖå\10Ê\ eOÍáw¿}úÎr#:8U\1c\12-ç6\1fÓx&9>\93\bãÁ æÑ>\r\9aÙwd(ÛÚ¤ÔÿkT
++-S\8e;\9c4\8cê\18Bì\91Ñ÷ã²\85Ú*\18\ 4÷>\1e§|×ûê\ 5\9b\ 2´´OP¨\88óì«ÍR°¬v\9eõä\9b\8e¯fV\ 6>Ùl\10C\842\ 4¦ \89U\9c<\84Y·Ì\8d\99\13ð\ 4À ÄÎxcÌά\f\92Ò
++-\1d÷ÛÖ¯\8b\ 2\8cÑ'7CvyU¤É\ eÊËÞ'Ò\10Å1AP\97tRï§e2\81*â÷\1e7âcõ~ç7\vÏ
++-[¬Î:\8dïè=Ç´Vº\83X©\8dËLK$\7f\94õÏ*R\b\93¦\9b\90ú\ f
++-\aª½\7fÐ{Äç\95\9aÿ\85\86¹=·cø¿:\90|ï\18fÉ&\1a¨xiV,£eËV\91Û:dÖ\14(\91|\9aôüv¶É*pú?Ä\9aÀËÍ= Ýa*\13èË"á\97(\96\1fÿ\8e0\8e÷çÿÄnVå\a\93 Ä\94\ 2\rú£B\19ÀÈH\ 6uzï\8c(]\ 5¶6Îrêy#äOÙÚ?aÂ*\1f\eÃ^\8a(
++-\9e\ 2\9az½\8c\1al g¦½\88\bʦ¢
++-Q×pn_E\93\8aêy3ì\9bÛú½\18õjl
++\ No newline at end of file
+++0\82\r\\ 2\ 1\ 30\82\r\12\ 6 *\86H\86÷\r\ 1\a\ 1 \82\r\ 3\ 4\82\fÿ0\82\fû0\82\aJ\ 6 *\86H\86÷\r\ 1\a\ 6 \82\a;0\82\a7\ 2\ 1
+++\ 3"¨ýs\136CТ\84þ\89MÆ\ 4\10éV\15O1\9d\15\14%eú ¨;\8e\9f.\ 1-5Frþ-8<\8e!è«Ó\8fÄ´çÁ)\7f\fyî\96g*B\8bUÄ4\88\ 1¼À\82)û¼\82CzBM×ar¡âÜ\ eX\e´¾óú\rq\ 3Ó\8bÂrL \ 4â\92w\v¯ª\91\16Ø\98n\13׸5>u¦\9e;_2Ñb¿ð@¥Ñɺ\eûztç¿Þ2foË vée<}7?\16âÎé¼ÑCcL\8bIÇ/\1c\8aî\81\±¢²\8f\9a~ðýòeÍA uâ\f÷¡ $tñª\1d\99·Æ¬Q\ 6dQ·\ 3\1c²J\9d\ e #\eÒVÓ5Ä}\17a9\91²^\ 4J¾~ ý#ä:\8b&cþÅÆ¶\9d²,\95\87
+++îÂN á\81EÊ\93j\18=\9d\1f»âÊÅ4Ã\ 5
+++W\e\ 2\82¦ï\16C³Úî\1aþ%ú\15\1cå\97\8cBàÉáÍ?\ 4}\14<\83£s2oaz ·\ 6»\96ï\1dÏ\9dÔ LÈѸ0¸\9bJ½\fg\ 1\ e\9aÊ\11G\îûûE¾ëÙmÝ9fðÎ\89\86C÷ùË\95jqÉ^Ú) rºý\96\80<v£¯"Z6\993AÙ\12B\82\8b\11\81¯µ\8d¬\9a¬]\ eé\16.7 ñ(½kk½Ï¤\9b\1aÖ?°k\1fQt¹QÒlæ/jþ0eÍ-Ö\11®_\96f>Xc\93f®É\84\ eÝ3I\7fÖz;)\ 6Ôß§c°Ôo_\9d¼>L·\8aîÌL·\83\9eôб\ 1\1f\92\17Ô\\1d\ex\8a\9b. \18\1e5Íf\15?\1eZ#¤p\8c«I®?³vY\1f~_í*Jú\82mB@Í,õw\9dâûO\ 1\83©ÿ#¤²&T\1f¶<[\f\f9\v\19âÂÓS,øí̲a"4\82ê\10}b®\950\12\ 4g\9d\84\97\926\8c\rk\90"®nCÝ\a\128@øÒo\8b\1f\ f|\14H·\e[o¿Þµ\19&\93qcÇ\9bo\1az«\95C§ª\8eÃ3´kÀf\19\96Û ÕÐ\16q\vÿ½\10µûäT@Ú5
+++RË-W¡×í\1e·/Û8;~FÓ½Yx£I gÉ\19\12$¶P"K+5s©&¢Ý'>ûì#Ñ\ f¾H\17j\96\ 6z\88ÁLåeó\12\10,0aÿ\8aÓ\11\8c\16ÿ\ eè"{\82hÄÃÂ\8ccìw\92®;M(\87\19\v\1e7\8eÿä\1a¶¾}¼HFÄ×y~\1c0\97¯-Ôæ@fw\84~È
+++{\86^\85^y§_Å'\ l×G\11²µaÿ\9dR\8cÿ
+++\94\81\1d¥KhB¬`,\9e<0<µÎÑCï\95\80t§O\94©Ym
+++,pP&d9\8c¹?\aÙÒ»\ 4\17N\95\ñ³¦t$Úà
+++\ 1\ 2 \82\ 590\82\ 550_\ 6 *\86H\86÷\r\ 1\ 5\r0R01\ 6 *\86H\86÷\r\ 1\ 5\f0$\ 4\10`\r\1aÇu\1fåß\98ú·\9aeð\81\\ 2\ 2\b
+++l\1e~uï\9bVA\99x\18yoÜìï\8fW\¶Ì¡±Þ\13®õî¸D
+++ÕÜH\ 6 >\81>\81©{.\88\1c\13\15q\ 1b\94b3'ÊôÓ+&\12Ôú
+++\99§\94M Ök\82ñþv\81J\1f\9b\94fâ¡m\f\12îDR \9aS\1e±Îª±\bѤ\80È\8b¯¯«nÅ¥Vüذ+\1f\11\8cir²ÞDÞWFÖc*<U×\9cÆ/ý\13\1e\93:l=gÀßP°\18½[<ÿ\95
+++^I!\83g,w\19G¬©T\9aU\ 1\83áL¥8Òס
+++\9e\1coO+>ðýÌÉ\ 3÷¬þ\8bÙ\89ª9\99Q\14C_\1f½ÙyÊ\ 3\8f.I\9fcªµÈqO\b\99 Þ1B0\e\ 6 *\86H\86÷\r\ 1 \141\ e\1e\f
++\ No newline at end of file
++diff --git a/examples/puma/client_certs/unknown_ca.crt b/examples/puma/client_certs/unknown_ca.crt
++index 5c50d8f..4b07a87 100644
++--- a/examples/puma/client_certs/unknown_ca.crt
+++++ b/examples/puma/client_certs/unknown_ca.crt
++@@ -1,19 +1,19 @@
++ -----BEGIN CERTIFICATE-----
++ MIIDEDCCAfigAwIBAgIBETANBgkqhkiG9w0BAQsFADA5MRMwEQYKCZImiZPyLGQB
++-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI0
++-MDgwMTAwMDAwMFoXDTI4MDgwMTAwMDAwMFowOTETMBEGCgmSJomT8ixkARkWA25l
+++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI1
+++MDcwMTAwMDAwMFoXDTM2MDcwMTAwMDAwMFowOTETMBEGCgmSJomT8ixkARkWA25l
++ dDEUMBIGCgmSJomT8ixkARkWBHB1bWExDDAKBgNVBAMMA0NBVTCCASIwDQYJKoZI
++-hvcNAQEBBQADggEPADCCAQoCggEBAKh5VmSGmeN97MEPb9Td++UYcWHhYVj+yxi9
++-leDzcLpAgqtd+z0yBYCS2ULRQqomf8uIYODEuWxaepVNjjRN5Y22Hzlodnp+kJ3G
++-CXQva6GtwxbTIxyZ21Yn8APPgb7OTHZ/js1EhZpJUSjum19PnSS8rPfQRkr6m2eg
++-HKDkzV3jrJXTpNdvUhTi2NVVo0vNzLYV5Kj45vqirlTEesLxdxHtDNx8vanYHaJY
++-JY7OryIJhPsxKYplSbQ7ydJuHtpx5SiFjRckw9ddhRzGjYsAQFE2eVBPjhiYJnDL
++-tmEnb2e+tgRNiru9ttffpfzN4EG3/d9qnyZV9nua03yn+tqe0sECAwEAAaMjMCEw
+++hvcNAQEBBQADggEPADCCAQoCggEBAO17pO0lTeGMVgMplzEn/4IdsVQXt45z1MgS
+++3irQEGPfIKkZHnVdPElJnag3pTg5bmFQ/yPOEdbP04Ao8/BvCgvUO6jqkTR9aic2
+++PqnlXbTPeHckjskihhcbcr+ZKO23dBP42U40E+6TakZponUsZs/YlKE4pKUfjsYq
+++btVyDxe0SQWxSp85XUNn6Sd2Wm274/wQtjjDdMeMtYANqGRJStKG6qZAe9bYwOlw
+++UFddMu2osIV8i5CQcmJnkVW0MagUrpvGZSni6HO9i3h7Y63r+d76NlR+anFPz4+l
+++kZKBugfWGI6lC1rSQ7q85ucEJeqSJN77dHGRyNITy2+PrYGcNAECAwEAAaMjMCEw
++ DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQAD
++-ggEBAAp+1M6+Z8T/CA+C0288CRF27tXKn5Kd5Iffrx1Dg7I5HrFGJl87tkzLRoZi
++-MKj+FfpF7fJ/QSyQt+UZa53R2vmJig6JUEQwfzXc5Bp+fusJgmkGPZQ1A5tnbwCZ
++-TTuyy8Sy9reCWdJkmdDWyK3ah55mjiuOwZ+woA3RAoC9vCRtIT4w08NqrISBYp2i
++-NeQCv3gooiQrbJuCUuo56Qm73juJ4T7GXElRMF+SupmhC2SHwFVGAbu0/g6Yc+ye
++-i6/T36t/GTT0fG3kKfGfFMq3NCvY3WI3vcPzYtK9fN8QYVy3LjdnsjcTV2L3SaxG
++-3fYURa9nn7mrxlMBX88UWLUIPlc=
+++ggEBAOgqzVzIQwZAtnhBhZ52J49MQzw7e0jlUoI0nSBNcT1QckxOGNE2jGoh9gHr
+++Ti1VlesIEO7v5IXAyDuL66sOWPWzmPdU2uKDoWmUE5ry02dJu4W2OoueTCQYilAg
+++vmaPXgH6GySOsazj1LK2RNkAzbj0Kw49bwa4vOxEnrkPCLlZBonEAmMnhOh0t3iP
+++TUk2wMTnSJrJ002xDArUQol+sjVXGktYWT/bReERDBnGA6opFqtMVap48kGqgCOV
+++6lHEEOg+F86ubhM0wLfdpFp4j4q7aAFQTtapihnLlFXMKiz9imjpuAWllSKh0owP
+++ZDowdJZgG1trNkK0oMgfICIYKlk=
++ -----END CERTIFICATE-----
++diff --git a/examples/puma/client_certs/unknown_ca.key b/examples/puma/client_certs/unknown_ca.key
++index 830cd91..06e0f03 100644
++--- a/examples/puma/client_certs/unknown_ca.key
+++++ b/examples/puma/client_certs/unknown_ca.key
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/client_certs/unknown_ca_store.p12 b/examples/puma/client_certs/unknown_ca_store.p12
++index c74c940..04afb8b 100644
++--- a/examples/puma/client_certs/unknown_ca_store.p12
+++++ b/examples/puma/client_certs/unknown_ca_store.p12
++@@ -1,10 +1,16 @@
++ 0\82
++-\1c\ 2\ 1\ 30\82 Ò\ 6 *\86H\86÷\r\ 1\a\ 1 \82 Ã\ 4\82 ¿0\82 »0\82\ 4\12\ 6 *\86H\86÷\r\ 1\a\ 6 \82\ 4\ 30\82\ 3ÿ\ 2\ 1
++-\87\ 5\7f_®é[\fÒG\ 3m\14itö]æ9$º
++-\84ÊÚ)\90f\82\18\99DÏÀ\va\912t /«P\98\8f1\94KW2Ç\ 1´ôC ×\ 1?
++-ñ\1a
++-\ 1\ 2 \82\ 510\82\ 5-0W\ 6 *\86H\86÷\r\ 1\ 5\r0J0)\ 6 *\86H\86÷\r\ 1\ 5\f0\1c\ 4\b\12åA×\vú¾\ 1\ 2\ 2\b
++-`\ 4¶ÿô\ fX0-\1cÒêøß\ 6á\83eÊÿÞ\15«f\97ÀGf\86³8P´1ª\9e]Û ]§A/ü\8b;VÁÖ\9b(¹]Üm\9f¯úÂN0.í\94\19çÒ¥\ 3)dm\ 6FÍiÙ\92\10*" S
++-I\89¸y¾^þ%+\15-}áªwOç0c#\r`5.*µ \85íf©rC¸äy\8b0sð*3\87¯\13\93#½¨ÔI\ e-\!Q}«®zû9,ÒpA\95w\eÈ\7fÖ*\MÎ\17ÃO.ذ\83Â\97±\86ÎÀ|üèáÆ®\81\14Sk\r>\8b²\86\19\94¾\10Ç\88vÄõç\8eú6NÁó\8f\17R\82oO¬#¡ç3Z\88)ë{2¹¬`\ 2¢^Æ¢£¹Õ\93KJG[ *7è \b»\r³{`\86G>fd\9c\154\8bÕ+)Ô\ 4Á§\8d1z\9d $ûVÀmÞ\85¤\92ׯ\ 3}Âòƾ1r\99n¦s Ù[H¢¶éÑ5¢Ü+6ð!,¹\16ãý\1380-/ã¨\v¥Q~&ß\ 6ã5\15þÕäÍÕ-Ç®öÐ\ 3u#nzn.mÚ±lÐXÖqÈ\ 6ÎÀÕÜg1Þ°»JÇ\81\12²J
++-ãjöd\80ìVfÿ\17Àr\91ªÐX´\82`ïìâôÝ\16É{\992âìsï&\8e\8e
++-à\95\17ôÀö\80q/õë\fÃU\82_0A010\r\ 6 `\86H\ 1e\ 3\ 4\ 2\ 1\ 5
++\ No newline at end of file
+++,\ 2\ 1\ 30\82 â\ 6 *\86H\86÷\r\ 1\a\ 1 \82 Ó\ 4\82 Ï0\82 Ë0\82\ 4\1a\ 6 *\86H\86÷\r\ 1\a\ 6 \82\ 4\v0\82\ 4\a\ 2\ 1
+++ãÒA\ 2\ 2\b
+++!@_
+++òÂ)\af\ 1Z\82\9a\a$+\98\8e\9dö&\8cÂv³\e¿`¦Í\93Ævxå ݪ¦¿°Öu\9e×S\8f®\9d-\8c~7^
+++)\10\94:eÞÎíA\9c\8eØ \80\9a{m\18bè×»,\8av+÷k\91uÚùÂBQ\a\1aBÕïg£\9c)¢ÝËñ6\87×\1c\a&fI¯È6\ 21\ f৤\88¸\89²Dè-.ån\15\10\ 4²\v\ 6Y"-8\vÎÈç\1eæ7á1»\17\ 3!\ eÓV\ 3\91ùú\1d
+++\14¤f\bÀeåé\10%¸\1f\8e{d)ñã>º_×.xqÁ\f\1a£þ´Vz\17¬É\97zw9/Õ\ 2|\94±
+++\95\84\13Ù\86ß¡\80$ç\ 6QfgÏ¢-\1aNG,
+++Ë\ 5n(\1d¥k~\81n\f\9bdEívkTõ\9e2æÆfìEìÈÖP"lm*\ 5\90× gªH¶?\7fÑä/#\bjLá\88¯Q:þ §Ø\9a}º ½e\ 4aÖ:f\18\18Vô<\87f\10\13côÀ¤³ÕÌ'2\ 1x\ 4\95Ý\91Jo`\90é6R1÷\9eÔ½ðà\8cÈieú6á\92LVe&ß<ù\18\vXì\83\12\13\9e\11¥z\7f®ÆïÖâÞ\16¢/½¥¨ÊÒcõ[å}W+$¼¥àÎ]2Mh¯ >ip1TÄ\9e°\ 2\9eA¿ì\ eèÿ÷HY\16¶NîYá\8dB}ÆÃj©æ×ѬÎ\12ì\8dYÝ\11\8b\11U¡\82`\vì\8eh\8f*_\1e\18\e»â\88V\ e¤ 7ôÝ\ e|÷&\96kÌ\90+µ?÷¢¸kjü;\11ª>z\ 2Óæ\1dQ¬Tóz\9dà7\10¨j\9aK\92\7fÞ0\rÛUç#\16Ä\94\83ëáëàõ\19lEx\16Ñd\83h{\12
+++º\8b\9dØÝ÷Ó\1a\ f´OLÃ\ e\ euaÖ¾µþ\82zh\13\ e\9e\95G®åâ®3\ 5øgI\ 2[Q\r\8dî¯\99¯\ ecî \89ÏÕAç¾v\8a\1cÙíM\1a)\1d\97Á\1fó\12\11qÍá½b°~úÓ\86\ 2ÌÍt\ e\9c¨\1aCã6\9c2Ûÿ½\81?!\ 3¤\15¥sö;¬\ 6Àêܶ\ebÓ0\82\ 5©\ 6 *\86H\86÷\r\ 1\a\ 1 \82\ 5\9a\ 4\82\ 5\960\82\ 5\920\82\ 5\8e\ 6\v*\86H\86÷\r\ 1\f
+++\ 1\ 2 \82\ 590\82\ 550_\ 6 *\86H\86÷\r\ 1\ 5\r0R01\ 6 *\86H\86÷\r\ 1\ 5\f0$\ 4\10Í4gÞsrPÆ93
+++\9a\1d\ e\94CÛ§ï5J\ 3\13'¥eÈ1M$àèzheës\1a6ÜP\1dq \ fo\92<H)¸\819<)\18È\8bóK\ e\88
+++\1cÕeJ\1ctÂÀ\ e]G¹²\1fåÒoú^\9f\9aL¯Y\99üc\99Èÿ\81®a\7f\9aZG\1f:Õæ\8eáý
+++rä\85vÏø\1eû\ f éf¼\al\ 5¸\13\ f®¹\90;%Ôæ\\9afÓ1÷8õ©è¯²Æmw·\9cª¿~É(üÒ\9fnâ\1f¢Áç¶Å:\87dùh«qÀ\9cÜåx¡Ã½Vå\e\ e\88\87Ñ[\8akî\ 6`e|\88?1\96â\9b÷¢(\96î±®p\82¿®¬\12\9cÅ\94²Þ\ eN7ô\84j\94F\93\19qe\98aÀ\ f¸c²tÃe$ù4%øu\ 5.%èNmPU+KK0n¡%Y&7>\8e{\94o÷h´}\Ê¥U!HêùPì\82\e\ f5ë\13ý)\84P\93¿³øN±\91\aïêýQ~\1f\f\96\9a\1fáÊ\ 1ÆkÑ\7fÃ\1ca\9f,NÛ\86\82öc\87\93ÌÇþãÑ*8'ÒÆòNÓaÑË'lÎ4Ã\98HÂq\1a}=
+++*®dû{ ÂIç¼\95\16\9cåä0\aDu\9b5õ\1e\vpv\99\92ÓßXÇ"л?\9b-Ô¬"akÁ¶\15_\8eÄ=xÕ Ày³>w=ã°\82ä\ 6\ eG¢§õ\ 1Éhx\8b0]\11\95ÉsAn\95Õ\8cM\1ayC?H± D®\8f5Nºyr¬xkè\ 6Ãæ\91:«dGáe\94Åþ¤\160{{>\ 6\f§_m¦ØàR\b-;³p9¼54\ 3h°\97ÐÃ\ 5u\93ËP\ 40§c\ fÒÁ\94æ\ f7L·nºúLjv÷4Úõz\16$Cýt?/7\b>\91W¬¤\8fçf¨UÔz÷N¯\92\9f\ 2çÐÄêKø0ïpÞkÆ¢)|)õ\82
+++8Û¹\100A010\r\ 6 `\86H\ 1e\ 3\ 4\ 2\ 1\ 5
++\ No newline at end of file
++diff --git a/examples/puma/encrypted_puma_keypair.pem b/examples/puma/encrypted_puma_keypair.pem
++index d876594..25becf1 100644
++--- a/examples/puma/encrypted_puma_keypair.pem
+++++ b/examples/puma/encrypted_puma_keypair.pem
++@@ -1,30 +1,30 @@
++ -----BEGIN ENCRYPTED PRIVATE KEY-----
++-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
++ -----END ENCRYPTED PRIVATE KEY-----
++diff --git a/examples/puma/keystore.jks b/examples/puma/keystore.jks
++index e36f314..ef92af2 100644
++--- a/examples/puma/keystore.jks
+++++ b/examples/puma/keystore.jks
++@@ -1,16 +1,8 @@
++-þíþí
++-+\ 6\ 1\ 4\ 1*\ 2\11\ 1\ 1\ 5
++-E\11,\82?hcS\8fÔ\1cÒ±]yB\r\ 1W\8aG\r\1eäcİé;\87-\ fu\92:è\1a6\ 3\7f"\17#®Ò\11ç\89¤\82æ\ 4Ø<\ 2\82¼bô\ 5hbG\9f\8dd{fç\84æ$Ì]zÃ|å\10H\97\96\12\8dÑ«\aÍØt\97´¥ eã\9d\15\10'=?Õ:¼£6µJ[\8a\80»\16!ðSù³R2\18êßp¡\ eÇ\1e±Ò²\85\ fög\90ê\ 1íE\9b´iìzv\16\ fv\1c ÷¢:P\1eAI#\9f\96Ú\98Ë\84\16U'£\ 6\7f8\9bç¶\1dÓ¡l\8aÈ*&ln@\ 6Ã\ 6<Z\P!ÈIjµ\1e\94h4D\85´¦ÊAþÚ\r ^+
++-5ãÄøîº\e3×ÃÌ]Y@=¦¦\9fìÜæÇ%Ȥ1\10c\8c3j®ð\89˨b1ü\84^\e\96\1fåL\96=eª\97\1d»"À©fðµr\9aí\86%:2\8bô-Q=mß&A.\ 2åÖú\1dc:)X\95e~èÜýøs%oÉÏ:ZuåJ¢.4ï&\9c×P
++-¹É\1eàÞE²ÏqûFS\9d·\1a\8ft\92Î\85AÜËtrࣣÀ oa°G\91\17\97@\a¾x®¸ÄͰD5\16d\9b=\8e÷GFIwi\ 4ã¤A\87ÀG\14ÎI²ö=]'ö¶<Ë_\rñ)IKÀ\90\ 2u\ 1eÔvb6tÕ»Õ/\88\80eUZWÔYà\11\12\9e,\91çíæÁþ1ú\7f¸|)\9a³ûR\ 6Í\8eÞ\8e1Oºl\8bÈî\v\8eÚ\94ä\9dJù$]¾gê]9\ 1\89Ï\ek8Í PYº'/'ó\8eøi\9a¤:G\93û\84Øg)\rÃe¸
++-ßñU\8f\88ª\96N\1eñ\vU\r>Ôî¡Æ\1eÿò«\ 3\1eÜ"|^ èÏCmn\ 1´M$<QÕ:TùØ6\9ec\9b<¬\18\ 4Îe\9e\14\e
++-ÌÆ\14¾Wÿh±Ç6\1a\ 2¦¦Æ\97Þòý\93\15\f\aÚA\12rû\18ê\841¬t
++-\b@
++-\v
++-K\9e¢\83äVµ6ã³ì²æ\1d Û\8d÷SY\#õ$LuÌõ°¡pî»÷\99\1dVñÜûÉ0\90x\80\ 4Ú×Ýå\v¡\86=Oë³(ÓiÁ1EW=º4y\101}eC\83Q\ 1K\8b¨ßüwnoZ9\17l/81!»U<\8f\1c£\16\87£}dobuéC9(Ñ\9dëZQ\94\80|þËÙO\8fy\ 6¤b\80»\ 5ôå\8d\8dÐË;Þ\v2²õ¨ª=Î]6Å\8dtµV\12®¶þ¤\13<ÒʽjÏ\86i\91îÞ¨Mð\ 1þ_¿µ|\87?ý=*\86fú)\12á_\\1a%O¬\ 6\12´uºá¸w\87\81TÖ\9cÚ³\14\ e=#1±qúW@a\9fLÿ\80\15j\92Í\18½ï7ôA£õïõ\ 1e*X!\8bo\ eÜÍ\ 2¶y_®³Pu\89èÍAîéÀk@^\1f\87\10]À\11EܱjS=J\9f\8fmg[\9c+Ï\15Ïý²Äé5}\ 4Ϊ\1eõ`IL\82\87õE\9eb¸ø\10\9a¸ÿ6
++-\f\ 5local1\r0\v\ 6\ 3U\ 4\v\f\ 4aero1\v0 \ 6\ 3U\ 4\ 3\f\ 2CA0\1e\17\r240801000000Z\17\r280801000000Z0H1\v0 \ 6\ 3U\ 4\ 6\13\ 2US1\ e0\f\ 6\ 3U\ 4
+++þíþí
++++\ 6\ 1\ 4\ 1*\ 2\11\ 1\ 1\ 4\82\ 4ë&ä¨DÅ\8c¾"\91ìQÉ}Û\17ú\81ÊÅsâ\98ßíbù¨íÅ©³l\1aÂ\9d¥I\1dÖW2ó'ó\10²$\957\a÷pé\8fKu¤\1d9Iiz¥Íø\12\1d ¼?»Ñû\f\99µmdö\9d8{®o°mj¬^1\\81ìö§Zg»±Ñ×g\ 5\aK\11yþ=êH®N\85®S+à3\8cëö\89*QÛÚMÝ¡ê\1ao±ËyÊnüâã\91¨U\96\16°YÐ3EæËÜ\16½`¯¹ÝÞ\8c\8c\ fÒcµì\15\15N¢Y\8a-ß\1fwüNÔÌ\80¼ö~¤\16\86~äÁ6ï\eì2¬\ f¿JѺn½¢\8b\84&º\9eJØ\81\a-r\1aÌ6+ßæ\ 6Ы\8e\94ñÓ\11\82ÊLtg\1eóëíçÄ\87 atÞ\ 4\8aL\84ü\88nz\1foýª\97ú§ö>F2RæµEÀkEî?DK]Ó!$aO/xÔ'½L¨æ2\10\ 6Û[r\1eh\f¨\9cG\9eð3ò
+++VP\r£\88ÎùWÅ×1\87@\91æw\94F\f\13\f·ÇÞ\7f\11?u¡ã\ 6f;ÀÕD«b!ç\ f($éáÄÝLà\1fAP7)Ïó~$7+ļÑ\8dgÄ!\¿\93¤mí\81~\9eî1\ 1\9dàæ\1aÏk\90\12ø®¤:$o\1dõ\83½\97§u1ÌïH£x³\85\17\f\eÚ[¡= \8fHwÈeÈÈNel:nº\99G¼\91¨·\ 1\9dk\97,\87üAK\86\17y{Ü\1c Ïܨ
+++1¹\f y\9d¹\82T6(yç £4zÛT»\1d\14rθ\15\97N
+++\f\ 5local1\r0\v\ 6\ 3U\ 4\v\f\ 4aero1\v0 \ 6\ 3U\ 4\ 3\f\ 2CA0\1e\17\r250701000000Z\17\r360701000000Z0H1\v0 \ 6\ 3U\ 4\ 6\13\ 2US1\ e0\f\ 6\ 3U\ 4
++ \f\ 5local1\r0\v\ 6\ 3U\ 4\v\f\ 4aero1\v0 \ 6\ 3U\ 4\v\f\ 2CA1\r0\v\ 6\ 3U\ 4\ 3\f\ 4puma0\82\ 1"0\r\ 6 *\86H\86÷\r\ 1\ 1\ 1\ 5
++-\ 2\82\ 1\ 1
++-\ 6\b+\ 6\ 1\ 5\ 5\a\ 3\ 10\r\ 6 *\86H\86÷\r\ 1\ 1\v\ 5
++-Äz,GS×e\90¶ßé\86?ZgÉ\9d0\ 5\95\83ï\11Âw\8da®NhýÉV\14[úîH\11´h&\1d\8dÔà¼àx]KT-\1a\93þB¾+\9d½2f(Åå\ f\80ºÏ\1a{ס+ãé>MKË1ôî®Ø\12L¶\a\82O\16Æ\fÓ$VÌH\17\ f¡2!²\91\88$8\99u\\93\8b²\e\ 2¥£à\e!oa\89²\v\9d\9cè2*OE\87\19\1c\ 3;Ý\83ÜV\1dÙFád\15\80\ 5¦ÎkS>¥\1346¢S\8bÜ!ª\97bè4þn_
++-[\95`¨\88ð ÃÀ
++\ No newline at end of file
+++\ 2\82\ 1\ 1
+++\ 6\b+\ 6\ 1\ 5\ 5\a\ 3\ 10\r\ 6 *\86H\86÷\r\ 1\ 1\v\ 5
++\ No newline at end of file
++diff --git a/examples/puma/puma_keypair.pem b/examples/puma/puma_keypair.pem
++index 1aded78..f1c333e 100644
++--- a/examples/puma/puma_keypair.pem
+++++ b/examples/puma/puma_keypair.pem
++@@ -1,27 +1,27 @@
++ -----BEGIN RSA PRIVATE KEY-----
++-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
++ -----END RSA PRIVATE KEY-----
++diff --git a/examples/puma/server.p12 b/examples/puma/server.p12
++index d928a19..49f76f8 100644
++--- a/examples/puma/server.p12
+++++ b/examples/puma/server.p12
++@@ -1,13 +1,15 @@
++ 0\82
++-\88\ 2\ 1\ 30\82
++->\ 6 *\86H\86÷\r\ 1\a\ 1 \82
++-/\ 4\82
++-+0\82
++-'0\82\ 4\82\ 6 *\86H\86÷\r\ 1\a\ 6 \82\ 4s0\82\ 4o\ 2\ 1
++-\86 Y0\82\ 5\9d\ 6 *\86H\86÷\r\ 1\a\ 1 \82\ 5\8e\ 4\82\ 5\8a0\82\ 5\860\82\ 5\82\ 6\v*\86H\86÷\r\ 1\f
++-\ 1\ 2 \82\ 510\82\ 5-0W\ 6 *\86H\86÷\r\ 1\ 5\r0J0)\ 6 *\86H\86÷\r\ 1\ 5\f0\1c\ 4\b\1a\8bR)?\e¼ù\ 2\ 2\b
++-\1cIj\1d,éð\98Öµ==¨æ±fñ¡Ö$/£`ÑAS¡Lm-úÕs\8a\18»¶j\ fvÍß`\80.\12ÓD{ý¨\91m=q1
++-\ 14`G|\11O4áP=&\83\9f¬
++-\89O\82®Ý·%M+ÿ7Ö\9f4ÔÊMË1èz/\a\13ÜÕ2Ö\10\82A\999\9eö\82ýâ\7f¶^Ê\93!©\89ö\89m\80\83\89wÓÞ\87\f\97ê/«>å\82TCÃk$j'âÆÙ\9fæapDV'Ç \ fB\9cè\ 2«Û¿ý\91\8d\9aÜ\ 6f\85¦)ç\9dù²\95à!o\81Cë\ 4˧ñEð;\r\ e5ß³ø±ëQË\8c]¼è\r<M
++-½XH
++-\1e\b
++\ No newline at end of file
+++\98\ 2\ 1\ 30\82
+++N\ 6 *\86H\86÷\r\ 1\a\ 1 \82
+++?\ 4\82
+++;0\82
+++70\82\ 4\8a\ 6 *\86H\86÷\r\ 1\a\ 6 \82\ 4{0\82\ 4w\ 2\ 1
+++J³±\83\ 6\ 1á\ 3\9c¦üí\ 4¯7_+3Ü*Ù\9fA¾ÜGÃÞ` \98Ê\8d\fé\96ÀÃ)\9aÊ\95{\89Q\93\18B\8d®\17Xb\ 1Ö¾¶\95ÔØì\8f \9fð\18\1a\98àÅHª"̪N~£aå]\15ìI4\r\1eg\83-ö\93-ukó<¥^àgj+\14j|\e\ 6[\ä
+++ì<qSÑ2wÏtí®RwZ\ 1r\97¡ç1Ì\ 6 µ_³3É\92j4\8b®\8a!ã\83@sóÜ\ 3\96ø\81ûÍß° Àý$\15\eÅfr\ 46 ÎÓcR\81_\bÍ\8d o8\17úf®½$<\1dû\14vg(Í §¼8±1Hîvvý\7fä Ü\12\93¹T\12\fäÃÿV\93t²¿tC¶\9c\1c\ 5KKà.'ò\1068 µæ\94\ 3°#\9eÔ|vú)Â2\11=ã\89'åI@\8cá\1eQ\108ñ\1c\9eÎZ´]\88Ì*ù\7f©\8c\16S\ 6ã\vãËV.äãõbNu}oÑ\18ZS.ü´x\8aM\81Ý#ñ\95SZ.8\eÁh¼¾é\8de"\ e\ 2n\ 5\8f~"*
+++DOá.K"Á7Kä¨|wDÃH\8e\9bõ*\8b\ f\99ó¶\ 5\1eCÓxõ\ 2*g¬\v\10ÂárÖ*eÀ\18r٥°£¹¹Ç®Öí\ f²é%$Xé\9ciOr7ú¦\8bÊâ\7fÔî¥
+++Ú<Ú|[i-äeö\q#\ 3hº7
+++\ 1\ 2 \82\ 590\82\ 550_\ 6 *\86H\86÷\r\ 1\ 5\r0R01\ 6 *\86H\86÷\r\ 1\ 5\f0$\ 4\10j¿º\7f<ÑÔw^Rä&Üz¾o\ 2\ 2\b
+++§VA\8fçg\12µÔ&b\ 5CZ\13c
+++A\8c\8atíàÎt\97T\90Â\96¿v\17\ 2S\1eĤL+\ fLSé\9bà¹G\ f¼\98z}\94Ls4\88~Ûx¯ù\89£ým\ 5%\98ã©\f\9bÔ\87O¢ö®"r\89*½ê,¸é§lþ\e%h_\ 4\9dÍ\16ãE{µ\85p\9f\19 ã]u\93\9b³tC\16\82aÁ\86ú´B%Ác\ 4ßÚeä\82Wø_*ÃXöç,n¹jg{\1esà\807² R^\1c\99Ü8°\88\fû¢O\e\80\92µ\17ï\92\e
+++ð`Þ<I¿³¦Ý\91÷q÷Ù$2c\9b¢\92¥Á\84èÔH\82£å\8cÐ\18\8b¹~WïûAbµ\9cÁ¥\e\98-C<{HR\9a:ÆþN\1cí\r\82é\95\1d\ f½E¦X'&Ò7\123/.ìD\\90©z®\97\1f\9aáåp\8d/£Ø%åÒÏfã\96H6Ò\88)»Í°\9câ\rANÂ^\9b\15|$\89âÙB\11\8e¾Í\91Qd\15È\ 1\84\11¾¡{âù\ eÉjä§dÐìÒn\85n5MÛ\ 4«æ/`\9fÂŹñ©#è\91i~ê\84\91§MÈ)ê\83ó\1dÉ\ 4´-d-Í\ 1\1a-ØRf\82CR Æf!I\18*ÇÎ\ 5ùÕ\92ò\9bM_fÖÂ¥\94\81´^üÉO¸×qs\a¨×\925ÚÐé¾g\95Í\9fe¯J\ 4 \ fèV^˵ |µÎi¬R¿\10%G\80
+++\1e\b
++\ No newline at end of file