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: [RFC, PATCH] shrink struct vectorlike_header #2 Date: Tue, 06 Nov 2012 21:09:28 +0400 Message-ID: <50994448.6020602@yandex.ru> References: <50766A2C.8070705@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080408020207050008090007" X-Trace: ger.gmane.org 1352221793 19494 80.91.229.3 (6 Nov 2012 17:09:53 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 6 Nov 2012 17:09:53 +0000 (UTC) Cc: Stefan Monnier To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Nov 06 18:10:03 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 1TVmf2-0000MC-LX for ged-emacs-devel@m.gmane.org; Tue, 06 Nov 2012 18:10:01 +0100 Original-Received: from localhost ([::1]:60035 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TVmet-0002FK-IP for ged-emacs-devel@m.gmane.org; Tue, 06 Nov 2012 12:09:51 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:34706) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TVmeo-0002EY-7y for emacs-devel@gnu.org; Tue, 06 Nov 2012 12:09:49 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TVmek-0006aq-Gu for emacs-devel@gnu.org; Tue, 06 Nov 2012 12:09:46 -0500 Original-Received: from forward20.mail.yandex.net ([95.108.253.145]:48776) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TVmej-0006Yy-Cl for emacs-devel@gnu.org; Tue, 06 Nov 2012 12:09:42 -0500 Original-Received: from smtp17.mail.yandex.net (smtp17.mail.yandex.net [95.108.252.17]) by forward20.mail.yandex.net (Yandex) with ESMTP id 2380F10403D4; Tue, 6 Nov 2012 21:09:14 +0400 (MSK) Original-Received: from smtp17.mail.yandex.net (localhost [127.0.0.1]) by smtp17.mail.yandex.net (Yandex) with ESMTP id ED79A19000EF; Tue, 6 Nov 2012 21:09:13 +0400 (MSK) Original-Received: from unknown (unknown [37.139.80.10]) by smtp17.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 9DKCiREN-9DKO3BcL; Tue, 6 Nov 2012 21:09:13 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1352221753; bh=yrPWvKFmk9rjXEPITvevM4KFczDF7qXMkS+20JPANRY=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=NP5dHkfeplFE6SlkFt+dkqCr+ieXMJN1SRl5lQ+oZTvmp4oQnYaB2DrkSww9uuLhw mpGwdy2Ol836OoOjkUMPn96n9V6dBD0JOGiUMq3TowUrAoXX0TrcR7ds6Yq1CgkMU8 Fh/msOuAQmI5KH1au9jcDTVvGcpd3umjP36OuGYU= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121026 Thunderbird/16.0.2 In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 95.108.253.145 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:154699 Archived-At: This is a multi-part message in MIME format. --------------080408020207050008090007 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Round #2 of http://lists.gnu.org/archive/html/emacs-devel/2012-10/msg00483.html, re-applied on top of trunk revision 110817. Dmitry --------------080408020207050008090007 Content-Type: text/plain; charset=UTF-8; name="shrink_vectorlike_header_2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="shrink_vectorlike_header_2.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0x MC0xOSAwNjo0MzoxMiArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0xMS0wNiAxNzowNDo0 OCArMDAwMApAQCAtMjA0MCw3ICsyMDQwLDcgQEAKICAgdmFsID0gRm1ha2VfdmVjdG9yICht YWtlX251bWJlciAobGVuZ3RoX2luX2VsdHMgKyBleHRyYV9ib29sX2VsdHMpLCBRbmlsKTsK IAogICAvKiBObyBMaXNwX09iamVjdCB0byB0cmFjZSBpbiB0aGVyZS4gICovCi0gIFhTRVRQ VkVDVFlQRVNJWkUgKFhWRUNUT1IgKHZhbCksIFBWRUNfQk9PTF9WRUNUT1IsIDApOworICBY U0VUUFZFQ1RZUEVTSVpFIChYVkVDVE9SICh2YWwpLCBQVkVDX0JPT0xfVkVDVE9SLCAwLCAw KTsKIAogICBwID0gWEJPT0xfVkVDVE9SICh2YWwpOwogICBwLT5zaXplID0gWEZBU1RJTlQg KGxlbmd0aCk7CkBAIC0yNjE5LDE5ICsyNjE5LDQ0IEBACiAKICNkZWZpbmUgVklOREVYKG5i eXRlcykgKCgobmJ5dGVzKSAtIFZCTE9DS19CWVRFU19NSU4pIC8gcm91bmR1cF9zaXplKQog CisvKiBXaGVuIFYgaXMgb24gdGhlIGZyZWUgbGlzdCwgZmlyc3Qgd29yZCBhZnRlciBoZWFk ZXIgaXMKKyAgIHVzZWQgYXMgYSBwb2ludGVyIHRvIG5leHQgdmVjdG9yIG9uIHRoZSBmcmVl IGxpc3QuICAqLworCisjZGVmaW5lIE5FWFRfSU5fRlJFRV9MSVNUKHYpCQkJCVwKKyAgKCoo c3RydWN0IExpc3BfVmVjdG9yICoqKSgoY2hhciAqKSB2ICsgaGVhZGVyX3NpemUpKQorCiAv KiBDb21tb24gc2hvcnRjdXQgdG8gc2V0dXAgdmVjdG9yIG9uIGEgZnJlZSBsaXN0LiAgKi8K IAotI2RlZmluZSBTRVRVUF9PTl9GUkVFX0xJU1QodiwgbmJ5dGVzLCBpbmRleCkJCQlcCi0g IGRvIHsJCQkJCQkJCVwKLSAgICBYU0VUUFZFQ1RZUEVTSVpFICh2LCBQVkVDX0ZSRUUsIG5i eXRlcyk7CQkJXAotICAgIGVhc3NlcnQgKChuYnl0ZXMpICUgcm91bmR1cF9zaXplID09IDAp OwkJCVwKLSAgICAoaW5kZXgpID0gVklOREVYIChuYnl0ZXMpOwkJCQkJXAotICAgIGVhc3Nl cnQgKChpbmRleCkgPCBWRUNUT1JfTUFYX0ZSRUVfTElTVF9JTkRFWCk7CQlcCi0gICAgKHYp LT5oZWFkZXIubmV4dC52ZWN0b3IgPSB2ZWN0b3JfZnJlZV9saXN0c1tpbmRleF07CQlcCi0g ICAgdmVjdG9yX2ZyZWVfbGlzdHNbaW5kZXhdID0gKHYpOwkJCQlcCi0gICAgdG90YWxfZnJl ZV92ZWN0b3Jfc2xvdHMgKz0gKG5ieXRlcykgLyB3b3JkX3NpemU7CQlcCisjZGVmaW5lIFNF VFVQX09OX0ZSRUVfTElTVCh2LCBuYnl0ZXMsIHRtcCkJCVwKKyAgZG8gewkJCQkJCQlcCisg ICAgKHRtcCkgPSAoKG5ieXRlcyAtIGhlYWRlcl9zaXplKSAvIHdvcmRfc2l6ZSk7CVwKKyAg ICBYU0VUUFZFQ1RZUEVTSVpFICh2LCBQVkVDX0ZSRUUsIDAsICh0bXApKTsJCVwKKyAgICBl YXNzZXJ0ICgobmJ5dGVzKSAlIHJvdW5kdXBfc2l6ZSA9PSAwKTsJCVwKKyAgICAodG1wKSA9 IFZJTkRFWCAobmJ5dGVzKTsJCQkJXAorICAgIGVhc3NlcnQgKCh0bXApIDwgVkVDVE9SX01B WF9GUkVFX0xJU1RfSU5ERVgpOwlcCisgICAgTkVYVF9JTl9GUkVFX0xJU1QgKHYpID0gdmVj dG9yX2ZyZWVfbGlzdHNbdG1wXTsJXAorICAgIHZlY3Rvcl9mcmVlX2xpc3RzW3RtcF0gPSAo dik7CQkJXAorICAgIHRvdGFsX2ZyZWVfdmVjdG9yX3Nsb3RzICs9IChuYnl0ZXMpIC8gd29y ZF9zaXplOwlcCiAgIH0gd2hpbGUgKDApCiAKKy8qIFRoaXMgaW50ZXJuYWwgdHlwZSBpcyB1 c2VkIHRvIG1haW50YWluIHRoZSBsaXN0IG9mIGxhcmdlIHZlY3RvcnMKKyAgIHdoaWNoIGFy ZSBhbGxvY2F0ZWQgYXQgdGhlaXIgb3duLCBlLmcuIG91dHNpZGUgb2YgdmVjdG9yIGJsb2Nr cy4gICovCisKK3N0cnVjdCBsYXJnZV92ZWN0b3IKK3sKKyAgdW5pb24geworICAgIHN0cnVj dCBsYXJnZV92ZWN0b3IgKnZlY3RvcjsKKyNpZiBVU0VfTFNCX1RBRworICAgIC8qIFdlIG5l ZWQgdG8gbWFpbnRhaW4gUk9VTkRVUF9TSVpFIGFsaWdubWVudCBmb3IgdGhlIHZlY3RvciBt ZW1iZXIuICAqLworICAgIHVuc2lnbmVkIGNoYXIgY1t2cm91bmR1cCAoc2l6ZW9mICh2b2lk ICopKV07CisjZW5kaWYKKyAgfSBuZXh0OworICBzdHJ1Y3QgTGlzcF9WZWN0b3IgdjsKK307 CisKKy8qIFRoaXMgaW50ZXJuYWwgdHlwZSBpcyB1c2VkIHRvIG1haW50YWluIGFuIHVuZGVy bHlpbmcgc3RvcmFnZQorICAgZm9yIHNtYWxsIHZlY3RvcnMuICAqLworCiBzdHJ1Y3QgdmVj dG9yX2Jsb2NrCiB7CiAgIGNoYXIgZGF0YVtWRUNUT1JfQkxPQ0tfQllURVNdOwpAQCAtMjY0 OSw3ICsyNjc0LDcgQEAKIAogLyogU2luZ2x5LWxpbmtlZCBsaXN0IG9mIGxhcmdlIHZlY3Rv cnMuICAqLwogCi1zdGF0aWMgc3RydWN0IExpc3BfVmVjdG9yICpsYXJnZV92ZWN0b3JzOwor c3RhdGljIHN0cnVjdCBsYXJnZV92ZWN0b3IgKmxhcmdlX3ZlY3RvcnM7CiAKIC8qIFRoZSBv bmx5IHZlY3RvciB3aXRoIDAgc2xvdHMsIGFsbG9jYXRlZCBmcm9tIHB1cmUgc3BhY2UuICAq LwogCkBAIC0yNzA2LDggKzI3MzEsNyBAQAogICBpZiAodmVjdG9yX2ZyZWVfbGlzdHNbaW5k ZXhdKQogICAgIHsKICAgICAgIHZlY3RvciA9IHZlY3Rvcl9mcmVlX2xpc3RzW2luZGV4XTsK LSAgICAgIHZlY3Rvcl9mcmVlX2xpc3RzW2luZGV4XSA9IHZlY3Rvci0+aGVhZGVyLm5leHQu dmVjdG9yOwotICAgICAgdmVjdG9yLT5oZWFkZXIubmV4dC5uYnl0ZXMgPSBuYnl0ZXM7Cisg ICAgICB2ZWN0b3JfZnJlZV9saXN0c1tpbmRleF0gPSBORVhUX0lOX0ZSRUVfTElTVCAodmVj dG9yKTsKICAgICAgIHRvdGFsX2ZyZWVfdmVjdG9yX3Nsb3RzIC09IG5ieXRlcyAvIHdvcmRf c2l6ZTsKICAgICAgIHJldHVybiB2ZWN0b3I7CiAgICAgfQpAQCAtMjcyMSw4ICsyNzQ1LDcg QEAKICAgICAgIHsKIAkvKiBUaGlzIHZlY3RvciBpcyBsYXJnZXIgdGhhbiByZXF1ZXN0ZWQu ICAqLwogCXZlY3RvciA9IHZlY3Rvcl9mcmVlX2xpc3RzW2luZGV4XTsKLQl2ZWN0b3JfZnJl ZV9saXN0c1tpbmRleF0gPSB2ZWN0b3ItPmhlYWRlci5uZXh0LnZlY3RvcjsKLQl2ZWN0b3It PmhlYWRlci5uZXh0Lm5ieXRlcyA9IG5ieXRlczsKKwl2ZWN0b3JfZnJlZV9saXN0c1tpbmRl eF0gPSBORVhUX0lOX0ZSRUVfTElTVCAodmVjdG9yKTsKIAl0b3RhbF9mcmVlX3ZlY3Rvcl9z bG90cyAtPSBuYnl0ZXMgLyB3b3JkX3NpemU7CiAKIAkvKiBFeGNlc3MgYnl0ZXMgYXJlIHVz ZWQgZm9yIHRoZSBzbWFsbGVyIHZlY3RvciwKQEAgLTI3MzksNyArMjc2Miw2IEBACiAKICAg LyogTmV3IHZlY3RvciB3aWxsIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBibG9jay4g ICovCiAgIHZlY3RvciA9IChzdHJ1Y3QgTGlzcF9WZWN0b3IgKikgYmxvY2stPmRhdGE7Ci0g IHZlY3Rvci0+aGVhZGVyLm5leHQubmJ5dGVzID0gbmJ5dGVzOwogCiAgIC8qIElmIHRoZSBy ZXN0IG9mIHNwYWNlIGZyb20gdGhpcyBibG9jayBpcyBsYXJnZSBlbm91Z2gKICAgICAgZm9y IG9uZS1zbG90IHZlY3RvciBhdCBsZWFzdCwgc2V0IHVwIGl0IG9uIGEgZnJlZSBsaXN0LiAg Ki8KQEAgLTI3NTksMTUgKzI3ODEsMzAgQEAKICAgKChjaGFyICopICh2ZWN0b3IpIDw9IChi bG9jayktPmRhdGEJCVwKICAgICsgVkVDVE9SX0JMT0NLX0JZVEVTIC0gVkJMT0NLX0JZVEVT X01JTikKIAotLyogTnVtYmVyIG9mIGJ5dGVzIHVzZWQgYnkgdmVjdG9yLWJsb2NrLWFsbG9j YXRlZCBvYmplY3QuICBUaGlzIGlzIHRoZSBvbmx5Ci0gICBwbGFjZSB3aGVyZSB3ZSBhY3R1 YWxseSB1c2UgdGhlIGBuYnl0ZXMnIGZpZWxkIG9mIHRoZSB2ZWN0b3ItaGVhZGVyLgotICAg SS5lLiB3ZSBjb3VsZCBnZXQgcmlkIG9mIHRoZSBgbmJ5dGVzJyBmaWVsZCBieSBjb21wdXRp bmcgaXQgYmFzZWQgb24gdGhlCi0gICB2ZWN0b3ItdHlwZS4gICovCi0KLSNkZWZpbmUgUFNF VURPVkVDVE9SX05CWVRFUyh2ZWN0b3IpIFwKLSAgKFBTRVVET1ZFQ1RPUl9UWVBFUCAoJnZl Y3Rvci0+aGVhZGVyLCBQVkVDX0ZSRUUpCVwKLSAgID8gdmVjdG9yLT5oZWFkZXIuc2l6ZSAm IFBTRVVET1ZFQ1RPUl9TSVpFX01BU0sJXAotICAgOiB2ZWN0b3ItPmhlYWRlci5uZXh0Lm5i eXRlcykKKy8qIFJldHVybiB0aGUgbWVtb3J5IGZvb3RwcmludCBvZiBWIGluIGJ5dGVzLiAg Ki8KKworc3RhdGljIHB0cmRpZmZfdAordmVjdG9yX25ieXRlcyAoc3RydWN0IExpc3BfVmVj dG9yICp2KQoreworICBwdHJkaWZmX3Qgc2l6ZSA9IHYtPmhlYWRlci5zaXplICYgfkFSUkFZ X01BUktfRkxBRzsKKworICBpZiAoc2l6ZSAmIFBTRVVET1ZFQ1RPUl9GTEFHKQorICAgIHsK KyAgICAgIGlmIChQU0VVRE9WRUNUT1JfVFlQRVAgKCZ2LT5oZWFkZXIsIFBWRUNfQk9PTF9W RUNUT1IpKQorCXNpemUgPSAoYm9vbF9oZWFkZXJfc2l6ZQorCQkrICgoKHN0cnVjdCBMaXNw X0Jvb2xfVmVjdG9yICopIHYpLT5zaXplCisJCSAgICsgQk9PTF9WRUNUT1JfQklUU19QRVJf Q0hBUiAtIDEpCisJCS8gQk9PTF9WRUNUT1JfQklUU19QRVJfQ0hBUik7CisgICAgICBlbHNl CisJc2l6ZSA9IChoZWFkZXJfc2l6ZQorCQkrICgoc2l6ZSAmIFBTRVVET1ZFQ1RPUl9TSVpF X01BU0spCisJCSAgICsgKChzaXplICYgUFNFVURPVkVDVE9SX1JFU1RfTUFTSykKKwkJICAg ICAgPj4gUFNFVURPVkVDVE9SX1NJWkVfQklUUykpICogd29yZF9zaXplKTsKKyAgICB9Cisg IGVsc2UKKyAgICBzaXplID0gaGVhZGVyX3NpemUgKyBzaXplICogd29yZF9zaXplOworICBy ZXR1cm4gdnJvdW5kdXAgKHNpemUpOworfQogCiAvKiBSZWNsYWltIHNwYWNlIHVzZWQgYnkg dW5tYXJrZWQgdmVjdG9ycy4gICovCiAKQEAgLTI3NzUsNyArMjgxMiw4IEBACiBzd2VlcF92 ZWN0b3JzICh2b2lkKQogewogICBzdHJ1Y3QgdmVjdG9yX2Jsb2NrICpibG9jayA9IHZlY3Rv cl9ibG9ja3MsICoqYnByZXYgPSAmdmVjdG9yX2Jsb2NrczsKLSAgc3RydWN0IExpc3BfVmVj dG9yICp2ZWN0b3IsICpuZXh0LCAqKnZwcmV2ID0gJmxhcmdlX3ZlY3RvcnM7CisgIHN0cnVj dCBsYXJnZV92ZWN0b3IgKmx2LCAqKmx2cHJldiA9ICZsYXJnZV92ZWN0b3JzOworICBzdHJ1 Y3QgTGlzcF9WZWN0b3IgKnZlY3RvciwgKm5leHQ7CiAKICAgdG90YWxfdmVjdG9ycyA9IHRv dGFsX3ZlY3Rvcl9zbG90cyA9IHRvdGFsX2ZyZWVfdmVjdG9yX3Nsb3RzID0gMDsKICAgbWVt c2V0ICh2ZWN0b3JfZnJlZV9saXN0cywgMCwgc2l6ZW9mICh2ZWN0b3JfZnJlZV9saXN0cykp OwpAQCAtMjc4NSw2ICsyODIzLDcgQEAKICAgZm9yIChibG9jayA9IHZlY3Rvcl9ibG9ja3M7 IGJsb2NrOyBibG9jayA9ICpicHJldikKICAgICB7CiAgICAgICBib29sIGZyZWVfdGhpc19i bG9jayA9IDA7CisgICAgICBwdHJkaWZmX3QgbmJ5dGVzOwogCiAgICAgICBmb3IgKHZlY3Rv ciA9IChzdHJ1Y3QgTGlzcF9WZWN0b3IgKikgYmxvY2stPmRhdGE7CiAJICAgVkVDVE9SX0lO X0JMT0NLICh2ZWN0b3IsIGJsb2NrKTsgdmVjdG9yID0gbmV4dCkKQEAgLTI3OTMsMTQgKzI4 MzIsMTYgQEAKIAkgICAgewogCSAgICAgIFZFQ1RPUl9VTk1BUksgKHZlY3Rvcik7CiAJICAg ICAgdG90YWxfdmVjdG9ycysrOwotCSAgICAgIHRvdGFsX3ZlY3Rvcl9zbG90cyArPSB2ZWN0 b3ItPmhlYWRlci5uZXh0Lm5ieXRlcyAvIHdvcmRfc2l6ZTsKLQkgICAgICBuZXh0ID0gQURW QU5DRSAodmVjdG9yLCB2ZWN0b3ItPmhlYWRlci5uZXh0Lm5ieXRlcyk7CisJICAgICAgbmJ5 dGVzID0gdmVjdG9yX25ieXRlcyAodmVjdG9yKTsKKwkgICAgICB0b3RhbF92ZWN0b3Jfc2xv dHMgKz0gbmJ5dGVzIC8gd29yZF9zaXplOworCSAgICAgIG5leHQgPSBBRFZBTkNFICh2ZWN0 b3IsIG5ieXRlcyk7CiAJICAgIH0KIAkgIGVsc2UKIAkgICAgewotCSAgICAgIHB0cmRpZmZf dCBuYnl0ZXMgPSBQU0VVRE9WRUNUT1JfTkJZVEVTICh2ZWN0b3IpOwotCSAgICAgIHB0cmRp ZmZfdCB0b3RhbF9ieXRlcyA9IG5ieXRlczsKKwkgICAgICBwdHJkaWZmX3QgdG90YWxfYnl0 ZXM7CiAKKwkgICAgICBuYnl0ZXMgPSB2ZWN0b3JfbmJ5dGVzICh2ZWN0b3IpOworCSAgICAg IHRvdGFsX2J5dGVzID0gbmJ5dGVzOwogCSAgICAgIG5leHQgPSBBRFZBTkNFICh2ZWN0b3Is IG5ieXRlcyk7CiAKIAkgICAgICAvKiBXaGlsZSBORVhUIGlzIG5vdCBtYXJrZWQsIHRyeSB0 byBjb2FsZXNjZSB3aXRoIFZFQ1RPUiwKQEAgLTI4MTAsNyArMjg1MSw3IEBACiAJCXsKIAkJ ICBpZiAoVkVDVE9SX01BUktFRF9QIChuZXh0KSkKIAkJICAgIGJyZWFrOwotCQkgIG5ieXRl cyA9IFBTRVVET1ZFQ1RPUl9OQllURVMgKG5leHQpOworCQkgIG5ieXRlcyA9IHZlY3Rvcl9u Ynl0ZXMgKG5leHQpOwogCQkgIHRvdGFsX2J5dGVzICs9IG5ieXRlczsKIAkJICBuZXh0ID0g QURWQU5DRSAobmV4dCwgbmJ5dGVzKTsKIAkJfQpAQCAtMjg0NCw4ICsyODg1LDkgQEAKIAog ICAvKiBTd2VlcCBsYXJnZSB2ZWN0b3JzLiAgKi8KIAotICBmb3IgKHZlY3RvciA9IGxhcmdl X3ZlY3RvcnM7IHZlY3RvcjsgdmVjdG9yID0gKnZwcmV2KQorICBmb3IgKGx2ID0gbGFyZ2Vf dmVjdG9yczsgbHY7IGx2ID0gKmx2cHJldikKICAgICB7CisgICAgICB2ZWN0b3IgPSAmbHYt PnY7CiAgICAgICBpZiAoVkVDVE9SX01BUktFRF9QICh2ZWN0b3IpKQogCXsKIAkgIFZFQ1RP Ul9VTk1BUksgKHZlY3Rvcik7CkBAIC0yODY3LDEyICsyOTA5LDEyIEBACiAJICBlbHNlCiAJ ICAgIHRvdGFsX3ZlY3Rvcl9zbG90cwogCSAgICAgICs9IGhlYWRlcl9zaXplIC8gd29yZF9z aXplICsgdmVjdG9yLT5oZWFkZXIuc2l6ZTsKLQkgIHZwcmV2ID0gJnZlY3Rvci0+aGVhZGVy Lm5leHQudmVjdG9yOworCSAgbHZwcmV2ID0gJmx2LT5uZXh0LnZlY3RvcjsKIAl9CiAgICAg ICBlbHNlCiAJewotCSAgKnZwcmV2ID0gdmVjdG9yLT5oZWFkZXIubmV4dC52ZWN0b3I7Ci0J ICBsaXNwX2ZyZWUgKHZlY3Rvcik7CisJICAqbHZwcmV2ID0gbHYtPm5leHQudmVjdG9yOwor CSAgbGlzcF9mcmVlIChsdik7CiAJfQogICAgIH0KIH0KQEAgLTI5MDQsOSArMjk0NiwxMiBA QAogCXAgPSBhbGxvY2F0ZV92ZWN0b3JfZnJvbV9ibG9jayAodnJvdW5kdXAgKG5ieXRlcykp OwogICAgICAgZWxzZQogCXsKLQkgIHAgPSBsaXNwX21hbGxvYyAobmJ5dGVzLCBNRU1fVFlQ RV9WRUNUT1JMSUtFKTsKLQkgIHAtPmhlYWRlci5uZXh0LnZlY3RvciA9IGxhcmdlX3ZlY3Rv cnM7Ci0JICBsYXJnZV92ZWN0b3JzID0gcDsKKwkgIHN0cnVjdCBsYXJnZV92ZWN0b3IgKmx2 CisJICAgID0gbGlzcF9tYWxsb2MgKHNpemVvZiAoKmx2KSArIChsZW4gLSAxKSAqIHdvcmRf c2l6ZSwKKwkJCSAgIE1FTV9UWVBFX1ZFQ1RPUkxJS0UpOworCSAgbHYtPm5leHQudmVjdG9y ID0gbGFyZ2VfdmVjdG9yczsKKwkgIGxhcmdlX3ZlY3RvcnMgPSBsdjsKKwkgIHAgPSAmbHYt PnY7CiAJfQogCiAjaWZkZWYgRE9VR19MRUFfTUFMTE9DCkBAIC0yOTQzLDE2ICsyOTg4LDIx IEBACiAvKiBBbGxvY2F0ZSBvdGhlciB2ZWN0b3ItbGlrZSBzdHJ1Y3R1cmVzLiAgKi8KIAog c3RydWN0IExpc3BfVmVjdG9yICoKLWFsbG9jYXRlX3BzZXVkb3ZlY3RvciAoaW50IG1lbWxl biwgaW50IGxpc3BsZW4sIGludCB0YWcpCithbGxvY2F0ZV9wc2V1ZG92ZWN0b3IgKGludCBt ZW1sZW4sIGludCBsaXNwbGVuLCBlbnVtIHB2ZWNfdHlwZSB0YWcpCiB7CiAgIHN0cnVjdCBM aXNwX1ZlY3RvciAqdiA9IGFsbG9jYXRlX3ZlY3Rvcmxpa2UgKG1lbWxlbik7CiAgIGludCBp OwogCisgIC8qIENhdGNoIGJvZ3VzIHZhbHVlcy4gICovCisgIGVhc3NlcnQgKHRhZyA8PSBQ VkVDX0ZPTlQpOworICBlYXNzZXJ0IChtZW1sZW4gLSBsaXNwbGVuIDw9ICgxIDw8IFBTRVVE T1ZFQ1RPUl9SRVNUX0JJVFMpIC0gMSk7CisgIGVhc3NlcnQgKGxpc3BsZW4gPD0gKDEgPDwg UFNFVURPVkVDVE9SX1NJWkVfQklUUykgLSAxKTsKKwogICAvKiBPbmx5IHRoZSBmaXJzdCBs aXNwbGVuIHNsb3RzIHdpbGwgYmUgdHJhY2VkIG5vcm1hbGx5IGJ5IHRoZSBHQy4gICovCiAg IGZvciAoaSA9IDA7IGkgPCBsaXNwbGVuOyArK2kpCiAgICAgdi0+Y29udGVudHNbaV0gPSBR bmlsOwogCi0gIFhTRVRQVkVDVFlQRVNJWkUgKHYsIHRhZywgbGlzcGxlbik7CisgIFhTRVRQ VkVDVFlQRVNJWkUgKHYsIHRhZywgbGlzcGxlbiwgbWVtbGVuIC0gbGlzcGxlbik7CiAgIHJl dHVybiB2OwogfQogCkBAIC0yOTYxLDEwICszMDExLDkgQEAKIHsKICAgc3RydWN0IGJ1ZmZl ciAqYiA9IGxpc3BfbWFsbG9jIChzaXplb2YgKmIsIE1FTV9UWVBFX0JVRkZFUik7CiAKLSAg WFNFVFBWRUNUWVBFU0laRSAoYiwgUFZFQ19CVUZGRVIsIChvZmZzZXRvZiAoc3RydWN0IGJ1 ZmZlciwgb3duX3RleHQpCi0JCQkJICAgICAtIGhlYWRlcl9zaXplKSAvIHdvcmRfc2l6ZSk7 CisgIEJVRkZFUl9QVkVDX0lOSVQgKGIpOwogICAvKiBQdXQgQiBvbiB0aGUgY2hhaW4gb2Yg YWxsIGJ1ZmZlcnMgaW5jbHVkaW5nIGtpbGxlZCBvbmVzLiAgKi8KLSAgYi0+aGVhZGVyLm5l eHQuYnVmZmVyID0gYWxsX2J1ZmZlcnM7CisgIGItPm5leHQgPSBhbGxfYnVmZmVyczsKICAg YWxsX2J1ZmZlcnMgPSBiOwogICAvKiBOb3RlIHRoYXQgdGhlIHJlc3QgZmllbGRzIG9mIEIg YXJlIG5vdCBpbml0aWFsaXplZC4gICovCiAgIHJldHVybiBiOwpAQCAtNDA2OCwxNiArNDEx NywxNSBAQAogICAgICAgd2hpbGUgKFZFQ1RPUl9JTl9CTE9DSyAodmVjdG9yLCBibG9jaykK IAkgICAgICYmIHZlY3RvciA8PSAoc3RydWN0IExpc3BfVmVjdG9yICopIHApCiAJewotCSAg aWYgKFBTRVVET1ZFQ1RPUl9UWVBFUCAoJnZlY3Rvci0+aGVhZGVyLCBQVkVDX0ZSRUUpKQot CSAgICB2ZWN0b3IgPSBBRFZBTkNFICh2ZWN0b3IsICh2ZWN0b3ItPmhlYWRlci5zaXplCi0J CQkJICAgICAgICYgUFNFVURPVkVDVE9SX1NJWkVfTUFTSykpOwotCSAgZWxzZSBpZiAodmVj dG9yID09IHApCisJICBpZiAoIVBTRVVET1ZFQ1RPUl9UWVBFUCAoJnZlY3Rvci0+aGVhZGVy LCBQVkVDX0ZSRUUpICYmIHZlY3RvciA9PSBwKQogCSAgICByZXR1cm4gMTsKIAkgIGVsc2UK LQkgICAgdmVjdG9yID0gQURWQU5DRSAodmVjdG9yLCB2ZWN0b3ItPmhlYWRlci5uZXh0Lm5i eXRlcyk7CisJICAgIHZlY3RvciA9IEFEVkFOQ0UgKHZlY3RvciwgdmVjdG9yX25ieXRlcyAo dmVjdG9yKSk7CiAJfQogICAgIH0KLSAgZWxzZSBpZiAobS0+dHlwZSA9PSBNRU1fVFlQRV9W RUNUT1JMSUtFICYmIHAgPT0gbS0+c3RhcnQpCisgIGVsc2UgaWYgKG0tPnR5cGUgPT0gTUVN X1RZUEVfVkVDVE9STElLRQorCSAgICYmIChjaGFyICopIHAgPT0gKChjaGFyICopIG0tPnN0 YXJ0CisJCQkgICAgICsgb2Zmc2V0b2YgKHN0cnVjdCBsYXJnZV92ZWN0b3IsIHYpKSkKICAg ICAvKiBUaGlzIG1lbW9yeSBub2RlIGNvcnJlc3BvbmRzIHRvIGEgbGFyZ2UgdmVjdG9yLiAg Ki8KICAgICByZXR1cm4gMTsKICAgcmV0dXJuIDA7CkBAIC01Njg3LDcgKzU3MzUsNyBAQAog CiAJaWYgKHB0ci0+aGVhZGVyLnNpemUgJiBQU0VVRE9WRUNUT1JfRkxBRykKIAkgIHB2ZWN0 eXBlID0gKChwdHItPmhlYWRlci5zaXplICYgUFZFQ19UWVBFX01BU0spCi0JCSAgICAgID4+ IFBTRVVET1ZFQ1RPUl9TSVpFX0JJVFMpOworCQkgICAgICA+PiBQU0VVRE9WRUNUT1JfQVJF QV9CSVRTKTsKIAllbHNlCiAJICBwdmVjdHlwZSA9IFBWRUNfTk9STUFMX1ZFQ1RPUjsKIApA QCAtNjMxNyw3ICs2MzY1LDcgQEAKICAgICBmb3IgKGJ1ZmZlciA9IGFsbF9idWZmZXJzOyBi dWZmZXI7IGJ1ZmZlciA9ICpicHJldikKICAgICAgIGlmICghVkVDVE9SX01BUktFRF9QIChi dWZmZXIpKQogCXsKLQkgICpicHJldiA9IGJ1ZmZlci0+aGVhZGVyLm5leHQuYnVmZmVyOwor CSAgKmJwcmV2ID0gYnVmZmVyLT5uZXh0OwogCSAgbGlzcF9mcmVlIChidWZmZXIpOwogCX0K ICAgICAgIGVsc2UKQEAgLTYzMjYsNyArNjM3NCw3IEBACiAJICAvKiBEbyBub3QgdXNlIGJ1 ZmZlcl8oc2V0fGdldClfaW50ZXJ2YWxzIGhlcmUuICAqLwogCSAgYnVmZmVyLT50ZXh0LT5p bnRlcnZhbHMgPSBiYWxhbmNlX2ludGVydmFscyAoYnVmZmVyLT50ZXh0LT5pbnRlcnZhbHMp OwogCSAgdG90YWxfYnVmZmVycysrOwotCSAgYnByZXYgPSAmYnVmZmVyLT5oZWFkZXIubmV4 dC5idWZmZXI7CisJICBicHJldiA9ICZidWZmZXItPm5leHQ7CiAJfQogICB9CiAKCj09PSBt b2RpZmllZCBmaWxlICdzcmMvYnVmZmVyLmMnCi0tLSBzcmMvYnVmZmVyLmMJMjAxMi0xMS0w NiAxMzoyNjoyMCArMDAwMAorKysgc3JjL2J1ZmZlci5jCTIwMTItMTEtMDYgMTc6MDQ6NDgg KzAwMDAKQEAgLTUxMDYsMTEgKzUxMDYsNiBAQAogaW5pdF9idWZmZXJfb25jZSAodm9pZCkK IHsKICAgaW50IGlkeDsKLSAgLyogSWYgeW91IGFkZCwgcmVtb3ZlLCBvciByZW9yZGVyIExp c3BfT2JqZWN0cyBpbiBhIHN0cnVjdCBidWZmZXIsIG1ha2UKLSAgICAgc3VyZSB0aGF0IHRo aXMgaXMgc3RpbGwgY29ycmVjdC4gIE90aGVyd2lzZSwgbWFya192ZWN0b3JsaWtlIG1heSBu b3QKLSAgICAgdHJhY2UgYWxsIExpc3BfT2JqZWN0cyBpbiBidWZmZXJfZGVmYXVsdHMgYW5k IGJ1ZmZlcl9sb2NhbF9zeW1ib2xzLiAgKi8KLSAgY29uc3QgaW50IHB2ZWNzaXplCi0gICAg PSAob2Zmc2V0b2YgKHN0cnVjdCBidWZmZXIsIG93bl90ZXh0KSAtIGhlYWRlcl9zaXplKSAv IHdvcmRfc2l6ZTsKIAogICBtZW1zZXQgKGJ1ZmZlcl9wZXJtYW5lbnRfbG9jYWxfZmxhZ3Ms IDAsIHNpemVvZiBidWZmZXJfcGVybWFuZW50X2xvY2FsX2ZsYWdzKTsKIApAQCAtNTEzMyw4 ICs1MTI4LDggQEAKICAgLyogVGhpcyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQg bGV0J3MgbWFrZSB0aGVtIGluaXRpYWxpemVkLiAgKi8KICAgYnNldF9uYW1lICgmYnVmZmVy X2RlZmF1bHRzLCBidWlsZF9wdXJlX2Nfc3RyaW5nICgiICpidWZmZXItZGVmYXVsdHMqIikp OwogICBic2V0X25hbWUgKCZidWZmZXJfbG9jYWxfc3ltYm9scywgYnVpbGRfcHVyZV9jX3N0 cmluZyAoIiAqYnVmZmVyLWxvY2FsLXN5bWJvbHMqIikpOwotICBYU0VUUFZFQ1RZUEVTSVpF ICgmYnVmZmVyX2RlZmF1bHRzLCBQVkVDX0JVRkZFUiwgcHZlY3NpemUpOwotICBYU0VUUFZF Q1RZUEVTSVpFICgmYnVmZmVyX2xvY2FsX3N5bWJvbHMsIFBWRUNfQlVGRkVSLCBwdmVjc2l6 ZSk7CisgIEJVRkZFUl9QVkVDX0lOSVQgKCZidWZmZXJfZGVmYXVsdHMpOworICBCVUZGRVJf UFZFQ19JTklUICgmYnVmZmVyX2xvY2FsX3N5bWJvbHMpOwogCiAgIC8qIFNldCB1cCB0aGUg ZGVmYXVsdCB2YWx1ZXMgb2YgdmFyaW91cyBidWZmZXIgc2xvdHMuICAqLwogICAvKiBNdXN0 IGRvIHRoZXNlIGJlZm9yZSBtYWtpbmcgdGhlIGZpcnN0IGJ1ZmZlciEgKi8KCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMvYnVmZmVyLmgnCi0tLSBzcmMvYnVmZmVyLmgJMjAxMi0xMC0xNyAw NDo1ODoxNSArMDAwMAorKysgc3JjL2J1ZmZlci5oCTIwMTItMTEtMDYgMTc6MDQ6NDggKzAw MDAKQEAgLTQ4MiwxMSArNDgyLDYgQEAKIAogc3RydWN0IGJ1ZmZlcgogewotICAvKiBIRUFE RVIuTkVYVCBpcyB0aGUgbmV4dCBidWZmZXIsIGluIGNoYWluIG9mIGFsbCBidWZmZXJzLCBp bmNsdWRpbmcga2lsbGVkCi0gICAgIGJ1ZmZlcnMuICBUaGlzIGNoYWluLCBzdGFydGluZyBm cm9tIGFsbF9idWZmZXJzLCBpcyB1c2VkIG9ubHkgZm9yIGdhcmJhZ2UKLSAgICAgY29sbGVj dGlvbiwgaW4gb3JkZXIgdG8gY29sbGVjdCBraWxsZWQgYnVmZmVycyBwcm9wZXJseS4gIE5v dGUgdGhhdCBsYXJnZQotICAgICB2ZWN0b3JzIGFuZCBsYXJnZSBwc2V1ZG8tdmVjdG9yIG9i amVjdHMgYXJlIGFsbCBvbiBhbm90aGVyIGNoYWluIHN0YXJ0aW5nCi0gICAgIGZyb20gbGFy Z2VfdmVjdG9ycy4gICovCiAgIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciBoZWFkZXI7CiAK ICAgLyogVGhlIG5hbWUgb2YgdGhpcyBidWZmZXIuICAqLwpAQCAtNzUwLDYgKzc0NSw5IEBA CiAgICAgIEluIGFuIGluZGlyZWN0IGJ1ZmZlciwgdGhpcyBpcyB0aGUgb3duX3RleHQgZmll bGQgb2YgYW5vdGhlciBidWZmZXIuICAqLwogICBzdHJ1Y3QgYnVmZmVyX3RleHQgKnRleHQ7 CiAKKyAgLyogTmV4dCBidWZmZXIsIGluIGNoYWluIG9mIGFsbCBidWZmZXJzLCBpbmNsdWRp bmcga2lsbGVkIG9uZXMuICAqLworICBzdHJ1Y3QgYnVmZmVyICpuZXh0OworCiAgIC8qIENo YXIgcG9zaXRpb24gb2YgcG9pbnQgaW4gYnVmZmVyLiAgKi8KICAgcHRyZGlmZl90IHB0Owog CkBAIC05NTksNiArOTU3LDI2IEBACiAgIGItPklOVEVSTkFMX0ZJRUxEICh3aWR0aF90YWJs ZSkgPSB2YWw7CiB9CiAKKy8qIE51bWJlciBvZiBMaXNwX09iamVjdHMgYXQgdGhlIGJlZ2lu bmluZyBvZiBzdHJ1Y3QgYnVmZmVyLgorICAgSWYgeW91IGFkZCwgcmVtb3ZlLCBvciByZW9y ZGVyIExpc3BfT2JqZWN0cyB3aXRoaW4gYnVmZmVyCisgICBzdHJ1Y3R1cmUsIG1ha2Ugc3Vy ZSB0aGF0IHRoaXMgaXMgc3RpbGwgY29ycmVjdC4gICovCisKKyNkZWZpbmUgQlVGRkVSX0xJ U1BfU0laRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAoKG9mZnNldG9mIChzdHJ1Y3QgYnVmZmVyLCBvd25fdGV4dCkgLSBoZWFkZXJfc2l6 ZSkgLyB3b3JkX3NpemUpCisKKy8qIFNpemUgb2YgdGhlIHN0cnVjdCBidWZmZXIgcGFydCBi ZXlvbmQgbGVhZGluZworICAgTGlzcF9PYmplY3RzLCBpbiB3b3JkX3NpemUgdW5pdHMuICAq LworCisjZGVmaW5lIEJVRkZFUl9SRVNUX1NJWkUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKChzaXplb2YgKHN0cnVjdCBidWZmZXIpIC0g aGVhZGVyX3NpemUpIC8gd29yZF9zaXplIC0gQlVGRkVSX0xJU1BfU0laRSkKKworLyogSW5p dGlhbGl6ZSB0aGUgcHNldWRvdmVjdG9yIGhlYWRlciBvZiBidWZmZXIgb2JqZWN0LiAgQlVG RkVSX0xJU1BfU0laRQorICAgaXMgcmVxdWlyZWQgZm9yIEdDLCBidXQgQlVGRkVSX1JFU1Rf U0laRSBpcyBzZXQgdXAganVzdCB0byBiZSBjb25zaXN0ZW50CisgICB3aXRoIG90aGVyIHBz ZXVkb3ZlY3RvcnMuICAqLworCisjZGVmaW5lIEJVRkZFUl9QVkVDX0lOSVQoYikgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIFhTRVRQVkVDVFlQRVNJWkUgKGIs IFBWRUNfQlVGRkVSLCBCVUZGRVJfTElTUF9TSVpFLCBCVUZGRVJfUkVTVF9TSVpFKQorCiAv KiBDb252ZW5pZW50IGNoZWNrIHdoZXRoZXIgYnVmZmVyIEIgaXMgbGl2ZS4gICovCiAKICNk ZWZpbmUgQlVGRkVSX0xJVkVfUChiKSAoIU5JTFAgKEJWQVIgKGIsIG5hbWUpKSkKQEAgLTk4 Niw3ICsxMDA0LDcgQEAKIC8qIFVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBjaGFpbiBhYm92 ZS4gICovCiAKICNkZWZpbmUgRk9SX0VBQ0hfQlVGRkVSKGIpIFwKLSAgZm9yICgoYikgPSBh bGxfYnVmZmVyczsgKGIpOyAoYikgPSAoYiktPmhlYWRlci5uZXh0LmJ1ZmZlcikKKyAgZm9y ICgoYikgPSBhbGxfYnVmZmVyczsgKGIpOyAoYikgPSAoYiktPm5leHQpCiAKIC8qIFRoaXMg cG9pbnRzIHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4gICovCiAKCj09PSBtb2RpZmllZCBmaWxl ICdzcmMvZm5zLmMnCi0tLSBzcmMvZm5zLmMJMjAxMi0xMC0xOSAwMDo1NDozNSArMDAwMAor Kysgc3JjL2Zucy5jCTIwMTItMTEtMDYgMTc6MDQ6NDggKzAwMDAKQEAgLTIwNzYsOSArMjA3 Niw4IEBACiAJICAgYXJlIHNlbnNpYmxlIHRvIGNvbXBhcmUsIHNvIGVsaW1pbmF0ZSB0aGUg b3RoZXJzIG5vdy4gICovCiAJaWYgKHNpemUgJiBQU0VVRE9WRUNUT1JfRkxBRykKIAkgIHsK LQkgICAgaWYgKCEoc2l6ZSAmICgoUFZFQ19DT01QSUxFRCB8IFBWRUNfQ0hBUl9UQUJMRQot CQkJICAgfCBQVkVDX1NVQl9DSEFSX1RBQkxFIHwgUFZFQ19GT05UKQotCQkJICA8PCBQU0VV RE9WRUNUT1JfU0laRV9CSVRTKSkpCisJICAgIGlmICgoKHNpemUgJiBQVkVDX1RZUEVfTUFT SykgPj4gUFNFVURPVkVDVE9SX0FSRUFfQklUUykKKwkJPCBQVkVDX0NPTVBJTEVEKQogCSAg ICAgIHJldHVybiAwOwogCSAgICBzaXplICY9IFBTRVVET1ZFQ1RPUl9TSVpFX01BU0s7CiAJ ICB9CkBAIC0zNjYxLDEyICszNjYwLDkgQEAKIHsKICAgTGlzcF9PYmplY3QgdGFibGU7CiAg IHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgyOwotICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKm5l eHQ7CiAKICAgaDIgPSBhbGxvY2F0ZV9oYXNoX3RhYmxlICgpOwotICBuZXh0ID0gaDItPmhl YWRlci5uZXh0LnZlY3RvcjsKICAgKmgyID0gKmgxOwotICBoMi0+aGVhZGVyLm5leHQudmVj dG9yID0gbmV4dDsKICAgaDItPmtleV9hbmRfdmFsdWUgPSBGY29weV9zZXF1ZW5jZSAoaDEt PmtleV9hbmRfdmFsdWUpOwogICBoMi0+aGFzaCA9IEZjb3B5X3NlcXVlbmNlIChoMS0+aGFz aCk7CiAgIGgyLT5uZXh0ID0gRmNvcHlfc2VxdWVuY2UgKGgxLT5uZXh0KTsKCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMvbGlzcC5oJwotLS0gc3JjL2xpc3AuaAkyMDEyLTExLTA2IDEzOjI2 OjIwICswMDAwCisrKyBzcmMvbGlzcC5oCTIwMTItMTEtMDYgMTc6MDQ6NDggKzAwMDAKQEAg LTQwMSwxNCArNDAxLDExIEBACiAgIFBWRUNfV0lORE9XX0NPTkZJR1VSQVRJT04sCiAgIFBW RUNfU1VCUiwKICAgUFZFQ19PVEhFUiwKLSAgLyogVGhlc2UgbGFzdCA0IGFyZSBzcGVjaWFs IGJlY2F1c2Ugd2UgT1IgdGhlbSBpbiBmbnMuYzppbnRlcm5hbF9lcXVhbCwKLSAgICAgc28g dGhleSBoYXZlIHRvIHVzZSBhIGRpc2pvaW50IGJpdCBwYXR0ZXJuOgotICAgICBpZiAoIShz aXplICYgKFBWRUNfQ09NUElMRUQgfCBQVkVDX0NIQVJfVEFCTEUKLSAgICAgICAgICAgICAg ICAgICB8IFBWRUNfU1VCX0NIQVJfVEFCTEUgfCBQVkVDX0ZPTlQpKSkgKi8KLSAgUFZFQ19D T01QSUxFRAkJCT0gMHgxMCwKLSAgUFZFQ19DSEFSX1RBQkxFCQk9IDB4MjAsCi0gIFBWRUNf U1VCX0NIQVJfVEFCTEUJCT0gMHgzMCwKLSAgUFZFQ19GT05UCQkJPSAweDQwCisgIC8qIFRo ZXNlIHNob3VsZCBiZSBsYXN0LCBjaGVjayBpbnRlcm5hbF9lcXVhbCB0byBzZWUgd2h5LiAg Ki8KKyAgUFZFQ19DT01QSUxFRCwKKyAgUFZFQ19DSEFSX1RBQkxFLAorICBQVkVDX1NVQl9D SEFSX1RBQkxFLAorICBQVkVDX0ZPTlQgLyogU2hvdWxkIGJlIGxhc3QgYmVjYXVzZSBpdCdz IHVzZWQgZm9yIHJhbmdlIGNoZWNraW5nLiAgKi8KIH07CiAKIC8qIERBVEFfU0VHX0JJVFMg Zm9yY2VzIGV4dHJhIGJpdHMgdG8gYmUgb3InZCBpbiB3aXRoIGFueSBwb2ludGVycwpAQCAt NDI4LDkgKzQyNSwxOCBAQAogICAgICAgIG9ubHkgdGhlIG51bWJlciBvZiBMaXNwX09iamVj dCBmaWVsZHMgKHRoYXQgbmVlZCB0byBiZSB0cmFjZWQgYnkgR0MpLgogICAgICAgIFRoZSBk aXN0aW5jdGlvbiBpcyB1c2VkLCBlLmcuLCBieSBMaXNwX1Byb2Nlc3MsIHdoaWNoIHBsYWNl cyBleHRyYQogICAgICAgIG5vbi1MaXNwX09iamVjdCBmaWVsZHMgYXQgdGhlIGVuZCBvZiB0 aGUgc3RydWN0dXJlLiAgKi8KLSAgICBQU0VVRE9WRUNUT1JfU0laRV9CSVRTID0gMTYsCisg ICAgUFNFVURPVkVDVE9SX1NJWkVfQklUUyA9IDEyLAogICAgIFBTRVVET1ZFQ1RPUl9TSVpF X01BU0sgPSAoMSA8PCBQU0VVRE9WRUNUT1JfU0laRV9CSVRTKSAtIDEsCi0gICAgUFZFQ19U WVBFX01BU0sgPSAweDBmZmYgPDwgUFNFVURPVkVDVE9SX1NJWkVfQklUUywKKworICAgIC8q IFRvIGNhbGN1bGF0ZSB0aGUgbWVtb3J5IGZvb3RwcmludCBvZiB0aGUgcHNldWRvdmVjdG9y LCBpdCdzIHVzZWZ1bAorICAgICAgIHRvIHN0b3JlIHRoZSBzaXplIG9mIG5vbi1MaXNwIGFy ZWEgaW4gd29yZF9zaXplIHVuaXRzIGhlcmUuICAqLworICAgIFBTRVVET1ZFQ1RPUl9SRVNU X0JJVFMgPSAxMiwKKyAgICBQU0VVRE9WRUNUT1JfUkVTVF9NQVNLID0gKCgoMSA8PCBQU0VV RE9WRUNUT1JfUkVTVF9CSVRTKSAtIDEpIAorCQkJICAgICAgPDwgUFNFVURPVkVDVE9SX1NJ WkVfQklUUyksCisKKyAgICAvKiBVc2VkIHRvIGV4dHJhY3QgcHNldWRvdmVjdG9yIHN1YnR5 cGUgaW5mb3JtYXRpb24uICAqLworICAgIFBTRVVET1ZFQ1RPUl9BUkVBX0JJVFMgPSBQU0VV RE9WRUNUT1JfU0laRV9CSVRTICsgUFNFVURPVkVDVE9SX1JFU1RfQklUUywKKyAgICBQVkVD X1RZUEVfTUFTSyA9IDB4M2YgPDwgUFNFVURPVkVDVE9SX0FSRUFfQklUUywKIAogICAgIC8q IE51bWJlciBvZiBiaXRzIHRvIHB1dCBpbiBlYWNoIGNoYXJhY3RlciBpbiB0aGUgaW50ZXJu YWwgcmVwcmVzZW50YXRpb24KICAgICAgICBvZiBib29sIHZlY3RvcnMuICBUaGlzIHNob3Vs ZCBub3QgdmFyeSBhY3Jvc3MgaW1wbGVtZW50YXRpb25zLiAgKi8KQEAgLTU5OSwxMyArNjA1 LDEzIEBACiAKIC8qIFBzZXVkb3ZlY3RvciB0eXBlcy4gICovCiAKLSNkZWZpbmUgWFNFVFBW RUNUWVBFKHYsIGNvZGUpIFhTRVRUWVBFRF9QVkVDVFlQRSAodiwgaGVhZGVyLnNpemUsIGNv ZGUpCi0jZGVmaW5lIFhTRVRUWVBFRF9QVkVDVFlQRSh2LCBzaXplX21lbWJlciwgY29kZSkg XAotICAoKHYpLT5zaXplX21lbWJlciB8PSBQU0VVRE9WRUNUT1JfRkxBRyB8ICgoY29kZSkg PDwgUFNFVURPVkVDVE9SX1NJWkVfQklUUykpCi0jZGVmaW5lIFhTRVRQVkVDVFlQRVNJWkUo diwgY29kZSwgc2l6ZXZhbCkgXAorI2RlZmluZSBYU0VUUFZFQ1RZUEUodiwgY29kZSkJCQkJ CQlcCisgICgodiktPmhlYWRlci5zaXplIHw9IFBTRVVET1ZFQ1RPUl9GTEFHIHwgKChjb2Rl KSA8PCBQU0VVRE9WRUNUT1JfQVJFQV9CSVRTKSkKKyNkZWZpbmUgWFNFVFBWRUNUWVBFU0la RSh2LCBjb2RlLCBsaXNwc2l6ZSwgcmVzdHNpemUpCQlcCiAgICgodiktPmhlYWRlci5zaXpl ID0gKFBTRVVET1ZFQ1RPUl9GTEFHCQkJXAotCQkgICAgICAgfCAoKGNvZGUpIDw8IFBTRVVE T1ZFQ1RPUl9TSVpFX0JJVFMpCVwKLQkJICAgICAgIHwgKHNpemV2YWwpKSkKKwkJICAgICAg IHwgKChjb2RlKSA8PCBQU0VVRE9WRUNUT1JfQVJFQV9CSVRTKQlcCisJCSAgICAgICB8ICgo cmVzdHNpemUpIDw8IFBTRVVET1ZFQ1RPUl9TSVpFX0JJVFMpIFwKKwkJICAgICAgIHwgKGxp c3BzaXplKSkpCiAKIC8qIFRoZSBjYXN0IHRvIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciAq IGF2b2lkcyBhbGlhc2luZyBpc3N1ZXMuICAqLwogI2RlZmluZSBYU0VUUFNFVURPVkVDVE9S KGEsIGIsIGNvZGUpIFwKQEAgLTYxNywxNiArNjIzLDE0IEBACiAjZGVmaW5lIFhTRVRUWVBF RF9QU0VVRE9WRUNUT1IoYSwgYiwgc2l6ZSwgY29kZSkJCQlcCiAgIChYU0VUVkVDVE9SIChh LCBiKSwJCQkJCQkJXAogICAgZWFzc2VydCAoKHNpemUgJiAoUFNFVURPVkVDVE9SX0ZMQUcg fCBQVkVDX1RZUEVfTUFTSykpCQlcCi0JICAgID09IChQU0VVRE9WRUNUT1JfRkxBRyB8IChj b2RlIDw8IFBTRVVET1ZFQ1RPUl9TSVpFX0JJVFMpKSkpCisJICAgID09IChQU0VVRE9WRUNU T1JfRkxBRyB8IChjb2RlIDw8IFBTRVVET1ZFQ1RPUl9BUkVBX0JJVFMpKSkpCiAKICNkZWZp bmUgWFNFVFdJTkRPV19DT05GSUdVUkFUSU9OKGEsIGIpIFwKICAgKFhTRVRQU0VVRE9WRUNU T1IgKGEsIGIsIFBWRUNfV0lORE9XX0NPTkZJR1VSQVRJT04pKQogI2RlZmluZSBYU0VUUFJP Q0VTUyhhLCBiKSAoWFNFVFBTRVVET1ZFQ1RPUiAoYSwgYiwgUFZFQ19QUk9DRVNTKSkKICNk ZWZpbmUgWFNFVFdJTkRPVyhhLCBiKSAoWFNFVFBTRVVET1ZFQ1RPUiAoYSwgYiwgUFZFQ19X SU5ET1cpKQogI2RlZmluZSBYU0VUVEVSTUlOQUwoYSwgYikgKFhTRVRQU0VVRE9WRUNUT1Ig KGEsIGIsIFBWRUNfVEVSTUlOQUwpKQotLyogWFNFVFNVQlIgaXMgc3BlY2lhbCBzaW5jZSBM aXNwX1N1YnIgbGFja3Mgc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyLiAgKi8KLSNkZWZpbmUg WFNFVFNVQlIoYSwgYikgXAotICBYU0VUVFlQRURfUFNFVURPVkVDVE9SIChhLCBiLCBYU1VC UiAoYSktPnNpemUsIFBWRUNfU1VCUikKKyNkZWZpbmUgWFNFVFNVQlIoYSwgYikgKFhTRVRQ U0VVRE9WRUNUT1IgKGEsIGIsIFBWRUNfU1VCUikpCiAjZGVmaW5lIFhTRVRDT01QSUxFRChh LCBiKSAoWFNFVFBTRVVET1ZFQ1RPUiAoYSwgYiwgUFZFQ19DT01QSUxFRCkpCiAjZGVmaW5l IFhTRVRCVUZGRVIoYSwgYikgKFhTRVRQU0VVRE9WRUNUT1IgKGEsIGIsIFBWRUNfQlVGRkVS KSkKICNkZWZpbmUgWFNFVENIQVJfVEFCTEUoYSwgYikgKFhTRVRQU0VVRE9WRUNUT1IgKGEs IGIsIFBWRUNfQ0hBUl9UQUJMRSkpCkBAIC03OTMsNyArNzk3LDcgQEAKICAgfTsKIAogLyog SGVhZGVyIG9mIHZlY3Rvci1saWtlIG9iamVjdHMuICBUaGlzIGRvY3VtZW50cyB0aGUgbGF5 b3V0IGNvbnN0cmFpbnRzIG9uCi0gICB2ZWN0b3JzIGFuZCBwc2V1ZG92ZWN0b3JzIG90aGVy IHRoYW4gc3RydWN0IExpc3BfU3Vici4gIEl0IGFsc28gcHJldmVudHMKKyAgIHZlY3RvcnMg YW5kIHBzZXVkb3ZlY3RvcnMgKG9iamVjdHMgb2YgUFZFQ194eHggc3VidHlwZSkuICBJdCBh bHNvIHByZXZlbnRzCiAgICBjb21waWxlcnMgZnJvbSBiZWluZyBmb29sZWQgYnkgRW1hY3Mn cyB0eXBlIHB1bm5pbmc6IHRoZSBYU0VUUFNFVURPVkVDVE9SCiAgICBhbmQgUFNFVURPVkVD VE9SUCBtYWNyb3MgY2FzdCB0aGVpciBwb2ludGVycyB0byBzdHJ1Y3QgdmVjdG9ybGlrZV9o ZWFkZXIgKiwKICAgIGJlY2F1c2Ugd2hlbiB0d28gc3VjaCBwb2ludGVycyBwb3RlbnRpYWxs eSBhbGlhcywgYSBjb21waWxlciB3b24ndApAQCAtODAxLDQzICs4MDUsMjYgQEAKICAgIDxo dHRwOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz04NTQ2Pi4gICov CiBzdHJ1Y3QgdmVjdG9ybGlrZV9oZWFkZXIKICAgewotICAgIC8qIFRoaXMgZmllbGQgY29u dGFpbnMgdmFyaW91cyBwaWVjZXMgb2YgaW5mb3JtYXRpb246CisgICAgLyogVGhlIG9ubHkg ZmllbGQgY29udGFpbnMgdmFyaW91cyBwaWVjZXMgb2YgaW5mb3JtYXRpb246CiAgICAgICAg LSBUaGUgTVNCIChBUlJBWV9NQVJLX0ZMQUcpIGhvbGRzIHRoZSBnY21hcmtiaXQuCiAgICAg ICAgLSBUaGUgbmV4dCBiaXQgKFBTRVVET1ZFQ1RPUl9GTEFHKSBpbmRpY2F0ZXMgd2hldGhl ciB0aGlzIGlzIGEgcGxhaW4KICAgICAgICAgIHZlY3RvciAoMCkgb3IgYSBwc2V1ZG92ZWN0 b3IgKDEpLgogICAgICAgIC0gSWYgUFNFVURPVkVDVE9SX0ZMQUcgaXMgMCwgdGhlIHJlc3Qg aG9sZHMgdGhlIHNpemUgKG51bWJlcgogICAgICAgICAgb2Ygc2xvdHMpIG9mIHRoZSB2ZWN0 b3IuCi0gICAgICAgLSBJZiBQU0VVRE9WRUNUT1JfRkxBRyBpcyAxLCB0aGUgcmVzdCBpcyBz dWJkaXZpZGVkIGludG8KLSAgICAgICAgIGEgInB2ZWMgdHlwZSIgdGFnIGhlbGQgaW4gUFZF Q19UWVBFX01BU0sgYW5kIGEgc2l6ZSBoZWxkIGluIHRoZSBsb3dlc3QKLSAgICAgICAgIFBT RVVET1ZFQ1RPUl9TSVpFX0JJVFMuICBUaGF0IHNpemUgbm9ybWFsbHkgaW5kaWNhdGVzIHRo ZSBudW1iZXIgb2YKLSAgICAgICAgIExpc3BfT2JqZWN0IHNsb3RzIGF0IHRoZSBiZWdpbm5p bmcgb2YgdGhlIG9iamVjdCB0aGF0IG5lZWQgdG8gYmUKLSAgICAgICAgIHRyYWNlZCBieSB0 aGUgR0MsIHRobyBzb21lIHR5cGVzIHVzZSBpdCBzbGlnaHRseSBkaWZmZXJlbnRseS4KLSAg ICAgICAtIEUuZy4gaWYgdGhlIHB2ZWMgdHlwZSBpcyBQVkVDX0ZSRUUgaXQgbWVhbnMgdGhp cyBpcyBhbiB1bmFsbG9jYXRlZAotICAgICAgICAgdmVjdG9yIG9uIGEgZnJlZS1saXN0IGFu ZCBQU0VVRE9WRUNUT1JfU0laRV9CSVRTIGluZGljYXRlcyBpdHMgc2l6ZQotICAgICAgICAg aW4gYnl0ZXMuICAqLworICAgICAgIC0gSWYgUFNFVURPVkVDVE9SX0ZMQUcgaXMgMSwgdGhl IHJlc3QgaXMgc3ViZGl2aWRlZCBpbnRvIHRocmVlIGZpZWxkczoKKwkgLSBhKSBwc2V1ZG92 ZWN0b3Igc3VidHlwZSBoZWxkIGluIFBWRUNfVFlQRV9NQVNLIGZpZWxkOworCSAtIGIpIG51 bWJlciBvZiBMaXNwX09iamVjdHMgc2xvdHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgb2Jq ZWN0CisJICAgaGVsZCBpbiBQU0VVRE9WRUNUT1JfU0laRV9NQVNLIGZpZWxkLiAgVGhlc2Ug b2JqZWN0cyBhcmUgYWx3YXlzCisJICAgdHJhY2VkIGJ5IHRoZSBHQzsKKwkgLSBjKSBzaXpl IG9mIHRoZSByZXN0IGZpZWxkcyBoZWxkIGluIFBTRVVET1ZFQ1RPUl9SRVNUX01BU0sgYW5k CisJICAgbWVhc3VyZWQgaW4gd29yZF9zaXplIHVuaXRzLiAgUmVzdCBmaWVsZHMgbWF5IGFs c28gaW5jbHVkZQorCSAgIExpc3BfT2JqZWN0cywgYnV0IHRoZXNlIG9iamVjdHMgdXN1YWxs eSBuZWVkcyBzb21lIHNwZWNpYWwgdHJlYXRtZW50CisJICAgZHVyaW5nIEdDLgorCSBUaGVy ZSBhcmUgc29tZSBleGNlcHRpb25zLiAgRm9yIFBWRUNfRlJFRSwgYikgaXMgYWx3YXlzIHpl cm8uICBGb3IKKwkgUFZFQ19CT09MX1ZFQ1RPUiBhbmQgUFZFQ19TVUJSLCBib3RoIGIpIGFu ZCBjKSBhcmUgYWx3YXlzIHplcm8uCisJIEN1cnJlbnQgbGF5b3V0IGxpbWl0cyB0aGUgcHNl dWRvdmVjdG9ycyB0byA2MyBQVkVDX3h4eCBzdWJ0eXBlcywKKwkgNDA5NSBMaXNwX09iamVj dHMgaW4gR0MtZWQgYXJlYSBhbmQgNDA5NSB3b3JkLXNpemVkIG90aGVyIHNsb3RzLiAgKi8K ICAgICBwdHJkaWZmX3Qgc2l6ZTsKLQotICAgIC8qIFdoZW4gdGhlIHZlY3RvciBpcyBhbGxv Y2F0ZWQgZnJvbSBhIHZlY3RvciBibG9jaywgTkJZVEVTIGlzIHVzZWQKLSAgICAgICBpZiB0 aGUgdmVjdG9yIGlzIG5vdCBvbiBhIGZyZWUgbGlzdCwgYW5kIFZFQ1RPUiBpcyB1c2VkIG90 aGVyd2lzZS4KLSAgICAgICBGb3IgbGFyZ2UgdmVjdG9yLWxpa2Ugb2JqZWN0cywgQlVGRkVS IG9yIFZFQ1RPUiBpcyB1c2VkIGFzIGEgcG9pbnRlcgotICAgICAgIHRvIHRoZSBuZXh0IHZl Y3Rvci1saWtlIG9iamVjdC4gIEl0IGlzIGdlbmVyYWxseSBhIGJ1ZmZlciBvciBhCi0gICAg ICAgTGlzcF9WZWN0b3IgYWxpYXMsIHNvIGZvciBjb252ZW5pZW5jZSBpdCBpcyBhIHVuaW9u IGluc3RlYWQgb2YgYQotICAgICAgIHBvaW50ZXI6IHRoaXMgd2F5LCBvbmUgY2FuIHdyaXRl IFAtPm5leHQudmVjdG9yIGluc3RlYWQgb2YgKChzdHJ1Y3QKLSAgICAgICBMaXNwX1ZlY3Rv ciAqKSBQLT5uZXh0KS4gICovCi0gICAgdW5pb24gewotICAgICAgLyogVGhpcyBpcyBvbmx5 IG5lZWRlZCBmb3Igc21hbGwgdmVjdG9ycyB0aGF0IGFyZSBub3QgZnJlZSBiZWNhdXNlIHRo ZQotCSBgc2l6ZScgZmllbGQgb25seSBnaXZlcyB1cyB0aGUgbnVtYmVyIG9mIExpc3BfT2Jq ZWN0IHNsb3RzLCB3aGVyZWFzIHdlCi0JIG5lZWQgdG8ga25vdyB0aGUgdG90YWwgc2l6ZSwg aW5jbHVkaW5nIG5vbi1MaXNwX09iamVjdCBkYXRhLgotCSBGSVhNRTogZmlndXJlIG91dCBh IHdheSB0byBzdG9yZSB0aGlzIGluZm8gZWxzZXdoZXJlIHNvIHdlIGNhbgotCSBmaW5hbGx5 IGdldCByaWQgb2YgdGhpcyBleHRyYSB3b3JkIG9mIG92ZXJoZWFkLiAgKi8KLSAgICAgIHB0 cmRpZmZfdCBuYnl0ZXM7Ci0gICAgICBzdHJ1Y3QgYnVmZmVyICpidWZmZXI7Ci0gICAgICAv KiBGSVhNRTogVGhpcyBjYW4gYmUgcmVtb3ZlZDogRm9yIGxhcmdlIHZlY3RvcnMsIHRoaXMg ZmllbGQgY291bGQgYmUKLQkgcGxhY2VkICpiZWZvcmUqIHRoZSB2ZWN0b3IgaXRzZWxmLiAg QW5kIGZvciBzbWFsbCB2ZWN0b3JzIG9uIGEgZnJlZQotCSBsaXN0LCB0aGlzIGZpZWxkIGNv dWxkIGJlIHN0b3JlZCBpbiB0aGUgdmVjdG9yJ3MgYnl0ZXMsIHNpbmNlIHRoZQotCSBlbXB0 eSB2ZWN0b3IgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYW55d2F5LiAgKi8KLSAgICAgIHN0cnVj dCBMaXNwX1ZlY3RvciAqdmVjdG9yOwotICAgIH0gbmV4dDsKICAgfTsKIAogLyogUmVndWxh ciB2ZWN0b3IgaXMganVzdCBhIGhlYWRlciBwbHVzIGFycmF5IG9mIExpc3BfT2JqZWN0cy4g ICovCkBAIC0xMDExLDE1ICs5OTgsMTEgQEAKIAogLyogVGhpcyBzdHJ1Y3R1cmUgZGVzY3Jp YmVzIGEgYnVpbHQtaW4gZnVuY3Rpb24uCiAgICBJdCBpcyBnZW5lcmF0ZWQgYnkgdGhlIERF RlVOIG1hY3JvIG9ubHkuCi0gICBkZWZzdWJyIG1ha2VzIGl0IGludG8gYSBMaXNwIG9iamVj dC4KLQotICAgVGhpcyB0eXBlIGlzIHRyZWF0ZWQgaW4gbW9zdCByZXNwZWN0cyBhcyBhIHBz ZXVkb3ZlY3RvciwKLSAgIGJ1dCBzaW5jZSB3ZSBuZXZlciBkeW5hbWljYWxseSBhbGxvY2F0 ZSBvciBmcmVlIHRoZW0sCi0gICB3ZSBkb24ndCBuZWVkIGEgc3RydWN0IHZlY3Rvcmxpa2Vf aGVhZGVyIGFuZCBpdHMgJ25leHQnIGZpZWxkLiAgKi8KKyAgIGRlZnN1YnIgbWFrZXMgaXQg aW50byBhIExpc3Agb2JqZWN0LiAgKi8KIAogc3RydWN0IExpc3BfU3VicgogICB7Ci0gICAg cHRyZGlmZl90IHNpemU7CisgICAgc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyIGhlYWRlcjsK ICAgICB1bmlvbiB7CiAgICAgICBMaXNwX09iamVjdCAoKmEwKSAodm9pZCk7CiAgICAgICBM aXNwX09iamVjdCAoKmExKSAoTGlzcF9PYmplY3QpOwpAQCAtMTcwMCw3ICsxNjgzLDcgQEAK IAogI2RlZmluZSBQU0VVRE9WRUNUT1JfVFlQRVAodiwgY29kZSkJCQkJCVwKICAgKCgodikt PnNpemUgJiAoUFNFVURPVkVDVE9SX0ZMQUcgfCBQVkVDX1RZUEVfTUFTSykpCQkJXAotICAg PT0gKFBTRVVET1ZFQ1RPUl9GTEFHIHwgKChjb2RlKSA8PCBQU0VVRE9WRUNUT1JfU0laRV9C SVRTKSkpCisgICA9PSAoUFNFVURPVkVDVE9SX0ZMQUcgfCAoKGNvZGUpIDw8IFBTRVVET1ZF Q1RPUl9BUkVBX0JJVFMpKSkKIAogLyogVHJ1ZSBpZiBvYmplY3QgWCwgd2l0aCBpbnRlcm5h bCB0eXBlIHN0cnVjdCBUICosIGlzIGEgcHNldWRvdmVjdG9yIHdob3NlCiAgICBjb2RlIGlz IENPREUuICAqLwpAQCAtMTcxMyw4ICsxNjk2LDcgQEAKICNkZWZpbmUgUFJPQ0VTU1AoeCkg UFNFVURPVkVDVE9SUCAoeCwgUFZFQ19QUk9DRVNTKQogI2RlZmluZSBXSU5ET1dQKHgpIFBT RVVET1ZFQ1RPUlAgKHgsIFBWRUNfV0lORE9XKQogI2RlZmluZSBURVJNSU5BTFAoeCkgUFNF VURPVkVDVE9SUCAoeCwgUFZFQ19URVJNSU5BTCkKLS8qIFNVQlJQIGlzIHNwZWNpYWwgc2lu Y2UgTGlzcF9TdWJyIGxhY2tzIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlci4gICovCi0jZGVm aW5lIFNVQlJQKHgpIFRZUEVEX1BTRVVET1ZFQ1RPUlAgKHgsIExpc3BfU3ViciwgUFZFQ19T VUJSKQorI2RlZmluZSBTVUJSUCh4KSBQU0VVRE9WRUNUT1JQICh4LCBQVkVDX1NVQlIpCiAj ZGVmaW5lIENPTVBJTEVEUCh4KSBQU0VVRE9WRUNUT1JQICh4LCBQVkVDX0NPTVBJTEVEKQog I2RlZmluZSBCVUZGRVJQKHgpIFBTRVVET1ZFQ1RPUlAgKHgsIFBWRUNfQlVGRkVSKQogI2Rl ZmluZSBDSEFSX1RBQkxFX1AoeCkgUFNFVURPVkVDVE9SUCAoeCwgUFZFQ19DSEFSX1RBQkxF KQpAQCAtMTg4OSw4ICsxODcxLDggQEAKICNkZWZpbmUgREVGVU4obG5hbWUsIGZubmFtZSwg c25hbWUsIG1pbmFyZ3MsIG1heGFyZ3MsIGludHNwZWMsIGRvYykJXAogICAgTGlzcF9PYmpl Y3QgZm5uYW1lIERFRlVOX0FSR1NfICMjIG1heGFyZ3MgOwkJCQlcCiAgICBzdGF0aWMgc3Ry dWN0IExpc3BfU3ViciBhbGlnbmFzIChHQ0FMSUdOTUVOVCkgc25hbWUgPQkJXAotICAgeyAo UFZFQ19TVUJSIDw8IFBTRVVET1ZFQ1RPUl9TSVpFX0JJVFMpCQkJCVwKLSAgICAgfCAoc2l6 ZW9mIChzdHJ1Y3QgTGlzcF9TdWJyKSAvIHNpemVvZiAoRU1BQ1NfSU5UKSksCQlcCisgICB7 IHsgKFBWRUNfU1VCUiA8PCBQU0VVRE9WRUNUT1JfQVJFQV9CSVRTKQkJCQlcCisgICAgICAg fCAoc2l6ZW9mIChzdHJ1Y3QgTGlzcF9TdWJyKSAvIHNpemVvZiAoRU1BQ1NfSU5UKSkgfSwJ CVwKICAgICAgIHsgKExpc3BfT2JqZWN0IChfX2NkZWNsICopKHZvaWQpKWZubmFtZSB9LCAg ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICBtaW5hcmdzLCBtYXhhcmdzLCBsbmFt ZSwgaW50c3BlYywgMH07CQkJCVwKICAgIExpc3BfT2JqZWN0IGZubmFtZQpAQCAtMTg5OCw4 ICsxODgwLDggQEAKICNkZWZpbmUgREVGVU4obG5hbWUsIGZubmFtZSwgc25hbWUsIG1pbmFy Z3MsIG1heGFyZ3MsIGludHNwZWMsIGRvYykJXAogICAgTGlzcF9PYmplY3QgZm5uYW1lIERF RlVOX0FSR1NfICMjIG1heGFyZ3MgOwkJCQlcCiAgICBzdGF0aWMgc3RydWN0IExpc3BfU3Vi ciBhbGlnbmFzIChHQ0FMSUdOTUVOVCkgc25hbWUgPQkJXAotICAgICB7IFBWRUNfU1VCUiA8 PCBQU0VVRE9WRUNUT1JfU0laRV9CSVRTLAkJCQlcCi0gICAgICB7IC5hICMjIG1heGFyZ3Mg PSBmbm5hbWUgfSwJCQkJCVwKKyAgICAgeyB7IFBWRUNfU1VCUiA8PCBQU0VVRE9WRUNUT1Jf QVJFQV9CSVRTIH0sCQkJCVwKKyAgICAgICB7IC5hICMjIG1heGFyZ3MgPSBmbm5hbWUgfSwJ CQkJCVwKICAgICAgICBtaW5hcmdzLCBtYXhhcmdzLCBsbmFtZSwgaW50c3BlYywgMH07CQkJ CVwKICAgIExpc3BfT2JqZWN0IGZubmFtZQogI2VuZGlmCkBAIC0yOTQ2LDcgKzI5MjgsNyBA QAogZXh0ZXJuIExpc3BfT2JqZWN0IFFhdXRvbWF0aWNfZ2M7CiBleHRlcm4gTGlzcF9PYmpl Y3QgUWNoYXJfdGFibGVfZXh0cmFfc2xvdHM7CiBleHRlcm4gc3RydWN0IExpc3BfVmVjdG9y ICphbGxvY2F0ZV92ZWN0b3IgKEVNQUNTX0lOVCk7Ci1leHRlcm4gc3RydWN0IExpc3BfVmVj dG9yICphbGxvY2F0ZV9wc2V1ZG92ZWN0b3IgKGludCBtZW1sZW4sIGludCBsaXNwbGVuLCBp bnQgdGFnKTsKK2V4dGVybiBzdHJ1Y3QgTGlzcF9WZWN0b3IgKmFsbG9jYXRlX3BzZXVkb3Zl Y3RvciAoaW50LCBpbnQsIGVudW0gcHZlY190eXBlKTsKICNkZWZpbmUgQUxMT0NBVEVfUFNF VURPVkVDVE9SKHR5cCxmaWVsZCx0YWcpCQkJCVwKICAgKCh0eXAqKQkJCQkJCQkJXAogICAg YWxsb2NhdGVfcHNldWRvdmVjdG9yCQkJCQkJXAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9s cmVhZC5jJwotLS0gc3JjL2xyZWFkLmMJMjAxMi0xMC0yMCAxMjo1MDo0OSArMDAwMAorKysg c3JjL2xyZWFkLmMJMjAxMi0xMS0wNiAxNzowNDo0OCArMDAwMApAQCAtMzk4MSw3ICszOTgx LDcgQEAKIHsKICAgTGlzcF9PYmplY3Qgc3ltLCB0ZW07CiAgIHN5bSA9IGludGVybl9jX3N0 cmluZyAoc25hbWUtPnN5bWJvbF9uYW1lKTsKLSAgWFNFVFRZUEVEX1BWRUNUWVBFIChzbmFt ZSwgc2l6ZSwgUFZFQ19TVUJSKTsKKyAgWFNFVFBWRUNUWVBFIChzbmFtZSwgUFZFQ19TVUJS KTsKICAgWFNFVFNVQlIgKHRlbSwgc25hbWUpOwogICBzZXRfc3ltYm9sX2Z1bmN0aW9uIChz eW0sIHRlbSk7CiB9Cgo= --------------080408020207050008090007--