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=-9.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 EBC77C4363C for ; Sun, 4 Oct 2020 23:58:02 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 23BF82065E for ; Sun, 4 Oct 2020 23:58:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="KHAeVA6z"; dkim=pass (1024-bit key) header.d=sharedspace.onmicrosoft.com header.i=@sharedspace.onmicrosoft.com header.b="zukUqyYF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 23BF82065E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:51302 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kPDtB-0002YY-3l for qemu-devel@archiver.kernel.org; Sun, 04 Oct 2020 19:58:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38600) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kPDsS-0001xT-JH; Sun, 04 Oct 2020 19:57:16 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:37162) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kPDsP-0004bJ-Cr; Sun, 04 Oct 2020 19:57:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1601855833; x=1633391833; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=hm/EY3cexL4QugoDvKihdYEHg+ZE0Ys8RYzgWk7hmAc=; b=KHAeVA6z8Lz4LVU/hhEUYqJRoOl3Bv9n4XNj6Y2cctV8cWpuGBwG9ATx RN4I0V+FM2PIUTtyM84s8dx+6Sedi37ewDmcoDWpSRh6/2Apndh9WItiu n+Afeg2HDUP+ouL+vwIPDxu8Es+/eUIffj+xgkX9TNsiHesIK2yXd2hDC ur16aetlkg8LYaNCoujDRBcKn7xZ7jjEl1377sPfXigk7hvTuqlriqk6o AVQiV+EeVxSryYwWA4O1IytNh7wZ8WdE6lyjDo7g4IE8BWsk264T9z0dl cSraGFr7F7YCj+R+WtIRrtMsY5ijmIt+WRwnbjEoaCaF9NPMg5I0oxWbq g==; IronPort-SDR: KEN9FMVf1/DDseEwV4LZialMRXCP3gx7qoMRyptTfqcL7PR0wKiPQzwGzX2R7vQ3lFXyeF0RRg PJMkazaJzcow/0R6bPkGRp2Fy696vt3MCIU8/nUN0FkyBc2hOOW04ZIZ9fKKlffO9ho8VcAWlX z1O/oN9opDopR+aSbTJheA7D8w0oJxcYt+BvUsln4po/TkYgb9HwS6BuP4eGPkvpnVEos6GDK0 js8Dp7yp1avJbMhI5jB039b7G0nA3JTIV2uHf3dSJysx/7u8sErxx4AwPont4jA8TLnS5m3g3p 7+w= X-IronPort-AV: E=Sophos;i="5.77,337,1596470400"; d="scan'208";a="149091925" Received: from mail-bn8nam11lp2170.outbound.protection.outlook.com (HELO NAM11-BN8-obe.outbound.protection.outlook.com) ([104.47.58.170]) by ob1.hgst.iphmx.com with ESMTP; 05 Oct 2020 07:57:10 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WoSdK3I+3rjrIFLq9IELuQtC8ekIvlAxtTaEYgq5RZpOpSixnjZCTkBcOFJlXAHBVRoZx85mguoicOzf9ild5velrFjBAFMLX3Hgw00il9D1SccEq+OsasKLPLJkFv7cPiP8o6EfrLs3zI7ronYer5a9ndaV8ZxgjsHozLvtfBCrtp5ROBanaX3o2In9sgfWBVCIB5muCd09rGb2h8SW/PB7msvPJzP8+hUVD9UCmy95Y9diUUEYAfHQwlJJhYZ8Il5pOBRaodnEYKsMDTpMz494wJ7AIxHJwuOm6c/d+BbBrpoUcQ8OiICcDA+JOUHrtsuqmaVSzpG270/B4rrEnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hm/EY3cexL4QugoDvKihdYEHg+ZE0Ys8RYzgWk7hmAc=; b=Jk4SZdRS6pZXWkBsHnAHEAd7Wmi2JA5QaJM8nJMjDnt3CksiToJK57/Uhg/vJlsg/XgyYpSj8/uclkVLhR2D893cdFod6SIC2Q6Ns7KxKrGbFWTQZdhq2Iw3McZ3VZsuU9KiMokkbVfRfz63cHvV/vfSOZhVZOJoNW6SXSSJDUCiVb6AX0kJa2r9+hFDDPbEk5kbCTdEij4d/9QdmDcUaQQ4xT/VjfnaT9nVfE1PXnQswnzs2/6ZYaWLIyubPYkl4v8iXqVr0XDmiwH3N+18Oo/SbWRkYSht6STL1zR+T/KQglbAiDww8N87+0Ve+AY6A8T9lY2qn37VhfVqo+Vpgg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hm/EY3cexL4QugoDvKihdYEHg+ZE0Ys8RYzgWk7hmAc=; b=zukUqyYFFw+PEyjsZrM/93W8yXEekLb5xmajbB63j4v06Tr6fYByd34ngyT+2t5s54mJizGX1PD+JiVU903a3fH9/y46/Vjyovef0b3O5/U18hl1/awH4NZ86kGZJDaOlgmul9fNxPirJ8qQZVoYM4/CNkdCNRz9tw206D6BP8w= Received: from MN2PR04MB5951.namprd04.prod.outlook.com (2603:10b6:208:3f::13) by MN2PR04MB5663.namprd04.prod.outlook.com (2603:10b6:208:a3::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.35; Sun, 4 Oct 2020 23:57:07 +0000 Received: from MN2PR04MB5951.namprd04.prod.outlook.com ([fe80::44d8:522e:db29:bb94]) by MN2PR04MB5951.namprd04.prod.outlook.com ([fe80::44d8:522e:db29:bb94%6]) with mapi id 15.20.3433.044; Sun, 4 Oct 2020 23:57:07 +0000 From: Dmitry Fomichev To: Niklas Cassel Subject: Re: [PATCH v5 09/14] hw/block/nvme: Support Zoned Namespace Command Set Thread-Topic: [PATCH v5 09/14] hw/block/nvme: Support Zoned Namespace Command Set Thread-Index: AQHWlUAbR7szI/vjI0exN9wB2mxOtqmBR4WAgAbiGwA= Date: Sun, 4 Oct 2020 23:57:07 +0000 Message-ID: <081017a7953a91ddabe05b472f74713453d479ea.camel@wdc.com> References: <20200928023528.15260-1-dmitry.fomichev@wdc.com> <20200928023528.15260-10-dmitry.fomichev@wdc.com> <20200930145016.GB204568@localhost.localdomain> In-Reply-To: <20200930145016.GB204568@localhost.localdomain> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.5 (3.36.5-1.fc32) authentication-results: wdc.com; dkim=none (message not signed) header.d=none;wdc.com; dmarc=none action=none header.from=wdc.com; x-originating-ip: [173.70.90.35] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: d510769b-016e-4be8-e397-08d868c13381 x-ms-traffictypediagnostic: MN2PR04MB5663: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: wdcipoutbound: EOP-TRUE x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ClIYyhdDS4k6xS2cRHutTaxj3aTtyhlRtGDYsr4dh5D5Avp9+ZEIYxXCuW3QXy340dBOFOHw2rn7Lhtiu1oSHgtnrCDMVlCP0ecV4inB2Tq2vyxgT2eAxnGAEJE58JvGd4hrLLp3/2zkUjAFCeqnJdS4X331AEv5carB/fnBjnRSMKW1PrsM24lenKzJ6rAerDAoi1+SwuMnS8wpVNbMzgyxxa2fyN95LSTNTZ36NtD7hXnjO0cUZkGdbfw1+YsXXK0qCqtDeU3SmNISciQ+io0Bg3F6LevKut7CaqE/MBGQpKTGt3TUO+N/YG1eEnF4nkVjXoHP7cL+r2xUufPK1Q== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR04MB5951.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(136003)(396003)(346002)(39850400004)(6862004)(4326008)(66476007)(76116006)(66946007)(478600001)(2906002)(36756003)(6636002)(37006003)(64756008)(8676002)(66556008)(66446008)(54906003)(83380400001)(186003)(6506007)(316002)(26005)(8936002)(86362001)(30864003)(71200400001)(6486002)(6512007)(5660300002)(2616005)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: AQMChZeogepGZNUqDhaG8tqF1Nd11j1zpBXC80he0bs4v9yVkjsV9xjW5SVkfxGUr6Z9ferXBGWHv+P691gWKu6/BlVfw9RTtjaWlptKqNx8fSLmFcsL/GxZEdncMLwZj23Bc+llk5w1LiFl6gJn9Nfaf5iX6BLb3D1qKEYc7dyFo7BBUkh6C3QknvJrCDiW8LHsvHAJjKLHu75xrg6fml6XUYEBLHguM+8ONitOStcVG4y86C27WZXUUuoSSv2ouF83yuzP4/MvTw6KgQgVJPelWU7StIm23XDzGLHUpH3frGAej2poeFEhRSYt6x++f/m5og9UsiD06Qux54twCe22yz1Zi18jloaJHdNof2Bq3IBYMFe2JFpWOmzopsdSw57jFuzURboUyu42KvVo7x9C0bSiejb5BkFEYHLuelrq9GyTqxEdEp0kihaMY7bczg1IiGtS807ncN8E6dk+b9djhs4Ig1CY4L4sLOHqrIJejmOUb6HBze9XGQNd+IECJlkmn7iJ2ewYKpbF94oG/qv8lvWdIf8YbHdTRu0LUybCyqm5zfCi4Qp0So5M5EzcXXe3HMgMfGh5bdTtOqLqrfLBTUh5mk0RAcvsIwrzsTJhlSz1ZXDr2RgN1mBO7YIyiVoEmCzGaORF0FnfC8qDOg== Content-Type: text/plain; charset="utf-8" Content-ID: <29124B5D1BEB094CB16CEDD8B1CE2261@namprd04.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR04MB5951.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d510769b-016e-4be8-e397-08d868c13381 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Oct 2020 23:57:07.3533 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: UgW46C4DfHi0qPKb9VsuRiy5XwiPTdInSG/xOI/oFbg4dIw9oLo/XH4oKf2RtUSOFFByqEPwKfwcKchhczTWng== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR04MB5663 Received-SPF: pass client-ip=216.71.153.144; envelope-from=prvs=539968827=Dmitry.Fomichev@wdc.com; helo=esa5.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/04 19:57:11 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "fam@euphon.net" , "kwolf@redhat.com" , Damien Le Moal , "qemu-block@nongnu.org" , "k.jensen@samsung.com" , "qemu-devel@nongnu.org" , "mlevitsk@redhat.com" , Alistair Francis , "kbusch@kernel.org" , "philmd@redhat.com" , Matias Bjorling Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" T24gV2VkLCAyMDIwLTA5LTMwIGF0IDE0OjUwICswMDAwLCBOaWtsYXMgQ2Fzc2VsIHdyb3RlOg0K PiBPbiBNb24sIFNlcCAyOCwgMjAyMCBhdCAxMTozNToyM0FNICswOTAwLCBEbWl0cnkgRm9taWNo ZXYgd3JvdGU6DQo+ID4gVGhlIGVtdWxhdGlvbiBjb2RlIGhhcyBiZWVuIGNoYW5nZWQgdG8gYWR2 ZXJ0aXNlIE5WTSBDb21tYW5kIFNldCB3aGVuDQo+ID4gInpvbmVkIiBkZXZpY2UgcHJvcGVydHkg aXMgbm90IHNldCAoZGVmYXVsdCkgYW5kIFpvbmVkIE5hbWVzcGFjZQ0KPiA+IENvbW1hbmQgU2V0 IG90aGVyd2lzZS4NCj4gPiANCj4gPiBIYW5kbGVycyBmb3IgdGhyZWUgbmV3IE5WTWUgY29tbWFu ZHMgaW50cm9kdWNlZCBpbiBab25lZCBOYW1lc3BhY2UNCj4gPiBDb21tYW5kIFNldCBzcGVjaWZp Y2F0aW9uIGFyZSBhZGRlZCwgbmFtZWx5IGZvciBab25lIE1hbmFnZW1lbnQNCj4gPiBSZWNlaXZl LCBab25lIE1hbmFnZW1lbnQgU2VuZCBhbmQgWm9uZSBBcHBlbmQuDQo+ID4gDQo+ID4gRGV2aWNl IGluaXRpYWxpemF0aW9uIGNvZGUgaGFzIGJlZW4gZXh0ZW5kZWQgdG8gY3JlYXRlIGEgcHJvcGVy DQo+ID4gY29uZmlndXJhdGlvbiBmb3Igem9uZWQgb3BlcmF0aW9uIHVzaW5nIGRldmljZSBwcm9w ZXJ0aWVzLg0KPiA+IA0KPiA+IFJlYWQvV3JpdGUgY29tbWFuZCBoYW5kbGVyIGlzIG1vZGlmaWVk IHRvIG9ubHkgYWxsb3cgd3JpdGVzIGF0IHRoZQ0KPiA+IHdyaXRlIHBvaW50ZXIgaWYgdGhlIG5h bWVzcGFjZSBpcyB6b25lZC4gRm9yIFpvbmUgQXBwZW5kIGNvbW1hbmQsDQo+ID4gd3JpdGVzIGlt cGxpY2l0bHkgaGFwcGVuIGF0IHRoZSB3cml0ZSBwb2ludGVyIGFuZCB0aGUgc3RhcnRpbmcgd3Jp dGUNCj4gPiBwb2ludGVyIHZhbHVlIGlzIHJldHVybmVkIGFzIHRoZSByZXN1bHQgb2YgdGhlIGNv bW1hbmQuIFdyaXRlIFplcm9lcw0KPiA+IGhhbmRsZXIgaXMgbW9kaWZpZWQgdG8gYWRkIHpvbmVk IGNoZWNrcyB0aGF0IGFyZSBpZGVudGljYWwgdG8gdGhvc2UNCj4gPiBkb25lIGFzIGEgcGFydCBv ZiBXcml0ZSBmbG93Lg0KPiA+IA0KPiA+IFRoZSBjb2RlIHRvIHN1cHBvcnQgZm9yIFpvbmUgRGVz Y3JpcHRvciBFeHRlbnNpb25zIGlzIG5vdCBpbmNsdWRlZCBpbg0KPiA+IHRoaXMgY29tbWl0IGFu ZCBaREVTIDAgaXMgYWx3YXlzIHJlcG9ydGVkLiBBIGxhdGVyIGNvbW1pdCBpbiB0aGlzDQo+ID4g c2VyaWVzIHdpbGwgYWRkIFpERSBzdXBwb3J0Lg0KPiA+IA0KPiA+IFRoaXMgY29tbWl0IGRvZXNu J3QgeWV0IGluY2x1ZGUgY2hlY2tzIGZvciBhY3RpdmUgYW5kIG9wZW4gem9uZQ0KPiA+IGxpbWl0 cy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZXJlIGFyZSBubyBsaW1pdHMgb24gZWl0aGVyIGFjdGl2 ZSBvcg0KPiA+IG9wZW4gem9uZXMuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogTmlrbGFzIENh c3NlbCA8bmlrbGFzLmNhc3NlbEB3ZGMuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEhhbnMgSG9s bWJlcmcgPGhhbnMuaG9sbWJlcmdAd2RjLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBBamF5IEpv c2hpIDxhamF5Lmpvc2hpQHdkYy5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogQ2hhaXRhbnlhIEt1 bGthcm5pIDxjaGFpdGFueWEua3Vsa2FybmlAd2RjLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBN YXRpYXMgQmpvcmxpbmcgPG1hdGlhcy5iam9ybGluZ0B3ZGMuY29tPg0KPiA+IFNpZ25lZC1vZmYt Ynk6IEFyYXZpbmQgUmFtZXNoIDxhcmF2aW5kLnJhbWVzaEB3ZGMuY29tPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IFNoaW4naWNoaXJvIEthd2FzYWtpIDxzaGluaWNoaXJvLmthd2FzYWtpQHdkYy5jb20+ DQo+ID4gU2lnbmVkLW9mZi1ieTogQWRhbSBNYW56YW5hcmVzIDxhZGFtLm1hbnphbmFyZXNAd2Rj LmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgRm9taWNoZXYgPGRtaXRyeS5mb21pY2hl dkB3ZGMuY29tPg0KPiA+IC0tLQ0KPiA+ICBibG9jay9udm1lLmMgICAgICAgICB8ICAgMiArLQ0K PiA+ICBody9ibG9jay9udm1lLW5zLmMgICB8IDE4NSArKysrKysrKy0NCj4gPiAgaHcvYmxvY2sv bnZtZS1ucy5oICAgfCAgIDYgKy0NCj4gPiAgaHcvYmxvY2svbnZtZS5jICAgICAgfCA4NzIgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPiA+ICBpbmNsdWRlL2Js b2NrL252bWUuaCB8ICAgNiArLQ0KPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDEwMzMgaW5zZXJ0aW9u cygrKSwgMzggZGVsZXRpb25zKC0pDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2Jsb2NrL252bWUu YyBiL2Jsb2NrL252bWUuYw0KPiA+IGluZGV4IDA1NDg1ZmRkMTEuLjdhNTEzYzlhMTcgMTAwNjQ0 DQo+ID4gLS0tIGEvYmxvY2svbnZtZS5jDQo+ID4gKysrIGIvYmxvY2svbnZtZS5jDQo+ID4gQEAg LTMzMyw3ICszMzMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBudm1lX3RyYW5zbGF0ZV9lcnJvcihj b25zdCBOdm1lQ3FlICpjKQ0KPiA+ICB7DQo+ID4gICAgICB1aW50MTZfdCBzdGF0dXMgPSAobGUx Nl90b19jcHUoYy0+c3RhdHVzKSA+PiAxKSAmIDB4RkY7DQo+ID4gICAgICBpZiAoc3RhdHVzKSB7 DQo+ID4gLSAgICAgICAgdHJhY2VfbnZtZV9lcnJvcihsZTMyX3RvX2NwdShjLT5yZXN1bHQpLA0K PiA+ICsgICAgICAgIHRyYWNlX252bWVfZXJyb3IobGUzMl90b19jcHUoYy0+cmVzdWx0MzIpLA0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGUxNl90b19jcHUoYy0+c3FfaGVhZCksDQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZTE2X3RvX2NwdShjLT5zcV9pZCksDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICBsZTE2X3RvX2NwdShjLT5jaWQpLA0KPiA+IGRpZmYg LS1naXQgYS9ody9ibG9jay9udm1lLW5zLmMgYi9ody9ibG9jay9udm1lLW5zLmMNCj4gPiBpbmRl eCAzMWI3Zjk4NmMzLi42ZDlkYzkyMDViIDEwMDY0NA0KPiA+IC0tLSBhL2h3L2Jsb2NrL252bWUt bnMuYw0KPiA+ICsrKyBiL2h3L2Jsb2NrL252bWUtbnMuYw0KPiA+IEBAIC0zMywxNCArMzMsMTQg QEAgc3RhdGljIHZvaWQgbnZtZV9uc19pbml0KE52bWVOYW1lc3BhY2UgKm5zKQ0KPiA+ICAgICAg TnZtZUlkTnMgKmlkX25zID0gJm5zLT5pZF9uczsNCj4gPiAgDQo+ID4gICAgICBpZiAoYmxrX2dl dF9mbGFncyhucy0+YmxrY29uZi5ibGspICYgQkRSVl9PX1VOTUFQKSB7DQo+ID4gLSAgICAgICAg bnMtPmlkX25zLmRsZmVhdCA9IDB4OTsNCj4gPiArICAgICAgICBucy0+aWRfbnMuZGxmZWF0ID0g MHg4Ow0KPiANCj4gWW91IHNlZW0gdG8gY2hhbmdlIHNvbWV0aGluZyB0aGF0IGlzIE5WTSBuYW1l c3BhY2Ugc3BlY2lmaWMgaGVyZSwgd2h5Pw0KPiBJZiBpdCBpcyBpbmRlZWQgbmVlZGVkLCBJIGFz c3VtZSB0aGF0IHRoaXMgY2hhbmdlIHNob3VsZCBiZSBpbiBhIHNlcGFyYXRlDQo+IHBhdGNoLg0K PiANCg0KT0ssIHRoaXMgbmVlZHMgdG8gYmUgZG9uZSBpbiBudm1lX3pvbmVkX2luaXRfbnMoKS4g VGhhbmtzDQoNCj4gPiAgICAgIH0NCj4gPiAgDQo+ID4gICAgICBpZF9ucy0+bGJhZlswXS5kcyA9 IEJEUlZfU0VDVE9SX0JJVFM7DQo+ID4gICAgICB1aW50MTZfdCBzdGF0dXM7DQoNCjxzbmlwPg0K DQo+ID4gIA0KPiA+ICsgICAgaGVhZGVyLT5ucl96b25lcyA9IGNwdV90b19sZTY0KG5yX3pvbmVz KTsNCj4gPiArDQo+ID4gKyAgICByZXQgPSBudm1lX2RtYShuLCAodWludDhfdCAqKWJ1ZiwgbGVu LCBETUFfRElSRUNUSU9OX0ZST01fREVWSUNFLCByZXEpOw0KPiA+ICsNCj4gPiArICAgIGdfZnJl ZShidWYpOw0KPiA+ICsNCj4gPiArICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4g IHN0YXRpYyB1aW50MTZfdCBudm1lX2lvX2NtZChOdm1lQ3RybCAqbiwgTnZtZVJlcXVlc3QgKnJl cSkNCj4gPiAgew0KPiA+ICAgICAgdWludDMyX3QgbnNpZCA9IGxlMzJfdG9fY3B1KHJlcS0+Y21k Lm5zaWQpOw0KPiA+IEBAIC0xMDczLDkgKzE4MDEsMTUgQEAgc3RhdGljIHVpbnQxNl90IG52bWVf aW9fY21kKE52bWVDdHJsICpuLCBOdm1lUmVxdWVzdCAqcmVxKQ0KPiANCj4gV2hpbGUgeW91IGRp ZCBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBleHBvc2Ugem9uZSBtZ210IHNlbmQvcmVjdi96b25l IGFwcGVuZA0KPiBpbiB0aGUgY21kX2VmZmVjdHMgbG9nIHdoZW4gQ0MuQ1NTICE9IENTU19DU0ks IHdlIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgd2UNCj4gcmV0dXJuIEludmFsaWQgQ29tbWFuZCBP cGNvZGUgZm9yIGFueSBvZiB0aG9zZSB0aHJlZSBjb21tYW5kcywgaWYgYSB1c2VyIHRyaWVzDQo+ IHRvIHVzZSB0aGVtIGFueXdheSAod2hpbGUgQ0MuQ1NTICE9IENTSSkuDQo+IA0KDQpZZXMsIGdv b2QgY2F0Y2guIE9ubHkgdGhlIGNvbW1hbmRzIHRoYXQgYXJlIG1hcmtlZCBhcyBzdXBwb3J0ZWQg aW4gQ29tbWFuZHMNClN1cHBvcnRlZCBhbmQgRWZmZWN0cyBsb2cgcGFnZSBhcmUgYWxsb3dlZCB0 byBiZSBleGVjdXRlZC4gSSBhbSBtYWtpbmcgc29tZQ0KY2hhbmdlcyB0byBlbnN1cmUgdGhpcy4N Cg0KPiA+ICAgICAgICAgIHJldHVybiBudm1lX2ZsdXNoKG4sIHJlcSk7DQo+ID4gICAgICBjYXNl IE5WTUVfQ01EX1dSSVRFX1pFUk9FUzoNCj4gPiAgICAgICAgICByZXR1cm4gbnZtZV93cml0ZV96 ZXJvZXMobiwgcmVxKTsNCj4gPiArICAgIGNhc2UgTlZNRV9DTURfWk9ORV9BUFBFTkQ6DQo+ID4g KyAgICAgICAgcmV0dXJuIG52bWVfcncobiwgcmVxLCB0cnVlKTsNCj4gPiAgICAgIGNhc2UgTlZN RV9DTURfV1JJVEU6DQo+ID4gICAgICBjYXNlIE5WTUVfQ01EX1JFQUQ6DQo+ID4gLSAgICAgICAg cmV0dXJuIG52bWVfcncobiwgcmVxKTsNCj4gPiArICAgICAgICByZXR1cm4gbnZtZV9ydyhuLCBy ZXEsIGZhbHNlKTsNCj4gPiArICAgIGNhc2UgTlZNRV9DTURfWk9ORV9NR01UX1NFTkQ6DQo+ID4g KyAgICAgICAgcmV0dXJuIG52bWVfem9uZV9tZ210X3NlbmQobiwgcmVxKTsNCj4gPiArICAgIGNh c2UgTlZNRV9DTURfWk9ORV9NR01UX1JFQ1Y6DQo+ID4gKyAgICAgICAgcmV0dXJuIG52bWVfem9u ZV9tZ210X3JlY3YobiwgcmVxKTsNCj4gPiAgICAgIGRlZmF1bHQ6DQo+ID4gICAgICAgICAgdHJh Y2VfcGNpX252bWVfZXJyX2ludmFsaWRfb3BjKHJlcS0+Y21kLm9wY29kZSk7DQo+ID4gICAgICAg ICAgcmV0dXJuIE5WTUVfSU5WQUxJRF9PUENPREUgfCBOVk1FX0ROUjsNCj4gPiBAQCAtMTMwMSw3 ICsyMDM1LDcgQEAgc3RhdGljIHVpbnQxNl90IG52bWVfZXJyb3JfaW5mbyhOdm1lQ3RybCAqbiwg dWludDhfdCByYWUsIHVpbnQzMl90IGJ1Zl9sZW4sDQo+ID4gICAgICAgICAgICAgICAgICAgICAg RE1BX0RJUkVDVElPTl9GUk9NX0RFVklDRSwgcmVxKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAtc3Rh dGljIHVpbnQxNl90IG52bWVfY21kX2VmZmVjdHMoTnZtZUN0cmwgKm4sIHVpbnQzMl90IGJ1Zl9s ZW4sDQo+ID4gK3N0YXRpYyB1aW50MTZfdCBudm1lX2NtZF9lZmZlY3RzKE52bWVDdHJsICpuLCB1 aW50OF90IGNzaSwgdWludDMyX3QgYnVmX2xlbiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDY0X3Qgb2ZmLCBOdm1lUmVxdWVzdCAqcmVxKQ0KPiA+ICB7DQo+ID4g ICAgICBOdm1lRWZmZWN0c0xvZyBjbWRfZWZmX2xvZyA9IHt9Ow0KPiA+IEBAIC0xMzI2LDExICsy MDYwLDIwIEBAIHN0YXRpYyB1aW50MTZfdCBudm1lX2NtZF9lZmZlY3RzKE52bWVDdHJsICpuLCB1 aW50MzJfdCBidWZfbGVuLA0KPiA+ICAgICAgYWNzW05WTUVfQURNX0NNRF9HRVRfTE9HX1BBR0Vd ID0gTlZNRV9DTURfRUZGRUNUU19DU1VQUDsNCj4gPiAgICAgIGFjc1tOVk1FX0FETV9DTURfQVNZ TkNfRVZfUkVRXSA9IE5WTUVfQ01EX0VGRkVDVFNfQ1NVUFA7DQo+ID4gIA0KPiA+IC0gICAgaW9j c1tOVk1FX0NNRF9GTFVTSF0gPSBOVk1FX0NNRF9FRkZFQ1RTX0NTVVBQIHwgTlZNRV9DTURfRUZG RUNUU19MQkNDOw0KPiA+IC0gICAgaW9jc1tOVk1FX0NNRF9XUklURV9aRVJPRVNdID0gTlZNRV9D TURfRUZGRUNUU19DU1VQUCB8DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVk1FX0NNRF9FRkZFQ1RTX0xCQ0M7DQo+ID4gLSAgICBpb2NzW05WTUVfQ01EX1dSSVRFXSA9 IE5WTUVfQ01EX0VGRkVDVFNfQ1NVUFAgfCBOVk1FX0NNRF9FRkZFQ1RTX0xCQ0M7DQo+ID4gLSAg ICBpb2NzW05WTUVfQ01EX1JFQURdID0gTlZNRV9DTURfRUZGRUNUU19DU1VQUDsNCj4gPiArICAg IGlmIChOVk1FX0NDX0NTUyhuLT5iYXIuY2MpICE9IENTU19BRE1JTl9PTkxZKSB7DQo+ID4gKyAg ICAgICAgaW9jc1tOVk1FX0NNRF9GTFVTSF0gPSBOVk1FX0NNRF9FRkZFQ1RTX0NTVVBQIHwgTlZN RV9DTURfRUZGRUNUU19MQkNDOw0KPiA+ICsgICAgICAgIGlvY3NbTlZNRV9DTURfV1JJVEVfWkVS T0VTXSA9IE5WTUVfQ01EX0VGRkVDVFNfQ1NVUFAgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5WTUVfQ01EX0VGRkVDVFNfTEJDQzsNCj4gPiArICAgICAgICBp b2NzW05WTUVfQ01EX1dSSVRFXSA9IE5WTUVfQ01EX0VGRkVDVFNfQ1NVUFAgfCBOVk1FX0NNRF9F RkZFQ1RTX0xCQ0M7DQo+ID4gKyAgICAgICAgaW9jc1tOVk1FX0NNRF9SRUFEXSA9IE5WTUVfQ01E X0VGRkVDVFNfQ1NVUFA7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYgKGNzaSA9PSBO Vk1FX0NTSV9aT05FRCAmJiBOVk1FX0NDX0NTUyhuLT5iYXIuY2MpID09IENTU19DU0kpIHsNCj4g PiArICAgICAgICBpb2NzW05WTUVfQ01EX1pPTkVfQVBQRU5EXSA9IE5WTUVfQ01EX0VGRkVDVFNf Q1NVUFAgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZNRV9D TURfRUZGRUNUU19MQkNDOw0KPiA+ICsgICAgICAgIGlvY3NbTlZNRV9DTURfWk9ORV9NR01UX1NF TkRdID0gTlZNRV9DTURfRUZGRUNUU19DU1VQUDsNCj4gPiArICAgICAgICBpb2NzW05WTUVfQ01E X1pPTkVfTUdNVF9SRUNWXSA9IE5WTUVfQ01EX0VGRkVDVFNfQ1NVUFA7DQo+ID4gKyAgICB9DQoN CkkgdGhpbmsgdGhlIGFib3ZlIG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gb25seSBhbGxvdyBhZG1p biBjb21tYW5kcyBpZiB0aGlzDQpsb2cgcmVxdWVzdCBhcnJpdmVzIHdpdGggYW4gdW5yZWNvZ25p emVkIENTSS4gU29tZSBjb21tYW5kIHNldHMgcG9zc2libHkgbWF5DQpub3Qgc3VwcG9ydCBzb21l IG9yIGFueSBOVk0gaS9vIGNvbW1hbmRzLg0KDQo+ID4gIA0KPiA+ICAgICAgdHJhbnNfbGVuID0g TUlOKHNpemVvZihjbWRfZWZmX2xvZykgLSBvZmYsIGJ1Zl9sZW4pOw0KPiA+ICANCj4gPiBAQCAt MTM0OSw2ICsyMDkyLDcgQEAgc3RhdGljIHVpbnQxNl90IG52bWVfZ2V0X2xvZyhOdm1lQ3RybCAq biwgTnZtZVJlcXVlc3QgKnJlcSkNCj4gPiAgICAgIHVpbnQ4X3QgIGxpZCA9IGR3MTAgJiAweGZm Ow0KPiA+ICAgICAgdWludDhfdCAgbHNwID0gKGR3MTAgPj4gOCkgJiAweGY7DQo+ID4gICAgICB1 aW50OF90ICByYWUgPSAoZHcxMCA+PiAxNSkgJiAweDE7DQo+ID4gKyAgICB1aW50OF90IGNzaSA9 IGxlMzJfdG9fY3B1KGNtZC0+Y2R3MTQpID4+IDI0Ow0KPiA+ICAgICAgdWludDMyX3QgbnVtZGws IG51bWR1Ow0KPiA+ICAgICAgdWludDY0X3Qgb2ZmLCBscG9sLCBscG91Ow0KPiA+ICAgICAgc2l6 ZV90ICAgbGVuOw0KPiA+IEBAIC0xMzgyLDcgKzIxMjYsNyBAQCBzdGF0aWMgdWludDE2X3QgbnZt ZV9nZXRfbG9nKE52bWVDdHJsICpuLCBOdm1lUmVxdWVzdCAqcmVxKQ0KPiA+ICAgICAgY2FzZSBO Vk1FX0xPR19GV19TTE9UX0lORk86DQo+ID4gICAgICAgICAgcmV0dXJuIG52bWVfZndfbG9nX2lu Zm8obiwgbGVuLCBvZmYsIHJlcSk7DQo+ID4gICAgICBjYXNlIE5WTUVfTE9HX0NNRF9FRkZFQ1RT Og0KPiA+IC0gICAgICAgIHJldHVybiBudm1lX2NtZF9lZmZlY3RzKG4sIGxlbiwgb2ZmLCByZXEp Ow0KPiA+ICsgICAgICAgIHJldHVybiBudm1lX2NtZF9lZmZlY3RzKG4sIGNzaSwgbGVuLCBvZmYs IHJlcSk7DQo+ID4gICAgICBkZWZhdWx0Og0KPiA+ICAgICAgICAgIHRyYWNlX3BjaV9udm1lX2Vy cl9pbnZhbGlkX2xvZ19wYWdlKG52bWVfY2lkKHJlcSksIGxpZCk7DQo+ID4gICAgICAgICAgcmV0 dXJuIE5WTUVfSU5WQUxJRF9GSUVMRCB8IE5WTUVfRE5SOw0KPiA+IEBAIC0xNTAyLDYgKzIyNDYs MTYgQEAgc3RhdGljIHVpbnQxNl90IG52bWVfcnB0X2VtcHR5X2lkX3N0cnVjdChOdm1lQ3RybCAq biwgTnZtZVJlcXVlc3QgKnJlcSkNCj4gPiAgICAgIHJldHVybiBudm1lX2RtYShuLCBpZCwgc2l6 ZW9mKGlkKSwgRE1BX0RJUkVDVElPTl9GUk9NX0RFVklDRSwgcmVxKTsNCj4gPiAgfQ0KPiA+ICAN Cj4gPiArc3RhdGljIGlubGluZSBib29sIG52bWVfY3NpX2hhc19udm1fc3VwcG9ydChOdm1lTmFt ZXNwYWNlICpucykNCj4gPiArew0KPiA+ICsgICAgc3dpdGNoIChucy0+Y3NpKSB7DQo+ID4gKyAg ICBjYXNlIE5WTUVfQ1NJX05WTToNCj4gPiArICAgIGNhc2UgTlZNRV9DU0lfWk9ORUQ6DQo+ID4g KyAgICAgICAgcmV0dXJuIHRydWU7DQo+ID4gKyAgICB9DQo+ID4gKyAgICByZXR1cm4gZmFsc2U7 DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyB1aW50MTZfdCBudm1lX2lkZW50aWZ5X2N0cmwo TnZtZUN0cmwgKm4sIE52bWVSZXF1ZXN0ICpyZXEpDQo+ID4gIHsNCj4gPiAgICAgIHRyYWNlX3Bj aV9udm1lX2lkZW50aWZ5X2N0cmwoKTsNCj4gPiBAQCAtMTUxMywxMSArMjI2NywxNiBAQCBzdGF0 aWMgdWludDE2X3QgbnZtZV9pZGVudGlmeV9jdHJsKE52bWVDdHJsICpuLCBOdm1lUmVxdWVzdCAq cmVxKQ0KPiA+ICBzdGF0aWMgdWludDE2X3QgbnZtZV9pZGVudGlmeV9jdHJsX2NzaShOdm1lQ3Ry bCAqbiwgTnZtZVJlcXVlc3QgKnJlcSkNCj4gPiAgew0KPiA+ICAgICAgTnZtZUlkZW50aWZ5ICpj ID0gKE52bWVJZGVudGlmeSAqKSZyZXEtPmNtZDsNCj4gPiArICAgIE52bWVJZEN0cmxab25lZCBp ZCA9IHt9Ow0KPiA+ICANCj4gPiAgICAgIHRyYWNlX3BjaV9udm1lX2lkZW50aWZ5X2N0cmxfY3Np KGMtPmNzaSk7DQo+ID4gIA0KPiA+ICAgICAgaWYgKGMtPmNzaSA9PSBOVk1FX0NTSV9OVk0pIHsN Cj4gPiAgICAgICAgICByZXR1cm4gbnZtZV9ycHRfZW1wdHlfaWRfc3RydWN0KG4sIHJlcSk7DQo+ ID4gKyAgICB9IGVsc2UgaWYgKGMtPmNzaSA9PSBOVk1FX0NTSV9aT05FRCkgew0KPiA+ICsgICAg ICAgIGlkLnphc2wgPSBuLT56YXNsOw0KPiA+ICsgICAgICAgIHJldHVybiBudm1lX2RtYShuLCAo dWludDhfdCAqKSZpZCwgc2l6ZW9mKGlkKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg RE1BX0RJUkVDVElPTl9GUk9NX0RFVklDRSwgcmVxKTsNCj4gDQo+IFBsZWFzZSByZWFkIG15IGNv bW1lbnQgb24gbnZtZV9pZGVudGlmeV9uc2xpc3RfY3NpKCkgYmVmb3JlIHJlYWRpbmcNCj4gdGhp cyBjb21tZW50Lg0KPiANCj4gQXQgbGVhc3QgZm9yIHRoaXMgZnVuY3Rpb24sIHRoZSBzcGVjaWZp Y2F0aW9uIGlzIGNsZWFyOg0KPiANCj4gIklmIHRoZSBob3N0IHJlcXVlc3RzIGEgZGF0YSBzdHJ1 Y3R1cmUgZm9yIGFuIEkvTyBDb21tYW5kIFNldCB0aGF0IHRoZQ0KPiBjb250cm9sbGVyIGRvZXMg bm90IHN1cHBvcnQsIHRoZSBjb250cm9sbGVyIHNoYWxsIGFib3J0IHRoZSBjb21tYW5kIHdpdGgN Cj4gYSBzdGF0dXMgb2YgSW52YWxpZCBGaWVsZCBpbiBDb21tYW5kLiINCj4gDQo+IElmIHRoZSBj b250cm9sbGVyIHN1cHBvcnRzIHRoZSBJL08gY29tbWFuZCBzZXQgPT0gaWYgdGhlIENvbW1hbmQg U2V0IGJpdA0KPiBpcyBzZXQgaW4gdGhlIGRhdGEgc3RydWN0IHJldHVybmVkIGJ5IHRoZSBudm1l X2lkZW50aWZ5X2NtZF9zZXQoKSwNCj4gc28gaGVyZSB3ZSBzaG91bGQgZG8gc29tZXRoaW5nIGxp a2U6DQo+IA0KPiB9IGVsc2UgaWYgKC0+Y3NpID09IE5WTUVfQ1NJX1pPTkVEICYmIGN0cmxfaGFz X3puc19uYW1lc3BhY2VzKCkpIHsNCj4gCS4uLg0KPiB9DQo+IA0KDQpXaXRoIHRoaXMgY29tbWl0 LCB0aGUgY29udHJvbGxlciBzdXBwb3J0cyBaTlMgY29tbWFuZCBzZXQgcmVnYXJkbGVzcyBvZg0K dGhlIG51bWJlciBvZiBhdHRhY2hlZCBaTlMgbmFtZXNwYWNlcy4gSXQgY291bGQgYmUgemVybywg YnV0IHRoZSBjb250cm9sbGVyDQpzdGlsbCBzdXBwb3J0cyBpdC4gSSB0aGluayBpdCB3b3VsZCBi ZSBiZXR0ZXIgbm90IHRvIGNoYW5nZSB0aGUgYmVoYXZpb3INCm9mIHRoaXMgY29tbWFuZCB0byBk ZXBlbmQgb24gd2hldGhlciB0aGVyZSBhcmUgYW55IFpOUyBuYW1lc3BhY2VzIGFkZGVkDQpvciBu b3QuDQoNCj4gPiAgICAgIH0NCj4gPiAgDQo+ID4gICAgICByZXR1cm4gTlZNRV9JTlZBTElEX0ZJ RUxEIHwgTlZNRV9ETlI7DQo+ID4gQEAgLTE1NDUsOCArMjMwNCwxMiBAQCBzdGF0aWMgdWludDE2 X3QgbnZtZV9pZGVudGlmeV9ucyhOdm1lQ3RybCAqbiwgTnZtZVJlcXVlc3QgKnJlcSwNCj4gPiAg ICAgICAgICByZXR1cm4gbnZtZV9ycHRfZW1wdHlfaWRfc3RydWN0KG4sIHJlcSk7DQo+ID4gICAg ICB9DQo+ID4gIA0KPiA+IC0gICAgcmV0dXJuIG52bWVfZG1hKG4sICh1aW50OF90ICopJm5zLT5p ZF9ucywgc2l6ZW9mKE52bWVJZE5zKSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICBETUFfRElS RUNUSU9OX0ZST01fREVWSUNFLCByZXEpOw0KPiA+ICsgICAgaWYgKGMtPmNzaSA9PSBOVk1FX0NT SV9OVk0gJiYgbnZtZV9jc2lfaGFzX252bV9zdXBwb3J0KG5zKSkgew0KPiA+ICsgICAgICAgIHJl dHVybiBudm1lX2RtYShuLCAodWludDhfdCAqKSZucy0+aWRfbnMsIHNpemVvZihOdm1lSWROcyks DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIERNQV9ESVJFQ1RJT05fRlJPTV9ERVZJQ0Us IHJlcSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJuIE5WTUVfSU5WQUxJRF9D TURfU0VUIHwgTlZNRV9ETlI7DQo+ID4gIH0NCj4gPiAgDQo+ID4gIHN0YXRpYyB1aW50MTZfdCBu dm1lX2lkZW50aWZ5X25zX2NzaShOdm1lQ3RybCAqbiwgTnZtZVJlcXVlc3QgKnJlcSwNCj4gPiBA QCAtMTU3MSw4ICsyMzM0LDExIEBAIHN0YXRpYyB1aW50MTZfdCBudm1lX2lkZW50aWZ5X25zX2Nz aShOdm1lQ3RybCAqbiwgTnZtZVJlcXVlc3QgKnJlcSwNCj4gPiAgICAgICAgICByZXR1cm4gbnZt ZV9ycHRfZW1wdHlfaWRfc3RydWN0KG4sIHJlcSk7DQo+ID4gICAgICB9DQo+ID4gIA0KPiA+IC0g ICAgaWYgKGMtPmNzaSA9PSBOVk1FX0NTSV9OVk0pIHsNCj4gPiArICAgIGlmIChjLT5jc2kgPT0g TlZNRV9DU0lfTlZNICYmIG52bWVfY3NpX2hhc19udm1fc3VwcG9ydChucykpIHsNCj4gPiAgICAg ICAgICByZXR1cm4gbnZtZV9ycHRfZW1wdHlfaWRfc3RydWN0KG4sIHJlcSk7DQo+ID4gKyAgICB9 IGVsc2UgaWYgKGMtPmNzaSA9PSBOVk1FX0NTSV9aT05FRCAmJiBucy0+Y3NpID09IE5WTUVfQ1NJ X1pPTkVEKSB7DQo+ID4gKyAgICAgICAgcmV0dXJuIG52bWVfZG1hKG4sICh1aW50OF90ICopbnMt PmlkX25zX3pvbmVkLCBzaXplb2YoTnZtZUlkTnNab25lZCksDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIERNQV9ESVJFQ1RJT05fRlJPTV9ERVZJQ0UsIHJlcSk7DQo+ID4gICAgICB9DQo+ ID4gIA0KPiA+ICAgICAgcmV0dXJuIE5WTUVfSU5WQUxJRF9GSUVMRCB8IE5WTUVfRE5SOw0KPiA+ IEBAIC0xNjM0LDcgKzI0MDAsNyBAQCBzdGF0aWMgdWludDE2X3QgbnZtZV9pZGVudGlmeV9uc2xp c3RfY3NpKE52bWVDdHJsICpuLCBOdm1lUmVxdWVzdCAqcmVxLA0KPiA+ICANCj4gPiAgICAgIHRy YWNlX3BjaV9udm1lX2lkZW50aWZ5X25zbGlzdF9jc2kobWluX25zaWQsIGMtPmNzaSk7DQo+ID4g IA0KPiA+IC0gICAgaWYgKGMtPmNzaSAhPSBOVk1FX0NTSV9OVk0pIHsNCj4gPiArICAgIGlmIChj LT5jc2kgIT0gTlZNRV9DU0lfTlZNICYmIGMtPmNzaSAhPSBOVk1FX0NTSV9aT05FRCkgew0KPiAN Cj4gV2hlbiByZWFkaW5nIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBDTlMgMDdoLCBJIHRoaW5rIHRo YXQgaXQgaXMgbm90IGNsZWFyDQo+IGhvdyB0aGlzIHNob3VsZCBiZWhhdmUuLi4NCj4gDQo+IEkn bSB0aGlua2luZyBpbiB0aGUgY2FzZSB3aGVuIGMtPmNzaSA9PSBOVk1FX0NTSV9aT05FRA0KPiB3 aGVuIG91ciBRRU1VIG1vZGVsIGRvZXMgb25seSBoYXZlIE5WTWUgbmFtZXNwYWNlcy4NCj4gDQoN CkkgdGhpbmsgc2ltcGx5IHJldHVybmluZyBhbiBlbXB0eSBsaXN0IGlzIGZpbmUgaW4gdGhpcyBj YXNlLiBUaGUgbG9vcA0KdGhhdCBmb2xsb3dzIHdpbGwgbm90IGFkZCBhbnkgbnNpZHMgdG8gdGhl IGxpc3QgYW5kIHRoaXMgaXMgd2hhdCBob3N0DQppcyBnb2luZyB0byByZWNlaXZlLg0KDQo+IEVp dGhlciB3ZSBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGxpc3QgKDEpLA0KPiBvciB3ZSBzaG91bGQg cmV0dXJuIEludmFsaWQgRmllbGQgaW4gQ29tbWFuZCAoMikuDQo+IA0KPiBJZiB3ZSBkZWNpZGUg dG8gZ28gd2l0aCAoMiksDQo+IHRoZW4gd2Ugc2hvdWxkIHByb2JhYmx5IHRha2UgdGhlIGNvZGUg eW91IGhhdmUgd3JpdHRlbiBpbiBudm1lX2lkZW50aWZ5X2NtZF9zZXQoKToNCj4gDQo+ICsgICAg Zm9yIChpID0gMTsgaSA8PSBuLT5udW1fbmFtZXNwYWNlczsgaSsrKSB7DQo+ICsgICAgICAgIG5z ID0gbnZtZV9ucyhuLCBpKTsNCj4gKyAgICAgICAgaWYgKG5zICYmIG5zLT5wYXJhbXMuem9uZWQp IHsNCj4gKyAgICAgICAgICAgIE5WTUVfU0VUX0NTSSgqbGlzdCwgTlZNRV9DU0lfWk9ORUQpOw0K PiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9DQo+IA0KPiBBbmQg bW92ZSBpdCBpbnRvIGEgY3RybF9oYXNfem5zX25hbWVzcGFjZXMoKSBoZWxwZXIgZnVuY3Rpb24s DQo+IGFuZCB0aGVuIGRvIHNvbWV0aGluZyBsaWtlOg0KPiBpZiAoIShjLT5jc2kgPT0gTlZNRV9D U0lfTlZNIHx8IChjdHJsX2hhc196bnNfbmFtZXNwYWNlcygpICYmIGMtPmNzaSA9PSBOVk1FX0NT SV9aT05FRCkpIA0KPiAJcmV0dXJuIE5WTUVfSU5WQUxJRF9GSUVMRCB8IE5WTUVfRE5SOw0KPiAN Cj4gDQoNCg0KPiA+ICAgICAgICAgIHJldHVybiBOVk1FX0lOVkFMSURfRklFTEQgfCBOVk1FX0RO UjsNCj4gPiAgICAgIH0NCj4gPiAgDQo+ID4gQEAgLTE2NDMsNyArMjQwOSw3IEBAIHN0YXRpYyB1 aW50MTZfdCBudm1lX2lkZW50aWZ5X25zbGlzdF9jc2koTnZtZUN0cmwgKm4sIE52bWVSZXF1ZXN0 ICpyZXEsDQo+ID4gICAgICAgICAgaWYgKCFucykgew0KPiA+ICAgICAgICAgICAgICBjb250aW51 ZTsNCj4gPiAgICAgICAgICB9DQo+ID4gLSAgICAgICAgaWYgKG5zLT5wYXJhbXMubnNpZCA8IG1p bl9uc2lkKSB7DQo+ID4gKyAgICAgICAgaWYgKG5zLT5wYXJhbXMubnNpZCA8IG1pbl9uc2lkIHx8 IGMtPmNzaSAhPSBucy0+Y3NpKSB7DQo+ID4gICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICAg ICAgICAgIH0NCj4gPiAgICAgICAgICBpZiAob25seV9hY3RpdmUgJiYgIW5zLT5wYXJhbXMuYXR0 YWNoZWQpIHsNCj4gPiBAQCAtMTY5NiwxOSArMjQ2MiwyOSBAQCBzdGF0aWMgdWludDE2X3QgbnZt ZV9pZGVudGlmeV9uc19kZXNjcl9saXN0KE52bWVDdHJsICpuLCBOdm1lUmVxdWVzdCAqcmVxKQ0K PiA+ICAgICAgZGVzYy0+bmlkdCA9IE5WTUVfTklEVF9DU0k7DQo+ID4gICAgICBkZXNjLT5uaWRs ID0gTlZNRV9OSURMX0NTSTsNCj4gPiAgICAgIGxpc3RfcHRyICs9IHNpemVvZigqZGVzYyk7DQo+ ID4gLSAgICAqKHVpbnQ4X3QgKilsaXN0X3B0ciA9IE5WTUVfQ1NJX05WTTsNCj4gPiArICAgICoo dWludDhfdCAqKWxpc3RfcHRyID0gbnMtPmNzaTsNCj4gPiAgDQo+ID4gICAgICByZXR1cm4gbnZt ZV9kbWEobiwgbGlzdCwgZGF0YV9sZW4sIERNQV9ESVJFQ1RJT05fRlJPTV9ERVZJQ0UsIHJlcSk7 DQo+ID4gIH0NCj4gPiAgDQo+ID4gIHN0YXRpYyB1aW50MTZfdCBudm1lX2lkZW50aWZ5X2NtZF9z ZXQoTnZtZUN0cmwgKm4sIE52bWVSZXF1ZXN0ICpyZXEpDQo+ID4gIHsNCj4gPiArICAgIE52bWVO YW1lc3BhY2UgKm5zOw0KPiA+ICAgICAgdWludDhfdCBsaXN0W05WTUVfSURFTlRJRllfREFUQV9T SVpFXSA9IHt9Ow0KPiA+ICAgICAgc3RhdGljIGNvbnN0IGludCBkYXRhX2xlbiA9IHNpemVvZihs aXN0KTsNCj4gPiArICAgIGludCBpOw0KPiA+ICANCj4gPiAgICAgIHRyYWNlX3BjaV9udm1lX2lk ZW50aWZ5X2NtZF9zZXQoKTsNCj4gPiAgDQo+ID4gICAgICBOVk1FX1NFVF9DU0koKmxpc3QsIE5W TUVfQ1NJX05WTSk7DQo+ID4gKyAgICBmb3IgKGkgPSAxOyBpIDw9IG4tPm51bV9uYW1lc3BhY2Vz OyBpKyspIHsNCj4gPiArICAgICAgICBucyA9IG52bWVfbnMobiwgaSk7DQo+ID4gKyAgICAgICAg aWYgKG5zICYmIG5zLT5wYXJhbXMuem9uZWQpIHsNCj4gPiArICAgICAgICAgICAgTlZNRV9TRVRf Q1NJKCpsaXN0LCBOVk1FX0NTSV9aT05FRCk7DQo+ID4gKyAgICAgICAgICAgIGJyZWFrOw0KPiA+ ICsgICAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArDQo+ID4gICAgICByZXR1cm4gbnZtZV9kbWEo biwgbGlzdCwgZGF0YV9sZW4sIERNQV9ESVJFQ1RJT05fRlJPTV9ERVZJQ0UsIHJlcSk7DQo+ID4g IH0NCj4gPiAgDQo+ID4gQEAgLTE3NTEsNyArMjUyNyw3IEBAIHN0YXRpYyB1aW50MTZfdCBudm1l X2Fib3J0KE52bWVDdHJsICpuLCBOdm1lUmVxdWVzdCAqcmVxKQ0KPiA+ICB7DQo+ID4gICAgICB1 aW50MTZfdCBzcWlkID0gbGUzMl90b19jcHUocmVxLT5jbWQuY2R3MTApICYgMHhmZmZmOw0KPiA+ ICANCj4gPiAtICAgIHJlcS0+Y3FlLnJlc3VsdCA9IDE7DQo+ID4gKyAgICByZXEtPmNxZS5yZXN1 bHQzMiA9IDE7DQo+ID4gICAgICBpZiAobnZtZV9jaGVja19zcWlkKG4sIHNxaWQpKSB7DQo+ID4g ICAgICAgICAgcmV0dXJuIE5WTUVfSU5WQUxJRF9GSUVMRCB8IE5WTUVfRE5SOw0KPiA+ICAgICAg fQ0KPiA+IEBAIC0xOTMyLDcgKzI3MDgsNyBAQCBkZWZhdWx0czoNCj4gPiAgICAgIH0NCj4gPiAg DQo+ID4gIG91dDoNCj4gPiAtICAgIHJlcS0+Y3FlLnJlc3VsdCA9IGNwdV90b19sZTMyKHJlc3Vs dCk7DQo+ID4gKyAgICByZXEtPmNxZS5yZXN1bHQzMiA9IGNwdV90b19sZTMyKHJlc3VsdCk7DQo+ ID4gICAgICByZXR1cm4gTlZNRV9TVUNDRVNTOw0KPiA+ICB9DQo+ID4gIA0KPiA+IEBAIC0yMDU3 LDggKzI4MzMsOCBAQCBzdGF0aWMgdWludDE2X3QgbnZtZV9zZXRfZmVhdHVyZShOdm1lQ3RybCAq biwgTnZtZVJlcXVlc3QgKnJlcSkNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChkdzExID4+IDE2KSAmIDB4RkZGRikgKyAxLA0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuLT5wYXJhbXMubWF4X2lvcXBhaXJzLA0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLT5wYXJhbXMubWF4X2lvcXBhaXJzKTsNCj4g PiAtICAgICAgICByZXEtPmNxZS5yZXN1bHQgPSBjcHVfdG9fbGUzMigobi0+cGFyYW1zLm1heF9p b3FwYWlycyAtIDEpIHwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKG4tPnBhcmFtcy5tYXhfaW9xcGFpcnMgLSAxKSA8PCAxNikpOw0KPiA+ICsgICAgICAgIHJl cS0+Y3FlLnJlc3VsdDMyID0gY3B1X3RvX2xlMzIoKG4tPnBhcmFtcy5tYXhfaW9xcGFpcnMgLSAx KSB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG4tPnBh cmFtcy5tYXhfaW9xcGFpcnMgLSAxKSA8PCAxNikpOw0KPiA+ICAgICAgICAgIGJyZWFrOw0KPiA+ ICAgICAgY2FzZSBOVk1FX0FTWU5DSFJPTk9VU19FVkVOVF9DT05GOg0KPiA+ICAgICAgICAgIG4t PmZlYXR1cmVzLmFzeW5jX2NvbmZpZyA9IGR3MTE7DQo+ID4gQEAgLTIzMTAsMTYgKzMwODYsMjgg QEAgc3RhdGljIGludCBudm1lX3N0YXJ0X2N0cmwoTnZtZUN0cmwgKm4pDQo+ID4gICAgICAgICAg ICAgIGNvbnRpbnVlOw0KPiA+ICAgICAgICAgIH0NCj4gPiAgICAgICAgICBucy0+cGFyYW1zLmF0 dGFjaGVkID0gZmFsc2U7DQo+ID4gLSAgICAgICAgc3dpdGNoIChucy0+cGFyYW1zLmNzaSkgew0K PiA+ICsgICAgICAgIHN3aXRjaCAobnMtPmNzaSkgew0KPiA+ICAgICAgICAgIGNhc2UgTlZNRV9D U0lfTlZNOg0KPiA+ICAgICAgICAgICAgICBpZiAoTlZNRV9DQ19DU1Mobi0+YmFyLmNjKSA9PSBD U1NfTlZNX09OTFkgfHwNCj4gPiAgICAgICAgICAgICAgICAgIE5WTUVfQ0NfQ1NTKG4tPmJhci5j YykgPT0gQ1NTX0NTSSkgew0KPiA+ICAgICAgICAgICAgICAgICAgbnMtPnBhcmFtcy5hdHRhY2hl ZCA9IHRydWU7DQo+ID4gICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4gKyAgICAgICAgY2FzZSBOVk1FX0NTSV9aT05FRDoNCj4gPiArICAgICAgICAgICAgaWYgKE5W TUVfQ0NfQ1NTKG4tPmJhci5jYykgPT0gQ1NTX0NTSSkgew0KPiA+ICsgICAgICAgICAgICAgICAg bnMtPnBhcmFtcy5hdHRhY2hlZCA9IHRydWU7DQo+ID4gKyAgICAgICAgICAgIH0NCj4gPiArICAg ICAgICAgICAgYnJlYWs7DQo+ID4gICAgICAgICAgfQ0KPiA+ICAgICAgfQ0KPiANCj4gTGlrZSBJ IHdyb3RlIGluIG15IHJldmlldyBjb21tZW50IGluIHRoZSBwYXRjaCB0aGF0IGFkZGVkIHN1cHBv cnQgZm9yIHRoZSBuZXcNCj4gYWxsb2NhdGVkIENOUyB2YWx1ZXMsIEkgcHJlZmVyIGlmIHdlIHJl bW92ZSB0aGlzIGZvci1sb29wIGNvbXBsZXRlbHksIGFuZA0KPiBzaW1wbHkgc2V0IGF0dGFjaGVk ID0gdHJ1ZSBpbiBudm1lX25zX3NldHVwKCkvbnZtZV9uc19pbml0KCkgaW5zdGVhZC4NCj4gDQo+ IChJIHdhcyBjb25zaWRlcmluZyBpZiB3ZSBzaG91bGQgc2V0IGF0dGFjaCA9IHRydWUgaW4gbnZt ZV96b25lZF9pbml0X25zKCksDQo+IGJ1dCBiZWNhdXNlIG52bWVfbnNfc2V0dXAoKS9udm1lX25z X2luaXQoKSBpcyBjYWxsZWQgZm9yIGFsbCBuYW1lc3BhY2VzLA0KPiBpbmNsdWRpbmcgWk5TIG5h bWVzcGFjZXMsIEkgZG9uJ3QgdGhpbmsgdGhhdCBhbnkgYWRkaXRpb25hbCBjb2RlIGluDQo+IG52 bWVfem9uZWRfaW5pdF9ucygpIGlzIHdhcnJhbnRlZC4pDQoNCkkgdGhpbmsgQ0MuQ1NTIHZhbHVl IGlzIG5vdCBhdmFpbGFibGUgZHVyaW5nIG5hbWVzcGFjZSBzZXR1cCBhbmQgaWYgd2UNCmFzc2ln biBhY3RpdmUgZmxhZyBpbiBudm1lX3pvbmVkX25zX3NldHVwKCksIHpvbmVkIG5hbWVzcGFjZXMg bWF5IGVuZCB1cA0KYmVpbmcgYWN0aXZlIGV2ZW4gaWYgTlZNIE9ubHkgY29tbWFuZCBzZXQgaXMg c2VsZWN0ZWQuIFNvIGtlZXBpbmcgdGhpcyBsb29wDQpzZWVtcyBsaWtlIGEgZ29vZCBpZGVhLg0K DQo+IA0KPiA+ICANCj4gPiArICAgIGlmICghbi0+emFzbF9icykgew0KPiA+ICsgICAgICAgIGFz c2VydChuLT5wYXJhbXMubWR0cyk7DQo+ID4gKyAgICAgICAgbi0+emFzbCA9IG4tPnBhcmFtcy5t ZHRzOw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICBuLT56YXNsID0gMzEgLSBjbHoz MihuLT56YXNsX2JzIC8gbi0+cGFnZV9zaXplKTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gICAg ICBudm1lX3NldF90aW1lc3RhbXAobiwgMFVMTCk7DQo+ID4gIA0KPiA+ICAgICAgUVRBSUxRX0lO SVQoJm4tPmFlcl9xdWV1ZSk7DQo+ID4gQEAgLTIzODIsMTAgKzMxNzAsMTEgQEAgc3RhdGljIHZv aWQgbnZtZV93cml0ZV9iYXIoTnZtZUN0cmwgKm4sIGh3YWRkciBvZmZzZXQsIHVpbnQ2NF90IGRh dGEsDQo+ID4gICAgICAgICAgICAgICAgICBjYXNlIENTU19OVk1fT05MWToNCj4gPiAgICAgICAg ICAgICAgICAgICAgICB0cmFjZV9wY2lfbnZtZV9jc3NfbnZtX2NzZXRfc2VsZWN0ZWRfYnlfaG9z dChkYXRhICYNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweGZmZmZmZmZmKTsNCj4gPiAtICAgICAgICAgICAgICAg ICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICAgICAgICAgICAg ICAgICAgY2FzZSBDU1NfQ1NJOg0KPiA+ICAgICAgICAgICAgICAgICAgICAgIE5WTUVfU0VUX0ND X0NTUyhuLT5iYXIuY2MsIENTU19DU0kpOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgIHRyYWNl X3BjaV9udm1lX2Nzc19hbGxfY3NldHNfc2VsX2J5X2hvc3QoZGF0YSAmIDB4ZmZmZmZmZmYpOw0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHRyYWNlX3BjaV9udm1lX2Nzc19hbGxfY3NldHNfc2Vs X2J5X2hvc3QoZGF0YSAmDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmZmZmZmZmKTsNCj4gPiAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTX0FETUlOX09OTFk6 DQo+ID4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gQEAgLTI3ODAsNiArMzU2OSwx MiBAQCBzdGF0aWMgdm9pZCBudm1lX2luaXRfc3RhdGUoTnZtZUN0cmwgKm4pDQo+ID4gICAgICBu LT5mZWF0dXJlcy50ZW1wX3RocmVzaF9oaSA9IE5WTUVfVEVNUEVSQVRVUkVfV0FSTklORzsNCj4g PiAgICAgIG4tPnN0YXJ0dGltZV9tcyA9IHFlbXVfY2xvY2tfZ2V0X21zKFFFTVVfQ0xPQ0tfVklS VFVBTCk7DQo+ID4gICAgICBuLT5hZXJfcmVxcyA9IGdfbmV3MChOdm1lUmVxdWVzdCAqLCBuLT5w YXJhbXMuYWVybCArIDEpOw0KPiA+ICsNCj4gPiArICAgIGlmICghbi0+cGFyYW1zLnphc2xfa2Ip IHsNCj4gPiArICAgICAgICBuLT56YXNsX2JzID0gbi0+cGFyYW1zLm1kdHMgPyAwIDogTlZNRV9E RUZBVUxUX01BWF9aQV9TSVpFICogS2lCOw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAg ICBuLT56YXNsX2JzID0gbi0+cGFyYW1zLnphc2xfa2IgKiBLaUI7DQo+ID4gKyAgICB9DQo+ID4g IH0NCj4gPiAgDQo+ID4gIGludCBudm1lX3JlZ2lzdGVyX25hbWVzcGFjZShOdm1lQ3RybCAqbiwg TnZtZU5hbWVzcGFjZSAqbnMsIEVycm9yICoqZXJycCkNCj4gPiBAQCAtMjk4NSw4ICszNzgwLDkg QEAgc3RhdGljIHZvaWQgbnZtZV9pbml0X2N0cmwoTnZtZUN0cmwgKm4sIFBDSURldmljZSAqcGNp X2RldikNCj4gPiAgICAgIE5WTUVfQ0FQX1NFVF9DUVIobi0+YmFyLmNhcCwgMSk7DQo+ID4gICAg ICBOVk1FX0NBUF9TRVRfVE8obi0+YmFyLmNhcCwgMHhmKTsNCj4gPiAgICAgIC8qDQo+ID4gLSAg ICAgKiBUaGUgZGV2aWNlIG5vdyBhbHdheXMgc3VwcG9ydHMgTlMgVHlwZXMsIGJ1dCBhbGwgY29t bWFuZHMNCj4gPiAtICAgICAqIHRoYXQgc3VwcG9ydCBDU0kgZmllbGQgd2lsbCBvbmx5IGhhbmRs ZSBOVk0gQ29tbWFuZCBTZXQuDQo+ID4gKyAgICAgKiBUaGUgZGV2aWNlIG5vdyBhbHdheXMgc3Vw cG9ydHMgTlMgVHlwZXMsIGV2ZW4gd2hlbiAiem9uZWQiIHByb3BlcnR5DQo+ID4gKyAgICAgKiBp cyBzZXQgdG8gemVyby4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgYWxsIGNvbW1hbmRzIHRoYXQgc3Vw cG9ydCBDU0kNCj4gPiArICAgICAqIGZpZWxkIG9ubHkgaGFuZGxlIE5WTSBDb21tYW5kIFNldC4N Cj4gPiAgICAgICAqLw0KPiA+ICAgICAgTlZNRV9DQVBfU0VUX0NTUyhuLT5iYXIuY2FwLCAoQ0FQ X0NTU19OVk0gfCBDQVBfQ1NTX0NTSV9TVVBQKSk7DQo+ID4gICAgICBOVk1FX0NBUF9TRVRfTVBT TUFYKG4tPmJhci5jYXAsIDQpOw0KPiA+IEBAIC0zMDMzLDkgKzM4MjksMjEgQEAgc3RhdGljIHZv aWQgbnZtZV9yZWFsaXplKFBDSURldmljZSAqcGNpX2RldiwgRXJyb3IgKiplcnJwKQ0KPiA+ICBz dGF0aWMgdm9pZCBudm1lX2V4aXQoUENJRGV2aWNlICpwY2lfZGV2KQ0KPiA+ICB7DQo+ID4gICAg ICBOdm1lQ3RybCAqbiA9IE5WTUUocGNpX2Rldik7DQo+ID4gKyAgICBOdm1lTmFtZXNwYWNlICpu czsNCj4gPiArICAgIGludCBpOw0KPiA+ICANCj4gPiAgICAgIG52bWVfY2xlYXJfY3RybChuKTsN Cj4gPiArDQo+ID4gKyAgICBmb3IgKGkgPSAxOyBpIDw9IG4tPm51bV9uYW1lc3BhY2VzOyBpKysp IHsNCj4gPiArICAgICAgICBucyA9IG52bWVfbnMobiwgaSk7DQo+ID4gKyAgICAgICAgaWYgKCFu cykgew0KPiA+ICsgICAgICAgICAgICBjb250aW51ZTsNCj4gPiArICAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgIG52bWVfbnNfY2xlYW51cChucyk7DQo+ID4gKyAgICB9DQo+ID4gICAgICBn X2ZyZWUobi0+bmFtZXNwYWNlcyk7DQo+ID4gKw0KPiA+ICAgICAgZ19mcmVlKG4tPmNxKTsNCj4g PiAgICAgIGdfZnJlZShuLT5zcSk7DQo+ID4gICAgICBnX2ZyZWUobi0+YWVyX3JlcXMpOw0KPiA+ IEBAIC0zMDYzLDYgKzM4NzEsOCBAQCBzdGF0aWMgUHJvcGVydHkgbnZtZV9wcm9wc1tdID0gew0K PiA+ICAgICAgREVGSU5FX1BST1BfVUlOVDMyKCJhZXJfbWF4X3F1ZXVlZCIsIE52bWVDdHJsLCBw YXJhbXMuYWVyX21heF9xdWV1ZWQsIDY0KSwNCj4gPiAgICAgIERFRklORV9QUk9QX1VJTlQ4KCJt ZHRzIiwgTnZtZUN0cmwsIHBhcmFtcy5tZHRzLCA3KSwNCj4gPiAgICAgIERFRklORV9QUk9QX0JP T0woInVzZS1pbnRlbC1pZCIsIE52bWVDdHJsLCBwYXJhbXMudXNlX2ludGVsX2lkLCBmYWxzZSks DQo+ID4gKyAgICBERUZJTkVfUFJPUF9VSU5UOCgiZmlsbF9wYXR0ZXJuIiwgTnZtZUN0cmwsIHBh cmFtcy5maWxsX3BhdHRlcm4sIDApLA0KPiA+ICsgICAgREVGSU5FX1BST1BfVUlOVDMyKCJ6b25l X2FwcGVuZF9zaXplX2xpbWl0IiwgTnZtZUN0cmwsIHBhcmFtcy56YXNsX2tiLCAwKSwNCj4gPiAg ICAgIERFRklORV9QUk9QX0VORF9PRl9MSVNUKCksDQo+ID4gIH07DQo+ID4gIA0KPiA+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2Jsb2NrL252bWUuaCBiL2luY2x1ZGUvYmxvY2svbnZtZS5oDQo+ID4g aW5kZXggYTcxMjZlMTIzZi4uNjI4YzY2NTcyOCAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL2Js b2NrL252bWUuaA0KPiA+ICsrKyBiL2luY2x1ZGUvYmxvY2svbnZtZS5oDQo+ID4gQEAgLTY1MSw4 ICs2NTEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUUVNVV9QQUNLRUQgTnZtZUFlclJlc3VsdCB7DQo+ ID4gIH0gTnZtZUFlclJlc3VsdDsNCj4gPiAgDQo+ID4gIHR5cGVkZWYgc3RydWN0IFFFTVVfUEFD S0VEIE52bWVDcWUgew0KPiA+IC0gICAgdWludDMyX3QgICAgcmVzdWx0Ow0KPiA+IC0gICAgdWlu dDMyX3QgICAgcnN2ZDsNCj4gPiArICAgIHVuaW9uIHsNCj4gPiArICAgICAgICB1aW50NjRfdCAg ICAgcmVzdWx0NjQ7DQo+ID4gKyAgICAgICAgdWludDMyX3QgICAgIHJlc3VsdDMyOw0KPiA+ICsg ICAgfTsNCj4gPiAgICAgIHVpbnQxNl90ICAgIHNxX2hlYWQ7DQo+ID4gICAgICB1aW50MTZfdCAg ICBzcV9pZDsNCj4gPiAgICAgIHVpbnQxNl90ICAgIGNpZDsNCj4gPiAtLSANCj4gPiAyLjIxLjAN Cg==