From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B4B1C4741F for ; Sat, 7 Nov 2020 00:13:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EE40620715 for ; Sat, 7 Nov 2020 00:13:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728251AbgKGANc (ORCPT ); Fri, 6 Nov 2020 19:13:32 -0500 Received: from imap2.colo.codethink.co.uk ([78.40.148.184]:57422 "EHLO imap2.colo.codethink.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727569AbgKGANb (ORCPT ); Fri, 6 Nov 2020 19:13:31 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126] helo=xylophone) by imap2.colo.codethink.co.uk with esmtpsa (Exim 4.92 #3 (Debian)) id 1kbBrB-0002p7-PG; Sat, 07 Nov 2020 00:13:25 +0000 Message-ID: <9b242dcfb11f8d2106c4f8efe72b982d70b351c3.camel@codethink.co.uk> Subject: [4.19] Security fixes (blktrace, btrfs) From: Ben Hutchings To: Greg Kroah-Hartman , Sasha Levin Cc: stable , Luis Chamberlain , Jens Axboe , linux-btrfs@vger.kernel.org Date: Sat, 07 Nov 2020 00:13:24 +0000 Organization: Codethink Ltd. Content-Type: multipart/mixed; boundary="=-fBAPfyw2L6oodsWBXiZq" User-Agent: Evolution 3.30.5-1.1 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org --=-fBAPfyw2L6oodsWBXiZq Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Here are backports of some fixes to the 4.19 stable branch. I tested the blktrace fix with the script referenced in the commit message. I tested the btrfs changes with the reproducers for CVE-2019-19039, CVE-2019-19377, and CVE-2019-19816, and checked for regressions with xfstests. Ben. -- Ben Hutchings, Software Developer Codethink Ltd https://www.codethink.co.uk/ Dale House, 35 Dale Street Manchester, M1 2HF, United Kingdom --=-fBAPfyw2L6oodsWBXiZq Content-Type: application/mbox; name="security-4.19.mbox" Content-Disposition: attachment; filename="security-4.19.mbox" Content-Transfer-Encoding: base64 RnJvbSBiYzdkMWU5NzQ3MDYxMzMwZDlkZWYwZGZhMGQ3Zjk5NDUyMDZlMzA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWlzIENoYW1iZXJsYWluIDxtY2dyb2ZAa2VybmVsLm9yZz4K RGF0ZTogRnJpLCAxOSBKdW4gMjAyMCAyMDo0NzoyOCArMDAwMApTdWJqZWN0OiBibGt0cmFjZTog Zml4IGRlYnVnZnMgdXNlIGFmdGVyIGZyZWUKCmNvbW1pdCBiYWQ4ZTY0ZmIxOWQzYTBkZTVlNTY0 ZDlhNzI3MWMzMWJkNjg0MzY5IHVwc3RyZWFtLgoKT24gY29tbWl0IDZhYzkzMTE3YWIwMCAoImJs a3RyYWNlOiB1c2UgZXhpc3RpbmcgZGlzayBkZWJ1Z2ZzIGRpcmVjdG9yeSIpCm1lcmdlZCBvbiB2 NC4xMiBPbWFyIGZpeGVkIHRoZSBvcmlnaW5hbCBibGt0cmFjZSBjb2RlIGZvciByZXF1ZXN0LWJh c2VkCmRyaXZlcnMgKG11bHRpcXVldWUpLiBUaGlzIGhvd2V2ZXIgbGVmdCBpbiBwbGFjZSBhIHBv c3NpYmxlIGNyYXNoLCBpZiB5b3UKaGFwcGVuIHRvIGFidXNlIGJsa3RyYWNlIHdoaWxlIHJhY2lu ZyB0byByZW1vdmUgLyBhZGQgYSBkZXZpY2UuCgpXZSB1c2VkIHRvIHVzZSBhc3luY2hyb25vdXMg cmVtb3ZhbCBvZiB0aGUgcmVxdWVzdF9xdWV1ZSwgYW5kIHdpdGggdGhhdAp0aGUgaXNzdWUgd2Fz IGVhc2llciB0byByZXByb2R1Y2UuIE5vdyB0aGF0IHdlIGhhdmUgcmV2ZXJ0ZWQgdG8Kc3luY2hy b25vdXMgcmVtb3ZhbCBvZiB0aGUgcmVxdWVzdF9xdWV1ZSwgdGhlIGlzc3VlIGlzIHN0aWxsIHBv c3NpYmxlIHRvCnJlcHJvZHVjZSwgaXRzIGhvd2V2ZXIganVzdCBhIGJpdCBtb3JlIGRpZmZpY3Vs dC4KCldlIGVzc2VudGlhbGx5IHJ1biB0d28gaW5zdGFuY2VzIG9mIGJyZWFrLWJsa3RyYWNlIHdo aWNoIGFkZC9yZW1vdmUKYSBsb29wIGRldmljZSwgYW5kIHNldHVwIGEgYmxrdHJhY2UgYW5kIGp1 c3QgbmV2ZXIgdGVhciB0aGUgYmxrdHJhY2UKZG93bi4gV2UgZG8gdGhpcyB0d2ljZSBpbiBwYXJh bGxlbC4gVGhpcyBpcyBlYXNpbHkgcmVwcm9kdWNlZCB3aXRoIHRoZQpzY3JpcHQgcnVuXzAwMDQu c2ggZnJvbSBicmVhay1ibGt0cmFjZSBbMF0uCgpXZSBjYW4gZW5kIHVwIHdpdGggdHdvIHR5cGVz IG9mIHBhbmljcyBlYWNoIHJlZmxlY3Rpbmcgd2hlcmUgd2UKcmFjZSwgb25lIGEgZmFpbGVkIGJs a3RyYWNlIHNldHVwOgoKWyAgMjUyLjQyNjc1MV0gZGVidWdmczogRGlyZWN0b3J5ICdsb29wMCcg d2l0aCBwYXJlbnQgJ2Jsb2NrJyBhbHJlYWR5IHByZXNlbnQhClsgIDI1Mi40MzIyNjVdIEJVRzog a2VybmVsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgYWRkcmVzczogMDAwMDAwMDAwMDAwMDBh MApbICAyNTIuNDM2NTkyXSAjUEY6IHN1cGVydmlzb3Igd3JpdGUgYWNjZXNzIGluIGtlcm5lbCBt b2RlClsgIDI1Mi40Mzk4MjJdICNQRjogZXJyb3JfY29kZSgweDAwMDIpIC0gbm90LXByZXNlbnQg cGFnZQpbICAyNTIuNDQyOTY3XSBQR0QgMCBQNEQgMApbICAyNTIuNDQ0NjU2XSBPb3BzOiAwMDAy IFsjMV0gU01QIE5PUFRJClsgIDI1Mi40NDY5NzJdIENQVTogMTAgUElEOiAxMTUzIENvbW06IGJy ZWFrLWJsa3RyYWNlIFRhaW50ZWQ6IEcgICAgICAgICAgICBFICAgICA1LjcuMC1yYzItbmV4dC0y MDIwMDQyMCsgIzE2NApbICAyNTIuNDUyNjczXSBIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJk IFBDIChpNDQwRlggKyBQSUlYLCAxOTk2KSwgQklPUyAxLjEzLjAtMSAwNC8wMS8yMDE0ClsgIDI1 Mi40NTYzNDNdIFJJUDogMDAxMDpkb3duX3dyaXRlKzB4MTUvMHg0MApbICAyNTIuNDU4MTQ2XSBD b2RlOiBlYiBjYSBlOCBhZSAyMiA4ZCBmZiBjYyBjYyBjYyBjYyBjYyBjYyBjYyBjYyBjYyBjYyBj YyBjYwogICAgICAgICAgICAgICBjYyBjYyAwZiAxZiA0NCAwMCAwMCA1NSA0OCA4OSBmZCBlOCA1 MiBkYiBmZiBmZiAzMSBjMCBiYSAwMSAwMAogICAgICAgICAgICAgICAwMCAwMCA8ZjA+IDQ4IDBm IGIxIDU1IDAwIDc1IDBmIDQ4IDhiIDA0IDI1IGMwIDhiIDAxIDAwIDQ4IDg5CiAgICAgICAgICAg ICAgIDQ1IDA4IDVkClsgIDI1Mi40NjM2MzhdIFJTUDogMDAxODpmZmZmYTYyNjQxNWFiY2M4IEVG TEFHUzogMDAwMTAyNDYKWyAgMjUyLjQ2NDk1MF0gUkFYOiAwMDAwMDAwMDAwMDAwMDAwIFJCWDog ZmZmZjk1OGMyNWYwZjVjMCBSQ1g6IGZmZmZmZjgxMDAwMDAwMDAKWyAgMjUyLjQ2NjcyN10gUkRY OiAwMDAwMDAwMDAwMDAwMDAxIFJTSTogZmZmZmZmODEwMDAwMDAwMCBSREk6IDAwMDAwMDAwMDAw MDAwYTAKWyAgMjUyLjQ2ODQ4Ml0gUkJQOiAwMDAwMDAwMDAwMDAwMGEwIFIwODogMDAwMDAwMDAw MDAwMDAwMCBSMDk6IDAwMDAwMDAwMDAwMDAwMDEKWyAgMjUyLjQ3MDAxNF0gUjEwOiAwMDAwMDAw MDAwMDAwMDAwIFIxMTogZmZmZjk1OGQxZjkyMjdmZiBSMTI6IDAwMDAwMDAwMDAwMDAwMDAKWyAg MjUyLjQ3MTQ3M10gUjEzOiBmZmZmOTU4YzI1ZWE1MzgwIFIxNDogZmZmZmZmZmY4Y2NlMTVmMSBS MTU6IDAwMDAwMDAwMDAwMDAwYTAKWyAgMjUyLjQ3MzM0Nl0gRlM6ICAwMDAwN2YyZTY5ZGVlNTQw KDAwMDApIEdTOmZmZmY5NThjMmZjODAwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAwMApb ICAyNTIuNDc1MjI1XSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgw MDUwMDMzClsgIDI1Mi40NzYyNjddIENSMjogMDAwMDAwMDAwMDAwMDBhMCBDUjM6IDAwMDAwMDA0 MjdkMTAwMDQgQ1I0OiAwMDAwMDAwMDAwMzYwZWUwClsgIDI1Mi40Nzc1MjZdIERSMDogMDAwMDAw MDAwMDAwMDAwMCBEUjE6IDAwMDAwMDAwMDAwMDAwMDAgRFIyOiAwMDAwMDAwMDAwMDAwMDAwClsg IDI1Mi40Nzg3NzZdIERSMzogMDAwMDAwMDAwMDAwMDAwMCBEUjY6IDAwMDAwMDAwZmZmZTBmZjAg RFI3OiAwMDAwMDAwMDAwMDAwNDAwClsgIDI1Mi40Nzk4NjZdIENhbGwgVHJhY2U6ClsgIDI1Mi40 ODAzMjJdICBzaW1wbGVfcmVjdXJzaXZlX3JlbW92YWwrMHg0ZS8weDJlMApbICAyNTIuNDgxMDc4 XSAgPyBkZWJ1Z2ZzX3JlbW92ZSsweDYwLzB4NjAKWyAgMjUyLjQ4MTcyNV0gID8gcmVsYXlfZGVz dHJveV9idWYrMHg3Ny8weGIwClsgIDI1Mi40ODI2NjJdICBkZWJ1Z2ZzX3JlbW92ZSsweDQwLzB4 NjAKWyAgMjUyLjQ4MzUxOF0gIGJsa19yZW1vdmVfYnVmX2ZpbGVfY2FsbGJhY2srMHg1LzB4MTAK WyAgMjUyLjQ4NDMyOF0gIHJlbGF5X2Nsb3NlX2J1ZisweDJlLzB4NjAKWyAgMjUyLjQ4NDkzMF0g IHJlbGF5X29wZW4rMHgxY2UvMHgyYzAKWyAgMjUyLjQ4NTUyMF0gIGRvX2Jsa190cmFjZV9zZXR1 cCsweDE0Zi8weDJiMApbICAyNTIuNDg2MTg3XSAgX19ibGtfdHJhY2Vfc2V0dXArMHg1NC8weGIw ClsgIDI1Mi40ODY4MDNdICBibGtfdHJhY2VfaW9jdGwrMHg5MC8weDE0MApbICAyNTIuNDg3NDIz XSAgPyBkb19zeXNfb3BlbmF0MisweDFhYi8weDJkMApbICAyNTIuNDg4MDUzXSAgYmxrZGV2X2lv Y3RsKzB4NGQvMHgyNjAKWyAgMjUyLjQ4ODYzNl0gIGJsb2NrX2lvY3RsKzB4MzkvMHg0MApbICAy NTIuNDg5MTM5XSAga3N5c19pb2N0bCsweDg3LzB4YzAKWyAgMjUyLjQ4OTY3NV0gIF9feDY0X3N5 c19pb2N0bCsweDE2LzB4MjAKWyAgMjUyLjQ5MDM4MF0gIGRvX3N5c2NhbGxfNjQrMHg1Mi8weDE4 MApbICAyNTIuNDkxMDMyXSAgZW50cnlfU1lTQ0FMTF82NF9hZnRlcl9od2ZyYW1lKzB4NDQvMHhh OQoKQW5kIHRoZSBvdGhlciBvbiB0aGUgZGV2aWNlIHJlbW92YWw6CgpbICAxMjguNTI4OTQwXSBk ZWJ1Z2ZzOiBEaXJlY3RvcnkgJ2xvb3AwJyB3aXRoIHBhcmVudCAnYmxvY2snIGFscmVhZHkgcHJl c2VudCEKWyAgMTI4LjYxNTMyNV0gQlVHOiBrZXJuZWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNl LCBhZGRyZXNzOiAwMDAwMDAwMDAwMDAwMGEwClsgIDEyOC42MTk1MzddICNQRjogc3VwZXJ2aXNv ciB3cml0ZSBhY2Nlc3MgaW4ga2VybmVsIG1vZGUKWyAgMTI4LjYyMjcwMF0gI1BGOiBlcnJvcl9j b2RlKDB4MDAwMikgLSBub3QtcHJlc2VudCBwYWdlClsgIDEyOC42MjU4NDJdIFBHRCAwIFA0RCAw ClsgIDEyOC42Mjc1ODVdIE9vcHM6IDAwMDIgWyMxXSBTTVAgTk9QVEkKWyAgMTI4LjYyOTg3MV0g Q1BVOiAxMiBQSUQ6IDU0NCBDb21tOiBicmVhay1ibGt0cmFjZSBUYWludGVkOiBHICAgICAgICAg ICAgRSAgICAgNS43LjAtcmMyLW5leHQtMjAyMDA0MjArICMxNjQKWyAgMTI4LjYzNTU5NV0gSGFy ZHdhcmUgbmFtZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJWCwgMTk5NiksIEJJT1Mg MS4xMy4wLTEgMDQvMDEvMjAxNApbICAxMjguNjQwNDcxXSBSSVA6IDAwMTA6ZG93bl93cml0ZSsw eDE1LzB4NDAKWyAgMTI4LjY0MzA0MV0gQ29kZTogZWIgY2EgZTggYWUgMjIgOGQgZmYgY2MgY2Mg Y2MgY2MgY2MgY2MgY2MgY2MgY2MgY2MgY2MgY2MKICAgICAgICAgICAgICAgY2MgY2MgMGYgMWYg NDQgMDAgMDAgNTUgNDggODkgZmQgZTggNTIgZGIgZmYgZmYgMzEgYzAgYmEgMDEgMDAKICAgICAg ICAgICAgICAgMDAgMDAgPGYwPiA0OCAwZiBiMSA1NSAwMCA3NSAwZiA2NSA0OCA4YiAwNCAyNSBj MCA4YiAwMSAwMCA0OCA4OQogICAgICAgICAgICAgICA0NSAwOCA1ZApbICAxMjguNjUwMTgwXSBS U1A6IDAwMTg6ZmZmZmE5YzNjMDVlYmQ3OCBFRkxBR1M6IDAwMDEwMjQ2ClsgIDEyOC42NTE4MjBd IFJBWDogMDAwMDAwMDAwMDAwMDAwMCBSQlg6IGZmZmY4YWU5YTYzNzAyNDAgUkNYOiBmZmZmZmY4 MTAwMDAwMDAwClsgIDEyOC42NTM5NDJdIFJEWDogMDAwMDAwMDAwMDAwMDAwMSBSU0k6IGZmZmZm ZjgxMDAwMDAwMDAgUkRJOiAwMDAwMDAwMDAwMDAwMGEwClsgIDEyOC42NTU3MjBdIFJCUDogMDAw MDAwMDAwMDAwMDBhMCBSMDg6IDAwMDAwMDAwMDAwMDAwMDIgUjA5OiBmZmZmOGFlOWFmZDJkM2Qw ClsgIDEyOC42NTc0MDBdIFIxMDogMDAwMDAwMDAwMDAwMDA1NiBSMTE6IDAwMDAwMDAwMDAwMDAw MDAgUjEyOiAwMDAwMDAwMDAwMDAwMDAwClsgIDEyOC42NTkwOTldIFIxMzogMDAwMDAwMDAwMDAw MDAwMCBSMTQ6IDAwMDAwMDAwMDAwMDAwMDMgUjE1OiAwMDAwMDAwMDAwMDAwMGEwClsgIDEyOC42 NjA1MDBdIEZTOiAgMDAwMDdmZWJmZDk5NTU0MCgwMDAwKSBHUzpmZmZmOGFlOWFmZDAwMDAwKDAw MDApIGtubEdTOjAwMDAwMDAwMDAwMDAwMDAKWyAgMTI4LjY2MjIwNF0gQ1M6ICAwMDEwIERTOiAw MDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzMwpbICAxMjguNjYzNDI2XSBDUjI6IDAw MDAwMDAwMDAwMDAwYTAgQ1IzOiAwMDAwMDAwNDIwMDQyMDAzIENSNDogMDAwMDAwMDAwMDM2MGVl MApbICAxMjguNjY0Nzc2XSBEUjA6IDAwMDAwMDAwMDAwMDAwMDAgRFIxOiAwMDAwMDAwMDAwMDAw MDAwIERSMjogMDAwMDAwMDAwMDAwMDAwMApbICAxMjguNjY2MDIyXSBEUjM6IDAwMDAwMDAwMDAw MDAwMDAgRFI2OiAwMDAwMDAwMGZmZmUwZmYwIERSNzogMDAwMDAwMDAwMDAwMDQwMApbICAxMjgu NjY3MjgyXSBDYWxsIFRyYWNlOgpbICAxMjguNjY3ODAxXSAgc2ltcGxlX3JlY3Vyc2l2ZV9yZW1v dmFsKzB4NGUvMHgyZTAKWyAgMTI4LjY2ODY2M10gID8gZGVidWdmc19yZW1vdmUrMHg2MC8weDYw ClsgIDEyOC42NjkzNjhdICBkZWJ1Z2ZzX3JlbW92ZSsweDQwLzB4NjAKWyAgMTI4LjY2OTk4NV0g IGJsa190cmFjZV9mcmVlKzB4ZC8weDUwClsgIDEyOC42NzA1OTNdICBfX2Jsa190cmFjZV9yZW1v dmUrMHgyNy8weDQwClsgIDEyOC42NzEyNzRdICBibGtfdHJhY2Vfc2h1dGRvd24rMHgzMC8weDQw ClsgIDEyOC42NzE5MzVdICBibGtfcmVsZWFzZV9xdWV1ZSsweDk1LzB4ZjAKWyAgMTI4LjY3MjU4 OV0gIGtvYmplY3RfcHV0KzB4YTUvMHgxYjAKWyAgMTI4LjY3MzE4OF0gIGRpc2tfcmVsZWFzZSsw eGEyLzB4YzAKWyAgMTI4LjY3Mzc4Nl0gIGRldmljZV9yZWxlYXNlKzB4MjgvMHg4MApbICAxMjgu Njc0Mzc2XSAga29iamVjdF9wdXQrMHhhNS8weDFiMApbICAxMjguNjc0OTE1XSAgbG9vcF9yZW1v dmUrMHgzOS8weDUwIFtsb29wXQpbICAxMjguNjc1NTExXSAgbG9vcF9jb250cm9sX2lvY3RsKzB4 MTEzLzB4MTMwIFtsb29wXQpbICAxMjguNjc2MTk5XSAga3N5c19pb2N0bCsweDg3LzB4YzAKWyAg MTI4LjY3NjcwOF0gIF9feDY0X3N5c19pb2N0bCsweDE2LzB4MjAKWyAgMTI4LjY3NzI3NF0gIGRv X3N5c2NhbGxfNjQrMHg1Mi8weDE4MApbICAxMjguNjc3ODIzXSAgZW50cnlfU1lTQ0FMTF82NF9h ZnRlcl9od2ZyYW1lKzB4NDQvMHhhOQoKVGhlIGNvbW1vbiB0aGVtZSBoZXJlIGlzOgoKZGVidWdm czogRGlyZWN0b3J5ICdsb29wMCcgd2l0aCBwYXJlbnQgJ2Jsb2NrJyBhbHJlYWR5IHByZXNlbnQK ClRoaXMgY3Jhc2ggaGFwcGVucyBiZWNhdXNlIG9mIGhvdyBibGt0cmFjZSB1c2VzIHRoZSBkZWJ1 Z2ZzIGRpcmVjdG9yeQp3aGVyZSBpdCBwbGFjZXMgaXRzIGZpbGVzLiBVcG9uIGluaXQgd2UgYWx3 YXlzIGNyZWF0ZSB0aGUgc2FtZSBkaXJlY3RvcnkKd2hpY2ggd291bGQgYmUgbmVlZGVkIGJ5IGJs a3RyYWNlIGJ1dCB3ZSBvbmx5IGRvIHRoaXMgZm9yIG1ha2VfcmVxdWVzdApkcml2ZXJzIChtdWx0 aXF1ZXVlKSBibG9jayBkcml2ZXJzLiBXaGVuIHlvdSByYWNlIGEgcmVtb3ZhbCBvZiB0aGVzZQpk ZXZpY2VzIHdpdGggYSBibGt0cmFjZSBzZXR1cCB5b3UgZW5kIHVwIGluIGEgc2l0dWF0aW9uIHdo ZXJlIHRoZQptYWtlX3JlcXVlc3QgcmVjdXJzaXZlIGRlYnVnZnMgcmVtb3ZhbCB3aWxsIHN3ZWVw IGF3YXkgdGhlIGJsa3RyYWNlCmZpbGVzIGFuZCB0aGVuIGxhdGVyIGJsa3RyYWNlIHdpbGwgYWxz byB0cnkgdG8gcmVtb3ZlIGluZGl2aWR1YWwKZGVudHJpZXMgd2hpY2ggYXJlIGFscmVhZHkgTlVM TC4gVGhlIGludmVyc2UgaXMgYWxzbyBwb3NzaWJsZSBhbmQgaGVuY2UKdGhlIHR3byB0eXBlcyBv ZiB1c2UgYWZ0ZXIgZnJlZXMuCgpXZSBkb24ndCBjcmVhdGUgdGhlIGJsb2NrIGRlYnVnZnMgZGly ZWN0b3J5IG9uIGluaXQgZm9yIHRoZXNlIHR5cGVzIG9mCmJsb2NrIGRldmljZXM6CgogICogcmVx dWVzdC1iYXNlZCBibG9jayBkcml2ZXIgYmxvY2sgZGV2aWNlcwogICogZXZlcnkgcG9zc2libGUg cGFydGl0aW9uCiAgKiBzY3NpLWdlbmVyaWMKCkFuZCBzbywgdGhpcyByYWNlIHNob3VsZCBpbiB0 aGVvcnkgb25seSBiZSBwb3NzaWJsZSB3aXRoIG1ha2VfcmVxdWVzdApkcml2ZXJzLgoKV2UgY2Fu IGZpeCB0aGUgVUFGIGJ5IHNpbXBseSByZS11c2luZyB0aGUgZGVidWdmcyBkaXJlY3RvcnkgZm9y Cm1ha2VfcmVxdWVzdCBkcml2ZXJzIChtdWx0aXF1ZXVlKSBhbmQgb25seSBjcmVhdGluZyB0aGUg ZXBoZW1lcmFsCmRpcmVjdG9yeSBmb3IgdGhlIG90aGVyIHR5cGUgb2YgYmxvY2sgZGV2aWNlcy4g VGhlIG5ldyBjbGFyaWZpY2F0aW9ucwpvbiByZWx5aW5nIG9uIHRoZSBxLT5ibGtfdHJhY2VfbXV0 ZXggKmFuZCogYWxzbyBjaGVja2luZyBmb3IgcS0+YmxrX3RyYWNlCipwcmlvciogdG8gcHJvY2Vz c2luZyBhIGJsa3RyYWNlIGVuc3VyZXMgdGhlIGRlYnVnZnMgZGlyZWN0b3JpZXMgYXJlCm9ubHkg Y3JlYXRlZCBpZiBubyBwb3NzaWJsZSBkaXJlY3RvcnkgbmFtZSBjbGFzaGVzIGFyZSBwb3NzaWJs ZS4KClRoaXMgZ29lcyB0ZXN0ZWQgd2l0aDoKCiAgbyBudm1lIHBhcnRpdGlvbnMKICBvIElTQ1NJ IHdpdGggdGd0LCBhbmQgYmxrdHJhY2luZyBhZ2FpbnN0IHNjc2ktZ2VuZXJpYyB3aXRoOgogICAg byBibG9jawogICAgbyB0YXBlCiAgICBvIGNkcm9tCiAgICBvIG1lZGlhIGNoYW5nZXIKICBvIGJs a3Rlc3RzCgpUaGlzIHBhdGNoIGlzIHBhcnQgb2YgdGhlIHdvcmsgd2hpY2ggZGlzcHV0ZXMgdGhl IHNldmVyaXR5IG9mCkNWRS0yMDE5LTE5NzcwIHdoaWNoIHNob3dzIHRoaXMgaXNzdWUgaXMgbm90 IGEgY29yZSBkZWJ1Z2ZzIGlzc3VlLCBidXQKYSBtaXN1c2Ugb2YgZGVidWdmcyB3aXRoaW4gYmxr dGFjZS4KCkZpeGVzOiA2YWM5MzExN2FiMDAgKCJibGt0cmFjZTogdXNlIGV4aXN0aW5nIGRpc2sg ZGVidWdmcyBkaXJlY3RvcnkiKQpSZXBvcnRlZC1ieTogc3l6Ym90KzYwMzI5NGFmMmQwMWFjZmRk NmRhQHN5emthbGxlci5hcHBzcG90bWFpbC5jb20KU2lnbmVkLW9mZi1ieTogTHVpcyBDaGFtYmVy bGFpbiA8bWNncm9mQGtlcm5lbC5vcmc+ClJldmlld2VkLWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8 aGNoQGxzdC5kZT4KQ2M6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgpDYzog T21hciBTYW5kb3ZhbCA8b3NhbmRvdkBmYi5jb20+CkNjOiBIYW5uZXMgUmVpbmVja2UgPGhhcmVA c3VzZS5jb20+CkNjOiBOaWNvbGFpIFN0YW5nZSA8bnN0YW5nZUBzdXNlLmRlPgpDYzogR3JlZyBL cm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KQ2M6IE1pY2hhbCBIb2Nr byA8bWhvY2tvQGtlcm5lbC5vcmc+CkNjOiAiTWFydGluIEsuIFBldGVyc2VuIiA8bWFydGluLnBl dGVyc2VuQG9yYWNsZS5jb20+CkNjOiAiSmFtZXMgRS5KLiBCb3R0b21sZXkiIDxqZWpiQGxpbnV4 LmlibS5jb20+CkNjOiB5dSBrdWFpIDx5dWt1YWkzQGh1YXdlaS5jb20+ClNpZ25lZC1vZmYtYnk6 IEplbnMgQXhib2UgPGF4Ym9lQGtlcm5lbC5kaz4KW2J3aDogQmFja3BvcnRlZCB0byA0LjE5OiBv cGVuLWNvZGUgcXVldWVfaXNfbXEoKV0KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVu Lmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQoga2VybmVsL3RyYWNlL2Jsa3RyYWNlLmMg fCAxOCArKysrKysrKysrKystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCsp LCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS9ibGt0cmFjZS5jIGIv a2VybmVsL3RyYWNlL2Jsa3RyYWNlLmMKaW5kZXggMTQ0MmY2MTUyYWJjLi42NDUwNDhiYjFlODYg MTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS9ibGt0cmFjZS5jCisrKyBiL2tlcm5lbC90cmFjZS9i bGt0cmFjZS5jCkBAIC01MjEsMTAgKzUyMSwxOCBAQCBzdGF0aWMgaW50IGRvX2Jsa190cmFjZV9z ZXR1cChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgY2hhciAqbmFtZSwgZGV2X3QgZGV2LAogCWlm ICghYnQtPm1zZ19kYXRhKQogCQlnb3RvIGVycjsKIAotCXJldCA9IC1FTk9FTlQ7Ci0KLQlkaXIg PSBkZWJ1Z2ZzX2xvb2t1cChidXRzLT5uYW1lLCBibGtfZGVidWdmc19yb290KTsKLQlpZiAoIWRp cikKKyNpZmRlZiBDT05GSUdfQkxLX0RFQlVHX0ZTCisJLyoKKwkgKiBXaGVuIHRyYWNpbmcgd2hv bGUgbWFrZV9yZXF1ZXN0IGRyaXZlcnMgKG11bHRpcXVldWUpIGJsb2NrIGRldmljZXMsCisJICog cmV1c2UgdGhlIGV4aXN0aW5nIGRlYnVnZnMgZGlyZWN0b3J5IGNyZWF0ZWQgYnkgdGhlIGJsb2Nr IGxheWVyIG9uCisJICogaW5pdC4gRm9yIHJlcXVlc3QtYmFzZWQgYmxvY2sgZGV2aWNlcywgYWxs IHBhcnRpdGlvbnMgYmxvY2sgZGV2aWNlcywKKwkgKiBhbmQgc2NzaS1nZW5lcmljIGJsb2NrIGRl dmljZXMgd2UgY3JlYXRlIGEgdGVtcG9yYXJ5IG5ldyBkZWJ1Z2ZzCisJICogZGlyZWN0b3J5IHRo YXQgd2lsbCBiZSByZW1vdmVkIG9uY2UgdGhlIHRyYWNlIGVuZHMuCisJICovCisJaWYgKHEtPm1x X29wcyAmJiBiZGV2ICYmIGJkZXYgPT0gYmRldi0+YmRfY29udGFpbnMpCisJCWRpciA9IHEtPmRl YnVnZnNfZGlyOworCWVsc2UKKyNlbmRpZgogCQlidC0+ZGlyID0gZGlyID0gZGVidWdmc19jcmVh dGVfZGlyKGJ1dHMtPm5hbWUsIGJsa19kZWJ1Z2ZzX3Jvb3QpOwogCWlmICghZGlyKQogCQlnb3Rv IGVycjsKQEAgLTU4Myw4ICs1OTEsNiBAQCBzdGF0aWMgaW50IGRvX2Jsa190cmFjZV9zZXR1cChz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgY2hhciAqbmFtZSwgZGV2X3QgZGV2LAogCiAJcmV0ID0g MDsKIGVycjoKLQlpZiAoZGlyICYmICFidC0+ZGlyKQotCQlkcHV0KGRpcik7CiAJaWYgKHJldCkK IAkJYmxrX3RyYWNlX2ZyZWUoYnQpOwogCXJldHVybiByZXQ7CgpGcm9tIGIzOWM4ZmMwOGE3NzZj ZTc0ODdjZTYzMjY4MjNiZjEzNzE2M2MyZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IFF1IFdlbnJ1byA8d3F1QHN1c2UuY29tPgpEYXRlOiBGcmksIDI1IEphbiAyMDE5IDEzOjA5OjE1 ICswODAwClN1YmplY3Q6IGJ0cmZzOiBleHRlbnRfaW86IEtpbGwgdGhlIGZvcndhcmQgZGVjbGFy YXRpb24gb2YgZmx1c2hfd3JpdGVfYmlvCgpjb21taXQgYmI1OGViOWUxNjdkMDg3Y2M1MThmN2E3 MWMzYzAwZjE2NzE5NThkYSB1cHN0cmVhbS4KClRoZXJlIGlzIG5vIG5lZWQgdG8gZm9yd2FyZCBk ZWNsYXJlIGZsdXNoX3dyaXRlX2JpbygpLCBhcyBpdCBvbmx5CmRlcGVuZHMgb24gc3VibWl0X29u ZV9iaW8oKS4gIEJvdGggb2YgdGhlbSBhcmUgcHJldHR5IHNtYWxsLCBqdXN0IG1vdmUKdGhlbSB0 byBraWxsIHRoZSBmb3J3YXJkIGRlY2xhcmF0aW9uLgoKUmV2aWV3ZWQtYnk6IE5pa29sYXkgQm9y aXNvdiA8bmJvcmlzb3ZAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBKb2hhbm5lcyBUaHVtc2hpcm4g PGp0aHVtc2hpcm5Ac3VzZS5kZT4KU2lnbmVkLW9mZi1ieTogUXUgV2VucnVvIDx3cXVAc3VzZS5j b20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KW2J3aDog Q2hlcnJ5LXBpY2tlZCBmb3IgNC4xOSB0byBlYXNlIGJhY2twb3J0aW5nIGxhdGVyIGZpeGVzXQpT aWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51 az4KLS0tCiBmcy9idHJmcy9leHRlbnRfaW8uYyB8IDY2ICsrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwg MzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMgYi9mcy9i dHJmcy9leHRlbnRfaW8uYwppbmRleCA4MmQ1OTdiMTYxNTIuLjEyOGRhMDM3MjFkMCAxMDA2NDQK LS0tIGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMKKysrIGIvZnMvYnRyZnMvZXh0ZW50X2lvLmMKQEAg LTEzOCw3ICsxMzgsMzggQEAgc3RhdGljIGludCBhZGRfZXh0ZW50X2NoYW5nZXNldChzdHJ1Y3Qg ZXh0ZW50X3N0YXRlICpzdGF0ZSwgdW5zaWduZWQgYml0cywKIAlyZXR1cm4gcmV0OwogfQogCi1z dGF0aWMgdm9pZCBmbHVzaF93cml0ZV9iaW8oc3RydWN0IGV4dGVudF9wYWdlX2RhdGEgKmVwZCk7 CitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBzdWJtaXRfb25lX2JpbyhzdHJ1Y3QgYmlvICpiaW8s IGludCBtaXJyb3JfbnVtLAorCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGJpb19mbGFncykKK3sK KwlibGtfc3RhdHVzX3QgcmV0ID0gMDsKKwlzdHJ1Y3QgYmlvX3ZlYyAqYnZlYyA9IGJpb19sYXN0 X2J2ZWNfYWxsKGJpbyk7CisJc3RydWN0IHBhZ2UgKnBhZ2UgPSBidmVjLT5idl9wYWdlOworCXN0 cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSA9IGJpby0+YmlfcHJpdmF0ZTsKKwl1NjQgc3RhcnQ7 CisKKwlzdGFydCA9IHBhZ2Vfb2Zmc2V0KHBhZ2UpICsgYnZlYy0+YnZfb2Zmc2V0OworCisJYmlv LT5iaV9wcml2YXRlID0gTlVMTDsKKworCWlmICh0cmVlLT5vcHMpCisJCXJldCA9IHRyZWUtPm9w cy0+c3VibWl0X2Jpb19ob29rKHRyZWUtPnByaXZhdGVfZGF0YSwgYmlvLAorCQkJCQkgICBtaXJy b3JfbnVtLCBiaW9fZmxhZ3MsIHN0YXJ0KTsKKwllbHNlCisJCWJ0cmZzaWNfc3VibWl0X2Jpbyhi aW8pOworCisJcmV0dXJuIGJsa19zdGF0dXNfdG9fZXJybm8ocmV0KTsKK30KKworc3RhdGljIHZv aWQgZmx1c2hfd3JpdGVfYmlvKHN0cnVjdCBleHRlbnRfcGFnZV9kYXRhICplcGQpCit7CisJaWYg KGVwZC0+YmlvKSB7CisJCWludCByZXQ7CisKKwkJcmV0ID0gc3VibWl0X29uZV9iaW8oZXBkLT5i aW8sIDAsIDApOworCQlCVUdfT04ocmV0IDwgMCk7IC8qIC1FTk9NRU0gKi8KKwkJZXBkLT5iaW8g PSBOVUxMOworCX0KK30KIAogaW50IF9faW5pdCBleHRlbnRfaW9faW5pdCh2b2lkKQogewpAQCAt MjcxMCwyOCArMjc0MSw2IEBAIHN0cnVjdCBiaW8gKmJ0cmZzX2Jpb19jbG9uZV9wYXJ0aWFsKHN0 cnVjdCBiaW8gKm9yaWcsIGludCBvZmZzZXQsIGludCBzaXplKQogCXJldHVybiBiaW87CiB9CiAK LXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIHN1Ym1pdF9vbmVfYmlvKHN0cnVjdCBiaW8gKmJpbywg aW50IG1pcnJvcl9udW0sCi0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzKQotewot CWJsa19zdGF0dXNfdCByZXQgPSAwOwotCXN0cnVjdCBiaW9fdmVjICpidmVjID0gYmlvX2xhc3Rf YnZlY19hbGwoYmlvKTsKLQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGJ2ZWMtPmJ2X3BhZ2U7Ci0Jc3Ry dWN0IGV4dGVudF9pb190cmVlICp0cmVlID0gYmlvLT5iaV9wcml2YXRlOwotCXU2NCBzdGFydDsK LQotCXN0YXJ0ID0gcGFnZV9vZmZzZXQocGFnZSkgKyBidmVjLT5idl9vZmZzZXQ7Ci0KLQliaW8t PmJpX3ByaXZhdGUgPSBOVUxMOwotCi0JaWYgKHRyZWUtPm9wcykKLQkJcmV0ID0gdHJlZS0+b3Bz LT5zdWJtaXRfYmlvX2hvb2sodHJlZS0+cHJpdmF0ZV9kYXRhLCBiaW8sCi0JCQkJCSAgIG1pcnJv cl9udW0sIGJpb19mbGFncywgc3RhcnQpOwotCWVsc2UKLQkJYnRyZnNpY19zdWJtaXRfYmlvKGJp byk7Ci0KLQlyZXR1cm4gYmxrX3N0YXR1c190b19lcnJubyhyZXQpOwotfQotCiAvKgogICogQG9w ZjoJYmlvIFJFUV9PUF8qIGFuZCBSRVFfKiBmbGFncyBhcyBvbmUgdmFsdWUKICAqIEB0cmVlOgl0 cmVlIHNvIHdlIGNhbiBjYWxsIG91ciBtZXJnZV9iaW8gaG9vawpAQCAtNDAzMywxNyArNDA0Miw2 IEBAIHN0YXRpYyBpbnQgZXh0ZW50X3dyaXRlX2NhY2hlX3BhZ2VzKHN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGZsdXNoX3dyaXRl X2JpbyhzdHJ1Y3QgZXh0ZW50X3BhZ2VfZGF0YSAqZXBkKQotewotCWlmIChlcGQtPmJpbykgewot CQlpbnQgcmV0OwotCi0JCXJldCA9IHN1Ym1pdF9vbmVfYmlvKGVwZC0+YmlvLCAwLCAwKTsKLQkJ QlVHX09OKHJldCA8IDApOyAvKiAtRU5PTUVNICovCi0JCWVwZC0+YmlvID0gTlVMTDsKLQl9Ci19 Ci0KIGludCBleHRlbnRfd3JpdGVfZnVsbF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qg d3JpdGViYWNrX2NvbnRyb2wgKndiYykKIHsKIAlpbnQgcmV0OwoKRnJvbSAxNjM5Nzc0ZWM3NTQ0 ZTE1Y2YwNTdhY2E1MTUxNzI0ZGQwOTkxOTc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KRGF0ZTogV2VkLCAyMCBNYXIgMjAxOSAxNDoyNzo0 MSArMDgwMApTdWJqZWN0OiBidHJmczogZXh0ZW50X2lvOiBNb3ZlIHRoZSBCVUdfT04oKSBpbiBm bHVzaF93cml0ZV9iaW8oKSBvbmUgbGV2ZWwgdXAKCmNvbW1pdCBmNDM0MDYyMmUwMjI2MWZhZTU5 OWUzZGE5MzZmZjQ4MDhiNDE4MTczIHVwc3RyZWFtLgoKV2UgaGF2ZSBhIEJVR19PTigpIGluIGZs dXNoX3dyaXRlX2JpbygpIHRvIGhhbmRsZSB0aGUgcmV0dXJuIHZhbHVlIG9mCnN1Ym1pdF9vbmVf YmlvKCkuCgpNb3ZlIHRoZSBCVUdfT04oKSBvbmUgbGV2ZWwgdXAgdG8gYWxsIGl0cyBjYWxsZXJz LgoKVGhpcyBwYXRjaCB3aWxsIGludHJvZHVjZSB0ZW1wb3JhcnkgdmFyaWFibGUsIEBmbHVzaF9y ZXQgdG8ga2VlcCBjb2RlCmNoYW5nZSBtaW5pbWFsIGluIHRoaXMgcGF0Y2guIFRoYXQgdmFyaWFi bGUgd2lsbCBiZSBjbGVhbmVkIHVwIHdoZW4KZW5oYW5jaW5nIHRoZSBlcnJvciBoYW5kbGluZyBs YXRlci4KClJldmlld2VkLWJ5OiBKb2hhbm5lcyBUaHVtc2hpcm4gPGp0aHVtc2hpcm5Ac3VzZS5k ZT4KU2lnbmVkLW9mZi1ieTogUXUgV2VucnVvIDx3cXVAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBE YXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJi YSA8ZHN0ZXJiYUBzdXNlLmNvbT4KW2J3aDogQ2hlcnJ5LXBpY2tlZCBmb3IgNC4xOSB0byBlYXNl IGJhY2twb3J0aW5nIGxhdGVyIGZpeGVzXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxi ZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy9leHRlbnRfaW8uYyB8 IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZnMvYnRyZnMvZXh0ZW50X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8uYwppbmRleCAxMjhkYTAz NzIxZDAuLmU2ZGFiMzJlMzdmNCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMKKysr IGIvZnMvYnRyZnMvZXh0ZW50X2lvLmMKQEAgLTE2MCwxNSArMTYwLDI4IEBAIHN0YXRpYyBpbnQg X19tdXN0X2NoZWNrIHN1Ym1pdF9vbmVfYmlvKHN0cnVjdCBiaW8gKmJpbywgaW50IG1pcnJvcl9u dW0sCiAJcmV0dXJuIGJsa19zdGF0dXNfdG9fZXJybm8ocmV0KTsKIH0KIAotc3RhdGljIHZvaWQg Zmx1c2hfd3JpdGVfYmlvKHN0cnVjdCBleHRlbnRfcGFnZV9kYXRhICplcGQpCisvKgorICogU3Vi bWl0IGJpbyBmcm9tIGV4dGVudCBwYWdlIGRhdGEgdmlhIHN1Ym1pdF9vbmVfYmlvCisgKgorICog UmV0dXJuIDAgaWYgZXZlcnl0aGluZyBpcyBPSy4KKyAqIFJldHVybiA8MCBmb3IgZXJyb3IuCisg Ki8KK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGZsdXNoX3dyaXRlX2JpbyhzdHJ1Y3QgZXh0ZW50 X3BhZ2VfZGF0YSAqZXBkKQogewotCWlmIChlcGQtPmJpbykgewotCQlpbnQgcmV0OworCWludCBy ZXQgPSAwOwogCisJaWYgKGVwZC0+YmlvKSB7CiAJCXJldCA9IHN1Ym1pdF9vbmVfYmlvKGVwZC0+ YmlvLCAwLCAwKTsKLQkJQlVHX09OKHJldCA8IDApOyAvKiAtRU5PTUVNICovCisJCS8qCisJCSAq IENsZWFuIHVwIG9mIGVwZC0+YmlvIGlzIGhhbmRsZWQgYnkgaXRzIGVuZGlvIGZ1bmN0aW9uLgor CQkgKiBBbmQgZW5kaW8gaXMgZWl0aGVyIHRyaWdnZXJlZCBieSBzdWNjZXNzZnVsIGJpbyBleGVj dXRpb24KKwkJICogb3IgdGhlIGVycm9yIGhhbmRsZXIgb2Ygc3VibWl0IGJpbyBob29rLgorCQkg KiBTbyBhdCB0aGlzIHBvaW50LCBubyBtYXR0ZXIgd2hhdCBoYXBwZW5lZCwgd2UgZG9uJ3QgbmVl ZAorCQkgKiB0byBjbGVhbiB1cCBlcGQtPmJpby4KKwkJICovCiAJCWVwZC0+YmlvID0gTlVMTDsK IAl9CisJcmV0dXJuIHJldDsKIH0KIAogaW50IF9faW5pdCBleHRlbnRfaW9faW5pdCh2b2lkKQpA QCAtMzUzOCw3ICszNTUxLDggQEAgbG9ja19leHRlbnRfYnVmZmVyX2Zvcl9pbyhzdHJ1Y3QgZXh0 ZW50X2J1ZmZlciAqZWIsCiAKIAlpZiAoIWJ0cmZzX3RyeV90cmVlX3dyaXRlX2xvY2soZWIpKSB7 CiAJCWZsdXNoID0gMTsKLQkJZmx1c2hfd3JpdGVfYmlvKGVwZCk7CisJCXJldCA9IGZsdXNoX3dy aXRlX2JpbyhlcGQpOworCQlCVUdfT04ocmV0IDwgMCk7CiAJCWJ0cmZzX3RyZWVfbG9jayhlYik7 CiAJfQogCkBAIC0zNTQ3LDcgKzM1NjEsOCBAQCBsb2NrX2V4dGVudF9idWZmZXJfZm9yX2lvKHN0 cnVjdCBleHRlbnRfYnVmZmVyICplYiwKIAkJaWYgKCFlcGQtPnN5bmNfaW8pCiAJCQlyZXR1cm4g MDsKIAkJaWYgKCFmbHVzaCkgewotCQkJZmx1c2hfd3JpdGVfYmlvKGVwZCk7CisJCQlyZXQgPSBm bHVzaF93cml0ZV9iaW8oZXBkKTsKKwkJCUJVR19PTihyZXQgPCAwKTsKIAkJCWZsdXNoID0gMTsK IAkJfQogCQl3aGlsZSAoMSkgewpAQCAtMzU4OCw3ICszNjAzLDggQEAgbG9ja19leHRlbnRfYnVm ZmVyX2Zvcl9pbyhzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCiAKIAkJaWYgKCF0cnlsb2NrX3Bh Z2UocCkpIHsKIAkJCWlmICghZmx1c2gpIHsKLQkJCQlmbHVzaF93cml0ZV9iaW8oZXBkKTsKKwkJ CQlyZXQgPSBmbHVzaF93cml0ZV9iaW8oZXBkKTsKKwkJCQlCVUdfT04ocmV0IDwgMCk7CiAJCQkJ Zmx1c2ggPSAxOwogCQkJfQogCQkJbG9ja19wYWdlKHApOwpAQCAtMzc3OSw2ICszNzk1LDcgQEAg aW50IGJ0cmVlX3dyaXRlX2NhY2hlX3BhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n LAogCQkuc3luY19pbyA9IHdiYy0+c3luY19tb2RlID09IFdCX1NZTkNfQUxMLAogCX07CiAJaW50 IHJldCA9IDA7CisJaW50IGZsdXNoX3JldDsKIAlpbnQgZG9uZSA9IDA7CiAJaW50IG5yX3RvX3dy aXRlX2RvbmUgPSAwOwogCXN0cnVjdCBwYWdldmVjIHB2ZWM7CkBAIC0zODc4LDcgKzM4OTUsOCBA QCBpbnQgYnRyZWVfd3JpdGVfY2FjaGVfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBp bmcsCiAJCWluZGV4ID0gMDsKIAkJZ290byByZXRyeTsKIAl9Ci0JZmx1c2hfd3JpdGVfYmlvKCZl cGQpOworCWZsdXNoX3JldCA9IGZsdXNoX3dyaXRlX2JpbygmZXBkKTsKKwlCVUdfT04oZmx1c2hf cmV0IDwgMCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMzk3NSw3ICszOTkzLDggQEAgc3RhdGlj IGludCBleHRlbnRfd3JpdGVfY2FjaGVfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBp bmcsCiAJCQkgKiB0bXBmcyBmaWxlIG1hcHBpbmcKIAkJCSAqLwogCQkJaWYgKCF0cnlsb2NrX3Bh Z2UocGFnZSkpIHsKLQkJCQlmbHVzaF93cml0ZV9iaW8oZXBkKTsKKwkJCQlyZXQgPSBmbHVzaF93 cml0ZV9iaW8oZXBkKTsKKwkJCQlCVUdfT04ocmV0IDwgMCk7CiAJCQkJbG9ja19wYWdlKHBhZ2Up OwogCQkJfQogCkBAIC0zOTg1LDggKzQwMDQsMTAgQEAgc3RhdGljIGludCBleHRlbnRfd3JpdGVf Y2FjaGVfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCQl9CiAKIAkJCWlm ICh3YmMtPnN5bmNfbW9kZSAhPSBXQl9TWU5DX05PTkUpIHsKLQkJCQlpZiAoUGFnZVdyaXRlYmFj ayhwYWdlKSkKLQkJCQkJZmx1c2hfd3JpdGVfYmlvKGVwZCk7CisJCQkJaWYgKFBhZ2VXcml0ZWJh Y2socGFnZSkpIHsKKwkJCQkJcmV0ID0gZmx1c2hfd3JpdGVfYmlvKGVwZCk7CisJCQkJCUJVR19P TihyZXQgPCAwKTsKKwkJCQl9CiAJCQkJd2FpdF9vbl9wYWdlX3dyaXRlYmFjayhwYWdlKTsKIAkJ CX0KIApAQCAtNDA0NSw2ICs0MDY2LDcgQEAgc3RhdGljIGludCBleHRlbnRfd3JpdGVfY2FjaGVf cGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiBpbnQgZXh0ZW50X3dyaXRlX2Z1 bGxfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMp CiB7CiAJaW50IHJldDsKKwlpbnQgZmx1c2hfcmV0OwogCXN0cnVjdCBleHRlbnRfcGFnZV9kYXRh IGVwZCA9IHsKIAkJLmJpbyA9IE5VTEwsCiAJCS50cmVlID0gJkJUUkZTX0kocGFnZS0+bWFwcGlu Zy0+aG9zdCktPmlvX3RyZWUsCkBAIC00MDU0LDcgKzQwNzYsOCBAQCBpbnQgZXh0ZW50X3dyaXRl X2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3 YmMpCiAKIAlyZXQgPSBfX2V4dGVudF93cml0ZXBhZ2UocGFnZSwgd2JjLCAmZXBkKTsKIAotCWZs dXNoX3dyaXRlX2JpbygmZXBkKTsKKwlmbHVzaF9yZXQgPSBmbHVzaF93cml0ZV9iaW8oJmVwZCk7 CisJQlVHX09OKGZsdXNoX3JldCA8IDApOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTQwNjIsNiAr NDA4NSw3IEBAIGludCBleHRlbnRfd3JpdGVfbG9ja2VkX3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHU2NCBzdGFydCwgdTY0IGVuZCwKIAkJCSAgICAgIGludCBtb2RlKQogewogCWludCByZXQg PSAwOworCWludCBmbHVzaF9yZXQ7CiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBp bm9kZS0+aV9tYXBwaW5nOwogCXN0cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSA9ICZCVFJGU19J KGlub2RlKS0+aW9fdHJlZTsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKQEAgLTQwOTYsNyArNDEyMCw4 IEBAIGludCBleHRlbnRfd3JpdGVfbG9ja2VkX3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2 NCBzdGFydCwgdTY0IGVuZCwKIAkJc3RhcnQgKz0gUEFHRV9TSVpFOwogCX0KIAotCWZsdXNoX3dy aXRlX2JpbygmZXBkKTsKKwlmbHVzaF9yZXQgPSBmbHVzaF93cml0ZV9iaW8oJmVwZCk7CisJQlVH X09OKGZsdXNoX3JldCA8IDApOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTQxMDQsNiArNDEyOSw3 IEBAIGludCBleHRlbnRfd3JpdGVwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywK IAkJICAgICAgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpCiB7CiAJaW50IHJldCA9IDA7 CisJaW50IGZsdXNoX3JldDsKIAlzdHJ1Y3QgZXh0ZW50X3BhZ2VfZGF0YSBlcGQgPSB7CiAJCS5i aW8gPSBOVUxMLAogCQkudHJlZSA9ICZCVFJGU19JKG1hcHBpbmctPmhvc3QpLT5pb190cmVlLApA QCAtNDExMiw3ICs0MTM4LDggQEAgaW50IGV4dGVudF93cml0ZXBhZ2VzKHN0cnVjdCBhZGRyZXNz X3NwYWNlICptYXBwaW5nLAogCX07CiAKIAlyZXQgPSBleHRlbnRfd3JpdGVfY2FjaGVfcGFnZXMo bWFwcGluZywgd2JjLCAmZXBkKTsKLQlmbHVzaF93cml0ZV9iaW8oJmVwZCk7CisJZmx1c2hfcmV0 ID0gZmx1c2hfd3JpdGVfYmlvKCZlcGQpOworCUJVR19PTihmbHVzaF9yZXQgPCAwKTsKIAlyZXR1 cm4gcmV0OwogfQogCgpGcm9tIGMxNDBkZWI3Y2IwOTRiN2FhMmI2ZWYzZmVhYmYxMDRmN2MxMGUx YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRj aGluZ3NAY29kZXRoaW5rLmNvLnVrPgpEYXRlOiBNb24sIDEyIE9jdCAyMDIwIDIzOjE4OjExICsw MTAwClN1YmplY3Q6IFJldmVydCAiYnRyZnM6IGZsdXNoIHdyaXRlIGJpbyBpZiB3ZSBsb29wIGlu CiBleHRlbnRfd3JpdGVfY2FjaGVfcGFnZXMiCgpUaGlzIHJldmVydHMgY29tbWl0IDg2MDQ3Mzcx NGNiZTdmYmVkY2Y5MmJmZTNlYjZkNjlmYWU4Yzc0ZmYuICBUaGF0CmhhcyBhbiBpbmNvcnJlY3Qg dXBzdHJlYW0gY29tbWl0IHJlZmVyZW5jZSwgYW5kIHdhcyBtb2RpZmllZCBpbiBhIHdheQp0aGF0 IGNvbmZsaWN0cyB3aXRoIHNvbWUgb2xkZXIgZml4ZXMuICBXZSBjYW4gY2xlYW5seSBjaGVycnkt cGljayB0aGUKdXBzdHJlYW0gY29tbWl0ICphZnRlciogdGhvc2UgZml4ZXMuCgpTaWduZWQtb2Zm LWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBm cy9idHJmcy9leHRlbnRfaW8uYyB8IDggLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2V4dGVudF9pby5jIGIvZnMvYnRyZnMvZXh0 ZW50X2lvLmMKaW5kZXggZTZkYWIzMmUzN2Y0Li5mYThiY2NjYThmOGMgMTAwNjQ0Ci0tLSBhL2Zz L2J0cmZzL2V4dGVudF9pby5jCisrKyBiL2ZzL2J0cmZzL2V4dGVudF9pby5jCkBAIC00MDQ1LDE0 ICs0MDQ1LDYgQEAgc3RhdGljIGludCBleHRlbnRfd3JpdGVfY2FjaGVfcGFnZXMoc3RydWN0IGFk ZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCSAqLwogCQlzY2FubmVkID0gMTsKIAkJaW5kZXggPSAw OwotCi0JCS8qCi0JCSAqIElmIHdlJ3JlIGxvb3Bpbmcgd2UgY291bGQgcnVuIGludG8gYSBwYWdl IHRoYXQgaXMgbG9ja2VkIGJ5IGEKLQkJICogd3JpdGVyIGFuZCB0aGF0IHdyaXRlciBjb3VsZCBi ZSB3YWl0aW5nIG9uIHdyaXRlYmFjayBmb3IgYQotCQkgKiBwYWdlIGluIG91ciBjdXJyZW50IGJp bywgYW5kIHRodXMgZGVhZGxvY2ssIHNvIGZsdXNoIHRoZQotCQkgKiB3cml0ZSBiaW8gaGVyZS4K LQkJICovCi0JCWZsdXNoX3dyaXRlX2JpbyhlcGQpOwogCQlnb3RvIHJldHJ5OwogCX0KIAoKRnJv bSBhNDY1NTg1NTExYWE3Mzg1ZTE3M2MyMjJmZmNiODlmNDdhYTNiZDE0IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBKb3NlZiBCYWNpayA8am9zZWZAdG94aWNwYW5kYS5jb20+CkRhdGU6 IFRodSwgMjMgSmFuIDIwMjAgMTU6MzM6MDIgLTA1MDAKU3ViamVjdDogYnRyZnM6IGZsdXNoIHdy aXRlIGJpbyBpZiB3ZSBsb29wIGluIGV4dGVudF93cml0ZV9jYWNoZV9wYWdlcwoKY29tbWl0IDQy ZmZiMGJmNTg0YWU1YjZiMzhmNzIyNTlhZjFlMGVlNDE3YWM3N2YgdXBzdHJlYW0uCgpUaGVyZSBl eGlzdHMgYSBkZWFkbG9jayB3aXRoIHJhbmdlX2N5Y2xpYyB0aGF0IGhhcyBleGlzdGVkIGZvcmV2 ZXIuICBJZgp3ZSBsb29wIGFyb3VuZCB3aXRoIGEgYmlvIGFscmVhZHkgYnVpbHQgd2UgY291bGQg ZGVhZGxvY2sgd2l0aCBhIHdyaXRlcgp3aG8gaGFzIHRoZSBwYWdlIGxvY2tlZCB0aGF0IHdlJ3Jl IGF0dGVtcHRpbmcgdG8gd3JpdGUgYnV0IGlzIHdhaXRpbmcgb24KYSBwYWdlIGluIG91ciBiaW8g dG8gYmUgd3JpdHRlbiBvdXQuICBUaGUgdGFzayB0cmFjZXMgYXJlIGFzIGZvbGxvd3MKCiAgUElE OiAxMzI5ODc0ICBUQVNLOiBmZmZmODg5ZWJjZGYzODAwICBDUFU6IDMzICBDT01NQU5EOiAia3dv cmtlci91MTEzOjUiCiAgICMwIFtmZmZmYzkwMDI5N2JiNjU4XSBfX3NjaGVkdWxlIGF0IGZmZmZm ZmZmODFhNGMzM2YKICAgIzEgW2ZmZmZjOTAwMjk3YmI2ZTBdIHNjaGVkdWxlIGF0IGZmZmZmZmZm ODFhNGM2ZTMKICAgIzIgW2ZmZmZjOTAwMjk3YmI2ZjhdIGlvX3NjaGVkdWxlIGF0IGZmZmZmZmZm ODFhNGNhNDIKICAgIzMgW2ZmZmZjOTAwMjk3YmI3MDhdIF9fbG9ja19wYWdlIGF0IGZmZmZmZmZm ODExZjE0NWIKICAgIzQgW2ZmZmZjOTAwMjk3YmI3OThdIF9fcHJvY2Vzc19wYWdlc19jb250aWcg YXQgZmZmZmZmZmY4MTRiYzUwMgogICAjNSBbZmZmZmM5MDAyOTdiYjhjOF0gbG9ja19kZWxhbGxv Y19wYWdlcyBhdCBmZmZmZmZmZjgxNGJjNjg0CiAgICM2IFtmZmZmYzkwMDI5N2JiOTAwXSBmaW5k X2xvY2tfZGVsYWxsb2NfcmFuZ2UgYXQgZmZmZmZmZmY4MTRiZTlmZgogICAjNyBbZmZmZmM5MDAy OTdiYjlhMF0gd3JpdGVwYWdlX2RlbGFsbG9jIGF0IGZmZmZmZmZmODE0YmViZDAKICAgIzggW2Zm ZmZjOTAwMjk3YmJhMThdIF9fZXh0ZW50X3dyaXRlcGFnZSBhdCBmZmZmZmZmZjgxNGJmYmYyCiAg ICM5IFtmZmZmYzkwMDI5N2JiYTk4XSBleHRlbnRfd3JpdGVfY2FjaGVfcGFnZXMgYXQgZmZmZmZm ZmY4MTRiZmZiZAoKICBQSUQ6IDIxNjc5MDEgIFRBU0s6IGZmZmY4ODlkYzZhNTljMDAgIENQVTog MTQgIENPTU1BTkQ6CiAgImFpby1kaW8taW52YWxpZCIKICAgIzAgW2ZmZmZjOTAwM2I1MGJiMThd IF9fc2NoZWR1bGUgYXQgZmZmZmZmZmY4MWE0YzMzZgogICAjMSBbZmZmZmM5MDAzYjUwYmJhMF0g c2NoZWR1bGUgYXQgZmZmZmZmZmY4MWE0YzZlMwogICAjMiBbZmZmZmM5MDAzYjUwYmJiOF0gaW9f c2NoZWR1bGUgYXQgZmZmZmZmZmY4MWE0Y2E0MgogICAjMyBbZmZmZmM5MDAzYjUwYmJjOF0gd2Fp dF9vbl9wYWdlX2JpdCBhdCBmZmZmZmZmZjgxMWYyNGQ2CiAgICM0IFtmZmZmYzkwMDNiNTBiYzYw XSBwcmVwYXJlX3BhZ2VzIGF0IGZmZmZmZmZmODE0YjA1YTcKICAgIzUgW2ZmZmZjOTAwM2I1MGJj ZDhdIGJ0cmZzX2J1ZmZlcmVkX3dyaXRlIGF0IGZmZmZmZmZmODE0YjEzNTkKICAgIzYgW2ZmZmZj OTAwM2I1MGJkYjBdIGJ0cmZzX2ZpbGVfd3JpdGVfaXRlciBhdCBmZmZmZmZmZjgxNGI1OTMzCiAg ICM3IFtmZmZmYzkwMDNiNTBiZTM4XSBuZXdfc3luY193cml0ZSBhdCBmZmZmZmZmZjgxMjhmNmE4 CiAgICM4IFtmZmZmYzkwMDNiNTBiZWM4XSB2ZnNfd3JpdGUgYXQgZmZmZmZmZmY4MTI5MmI5ZAog ICAjOSBbZmZmZmM5MDAzYjUwYmYwMF0ga3N5c19wd3JpdGU2NCBhdCBmZmZmZmZmZjgxMjkzMDMy CgpJIHVzZWQgZHJnbiB0byBmaW5kIHRoZSByZXNwZWN0aXZlIHBhZ2VzIHdlIHdlcmUgc3R1Y2sg b24KCnBhZ2VfZW50cnkucGFnZSAweGZmZmZlYTAwZmJmYzc1MDAgaW5kZXggODE0OCBiaXQgMTUg cGlkIDIxNjc5MDEKcGFnZV9lbnRyeS5wYWdlIDB4ZmZmZmVhMDBmOWJiNzQwMCBpbmRleCA3Njgw IGJpdCAwIHBpZCAxMzI5ODc0CgpBcyB5b3UgY2FuIHNlZSB0aGUga3dvcmtlciBpcyB3YWl0aW5n IGZvciBiaXQgMCAoUEdfbG9ja2VkKSBvbiBpbmRleAo3NjgwLCBhbmQgYWlvLWRpby1pbnZhbGlk IGlzIHdhaXRpbmcgZm9yIGJpdCAxNSAoUEdfd3JpdGViYWNrKSBvbiBpbmRleAo4MTQ4LiAgYWlv LWRpby1pbnZhbGlkIGhhcyA3NjgwLCBhbmQgdGhlIGt3b3JrZXIgZXBkIGxvb2tzIGxpa2UgdGhl CmZvbGxvd2luZwoKICBjcmFzaD4gc3RydWN0IGV4dGVudF9wYWdlX2RhdGEgZmZmZmM5MDAyOTdi YmJiMAogIHN0cnVjdCBleHRlbnRfcGFnZV9kYXRhIHsKICAgIGJpbyA9IDB4ZmZmZjg4OWY3NDdl ZDgzMCwKICAgIHRyZWUgPSAweGZmZmY4ODllZWQ2YmE0NDgsCiAgICBleHRlbnRfbG9ja2VkID0g MCwKICAgIHN5bmNfaW8gPSAwCiAgfQoKUHJvYmFibHkgd29ydGggbWVudGlvbmluZyBhcyB3ZWxs IHRoYXQgaXQgd2FpdHMgZm9yIHdyaXRlYmFjayBvZiB0aGUKcGFnZSB0byBjb21wbGV0ZSB3aGls ZSBob2xkaW5nIGEgbG9jayBvbiBpdCAoYXQgcHJlcGFyZV9wYWdlcygpKS4KClVzaW5nIGRyZ24g SSB3YWxrZWQgdGhlIGJpbyBwYWdlcyBsb29raW5nIGZvciBwYWdlCjB4ZmZmZmVhMDBmYmZjNzUw MCB3aGljaCBpcyB0aGUgb25lIHdlJ3JlIHdhaXRpbmcgZm9yIHdyaXRlYmFjayBvbgoKICBiaW8g PSBPYmplY3QocHJvZywgJ3N0cnVjdCBiaW8nLCBhZGRyZXNzPTB4ZmZmZjg4OWY3NDdlZDgzMCkK ICBmb3IgaSBpbiByYW5nZSgwLCBiaW8uYmlfdmNudC52YWx1ZV8oKSk6CiAgICAgIGJ2ID0gYmlv LmJpX2lvX3ZlY1tpXQogICAgICBpZiBidi5idl9wYWdlLnZhbHVlXygpID09IDB4ZmZmZmVhMDBm YmZjNzUwMDoKCSAgcHJpbnQoIkZPVU5EIElUIikKCndoaWNoIHZhbGlkYXRlZCB3aGF0IEkgc3Vz cGVjdGVkLgoKVGhlIGZpeCBmb3IgdGhpcyBpcyBzaW1wbGUsIGZsdXNoIHRoZSBlcGQgYmVmb3Jl IHdlIGxvb3AgYmFjayBhcm91bmQgdG8KdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBkdXJpbmcg d3JpdGVvdXQuCgpGaXhlczogYjI5M2YwMmUxNDIzICgiQnRyZnM6IEFkZCB3cml0ZXBhZ2VzIHN1 cHBvcnQiKQpDQzogc3RhYmxlQHZnZXIua2VybmVsLm9yZyAjIDQuNCsKUmV2aWV3ZWQtYnk6IEZp bGlwZSBNYW5hbmEgPGZkbWFuYW5hQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBKb3NlZiBCYWNp ayA8am9zZWZAdG94aWNwYW5kYS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0 ZXJiYUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5n c0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZnMvYnRyZnMvZXh0ZW50X2lvLmMgfCAxMSArKysrKysr KysrLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnRfaW8uYyBiL2ZzL2J0cmZzL2V4dGVudF9pby5jCmlu ZGV4IGZhOGJjY2NhOGY4Yy4uYWY0MWY0MDdkZWU1IDEwMDY0NAotLS0gYS9mcy9idHJmcy9leHRl bnRfaW8uYworKysgYi9mcy9idHJmcy9leHRlbnRfaW8uYwpAQCAtNDA0NSw3ICs0MDQ1LDE2IEBA IHN0YXRpYyBpbnQgZXh0ZW50X3dyaXRlX2NhY2hlX3BhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNl ICptYXBwaW5nLAogCQkgKi8KIAkJc2Nhbm5lZCA9IDE7CiAJCWluZGV4ID0gMDsKLQkJZ290byBy ZXRyeTsKKworCQkvKgorCQkgKiBJZiB3ZSdyZSBsb29waW5nIHdlIGNvdWxkIHJ1biBpbnRvIGEg cGFnZSB0aGF0IGlzIGxvY2tlZCBieSBhCisJCSAqIHdyaXRlciBhbmQgdGhhdCB3cml0ZXIgY291 bGQgYmUgd2FpdGluZyBvbiB3cml0ZWJhY2sgZm9yIGEKKwkJICogcGFnZSBpbiBvdXIgY3VycmVu dCBiaW8sIGFuZCB0aHVzIGRlYWRsb2NrLCBzbyBmbHVzaCB0aGUKKwkJICogd3JpdGUgYmlvIGhl cmUuCisJCSAqLworCQlyZXQgPSBmbHVzaF93cml0ZV9iaW8oZXBkKTsKKwkJaWYgKCFyZXQpCisJ CQlnb3RvIHJldHJ5OwogCX0KIAogCWlmICh3YmMtPnJhbmdlX2N5Y2xpYyB8fCAod2JjLT5ucl90 b193cml0ZSA+IDAgJiYgcmFuZ2Vfd2hvbGUpKQoKRnJvbSAzMmViNWQ0ZjAzZTNiYWFlNDUwYjQ3 ZWRjNzEyZGY2NDI1ZTIxOWM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBRdSBXZW5y dW8gPHdxdUBzdXNlLmNvbT4KRGF0ZTogV2VkLCAyMCBNYXIgMjAxOSAxNDoyNzo0MiArMDgwMApT dWJqZWN0OiBidHJmczogZXh0ZW50X2lvOiBIYW5kbGUgZXJyb3JzIGJldHRlciBpbiBleHRlbnRf d3JpdGVfZnVsbF9wYWdlKCkKCmNvbW1pdCAzMDY1OTc2YjA0NWY3N2E5MTA4MDlmYTc2OTlmOTlh MWU3YzBkYmJiIHVwc3RyZWFtLgoKU2luY2Ugbm93IGZsdXNoX3dyaXRlX2JpbygpIGNvdWxkIHJl dHVybiBlcnJvciwga2lsbCB0aGUgQlVHX09OKCkgZmlyc3QuClRoZW4gZG9uJ3QgY2FsbCBmbHVz aF93cml0ZV9iaW8oKSB1bmNvbmRpdGlvbmFsbHksIGluc3RlYWQgd2UgY2hlY2sgdGhlCnJldHVy biB2YWx1ZSBmcm9tIF9fZXh0ZW50X3dyaXRlcGFnZSgpIGZpcnN0LgoKSWYgX19leHRlbnRfd3Jp dGVwYWdlKCkgZmFpbHMsIHdlIGRvIGNsZWFudXAsIGFuZCByZXR1cm4gZXJyb3Igd2l0aG91dApz dWJtaXR0aW5nIHRoZSBwb3NzaWJsZSBjb3JydXB0ZWQgb3IgaGFsZi1iYWtlZCBiaW8uCgpJZiBf X2V4dGVudF93cml0ZXBhZ2UoKSBzdWNjZXNzZXMsIHRoZW4gd2UgY2FsbCBmbHVzaF93cml0ZV9i aW8oKSBhbmQKcmV0dXJuIHRoZSByZXN1bHQuCgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8gPHdx dUBzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4K U2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpTaWduZWQtb2Zm LWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBm cy9idHJmcy9leHRlbnRfaW8uYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrKy0tLQogMSBmaWxl IGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZnMvYnRyZnMvZXh0ZW50X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8uYwppbmRleCBhZjQxZjQw N2RlZTUuLjBhYTdmYmFmYTEwNSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMKKysr IGIvZnMvYnRyZnMvZXh0ZW50X2lvLmMKQEAgLTE2MCw2ICsxNjAsMTYgQEAgc3RhdGljIGludCBf X211c3RfY2hlY2sgc3VibWl0X29uZV9iaW8oc3RydWN0IGJpbyAqYmlvLCBpbnQgbWlycm9yX251 bSwKIAlyZXR1cm4gYmxrX3N0YXR1c190b19lcnJubyhyZXQpOwogfQogCisvKiBDbGVhbnVwIHVu c3VibWl0dGVkIGJpb3MgKi8KK3N0YXRpYyB2b2lkIGVuZF93cml0ZV9iaW8oc3RydWN0IGV4dGVu dF9wYWdlX2RhdGEgKmVwZCwgaW50IHJldCkKK3sKKwlpZiAoZXBkLT5iaW8pIHsKKwkJZXBkLT5i aW8tPmJpX3N0YXR1cyA9IGVycm5vX3RvX2Jsa19zdGF0dXMocmV0KTsKKwkJYmlvX2VuZGlvKGVw ZC0+YmlvKTsKKwkJZXBkLT5iaW8gPSBOVUxMOworCX0KK30KKwogLyoKICAqIFN1Ym1pdCBiaW8g ZnJvbSBleHRlbnQgcGFnZSBkYXRhIHZpYSBzdWJtaXRfb25lX2JpbwogICoKQEAgLTM0NjEsNiAr MzQ3MSw5IEBAIHN0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sgaW50IF9fZXh0ZW50X3dyaXRlcGFn ZV9pbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLAogICogcmVjb3JkcyBhcmUgaW5zZXJ0ZWQgdG8gbG9j ayByYW5nZXMgaW4gdGhlIHRyZWUsIGFuZCBhcyBkaXJ0eSBhcmVhcwogICogYXJlIGZvdW5kLCB0 aGV5IGFyZSBtYXJrZWQgd3JpdGViYWNrLiAgVGhlbiB0aGUgbG9jayBiaXRzIGFyZSByZW1vdmVk CiAgKiBhbmQgdGhlIGVuZF9pbyBoYW5kbGVyIGNsZWFycyB0aGUgd3JpdGViYWNrIHJhbmdlcwor ICoKKyAqIFJldHVybiAwIGlmIGV2ZXJ5dGhpbmcgZ29lcyB3ZWxsLgorICogUmV0dXJuIDwwIGZv ciBlcnJvci4KICAqLwogc3RhdGljIGludCBfX2V4dGVudF93cml0ZXBhZ2Uoc3RydWN0IHBhZ2Ug KnBhZ2UsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjLAogCQkJICAgICAgc3RydWN0IGV4 dGVudF9wYWdlX2RhdGEgKmVwZCkKQEAgLTM1MjgsNiArMzU0MSw3IEBAIHN0YXRpYyBpbnQgX19l eHRlbnRfd3JpdGVwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRy b2wgKndiYywKIAkJZW5kX2V4dGVudF93cml0ZXBhZ2UocGFnZSwgcmV0LCBzdGFydCwgcGFnZV9l bmQpOwogCX0KIAl1bmxvY2tfcGFnZShwYWdlKTsKKwlBU1NFUlQocmV0IDw9IDApOwogCXJldHVy biByZXQ7CiAKIGRvbmVfdW5sb2NrZWQ6CkBAIC00MDY3LDcgKzQwODEsNiBAQCBzdGF0aWMgaW50 IGV4dGVudF93cml0ZV9jYWNoZV9wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywK IGludCBleHRlbnRfd3JpdGVfZnVsbF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3Jp dGViYWNrX2NvbnRyb2wgKndiYykKIHsKIAlpbnQgcmV0OwotCWludCBmbHVzaF9yZXQ7CiAJc3Ry dWN0IGV4dGVudF9wYWdlX2RhdGEgZXBkID0gewogCQkuYmlvID0gTlVMTCwKIAkJLnRyZWUgPSAm QlRSRlNfSShwYWdlLT5tYXBwaW5nLT5ob3N0KS0+aW9fdHJlZSwKQEAgLTQwNzYsOSArNDA4OSwx NCBAQCBpbnQgZXh0ZW50X3dyaXRlX2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0 IHdyaXRlYmFja19jb250cm9sICp3YmMpCiAJfTsKIAogCXJldCA9IF9fZXh0ZW50X3dyaXRlcGFn ZShwYWdlLCB3YmMsICZlcGQpOworCUFTU0VSVChyZXQgPD0gMCk7CisJaWYgKHJldCA8IDApIHsK KwkJZW5kX3dyaXRlX2JpbygmZXBkLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KIAotCWZsdXNo X3JldCA9IGZsdXNoX3dyaXRlX2JpbygmZXBkKTsKLQlCVUdfT04oZmx1c2hfcmV0IDwgMCk7CisJ cmV0ID0gZmx1c2hfd3JpdGVfYmlvKCZlcGQpOworCUFTU0VSVChyZXQgPD0gMCk7CiAJcmV0dXJu IHJldDsKIH0KIAoKRnJvbSA1YzJlZWY0NTBjODdlOTQyZTFkY2I2MjU1MjFkYTdmMTYzNjI2YjM2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4K RGF0ZTogV2VkLCAyMCBNYXIgMjAxOSAxNDoyNzo0MyArMDgwMApTdWJqZWN0OiBidHJmczogZXh0 ZW50X2lvOiBIYW5kbGUgZXJyb3JzIGJldHRlciBpbiBidHJlZV93cml0ZV9jYWNoZV9wYWdlcygp Cgpjb21taXQgMmI5NTJlZWE4MTNiMWY3ZTdkNGI5NzgyMjcxYWNkOTE2MjViOWJiOSB1cHN0cmVh bS4KCkluIGJ0cmVlX3dyaXRlX2NhY2hlX3BhZ2VzKCksIHdlIGNhbiBvbmx5IGdldCBAcmV0IDw9 IDAuCkFkZCBhbiBBU1NFUlQoKSBmb3IgaXQganVzdCBpbiBjYXNlLgoKVGhlbiBpbnN0ZWFkIG9m IHN1Ym1pdHRpbmcgdGhlIHdyaXRlIGJpbyBldmVuIHdlIGdvdCBzb21lIGVycm9yLCBjaGVjawp0 aGUgcmV0dXJuIHZhbHVlIGZpcnN0LgpJZiB3ZSBoYXZlIGFscmVhZHkgaGl0IHNvbWUgZXJyb3Is IGp1c3QgY2xlYW4gdXAgdGhlIGNvcnJ1cHRlZCBvcgpoYWxmLWJha2VkIGJpbywgYW5kIHJldHVy biBlcnJvci4KCklmIHRoZXJlIGlzIG5vIGVycm9yIHNvIGZhciwgdGhlbiBjYWxsIGZsdXNoX3dy aXRlX2JpbygpIGFuZCByZXR1cm4gdGhlCnJlc3VsdC4KClNpZ25lZC1vZmYtYnk6IFF1IFdlbnJ1 byA8d3F1QHN1c2UuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2Uu Y29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25l ZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgot LS0KIGZzL2J0cmZzL2V4dGVudF9pby5jIHwgOSArKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA2 IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0 ZW50X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8uYwppbmRleCAwYWE3ZmJhZmExMDUuLjgyMjUx NTg1NmFiMCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMKKysrIGIvZnMvYnRyZnMv ZXh0ZW50X2lvLmMKQEAgLTM4MDksNyArMzgwOSw2IEBAIGludCBidHJlZV93cml0ZV9jYWNoZV9w YWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAkJLnN5bmNfaW8gPSB3YmMtPnN5 bmNfbW9kZSA9PSBXQl9TWU5DX0FMTCwKIAl9OwogCWludCByZXQgPSAwOwotCWludCBmbHVzaF9y ZXQ7CiAJaW50IGRvbmUgPSAwOwogCWludCBucl90b193cml0ZV9kb25lID0gMDsKIAlzdHJ1Y3Qg cGFnZXZlYyBwdmVjOwpAQCAtMzkwOSw4ICszOTA4LDEyIEBAIGludCBidHJlZV93cml0ZV9jYWNo ZV9wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAkJaW5kZXggPSAwOwogCQln b3RvIHJldHJ5OwogCX0KLQlmbHVzaF9yZXQgPSBmbHVzaF93cml0ZV9iaW8oJmVwZCk7Ci0JQlVH X09OKGZsdXNoX3JldCA8IDApOworCUFTU0VSVChyZXQgPD0gMCk7CisJaWYgKHJldCA8IDApIHsK KwkJZW5kX3dyaXRlX2JpbygmZXBkLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKwlyZXQgPSBm bHVzaF93cml0ZV9iaW8oJmVwZCk7CiAJcmV0dXJuIHJldDsKIH0KIAoKRnJvbSBlYWM2OTA5YzU3 NGIxZWY5ZmQ5ZjMxNTIzMGVmMmVkZDkyMmZhZjNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KRGF0ZTogV2VkLCAyMCBNYXIgMjAxOSAxNDoy Nzo0NiArMDgwMApTdWJqZWN0OiBidHJmczogZXh0ZW50X2lvOiBhZGQgcHJvcGVyIGVycm9yIGhh bmRsaW5nIHRvCiBsb2NrX2V4dGVudF9idWZmZXJfZm9yX2lvKCkKCmNvbW1pdCAyZTNjMjUxMzZh ZGZiMjkzZDUxN2UxN2Y3NjFkM2I4YTQzYThmYzIyIHVwc3RyZWFtLgoKVGhpcyBmdW5jdGlvbiBu ZWVkcyBzb21lIGV4dHJhIGNoZWNrcyBvbiBsb2NrZWQgcGFnZXMgYW5kIGViLiAgRm9yIGVycm9y CmhhbmRsaW5nIHdlIG5lZWQgdG8gdW5sb2NrIGxvY2tlZCBwYWdlcyBhbmQgdGhlIGViLgoKVGhl cmUgaXMgYSByYXJlID4wIHJldHVybiB2YWx1ZSBicmFuY2gsIHdoZXJlIGFsbCBwYWdlcyBnZXQg bG9ja2VkCndoaWxlIHdyaXRlIGJpbyBpcyBub3QgZmx1c2hlZC4KClRoYW5rZnVsbHkgaXQncyBo YW5kbGVkIGJ5IHRoZSBvbmx5IGNhbGxlciwgYnRyZWVfd3JpdGVfY2FjaGVfcGFnZXMoKSwKYXMg bGF0ZXIgd3JpdGVfb25lX2ViKCkgY2FsbCB3aWxsIHRyaWdnZXIgc3VibWl0X29uZV9iaW8oKS4g IFNvIHRoZXJlCnNob3VsZG4ndCBiZSBhbnkgcHJvYmxlbS4KClNpZ25lZC1vZmYtYnk6IFF1IFdl bnJ1byA8d3F1QHN1c2UuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1 c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNp Z25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVr PgotLS0KIGZzL2J0cmZzL2V4dGVudF9pby5jIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKy0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnRfaW8uYyBiL2ZzL2J0cmZzL2V4dGVudF9pby5jCmlu ZGV4IDgyMjUxNTg1NmFiMC4uOTQ0YWMwNzIwODFkIDEwMDY0NAotLS0gYS9mcy9idHJmcy9leHRl bnRfaW8uYworKysgYi9mcy9idHJmcy9leHRlbnRfaW8uYwpAQCAtMzU1NCwxOSArMzU1NCwyNyBA QCB2b2lkIHdhaXRfb25fZXh0ZW50X2J1ZmZlcl93cml0ZWJhY2soc3RydWN0IGV4dGVudF9idWZm ZXIgKmViKQogCQkgICAgICAgVEFTS19VTklOVEVSUlVQVElCTEUpOwogfQogCisvKgorICogTG9j ayBlYiBwYWdlcyBhbmQgZmx1c2ggdGhlIGJpbyBpZiB3ZSBjYW4ndCB0aGUgbG9ja3MKKyAqCisg KiBSZXR1cm4gIDAgaWYgbm90aGluZyB3ZW50IHdyb25nCisgKiBSZXR1cm4gPjAgaXMgc2FtZSBh cyAwLCBleGNlcHQgYmlvIGlzIG5vdCBzdWJtaXR0ZWQKKyAqIFJldHVybiA8MCBpZiBzb21ldGhp bmcgd2VudCB3cm9uZywgbm8gcGFnZSBpcyBsb2NrZWQKKyAqLwogc3RhdGljIG5vaW5saW5lX2Zv cl9zdGFjayBpbnQKIGxvY2tfZXh0ZW50X2J1ZmZlcl9mb3JfaW8oc3RydWN0IGV4dGVudF9idWZm ZXIgKmViLAogCQkJICBzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJCSAgc3RydWN0 IGV4dGVudF9wYWdlX2RhdGEgKmVwZCkKIHsKLQlpbnQgaSwgbnVtX3BhZ2VzOworCWludCBpLCBu dW1fcGFnZXMsIGZhaWxlZF9wYWdlX25yOwogCWludCBmbHVzaCA9IDA7CiAJaW50IHJldCA9IDA7 CiAKIAlpZiAoIWJ0cmZzX3RyeV90cmVlX3dyaXRlX2xvY2soZWIpKSB7Ci0JCWZsdXNoID0gMTsK IAkJcmV0ID0gZmx1c2hfd3JpdGVfYmlvKGVwZCk7Ci0JCUJVR19PTihyZXQgPCAwKTsKKwkJaWYg KHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCQlmbHVzaCA9IDE7CiAJCWJ0cmZzX3RyZWVfbG9j ayhlYik7CiAJfQogCkBAIC0zNTc2LDcgKzM1ODQsOCBAQCBsb2NrX2V4dGVudF9idWZmZXJfZm9y X2lvKHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwKIAkJCXJldHVybiAwOwogCQlpZiAoIWZsdXNo KSB7CiAJCQlyZXQgPSBmbHVzaF93cml0ZV9iaW8oZXBkKTsKLQkJCUJVR19PTihyZXQgPCAwKTsK KwkJCWlmIChyZXQgPCAwKQorCQkJCXJldHVybiByZXQ7CiAJCQlmbHVzaCA9IDE7CiAJCX0KIAkJ d2hpbGUgKDEpIHsKQEAgLTM2MTgsNyArMzYyNywxMCBAQCBsb2NrX2V4dGVudF9idWZmZXJfZm9y X2lvKHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwKIAkJaWYgKCF0cnlsb2NrX3BhZ2UocCkpIHsK IAkJCWlmICghZmx1c2gpIHsKIAkJCQlyZXQgPSBmbHVzaF93cml0ZV9iaW8oZXBkKTsKLQkJCQlC VUdfT04ocmV0IDwgMCk7CisJCQkJaWYgKHJldCA8IDApIHsKKwkJCQkJZmFpbGVkX3BhZ2VfbnIg PSBpOworCQkJCQlnb3RvIGVycl91bmxvY2s7CisJCQkJfQogCQkJCWZsdXNoID0gMTsKIAkJCX0K IAkJCWxvY2tfcGFnZShwKTsKQEAgLTM2MjYsNiArMzYzOCwxMSBAQCBsb2NrX2V4dGVudF9idWZm ZXJfZm9yX2lvKHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwKIAl9CiAKIAlyZXR1cm4gcmV0Owor ZXJyX3VubG9jazoKKwkvKiBVbmxvY2sgYWxyZWFkeSBsb2NrZWQgcGFnZXMgKi8KKwlmb3IgKGkg PSAwOyBpIDwgZmFpbGVkX3BhZ2VfbnI7IGkrKykKKwkJdW5sb2NrX3BhZ2UoZWItPnBhZ2VzW2ld KTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBlbmRfZXh0ZW50X2J1ZmZlcl93cml0 ZWJhY2soc3RydWN0IGV4dGVudF9idWZmZXIgKmViKQoKRnJvbSA3ODJkNmU4ZmRlNWVmZTM2YTY5 MjE1NWZiNGQ0ZmYzNmZiZWEwOTE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxp cGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNlLmNvbT4KRGF0ZTogV2VkLCAxMSBTZXAgMjAxOSAxNzo0 MjowMCArMDEwMApTdWJqZWN0OiBCdHJmczogZml4IHVud3JpdHRlbiBleHRlbnQgYnVmZmVycyBh bmQgaGFuZ3Mgb24gZnV0dXJlIHdyaXRlYmFjawogYXR0ZW1wdHMKCmNvbW1pdCAxOGRmYTcxMTdh M2YzNzk4NjJkY2QzZjY3Y2FkZDY3ODAxM2JiOWRkIHVwc3RyZWFtLgoKVGhlIGxvY2tfZXh0ZW50 X2J1ZmZlcl9pbygpIHJldHVybnMgMSB0byB0aGUgY2FsbGVyIHRvIHRlbGwgaXQgZXZlcnl0aGlu Zwp3ZW50IGZpbmUgYW5kIHRoZSBjYWxsZXJzIG5lZWRzIHRvIHN0YXJ0IHdyaXRlYmFjayBmb3Ig dGhlIGV4dGVudCBidWZmZXIKKHN1Ym1pdCBhIGJpbywgZXRjKSwgMCB0byB0ZWxsIHRoZSBjYWxs ZXIgZXZlcnl0aGluZyB3ZW50IGZpbmUgYnV0IGl0IGRvZXMKbm90IG5lZWQgdG8gc3RhcnQgd3Jp dGViYWNrIGZvciB0aGUgZXh0ZW50IGJ1ZmZlciwgYW5kIGEgbmVnYXRpdmUgdmFsdWUgaWYKc29t ZSBlcnJvciBoYXBwZW5lZC4KCldoZW4gaXQncyBhYm91dCB0byByZXR1cm4gMSBpdCB0cmllcyB0 byBsb2NrIGFsbCBwYWdlcywgYW5kIGlmIGEgdHJ5IGxvY2sKb24gYSBwYWdlIGZhaWxzLCBhbmQg d2UgZGlkbid0IGZsdXNoIGFueSBleGlzdGluZyBiaW8gaW4gb3VyICJlcGQiLCBpdApjYWxscyBm bHVzaF93cml0ZV9iaW8oZXBkKSBhbmQgb3ZlcndyaXRlcyB0aGUgcmV0dXJuIHZhbHVlIG9mIDEg dG8gMCBvcgphbiBlcnJvci4gVGhlIHBhZ2UgbWlnaHQgaGF2ZSBiZWVuIGxvY2tlZCBlbHNld2hl cmUsIG5vdCB3aXRoIHRoZSBnb2FsCm9mIHN0YXJ0aW5nIHdyaXRlYmFjayBvZiB0aGUgZXh0ZW50 IGJ1ZmZlciwgYW5kIGV2ZW4gYnkgc29tZSBjb2RlIG90aGVyCnRoYW4gYnRyZnMsIGxpa2UgcGFn ZSBtaWdyYXRpb24gZm9yIGV4YW1wbGUsIHNvIGl0IGRvZXMgbm90IG1lYW4gdGhlCndyaXRlYmFj ayBvZiB0aGUgZXh0ZW50IGJ1ZmZlciB3YXMgYWxyZWFkeSBzdGFydGVkIGJ5IHNvbWUgb3RoZXIg dGFzaywKc28gcmV0dXJuaW5nIGEgMCB0ZWxscyB0aGUgY2FsbGVyIChidHJlZV93cml0ZV9jYWNo ZV9wYWdlcygpKSB0byBub3QKc3RhcnQgd3JpdGViYWNrIGZvciB0aGUgZXh0ZW50IGJ1ZmZlci4g Tm90ZSB0aGF0IGVwZCBtaWdodCBjdXJyZW50bHkgaGF2ZQplaXRoZXIgbm8gYmlvLCBzbyBmbHVz aF93cml0ZV9iaW8oKSByZXR1cm5zIDAgKHN1Y2Nlc3MpIG9yIGl0IG1pZ2h0IGhhdmUKYSBiaW8g Zm9yIGFub3RoZXIgZXh0ZW50IGJ1ZmZlciB3aXRoIGEgbG93ZXIgaW5kZXggKGxvZ2ljYWwgYWRk cmVzcykuCgpTaW5jZSB3ZSByZXR1cm4gMCB3aXRoIHRoZSBFWFRFTlRfQlVGRkVSX1dSSVRFQkFD SyBiaXQgc2V0IG9uIHRoZQpleHRlbnQgYnVmZmVyIGFuZCB3cml0ZWJhY2sgaXMgbmV2ZXIgc3Rh cnRlZCBmb3IgdGhlIGV4dGVudCBidWZmZXIsCmZ1dHVyZSBhdHRlbXB0cyB0byB3cml0ZWJhY2sg dGhlIGV4dGVudCBidWZmZXIgd2lsbCBoYW5nIGZvcmV2ZXIgd2FpdGluZwpvbiB0aGF0IGJpdCB0 byBiZSBjbGVhcmVkLCBzaW5jZSBpdCBjYW4gb25seSBiZSBjbGVhcmVkIGFmdGVyIHdyaXRlYmFj awpjb21wbGV0ZXMuIFN1Y2ggaGFuZyBpcyByZXBvcnRlZCB3aXRoIGEgdHJhY2UgbGlrZSB0aGUg Zm9sbG93aW5nOgoKICBbNDk4ODcuMzQ3MDUzXSBJTkZPOiB0YXNrIGJ0cmZzLXRyYW5zYWN0aTox NzUyIGJsb2NrZWQgZm9yIG1vcmUgdGhhbiAxMjIgc2Vjb25kcy4KICBbNDk4ODcuMzQ3MDU5XSAg ICAgICBOb3QgdGFpbnRlZCA1LjIuMTMtZ2VudG9vICMyCiAgWzQ5ODg3LjM0NzA2MF0gImVjaG8g MCA+IC9wcm9jL3N5cy9rZXJuZWwvaHVuZ190YXNrX3RpbWVvdXRfc2VjcyIgZGlzYWJsZXMgdGhp cyBtZXNzYWdlLgogIFs0OTg4Ny4zNDcwNjJdIGJ0cmZzLXRyYW5zYWN0aSBEICAgIDAgIDE3NTIg ICAgICAyIDB4ODAwMDQwMDAKICBbNDk4ODcuMzQ3MDY0XSBDYWxsIFRyYWNlOgogIFs0OTg4Ny4z NDcwNjldICA/IF9fc2NoZWR1bGUrMHgyNjUvMHg4MzAKICBbNDk4ODcuMzQ3MDcxXSAgPyBiaXRf d2FpdCsweDUwLzB4NTAKICBbNDk4ODcuMzQ3MDcyXSAgPyBiaXRfd2FpdCsweDUwLzB4NTAKICBb NDk4ODcuMzQ3MDc0XSAgc2NoZWR1bGUrMHgyNC8weDkwCiAgWzQ5ODg3LjM0NzA3NV0gIGlvX3Nj aGVkdWxlKzB4M2MvMHg2MAogIFs0OTg4Ny4zNDcwNzddICBiaXRfd2FpdF9pbysweDgvMHg1MAog IFs0OTg4Ny4zNDcwNzldICBfX3dhaXRfb25fYml0KzB4NmMvMHg4MAogIFs0OTg4Ny4zNDcwODFd ICA/IF9fbG9ja19yZWxlYXNlLmlzcmEuMjkrMHgxNTUvMHgyZDAKICBbNDk4ODcuMzQ3MDgzXSAg b3V0X29mX2xpbmVfd2FpdF9vbl9iaXQrMHg3Yi8weDgwCiAgWzQ5ODg3LjM0NzA4NF0gID8gdmFy X3dha2VfZnVuY3Rpb24rMHgyMC8weDIwCiAgWzQ5ODg3LjM0NzA4N10gIGxvY2tfZXh0ZW50X2J1 ZmZlcl9mb3JfaW8rMHgyOGMvMHgzOTAKICBbNDk4ODcuMzQ3MDg5XSAgYnRyZWVfd3JpdGVfY2Fj aGVfcGFnZXMrMHgxOGUvMHgzNDAKICBbNDk4ODcuMzQ3MDkxXSAgZG9fd3JpdGVwYWdlcysweDI5 LzB4YjAKICBbNDk4ODcuMzQ3MDkzXSAgPyBrbWVtX2NhY2hlX2ZyZWUrMHgxMzIvMHgxNjAKICBb NDk4ODcuMzQ3MDk1XSAgPyBjb252ZXJ0X2V4dGVudF9iaXQrMHg1NDQvMHg2ODAKICBbNDk4ODcu MzQ3MDk3XSAgZmlsZW1hcF9mZGF0YXdyaXRlX3JhbmdlKzB4NzAvMHg5MAogIFs0OTg4Ny4zNDcw OTldICBidHJmc193cml0ZV9tYXJrZWRfZXh0ZW50cysweDUzLzB4MTIwCiAgWzQ5ODg3LjM0NzEw MF0gIGJ0cmZzX3dyaXRlX2FuZF93YWl0X3RyYW5zYWN0aW9uLmlzcmEuNCsweDM4LzB4YTAKICBb NDk4ODcuMzQ3MTAyXSAgYnRyZnNfY29tbWl0X3RyYW5zYWN0aW9uKzB4NmJiLzB4OTkwCiAgWzQ5 ODg3LjM0NzEwM10gID8gc3RhcnRfdHJhbnNhY3Rpb24rMHgzM2UvMHg1MDAKICBbNDk4ODcuMzQ3 MTA1XSAgdHJhbnNhY3Rpb25fa3RocmVhZCsweDEzOS8weDE1YwoKU28gZml4IHRoaXMgYnkgbm90 IG92ZXJ3cml0aW5nIHRoZSByZXR1cm4gdmFsdWUgKHJldCkgd2l0aCB0aGUgcmVzdWx0CmZyb20g Zmx1c2hfd3JpdGVfYmlvKCkuIFdlIGFsc28gbmVlZCB0byBjbGVhciB0aGUgRVhURU5UX0JVRkZF Ul9XUklURUJBQ0sKYml0IGluIGNhc2UgZmx1c2hfd3JpdGVfYmlvKCkgcmV0dXJucyBhbiBlcnJv ciwgb3RoZXJ3aXNlIGl0IHdpbGwgaGFuZwphbnkgZnV0dXJlIGF0dGVtcHRzIHRvIHdyaXRlYmFj ayB0aGUgZXh0ZW50IGJ1ZmZlciwgYW5kIHVuZG8gYWxsIHdvcmsKZG9uZSBiZWZvcmUgKHNldCBi YWNrIEVYVEVOVF9CVUZGRVJfRElSVFksIGV0YykuCgpUaGlzIGlzIGEgcmVncmVzc2lvbiBpbnRy b2R1Y2VkIGluIHRoZSA1LjIga2VybmVsLgoKRml4ZXM6IDJlM2MyNTEzNmFkZmIgKCJidHJmczog ZXh0ZW50X2lvOiBhZGQgcHJvcGVyIGVycm9yIGhhbmRsaW5nIHRvIGxvY2tfZXh0ZW50X2J1ZmZl cl9mb3JfaW8oKSIpCkZpeGVzOiBmNDM0MDYyMmUwMjI2ICgiYnRyZnM6IGV4dGVudF9pbzogTW92 ZSB0aGUgQlVHX09OKCkgaW4gZmx1c2hfd3JpdGVfYmlvKCkgb25lIGxldmVsIHVwIikKUmVwb3J0 ZWQtYnk6IFpkZW5layBTb2prYSA8enNvamthQHNlem5hbS5jej4KTGluazogaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvbGludXgtYnRyZnMvR3BPLjJ5b3MuM1dHRE9McHg2dCU3RC4xVFVEWU1Ac2V6 bmFtLmN6L1QvI3UKUmVwb3J0ZWQtYnk6IFN0ZWZhbiBQcmllYmUgLSBQcm9maWhvc3QgQUcgPHMu cHJpZWJlQHByb2ZpaG9zdC5hZz4KTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgt YnRyZnMvNWM0Njg4YWMtMTBhNy1mYjA3LTcwZTgtYzVkMzFhM2ZiYjM4QHByb2ZpaG9zdC5hZy9U LyN0ClJlcG9ydGVkLWJ5OiBEcmF6ZW4gS2FjYXIgPGRyYXplbi5rYWNhckBvcmFkaWFuLmNvbT4K TGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtYnRyZnMvREI4UFIwM01CNTYyODc2 RUNFMjMxOUIzRTU3OTU5MEY3OTlDODBAREI4UFIwM01CNTYyOC5ldXJwcmQwMy5wcm9kLm91dGxv b2suY29tLwpCdWd6aWxsYTogaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNn aT9pZD0yMDQzNzcKU2lnbmVkLW9mZi1ieTogRmlsaXBlIE1hbmFuYSA8ZmRtYW5hbmFAc3VzZS5j b20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2lnbmVk LW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0t LQogZnMvYnRyZnMvZXh0ZW50X2lvLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8u YwppbmRleCA5NDRhYzA3MjA4MWQuLjg4YWRhNGExOTIxMyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMv ZXh0ZW50X2lvLmMKKysrIGIvZnMvYnRyZnMvZXh0ZW50X2lvLmMKQEAgLTM1NTQsNiArMzU1NCwx MyBAQCB2b2lkIHdhaXRfb25fZXh0ZW50X2J1ZmZlcl93cml0ZWJhY2soc3RydWN0IGV4dGVudF9i dWZmZXIgKmViKQogCQkgICAgICAgVEFTS19VTklOVEVSUlVQVElCTEUpOwogfQogCitzdGF0aWMg dm9pZCBlbmRfZXh0ZW50X2J1ZmZlcl93cml0ZWJhY2soc3RydWN0IGV4dGVudF9idWZmZXIgKmVi KQoreworCWNsZWFyX2JpdChFWFRFTlRfQlVGRkVSX1dSSVRFQkFDSywgJmViLT5iZmxhZ3MpOwor CXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7CisJd2FrZV91cF9iaXQoJmViLT5iZmxhZ3MsIEVYVEVO VF9CVUZGRVJfV1JJVEVCQUNLKTsKK30KKwogLyoKICAqIExvY2sgZWIgcGFnZXMgYW5kIGZsdXNo IHRoZSBiaW8gaWYgd2UgY2FuJ3QgdGhlIGxvY2tzCiAgKgpAQCAtMzYyNiw4ICszNjMzLDExIEBA IGxvY2tfZXh0ZW50X2J1ZmZlcl9mb3JfaW8oc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAogCiAJ CWlmICghdHJ5bG9ja19wYWdlKHApKSB7CiAJCQlpZiAoIWZsdXNoKSB7Ci0JCQkJcmV0ID0gZmx1 c2hfd3JpdGVfYmlvKGVwZCk7Ci0JCQkJaWYgKHJldCA8IDApIHsKKwkJCQlpbnQgZXJyOworCisJ CQkJZXJyID0gZmx1c2hfd3JpdGVfYmlvKGVwZCk7CisJCQkJaWYgKGVyciA8IDApIHsKKwkJCQkJ cmV0ID0gZXJyOwogCQkJCQlmYWlsZWRfcGFnZV9uciA9IGk7CiAJCQkJCWdvdG8gZXJyX3VubG9j azsKIAkJCQl9CkBAIC0zNjQyLDE2ICszNjUyLDIzIEBAIGxvY2tfZXh0ZW50X2J1ZmZlcl9mb3Jf aW8oc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAogCS8qIFVubG9jayBhbHJlYWR5IGxvY2tlZCBw YWdlcyAqLwogCWZvciAoaSA9IDA7IGkgPCBmYWlsZWRfcGFnZV9ucjsgaSsrKQogCQl1bmxvY2tf cGFnZShlYi0+cGFnZXNbaV0pOworCS8qCisJICogQ2xlYXIgRVhURU5UX0JVRkZFUl9XUklURUJB Q0sgYW5kIHdha2UgdXAgYW55b25lIHdhaXRpbmcgb24gaXQuCisJICogQWxzbyBzZXQgYmFjayBF WFRFTlRfQlVGRkVSX0RJUlRZIHNvIGZ1dHVyZSBhdHRlbXB0cyB0byB0aGlzIGViIGNhbgorCSAq IGJlIG1hZGUgYW5kIHVuZG8gZXZlcnl0aGluZyBkb25lIGJlZm9yZS4KKwkgKi8KKwlidHJmc190 cmVlX2xvY2soZWIpOworCXNwaW5fbG9jaygmZWItPnJlZnNfbG9jayk7CisJc2V0X2JpdChFWFRF TlRfQlVGRkVSX0RJUlRZLCAmZWItPmJmbGFncyk7CisJZW5kX2V4dGVudF9idWZmZXJfd3JpdGVi YWNrKGViKTsKKwlzcGluX3VubG9jaygmZWItPnJlZnNfbG9jayk7CisJcGVyY3B1X2NvdW50ZXJf YWRkX2JhdGNoKCZmc19pbmZvLT5kaXJ0eV9tZXRhZGF0YV9ieXRlcywgZWItPmxlbiwKKwkJCQkg ZnNfaW5mby0+ZGlydHlfbWV0YWRhdGFfYmF0Y2gpOworCWJ0cmZzX2NsZWFyX2hlYWRlcl9mbGFn KGViLCBCVFJGU19IRUFERVJfRkxBR19XUklUVEVOKTsKKwlidHJmc190cmVlX3VubG9jayhlYik7 CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgZW5kX2V4dGVudF9idWZmZXJfd3JpdGVi YWNrKHN0cnVjdCBleHRlbnRfYnVmZmVyICplYikKLXsKLQljbGVhcl9iaXQoRVhURU5UX0JVRkZF Ul9XUklURUJBQ0ssICZlYi0+YmZsYWdzKTsKLQlzbXBfbWJfX2FmdGVyX2F0b21pYygpOwotCXdh a2VfdXBfYml0KCZlYi0+YmZsYWdzLCBFWFRFTlRfQlVGRkVSX1dSSVRFQkFDSyk7Ci19Ci0KIHN0 YXRpYyB2b2lkIHNldF9idHJlZV9pb2VycihzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsKIAlzdHJ1Y3Qg ZXh0ZW50X2J1ZmZlciAqZWIgPSAoc3RydWN0IGV4dGVudF9idWZmZXIgKilwYWdlLT5wcml2YXRl OwoKRnJvbSBmMzFjMmQyNGQ3MzBhZGQzYWY1OTlkY2Y5MzMyZDQ1ZjQ1YmQ5N2VmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KRGF0ZTogV2Vk LCAxMiBGZWIgMjAyMCAxNDoxMjo0NCArMDgwMApTdWJqZWN0OiBidHJmczogRG9uJ3Qgc3VibWl0 IGFueSBidHJlZSB3cml0ZSBiaW8gaWYgdGhlIGZzIGhhcyBlcnJvcnMKCmNvbW1pdCBiM2ZmOGYx ZDM4MGU2NWRkZGQ3NzI1NDJhYTliZmY2Yzg2YmY3MTVhIHVwc3RyZWFtLgoKW0JVR10KVGhlcmUg aXMgYSBmdXp6ZWQgaW1hZ2Ugd2hpY2ggY291bGQgY2F1c2UgS0FTQU4gcmVwb3J0IGF0IHVubW91 bnQgdGltZS4KCiAgQlVHOiBLQVNBTjogdXNlLWFmdGVyLWZyZWUgaW4gYnRyZnNfcXVldWVfd29y aysweDJjMS8weDM5MAogIFJlYWQgb2Ygc2l6ZSA4IGF0IGFkZHIgZmZmZjg4ODA2N2NmNjg0OCBi eSB0YXNrIHVtb3VudC8xOTIyCgogIENQVTogMCBQSUQ6IDE5MjIgQ29tbTogdW1vdW50IFRhaW50 ZWQ6IEcgICAgICAgIFcgICAgICAgICA1LjAuMjEgIzEKICBIYXJkd2FyZSBuYW1lOiBRRU1VIFN0 YW5kYXJkIFBDIChpNDQwRlggKyBQSUlYLCAxOTk2KSwgQklPUyAxLjEwLjItMXVidW50dTEgMDQv MDEvMjAxNAogIENhbGwgVHJhY2U6CiAgIGR1bXBfc3RhY2srMHg1Yi8weDhiCiAgIHByaW50X2Fk ZHJlc3NfZGVzY3JpcHRpb24rMHg3MC8weDI4MAogICBrYXNhbl9yZXBvcnQrMHgxM2EvMHgxOWIK ICAgYnRyZnNfcXVldWVfd29yaysweDJjMS8weDM5MAogICBidHJmc193cV9zdWJtaXRfYmlvKzB4 MWNkLzB4MjQwCiAgIGJ0cmVlX3N1Ym1pdF9iaW9faG9vaysweDE4Yy8weDJhMAogICBzdWJtaXRf b25lX2JpbysweDFiZS8weDMyMAogICBmbHVzaF93cml0ZV9iaW8uaXNyYS40MSsweDJjLzB4NzAK ICAgYnRyZWVfd3JpdGVfY2FjaGVfcGFnZXMrMHgzYmIvMHg3ZjAKICAgZG9fd3JpdGVwYWdlcysw eDVjLzB4MTMwCiAgIF9fd3JpdGViYWNrX3NpbmdsZV9pbm9kZSsweGEzLzB4OWEwCiAgIHdyaXRl YmFja19zaW5nbGVfaW5vZGUrMHgyM2QvMHgzOTAKICAgd3JpdGVfaW5vZGVfbm93KzB4MWI1LzB4 MjgwCiAgIGlwdXQrMHgyZWYvMHg2MDAKICAgY2xvc2VfY3RyZWUrMHgzNDEvMHg3NTAKICAgZ2Vu ZXJpY19zaHV0ZG93bl9zdXBlcisweDEyNi8weDM3MAogICBraWxsX2Fub25fc3VwZXIrMHgzMS8w eDUwCiAgIGJ0cmZzX2tpbGxfc3VwZXIrMHgzNi8weDJiMAogICBkZWFjdGl2YXRlX2xvY2tlZF9z dXBlcisweDgwLzB4YzAKICAgZGVhY3RpdmF0ZV9zdXBlcisweDEzYy8weDE1MAogICBjbGVhbnVw X21udCsweDlhLzB4MTMwCiAgIHRhc2tfd29ya19ydW4rMHgxMWEvMHgxYjAKICAgZXhpdF90b191 c2VybW9kZV9sb29wKzB4MTA3LzB4MTMwCiAgIGRvX3N5c2NhbGxfNjQrMHgxZTUvMHgyODAKICAg ZW50cnlfU1lTQ0FMTF82NF9hZnRlcl9od2ZyYW1lKzB4NDQvMHhhOQoKW0NBVVNFXQpUaGUgZnV6 emVkIGltYWdlIGhhcyBhIGNvbXBsZXRlbHkgc2NyZXdkIHVwIGV4dGVudCB0cmVlOgoKICBsZWFm IDI5NDIxNTY4IGdlbiA4IHRvdGFsIHB0cnMgNiBmcmVlIHNwYWNlIDM1ODcgb3duZXIgRVhURU5U X1RSRUUKICByZWZzIDIgbG9jayAodzowIHI6MCBidzowIGJyOjAgc3c6MCBzcjowKSBsb2NrX293 bmVyIDAgY3VycmVudCA1OTM4CiAgICAgICAgICBpdGVtIDAga2V5ICgxMjU4NzAwOCAxNjggNDA5 NikgaXRlbW9mZiAzOTQyIGl0ZW1zaXplIDUzCiAgICAgICAgICAgICAgICAgIGV4dGVudCByZWZz IDEgZ2VuIDkgZmxhZ3MgMQogICAgICAgICAgICAgICAgICByZWYjMDogZXh0ZW50IGRhdGEgYmFj a3JlZiByb290IDUgb2JqZWN0aWQgMjU5IG9mZnNldCAwIGNvdW50IDEKICAgICAgICAgIGl0ZW0g MSBrZXkgKDEyNTkxMTA0IDE2OCA4MTkyKSBpdGVtb2ZmIDM4ODkgaXRlbXNpemUgNTMKICAgICAg ICAgICAgICAgICAgZXh0ZW50IHJlZnMgMSBnZW4gOSBmbGFncyAxCiAgICAgICAgICAgICAgICAg IHJlZiMwOiBleHRlbnQgZGF0YSBiYWNrcmVmIHJvb3QgNSBvYmplY3RpZCAyNzEgb2Zmc2V0IDAg Y291bnQgMQogICAgICAgICAgaXRlbSAyIGtleSAoMTI1OTkyOTYgMTY4IDQwOTYpIGl0ZW1vZmYg MzgzNiBpdGVtc2l6ZSA1MwogICAgICAgICAgICAgICAgICBleHRlbnQgcmVmcyAxIGdlbiA5IGZs YWdzIDEKICAgICAgICAgICAgICAgICAgcmVmIzA6IGV4dGVudCBkYXRhIGJhY2tyZWYgcm9vdCA1 IG9iamVjdGlkIDI1OSBvZmZzZXQgNDA5NiBjb3VudCAxCiAgICAgICAgICBpdGVtIDMga2V5ICgy OTM2MDEyOCAxNjkgMCkgaXRlbW9mZiAzODAzIGl0ZW1zaXplIDMzCiAgICAgICAgICAgICAgICAg IGV4dGVudCByZWZzIDEgZ2VuIDkgZmxhZ3MgMgogICAgICAgICAgICAgICAgICByZWYjMDogdHJl ZSBibG9jayBiYWNrcmVmIHJvb3QgNQogICAgICAgICAgaXRlbSA0IGtleSAoMjkzNjgzMjAgMTY5 IDEpIGl0ZW1vZmYgMzc3MCBpdGVtc2l6ZSAzMwogICAgICAgICAgICAgICAgICBleHRlbnQgcmVm cyAxIGdlbiA5IGZsYWdzIDIKICAgICAgICAgICAgICAgICAgcmVmIzA6IHRyZWUgYmxvY2sgYmFj a3JlZiByb290IDUKICAgICAgICAgIGl0ZW0gNSBrZXkgKDI5MzcyNDE2IDE2OSAwKSBpdGVtb2Zm IDM3MzcgaXRlbXNpemUgMzMKICAgICAgICAgICAgICAgICAgZXh0ZW50IHJlZnMgMSBnZW4gOSBm bGFncyAyCiAgICAgICAgICAgICAgICAgIHJlZiMwOiB0cmVlIGJsb2NrIGJhY2tyZWYgcm9vdCA1 CgpOb3RlIHRoYXQgbGVhZiAyOTQyMTU2OCBkb2Vzbid0IGhhdmUgaXRzIGJhY2tyZWYgaW4gdGhl IGV4dGVudCB0cmVlLgpUaHVzIGV4dGVudCBhbGxvY2F0b3IgY2FuIHJlLWFsbG9jYXRlIGxlYWYg Mjk0MjE1NjggZm9yIG90aGVyIHRyZWVzLgoKSW4gc2hvcnQsIHRoZSBidWcgaXMgY2F1c2VkIGJ5 OgoKLSBFeGlzdGluZyB0cmVlIGJsb2NrIGdldHMgYWxsb2NhdGVkIHRvIGxvZyB0cmVlCiAgVGhp cyBnb3QgaXRzIGdlbmVyYXRpb24gYnVtcGVkLgoKLSBMb2cgdHJlZSBiYWxhbmNlIGNsZWFuZWQg ZGlydHkgYml0IG9mIG9mZmVuZGluZyB0cmVlIGJsb2NrCiAgSXQgd2lsbCBub3QgYmUgd3JpdHRl biBiYWNrIHRvIGRpc2ssIHRodXMgbm8gV1JJVFRFTiBmbGFnLgoKLSBPcmlnaW5hbCBvd25lciBv ZiB0aGUgdHJlZSBibG9jayBnZXRzIENPV2VkCiAgU2luY2UgdGhlIHRyZWUgYmxvY2sgaGFzIGhp Z2hlciB0cmFuc2lkLCBubyBXUklUVEVOIGZsYWcsIGl0J3MgcmV1c2VkLAogIGFuZCBub3QgdHJh Y2VkIGJ5IHRyYW5zYWN0aW9uOjpkaXJ0eV9wYWdlcy4KCi0gVHJhbnNhY3Rpb24gYWJvcnRlZAog IFRyZWUgYmxvY2tzIGdldCBjbGVhbmVkIGFjY29yZGluZyB0byB0cmFuc2FjdGlvbjo6ZGlydHlf cGFnZXMuIEJ1dCB0aGUKICBvZmZlbmRpbmcgdHJlZSBibG9jayBpcyBub3QgcmVjb3JkZWQgYXQg YWxsLgoKLSBGaWxlc3lzdGVtIHVubW91bnQKICBBbGwgcGFnZXMgYXJlIGFzc3VtZWQgdG8gYmUg YXJlIGNsZWFuLCBkZXN0cm95aW5nIGFsbCB3b3JrcXVldWUsIHRoZW4KICBjYWxsIGlwdXQoYnRy ZWVfaW5vZGUpLgogIEJ1dCBvZmZlbmRpbmcgdHJlZSBibG9jayBpcyBzdGlsbCBkaXJ0eSwgd2hp Y2ggdHJpZ2dlcnMgd3JpdGViYWNrLCBhbmQKICBjYXVzZXMgdXNlLWFmdGVyLWZyZWUgYnVnLgoK VGhlIGRldGFpbGVkIHNlcXVlbmNlIGxvb2tzIGxpa2UgdGhpczoKCi0gSW5pdGlhbCBzdGF0dXMK ICBlYjogMjk0MjE1NjgsIGhlYWRlcj1XUklUVEVOIGJmbGFnc19kaXJ0eT0wLCBwYWdlX2RpcnR5 PTAsIGdlbj04LAogICAgICBub3QgdHJhY2VkIGJ5IGFueSBkaXJ0eSBleHRlbnRfaW90X3RyZWUu CgotIE5ldyB0cmVlIGJsb2NrIGlzIGFsbG9jYXRlZAogIFNpbmNlIHRoZXJlIGlzIG5vIGJhY2ty ZWYgZm9yIDI5NDIxNTY4LCBpdCdzIHJlLWFsbG9jYXRlZCBhcyBuZXcgdHJlZQogIGJsb2NrLgog IEtlZXAgaW4gbWluZCB0aGF0IHRyZWUgYmxvY2sgMjk0MjE1NjggaXMgc3RpbGwgcmVmZXJyZWQg YnkgZXh0ZW50CiAgdHJlZS4KCi0gVHJlZSBibG9jayAyOTQyMTU2OCBpcyBmaWxsZWQgZm9yIGxv ZyB0cmVlCiAgZWI6IDI5NDIxNTY4LCBoZWFkZXI9MCBiZmxhZ3NfZGlydHk9MSwgcGFnZV9kaXJ0 eT0xLCBnZW49OSA8PCAoZ2VuIGJ1bXBlZCkKICAgICAgdHJhY2VkIGJ5IGJ0cmZzX3Jvb3Q6OmRp cnR5X2xvZ19wYWdlcwoKLSBTb21lIGxvZyB0cmVlIG9wZXJhdGlvbnMKICBTaW5jZSB0aGUgZnMg aXMgdXNpbmcgbm9kZSBzaXplIDQwOTYsIHRoZSBsb2cgdHJlZSBjYW4gZWFzaWx5IGdvIGEKICBs ZXZlbCBoaWdoZXIuCgotIExvZyB0cmVlIG5lZWRzIGJhbGFuY2UKICBUcmVlIGJsb2NrIDI5NDIx NTY4IGdldHMgYWxsIGl0cyBjb250ZW50IHB1c2hlZCB0byByaWdodCwgdGh1cyBub3cKICBpdCBp cyBlbXB0eSwgYW5kIHdlIGRvbid0IG5lZWQgaXQuCiAgYnRyZnNfY2xlYW5fdHJlZV9ibG9jaygp IGZyb20gX19wdXNoX2xlYWZfcmlnaHQoKSBnZXQgY2FsbGVkLgoKICBlYjogMjk0MjE1NjgsIGhl YWRlcj0wIGJmbGFnc19kaXJ0eT0wLCBwYWdlX2RpcnR5PTAsIGdlbj05CiAgICAgIHRyYWNlZCBi eSBidHJmc19yb290OjpkaXJ0eV9sb2dfcGFnZXMKCi0gTG9nIHRyZWUgd3JpdGUgYmFjawogIGJ0 cmVlX3dyaXRlX2NhY2hlX3BhZ2VzKCkgZ29lcyB0aHJvdWdoIGRpcnR5IHBhZ2VzIHJhbmdlcywg YnV0IHNpbmNlCiAgcGFnZSBvZiB0cmVlIGJsb2NrIDI5NDIxNTY4IGdldHMgY2xlYW5lZCBhbHJl YWR5LCBpdCdzIG5vdCB3cml0dGVuCiAgYmFjayB0byBkaXNrLiBUaHVzIGl0IGRvZXNuJ3QgaGF2 ZSBXUklUVEVOIGJpdCBzZXQuCiAgQnV0IHJhbmdlcyBpbiBkaXJ0eV9sb2dfcGFnZXMgYXJlIGNs ZWFyZWQuCgogIGViOiAyOTQyMTU2OCwgaGVhZGVyPTAgYmZsYWdzX2RpcnR5PTAsIHBhZ2VfZGly dHk9MCwgZ2VuPTkKICAgICAgbm90IHRyYWNlZCBieSBhbnkgZGlydHkgZXh0ZW50X2lvdF90cmVl LgoKLSBFeHRlbnQgdHJlZSB1cGRhdGUgd2hlbiBjb21taXR0aW5nIHRyYW5zYWN0aW9uCiAgU2lu Y2UgdHJlZSBibG9jayAyOTQyMTU2OCBoYXMgdHJhbnNpZCBlcXVhbCB0byBydW5uaW5nIHRyYW5z LCBhbmQgaGFzCiAgbm8gV1JJVFRFTiBiaXQsIHNob3VsZF9jb3dfYmxvY2soKSB3aWxsIHVzZSBp dCBkaXJlY3RseSB3aXRob3V0IGFkZGluZwogIGl0IHRvIGJ0cmZzX3RyYW5zYWN0aW9uOjpkaXJ0 eV9wYWdlcy4KCiAgZWI6IDI5NDIxNTY4LCBoZWFkZXI9MCBiZmxhZ3NfZGlydHk9MSwgcGFnZV9k aXJ0eT0xLCBnZW49OQogICAgICBub3QgdHJhY2VkIGJ5IGFueSBkaXJ0eSBleHRlbnRfaW90X3Ry ZWUuCgogIEF0IHRoaXMgc3RhZ2UsIHdlJ3JlIGRvb21lZC4gV2UgaGF2ZSBhIGRpcnR5IGViIG5v dCB0cmFja2VkIGJ5IGFueQogIGV4dGVudCBpbyB0cmVlLgoKLSBUcmFuc2FjdGlvbiBnZXRzIGFi b3J0ZWQgZHVlIHRvIGNvcnJ1cHRlZCBleHRlbnQgdHJlZQogIEJ0cmZzIGNsZWFucyB1cCBkaXJ0 eSBwYWdlcyBhY2NvcmRpbmcgdG8gdHJhbnNhY3Rpb246OmRpcnR5X3BhZ2VzIGFuZAogIGJ0cmZz X3Jvb3Q6OmRpcnR5X2xvZ19wYWdlcy4KICBCdXQgc2luY2UgdHJlZSBibG9jayAyOTQyMTU2OCBp cyBub3QgdHJhY2tlZCBieSBuZWl0aGVyIG9mIHRoZW0sIGl0J3MKICBzdGlsbCBkaXJ0eS4KCiAg ZWI6IDI5NDIxNTY4LCBoZWFkZXI9MCBiZmxhZ3NfZGlydHk9MSwgcGFnZV9kaXJ0eT0xLCBnZW49 OQogICAgICBub3QgdHJhY2VkIGJ5IGFueSBkaXJ0eSBleHRlbnRfaW90X3RyZWUuCgotIEZpbGVz eXN0ZW0gdW5tb3VudAogIFNpbmNlIGFsbCBjbGVhbnVwIGlzIGFzc3VtZWQgdG8gYmUgZG9uZSwg YWxsIHdvcmtxdWV1cyBhcmUgZGVzdHJveWVkLgogIFRoZW4gaXB1dChidHJlZV9pbm9kZSkgaXMg Y2FsbGVkLCBleHBlY3Rpbmcgbm8gZGlydHkgcGFnZXMuCiAgQnV0IHRyZWUgMjk0MjE1NjggaXMg c3RpbGwgZGlydHksIHRodXMgdHJpZ2dlcmluZyB3cml0ZWJhY2suCiAgU2luY2UgYWxsIHdvcmtx dWV1ZXMgYXJlIGFscmVhZHkgZnJlZWQsIHdlIGNhdXNlIHVzZS1hZnRlci1mcmVlLgoKVGhpcyBz aG93cyB1cyB0aGF0LCBsb2cgdHJlZSBibG9ja3MgKyBiYWQgZXh0ZW50IHRyZWUgY2FuIGNhdXNl IHdpbGQKZGlydHkgcGFnZXMuCgpbRklYXQpUbyBmaXggdGhlIHByb2JsZW0sIGRvbid0IHN1Ym1p dCBhbnkgYnRyZWUgd3JpdGUgYmlvIGlmIHRoZSBmaWxlc3l0ZW0KaGFzIGFueSBlcnJvci4gIFRo aXMgaXMgdGhlIGxhc3Qgc2FmZSBuZXQsIGp1c3QgaW4gY2FzZSBvdGhlciBjbGVhbnVwCmhhdmVu J3QgY2F1Z2h0IGNhdGNoIGl0LgoKTGluazogaHR0cHM6Ly9naXRodWIuY29tL2JvYmZ1enplci9D VkUvdHJlZS9tYXN0ZXIvQ1ZFLTIwMTktMTkzNzcKQ0M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcg IyA1LjQrClJldmlld2VkLWJ5OiBKb3NlZiBCYWNpayA8am9zZWZAdG94aWNwYW5kYS5jb20+ClNp Z25lZC1vZmYtYnk6IFF1IFdlbnJ1byA8d3F1QHN1c2UuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQg U3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRz dGVyYmFAc3VzZS5jb20+Cltid2g6IEJhY2twb3J0ZWQgdG8gNC4xOTogZnNfaW5mbyB2YXJpYWJs ZSBhbHJlYWR5IGV4aXN0cyBpbgogYnRyZWVfd3JpdGVfY2FjaGVfcGFnZXMoKV0KU2lnbmVkLW9m Zi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQog ZnMvYnRyZnMvZXh0ZW50X2lvLmMgfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL2ZzL2J0cmZzL2V4dGVudF9pby5jIGIvZnMvYnRyZnMvZXh0ZW50X2lvLmMKaW5k ZXggODhhZGE0YTE5MjEzLi4zMDExMTE5MjJhMWEgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2V4dGVu dF9pby5jCisrKyBiL2ZzL2J0cmZzL2V4dGVudF9pby5jCkBAIC0zOTQ3LDcgKzM5NDcsMzkgQEAg aW50IGJ0cmVlX3dyaXRlX2NhY2hlX3BhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n LAogCQllbmRfd3JpdGVfYmlvKCZlcGQsIHJldCk7CiAJCXJldHVybiByZXQ7CiAJfQotCXJldCA9 IGZsdXNoX3dyaXRlX2JpbygmZXBkKTsKKwkvKgorCSAqIElmIHNvbWV0aGluZyB3ZW50IHdyb25n LCBkb24ndCBhbGxvdyBhbnkgbWV0YWRhdGEgd3JpdGUgYmlvIHRvIGJlCisJICogc3VibWl0dGVk LgorCSAqCisJICogVGhpcyB3b3VsZCBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIGlmIHdlIGhhZCBk aXJ0eSBwYWdlcyBub3QKKwkgKiBjbGVhbmVkIHVwLCB3aGljaCBjYW4gc3RpbGwgaGFwcGVuIGJ5 IGZ1enplZCBpbWFnZXMuCisJICoKKwkgKiAtIEJhZCBleHRlbnQgdHJlZQorCSAqICAgQWxsb3dp bmcgZXhpc3RpbmcgdHJlZSBibG9jayB0byBiZSBhbGxvY2F0ZWQgZm9yIG90aGVyIHRyZWVzLgor CSAqCisJICogLSBMb2cgdHJlZSBvcGVyYXRpb25zCisJICogICBFeGl0aW5nIHRyZWUgYmxvY2tz IGdldCBhbGxvY2F0ZWQgdG8gbG9nIHRyZWUsIGJ1bXBzIGl0cworCSAqICAgZ2VuZXJhdGlvbiwg dGhlbiBnZXQgY2xlYW5lZCBpbiB0cmVlIHJlLWJhbGFuY2UuCisJICogICBTdWNoIHRyZWUgYmxv Y2sgd2lsbCBub3QgYmUgd3JpdHRlbiBiYWNrLCBzaW5jZSBpdCdzIGNsZWFuLAorCSAqICAgdGh1 cyBubyBXUklUVEVOIGZsYWcgc2V0LgorCSAqICAgQW5kIGFmdGVyIGxvZyB3cml0ZXMgYmFjaywg dGhpcyB0cmVlIGJsb2NrIGlzIG5vdCB0cmFjZWQgYnkKKwkgKiAgIGFueSBkaXJ0eSBleHRlbnRf aW9fdHJlZS4KKwkgKgorCSAqIC0gT2ZmZW5kaW5nIHRyZWUgYmxvY2sgZ2V0cyByZS1kaXJ0aWVk IGZyb20gaXRzIG9yaWdpbmFsIG93bmVyCisJICogICBTaW5jZSBpdCBoYXMgYnVtcGVkIGdlbmVy YXRpb24sIG5vIFdSSVRURU4gZmxhZywgaXQgY2FuIGJlCisJICogICByZXVzZWQgd2l0aG91dCBD T1dpbmcuIFRoaXMgdHJlZSBibG9jayB3aWxsIG5vdCBiZSB0cmFjZWQKKwkgKiAgIGJ5IGJ0cmZz X3RyYW5zYWN0aW9uOjpkaXJ0eV9wYWdlcy4KKwkgKgorCSAqICAgTm93IHN1Y2ggZGlydHkgdHJl ZSBibG9jayB3aWxsIG5vdCBiZSBjbGVhbmVkIGJ5IGFueSBkaXJ0eQorCSAqICAgZXh0ZW50IGlv IHRyZWUuIFRodXMgd2UgZG9uJ3Qgd2FudCB0byBzdWJtaXQgc3VjaCB3aWxkIGViCisJICogICBp ZiB0aGUgZnMgYWxyZWFkeSBoYXMgZXJyb3IuCisJICovCisJaWYgKCF0ZXN0X2JpdChCVFJGU19G U19TVEFURV9FUlJPUiwgJmZzX2luZm8tPmZzX3N0YXRlKSkgeworCQlyZXQgPSBmbHVzaF93cml0 ZV9iaW8oJmVwZCk7CisJfSBlbHNlIHsKKwkJcmV0ID0gLUVVQ0xFQU47CisJCWVuZF93cml0ZV9i aW8oJmVwZCwgcmV0KTsKKwl9CiAJcmV0dXJuIHJldDsKIH0KIAoKRnJvbSA5ZWE5ZTcxNTQwMzNk MzlhMDY5M2JhZTIwOGQ4YTBhZDQzMjE5Y2U4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KRGF0ZTogV2VkLCAyMCBNYXIgMjAxOSAxMzoxNjo0 MiArMDgwMApTdWJqZWN0OiBidHJmczogTW92ZSBidHJmc19jaGVja19jaHVua192YWxpZCgpIHRv IHRyZWUtY2hlY2suW2NoXSBhbmQgZXhwb3J0CiBpdAoKY29tbWl0IDgyZmMyOGZiZWRiYjU5NjQy ZjA1MjE1ZGIzYjBlZjRlYjkxYWEzMWQgdXBzdHJlYW0uCgpCeSBmdW5jdGlvbiwgY2h1bmsgaXRl bSB2ZXJpZmljYXRpb24gaXMgbW9yZSBzdWl0YWJsZSB0byBiZSBkb25lIGluc2lkZQp0cmVlLWNo ZWNrZXIuCgpTbyBtb3ZlIGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKCkgdG8gdHJlZS1jaGVja2Vy LmMgYW5kIGV4cG9ydCBpdC4KCkFuZCBzaW5jZSBpdCdzIG5vdyBtb3ZlZCB0byB0cmVlLWNoZWNr ZXIsIGFsc28gYWRkIGEgYmV0dGVyIGNvbW1lbnQgZm9yCndoYXQgdGhpcyBmdW5jdGlvbiBpcyBk b2luZy4KClJldmlld2VkLWJ5OiBKb2hhbm5lcyBUaHVtc2hpcm4gPGp0aHVtc2hpcm5Ac3VzZS5k ZT4KU2lnbmVkLW9mZi1ieTogUXUgV2VucnVvIDx3cXVAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBE YXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJi YSA8ZHN0ZXJiYUBzdXNlLmNvbT4KW2J3aDogQ2hlcnJ5LXBpY2tlZCBmb3IgNC4xOSB0byBlYXNl IGJhY2twb3J0aW5nIGxhdGVyIGZpeGVzXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxi ZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy90cmVlLWNoZWNrZXIu YyB8IDk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBmcy9idHJm cy90cmVlLWNoZWNrZXIuaCB8ICA0ICsrCiBmcy9idHJmcy92b2x1bWVzLmMgICAgICB8IDk0ICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAx MDIgaW5zZXJ0aW9ucygrKSwgOTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMv dHJlZS1jaGVja2VyLmMgYi9mcy9idHJmcy90cmVlLWNoZWNrZXIuYwppbmRleCBkOThlYzg4NWI3 MmEuLjlmODFmNGUzZjI2MyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKKysr IGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKQEAgLTQ0OCw2ICs0NDgsMTAzIEBAIHN0YXRpYyBp bnQgY2hlY2tfYmxvY2tfZ3JvdXBfaXRlbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywK IAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIFRoZSBjb21tb24gY2h1bmsgY2hlY2sgd2hpY2ggY291 bGQgYWxzbyB3b3JrIG9uIHN1cGVyIGJsb2NrIHN5cyBjaHVuayBhcnJheS4KKyAqCisgKiBSZXR1 cm4gLUVJTyBpZiBhbnl0aGluZyBpcyBjb3JydXB0ZWQuCisgKiBSZXR1cm4gMCBpZiBldmVyeXRo aW5nIGlzIE9LLgorICovCitpbnQgYnRyZnNfY2hlY2tfY2h1bmtfdmFsaWQoc3RydWN0IGJ0cmZz X2ZzX2luZm8gKmZzX2luZm8sCisJCQkgICAgc3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYsCisJ CQkgICAgc3RydWN0IGJ0cmZzX2NodW5rICpjaHVuaywgdTY0IGxvZ2ljYWwpCit7CisJdTY0IGxl bmd0aDsKKwl1NjQgc3RyaXBlX2xlbjsKKwl1MTYgbnVtX3N0cmlwZXM7CisJdTE2IHN1Yl9zdHJp cGVzOworCXU2NCB0eXBlOworCXU2NCBmZWF0dXJlczsKKwlib29sIG1peGVkID0gZmFsc2U7CisK KwlsZW5ndGggPSBidHJmc19jaHVua19sZW5ndGgobGVhZiwgY2h1bmspOworCXN0cmlwZV9sZW4g PSBidHJmc19jaHVua19zdHJpcGVfbGVuKGxlYWYsIGNodW5rKTsKKwludW1fc3RyaXBlcyA9IGJ0 cmZzX2NodW5rX251bV9zdHJpcGVzKGxlYWYsIGNodW5rKTsKKwlzdWJfc3RyaXBlcyA9IGJ0cmZz X2NodW5rX3N1Yl9zdHJpcGVzKGxlYWYsIGNodW5rKTsKKwl0eXBlID0gYnRyZnNfY2h1bmtfdHlw ZShsZWFmLCBjaHVuayk7CisKKwlpZiAoIW51bV9zdHJpcGVzKSB7CisJCWJ0cmZzX2Vycihmc19p bmZvLCAiaW52YWxpZCBjaHVuayBudW1fc3RyaXBlczogJXUiLAorCQkJICBudW1fc3RyaXBlcyk7 CisJCXJldHVybiAtRUlPOworCX0KKwlpZiAoIUlTX0FMSUdORUQobG9naWNhbCwgZnNfaW5mby0+ c2VjdG9yc2l6ZSkpIHsKKwkJYnRyZnNfZXJyKGZzX2luZm8sICJpbnZhbGlkIGNodW5rIGxvZ2lj YWwgJWxsdSIsIGxvZ2ljYWwpOworCQlyZXR1cm4gLUVJTzsKKwl9CisJaWYgKGJ0cmZzX2NodW5r X3NlY3Rvcl9zaXplKGxlYWYsIGNodW5rKSAhPSBmc19pbmZvLT5zZWN0b3JzaXplKSB7CisJCWJ0 cmZzX2Vycihmc19pbmZvLCAiaW52YWxpZCBjaHVuayBzZWN0b3JzaXplICV1IiwKKwkJCSAgYnRy ZnNfY2h1bmtfc2VjdG9yX3NpemUobGVhZiwgY2h1bmspKTsKKwkJcmV0dXJuIC1FSU87CisJfQor CWlmICghbGVuZ3RoIHx8ICFJU19BTElHTkVEKGxlbmd0aCwgZnNfaW5mby0+c2VjdG9yc2l6ZSkp IHsKKwkJYnRyZnNfZXJyKGZzX2luZm8sICJpbnZhbGlkIGNodW5rIGxlbmd0aCAlbGx1IiwgbGVu Z3RoKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCWlmICghaXNfcG93ZXJfb2ZfMihzdHJpcGVfbGVu KSB8fCBzdHJpcGVfbGVuICE9IEJUUkZTX1NUUklQRV9MRU4pIHsKKwkJYnRyZnNfZXJyKGZzX2lu Zm8sICJpbnZhbGlkIGNodW5rIHN0cmlwZSBsZW5ndGg6ICVsbHUiLAorCQkJICBzdHJpcGVfbGVu KTsKKwkJcmV0dXJuIC1FSU87CisJfQorCWlmICh+KEJUUkZTX0JMT0NLX0dST1VQX1RZUEVfTUFT SyB8IEJUUkZTX0JMT0NLX0dST1VQX1BST0ZJTEVfTUFTSykgJgorCSAgICB0eXBlKSB7CisJCWJ0 cmZzX2Vycihmc19pbmZvLCAidW5yZWNvZ25pemVkIGNodW5rIHR5cGU6ICVsbHUiLAorCQkJICB+ KEJUUkZTX0JMT0NLX0dST1VQX1RZUEVfTUFTSyB8CisJCQkgICAgQlRSRlNfQkxPQ0tfR1JPVVBf UFJPRklMRV9NQVNLKSAmCisJCQkgIGJ0cmZzX2NodW5rX3R5cGUobGVhZiwgY2h1bmspKTsKKwkJ cmV0dXJuIC1FSU87CisJfQorCisJaWYgKCh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfVFlQRV9N QVNLKSA9PSAwKSB7CisJCWJ0cmZzX2Vycihmc19pbmZvLCAibWlzc2luZyBjaHVuayB0eXBlIGZs YWc6IDB4JWxseCIsIHR5cGUpOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwlpZiAoKHR5cGUgJiBC VFJGU19CTE9DS19HUk9VUF9TWVNURU0pICYmCisJICAgICh0eXBlICYgKEJUUkZTX0JMT0NLX0dS T1VQX01FVEFEQVRBIHwgQlRSRlNfQkxPQ0tfR1JPVVBfREFUQSkpKSB7CisJCWJ0cmZzX2Vycihm c19pbmZvLAorCQkJInN5c3RlbSBjaHVuayB3aXRoIGRhdGEgb3IgbWV0YWRhdGEgdHlwZTogMHgl bGx4IiwgdHlwZSk7CisJCXJldHVybiAtRUlPOworCX0KKworCWZlYXR1cmVzID0gYnRyZnNfc3Vw ZXJfaW5jb21wYXRfZmxhZ3MoZnNfaW5mby0+c3VwZXJfY29weSk7CisJaWYgKGZlYXR1cmVzICYg QlRSRlNfRkVBVFVSRV9JTkNPTVBBVF9NSVhFRF9HUk9VUFMpCisJCW1peGVkID0gdHJ1ZTsKKwor CWlmICghbWl4ZWQpIHsKKwkJaWYgKCh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfTUVUQURBVEEp ICYmCisJCSAgICAodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX0RBVEEpKSB7CisJCQlidHJmc19l cnIoZnNfaW5mbywKKwkJCSJtaXhlZCBjaHVuayB0eXBlIGluIG5vbi1taXhlZCBtb2RlOiAweCVs bHgiLCB0eXBlKTsKKwkJCXJldHVybiAtRUlPOworCQl9CisJfQorCisJaWYgKCh0eXBlICYgQlRS RlNfQkxPQ0tfR1JPVVBfUkFJRDEwICYmIHN1Yl9zdHJpcGVzICE9IDIpIHx8CisJICAgICh0eXBl ICYgQlRSRlNfQkxPQ0tfR1JPVVBfUkFJRDEgJiYgbnVtX3N0cmlwZXMgIT0gMikgfHwKKwkgICAg KHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9SQUlENSAmJiBudW1fc3RyaXBlcyA8IDIpIHx8CisJ ICAgICh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfUkFJRDYgJiYgbnVtX3N0cmlwZXMgPCAzKSB8 fAorCSAgICAodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX0RVUCAmJiBudW1fc3RyaXBlcyAhPSAy KSB8fAorCSAgICAoKHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9QUk9GSUxFX01BU0spID09IDAg JiYgbnVtX3N0cmlwZXMgIT0gMSkpIHsKKwkJYnRyZnNfZXJyKGZzX2luZm8sCisJCQkiaW52YWxp ZCBudW1fc3RyaXBlczpzdWJfc3RyaXBlcyAldToldSBmb3IgcHJvZmlsZSAlbGx1IiwKKwkJCW51 bV9zdHJpcGVzLCBzdWJfc3RyaXBlcywKKwkJCXR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9QUk9G SUxFX01BU0spOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogLyoKICAq IENvbW1vbiBwb2ludCB0byBzd2l0Y2ggdGhlIGl0ZW0tc3BlY2lmaWMgdmFsaWRhdGlvbi4KICAq LwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmggYi9mcy9idHJmcy90cmVlLWNo ZWNrZXIuaAppbmRleCBmZjA0MzI3NWI3ODQuLjRkZjQ1ZThhNjY1OSAxMDA2NDQKLS0tIGEvZnMv YnRyZnMvdHJlZS1jaGVja2VyLmgKKysrIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmgKQEAgLTI1 LDQgKzI1LDggQEAgaW50IGJ0cmZzX2NoZWNrX2xlYWZfcmVsYXhlZChzdHJ1Y3QgYnRyZnNfZnNf aW5mbyAqZnNfaW5mbywKIAkJCSAgICAgc3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYpOwogaW50 IGJ0cmZzX2NoZWNrX25vZGUoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIHN0cnVjdCBl eHRlbnRfYnVmZmVyICpub2RlKTsKIAoraW50IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKHN0cnVj dCBidHJmc19mc19pbmZvICpmc19pbmZvLAorCQkJICAgIHN0cnVjdCBleHRlbnRfYnVmZmVyICps ZWFmLAorCQkJICAgIHN0cnVjdCBidHJmc19jaHVuayAqY2h1bmssIHU2NCBsb2dpY2FsKTsKKwog I2VuZGlmCmRpZmYgLS1naXQgYS9mcy9idHJmcy92b2x1bWVzLmMgYi9mcy9idHJmcy92b2x1bWVz LmMKaW5kZXggODE1YjY1NWI4ZjEwLi4yNzdjYjEwNTQxN2UgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZz L3ZvbHVtZXMuYworKysgYi9mcy9idHJmcy92b2x1bWVzLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNp bmNsdWRlICJtYXRoLmgiCiAjaW5jbHVkZSAiZGV2LXJlcGxhY2UuaCIKICNpbmNsdWRlICJzeXNm cy5oIgorI2luY2x1ZGUgInRyZWUtY2hlY2tlci5oIgogCiBjb25zdCBzdHJ1Y3QgYnRyZnNfcmFp ZF9hdHRyIGJ0cmZzX3JhaWRfYXJyYXlbQlRSRlNfTlJfUkFJRF9UWVBFU10gPSB7CiAJW0JUUkZT X1JBSURfUkFJRDEwXSA9IHsKQEAgLTYzNjgsOTkgKzYzNjksNiBAQCBzdHJ1Y3QgYnRyZnNfZGV2 aWNlICpidHJmc19hbGxvY19kZXZpY2Uoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJ cmV0dXJuIGRldjsKIH0KIAotLyogUmV0dXJuIC1FSU8gaWYgYW55IGVycm9yLCBvdGhlcndpc2Ug cmV0dXJuIDAuICovCi1zdGF0aWMgaW50IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKHN0cnVjdCBi dHJmc19mc19pbmZvICpmc19pbmZvLAotCQkJCSAgIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFm LAotCQkJCSAgIHN0cnVjdCBidHJmc19jaHVuayAqY2h1bmssIHU2NCBsb2dpY2FsKQotewotCXU2 NCBsZW5ndGg7Ci0JdTY0IHN0cmlwZV9sZW47Ci0JdTE2IG51bV9zdHJpcGVzOwotCXUxNiBzdWJf c3RyaXBlczsKLQl1NjQgdHlwZTsKLQl1NjQgZmVhdHVyZXM7Ci0JYm9vbCBtaXhlZCA9IGZhbHNl OwotCi0JbGVuZ3RoID0gYnRyZnNfY2h1bmtfbGVuZ3RoKGxlYWYsIGNodW5rKTsKLQlzdHJpcGVf bGVuID0gYnRyZnNfY2h1bmtfc3RyaXBlX2xlbihsZWFmLCBjaHVuayk7Ci0JbnVtX3N0cmlwZXMg PSBidHJmc19jaHVua19udW1fc3RyaXBlcyhsZWFmLCBjaHVuayk7Ci0Jc3ViX3N0cmlwZXMgPSBi dHJmc19jaHVua19zdWJfc3RyaXBlcyhsZWFmLCBjaHVuayk7Ci0JdHlwZSA9IGJ0cmZzX2NodW5r X3R5cGUobGVhZiwgY2h1bmspOwotCi0JaWYgKCFudW1fc3RyaXBlcykgewotCQlidHJmc19lcnIo ZnNfaW5mbywgImludmFsaWQgY2h1bmsgbnVtX3N0cmlwZXM6ICV1IiwKLQkJCSAgbnVtX3N0cmlw ZXMpOwotCQlyZXR1cm4gLUVJTzsKLQl9Ci0JaWYgKCFJU19BTElHTkVEKGxvZ2ljYWwsIGZzX2lu Zm8tPnNlY3RvcnNpemUpKSB7Ci0JCWJ0cmZzX2Vycihmc19pbmZvLCAiaW52YWxpZCBjaHVuayBs b2dpY2FsICVsbHUiLCBsb2dpY2FsKTsKLQkJcmV0dXJuIC1FSU87Ci0JfQotCWlmIChidHJmc19j aHVua19zZWN0b3Jfc2l6ZShsZWFmLCBjaHVuaykgIT0gZnNfaW5mby0+c2VjdG9yc2l6ZSkgewot CQlidHJmc19lcnIoZnNfaW5mbywgImludmFsaWQgY2h1bmsgc2VjdG9yc2l6ZSAldSIsCi0JCQkg IGJ0cmZzX2NodW5rX3NlY3Rvcl9zaXplKGxlYWYsIGNodW5rKSk7Ci0JCXJldHVybiAtRUlPOwot CX0KLQlpZiAoIWxlbmd0aCB8fCAhSVNfQUxJR05FRChsZW5ndGgsIGZzX2luZm8tPnNlY3RvcnNp emUpKSB7Ci0JCWJ0cmZzX2Vycihmc19pbmZvLCAiaW52YWxpZCBjaHVuayBsZW5ndGggJWxsdSIs IGxlbmd0aCk7Ci0JCXJldHVybiAtRUlPOwotCX0KLQlpZiAoIWlzX3Bvd2VyX29mXzIoc3RyaXBl X2xlbikgfHwgc3RyaXBlX2xlbiAhPSBCVFJGU19TVFJJUEVfTEVOKSB7Ci0JCWJ0cmZzX2Vycihm c19pbmZvLCAiaW52YWxpZCBjaHVuayBzdHJpcGUgbGVuZ3RoOiAlbGx1IiwKLQkJCSAgc3RyaXBl X2xlbik7Ci0JCXJldHVybiAtRUlPOwotCX0KLQlpZiAofihCVFJGU19CTE9DS19HUk9VUF9UWVBF X01BU0sgfCBCVFJGU19CTE9DS19HUk9VUF9QUk9GSUxFX01BU0spICYKLQkgICAgdHlwZSkgewot CQlidHJmc19lcnIoZnNfaW5mbywgInVucmVjb2duaXplZCBjaHVuayB0eXBlOiAlbGx1IiwKLQkJ CSAgfihCVFJGU19CTE9DS19HUk9VUF9UWVBFX01BU0sgfAotCQkJICAgIEJUUkZTX0JMT0NLX0dS T1VQX1BST0ZJTEVfTUFTSykgJgotCQkJICBidHJmc19jaHVua190eXBlKGxlYWYsIGNodW5rKSk7 Ci0JCXJldHVybiAtRUlPOwotCX0KLQotCWlmICgodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1RZ UEVfTUFTSykgPT0gMCkgewotCQlidHJmc19lcnIoZnNfaW5mbywgIm1pc3NpbmcgY2h1bmsgdHlw ZSBmbGFnOiAweCVsbHgiLCB0eXBlKTsKLQkJcmV0dXJuIC1FSU87Ci0JfQotCi0JaWYgKCh0eXBl ICYgQlRSRlNfQkxPQ0tfR1JPVVBfU1lTVEVNKSAmJgotCSAgICAodHlwZSAmIChCVFJGU19CTE9D S19HUk9VUF9NRVRBREFUQSB8IEJUUkZTX0JMT0NLX0dST1VQX0RBVEEpKSkgewotCQlidHJmc19l cnIoZnNfaW5mbywKLQkJCSJzeXN0ZW0gY2h1bmsgd2l0aCBkYXRhIG9yIG1ldGFkYXRhIHR5cGU6 IDB4JWxseCIsIHR5cGUpOwotCQlyZXR1cm4gLUVJTzsKLQl9Ci0KLQlmZWF0dXJlcyA9IGJ0cmZz X3N1cGVyX2luY29tcGF0X2ZsYWdzKGZzX2luZm8tPnN1cGVyX2NvcHkpOwotCWlmIChmZWF0dXJl cyAmIEJUUkZTX0ZFQVRVUkVfSU5DT01QQVRfTUlYRURfR1JPVVBTKQotCQltaXhlZCA9IHRydWU7 Ci0KLQlpZiAoIW1peGVkKSB7Ci0JCWlmICgodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX01FVEFE QVRBKSAmJgotCQkgICAgKHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9EQVRBKSkgewotCQkJYnRy ZnNfZXJyKGZzX2luZm8sCi0JCQkibWl4ZWQgY2h1bmsgdHlwZSBpbiBub24tbWl4ZWQgbW9kZTog MHglbGx4IiwgdHlwZSk7Ci0JCQlyZXR1cm4gLUVJTzsKLQkJfQotCX0KLQotCWlmICgodHlwZSAm IEJUUkZTX0JMT0NLX0dST1VQX1JBSUQxMCAmJiBzdWJfc3RyaXBlcyAhPSAyKSB8fAotCSAgICAo dHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1JBSUQxICYmIG51bV9zdHJpcGVzICE9IDIpIHx8Ci0J ICAgICh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfUkFJRDUgJiYgbnVtX3N0cmlwZXMgPCAyKSB8 fAotCSAgICAodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1JBSUQ2ICYmIG51bV9zdHJpcGVzIDwg MykgfHwKLQkgICAgKHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9EVVAgJiYgbnVtX3N0cmlwZXMg IT0gMikgfHwKLQkgICAgKCh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfUFJPRklMRV9NQVNLKSA9 PSAwICYmCi0JICAgICBudW1fc3RyaXBlcyAhPSAxKSkgewotCQlidHJmc19lcnIoZnNfaW5mbywK LQkJCSJpbnZhbGlkIG51bV9zdHJpcGVzOnN1Yl9zdHJpcGVzICV1OiV1IGZvciBwcm9maWxlICVs bHUiLAotCQkJbnVtX3N0cmlwZXMsIHN1Yl9zdHJpcGVzLAotCQkJdHlwZSAmIEJUUkZTX0JMT0NL X0dST1VQX1BST0ZJTEVfTUFTSyk7Ci0JCXJldHVybiAtRUlPOwotCX0KLQotCXJldHVybiAwOwot fQotCiBzdGF0aWMgdm9pZCBidHJmc19yZXBvcnRfbWlzc2luZ19kZXZpY2Uoc3RydWN0IGJ0cmZz X2ZzX2luZm8gKmZzX2luZm8sCiAJCQkJCXU2NCBkZXZpZCwgdTggKnV1aWQsIGJvb2wgZXJyb3Ip CiB7CgpGcm9tIDRhZGY3YWE1NDZlZDA2NDRlMGYyNmFiY2RkZjZiZWFiMWZjN2Q4NjggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IFF1IFdlbnJ1byA8d3F1QHN1c2UuY29tPgpEYXRlOiBX ZWQsIDIwIE1hciAyMDE5IDEzOjM2OjA2ICswODAwClN1YmplY3Q6IGJ0cmZzOiB0cmVlLWNoZWNr ZXI6IE1ha2UgY2h1bmsgaXRlbSBjaGVja2VyIG1lc3NhZ2VzIG1vcmUgcmVhZGFibGUKCmNvbW1p dCBmMTE0MDI0Mzc2YmNlYjFjMGY2MWE3YmFkNGE3MmEwZjk3ODc2N2FmIHVwc3RyZWFtLgoKT2xk IGVycm9yIG1lc3NhZ2Ugd291bGQgYmUgc29tZXRoaW5nIGxpa2U6CiAgQlRSRlMgZXJyb3IgKGRl dmljZSBkbS0zKTogaW52YWxpZCBjaHVuayBudW1fc3RpcHJlczogMAoKTmV3IGVycm9yIG1lc3Nh Z2Ugd291bGQgYmU6CiAgQnRyZnMgY3JpdGljYWwgKGRldmljZSBkbS0zKTogY29ycnVwdCBzdXBl cmJsb2NrIHN5c2NodW5rIGFycmF5OiBjaHVua19zdGFydD0yMDk3MTUyLCBpbnZhbGlkIGNodW5r IG51bV9zdHJpcGVzOiAwCk9yCiAgQnRyZnMgY3JpdGljYWwgKGRldmljZSBkbS0zKTogY29ycnVw dCBsZWFmOiByb290PTMgYmxvY2s9ODM4ODYwOCBzbG90PTMgY2h1bmtfc3RhcnQ9MjA5NzE1Miwg aW52YWxpZCBjaHVuayBudW1fc3RyaXBlczogMAoKQW5kIGZvciBjZXJ0YWluIGVycm9yIG1lc3Nh Z2UsIGFsc28gb3V0cHV0IGV4cGVjdGVkIHZhbHVlLgoKVGhlIGVycm9yIG1lc3NhZ2UgbGV2ZWxz IGFyZSBjaGFuZ2VkIGZyb20gZXJyb3IgdG8gY3JpdGljYWwuCgpSZXZpZXdlZC1ieTogSm9oYW5u ZXMgVGh1bXNoaXJuIDxqdGh1bXNoaXJuQHN1c2UuZGU+ClNpZ25lZC1vZmYtYnk6IFF1IFdlbnJ1 byA8d3F1QHN1c2UuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2Uu Y29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+Cltid2g6 IENoZXJyeS1waWNrZWQgZm9yIDQuMTkgdG8gZWFzZSBiYWNrcG9ydGluZyBsYXRlciBmaXhlc10K U2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28u dWs+Ci0tLQogZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMgfCA4MSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyks IDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jIGIv ZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKaW5kZXggOWY4MWY0ZTNmMjYzLi4zZjdmYjBkZGNlOGEg MTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCisrKyBiL2ZzL2J0cmZzL3RyZWUt Y2hlY2tlci5jCkBAIC00NDgsNiArNDQ4LDUxIEBAIHN0YXRpYyBpbnQgY2hlY2tfYmxvY2tfZ3Jv dXBfaXRlbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAlyZXR1cm4gMDsKIH0KIAor X19wcmludGYoNSwgNikKK19fY29sZAorc3RhdGljIHZvaWQgY2h1bmtfZXJyKGNvbnN0IHN0cnVj dCBidHJmc19mc19pbmZvICpmc19pbmZvLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1 ZmZlciAqbGVhZiwKKwkJICAgICAgY29uc3Qgc3RydWN0IGJ0cmZzX2NodW5rICpjaHVuaywgdTY0 IGxvZ2ljYWwsCisJCSAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCWJvb2wgaXNfc2I7 CisJc3RydWN0IHZhX2Zvcm1hdCB2YWY7CisJdmFfbGlzdCBhcmdzOworCWludCBpOworCWludCBz bG90ID0gLTE7CisKKwkvKiBPbmx5IHN1cGVyYmxvY2sgZWIgaXMgYWJsZSB0byBoYXZlIHN1Y2gg c21hbGwgb2Zmc2V0ICovCisJaXNfc2IgPSAobGVhZi0+c3RhcnQgPT0gQlRSRlNfU1VQRVJfSU5G T19PRkZTRVQpOworCisJaWYgKCFpc19zYikgeworCQkvKgorCQkgKiBHZXQgdGhlIHNsb3QgbnVt YmVyIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBzbG90cywgdGhpcworCQkgKiB3b3VsZCBwcm92 aWRlIGJldHRlciByZWFkYWJpbGl0eS4KKwkJICovCisJCWZvciAoaSA9IDA7IGkgPCBidHJmc19o ZWFkZXJfbnJpdGVtcyhsZWFmKTsgaSsrKSB7CisJCQlpZiAoYnRyZnNfaXRlbV9wdHJfb2Zmc2V0 KGxlYWYsIGkpID09CisJCQkJCSh1bnNpZ25lZCBsb25nKWNodW5rKSB7CisJCQkJc2xvdCA9IGk7 CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwl2YWYu Zm10ID0gZm10OworCXZhZi52YSA9ICZhcmdzOworCisJaWYgKGlzX3NiKQorCQlidHJmc19jcml0 KGZzX2luZm8sCisJCSJjb3JydXB0IHN1cGVyYmxvY2sgc3lzY2h1bmsgYXJyYXk6IGNodW5rX3N0 YXJ0PSVsbHUsICVwViIsCisJCQkgICBsb2dpY2FsLCAmdmFmKTsKKwllbHNlCisJCWJ0cmZzX2Ny aXQoZnNfaW5mbywKKwkiY29ycnVwdCBsZWFmOiByb290PSVsbHUgYmxvY2s9JWxsdSBzbG90PSVk IGNodW5rX3N0YXJ0PSVsbHUsICVwViIsCisJCQkgICBCVFJGU19DSFVOS19UUkVFX09CSkVDVElE LCBsZWFmLT5zdGFydCwgc2xvdCwKKwkJCSAgIGxvZ2ljYWwsICZ2YWYpOworCXZhX2VuZChhcmdz KTsKK30KKwogLyoKICAqIFRoZSBjb21tb24gY2h1bmsgY2hlY2sgd2hpY2ggY291bGQgYWxzbyB3 b3JrIG9uIHN1cGVyIGJsb2NrIHN5cyBjaHVuayBhcnJheS4KICAqCkBAIC00NzMsMzEgKzUxOCwz OCBAQCBpbnQgYnRyZnNfY2hlY2tfY2h1bmtfdmFsaWQoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZz X2luZm8sCiAJdHlwZSA9IGJ0cmZzX2NodW5rX3R5cGUobGVhZiwgY2h1bmspOwogCiAJaWYgKCFu dW1fc3RyaXBlcykgewotCQlidHJmc19lcnIoZnNfaW5mbywgImludmFsaWQgY2h1bmsgbnVtX3N0 cmlwZXM6ICV1IiwKLQkJCSAgbnVtX3N0cmlwZXMpOworCQljaHVua19lcnIoZnNfaW5mbywgbGVh ZiwgY2h1bmssIGxvZ2ljYWwsCisJCQkgICJpbnZhbGlkIGNodW5rIG51bV9zdHJpcGVzLCBoYXZl ICV1IiwgbnVtX3N0cmlwZXMpOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAJaWYgKCFJU19BTElHTkVE KGxvZ2ljYWwsIGZzX2luZm8tPnNlY3RvcnNpemUpKSB7Ci0JCWJ0cmZzX2Vycihmc19pbmZvLCAi aW52YWxpZCBjaHVuayBsb2dpY2FsICVsbHUiLCBsb2dpY2FsKTsKKwkJY2h1bmtfZXJyKGZzX2lu Zm8sIGxlYWYsIGNodW5rLCBsb2dpY2FsLAorCQkiaW52YWxpZCBjaHVuayBsb2dpY2FsLCBoYXZl ICVsbHUgc2hvdWxkIGFsaWduZWQgdG8gJXUiLAorCQkJICBsb2dpY2FsLCBmc19pbmZvLT5zZWN0 b3JzaXplKTsKIAkJcmV0dXJuIC1FSU87CiAJfQogCWlmIChidHJmc19jaHVua19zZWN0b3Jfc2l6 ZShsZWFmLCBjaHVuaykgIT0gZnNfaW5mby0+c2VjdG9yc2l6ZSkgewotCQlidHJmc19lcnIoZnNf aW5mbywgImludmFsaWQgY2h1bmsgc2VjdG9yc2l6ZSAldSIsCi0JCQkgIGJ0cmZzX2NodW5rX3Nl Y3Rvcl9zaXplKGxlYWYsIGNodW5rKSk7CisJCWNodW5rX2Vycihmc19pbmZvLCBsZWFmLCBjaHVu aywgbG9naWNhbCwKKwkJCSAgImludmFsaWQgY2h1bmsgc2VjdG9yc2l6ZSwgaGF2ZSAldSBleHBl Y3QgJXUiLAorCQkJICBidHJmc19jaHVua19zZWN0b3Jfc2l6ZShsZWFmLCBjaHVuayksCisJCQkg IGZzX2luZm8tPnNlY3RvcnNpemUpOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAJaWYgKCFsZW5ndGgg fHwgIUlTX0FMSUdORUQobGVuZ3RoLCBmc19pbmZvLT5zZWN0b3JzaXplKSkgewotCQlidHJmc19l cnIoZnNfaW5mbywgImludmFsaWQgY2h1bmsgbGVuZ3RoICVsbHUiLCBsZW5ndGgpOworCQljaHVu a19lcnIoZnNfaW5mbywgbGVhZiwgY2h1bmssIGxvZ2ljYWwsCisJCQkgICJpbnZhbGlkIGNodW5r IGxlbmd0aCwgaGF2ZSAlbGx1IiwgbGVuZ3RoKTsKIAkJcmV0dXJuIC1FSU87CiAJfQogCWlmICgh aXNfcG93ZXJfb2ZfMihzdHJpcGVfbGVuKSB8fCBzdHJpcGVfbGVuICE9IEJUUkZTX1NUUklQRV9M RU4pIHsKLQkJYnRyZnNfZXJyKGZzX2luZm8sICJpbnZhbGlkIGNodW5rIHN0cmlwZSBsZW5ndGg6 ICVsbHUiLAorCQljaHVua19lcnIoZnNfaW5mbywgbGVhZiwgY2h1bmssIGxvZ2ljYWwsCisJCQkg ICJpbnZhbGlkIGNodW5rIHN0cmlwZSBsZW5ndGg6ICVsbHUiLAogCQkJICBzdHJpcGVfbGVuKTsK IAkJcmV0dXJuIC1FSU87CiAJfQogCWlmICh+KEJUUkZTX0JMT0NLX0dST1VQX1RZUEVfTUFTSyB8 IEJUUkZTX0JMT0NLX0dST1VQX1BST0ZJTEVfTUFTSykgJgogCSAgICB0eXBlKSB7Ci0JCWJ0cmZz X2Vycihmc19pbmZvLCAidW5yZWNvZ25pemVkIGNodW5rIHR5cGU6ICVsbHUiLAorCQljaHVua19l cnIoZnNfaW5mbywgbGVhZiwgY2h1bmssIGxvZ2ljYWwsCisJCQkgICJ1bnJlY29nbml6ZWQgY2h1 bmsgdHlwZTogMHglbGx4IiwKIAkJCSAgfihCVFJGU19CTE9DS19HUk9VUF9UWVBFX01BU0sgfAog CQkJICAgIEJUUkZTX0JMT0NLX0dST1VQX1BST0ZJTEVfTUFTSykgJgogCQkJICBidHJmc19jaHVu a190eXBlKGxlYWYsIGNodW5rKSk7CkBAIC01MDUsMTQgKzU1NywxNyBAQCBpbnQgYnRyZnNfY2hl Y2tfY2h1bmtfdmFsaWQoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJfQogCiAJaWYg KCh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfVFlQRV9NQVNLKSA9PSAwKSB7Ci0JCWJ0cmZzX2Vy cihmc19pbmZvLCAibWlzc2luZyBjaHVuayB0eXBlIGZsYWc6IDB4JWxseCIsIHR5cGUpOworCQlj aHVua19lcnIoZnNfaW5mbywgbGVhZiwgY2h1bmssIGxvZ2ljYWwsCisJIm1pc3NpbmcgY2h1bmsg dHlwZSBmbGFnLCBoYXZlIDB4JWxseCBvbmUgYml0IG11c3QgYmUgc2V0IGluIDB4JWxseCIsCisJ CQkgIHR5cGUsIEJUUkZTX0JMT0NLX0dST1VQX1RZUEVfTUFTSyk7CiAJCXJldHVybiAtRUlPOwog CX0KIAogCWlmICgodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1NZU1RFTSkgJiYKIAkgICAgKHR5 cGUgJiAoQlRSRlNfQkxPQ0tfR1JPVVBfTUVUQURBVEEgfCBCVFJGU19CTE9DS19HUk9VUF9EQVRB KSkpIHsKLQkJYnRyZnNfZXJyKGZzX2luZm8sCi0JCQkic3lzdGVtIGNodW5rIHdpdGggZGF0YSBv ciBtZXRhZGF0YSB0eXBlOiAweCVsbHgiLCB0eXBlKTsKKwkJY2h1bmtfZXJyKGZzX2luZm8sIGxl YWYsIGNodW5rLCBsb2dpY2FsLAorCQkJICAic3lzdGVtIGNodW5rIHdpdGggZGF0YSBvciBtZXRh ZGF0YSB0eXBlOiAweCVsbHgiLAorCQkJICB0eXBlKTsKIAkJcmV0dXJuIC1FSU87CiAJfQogCkBA IC01MjMsNyArNTc4LDcgQEAgaW50IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKHN0cnVjdCBidHJm c19mc19pbmZvICpmc19pbmZvLAogCWlmICghbWl4ZWQpIHsKIAkJaWYgKCh0eXBlICYgQlRSRlNf QkxPQ0tfR1JPVVBfTUVUQURBVEEpICYmCiAJCSAgICAodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQ X0RBVEEpKSB7Ci0JCQlidHJmc19lcnIoZnNfaW5mbywKKwkJCWNodW5rX2Vycihmc19pbmZvLCBs ZWFmLCBjaHVuaywgbG9naWNhbCwKIAkJCSJtaXhlZCBjaHVuayB0eXBlIGluIG5vbi1taXhlZCBt b2RlOiAweCVsbHgiLCB0eXBlKTsKIAkJCXJldHVybiAtRUlPOwogCQl9CkBAIC01MzUsNyArNTkw LDcgQEAgaW50IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKHN0cnVjdCBidHJmc19mc19pbmZvICpm c19pbmZvLAogCSAgICAodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1JBSUQ2ICYmIG51bV9zdHJp cGVzIDwgMykgfHwKIAkgICAgKHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9EVVAgJiYgbnVtX3N0 cmlwZXMgIT0gMikgfHwKIAkgICAgKCh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfUFJPRklMRV9N QVNLKSA9PSAwICYmIG51bV9zdHJpcGVzICE9IDEpKSB7Ci0JCWJ0cmZzX2Vycihmc19pbmZvLAor CQljaHVua19lcnIoZnNfaW5mbywgbGVhZiwgY2h1bmssIGxvZ2ljYWwsCiAJCQkiaW52YWxpZCBu dW1fc3RyaXBlczpzdWJfc3RyaXBlcyAldToldSBmb3IgcHJvZmlsZSAlbGx1IiwKIAkJCW51bV9z dHJpcGVzLCBzdWJfc3RyaXBlcywKIAkJCXR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9QUk9GSUxF X01BU0spOwoKRnJvbSA2NjhmMzY4N2RkYWY4ZTcwODFlNWM3ODJkZDk5NTM4MzJiMTdmMjI4IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KRGF0 ZTogV2VkLCAyMCBNYXIgMjAxOSAxMzozOToxNCArMDgwMApTdWJqZWN0OiBidHJmczogdHJlZS1j aGVja2VyOiBNYWtlIGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKCkgcmV0dXJuIEVVQ0xFQU4KIGlu c3RlYWQgb2YgRUlPCgpjb21taXQgYmY4NzFjM2I0M2IxZGNjM2YyYTA3NmZmMzlhOGYxY2U3OTU5 ZDk1OCB1cHN0cmVhbS4KClRvIGZvbGxvdyB0aGUgc3RhbmRhcmQgYmVoYXZpb3Igb2YgdHJlZS1j aGVja2VyLgoKUmV2aWV3ZWQtYnk6IEpvaGFubmVzIFRodW1zaGlybiA8anRodW1zaGlybkBzdXNl LmRlPgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6 IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3Rl cmJhIDxkc3RlcmJhQHN1c2UuY29tPgpbYndoOiBDaGVycnktcGlja2VkIGZvciA0LjE5IHRvIGVh c2UgYmFja3BvcnRpbmcgbGF0ZXIgZml4ZXNdClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3Mg PGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZzL2J0cmZzL3RyZWUtY2hlY2tl ci5jIHwgMjIgKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDExIGluc2Vy dGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3RyZWUtY2hl Y2tlci5jIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKaW5kZXggM2Y3ZmIwZGRjZThhLi43YjU5 YTNkZmI1YTggMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCisrKyBiL2ZzL2J0 cmZzL3RyZWUtY2hlY2tlci5jCkBAIC00OTYsNyArNDk2LDcgQEAgc3RhdGljIHZvaWQgY2h1bmtf ZXJyKGNvbnN0IHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogLyoKICAqIFRoZSBjb21t b24gY2h1bmsgY2hlY2sgd2hpY2ggY291bGQgYWxzbyB3b3JrIG9uIHN1cGVyIGJsb2NrIHN5cyBj aHVuayBhcnJheS4KICAqCi0gKiBSZXR1cm4gLUVJTyBpZiBhbnl0aGluZyBpcyBjb3JydXB0ZWQu CisgKiBSZXR1cm4gLUVVQ0xFQU4gaWYgYW55dGhpbmcgaXMgY29ycnVwdGVkLgogICogUmV0dXJu IDAgaWYgZXZlcnl0aGluZyBpcyBPSy4KICAqLwogaW50IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlk KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLApAQCAtNTIwLDMxICs1MjAsMzEgQEAgaW50 IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAog CWlmICghbnVtX3N0cmlwZXMpIHsKIAkJY2h1bmtfZXJyKGZzX2luZm8sIGxlYWYsIGNodW5rLCBs b2dpY2FsLAogCQkJICAiaW52YWxpZCBjaHVuayBudW1fc3RyaXBlcywgaGF2ZSAldSIsIG51bV9z dHJpcGVzKTsKLQkJcmV0dXJuIC1FSU87CisJCXJldHVybiAtRVVDTEVBTjsKIAl9CiAJaWYgKCFJ U19BTElHTkVEKGxvZ2ljYWwsIGZzX2luZm8tPnNlY3RvcnNpemUpKSB7CiAJCWNodW5rX2Vycihm c19pbmZvLCBsZWFmLCBjaHVuaywgbG9naWNhbCwKIAkJImludmFsaWQgY2h1bmsgbG9naWNhbCwg aGF2ZSAlbGx1IHNob3VsZCBhbGlnbmVkIHRvICV1IiwKIAkJCSAgbG9naWNhbCwgZnNfaW5mby0+ c2VjdG9yc2l6ZSk7Ci0JCXJldHVybiAtRUlPOworCQlyZXR1cm4gLUVVQ0xFQU47CiAJfQogCWlm IChidHJmc19jaHVua19zZWN0b3Jfc2l6ZShsZWFmLCBjaHVuaykgIT0gZnNfaW5mby0+c2VjdG9y c2l6ZSkgewogCQljaHVua19lcnIoZnNfaW5mbywgbGVhZiwgY2h1bmssIGxvZ2ljYWwsCiAJCQkg ICJpbnZhbGlkIGNodW5rIHNlY3RvcnNpemUsIGhhdmUgJXUgZXhwZWN0ICV1IiwKIAkJCSAgYnRy ZnNfY2h1bmtfc2VjdG9yX3NpemUobGVhZiwgY2h1bmspLAogCQkJICBmc19pbmZvLT5zZWN0b3Jz aXplKTsKLQkJcmV0dXJuIC1FSU87CisJCXJldHVybiAtRVVDTEVBTjsKIAl9CiAJaWYgKCFsZW5n dGggfHwgIUlTX0FMSUdORUQobGVuZ3RoLCBmc19pbmZvLT5zZWN0b3JzaXplKSkgewogCQljaHVu a19lcnIoZnNfaW5mbywgbGVhZiwgY2h1bmssIGxvZ2ljYWwsCiAJCQkgICJpbnZhbGlkIGNodW5r IGxlbmd0aCwgaGF2ZSAlbGx1IiwgbGVuZ3RoKTsKLQkJcmV0dXJuIC1FSU87CisJCXJldHVybiAt RVVDTEVBTjsKIAl9CiAJaWYgKCFpc19wb3dlcl9vZl8yKHN0cmlwZV9sZW4pIHx8IHN0cmlwZV9s ZW4gIT0gQlRSRlNfU1RSSVBFX0xFTikgewogCQljaHVua19lcnIoZnNfaW5mbywgbGVhZiwgY2h1 bmssIGxvZ2ljYWwsCiAJCQkgICJpbnZhbGlkIGNodW5rIHN0cmlwZSBsZW5ndGg6ICVsbHUiLAog CQkJICBzdHJpcGVfbGVuKTsKLQkJcmV0dXJuIC1FSU87CisJCXJldHVybiAtRVVDTEVBTjsKIAl9 CiAJaWYgKH4oQlRSRlNfQkxPQ0tfR1JPVVBfVFlQRV9NQVNLIHwgQlRSRlNfQkxPQ0tfR1JPVVBf UFJPRklMRV9NQVNLKSAmCiAJICAgIHR5cGUpIHsKQEAgLTU1MywxNCArNTUzLDE0IEBAIGludCBi dHJmc19jaGVja19jaHVua192YWxpZChzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJ CSAgfihCVFJGU19CTE9DS19HUk9VUF9UWVBFX01BU0sgfAogCQkJICAgIEJUUkZTX0JMT0NLX0dS T1VQX1BST0ZJTEVfTUFTSykgJgogCQkJICBidHJmc19jaHVua190eXBlKGxlYWYsIGNodW5rKSk7 Ci0JCXJldHVybiAtRUlPOworCQlyZXR1cm4gLUVVQ0xFQU47CiAJfQogCiAJaWYgKCh0eXBlICYg QlRSRlNfQkxPQ0tfR1JPVVBfVFlQRV9NQVNLKSA9PSAwKSB7CiAJCWNodW5rX2Vycihmc19pbmZv LCBsZWFmLCBjaHVuaywgbG9naWNhbCwKIAkibWlzc2luZyBjaHVuayB0eXBlIGZsYWcsIGhhdmUg MHglbGx4IG9uZSBiaXQgbXVzdCBiZSBzZXQgaW4gMHglbGx4IiwKIAkJCSAgdHlwZSwgQlRSRlNf QkxPQ0tfR1JPVVBfVFlQRV9NQVNLKTsKLQkJcmV0dXJuIC1FSU87CisJCXJldHVybiAtRVVDTEVB TjsKIAl9CiAKIAlpZiAoKHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9TWVNURU0pICYmCkBAIC01 NjgsNyArNTY4LDcgQEAgaW50IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKHN0cnVjdCBidHJmc19m c19pbmZvICpmc19pbmZvLAogCQljaHVua19lcnIoZnNfaW5mbywgbGVhZiwgY2h1bmssIGxvZ2lj YWwsCiAJCQkgICJzeXN0ZW0gY2h1bmsgd2l0aCBkYXRhIG9yIG1ldGFkYXRhIHR5cGU6IDB4JWxs eCIsCiAJCQkgIHR5cGUpOwotCQlyZXR1cm4gLUVJTzsKKwkJcmV0dXJuIC1FVUNMRUFOOwogCX0K IAogCWZlYXR1cmVzID0gYnRyZnNfc3VwZXJfaW5jb21wYXRfZmxhZ3MoZnNfaW5mby0+c3VwZXJf Y29weSk7CkBAIC01ODAsNyArNTgwLDcgQEAgaW50IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKHN0 cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogCQkgICAgKHR5cGUgJiBCVFJGU19CTE9DS19H Uk9VUF9EQVRBKSkgewogCQkJY2h1bmtfZXJyKGZzX2luZm8sIGxlYWYsIGNodW5rLCBsb2dpY2Fs LAogCQkJIm1peGVkIGNodW5rIHR5cGUgaW4gbm9uLW1peGVkIG1vZGU6IDB4JWxseCIsIHR5cGUp OwotCQkJcmV0dXJuIC1FSU87CisJCQlyZXR1cm4gLUVVQ0xFQU47CiAJCX0KIAl9CiAKQEAgLTU5 NCw3ICs1OTQsNyBAQCBpbnQgYnRyZnNfY2hlY2tfY2h1bmtfdmFsaWQoc3RydWN0IGJ0cmZzX2Zz X2luZm8gKmZzX2luZm8sCiAJCQkiaW52YWxpZCBudW1fc3RyaXBlczpzdWJfc3RyaXBlcyAldTol dSBmb3IgcHJvZmlsZSAlbGx1IiwKIAkJCW51bV9zdHJpcGVzLCBzdWJfc3RyaXBlcywKIAkJCXR5 cGUgJiBCVFJGU19CTE9DS19HUk9VUF9QUk9GSUxFX01BU0spOwotCQlyZXR1cm4gLUVJTzsKKwkJ cmV0dXJuIC1FVUNMRUFOOwogCX0KIAogCXJldHVybiAwOwoKRnJvbSAyNDdiMzcyNjIxYmQzNmY4 YWZiY2VmZGNjYjYxZjAyODM5ZTA2NmY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBR dSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KRGF0ZTogV2VkLCAyMCBNYXIgMjAxOSAxMzo0MjozMyAr MDgwMApTdWJqZWN0OiBidHJmczogdHJlZS1jaGVja2VyOiBDaGVjayBjaHVuayBpdGVtIGF0IHRy ZWUgYmxvY2sgcmVhZCB0aW1lCgpjb21taXQgMDc1Y2IzYzc4ZmU3OTc2YzlmMjljYTFmYTIzZjk3 Mjg2MzRlY2VmYyB1cHN0cmVhbS4KClNpbmNlIHdlIGhhdmUgYnRyZnNfY2hlY2tfY2h1bmtfdmFs aWQoKSBpbiB0cmVlLWNoZWNrZXIsIGxldCdzIGRvCmNodW5rIGl0ZW0gdmVyaWZpY2F0aW9uIGlu IHRyZWUtY2hlY2tlciB0b28uCgpTaW5jZSB0aGUgdHJlZS1jaGVja2VyIGlzIHJ1biBhdCBlbmRp byB0aW1lLCBpZiBvbmUgY2h1bmsgbGVhZiBmYWlscwpjaHVuayB2ZXJpZmljYXRpb24sIHdlIGNh biBzdGlsbCByZXRyeSB0aGUgb3RoZXIgY29weSwgbWFraW5nIGJ0cmZzIG1vcmUKcm9idXN0IHRv IGZ1enplZCBpbWFnZSBhcyB3ZSBtYXkgc3RpbGwgZ2V0IGEgZ29vZCBjaHVuayBpdGVtLgoKQWxz byBzaW5jZSB3ZSBoYXZlIGRvbmUgY2h1bmsgdmVyaWZpY2F0aW9uIGluIHRyZWUgYmxvY2sgcmVh ZCB0aW1lLCBza2lwCnRoZSBidHJmc19jaGVja19jaHVua192YWxpZCgpIGNhbGwgaW4gcmVhZF9v bmVfY2h1bmsoKSBpZiB3ZSdyZSByZWFkaW5nCmNodW5rIGl0ZW1zIGZyb20gbGVhZi4KClJldmll d2VkLWJ5OiBKb2hhbm5lcyBUaHVtc2hpcm4gPGp0aHVtc2hpcm5Ac3VzZS5kZT4KU2lnbmVkLW9m Zi1ieTogUXUgV2VucnVvIDx3cXVAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBEYXZpZCBTdGVyYmEg PGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBz dXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2Rl dGhpbmsuY28udWs+Ci0tLQogZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMgfCAgNiArKysrKysKIGZz L2J0cmZzL3ZvbHVtZXMuYyAgICAgIHwgMTIgKysrKysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQs IDE1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMv dHJlZS1jaGVja2VyLmMgYi9mcy9idHJmcy90cmVlLWNoZWNrZXIuYwppbmRleCA3YjU5YTNkZmI1 YTguLmU3MDk5MzAwZDNlMCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKKysr IGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKQEAgLTYwOCw2ICs2MDgsNyBAQCBzdGF0aWMgaW50 IGNoZWNrX2xlYWZfaXRlbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJCSAgIHN0 cnVjdCBidHJmc19rZXkgKmtleSwgaW50IHNsb3QpCiB7CiAJaW50IHJldCA9IDA7CisJc3RydWN0 IGJ0cmZzX2NodW5rICpjaHVuazsKIAogCXN3aXRjaCAoa2V5LT50eXBlKSB7CiAJY2FzZSBCVFJG U19FWFRFTlRfREFUQV9LRVk6CkBAIC02MjQsNiArNjI1LDExIEBAIHN0YXRpYyBpbnQgY2hlY2tf bGVhZl9pdGVtKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogCWNhc2UgQlRSRlNfQkxP Q0tfR1JPVVBfSVRFTV9LRVk6CiAJCXJldCA9IGNoZWNrX2Jsb2NrX2dyb3VwX2l0ZW0oZnNfaW5m bywgbGVhZiwga2V5LCBzbG90KTsKIAkJYnJlYWs7CisJY2FzZSBCVFJGU19DSFVOS19JVEVNX0tF WToKKwkJY2h1bmsgPSBidHJmc19pdGVtX3B0cihsZWFmLCBzbG90LCBzdHJ1Y3QgYnRyZnNfY2h1 bmspOworCQlyZXQgPSBidHJmc19jaGVja19jaHVua192YWxpZChmc19pbmZvLCBsZWFmLCBjaHVu aywKKwkJCQkJICAgICAga2V5LT5vZmZzZXQpOworCQlicmVhazsKIAl9CiAJcmV0dXJuIHJldDsK IH0KZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3ZvbHVtZXMuYyBiL2ZzL2J0cmZzL3ZvbHVtZXMuYwpp bmRleCAyNzdjYjEwNTQxN2UuLjYzMzc5OGExYTNjZiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdm9s dW1lcy5jCisrKyBiL2ZzL2J0cmZzL3ZvbHVtZXMuYwpAQCAtNjM5OSw5ICs2Mzk5LDE1IEBAIHN0 YXRpYyBpbnQgcmVhZF9vbmVfY2h1bmsoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIHN0 cnVjdCBidHJmc19rZXkgKmtleSwKIAlsZW5ndGggPSBidHJmc19jaHVua19sZW5ndGgobGVhZiwg Y2h1bmspOwogCW51bV9zdHJpcGVzID0gYnRyZnNfY2h1bmtfbnVtX3N0cmlwZXMobGVhZiwgY2h1 bmspOwogCi0JcmV0ID0gYnRyZnNfY2hlY2tfY2h1bmtfdmFsaWQoZnNfaW5mbywgbGVhZiwgY2h1 bmssIGxvZ2ljYWwpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJLyoKKwkgKiBPbmx5IG5l ZWQgdG8gdmVyaWZ5IGNodW5rIGl0ZW0gaWYgd2UncmUgcmVhZGluZyBmcm9tIHN5cyBjaHVuayBh cnJheSwKKwkgKiBhcyBjaHVuayBpdGVtIGluIHRyZWUgYmxvY2sgaXMgYWxyZWFkeSB2ZXJpZmll ZCBieSB0cmVlLWNoZWNrZXIuCisJICovCisJaWYgKGxlYWYtPnN0YXJ0ID09IEJUUkZTX1NVUEVS X0lORk9fT0ZGU0VUKSB7CisJCXJldCA9IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKGZzX2luZm8s IGxlYWYsIGNodW5rLCBsb2dpY2FsKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQog CiAJcmVhZF9sb2NrKCZtYXBfdHJlZS0+bWFwX3RyZWUubG9jayk7CiAJZW0gPSBsb29rdXBfZXh0 ZW50X21hcHBpbmcoJm1hcF90cmVlLT5tYXBfdHJlZSwgbG9naWNhbCwgMSk7CgpGcm9tIGE0ZTIz M2UyOWNjNDkyYjM1NWVhMDczOTgzYjBjY2UyMmIyOGFhOGIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IFF1IFdlbnJ1byA8d3F1QHN1c2UuY29tPgpEYXRlOiBGcmksIDggTWFyIDIwMTkg MTQ6MjA6MDMgKzA4MDAKU3ViamVjdDogYnRyZnM6IHRyZWUtY2hlY2tlcjogVmVyaWZ5IGRldiBp dGVtCgpjb21taXQgYWI0YmEyZTEzMzQ2M2M3MDJiMzcyNDI1NjBkN2ZhYmVkZDJkYzc1MCB1cHN0 cmVhbS4KCltCVUddCkZvciBmdXp6ZWQgaW1hZ2Ugd2hvc2UgREVWX0lURU0gaGFzIGludmFsaWQg dG90YWxfYnl0ZXMgYXMgMCwgdGhlbgprZXJuZWwgd2lsbCBqdXN0IHBhbmljOgogIEJVRzogdW5h YmxlIHRvIGhhbmRsZSBrZXJuZWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGF0IDAwMDAwMDAw MDAwMDAwOTgKICAjUEYgZXJyb3I6IFtub3JtYWwga2VybmVsIHJlYWQgZmF1bHRdCiAgUEdEIDgw MDAwMDAyMmIyYmQwNjcgUDREIDgwMDAwMDAyMmIyYmQwNjcgUFVEIDIyYjJiYzA2NyBQTUQgMAog IE9vcHM6IDAwMDAgWyMxXSBTTVAgUFRJCiAgQ1BVOiAwIFBJRDogMTEwNiBDb21tOiBtb3VudCBO b3QgdGFpbnRlZCA1LjAuMC1yYzgrICM5CiAgUklQOiAwMDEwOmJ0cmZzX3ZlcmlmeV9kZXZfZXh0 ZW50cysweDJhNS8weDVhMAogIENhbGwgVHJhY2U6CiAgIG9wZW5fY3RyZWUrMHgxNjBkLzB4MjE0 OQogICBidHJmc19tb3VudF9yb290KzB4NWIyLzB4NjgwCgpbQ0FVU0VdCklmIGRldmljZSBleHRl bnQgdmVyaWZpY2F0aW9uIGZpbmRzIGEgZGVpdmNlIHdpdGggMCB0b3RhbF9ieXRlcywgdGhlbiBp dAphc3N1bWVzIGl0J3MgYSBzZWVkIGR1bW15LCB0aGVuIHNlYXJjaCBmb3Igc2VlZCBkZXZpY2Vz LgoKQnV0IGluIHRoaXMgY2FzZSwgdGhlcmUgaXMgbm8gc2VlZCBkZXZpY2UgYXQgYWxsLCBjYXVz aW5nIE5VTEwgcG9pbnRlci4KCltGSVhdClNpbmNlIHRoaXMgaXMgY2F1c2VkIGJ5IGZ1enplZCBp bWFnZSwgbGV0J3MgZ28gdGhlIHRyZWUtY2hlY2sgd2F5LCBqdXN0CmFkZCBhIG5ldyB2ZXJpZmlj YXRpb24gZm9yIGRldmljZSBpdGVtLgoKUmVwb3J0ZWQtYnk6IFlvb24gSnVuZ3llb24gPGp1bmd5 ZW9uQGdhdGVjaC5lZHU+Ckxpbms6IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9MjAyNjkxClJldmlld2VkLWJ5OiBOaWtvbGF5IEJvcmlzb3YgPG5ib3Jpc292QHN1 c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KUmV2aWV3ZWQt Ynk6IEpvaGFubmVzIFRodW1zaGlybiA8anRodW1zaGlybkBzdXNlLmRlPgpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRj aGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZzL2J0cmZzL3RyZWUt Y2hlY2tlci5jIHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGZzL2J0cmZzL3ZvbHVtZXMuYyAgICAgIHwgIDkgLS0tLS0KIGZzL2J0cmZzL3ZvbHVtZXMuaCAg ICAgIHwgIDkgKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgOSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9idHJmcy90cmVlLWNoZWNrZXIuYyBiL2ZzL2J0cmZz L3RyZWUtY2hlY2tlci5jCmluZGV4IGU3MDk5MzAwZDNlMC4uYjVlN2NhZWIyOGEyIDEwMDY0NAot LS0gYS9mcy9idHJmcy90cmVlLWNoZWNrZXIuYworKysgYi9mcy9idHJmcy90cmVlLWNoZWNrZXIu YwpAQCAtNjAwLDYgKzYwMCw3NyBAQCBpbnQgYnRyZnNfY2hlY2tfY2h1bmtfdmFsaWQoc3RydWN0 IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJcmV0dXJuIDA7CiB9CiAKK19fcHJpbnRmKDQsIDUp CitfX2NvbGQKK3N0YXRpYyB2b2lkIGRldl9pdGVtX2Vycihjb25zdCBzdHJ1Y3QgYnRyZnNfZnNf aW5mbyAqZnNfaW5mbywKKwkJCSBjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIGludCBz bG90LAorCQkJIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXN0cnVjdCBidHJmc19rZXkga2V5 OworCXN0cnVjdCB2YV9mb3JtYXQgdmFmOworCXZhX2xpc3QgYXJnczsKKworCWJ0cmZzX2l0ZW1f a2V5X3RvX2NwdShlYiwgJmtleSwgc2xvdCk7CisJdmFfc3RhcnQoYXJncywgZm10KTsKKworCXZh Zi5mbXQgPSBmbXQ7CisJdmFmLnZhID0gJmFyZ3M7CisKKwlidHJmc19jcml0KGZzX2luZm8sCisJ ImNvcnJ1cHQgJXM6IHJvb3Q9JWxsdSBibG9jaz0lbGx1IHNsb3Q9JWQgZGV2aWQ9JWxsdSAlcFYi LAorCQlidHJmc19oZWFkZXJfbGV2ZWwoZWIpID09IDAgPyAibGVhZiIgOiAibm9kZSIsCisJCWJ0 cmZzX2hlYWRlcl9vd25lcihlYiksIGJ0cmZzX2hlYWRlcl9ieXRlbnIoZWIpLCBzbG90LAorCQlr ZXkub2JqZWN0aWQsICZ2YWYpOworCXZhX2VuZChhcmdzKTsKK30KKworc3RhdGljIGludCBjaGVj a19kZXZfaXRlbShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKKwkJCSAgc3RydWN0IGV4 dGVudF9idWZmZXIgKmxlYWYsCisJCQkgIHN0cnVjdCBidHJmc19rZXkgKmtleSwgaW50IHNsb3Qp Cit7CisJc3RydWN0IGJ0cmZzX2Rldl9pdGVtICpkaXRlbTsKKwl1NjQgbWF4X2RldmlkID0gbWF4 KEJUUkZTX01BWF9ERVZTKGZzX2luZm8pLCBCVFJGU19NQVhfREVWU19TWVNfQ0hVTkspOworCisJ aWYgKGtleS0+b2JqZWN0aWQgIT0gQlRSRlNfREVWX0lURU1TX09CSkVDVElEKSB7CisJCWRldl9p dGVtX2Vycihmc19pbmZvLCBsZWFmLCBzbG90LAorCQkJICAgICAiaW52YWxpZCBvYmplY3RpZDog aGFzPSVsbHUgZXhwZWN0PSVsbHUiLAorCQkJICAgICBrZXktPm9iamVjdGlkLCBCVFJGU19ERVZf SVRFTVNfT0JKRUNUSUQpOworCQlyZXR1cm4gLUVVQ0xFQU47CisJfQorCWlmIChrZXktPm9mZnNl dCA+IG1heF9kZXZpZCkgeworCQlkZXZfaXRlbV9lcnIoZnNfaW5mbywgbGVhZiwgc2xvdCwKKwkJ CSAgICAgImludmFsaWQgZGV2aWQ6IGhhcz0lbGx1IGV4cGVjdD1bMCwgJWxsdV0iLAorCQkJICAg ICBrZXktPm9mZnNldCwgbWF4X2RldmlkKTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKwlkaXRl bSA9IGJ0cmZzX2l0ZW1fcHRyKGxlYWYsIHNsb3QsIHN0cnVjdCBidHJmc19kZXZfaXRlbSk7CisJ aWYgKGJ0cmZzX2RldmljZV9pZChsZWFmLCBkaXRlbSkgIT0ga2V5LT5vZmZzZXQpIHsKKwkJZGV2 X2l0ZW1fZXJyKGZzX2luZm8sIGxlYWYsIHNsb3QsCisJCQkgICAgICJkZXZpZCBtaXNtYXRjaDog a2V5IGhhcz0lbGx1IGl0ZW0gaGFzPSVsbHUiLAorCQkJICAgICBrZXktPm9mZnNldCwgYnRyZnNf ZGV2aWNlX2lkKGxlYWYsIGRpdGVtKSk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisKKwkvKgor CSAqIEZvciBkZXZpY2UgdG90YWxfYnl0ZXMsIHdlIGRvbid0IGhhdmUgcmVsaWFibGUgd2F5IHRv IGNoZWNrIGl0LCBhcworCSAqIGl0IGNhbiBiZSAwIGZvciBkZXZpY2UgcmVtb3ZhbC4gRGV2aWNl IHNpemUgY2hlY2sgY2FuIG9ubHkgYmUgZG9uZQorCSAqIGJ5IGRldiBleHRlbnRzIGNoZWNrLgor CSAqLworCWlmIChidHJmc19kZXZpY2VfYnl0ZXNfdXNlZChsZWFmLCBkaXRlbSkgPgorCSAgICBi dHJmc19kZXZpY2VfdG90YWxfYnl0ZXMobGVhZiwgZGl0ZW0pKSB7CisJCWRldl9pdGVtX2Vycihm c19pbmZvLCBsZWFmLCBzbG90LAorCQkJICAgICAiaW52YWxpZCBieXRlcyB1c2VkOiBoYXZlICVs bHUgZXhwZWN0IFswLCAlbGx1XSIsCisJCQkgICAgIGJ0cmZzX2RldmljZV9ieXRlc191c2VkKGxl YWYsIGRpdGVtKSwKKwkJCSAgICAgYnRyZnNfZGV2aWNlX3RvdGFsX2J5dGVzKGxlYWYsIGRpdGVt KSk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisJLyoKKwkgKiBSZW1haW5pbmcgbWVtYmVycyBs aWtlIGlvX2FsaWduL3R5cGUvZ2VuL2Rldl9ncm91cCBhcmVuJ3QgcmVhbGx5CisJICogdXRpbGl6 ZWQuICBTa2lwIHRoZW0gdG8gbWFrZSBsYXRlciB1c2FnZSBvZiB0aGVtIGVhc2llci4KKwkgKi8K KwlyZXR1cm4gMDsKK30KKwogLyoKICAqIENvbW1vbiBwb2ludCB0byBzd2l0Y2ggdGhlIGl0ZW0t c3BlY2lmaWMgdmFsaWRhdGlvbi4KICAqLwpAQCAtNjMwLDYgKzcwMSw5IEBAIHN0YXRpYyBpbnQg Y2hlY2tfbGVhZl9pdGVtKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogCQlyZXQgPSBi dHJmc19jaGVja19jaHVua192YWxpZChmc19pbmZvLCBsZWFmLCBjaHVuaywKIAkJCQkJICAgICAg a2V5LT5vZmZzZXQpOwogCQlicmVhazsKKwljYXNlIEJUUkZTX0RFVl9JVEVNX0tFWToKKwkJcmV0 ID0gY2hlY2tfZGV2X2l0ZW0oZnNfaW5mbywgbGVhZiwga2V5LCBzbG90KTsKKwkJYnJlYWs7CiAJ fQogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9mcy9idHJmcy92b2x1bWVzLmMgYi9mcy9i dHJmcy92b2x1bWVzLmMKaW5kZXggNjMzNzk4YTFhM2NmLi45NzQ4N2QzYzZlMzkgMTAwNjQ0Ci0t LSBhL2ZzL2J0cmZzL3ZvbHVtZXMuYworKysgYi9mcy9idHJmcy92b2x1bWVzLmMKQEAgLTQ2MDQs MTUgKzQ2MDQsNiBAQCBzdGF0aWMgdm9pZCBjaGVja19yYWlkNTZfaW5jb21wYXRfZmxhZyhzdHJ1 Y3QgYnRyZnNfZnNfaW5mbyAqaW5mbywgdTY0IHR5cGUpCiAJYnRyZnNfc2V0X2ZzX2luY29tcGF0 KGluZm8sIFJBSUQ1Nik7CiB9CiAKLSNkZWZpbmUgQlRSRlNfTUFYX0RFVlMoaW5mbykgKChCVFJG U19NQVhfSVRFTV9TSVpFKGluZm8pCVwKLQkJCS0gc2l6ZW9mKHN0cnVjdCBidHJmc19jaHVuaykp CQlcCi0JCQkvIHNpemVvZihzdHJ1Y3QgYnRyZnNfc3RyaXBlKSArIDEpCi0KLSNkZWZpbmUgQlRS RlNfTUFYX0RFVlNfU1lTX0NIVU5LICgoQlRSRlNfU1lTVEVNX0NIVU5LX0FSUkFZX1NJWkUJXAot CQkJCS0gMiAqIHNpemVvZihzdHJ1Y3QgYnRyZnNfZGlza19rZXkpCVwKLQkJCQktIDIgKiBzaXpl b2Yoc3RydWN0IGJ0cmZzX2NodW5rKSkJXAotCQkJCS8gc2l6ZW9mKHN0cnVjdCBidHJmc19zdHJp cGUpICsgMSkKLQogc3RhdGljIGludCBfX2J0cmZzX2FsbG9jX2NodW5rKHN0cnVjdCBidHJmc190 cmFuc19oYW5kbGUgKnRyYW5zLAogCQkJICAgICAgIHU2NCBzdGFydCwgdTY0IHR5cGUpCiB7CmRp ZmYgLS1naXQgYS9mcy9idHJmcy92b2x1bWVzLmggYi9mcy9idHJmcy92b2x1bWVzLmgKaW5kZXgg OGU4YmYzMjQ2ZGUxLi42NWNkMDIzYjA5N2MgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3ZvbHVtZXMu aAorKysgYi9mcy9idHJmcy92b2x1bWVzLmgKQEAgLTI1Nyw2ICsyNTcsMTUgQEAgc3RydWN0IGJ0 cmZzX2ZzX2RldmljZXMgewogCiAjZGVmaW5lIEJUUkZTX0JJT19JTkxJTkVfQ1NVTV9TSVpFCTY0 CiAKKyNkZWZpbmUgQlRSRlNfTUFYX0RFVlMoaW5mbykgKChCVFJGU19NQVhfSVRFTV9TSVpFKGlu Zm8pCVwKKwkJCS0gc2l6ZW9mKHN0cnVjdCBidHJmc19jaHVuaykpCQlcCisJCQkvIHNpemVvZihz dHJ1Y3QgYnRyZnNfc3RyaXBlKSArIDEpCisKKyNkZWZpbmUgQlRSRlNfTUFYX0RFVlNfU1lTX0NI VU5LICgoQlRSRlNfU1lTVEVNX0NIVU5LX0FSUkFZX1NJWkUJXAorCQkJCS0gMiAqIHNpemVvZihz dHJ1Y3QgYnRyZnNfZGlza19rZXkpCVwKKwkJCQktIDIgKiBzaXplb2Yoc3RydWN0IGJ0cmZzX2No dW5rKSkJXAorCQkJCS8gc2l6ZW9mKHN0cnVjdCBidHJmc19zdHJpcGUpICsgMSkKKwogLyoKICAq IHdlIG5lZWQgdGhlIG1pcnJvciBudW1iZXIgYW5kIHN0cmlwZSBpbmRleCB0byBiZSBwYXNzZWQg YXJvdW5kCiAgKiB0aGUgY2FsbCBjaGFpbiB3aGlsZSB3ZSBhcmUgcHJvY2Vzc2luZyBlbmRfaW8g KGVzcGVjaWFsbHkgZXJyb3JzKS4KCkZyb20gYzJhY2QyZTBjZmM4NDdjODMyNTRhYzcwNmFiZjU4 YTkwZTYxY2NjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUXUgV2VucnVvIDx3cXVA c3VzZS5jb20+CkRhdGU6IFdlZCwgMjggQXVnIDIwMTkgMTA6MzM6MTMgKzA4MDAKU3ViamVjdDog YnRyZnM6IHRyZWUtY2hlY2tlcjogRml4IHdyb25nIGNoZWNrIG9uIG1heCBkZXZpZAoKY29tbWl0 IDhiYjE3N2QxOGYxMTQzNThhNTdkOGFlN2UyMDY4NjFiNDhiOGI0ZGUgdXBzdHJlYW0uCgpbQlVH XQpUaGUgZm9sbG93aW5nIHNjcmlwdCB3aWxsIGNhdXNlIGZhbHNlIGFsZXJ0IG9uIGRldmlkIGNo ZWNrLgogICMhL2Jpbi9iYXNoCgogIGRldjE9L2Rldi90ZXN0L3Rlc3QKICBkZXYyPS9kZXYvdGVz dC9zY3JhdGNoMQogIG1udD0vbW50L2J0cmZzCgogIHVtb3VudCAkZGV2MSAmPiAvZGV2L251bGwK ICB1bW91bnQgJGRldjIgJj4gL2Rldi9udWxsCiAgdW1vdW50ICRtbnQgJj4gL2Rldi9udWxsCgog IG1rZnMuYnRyZnMgLWYgJGRldjEKCiAgbW91bnQgJGRldjEgJG1udAoKICBfZmFpbCgpCiAgewog ICAgICAgICAgZWNobyAiISEhIEZBSUxFRCAhISEiCiAgICAgICAgICBleGl0IDEKICB9CgogIGZv ciAoKGkgPSAwOyBpIDwgNDA5NjsgaSsrKSk7IGRvCiAgICAgICAgICBidHJmcyBkZXYgYWRkIC1m ICRkZXYyICRtbnQgfHwgX2ZhaWwKICAgICAgICAgIGJ0cmZzIGRldiBkZWwgJGRldjEgJG1udCB8 fCBfZmFpbAogICAgICAgICAgZGV2X3RtcD0kZGV2MQogICAgICAgICAgZGV2MT0kZGV2MgogICAg ICAgICAgZGV2Mj0kZGV2X3RtcAogIGRvbmUKCltDQVVTRV0KVHJlZS1jaGVja2VyIHVzZXMgQlRS RlNfTUFYX0RFVlMoKSBhbmQgQlRSRlNfTUFYX0RFVlNfU1lTX0NIVU5LKCkgYXMKdXBwZXIgbGlt aXQgZm9yIGRldmlkLiAgQnV0IHdlIGNhbiBoYXZlIGRldmlkIGhvbGVzIGp1c3QgbGlrZSBhYm92 ZQpzY3JpcHQuCgpTbyB0aGUgY2hlY2sgZm9yIGRldmlkIGlzIGluY29ycmVjdCBhbmQgY291bGQg Y2F1c2UgZmFsc2UgYWxlcnQuCgpbRklYXQpKdXN0IHJlbW92ZSB0aGUgd2hvbGUgZGV2aWQgY2hl Y2suICBXZSBkb24ndCBoYXZlIGFueSBoYXJkIHJlcXVpcmVtZW50CmZvciBkZXZpZCBhc3NpZ25t ZW50LgoKRnVydGhlcm1vcmUsIGV2ZW4gZGV2aWQgY291bGQgZ2V0IGNvcnJ1cHRlZCBieSBhIGJp dGZsaXAsIHdlIHN0aWxsIGhhdmUKZGV2IGV4dGVudHMgdmVyaWZpY2F0aW9uIGF0IG1vdW50IHRp bWUsIHNvIGNvcnJ1cHRlZCBkYXRhIHdvbid0IHNuZWFrCmluLgoKVGhpcyBmaXhlcyBmc3Rlc3Rz IGJ0cmZzLzE5NC4KClJlcG9ydGVkLWJ5OiBBbmFuZCBKYWluIDxhbmFuZC5qYWluQG9yYWNsZS5j b20+CkZpeGVzOiBhYjRiYTJlMTMzNDYgKCJidHJmczogdHJlZS1jaGVja2VyOiBWZXJpZnkgZGV2 IGl0ZW0iKQpDQzogc3RhYmxlQHZnZXIua2VybmVsLm9yZyAjIDUuMisKU2lnbmVkLW9mZi1ieTog UXUgV2VucnVvIDx3cXVAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVy YmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNv bT4KW2J3aDogQmFja3BvcnRlZCB0byA0LjE5OiBhZGp1c3QgY29udGV4dF0KU2lnbmVkLW9mZi1i eTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZnMv YnRyZnMvdHJlZS1jaGVja2VyLmMgfCA3IC0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jIGIvZnMvYnRyZnMv dHJlZS1jaGVja2VyLmMKaW5kZXggYjVlN2NhZWIyOGEyLi5hMDIyMmU2YTExYzUgMTAwNjQ0Ci0t LSBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCisrKyBiL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5j CkBAIC02MjksNyArNjI5LDYgQEAgc3RhdGljIGludCBjaGVja19kZXZfaXRlbShzdHJ1Y3QgYnRy ZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJCSAgc3RydWN0IGJ0cmZzX2tleSAqa2V5LCBpbnQgc2xv dCkKIHsKIAlzdHJ1Y3QgYnRyZnNfZGV2X2l0ZW0gKmRpdGVtOwotCXU2NCBtYXhfZGV2aWQgPSBt YXgoQlRSRlNfTUFYX0RFVlMoZnNfaW5mbyksIEJUUkZTX01BWF9ERVZTX1NZU19DSFVOSyk7CiAK IAlpZiAoa2V5LT5vYmplY3RpZCAhPSBCVFJGU19ERVZfSVRFTVNfT0JKRUNUSUQpIHsKIAkJZGV2 X2l0ZW1fZXJyKGZzX2luZm8sIGxlYWYsIHNsb3QsCkBAIC02MzcsMTIgKzYzNiw2IEBAIHN0YXRp YyBpbnQgY2hlY2tfZGV2X2l0ZW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJCQkg ICAgIGtleS0+b2JqZWN0aWQsIEJUUkZTX0RFVl9JVEVNU19PQkpFQ1RJRCk7CiAJCXJldHVybiAt RVVDTEVBTjsKIAl9Ci0JaWYgKGtleS0+b2Zmc2V0ID4gbWF4X2RldmlkKSB7Ci0JCWRldl9pdGVt X2Vycihmc19pbmZvLCBsZWFmLCBzbG90LAotCQkJICAgICAiaW52YWxpZCBkZXZpZDogaGFzPSVs bHUgZXhwZWN0PVswLCAlbGx1XSIsCi0JCQkgICAgIGtleS0+b2Zmc2V0LCBtYXhfZGV2aWQpOwot CQlyZXR1cm4gLUVVQ0xFQU47Ci0JfQogCWRpdGVtID0gYnRyZnNfaXRlbV9wdHIobGVhZiwgc2xv dCwgc3RydWN0IGJ0cmZzX2Rldl9pdGVtKTsKIAlpZiAoYnRyZnNfZGV2aWNlX2lkKGxlYWYsIGRp dGVtKSAhPSBrZXktPm9mZnNldCkgewogCQlkZXZfaXRlbV9lcnIoZnNfaW5mbywgbGVhZiwgc2xv dCwKCkZyb20gNjM3OWE5MWMyZGEwMDQ1YTg4YTFkZWVkNWNlNWEzOTNiNGYwNGFhZSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUXUgV2VucnVvIDx3cXVAc3VzZS5jb20+CkRhdGU6IFdl ZCwgMTMgTWFyIDIwMTkgMTI6MTc6NTAgKzA4MDAKU3ViamVjdDogYnRyZnM6IHRyZWUtY2hlY2tl cjogRW5oYW5jZSBjaHVuayBjaGVja2VyIHRvIHZhbGlkYXRlIGNodW5rIHByb2ZpbGUKCmNvbW1p dCA4MGU0NmNmMjJiYTBiY2I1N2IzOWM3YzNiNTI5NjFhYjNhMGZkNWYyIHVwc3RyZWFtLgoKQnRy ZnMtcHJvZ3MgYWxyZWFkeSBoYXZlIGEgY29tcHJlaGVuc2l2ZSB0eXBlIGNoZWNrZXIsIHRvIGVu c3VyZSB0aGVyZQppcyBvbmx5IDAgKFNJTkdMRSBwcm9maWxlKSBvciAxIChEVVAvUkFJRDAvMS81 LzYvMTApIGJpdCBzZXQgZm9yIGNodW5rCnByb2ZpbGUgYml0cy4KCkRvIHRoZSBzYW1lIHdvcmsg Zm9yIGtlcm5lbC4KClJlcG9ydGVkLWJ5OiBZb29uIEp1bmd5ZW9uIDxqdW5neWVvbkBnYXRlY2gu ZWR1PgpMaW5rOiBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcuY2dpP2lkPTIw Mjc2NQpSZXZpZXdlZC1ieTogTmlrb2xheSBCb3Jpc292IDxuYm9yaXNvdkBzdXNlLmNvbT4KUmV2 aWV3ZWQtYnk6IEpvaGFubmVzIFRodW1zaGlybiA8anRodW1zaGlybkBzdXNlLmRlPgpTaWduZWQt b2ZmLWJ5OiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6IERhdmlkIFN0ZXJi YSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJh QHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNv ZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy90cmVlLWNoZWNrZXIuYyB8IDcgKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3Ry ZWUtY2hlY2tlci5jIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKaW5kZXggYTAyMjJlNmExMWM1 Li5hYjE1NTM3ODFlOWMgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCisrKyBi L2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCkBAIC01NTYsNiArNTU2LDEzIEBAIGludCBidHJmc19j aGVja19jaHVua192YWxpZChzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkJcmV0dXJu IC1FVUNMRUFOOwogCX0KIAorCWlmICghaXNfcG93ZXJfb2ZfMih0eXBlICYgQlRSRlNfQkxPQ0tf R1JPVVBfUFJPRklMRV9NQVNLKSAmJgorCSAgICAodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1BS T0ZJTEVfTUFTSykgIT0gMCkgeworCQljaHVua19lcnIoZnNfaW5mbywgbGVhZiwgY2h1bmssIGxv Z2ljYWwsCisJCSJpbnZhbGlkIGNodW5rIHByb2ZpbGUgZmxhZzogMHglbGx4LCBleHBlY3QgMCBv ciAxIGJpdCBzZXQiLAorCQkJICB0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfUFJPRklMRV9NQVNL KTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KIAlpZiAoKHR5cGUgJiBCVFJGU19CTE9DS19HUk9V UF9UWVBFX01BU0spID09IDApIHsKIAkJY2h1bmtfZXJyKGZzX2luZm8sIGxlYWYsIGNodW5rLCBs b2dpY2FsLAogCSJtaXNzaW5nIGNodW5rIHR5cGUgZmxhZywgaGF2ZSAweCVsbHggb25lIGJpdCBt dXN0IGJlIHNldCBpbiAweCVsbHgiLAoKRnJvbSBjZjlhNWU1OGNiMWQxZTUwYmNkMDA1NjIwMTk5 MDAxNzQ5MGNhYzZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBRdSBXZW5ydW8gPHdx dUBzdXNlLmNvbT4KRGF0ZTogV2VkLCAxMyBNYXIgMjAxOSAxNDozMTozNSArMDgwMApTdWJqZWN0 OiBidHJmczogdHJlZS1jaGVja2VyOiBWZXJpZnkgaW5vZGUgaXRlbQoKY29tbWl0IDQ5NjI0NWNh YzU3ZTI2ZDhiNzM4ZDg1YzdhMjljZjlhNDc2MTBmM2YgdXBzdHJlYW0uCgpUaGVyZSBpcyBhIHJl cG9ydCBpbiBrZXJuZWwgYnVnemlsbGEgYWJvdXQgbWlzbWF0Y2ggZmlsZSB0eXBlIGluIGRpcgpp dGVtIGFuZCBpbm9kZSBpdGVtLgoKVGhpcyBpbnNwaXJlcyB1cyB0byBjaGVjayBpbm9kZSBtb2Rl IGluIGlub2RlIGl0ZW0uCgpUaGlzIHBhdGNoIHdpbGwgY2hlY2sgdGhlIGZvbGxvd2luZyBtZW1i ZXJzOgoKLSBpbm9kZSBrZXkgb2JqZWN0aWQKICBTaG91bGQgYmUgUk9PVF9ESVJfRElSIG9yIFsy NTYsICh1NjQpLTI1Nl0gb3IgRlJFRV9JTk8uCgotIGlub2RlIGtleSBvZmZzZXQKICBTaG91bGQg YmUgMAoKLSBpbm9kZSBpdGVtIGdlbmVyYXRpb24KLSBpbm9kZSBpdGVtIHRyYW5zaWQKICBObyBu ZXdlciB0aGFuIHNiIGdlbmVyYXRpb24gKyAxLgogIFRoZSArMSBpcyBmb3IgbG9nIHRyZWUuCgot IGlub2RlIGl0ZW0gbW9kZQogIE5vIHVua25vd24gYml0cy4KICBObyBpbnZhbGlkIFNfSUYqIGJp dC4KICBOT1RFOiBTX0lGTVQgY2hlY2sgaXMgbm90IGVub3VnaCwgbmVlZCB0byBjaGVjayBldmVy eSBrbm93IHR5cGUuCgotIGlub2RlIGl0ZW0gbmxpbmsKICBEaXIgc2hvdWxkIGhhdmUgbm8gbW9y ZSBsaW5rIHRoYW4gMS4KCi0gaW5vZGUgaXRlbSBmbGFncwoKUmV2aWV3ZWQtYnk6IE5pa29sYXkg Qm9yaXNvdiA8bmJvcmlzb3ZAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBKb2hhbm5lcyBUaHVtc2hp cm4gPGp0aHVtc2hpcm5Ac3VzZS5kZT4KU2lnbmVkLW9mZi1ieTogUXUgV2VucnVvIDx3cXVAc3Vz ZS5jb20+ClJldmlld2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25l ZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTog QmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZnMvYnRy ZnMvY3RyZWUuaCAgICAgICAgfCAxNSArKysrKysrCiBmcy9idHJmcy90cmVlLWNoZWNrZXIuYyB8 IDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDEwOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvY3RyZWUuaCBi L2ZzL2J0cmZzL2N0cmVlLmgKaW5kZXggNTU0NzI3ZDgyZDQzLi40ZDFjMTJmYWFkYTggMTAwNjQ0 Ci0tLSBhL2ZzL2J0cmZzL2N0cmVlLmgKKysrIGIvZnMvYnRyZnMvY3RyZWUuaApAQCAtMTQ1OSw2 ICsxNDU5LDIxIEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCiAjZGVmaW5lIEJUUkZTX0lOT0RFX1JPT1Rf SVRFTV9JTklUCSgxIDw8IDMxKQogCisjZGVmaW5lIEJUUkZTX0lOT0RFX0ZMQUdfTUFTSwkJCQkJ CVwKKwkoQlRSRlNfSU5PREVfTk9EQVRBU1VNIHwJCQkJCVwKKwkgQlRSRlNfSU5PREVfTk9EQVRB Q09XIHwJCQkJCVwKKwkgQlRSRlNfSU5PREVfUkVBRE9OTFkgfAkJCQkJCVwKKwkgQlRSRlNfSU5P REVfTk9DT01QUkVTUyB8CQkJCQlcCisJIEJUUkZTX0lOT0RFX1BSRUFMTE9DIHwJCQkJCQlcCisJ IEJUUkZTX0lOT0RFX1NZTkMgfAkJCQkJCVwKKwkgQlRSRlNfSU5PREVfSU1NVVRBQkxFIHwJCQkJ CVwKKwkgQlRSRlNfSU5PREVfQVBQRU5EIHwJCQkJCQlcCisJIEJUUkZTX0lOT0RFX05PRFVNUCB8 CQkJCQkJXAorCSBCVFJGU19JTk9ERV9OT0FUSU1FIHwJCQkJCQlcCisJIEJUUkZTX0lOT0RFX0RJ UlNZTkMgfAkJCQkJCVwKKwkgQlRSRlNfSU5PREVfQ09NUFJFU1MgfAkJCQkJCVwKKwkgQlRSRlNf SU5PREVfUk9PVF9JVEVNX0lOSVQpCisKIHN0cnVjdCBidHJmc19tYXBfdG9rZW4gewogCWNvbnN0 IHN0cnVjdCBleHRlbnRfYnVmZmVyICplYjsKIAljaGFyICprYWRkcjsKZGlmZiAtLWdpdCBhL2Zz L2J0cmZzL3RyZWUtY2hlY2tlci5jIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKaW5kZXggYWIx NTUzNzgxZTljLi5lNzdjMjViYzY4NjAgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tl ci5jCisrKyBiL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCkBAIC02NzEsNiArNjcxLDk3IEBAIHN0 YXRpYyBpbnQgY2hlY2tfZGV2X2l0ZW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJ cmV0dXJuIDA7CiB9CiAKKy8qIElub2RlIGl0ZW0gZXJyb3Igb3V0cHV0IGhhcyB0aGUgc2FtZSBm b3JtYXQgYXMgZGlyX2l0ZW1fZXJyKCkgKi8KKyNkZWZpbmUgaW5vZGVfaXRlbV9lcnIoZnNfaW5m bywgZWIsIHNsb3QsIGZtdCwgLi4uKQkJCVwKKwlkaXJfaXRlbV9lcnIoZnNfaW5mbywgZWIsIHNs b3QsIGZtdCwgX19WQV9BUkdTX18pCisKK3N0YXRpYyBpbnQgY2hlY2tfaW5vZGVfaXRlbShzdHJ1 Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKKwkJCSAgICBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAq bGVhZiwKKwkJCSAgICBzdHJ1Y3QgYnRyZnNfa2V5ICprZXksIGludCBzbG90KQoreworCXN0cnVj dCBidHJmc19pbm9kZV9pdGVtICppaXRlbTsKKwl1NjQgc3VwZXJfZ2VuID0gYnRyZnNfc3VwZXJf Z2VuZXJhdGlvbihmc19pbmZvLT5zdXBlcl9jb3B5KTsKKwl1MzIgdmFsaWRfbWFzayA9IChTX0lG TVQgfCBTX0lTVUlEIHwgU19JU0dJRCB8IFNfSVNWVFggfCAwNzc3KTsKKwl1MzIgbW9kZTsKKwor CWlmICgoa2V5LT5vYmplY3RpZCA8IEJUUkZTX0ZJUlNUX0ZSRUVfT0JKRUNUSUQgfHwKKwkgICAg IGtleS0+b2JqZWN0aWQgPiBCVFJGU19MQVNUX0ZSRUVfT0JKRUNUSUQpICYmCisJICAgIGtleS0+ b2JqZWN0aWQgIT0gQlRSRlNfUk9PVF9UUkVFX0RJUl9PQkpFQ1RJRCAmJgorCSAgICBrZXktPm9i amVjdGlkICE9IEJUUkZTX0ZSRUVfSU5PX09CSkVDVElEKSB7CisJCWdlbmVyaWNfZXJyKGZzX2lu Zm8sIGxlYWYsIHNsb3QsCisJImludmFsaWQga2V5IG9iamVjdGlkOiBoYXMgJWxsdSBleHBlY3Qg JWxsdSBvciBbJWxsdSwgJWxsdV0gb3IgJWxsdSIsCisJCQkgICAga2V5LT5vYmplY3RpZCwgQlRS RlNfUk9PVF9UUkVFX0RJUl9PQkpFQ1RJRCwKKwkJCSAgICBCVFJGU19GSVJTVF9GUkVFX09CSkVD VElELAorCQkJICAgIEJUUkZTX0xBU1RfRlJFRV9PQkpFQ1RJRCwKKwkJCSAgICBCVFJGU19GUkVF X0lOT19PQkpFQ1RJRCk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisJaWYgKGtleS0+b2Zmc2V0 ICE9IDApIHsKKwkJaW5vZGVfaXRlbV9lcnIoZnNfaW5mbywgbGVhZiwgc2xvdCwKKwkJCSJpbnZh bGlkIGtleSBvZmZzZXQ6IGhhcyAlbGx1IGV4cGVjdCAwIiwKKwkJCWtleS0+b2Zmc2V0KTsKKwkJ cmV0dXJuIC1FVUNMRUFOOworCX0KKwlpaXRlbSA9IGJ0cmZzX2l0ZW1fcHRyKGxlYWYsIHNsb3Qs IHN0cnVjdCBidHJmc19pbm9kZV9pdGVtKTsKKworCS8qIEhlcmUgd2UgdXNlIHN1cGVyIGJsb2Nr IGdlbmVyYXRpb24gKyAxIHRvIGhhbmRsZSBsb2cgdHJlZSAqLworCWlmIChidHJmc19pbm9kZV9n ZW5lcmF0aW9uKGxlYWYsIGlpdGVtKSA+IHN1cGVyX2dlbiArIDEpIHsKKwkJaW5vZGVfaXRlbV9l cnIoZnNfaW5mbywgbGVhZiwgc2xvdCwKKwkJCSJpbnZhbGlkIGlub2RlIGdlbmVyYXRpb246IGhh cyAlbGx1IGV4cGVjdCAoMCwgJWxsdV0iLAorCQkJICAgICAgIGJ0cmZzX2lub2RlX2dlbmVyYXRp b24obGVhZiwgaWl0ZW0pLAorCQkJICAgICAgIHN1cGVyX2dlbiArIDEpOworCQlyZXR1cm4gLUVV Q0xFQU47CisJfQorCS8qIE5vdGUgZm9yIFJPT1RfVFJFRV9ESVJfSVRFTSwgbWtmcyBjb3VsZCBz ZXQgaXRzIHRyYW5zaWQgMCAqLworCWlmIChidHJmc19pbm9kZV90cmFuc2lkKGxlYWYsIGlpdGVt KSA+IHN1cGVyX2dlbiArIDEpIHsKKwkJaW5vZGVfaXRlbV9lcnIoZnNfaW5mbywgbGVhZiwgc2xv dCwKKwkJCSJpbnZhbGlkIGlub2RlIGdlbmVyYXRpb246IGhhcyAlbGx1IGV4cGVjdCBbMCwgJWxs dV0iLAorCQkJICAgICAgIGJ0cmZzX2lub2RlX3RyYW5zaWQobGVhZiwgaWl0ZW0pLCBzdXBlcl9n ZW4gKyAxKTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKworCS8qCisJICogRm9yIHNpemUgYW5k IG5ieXRlcyBpdCdzIGJldHRlciBub3QgdG8gYmUgdG9vIHN0cmljdCwgYXMgZm9yIGRpcgorCSAq IGl0ZW0gaXRzIHNpemUvbmJ5dGVzIGNhbiBlYXNpbHkgZ2V0IHdyb25nLCBidXQgZG9lc24ndCBh ZmZlY3QKKwkgKiBhbnl0aGluZyBpbiB0aGUgZnMuIFNvIGhlcmUgd2Ugc2tpcCB0aGUgY2hlY2su CisJICovCisJbW9kZSA9IGJ0cmZzX2lub2RlX21vZGUobGVhZiwgaWl0ZW0pOworCWlmIChtb2Rl ICYgfnZhbGlkX21hc2spIHsKKwkJaW5vZGVfaXRlbV9lcnIoZnNfaW5mbywgbGVhZiwgc2xvdCwK KwkJCSAgICAgICAidW5rbm93biBtb2RlIGJpdCBkZXRlY3RlZDogMHgleCIsCisJCQkgICAgICAg bW9kZSAmIH52YWxpZF9tYXNrKTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKworCS8qCisJICog U19JRk1UIGlzIG5vdCBiaXQgbWFwcGVkIHNvIHdlIGNhbid0IGNvbXBsZXRlbHkgcmVseSBvbiBp c19wb3dlcl9vZl8yLAorCSAqIGJ1dCBpc19wb3dlcl9vZl8yKCkgY2FuIHNhdmUgdXMgZnJvbSBj aGVja2luZyBGSUZPL0NIUi9ESVIvUkVHLgorCSAqIE9ubHkgbmVlZHMgdG8gY2hlY2sgQkxLLCBM TksgYW5kIFNPQ0tTCisJICovCisJaWYgKCFpc19wb3dlcl9vZl8yKG1vZGUgJiBTX0lGTVQpKSB7 CisJCWlmICghU19JU0xOSyhtb2RlKSAmJiAhU19JU0JMSyhtb2RlKSAmJiAhU19JU1NPQ0sobW9k ZSkpIHsKKwkJCWlub2RlX2l0ZW1fZXJyKGZzX2luZm8sIGxlYWYsIHNsb3QsCisJCQkiaW52YWxp ZCBtb2RlOiBoYXMgMCVvIGV4cGVjdCB2YWxpZCBTX0lGKiBiaXQocykiLAorCQkJCSAgICAgICBt b2RlICYgU19JRk1UKTsKKwkJCXJldHVybiAtRVVDTEVBTjsKKwkJfQorCX0KKwlpZiAoU19JU0RJ Uihtb2RlKSAmJiBidHJmc19pbm9kZV9ubGluayhsZWFmLCBpaXRlbSkgPiAxKSB7CisJCWlub2Rl X2l0ZW1fZXJyKGZzX2luZm8sIGxlYWYsIHNsb3QsCisJCSAgICAgICAiaW52YWxpZCBubGluazog aGFzICV1IGV4cGVjdCBubyBtb3JlIHRoYW4gMSBmb3IgZGlyIiwKKwkJCWJ0cmZzX2lub2RlX25s aW5rKGxlYWYsIGlpdGVtKSk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisJaWYgKGJ0cmZzX2lu b2RlX2ZsYWdzKGxlYWYsIGlpdGVtKSAmIH5CVFJGU19JTk9ERV9GTEFHX01BU0spIHsKKwkJaW5v ZGVfaXRlbV9lcnIoZnNfaW5mbywgbGVhZiwgc2xvdCwKKwkJCSAgICAgICAidW5rbm93biBmbGFn cyBkZXRlY3RlZDogMHglbGx4IiwKKwkJCSAgICAgICBidHJmc19pbm9kZV9mbGFncyhsZWFmLCBp aXRlbSkgJgorCQkJICAgICAgIH5CVFJGU19JTk9ERV9GTEFHX01BU0spOworCQlyZXR1cm4gLUVV Q0xFQU47CisJfQorCXJldHVybiAwOworfQorCiAvKgogICogQ29tbW9uIHBvaW50IHRvIHN3aXRj aCB0aGUgaXRlbS1zcGVjaWZpYyB2YWxpZGF0aW9uLgogICovCkBAIC03MDQsNiArNzk1LDkgQEAg c3RhdGljIGludCBjaGVja19sZWFmX2l0ZW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8s CiAJY2FzZSBCVFJGU19ERVZfSVRFTV9LRVk6CiAJCXJldCA9IGNoZWNrX2Rldl9pdGVtKGZzX2lu Zm8sIGxlYWYsIGtleSwgc2xvdCk7CiAJCWJyZWFrOworCWNhc2UgQlRSRlNfSU5PREVfSVRFTV9L RVk6CisJCXJldCA9IGNoZWNrX2lub2RlX2l0ZW0oZnNfaW5mbywgbGVhZiwga2V5LCBzbG90KTsK KwkJYnJlYWs7CiAJfQogCXJldHVybiByZXQ7CiB9CgpGcm9tIDJhZmU5YTAxYzhmNDkyMjNkYjVi YTJlNDQzNDQ1ZmE0MzA3YTE1MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFF1IFdl bnJ1byA8d3F1QHN1c2UuY29tPgpEYXRlOiBUdWUsIDI1IEF1ZyAyMDIwIDIxOjQyOjUxICswODAw ClN1YmplY3Q6IGJ0cmZzOiB0cmVlLWNoZWNrZXI6IGZpeCB0aGUgZXJyb3IgbWVzc2FnZSBmb3Ig dHJhbnNpZCBlcnJvcgoKY29tbWl0IGY5NmQ2OTYwYWJiYzUyZTI2YWQxMjRlNjllNjgxNTI4M2Qz ZTE2NzQgdXBzdHJlYW0uCgpUaGUgZXJyb3IgbWVzc2FnZSBmb3IgaW5vZGUgdHJhbnNpZCBpcyB0 aGUgc2FtZSBhcyBmb3IgaW5vZGUgZ2VuZXJhdGlvbiwKd2hpY2ggbWFrZXMgdXMgdW5hYmxlIHRv IGRldGVjdCB0aGUgcmVhbCBwcm9ibGVtLgoKUmVwb3J0ZWQtYnk6IFR5bGVyIFJpY2htb25kIDx0 LmQucmljaG1vbmRAZ21haWwuY29tPgpGaXhlczogNDk2MjQ1Y2FjNTdlICgiYnRyZnM6IHRyZWUt Y2hlY2tlcjogVmVyaWZ5IGlub2RlIGl0ZW0iKQpDQzogc3RhYmxlQHZnZXIua2VybmVsLm9yZyAj IDUuNCsKUmV2aWV3ZWQtYnk6IE1hcmNvcyBQYXVsbyBkZSBTb3V6YSA8bXBkZXNvdXphQHN1c2Uu Y29tPgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpbYndoOiBCYWNrcG9ydGVkIHRvIDQu MTk6IGFkanVzdCBjb250ZXh0XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0 Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy90cmVlLWNoZWNrZXIuYyB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMK aW5kZXggZTc3YzI1YmM2ODYwLi45MDIzZTZiNDYzOTYgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3Ry ZWUtY2hlY2tlci5jCisrKyBiL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCkBAIC03MTUsNyArNzE1 LDcgQEAgc3RhdGljIGludCBjaGVja19pbm9kZV9pdGVtKHN0cnVjdCBidHJmc19mc19pbmZvICpm c19pbmZvLAogCS8qIE5vdGUgZm9yIFJPT1RfVFJFRV9ESVJfSVRFTSwgbWtmcyBjb3VsZCBzZXQg aXRzIHRyYW5zaWQgMCAqLwogCWlmIChidHJmc19pbm9kZV90cmFuc2lkKGxlYWYsIGlpdGVtKSA+ IHN1cGVyX2dlbiArIDEpIHsKIAkJaW5vZGVfaXRlbV9lcnIoZnNfaW5mbywgbGVhZiwgc2xvdCwK LQkJCSJpbnZhbGlkIGlub2RlIGdlbmVyYXRpb246IGhhcyAlbGx1IGV4cGVjdCBbMCwgJWxsdV0i LAorCQkJImludmFsaWQgaW5vZGUgdHJhbnNpZDogaGFzICVsbHUgZXhwZWN0IFswLCAlbGx1XSIs CiAJCQkgICAgICAgYnRyZnNfaW5vZGVfdHJhbnNpZChsZWFmLCBpaXRlbSksIHN1cGVyX2dlbiAr IDEpOwogCQlyZXR1cm4gLUVVQ0xFQU47CiAJfQo= --=-fBAPfyw2L6oodsWBXiZq--