Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:42472 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 30039 invoked from network); 4 Jan 2009 16:34:28 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 4 Jan 2009 16:34:28 -0000 Authentication-Results: pb1.pair.com header.from=helly@php.net; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=helly@php.net; spf=unknown; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain php.net does not designate 85.214.94.56 as permitted sender) X-PHP-List-Original-Sender: helly@php.net X-Host-Fingerprint: 85.214.94.56 aixcept.net Linux 2.6 Received: from [85.214.94.56] ([85.214.94.56:58749] helo=h1149922.serverkompetenz.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 57/A8-07052-015E0694 for ; Sun, 04 Jan 2009 11:34:27 -0500 Received: from MBOERGER-ZRH.corp.google.com (33-180.203-62.cust.bluewin.ch [62.203.180.33]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by h1149922.serverkompetenz.net (Postfix) with ESMTP id B53B711DC80; Sun, 4 Jan 2009 17:34:20 +0100 (CET) Date: Sun, 4 Jan 2009 17:31:30 +0100 Reply-To: Marcus Boerger X-Priority: 3 (Normal) Message-ID: <272365052.20090104173130@marcus-boerger.de> To: internals@lists.php.net CC: Dmitry Stogov , Lukas Kahwe Smith , =?iso-8859-15?Q?Johannes_Schl=FCter?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------A216B4C7CC270C" Subject: [RFC] Closures, Lambdas and use From: helly@php.net (Marcus Boerger) ------------A216B4C7CC270C Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8bit Hello Internals, Dmitry, Lukas, Johannes, some time back (August 08) I complained about 'use' being at a weird position and not at the same place as 'global' or 'static' where I expected it. Back then Dmitry asked me to provide a patch to check out the alternative. Now during the holidys I finally found some time to change from: $f = function() use ($x) {} to: $f = function() { use $x; } Patch is attached. Comments? Best regards, Marcus ------------A216B4C7CC270C Content-Type: text/plain; name="ze2-closure-use-5.3-20090104.diff.txt" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="ze2-closure-use-5.3-20090104.diff.txt" SW5kZXg6IFplbmQvemVuZF9sYW5ndWFnZV9wYXJzZXIueQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi96ZW5kX2xhbmd1YWdlX3BhcnNlci55LHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjE2MC4yLjQuMi44LjIuMzMKZGlmZiAtdSAtcCAtZCAt cjEuMTYwLjIuNC4yLjguMi4zMyB6ZW5kX2xhbmd1YWdlX3BhcnNlci55Ci0tLSBaZW5kL3pl bmRfbGFuZ3VhZ2VfcGFyc2VyLnkJMiBKYW4gMjAwOSAyMDo0NTo0MSAtMDAwMAkxLjE2MC4y LjQuMi44LjIuMzMKKysrIFplbmQvemVuZF9sYW5ndWFnZV9wYXJzZXIueQk0IEphbiAyMDA5 IDE2OjI1OjAwIC0wMDAwCkBAIC02NDgsMTggKzY0OCwyNyBAQCBleHByX3dpdGhvdXRfdmFy aWFibGU6CiAJfAknYCcgYmFja3RpY2tzX2V4cHIgJ2AnIHsgemVuZF9kb19zaGVsbF9leGVj KCYkJCwgJiQyIFRTUk1MU19DQyk7IH0KIAl8CVRfUFJJTlQgZXhwciAgeyB6ZW5kX2RvX3By aW50KCYkJCwgJiQyIFRTUk1MU19DQyk7IH0KIAl8CWZ1bmN0aW9uIGlzX3JlZmVyZW5jZSAn KCcgeyB6ZW5kX2RvX2JlZ2luX2xhbWJkYV9mdW5jdGlvbl9kZWNsYXJhdGlvbigmJCQsICYk MSwgJDIub3BfdHlwZSwgMCBUU1JNTFNfQ0MpOyB9Ci0JCQlwYXJhbWV0ZXJfbGlzdCAnKScg bGV4aWNhbF92YXJzICd7JyBpbm5lcl9zdGF0ZW1lbnRfbGlzdCAnfScgeyAgemVuZF9kb19l bmRfZnVuY3Rpb25fZGVjbGFyYXRpb24oJiQxIFRTUk1MU19DQyk7ICQkID0gJDQ7IH0KKwkJ CXBhcmFtZXRlcl9saXN0ICcpJyAneycgbGFtYmRhX3N0YXRlbWVudF9saXN0ICd9JyB7ICB6 ZW5kX2RvX2VuZF9mdW5jdGlvbl9kZWNsYXJhdGlvbigmJDEgVFNSTUxTX0NDKTsgJCQgPSAk NDsgfQogCXwJVF9TVEFUSUMgZnVuY3Rpb24gaXNfcmVmZXJlbmNlICcoJyB7IHplbmRfZG9f YmVnaW5fbGFtYmRhX2Z1bmN0aW9uX2RlY2xhcmF0aW9uKCYkJCwgJiQyLCAkMy5vcF90eXBl LCAxIFRTUk1MU19DQyk7IH0KLQkJCXBhcmFtZXRlcl9saXN0ICcpJyBsZXhpY2FsX3ZhcnMg J3snIGlubmVyX3N0YXRlbWVudF9saXN0ICd9JyB7ICB6ZW5kX2RvX2VuZF9mdW5jdGlvbl9k ZWNsYXJhdGlvbigmJDIgVFNSTUxTX0NDKTsgJCQgPSAkNTsgfQorCQkJcGFyYW1ldGVyX2xp c3QgJyknICd7JyBsYW1iZGFfc3RhdGVtZW50X2xpc3QgJ30nIHsgIHplbmRfZG9fZW5kX2Z1 bmN0aW9uX2RlY2xhcmF0aW9uKCYkMiBUU1JNTFNfQ0MpOyAkJCA9ICQ1OyB9CiA7CiAKIGZ1 bmN0aW9uOgotCVRfRlVOQ1RJT04geyAkJC51Lm9wbGluZV9udW0gPSBDRyh6ZW5kX2xpbmVu byk7IH0KKwkJVF9GVU5DVElPTiB7ICQkLnUub3BsaW5lX251bSA9IENHKHplbmRfbGluZW5v KTsgfQogOwogCi1sZXhpY2FsX3ZhcnM6CitsYW1iZGFfc3RhdGVtZW50X2xpc3Q6CiAJCS8q IGVtcHR5ICovCi0JfAlUX1VTRSAnKCcgbGV4aWNhbF92YXJfbGlzdCAnKScKKwl8CWxhbWJk YV9zdGF0ZW1lbnRfbGlzdCAgeyB6ZW5kX2RvX2V4dGVuZGVkX2luZm8oVFNSTUxTX0MpOyB9 IGxhbWJkYV9zdGF0ZW1lbnQgeyBIQU5ETEVfSU5URVJBQ1RJVkUoKTsgfQorOworCitsYW1i ZGFfc3RhdGVtZW50OgorCQlsZXhpY2FsX3ZhcnMJeyAkJCA9ICQxOyB9CisJfAlpbm5lcl9z dGF0ZW1lbnQJeyAkJCA9ICQxOyB9CisJCisKK2xleGljYWxfdmFyczoKKwkJVF9VU0UgbGV4 aWNhbF92YXJfbGlzdCAnOycKIDsKIAogbGV4aWNhbF92YXJfbGlzdDoKSW5kZXg6IFplbmQv dGVzdHMvY2xvc3VyZV8wMDIucGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3Np dG9yeS9aZW5kRW5naW5lMi90ZXN0cy9jbG9zdXJlXzAwMi5waHB0LHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjIuMi4yCmRpZmYgLXUgLXAgLWQgLXIxLjIuMi4yIGNsb3N1cmVfMDAyLnBo cHQKLS0tIFplbmQvdGVzdHMvY2xvc3VyZV8wMDIucGhwdAkxNCBKdWwgMjAwOCAwOTo0OTow MiAtMDAwMAkxLjIuMi4yCisrKyBaZW5kL3Rlc3RzL2Nsb3N1cmVfMDAyLnBocHQJNCBKYW4g MjAwOSAxNjoyNTowMSAtMDAwMApAQCAtNSwxMSArNSwxMyBAQCBDbG9zdXJlIDAwMjogTGFt YmRhIHdpdGggbGV4aWNhbCB2YXJpYWJsCiAKICR4ID0gNDsKIAotJGxhbWJkYTEgPSBmdW5j dGlvbiAoKSB1c2UgKCR4KSB7CiskbGFtYmRhMSA9IGZ1bmN0aW9uICgpIHsKKwl1c2UgJHg7 CiAJZWNobyAiJHhcbiI7CiB9OwogCi0kbGFtYmRhMiA9IGZ1bmN0aW9uICgpIHVzZSAoJiR4 KSB7CiskbGFtYmRhMiA9IGZ1bmN0aW9uICgpIHsKKwl1c2UgJiR4OwogCWVjaG8gIiR4XG4i OwogfTsKIApJbmRleDogWmVuZC90ZXN0cy9jbG9zdXJlXzAwMy5waHB0Cj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3Rlc3RzL2Nsb3N1cmVfMDAz LnBocHQsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMi4yLjIKZGlmZiAtdSAtcCAtZCAtcjEu Mi4yLjIgY2xvc3VyZV8wMDMucGhwdAotLS0gWmVuZC90ZXN0cy9jbG9zdXJlXzAwMy5waHB0 CTE0IEp1bCAyMDA4IDA5OjQ5OjAyIC0wMDAwCTEuMi4yLjIKKysrIFplbmQvdGVzdHMvY2xv c3VyZV8wMDMucGhwdAk0IEphbiAyMDA5IDE2OjI1OjAxIC0wMDAwCkBAIC02LDExICs2LDEz IEBAIENsb3N1cmUgMDAzOiBMYW1iZGEgd2l0aCBsZXhpY2FsIHZhcmlhYmwKIGZ1bmN0aW9u IHJ1biAoKSB7CiAJJHggPSA0OwogCi0JJGxhbWJkYTEgPSBmdW5jdGlvbiAoKSB1c2UgKCR4 KSB7CisJJGxhbWJkYTEgPSBmdW5jdGlvbiAoKSB7CisJCXVzZSAkeDsKIAkJZWNobyAiJHhc biI7CiAJfTsKIAotCSRsYW1iZGEyID0gZnVuY3Rpb24gKCkgdXNlICgmJHgpIHsKKwkkbGFt YmRhMiA9IGZ1bmN0aW9uICgpIHsKKwkJdXNlICYkeDsKIAkJZWNobyAiJHhcbiI7CiAJfTsK IApJbmRleDogWmVuZC90ZXN0cy9jbG9zdXJlXzAwNC5waHB0Cj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3Rlc3RzL2Nsb3N1cmVfMDA0LnBocHQs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMi4yLjIKZGlmZiAtdSAtcCAtZCAtcjEuMi4yLjIg Y2xvc3VyZV8wMDQucGhwdAotLS0gWmVuZC90ZXN0cy9jbG9zdXJlXzAwNC5waHB0CTE0IEp1 bCAyMDA4IDA5OjQ5OjAyIC0wMDAwCTEuMi4yLjIKKysrIFplbmQvdGVzdHMvY2xvc3VyZV8w MDQucGhwdAk0IEphbiAyMDA5IDE2OjI1OjAxIC0wMDAwCkBAIC02LDExICs2LDEzIEBAIENs b3N1cmUgMDA0OiBMYW1iZGEgd2l0aCBsZXhpY2FsIHZhcmlhYmwKIGZ1bmN0aW9uIHJ1biAo KSB7CiAJJHggPSA0OwogCi0JJGxhbWJkYTEgPSBmdW5jdGlvbiAoKSB1c2UgKCR4KSB7CisJ JGxhbWJkYTEgPSBmdW5jdGlvbiAoKSB7CisJCXVzZSAkeDsKIAkJZWNobyAiJHhcbiI7CiAJ fTsKIAotCSRsYW1iZGEyID0gZnVuY3Rpb24gKCkgdXNlICgmJHgpIHsKKwkkbGFtYmRhMiA9 IGZ1bmN0aW9uICgpIHsKKwkJdXNlICYkeDsKIAkJZWNobyAiJHhcbiI7CiAJCSR4Kys7CiAJ fTsKSW5kZXg6IFplbmQvdGVzdHMvY2xvc3VyZV8wMDUucGhwdAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi90ZXN0cy9jbG9zdXJlXzAwNS5waHB0 LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIuMi4yCmRpZmYgLXUgLXAgLWQgLXIxLjIuMi4y IGNsb3N1cmVfMDA1LnBocHQKLS0tIFplbmQvdGVzdHMvY2xvc3VyZV8wMDUucGhwdAkxNCBK dWwgMjAwOCAwOTo0OTowMiAtMDAwMAkxLjIuMi4yCisrKyBaZW5kL3Rlc3RzL2Nsb3N1cmVf MDA1LnBocHQJNCBKYW4gMjAwOSAxNjoyNTowMSAtMDAwMApAQCAtMTUsNyArMTUsOCBAQCBj bGFzcyBBIHsKIAl9CiAKIAlmdW5jdGlvbiBnZXRJbmNlcigkdmFsKSB7Ci0JCXJldHVybiBm dW5jdGlvbigpIHVzZSAoJHZhbCkgeworCQlyZXR1cm4gZnVuY3Rpb24oKSB7CisJCQl1c2Ug JHZhbDsKIAkJCSR0aGlzLT54ICs9ICR2YWw7CiAJCX07CiAJfQpAQCAtNzEsNCArNzIsNCBA QCBlY2hvICJEb25lXG4iOwogNwogRGVzdHJveWVkCiAKLUZhdGFsIGVycm9yOiBVc2luZyAk dGhpcyB3aGVuIG5vdCBpbiBvYmplY3QgY29udGV4dCBpbiAlc2Nsb3N1cmVfMDA1LnBocCBv biBsaW5lIDI4CitGYXRhbCBlcnJvcjogVXNpbmcgJHRoaXMgd2hlbiBub3QgaW4gb2JqZWN0 IGNvbnRleHQgaW4gJXNjbG9zdXJlXzAwNS5waHAgb24gbGluZSAlZApJbmRleDogWmVuZC90 ZXN0cy9jbG9zdXJlXzAwNi5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0 b3J5L1plbmRFbmdpbmUyL3Rlc3RzL2Nsb3N1cmVfMDA2LnBocHQsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMi4yLjIKZGlmZiAtdSAtcCAtZCAtcjEuMi4yLjIgY2xvc3VyZV8wMDYucGhw dAotLS0gWmVuZC90ZXN0cy9jbG9zdXJlXzAwNi5waHB0CTE0IEp1bCAyMDA4IDA5OjQ5OjAy IC0wMDAwCTEuMi4yLjIKKysrIFplbmQvdGVzdHMvY2xvc3VyZV8wMDYucGhwdAk0IEphbiAy MDA5IDE2OjI1OjAxIC0wMDAwCkBAIC00LDcgKzQsOCBAQCBDbG9zdXJlIDAwNjogTmVzdGVk IGxhbWJkYXMKIDw/cGhwCiAKICRnZXRDbG9zdXJlID0gZnVuY3Rpb24gKCR2KSB7Ci0JcmV0 dXJuIGZ1bmN0aW9uICgpIHVzZSAoJHYpIHsKKwlyZXR1cm4gZnVuY3Rpb24gKCkgeworCQl1 c2UgJHY7CiAJCWVjaG8gIkhlbGxvIFdvcmxkOiAkdiFcbiI7CiAJfTsKIH07CkluZGV4OiBa ZW5kL3Rlc3RzL2Nsb3N1cmVfMDA5LnBocHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3Jl cG9zaXRvcnkvWmVuZEVuZ2luZTIvdGVzdHMvY2xvc3VyZV8wMDkucGhwdCx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4yLjIuMwpkaWZmIC11IC1wIC1kIC1yMS4yLjIuMyBjbG9zdXJlXzAw OS5waHB0Ci0tLSBaZW5kL3Rlc3RzL2Nsb3N1cmVfMDA5LnBocHQJMTQgSnVsIDIwMDggMTE6 NTc6NDQgLTAwMDAJMS4yLjIuMworKysgWmVuZC90ZXN0cy9jbG9zdXJlXzAwOS5waHB0CTQg SmFuIDIwMDkgMTY6MjU6MDEgLTAwMDAKQEAgLTMsMTMgKzMsMTUgQEAgQ2xvc3VyZSAwMDk6 IFVzaW5nIHN0YXRpYyB2YXJzIGluc2lkZSBsYQogLS1GSUxFLS0KIDw/cGhwCiAkYSA9IDE7 Ci0keCA9IGZ1bmN0aW9uICgkeCkgdXNlICgkYSkgeworJHggPSBmdW5jdGlvbiAoJHgpIHsK KyAgdXNlICRhOwogICBzdGF0aWMgJG4gPSAwOwogICAkbisrOwogICAkYSA9ICRuLic6Jy4k YTsKICAgZWNobyAkeC4nOicuJGEuIlxuIjsKIH07Ci0keSA9IGZ1bmN0aW9uICgkeCkgdXNl ICgmJGEpIHsKKyR5ID0gZnVuY3Rpb24gKCR4KSB7CisgIHVzZSAmJGE7CiAgIHN0YXRpYyAk biA9IDA7CiAgICRuKys7CiAgICRhID0gJG4uJzonLiRhOwpJbmRleDogWmVuZC90ZXN0cy9j bG9zdXJlXzAxMC5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1pl bmRFbmdpbmUyL3Rlc3RzL2Nsb3N1cmVfMDEwLnBocHQsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMi4yLjIKZGlmZiAtdSAtcCAtZCAtcjEuMi4yLjIgY2xvc3VyZV8wMTAucGhwdAotLS0g WmVuZC90ZXN0cy9jbG9zdXJlXzAxMC5waHB0CTE0IEp1bCAyMDA4IDA5OjQ5OjAyIC0wMDAw CTEuMi4yLjIKKysrIFplbmQvdGVzdHMvY2xvc3VyZV8wMTAucGhwdAk0IEphbiAyMDA5IDE2 OjI1OjAxIC0wMDAwCkBAIC0zLDcgKzMsOCBAQCBDbG9zdXJlIDAxMDogQ2xvc3VyZSBjYWxs cyBpdHNlbGYKIC0tRklMRS0tCiA8P3BocAogJGkgPSAzOwotJGxhbWJkYSA9IGZ1bmN0aW9u ICgkbGFtYmRhKSB1c2UgKCYkaSkgeworJGxhbWJkYSA9IGZ1bmN0aW9uICgkbGFtYmRhKSB7 CisJdXNlICYkaTsKICAgICBpZiAoJGk9PTApIHJldHVybjsKICAgICBlY2hvICRpLS0uIlxu IjsKICAgICAkbGFtYmRhKCRsYW1iZGEpOwpJbmRleDogWmVuZC90ZXN0cy9jbG9zdXJlXzAx MS5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUy L3Rlc3RzL2Nsb3N1cmVfMDExLnBocHQsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMi4yLjIK ZGlmZiAtdSAtcCAtZCAtcjEuMi4yLjIgY2xvc3VyZV8wMTEucGhwdAotLS0gWmVuZC90ZXN0 cy9jbG9zdXJlXzAxMS5waHB0CTE0IEp1bCAyMDA4IDA5OjQ5OjAyIC0wMDAwCTEuMi4yLjIK KysrIFplbmQvdGVzdHMvY2xvc3VyZV8wMTEucGhwdAk0IEphbiAyMDA5IDE2OjI1OjAxIC0w MDAwCkBAIC0zLDcgKzMsOCBAQCBDbG9zdXJlIDAxMTogTGV4aWNhbCBjb3BpZXMgbm90IHN0 YXRpYyBpCiAtLUZJTEUtLQogPD9waHAKICRpID0gMTsKLSRsYW1iZGEgPSBmdW5jdGlvbiAo KSB1c2UgKCRpKSB7CiskbGFtYmRhID0gZnVuY3Rpb24gKCkgeworCXVzZSAkaTsKICAgICBy ZXR1cm4gKyskaTsKIH07CiAkbGFtYmRhKCk7CkluZGV4OiBaZW5kL3Rlc3RzL2Nsb3N1cmVf MDEyLnBocHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2lu ZTIvdGVzdHMvY2xvc3VyZV8wMTIucGhwdCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yLjIu MgpkaWZmIC11IC1wIC1kIC1yMS4yLjIuMiBjbG9zdXJlXzAxMi5waHB0Ci0tLSBaZW5kL3Rl c3RzL2Nsb3N1cmVfMDEyLnBocHQJMTQgSnVsIDIwMDggMDk6NDk6MDIgLTAwMDAJMS4yLjIu MgorKysgWmVuZC90ZXN0cy9jbG9zdXJlXzAxMi5waHB0CTQgSmFuIDIwMDkgMTY6MjU6MDEg LTAwMDAKQEAgLTIsMTMgKzIsMTUgQEAKIENsb3N1cmUgMDEyOiBVbmRlZmluZWQgbGV4aWNh bCB2YXJpYWJsZXMKIC0tRklMRS0tCiA8P3BocAotJGxhbWJkYSA9IGZ1bmN0aW9uICgpIHVz ZSAoJGkpIHsKKyRsYW1iZGEgPSBmdW5jdGlvbiAoKSB7CisJdXNlICRpOwogICAgIHJldHVy biArKyRpOwogfTsKICRsYW1iZGEoKTsKICRsYW1iZGEoKTsKIHZhcl9kdW1wKCRpKTsKLSRs YW1iZGEgPSBmdW5jdGlvbiAoKSB1c2UgKCYkaSkgeworJGxhbWJkYSA9IGZ1bmN0aW9uICgp IHsKKwl1c2UgJiRpOwogICAgIHJldHVybiArKyRpOwogfTsKICRsYW1iZGEoKTsKQEAgLTE2 LDkgKzE4LDggQEAgJGxhbWJkYSgpOwogdmFyX2R1bXAoJGkpOwogPz4KIC0tRVhQRUNURi0t Ci1Ob3RpY2U6IFVuZGVmaW5lZCB2YXJpYWJsZTogaSBpbiAlc2Nsb3N1cmVfMDEyLnBocCBv biBsaW5lIDIKK05vdGljZTogVW5kZWZpbmVkIHZhcmlhYmxlOiBpIGluICVzY2xvc3VyZV8w MTIucGhwIG9uIGxpbmUgJWQKIAotTm90aWNlOiBVbmRlZmluZWQgdmFyaWFibGU6IGkgaW4g JXNjbG9zdXJlXzAxMi5waHAgb24gbGluZSA3CitOb3RpY2U6IFVuZGVmaW5lZCB2YXJpYWJs ZTogaSBpbiAlc2Nsb3N1cmVfMDEyLnBocCBvbiBsaW5lICVkCiBOVUxMCiBpbnQoMikKLQpJ bmRleDogWmVuZC90ZXN0cy9jbG9zdXJlXzAxOC5waHB0Cj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3Rlc3RzL2Nsb3N1cmVfMDE4LnBocHQsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4yLjEKZGlmZiAtdSAtcCAtZCAtcjEuMS4yLjEgY2xv c3VyZV8wMTgucGhwdAotLS0gWmVuZC90ZXN0cy9jbG9zdXJlXzAxOC5waHB0CTE0IEp1bCAy MDA4IDEzOjM2OjQwIC0wMDAwCTEuMS4yLjEKKysrIFplbmQvdGVzdHMvY2xvc3VyZV8wMTgu cGhwdAk0IEphbiAyMDA5IDE2OjI1OjAxIC0wMDAwCkBAIC02LDcgKzYsOCBAQCBDbG9zdXJl IDAxODogQXNzaWduaW5nIGxhbWJkYSB0byBzdGF0aWMgCiBjbGFzcyBmb28gewogCXB1Ymxp YyBmdW5jdGlvbiB0ZXN0KCYkeCkgewogCQlzdGF0aWMgJGxhbWJkYTsKLQkJJGxhbWJkYSA9 IGZ1bmN0aW9uICYoKSB1c2UgKCYkeCkgeyAKKwkJJGxhbWJkYSA9IGZ1bmN0aW9uICYoKSB7 CisJCQl1c2UgJiR4OwogCQkJcmV0dXJuICR4ID0gJHggKiAkeDsKIAkJfTsKIAkJcmV0dXJu ICRsYW1iZGEoKTsKSW5kZXg6IFplbmQvdGVzdHMvY2xvc3VyZV8wMjAucGhwdAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi90ZXN0cy9jbG9zdXJl XzAyMC5waHB0LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMi4yCmRpZmYgLXUgLXAgLWQg LXIxLjEuMi4yIGNsb3N1cmVfMDIwLnBocHQKLS0tIFplbmQvdGVzdHMvY2xvc3VyZV8wMjAu cGhwdAkxIEphbiAyMDA5IDE2OjIyOjQ0IC0wMDAwCTEuMS4yLjIKKysrIFplbmQvdGVzdHMv Y2xvc3VyZV8wMjAucGhwdAk0IEphbiAyMDA5IDE2OjI1OjAxIC0wMDAwCkBAIC04LDcgKzgs NyBAQCBjbGFzcyBmb28gewogCQogCXB1YmxpYyBmdW5jdGlvbiB4KCkgewogCQkkYSA9ICYk dGhpczsKLQkJJHRoaXMtPmEgPSBmdW5jdGlvbigpIHVzZSAoJiRhKSB7IHJldHVybiAkYTsg fTsKKwkJJHRoaXMtPmEgPSBmdW5jdGlvbigpIHsgdXNlICYkYTsgcmV0dXJuICRhOyB9Owog CQl2YXJfZHVtcCgkdGhpcy0+YS0+X19pbnZva2UoKSk7CiAJCXZhcl9kdW1wKGlzX2EoJHRo aXMtPmEsICdjbG9zdXJlJykpOwogCQl2YXJfZHVtcChpc19jYWxsYWJsZSgkdGhpcy0+YSkp OwpJbmRleDogWmVuZC90ZXN0cy9jbG9zdXJlXzAyMi5waHB0Cj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3Rlc3RzL2Nsb3N1cmVfMDIyLnBocHQs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4yLjMKZGlmZiAtdSAtcCAtZCAtcjEuMS4yLjMg Y2xvc3VyZV8wMjIucGhwdAotLS0gWmVuZC90ZXN0cy9jbG9zdXJlXzAyMi5waHB0CTExIEF1 ZyAyMDA4IDA4OjQ5OjAwIC0wMDAwCTEuMS4yLjMKKysrIFplbmQvdGVzdHMvY2xvc3VyZV8w MjIucGhwdAk0IEphbiAyMDA5IDE2OjI1OjAxIC0wMDAwCkBAIC0zLDEwICszLDEwIEBAIENs b3N1cmUgMDIyOiBDbG9zdXJlIHByb3BlcnRpZXMKIC0tRklMRS0tCiA8P3BocAogJGEgPSAw OwotJGZvbyA9IGZ1bmN0aW9uKCkgdXNlICgkYSkgeworJGZvbyA9IGZ1bmN0aW9uKCkgewor CXVzZSAkYTsKIH07CiAkZm9vLT5hID0gMTsKID8+CiAtLUVYUEVDVEYtLQotQ2F0Y2hhYmxl IGZhdGFsIGVycm9yOiBDbG9zdXJlIG9iamVjdCBjYW5ub3QgaGF2ZSBwcm9wZXJ0aWVzIGlu ICVzY2xvc3VyZV8wMjIucGhwIG9uIGxpbmUgNQotCitDYXRjaGFibGUgZmF0YWwgZXJyb3I6 IENsb3N1cmUgb2JqZWN0IGNhbm5vdCBoYXZlIHByb3BlcnRpZXMgaW4gJXNjbG9zdXJlXzAy Mi5waHAgb24gbGluZSAlZApJbmRleDogWmVuZC90ZXN0cy9jbG9zdXJlXzAyNS5waHB0Cj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3Rlc3RzL2Ns b3N1cmVfMDI1LnBocHQsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4yLjIKZGlmZiAtdSAt cCAtZCAtcjEuMS4yLjIgY2xvc3VyZV8wMjUucGhwdAotLS0gWmVuZC90ZXN0cy9jbG9zdXJl XzAyNS5waHB0CTI4IEp1bCAyMDA4IDE0OjEwOjAwIC0wMDAwCTEuMS4yLjIKKysrIFplbmQv dGVzdHMvY2xvc3VyZV8wMjUucGhwdAk0IEphbiAyMDA5IDE2OjI1OjAxIC0wMDAwCkBAIC0z LDcgKzMsNyBAQCBDbG9zdXJlIDAyNTogVXNpbmcgY2xvc3VyZSBpbiBjcmVhdGVfZnVuCiAt LUZJTEUtLQogPD9waHAKIAotJGEgPSBjcmVhdGVfZnVuY3Rpb24oJyR4JywgJ3JldHVybiBm dW5jdGlvbigkeSkgdXNlICgkeCkgeyByZXR1cm4gJHggKiAkeTsgfTsnKTsKKyRhID0gY3Jl YXRlX2Z1bmN0aW9uKCckeCcsICdyZXR1cm4gZnVuY3Rpb24oJHkpIHsgdXNlICR4OyByZXR1 cm4gJHggKiAkeTsgfTsnKTsKIAogdmFyX2R1bXAoJGEoMiktPl9faW52b2tlKDQpKTsKIApJ bmRleDogWmVuZC90ZXN0cy9jbG9zdXJlXzAyNy5waHB0Cj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3Rlc3RzL2Nsb3N1cmVfMDI3LnBocHQsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4yLjMKZGlmZiAtdSAtcCAtZCAtcjEuMS4yLjMgY2xv c3VyZV8wMjcucGhwdAotLS0gWmVuZC90ZXN0cy9jbG9zdXJlXzAyNy5waHB0CTMgTm92IDIw MDggMTk6Mjg6MzIgLTAwMDAJMS4xLjIuMworKysgWmVuZC90ZXN0cy9jbG9zdXJlXzAyNy5w aHB0CTQgSmFuIDIwMDkgMTY6MjU6MDEgLTAwMDAKQEAgLTEyLDcgKzEyLDcgQEAgdGVzdChm dW5jdGlvbigpIHsgcmV0dXJuIG5ldyBzdGRjbGFzczsgfQogCiB0ZXN0KGZ1bmN0aW9uKCkg eyB9KTsKIAotJGEgPSBmdW5jdGlvbigkeCkgdXNlICgkeSkge307CiskYSA9IGZ1bmN0aW9u KCR4KSB7IHVzZSAkeTsgfTsKIHRlc3QoJGEpOwogCiB0ZXN0KG5ldyBzdGRjbGFzcyk7Cklu ZGV4OiBaZW5kL3Rlc3RzL2Nsb3N1cmVfMDI5LnBocHQKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2luZTIvdGVzdHMvY2xvc3VyZV8wMjkucGhwdCx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMgpkaWZmIC11IC1wIC1kIC1yMS4xLjIuMiBjbG9z dXJlXzAyOS5waHB0Ci0tLSBaZW5kL3Rlc3RzL2Nsb3N1cmVfMDI5LnBocHQJMjggSnVsIDIw MDggMTQ6MTA6MDAgLTAwMDAJMS4xLjIuMgorKysgWmVuZC90ZXN0cy9jbG9zdXJlXzAyOS5w aHB0CTQgSmFuIDIwMDkgMTY6MjU6MDEgLTAwMDAKQEAgLTUsNyArNSw3IEBAIENsb3N1cmUg MDI5OiBUZXN0aW5nIGxhbWJkYSB3aXRoIGluc3RhbmMKIAogdmFyX2R1bXAoZnVuY3Rpb24o KSB7IH0gaW5zdGFuY2VvZiBjbG9zdXJlKTsKIHZhcl9kdW1wKGZ1bmN0aW9uKCYkeCkgeyB9 IGluc3RhbmNlb2YgY2xvc3VyZSk7Ci12YXJfZHVtcChAZnVuY3Rpb24oJiR4KSB1c2UgKCR5 LCAkeikgeyB9IGluc3RhbmNlb2YgY2xvc3VyZSk7Cit2YXJfZHVtcChAZnVuY3Rpb24oJiR4 KSB7IHVzZSAkeSwgJHo7IH0gaW5zdGFuY2VvZiBjbG9zdXJlKTsKIAogPz4KIC0tRVhQRUNU LS0KSW5kZXg6IFplbmQvdGVzdHMvY2xvc3VyZV8wMzQucGhwdAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi90ZXN0cy9jbG9zdXJlXzAzNC5waHB0 LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMi4yCmRpZmYgLXUgLXAgLWQgLXIxLjEuMi4y IGNsb3N1cmVfMDM0LnBocHQKLS0tIFplbmQvdGVzdHMvY2xvc3VyZV8wMzQucGhwdAkzIEph biAyMDA5IDE3OjQ4OjQwIC0wMDAwCTEuMS4yLjIKKysrIFplbmQvdGVzdHMvY2xvc3VyZV8w MzQucGhwdAk0IEphbiAyMDA5IDE2OjI1OjAxIC0wMDAwCkBAIC0xMCw3ICsxMCw4IEBAIGNs YXNzIFRlc3QgewogCXB1YmxpYyAkdmFyID0gNDI7CiAJZnVuY3Rpb24gX19jb25zdHJ1Y3Qo KSB7CiAJCWdsb2JhbCAkb3V0ZXI7Ci0JCSR0aGlzLT5mdW5jMSA9IGZ1bmN0aW9uKCRwYXJh bSwgJG90aGVyID0gImRlZmF1bHQiKSB1c2UgKCRvdXRlcikgeworCQkkdGhpcy0+ZnVuYzEg PSBmdW5jdGlvbigkcGFyYW0sICRvdGhlciA9ICJkZWZhdWx0IikgeworCQkJdXNlICRvdXRl cjsKIAkJfTsKIAl9CiB9CkBAIC0xOCwxMiArMTksMTQgQEAgY2xhc3MgVGVzdCB7CiAkbyA9 IG5ldyBUZXN0OwogdmFyX2R1bXAoJG8tPmZ1bmMxKTsKIAotJG8tPmZ1bmMyID0gZnVuY3Rp b24oJHBhcmFtLCAkb3RoZXIgPSAiZGVmYXVsdCIpIHVzZSAoJG91dGVyKSB7Ciskby0+ZnVu YzIgPSBmdW5jdGlvbigkcGFyYW0sICRvdGhlciA9ICJkZWZhdWx0IikgeworCXVzZSAkb3V0 ZXI7CiB9OwogCiB2YXJfZHVtcCgkby0+ZnVuYzIpOwogCi0kZnVuYzMgPSBmdW5jdGlvbigk cGFyYW0sICRvdGhlciA9ICJkZWZhdWx0IikgdXNlICgkb3V0ZXIpIHsKKyRmdW5jMyA9IGZ1 bmN0aW9uKCRwYXJhbSwgJG90aGVyID0gImRlZmF1bHQiKSB7CisJdXNlICRvdXRlcjsKIH07 CiAKIHZhcl9kdW1wKCRmdW5jMyk7Cg== ------------A216B4C7CC270C--