Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:53074 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 65966 invoked from network); 6 Jun 2011 19:41:27 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 6 Jun 2011 19:41:27 -0000 Authentication-Results: pb1.pair.com header.from=hannes.magnusson@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=hannes.magnusson@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 74.125.82.54 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: hannes.magnusson@gmail.com X-Host-Fingerprint: 74.125.82.54 mail-ww0-f54.google.com Received: from [74.125.82.54] ([74.125.82.54:55597] helo=mail-ww0-f54.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 94/4D-23189-66D2DED4 for ; Mon, 06 Jun 2011 15:41:26 -0400 Received: by wwd20 with SMTP id 20so3885011wwd.11 for ; Mon, 06 Jun 2011 12:41:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=jaEmYlyeBFl2Hd31RljVUSP9BI7+R2nT2uHiQ835sSU=; b=oghXW367hbSZJkovDAI0k7VuBGlAH7oDyRwMXwgtUmJHnnWsMo/dRtZ4VUDDZqBlPQ Vdp/zXdKRlGCyEZg90WMzWjuIL0TqgfkEV//ZgJK7FzxzCHne8NiWElFjnCQRjTiVsBz jEvtheDcmHRCToXds9wN/Fg/rb2FSpLXbQtJs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=EudREy7kfTlubiqn/houEvwpsvh3eFbCGKWbKOenxR+Z7NqhOKsz0OM6YubShqis/H sNGgUq4rCkW1gJHsdhVOmUuQ8EmSX5goMB6qYt2BaEYF8kedo+V95HjHYH13oSx1eb3/ KMZkCEDffoC7PtGhf4iauRH4dDbtcG+WdiLng= MIME-Version: 1.0 Received: by 10.216.183.65 with SMTP id p43mr2898535wem.35.1307389283401; Mon, 06 Jun 2011 12:41:23 -0700 (PDT) Received: by 10.216.50.212 with HTTP; Mon, 6 Jun 2011 12:41:23 -0700 (PDT) Date: Mon, 6 Jun 2011 21:41:23 +0200 Message-ID: To: PHP Development Content-Type: multipart/mixed; boundary=0016e652e242d201d904a51049e9 Subject: Callable typehint From: hannes.magnusson@gmail.com (Hannes Magnusson) --0016e652e242d201d904a51049e9 Content-Type: text/plain; charset=UTF-8 Hi As quickly mentioned in the '$arr = array('Hello', 'world'); $arr();' thread[1], we are hitting the need for a callable typehint. See attached patch+phpt; Any objections to include it in 5.4? -Hannes [1] http://php.markmail.org/message/gdas65h3im52sleg --0016e652e242d201d904a51049e9 Content-Type: text/plain; charset=US-ASCII; name="is_callable.patch.txt" Content-Disposition: attachment; filename="is_callable.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_goltr0070 SW5kZXg6IFplbmQvemVuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFplbmQvemVuZC5oCShyZXZpc2lvbiAz MTE4NjcpCisrKyBaZW5kL3plbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNTczLDYgKzU3Myw3IEBA CiAjZGVmaW5lIElTX1JFU09VUkNFCTcKICNkZWZpbmUgSVNfQ09OU1RBTlQJOAogI2RlZmluZSBJ U19DT05TVEFOVF9BUlJBWQk5CisjZGVmaW5lIElTX0NBTExBQkxFCTEwCiAKIC8qIFVnbHkgaGFj ayB0byBzdXBwb3J0IGNvbnN0YW50cyBhcyBzdGF0aWMgYXJyYXkgaW5kaWNlcyAqLwogI2RlZmlu ZSBJU19DT05TVEFOVF9UWVBFX01BU0sJCTB4MDBmCkluZGV4OiBaZW5kL3plbmRfZXhlY3V0ZS5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIFplbmQvemVuZF9leGVjdXRlLmMJKHJldmlzaW9uIDMxMTg2NykKKysr IFplbmQvemVuZF9leGVjdXRlLmMJKHdvcmtpbmcgY29weSkKQEAgLTYyNiwxMyArNjI2LDI0IEBA CiAJCQluZWVkX21zZyA9IHplbmRfdmVyaWZ5X2FyZ19jbGFzc19raW5kKGN1cl9hcmdfaW5mbywg ZmV0Y2hfdHlwZSwgJmNsYXNzX25hbWUsICZjZSBUU1JNTFNfQ0MpOwogCQkJcmV0dXJuIHplbmRf dmVyaWZ5X2FyZ19lcnJvcihFX1JFQ09WRVJBQkxFX0VSUk9SLCB6ZiwgYXJnX251bSwgbmVlZF9t c2csIGNsYXNzX25hbWUsIHplbmRfenZhbF90eXBlX25hbWUoYXJnKSwgIiIgVFNSTUxTX0NDKTsK IAkJfQotCX0gZWxzZSBpZiAoY3VyX2FyZ19pbmZvLT50eXBlX2hpbnQgJiYgY3VyX2FyZ19pbmZv LT50eXBlX2hpbnQgPT0gSVNfQVJSQVkpIHsKLQkJaWYgKCFhcmcpIHsKLQkJCXJldHVybiB6ZW5k X3ZlcmlmeV9hcmdfZXJyb3IoRV9SRUNPVkVSQUJMRV9FUlJPUiwgemYsIGFyZ19udW0sICJiZSBv ZiB0aGUgdHlwZSBhcnJheSIsICIiLCAibm9uZSIsICIiIFRTUk1MU19DQyk7Ci0JCX0KKwl9IGVs c2UgaWYgKGN1cl9hcmdfaW5mby0+dHlwZV9oaW50KSB7CisJCXN3aXRjaChjdXJfYXJnX2luZm8t PnR5cGVfaGludCkgeworCQkJY2FzZSBJU19BUlJBWToKKwkJCWlmICghYXJnKSB7CisJCQkJcmV0 dXJuIHplbmRfdmVyaWZ5X2FyZ19lcnJvcihFX1JFQ09WRVJBQkxFX0VSUk9SLCB6ZiwgYXJnX251 bSwgImJlIG9mIHRoZSB0eXBlIGFycmF5IiwgIiIsICJub25lIiwgIiIgVFNSTUxTX0NDKTsKKwkJ CX0KIAotCQlpZiAoWl9UWVBFX1AoYXJnKSAhPSBJU19BUlJBWSAmJiAoWl9UWVBFX1AoYXJnKSAh PSBJU19OVUxMIHx8ICFjdXJfYXJnX2luZm8tPmFsbG93X251bGwpKSB7Ci0JCQlyZXR1cm4gemVu ZF92ZXJpZnlfYXJnX2Vycm9yKEVfUkVDT1ZFUkFCTEVfRVJST1IsIHpmLCBhcmdfbnVtLCAiYmUg b2YgdGhlIHR5cGUgYXJyYXkiLCAiIiwgemVuZF96dmFsX3R5cGVfbmFtZShhcmcpLCAiIiBUU1JN TFNfQ0MpOworCQkJaWYgKFpfVFlQRV9QKGFyZykgIT0gSVNfQVJSQVkgJiYgKFpfVFlQRV9QKGFy ZykgIT0gSVNfTlVMTCB8fCAhY3VyX2FyZ19pbmZvLT5hbGxvd19udWxsKSkgeworCQkJCXJldHVy biB6ZW5kX3ZlcmlmeV9hcmdfZXJyb3IoRV9SRUNPVkVSQUJMRV9FUlJPUiwgemYsIGFyZ19udW0s ICJiZSBvZiB0aGUgdHlwZSBhcnJheSIsICIiLCB6ZW5kX3p2YWxfdHlwZV9uYW1lKGFyZyksICIi IFRTUk1MU19DQyk7CisJCQl9CisJCQlicmVhazsKKwkJCWNhc2UgSVNfQ0FMTEFCTEU6CisJCQlp ZiAoIXplbmRfaXNfY2FsbGFibGUoYXJnLCBJU19DQUxMQUJMRV9DSEVDS19TSUxFTlQsIE5VTEwp ICYmIChaX1RZUEVfUChhcmcpICE9IElTX05VTEwgfHwgIWN1cl9hcmdfaW5mby0+YWxsb3dfbnVs bCkpIHsKKwkJCQlyZXR1cm4gemVuZF92ZXJpZnlfYXJnX2Vycm9yKEVfUkVDT1ZFUkFCTEVfRVJS T1IsIHpmLCBhcmdfbnVtLCAiYmUgY2FsbGFibGUiLCAiIiwgemVuZF96dmFsX3R5cGVfbmFtZShh cmcpLCAiIiBUU1JNTFNfQ0MpOworCQkJfQorCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJemVu ZF9lcnJvcihFX0VSUk9SLCAiVW5rbm93biB0eXBlaGludCIpOwogCQl9CiAJfQogCXJldHVybiAx OwpJbmRleDogWmVuZC96ZW5kX2xhbmd1YWdlX3NjYW5uZXIubAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBaZW5k L3plbmRfbGFuZ3VhZ2Vfc2Nhbm5lci5sCShyZXZpc2lvbiAzMTE4NjcpCisrKyBaZW5kL3plbmRf bGFuZ3VhZ2Vfc2Nhbm5lci5sCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEwLDYgKzEzMTAsMTAgQEAK IAlyZXR1cm4gVF9BUlJBWTsKIH0KIAorPFNUX0lOX1NDUklQVElORz4iY2FsbGFibGUiIHsKKyBy ZXR1cm4gVF9DQUxMQUJMRTsKK30KKwogPFNUX0lOX1NDUklQVElORz4iKysiIHsKIAlyZXR1cm4g VF9JTkM7CiB9CkluZGV4OiBaZW5kL3plbmRfY29tcGlsZS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFplbmQv emVuZF9jb21waWxlLmMJKHJldmlzaW9uIDMxMTg2NykKKysrIFplbmQvemVuZF9jb21waWxlLmMJ KHdvcmtpbmcgY29weSkKQEAgLTE4NDksMjggKzE4NDksNDAgQEAKIAkJY3VyX2FyZ19pbmZvLT5h bGxvd19udWxsID0gMDsKIAogCQlpZiAoY2xhc3NfdHlwZS0+dS5jb25zdGFudC50eXBlICE9IElT X05VTEwpIHsKLQkJCWN1cl9hcmdfaW5mby0+dHlwZV9oaW50ID0gSVNfT0JKRUNUOwotCQkJaWYg KFpFTkRfRkVUQ0hfQ0xBU1NfREVGQVVMVCA9PSB6ZW5kX2dldF9jbGFzc19mZXRjaF90eXBlKFpf U1RSVkFMKGNsYXNzX3R5cGUtPnUuY29uc3RhbnQpLCBaX1NUUkxFTihjbGFzc190eXBlLT51LmNv bnN0YW50KSkpIHsKLQkJCQl6ZW5kX3Jlc29sdmVfY2xhc3NfbmFtZShjbGFzc190eXBlLCAmb3Bs aW5lLT5leHRlbmRlZF92YWx1ZSwgMSBUU1JNTFNfQ0MpOwotCQkJfQotCQkJY2xhc3NfdHlwZS0+ dS5jb25zdGFudC52YWx1ZS5zdHIudmFsID0gemVuZF9uZXdfaW50ZXJuZWRfc3RyaW5nKGNsYXNz X3R5cGUtPnUuY29uc3RhbnQudmFsdWUuc3RyLnZhbCwgY2xhc3NfdHlwZS0+dS5jb25zdGFudC52 YWx1ZS5zdHIubGVuICsgMSwgMSBUU1JNTFNfQ0MpOwotCQkJY3VyX2FyZ19pbmZvLT5jbGFzc19u YW1lID0gY2xhc3NfdHlwZS0+dS5jb25zdGFudC52YWx1ZS5zdHIudmFsOwotCQkJY3VyX2FyZ19p bmZvLT5jbGFzc19uYW1lX2xlbiA9IGNsYXNzX3R5cGUtPnUuY29uc3RhbnQudmFsdWUuc3RyLmxl bjsKLQkJCWlmIChvcCA9PSBaRU5EX1JFQ1ZfSU5JVCkgewotCQkJCWlmIChaX1RZUEUoaW5pdGlh bGl6YXRpb24tPnUuY29uc3RhbnQpID09IElTX05VTEwgfHwgKFpfVFlQRShpbml0aWFsaXphdGlv bi0+dS5jb25zdGFudCkgPT0gSVNfQ09OU1RBTlQgJiYgIXN0cmNhc2VjbXAoWl9TVFJWQUwoaW5p dGlhbGl6YXRpb24tPnUuY29uc3RhbnQpLCAiTlVMTCIpKSkgewotCQkJCQljdXJfYXJnX2luZm8t PmFsbG93X251bGwgPSAxOwotCQkJCX0gZWxzZSB7Ci0JCQkJCXplbmRfZXJyb3IoRV9DT01QSUxF X0VSUk9SLCAiRGVmYXVsdCB2YWx1ZSBmb3IgcGFyYW1ldGVycyB3aXRoIGEgY2xhc3MgdHlwZSBo aW50IGNhbiBvbmx5IGJlIE5VTEwiKTsKKwkJCWlmIChjbGFzc190eXBlLT51LmNvbnN0YW50LnR5 cGUgPT0gSVNfQVJSQVkpIHsKKwkJCQljdXJfYXJnX2luZm8tPnR5cGVfaGludCA9IElTX0FSUkFZ OworCQkJCWlmIChvcCA9PSBaRU5EX1JFQ1ZfSU5JVCkgeworCQkJCQlpZiAoWl9UWVBFKGluaXRp YWxpemF0aW9uLT51LmNvbnN0YW50KSA9PSBJU19OVUxMIHx8IChaX1RZUEUoaW5pdGlhbGl6YXRp b24tPnUuY29uc3RhbnQpID09IElTX0NPTlNUQU5UICYmICFzdHJjYXNlY21wKFpfU1RSVkFMKGlu aXRpYWxpemF0aW9uLT51LmNvbnN0YW50KSwgIk5VTEwiKSkpIHsKKwkJCQkJCWN1cl9hcmdfaW5m by0+YWxsb3dfbnVsbCA9IDE7CisJCQkJCX0gZWxzZSBpZiAoWl9UWVBFKGluaXRpYWxpemF0aW9u LT51LmNvbnN0YW50KSAhPSBJU19BUlJBWSAmJiBaX1RZUEUoaW5pdGlhbGl6YXRpb24tPnUuY29u c3RhbnQpICE9IElTX0NPTlNUQU5UX0FSUkFZKSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfQ09NUElM RV9FUlJPUiwgIkRlZmF1bHQgdmFsdWUgZm9yIHBhcmFtZXRlcnMgd2l0aCBhcnJheSB0eXBlIGhp bnQgY2FuIG9ubHkgYmUgYW4gYXJyYXkgb3IgTlVMTCIpOworCQkJCQl9CiAJCQkJfQotCQkJfQot CQl9IGVsc2UgewotCQkJY3VyX2FyZ19pbmZvLT50eXBlX2hpbnQgPSBJU19BUlJBWTsKLQkJCWlm IChvcCA9PSBaRU5EX1JFQ1ZfSU5JVCkgewotCQkJCWlmIChaX1RZUEUoaW5pdGlhbGl6YXRpb24t PnUuY29uc3RhbnQpID09IElTX05VTEwgfHwgKFpfVFlQRShpbml0aWFsaXphdGlvbi0+dS5jb25z dGFudCkgPT0gSVNfQ09OU1RBTlQgJiYgIXN0cmNhc2VjbXAoWl9TVFJWQUwoaW5pdGlhbGl6YXRp b24tPnUuY29uc3RhbnQpLCAiTlVMTCIpKSkgewotCQkJCQljdXJfYXJnX2luZm8tPmFsbG93X251 bGwgPSAxOwotCQkJCX0gZWxzZSBpZiAoWl9UWVBFKGluaXRpYWxpemF0aW9uLT51LmNvbnN0YW50 KSAhPSBJU19BUlJBWSAmJiBaX1RZUEUoaW5pdGlhbGl6YXRpb24tPnUuY29uc3RhbnQpICE9IElT X0NPTlNUQU5UX0FSUkFZKSB7Ci0JCQkJCXplbmRfZXJyb3IoRV9DT01QSUxFX0VSUk9SLCAiRGVm YXVsdCB2YWx1ZSBmb3IgcGFyYW1ldGVycyB3aXRoIGFycmF5IHR5cGUgaGludCBjYW4gb25seSBi ZSBhbiBhcnJheSBvciBOVUxMIik7CisJCQl9IGVsc2UgaWYgKGNsYXNzX3R5cGUtPnUuY29uc3Rh bnQudHlwZSA9PSBJU19DQUxMQUJMRSkgeworICAgICAgICAgICAgICAgIGNoYXIgKmNhbGxhYmxl X25hbWU7CisJCQkJY3VyX2FyZ19pbmZvLT50eXBlX2hpbnQgPSBJU19DQUxMQUJMRTsKKwkJCQlp ZiAob3AgPT0gWkVORF9SRUNWX0lOSVQpIHsKKwkJCQkJaWYgKFpfVFlQRShpbml0aWFsaXphdGlv bi0+dS5jb25zdGFudCkgPT0gSVNfTlVMTCB8fCAoWl9UWVBFKGluaXRpYWxpemF0aW9uLT51LmNv bnN0YW50KSA9PSBJU19DT05TVEFOVCAmJiAhc3RyY2FzZWNtcChaX1NUUlZBTChpbml0aWFsaXph dGlvbi0+dS5jb25zdGFudCksICJOVUxMIikpKSB7CisJCQkJCQljdXJfYXJnX2luZm8tPmFsbG93 X251bGwgPSAxOworCQkJCQl9IGVsc2UgeworCQkJCQkJemVuZF9lcnJvcihFX0NPTVBJTEVfRVJS T1IsICJEZWZhdWx0IHZhbHVlIGZvciBwYXJhbWV0ZXJzIHdpdGggY2FsbGFibGUgdHlwZSBoaW50 IGNhbiBvbmx5IGJlIE5VTEwiKTsKKwkJCQkJfQogCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJY3Vy X2FyZ19pbmZvLT50eXBlX2hpbnQgPSBJU19PQkpFQ1Q7CisJCQkJaWYgKFpFTkRfRkVUQ0hfQ0xB U1NfREVGQVVMVCA9PSB6ZW5kX2dldF9jbGFzc19mZXRjaF90eXBlKFpfU1RSVkFMKGNsYXNzX3R5 cGUtPnUuY29uc3RhbnQpLCBaX1NUUkxFTihjbGFzc190eXBlLT51LmNvbnN0YW50KSkpIHsKKwkJ CQkJemVuZF9yZXNvbHZlX2NsYXNzX25hbWUoY2xhc3NfdHlwZSwgJm9wbGluZS0+ZXh0ZW5kZWRf dmFsdWUsIDEgVFNSTUxTX0NDKTsKKwkJCQl9CisJCQkJY2xhc3NfdHlwZS0+dS5jb25zdGFudC52 YWx1ZS5zdHIudmFsID0gemVuZF9uZXdfaW50ZXJuZWRfc3RyaW5nKGNsYXNzX3R5cGUtPnUuY29u c3RhbnQudmFsdWUuc3RyLnZhbCwgY2xhc3NfdHlwZS0+dS5jb25zdGFudC52YWx1ZS5zdHIubGVu ICsgMSwgMSBUU1JNTFNfQ0MpOworCQkJCWN1cl9hcmdfaW5mby0+Y2xhc3NfbmFtZSA9IGNsYXNz X3R5cGUtPnUuY29uc3RhbnQudmFsdWUuc3RyLnZhbDsKKwkJCQljdXJfYXJnX2luZm8tPmNsYXNz X25hbWVfbGVuID0gY2xhc3NfdHlwZS0+dS5jb25zdGFudC52YWx1ZS5zdHIubGVuOworCQkJCWlm IChvcCA9PSBaRU5EX1JFQ1ZfSU5JVCkgeworCQkJCQlpZiAoWl9UWVBFKGluaXRpYWxpemF0aW9u LT51LmNvbnN0YW50KSA9PSBJU19OVUxMIHx8IChaX1RZUEUoaW5pdGlhbGl6YXRpb24tPnUuY29u c3RhbnQpID09IElTX0NPTlNUQU5UICYmICFzdHJjYXNlY21wKFpfU1RSVkFMKGluaXRpYWxpemF0 aW9uLT51LmNvbnN0YW50KSwgIk5VTEwiKSkpIHsKKwkJCQkJCWN1cl9hcmdfaW5mby0+YWxsb3df bnVsbCA9IDE7CisJCQkJCX0gZWxzZSB7CisJCQkJCQl6ZW5kX2Vycm9yKEVfQ09NUElMRV9FUlJP UiwgIkRlZmF1bHQgdmFsdWUgZm9yIHBhcmFtZXRlcnMgd2l0aCBhIGNsYXNzIHR5cGUgaGludCBj YW4gb25seSBiZSBOVUxMIik7CisJCQkJCX0KKwkJCQl9CiAJCQl9CiAJCX0KIAl9CkluZGV4OiBa ZW5kL3plbmRfbGFuZ3VhZ2VfcGFyc2VyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gWmVuZC96ZW5kX2xhbmd1 YWdlX3BhcnNlci55CShyZXZpc2lvbiAzMTE4NjcpCisrKyBaZW5kL3plbmRfbGFuZ3VhZ2VfcGFy c2VyLnkJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQAogJXRva2VuIFRfRE9VQkxF X0FSUk9XCiAldG9rZW4gVF9MSVNUCiAldG9rZW4gVF9BUlJBWQorJXRva2VuIFRfQ0FMTEFCTEUK ICV0b2tlbiBUX0NMQVNTX0MKICV0b2tlbiBUX01FVEhPRF9DCiAldG9rZW4gVF9GVU5DX0MKQEAg LTQ2Niw3ICs0NjcsOCBAQAogCiBvcHRpb25hbF9jbGFzc190eXBlOgogCQkvKiBlbXB0eSAqLwkJ CQkJeyAkJC5vcF90eXBlID0gSVNfVU5VU0VEOyB9Ci0JfAlUX0FSUkFZCQkJCQkJeyAkJC5vcF90 eXBlID0gSVNfQ09OU1Q7IFpfVFlQRSgkJC51LmNvbnN0YW50KT1JU19OVUxMOyB9CisJfAlUX0FS UkFZCQkJCQkJeyAkJC5vcF90eXBlID0gSVNfQ09OU1Q7IFpfVFlQRSgkJC51LmNvbnN0YW50KT1J U19BUlJBWTsgfQorCXwJVF9DQUxMQUJMRQkJCQl7ICQkLm9wX3R5cGUgPSBJU19DT05TVDsgWl9U WVBFKCQkLnUuY29uc3RhbnQpPUlTX0NBTExBQkxFOyB9CiAJfAlmdWxseV9xdWFsaWZpZWRfY2xh c3NfbmFtZQkJCXsgJCQgPSAkMTsgfQogOwogCkluZGV4OiBaZW5kL3Rlc3RzL2NhbGxhYmxlX3R5 cGVfaGludF8wMDEucGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBaZW5kL3Rlc3RzL2NhbGxhYmxlX3R5cGVf aGludF8wMDEucGhwdAkocmV2aXNpb24gMCkKKysrIFplbmQvdGVzdHMvY2FsbGFibGVfdHlwZV9o aW50XzAwMS5waHB0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACistLVRFU1QtLQorY2Fs bGFibGUgdHlwZSBoaW50IzAwMQorLS1GSUxFLS0KKzw/cGhwCisKK2NsYXNzIGJhciB7CisgICAg ZnVuY3Rpb24gYmF6KCkge30KKyAgICBzdGF0aWMgZnVuY3Rpb24gZm9vKCkge30KK30KK2Z1bmN0 aW9uIGZvbyhjYWxsYWJsZSAkYmFyKSB7CisgICAgdmFyX2R1bXAoJGJhcik7Cit9CiskY2xvc3Vy ZSA9IGZ1bmN0aW9uICgpIHt9OworCitmb28oInN0cnBvcyIpOworZm9vKCJmb28iKTsKK2Zvbyhh cnJheSgiYmFyIiwgImJheiIpKTsKK2ZvbyhhcnJheSgiYmFyIiwgImZvbyIpKTsKK2ZvbygkY2xv c3VyZSk7CistLUVYUEVDVEYtLQorc3RyaW5nKDYpICJzdHJwb3MiCitzdHJpbmcoMykgImZvbyIK KworU3RyaWN0IFN0YW5kYXJkczogTm9uLXN0YXRpYyBtZXRob2QgYmFyOjpiYXooKSBzaG91bGQg bm90IGJlIGNhbGxlZCBzdGF0aWNhbGx5IGluICVzY2FsbGFibGVfdHlwZV9oaW50XzAwMS5waHAg b24gbGluZSAlZAorYXJyYXkoMikgeworICBbMF09PgorICBzdHJpbmcoMykgImJhciIKKyAgWzFd PT4KKyAgc3RyaW5nKDMpICJiYXoiCit9CithcnJheSgyKSB7CisgIFswXT0+CisgIHN0cmluZygz KSAiYmFyIgorICBbMV09PgorICBzdHJpbmcoMykgImZvbyIKK30KK29iamVjdChDbG9zdXJlKSMl ZCAoMCkgeworfQorCisK --0016e652e242d201d904a51049e9--