From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: 'struct window' cleanup #5 [Re: 'struct window' cleanup #4] Date: Tue, 03 Jul 2012 09:54:56 +0400 Message-ID: <4FF28930.1000202@yandex.ru> References: <4FF17BAE.7090200@yandex.ru> <83ehou5apu.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040700070807080907020708" X-Trace: dough.gmane.org 1341294780 23093 80.91.229.3 (3 Jul 2012 05:53:00 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 3 Jul 2012 05:53:00 +0000 (UTC) Cc: emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Jul 03 07:52:59 2012 Return-path: Envelope-to: ged-emacs-devel@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 1Slw2h-0000GD-U6 for ged-emacs-devel@m.gmane.org; Tue, 03 Jul 2012 07:52:56 +0200 Original-Received: from localhost ([::1]:46411 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Slw2h-0007Yk-0U for ged-emacs-devel@m.gmane.org; Tue, 03 Jul 2012 01:52:55 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:51563) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Slw2a-0007X0-BL for emacs-devel@gnu.org; Tue, 03 Jul 2012 01:52:51 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Slw2W-0000gQ-JC for emacs-devel@gnu.org; Tue, 03 Jul 2012 01:52:47 -0400 Original-Received: from forward10.mail.yandex.net ([77.88.61.49]:38854) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Slw2R-0000fh-7A; Tue, 03 Jul 2012 01:52:40 -0400 Original-Received: from smtp6.mail.yandex.net (smtp6.mail.yandex.net [77.88.61.56]) by forward10.mail.yandex.net (Yandex) with ESMTP id 7459D1021BCD; Tue, 3 Jul 2012 09:52:36 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1341294756; bh=RNj0R5rZmgmdp5OzilB4WzlbcNRJ0ugyM2m1On42Wak=; h=Message-ID:Date:From:MIME-Version:To:CC:Subject:References: In-Reply-To:Content-Type; b=m07/bzoWvEa+geoEoNkMYcN5RhQBCgQ6FUtyIwiMaKynzUx50oxG2M76bpyEsQSFL /HVRhQKV+fKEqrOSgooRAsEFkpazhQab79FhDIa9Em39NqIs+m0LMrz4etQVG5S50S sQIbcDfJHepoHHX9yVE4QY657Aa/z3gIkcdPnn5w= Original-Received: from smtp6.mail.yandex.net (localhost [127.0.0.1]) by smtp6.mail.yandex.net (Yandex) with ESMTP id 545BC16405AB; Tue, 3 Jul 2012 09:52:36 +0400 (MSK) Original-Received: from 210.gprs.mts.ru (210.gprs.mts.ru [213.87.131.210]) by smtp6.mail.yandex.net (nwsmtp/Yandex) with ESMTP id qW60Bj9h-qX6mhkmS; Tue, 3 Jul 2012 09:52:34 +0400 X-Yandex-Rcpt-Suid: eliz@gnu.org X-Yandex-Rcpt-Suid: emacs-devel@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1341294756; bh=RNj0R5rZmgmdp5OzilB4WzlbcNRJ0ugyM2m1On42Wak=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=mQIf6f82Ax6y+/mWRZEeNENjYUSyq8NqVCQnSW+BktHFdy01XfFs9tcrXS6N6Crit sTgIUzE8JyHCHdtCDJtUweXh8QEr46lgAZtsezE2N7iceP5s7bMtWN+LryTGzVvTRW ADQvAMarjo5pkYokyI113hoVD5QT46zKuo3MoY0c= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 In-Reply-To: <83ehou5apu.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 77.88.61.49 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:151384 Archived-At: This is a multi-part message in MIME format. --------------040700070807080907020708 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 07/02/2012 09:33 PM, Eli Zaretskii wrote: > Shouldn't we test w->window_end_valid for being non-zero, before we > trust the value of w->window_end_vpos? Zero for a vertical position > is perfectly valid, so if i is zero, you can err here. The core idea is to have window_end_vpos (and window_end_pos) equal to -1 for just created window (i.e. pointer returned by make_window). For such a window, window_end_valid is always 0, and passing such a window to main redisplay routines is an error (so there are 4 debugging checks commented with "Just initialized windows should not pass here"). If the window is completely initialized, window_end_vpos may be 0 and window_end_valid may be 0 or 1. > If the "invalid" value is going to be -1, then why did you initialize > with zero above? See above. > Bother: doesn't the comparison with w->buffer test for a specific > buffer, rather than just non-nil value? The corresponding assignment, > viz.: > >> if (accurate_p) >> { >> - w->window_end_valid = w->buffer; >> + w->window_end_valid = 1; >> w->update_mode_line = 0; >> } > > seems to handle the case when the display is "accurate". Perhaps use > a different value, like 2, for this situation? I tried a lot, but never hits the situation where window buffer was changed on the way from mark_window_display_accurate_1 to note_mouse_highlight (buffer text may be changed, of course). So I suppose that w->window_end_valid = w->buffer is just a synonym for w->window_end_valid = Qt. Dmitry --------------040700070807080907020708 Content-Type: text/plain; charset=UTF-8; name="window_cleanup_5.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="window_cleanup_5.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9kaXNwbmV3LmMnCi0tLSBzcmMvZGlzcG5ldy5jCTIw MTItMDYtMjggMDc6NTA6NTAgKzAwMDAKKysrIHNyYy9kaXNwbmV3LmMJMjAxMi0wNy0wMyAw NTo1MTo1NyArMDAwMApAQCAtNjQxLDExICs2NDEsMTIgQEAKIAkJICAgIGJyZWFrOwogCQkg IH0KIAotCSAgICAgIC8qIFdpbmRvdyBlbmQgaXMgaW52YWxpZCwgaWYgaW5zaWRlIG9mIHRo ZSByb3dzIHRoYXQKLQkJIGFyZSBpbnZhbGlkYXRlZCBiZWxvdy4gICovCi0JICAgICAgaWYg KElOVEVHRVJQICh3LT53aW5kb3dfZW5kX3Zwb3MpCi0JCSAgJiYgWEZBU1RJTlQgKHctPndp bmRvd19lbmRfdnBvcykgPj0gaSkKLQkJdy0+d2luZG93X2VuZF92YWxpZCA9IFFuaWw7CisJ ICAgICAgLyogV2luZG93IGVuZCBpcyBpbnZhbGlkIGlmIHRoZSB3aW5kb3cgaXMgbm90IGNv bXBsZXRlbHkKKwkJIGluaXRpYWxpemVkIG9yIG9sZCBnbHlwaCBtYXRyaXggcm93IG9mIHRo ZSBsYXN0IGdseXBoCisJCSBpcyBsYXJnZXIgdGhhbiB0aGUgdmFsdWUgY29tcHV0ZWQgYWJv dmUuICAqLworCSAgICAgIGlmICh3LT53aW5kb3dfZW5kX3Zwb3MgPT0gLTEKKwkJICB8fCAo dy0+d2luZG93X2VuZF92cG9zID4gMCAmJiB3LT53aW5kb3dfZW5kX3Zwb3MgPj0gaSkpCisJ CXctPndpbmRvd19lbmRfdmFsaWQgPSAwOwogCiAJICAgICAgd2hpbGUgKGkgPCBtYXRyaXgt Pm5yb3dzKQogCQltYXRyaXgtPnJvd3NbaSsrXS5lbmFibGVkX3AgPSAwOwpAQCAtOTAyLDcg KzkwMyw3IEBACiAJICBlbHNlCiAJICAgIHsKIAkgICAgICBjbGVhcl9nbHlwaF9tYXRyaXgg KHctPmN1cnJlbnRfbWF0cml4KTsKLQkgICAgICB3LT53aW5kb3dfZW5kX3ZhbGlkID0gUW5p bDsKKwkgICAgICB3LT53aW5kb3dfZW5kX3ZhbGlkID0gMDsKIAkgICAgfQogCX0KIAoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NyYy93aW5kb3cuYycKLS0tIHNyYy93aW5kb3cuYwkyMDEyLTA2 LTMwIDA5OjEzOjU0ICswMDAwCisrKyBzcmMvd2luZG93LmMJMjAxMi0wNy0wMyAwNDoyMDoz OCArMDAwMApAQCAtMTMwNywxMiArMTMwNywxMiBAQAogICAgICBUaGUgdXNlciBjYW4gY29t cHV0ZSBpdCB3aXRoIHZlcnRpY2FsLW1vdGlvbiBpZiBoZSB3YW50cyB0by4KICAgICAgSXQg d291bGQgYmUgbmljZXIgdG8gZG8gaXQgYXV0b21hdGljYWxseSwKICAgICAgYnV0IHRoYXQn cyBzbyBzbG93IHRoYXQgaXQgd291bGQgcHJvYmFibHkgYm90aGVyIHBlb3BsZS4gICovCi0g IGlmIChOSUxQICh3LT53aW5kb3dfZW5kX3ZhbGlkKSkKKyAgaWYgKCF3LT53aW5kb3dfZW5k X3ZhbGlkKQogICAgIHJldHVybiBRbmlsOwogI2VuZGlmCiAKICAgaWYgKCEgTklMUCAodXBk YXRlKQotICAgICAgJiYgISAoISBOSUxQICh3LT53aW5kb3dfZW5kX3ZhbGlkKQorICAgICAg JiYgISAody0+d2luZG93X2VuZF92YWxpZAogCSAgICAmJiB3LT5sYXN0X21vZGlmaWVkID49 IEJVRl9NT0RJRkYgKGIpCiAJICAgICYmIHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCA+PSBC VUZfT1ZFUkxBWV9NT0RJRkYgKGIpKQogICAgICAgJiYgIW5vbmludGVyYWN0aXZlKQpAQCAt MTM1NCw3ICsxMzU0LDcgQEAKIAlzZXRfYnVmZmVyX2ludGVybmFsIChvbGRfYnVmZmVyKTsK ICAgICB9CiAgIGVsc2UKLSAgICBYU0VUSU5UICh2YWx1ZSwgQlVGX1ogKGIpIC0gWEZBU1RJ TlQgKHctPndpbmRvd19lbmRfcG9zKSk7CisgICAgWFNFVElOVCAodmFsdWUsIEJVRl9aIChi KSAtIHctPndpbmRvd19lbmRfcG9zKTsKIAogICByZXR1cm4gdmFsdWU7CiB9CkBAIC0xNTA3 LDcgKzE1MDcsNyBAQAogICBiID0gWEJVRkZFUiAody0+YnVmZmVyKTsKIAogICAvKiBGYWls IGlmIGN1cnJlbnQgbWF0cml4IGlzIG5vdCB1cC10by1kYXRlLiAgKi8KLSAgaWYgKE5JTFAg KHctPndpbmRvd19lbmRfdmFsaWQpCisgIGlmICghdy0+d2luZG93X2VuZF92YWxpZAogICAg ICAgfHwgY3VycmVudF9idWZmZXItPmNsaXBfY2hhbmdlZAogICAgICAgfHwgY3VycmVudF9i dWZmZXItPnByZXZlbnRfcmVkaXNwbGF5X29wdGltaXphdGlvbnNfcAogICAgICAgfHwgdy0+ bGFzdF9tb2RpZmllZCA8IEJVRl9NT0RJRkYgKGIpCkBAIC0xODQxLDkgKzE4NDEsOSBAQAog ICAgICAgbi0+cGh5c19jdXJzb3Jfd2lkdGggPSAtMTsKICAgICAgIG4tPm11c3RfYmVfdXBk YXRlZF9wID0gMDsKICAgICAgIG4tPnBzZXVkb193aW5kb3dfcCA9IDA7Ci0gICAgICBYU0VU RkFTVElOVCAobi0+d2luZG93X2VuZF92cG9zLCAwKTsKLSAgICAgIFhTRVRGQVNUSU5UIChu LT53aW5kb3dfZW5kX3BvcywgMCk7Ci0gICAgICBuLT53aW5kb3dfZW5kX3ZhbGlkID0gUW5p bDsKKyAgICAgIG4tPndpbmRvd19lbmRfdnBvcyA9IDA7CisgICAgICBuLT53aW5kb3dfZW5k X3BvcyA9IDA7CisgICAgICBuLT53aW5kb3dfZW5kX3ZhbGlkID0gMDsKICAgICAgIG4tPmZy b3plbl93aW5kb3dfc3RhcnRfcCA9IDA7CiAgICAgfQogCkBAIC0yNzczLDcgKzI3NzMsNyBA QAogCSAgcG9zID0gKnZtb3Rpb24gKHN0YXJ0cG9zLCAtdG9wLCB3KTsKIAogCSAgc2V0X21h cmtlcl9ib3RoICh3LT5zdGFydCwgdy0+YnVmZmVyLCBwb3MuYnVmcG9zLCBwb3MuYnl0ZXBv cyk7Ci0JICB3LT53aW5kb3dfZW5kX3ZhbGlkID0gUW5pbDsKKwkgIHctPndpbmRvd19lbmRf dmFsaWQgPSAwOwogCSAgdy0+c3RhcnRfYXRfbGluZV9iZWcgPSAocG9zLmJ5dGVwb3MgPT0g QkVHVl9CWVRFCiAJCQkJICAgIHx8IEZFVENIX0JZVEUgKHBvcy5ieXRlcG9zIC0gMSkgPT0g J1xuJyk7CiAJICAvKiBXZSBuZWVkIHRvIGRvIHRoaXMsIHNvIHRoYXQgdGhlIHdpbmRvdy1z Y3JvbGwtZnVuY3Rpb25zCkBAIC0yOTg5LDEwICsyOTg5LDEwIEBACiAgICAgWFNFVElOVCAo QlZBUiAoYiwgZGlzcGxheV9jb3VudCksIFhJTlQgKEJWQVIgKGIsIGRpc3BsYXlfY291bnQp KSArIDEpOwogICBCVkFSIChiLCBkaXNwbGF5X3RpbWUpID0gRmN1cnJlbnRfdGltZSAoKTsK IAotICBYU0VURkFTVElOVCAody0+d2luZG93X2VuZF9wb3MsIDApOwotICBYU0VURkFTVElO VCAody0+d2luZG93X2VuZF92cG9zLCAwKTsKKyAgdy0+d2luZG93X2VuZF9wb3MgPSAwOwor ICB3LT53aW5kb3dfZW5kX3Zwb3MgPSAwOwogICBtZW1zZXQgKCZ3LT5sYXN0X2N1cnNvciwg MCwgc2l6ZW9mIHctPmxhc3RfY3Vyc29yKTsKLSAgdy0+d2luZG93X2VuZF92YWxpZCA9IFFu aWw7CisgIHctPndpbmRvd19lbmRfdmFsaWQgPSAwOwogICBpZiAoIShrZWVwX21hcmdpbnNf cCAmJiBzYW1lYnVmKSkKICAgICB7IC8qIElmIHdlJ3JlIG5vdCBhY3R1YWxseSBjaGFuZ2lu ZyB0aGUgYnVmZmVyLCBkb24ndCByZXNldCBoc2Nyb2xsIGFuZAogCSB2c2Nyb2xsLiAgVGhp cyBjYXNlIGhhcHBlbnMgZm9yIGV4YW1wbGUgd2hlbiBjYWxsZWQgZnJvbQpAQCAtMzI4Nyw4 ICszMjg3LDYgQEAKICAgdy0+c3RhcnQgPSBGbWFrZV9tYXJrZXIgKCk7CiAgIHctPnBvaW50 bSA9IEZtYWtlX21hcmtlciAoKTsKICAgdy0+dmVydGljYWxfc2Nyb2xsX2Jhcl90eXBlID0g UXQ7Ci0gIFhTRVRGQVNUSU5UICh3LT53aW5kb3dfZW5kX3BvcywgMCk7Ci0gIFhTRVRGQVNU SU5UICh3LT53aW5kb3dfZW5kX3Zwb3MsIDApOwogCiAgIC8qIEluaXRpYWxpemUgbm9uLUxp c3AgZGF0YS4gIE5vdGUgdGhhdCBhbGxvY2F0ZV93aW5kb3cgemVyb2VzIG91dCBhbGwKICAg ICAgbm9uLUxpc3AgZGF0YSwgc28gZG8gaXQgb25seSBmb3Igc2xvdHMgd2hpY2ggc2hvdWxk IG5vdCBiZSB6ZXJvLiAgKi8KQEAgLTMyOTYsNiArMzI5NCw4IEBACiAgIHctPnBoeXNfY3Vy c29yX3R5cGUgPSAtMTsKICAgdy0+cGh5c19jdXJzb3Jfd2lkdGggPSAtMTsKICAgdy0+c2Vx dWVuY2VfbnVtYmVyID0gKytzZXF1ZW5jZV9udW1iZXI7CisgIHctPndpbmRvd19lbmRfcG9z ID0gLTE7CisgIHctPndpbmRvd19lbmRfdnBvcyA9IC0xOwogCiAgIC8qIFJlc2V0IHdpbmRv d19saXN0LiAgKi8KICAgVndpbmRvd19saXN0ID0gUW5pbDsKQEAgLTM3NjIsNyArMzc2Miw3 IEBACiAgICAgfQogCiAgIG4tPmJ1ZmZlciA9IFF0OwotICBuLT53aW5kb3dfZW5kX3ZhbGlk ID0gUW5pbDsKKyAgbi0+d2luZG93X2VuZF92YWxpZCA9IDA7CiAgIG1lbXNldCAoJm4tPmxh c3RfY3Vyc29yLCAwLCBzaXplb2Ygbi0+bGFzdF9jdXJzb3IpOwogCiAgIC8qIEdldCBzcGVj aWFsIGdlb21ldHJ5IHNldHRpbmdzIGZyb20gcmVmZXJlbmNlIHdpbmRvdy4gICovCkBAIC01 MTc0LDcgKzUxNzQsNyBAQAogCiAgIC8qIFNldCB0aGUgbmV3IHdpbmRvdyBzdGFydC4gICov CiAgIHNldF9tYXJrZXJfYm90aCAody0+c3RhcnQsIHctPmJ1ZmZlciwgY2hhcnBvcywgYnl0 ZXBvcyk7Ci0gIHctPndpbmRvd19lbmRfdmFsaWQgPSBRbmlsOworICB3LT53aW5kb3dfZW5k X3ZhbGlkID0gMDsKIAogICB3LT5vcHRpb25hbF9uZXdfc3RhcnQgPSAxOwogCkBAIC02MTE1 LDcgKzYxMTUsNyBAQAogICAgICAgYWRqdXN0X3dpbmRvd19tYXJnaW5zICh3KTsKIAogICAg ICAgY2xlYXJfZ2x5cGhfbWF0cml4ICh3LT5jdXJyZW50X21hdHJpeCk7Ci0gICAgICB3LT53 aW5kb3dfZW5kX3ZhbGlkID0gUW5pbDsKKyAgICAgIHctPndpbmRvd19lbmRfdmFsaWQgPSAw OwogCiAgICAgICArK3dpbmRvd3Nfb3JfYnVmZmVyc19jaGFuZ2VkOwogICAgICAgYWRqdXN0 X2dseXBocyAoWEZSQU1FIChXSU5ET1dfRlJBTUUgKHcpKSk7CkBAIC02MTg0LDcgKzYxODQs NyBAQAogICAgICAgYWRqdXN0X3dpbmRvd19tYXJnaW5zICh3KTsKIAogICAgICAgY2xlYXJf Z2x5cGhfbWF0cml4ICh3LT5jdXJyZW50X21hdHJpeCk7Ci0gICAgICB3LT53aW5kb3dfZW5k X3ZhbGlkID0gUW5pbDsKKyAgICAgIHctPndpbmRvd19lbmRfdmFsaWQgPSAwOwogCiAgICAg ICArK3dpbmRvd3Nfb3JfYnVmZmVyc19jaGFuZ2VkOwogICAgICAgYWRqdXN0X2dseXBocyAo WEZSQU1FIChXSU5ET1dfRlJBTUUgKHcpKSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3dp bmRvdy5oJwotLS0gc3JjL3dpbmRvdy5oCTIwMTItMDYtMjkgMTE6NDg6MDggKzAwMDAKKysr IHNyYy93aW5kb3cuaAkyMDEyLTA3LTAzIDA0OjIxOjIxICswMDAwCkBAIC0xNjgsMTggKzE2 OCw2IEBACiAgICAgICAgbm8gc2Nyb2xsIGJhci4gIEEgdmFsdWUgb2YgdCBtZWFucyB1c2Ug ZnJhbWUgdmFsdWUuICAqLwogICAgIExpc3BfT2JqZWN0IHZlcnRpY2FsX3Njcm9sbF9iYXJf dHlwZTsKIAotICAgIC8qIFogLSB0aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGds eXBoIGluIHRoZSBjdXJyZW50IG1hdHJpeAotICAgICAgIG9mIFcuICBPbmx5IHZhbGlkIGlm IFdJTkRPV19FTkRfVkFMSUQgaXMgbm90IG5pbC4gICovCi0gICAgTGlzcF9PYmplY3Qgd2lu ZG93X2VuZF9wb3M7Ci0gICAgLyogR2x5cGggbWF0cml4IHJvdyBvZiB0aGUgbGFzdCBnbHlw aCBpbiB0aGUgY3VycmVudCBtYXRyaXgKLSAgICAgICBvZiBXLiAgT25seSB2YWxpZCBpZiBX SU5ET1dfRU5EX1ZBTElEIGlzIG5vdCBuaWwuICAqLwotICAgIExpc3BfT2JqZWN0IHdpbmRv d19lbmRfdnBvczsKLSAgICAvKiB0IGlmIHdpbmRvd19lbmRfcG9zIGlzIHRydWx5IHZhbGlk LgotICAgICAgIFRoaXMgaXMgbmlsIGlmIG5vbnRyaXZpYWwgcmVkaXNwbGF5IGlzIHByZWVt cHRlZAotICAgICAgIHNpbmNlIGluIHRoYXQgY2FzZSB0aGUgZnJhbWUgaW1hZ2UgdGhhdCB3 aW5kb3dfZW5kX3BvcwotICAgICAgIGRpZCBub3QgZ2V0IG9udG8gdGhlIGZyYW1lLiAgKi8K LSAgICBMaXNwX09iamVjdCB3aW5kb3dfZW5kX3ZhbGlkOwotCiAgICAgLyogRGlzcGxheS10 YWJsZSB0byB1c2UgZm9yIGRpc3BsYXlpbmcgY2hhcnMgaW4gdGhpcyB3aW5kb3cuCiAgICAg ICAgTmlsIG1lYW5zIHVzZSB0aGUgYnVmZmVyJ3Mgb3duIGRpc3BsYXktdGFibGUuICAqLwog ICAgIExpc3BfT2JqZWN0IGRpc3BsYXlfdGFibGU7CkBAIC0xOTgsMTAgKzE4Niw2IEBACiAg ICAgICAgYXMgbG9uZyBhcyB0aGUgd2luZG93IHNob3dzIHRoYXQgYnVmZmVyLiAgKi8KICAg ICBMaXNwX09iamVjdCBiYXNlX2xpbmVfcG9zOwogCi0gICAgLyogSWYgd2UgaGF2ZSBoaWdo bGlnaHRlZCB0aGUgcmVnaW9uIChvciBhbnkgcGFydCBvZiBpdCksCi0gICAgICAgdGhpcyBp cyB0aGUgbWFyayBwb3NpdGlvbiB0aGF0IHdlIHVzZWQsIGFzIGFuIGludGVnZXIuICAqLwot ICAgIExpc3BfT2JqZWN0IHJlZ2lvbl9zaG93aW5nOwotCiAgICAgLyogVGhlIGNvbHVtbiBu dW1iZXIgY3VycmVudGx5IGRpc3BsYXllZCBpbiB0aGlzIHdpbmRvdydzIG1vZGUgbGluZSwK ICAgICAgICBvciBuaWwgaWYgY29sdW1uIG51bWJlcnMgYXJlIG5vdCBiZWluZyBkaXNwbGF5 ZWQuICAqLwogICAgIExpc3BfT2JqZWN0IGNvbHVtbl9udW1iZXJfZGlzcGxheWVkOwpAQCAt MjM4LDExICsyMjIsMTEgQEAKICAgICBpbnQgc2VxdWVuY2VfbnVtYmVyOwogCiAgICAgLyog TnVtYmVyIG9mIGNvbHVtbnMgZGlzcGxheSB3aXRoaW4gdGhlIHdpbmRvdyBpcyBzY3JvbGxl ZCB0byB0aGUgbGVmdC4gICovCi0gICAgcHRyZGlmZl90IGhzY3JvbGw7CisgICAgaW50IGhz Y3JvbGw7CiAKICAgICAvKiBNaW5pbXVtIGhzY3JvbGwgZm9yIGF1dG9tYXRpYyBoc2Nyb2xs aW5nLiAgVGhpcyBpcyB0aGUgdmFsdWUKICAgICAgICB0aGUgdXNlciBoYXMgc2V0LCBieSBz ZXQtd2luZG93LWhzY3JvbGwgZm9yIGV4YW1wbGUuICAqLwotICAgIHB0cmRpZmZfdCBtaW5f aHNjcm9sbDsKKyAgICBpbnQgbWluX2hzY3JvbGw7CiAKICAgICAvKiBEaXNwbGF5ZWQgYnVm ZmVyJ3MgdGV4dCBtb2RpZmljYXRpb24gZXZlbnRzIGNvdW50ZXIgYXMgb2YgbGFzdCB0aW1l CiAgICAgICAgZGlzcGxheSBjb21wbGV0ZWQuICAqLwpAQCAtMjU2LDYgKzI0MCwxNCBAQAog ICAgICAgIGl0IHNob3VsZCBiZSBwb3NpdGl2ZS4gKi8KICAgICBwdHJkaWZmX3QgbGFzdF9w b2ludDsKIAorICAgIC8qIFogLSB0aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGds eXBoIGluIHRoZSBjdXJyZW50IG1hdHJpeCBvZiBXLgorICAgICAgIFNob3VsZCBiZSBub25u ZWdhdGl2ZSwgYW5kIHZhbGlkIG9ubHkgaWYgd2luZG93X2VuZF92YWxpZCBpcyBub3QgemVy by4gICovCisgICAgcHRyZGlmZl90IHdpbmRvd19lbmRfcG9zOworCisgICAgLyogR2x5cGgg bWF0cml4IHJvdyBvZiB0aGUgbGFzdCBnbHlwaCBpbiB0aGUgY3VycmVudCBtYXRyaXggb2Yg Vy4KKyAgICAgICBTaG91bGQgYmUgbm9ubmVnYXRpdmUsIGFuZCB2YWxpZCBvbmx5IGlmIHdp bmRvd19lbmRfdmFsaWQgaXMgbm90IHplcm8uICAqLworICAgIGludCB3aW5kb3dfZW5kX3Zw b3M7CisKICAgICAvKiBTY2FsaW5nIGZhY3RvciBmb3IgdGhlIGdseXBoX21hdHJpeCBzaXpl IGNhbGN1bGF0aW9uIGluIHRoaXMgd2luZG93LgogICAgICAgIFVzZWQgaWYgd2luZG93IGNv bnRhaW5zIG1hbnkgc21hbGwgaW1hZ2VzIG9yIHVzZXMgcHJvcG9ydGlvbmFsIGZvbnRzLAog ICAgICAgIGFzIHRoZSBub3JtYWwgIG1heSB5aWVsZCBhIG1hdHJpeCB3aGljaCBpcyB0b28g c21hbGwuICAqLwpAQCAtMjg5LDYgKzI4MSw5IEBACiAgICAgICAgd2FzIGxhc3QgdXBkYXRl ZC4gICovCiAgICAgdW5zaWduZWQgbGFzdF9oYWRfc3RhciA6IDE7CiAKKyAgICAvKiBOb24t emVybyBpZiB3ZSBoYXZlIGhpZ2hsaWdodGVkIHRoZSByZWdpb24gKG9yIGFueSBwYXJ0IG9m IGl0KS4gICovCisgICAgdW5zaWduZWQgcmVnaW9uX3Nob3dpbmcgOiAxOworCiAgICAgLyog Tm9uLXplcm8gbWVhbnMgY3VycmVudCB2YWx1ZSBvZiBgc3RhcnQnCiAgICAgICAgd2FzIHRo ZSBiZWdpbm5pbmcgb2YgYSBsaW5lIHdoZW4gaXQgd2FzIGNob3Nlbi4gICovCiAgICAgdW5z aWduZWQgc3RhcnRfYXRfbGluZV9iZWcgOiAxOwpAQCAtMzMxLDYgKzMyNiwxMSBAQAogICAg ICAgIE90aGVyd2lzZSBkcmF3IHRoZW0gYmV0d2VlbiBtYXJnaW4gYXJlYXMgYW5kIHRleHQu ICAqLwogICAgIHVuc2lnbmVkIGZyaW5nZXNfb3V0c2lkZV9tYXJnaW5zIDogMTsKIAorICAg IC8qIE5vbi16ZXJvIGlmIHdpbmRvd19lbmRfcG9zIGlzIHRydWx5IHZhbGlkLiAgVGhpcyBp cyB6ZXJvIGlmCisgICAgICAgbm9udHJpdmlhbCByZWRpc3BsYXkgaXMgcHJlZW1wdGVkIHNp bmNlIGluIHRoYXQgY2FzZSB0aGUKKyAgICAgICBmcmFtZSBpbWFnZSB0aGF0IHdpbmRvd19l bmRfcG9zIGRpZCBub3QgZ2V0IG9udG8gdGhlIGZyYW1lLiAgKi8KKyAgICB1bnNpZ25lZCB3 aW5kb3dfZW5kX3ZhbGlkIDogMTsKKwogICAgIC8qIEFtb3VudCBieSB3aGljaCBsaW5lcyBv ZiB0aGlzIHdpbmRvdyBhcmUgc2Nyb2xsZWQgaW4KICAgICAgICB5LWRpcmVjdGlvbiAoc21v b3RoIHNjcm9sbGluZykuICAqLwogICAgIGludCB2c2Nyb2xsOwoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy94ZGlzcC5jJwotLS0gc3JjL3hkaXNwLmMJMjAxMi0wNi0yOSAxODo1Mjo1NCAr MDAwMAorKysgc3JjL3hkaXNwLmMJMjAxMi0wNy0wMyAwNDozNjozMSArMDAwMApAQCAtMjUw NCwxMSArMjUwNCwxMSBAQAogY2hlY2tfd2luZG93X2VuZCAoc3RydWN0IHdpbmRvdyAqdykK IHsKICAgaWYgKCFNSU5JX1dJTkRPV19QICh3KQotICAgICAgJiYgIU5JTFAgKHctPndpbmRv d19lbmRfdmFsaWQpKQorICAgICAgJiYgdy0+d2luZG93X2VuZF92YWxpZCkKICAgICB7CiAg ICAgICBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3c7CiAgICAgICBlYXNzZXJ0ICgocm93ID0gTUFU UklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgsCi0JCQkJICBYRkFTVElOVCAody0+d2luZG93 X2VuZF92cG9zKSksCisJCQkJICB3LT53aW5kb3dfZW5kX3Zwb3MpLAogCQkhcm93LT5lbmFi bGVkX3AKIAkJfHwgTUFUUklYX1JPV19ESVNQTEFZU19URVhUX1AgKHJvdykKIAkJfHwgTUFU UklYX1JPV19WUE9TIChyb3csIHctPmN1cnJlbnRfbWF0cml4KSA9PSAwKSk7CkBAIC04ODUw LDcgKzg4NTAsNyBAQAogICAgICAgJiYgaXQtPmN1cnJlbnRfeCA9PSBpdC0+bGFzdF92aXNp YmxlX3ggLSAxCiAgICAgICAmJiBpdC0+YyAhPSAnXG4nCiAgICAgICAmJiBpdC0+YyAhPSAn XHQnCi0gICAgICAmJiBpdC0+dnBvcyA8IFhGQVNUSU5UIChpdC0+dy0+d2luZG93X2VuZF92 cG9zKSkKKyAgICAgICYmIGl0LT52cG9zIDwgaXQtPnctPndpbmRvd19lbmRfdnBvcykKICAg ICB7CiAgICAgICBpdC0+Y29udGludWF0aW9uX2xpbmVzX3dpZHRoICs9IGl0LT5jdXJyZW50 X3g7CiAgICAgICBpdC0+Y3VycmVudF94ID0gaXQtPmhwb3MgPSBpdC0+bWF4X2FzY2VudCA9 IGl0LT5tYXhfZGVzY2VudCA9IDA7CkBAIC0xMTIwMiw3ICsxMTIwMiw3IEBACiAJICAgICAg IT0gdy0+bGFzdF9oYWRfc3RhcikKIAkgIHx8ICgoIU5JTFAgKFZ0cmFuc2llbnRfbWFya19t b2RlKQogCSAgICAgICAmJiAhTklMUCAoQlZBUiAoWEJVRkZFUiAody0+YnVmZmVyKSwgbWFy a19hY3RpdmUpKSkKLQkgICAgICAhPSAhTklMUCAody0+cmVnaW9uX3Nob3dpbmcpKSkKKwkg ICAgICAhPSB3LT5yZWdpb25fc2hvd2luZykpCiAJewogCSAgc3RydWN0IGJ1ZmZlciAqcHJl diA9IGN1cnJlbnRfYnVmZmVyOwogCSAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRF WCAoKTsKQEAgLTExNDAwLDcgKzExNDAwLDcgQEAKIAkgICAgICAhPSB3LT5sYXN0X2hhZF9z dGFyKQogCSAgfHwgKCghTklMUCAoVnRyYW5zaWVudF9tYXJrX21vZGUpCiAJICAgICAgICYm ICFOSUxQIChCVkFSIChYQlVGRkVSICh3LT5idWZmZXIpLCBtYXJrX2FjdGl2ZSkpKQotCSAg ICAgICE9ICFOSUxQICh3LT5yZWdpb25fc2hvd2luZykpKQorCSAgICAgICE9IHctPnJlZ2lv bl9zaG93aW5nKSkKIAl7CiAJICBzdHJ1Y3QgYnVmZmVyICpwcmV2ID0gY3VycmVudF9idWZm ZXI7CiAJICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwpAQCAtMTIzMzEs NyArMTIzMzEsNyBAQAogCQkJICAgICAgJiYgKHctPmN1cnNvci54ID49IHRleHRfYXJlYV93 aWR0aCAtIGhfbWFyZ2luKSkpKSkpCiAJICAgIHsKIAkgICAgICBzdHJ1Y3QgaXQgaXQ7Ci0J ICAgICAgcHRyZGlmZl90IGhzY3JvbGw7CisJICAgICAgaW50IGhzY3JvbGw7CiAJICAgICAg c3RydWN0IGJ1ZmZlciAqc2F2ZWRfY3VycmVudF9idWZmZXI7CiAJICAgICAgcHRyZGlmZl90 IHB0OwogCSAgICAgIGludCB3YW50ZWRfeDsKQEAgLTEyNzY2LDcgKzEyNzY2LDcgQEAKIHJl Y29uc2lkZXJfY2xpcF9jaGFuZ2VzIChzdHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgYnVmZmVy ICpiKQogewogICBpZiAoYi0+Y2xpcF9jaGFuZ2VkCi0JICAgJiYgIU5JTFAgKHctPndpbmRv d19lbmRfdmFsaWQpCisJICAgJiYgdy0+d2luZG93X2VuZF92YWxpZAogCSAgICYmIHctPmN1 cnJlbnRfbWF0cml4LT5idWZmZXIgPT0gYgogCSAgICYmIHctPmN1cnJlbnRfbWF0cml4LT56 diA9PSBCVUZfWlYgKGIpCiAJICAgJiYgdy0+Y3VycmVudF9tYXRyaXgtPmJlZ3YgPT0gQlVG X0JFR1YgKGIpKQpAQCAtMTI3NzgsNyArMTI3NzgsNyBAQAogICAgICBiLT5jbGlwX2NoYW5n ZWQgaGFzIGFscmVhZHkgYmVlbiBzZXQgdG8gMSwgd2UgY2FuIHNraXAgdGhpcwogICAgICBj aGVjay4gICovCiAgIGlmICghYi0+Y2xpcF9jaGFuZ2VkCi0gICAgICAmJiBCVUZGRVJQICh3 LT5idWZmZXIpICYmICFOSUxQICh3LT53aW5kb3dfZW5kX3ZhbGlkKSkKKyAgICAgICYmIEJV RkZFUlAgKHctPmJ1ZmZlcikgJiYgdy0+d2luZG93X2VuZF92YWxpZCkKICAgICB7CiAgICAg ICBwdHJkaWZmX3QgcHQ7CiAKQEAgLTEzMTAzLDEyICsxMzEwMyw5IEBACiAgIC8qIElmIHNo b3dpbmcgdGhlIHJlZ2lvbiwgYW5kIG1hcmsgaGFzIGNoYW5nZWQsIHdlIG11c3QgcmVkaXNw bGF5CiAgICAgIHRoZSB3aG9sZSB3aW5kb3cuICBUaGUgYXNzaWdubWVudCB0byB0aGlzX2xp bmVfc3RhcnRfcG9zIHByZXZlbnRzCiAgICAgIHRoZSBvcHRpbWl6YXRpb24gZGlyZWN0bHkg YmVsb3cgdGhpcyBpZi1zdGF0ZW1lbnQuICAqLwotICBpZiAoKCghTklMUCAoVnRyYW5zaWVu dF9tYXJrX21vZGUpCi0JJiYgIU5JTFAgKEJWQVIgKFhCVUZGRVIgKHctPmJ1ZmZlciksIG1h cmtfYWN0aXZlKSkpCi0gICAgICAgIT0gIU5JTFAgKHctPnJlZ2lvbl9zaG93aW5nKSkKLSAg ICAgIHx8ICghTklMUCAody0+cmVnaW9uX3Nob3dpbmcpCi0JICAmJiAhRVEgKHctPnJlZ2lv bl9zaG93aW5nLAotCQkgIEZtYXJrZXJfcG9zaXRpb24gKEJWQVIgKFhCVUZGRVIgKHctPmJ1 ZmZlciksIG1hcmspKSkpKQorICBpZiAody0+cmVnaW9uX3Nob3dpbmcKKyAgICAgIHx8ICgh TklMUCAoVnRyYW5zaWVudF9tYXJrX21vZGUpCisJICAmJiAhTklMUCAoQlZBUiAoWEJVRkZF UiAody0+YnVmZmVyKSwgbWFya19hY3RpdmUpKSkpCiAgICAgQ0hBUlBPUyAodGhpc19saW5l X3N0YXJ0X3BvcykgPSAwOwogCiAgIC8qIE9wdGltaXplIHRoZSBjYXNlIHRoYXQgb25seSB0 aGUgbGluZSBjb250YWluaW5nIHRoZSBjdXJzb3IgaW4gdGhlCkBAIC0xMzIyNCwxMyArMTMy MjEsMTMgQEAKIAkJIGFkanVzdGVkLiAgKi8KIAkgICAgICBpZiAoKGl0LmdseXBoX3JvdyAt IDEpLT5kaXNwbGF5c190ZXh0X3ApCiAJCXsKLQkJICBpZiAoWEZBU1RJTlQgKHctPndpbmRv d19lbmRfdnBvcykgPCB0aGlzX2xpbmVfdnBvcykKLQkJICAgIFhTRVRJTlQgKHctPndpbmRv d19lbmRfdnBvcywgdGhpc19saW5lX3Zwb3MpOworCQkgIGlmICh3LT53aW5kb3dfZW5kX3Zw b3MgPCB0aGlzX2xpbmVfdnBvcykKKwkJICAgIHctPndpbmRvd19lbmRfdnBvcyA9IHRoaXNf bGluZV92cG9zOwogCQl9Ci0JICAgICAgZWxzZSBpZiAoWEZBU1RJTlQgKHctPndpbmRvd19l bmRfdnBvcykgPT0gdGhpc19saW5lX3Zwb3MKKwkgICAgICBlbHNlIGlmICh3LT53aW5kb3df ZW5kX3Zwb3MgPT0gdGhpc19saW5lX3Zwb3MKIAkJICAgICAgICYmIHRoaXNfbGluZV92cG9z ID4gMCkKLQkJWFNFVElOVCAody0+d2luZG93X2VuZF92cG9zLCB0aGlzX2xpbmVfdnBvcyAt IDEpOwotCSAgICAgIHctPndpbmRvd19lbmRfdmFsaWQgPSBRbmlsOworCQl3LT53aW5kb3df ZW5kX3Zwb3MgPSB0aGlzX2xpbmVfdnBvcyAtIDE7CisJICAgICAgdy0+d2luZG93X2VuZF92 YWxpZCA9IDA7CiAKIAkgICAgICAvKiBVcGRhdGUgaGludDogTm8gbmVlZCB0byB0cnkgdG8g c2Nyb2xsIGluIHVwZGF0ZV93aW5kb3cuICAqLwogCSAgICAgIHctPmRlc2lyZWRfbWF0cml4 LT5ub19zY3JvbGxpbmdfcCA9IDE7CkBAIC0xMzI3Niw3ICsxMzI3Myw3IEBACiAJICAgICAg ICYmIChFUSAoc2VsZWN0ZWRfd2luZG93LAogCQkgICAgICAgQlZBUiAoY3VycmVudF9idWZm ZXIsIGxhc3Rfc2VsZWN0ZWRfd2luZG93KSkKIAkJICAgfHwgaGlnaGxpZ2h0X25vbnNlbGVj dGVkX3dpbmRvd3MpCi0JICAgICAgICYmIE5JTFAgKHctPnJlZ2lvbl9zaG93aW5nKQorCSAg ICAgICAmJiAhdy0+cmVnaW9uX3Nob3dpbmcKIAkgICAgICAgJiYgTklMUCAoVnNob3dfdHJh aWxpbmdfd2hpdGVzcGFjZSkKIAkgICAgICAgJiYgIWN1cnNvcl9pbl9lY2hvX2FyZWEpCiAJ ewpAQCAtMTM2OTUsNyArMTM2OTIsNyBAQAogCiAgIGlmIChhY2N1cmF0ZV9wKQogICAgIHsK LSAgICAgIHctPndpbmRvd19lbmRfdmFsaWQgPSB3LT5idWZmZXI7CisgICAgICB3LT53aW5k b3dfZW5kX3ZhbGlkID0gMTsKICAgICAgIHctPnVwZGF0ZV9tb2RlX2xpbmUgPSAwOwogICAg IH0KIH0KQEAgLTE0OTM1LDYgKzE0OTMyLDEwIEBACiAgICAgIHB0cmRpZmZfdCwgdGh1cyB6 ZXJvIG1lYW5zIGludmFsaWQgcG9zaXRpb24gaW4gYSBidWZmZXIuICAqLwogICBlYXNzZXJ0 ICh3LT5sYXN0X3BvaW50ID4gMCk7CiAKKyAgLyogSnVzdCBpbml0aWFsaXplZCB3aW5kb3dz IHNob3VsZCBub3QgcGFzcyBoZXJlLiAgKi8KKyAgZWFzc2VydCAody0+d2luZG93X2VuZF9w b3MgPj0gMCk7CisgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfdnBvcyA+PSAwKTsKKwogICAv KiBIYW5kbGUgY2FzZSB3aGVyZSB0ZXh0IGhhcyBub3QgY2hhbmdlZCwgb25seSBwb2ludCwg YW5kIGl0IGhhcwogICAgICBub3QgbW92ZWQgb2ZmIHRoZSBmcmFtZS4gICovCiAgIGlmICgv KiBQb2ludCBtYXkgYmUgaW4gdGhpcyB3aW5kb3cuICAqLwpAQCAtMTQ5NTMsNyArMTQ5NTQs NyBAQAogICAgICAgICAgc2V0IHRoZSBjdXJzb3IuICAqLwogICAgICAgJiYgISghTklMUCAo VnRyYW5zaWVudF9tYXJrX21vZGUpCiAJICAgJiYgIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVm ZmVyLCBtYXJrX2FjdGl2ZSkpKQotICAgICAgJiYgTklMUCAody0+cmVnaW9uX3Nob3dpbmcp CisgICAgICAmJiAhdy0+cmVnaW9uX3Nob3dpbmcKICAgICAgICYmIE5JTFAgKFZzaG93X3Ry YWlsaW5nX3doaXRlc3BhY2UpCiAgICAgICAvKiBUaGlzIGNvZGUgaXMgbm90IHVzZWQgZm9y IG1pbmktYnVmZmVyIGZvciB0aGUgc2FrZSBvZiB0aGUgY2FzZQogCSBvZiByZWRpc3BsYXlp bmcgdG8gcmVwbGFjZSBhbiBlY2hvIGFyZWEgbWVzc2FnZTsgc2luY2UgaW4KQEAgLTE0OTYy LDEzICsxNDk2Myw5IEBACiAJIHNpbmNlIHRoZSBoYW5kbGluZyBvZiB0aGlzX2xpbmVfc3Rh cnRfcG9zLCBldGMuLCBpbiByZWRpc3BsYXkKIAkgaGFuZGxlcyB0aGUgc2FtZSBjYXNlcy4g ICovCiAgICAgICAmJiAhRVEgKHdpbmRvdywgbWluaWJ1Zl93aW5kb3cpCi0gICAgICAvKiBX aGVuIHNwbGl0dGluZyB3aW5kb3dzIG9yIGZvciBuZXcgd2luZG93cywgaXQgaGFwcGVucyB0 aGF0Ci0JIHJlZGlzcGxheSBpcyBjYWxsZWQgd2l0aCBhIG5pbCB3aW5kb3dfZW5kX3Zwb3Mg b3Igb25lIGJlaW5nCi0JIGxhcmdlciB0aGFuIHRoZSB3aW5kb3cuICBUaGlzIHNob3VsZCBy ZWFsbHkgYmUgZml4ZWQgaW4KLQkgd2luZG93LmMuICBJIGRvbid0IGhhdmUgdGhpcyBvbiBt eSBsaXN0LCBub3csIHNvIHdlIGRvCi0JIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgYXMgdGhl IG9sZCByZWRpc3BsYXkgY29kZS4gIC0tZ2VyZC4gICovCi0gICAgICAmJiBJTlRFR0VSUCAo dy0+d2luZG93X2VuZF92cG9zKQotICAgICAgJiYgWEZBU1RJTlQgKHctPndpbmRvd19lbmRf dnBvcykgPCB3LT5jdXJyZW50X21hdHJpeC0+bnJvd3MKKyAgICAgIC8qIFByZXZpb3VzbHks IHRoZXJlIHdhcyBHZXJkJ3MgY29tbWVudCBzdWdnZXN0aW5nCisJIHRvIGZpeCB3aW5kb3cu Yy4gIEkgYmVsaWV2ZSB0aGF0IGl0IGlzIGRvbmUuICAqLworICAgICAgJiYgdy0+d2luZG93 X2VuZF92cG9zIDwgdy0+Y3VycmVudF9tYXRyaXgtPm5yb3dzCiAgICAgICAmJiAoRlJBTUVf V0lORE9XX1AgKGYpCiAJICB8fCAhb3ZlcmxheV9hcnJvd19pbl9jdXJyZW50X2J1ZmZlcl9w ICgpKSkKICAgICB7CkBAIC0xNTI4MCw3ICsxNTI3Nyw3IEBACiAgICAgICBzdGFydCA9IG1h cmtlcl9wb3NpdGlvbiAody0+c3RhcnQpIC0gQlVGX0JFR1YgKGJ1Zik7CiAgICAgICAvKiBJ IGRvbid0IHRoaW5rIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSByaWdodC4gIEZvciB0aGUK IAkgbW9tZW50LCB3ZSdsbCBwcmV0ZW5kIGl0IGlzLiAgKi8KLSAgICAgIGVuZCA9IEJVRl9a IChidWYpIC0gWEZBU1RJTlQgKHctPndpbmRvd19lbmRfcG9zKSAtIEJVRl9CRUdWIChidWYp OworICAgICAgZW5kID0gQlVGX1ogKGJ1ZikgLSB3LT53aW5kb3dfZW5kX3BvcyAtIEJVRl9C RUdWIChidWYpOwogCiAgICAgICBpZiAoZW5kIDwgc3RhcnQpCiAJZW5kID0gc3RhcnQ7CkBA IC0xNTM5MCw3ICsxNTM4Nyw3IEBACiAgIHNldF9idWZmZXJfaW50ZXJuYWxfMSAoWEJVRkZF UiAody0+YnVmZmVyKSk7CiAKICAgY3VycmVudF9tYXRyaXhfdXBfdG9fZGF0ZV9wCi0gICAg PSAoIU5JTFAgKHctPndpbmRvd19lbmRfdmFsaWQpCisgICAgPSAody0+d2luZG93X2VuZF92 YWxpZAogICAgICAgICYmICFjdXJyZW50X2J1ZmZlci0+Y2xpcF9jaGFuZ2VkCiAgICAgICAg JiYgIWN1cnJlbnRfYnVmZmVyLT5wcmV2ZW50X3JlZGlzcGxheV9vcHRpbWl6YXRpb25zX3AK ICAgICAgICAmJiB3LT5sYXN0X21vZGlmaWVkID49IE1PRElGRgpAQCAtMTU0MTQsNyArMTU0 MTEsNyBAQAogICBzcGVjYmluZCAoUWluaGliaXRfcG9pbnRfbW90aW9uX2hvb2tzLCBRdCk7 CiAKICAgYnVmZmVyX3VuY2hhbmdlZF9wCi0gICAgPSAoIU5JTFAgKHctPndpbmRvd19lbmRf dmFsaWQpCisgICAgPSAody0+d2luZG93X2VuZF92YWxpZAogICAgICAgICYmICFjdXJyZW50 X2J1ZmZlci0+Y2xpcF9jaGFuZ2VkCiAgICAgICAgJiYgdy0+bGFzdF9tb2RpZmllZCA+PSBN T0RJRkYKICAgICAgICAmJiB3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQgPj0gT1ZFUkxBWV9N T0RJRkYpOwpAQCAtMTU0MjgsNyArMTU0MjUsNyBAQAogICAgICAgaWYgKFhNQVJLRVIgKHct PnN0YXJ0KS0+YnVmZmVyID09IGN1cnJlbnRfYnVmZmVyKQogCWNvbXB1dGVfd2luZG93X3N0 YXJ0X29uX2NvbnRpbnVhdGlvbl9saW5lICh3KTsKIAotICAgICAgdy0+d2luZG93X2VuZF92 YWxpZCA9IFFuaWw7CisgICAgICB3LT53aW5kb3dfZW5kX3ZhbGlkID0gMDsKICAgICB9CiAK ICAgLyogU29tZSBzYW5pdHkgY2hlY2tzLiAgKi8KQEAgLTE1NTM5LDcgKzE1NTM2LDcgQEAK IAogICAgICAgdy0+Zm9yY2Vfc3RhcnQgPSAwOwogICAgICAgdy0+dnNjcm9sbCA9IDA7Ci0g ICAgICB3LT53aW5kb3dfZW5kX3ZhbGlkID0gUW5pbDsKKyAgICAgIHctPndpbmRvd19lbmRf dmFsaWQgPSAwOwogCiAgICAgICAvKiBGb3JnZXQgYW55IHJlY29yZGVkIGJhc2UgbGluZSBm b3IgbGluZSBudW1iZXIgZGlzcGxheS4gICovCiAgICAgICBpZiAoIWJ1ZmZlcl91bmNoYW5n ZWRfcCkKQEAgLTE1OTYyLDggKzE1OTU5LDggQEAKICAgICAgbGluZS4pICAqLwogICBpZiAo dy0+Y3Vyc29yLnZwb3MgPCAwKQogICAgIHsKLSAgICAgIGlmICghTklMUCAody0+d2luZG93 X2VuZF92YWxpZCkKLQkgICYmIFBUID49IFogLSBYRkFTVElOVCAody0+d2luZG93X2VuZF9w b3MpKQorICAgICAgaWYgKHctPndpbmRvd19lbmRfdmFsaWQKKwkgICYmIFBUID49IFogLSB3 LT53aW5kb3dfZW5kX3BvcykKIAl7CiAJICBjbGVhcl9nbHlwaF9tYXRyaXggKHctPmRlc2ly ZWRfbWF0cml4KTsKIAkgIG1vdmVfaXRfYnlfbGluZXMgKCZpdCwgMSk7CkBAIC0xNjIwMiw2 ICsxNjE5OSwxMCBAQAogICBzdHJ1Y3QgZ2x5cGhfcm93ICpsYXN0X3RleHRfcm93ID0gTlVM TDsKICAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FICh3LT5mcmFtZSk7CiAKKyAgLyogSnVz dCBpbml0aWFsaXplZCB3aW5kb3dzIHNob3VsZCBub3QgcGFzcyBoZXJlLiAgKi8KKyAgZWFz c2VydCAody0+d2luZG93X2VuZF9wb3MgPj0gMCk7CisgIGVhc3NlcnQgKHctPndpbmRvd19l bmRfdnBvcyA+PSAwKTsKKwogICAvKiBNYWtlIFBPUyB0aGUgbmV3IHdpbmRvdyBzdGFydC4g ICovCiAgIHNldF9tYXJrZXJfYm90aCAody0+c3RhcnQsIFFuaWwsIENIQVJQT1MgKHBvcyks IEJZVEVQT1MgKHBvcykpOwogCkBAIC0xNjI1Miw3ICsxNjI1Myw3IEBACiAgICAgfQogCiAg IC8qIElmIGJvdHRvbSBtb3ZlZCBvZmYgZW5kIG9mIGZyYW1lLCBjaGFuZ2UgbW9kZSBsaW5l IHBlcmNlbnRhZ2UuICAqLwotICBpZiAoWEZBU1RJTlQgKHctPndpbmRvd19lbmRfcG9zKSA8 PSAwCisgIGlmICh3LT53aW5kb3dfZW5kX3BvcyA8PSAwCiAgICAgICAmJiBaICE9IElUX0NI QVJQT1MgKGl0KSkKICAgICB3LT51cGRhdGVfbW9kZV9saW5lID0gMTsKIApAQCAtMTYyNjQs MjIgKzE2MjY1LDIyIEBACiAgICAgICBlYXNzZXJ0IChNQVRSSVhfUk9XX0RJU1BMQVlTX1RF WFRfUCAobGFzdF90ZXh0X3JvdykpOwogICAgICAgdy0+d2luZG93X2VuZF9ieXRlcG9zCiAJ PSBaX0JZVEUgLSBNQVRSSVhfUk9XX0VORF9CWVRFUE9TIChsYXN0X3RleHRfcm93KTsKLSAg ICAgIHctPndpbmRvd19lbmRfcG9zCi0JPSBtYWtlX251bWJlciAoWiAtIE1BVFJJWF9ST1df RU5EX0NIQVJQT1MgKGxhc3RfdGV4dF9yb3cpKTsKLSAgICAgIHctPndpbmRvd19lbmRfdnBv cwotCT0gbWFrZV9udW1iZXIgKE1BVFJJWF9ST1dfVlBPUyAobGFzdF90ZXh0X3Jvdywgdy0+ ZGVzaXJlZF9tYXRyaXgpKTsKLSAgICAgIGVhc3NlcnQgKE1BVFJJWF9ST1cgKHctPmRlc2ly ZWRfbWF0cml4LCBYRkFTVElOVCAody0+d2luZG93X2VuZF92cG9zKSkKKyAgICAgIHctPndp bmRvd19lbmRfcG9zID0gWiAtIE1BVFJJWF9ST1dfRU5EX0NIQVJQT1MgKGxhc3RfdGV4dF9y b3cpOworICAgICAgdy0+d2luZG93X2VuZF92cG9zID0gTUFUUklYX1JPV19WUE9TIChsYXN0 X3RleHRfcm93LCB3LT5kZXNpcmVkX21hdHJpeCk7CisgICAgICBlYXNzZXJ0ICh3LT53aW5k b3dfZW5kX3BvcyA+PSAwKTsKKyAgICAgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfdnBvcyA+ PSAwKTsKKyAgICAgIGVhc3NlcnQgKE1BVFJJWF9ST1cgKHctPmRlc2lyZWRfbWF0cml4LCB3 LT53aW5kb3dfZW5kX3Zwb3MpCiAJICAgICAgIC0+ZGlzcGxheXNfdGV4dF9wKTsKICAgICB9 CiAgIGVsc2UKICAgICB7CiAgICAgICB3LT53aW5kb3dfZW5kX2J5dGVwb3MgPSBaX0JZVEUg LSBaVl9CWVRFOwotICAgICAgdy0+d2luZG93X2VuZF9wb3MgPSBtYWtlX251bWJlciAoWiAt IFpWKTsKLSAgICAgIHctPndpbmRvd19lbmRfdnBvcyA9IG1ha2VfbnVtYmVyICgwKTsKKyAg ICAgIHctPndpbmRvd19lbmRfcG9zID0gWiAtIFpWOworICAgICAgdy0+d2luZG93X2VuZF92 cG9zID0gMDsKICAgICB9CiAKICAgLyogQnV0IHRoYXQgaXMgbm90IHZhbGlkIGluZm8gdW50 aWwgcmVkaXNwbGF5IGZpbmlzaGVzLiAgKi8KLSAgdy0+d2luZG93X2VuZF92YWxpZCA9IFFu aWw7CisgIHctPndpbmRvd19lbmRfdmFsaWQgPSAwOwogICByZXR1cm4gMTsKIH0KIApAQCAt MTYzMTMsNiArMTYzMTQsMTAgQEAKICAgICByZXR1cm4gMDsKICNlbmRpZgogCisgIC8qIEp1 c3QgaW5pdGlhbGl6ZWQgd2luZG93cyBzaG91bGQgbm90IHBhc3MgaGVyZS4gICovCisgIGVh c3NlcnQgKHctPndpbmRvd19lbmRfcG9zID49IDApOworICBlYXNzZXJ0ICh3LT53aW5kb3df ZW5kX3Zwb3MgPj0gMCk7CisKICAgaWYgKC8qIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYW5k bGUgdGVybWluYWwgZnJhbWVzLiAgKi8KICAgICAgICFGUkFNRV9XSU5ET1dfUCAoZikKICAg ICAgIC8qIERvbid0IHRyeSB0byByZXVzZSB0aGUgZGlzcGxheSBpZiB3aW5kb3dzIGhhdmUg YmVlbiBzcGxpdApAQCAtMTYzMjQsNyArMTYzMjksNyBAQAogICAvKiBDYW4ndCBkbyB0aGlz IGlmIHJlZ2lvbiBtYXkgaGF2ZSBjaGFuZ2VkLiAgKi8KICAgaWYgKCghTklMUCAoVnRyYW5z aWVudF9tYXJrX21vZGUpCiAgICAgICAgJiYgIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVy LCBtYXJrX2FjdGl2ZSkpKQotICAgICAgfHwgIU5JTFAgKHctPnJlZ2lvbl9zaG93aW5nKQor ICAgICAgfHwgdy0+cmVnaW9uX3Nob3dpbmcKICAgICAgIHx8ICFOSUxQIChWc2hvd190cmFp bGluZ193aGl0ZXNwYWNlKSkKICAgICByZXR1cm4gMDsKIApAQCAtMTY1MDMsMjkgKzE2NTA4 LDI4IEBACiAJewogCSAgdy0+d2luZG93X2VuZF9ieXRlcG9zCiAJICAgID0gWl9CWVRFIC0g TUFUUklYX1JPV19FTkRfQllURVBPUyAobGFzdF9yZXVzZWRfdGV4dF9yb3cpOwotCSAgdy0+ d2luZG93X2VuZF9wb3MKLQkgICAgPSBtYWtlX251bWJlciAoWiAtIE1BVFJJWF9ST1dfRU5E X0NIQVJQT1MgKGxhc3RfcmV1c2VkX3RleHRfcm93KSk7Ci0JICB3LT53aW5kb3dfZW5kX3Zw b3MKLQkgICAgPSBtYWtlX251bWJlciAoTUFUUklYX1JPV19WUE9TIChsYXN0X3JldXNlZF90 ZXh0X3JvdywKLQkJCQkJICAgIHctPmN1cnJlbnRfbWF0cml4KSk7CisJICB3LT53aW5kb3df ZW5kX3BvcyA9IFogLSBNQVRSSVhfUk9XX0VORF9DSEFSUE9TIChsYXN0X3JldXNlZF90ZXh0 X3Jvdyk7CisJICB3LT53aW5kb3dfZW5kX3Zwb3MgPSBNQVRSSVhfUk9XX1ZQT1MgKGxhc3Rf cmV1c2VkX3RleHRfcm93LCB3LT5jdXJyZW50X21hdHJpeCk7CisJICBlYXNzZXJ0ICh3LT53 aW5kb3dfZW5kX3BvcyA+PSAwKTsKKwkgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfdnBvcyA+ PSAwKTsKIAl9CiAgICAgICBlbHNlIGlmIChsYXN0X3RleHRfcm93KQogCXsKIAkgIHctPndp bmRvd19lbmRfYnl0ZXBvcwogCSAgICA9IFpfQllURSAtIE1BVFJJWF9ST1dfRU5EX0JZVEVQ T1MgKGxhc3RfdGV4dF9yb3cpOwotCSAgdy0+d2luZG93X2VuZF9wb3MKLQkgICAgPSBtYWtl X251bWJlciAoWiAtIE1BVFJJWF9ST1dfRU5EX0NIQVJQT1MgKGxhc3RfdGV4dF9yb3cpKTsK LQkgIHctPndpbmRvd19lbmRfdnBvcwotCSAgICA9IG1ha2VfbnVtYmVyIChNQVRSSVhfUk9X X1ZQT1MgKGxhc3RfdGV4dF9yb3csIHctPmRlc2lyZWRfbWF0cml4KSk7CisJICB3LT53aW5k b3dfZW5kX3BvcyA9IFogLSBNQVRSSVhfUk9XX0VORF9DSEFSUE9TIChsYXN0X3RleHRfcm93 KTsKKwkgIHctPndpbmRvd19lbmRfdnBvcyA9IE1BVFJJWF9ST1dfVlBPUyAobGFzdF90ZXh0 X3Jvdywgdy0+ZGVzaXJlZF9tYXRyaXgpOworCSAgZWFzc2VydCAody0+d2luZG93X2VuZF9w b3MgPj0gMCk7CisJICBlYXNzZXJ0ICh3LT53aW5kb3dfZW5kX3Zwb3MgPj0gMCk7CiAJfQog ICAgICAgZWxzZQogCXsKIAkgIC8qIFRoaXMgd2luZG93IG11c3QgYmUgY29tcGxldGVseSBl bXB0eS4gICovCiAJICB3LT53aW5kb3dfZW5kX2J5dGVwb3MgPSBaX0JZVEUgLSBaVl9CWVRF OwotCSAgdy0+d2luZG93X2VuZF9wb3MgPSBtYWtlX251bWJlciAoWiAtIFpWKTsKLQkgIHct PndpbmRvd19lbmRfdnBvcyA9IG1ha2VfbnVtYmVyICgwKTsKKwkgIHctPndpbmRvd19lbmRf cG9zID0gWiAtIFpWOworCSAgdy0+d2luZG93X2VuZF92cG9zID0gMDsKIAl9Ci0gICAgICB3 LT53aW5kb3dfZW5kX3ZhbGlkID0gUW5pbDsKKyAgICAgIHctPndpbmRvd19lbmRfdmFsaWQg PSAwOwogCiAgICAgICAvKiBVcGRhdGUgaGludDogZG9uJ3QgdHJ5IHNjcm9sbGluZyBhZ2Fp biBpbiB1cGRhdGVfd2luZG93LiAgKi8KICAgICAgIHctPmRlc2lyZWRfbWF0cml4LT5ub19z Y3JvbGxpbmdfcCA9IDE7CkBAIC0xNjcwNiwxOCArMTY3MTAsMTYgQEAKIAl7CiAJICB3LT53 aW5kb3dfZW5kX2J5dGVwb3MKIAkgICAgPSBaX0JZVEUgLSBNQVRSSVhfUk9XX0VORF9CWVRF UE9TIChsYXN0X3RleHRfcm93KTsKLQkgIHctPndpbmRvd19lbmRfcG9zCi0JICAgID0gbWFr ZV9udW1iZXIgKFogLSBNQVRSSVhfUk9XX0VORF9DSEFSUE9TIChsYXN0X3RleHRfcm93KSk7 Ci0JICB3LT53aW5kb3dfZW5kX3Zwb3MKLQkgICAgPSBtYWtlX251bWJlciAoTUFUUklYX1JP V19WUE9TIChsYXN0X3RleHRfcm93LCB3LT5kZXNpcmVkX21hdHJpeCkpOworCSAgdy0+d2lu ZG93X2VuZF9wb3MgPSBaIC0gTUFUUklYX1JPV19FTkRfQ0hBUlBPUyAobGFzdF90ZXh0X3Jv dyk7CisJICB3LT53aW5kb3dfZW5kX3Zwb3MgPSBNQVRSSVhfUk9XX1ZQT1MgKGxhc3RfdGV4 dF9yb3csIHctPmRlc2lyZWRfbWF0cml4KTsKIAl9CiAgICAgICBlbHNlCi0JewotCSAgdy0+ d2luZG93X2VuZF92cG9zCi0JICAgID0gbWFrZV9udW1iZXIgKFhGQVNUSU5UICh3LT53aW5k b3dfZW5kX3Zwb3MpIC0gbnJvd3Nfc2Nyb2xsZWQpOwotCX0KLQotICAgICAgdy0+d2luZG93 X2VuZF92YWxpZCA9IFFuaWw7CisJdy0+d2luZG93X2VuZF92cG9zID0gdy0+d2luZG93X2Vu ZF92cG9zIC0gbnJvd3Nfc2Nyb2xsZWQ7CisKKyAgICAgIGVhc3NlcnQgKHctPndpbmRvd19l bmRfcG9zID49IDApOworICAgICAgZWFzc2VydCAody0+d2luZG93X2VuZF92cG9zID49IDAp OworCisgICAgICB3LT53aW5kb3dfZW5kX3ZhbGlkID0gMDsKICAgICAgIHctPmRlc2lyZWRf bWF0cml4LT5ub19zY3JvbGxpbmdfcCA9IDE7CiAKICNpZmRlZiBHTFlQSF9ERUJVRwpAQCAt MTY4NTAsMTYgKzE2ODUyLDE2IEBACiAKICAgLyogRGlzcGxheSBtdXN0IG5vdCBoYXZlIGJl ZW4gcGF1c2VkLCBvdGhlcndpc2UgdGhlIGN1cnJlbnQgbWF0cml4CiAgICAgIGlzIG5vdCB1 cCB0byBkYXRlLiAgKi8KLSAgZWFzc2VydCAoIU5JTFAgKHctPndpbmRvd19lbmRfdmFsaWQp KTsKKyAgZWFzc2VydCAody0+d2luZG93X2VuZF92YWxpZCk7CiAKICAgLyogQSB2YWx1ZSBv ZiB3aW5kb3dfZW5kX3BvcyA+PSBFTkRfVU5DSEFOR0VEIG1lYW5zIHRoYXQgdGhlIHdpbmRv dwogICAgICBlbmQgaXMgaW4gdGhlIHJhbmdlIG9mIGNoYW5nZWQgdGV4dC4gIElmIHNvLCB0 aGVyZSBpcyBubwogICAgICB1bmNoYW5nZWQgcm93IGF0IHRoZSBlbmQgb2YgVydzIGN1cnJl bnQgbWF0cml4LiAgKi8KLSAgaWYgKFhGQVNUSU5UICh3LT53aW5kb3dfZW5kX3BvcykgPj0g RU5EX1VOQ0hBTkdFRCkKKyAgaWYgKHctPndpbmRvd19lbmRfcG9zID49IEVORF9VTkNIQU5H RUQpCiAgICAgcmV0dXJuIE5VTEw7CiAKICAgLyogU2V0IHJvdyB0byB0aGUgbGFzdCByb3cg aW4gVydzIGN1cnJlbnQgbWF0cml4IGRpc3BsYXlpbmcgdGV4dC4gICovCi0gIHJvdyA9IE1B VFJJWF9ST1cgKHctPmN1cnJlbnRfbWF0cml4LCBYRkFTVElOVCAody0+d2luZG93X2VuZF92 cG9zKSk7CisgIHJvdyA9IE1BVFJJWF9ST1cgKHctPmN1cnJlbnRfbWF0cml4LCB3LT53aW5k b3dfZW5kX3Zwb3MpOwogCiAgIC8qIElmIG1hdHJpeCBpcyBlbnRpcmVseSBlbXB0eSwgbm8g dW5jaGFuZ2VkIHJvdyBleGlzdHMuICAqLwogICBpZiAoTUFUUklYX1JPV19ESVNQTEFZU19U RVhUX1AgKHJvdykpCkBAIC0xNjg3MCw3ICsxNjg3Miw3IEBACiAJIGJ1ZmZlciBwb3NpdGlv bnMgaW4gdGhlIGN1cnJlbnQgbWF0cml4IHRvIGN1cnJlbnQgYnVmZmVyCiAJIHBvc2l0aW9u cyBmb3IgY2hhcmFjdGVycyBub3QgaW4gY2hhbmdlZCB0ZXh0LiAgKi8KICAgICAgIHB0cmRp ZmZfdCBaX29sZCA9Ci0JTUFUUklYX1JPV19FTkRfQ0hBUlBPUyAocm93KSArIFhGQVNUSU5U ICh3LT53aW5kb3dfZW5kX3Bvcyk7CisJTUFUUklYX1JPV19FTkRfQ0hBUlBPUyAocm93KSAr IHctPndpbmRvd19lbmRfcG9zOwogICAgICAgcHRyZGlmZl90IFpfQllURV9vbGQgPQogCU1B VFJJWF9ST1dfRU5EX0JZVEVQT1MgKHJvdykgKyB3LT53aW5kb3dfZW5kX2J5dGVwb3M7CiAg ICAgICBwdHJkaWZmX3QgbGFzdF91bmNoYW5nZWRfcG9zLCBsYXN0X3VuY2hhbmdlZF9wb3Nf b2xkOwpAQCAtMTcxMDQsNiArMTcxMDYsMTAgQEAKICNkZWZpbmUgR0lWRV9VUChYKSByZXR1 cm4gMAogI2VuZGlmCiAKKyAgLyogSnVzdCBpbml0aWFsaXplZCB3aW5kb3dzIHNob3VsZCBu b3QgcGFzcyBoZXJlLiAgKi8KKyAgZWFzc2VydCAody0+d2luZG93X2VuZF9wb3MgPj0gMCk7 CisgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfdnBvcyA+PSAwKTsKKwogICBTRVRfVEVYVF9Q T1NfRlJPTV9NQVJLRVIgKHN0YXJ0LCB3LT5zdGFydCk7CiAKICAgLyogRG9uJ3QgdXNlIHRo aXMgZm9yIG1pbmktd2luZG93cyBiZWNhdXNlIHRoZXNlIGNhbiBzaG93CkBAIC0xNzE0Miw3 ICsxNzE0OCw3IEBACiAgICAgR0lWRV9VUCAoNyk7CiAKICAgLyogVmVyaWZ5IHRoYXQgZGlz cGxheSB3YXNuJ3QgcGF1c2VkLiAgKi8KLSAgaWYgKE5JTFAgKHctPndpbmRvd19lbmRfdmFs aWQpKQorICBpZiAoIXctPndpbmRvd19lbmRfdmFsaWQpCiAgICAgR0lWRV9VUCAoOCk7CiAK ICAgLyogQ2FuJ3QgdXNlIHRoaXMgaWYgaGlnaGxpZ2h0aW5nIGEgcmVnaW9uIGJlY2F1c2Ug YSBjdXJzb3IgbW92ZW1lbnQKQEAgLTE3MTU2LDcgKzE3MTYyLDcgQEAKICAgICBHSVZFX1VQ ICgxMSk7CiAKICAgLyogTGlrZXdpc2UgaWYgc2hvd2luZyBhIHJlZ2lvbi4gICovCi0gIGlm ICghTklMUCAody0+cmVnaW9uX3Nob3dpbmcpKQorICBpZiAody0+cmVnaW9uX3Nob3dpbmcp CiAgICAgR0lWRV9VUCAoMTApOwogCiAgIC8qIENhbid0IHVzZSB0aGlzIGlmIG92ZXJsYXkg YXJyb3cgcG9zaXRpb24gYW5kL29yIHN0cmluZyBoYXZlCkBAIC0xNzIwNiw3ICsxNzIxMiw3 IEBACiAgICAgIFRoaXMgY2FzZSBoYXBwZW5zIHdpdGggc3RlYWx0aC1mb250aWZpY2F0aW9u LiAgTm90ZSB0aGF0IGFsdGhvdWdoCiAgICAgIHRoZSBkaXNwbGF5IGlzIHVuY2hhbmdlZCwg Z2x5cGggcG9zaXRpb25zIGluIHRoZSBtYXRyaXggaGF2ZSB0bwogICAgICBiZSBhZGp1c3Rl ZCwgb2YgY291cnNlLiAgKi8KLSAgcm93ID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRy aXgsIFhGQVNUSU5UICh3LT53aW5kb3dfZW5kX3Zwb3MpKTsKKyAgcm93ID0gTUFUUklYX1JP VyAody0+Y3VycmVudF9tYXRyaXgsIHctPndpbmRvd19lbmRfdnBvcyk7CiAgIGlmIChNQVRS SVhfUk9XX0RJU1BMQVlTX1RFWFRfUCAocm93KQogICAgICAgJiYgKChsYXN0X2NoYW5nZWRf Y2hhcnBvcyA8IENIQVJQT1MgKHN0YXJ0KQogCSAgICYmIENIQVJQT1MgKHN0YXJ0KSA9PSBC RUdWKQpAQCAtMTcyMTgsNyArMTcyMjQsNyBAQAogCiAgICAgICAvKiBDb21wdXRlIGhvdyBt YW55IGNoYXJzL2J5dGVzIGhhdmUgYmVlbiBhZGRlZCB0byBvciByZW1vdmVkCiAJIGZyb20g dGhlIGJ1ZmZlci4gICovCi0gICAgICBaX29sZCA9IE1BVFJJWF9ST1dfRU5EX0NIQVJQT1Mg KHJvdykgKyBYRkFTVElOVCAody0+d2luZG93X2VuZF9wb3MpOworICAgICAgWl9vbGQgPSBN QVRSSVhfUk9XX0VORF9DSEFSUE9TIChyb3cpICsgdy0+d2luZG93X2VuZF9wb3M7CiAgICAg ICBaX0JZVEVfb2xkID0gTUFUUklYX1JPV19FTkRfQllURVBPUyAocm93KSArIHctPndpbmRv d19lbmRfYnl0ZXBvczsKICAgICAgIFpfZGVsdGEgPSBaIC0gWl9vbGQ7CiAgICAgICBaX2Rl bHRhX2J5dGVzID0gWl9CWVRFIC0gWl9CWVRFX29sZDsKQEAgLTE3Mjg5LDggKzE3Mjk1LDgg QEAKIAl7CiAJICAvKiBXZSBoYXZlIHRvIGNvbXB1dGUgdGhlIHdpbmRvdyBlbmQgYW5ldyBz aW5jZSB0ZXh0CiAJICAgICBjb3VsZCBoYXZlIGJlZW4gYWRkZWQvcmVtb3ZlZCBhZnRlciBp dC4gICovCi0JICB3LT53aW5kb3dfZW5kX3BvcwotCSAgICA9IG1ha2VfbnVtYmVyIChaIC0g TUFUUklYX1JPV19FTkRfQ0hBUlBPUyAocm93KSk7CisJICB3LT53aW5kb3dfZW5kX3BvcyA9 IFogLSBNQVRSSVhfUk9XX0VORF9DSEFSUE9TIChyb3cpOworCSAgZWFzc2VydCAody0+d2lu ZG93X2VuZF9wb3MgPj0gMCk7CiAJICB3LT53aW5kb3dfZW5kX2J5dGVwb3MKIAkgICAgPSBa X0JZVEUgLSBNQVRSSVhfUk9XX0VORF9CWVRFUE9TIChyb3cpOwogCkBAIC0xNzMyNSw3ICsx NzMzMSw3IEBACiAKICAgLyogR2l2ZSB1cCBpZiB0aGUgd2luZG93IGVuZHMgaW4gc3RyaW5n cy4gIE92ZXJsYXkgc3RyaW5ncwogICAgICBhdCB0aGUgZW5kIGFyZSBkaWZmaWN1bHQgdG8g aGFuZGxlLCBzbyBkb24ndCB0cnkuICAqLwotICByb3cgPSBNQVRSSVhfUk9XIChjdXJyZW50 X21hdHJpeCwgWEZBU1RJTlQgKHctPndpbmRvd19lbmRfdnBvcykpOworICByb3cgPSBNQVRS SVhfUk9XIChjdXJyZW50X21hdHJpeCwgdy0+d2luZG93X2VuZF92cG9zKTsKICAgaWYgKE1B VFJJWF9ST1dfU1RBUlRfQ0hBUlBPUyAocm93KSA9PSBNQVRSSVhfUk9XX0VORF9DSEFSUE9T IChyb3cpKQogICAgIEdJVkVfVVAgKDIwKTsKIApAQCAtMTc2NjgsNyArMTc2NzQsNyBAQAog ICAgICAgLyogU2V0IGxhc3Rfcm93IHRvIHRoZSBnbHlwaCByb3cgaW4gdGhlIGN1cnJlbnQg bWF0cml4IHdoZXJlIHRoZQogCSB3aW5kb3cgZW5kIGxpbmUgaXMgZm91bmQuICBJdCBoYXMg YmVlbiBtb3ZlZCB1cCBvciBkb3duIGluCiAJIHRoZSBtYXRyaXggYnkgZHZwb3MuICAqLwot ICAgICAgaW50IGxhc3RfdnBvcyA9IFhGQVNUSU5UICh3LT53aW5kb3dfZW5kX3Zwb3MpICsg ZHZwb3M7CisgICAgICBwdHJkaWZmX3QgbGFzdF92cG9zID0gdy0+d2luZG93X2VuZF92cG9z ICsgZHZwb3M7CiAgICAgICBzdHJ1Y3QgZ2x5cGhfcm93ICpsYXN0X3JvdyA9IE1BVFJJWF9S T1cgKGN1cnJlbnRfbWF0cml4LCBsYXN0X3Zwb3MpOwogCiAgICAgICAvKiBJZiBsYXN0X3Jv dyBpcyB0aGUgd2luZG93IGVuZCBsaW5lLCBpdCBzaG91bGQgZGlzcGxheSB0ZXh0LiAgKi8K QEAgLTE3NzI0LDIxICsxNzczMCwyMiBAQAogCQkJCQkgICBmaXJzdF91bmNoYW5nZWRfYXRf ZW5kX3Jvdyk7CiAgICAgICBlYXNzZXJ0IChyb3cgJiYgTUFUUklYX1JPV19ESVNQTEFZU19U RVhUX1AgKHJvdykpOwogCi0gICAgICB3LT53aW5kb3dfZW5kX3BvcyA9IG1ha2VfbnVtYmVy IChaIC0gTUFUUklYX1JPV19FTkRfQ0hBUlBPUyAocm93KSk7CisgICAgICB3LT53aW5kb3df ZW5kX3BvcyA9IFogLSBNQVRSSVhfUk9XX0VORF9DSEFSUE9TIChyb3cpOwogICAgICAgdy0+ d2luZG93X2VuZF9ieXRlcG9zID0gWl9CWVRFIC0gTUFUUklYX1JPV19FTkRfQllURVBPUyAo cm93KTsKLSAgICAgIHctPndpbmRvd19lbmRfdnBvcwotCT0gbWFrZV9udW1iZXIgKE1BVFJJ WF9ST1dfVlBPUyAocm93LCB3LT5jdXJyZW50X21hdHJpeCkpOworICAgICAgdy0+d2luZG93 X2VuZF92cG9zID0gTUFUUklYX1JPV19WUE9TIChyb3csIHctPmN1cnJlbnRfbWF0cml4KTsK KyAgICAgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfcG9zID49IDApOworICAgICAgZWFzc2Vy dCAody0+d2luZG93X2VuZF92cG9zID49IDApOwogICAgICAgZWFzc2VydCAody0+d2luZG93 X2VuZF9ieXRlcG9zID49IDApOwogICAgICAgSUZfREVCVUcgKGRlYnVnX21ldGhvZF9hZGQg KHcsICJBIikpOwogICAgIH0KICAgZWxzZSBpZiAobGFzdF90ZXh0X3Jvd19hdF9lbmQpCiAg ICAgewotICAgICAgdy0+d2luZG93X2VuZF9wb3MKLQk9IG1ha2VfbnVtYmVyIChaIC0gTUFU UklYX1JPV19FTkRfQ0hBUlBPUyAobGFzdF90ZXh0X3Jvd19hdF9lbmQpKTsKKyAgICAgIHct PndpbmRvd19lbmRfcG9zID0gWiAtIE1BVFJJWF9ST1dfRU5EX0NIQVJQT1MgKGxhc3RfdGV4 dF9yb3dfYXRfZW5kKTsKICAgICAgIHctPndpbmRvd19lbmRfYnl0ZXBvcwogCT0gWl9CWVRF IC0gTUFUUklYX1JPV19FTkRfQllURVBPUyAobGFzdF90ZXh0X3Jvd19hdF9lbmQpOwotICAg ICAgdy0+d2luZG93X2VuZF92cG9zCi0JPSBtYWtlX251bWJlciAoTUFUUklYX1JPV19WUE9T IChsYXN0X3RleHRfcm93X2F0X2VuZCwgZGVzaXJlZF9tYXRyaXgpKTsKKyAgICAgIHctPndp bmRvd19lbmRfdnBvcyA9IE1BVFJJWF9ST1dfVlBPUyAobGFzdF90ZXh0X3Jvd19hdF9lbmQs IGRlc2lyZWRfbWF0cml4KTsKKyAgICAgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfcG9zID49 IDApOworICAgICAgZWFzc2VydCAody0+d2luZG93X2VuZF92cG9zID49IDApOwogICAgICAg ZWFzc2VydCAody0+d2luZG93X2VuZF9ieXRlcG9zID49IDApOwogICAgICAgSUZfREVCVUcg KGRlYnVnX21ldGhvZF9hZGQgKHcsICJCIikpOwogICAgIH0KQEAgLTE3NzQ3LDEyICsxNzc1 NCwxMiBAQAogICAgICAgLyogV2UgaGF2ZSBkaXNwbGF5ZWQgZWl0aGVyIHRvIHRoZSBlbmQg b2YgdGhlIHdpbmRvdyBvciBhdCB0aGUKIAkgZW5kIG9mIHRoZSB3aW5kb3csIGkuZS4gdGhl IGxhc3Qgcm93IHdpdGggdGV4dCBpcyB0byBiZSBmb3VuZAogCSBpbiB0aGUgZGVzaXJlZCBt YXRyaXguICAqLwotICAgICAgdy0+d2luZG93X2VuZF9wb3MKLQk9IG1ha2VfbnVtYmVyICha IC0gTUFUUklYX1JPV19FTkRfQ0hBUlBPUyAobGFzdF90ZXh0X3JvdykpOworICAgICAgdy0+ d2luZG93X2VuZF9wb3MgPSBaIC0gTUFUUklYX1JPV19FTkRfQ0hBUlBPUyAobGFzdF90ZXh0 X3Jvdyk7CiAgICAgICB3LT53aW5kb3dfZW5kX2J5dGVwb3MKIAk9IFpfQllURSAtIE1BVFJJ WF9ST1dfRU5EX0JZVEVQT1MgKGxhc3RfdGV4dF9yb3cpOwotICAgICAgdy0+d2luZG93X2Vu ZF92cG9zCi0JPSBtYWtlX251bWJlciAoTUFUUklYX1JPV19WUE9TIChsYXN0X3RleHRfcm93 LCBkZXNpcmVkX21hdHJpeCkpOworICAgICAgdy0+d2luZG93X2VuZF92cG9zID0gTUFUUklY X1JPV19WUE9TIChsYXN0X3RleHRfcm93LCBkZXNpcmVkX21hdHJpeCk7CisgICAgICBlYXNz ZXJ0ICh3LT53aW5kb3dfZW5kX3BvcyA+PSAwKTsKKyAgICAgIGVhc3NlcnQgKHctPndpbmRv d19lbmRfdnBvcyA+PSAwKTsKICAgICAgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfYnl0ZXBv cyA+PSAwKTsKICAgICB9CiAgIGVsc2UgaWYgKGZpcnN0X3VuY2hhbmdlZF9hdF9lbmRfcm93 ID09IE5VTEwKQEAgLTE3NzYyLDcgKzE3NzY5LDcgQEAKICAgICAgIC8qIERpc3BsYXllZCB0 byBlbmQgb2Ygd2luZG93LCBidXQgbm8gbGluZSBjb250YWluaW5nIHRleHQgd2FzCiAJIGRp c3BsYXllZC4gIExpbmVzIHdlcmUgZGVsZXRlZCBhdCB0aGUgZW5kIG9mIHRoZSB3aW5kb3cu ICAqLwogICAgICAgaW50IGZpcnN0X3Zwb3MgPSBXSU5ET1dfV0FOVFNfSEVBREVSX0xJTkVf UCAodykgPyAxIDogMDsKLSAgICAgIGludCB2cG9zID0gWEZBU1RJTlQgKHctPndpbmRvd19l bmRfdnBvcyk7CisgICAgICBpbnQgdnBvcyA9IHctPndpbmRvd19lbmRfdnBvczsKICAgICAg IHN0cnVjdCBnbHlwaF9yb3cgKmN1cnJlbnRfcm93ID0gY3VycmVudF9tYXRyaXgtPnJvd3Mg KyB2cG9zOwogICAgICAgc3RydWN0IGdseXBoX3JvdyAqZGVzaXJlZF9yb3cgPSBkZXNpcmVk X21hdHJpeC0+cm93cyArIHZwb3M7CiAKQEAgLTE3NzgwLDIwICsxNzc4NywyMiBAQAogCX0K IAogICAgICAgZWFzc2VydCAocm93ICE9IE5VTEwpOwotICAgICAgdy0+d2luZG93X2VuZF92 cG9zID0gbWFrZV9udW1iZXIgKHZwb3MgKyAxKTsKLSAgICAgIHctPndpbmRvd19lbmRfcG9z ID0gbWFrZV9udW1iZXIgKFogLSBNQVRSSVhfUk9XX0VORF9DSEFSUE9TIChyb3cpKTsKKyAg ICAgIHctPndpbmRvd19lbmRfdnBvcyA9IHZwb3MgKyAxOworICAgICAgdy0+d2luZG93X2Vu ZF9wb3MgPSBaIC0gTUFUUklYX1JPV19FTkRfQ0hBUlBPUyAocm93KTsKICAgICAgIHctPndp bmRvd19lbmRfYnl0ZXBvcyA9IFpfQllURSAtIE1BVFJJWF9ST1dfRU5EX0JZVEVQT1MgKHJv dyk7CisgICAgICBlYXNzZXJ0ICh3LT53aW5kb3dfZW5kX3BvcyA+PSAwKTsKKyAgICAgIGVh c3NlcnQgKHctPndpbmRvd19lbmRfdnBvcyA+PSAwKTsKICAgICAgIGVhc3NlcnQgKHctPndp bmRvd19lbmRfYnl0ZXBvcyA+PSAwKTsKICAgICAgIElGX0RFQlVHIChkZWJ1Z19tZXRob2Rf YWRkICh3LCAiQyIpKTsKICAgICB9CiAgIGVsc2UKICAgICBhYm9ydCAoKTsKIAotICBJRl9E RUJVRyAoZGVidWdfZW5kX3BvcyA9IFhGQVNUSU5UICh3LT53aW5kb3dfZW5kX3Bvcyk7Ci0J ICAgIGRlYnVnX2VuZF92cG9zID0gWEZBU1RJTlQgKHctPndpbmRvd19lbmRfdnBvcykpOwor ICBJRl9ERUJVRyAoZGVidWdfZW5kX3BvcyA9IHctPndpbmRvd19lbmRfcG9zOworCSAgICBk ZWJ1Z19lbmRfdnBvcyA9IHctPndpbmRvd19lbmRfdnBvcyk7CiAKICAgLyogUmVjb3JkIHRo YXQgZGlzcGxheSBoYXMgbm90IGJlZW4gY29tcGxldGVkLiAgKi8KLSAgdy0+d2luZG93X2Vu ZF92YWxpZCA9IFFuaWw7CisgIHctPndpbmRvd19lbmRfdmFsaWQgPSAwOwogICB3LT5kZXNp cmVkX21hdHJpeC0+bm9fc2Nyb2xsaW5nX3AgPSAxOwogICByZXR1cm4gMzsKIApAQCAtMTkx MzQsNyArMTkxNDMsNyBAQAogICAgIH0KIAogICAvKiBJcyBJVC0+dyBzaG93aW5nIHRoZSBy ZWdpb24/ICAqLwotICBpdC0+dy0+cmVnaW9uX3Nob3dpbmcgPSBpdC0+cmVnaW9uX2JlZ19j aGFycG9zID4gMCA/IFF0IDogUW5pbDsKKyAgaXQtPnctPnJlZ2lvbl9zaG93aW5nID0gaXQt PnJlZ2lvbl9iZWdfY2hhcnBvcyA+IDA7CiAKICAgLyogQ2xlYXIgdGhlIHJlc3VsdCBnbHlw aCByb3cgYW5kIGVuYWJsZSBpdC4gICovCiAgIHByZXBhcmVfZGVzaXJlZF9yb3cgKHJvdyk7 CkBAIC0yMTQwOSw3ICsyMTQxOCw3IEBACiAJcHRyZGlmZl90IHBvcyA9IG1hcmtlcl9wb3Np dGlvbiAody0+c3RhcnQpOwogCXB0cmRpZmZfdCB0b3RhbCA9IEJVRl9aViAoYikgLSBCVUZf QkVHViAoYik7CiAKLQlpZiAoWEZBU1RJTlQgKHctPndpbmRvd19lbmRfcG9zKSA8PSBCVUZf WiAoYikgLSBCVUZfWlYgKGIpKQorCWlmICh3LT53aW5kb3dfZW5kX3BvcyA8PSBCVUZfWiAo YikgLSBCVUZfWlYgKGIpKQogCSAgewogCSAgICBpZiAocG9zIDw9IEJVRl9CRUdWIChiKSkK IAkgICAgICByZXR1cm4gIkFsbCI7CkBAIC0yMTQzOCw3ICsyMTQ0Nyw3IEBACiAgICAgY2Fz ZSAnUCc6CiAgICAgICB7CiAJcHRyZGlmZl90IHRvcHBvcyA9IG1hcmtlcl9wb3NpdGlvbiAo dy0+c3RhcnQpOwotCXB0cmRpZmZfdCBib3Rwb3MgPSBCVUZfWiAoYikgLSBYRkFTVElOVCAo dy0+d2luZG93X2VuZF9wb3MpOworCXB0cmRpZmZfdCBib3Rwb3MgPSBCVUZfWiAoYikgLSB3 LT53aW5kb3dfZW5kX3BvczsKIAlwdHJkaWZmX3QgdG90YWwgPSBCVUZfWlYgKGIpIC0gQlVG X0JFR1YgKGIpOwogCiAJaWYgKGJvdHBvcyA+PSBCVUZfWlYgKGIpKQpAQCAtMjYzMTIsNyAr MjYzMjEsNyBAQAogICAvKiBGaW5kIHRoZSByb3dzIGNvcnJlc3BvbmRpbmcgdG8gU1RBUlRf Q0hBUlBPUyBhbmQgRU5EX0NIQVJQT1MuICAqLwogICByb3dzX2Zyb21fcG9zX3JhbmdlICh3 LCBzdGFydF9jaGFycG9zLCBlbmRfY2hhcnBvcywgZGlzcF9zdHJpbmcsICZyMSwgJnIyKTsK ICAgaWYgKHIxID09IE5VTEwpCi0gICAgcjEgPSBNQVRSSVhfUk9XICh3LT5jdXJyZW50X21h dHJpeCwgWEZBU1RJTlQgKHctPndpbmRvd19lbmRfdnBvcykpOworICAgIHIxID0gTUFUUklY X1JPVyAody0+Y3VycmVudF9tYXRyaXgsIHctPndpbmRvd19lbmRfdnBvcyk7CiAgIC8qIElm IHRoZSBiZWZvcmUtc3RyaW5nIG9yIGRpc3BsYXktc3RyaW5nIGNvbnRhaW5zIG5ld2xpbmVz LAogICAgICByb3dzX2Zyb21fcG9zX3JhbmdlIHNraXBzIHRvIGl0cyBsYXN0IHJvdy4gIE1v dmUgYmFjay4gICovCiAgIGlmICghTklMUCAoYmVmb3JlX3N0cmluZykgfHwgIU5JTFAgKGRp c3Bfc3RyaW5nKSkKQEAgLTI2MzM0LDcgKzI2MzQzLDcgQEAKICAgICB9CiAgIGlmIChyMiA9 PSBOVUxMKQogICAgIHsKLSAgICAgIHIyID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRy aXgsIFhGQVNUSU5UICh3LT53aW5kb3dfZW5kX3Zwb3MpKTsKKyAgICAgIHIyID0gTUFUUklY X1JPVyAody0+Y3VycmVudF9tYXRyaXgsIHctPndpbmRvd19lbmRfdnBvcyk7CiAgICAgICBo bGluZm8tPm1vdXNlX2ZhY2VfcGFzdF9lbmQgPSAxOwogICAgIH0KICAgZWxzZSBpZiAoIU5J TFAgKGFmdGVyX3N0cmluZykpCkBAIC0yNjM0Miw3ICsyNjM1MSw3IEBACiAgICAgICAvKiBJ ZiB0aGUgYWZ0ZXItc3RyaW5nIGhhcyBuZXdsaW5lcywgYWR2YW5jZSB0byBpdHMgbGFzdCBy b3cuICAqLwogICAgICAgc3RydWN0IGdseXBoX3JvdyAqbmV4dDsKICAgICAgIHN0cnVjdCBn bHlwaF9yb3cgKmxhc3QKLQk9IE1BVFJJWF9ST1cgKHctPmN1cnJlbnRfbWF0cml4LCBYRkFT VElOVCAody0+d2luZG93X2VuZF92cG9zKSk7CisJPSBNQVRSSVhfUk9XICh3LT5jdXJyZW50 X21hdHJpeCwgdy0+d2luZG93X2VuZF92cG9zKTsKIAogICAgICAgZm9yIChuZXh0ID0gcjIg KyAxOwogCSAgIG5leHQgPD0gbGFzdApAQCAtMjc0MTAsNyArMjc0MTksNyBAQAogICAgICBB bmQgdmVyaWZ5IHRoZSBidWZmZXIncyB0ZXh0IGhhcyBub3QgY2hhbmdlZC4gICovCiAgIGIg PSBYQlVGRkVSICh3LT5idWZmZXIpOwogICBpZiAocGFydCA9PSBPTl9URVhUCi0gICAgICAm JiBFUSAody0+d2luZG93X2VuZF92YWxpZCwgdy0+YnVmZmVyKQorICAgICAgJiYgdy0+d2lu ZG93X2VuZF92YWxpZAogICAgICAgJiYgdy0+bGFzdF9tb2RpZmllZCA9PSBCVUZfTU9ESUZG IChiKQogICAgICAgJiYgdy0+bGFzdF9vdmVybGF5X21vZGlmaWVkID09IEJVRl9PVkVSTEFZ X01PRElGRiAoYikpCiAgICAgewpAQCAtMjc2NDksNyArMjc2NTgsNyBAQAogCQkgIExpc3Bf T2JqZWN0IGxpbTIgPQogCQkgICAgTklMUCAoQlZBUiAoWEJVRkZFUiAoYnVmZmVyKSwgYmlk aV9kaXNwbGF5X3Jlb3JkZXJpbmcpKQogCQkgICAgPyBtYWtlX251bWJlciAoQlVGX1ogKFhC VUZGRVIgKGJ1ZmZlcikpCi0JCQkJICAgLSBYRkFTVElOVCAody0+d2luZG93X2VuZF9wb3Mp KQorCQkJCSAgIC0gdy0+d2luZG93X2VuZF9wb3MpCiAJCSAgICA6IFFuaWw7CiAKIAkJICBp ZiAoTklMUCAob3ZlcmxheSkpCgo= --------------040700070807080907020708--