From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#12980: 24.3.50; Zombie process left after call-process Date: Mon, 26 Nov 2012 14:38:41 -0800 Message-ID: <50B3EF71.3020805@cs.ucla.edu> References: <20121124.103437.128943892331220037.hanche@math.ntnu.no> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040502050800060804060908" X-Trace: ger.gmane.org 1353969571 3655 80.91.229.3 (26 Nov 2012 22:39:31 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 26 Nov 2012 22:39:31 +0000 (UTC) Cc: 9488@debbugs.gnu.org, 12980@debbugs.gnu.org To: Harald Hanche-Olsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Nov 26 23:39:38 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Td7Kz-0007Rx-CY for geb-bug-gnu-emacs@m.gmane.org; Mon, 26 Nov 2012 23:39:37 +0100 Original-Received: from localhost ([::1]:38126 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Td7Ko-0002FP-3p for geb-bug-gnu-emacs@m.gmane.org; Mon, 26 Nov 2012 17:39:26 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:38520) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Td7Ki-0002FB-8f for bug-gnu-emacs@gnu.org; Mon, 26 Nov 2012 17:39:23 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Td7Kf-00088j-Ig for bug-gnu-emacs@gnu.org; Mon, 26 Nov 2012 17:39:20 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:58633) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Td7Kf-00088f-EP for bug-gnu-emacs@gnu.org; Mon, 26 Nov 2012 17:39:17 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1Td7MM-0000rH-B1 for bug-gnu-emacs@gnu.org; Mon, 26 Nov 2012 17:41:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: <20121124.103437.128943892331220037.hanche@math.ntnu.no> Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 26 Nov 2012 22:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12980 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 12980-submit@debbugs.gnu.org id=B12980.13539696363251 (code B ref 12980); Mon, 26 Nov 2012 22:41:02 +0000 Original-Received: (at 12980) by debbugs.gnu.org; 26 Nov 2012 22:40:36 +0000 Original-Received: from localhost ([127.0.0.1]:40649 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Td7Lu-0000qK-KA for submit@debbugs.gnu.org; Mon, 26 Nov 2012 17:40:36 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:37038) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Td7Lp-0000q7-GG; Mon, 26 Nov 2012 17:40:32 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 1ABF0A60003; Mon, 26 Nov 2012 14:38:44 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id t3XDpJByLnOC; Mon, 26 Nov 2012 14:38:42 -0800 (PST) Original-Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 9EC55A60001; Mon, 26 Nov 2012 14:38:42 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:67493 Archived-At: This is a multi-part message in MIME format. --------------040502050800060804060908 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Harald, thanks for the bug report. This part of Emacs is a bit messy, but I hacked away at it and came up with the attached proposed patch. This patch touches some code for Microsoft platforms so I'm CC'ing this to Eli. I'm also CC'ing Bug#9488 as I think it fixes the rest of that bug too. --------------040502050800060804060908 Content-Type: text/plain; charset=us-ascii; name="g_spawn_sync.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="g_spawn_sync.txt" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9DaGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIw MTItMTEtMjUgMDc6NTA6NTUgKzAwMDAKKysrIHNyYy9DaGFuZ2VMb2cJMjAxMi0xMS0yNiAy MjozNDo1OCArMDAwMApAQCAtMSwzICsxLDU1IEBACisyMDEyLTExLTI2ICBQYXVsIEVnZ2Vy dCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KKworCURvbid0IGxldCBjYWxsLXByb2Nlc3MgYmUg YSB6b21iaWUgZmFjdG9yeSAoQnVnIzEyOTgwKS4KKwlGaXhpbmcgdGhpcyBidWcgcmVxdWly ZWQgc29tZSBjbGVhbnVwIG9mIHRoZSBzaWduYWwtaGFuZGxpbmcgY29kZS4KKwlBcyBhIHNp ZGUgZWZmZWN0LCB0aGlzIGNoYW5nZSBhbHNvIGZpeGVzIGEgbG9uZ3N0YW5kaW5nIHJhcmUg cmFjZQorCWNvbmRpdGlvbiB3aGVyZWJ5IEVtYWNzIGNvdWxkIG1pc3Rha2VubHkga2lsbCB1 bnJlbGF0ZWQgcHJvY2Vzc2VzLAorCWFuZCBpdCBmaXhlcyBhIGJ1ZyB3aGVyZSBhIHNlY29u ZCBDLWcgZG9lcyBub3Qga2lsbCBhIHJlY2FsY2l0cmFudAorCXN5bmNocm9ub3VzIHByb2Nl c3MgaW4gR05VL0xpbnV4IGFuZCBzaW1pbGFyIHBsYXRmb3Jtcy4KKwlUaGUgcGF0Y2ggc2hv dWxkIGFsc28gZml4IHRoZSBsYXN0IHZlc3RpZ2VzIG9mIEJ1ZyM5NDg4LAorCWEgYnVnIHdo aWNoIGhhcyBtb3N0bHkgYmVlbiBmaXhlZCBvbiB0aGUgdHJ1bmsgYnkgb3RoZXIgY2hhbmdl cy4KKwkqIGNhbGxwcm9jLmMsIHByb2Nlc3MuaCAoc3luY2hfcHJvY2Vzc19hbGl2ZSwgc3lu Y2hfcHJvY2Vzc19kZWF0aCkKKwkoc3luY2hfcHJvY2Vzc190ZXJtc2lnLCBzeW5jX3Byb2Nl c3NfcmV0Y29kZSk6CisJUmVtb3ZlLiAgQWxsIHVzZXMgcmVtb3ZlZCwgdG8gc2ltcGxpZnkg YW5hbHlzaXMgYW5kIHNvIHRoYXQKKwlsZXNzIGNvbnNpbmcgaXMgZG9uZSBpbnNpZGUgY3Jp dGljYWwgc2VjdGlvbnMuCisJKiBjYWxscHJvYy5jIChyZWFwYWJsZV9jaGlsZCwgYmxvY2tf Y2hpbGRfc2lnbmFsLCB1bmJsb2NrX2NoaWxkX3NpZ25hbCk6CisJTmV3IGZ1bmN0aW9ucywg dG8gYXZvaWQgcmFjZXMgdGhhdCBjb3VsZCBraWxsIGlubm9jZW50LXZpY3RpbSBwcm9jZXNz ZXMuCisJKGNhbGxfcHJvY2Vzc19raWxsLCBjYWxsX3Byb2Nlc3NfY2xlYW51cCwgRmNhbGxf cHJvY2Vzcyk6IFVzZSB0aGVtLgorCShjYWxsX3Byb2Nlc3Nfa2lsbCk6IFJlY29yZCBraWxs ZWQgcHJvY2Vzc2VzIGFzIGRlbGV0ZWQsIHNvIHRoYXQKKwl6b21iaWVzIGRvIG5vdCBjbHV0 dGVyIHVwIHRoZSBzeXN0ZW0uICBEbyB0aGlzIGluc2lkZSBhIGNyaXRpY2FsCisJc2VjdGlv biwgdG8gYXZvaWQgYSByYWNlIHRoYXQgd291bGQgYWxsb3cgdGhlIGNsdXR0ZXIuICBEbyBu b3QKKwlhc3N1bWUgdGhhdCBzZW5kaW5nIFNJR0tJTEwgdG8gYSBwcm9jZXNzIG1ha2VzIGl0 IHJlYXBhYmxlLgorCShjYWxsX3Byb2Nlc3NfY2xlYW51cCk6IEZpeCBjb2RlIHNvIHRoYXQg dGhlIHNlY29uZCBDLWcgd29ya3MgYWdhaW4KKwlvbiBjb21tb24gcGxhdGZvcm1zIHN1Y2gg YXMgR05VL0xpbnV4LgorCShGY2FsbF9wcm9jZXNzKTogQ3JlYXRlIHRoZSBjaGlsZCBwcm9j ZXNzIGluIGEgY3JpdGljYWwgc2VjdGlvbiwKKwl0byBmaXggYSByYWNlIGNvbmRpdGlvbi4g IElmIGNyZWF0aW5nIGFuIGFzeW5jaHJvbm91cyBwcm9jZXNzLAorCXJlY29yZCBpdCBhcyBk ZWxldGVkIHNvIHRoYXQgem9tYmllcyBkbyBub3QgY2x1dHRlciB1cCB0aGUgc3lzdGVtLgor CURvIG5vdCBzdG9yZSBwcm9jZXNzIHN0YXRlIGluIHN0YXRpYyB2YXJpYWJsZXMsIGFzIHRo YXQncyBsZXNzIHNhZmUuCisJKiBjYWxscHJvYy5jIChjYWxsX3Byb2Nlc3NfY2xlYW51cCk6 CisJKiB3MzJwcm9jLmMgKHdhaXRwaWQpOiBTaW1wbGlmeSBub3cgdGhhdCBzeW5jaF9wcm9j ZXNzX2FsaXZlIGlzIGdvbmUuCisJKiBwcm9jZXNzLmMgKHJlY29yZF9kZWxldGVkX3BpZCk6 IE5ldyBmdW5jdGlvbiwgY29udGFpbmluZworCWNvZGUgcmVmYWN0b3JlZCBvdXQgb2YgRmRl bGV0ZV9wcm9jZXNzLgorCShGZGVsZXRlX3Byb2Nlc3MpOiBVc2UgaXQuCisJKHByb2Nlc3Nf c3RhdHVzX3JldHJpZXZlZCk6IENoYW5nZSBhcmdzIHRvIGxvb2sgbW9yZSBsaWtlIHRob3Nl IG9mCisJd2FpdHBpZDsgdGhpcyBpcyBjbGVhcmVyLiAgUmV0dXJuIHRydWUgaWYgdGhlIHBy b2Nlc3MgaGFzIGNoYW5nZWQsCisJZmFsc2Ugb3RoZXJ3aXNlLiAgQWxsIHVzZXMgY2hhbmdl ZC4gIERlZmluZSBvbmx5IGlmIFNJR0NITEQuCisJKHJlY29yZF9jaGlsZF9zdGF0dXNfY2hh bmdlKTogUmVtb3ZlLCBmb2xkaW5nIGl0cyBjb250ZW50cyBpbnRvIC4uLgorCShoYW5kbGVf Y2hpbGRfc2lnbmFsKTogLi4uIHRoaXMgc2lnbmFsIGhhbmRsZXIuICBOb3csIHRoaXMKKwlm dW5jdGlvbiBpcyBwdXJlbHkgYSBoYW5kbGVyIGZvciBTSUdDSExELCBhbmQgaXMgbm90IGNh bGxlZCBhZnRlcgorCWEgc3luY2hyb25vdXMgd2FpdHBpZCByZXR1cm5zOyB0aGUgc3luY2hy b25vdXMgY29kZSBpcyBtb3ZlZCB0bworCXdhaXRfZm9yX3Rlcm1pbmF0aW9uLiAgVGhlcmUg aXMgbm8gbmVlZCB0byB3b3JyeSBhYm91dCByZWFwaW5nCisJbW9yZSB0aGFuIG9uZSBjaGls ZCBub3cuCisJKiBzeXNkZXAuYyAod2FpdF9mb3JfdGVybWluYXRpb24pOiBOb3cgdGFrZXMg aW50ICogc3RhdHVzIGFuZCBib29sCisJaW50ZXJydXB0aWJsZSBhcmd1bWVudHMsIHRvby4g IERvIG5vdCByZWNvcmQgY2hpbGQgc3RhdHVzIGNoYW5nZTsKKwl0aGF0J3Mgbm93IHRoZSBj YWxsZXIncyByZXNwb25zaWJpbGl0eS4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCisJKHdhaXRf Zm9yX3Rlcm1pbmF0aW9uXzEsIGludGVycnVwdGlibGVfd2FpdF9mb3JfdGVybWluYXRpb24p OgorCVJlbW92ZS4gIEFsbCBjYWxsZXJzIGNoYW5nZWQgdG8gdXNlIHdhaXRfZm9yX3Rlcm1p bmF0aW9uLgorCSogc3lzd2FpdC5oOiBJbmNsdWRlIDxzdGRib29sLmg+LCBmb3IgYm9vbC4K KwkocmVjb3JkX2NoaWxkX3N0YXR1c19jaGFuZ2UsIGludGVycnVwdGlibGVfd2FpdF9mb3Jf dGVybWluYXRpb24pOgorCVJlbW92ZSBkZWNscy4KKwkocmVjb3JkX2RlbGV0ZWRfcGlkKTog TmV3IGRlY2wuCisJKHdhaXRfZm9yX3Rlcm1pbmF0aW9uKTogQWRqdXN0IHRvIEFQSSBjaGFu Z2VzIG5vdGVkIGFib3ZlLgorCiAyMDEyLTExLTI1ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KIAogCSogc3lzZGVwLmMgKHN5c19zdWJzaGVsbCk6IERvbid0IGFzc3Vt ZSBwaWRfdCBmaXRzIGluIGludC4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvY2FsbHByb2Mu YycKLS0tIHNyYy9jYWxscHJvYy5jCTIwMTItMTEtMTcgMjI6MTI6NDcgKzAwMDAKKysrIHNy Yy9jYWxscHJvYy5jCTIwMTItMTEtMjYgMjI6MTU6NDIgKzAwMDAKQEAgLTY3LDIxICs2Nyw1 NyBAQAogLyogUGF0dGVybiB1c2VkIGJ5IGNhbGwtcHJvY2Vzcy1yZWdpb24gdG8gbWFrZSB0 ZW1wIGZpbGVzLiAgKi8KIHN0YXRpYyBMaXNwX09iamVjdCBWdGVtcF9maWxlX25hbWVfcGF0 dGVybjsKIAotLyogVHJ1ZSBpZiB3ZSBhcmUgYWJvdXQgdG8gZm9yayBvZmYgYSBzeW5jaHJv bm91cyBwcm9jZXNzIG9yIGlmIHdlCi0gICBhcmUgd2FpdGluZyBmb3IgaXQuICAqLwotYm9v bCBzeW5jaF9wcm9jZXNzX2FsaXZlOwotCi0vKiBOb256ZXJvID0+IHRoaXMgaXMgYSBzdHJp bmcgZXhwbGFpbmluZyBkZWF0aCBvZiBzeW5jaHJvbm91cyBzdWJwcm9jZXNzLiAgKi8KLWNv bnN0IGNoYXIgKnN5bmNoX3Byb2Nlc3NfZGVhdGg7Ci0KLS8qIE5vbnplcm8gPT4gdGhpcyBp cyB0aGUgc2lnbmFsIG51bWJlciB0aGF0IHRlcm1pbmF0ZWQgdGhlIHN1YnByb2Nlc3MuICAq LwotaW50IHN5bmNoX3Byb2Nlc3NfdGVybXNpZzsKLQotLyogSWYgc3luY2hfcHJvY2Vzc19k ZWF0aCBpcyB6ZXJvLAotICAgdGhpcyBpcyBleGl0IGNvZGUgb2Ygc3luY2hyb25vdXMgc3Vi cHJvY2Vzcy4gICovCi1pbnQgc3luY2hfcHJvY2Vzc19yZXRjb2RlOwotCiAMCisvKiBSZXR1 cm4gdHJ1ZSBpZiBDSElMRCBpcyByZWFwYWJsZS4gIENISUxEIG11c3QgYmUgdGhlIHByb2Nl c3MgSUQgb2YKKyAgIGEgY2hpbGQgcHJvY2Vzcy4gIEFzIGEgc2lkZSBlZmZlY3QgdGhpcyBm dW5jdGlvbiBtYXkgcmVhcCBDSElMRCwKKyAgIGRpc2NhcmRpbmcgaXRzIHN0YXR1cywgYW5k IHRoZXJlZm9yZSByZXBvcnQgdGhhdCBDSElMRCBpcyBub3QKKyAgIHJlYXBhYmxlLgorCisg ICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgYWZ0ZXIgdGhlIGNhbGxlciB3 YXMgaW50ZXJydXB0ZWQKKyAgIHdoaWxlIHRyeWluZyB0byByZWFwIENISUxELCBhbmQgd2hl cmUgdGhlIGNhbGxlciBsYXRlciB0ZXN0cworICAgd2hldGhlciBDSElMRCB3YXMgaW4gZmFj dCByZWFwZWQuICBUaGUgY2FsbGVyIHNob3VsZCBub3QgY3JlYXRlCisgICBhbm90aGVyIGNo aWxkIHByb2Nlc3MgKHZpYSB2Zm9yaywgc2F5KSBiZXR3ZWVuIHRoZSBlYXJsaWVyIGF0dGVt cHQKKyAgIHRvIHJlYXAgQ0hJTEQgYW5kIG5vdywgYXMgdGhhdCB3b3VsZCBjYXVzZSBhIHJh Y2UgaWYgdGhlIG5ld2x5CisgICBjcmVhdGVkIGNoaWxkIHByb2Nlc3MgaGFwcGVuZWQgdG8g aGF2ZSBDSElMRCBhcyBpdHMgcHJvY2Vzcy1JRC4gICovCisKK3N0YXRpYyBib29sCityZWFw YWJsZV9jaGlsZCAocGlkX3QgY2hpbGQpCit7CisgIC8qIERvIG5vdCB1c2Uga2lsbCAoQ0hJ TEQsIC4uLikgdG8gdGVzdCB3aGV0aGVyIENISUxEIGlzIHJlYXBhYmxlLAorICAgICBhcyB0 aGF0IG1pZ2h0IGtpbGwgYW4gaW5ub2NlbnQgdmljdGltIGlmIENISUxEIGhhcyBhbHJlYWR5 IGJlZW4gcmVhcGVkCisgICAgIGFuZCBDSElMRCdzIFBJRCBoYXMgYmVlbiByZXVzZWQuICAq LworICBpbnQgc3RhdHVzOworICBwaWRfdCBwaWQ7CisgIGRvCisgICAgcGlkID0gd2FpdHBp ZCAoY2hpbGQsICZzdGF0dXMsIFdOT0hBTkcpOworICB3aGlsZSAocGlkIDwgMCAmJiBlcnJu byA9PSBFSU5UUik7CisKKyAgcmV0dXJuICFwaWQ7Cit9CisKKy8qIEJsb2NrIFNJR0NITEQu ICAqLworCitzdGF0aWMgdm9pZAorYmxvY2tfY2hpbGRfc2lnbmFsICh2b2lkKQoreworI2lm ZGVmIFNJR0NITEQKKyAgc2lnc2V0X3QgYmxvY2tlZDsKKyAgc2lnZW1wdHlzZXQgKCZibG9j a2VkKTsKKyAgc2lnYWRkc2V0ICgmYmxvY2tlZCwgU0lHQ0hMRCk7CisgIHB0aHJlYWRfc2ln bWFzayAoU0lHX0JMT0NLLCAmYmxvY2tlZCwgMCk7CisjZW5kaWYKK30KKworLyogVW5ibG9j ayBTSUdDSExELiAgKi8KKworc3RhdGljIHZvaWQKK3VuYmxvY2tfY2hpbGRfc2lnbmFsICh2 b2lkKQoreworI2lmZGVmIFNJR0NITEQKKyAgcHRocmVhZF9zaWdtYXNrIChTSUdfU0VUTUFT SywgJmVtcHR5X21hc2ssIDApOworI2VuZGlmCit9CisKIC8qIENsZWFuIHVwIHdoZW4gZXhp dGluZyBGY2FsbF9wcm9jZXNzLgogICAgT24gTVNET1MsIGRlbGV0ZSB0aGUgdGVtcG9yYXJ5 IGZpbGUgb24gYW55IGtpbmQgb2YgdGVybWluYXRpb24uCiAgICBPbiBVbml4LCBraWxsIHRo ZSBwcm9jZXNzIGFuZCBhbnkgY2hpbGRyZW4gb24gdGVybWluYXRpb24gYnkgc2lnbmFsLiAg Ki8KQEAgLTk3LDggKzEzMywxOCBAQAogICBDT05TX1RPX0lOVEVHRVIgKEZjYXIgKGZkcGlk KSwgaW50LCBmZCk7CiAgIENPTlNfVE9fSU5URUdFUiAoRmNkciAoZmRwaWQpLCBwaWRfdCwg cGlkKTsKICAgZW1hY3NfY2xvc2UgKGZkKTsKLSAgRU1BQ1NfS0lMTFBHIChwaWQsIFNJR0tJ TEwpOwotICBzeW5jaF9wcm9jZXNzX2FsaXZlID0gMDsKKworICBpZiAocmVhcGFibGVfY2hp bGQgKHBpZCkgJiYgRU1BQ1NfS0lMTFBHIChwaWQsIFNJR0tJTEwpID09IDApCisgICAgewor ICAgICAgLyogUmVjb3JkIFBJRCBhcyBhIGRlbGV0ZWQgcHJvY2Vzcy4gIERvIHRoaXMgaW4g YSBjcml0aWNhbAorCSBzZWN0aW9uLCBhcyByZWNvcmRfZGVsZXRlZF9waWQgaXMgbm90IGFz eW5jLXNpZ25hbC1zYWZlLgorCSBQSUQgd2lsbCBiZSByZWFwZWQgb24gcmVjZWlwdCBvZiB0 aGUgZmlyc3QgU0lHQ0hMRCBhZnRlciB0aGUKKwkgY3JpdGljYWwgc2VjdGlvbi4gICovCisg ICAgICBibG9ja19jaGlsZF9zaWduYWwgKCk7CisgICAgICByZWNvcmRfZGVsZXRlZF9waWQg KHBpZCk7CisgICAgICB1bmJsb2NrX2NoaWxkX3NpZ25hbCAoKTsKKyAgICB9CisKICAgcmV0 dXJuIFFuaWw7CiB9CiAKQEAgLTEwNyw0NiArMTUzLDQzIEBACiB7CiAgIExpc3BfT2JqZWN0 IGZkcGlkID0gRmNkciAoYXJnKTsKICAgaW50IGZkOwotI2lmIGRlZmluZWQgKE1TRE9TKQot ICBMaXNwX09iamVjdCBmaWxlOwotI2Vsc2UKLSAgcGlkX3QgcGlkOwotI2VuZGlmCiAKICAg RnNldF9idWZmZXIgKEZjYXIgKGFyZykpOwogICBDT05TX1RPX0lOVEVHRVIgKEZjYXIgKGZk cGlkKSwgaW50LCBmZCk7CiAKICNpZiBkZWZpbmVkIChNU0RPUykKLSAgLyogZm9yIE1TRE9T IGZkcGlkIGlzIHJlYWxseSAoZmQgLiB0ZW1wZmlsZSkgICovCi0gIGZpbGUgPSBGY2RyIChm ZHBpZCk7Ci0gIC8qIEZEIGlzIC0xIGFuZCBGSUxFIGlzICIiIHdoZW4gd2UgZGlkbid0IGFj dHVhbGx5IGNyZWF0ZSBhCi0gICAgIHRlbXBvcmFyeSBmaWxlIGluIGNhbGwtcHJvY2Vzcy4g ICovCi0gIGlmIChmZCA+PSAwKQotICAgIGVtYWNzX2Nsb3NlIChmZCk7Ci0gIGlmICghKHN0 cmNtcCAoU0RBVEEgKGZpbGUpLCBOVUxMX0RFVklDRSkgPT0gMCB8fCBTUkVGIChmaWxlLCAw KSA9PSAnXDAnKSkKLSAgICB1bmxpbmsgKFNEQVRBIChmaWxlKSk7CisgIHsKKyAgICAvKiBm b3IgTVNET1MgZmRwaWQgaXMgcmVhbGx5IChmZCAuIHRlbXBmaWxlKSAgKi8KKyAgICBMaXNw X09iamVjdCBmaWxlID0gRmNkciAoZmRwaWQpOworICAgIC8qIEZEIGlzIC0xIGFuZCBGSUxF IGlzICIiIHdoZW4gd2UgZGlkbid0IGFjdHVhbGx5IGNyZWF0ZSBhCisgICAgICAgdGVtcG9y YXJ5IGZpbGUgaW4gY2FsbC1wcm9jZXNzLiAgKi8KKyAgICBpZiAoZmQgPj0gMCkKKyAgICAg IGVtYWNzX2Nsb3NlIChmZCk7CisgICAgaWYgKCEoc3RyY21wIChTREFUQSAoZmlsZSksIE5V TExfREVWSUNFKSA9PSAwIHx8IFNSRUYgKGZpbGUsIDApID09ICdcMCcpKQorICAgICAgdW5s aW5rIChTREFUQSAoZmlsZSkpOworICB9CiAjZWxzZSAvKiBub3QgTVNET1MgKi8KLSAgQ09O U19UT19JTlRFR0VSIChGY2RyIChmZHBpZCksIHBpZF90LCBwaWQpOwotCi0gIGlmIChjYWxs X3Byb2Nlc3NfZXhpdGVkKQotICAgIHsKLSAgICAgIGVtYWNzX2Nsb3NlIChmZCk7Ci0gICAg ICByZXR1cm4gUW5pbDsKLSAgICB9Ci0KLSAgaWYgKEVNQUNTX0tJTExQRyAocGlkLCBTSUdJ TlQpID09IDApCi0gICAgewotICAgICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRF WCAoKTsKLSAgICAgIHJlY29yZF91bndpbmRfcHJvdGVjdCAoY2FsbF9wcm9jZXNzX2tpbGws IGZkcGlkKTsKLSAgICAgIG1lc3NhZ2UxICgiV2FpdGluZyBmb3IgcHJvY2VzcyB0byBkaWUu Li4odHlwZSBDLWcgYWdhaW4gdG8ga2lsbCBpdCBpbnN0YW50bHkpIik7Ci0gICAgICBpbW1l ZGlhdGVfcXVpdCA9IDE7Ci0gICAgICBRVUlUOwotICAgICAgd2FpdF9mb3JfdGVybWluYXRp b24gKHBpZCk7Ci0gICAgICBpbW1lZGlhdGVfcXVpdCA9IDA7Ci0gICAgICBzcGVjcGRsX3B0 ciA9IHNwZWNwZGwgKyBjb3VudDsgLyogRGlzY2FyZCB0aGUgdW53aW5kIHByb3RlY3QuICAq LwotICAgICAgbWVzc2FnZTEgKCJXYWl0aW5nIGZvciBwcm9jZXNzIHRvIGRpZS4uLmRvbmUi KTsKLSAgICB9Ci0gIHN5bmNoX3Byb2Nlc3NfYWxpdmUgPSAwOworCisgIC8qIElmIHRoZSBw cm9jZXNzIHN0aWxsIGV4aXN0cywga2lsbCBpdHMgcHJvY2VzcyBncm91cC4gICovCisgIGlm ICghY2FsbF9wcm9jZXNzX2V4aXRlZCkKKyAgICB7CisgICAgICBwaWRfdCBwaWQ7CisgICAg ICBDT05TX1RPX0lOVEVHRVIgKEZjZHIgKGZkcGlkKSwgcGlkX3QsIHBpZCk7CisKKyAgICAg IGlmIChyZWFwYWJsZV9jaGlsZCAocGlkKSAmJiBFTUFDU19LSUxMUEcgKHBpZCwgU0lHSU5U KSA9PSAwKQorCXsKKwkgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CisJ ICByZWNvcmRfdW53aW5kX3Byb3RlY3QgKGNhbGxfcHJvY2Vzc19raWxsLCBmZHBpZCk7CisJ ICBtZXNzYWdlMSAoIldhaXRpbmcgZm9yIHByb2Nlc3MgdG8gZGllLi4uIgorCQkgICAgIih0 eXBlIEMtZyBhZ2FpbiB0byBraWxsIGl0IGluc3RhbnRseSkiKTsKKwkgIGltbWVkaWF0ZV9x dWl0ID0gMTsKKwkgIFFVSVQ7CisJICB3YWl0X2Zvcl90ZXJtaW5hdGlvbiAocGlkLCAwLCAx KTsKKwkgIGltbWVkaWF0ZV9xdWl0ID0gMDsKKwkgIHNwZWNwZGxfcHRyID0gc3BlY3BkbCAr IGNvdW50OyAvKiBEaXNjYXJkIHRoZSB1bndpbmQgcHJvdGVjdC4gICovCisJICBtZXNzYWdl MSAoIldhaXRpbmcgZm9yIHByb2Nlc3MgdG8gZGllLi4uZG9uZSIpOworCX0KKyAgICB9CiAg IGVtYWNzX2Nsb3NlIChmZCk7CiAjZW5kaWYgLyogbm90IE1TRE9TICovCiAgIHJldHVybiBR bmlsOwpAQCAtMTg5LDYgKzIzMiw3IEBACiAjZGVmaW5lIENBTExQUk9DX0JVRkZFUl9TSVpF X01BWCAoNCAqIENBTExQUk9DX0JVRkZFUl9TSVpFX01JTikKICAgY2hhciBidWZbQ0FMTFBS T0NfQlVGRkVSX1NJWkVfTUFYXTsKICAgaW50IGJ1ZnNpemUgPSBDQUxMUFJPQ19CVUZGRVJf U0laRV9NSU47CisgIGludCBzdGF0dXM7CiAgIHB0cmRpZmZfdCBjb3VudCA9IFNQRUNQRExf SU5ERVggKCk7CiAgIFVTRV9TQUZFX0FMTE9DQTsKIApAQCAtNDk0LDE2ICs1MzgsNiBAQAog ICAgIGlmIChmZF9vdXRwdXQgPj0gMCkKICAgICAgIGZkMSA9IGZkX291dHB1dDsKIAotICAg IC8qIFJlY29yZCB0aGF0IHdlJ3JlIGFib3V0IHRvIGNyZWF0ZSBhIHN5bmNocm9ub3VzIHBy b2Nlc3MuICAqLwotICAgIHN5bmNoX3Byb2Nlc3NfYWxpdmUgPSAxOwotCi0gICAgLyogVGhl c2UgdmFycyByZWNvcmQgaW5mb3JtYXRpb24gZnJvbSBwcm9jZXNzIHRlcm1pbmF0aW9uLgot ICAgICAgIENsZWFyIHRoZW0gbm93IGJlZm9yZSBwcm9jZXNzIGNhbiBwb3NzaWJseSB0ZXJt aW5hdGUsCi0gICAgICAgdG8gYXZvaWQgdGltaW5nIGVycm9yIGlmIHByb2Nlc3MgdGVybWlu YXRlcyBzb29uLiAgKi8KLSAgICBzeW5jaF9wcm9jZXNzX2RlYXRoID0gMDsKLSAgICBzeW5j aF9wcm9jZXNzX3JldGNvZGUgPSAwOwotICAgIHN5bmNoX3Byb2Nlc3NfdGVybXNpZyA9IDA7 Ci0KICAgICBpZiAoTklMUCAoZXJyb3JfZmlsZSkpCiAgICAgICBmZF9lcnJvciA9IGVtYWNz X29wZW4gKE5VTExfREVWSUNFLCBPX1dST05MWSwgMCk7CiAgICAgZWxzZSBpZiAoU1RSSU5H UCAoZXJyb3JfZmlsZSkpCkBAIC01MzYsMjAgKzU3MCwxMCBAQAogCiAjaWZkZWYgTVNET1Mg LyogTVcsIEp1bHkgMTk5MyAqLwogICAgIC8qIE5vdGUgdGhhdCBvbiBNU0RPUyBgY2hpbGRf c2V0dXAnIGFjdHVhbGx5IHJldHVybnMgdGhlIGNoaWxkIHByb2Nlc3MKLSAgICAgICBleGl0 IHN0YXR1cywgbm90IGl0cyBQSUQsIHNvIHdlIGFzc2lnbiBpdCB0byBgc3luY2hfcHJvY2Vz c19yZXRjb2RlJwotICAgICAgIGJlbG93LiAgKi8KKyAgICAgICBleGl0IHN0YXR1cywgbm90 IGl0cyBQSUQsIHNvIGFzc2lnbiBpdCB0byBzdGF0dXMgYmVsb3cuICAqLwogICAgIHBpZCA9 IGNoaWxkX3NldHVwIChmaWxlZmQsIG91dGZpbGVmZCwgZmRfZXJyb3IsIChjaGFyICoqKSBu ZXdfYXJndiwKIAkJICAgICAgIDAsIGN1cnJlbnRfZGlyKTsKLQotICAgIC8qIFJlY29yZCB0 aGF0IHRoZSBzeW5jaHJvbm91cyBwcm9jZXNzIGV4aXRlZCBhbmQgbm90ZSBpdHMKLSAgICAg ICB0ZXJtaW5hdGlvbiBzdGF0dXMuICAqLwotICAgIHN5bmNoX3Byb2Nlc3NfYWxpdmUgPSAw OwotICAgIHN5bmNoX3Byb2Nlc3NfcmV0Y29kZSA9IHBpZDsKLSAgICBpZiAoc3luY2hfcHJv Y2Vzc19yZXRjb2RlIDwgMCkgIC8qIG1lYW5zIGl0IGNvdWxkbid0IGJlIGV4ZWMnZWQgKi8K LSAgICAgIHsKLQlzeW5jaHJvbml6ZV9zeXN0ZW1fbWVzc2FnZXNfbG9jYWxlICgpOwotCXN5 bmNoX3Byb2Nlc3NfZGVhdGggPSBzdHJlcnJvciAoZXJybm8pOwotICAgICAgfQorICAgIHN0 YXR1cyA9IHBpZDsKIAogICAgIGVtYWNzX2Nsb3NlIChvdXRmaWxlZmQpOwogICAgIGlmIChm ZF9lcnJvciAhPSBvdXRmaWxlZmQpCkBAIC01NzcsNiArNjAxLDcgQEAKICNlbHNlICAvKiBu b3QgV0lORE9XU05UICovCiAKICAgICBibG9ja19pbnB1dCAoKTsKKyAgICBibG9ja19jaGls ZF9zaWduYWwgKCk7CiAKICAgICAvKiB2Zm9yaywgYW5kIHByZXZlbnQgbG9jYWwgdmFycyBm cm9tIGJlaW5nIGNsb2JiZXJlZCBieSB0aGUgdmZvcmsuICAqLwogICAgIHsKQEAgLTYwOSw2 ICs2MzQsOCBAQAogCiAgICAgaWYgKHBpZCA9PSAwKQogICAgICAgeworCXVuYmxvY2tfY2hp bGRfc2lnbmFsICgpOworCiAJaWYgKGZkWzBdID49IDApCiAJICBlbWFjc19jbG9zZSAoZmRb MF0pOwogCkBAIC02MjEsNiArNjQ4LDI2IEBACiAJCSAgICAgMCwgY3VycmVudF9kaXIpOwog ICAgICAgfQogCisgICAgaWYgKDAgPCBwaWQpCisgICAgICB7CisJaWYgKElOVEVHRVJQIChi dWZmZXIpKQorCSAgcmVjb3JkX2RlbGV0ZWRfcGlkIChwaWQpOworCWVsc2UKKwkgIHsKKyNp ZmRlZiBNU0RPUworCSAgICAvKiBNU0RPUyBuZWVkcyBkaWZmZXJlbnQgY2xlYW51cCBpbmZv cm1hdGlvbi4gICovCisJICAgIGNsZWFudXBfaW5mb190YWlsID0gYnVpbGRfc3RyaW5nICh0 ZW1wZmlsZSA/IHRlbXBmaWxlIDogIiIpOworI2Vsc2UKKwkgICAgY2xlYW51cF9pbmZvX3Rh aWwgPSBJTlRFR0VSX1RPX0NPTlMgKHBpZCk7CisjZW5kaWYKKwkgICAgcmVjb3JkX3Vud2lu ZF9wcm90ZWN0IChjYWxsX3Byb2Nlc3NfY2xlYW51cCwKKwkJCQkgICBGY29ucyAoRmN1cnJl bnRfYnVmZmVyICgpLAorCQkJCQkgIEZjb25zIChJTlRFR0VSX1RPX0NPTlMgKGZkWzBdKSwK KwkJCQkJCSBjbGVhbnVwX2luZm9fdGFpbCkpKTsKKwkgIH0KKyAgICAgIH0KKworICAgIHVu YmxvY2tfY2hpbGRfc2lnbmFsICgpOwogICAgIHVuYmxvY2tfaW5wdXQgKCk7CiAKICNlbmRp ZiAvKiBub3QgV0lORE9XU05UICovCkBAIC02NTgsMTcgKzcwNSw2IEBACiAgIC8qIEVuYWJs ZSBzZW5kaW5nIHNpZ25hbCBpZiB1c2VyIHF1aXRzIGJlbG93LiAgKi8KICAgY2FsbF9wcm9j ZXNzX2V4aXRlZCA9IDA7CiAKLSNpZiBkZWZpbmVkIChNU0RPUykKLSAgLyogTVNET1MgbmVl ZHMgZGlmZmVyZW50IGNsZWFudXAgaW5mb3JtYXRpb24uICAqLwotICBjbGVhbnVwX2luZm9f dGFpbCA9IGJ1aWxkX3N0cmluZyAodGVtcGZpbGUgPyB0ZW1wZmlsZSA6ICIiKTsKLSNlbHNl Ci0gIGNsZWFudXBfaW5mb190YWlsID0gSU5URUdFUl9UT19DT05TIChwaWQpOwotI2VuZGlm IC8qIG5vdCBNU0RPUyAqLwotICByZWNvcmRfdW53aW5kX3Byb3RlY3QgKGNhbGxfcHJvY2Vz c19jbGVhbnVwLAotCQkJIEZjb25zIChGY3VycmVudF9idWZmZXIgKCksCi0JCQkJRmNvbnMg KElOVEVHRVJfVE9fQ09OUyAoZmRbMF0pLAotCQkJCSAgICAgICBjbGVhbnVwX2luZm9fdGFp bCkpKTsKLQogICBpZiAoQlVGRkVSUCAoYnVmZmVyKSkKICAgICBGc2V0X2J1ZmZlciAoYnVm ZmVyKTsKIApAQCAtODUwLDEwICs4ODYsNyBAQAogCiAjaWZuZGVmIE1TRE9TCiAgIC8qIFdh aXQgZm9yIGl0IHRvIHRlcm1pbmF0ZSwgdW5sZXNzIGl0IGFscmVhZHkgaGFzLiAgKi8KLSAg aWYgKG91dHB1dF90b19idWZmZXIpCi0gICAgd2FpdF9mb3JfdGVybWluYXRpb24gKHBpZCk7 Ci0gIGVsc2UKLSAgICBpbnRlcnJ1cHRpYmxlX3dhaXRfZm9yX3Rlcm1pbmF0aW9uIChwaWQp OworICB3YWl0X2Zvcl90ZXJtaW5hdGlvbiAocGlkLCAmc3RhdHVzLCAhb3V0cHV0X3RvX2J1 ZmZlcik7CiAjZW5kaWYKIAogICBpbW1lZGlhdGVfcXVpdCA9IDA7CkBAIC04NjUsMjMgKzg5 OCwyMiBAQAogICBTQUZFX0ZSRUUgKCk7CiAgIHVuYmluZF90byAoY291bnQsIFFuaWwpOwog Ci0gIGlmIChzeW5jaF9wcm9jZXNzX3Rlcm1zaWcpCisgIGlmIChXSUZTSUdOQUxFRCAoc3Rh dHVzKSkKICAgICB7CiAgICAgICBjb25zdCBjaGFyICpzaWduYW1lOwogCiAgICAgICBzeW5j aHJvbml6ZV9zeXN0ZW1fbWVzc2FnZXNfbG9jYWxlICgpOwotICAgICAgc2lnbmFtZSA9IHN0 cnNpZ25hbCAoc3luY2hfcHJvY2Vzc190ZXJtc2lnKTsKKyAgICAgIHNpZ25hbWUgPSBzdHJz aWduYWwgKFdURVJNU0lHIChzdGF0dXMpKTsKIAogICAgICAgaWYgKHNpZ25hbWUgPT0gMCkK IAlzaWduYW1lID0gInVua25vd24iOwogCi0gICAgICBzeW5jaF9wcm9jZXNzX2RlYXRoID0g c2lnbmFtZTsKKyAgICAgIHJldHVybiBjb2RlX2NvbnZlcnRfc3RyaW5nX25vcmVjb3JkIChi dWlsZF9zdHJpbmcgKHNpZ25hbWUpLAorCQkJCQkgICBWbG9jYWxlX2NvZGluZ19zeXN0ZW0s IDApOwogICAgIH0KIAotICBpZiAoc3luY2hfcHJvY2Vzc19kZWF0aCkKLSAgICByZXR1cm4g Y29kZV9jb252ZXJ0X3N0cmluZ19ub3JlY29yZCAoYnVpbGRfc3RyaW5nIChzeW5jaF9wcm9j ZXNzX2RlYXRoKSwKLQkJCQkJIFZsb2NhbGVfY29kaW5nX3N5c3RlbSwgMCk7Ci0gIHJldHVy biBtYWtlX251bWJlciAoc3luY2hfcHJvY2Vzc19yZXRjb2RlKTsKKyAgZWFzc2VydCAoV0lG RVhJVEVEIChzdGF0dXMpKTsKKyAgcmV0dXJuIG1ha2VfbnVtYmVyIChXRVhJVFNUQVRVUyAo c3RhdHVzKSk7CiB9CiAMCiBzdGF0aWMgTGlzcF9PYmplY3QKCj09PSBtb2RpZmllZCBmaWxl ICdzcmMvcHJvY2Vzcy5jJwotLS0gc3JjL3Byb2Nlc3MuYwkyMDEyLTExLTI0IDAxOjU3OjA5 ICswMDAwCisrKyBzcmMvcHJvY2Vzcy5jCTIwMTItMTEtMjYgMjI6MDY6MjQgKzAwMDAKQEAg LTc3NywxMCArNzc3LDIzIEBACiAvKiBGZGVsZXRlX3Byb2Nlc3MgcHJvbWlzZXMgdG8gaW1t ZWRpYXRlbHkgZm9yZ2V0IGFib3V0IHRoZSBwcm9jZXNzLCBidXQgaW4KICAgIHJlYWxpdHks IEVtYWNzIG5lZWRzIHRvIHJlbWVtYmVyIHRob3NlIHByb2Nlc3NlcyB1bnRpbCB0aGV5IGhh dmUgYmVlbgogICAgdHJlYXRlZCBieSB0aGUgU0lHQ0hMRCBoYW5kbGVyIGFuZCB3YWl0cGlk IGhhcyBiZWVuIGludm9rZWQgb24gdGhlbTsKLSAgIG90aGVyd2lzZSB0aGV5IG1pZ2h0IGZp bGwgdXAgdGhlIGtlcm5lbCdzIHByb2Nlc3MgdGFibGUuICAqLworICAgb3RoZXJ3aXNlIHRo ZXkgbWlnaHQgZmlsbCB1cCB0aGUga2VybmVsJ3MgcHJvY2VzcyB0YWJsZS4KKworICAgU29t ZSBwcm9jZXNzZXMgY3JlYXRlZCBieSBjYWxsLXByb2Nlc3MgYXJlIGFsc28gcHV0IG9udG8g dGhpcyBsaXN0LiAgKi8KIHN0YXRpYyBMaXNwX09iamVjdCBkZWxldGVkX3BpZF9saXN0Owog I2VuZGlmCiAKK3ZvaWQKK3JlY29yZF9kZWxldGVkX3BpZCAocGlkX3QgcGlkKQoreworI2lm ZGVmIFNJR0NITEQKKyAgZGVsZXRlZF9waWRfbGlzdCA9IEZjb25zIChtYWtlX2ZpeG51bV9v cl9mbG9hdCAocGlkKSwKKwkJCSAgICAvKiBHQyB0cmVhdGVkIGVsZW1lbnRzIHNldCB0byBu aWwuICAqLworCQkJICAgIEZkZWxxIChRbmlsLCBkZWxldGVkX3BpZF9saXN0KSk7CisKKyNl bmRpZgorfQorCiBERUZVTiAoImRlbGV0ZS1wcm9jZXNzIiwgRmRlbGV0ZV9wcm9jZXNzLCBT ZGVsZXRlX3Byb2Nlc3MsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBEZWxldGUgUFJPQ0VT Uzoga2lsbCBpdCBhbmQgZm9yZ2V0IGFib3V0IGl0IGltbWVkaWF0ZWx5LgogUFJPQ0VTUyBt YXkgYmUgYSBwcm9jZXNzLCBhIGJ1ZmZlciwgdGhlIG5hbWUgb2YgYSBwcm9jZXNzIG9yIGJ1 ZmZlciwgb3IKQEAgLTgwNyw5ICs4MjAsNyBAQAogICAgICAgcGlkX3QgcGlkID0gcC0+cGlk OwogCiAgICAgICAvKiBObyBwcm9ibGVtIHN0b3JpbmcgdGhlIHBpZCBoZXJlLCBhcyBpdCBp cyBzdGlsbCBpbiBWcHJvY2Vzc19hbGlzdC4gICovCi0gICAgICBkZWxldGVkX3BpZF9saXN0 ID0gRmNvbnMgKG1ha2VfZml4bnVtX29yX2Zsb2F0IChwaWQpLAotCQkJCS8qIEdDIHRyZWF0 ZWQgZWxlbWVudHMgc2V0IHRvIG5pbC4gICovCi0JCQkJRmRlbHEgKFFuaWwsIGRlbGV0ZWRf cGlkX2xpc3QpKTsKKyAgICAgIHJlY29yZF9kZWxldGVkX3BpZCAocGlkKTsKICAgICAgIC8q IElmIHRoZSBwcm9jZXNzIGhhcyBhbHJlYWR5IHNpZ25hbGVkLCByZW1vdmUgaXQgZnJvbSB0 aGUgbGlzdC4gICovCiAgICAgICBpZiAocC0+cmF3X3N0YXR1c19uZXcpCiAJdXBkYXRlX3N0 YXR1cyAocCk7CkBAIC02MTY5LDM1ICs2MTgwLDM3IEBACiAgIHJldHVybiBwcm9jZXNzOwog fQogDAorI2lmZGVmIFNJR0NITEQKKwogLyogSWYgdGhlIHN0YXR1cyBvZiB0aGUgcHJvY2Vz cyBERVNJUkVEIGhhcyBjaGFuZ2VkLCByZXR1cm4gdHJ1ZSBhbmQKLSAgIHNldCAqU1RBVFVT IHRvIGl0cyBleGl0IHN0YXR1czsgb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UuCi0gICBJZiBI QVZFIGlzIG5vbm5lZ2F0aXZlLCBhc3N1bWUgdGhhdCBIQVZFID0gd2FpdHBpZCAoSEFWRSwg U1RBVFVTLCAuLi4pCi0gICBoYXMgYWxyZWFkeSBiZWVuIGludm9rZWQsIGFuZCBkbyBub3Qg aW52b2tlIHdhaXRwaWQgYWdhaW4uICAqLworICAgc2V0ICpTVEFUVVMgdG8gaXRzIGV4aXQg c3RhdHVzLiAgT3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UuICBVc2UKKyAgIE9QVElPTlMgYXMg ZXh0cmEgb3B0aW9ucyB3aGVuIGludm9raW5nIHdhaXRwaWQuICBERVNJUkVEIG11c3QgYmUg YQorICAgY2hpbGQgcHJvY2VzcyB0aGF0IGhhcyBub3QgYmVlbiByZWFwZWQuICAqLwogCiBz dGF0aWMgYm9vbAotcHJvY2Vzc19zdGF0dXNfcmV0cmlldmVkIChwaWRfdCBkZXNpcmVkLCBw aWRfdCBoYXZlLCBpbnQgKnN0YXR1cykKK3Byb2Nlc3Nfc3RhdHVzX3JldHJpZXZlZCAocGlk X3QgZGVzaXJlZCwgaW50ICpzdGF0dXMsIGludCBvcHRpb25zKQogewotICBpZiAoaGF2ZSA8 IDApCisgIC8qIEludm9rZSB3YWl0cGlkIG9ubHkgd2l0aCBhIGtub3duIHByb2Nlc3MgSUQ7 IGRvIG5vdCBpbnZva2UKKyAgICAgd2FpdHBpZCB3aXRoIGEgbm9ucG9zaXRpdmUgYXJndW1l bnQuICBPdGhlcndpc2UsIEVtYWNzIG1pZ2h0CisgICAgIHJlYXAgYW4gdW53YW50ZWQgcHJv Y2VzcyBieSBtaXN0YWtlLiAgRm9yIGV4YW1wbGUsIGludm9raW5nCisgICAgIHdhaXRwaWQg KC0xLCAuLi4pIGNhbiBtZXNzIHVwIGdsaWIgYnkgcmVhcGluZyBnbGliJ3Mgc3VicHJvY2Vz c2VzLAorICAgICBzbyB0aGF0IGFub3RoZXIgdGhyZWFkIHJ1bm5pbmcgZ2xpYiB3b24ndCBm aW5kIHRoZW0uICAqLworICBlYXNzZXJ0ICgwIDwgZGVzaXJlZCk7CisKKyAgd2hpbGUgKDEp CiAgICAgewotICAgICAgLyogSW52b2tlIHdhaXRwaWQgb25seSB3aXRoIGEga25vd24gcHJv Y2VzcyBJRDsgZG8gbm90IGludm9rZQotCSB3YWl0cGlkIHdpdGggYSBub25wb3NpdGl2ZSBh cmd1bWVudC4gIE90aGVyd2lzZSwgRW1hY3MgbWlnaHQKLQkgcmVhcCBhbiB1bndhbnRlZCBw cm9jZXNzIGJ5IG1pc3Rha2UuICBGb3IgZXhhbXBsZSwgaW52b2tpbmcKLQkgd2FpdHBpZCAo LTEsIC4uLikgY2FuIG1lc3MgdXAgZ2xpYiBieSByZWFwaW5nIGdsaWIncyBzdWJwcm9jZXNz ZXMsCi0JIHNvIHRoYXQgYW5vdGhlciB0aHJlYWQgcnVubmluZyBnbGliIHdvbid0IGZpbmQg dGhlbS4gICovCi0gICAgICBkbwotCWhhdmUgPSB3YWl0cGlkIChkZXNpcmVkLCBzdGF0dXMs IFdOT0hBTkcgfCBXVU5UUkFDRUQpOwotICAgICAgd2hpbGUgKGhhdmUgPCAwICYmIGVycm5v ID09IEVJTlRSKTsKKyAgICAgIHBpZF90IHBpZCA9IHdhaXRwaWQgKGRlc2lyZWQsIHN0YXR1 cywgV05PSEFORyB8IG9wdGlvbnMpOworICAgICAgaWYgKDAgPD0gcGlkKQorCXJldHVybiAw IDwgcGlkOworICAgICAgaWYgKGVycm5vID09IEVDSElMRCkKKwlyZXR1cm4gMDsKKyAgICAg IGVhc3NlcnQgKGVycm5vID09IEVJTlRSKTsKICAgICB9Ci0KLSAgcmV0dXJuIGhhdmUgPT0g ZGVzaXJlZDsKIH0KIAotLyogSWYgUElEIGlzIG5vbm5lZ2F0aXZlLCB0aGUgY2hpbGQgcHJv Y2VzcyBQSUQgd2l0aCB3YWl0IHN0YXR1cyBXIGhhcwotICAgY2hhbmdlZCBpdHMgc3RhdHVz OyByZWNvcmQgdGhpcyBhbmQgcmV0dXJuIHRydWUuCi0KLSAgIElmIFBJRCBpcyBuZWdhdGl2 ZSwgaWdub3JlIFcsIGFuZCBsb29rIGZvciBrbm93biBjaGlsZCBwcm9jZXNzZXMKLSAgIG9m IEVtYWNzIHdob3NlIHN0YXR1cyBoYXZlIGNoYW5nZWQuICBGb3IgZWFjaCBvbmUgZm91bmQs IHJlY29yZCBpdHMgbmV3Ci0gICBzdGF0dXMuCisvKiBIYW5kbGUgYSBTSUdDSExEIHNpZ25h bCBieSBsb29raW5nIGZvciBrbm93biBjaGlsZCBwcm9jZXNzZXMgb2YKKyAgIEVtYWNzIHdo b3NlIHN0YXR1cyBoYXZlIGNoYW5nZWQuICBGb3IgZWFjaCBvbmUgZm91bmQsIHJlY29yZCBp dHMKKyAgIG5ldyBzdGF0dXMuCiAKICAgIEFsbCB3ZSBkbyBpcyBjaGFuZ2UgdGhlIHN0YXR1 czsgd2UgZG8gbm90IHJ1biBzZW50aW5lbHMgb3IgcHJpbnQKICAgIG5vdGlmaWNhdGlvbnMu ICBUaGF0IGlzIHNhdmVkIGZvciB0aGUgbmV4dCB0aW1lIGtleWJvYXJkIGlucHV0IGlzCkBA IC02MjIwLDIwICs2MjMzLDE2IEBACiAgICAqKiBNYWxsb2MgV0FSTklORzogVGhpcyBzaG91 bGQgbmV2ZXIgY2FsbCBtYWxsb2MgZWl0aGVyIGRpcmVjdGx5IG9yCiAgICBpbmRpcmVjdGx5 OyBpZiBpdCBkb2VzLCB0aGF0IGlzIGEgYnVnICAqLwogCi12b2lkCi1yZWNvcmRfY2hpbGRf c3RhdHVzX2NoYW5nZSAocGlkX3QgcGlkLCBpbnQgdykKK3N0YXRpYyB2b2lkCitoYW5kbGVf Y2hpbGRfc2lnbmFsIChpbnQgc2lnKQogewotI2lmZGVmIFNJR0NITEQKLQotICAvKiBSZWNv cmQgYXQgbW9zdCBvbmUgY2hpbGQgb25seSBpZiB3ZSBhbHJlYWR5IGtub3cgb25lIGNoaWxk IHRoYXQKLSAgICAgaGFzIGV4aXRlZC4gICovCi0gIGJvb2wgcmVjb3JkX2F0X21vc3Rfb25l X2NoaWxkID0gMCA8PSBwaWQ7Ci0KICAgTGlzcF9PYmplY3QgdGFpbDsKKyAgaW50IHN0YXR1 czsKIAogICAvKiBGaW5kIHRoZSBwcm9jZXNzIHRoYXQgc2lnbmFsZWQgdXMsIGFuZCByZWNv cmQgaXRzIHN0YXR1cy4gICovCiAKLSAgLyogVGhlIHByb2Nlc3MgY2FuIGhhdmUgYmVlbiBk ZWxldGVkIGJ5IEZkZWxldGVfcHJvY2Vzcy4gICovCisgIC8qIFRoZSBwcm9jZXNzIGNhbiBo YXZlIGJlZW4gZGVsZXRlZCBieSBGZGVsZXRlX3Byb2Nlc3MsIG9yIGhhdmUKKyAgICAgYmVl biBzdGFydGVkIGFzeW5jaHJvbm91c2x5IGJ5IEZjYWxsX3Byb2Nlc3MuICAqLwogICBmb3Ig KHRhaWwgPSBkZWxldGVkX3BpZF9saXN0OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0 YWlsKSkKICAgICB7CiAgICAgICBib29sIGFsbF9waWRzX2FyZV9maXhudW1zCkBAIC02MjQ3 LDEyICs2MjU2LDggQEAKIAkgICAgZGVsZXRlZF9waWQgPSBYSU5UICh4cGlkKTsKIAkgIGVs c2UKIAkgICAgZGVsZXRlZF9waWQgPSBYRkxPQVRfREFUQSAoeHBpZCk7Ci0JICBpZiAocHJv Y2Vzc19zdGF0dXNfcmV0cmlldmVkIChkZWxldGVkX3BpZCwgcGlkLCAmdykpCi0JICAgIHsK LQkgICAgICBYU0VUQ0FSICh0YWlsLCBRbmlsKTsKLQkgICAgICBpZiAocmVjb3JkX2F0X21v c3Rfb25lX2NoaWxkKQotCQlyZXR1cm47Ci0JICAgIH0KKwkgIGlmIChwcm9jZXNzX3N0YXR1 c19yZXRyaWV2ZWQgKGRlbGV0ZWRfcGlkLCAmc3RhdHVzLCAwKSkKKwkgICAgWFNFVENBUiAo dGFpbCwgUW5pbCk7CiAJfQogICAgIH0KIApAQCAtNjI2MSwxNSArNjI2NiwxNiBAQAogICAg IHsKICAgICAgIExpc3BfT2JqZWN0IHByb2MgPSBYQ0RSIChYQ0FSICh0YWlsKSk7CiAgICAg ICBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwID0gWFBST0NFU1MgKHByb2MpOwotICAgICAgaWYg KHAtPmFsaXZlICYmIHByb2Nlc3Nfc3RhdHVzX3JldHJpZXZlZCAocC0+cGlkLCBwaWQsICZ3 KSkKKworICAgICAgaWYgKHAtPmFsaXZlICYmIHByb2Nlc3Nfc3RhdHVzX3JldHJpZXZlZCAo cC0+cGlkLCAmc3RhdHVzLCBXVU5UUkFDRUQpKQogCXsKIAkgIC8qIENoYW5nZSB0aGUgc3Rh dHVzIG9mIHRoZSBwcm9jZXNzIHRoYXQgd2FzIGZvdW5kLiAgKi8KIAkgIHAtPnRpY2sgPSAr K3Byb2Nlc3NfdGljazsKLQkgIHAtPnJhd19zdGF0dXMgPSB3OworCSAgcC0+cmF3X3N0YXR1 cyA9IHN0YXR1czsKIAkgIHAtPnJhd19zdGF0dXNfbmV3ID0gMTsKIAogCSAgLyogSWYgcHJv Y2VzcyBoYXMgdGVybWluYXRlZCwgc3RvcCB3YWl0aW5nIGZvciBpdHMgb3V0cHV0LiAgKi8K LQkgIGlmIChXSUZTSUdOQUxFRCAodykgfHwgV0lGRVhJVEVEICh3KSkKKwkgIGlmIChXSUZT SUdOQUxFRCAoc3RhdHVzKSB8fCBXSUZFWElURUQgKHN0YXR1cykpCiAJICAgIHsKIAkgICAg ICBpbnQgY2xlYXJfZGVzY19mbGFnID0gMDsKIAkgICAgICBwLT5hbGl2ZSA9IDA7CkBAIC02 Mjg4LDM5ICs2Mjk0LDggQEAKIAkgICAgIGxvb2sgYXJvdW5kLiAgKi8KIAkgIGlmIChpbnB1 dF9hdmFpbGFibGVfY2xlYXJfdGltZSkKIAkgICAgKmlucHV0X2F2YWlsYWJsZV9jbGVhcl90 aW1lID0gbWFrZV9lbWFjc190aW1lICgwLCAwKTsKLQotCSAgaWYgKHJlY29yZF9hdF9tb3N0 X29uZV9jaGlsZCkKLQkgICAgcmV0dXJuOwogCX0KICAgICB9Ci0KLSAgaWYgKDAgPD0gcGlk KQotICAgIHsKLSAgICAgIC8qIFRoZSBjYWxsZXIgc3VjY2Vzc2Z1bGx5IHdhaXRlZCBmb3Ig YSBwaWQgYnV0IG5vIGFzeW5jaHJvbm91cwotCSBwcm9jZXNzIHdhcyBmb3VuZCBmb3IgaXQs IHNvIHRoaXMgaXMgYSBzeW5jaHJvbm91cyBwcm9jZXNzLiAgKi8KLQotICAgICAgc3luY2hf cHJvY2Vzc19hbGl2ZSA9IDA7Ci0KLSAgICAgIC8qIFJlcG9ydCB0aGUgc3RhdHVzIG9mIHRo ZSBzeW5jaHJvbm91cyBwcm9jZXNzLiAgKi8KLSAgICAgIGlmIChXSUZFWElURUQgKHcpKQot CXN5bmNoX3Byb2Nlc3NfcmV0Y29kZSA9IFdFWElUU1RBVFVTICh3KTsKLSAgICAgIGVsc2Ug aWYgKFdJRlNJR05BTEVEICh3KSkKLQlzeW5jaF9wcm9jZXNzX3Rlcm1zaWcgPSBXVEVSTVNJ RyAodyk7Ci0KLSAgICAgIC8qIFRlbGwgd2FpdF9yZWFkaW5nX3Byb2Nlc3Nfb3V0cHV0IHRo YXQgaXQgbmVlZHMgdG8gd2FrZSB1cCBhbmQKLQkgbG9vayBhcm91bmQuICAqLwotICAgICAg aWYgKGlucHV0X2F2YWlsYWJsZV9jbGVhcl90aW1lKQotCSppbnB1dF9hdmFpbGFibGVfY2xl YXJfdGltZSA9IG1ha2VfZW1hY3NfdGltZSAoMCwgMCk7Ci0gICAgfQotI2VuZGlmCi19Ci0K LSNpZmRlZiBTSUdDSExECi0KLXN0YXRpYyB2b2lkCi1oYW5kbGVfY2hpbGRfc2lnbmFsIChp bnQgc2lnKQotewotICByZWNvcmRfY2hpbGRfc3RhdHVzX2NoYW5nZSAoLTEsIDApOwogfQog CiBzdGF0aWMgdm9pZAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9wcm9jZXNzLmgnCi0tLSBz cmMvcHJvY2Vzcy5oCTIwMTItMTEtMjQgMDE6NTc6MDkgKzAwMDAKKysrIHNyYy9wcm9jZXNz LmgJMjAxMi0xMS0yNiAyMjowNjoyNCArMDAwMApAQCAtMTg1LDIzICsxODUsNiBAQAogfQog I2VuZGlmCiAKLS8qIFRydWUgaWYgd2UgYXJlIGFib3V0IHRvIGZvcmsgb2ZmIGEgc3luY2hy b25vdXMgcHJvY2VzcyBvciBpZiB3ZQotICAgYXJlIHdhaXRpbmcgZm9yIGl0LiAgKi8KLWV4 dGVybiBib29sIHN5bmNoX3Byb2Nlc3NfYWxpdmU7Ci0KLS8qIENvbW11bmljYXRlIGV4aXQg c3RhdHVzIG9mIHN5bmMgcHJvY2VzcyB0byBmcm9tIHNpZ2NobGRfaGFuZGxlcgotICAgdG8g RmNhbGxfcHJvY2Vzcy4gICovCi0KLS8qIE5vbnplcm8gPT4gdGhpcyBpcyBhIHN0cmluZyBl eHBsYWluaW5nIGRlYXRoIG9mIHN5bmNocm9ub3VzIHN1YnByb2Nlc3MuICAqLwotZXh0ZXJu IGNvbnN0IGNoYXIgKnN5bmNoX3Byb2Nlc3NfZGVhdGg7Ci0KLS8qIE5vbnplcm8gPT4gdGhp cyBpcyB0aGUgc2lnbmFsIG51bWJlciB0aGF0IHRlcm1pbmF0ZWQgdGhlIHN1YnByb2Nlc3Mu ICAqLwotZXh0ZXJuIGludCBzeW5jaF9wcm9jZXNzX3Rlcm1zaWc7Ci0KLS8qIElmIHN5bmNo X3Byb2Nlc3NfZGVhdGggaXMgemVybywKLSAgIHRoaXMgaXMgZXhpdCBjb2RlIG9mIHN5bmNo cm9ub3VzIHN1YnByb2Nlc3MuICAqLwotZXh0ZXJuIGludCBzeW5jaF9wcm9jZXNzX3JldGNv ZGU7Ci0KIC8qIE5vbnplcm8gbWVhbnMgZG9uJ3QgcnVuIHByb2Nlc3Mgc2VudGluZWxzLiAg VGhpcyBpcyB1c2VkCiAgICB3aGVuIGV4aXRpbmcuICAqLwogZXh0ZXJuIGludCBpbmhpYml0 X3NlbnRpbmVsczsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvc3lzZGVwLmMnCi0tLSBzcmMv c3lzZGVwLmMJMjAxMi0xMS0yNSAwNzo1MDo1NSArMDAwMAorKysgc3JjL3N5c2RlcC5jCTIw MTItMTEtMjYgMjI6MDY6MjQgKzAwMDAKQEAgLTI2NiwyMSArMjY2LDI3IEBACiAKICNpZm5k ZWYgTVNET1MKIAotc3RhdGljIHZvaWQKLXdhaXRfZm9yX3Rlcm1pbmF0aW9uXzEgKHBpZF90 IHBpZCwgaW50IGludGVycnVwdGlibGUpCisvKiBXYWl0IGZvciBzdWJwcm9jZXNzIHdpdGgg cHJvY2VzcyBpZCBQSUQgdG8gdGVybWluYXRlLgorICAgSWYgU1RBVFVTIGlzIG5vbi1udWxs LCBzdG9yZSB0aGUgd2FpdHBpZC1zdHlsZSBleGl0IHN0YXR1cyBpbnRvICpTVEFUVVMuCisg ICBJZiBJTlRFUlJVUFRJQkxFLCB0aGlzIGZ1bmN0aW9uIGlzIGludGVycnVwdGlibGUgYnkg YSBzaWduYWwuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB0d2ljZSBmb3Ig dGhlIHNhbWUgc3VicHJvY2Vzcywgc28gbG9uZworICAgYXMgbm8gb3RoZXIgc3VicHJvY2Vz cyBpcyBjcmVhdGVkICh2aWEgZm9yayBldGMuKSBiZXR3ZWVuIHRoZSB0d28KKyAgIGNhbGxz IChhcyB0aGUgb3RoZXIgc3VicHJvY2VzcyBtaWdodCBiZSBhc3NpZ25lZCB0aGUgc2FtZSBw aWQpLgorICAgRG91YmxlIGNhbGxzIGNhbiBvY2N1ciBkdWUgdG8gcmFjZSBjb25kaXRpb25z IGludm9sdmluZyBzaWduYWxzCisgICBhcnJpdmluZyB3aGVuIHdhaXRpbmcgZm9yIGEgc3lu Y2hyb25vdXMgcHJvY2VzcyB0byBleGl0OyB3aGVuIHRoaXMKKyAgIGhhcHBlbnMsIHRoZSBs YXRlciAoY2xlYW51cCkgY2FsbCBzaG91bGQgdXNlIGEgbnVsbCBTVEFUVVMgdG8KKyAgIGlu ZGljYXRlIHRoYXQgdGhlIHN0YXR1cyBpcyBub3QgbmVlZGVkLiAgKi8KK3ZvaWQKK3dhaXRf Zm9yX3Rlcm1pbmF0aW9uIChwaWRfdCBwaWQsIGludCAqc3RhdHVzLCBib29sIGludGVycnVw dGlibGUpCiB7Ci0gIHdoaWxlICgxKQorICBpbnQgZHVtbXk7CisKKyAgd2hpbGUgKHdhaXRw aWQgKHBpZCwgc3RhdHVzID8gc3RhdHVzIDogJmR1bW15LCAwKSA8IDApCiAgICAgewotICAg ICAgaW50IHN0YXR1czsKLSAgICAgIGludCB3YWl0X3Jlc3VsdCA9IHdhaXRwaWQgKHBpZCwg JnN0YXR1cywgMCk7Ci0gICAgICBpZiAod2FpdF9yZXN1bHQgPCAwKQotCXsKLQkgIGlmIChl cnJubyAhPSBFSU5UUikKLQkgICAgYnJlYWs7Ci0JfQotICAgICAgZWxzZQotCXsKLQkgIHJl Y29yZF9jaGlsZF9zdGF0dXNfY2hhbmdlICh3YWl0X3Jlc3VsdCwgc3RhdHVzKTsKKyAgICAg IGlmIChlcnJubyAhPSBFSU5UUikKKwl7CisJICBlYXNzZXJ0ICghIHN0YXR1cyk7CiAJICBi cmVhazsKIAl9CiAKQEAgLTI4OSwyMiArMjk1LDExIEBACiAgICAgICBpZiAoaW50ZXJydXB0 aWJsZSkKIAlRVUlUOwogICAgIH0KLX0KLQotLyogV2FpdCBmb3Igc3VicHJvY2VzcyB3aXRo IHByb2Nlc3MgaWQgYHBpZCcgdG8gdGVybWluYXRlIGFuZAotICAgbWFrZSBzdXJlIGl0IHdp bGwgZ2V0IGVsaW1pbmF0ZWQgKG5vdCByZW1haW4gZm9yZXZlciBhcyBhIHpvbWJpZSkgKi8K LQotdm9pZAotd2FpdF9mb3JfdGVybWluYXRpb24gKHBpZF90IHBpZCkKLXsKLSAgd2FpdF9m b3JfdGVybWluYXRpb25fMSAocGlkLCAwKTsKLX0KLQotLyogTGlrZSB0aGUgYWJvdmUsIGJ1 dCBhbGxvdyBrZXlib2FyZCBpbnRlcnJ1cHRpb24uICovCi12b2lkCi1pbnRlcnJ1cHRpYmxl X3dhaXRfZm9yX3Rlcm1pbmF0aW9uIChwaWRfdCBwaWQpCi17Ci0gIHdhaXRfZm9yX3Rlcm1p bmF0aW9uXzEgKHBpZCwgMSk7CisKKyAgLyogVGVsbCB3YWl0X3JlYWRpbmdfcHJvY2Vzc19v dXRwdXQgdGhhdCBpdCBuZWVkcyB0byB3YWtlIHVwIGFuZAorICAgICBsb29rIGFyb3VuZC4g ICovCisgIGlmIChpbnB1dF9hdmFpbGFibGVfY2xlYXJfdGltZSkKKyAgICAqaW5wdXRfYXZh aWxhYmxlX2NsZWFyX3RpbWUgPSBtYWtlX2VtYWNzX3RpbWUgKDAsIDApOwogfQogCiAvKgpA QCAtNDU0LDYgKzQ0OSw3IEBACiAgIGNoYXIgb2xkd2RbTUFYUEFUSExFTisxXTsgLyogRml4 ZWQgbGVuZ3RoIGlzIHNhZmUgb24gTVNET1MuICAqLwogI2VuZGlmCiAgIHBpZF90IHBpZDsK KyAgaW50IHN0YXR1czsKICAgc3RydWN0IHNhdmVfc2lnbmFsIHNhdmVkX2hhbmRsZXJzWzVd OwogICBMaXNwX09iamVjdCBkaXI7CiAgIHVuc2lnbmVkIGNoYXIgKnZvbGF0aWxlIHN0cl92 b2xhdGlsZSA9IDA7CkBAIC00OTEsNyArNDg3LDYgQEAKICNpZmRlZiBET1NfTlQKICAgcGlk ID0gMDsKICAgc2F2ZV9zaWduYWxfaGFuZGxlcnMgKHNhdmVkX2hhbmRsZXJzKTsKLSAgc3lu Y2hfcHJvY2Vzc19hbGl2ZSA9IDE7CiAjZWxzZQogICBwaWQgPSB2Zm9yayAoKTsKICAgaWYg KHBpZCA9PSAtMSkKQEAgLTU2MCwxNCArNTU1LDEyIEBACiAgIC8qIERvIHRoaXMgbm93IGlm IHdlIGRpZCBub3QgZG8gaXQgYmVmb3JlLiAgKi8KICNpZm5kZWYgTVNET1MKICAgc2F2ZV9z aWduYWxfaGFuZGxlcnMgKHNhdmVkX2hhbmRsZXJzKTsKLSAgc3luY2hfcHJvY2Vzc19hbGl2 ZSA9IDE7CiAjZW5kaWYKIAogI2lmbmRlZiBET1NfTlQKLSAgd2FpdF9mb3JfdGVybWluYXRp b24gKHBpZCk7CisgIHdhaXRfZm9yX3Rlcm1pbmF0aW9uIChwaWQsICZzdGF0dXMsIDApOwog I2VuZGlmCiAgIHJlc3RvcmVfc2lnbmFsX2hhbmRsZXJzIChzYXZlZF9oYW5kbGVycyk7Ci0g IHN5bmNoX3Byb2Nlc3NfYWxpdmUgPSAwOwogfQogCiBzdGF0aWMgdm9pZAoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9zeXN3YWl0LmgnCi0tLSBzcmMvc3lzd2FpdC5oCTIwMTItMDktMjMg MjI6MjU6MjIgKzAwMDAKKysrIHNyYy9zeXN3YWl0LmgJMjAxMi0xMS0yNiAyMjowNjoyNCAr MDAwMApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBFTUFDU19TWVNXQUlUX0gKICNkZWZp bmUgRU1BQ1NfU1lTV0FJVF9ICiAKKyNpbmNsdWRlIDxzdGRib29sLmg+CiAjaW5jbHVkZSA8 c3lzL3R5cGVzLmg+CiAKICNpZmRlZiBIQVZFX1NZU19XQUlUX0gJLyogV2UgaGF2ZSBzeXMv d2FpdC5oIHdpdGggUE9TSVhvaWQgZGVmaW5pdGlvbnMuICovCkBAIC01MiwxMCArNTMsOSBA QAogI2VuZGlmCiAKIC8qIERlZmluZWQgaW4gcHJvY2Vzcy5jLiAgKi8KLWV4dGVybiB2b2lk IHJlY29yZF9jaGlsZF9zdGF0dXNfY2hhbmdlIChwaWRfdCwgaW50KTsKK2V4dGVybiB2b2lk IHJlY29yZF9kZWxldGVkX3BpZCAocGlkX3QpOwogCiAvKiBEZWZpbmVkIGluIHN5c2RlcC5j LiAgKi8KLWV4dGVybiB2b2lkIHdhaXRfZm9yX3Rlcm1pbmF0aW9uIChwaWRfdCk7Ci1leHRl cm4gdm9pZCBpbnRlcnJ1cHRpYmxlX3dhaXRfZm9yX3Rlcm1pbmF0aW9uIChwaWRfdCk7Citl eHRlcm4gdm9pZCB3YWl0X2Zvcl90ZXJtaW5hdGlvbiAocGlkX3QsIGludCAqLCBib29sKTsK IAogI2VuZGlmIC8qIEVNQUNTX1NZU1dBSVRfSCAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3Ny Yy93MzJwcm9jLmMnCi0tLSBzcmMvdzMycHJvYy5jCTIwMTItMTEtMjQgMDE6NTc6MDkgKzAw MDAKKysrIHNyYy93MzJwcm9jLmMJMjAxMi0xMS0yNiAyMjowNjoyNCArMDAwMApAQCAtMTI3 MywzNCArMTI3Myw3IEBACiAgIERlYlByaW50ICgoIldhaXQgc2lnbmFsZWQgd2l0aCBwcm9j ZXNzIHBpZCAlZFxuIiwgY3AtPnBpZCkpOwogI2VuZGlmCiAKLSAgaWYgKHN0YXR1cykKLSAg ICB7Ci0gICAgICAqc3RhdHVzID0gcmV0dmFsOwotICAgIH0KLSAgZWxzZSBpZiAoc3luY2hf cHJvY2Vzc19hbGl2ZSkKLSAgICB7Ci0gICAgICBzeW5jaF9wcm9jZXNzX2FsaXZlID0gMDsK LQotICAgICAgLyogUmVwb3J0IHRoZSBzdGF0dXMgb2YgdGhlIHN5bmNocm9ub3VzIHByb2Nl c3MuICAqLwotICAgICAgaWYgKFdJRkVYSVRFRCAocmV0dmFsKSkKLQlzeW5jaF9wcm9jZXNz X3JldGNvZGUgPSBXRVhJVFNUQVRVUyAocmV0dmFsKTsKLSAgICAgIGVsc2UgaWYgKFdJRlNJ R05BTEVEIChyZXR2YWwpKQotCXsKLQkgIGludCBjb2RlID0gV1RFUk1TSUcgKHJldHZhbCk7 Ci0JICBjb25zdCBjaGFyICpzaWduYW1lOwotCi0JICBzeW5jaHJvbml6ZV9zeXN0ZW1fbWVz c2FnZXNfbG9jYWxlICgpOwotCSAgc2lnbmFtZSA9IHN0cnNpZ25hbCAoY29kZSk7Ci0KLQkg IGlmIChzaWduYW1lID09IDApCi0JICAgIHNpZ25hbWUgPSAidW5rbm93biI7Ci0KLQkgIHN5 bmNoX3Byb2Nlc3NfZGVhdGggPSBzaWduYW1lOwotCX0KLQotICAgICAgcmVhcF9zdWJwcm9j ZXNzIChjcCk7Ci0gICAgfQotCisgICpzdGF0dXMgPSByZXR2YWw7CiAgIHJlYXBfc3VicHJv Y2VzcyAoY3ApOwogCiAgIHJldHVybiBwaWQ7Cgo= --------------040502050800060804060908--