Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:47669 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 90011 invoked from network); 28 Mar 2010 14:56:24 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 28 Mar 2010 14:56:24 -0000 Authentication-Results: pb1.pair.com smtp.mail=kontakt@beberlei.de; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=kontakt@beberlei.de; sender-id=unknown Received-SPF: error (pb1.pair.com: domain beberlei.de from 87.230.78.165 cause and error) X-PHP-List-Original-Sender: kontakt@beberlei.de X-Host-Fingerprint: 87.230.78.165 www.mysqlusers.de Linux 2.5 (sometimes 2.4) (4) Received: from [87.230.78.165] ([87.230.78.165:41437] helo=beberlei.de) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 08/B9-06536-51E6FAB4 for ; Sun, 28 Mar 2010 09:56:23 -0500 Received: by beberlei.de (Postfix, from userid 33) id 3C99916AC3EA; Sun, 28 Mar 2010 16:56:19 +0200 (CEST) To: MIME-Version: 1.0 Date: Sun, 28 Mar 2010 16:56:19 +0200 Message-ID: <2ee8cd453723d98edfa4abce48460b33@beberlei.de> X-Sender: kontakt@beberlei.de User-Agent: RoundCube Webmail/0.3.1 Content-Type: multipart/mixed; boundary="=_03b4dd57c034d3257c62e1b4263e820b" Subject: Patch: Reflection Exception Messages From: kontakt@beberlei.de (Benjamin Eberlei) --=_03b4dd57c034d3257c62e1b4263e820b Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Hello everyone, I have created a simple patch that extends PHP ReflectionException Messages in the case of a missing property or method when calling: $reflClass->getProperty('notKnown'); $reflClass->getMethod('notKnown'); Currently, in both cases only the unknown property and method names are referenced but not the class-name. In our Doctrine 2 code basis, where we use Reflection heavily this can be pretty annoying for users to debug, since there is no context to check against. The interesting portion of the patch is here, the whole patch file contains changes to the test-cases also: Index: ext/reflection/php_reflection.c =================================================================== --- ext/reflection/php_reflection.c (revision 296963) +++ ext/reflection/php_reflection.c (working copy) @@ -3425,7 +3425,7 @@ } else { efree(lc_name); zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, - "Method %s does not exist", name); + "Method %s::%s() does not exist", ce->name, name); return; } } @@ -3602,7 +3602,7 @@ } } zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, - "Property %s does not exist", name); + "Property %s::%s does not exist", ce->name, name); } /* }}} * The patch is against SVN trunk. greetings, Benjamin --=_03b4dd57c034d3257c62e1b4263e820b Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8; name=reflection_exception_message.diff; Content-Disposition: attachment; filename=reflection_exception_message.diff; SW5kZXg6IGV4dC9yZWZsZWN0aW9uL3Rlc3RzL1JlZmxlY3Rpb25DbGFzc19nZXRQcm9wZXJ0eV8w MDIucGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBleHQvcmVmbGVjdGlvbi90ZXN0cy9SZWZsZWN0aW9uQ2xh c3NfZ2V0UHJvcGVydHlfMDAyLnBocHQJKHJldmlzaW9uIDI5Njk2MykKKysrIGV4dC9yZWZsZWN0 aW9uL3Rlc3RzL1JlZmxlY3Rpb25DbGFzc19nZXRQcm9wZXJ0eV8wMDIucGhwdAkod29ya2luZyBj b3B5KQpAQCAtNjAsMTAgKzYwLDEwIEBACiAKIFdhcm5pbmc6IFJlZmxlY3Rpb25DbGFzczo6Z2V0 UHJvcGVydHkoKSBleHBlY3RzIGV4YWN0bHkgMSBwYXJhbWV0ZXIsIDIgZ2l2ZW4gaW4gJXMgb24g bGluZSAxNAogTlVMTAotUHJvcGVydHkgIGRvZXMgbm90IGV4aXN0Ci1Qcm9wZXJ0eSAxIGRvZXMg bm90IGV4aXN0Ci1Qcm9wZXJ0eSAxLjUgZG9lcyBub3QgZXhpc3QKLVByb3BlcnR5IDEgZG9lcyBu b3QgZXhpc3QKK1Byb3BlcnR5IEM6OiBkb2VzIG5vdCBleGlzdAorUHJvcGVydHkgQzo6MSBkb2Vz IG5vdCBleGlzdAorUHJvcGVydHkgQzo6MS41IGRvZXMgbm90IGV4aXN0CitQcm9wZXJ0eSBDOjox IGRvZXMgbm90IGV4aXN0CiAKIFdhcm5pbmc6IFJlZmxlY3Rpb25DbGFzczo6Z2V0UHJvcGVydHko KSBleHBlY3RzIHBhcmFtZXRlciAxIHRvIGJlIHN0cmluZywgYXJyYXkgZ2l2ZW4gaW4gJXMgb24g bGluZSAzOQogTlVMTApJbmRleDogZXh0L3JlZmxlY3Rpb24vdGVzdHMvUmVmbGVjdGlvbkNsYXNz X2dldE1ldGhvZF8wMDEucGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBleHQvcmVmbGVjdGlvbi90ZXN0cy9S ZWZsZWN0aW9uQ2xhc3NfZ2V0TWV0aG9kXzAwMS5waHB0CShyZXZpc2lvbiAyOTY5NjMpCisrKyBl eHQvcmVmbGVjdGlvbi90ZXN0cy9SZWZsZWN0aW9uQ2xhc3NfZ2V0TWV0aG9kXzAwMS5waHB0CSh3 b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBACiAgIFsldXxiJSJjbGFzcyJdPT4KICAgJXVu aWNvZGV8c3RyaW5nJSg0KSAicHViZiIKIH0KLSAgLS0+IENoZWNrIGZvciBkb2VzbnRFeGlzdCgp OiBNZXRob2QgZG9lc250RXhpc3QgZG9lcyBub3QgZXhpc3QKKyAgLS0+IENoZWNrIGZvciBkb2Vz bnRFeGlzdCgpOiBNZXRob2QgcHViZjo6ZG9lc250RXhpc3QoKSBkb2VzIG5vdCBleGlzdAogUmVm bGVjdGluZyBvbiBjbGFzcyBzdWJwdWJmOiAKICAgLS0+IENoZWNrIGZvciBmKCk6IG9iamVjdChS ZWZsZWN0aW9uTWV0aG9kKSMlZCAoMikgewogICBbJXV8YiUibmFtZSJdPT4KQEAgLTg1LDcgKzg1 LDcgQEAKICAgWyV1fGIlImNsYXNzIl09PgogICAldW5pY29kZXxzdHJpbmclKDQpICJwdWJmIgog fQotICAtLT4gQ2hlY2sgZm9yIGRvZXNudEV4aXN0KCk6IE1ldGhvZCBkb2VzbnRFeGlzdCBkb2Vz IG5vdCBleGlzdAorICAtLT4gQ2hlY2sgZm9yIGRvZXNudEV4aXN0KCk6IE1ldGhvZCBzdWJwdWJm Ojpkb2VzbnRFeGlzdCgpIGRvZXMgbm90IGV4aXN0CiBSZWZsZWN0aW5nIG9uIGNsYXNzIHByb3Rm OiAKICAgLS0+IENoZWNrIGZvciBmKCk6IG9iamVjdChSZWZsZWN0aW9uTWV0aG9kKSMlZCAoMikg ewogICBbJXV8YiUibmFtZSJdPT4KQEAgLTEwNSw3ICsxMDUsNyBAQAogICBbJXV8YiUiY2xhc3Mi XT0+CiAgICV1bmljb2RlfHN0cmluZyUoNSkgInByb3RmIgogfQotICAtLT4gQ2hlY2sgZm9yIGRv ZXNudEV4aXN0KCk6IE1ldGhvZCBkb2VzbnRFeGlzdCBkb2VzIG5vdCBleGlzdAorICAtLT4gQ2hl Y2sgZm9yIGRvZXNudEV4aXN0KCk6IE1ldGhvZCBwcm90Zjo6ZG9lc250RXhpc3QoKSBkb2VzIG5v dCBleGlzdAogUmVmbGVjdGluZyBvbiBjbGFzcyBzdWJwcm90ZjogCiAgIC0tPiBDaGVjayBmb3Ig ZigpOiBvYmplY3QoUmVmbGVjdGlvbk1ldGhvZCkjJWQgKDIpIHsKICAgWyV1fGIlIm5hbWUiXT0+ CkBAIC0xMjUsNyArMTI1LDcgQEAKICAgWyV1fGIlImNsYXNzIl09PgogICAldW5pY29kZXxzdHJp bmclKDUpICJwcm90ZiIKIH0KLSAgLS0+IENoZWNrIGZvciBkb2VzbnRFeGlzdCgpOiBNZXRob2Qg ZG9lc250RXhpc3QgZG9lcyBub3QgZXhpc3QKKyAgLS0+IENoZWNrIGZvciBkb2VzbnRFeGlzdCgp OiBNZXRob2Qgc3VicHJvdGY6OmRvZXNudEV4aXN0KCkgZG9lcyBub3QgZXhpc3QKIFJlZmxlY3Rp bmcgb24gY2xhc3MgcHJpdmY6IAogICAtLT4gQ2hlY2sgZm9yIGYoKTogb2JqZWN0KFJlZmxlY3Rp b25NZXRob2QpIyVkICgyKSB7CiAgIFsldXxiJSJuYW1lIl09PgpAQCAtMTQ1LDcgKzE0NSw3IEBA CiAgIFsldXxiJSJjbGFzcyJdPT4KICAgJXVuaWNvZGV8c3RyaW5nJSg1KSAicHJpdmYiCiB9Ci0g IC0tPiBDaGVjayBmb3IgZG9lc250RXhpc3QoKTogTWV0aG9kIGRvZXNudEV4aXN0IGRvZXMgbm90 IGV4aXN0CisgIC0tPiBDaGVjayBmb3IgZG9lc250RXhpc3QoKTogTWV0aG9kIHByaXZmOjpkb2Vz bnRFeGlzdCgpIGRvZXMgbm90IGV4aXN0CiBSZWZsZWN0aW5nIG9uIGNsYXNzIHN1YnByaXZmOiAK ICAgLS0+IENoZWNrIGZvciBmKCk6IG9iamVjdChSZWZsZWN0aW9uTWV0aG9kKSMlZCAoMikgewog ICBbJXV8YiUibmFtZSJdPT4KQEAgLTE2NSw0ICsxNjUsNCBAQAogICBbJXV8YiUiY2xhc3MiXT0+ CiAgICV1bmljb2RlfHN0cmluZyUoNSkgInByaXZmIgogfQotICAtLT4gQ2hlY2sgZm9yIGRvZXNu dEV4aXN0KCk6IE1ldGhvZCBkb2VzbnRFeGlzdCBkb2VzIG5vdCBleGlzdAorICAtLT4gQ2hlY2sg Zm9yIGRvZXNudEV4aXN0KCk6IE1ldGhvZCBzdWJwcml2Zjo6ZG9lc250RXhpc3QoKSBkb2VzIG5v dCBleGlzdApJbmRleDogZXh0L3JlZmxlY3Rpb24vdGVzdHMvUmVmbGVjdGlvbkNsYXNzX2dldFBy b3BlcnR5XzAwMy5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGV4dC9yZWZsZWN0aW9uL3Rlc3RzL1JlZmxl Y3Rpb25DbGFzc19nZXRQcm9wZXJ0eV8wMDMucGhwdAkocmV2aXNpb24gMjk2OTYzKQorKysgZXh0 L3JlZmxlY3Rpb24vdGVzdHMvUmVmbGVjdGlvbkNsYXNzX2dldFByb3BlcnR5XzAwMy5waHB0CSh3 b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAKIH0KIENhbm5vdCBhY2Nlc3Mgbm9uLXB1 YmxpYyBtZW1iZXIgQzo6cHJvdEEKIC0tLSAoUmVmbGVjdGluZyBvbiBwcml2QSkgLS0tCi1Qcm9w ZXJ0eSBwcml2QSBkb2VzIG5vdCBleGlzdAorUHJvcGVydHkgQzo6cHJpdkEgZG9lcyBub3QgZXhp c3QKIC0tLSAoUmVmbGVjdGluZyBvbiBwdWJCKSAtLS0KIG9iamVjdChSZWZsZWN0aW9uUHJvcGVy dHkpIyVkICgyKSB7CiAgIFsldXxiJSJuYW1lIl09PgpAQCAtMTMwLDcgKzEzMCw3IEBACiB9CiBD YW5ub3QgYWNjZXNzIG5vbi1wdWJsaWMgbWVtYmVyIEM6OnByb3RCCiAtLS0gKFJlZmxlY3Rpbmcg b24gcHJpdkIpIC0tLQotUHJvcGVydHkgcHJpdkIgZG9lcyBub3QgZXhpc3QKK1Byb3BlcnR5IEM6 OnByaXZCIGRvZXMgbm90IGV4aXN0CiAtLS0gKFJlZmxlY3Rpbmcgb24gcHViQykgLS0tCiBvYmpl Y3QoUmVmbGVjdGlvblByb3BlcnR5KSMlZCAoMikgewogICBbJXV8YiUibmFtZSJdPT4KQEAgLTE1 Niw3ICsxNTYsNyBAQAogfQogQ2Fubm90IGFjY2VzcyBub24tcHVibGljIG1lbWJlciBDOjpwcml2 QwogLS0tIChSZWZsZWN0aW5nIG9uIGRvZXNudEV4aXN0KSAtLS0KLVByb3BlcnR5IGRvZXNudEV4 aXN0IGRvZXMgbm90IGV4aXN0CitQcm9wZXJ0eSBDOjpkb2VzbnRFeGlzdCBkb2VzIG5vdCBleGlz dAogLS0tIChSZWZsZWN0aW5nIG9uIEE6OnB1YkMpIC0tLQogb2JqZWN0KFJlZmxlY3Rpb25Qcm9w ZXJ0eSkjJWQgKDIpIHsKICAgWyV1fGIlIm5hbWUiXT0+CkBAIC0yMTQsNyArMjE0LDcgQEAKIH0K ICV1bmljb2RlfHN0cmluZyUoOSkgInB1YkMgaW4gQyIKIC0tLSAoUmVmbGVjdGluZyBvbiBjOjpQ VUJDKSAtLS0KLVByb3BlcnR5IFBVQkMgZG9lcyBub3QgZXhpc3QKK1Byb3BlcnR5IEM6OlBVQkMg ZG9lcyBub3QgZXhpc3QKIC0tLSAoUmVmbGVjdGluZyBvbiBDOjpwdWJDKSAtLS0KIG9iamVjdChS ZWZsZWN0aW9uUHJvcGVydHkpIyVkICgyKSB7CiAgIFsldXxiJSJuYW1lIl09PgpJbmRleDogZXh0 L3JlZmxlY3Rpb24vdGVzdHMvUmVmbGVjdGlvbkNsYXNzX2dldE1ldGhvZF8wMDIucGhwdAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBleHQvcmVmbGVjdGlvbi90ZXN0cy9SZWZsZWN0aW9uQ2xhc3NfZ2V0TWV0aG9k XzAwMi5waHB0CShyZXZpc2lvbiAyOTY5NjMpCisrKyBleHQvcmVmbGVjdGlvbi90ZXN0cy9SZWZs ZWN0aW9uQ2xhc3NfZ2V0TWV0aG9kXzAwMi5waHB0CSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCAr NjIsMTAgQEAKIAogV2FybmluZzogUmVmbGVjdGlvbkNsYXNzOjpnZXRNZXRob2QoKSBleHBlY3Rz IGV4YWN0bHkgMSBwYXJhbWV0ZXIsIDIgZ2l2ZW4gaW4gJXMgb24gbGluZSAxNAogTlVMTAotTWV0 aG9kICBkb2VzIG5vdCBleGlzdAotTWV0aG9kIDEgZG9lcyBub3QgZXhpc3QKLU1ldGhvZCAxLjUg ZG9lcyBub3QgZXhpc3QKLU1ldGhvZCAxIGRvZXMgbm90IGV4aXN0CitNZXRob2QgQzo6KCkgZG9l cyBub3QgZXhpc3QKK01ldGhvZCBDOjoxKCkgZG9lcyBub3QgZXhpc3QKK01ldGhvZCBDOjoxLjUo KSBkb2VzIG5vdCBleGlzdAorTWV0aG9kIEM6OjEoKSBkb2VzIG5vdCBleGlzdAogCiBXYXJuaW5n OiBSZWZsZWN0aW9uQ2xhc3M6OmdldE1ldGhvZCgpIGV4cGVjdHMgcGFyYW1ldGVyIDEgdG8gYmUg c3RyaW5nLCBhcnJheSBnaXZlbiBpbiAlcyBvbiBsaW5lIDM5CiBOVUxMCkluZGV4OiBleHQvcmVm bGVjdGlvbi90ZXN0cy9SZWZsZWN0aW9uQ2xhc3NfZ2V0UHJvcGVydHlfMDA0LnBocHQKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZXh0L3JlZmxlY3Rpb24vdGVzdHMvUmVmbGVjdGlvbkNsYXNzX2dldFByb3BlcnR5 XzAwNC5waHB0CShyZXZpc2lvbiAyOTY5NjMpCisrKyBleHQvcmVmbGVjdGlvbi90ZXN0cy9SZWZs ZWN0aW9uQ2xhc3NfZ2V0UHJvcGVydHlfMDA0LnBocHQJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3 ICsxMTIsNyBAQAogfQogQ2Fubm90IGFjY2VzcyBub24tcHVibGljIG1lbWJlciBDOjpwcm90QQog LS0tIChSZWZsZWN0aW5nIG9uIHByaXZBKSAtLS0KLVByb3BlcnR5IHByaXZBIGRvZXMgbm90IGV4 aXN0CitQcm9wZXJ0eSBDOjpwcml2QSBkb2VzIG5vdCBleGlzdAogLS0tIChSZWZsZWN0aW5nIG9u IHB1YkIpIC0tLQogb2JqZWN0KFJlZmxlY3Rpb25Qcm9wZXJ0eSkjJWQgKDIpIHsKICAgWyV1fGIl Im5hbWUiXT0+CkBAIC0xMzAsNyArMTMwLDcgQEAKIH0KIENhbm5vdCBhY2Nlc3Mgbm9uLXB1Ymxp YyBtZW1iZXIgQzo6cHJvdEIKIC0tLSAoUmVmbGVjdGluZyBvbiBwcml2QikgLS0tCi1Qcm9wZXJ0 eSBwcml2QiBkb2VzIG5vdCBleGlzdAorUHJvcGVydHkgQzo6cHJpdkIgZG9lcyBub3QgZXhpc3QK IC0tLSAoUmVmbGVjdGluZyBvbiBwdWJDKSAtLS0KIG9iamVjdChSZWZsZWN0aW9uUHJvcGVydHkp IyVkICgyKSB7CiAgIFsldXxiJSJuYW1lIl09PgpAQCAtMTU2LDcgKzE1Niw3IEBACiB9CiBDYW5u b3QgYWNjZXNzIG5vbi1wdWJsaWMgbWVtYmVyIEM6OnByaXZDCiAtLS0gKFJlZmxlY3Rpbmcgb24g ZG9lc250RXhpc3QpIC0tLQotUHJvcGVydHkgZG9lc250RXhpc3QgZG9lcyBub3QgZXhpc3QKK1By b3BlcnR5IEM6OmRvZXNudEV4aXN0IGRvZXMgbm90IGV4aXN0CiAtLS0gKFJlZmxlY3Rpbmcgb24g QTo6cHViQykgLS0tCiBvYmplY3QoUmVmbGVjdGlvblByb3BlcnR5KSMlZCAoMikgewogICBbJXV8 YiUibmFtZSJdPT4KQEAgLTIxNCw3ICsyMTQsNyBAQAogfQogJXVuaWNvZGV8c3RyaW5nJSg5KSAi cHViQyBpbiBDIgogLS0tIChSZWZsZWN0aW5nIG9uIGM6OlBVQkMpIC0tLQotUHJvcGVydHkgUFVC QyBkb2VzIG5vdCBleGlzdAorUHJvcGVydHkgQzo6UFVCQyBkb2VzIG5vdCBleGlzdAogLS0tIChS ZWZsZWN0aW5nIG9uIEM6OnB1YkMpIC0tLQogb2JqZWN0KFJlZmxlY3Rpb25Qcm9wZXJ0eSkjJWQg KDIpIHsKICAgWyV1fGIlIm5hbWUiXT0+CkluZGV4OiBleHQvcmVmbGVjdGlvbi90ZXN0cy9SZWZs ZWN0aW9uQ2xhc3NfZ2V0UHJvcGVydHlfMDAxLnBocHQKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZXh0L3JlZmxl Y3Rpb24vdGVzdHMvUmVmbGVjdGlvbkNsYXNzX2dldFByb3BlcnR5XzAwMS5waHB0CShyZXZpc2lv biAyOTY5NjMpCisrKyBleHQvcmVmbGVjdGlvbi90ZXN0cy9SZWZsZWN0aW9uQ2xhc3NfZ2V0UHJv cGVydHlfMDAxLnBocHQJKHdvcmtpbmcgY29weSkKQEAgLTcyLDggKzcyLDggQEAKICAgWyV1fGIl ImNsYXNzIl09PgogICAldW5pY29kZXxzdHJpbmclKDQpICJwdWJmIgogfQotICAtLT4gQ2hlY2sg Zm9yIEE6IFByb3BlcnR5IEEgZG9lcyBub3QgZXhpc3QKLSAgLS0+IENoZWNrIGZvciBkb2VzbnRF eGlzdDogUHJvcGVydHkgZG9lc250RXhpc3QgZG9lcyBub3QgZXhpc3QKKyAgLS0+IENoZWNrIGZv ciBBOiBQcm9wZXJ0eSBwdWJmOjpBIGRvZXMgbm90IGV4aXN0CisgIC0tPiBDaGVjayBmb3IgZG9l c250RXhpc3Q6IFByb3BlcnR5IHB1YmY6OmRvZXNudEV4aXN0IGRvZXMgbm90IGV4aXN0CiBSZWZs ZWN0aW5nIG9uIGNsYXNzIHN1YnB1YmY6IAogICAtLT4gQ2hlY2sgZm9yIHM6IG9iamVjdChSZWZs ZWN0aW9uUHJvcGVydHkpIyVkICgyKSB7CiAgIFsldXxiJSJuYW1lIl09PgpAQCAtODcsOCArODcs OCBAQAogICBbJXV8YiUiY2xhc3MiXT0+CiAgICV1bmljb2RlfHN0cmluZyUoNCkgInB1YmYiCiB9 Ci0gIC0tPiBDaGVjayBmb3IgQTogUHJvcGVydHkgQSBkb2VzIG5vdCBleGlzdAotICAtLT4gQ2hl Y2sgZm9yIGRvZXNudEV4aXN0OiBQcm9wZXJ0eSBkb2VzbnRFeGlzdCBkb2VzIG5vdCBleGlzdAor ICAtLT4gQ2hlY2sgZm9yIEE6IFByb3BlcnR5IHN1YnB1YmY6OkEgZG9lcyBub3QgZXhpc3QKKyAg LS0+IENoZWNrIGZvciBkb2VzbnRFeGlzdDogUHJvcGVydHkgc3VicHViZjo6ZG9lc250RXhpc3Qg ZG9lcyBub3QgZXhpc3QKIFJlZmxlY3Rpbmcgb24gY2xhc3MgcHJvdGY6IAogICAtLT4gQ2hlY2sg Zm9yIHM6IG9iamVjdChSZWZsZWN0aW9uUHJvcGVydHkpIyVkICgyKSB7CiAgIFsldXxiJSJuYW1l Il09PgpAQCAtMTAyLDggKzEwMiw4IEBACiAgIFsldXxiJSJjbGFzcyJdPT4KICAgJXVuaWNvZGV8 c3RyaW5nJSg1KSAicHJvdGYiCiB9Ci0gIC0tPiBDaGVjayBmb3IgQTogUHJvcGVydHkgQSBkb2Vz IG5vdCBleGlzdAotICAtLT4gQ2hlY2sgZm9yIGRvZXNudEV4aXN0OiBQcm9wZXJ0eSBkb2VzbnRF eGlzdCBkb2VzIG5vdCBleGlzdAorICAtLT4gQ2hlY2sgZm9yIEE6IFByb3BlcnR5IHByb3RmOjpB IGRvZXMgbm90IGV4aXN0CisgIC0tPiBDaGVjayBmb3IgZG9lc250RXhpc3Q6IFByb3BlcnR5IHBy b3RmOjpkb2VzbnRFeGlzdCBkb2VzIG5vdCBleGlzdAogUmVmbGVjdGluZyBvbiBjbGFzcyBzdWJw cm90ZjogCiAgIC0tPiBDaGVjayBmb3Igczogb2JqZWN0KFJlZmxlY3Rpb25Qcm9wZXJ0eSkjJWQg KDIpIHsKICAgWyV1fGIlIm5hbWUiXT0+CkBAIC0xMTcsOCArMTE3LDggQEAKICAgWyV1fGIlImNs YXNzIl09PgogICAldW5pY29kZXxzdHJpbmclKDUpICJwcm90ZiIKIH0KLSAgLS0+IENoZWNrIGZv ciBBOiBQcm9wZXJ0eSBBIGRvZXMgbm90IGV4aXN0Ci0gIC0tPiBDaGVjayBmb3IgZG9lc250RXhp c3Q6IFByb3BlcnR5IGRvZXNudEV4aXN0IGRvZXMgbm90IGV4aXN0CisgIC0tPiBDaGVjayBmb3Ig QTogUHJvcGVydHkgc3VicHJvdGY6OkEgZG9lcyBub3QgZXhpc3QKKyAgLS0+IENoZWNrIGZvciBk b2VzbnRFeGlzdDogUHJvcGVydHkgc3VicHJvdGY6OmRvZXNudEV4aXN0IGRvZXMgbm90IGV4aXN0 CiBSZWZsZWN0aW5nIG9uIGNsYXNzIHByaXZmOiAKICAgLS0+IENoZWNrIGZvciBzOiBvYmplY3Qo UmVmbGVjdGlvblByb3BlcnR5KSMlZCAoMikgewogICBbJXV8YiUibmFtZSJdPT4KQEAgLTEzMiw4 ICsxMzIsOCBAQAogICBbJXV8YiUiY2xhc3MiXT0+CiAgICV1bmljb2RlfHN0cmluZyUoNSkgInBy aXZmIgogfQotICAtLT4gQ2hlY2sgZm9yIEE6IFByb3BlcnR5IEEgZG9lcyBub3QgZXhpc3QKLSAg LS0+IENoZWNrIGZvciBkb2VzbnRFeGlzdDogUHJvcGVydHkgZG9lc250RXhpc3QgZG9lcyBub3Qg ZXhpc3QKKyAgLS0+IENoZWNrIGZvciBBOiBQcm9wZXJ0eSBwcml2Zjo6QSBkb2VzIG5vdCBleGlz dAorICAtLT4gQ2hlY2sgZm9yIGRvZXNudEV4aXN0OiBQcm9wZXJ0eSBwcml2Zjo6ZG9lc250RXhp c3QgZG9lcyBub3QgZXhpc3QKIFJlZmxlY3Rpbmcgb24gY2xhc3Mgc3VicHJpdmY6IAogICAtLT4g Q2hlY2sgZm9yIHM6IG9iamVjdChSZWZsZWN0aW9uUHJvcGVydHkpIyVkICgyKSB7CiAgIFsldXxi JSJuYW1lIl09PgpAQCAtMTQxLDYgKzE0MSw2IEBACiAgIFsldXxiJSJjbGFzcyJdPT4KICAgJXVu aWNvZGV8c3RyaW5nJSg1KSAicHJpdmYiCiB9Ci0gIC0tPiBDaGVjayBmb3IgYTogUHJvcGVydHkg YSBkb2VzIG5vdCBleGlzdAotICAtLT4gQ2hlY2sgZm9yIEE6IFByb3BlcnR5IEEgZG9lcyBub3Qg ZXhpc3QKLSAgLS0+IENoZWNrIGZvciBkb2VzbnRFeGlzdDogUHJvcGVydHkgZG9lc250RXhpc3Qg ZG9lcyBub3QgZXhpc3QKKyAgLS0+IENoZWNrIGZvciBhOiBQcm9wZXJ0eSBzdWJwcml2Zjo6YSBk b2VzIG5vdCBleGlzdAorICAtLT4gQ2hlY2sgZm9yIEE6IFByb3BlcnR5IHN1YnByaXZmOjpBIGRv ZXMgbm90IGV4aXN0CisgIC0tPiBDaGVjayBmb3IgZG9lc250RXhpc3Q6IFByb3BlcnR5IHN1YnBy aXZmOjpkb2VzbnRFeGlzdCBkb2VzIG5vdCBleGlzdApJbmRleDogZXh0L3JlZmxlY3Rpb24vdGVz dHMvYnVnNDk3MTkucGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBleHQvcmVmbGVjdGlvbi90ZXN0cy9idWc0 OTcxOS5waHB0CShyZXZpc2lvbiAyOTY5NjMpCisrKyBleHQvcmVmbGVjdGlvbi90ZXN0cy9idWc0 OTcxOS5waHB0CSh3b3JraW5nIGNvcHkpCkBAIC00MCw1ICs0MCw1IEBACiBib29sKGZhbHNlKQog Ym9vbChmYWxzZSkKIGJvb2woZmFsc2UpCi0lc3RyaW5nfHVuaWNvZGUlKDI1KSAiUHJvcGVydHkg YSBkb2VzIG5vdCBleGlzdCIKKyVzdHJpbmd8dW5pY29kZSUoMjgpICJQcm9wZXJ0eSBCOjphIGRv ZXMgbm90IGV4aXN0IgogaW50KDIpCkluZGV4OiBleHQvcmVmbGVjdGlvbi9waHBfcmVmbGVjdGlv bi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGV4dC9yZWZsZWN0aW9uL3BocF9yZWZsZWN0aW9uLmMJKHJldmlz aW9uIDI5Njk2MykKKysrIGV4dC9yZWZsZWN0aW9uL3BocF9yZWZsZWN0aW9uLmMJKHdvcmtpbmcg Y29weSkKQEAgLTM0MjUsNyArMzQyNSw3IEBACiAJfSBlbHNlIHsKIAkJZWZyZWUobGNfbmFtZSk7 CiAJCXplbmRfdGhyb3dfZXhjZXB0aW9uX2V4KHJlZmxlY3Rpb25fZXhjZXB0aW9uX3B0ciwgMCBU U1JNTFNfQ0MsIAotCQkJCSJNZXRob2QgJXMgZG9lcyBub3QgZXhpc3QiLCBuYW1lKTsKKwkJCQki TWV0aG9kICVzOjolcygpIGRvZXMgbm90IGV4aXN0IiwgY2UtPm5hbWUsIG5hbWUpOwogCQlyZXR1 cm47CiAJfQogfQpAQCAtMzYwMiw3ICszNjAyLDcgQEAKIAkJfQkJCiAJfQogCXplbmRfdGhyb3df ZXhjZXB0aW9uX2V4KHJlZmxlY3Rpb25fZXhjZXB0aW9uX3B0ciwgMCBUU1JNTFNfQ0MsIAotCQkJ IlByb3BlcnR5ICVzIGRvZXMgbm90IGV4aXN0IiwgbmFtZSk7CisJCQkiUHJvcGVydHkgJXM6OiVz IGRvZXMgbm90IGV4aXN0IiwgY2UtPm5hbWUsIG5hbWUpOwogfQogLyogfX19ICovCiAK --=_03b4dd57c034d3257c62e1b4263e820b--