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 #2 Date: Mon, 25 Jun 2012 12:56:22 +0400 Message-ID: <4FE827B6.6020306@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080400010506040603000106" X-Trace: dough.gmane.org 1340614464 2931 80.91.229.3 (25 Jun 2012 08:54:24 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 25 Jun 2012 08:54:24 +0000 (UTC) To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Jun 25 10:54:17 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 1Sj53o-0001uI-G8 for ged-emacs-devel@m.gmane.org; Mon, 25 Jun 2012 10:54:16 +0200 Original-Received: from localhost ([::1]:60003 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sj53o-0004vG-IP for ged-emacs-devel@m.gmane.org; Mon, 25 Jun 2012 04:54:16 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:50031) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sj53g-0004v3-4P for emacs-devel@gnu.org; Mon, 25 Jun 2012 04:54:14 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sj53Z-0000ny-NO for emacs-devel@gnu.org; Mon, 25 Jun 2012 04:54:07 -0400 Original-Received: from forward11.mail.yandex.net ([95.108.130.93]:53415) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sj53Y-0000nn-Uz for emacs-devel@gnu.org; Mon, 25 Jun 2012 04:54:01 -0400 Original-Received: from smtp12.mail.yandex.net (smtp12.mail.yandex.net [95.108.131.191]) by forward11.mail.yandex.net (Yandex) with ESMTP id F0FC2E80DD0 for ; Mon, 25 Jun 2012 12:53:58 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1340614438; bh=6HRR0VRtrOob7U8GcrZVlps/5/jeX+WKNQDRMvXiqW0=; h=Message-ID:Date:From:MIME-Version:To:Subject:Content-Type; b=GATSZxBoqToAl+Nk7Fw/sId6SaH8kngagWkhzWyJQax+PCmhFQoCbdRy5YrMOkx/z blQ8RuPK8Psvru60QIN1hjvgPA7k7gaCx0htLSw8ktMgVc8l8tTRB2aIjIfjlwv+BJ plKpkeq+IRJr16VY7MXi1rtXOlEBp+fA4UDQUQGI= Original-Received: from smtp12.mail.yandex.net (localhost [127.0.0.1]) by smtp12.mail.yandex.net (Yandex) with ESMTP id DF02616A05DC for ; Mon, 25 Jun 2012 12:53:58 +0400 (MSK) Original-Received: from 213-148-21-55.gelicon.ru (213-148-21-55.gelicon.ru [213.148.21.55]) by smtp12.mail.yandex.net (nwsmtp/Yandex) with ESMTP id rvOukkHr-rvOW9jEf; Mon, 25 Jun 2012 12:53:57 +0400 X-Yandex-Rcpt-Suid: emacs-devel@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1340614438; bh=6HRR0VRtrOob7U8GcrZVlps/5/jeX+WKNQDRMvXiqW0=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type; b=Ss0dCNL/9WcHuEXhwYrG2EfpKUMBZQsk6zQyUTYxdUMplOJqk2uQpMWEjlEjKHcdE Dj/p2LPBfO9BV/s5EFhJpuxjPyzi6+06KbZkOW5HNWEtFxVGB+nC/LJv06qHgFvR3O 1ploS7m729mpTJ7wHmqWqS5Qga6b6ChfDoNnxFcY= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 95.108.130.93 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:151149 Archived-At: This is a multi-part message in MIME format. --------------080400010506040603000106 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit For a `struct window', changing the type of `last_point', `last_modified' and `last_overlay_modified' from Lisp_Object to appropriate integral value eliminates a lot of useless Lisp_Object <-> {EMACS_INT, ptrdiff_t} conversions in a window and redisplay code; and, of course, lesser Lisp_Objects means a bit faster GC. OK to install? Dmitry --------------080400010506040603000106 Content-Type: text/plain; charset=UTF-8; name="window_cleanup.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="window_cleanup.patch" PT09IG1vZGlmaWVkIGZpbGUgJ2FkbWluL0NoYW5nZUxvZycKLS0tIGFkbWluL0NoYW5nZUxv ZwkyMDEyLTA2LTI0IDE2OjE4OjQxICswMDAwCisrKyBhZG1pbi9DaGFuZ2VMb2cJMjAxMi0w Ni0yNSAwODo0MDo0NyArMDAwMApAQCAtMSwzICsxLDEwIEBACisyMDEyLTA2LTI1ICBEbWl0 cnkgQW50aXBvdiAgPGRtYW50aXBvdkB5YW5kZXgucnU+CisKKwkqIGNvY2NpbmVsbGUvd2lu ZG93X21lbWJlcnMuY29jY2k6IFNlbWFudGljIHBhdGNoIHRvIGFkanVzdCBhbGwKKwl1c2Vy cyBhZnRlciBjaGFuZ2luZyBgbGFzdF9tb2RpZmllZCcgYW5kIGBsYXN0X292ZXJsYXlfbW9k aWZpZWQnCisJZnJvbSBMaXNwX09iamVjdCB0byBFTUFDU19JTlQsIGFuZCBgbGFzdF9wb2lu dCcgZnJvbSBMaXNwX09iamVjdAorCXRvIHB0cmRpZmZfdCBpbiBhIGBzdHJ1Y3Qgd2luZG93 Jy4KKwogMjAxMi0wNi0yNCAgRG1pdHJ5IEFudGlwb3YgIDxkbWFudGlwb3ZAeWFuZGV4LnJ1 PgogCiAJRmlyc3QgQ29jY2luZWxsZSBzZW1hbnRpYyBwYXRjaC4KCj09PSBhZGRlZCBmaWxl ICdhZG1pbi9jb2NjaW5lbGxlL3dpbmRvd19tZW1iZXJzLmNvY2NpJwotLS0gYWRtaW4vY29j Y2luZWxsZS93aW5kb3dfbWVtYmVycy5jb2NjaQkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAw CisrKyBhZG1pbi9jb2NjaW5lbGxlL3dpbmRvd19tZW1iZXJzLmNvY2NpCTIwMTItMDYtMjUg MDg6NDA6NDcgKzAwMDAKQEAgLTAsMCArMSw0NCBAQAorLy8gQWRqdXN0IGFsbCB1c2VycyBh ZnRlciBjaGFuZ2luZyBgbGFzdF9tb2RpZmllZCcgYW5kIGBsYXN0X292ZXJsYXlfbW9kaWZp ZWQnCisvLyBmcm9tIExpc3BfT2JqZWN0IHRvIEVNQUNTX0lOVCwgYW5kIGBsYXN0X3BvaW50 JyBmcm9tIExpc3BfT2JqZWN0IHRvIAorLy8gcHRyZGlmZl90IGluIGEgYHN0cnVjdCB3aW5k b3cnLgorQEAKK2V4cHJlc3Npb24gRTsKK2lkZW50aWZpZXIgVzsKK0BACisoCistIFctPmxh c3RfcG9pbnQgPSBtYWtlX251bWVyIChFKQorKyBXLT5sYXN0X3BvaW50ID0gRQorfAorLSBY U0VURkFTVElOVCAoVy0+bGFzdF9wb2ludCwgRSkKKysgVy0+bGFzdF9wb2ludCA9IEUKK3wK Ky0gWElOVCAoVy0+bGFzdF9wb2ludCkKKysgVy0+bGFzdF9wb2ludAorfAorLSBYRkFTVElO VCAoVy0+bGFzdF9wb2ludCkKKysgVy0+bGFzdF9wb2ludAorfAorLSBYU0VURkFTVElOVCAo WFdJTkRPVyAoVyktPmxhc3RfbW9kaWZpZWQsIEUpCisrIFhXSU5ET1cgKFcpLT5sYXN0X21v ZGlmaWVkID0gRQorfAorLSBYU0VURkFTVElOVCAoVy0+bGFzdF9tb2RpZmllZCwgRSkKKysg Vy0+bGFzdF9tb2RpZmllZCA9IEUKK3wKKy0gVy0+bGFzdF9tb2RpZmllZCA9IG1ha2VfbnVt YmVyIChFKQorKyBXLT5sYXN0X21vZGlmaWVkID0gRQorfAorLSBYRkFTVElOVCAoVy0+bGFz dF9tb2RpZmllZCkKKysgVy0+bGFzdF9tb2RpZmllZAorfAorLSBYU0VURkFTVElOVCAoWFdJ TkRPVyAoVyktPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCwgRSkKKysgWFdJTkRPVyAoVyktPmxh c3Rfb3ZlcmxheV9tb2RpZmllZCA9IEUKK3wKKy0gWFNFVEZBU1RJTlQgKFctPmxhc3Rfb3Zl cmxheV9tb2RpZmllZCwgRSkKKysgVy0+bGFzdF9vdmVybGF5X21vZGlmaWVkID0gRQorfAor LSBXLT5sYXN0X292ZXJsYXlfbW9kaWZlZCA9IG1ha2VfbnVtYmVyIChFKQorKyBXLT5sYXN0 X292ZXJsYXlfbW9kaWZlZCA9IEUKK3wKKy0gWEZBU1RJTlQgKFctPmxhc3Rfb3ZlcmxheV9t b2RpZmllZCkKKysgVy0+bGFzdF9vdmVybGF5X21vZGlmaWVkCispCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3JjL0NoYW5nZUxvZycKLS0tIHNyYy9DaGFuZ2VMb2cJMjAxMi0wNi0yNSAwNzo1 NDo0NSArMDAwMAorKysgc3JjL0NoYW5nZUxvZwkyMDEyLTA2LTI1IDA4OjQyOjQ0ICswMDAw CkBAIC0xLDMgKzEsMTAgQEAKKzIwMTItMDYtMjUgIERtaXRyeSBBbnRpcG92ICA8ZG1hbnRp cG92QHlhbmRleC5ydT4KKworCSogd2luZG93LmggKHN0cnVjdCB3aW5kb3cpOiBGb3IgYSBg c3RydWN0IHdpbmRvdycsIGNoYW5nZQorCWBsYXN0X21vZGlmaWVkJyBhbmQgYGxhc3Rfb3Zl cmxheV9tb2RpZmllZCcgZnJvbSBMaXNwX09iamVjdAorCXRvIEVNQUNTX0lOVCwgYW5kIGBs YXN0X3BvaW50JyBmcm9tIExpc3BfT2JqZWN0IHRvIHB0cmRpZmZfdC4KKwlBZGp1c3QgdXNl cnMgYWNjb3JkaW5nbHkuCisKIDIwMTItMDYtMjUgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNz LnVjbGEuZWR1PgogCiAJKiBndGt1dGlsLmMgKGdldF91dGY4X3N0cmluZyk6IFJlbW92ZSBy ZWR1bmRhbnQgYXNzaWdubWVudC4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZnJhbWUuYycK LS0tIHNyYy9mcmFtZS5jCTIwMTItMDYtMTkgMDY6NDk6NTAgKzAwMDAKKysrIHNyYy9mcmFt ZS5jCTIwMTItMDYtMjUgMDg6NDA6NDcgKzAwMDAKQEAgLTEzMSw3ICsxMzEsNyBAQAogewog ICBzdHJ1Y3Qgd2luZG93ICp3ID0gWFdJTkRPVyAod2luZG93KTsKIAotICBYU0VURkFTVElO VCAody0+bGFzdF9tb2RpZmllZCwgMCk7CisgIHctPmxhc3RfbW9kaWZpZWQgPSAwOwogICBY U0VURkFTVElOVCAody0+dG9wX2xpbmUsIFhGQVNUSU5UICh3LT50b3BfbGluZSkgKyBuKTsK ICAgWFNFVEZBU1RJTlQgKHctPnRvdGFsX2xpbmVzLCBYRkFTVElOVCAody0+dG90YWxfbGlu ZXMpIC0gbik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbWluaWJ1Zi5jJwotLS0gc3Jj L21pbmlidWYuYwkyMDEyLTA2LTE5IDE3OjA1OjQxICswMDAwCisrKyBzcmMvbWluaWJ1Zi5j CTIwMTItMDYtMjUgMDg6NDA6NDcgKzAwMDAKQEAgLTg4OCw4ICs4ODgsOCBAQAogCiAgIC8q IE1ha2Ugc3VyZSBtaW5pYnVmZmVyIHdpbmRvdyBpcyBlcmFzZWQsIG5vdCBpZ25vcmVkLiAg Ki8KICAgd2luZG93c19vcl9idWZmZXJzX2NoYW5nZWQrKzsKLSAgWFNFVEZBU1RJTlQgKFhX SU5ET1cgKHdpbmRvdyktPmxhc3RfbW9kaWZpZWQsIDApOwotICBYU0VURkFTVElOVCAoWFdJ TkRPVyAod2luZG93KS0+bGFzdF9vdmVybGF5X21vZGlmaWVkLCAwKTsKKyAgWFdJTkRPVyAo d2luZG93KS0+bGFzdF9tb2RpZmllZCA9IDA7CisgIFhXSU5ET1cgKHdpbmRvdyktPmxhc3Rf b3ZlcmxheV9tb2RpZmllZCA9IDA7CiAKICAgLyogSW4gY2FzZSB0aGUgcHJldmlvdXMgbWlu aWJ1ZmZlciBkaXNwbGF5ZWQgaW4gdGhpcyBtaW5pd2luZG93IGlzCiAgICAgIGRlYWQsIHdl IG1heSBrZWVwIGRpc3BsYXlpbmcgdGhpcyBidWZmZXIgKHRobyBpdCdzIGluYWN0aXZlKSwg c28gcmVzZXQgaXQsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3dpbmRvdy5jJwotLS0gc3Jj L3dpbmRvdy5jCTIwMTItMDYtMTkgMTY6NTY6MjggKzAwMDAKKysrIHNyYy93aW5kb3cuYwky MDEyLTA2LTI1IDA4OjQwOjQ3ICswMDAwCkBAIC0xMzE0LDggKzEzMTQsOCBAQAogCiAgIGlm ICghIE5JTFAgKHVwZGF0ZSkKICAgICAgICYmICEgKCEgTklMUCAody0+d2luZG93X2VuZF92 YWxpZCkKLQkgICAgJiYgWEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQpID49IEJVRl9NT0RJ RkYgKGIpCi0JICAgICYmIFhGQVNUSU5UICh3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQpID49 IEJVRl9PVkVSTEFZX01PRElGRiAoYikpCisJICAgICYmIHctPmxhc3RfbW9kaWZpZWQgPj0g QlVGX01PRElGRiAoYikKKwkgICAgJiYgdy0+bGFzdF9vdmVybGF5X21vZGlmaWVkID49IEJV Rl9PVkVSTEFZX01PRElGRiAoYikpCiAgICAgICAmJiAhbm9uaW50ZXJhY3RpdmUpCiAgICAg ewogICAgICAgc3RydWN0IHRleHRfcG9zIHN0YXJ0cDsKQEAgLTEzOTgsOCArMTM5OCw4IEBA CiAgIGlmIChOSUxQIChub2ZvcmNlKSkKICAgICB3LT5mb3JjZV9zdGFydCA9IDE7CiAgIHct PnVwZGF0ZV9tb2RlX2xpbmUgPSAxOwotICBYU0VURkFTVElOVCAody0+bGFzdF9tb2RpZmll ZCwgMCk7Ci0gIFhTRVRGQVNUSU5UICh3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQsIDApOwor ICB3LT5sYXN0X21vZGlmaWVkID0gMDsKKyAgdy0+bGFzdF9vdmVybGF5X21vZGlmaWVkID0g MDsKICAgaWYgKCFFUSAod2luZG93LCBzZWxlY3RlZF93aW5kb3cpKQogICAgIHdpbmRvd3Nf b3JfYnVmZmVyc19jaGFuZ2VkKys7CiAKQEAgLTE1MTEsOCArMTUxMSw4IEBACiAgIGlmIChO SUxQICh3LT53aW5kb3dfZW5kX3ZhbGlkKQogICAgICAgfHwgY3VycmVudF9idWZmZXItPmNs aXBfY2hhbmdlZAogICAgICAgfHwgY3VycmVudF9idWZmZXItPnByZXZlbnRfcmVkaXNwbGF5 X29wdGltaXphdGlvbnNfcAotICAgICAgfHwgWEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQp IDwgQlVGX01PRElGRiAoYikKLSAgICAgIHx8IFhGQVNUSU5UICh3LT5sYXN0X292ZXJsYXlf bW9kaWZpZWQpIDwgQlVGX09WRVJMQVlfTU9ESUZGIChiKSkKKyAgICAgIHx8IHctPmxhc3Rf bW9kaWZpZWQgPCBCVUZfTU9ESUZGIChiKQorICAgICAgfHwgdy0+bGFzdF9vdmVybGF5X21v ZGlmaWVkIDwgQlVGX09WRVJMQVlfTU9ESUZGIChiKSkKICAgICByZXR1cm4gUW5pbDsKIAog ICBpZiAoTklMUCAobGluZSkpCkBAIC0zMDExLDggKzMwMTEsOCBAQAogCQkJICAgICBidWZm ZXIpOwogICAgICAgdy0+c3RhcnRfYXRfbGluZV9iZWcgPSAwOwogICAgICAgdy0+Zm9yY2Vf c3RhcnQgPSAwOwotICAgICAgWFNFVEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQsIDApOwot ICAgICAgWFNFVEZBU1RJTlQgKHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCwgMCk7CisgICAg ICB3LT5sYXN0X21vZGlmaWVkID0gMDsKKyAgICAgIHctPmxhc3Rfb3ZlcmxheV9tb2RpZmll ZCA9IDA7CiAgICAgfQogICAvKiBNYXliZSB3ZSBjb3VsZCBtb3ZlIHRoaXMgaW50byB0aGUg YGlmJyBidXQgaXQncyBub3Qgb2J2aW91c2x5IHNhZmUgYW5kCiAgICAgIEkgZG91YnQgaXQn cyB3b3J0aCB0aGUgdHJvdWJsZS4gICovCkBAIC0zMjk4LDggKzMyOTgsOSBAQAogICBYU0VU RkFTVElOVCAody0+dXNlX3RpbWUsIDApOwogICArK3NlcXVlbmNlX251bWJlcjsKICAgWFNF VEZBU1RJTlQgKHctPnNlcXVlbmNlX251bWJlciwgc2VxdWVuY2VfbnVtYmVyKTsKLSAgdy0+ dGVtc2xvdCA9IHctPmxhc3RfbW9kaWZpZWQgPSB3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQg PSBRbmlsOwotICBYU0VURkFTVElOVCAody0+bGFzdF9wb2ludCwgMCk7CisgIHctPnRlbXNs b3QgPSBRbmlsOworICB3LT5sYXN0X21vZGlmaWVkID0gdy0+bGFzdF9vdmVybGF5X21vZGlm aWVkID0gMDsKKyAgdy0+bGFzdF9wb2ludCA9IDA7CiAgIHctPmxhc3RfaGFkX3N0YXIgPSAw OwogICB3LT52ZXJ0aWNhbF9zY3JvbGxfYmFyID0gUW5pbDsKICAgdy0+bGVmdF9tYXJnaW5f Y29scyA9IHctPnJpZ2h0X21hcmdpbl9jb2xzID0gUW5pbDsKQEAgLTM1MTgsOCArMzUxOSw4 IEBACiAgICAgfQogCiAgIC8qIENsZWFyIG91dCBzb21lIHJlZGlzcGxheSBjYWNoZXMuICAq LwotICBYU0VURkFTVElOVCAody0+bGFzdF9tb2RpZmllZCwgMCk7Ci0gIFhTRVRGQVNUSU5U ICh3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQsIDApOworICB3LT5sYXN0X21vZGlmaWVkID0g MDsKKyAgdy0+bGFzdF9vdmVybGF5X21vZGlmaWVkID0gMDsKIH0KIAogCkBAIC00MDUxLDgg KzQwNTIsOCBAQAogICAgICAgLyogR3JvdyB0aGUgbWluaS13aW5kb3cuICAqLwogICAgICAg WFNFVEZBU1RJTlQgKHctPnRvcF9saW5lLCBYRkFTVElOVCAoci0+dG9wX2xpbmUpICsgWEZB U1RJTlQgKHItPnRvdGFsX2xpbmVzKSk7CiAgICAgICBYU0VURkFTVElOVCAody0+dG90YWxf bGluZXMsIFhGQVNUSU5UICh3LT50b3RhbF9saW5lcykgLSBYSU5UICh2YWx1ZSkpOwotICAg ICAgWFNFVEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQsIDApOwotICAgICAgWFNFVEZBU1RJ TlQgKHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCwgMCk7CisgICAgICB3LT5sYXN0X21vZGlm aWVkID0gMDsKKyAgICAgIHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCA9IDA7CiAKICAgICAg IGFkanVzdF9nbHlwaHMgKGYpOwogICAgICAgVU5CTE9DS19JTlBVVDsKQEAgLTQwODcsOCAr NDA4OCw4IEBACiAJICBYU0VURkFTVElOVCAody0+dG9wX2xpbmUsIFhGQVNUSU5UIChyLT50 b3BfbGluZSkgKyBYRkFTVElOVCAoci0+dG90YWxfbGluZXMpKTsKIAkgIFhTRVRGQVNUSU5U ICh3LT50b3RhbF9saW5lcywgMSk7CiAKLQkgIFhTRVRGQVNUSU5UICh3LT5sYXN0X21vZGlm aWVkLCAwKTsKLQkgIFhTRVRGQVNUSU5UICh3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQsIDAp OworCSAgdy0+bGFzdF9tb2RpZmllZCA9IDA7CisJICB3LT5sYXN0X292ZXJsYXlfbW9kaWZp ZWQgPSAwOwogCiAJICBhZGp1c3RfZ2x5cGhzIChmKTsKIAkgIFVOQkxPQ0tfSU5QVVQ7CkBA IC00MzE1LDggKzQzMTYsOCBAQAogCQkJCQkgdy0+YnVmZmVyKTsKIAkJICB3LT5zdGFydF9h dF9saW5lX2JlZyA9IDE7CiAJCSAgdy0+dXBkYXRlX21vZGVfbGluZSA9IDE7Ci0JCSAgWFNF VEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQsIDApOwotCQkgIFhTRVRGQVNUSU5UICh3LT5s YXN0X292ZXJsYXlfbW9kaWZpZWQsIDApOworCQkgIHctPmxhc3RfbW9kaWZpZWQgPSAwOwor CQkgIHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCA9IDA7CiAJCSAgLyogU2V0IGZvcmNlX3N0 YXJ0IHNvIHRoYXQgcmVkaXNwbGF5X3dpbmRvdyB3aWxsIHJ1biB0aGUKIAkJICAgICB3aW5k b3ctc2Nyb2xsLWZ1bmN0aW9ucy4gICovCiAJCSAgdy0+Zm9yY2Vfc3RhcnQgPSAxOwpAQCAt NDQ2MSw4ICs0NDYyLDggQEAKICAgICAgIGJ5dGVwb3MgPSBYTUFSS0VSICh3LT5zdGFydCkt PmJ5dGVwb3M7CiAgICAgICB3LT5zdGFydF9hdF9saW5lX2JlZyA9IChwb3MgPT0gQkVHViB8 fCBGRVRDSF9CWVRFIChieXRlcG9zIC0gMSkgPT0gJ1xuJyk7CiAgICAgICB3LT51cGRhdGVf bW9kZV9saW5lID0gMTsKLSAgICAgIFhTRVRGQVNUSU5UICh3LT5sYXN0X21vZGlmaWVkLCAw KTsKLSAgICAgIFhTRVRGQVNUSU5UICh3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQsIDApOwor ICAgICAgdy0+bGFzdF9tb2RpZmllZCA9IDA7CisgICAgICB3LT5sYXN0X292ZXJsYXlfbW9k aWZpZWQgPSAwOwogICAgICAgLyogU2V0IGZvcmNlX3N0YXJ0IHNvIHRoYXQgcmVkaXNwbGF5 X3dpbmRvdyB3aWxsIHJ1biB0aGUKIAkgd2luZG93LXNjcm9sbC1mdW5jdGlvbnMuICAqLwog ICAgICAgdy0+Zm9yY2Vfc3RhcnQgPSAxOwpAQCAtNDY2MCw4ICs0NjYxLDggQEAKICAgICAg IHNldF9tYXJrZXJfcmVzdHJpY3RlZF9ib3RoICh3LT5zdGFydCwgdy0+YnVmZmVyLCBwb3Ms IHBvc19ieXRlKTsKICAgICAgIHctPnN0YXJ0X2F0X2xpbmVfYmVnID0gIU5JTFAgKGJvbHAp OwogICAgICAgdy0+dXBkYXRlX21vZGVfbGluZSA9IDE7Ci0gICAgICBYU0VURkFTVElOVCAo dy0+bGFzdF9tb2RpZmllZCwgMCk7Ci0gICAgICBYU0VURkFTVElOVCAody0+bGFzdF9vdmVy bGF5X21vZGlmaWVkLCAwKTsKKyAgICAgIHctPmxhc3RfbW9kaWZpZWQgPSAwOworICAgICAg dy0+bGFzdF9vdmVybGF5X21vZGlmaWVkID0gMDsKICAgICAgIC8qIFNldCBmb3JjZV9zdGFy dCBzbyB0aGF0IHJlZGlzcGxheV93aW5kb3cgd2lsbCBydW4KIAkgdGhlIHdpbmRvdy1zY3Jv bGwtZnVuY3Rpb25zLiAgKi8KICAgICAgIHctPmZvcmNlX3N0YXJ0ID0gMTsKQEAgLTU2MDEs OCArNTYwMiw4IEBACiAJCX0KIAkgICAgfQogCi0JICBYU0VURkFTVElOVCAody0+bGFzdF9t b2RpZmllZCwgMCk7Ci0JICBYU0VURkFTVElOVCAody0+bGFzdF9vdmVybGF5X21vZGlmaWVk LCAwKTsKKwkgIHctPmxhc3RfbW9kaWZpZWQgPSAwOworCSAgdy0+bGFzdF9vdmVybGF5X21v ZGlmaWVkID0gMDsKIAogCSAgLyogUmVpbnN0YWxsIHRoZSBzYXZlZCBidWZmZXIgYW5kIHBv aW50ZXJzIGludG8gaXQuICAqLwogCSAgaWYgKE5JTFAgKHAtPmJ1ZmZlcikpCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL3dpbmRvdy5oJwotLS0gc3JjL3dpbmRvdy5oCTIwMTItMDYtMDEg MDM6NDE6MDMgKzAwMDAKKysrIHNyYy93aW5kb3cuaAkyMDEyLTA2LTI1IDA4OjQwOjQ3ICsw MDAwCkBAIC0xNTcsMTQgKzE1Nyw2IEBACiAgICAgICAgYm9va2tlZXBpbmcuICAqLwogICAg IExpc3BfT2JqZWN0IHRlbXNsb3Q7CiAKLSAgICAvKiB0ZXh0Lm1vZGlmaWVkIG9mIGRpc3Bs YXllZCBidWZmZXIgYXMgb2YgbGFzdCB0aW1lIGRpc3BsYXkKLSAgICAgICBjb21wbGV0ZWQu ICAqLwotICAgIExpc3BfT2JqZWN0IGxhc3RfbW9kaWZpZWQ7Ci0gICAgLyogQlVGX09WRVJM QVlfTU9ESUZJRUQgb2YgZGlzcGxheWVkIGJ1ZmZlciBhcyBvZiBsYXN0IGNvbXBsZXRlIHVw ZGF0ZS4gICovCi0gICAgTGlzcF9PYmplY3QgbGFzdF9vdmVybGF5X21vZGlmaWVkOwotICAg IC8qIFZhbHVlIG9mIHBvaW50IGF0IHRoYXQgdGltZS4gICovCi0gICAgTGlzcF9PYmplY3Qg bGFzdF9wb2ludDsKLQogICAgIC8qIFRoaXMgd2luZG93J3MgdmVydGljYWwgc2Nyb2xsIGJh ci4gIFRoaXMgZmllbGQgaXMgb25seSBmb3IgdXNlCiAgICAgICAgYnkgdGhlIHdpbmRvdy1z eXN0ZW0tZGVwZW5kZW50IGNvZGUgd2hpY2ggaW1wbGVtZW50cyB0aGUKICAgICAgICBzY3Jv bGwgYmFyczsgaXQgY2FuIHN0b3JlIGFueXRoaW5nIGl0IGxpa2VzIGhlcmUuICBJZiB0aGlz CkBAIC0yNTQsNiArMjQ2LDE3IEBACiAgICAgc3RydWN0IGdseXBoX21hdHJpeCAqY3VycmVu dF9tYXRyaXg7CiAgICAgc3RydWN0IGdseXBoX21hdHJpeCAqZGVzaXJlZF9tYXRyaXg7CiAK KyAgICAvKiBEaXNwbGF5ZWQgYnVmZmVyJ3MgdGV4dCBtb2RpZmljYXRpb24gZXZlbnRzIGNv dW50ZXIgYXMgb2YgbGFzdCB0aW1lCisgICAgICAgZGlzcGxheSBjb21wbGV0ZWQuICAqLwor ICAgIEVNQUNTX0lOVCBsYXN0X21vZGlmaWVkOworCisgICAgLyogRGlzcGxheWVkIGJ1ZmZl cidzIG92ZXJsYXlzIG1vZGlmaWNhdGlvbiBldmVudHMgY291bnRlciBhcyBvZiBsYXN0Cisg ICAgICAgY29tcGxldGUgdXBkYXRlLiAgKi8KKyAgICBFTUFDU19JTlQgbGFzdF9vdmVybGF5 X21vZGlmaWVkOworCisgICAgLyogVmFsdWUgb2YgcG9pbnQgYXQgdGhhdCB0aW1lLiAgKi8K KyAgICBwdHJkaWZmX3QgbGFzdF9wb2ludDsKKwogICAgIC8qIFNjYWxpbmcgZmFjdG9yIGZv ciB0aGUgZ2x5cGhfbWF0cml4IHNpemUgY2FsY3VsYXRpb24gaW4gdGhpcyB3aW5kb3cuCiAg ICAgICAgVXNlZCBpZiB3aW5kb3cgY29udGFpbnMgbWFueSBzbWFsbCBpbWFnZXMgb3IgdXNl cyBwcm9wb3J0aW9uYWwgZm9udHMsCiAgICAgICAgYXMgdGhlIG5vcm1hbCAgbWF5IHlpZWxk IGEgbWF0cml4IHdoaWNoIGlzIHRvbyBzbWFsbC4gICovCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL3hkaXNwLmMnCi0tLSBzcmMveGRpc3AuYwkyMDEyLTA2LTIyIDIxOjE3OjQyICswMDAw CisrKyBzcmMveGRpc3AuYwkyMDEyLTA2LTI1IDA4OjQwOjQ3ICswMDAwCkBAIC0xMjUxMCw4 ICsxMjUxMCw4IEBACiAgIGludCB1bmNoYW5nZWRfcCA9IDE7CiAKICAgLyogSWYgdGV4dCBv ciBvdmVybGF5cyBoYXZlIGNoYW5nZWQsIHNlZSB3aGVyZS4gICovCi0gIGlmIChYRkFTVElO VCAody0+bGFzdF9tb2RpZmllZCkgPCBNT0RJRkYKLSAgICAgIHx8IFhGQVNUSU5UICh3LT5s YXN0X292ZXJsYXlfbW9kaWZpZWQpIDwgT1ZFUkxBWV9NT0RJRkYpCisgIGlmICh3LT5sYXN0 X21vZGlmaWVkIDwgTU9ESUZGCisgICAgICB8fCB3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQg PCBPVkVSTEFZX01PRElGRikKICAgICB7CiAgICAgICAvKiBHYXAgaW4gdGhlIGxpbmU/ICAq LwogICAgICAgaWYgKEdQVCA8IHN0YXJ0IHx8IFogLSBHUFQgPCBlbmQpCkBAIC0xMjc5MCw5 ICsxMjc5MCw5IEBACiAJcHQgPSBtYXJrZXJfcG9zaXRpb24gKHctPnBvaW50bSk7CiAKICAg ICAgIGlmICgody0+Y3VycmVudF9tYXRyaXgtPmJ1ZmZlciAhPSBYQlVGRkVSICh3LT5idWZm ZXIpCi0JICAgfHwgcHQgIT0gWElOVCAody0+bGFzdF9wb2ludCkpCisJICAgfHwgcHQgIT0g dy0+bGFzdF9wb2ludCkKIAkgICYmIGNoZWNrX3BvaW50X2luX2NvbXBvc2l0aW9uICh3LT5j dXJyZW50X21hdHJpeC0+YnVmZmVyLAotCQkJCQkgWElOVCAody0+bGFzdF9wb2ludCksCisJ CQkJCSB3LT5sYXN0X3BvaW50LAogCQkJCQkgWEJVRkZFUiAody0+YnVmZmVyKSwgcHQpKQog CWItPmNsaXBfY2hhbmdlZCA9IDE7CiAgICAgfQpAQCAtMTMwMTQsOSArMTMwMTQsOSBAQAog ICBpZiAoIU5JTFAgKHctPmNvbHVtbl9udW1iZXJfZGlzcGxheWVkKQogICAgICAgLyogVGhp cyBhbHRlcm5hdGl2ZSBxdWlja2x5IGlkZW50aWZpZXMgYSBjb21tb24gY2FzZQogCSB3aGVy ZSBubyBjaGFuZ2UgaXMgbmVlZGVkLiAgKi8KLSAgICAgICYmICEoUFQgPT0gWEZBU1RJTlQg KHctPmxhc3RfcG9pbnQpCi0JICAgJiYgWEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQpID49 IE1PRElGRgotCSAgICYmIFhGQVNUSU5UICh3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQpID49 IE9WRVJMQVlfTU9ESUZGKQorICAgICAgJiYgIShQVCA9PSB3LT5sYXN0X3BvaW50CisJICAg JiYgdy0+bGFzdF9tb2RpZmllZCA+PSBNT0RJRkYKKwkgICAmJiB3LT5sYXN0X292ZXJsYXlf bW9kaWZpZWQgPj0gT1ZFUkxBWV9NT0RJRkYpCiAgICAgICAmJiAoWEZBU1RJTlQgKHctPmNv bHVtbl9udW1iZXJfZGlzcGxheWVkKSAhPSBjdXJyZW50X2NvbHVtbiAoKSkpCiAgICAgdy0+ dXBkYXRlX21vZGVfbGluZSA9IDE7CiAKQEAgLTEzMDc5LDggKzEzMDc5LDggQEAKICAgICB9 CiAgIGVsc2UgaWYgKEVRIChzZWxlY3RlZF93aW5kb3csIG1pbmlidWZfd2luZG93KQogCSAg ICYmIChjdXJyZW50X2J1ZmZlci0+Y2xpcF9jaGFuZ2VkCi0JICAgICAgIHx8IFhGQVNUSU5U ICh3LT5sYXN0X21vZGlmaWVkKSA8IE1PRElGRgotCSAgICAgICB8fCBYRkFTVElOVCAody0+ bGFzdF9vdmVybGF5X21vZGlmaWVkKSA8IE9WRVJMQVlfTU9ESUZGKQorCSAgICAgICB8fCB3 LT5sYXN0X21vZGlmaWVkIDwgTU9ESUZGCisJICAgICAgIHx8IHctPmxhc3Rfb3ZlcmxheV9t b2RpZmllZCA8IE9WRVJMQVlfTU9ESUZGKQogCSAgICYmIHJlc2l6ZV9taW5pX3dpbmRvdyAo dywgMCkpCiAgICAgewogICAgICAgLyogUmVzaXplZCBhY3RpdmUgbWluaS13aW5kb3cgdG8g Zml0IHRoZSBzaXplIG9mIHdoYXQgaXQgaXMKQEAgLTEzMTQ1LDggKzEzMTQ1LDggQEAKIAkg ICAgICB8fCBGRVRDSF9CWVRFIChCWVRFUE9TICh0bGJ1ZnBvcykpID09ICdcbicpKQogCS8q IEZvcm1lciBjb250aW51YXRpb24gbGluZSBoYXMgZGlzYXBwZWFyZWQgYnkgYmVjb21pbmcg ZW1wdHkuICAqLwogCWdvdG8gY2FuY2VsOwotICAgICAgZWxzZSBpZiAoWEZBU1RJTlQgKHct Pmxhc3RfbW9kaWZpZWQpIDwgTU9ESUZGCi0JICAgICAgIHx8IFhGQVNUSU5UICh3LT5sYXN0 X292ZXJsYXlfbW9kaWZpZWQpIDwgT1ZFUkxBWV9NT0RJRkYKKyAgICAgIGVsc2UgaWYgKHct Pmxhc3RfbW9kaWZpZWQgPCBNT0RJRkYKKwkgICAgICAgfHwgdy0+bGFzdF9vdmVybGF5X21v ZGlmaWVkIDwgT1ZFUkxBWV9NT0RJRkYKIAkgICAgICAgfHwgTUlOSV9XSU5ET1dfUCAodykp CiAJewogCSAgLyogV2UgaGF2ZSB0byBoYW5kbGUgdGhlIGNhc2Ugb2YgY29udGludWF0aW9u IGFyb3VuZCBhCkBAIC0xMzI1MCw3ICsxMzI1MCw3IEBACiAJICAgIGdvdG8gY2FuY2VsOwog CX0KICAgICAgIGVsc2UgaWYgKC8qIEN1cnNvciBwb3NpdGlvbiBoYXNuJ3QgY2hhbmdlZC4g ICovCi0JICAgICAgIFBUID09IFhGQVNUSU5UICh3LT5sYXN0X3BvaW50KQorCSAgICAgICBQ VCA9PSB3LT5sYXN0X3BvaW50CiAJICAgICAgIC8qIE1ha2Ugc3VyZSB0aGUgY3Vyc29yIHdh cyBsYXN0IGRpc3BsYXllZAogCQkgIGluIHRoaXMgd2luZG93LiAgT3RoZXJ3aXNlIHdlIGhh dmUgdG8gcmVwb3NpdGlvbiBpdC4gICovCiAJICAgICAgICYmIDAgPD0gdy0+Y3Vyc29yLnZw b3MKQEAgLTEzNjY2LDEwICsxMzY2Niw4IEBACiAgICAgewogICAgICAgc3RydWN0IGJ1ZmZl ciAqYiA9IFhCVUZGRVIgKHctPmJ1ZmZlcik7CiAKLSAgICAgIHctPmxhc3RfbW9kaWZpZWQK LQk9IG1ha2VfbnVtYmVyIChhY2N1cmF0ZV9wID8gQlVGX01PRElGRiAoYikgOiAwKTsKLSAg ICAgIHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZAotCT0gbWFrZV9udW1iZXIgKGFjY3VyYXRl X3AgPyBCVUZfT1ZFUkxBWV9NT0RJRkYgKGIpIDogMCk7CisgICAgICB3LT5sYXN0X21vZGlm aWVkID0gYWNjdXJhdGVfcCA/IEJVRl9NT0RJRkYoYikgOiAwOworICAgICAgdy0+bGFzdF9v dmVybGF5X21vZGlmaWVkID0gYWNjdXJhdGVfcCA/IEJVRl9PVkVSTEFZX01PRElGRiAoYikg OiAwOwogICAgICAgdy0+bGFzdF9oYWRfc3RhcgogCT0gQlVGX01PRElGRiAoYikgPiBCVUZf U0FWRV9NT0RJRkYgKGIpOwogCkBAIC0xMzY5MSw5ICsxMzY4OSw5IEBACiAJICB3LT5sYXN0 X2N1cnNvcl9vZmZfcCA9IHctPmN1cnNvcl9vZmZfcDsKIAogCSAgaWYgKHcgPT0gWFdJTkRP VyAoc2VsZWN0ZWRfd2luZG93KSkKLQkgICAgdy0+bGFzdF9wb2ludCA9IG1ha2VfbnVtYmVy IChCVUZfUFQgKGIpKTsKKwkgICAgdy0+bGFzdF9wb2ludCA9IEJVRl9QVCAoYik7CiAJICBl bHNlCi0JICAgIHctPmxhc3RfcG9pbnQgPSBtYWtlX251bWJlciAoWE1BUktFUiAody0+cG9p bnRtKS0+Y2hhcnBvcyk7CisJICAgIHctPmxhc3RfcG9pbnQgPSBYTUFSS0VSICh3LT5wb2lu dG0pLT5jaGFycG9zOwogCX0KICAgICB9CiAKQEAgLTE0OTU0LDggKzE0OTUyLDYgQEAKIAkg ICAmJiAhTklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIG1hcmtfYWN0aXZlKSkpCiAgICAg ICAmJiBOSUxQICh3LT5yZWdpb25fc2hvd2luZykKICAgICAgICYmIE5JTFAgKFZzaG93X3Ry YWlsaW5nX3doaXRlc3BhY2UpCi0gICAgICAvKiBSaWdodCBhZnRlciBzcGxpdHRpbmcgd2lu ZG93cywgbGFzdF9wb2ludCBtYXkgYmUgbmlsLiAgKi8KLSAgICAgICYmIElOVEVHRVJQICh3 LT5sYXN0X3BvaW50KQogICAgICAgLyogVGhpcyBjb2RlIGlzIG5vdCB1c2VkIGZvciBtaW5p LWJ1ZmZlciBmb3IgdGhlIHNha2Ugb2YgdGhlIGNhc2UKIAkgb2YgcmVkaXNwbGF5aW5nIHRv IHJlcGxhY2UgYW4gZWNobyBhcmVhIG1lc3NhZ2U7IHNpbmNlIGluCiAJIHRoYXQgY2FzZSB0 aGUgbWluaS1idWZmZXIgY29udGVudHMgcGVyIHNlIGFyZSB1c3VhbGx5CkBAIC0xNTAxMyw3 ICsxNTAwOSw3IEBACiAJICBpbnQgc2Nyb2xsX3AgPSAwLCBtdXN0X3Njcm9sbCA9IDA7CiAJ ICBpbnQgbGFzdF95ID0gd2luZG93X3RleHRfYm90dG9tX3kgKHcpIC0gdGhpc19zY3JvbGxf bWFyZ2luOwogCi0JICBpZiAoUFQgPiBYRkFTVElOVCAody0+bGFzdF9wb2ludCkpCisJICBp ZiAoUFQgPiB3LT5sYXN0X3BvaW50KQogCSAgICB7CiAJICAgICAgLyogUG9pbnQgaGFzIG1v dmVkIGZvcndhcmQuICAqLwogCSAgICAgIHdoaWxlIChNQVRSSVhfUk9XX0VORF9DSEFSUE9T IChyb3cpIDwgUFQKQEAgLTE1MDQ4LDcgKzE1MDQ0LDcgQEAKIAkJICAgICAgJiYgIU1BVFJJ WF9ST1dfRU5EU19JTl9NSURETEVfT0ZfQ0hBUl9QIChyb3cpKSkKIAkJc2Nyb2xsX3AgPSAx OwogCSAgICB9Ci0JICBlbHNlIGlmIChQVCA8IFhGQVNUSU5UICh3LT5sYXN0X3BvaW50KSkK KwkgIGVsc2UgaWYgKFBUIDwgdy0+bGFzdF9wb2ludCkKIAkgICAgewogCSAgICAgIC8qIEN1 cnNvciBoYXMgdG8gYmUgbW92ZWQgYmFja3dhcmQuICBOb3RlIHRoYXQgUFQgPj0KIAkJIENI QVJQT1MgKHN0YXJ0cCkgYmVjYXVzZSBvZiB0aGUgb3V0ZXIgaWYtc3RhdGVtZW50LiAgKi8K QEAgLTE1Mzk0LDggKzE1MzkwLDggQEAKICAgICA9ICghTklMUCAody0+d2luZG93X2VuZF92 YWxpZCkKICAgICAgICAmJiAhY3VycmVudF9idWZmZXItPmNsaXBfY2hhbmdlZAogICAgICAg ICYmICFjdXJyZW50X2J1ZmZlci0+cHJldmVudF9yZWRpc3BsYXlfb3B0aW1pemF0aW9uc19w Ci0gICAgICAgJiYgWEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQpID49IE1PRElGRgotICAg ICAgICYmIFhGQVNUSU5UICh3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQpID49IE9WRVJMQVlf TU9ESUZGKTsKKyAgICAgICAmJiB3LT5sYXN0X21vZGlmaWVkID49IE1PRElGRgorICAgICAg ICYmIHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCA+PSBPVkVSTEFZX01PRElGRik7CiAKICAg LyogUnVuIHRoZSB3aW5kb3ctYm90dG9tLWNoYW5nZS1mdW5jdGlvbnMKICAgICAgaWYgaXQg aXMgcG9zc2libGUgdGhhdCB0aGUgdGV4dCBvbiB0aGUgc2NyZWVuIGhhcyBjaGFuZ2VkCkBA IC0xNTQxNyw4ICsxNTQxMyw4IEBACiAgIGJ1ZmZlcl91bmNoYW5nZWRfcAogICAgID0gKCFO SUxQICh3LT53aW5kb3dfZW5kX3ZhbGlkKQogICAgICAgICYmICFjdXJyZW50X2J1ZmZlci0+ Y2xpcF9jaGFuZ2VkCi0gICAgICAgJiYgWEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQpID49 IE1PRElGRgotICAgICAgICYmIFhGQVNUSU5UICh3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQp ID49IE9WRVJMQVlfTU9ESUZGKTsKKyAgICAgICAmJiB3LT5sYXN0X21vZGlmaWVkID49IE1P RElGRgorICAgICAgICYmIHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCA+PSBPVkVSTEFZX01P RElGRik7CiAKICAgLyogV2hlbiB3aW5kb3dzX29yX2J1ZmZlcnNfY2hhbmdlZCBpcyBub24t emVybywgd2UgY2FuJ3QgcmVseSBvbgogICAgICB0aGUgd2luZG93IGVuZCBiZWluZyB2YWxp ZCwgc28gc2V0IGl0IHRvIG5pbCB0aGVyZS4gICovCkBAIC0xNTQ0Myw5ICsxNTQzOSw5IEBA CiAgIGlmICghTklMUCAody0+Y29sdW1uX251bWJlcl9kaXNwbGF5ZWQpCiAgICAgICAvKiBU aGlzIGFsdGVybmF0aXZlIHF1aWNrbHkgaWRlbnRpZmllcyBhIGNvbW1vbiBjYXNlCiAJIHdo ZXJlIG5vIGNoYW5nZSBpcyBuZWVkZWQuICAqLwotICAgICAgJiYgIShQVCA9PSBYRkFTVElO VCAody0+bGFzdF9wb2ludCkKLQkgICAmJiBYRkFTVElOVCAody0+bGFzdF9tb2RpZmllZCkg Pj0gTU9ESUZGCi0JICAgJiYgWEZBU1RJTlQgKHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCkg Pj0gT1ZFUkxBWV9NT0RJRkYpCisgICAgICAmJiAhKFBUID09IHctPmxhc3RfcG9pbnQKKwkg ICAmJiB3LT5sYXN0X21vZGlmaWVkID49IE1PRElGRgorCSAgICYmIHctPmxhc3Rfb3Zlcmxh eV9tb2RpZmllZCA+PSBPVkVSTEFZX01PRElGRikKICAgICAgICYmIChYRkFTVElOVCAody0+ Y29sdW1uX251bWJlcl9kaXNwbGF5ZWQpICE9IGN1cnJlbnRfY29sdW1uICgpKSkKICAgICB1 cGRhdGVfbW9kZV9saW5lID0gMTsKIApAQCAtMTU1NjEsOCArMTU1NTcsOCBAQAogCSAgc3Rh cnRwID0gcnVuX3dpbmRvd19zY3JvbGxfZnVuY3Rpb25zICh3aW5kb3csIHN0YXJ0cCk7CiAJ fQogCi0gICAgICB3LT5sYXN0X21vZGlmaWVkID0gbWFrZV9udW1iZXIgKDApOwotICAgICAg dy0+bGFzdF9vdmVybGF5X21vZGlmaWVkID0gbWFrZV9udW1iZXIgKDApOworICAgICAgdy0+ bGFzdF9tb2RpZmllZCA9IDA7CisgICAgICB3LT5sYXN0X292ZXJsYXlfbW9kaWZpZWQgPSAw OwogICAgICAgaWYgKENIQVJQT1MgKHN0YXJ0cCkgPCBCRUdWKQogCVNFVF9URVhUX1BPUyAo c3RhcnRwLCBCRUdWLCBCRUdWX0JZVEUpOwogICAgICAgZWxzZSBpZiAoQ0hBUlBPUyAoc3Rh cnRwKSA+IFpWKQpAQCAtMTU2ODcsOCArMTU2ODMsOCBAQAogCSAgICYmIChDSEFSUE9TIChz dGFydHApIDwgWlYKIAkgICAgICAgLyogQXZvaWQgc3RhcnRpbmcgYXQgZW5kIG9mIGJ1ZmZl ci4gICovCiAJICAgICAgIHx8IENIQVJQT1MgKHN0YXJ0cCkgPT0gQkVHVgotCSAgICAgICB8 fCAoWEZBU1RJTlQgKHctPmxhc3RfbW9kaWZpZWQpID49IE1PRElGRgotCQkgICAmJiBYRkFT VElOVCAody0+bGFzdF9vdmVybGF5X21vZGlmaWVkKSA+PSBPVkVSTEFZX01PRElGRikpKQor CSAgICAgICB8fCAody0+bGFzdF9tb2RpZmllZCA+PSBNT0RJRkYKKwkJICAgJiYgdy0+bGFz dF9vdmVybGF5X21vZGlmaWVkID49IE9WRVJMQVlfTU9ESUZGKSkpCiAgICAgewogICAgICAg aW50IGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDY7CiAKQEAgLTE1Nzc1LDggKzE1NzcxLDggQEAK IAogIHRyeV90b19zY3JvbGw6CiAKLSAgdy0+bGFzdF9tb2RpZmllZCA9IG1ha2VfbnVtYmVy ICgwKTsKLSAgdy0+bGFzdF9vdmVybGF5X21vZGlmaWVkID0gbWFrZV9udW1iZXIgKDApOwor ICB3LT5sYXN0X21vZGlmaWVkID0gMDsKKyAgdy0+bGFzdF9vdmVybGF5X21vZGlmaWVkID0g MDsKIAogICAvKiBSZWRpc3BsYXkgdGhlIG1vZGUgbGluZS4gIFNlbGVjdCB0aGUgYnVmZmVy IHByb3Blcmx5IGZvciB0aGF0LiAgKi8KICAgaWYgKCF1cGRhdGVfbW9kZV9saW5lKQpAQCAt MTcxMzUsNyArMTcxMzEsNyBAQAogICAgIEdJVkVfVVAgKDUpOwogCiAgIC8qIEFub3RoZXIg d2F5IHRvIHByZXZlbnQgcmVkaXNwbGF5IG9wdGltaXphdGlvbnMuICAqLwotICBpZiAoWEZB U1RJTlQgKHctPmxhc3RfbW9kaWZpZWQpID09IDApCisgIGlmICh3LT5sYXN0X21vZGlmaWVk ID09IDApCiAgICAgR0lWRV9VUCAoNik7CiAKICAgLyogVmVyaWZ5IHRoYXQgd2luZG93IGlz IG5vdCBoc2Nyb2xsZWQuICAqLwpAQCAtMjc0MTIsOCArMjc0MDgsOCBAQAogICBiID0gWEJV RkZFUiAody0+YnVmZmVyKTsKICAgaWYgKHBhcnQgPT0gT05fVEVYVAogICAgICAgJiYgRVEg KHctPndpbmRvd19lbmRfdmFsaWQsIHctPmJ1ZmZlcikKLSAgICAgICYmIFhGQVNUSU5UICh3 LT5sYXN0X21vZGlmaWVkKSA9PSBCVUZfTU9ESUZGIChiKQotICAgICAgJiYgWEZBU1RJTlQg KHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCkgPT0gQlVGX09WRVJMQVlfTU9ESUZGIChiKSkK KyAgICAgICYmIHctPmxhc3RfbW9kaWZpZWQgPT0gQlVGX01PRElGRiAoYikKKyAgICAgICYm IHctPmxhc3Rfb3ZlcmxheV9tb2RpZmllZCA9PSBCVUZfT1ZFUkxBWV9NT0RJRkYgKGIpKQog ICAgIHsKICAgICAgIGludCBocG9zLCB2cG9zLCBkeCwgZHksIGFyZWEgPSBMQVNUX0FSRUE7 CiAgICAgICBwdHJkaWZmX3QgcG9zOwoK --------------080400010506040603000106--