340392005-03-16 17:55:28 +0000SSLSessionCache dbm:[...] crashes Apache2005-10-25 04:36:08 +0000111UnclassifiedApache httpd-2mod_ssl2.0.52SunSolarisRESOLVEDDUPLICATE25667P3blocker---1publicbugs0oldest_to_newest725170public2005-03-16 17:55:28 +0000Apache 1.3.33 with mod_ssl
Apache 2.0.52 --with-ssl
Symptom: The dbm file that is configured with the SSLSessionCache directive
suddenly starts to grow exponentially and finally reaches up to 900 MB.
At this state the parent process is still accepting new https/SSL requests and
forks off children for each new one. But the SSL handshake never happens, and
the children just keep hanging there, doing nothing. Finally the MAX_CLIENT
limit is reached, and the server is dead for all practical purposes.
We see this at different occasions, with all Apache versions.
Case 1: We see a load peak (~8 SSL requests per second) over a period of about 1
hour, then the load decreases. About one hour after the peak when the load
reaches about 5 requests/sec the file explodes and the server hangs.
Case 2: Same as above, but time difference is about 2 hours.
Case 3: A sudden surge of SSL requests (avg. ~0.6 requests/sec) to an otherwise
idle server causes the same effect, the SessionCache file exploding (from ~100K
during the day to finally 860 MB). Below is an example file size history, with
snapshots being taken every minute. In this case there were two ssl request
"waves", one from 22:02 to 22:06, the other one from 22:44 to ?? (server crashed
at ~22:49)
--- BEGIN HISTORY ---
22:02:38 110592
22:03:38 1451008
22:04:38 1451008
22:05:38 1451008
22:06:38 1451008
...
22:43:38 1451008
22:44:38 1451008
22:45:38 54164480
22:46:38 54164480
22:47:38 77381632
22:48:38 861713408
-- END HISTORY ---
regards /markus725471public2005-03-17 04:24:37 +0000Annotation:
There is one difference between the setups of the two versions here:
Apache 1.3.33 does BasicAuth, while Apache 2.0.52 does Client certificate
validation.
We've just finished testing against 1.3.33, and when turning off the BasicAuth,
the problem does not occur, not even under high load (500 parallel sessions).
/m727062jorton2005-03-19 20:19:08 +0000Please give the configuration for the SSL vhost.26631314539public2005-03-22 18:05:41 +0000Created attachment 14539
httpd config file (main + vhost 2.0.52)
The calls we see when the file explodes are to /some/WLSservice (see bottom of file)
I've sanitized the file some and removed config details for a second vhost on
the same box that runs on port 443. The vhost that keeps crashing (and for
which we see the described behaviour in relation to the requests) runs on port
444.816974jorton2005-10-25 12:36:08 +0000This is probably the same as 25667. Use shmcb not dbm.
*** This bug has been marked as a duplicate of 25667 ***145392005-03-22 18:05:41 +00002005-03-23 11:37:42 +0000httpd config file (main + vhost 2.0.52)
The calls we see when the file explodes are to /some/WLSservice (see bottom of file)httpd.conf_my.server.dom.vhosttext/plain6839publicIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBiYXNpYyBzZXR0aW5ncwojLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpTZXJ2ZXJOYW1lCQkJbXkuc2VydmVyLmRvbQpTZXJ2ZXJBZG1pbiAJCQltZUBzZXJ2
ZXIuZG9tClNlcnZlclNpZ25hdHVyZSAJCU9mZgpTZXJ2ZXJSb290IAkJCS9vcHQvYXBhY2hlMgpT
ZXJ2ZXJUb2tlbnMgCQkJUHJvZApMb2NrRmlsZSAJCQkvbG9ncy93ZWJsb2dzL2FwYWNoZS9teS5z
ZXJ2ZXIuZG9tL2h0dHBkLmxvY2sKUGlkRmlsZSAJCQkvbG9ncy93ZWJsb2dzL2FwYWNoZS9teS5z
ZXJ2ZXIuZG9tL2h0dHBkLnBpZApUaW1lb3V0IAkJCTEwMApLZWVwQWxpdmUgCQkJT24KS2VlcEFs
aXZlVGltZW91dCAJCTUKTWF4S2VlcEFsaXZlUmVxdWVzdHMgCQkyMDAKTWluU3BhcmVTZXJ2ZXJz
CQkJMzAKTWF4U3BhcmVTZXJ2ZXJzCQkJNTAKU3RhcnRTZXJ2ZXJzCQkJMzAKTWF4Q2xpZW50cwkJ
CTI1NgpNYXhSZXF1ZXN0c1BlckNoaWxkIAkJMTAwMDAwClVzZXIgCQkJCXdlYgpHcm91cCAJCQkJ
d3d3ClVzZUNhbm9uaWNhbE5hbWUgCQlPbgpFeHRlbmRlZFN0YXR1cwkJCU9uCgojLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQojIGxpc3RlbiBhZGRyZXNzKGVzKQojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpMaXN0ZW4gIGxvZy5pY2EubGlwLmFkcjo4MAo8SWZEZWZpbmUgU1NMPgoJTGlzdGVuICBsb2cu
aWNhLmxpcC5hZHI6NDQzCglMaXN0ZW4gIGxvZy5pY2EubGlwLmFkcjo0NDQKPC9JZkRlZmluZT4K
CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgbW9kdWxlcwojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQoKTG9hZE1vZHVsZQlhY2Nlc3NfbW9kdWxlIAkJbW9kdWxlcy9tb2RfYWNjZXNzLnNvCkxvYWRN
b2R1bGUgCWF1dGhfbW9kdWxlIAkJbW9kdWxlcy9tb2RfYXV0aC5zbwpMb2FkTW9kdWxlIAlsb2df
Y29uZmlnX21vZHVsZSAJbW9kdWxlcy9tb2RfbG9nX2NvbmZpZy5zbwpMb2FkTW9kdWxlIAloZWFk
ZXJzX21vZHVsZSAJCW1vZHVsZXMvbW9kX2hlYWRlcnMuc28KTG9hZE1vZHVsZSAJc2V0ZW52aWZf
bW9kdWxlIAltb2R1bGVzL21vZF9zZXRlbnZpZi5zbwpMb2FkTW9kdWxlIAlwcm94eV9tb2R1bGUg
CQltb2R1bGVzL21vZF9wcm94eS5zbwpMb2FkTW9kdWxlIAlwcm94eV9jb25uZWN0X21vZHVsZSAJ
bW9kdWxlcy9tb2RfcHJveHlfY29ubmVjdC5zbwpMb2FkTW9kdWxlIAlwcm94eV9odHRwX21vZHVs
ZSAJbW9kdWxlcy9tb2RfcHJveHlfaHR0cC5zbwo8SWZEZWZpbmUgU1NMPgpMb2FkTW9kdWxlIAlz
c2xfbW9kdWxlIAkJbW9kdWxlcy9tb2Rfc3NsLnNvCjwvSWZEZWZpbmU+CkxvYWRNb2R1bGUgCW1p
bWVfbW9kdWxlIAkJbW9kdWxlcy9tb2RfbWltZS5zbwpMb2FkTW9kdWxlIAluZWdvdGlhdGlvbl9t
b2R1bGUgCW1vZHVsZXMvbW9kX25lZ290aWF0aW9uLnNvCkxvYWRNb2R1bGUgCWRpcl9tb2R1bGUJ
CW1vZHVsZXMvbW9kX2Rpci5zbwpMb2FkTW9kdWxlIAlyZXdyaXRlX21vZHVsZQkJbW9kdWxlcy9t
b2RfcmV3cml0ZS5zbwpMb2FkTW9kdWxlCXN0YXR1c19tb2R1bGUJCW1vZHVsZXMvbW9kX3N0YXR1
cy5zbwpMb2FkTW9kdWxlCXdlYmxvZ2ljX21vZHVsZSAJbW9kdWxlcy9tb2Rfd2xzLjguMS4zLW15
LnNlcnZlci5kb20uc28KCkRpcmVjdG9yeUluZGV4CWluZGV4Lmh0bWwKCjxGaWxlcyB+ICJeXC5o
dCI+CglPcmRlciBhbGxvdyxkZW55CglEZW55IGZyb20gYWxsCjwvRmlsZXM+Cgo8SWZNb2R1bGUg
bW9kX21pbWUuYz4KICAgIAlUeXBlc0NvbmZpZyBjb25mL21pbWUudHlwZXMKPC9JZk1vZHVsZT4K
CkRlZmF1bHRUeXBlIHRleHQvcGxhaW4KCjxJZk1vZHVsZSBtb2RfbWltZV9tYWdpYy5jPgoJTUlN
RU1hZ2ljRmlsZSBjb25mL21hZ2ljCjwvSWZNb2R1bGU+CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQojIGxvZyBzZXR0aW5ncwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIb3N0bmFtZUxvb2t1cHMg
T2ZmCkxvZ0xldmVsIHdhcm4KTG9nRm9ybWF0ICIlaCAlbCAldSAldCBcIiVyXCIgJT5zICViIFwi
JXtSZWZlcmVyfWlcIiBcIiV7VXNlci1BZ2VudH1pXCIiIGNvbWJpbmVkCkxvZ0Zvcm1hdCAiJWgg
JWwgJXUgJXQgXCIlclwiICU+cyAlYiIgY29tbW9uCkxvZ0Zvcm1hdCAiJXtSZWZlcmVyfWkgLT4g
JVUiIHJlZmVyZXIKTG9nRm9ybWF0ICIle1VzZXItYWdlbnR9aSIgYWdlbnQKCiMtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiMgYmUgbmljZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo8SWZNb2R1bGUg
bW9kX3NldGVudmlmLmM+CiAgICBCcm93c2VyTWF0Y2ggIk1vemlsbGEvMiIgbm9rZWVwYWxpdmUK
ICAgIEJyb3dzZXJNYXRjaCAiTVNJRSA0XC4wYjI7IiBub2tlZXBhbGl2ZSBkb3duZ3JhZGUtMS4w
IGZvcmNlLXJlc3BvbnNlLTEuMAogICAgQnJvd3Nlck1hdGNoICJSZWFsUGxheWVyIDRcLjAiIGZv
cmNlLXJlc3BvbnNlLTEuMAogICAgQnJvd3Nlck1hdGNoICJKYXZhLzFcLjAiIGZvcmNlLXJlc3Bv
bnNlLTEuMAogICAgQnJvd3Nlck1hdGNoICJKREsvMVwuMCIgZm9yY2UtcmVzcG9uc2UtMS4wCjwv
SWZNb2R1bGU+CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFZpcnR1YWwgSG9zdHMKIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KCgo8SWZEZWZpbmUgU1NMPgoJQWRkVHlwZSAJCWFwcGxpY2F0aW9u
L3gteDUwOS1jYS1jZXJ0IC5jcnQKCUFkZFR5cGUgCQlhcHBsaWNhdGlvbi94LXBrY3M3LWNybCAg
ICAuY3JsCgoJU1NMUGFzc1BocmFzZURpYWxvZyAgCWV4ZWM6L29wdC9hcGFjaGUyL2Jpbi9nZW5f
cHBfbXkuc2VydmVyLmRvbS5zaAoJU1NMU2Vzc2lvbkNhY2hlICAgICAgICAgZGJtOi9sb2dzL3dl
YmxvZ3MvYXBhY2hlL215LnNlcnZlci5kb20vc3NsX3NjYWNoZQoJU1NMU2Vzc2lvbkNhY2hlVGlt
ZW91dCAgMzAwCglTU0xNdXRleCAgCQlmaWxlOi9sb2dzL3dlYmxvZ3MvYXBhY2hlL215LnNlcnZl
ci5kb20vc3NsX211dGV4CglTU0xSYW5kb21TZWVkIAkJc3RhcnR1cCAJYnVpbHRpbgoJU1NMUmFu
ZG9tU2VlZCAJCWNvbm5lY3QgCWJ1aWx0aW4KCgoJPFZpcnR1YWxIb3N0IGxvZy5pY2EubGlwLmFk
cjo0NDM+CgkJU2VydmVyTmFtZQkJbXkuc2VydmVyLmRvbQoJCVNlcnZlckFkbWluIAkJbWVAc2Vy
dmVyLmRvbQoKCQlbY29uZmlnIGRldGFpbHMgc2tpcHBlZCwgc2ltaWxhciB0byB0aG9zZSBiZWxv
d10KCgk8L1ZpcnR1YWxIb3N0PgoKCTxWaXJ0dWFsSG9zdCBsb2cuaWNhLmxpcC5hZHI6NDQ0PgoJ
CVNlcnZlck5hbWUJCW15LnNlcnZlci5kb20KCQlTZXJ2ZXJBZG1pbiAJCW1lQHNlcnZlci5kb20K
CgkJTG9nTGV2ZWwgd2FybgoKCQlFcnJvckxvZwkvbG9ncy93ZWJsb2dzL2FwYWNoZS9teS5zZXJ2
ZXIuZG9tL3NzbDQ0NC1lcnJvcl9sb2cKCQlUcmFuc2ZlckxvZwkvbG9ncy93ZWJsb2dzL2FwYWNo
ZS9teS5zZXJ2ZXIuZG9tL3NzbDQ0NC1hY2Nlc3NfbG9nCgkJQ3VzdG9tTG9nCS9sb2dzL3dlYmxv
Z3MvYXBhY2hlL215LnNlcnZlci5kb20vc3NsNDQ0LXJlZmVyZXJfbG9nCXJlZmVyZXIKCQlDdXN0
b21Mb2cJL2xvZ3Mvd2VibG9ncy9hcGFjaGUvbXkuc2VydmVyLmRvbS9zc2w0NDQtYWdlbnRfbG9n
CWFnZW50CgkJQ3VzdG9tTG9nIAkvbG9ncy93ZWJsb2dzL2FwYWNoZS9teS5zZXJ2ZXIuZG9tL3Nz
bDQ0NC1yZXF1ZXN0X2xvZyAJIiV0ICVoICV7U1NMX0NMSUVOVF9NX1ZFUlNJT059eCAle1NTTF9D
TElFTlRfTV9TRVJJQUx9eCAle1NTTF9DTElFTlRfQV9TSUd9eCAle1NTTF9QUk9UT0NPTH14ICV7
U1NMX0NJUEhFUl9VU0VLRVlTSVpFfXggJXtTU0xfQ0lQSEVSfXggXCIlclwiICViIgoKCQlSZXdy
aXRlRW5naW5lCU9uIAoJCVJld3JpdGVMb2dMZXZlbCAwCgkJUmV3cml0ZUxvZyAJL2xvZ3Mvd2Vi
bG9ncy9hcGFjaGUvbXkuc2VydmVyLmRvbS9zc2w0NDQtcmV3cml0ZS5sb2cgCgkJCgkJIyBkZWZl
YXQgVFJBQ0UgWFNTIGF0dGFja3MKCQlSZXdyaXRlTG9nTGV2ZWwgMAoJCVJld3JpdGVDb25kIAkl
e1JFUVVFU1RfTUVUSE9EfSBeVFJBQ0UgCgkJUmV3cml0ZVJ1bGUgCS4qIC0gW0ZdIAoKCQlTZXRF
bnZJZiBVc2VyLUFnZW50ICIuKk1TSUUuKiIgbm9rZWVwYWxpdmUgc3NsLXVuY2xlYW4tc2h1dGRv
d24gZG93bmdyYWRlLTEuMCBmb3JjZS1yZXNwb25zZS0xLjAKCgkJIyByZWRpcmVjdCB3ZWFrIHNz
bCBjb25uZWN0aW9ucwoJCUVycm9yRG9jdW1lbnQJNDAzCWh0dHA6Ly9hbm90aGVyLnNlcnZlci5k
b20vZXJyb3IvdW5zdXBfY2lwaGVyLmh0bWwKCQk8TG9jYXRpb24gLz4KCQkJU1NMUmVxdWlyZQkl
e1NTTF9DSVBIRVJfVVNFS0VZU0laRX0gPj0gMTI4CgkJPC9Mb2NhdGlvbj4KCgkJUmV3cml0ZVJ1
bGUJXi9oZWFydGJlYXQuaHRtbCQJLQkJCQkJW2xhc3RdCgoJCSMgcmVkaXJlY3QgZXZlcnkgcmVx
dWVzdCB3d3cgaW4gdXJsCgkJUmV3cml0ZUNvbmQJJXtIVFRQX0hPU1R9CQled3d3Lm15LnNlcnZl
ci5kb20KCQlSZXdyaXRlUnVsZSAJXi8oLiopJCAJCWh0dHBzOi8vbXkuc2VydmVyLmRvbQkJW3Jl
ZGlyZWN0LGxhc3RdCgoJCSMgRGVueWluZyBjZXJ0YWluIHBhdGhzCgkJUmV3cml0ZVJ1bGUJCV4v
V2ViR3VpKC4qKSQJCWh0dHBzOi8vbXkuc2VydmVyLmRvbQkJCVtyZWRpcmVjdCxsYXN0XQoJCVJl
d3JpdGVSdWxlCQleL2NvbnNvbGUoLiopJAkJaHR0cHM6Ly9teS5zZXJ2ZXIuZG9tCQkJW3JlZGly
ZWN0LGxhc3RdCgoJCVNTTEVuZ2luZQkJb24KCQlTU0xDaXBoZXJTdWl0ZQkJQUxMOiFBREg6IUVY
UE9SVDU2OlJDNCtSU0E6K0hJR0g6K01FRElVTTorTE9XOitTU0x2MjorRVhQOitlTlVMTAoJCVNT
TENlcnRpZmljYXRlRmlsZQkvb3B0L2FwYWNoZTIvY29uZi9zc2wuY3J0L215LnNlcnZlci5kb21f
c2VydmVyLmNydAoJCVNTTENlcnRpZmljYXRlS2V5RmlsZQkvb3B0L2FwYWNoZTIvY29uZi9zc2wu
a2V5L215LnNlcnZlci5kb21fc2VydmVyLmtleQoJCVNTTENlcnRpZmljYXRlQ2hhaW5GaWxlCS9v
cHQvYXBhY2hlMi9jb25mL3NzbC5jcnQvbXkuc2VydmVyLmRvbV9zZXJ2ZXJfcm9vdF9jYS5jcnQK
CgkJU1NMVmVyaWZ5Q2xpZW50CW9wdGlvbmFsCgkJU1NMVmVyaWZ5RGVwdGgJNQoJCVNTTENBQ2Vy
dGlmaWNhdGVGaWxlCS9vcHQvYXBhY2hlMi9jb25mL3NzbC5jcnQvbXkuc2VydmVyLmRvbV9jbGll
bnRfcm9vdF9jYS5jcnQKCgkJU1NMUHJveHlFbmdpbmUgb24KCQkKCQkjIFByb3h5IFJld3JpdGlu
ZwoJCVJld3JpdGVSdWxlCQleL3NvbWVwYXRoKC4qKSQJCWh0dHBzOi8veWV0YW5vdGhlci5zZXJ2
ZXIuZG9tL3NvbWVwYXRoJDEJW3Byb3h5LGxhc3RdCgkJCgkJUHJveHlQYXNzUmV2ZXJzZQkvc29t
ZXBhdGgJCWh0dHBzOi8veWV0YW5vdGhlci5zZXJ2ZXIuZG9tL3NvbWVwYXRoCQoKCQkjIFByb3h5
UHJlc2VydmVIb3N0IE9uCgkKCQlQcm94eVJlcXVlc3RzIE9mZgoKCQlEb2N1bWVudFJvb3QgIi9k
YXRhL3dlYi9teS5zZXJ2ZXIuZG9tIgoKCQk8TG9jYXRpb24gIi9oZWFydGJlYXQuaHRtbCI+CiAg
ICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgRm9sbG93U3ltTGlua3MKICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb3dPdmVycmlkZSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgIE9y
ZGVyIGFsbG93LGRlbnkKICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3cgZnJvbSBhbGwKICAg
ICAgICAgICAgICAgIDwvTG9jYXRpb24+CgoJCTxEaXJlY3RvcnkgcHJveHk6aHR0cHM6Ly95ZXRh
bm90aGVyLnNlcnZlci5kb20vc29tZXBhdGgqPgoJCTwvRGlyZWN0b3J5PgoJCQoJCTxMb2NhdGlv
biAvc29tZS9XTFNzZXJ2aWNlPgoJCQlTZXRIYW5kbGVyCQl3ZWJsb2dpYy1oYW5kbGVyCgkJCVdl
YkxvZ2ljSG9zdAkJc29tZS5pbnRlcm5hbC5ob3N0CgkJCVdlYkxvZ2ljUG9ydAkJc29tZS5udW1l
cmljLnZhbHVlCgkJCVNlY3VyZVByb3h5CQlPbgoJCQlUcnVzdGVkQ0FGaWxlCQkvb3B0L2FwYWNo
ZTIvY29uZi9zc2wuY3J0L215LnNlcnZlci5kb21fYmFja2VuZF9yb290X2NhLmNydAoJCQlTU0xW
ZXJpZnlDbGllbnQJCXJlcXVpcmUKCQkJUmVxdWlyZVNTTEhvc3RNYXRjaAlmYWxzZQoJCQlTU0xW
ZXJpZnlEZXB0aAkJNQoJCQlTU0xPcHRpb25zCQkrT3B0UmVuZWdvdGlhdGUgK0Zha2VCYXNpY0F1
dGggK0V4cG9ydENlcnREYXRhICtDb21wYXRFbnZWYXJzICtTdHJpY3RSZXF1aXJlCgkJCVdMUHJv
eHlTU0wJCU9uCgkJPC9Mb2NhdGlvbj4KCQkKCTwvVmlydHVhbEhvc3Q+Cgo8L0lmRGVmaW5lPgo=