[yaala] Sendmail parser, v1.1
qMax
yaala@verplant.org
Mon, 4 Jul 2005 19:45:16 +0700
------------121601543738FC92
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
some improved version.
it now can stat not only "sent" messages,
but also rejected/timeouted/etc by some reason.
--
qMax
------------121601543738FC92
Content-Type: application/octet-stream; name="Sendmail.pm"
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="Sendmail.pm"
cGFja2FnZSBZYWFsYTo6UGFyc2VyOwoKPWhlYWQxIFlhYWxhOjpQYXJzZXI6OlNlbmRtYWls
CgpQYXJzZXIgZm9yIHNlbmRtYWlsIGxvZy4KCk5vdGU6CgpFYWNoIG1lc3NhZ2UgaW4gc2Vu
ZG1haWwgbG9nIGZvcm1zIHNldmVyYWwgcmVjb3JkcyAobGluZXMpOgpvbmUgcmVjb3JkIHdp
dGggJ2Zyb209JyBmaWVsZCwgYW5kIG9uZSBvciBzZXZlcmFsIHdpdGggJ3RvPScgZmllbGQu
CgpQYXJzZXIgam9pbnMgZWFjaCAnZnJvbSctcGFydCB3aXRoICd0byctcGFydCBieSBtZXNz
YWdlIGxvZyBpZC4KSG93ZXZlciwgaWYgdGhlcmUncmUgc2V2ZXJhbCByZWNpcGllbnRzLCBy
ZXN1bHQgd2lsbCBiZSBzZXZlcmFsIHJlY29yZHMgZm9yIHRoZSBzYW1lIG1lc3NhZ2U6Cm9u
ZSBwZXIgcmVjaXBpZW50LgpXaGVuIG1lc3NhZ2UgaXMgZmlyc3QgdGltZSBjb3VudGQsIGRh
dGFmaWVsZCAndW5pcScgaXMgc2V0IHRvIDEuClRoaXMgaXMgdXNlZnVsbCB0byBjYWxjdWxh
dGUgdG90YWwgY291bnQvdHJhZmZpYyBvciB0cmFmZmljIGJ5IHR5cGUuCkJ1dCBpZiB5b3Ug
Y291bnQgdG90YWwgYnkgcmVjaXBpZW50cywgdXNpbmcgdGhpcyBrZXkgKGFzIFdIRVJFIHVu
aXE9PScxJykKd2lsbCBtYWtlIHlhYWxhIGlnbm9yZSBhbGwgcmVjaXBpZW50cyBvZiBhIG1l
c3NhZ2UsIGJ1dCB0aGUgZmlyc3QuCgpHcmFuZCB0b3RhbCAoZXh0cmEpIGlzIGNvdW50ZWQg
dW5pcXVlIGFuZCBvbmx5IHdpdGggc3RhdD0vU2VudC4qLwoKCj1jdXQKCj1oZWFkMiBDb25m
aWcgb3B0aW9ucwoKIHNlbmRtYWlsX2FsaWFzZXMgICAgIC0gYWxpYXNlcyBmaWxlIHVzZWQg
dG8gcmVzb2x2ZSBhZHJlc3Nlcwogc2VuZG1haWxfbG9jYWxkb21haW4gLSBsb2NhbCBkb21h
aW4gdG8gcmVtb3ZlIGZyb20gYWRyZXNzZXMKIHNlbmRtYWlsX2xvY2FscmVsYXkgIC0gSVAg
cmVnZXhwIHRvIGRldGVybWluZSBpbmNvbWluZy9vdXRnb2luZy9sb2NhbCB0cmFmZmljLCBl
Z2cgJzE5Mi4xNjguMS5cZCsnCgo9Y3V0Cgo9aGVhZDIgRGF0YSBmaWVsZHMKCiBldmVyeXRo
aW5nIGZvdW5kIGluIHNlbmRtYWlsIGxvZywgd2l0aDoKIHRpbWVkYXRlIGlzIHNwbGl0ZWQg
dG8gJ2RhdGUnIGFuZCAnaG91cicsIGFzIHVzdWFsLCB5ZWFyIGlzIHRha2VuIGZyb20gY3Vy
cmVudCBkYXRlLgogcnJlbGF5IGlzIHJlbGF5IGZpZWxkIGZyb20gJ3RvJy1wYXJ0CgogdW5p
cSA9IHNldCB0byAxIHdoZW4gbWVzc2FnZSBmaXJzdCB0aW1lIGNvdW50ZWQuCgogdHlwZSA9
ICJJIiwiTyIsIkwiLCJSIiBmb3IgaW5jb21pbmcsIG91dGdvaW5nLCBsb2NhbCBhbmQgcmVs
YXkgdHJhZmZpYy4KIEl0IGlzIGRldGVybWluZWQgdXNpbmcgZmllbGRzICdtYWlsZXInIGFu
ZCAncmVsYXknLgogKFRodXMsIG9ubHkgYXBwbGllZCB0byBzZW50L3JlY2lldmVkIG1lc3Nh
Z2VzKQoKQWdncmVnYXRpb25zOiBzaXplLCBjb3VudCwgbnJjcHRzCgo9aGVhZDIgVE9ETwoK
IC0gUHJvcGVybHkgcmVzb2x2ZSBtdWx0aXBsZSBhbGlhc2VzLgogLSBTcGxpdCBub24tbG9j
YWwgbXVsdGlwbGUgcmVjaXBpZW50cwoKPWN1dAoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdz
Owp1c2UgdmFycyBxdyglREFUQUZJRUxEUyk7Cgp1c2UgRXhwb3J0ZXI7CnVzZSBZYWFsYTo6
UGFyc2VyOjpXZWJzZXJ2ZXJUb29scyBxdyglTU9OVEhfTlVNQkVSUyk7CnVzZSBZYWFsYTo6
RGF0YTo6UGVyc2lzdGVudCBxdyNpbml0IzsKdXNlIFlhYWxhOjpDb25maWcgcXcjZ2V0X2Nv
bmZpZyM7CgpAWWFhbGE6OlBhcnNlcjo6RVhQT1JUX09LID0gcXcocGFyc2UgZXh0cmEgJURB
VEFGSUVMRFMpOwpAWWFhbGE6OlBhcnNlcjo6SVNBID0gKCdFeHBvcnRlcicpOwoKb3VyICRF
WFRSQSA9IGluaXQgKCckRVhUUkEnLCAnaGFzaCcpOwoKbXkgJUNPVU5URUQgPSAoKTsKCmlm
ICghZGVmaW5lZCAoJEVYVFJBLT57J3RvdGFsY291bnQnfSkpCXsgJEVYVFJBLT57J3RvdGFs
Y291bnQnfSA9IHtJPT4wLCBPPT4wLCBMPT4wfTsgfQppZiAoIWRlZmluZWQgKCRFWFRSQS0+
eyd0b3RhbGFtb3VudCd9KSkJeyAkRVhUUkEtPnsndG90YWxhbW91bnQnfSA9IHtJPT4wLCBP
PT4wLCBMPT4wfTsgfQppZiAoIWRlZmluZWQgKCRFWFRSQS0+eydzdGFydCd9ICApKQl7ICRF
WFRSQS0+eydzdGFydCd9ID0gdW5kZWY7IH0KaWYgKCFkZWZpbmVkICgkRVhUUkEtPnsnZW5k
J30gKSkJeyAkRVhUUkEtPnsnZW5kJ30gPSB1bmRlZjsgfQoKJURBVEFGSUVMRFMgPSAoCgkj
IGxvZyBtZXNzYWdlIGlkCglpZAk9PiAna2V5JywKCSMgJ2Zyb20nIHBhcnQKCWZyb20JPT4g
J2tleScsCglzaXplCT0+ICdhZ2c6Ynl0ZXMnLAoJY2xhc3MJPT4gJ2tleScsCglucmNwdHMJ
PT4gJ2FnZycsCgltc2dpZAk9PiAna2V5JywKCWJvZHl0eXBlPT4gJ2tleScsCglwcm90byAg
ID0+ICdrZXknLAoJZGFlbW9uICA9PiAna2V5JywKCXJlbGF5ICAgPT4gJ2tleScsCgkjICd0
bycgcGFydAoJdG8JPT4gJ2tleScsCglkZWxheSAgID0+ICdrZXknLAoJeGRlbGF5ICA9PiAn
a2V5JywKCW1haWxlciAgPT4gJ2tleScsCglwcmkJPT4gJ2tleScsCglkc24JPT4gJ2tleScs
Cgknc3RhdCcJPT4gJ2tleScsCglycmVsYXkgID0+ICdrZXknLAoJIyBhZGRpdGlvbmFsCglk
YXRlCT0+ICdrZXknLAoJaG91cgk9PiAna2V5JywKCXVuaXEJPT4gJ2tleScsCgl0eXBlCT0+
ICdrZXknLAoJY291bnQJPT4gJ2FnZycKKTsKCiMgVGhpcyBuZWVkcyB0byBiZSBkb25lIGF0
IHJ1bnRpbWUsIHNpbmNlIERhdGEgdXNlcyBTZXR1cCB3aGljaCByZWxpZXMgb24KIyAlREFU
QUZJRUxEUyB0byBiZSBkZWZpbmVkICAtb2N0bwpyZXF1aXJlIFlhYWxhOjpEYXRhOjpDb3Jl
OwppbXBvcnQgWWFhbGE6OkRhdGE6OkNvcmUgcXcjc3RvcmUjOwoKbXkgJFZFUlNJT04gPSAn
diAxLjEkJzsKcHJpbnQgU1RERVJSICQvLCBfX0ZJTEVfXywgIjogJFZFUlNJT04iIGlmICgk
OjpERUJVRyk7CgpvdXIgJUFMSUFTRVM7Cm15ICRhbGlhc2ZpbGUgPSBnZXRfY29uZmlnKCJz
ZW5kbWFpbF9hbGlhc2VzIik7CmlmKCAkYWxpYXNmaWxlICkgewogICAgcHJpbnQgU1RERVJS
ICQvLCBfX0ZJTEVfXywgIjogTG9hZGVkIGFsaWFzZXMgZnJvbSAkYWxpYXNmaWxlIiBpZiAo
JDo6REVCVUcpOwogICAgbG9hZF9hbGlhc2VzKCRhbGlhc2ZpbGUpOwp9CgpvdXIgJGxvY2Fs
ZG9tYWluID0gZ2V0X2NvbmZpZygic2VuZG1haWxfbG9jYWxkb21haW4iKTsKb3VyICRsb2Nh
bHJlbGF5ID0gZ2V0X2NvbmZpZygic2VuZG1haWxfbG9jYWxyZWxheSIpOwpwcmludCBTVERF
UlIgJC8sIF9fRklMRV9fLCAiOiBMb2NhbCByZWxheTogJGxvY2FscmVsYXkiIGlmICgkOjpE
RUJVRyk7CiRsb2NhbHJlbGF5ID0gcXIvXFskbG9jYWxyZWxheVxdLzsKCnJldHVybiAoMSk7
CgpvdXIgJVJFQ0YgPSAoKTsgIyBhbGwgcGVuZGluZyBmcm9tLXBhcnRzCm91ciAlUkVDVCA9
ICgpOyAjIGFsbCBwZW5kaW5nIHRvLXBhcnRzCgpzdWIgcGFyc2UKewoJbXkgJGxpbmUgPSBz
aGlmdCBvciByZXR1cm4gdW5kZWY7CglpZiAoICRsaW5lID1+IHMvXiguLi5ccypcZCsgXGRc
ZDpcZFxkOlxkXGQpIFtcdy1dKyBzbS1tdGEuKlxbXGQrXF06IChbYS16QS1aMC05XXsxNH0p
OiAvLyApIAoJewoJCW15ICRkYXRldGltZSA9ICQxOwoJCW15ICRpZCAgICA9ICQyOwoJCWlm
KCAkbGluZSA9fiAvXmZyb209LyApIHsKCQkJbXkgJHJlYyA9IHBhcnNlbGluZSgkbGluZSk7
CgkJCSRyZWMtPnsnZnJvbSd9ID0gcmVzb2x2ZV9hbGlhcygkcmVjLT57J2Zyb20nfSk7CgkJ
CSRSRUNGeyRpZH0gPSB7IGRhdGV0aW1lPT4kZGF0ZXRpbWUsICUkcmVjIH07CgkJCWNoZWNr
cGFpcigkaWQpOwoJCQl9CgkJZWxzaWYoICRsaW5lID1+IC9edG89LyApIHsKCQkJbXkgJHJl
YyA9IHBhcnNlbGluZSgkbGluZSk7CgkJCSRyZWMtPnsndG8nfSA9IHJlc29sdmVfYWxpYXMo
JHJlYy0+eyd0byd9KTsKCQkJJFJFQ1R7JGlkfSA9IHsgZGF0ZXRpbWU9PiRkYXRldGltZSwg
JSRyZWMgfTsKCQkJY2hlY2twYWlyKCRpZCk7CgkJCX0KCQllbHNlIHsKCQkJIyBzb21lIGhl
YWVycyBtYW5nbGluZyBvciBtYWlsIGZpbHRlcnMgbG9nIGxpbmVzCgkJICB9Cgl9Cn0KCnN1
YiBwYXJzZWxpbmUKewoJbXkgJGxpbmUgPSBzaGlmdDsKCW15ICVyZWM9KCk7Cglmb3JlYWNo
IChzcGxpdCgvLFxzKy8sJGxpbmUpKSB7CgkJaWYoIG0vKC4qPyk9KC4qKS8gKSB7CgkJCSRy
ZWN7JDF9PSQyIGlmIGV4aXN0cyAkREFUQUZJRUxEU3skMX07CgkJCX0KCQl9CglyZXR1cm4g
XCVyZWM7Cn0KCnN1YiBjaGVja3BhaXIKewoJbXkgJGlkID0gc2hpZnQ7CglyZXR1cm4gdW5s
ZXNzICggJFJFQ0Z7JGlkfSBhbmQgJFJFQ1R7JGlkfSApOwoJIyByZW5hbWUgcmVsYXkgaW4g
VE8tcGFydCBpbnRvIHJyZWxheQoJJFJFQ1R7JGlkfS0+eydycmVsYXknfSA9ICRSRUNUeyRp
ZH0tPnsncmVsYXknfSBpZiAkUkVDVHskaWR9LT57J3JlbGF5J307CglkZWxldGUgJFJFQ1R7
JGlkfS0+eydyZWxheSd9OwoKCW15ICVyZWMgPSAoICV7JFJFQ0Z7JGlkfX0sICV7JFJFQ1R7
JGlkfX0gKTsKCgkjcHJpbnQgU1RERVJSICJcblJFQ1QgSzogIixqb2luKCI7ICIsIGtleXMg
ICAleyRSRUNUeyRpZH19KTsKCSNwcmludCBTVERFUlIgIlxuUkVDVCBWOiAiLGpvaW4oIjsg
IiwgdmFsdWVzICV7JFJFQ1R7JGlkfX0pOwoJI3ByaW50IFNUREVSUiAiXG5SRUNGIEs6ICIs
am9pbigiOyAiLCBrZXlzICAgJXskUkVDRnskaWR9fSk7CgkjcHJpbnQgU1RERVJSICJcblJF
Q0YgVjogIixqb2luKCI7ICIsIHZhbHVlcyAleyRSRUNGeyRpZH19KTsKCQoJJHJlY3snZGF0
ZXRpbWUnfSA9fiAvKFx3XHdcdylccyooXGQrKSAoXGRcZCk6XGRcZDpcZFxkLzsKCW15ICgk
bW9udGgsJGRheSwkaG91cikgPSAoJDEsJDIsJDMpOwoJJG1vbnRoID0gJE1PTlRIX05VTUJF
UlN7JG1vbnRofTsKCW15ICR5ZWFyID0gW2xvY2FsdGltZSh0aW1lKV0tPls1XSsxOTAwOyAj
IGN1cnJlbnQgeWVhcgoJbXkgJGRhdGUgPSBzcHJpbnRmKCIlMDR1LSUwMnUtJTAydSIsICR5
ZWFyLCAkbW9udGgsICRkYXkpOwoKCW15ICVjb21iaW5lZCA9ICVyZWM7CgkkY29tYmluZWR7
J2RhdGUnfT0kZGF0ZTsKCSRjb21iaW5lZHsnaG91cid9PSRob3VyOwoJJGNvbWJpbmVkeydj
b3VudCd9PTE7CgkkY29tYmluZWR7J3VuaXEnfSA9IChleGlzdHMoJENPVU5URUR7JGlkfSkg
PyAwIDogMSk7CgkkY29tYmluZWR7J3RvJ30gPX4gcy9cPC9cJmx0Oy9nOwoJJGNvbWJpbmVk
eyd0byd9ID1+IHMvXD4vXCZndDsvZzsKCSRjb21iaW5lZHsnZnJvbSd9ID1+IHMvXDwvXCZs
dDsvZzsKCSRjb21iaW5lZHsnZnJvbSd9ID1+IHMvXD4vXCZndDsvZzsKCSRjb21iaW5lZHsn
c3RhdCd9ID1+IHMvXigoXHcrKShccytcdyspKikuKiQvJDEvOwoKCW15ICR0eXBlPSJVTkRF
RiI7CglpZiggJGxvY2FscmVsYXkgYW5kICRjb21iaW5lZHsncmVsYXknfSBhbmQgJGNvbWJp
bmVkeydtYWlsZXInfSkgewoJICAgICMKCSAgICAjIEw6IGwvbCBPOiBsLy0KCSAgICAjIEk6
IC0vbCBSOiAtLy0KCSAgICAjCgkgICAgJHR5cGUgPQoJCSggJGNvbWJpbmVkeydyZWxheSd9
ID1+ICRsb2NhbHJlbGF5ICkgPyAKCQkgICAgKCAoICRjb21iaW5lZHsnbWFpbGVyJ30gZXEg
J2xvY2FsJyApID8gJ0wnIDogJ08nICkgOgoJCSAgICAoICggJGNvbWJpbmVkeydtYWlsZXIn
fSBlcSAnbG9jYWwnICkgPyAnSScgOiAnUicgKSA7CgoJICAgIH0KCgkkY29tYmluZWR7J3R5
cGUnfSA9ICR0eXBlOwoJCgl1bmxlc3MoICRDT1VOVEVEeyRpZH0gKSB7CgkJJENPVU5URUR7
JGlkfSA9IDE7CgkJJEVYVFJBLT57J3RvdGFsY291bnQnfS0+eyR0eXBlfSsrOwoJCSRFWFRS
QS0+eyd0b3RhbGFtb3VudCd9LT57JHR5cGV9Kz0kY29tYmluZWR7J3NpemUnfTsKCX0KCglp
Ziggbm90IGRlZmluZWQgJEVYVFJBLT57J3N0YXJ0J30gb3IgJG1vbnRoIDwgJEVYVFJBLT57
J3N0YXJ0J30tPnsnbSd9IG9yICRkYXkgPCAkRVhUUkEtPnsnc3RhcnQnfS0+eydkJ30gKSB7
CgkJJEVYVFJBLT57J3N0YXJ0J30tPnsnbSd9ID0gJG1vbnRoOwoJCSRFWFRSQS0+eydzdGFy
dCd9LT57J2QnfSA9ICRkYXk7CgkJfQoJaWYoIG5vdCBkZWZpbmVkICRFWFRSQS0+eydlbmQn
fSBvciAkbW9udGggPiAkRVhUUkEtPnsnZW5kJ30tPnsnbSd9IG9yICRkYXkgPiAkRVhUUkEt
PnsnZW5kJ30tPnsnZCd9ICkgewoJCSRFWFRSQS0+eydlbmQnfS0+eydtJ30gPSAkbW9udGg7
CgkJJEVYVFJBLT57J2VuZCd9LT57J2QnfSA9ICRkYXk7CgkJfQoJCgkjcHJpbnQgU1RERVJS
ICJcblBhcnNlZCAkaWQ6ICIsam9pbigiOyIsbWFwKCIkXz0iLiRjb21iaW5lZHskX30sIHNv
cnQga2V5cyAlY29tYmluZWQpKTsKCXN0b3JlIChcJWNvbWJpbmVkKTsKCQoJZGVsZXRlICRS
RUNGeyRpZH07CglkZWxldGUgJFJFQ1R7JGlkfTsKCn0KCnN1YiBsb2FkX2FsaWFzZXMKewoJ
bXkgJGZpbGUgPSBzaGlmdDsKCWlmKCBvcGVuKEYsIjwkZmlsZSIpICkgewoJCXdoaWxlKDxG
PikgewoJCQljaG9tcCgpOwoJCQluZXh0IHVubGVzcyggL14oW14gXSopXHMqOlxzKihbXiwg
XSopXHMqJC8gKTsKCQkJJEFMSUFTRVN7bGMoJDEpfT1sYygkMik7CgkJfQoJCWNsb3NlKEYp
OwoJfQp9CgpzdWIgcmVzb2x2ZV9hbGlhcwp7CglteSAoJGFsaWFzKSA9IEBfOwoJbXkgJGFk
ZHIgPSBsYygkYWxpYXMpOwoJJGFkZHIgPX4gcy9bPD5dLy9nOwoJJGFkZHIgPX4gcy9cQCRs
b2NhbGRvbWFpbi8vIGlmKCAkbG9jYWxkb21haW4gKTsKCWlmKCAkQUxJQVNFU3skYWRkcn0g
KSB7CgkJJGFkZHIgPSAkQUxJQVNFU3skYWRkcn07CgkJfQoJcmV0dXJuICRhZGRyOwp9Cgpz
dWIgZXh0cmEKewoJJDo6RVhUUkEtPnsnMC4g0J7RgtGH0ZHRgtC90YvQuSDQv9C10YDQuNC+
0LQnfSA9IHNwcmludGYgIiUwMmQvJTAyZCAtICUwMmQvJTAyZCIsCgkJJEVYVFJBLT57J3N0
YXJ0J30tPnsnZCd9LAoJCSRFWFRSQS0+eydzdGFydCd9LT57J20nfSwKCQkkRVhUUkEtPnsn
ZW5kJ30tPnsnZCd9LAoJCSRFWFRSQS0+eydlbmQnfS0+eydtJ307CgkKCWlmICgkRVhUUkEt
PnsndG90YWxjb3VudCd9LT57J0knfSkgewoJCSQ6OkVYVFJBLT57JzEuINCS0YXQvtC00Y/R
idC40LUnfSA9IHNwcmludGYgIiUgNXMgLyAlIDEycyIsCgkJJEVYVFJBLT57J3RvdGFsY291
bnQnfS0+eydJJ30sJEVYVFJBLT57J3RvdGFsYW1vdW50J30tPnsnSSd9LiIg0LHQsNC50YIi
OwoJCX0KCWlmICgkRVhUUkEtPnsndG90YWxjb3VudCd9LT57J08nfSkgewoJCSQ6OkVYVFJB
LT57JzIuINCY0YHRhdC+0LTRj9GJ0LjQtSd9ID0gc3ByaW50ZiAiJSA1cyAvICUgMTJzIiwg
CgkJJEVYVFJBLT57J3RvdGFsY291bnQnfS0+eydPJ30sJEVYVFJBLT57J3RvdGFsYW1vdW50
J30tPnsnTyd9LiIg0LHQsNC50YIiOwoJCX0KCWlmICgkRVhUUkEtPnsndG90YWxjb3VudCd9
LT57J0knfSkgewoJCSQ6OkVYVFJBLT57JzMuINCb0L7QutCw0LvRjNC90YvQtSd9ID0gc3By
aW50ZiAiJSA1cyAvICUgMTJzIiwKCQkkRVhUUkEtPnsndG90YWxjb3VudCd9LT57J0wnfSwk
RVhUUkEtPnsndG90YWxhbW91bnQnfS0+eydMJ30uIiDQsdCw0LnRgiI7CgkJfQoJaWYgKCRF
WFRSQS0+eyd0b3RhbGNvdW50J30tPnsnUid9KSB7CgkJJDo6RVhUUkEtPnsnNC4g0J/RgNC+
0YXQvtC00Y/RidC40LUnfSA9IHNwcmludGYgIiUgNXMgLyAlIDEycyIsCgkJJEVYVFJBLT57
J3RvdGFsY291bnQnfS0+eydSJ30sJEVYVFJBLT57J3RvdGFsYW1vdW50J30tPnsnUid9LiIg
0LHQsNC50YIiOwoJCX0KCWlmICgkRVhUUkEtPnsndG90YWxjb3VudCd9LT57J1VOREVGJ30p
IHsKCQkkOjpFWFRSQS0+eyc1LiDQpdC10YDRjCd9ID0gc3ByaW50ZiAiJSA1cyAvICUgMTJz
IiwKCQkkRVhUUkEtPnsndG90YWxjb3VudCd9LT57J1VOREVGJ30sJEVYVFJBLT57J3RvdGFs
YW1vdW50J30tPnsnVU5ERUYnfS4iINCx0LDQudGCIjsKCQl9Cn0K
------------121601543738FC92--