commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephen Kruger (Updated) (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part
Date Sun, 11 Dec 2011 09:20:43 GMT

     [ https://issues.apache.org/jira/browse/EMAIL-110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Stephen Kruger updated EMAIL-110:
---------------------------------

    Attachment: crashfix.eml

The email message which crashes Commons email parser.
                
> java.lang.OutOfMemoryError: Java heap space while parsing Mime part
> -------------------------------------------------------------------
>
>                 Key: EMAIL-110
>                 URL: https://issues.apache.org/jira/browse/EMAIL-110
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows, Linux
>            Reporter: Stephen Kruger
>            Priority: Blocker
>         Attachments: crashfix.eml
>
>
> I have a particular eml message which appears to cause a complete memory overflow deep
within commons-email.
> A look at the source code does reveal a suspect "while" loop which appears to never exit
properly, and should be rewritten so that bad data could not give us this situation.
> The stack trace is :
> java.lang.OutOfMemoryError: Java heap space
> 	at java.util.Arrays.copyOf(Arrays.java:2786)
> 	at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
> 	at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
> 	at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
> 	at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
> 	at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
> 	at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
> 	at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
> 	at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
> 	at javax.mail.Transport.send(Transport.java:76)
> 	at javax.mail.Transport.send(Transport.java:48)
> The message which can repeatedly cause this issue is pasted below (this form shows no
attachment capability) :
> Received: from somedomain.test.com (somedomain.test.com [99.168.1.33])
>         by smtp.myserver.com with SMTP (BlueBox)
>         for postmaster@localhost;
>         Fri, 07 Oct 2011 10:35:04 -0400 (EDT)
> To: postmaster@localhost
> From: noreply@example.com
> Reply-To: noreply@example.com
> Subject: Attachment Test
> X-Mailer: CakePHP Email Component
> MIME-Version: 1.0
> Content-Type: multipart/mixed; boundary="026a2bea167826bf111c47c4213d68b1"
> This part of the E-mail should never be seen. If: 
> you are reading this, consider upgrading your e-mail: 
> client to a MIME-compatible client.: 
> Content-Transfer-Encoding: base64
> --026a2bea167826bf111c47c4213d68b1
> Content-Type: multipart/alternative; boundary="alt-026a2bea167826bf111c47c4213d68b1"
> Content-Transfer-Encoding: 7bit
> <p>This is the body of the message</p>
> --026a2bea167826bf111c47c4213d68b1
> Content-Type: application/octet-stream
> Content-Transfer-Encoding: base64
> Content-Disposition: attachment; filename="email.test.php"
> PD9waHAKLyogU1ZOIEZJTEU6ICRJZCQgKi8KLyoqCiAqIEVtYWlsQ29tcG9uZW50VGVzdCBmaWxl
> CiAqCiAqIFNlcmllcyBvZiB0ZXN0cyBmb3IgZW1haWwgY29tcG9uZW50LgogKgogKiBQSFAgdmVy
> c2lvbnMgNCBhbmQgNQogKgogKiBDYWtlUEhQKHRtKSBUZXN0cyA8aHR0cHM6Ly90cmFjLmNha2Vw
> aHAub3JnL3dpa2kvRGV2ZWxvcGVtZW50L1Rlc3RTdWl0ZT4KICogQ29weXJpZ2h0IDIwMDUtMjAw
> OCwgQ2FrZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIChodHRwOi8vd3d3LmNha2Vmb3VuZGF0
> aW9uLm9yZykKICoKICogIExpY2Vuc2VkIHVuZGVyIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUg
> TGljZW5zZQogKiAgUmVkaXN0cmlidXRpb25zIG9mIGZpbGVzIG11c3QgcmV0YWluIHRoZSBhYm92
> ZSBjb3B5cmlnaHQgbm90aWNlLgogKgogKiBAZmlsZXNvdXJjZQogKiBAY29weXJpZ2h0ICAgICBD
> b3B5cmlnaHQgMjAwNS0yMDA4LCBDYWtlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gKGh0dHA6
> Ly93d3cuY2FrZWZvdW5kYXRpb24ub3JnKQogKiBAbGluayAgICAgICAgICBodHRwczovL3RyYWMu
> Y2FrZXBocC5vcmcvd2lraS9EZXZlbG9wZW1lbnQvVGVzdFN1aXRlIENha2VQSFAodG0pIFRlc3Rz
> CiAqIEBwYWNrYWdlICAgICAgIGNha2UKICogQHN1YnBhY2thZ2UgICAgY2FrZS5jYWtlLnRlc3Rz
> LmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqIEBzaW5jZSAgICAgICAgIENha2VQ
> SFAodG0pIHYgMS4yLjAuNTM0NwogKiBAdmVyc2lvbiAgICAgICAkUmV2aXNpb24kCiAqIEBtb2Rp
> ZmllZGJ5ICAgICRMYXN0Q2hhbmdlZEJ5JAogKiBAbGFzdG1vZGlmaWVkICAkRGF0ZSQKICogQGxp
> Y2Vuc2UgICAgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9vcGVuZ3JvdXAu
> cGhwIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUgTGljZW5zZQogKi8KaWYgKCFkZWZpbmVkKCdS
> VU5OSU5HX0VNQUlMX1VOSVRfVEVTVFMnKSkgZGVmaW5lKCdSVU5OSU5HX0VNQUlMX1VOSVRfVEVT
> VFMnLHRydWUpOwpBcHA6OmltcG9ydCgnQ29tcG9uZW50JywgJ0VtYWlsJyk7Ci8qKgogKiBFbWFp
> bFRlc3RDb21wb25lbnQgY2xhc3MKICoKICogQHBhY2thZ2UgICAgICAgY2FrZQogKiBAc3VicGFj
> a2FnZSAgICBjYWtlLnRlc3RzLmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqLwpj
> bGFzcyBFbWFpbFRlc3RDb21wb25lbnQgZXh0ZW5kcyBFbWFpbENvbXBvbmVudCB7Ci8qKgogKiBu
> YW1lIHByb3BlcnR5CiAqCiAqIEB2YXIgc3RyaW5nICdFbWFpbFRlc3RDb21wb25lbnQnCiAqIEBh
> Y2Nlc3MgcHVibGljCiAqLwoJdmFyICRuYW1lID0gJ0VtYWlsVGVzdENvbXBvbmVudCc7Ci8qKgog
> KiBMaXN0IG9mIG9wdGlvbnMgdG8gdXNlIGZvciBzbXRwIG1haWwgbWV0aG9kLCBvdmVycmlkZSBm
> b3IgdGVzdGluZwogKgogKiBPcHRpb25zIGlzOgogKiAtIHBvcnQKICogLSBob3N0CiAqIC0gdGlt
> ZW91dAogKiAtIHVzZXJuYW1lCiAqIC0gcGFzc3dvcmQKICoKICogQHZhciBhcnJheQogKiBAYWNj
> ZXNzIHB1YmxpYwogKi8KCXZhciAkc210cE9wdGlvbnMgPSBhcnJheSgKCQkncG9ydCc9PiAyNSwg
> J2hvc3QnID0+IFNNVFBfU0VSVkVSLCAndGltZW91dCcgPT4gMzAKCSk7Ci8qKgogKiBzbXRwU2Vu
> ZCBtZXRob2Qgb3ZlcnJpZGUgZm9yIHRlc3RpbmcKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJl
> dHVybiBtaXhlZAogKi8KCWZ1bmN0aW9uIHNtdHBTZW5kKCRkYXRhLCAkY29kZSA9ICcyNTAnKSB7
> CgkJcmV0dXJuIHBhcmVudDo6X19zbXRwU2VuZCgkZGF0YSwgJGNvZGUpOwoJfQovKioKICogQ29u
> dmVuaWVuY2Ugc2V0dGVyIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
> ICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gc2V0Q29ubmVjdGlvblNvY2tldCgmJHNvY2tl
> dCkgewoJCSR0aGlzLT5fX3NtdHBDb25uZWN0aW9uID0gJHNvY2tldDsKCX0KLyoqCiAqIENvbnZl
> bmllbmNlIGdldHRlciBtZXRob2QgZm9yIHRlc3RpbmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAq
> IEByZXR1cm4gbWl4ZWQKICovCglmdW5jdGlvbiBnZXRDb25uZWN0aW9uU29ja2V0KCkgewoJCXJl
> dHVybiAkdGhpcy0+X19zbXRwQ29ubmVjdGlvbjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRl
> ciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
> ZnVuY3Rpb24gc2V0SGVhZGVycygkaGVhZGVycykgewoJCSR0aGlzLT5fX2hlYWRlciArPSAkaGVh
> ZGVyczsKCX0KLyoqCiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFj
> Y2VzcyBwdWJsaWMKICogQHJldHVybiBhcnJheQogKi8KCWZ1bmN0aW9uIGdldEhlYWRlcnMoKSB7
> CgkJcmV0dXJuICR0aGlzLT5fX2hlYWRlcjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRlciBm
> b3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVu
> Y3Rpb24gc2V0Qm91bmRhcnkoKSB7CgkJJHRoaXMtPl9fY3JlYXRlQm91bmRhcnkoKTsKCX0KLyoq
> CiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
> ICogQHJldHVybiBzdHJpbmcKICovCglmdW5jdGlvbiBnZXRCb3VuZGFyeSgpIHsKCQlyZXR1cm4g
> JHRoaXMtPl9fYm91bmRhcnk7Cgl9Ci8qKgogKiBDb252ZW5pZW5jZSBnZXR0ZXIgZm9yIHRlc3Rp
> bmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gc3RyaW5nCiAqLwoJZnVuY3Rpb24g
> Z2V0TWVzc2FnZSgpIHsKCQlyZXR1cm4gJHRoaXMtPl9fbWVzc2FnZTsKCX0KLyoqCiAqIENvbnZl
> bmllbmNlIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVy
> biBzdHJpbmcKICovCglmdW5jdGlvbiBzdHJpcCgkY29udGVudCwgJG1lc3NhZ2UgPSBmYWxzZSkg
> ewoJCXJldHVybiBwYXJlbnQ6Ol9fc3RyaXAoJGNvbnRlbnQsICRtZXNzYWdlKTsKCX0KfQovKioK
> ICogRW1haWxUZXN0Q29udHJvbGxlciBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAq
> IEBzdWJwYWNrYWdlICAgIGNha2UudGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVu
> dHMKICovCmNsYXNzIEVtYWlsVGVzdENvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyIHsKLyoq
> CiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcgJ0VtYWlsVGVzdCcKICogQGFjY2Vz
> cyBwdWJsaWMKICovCgl2YXIgJG5hbWUgPSAnRW1haWxUZXN0JzsKLyoqCiAqIHVzZXMgcHJvcGVy
> dHkKICoKICogQHZhciBtaXhlZCBudWxsCiAqIEBhY2Nlc3MgcHVibGljCiAqLwoJdmFyICR1c2Vz
> ID0gbnVsbDsKLyoqCiAqIGNvbXBvbmVudHMgcHJvcGVydHkKICoKICogQHZhciBhcnJheQogKiBA
> YWNjZXNzIHB1YmxpYwogKi8KCXZhciAkY29tcG9uZW50cyA9IGFycmF5KCdFbWFpbFRlc3QnKTsK
> LyoqCiAqIHBhZ2VUaXRsZSBwcm9wZXJ0eQogKgogKiBAdmFyIHN0cmluZwogKiBAYWNjZXNzIHB1
> YmxpYwogKi8KCXZhciAkcGFnZVRpdGxlID0gJ0VtYWlsVGVzdCc7Cn0KLyoqCiAqIEVtYWlsVGVz
> dCBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAqIEBzdWJwYWNrYWdlICAgIGNha2Uu
> dGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVudHMKICovCmNsYXNzIEVtYWlsQ29t
> cG9uZW50VGVzdCBleHRlbmRzIENha2VUZXN0Q2FzZSB7Ci8qKgogKiBDb250cm9sbGVyIHByb3Bl
> cnR5CiAqCiAqIEB2YXIgRW1haWxUZXN0Q29udHJvbGxlcgogKiBAYWNjZXNzIHB1YmxpYwogKi8K
> CXZhciAkQ29udHJvbGxlcjsKLyoqCiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcg
> J0VtYWlsJwogKiBAYWNjZXNzIHB1YmxpYwogKi8KCXZhciAkbmFtZSA9ICdFbWFpbCc7Ci8qKgog
> KiBzZXRVcCBtZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
> ZnVuY3Rpb24gc2V0VXAoKSB7CgkJJHRoaXMtPl9hcHBFbmNvZGluZyA9IENvbmZpZ3VyZTo6cmVh
> ZCgnQXBwLmVuY29kaW5nJyk7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJ1VU
> Ri04Jyk7CgoJCSR0aGlzLT5Db250cm9sbGVyID0mIG5ldyBFbWFpbFRlc3RDb250cm9sbGVyKCk7
> CgoJCXJlc3RvcmVfZXJyb3JfaGFuZGxlcigpOwoJCUAkdGhpcy0+Q29udHJvbGxlci0+Q29tcG9u
> ZW50LT5pbml0KCR0aGlzLT5Db250cm9sbGVyKTsKCQlzZXRfZXJyb3JfaGFuZGxlcignc2ltcGxl
> VGVzdEVycm9ySGFuZGxlcicpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5pbml0
> aWFsaXplKCR0aGlzLT5Db250cm9sbGVyLCBhcnJheSgpKTsKCQlDbGFzc1JlZ2lzdHJ5OjphZGRP
> YmplY3QoJ3ZpZXcnLCBuZXcgVmlldygkdGhpcy0+Q29udHJvbGxlcikpOwoKCQkkdGhpcy0+X3Zp
> ZXdQYXRocyA9IENvbmZpZ3VyZTo6cmVhZCgndmlld1BhdGhzJyk7CgkJQ29uZmlndXJlOjp3cml0
> ZSgndmlld1BhdGhzJywgYXJyYXkoVEVTVF9DQUtFX0NPUkVfSU5DTFVERV9QQVRIIC4gJ3Rlc3Rz
> JyAuIERTIC4gJ3Rlc3RfYXBwJyAuIERTIC4gJ3ZpZXdzJy4gRFMpKTsKCgkJJHRoaXMtPkNvbnRy
> b2xsZXItPlNlc3Npb24tPmFjdGl2YXRlKCdNZXNzYWdlJyk7Cgl9Ci8qKgogKiB0ZWFyRG93biBt
> ZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24g
> dGVhckRvd24oKSB7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJHRoaXMtPl9h
> cHBFbmNvZGluZyk7CgkJQ29uZmlndXJlOjp3cml0ZSgndmlld1BhdGhzJywgJHRoaXMtPl92aWV3
> UGF0aHMpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5kZWwoJ01lc3NhZ2UnKTsKCQly
> ZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKCQlDbGFzc1JlZ2lzdHJ5OjpmbHVzaCgpOwoJfQovKioK
> ICogdGVzdEJhZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
> IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QmFkU210cFNlbmQoKSB7CgkJJHRoaXMtPkNvbnRyb2xs
> ZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnNbJ2hvc3QnXSA9ICdibGFoJzsKCQkkdGhpcy0+Q29u
> dHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkkdGhpcy0+YXNzZXJ0RmFs
> c2UoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnU2hvdWxkIG5vdCB3b3JrJykp
> OwoJfQovKioKICogdGVzdFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBA
> cmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U210cFNlbmQoKSB7CgkJaWYgKCR0aGlzLT5z
> a2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1
> bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKSkgewoJCQlyZXR1cm47CgkJfQoJCSR0aGlzLT5Db250
> cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
> dC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
> bFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXIt
> PkVtYWlsVGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xs
> ZXItPkVtYWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+
> Q29udHJvbGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9s
> bGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0
> aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhl
> IG1lc3NhZ2UnKSk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9kZWJ1ZyA9IHRy
> dWU7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRz
> bXRwU2VydmVyID0gU01UUF9TRVJWRVI7CgkJJGV4cGVjdCA9IDw8PFRFTVBET0MKPHByZT5Ib3N0
> OiAkc210cFNlcnZlcgpQb3J0OiAyNQpUaW1lb3V0OiAzMApUbzogcG9zdG1hc3RlckBsb2NhbGhv
> c3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApIZWFk
> ZXI6CgpUbzogcG9zdG1hc3RlckBsb2NhbGhvc3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpS
> ZXBseS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApYLU1h
> aWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1U
> eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
> IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVz
> c2FnZQoKPC9wcmU+ClRFTVBET0M7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
> ZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsK
> CQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01l
> c3NhZ2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgog
> KiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwog
> KiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kKCkg
> ewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNN
> VFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkkdGhpcy0+Q29udHJv
> bGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
> PnRvID0gJ3Bvc3RtYXN0ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
> ZXN0LT5mcm9tID0gJ25vcmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5F
> bWFpbFRlc3QtPnN1YmplY3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
> bnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWyd1c2VybmFtZSddID0gJ3Rlc3QnOwoJCSR0aGlzLT5D
> b250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydwYXNzd29yZCddID0gJ3Rlc3Rpbmcn
> OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkk
> cmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
> Ym9keSBvZiB0aGUgbWVzc2FnZScpOwoJCSRjb2RlID0gc3Vic3RyKCR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnNtdHBFcnJvciwgMCwgMyk7CgkJJHRoaXMtPnNraXBJZighJGNvZGUsICcl
> cyBBdXRoZW50aWNhdGlvbiBub3QgZW5hYmxlZCBvbiBzZXJ2ZXInKTsKCgkJJHRoaXMtPmFzc2Vy
> dEZhbHNlKCRyZXN1bHQpOwoJCS8vJHRoaXMtPmFzc2VydEVxdWFsKCRjb2RlLCAnNTM1Jyk7IC8v
> R290IFNNVFAgNTAyIENvbW1hbmQgTm90IGltcGxlbWVudGVkCgl9Ci8qKgogKiB0ZXN0U2VuZEZv
> cm1hdHMgbWV0aG9kCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1
> bmN0aW9uIHRlc3RTZW5kRm9ybWF0cygpIHsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
> LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Bvc3RtYXN0
> ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tID0gJ25v
> cmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1Ympl
> Y3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJl
> cGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRl
> bGl2ZXJ5ID0gJ2RlYnVnJzsKCgkJJG1lc3NhZ2UgPSA8PDxNU0dCTE9DCjxwcmU+VG86IHBvc3Rt
> YXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVjdDogQ2FrZSBT
> TVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBseS1Ubzogbm9y
> ZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1W
> ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQtVHJhbnNmZXIt
> RW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBv
> ZiB0aGUgbWVzc2FnZQoKPC9wcmU+Ck1TR0JMT0M7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRleHBlY3QgPSBzdHJfcmVwbGFjZSgne0NPTlRFTlRU
> WVBFfScsICd0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04JywgJG1lc3NhZ2UpOwoJCSR0aGlzLT5h
> c3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhl
> IGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250
> cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJHRoaXMtPl9f
> b3NGaXgoJGV4cGVjdCkpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMg
> PSAnaHRtbCc7CgkJJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09OVEVOVFRZUEV9JywgJ3RleHQv
> aHRtbDsgY2hhcnNldD1VVEYtOCcsICRtZXNzYWdlKTsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhp
> cy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBt
> ZXNzYWdlJykpOwoJCSR0aGlzLT5hc3NlcnRFcXVhbCgkdGhpcy0+Q29udHJvbGxlci0+U2Vzc2lv
> bi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICR0aGlzLT5fX29zRml4KCRleHBlY3Qp
> KTsKCgkJLy8gVE9ETzogYmV0dGVyIHRlc3QgZm9yIGZvcm1hdCBvZiBtZXNzYWdlIHNlbnQ/CgkJ
> JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ2JvdGgnOwoKCQkkdGhpcy0+
> YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRo
> ZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCS8vJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09O
> VEVOVFRZUEV9JywgJ211bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9ImFsdC0nLiR0aGlz
> LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fYm91bmRhcnkuJyInLCAkbWVzc2FnZSk7CgkJLy8k
> dGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3Nh
> Z2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgogKiB0
> ZXN0VGVtcGxhdGVzIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQK
> ICovCglmdW5jdGlvbiB0ZXN0VGVtcGxhdGVzKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
> bFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9z
> dG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20g
> PSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
> c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
> dC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCgkJJHRoaXMtPkNvbnRyb2xsZXIt
> PkVtYWlsVGVzdC0+ZGVsaXZlcnkgPSAnZGVidWcnOwoKCQkkaGVhZGVyID0gPDw8SEVBREJMT0MK
> VG86IHBvc3RtYXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVj
> dDogQ2FrZSBTTVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBs
> eS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25l
> bnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQt
> VHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKCkhFQURCTE9D
> OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5sYXlvdXQgPSAnZGVmYXVsdCc7CgkJ
> JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSAnZGVmYXVsdCc7CgoJCSR0
> ZXh0ID0gPDw8VEVYVEJMT0MKClRoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UKClRoaXMg
> ZW1haWwgd2FzIHNlbnQgdXNpbmcgdGhlIENha2VQSFAgRnJhbWV3b3JrLCBodHRwOi8vY2FrZXBo
> cC5vcmcuCgpURVhUQkxPQzsKCgkJJGh0bWwgPSA8PDxIVE1MQkxPQwo8IURPQ1RZUEUgaHRtbCBQ
> VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+
> RW1haWxUZXN0PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KCTxwPiBUaGlzIGlzIHRoZSBib2R5IG9m
> IHRoZSBtZXNzYWdlPC9wPjxwPiA8L3A+Cgk8cD5UaGlzIGVtYWlsIHdhcyBzZW50IHVzaW5nIHRo
> ZSA8YSBocmVmPSJodHRwOi8vY2FrZXBocC5vcmciPkNha2VQSFAgRnJhbWV3b3JrPC9hPjwvcD4K
> PC9ib2R5Pgo8L2h0bWw+CkhUTUxCTE9DOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
> LT5zZW5kQXMgPSAndGV4dCc7CgkJLy9jYWxsIHRoZSBMb3R1c0xpdmUgY3VzdG9temllZCBmdW5j
> dGlvbiB0byBiYXNlNjRfZW5jb2RlIHRoZSBlbWFpbCBib2R5CgkJJHRleHQgPSAkdGhpcy0+Q29u
> dHJvbGxlci0+RW1haWxUZXN0LT5fX3dyYXBsaW5lZmVlZHMoJHRleHQpOwoJCSRleHBlY3QgPSAn
> PHByZT4nIC4gc3RyX3JlcGxhY2UoJ3tDT05URU5UVFlQRX0nLCAndGV4dC9wbGFpbjsgY2hhcnNl
> dD1VVEYtOCcsICRoZWFkZXIpIC4gJHRleHQgLiAiXG4iIC4gJzwvcHJlPic7CgkJJHRoaXMtPmFz
> c2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
> Ym9keSBvZiB0aGUgbWVzc2FnZScpKTsKCQkvL25vIG5lZWQgdG8gY2FsbCAkdGhpcy0+X19vc0Zp
> eCgkZXhwZWN0KSwgYmVjYXVzZSBfX3dyYXBsaW5lZmVlZHMoKSBhbHJlYWR5IGRlYWxzIHdpdGgg
> YmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250cm9sbGVyLT5T
> ZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJGV4cGVjdCk7CgoJCSR0aGlz
> LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkvL2NhbGwgdGhlIExv
> dHVzTGl2ZSBjdXN0b216aWVkIGZ1bmN0aW9uIHRvIGJhc2U2NF9lbmNvZGUgdGhlIGVtYWlsIGJv
> ZHkKCQkkaHRtbCA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fd3JhcGxpbmVmZWVk
> cygkaHRtbCk7CgkJJGV4cGVjdCA9ICc8cHJlPicgLiBzdHJfcmVwbGFjZSgne0NPTlRFTlRUWVBF
> fScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnLCAkaGVhZGVyKSAuICRodG1sIC4gIlxuIiAu
> ICc8L3ByZT4nOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRl
> c3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJLy9ubyBuZWVk
> IHRvIGNhbGwgJHRoaXMtPl9fb3NGaXgoJGV4cGVjdCksIGJlY2F1c2UgX3dyYXBsaW5lZmVlZHMo
> KSBhbHJlYWR5IGRlYWxzIHdpdGggYmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFs
> KCR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2Un
> KSwgJGV4cGVjdCk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdi
> b3RoJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5z
> ZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCQoJCSRleHBlY3QgPSBz
> dHJfcmVwbGFjZSgne0NPTlRFTlRUWVBFfScsICdtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5k
> YXJ5PSJhbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LiciJywg
> JGhlYWRlcik7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
> ZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNo
> YXJzZXQ9VVRGLTgnIC4gIlxuIiAuICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQn
> IC4gIlxuXG4iIC4gJHRleHQgLiAiXG5cbiI7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+
> Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5
> cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcgLiAiXG4iIC4gJ0NvbnRlbnQtVHJhbnNmZXIt
> RW5jb2Rpbmc6IGJhc2U2NCcgLiAiXG5cbiIgLiAkaHRtbCAuICJcblxuIjsKCQkkZXhwZWN0IC49
> ICctLWFsdC0nLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4gIi0t
> XG5cblxuXG4tLSIgLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4g
> Ii0tXG4iOwoJCSRleHBlY3QgPSAnPHByZT4nIC4gJGV4cGVjdCAuICc8L3ByZT4nOwoKCQkvLyRl
> eHBlY3QgY29udGFpbnMgZW1haWwgYm9keSBpbiBib3RoIGh0bWwgYW5kIHRleHQgZm9ybWF0LCBh
> bHJlYWR5IGJhc2U2NF9lbmNvZGVkIGJ5IF93cmFwbGluZWZlZWRzKCkKCQkkdGhpcy0+YXNzZXJ0
> RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVz
> c2FnZScpLCAkZXhwZWN0KTsKCX0KLyoqCiAqIHRlc3RTbXRwU2VuZFNvY2tldCBtZXRob2QKICoK
> ICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVzdFNtdHBT
> ZW5kU29ja2V0KCkgewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1
> KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkk
> dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSRzb2NrZXQgPSYgbmV3IENh
> a2VTb2NrZXQoYXJyYXlfbWVyZ2UoYXJyYXkoJ3Byb3RvY29sJz0+J3NtdHAnKSwgJHRoaXMtPkNv
> bnRyb2xsZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnMpKTsKCQkkdGhpcy0+Q29udHJvbGxlci0+
> RW1haWxUZXN0LT5zZXRDb25uZWN0aW9uU29ja2V0KCRzb2NrZXQpOwoKCQkkdGhpcy0+YXNzZXJ0
> VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5nZXRDb25uZWN0aW9uU29ja2V0KCkp
> OwoKCQkvLyRyZXNwb25zZSA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBTZW5k
> KCdIRUxPJywgJzI1MCcpOwoJCS8vJHRoaXMtPmFzc2VydFBhdHRlcm4oJy81MDEgU3ludGF4OiBI
> RUxPIGhvc3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7
> CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHJlc3BvbnNlID0g
> JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c210cFNlbmQoJ0hFTE8gc29tZWhvc3RuYW1l
> JywgJzI1MCcpOwoJCSR0aGlzLT5hc3NlcnROb1BhdHRlcm4oJy81MDEgU3ludGF4OiBIRUxPIGhv
> c3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7Cgl9Ci8q
> KgogKiB0ZXN0U2VuZERlYnVnIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
> IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U2VuZERlYnVnKCkgewoJCSR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8g
> PSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
> PmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVt
> YWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJv
> bGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
> bWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVnJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+
> Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNz
> YWdlJykpOwoJfQovKioKICogdGVzdENvbnRlbnRTdHJpcHBpbmcgbWV0aG9kCiAqCiAqIEBhY2Nl
> c3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1bmN0aW9uIHRlc3RDb250ZW50U3RyaXBw
> aW5nKCkgewoJCSRjb250ZW50ID0gIlByZXZpb3VzIGNvbnRlbnRcbi0tYWx0LVxuQ29udGVudC1U
> eXBlQ29udGVudC1UeXBlOjogdGV4dC9odG1sOyBjaGFyc2V0Y2hhcnNldD09dXRmLThcbkNvbnRl
> bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQiOwoJCSRjb250ZW50IC49ICJcblxuPHA+TXkgb3du
> IGh0bWwgY29udGVudDwvcD4iOwoKCQkkcmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+c3RyaXAoJGNvbnRlbnQsIHRydWUpOwoJCSRleHBlY3RlZCA9ICJQcmV2aW91cyBjb250
> ZW50XG4tLWFsdC1cbiB0ZXh0L2h0bWw7IHV0Zi04XG4gN2JpdFxuXG48cD5NeSBvd24gaHRtbCBj
> b250ZW50PC9wPiI7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCRyZXN1bHQsICRleHBlY3RlZCk7CgoJ
> CSRjb250ZW50ID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gPGEgaHJlZj0ibWFpbHRv
> OnRlc3RAZXhhbXBsZS5jb20iPmVtYWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5D
> b250cm9sbGVyLT5FbWFpbFRlc3QtPnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQg
> PSAkY29udGVudDsKCQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgkJ
> JGNvbnRlbnQgID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gJzsKCQkkY29udGVudCAu
> PSAnPGEgaHJlZj0ibWFpbHRvOnRlc3RAZXhhbXBsZS5jb20sdGVzdDJAZXhhbXBsZS5jb20iPmVt
> YWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
> PnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQgPSAkY29udGVudDsKCQkkdGhpcy0+
> YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgl9Ci8qKgogKiB0ZXN0TXVsdGlieXRl
> IG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlv
> biB0ZXN0TXVsdGlieXRlKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0
> KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2Nh
> bGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBl
> eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICfZ
> h9iw2Ycg2LHYs9in2YTYqSDYqNi52YbZiNin2YYg2LfZiNmK2YQg2YXYsdiz2YQg2YTZhNmF2LPY
> qtmE2YUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBs
> eUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUg
> PSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVn
> JzsKCgkJJHN1YmplY3QgPSAnPT9VVEYtOD9CPzJZZllzTm1ISU5peDJMUFlwOW1FMktrZzJLall1
> ZG1HMllqWXA5bUdJTmkzMllqWml0bUVJTm1GMkxFPT89JyAuICJcclxuIiAuICcgPT9VVEYtOD9C
> PzJMUFpoQ0RaaE5tRTJZWFlzOWlxMllUWmhRPT0/PSc7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
> bWFpbFRlc3QtPnNlbmRBcyA9ICd0ZXh0JzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29u
> dHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdl
> JykpOwovLwkJcHJlZ19tYXRjaCgnL1N1YmplY3Q6ICguKilIZWFkZXI6L3MnLCAkdGhpcy0+Q29u
> dHJvbGxlci0+U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICRtYXRjaGVz
> KTsKLy8JCSR0aGlzLT5hc3NlcnRFcXVhbCh0cmltKCRtYXRjaGVzWzFdKSwgJHN1YmplY3QpOwoK
> CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMgPSAnaHRtbCc7CgkJJHRoaXMt
> PmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0
> aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsKLy8JCXByZWdfbWF0Y2goJy9TdWJqZWN0OiAoLiop
> SGVhZGVyOi9zJywgJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1h
> aWwubWVzc2FnZScpLCAkbWF0Y2hlcyk7Ci8vCQkkdGhpcy0+YXNzZXJ0RXF1YWwodHJpbSgkbWF0
> Y2hlc1sxXSksICRzdWJqZWN0KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2Vu
> ZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFp
> bFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7Ci8vCQlwcmVn
> X21hdGNoKCcvU3ViamVjdDogKC4qKUhlYWRlcjovcycsICR0aGlzLT5Db250cm9sbGVyLT5TZXNz
> aW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJG1hdGNoZXMpOwovLwkJJHRoaXMt
> PmFzc2VydEVxdWFsKHRyaW0oJG1hdGNoZXNbMV0pLCAkc3ViamVjdCk7Cgl9Ci8qKgogKiB1bmRv
> Y3VtZW50ZWQgZnVuY3Rpb24KICoKICogQHJldHVybiB2b2lkCiAqIEBhY2Nlc3MgcHVibGljCiAq
> LwoJZnVuY3Rpb24gdGVzdFNlbmRBc0lzTm90SWdub3JlZElmQXR0YWNobWVudHNQcmVzZW50KCkg
> ewoJCWlmICgkdGhpcy0+c2tpcElmKCFAZnNvY2tvcGVuKFNNVFBfU0VSVkVSLCAyNSksICclcyBO
> byBTTVRQIHNlcnZlciBydW5uaW5nIG9uICcgLiBTTVRQX1NFUlZFUikpIHsKCQkJCQlyZXR1cm47
> CgkJfQoJCQoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMt
> PkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0
> aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7
> CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICdBdHRhY2htZW50IFRl
> c3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBl
> eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBu
> dWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwkv
> LydkZWJ1Zycgb3IgJ21haWwnIHdvdWxkIGZhaWwKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
> ZXN0LT5hdHRhY2htZW50cyA9IGFycmF5KF9fRklMRV9fKTsKCQkkYm9keSA9ICc8cD5UaGlzIGlz
> IHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlPC9wPic7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
> bFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJv
> bGxlci0+RW1haWxUZXN0LT5zZW5kKCRib2R5KSk7Ci8vCQkkbXNnID0gJHRoaXMtPkNvbnRyb2xs
> ZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVzc2FnZScpOwovLwkJJHRoaXMtPmFz
> c2VydE5vUGF0dGVybignL3RleHRcL3BsYWluLycsICRtc2cpOwovLwkJJHRoaXMtPmFzc2VydFBh
> dHRlcm4oJy90ZXh0XC9odG1sLycsICRtc2cpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
> ZXN0LT5zZW5kQXMgPSAndGV4dCc7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
> ZXItPkVtYWlsVGVzdC0+c2VuZCgkYm9keSkpOwovLwkJJG1zZyA9ICR0aGlzLT5Db250cm9sbGVy
> LT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKTsKLy8JCSR0aGlzLT5hc3Nl
> cnRQYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9QYXR0
> ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
> dC0+c2VuZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVy
> LT5FbWFpbFRlc3QtPnNlbmQoJGJvZHkpKTsKLy8JCSRtc2cgPSAkdGhpcy0+Q29udHJvbGxlci0+
> U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyk7Ci8vCi8vCQkkdGhpcy0+YXNz
> ZXJ0Tm9QYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9Q
> YXR0ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKLy8JCSR0aGlzLT5hc3NlcnRQYXR0ZXJuKCcv
> bXVsdGlwYXJ0XC9hbHRlcm5hdGl2ZS8nLCAkbXNnKTsKCX0KLyoqCiAqIHRlc3RSZXNldCBtZXRo
> b2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVz
> dFJlc2V0KCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRlbXBsYXRlID0gJ3Rl
> c3RfdGVtcGxhdGUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Rlc3Qu
> cmVjaXBpZW50QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5m
> cm9tID0gJ3Rlc3Quc2VuZGVyQGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1h
> aWxUZXN0LT5yZXBseVRvID0gJ3Rlc3QucmVwbHl0b0BleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
> bnRyb2xsZXItPkVtYWlsVGVzdC0+cmV0dXJuID0gJ3Rlc3QucmV0dXJuQGV4YW1wbGUuY29tJzsK
> CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5jYyA9IGFycmF5KCdjYzFAZXhhbXBsZS5j
> b20nLCAnY2MyQGV4YW1wbGUuY29tJyk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
> YmNjID0gYXJyYXkoJ2JjYzFAZXhhbXBsZS5jb20nLCAnYmNjMkBleGFtcGxlLmNvbScpOwoJCSR0
> aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1YmplY3QgPSAnVGVzdCBzdWJqZWN0JzsKCQkk
> dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zID0gJ1gtYWRkaXRp
> b25hbC1oZWFkZXInOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0g
> J3NtdHAnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydob3N0
> J10gPSAnYmxhaCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+YXR0YWNobWVudHMg
> PSBhcnJheSgnYXR0YWNobWVudDEnLCAnYXR0YWNobWVudDInKTsKCgkJJHRoaXMtPmFzc2VydEZh
> bHNlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1Nob3VsZCBub3Qgd29yaycp
> KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+cmVzZXQoKTsKCgkJJHRoaXMtPmFz
> c2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUpOwoJCSR0aGlz
> LT5hc3NlcnROdWxsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvKTsKCQkkdGhpcy0+
> YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tKTsKCQkkdGhpcy0+
> YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXBseVRvKTsKCQkkdGhp
> cy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXR1cm4pOwoJCSR0
> aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Y2MsIGFy
> cmF5KCkpOwoJCSR0aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
> VGVzdC0+YmNjLCBhcnJheSgpKTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxl
> ci0+RW1haWxUZXN0LT5zdWJqZWN0KTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJv
> bGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zKTsKCQkkdGhpcy0+YXNzZXJ0SWRlbnRp
> Y2FsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmdldEhlYWRlcnMoKSwgYXJyYXkoKSk7
> CgkJJHRoaXMtPmFzc2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Z2V0Qm91
> bmRhcnkoKSk7CgkJJHRoaXMtPmFzc2VydElkZW50aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1h
> aWxUZXN0LT5nZXRNZXNzYWdlKCksIGFycmF5KCkpOwoJCSR0aGlzLT5hc3NlcnROdWxsKCR0aGlz
> LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7CgkJJHRoaXMtPmFzc2VydElkZW50
> aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hdHRhY2htZW50cywgYXJyYXkoKSk7
> Cgl9Ci8qKgogKiBvc0ZpeCBtZXRob2QKICoKICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAqIEBh
> Y2Nlc3MgcHJpdmF0ZQogKiBAcmV0dXJuIHN0cmluZwogKi8KCWZ1bmN0aW9uIF9fb3NGaXgoJHN0
> cmluZykgewoJCXJldHVybiBzdHJfcmVwbGFjZShhcnJheSgiXHJcbiIsICJcciIpLCAiXG4iLCAk
> c3RyaW5nKTsKCX0KfQo/Pg==
> --026a2bea167826bf111c47c4213d68b1--

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message