Received: by 2002:a05:6358:53a8:b0:117:f937:c515 with SMTP id z40csp3398022rwe; Sun, 16 Apr 2023 19:21:51 -0700 (PDT) X-Google-Smtp-Source: AKy350YSEMoYdyBfSVqccnelr93Fc/Jtmc0HrK7JNxd4ZijhqC5rWT5yD0slgej7A4ykKwvdqDpI X-Received: by 2002:a17:902:eb8c:b0:1a6:4b60:3195 with SMTP id q12-20020a170902eb8c00b001a64b603195mr10241535plg.66.1681698111123; Sun, 16 Apr 2023 19:21:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681698111; cv=none; d=google.com; s=arc-20160816; b=cgRezpKYcxL2Ueexz5EERn8Lan1A3pbyYBdge7Z3Ssmk68v7NjN3ZucR1c9Qly8XIw vafYiNkRpDrqLa2LLuVfBFXoOFtsDomdtup1FrB3V+W/TalA4Z8BlKglPnPlcACPmaMV xj7jjYJsb3CKn6XvTau+ouPNiKKhwE0e+2qipOt+AFHm2rwDO1Itb8LF8alc6+Gac0i4 as4uvt2EA7Y4DG35kKJ759+f/xozvrzBoc16sDkX0Y7sIDCLoBBuaLs1kH8TVs4E2RYH SAxSSNILHmx1WFurFeNrILAsim7J8jDGImP7/LF9h/wwEiyEoadtbNtrhfRVlGP+xcOc TXsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:authenticated-by; bh=bvPmfbAM4c/hm2tFm6cuoxvQKHfClwDqyjXqnPRFczg=; b=uccSt6LbCm/8Jaz3kQXHqmx5XZhdN6vug2LOf9cVpa0/XZQ7DOh03oezJudgZGRYDK wiCcYsRWJMvu+9wIogU3iHI2rX+KxBL90zcbL/iME4gzEmVPuxCAcD1NNPzI87SwMo4w o/SyA+vOS94WaQCY4q9hRj3ERQCTY2l/GaPrV/LCpN7pp+y/Hh4OpaELuoNwwPtEXQZK XaVt2KtLvm2d4k/1GTTGa2bXFk6QPcUHGwQEJ845NsQJ5HazgA8UK8Z23FsLP7xT49bj lRW9N4XxHFdKR0/wj6MKF6SbKJSGweTDBdDjOXs+FdP1hRzzztvEM/PKrpjQQ3Rn049w zxuA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z5-20020a170903018500b001a2911b43c7si11569061plg.273.2023.04.16.19.21.38; Sun, 16 Apr 2023 19:21:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229782AbjDQCSv (ORCPT + 99 others); Sun, 16 Apr 2023 22:18:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44702 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229763AbjDQCSt (ORCPT ); Sun, 16 Apr 2023 22:18:49 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A36F213A; Sun, 16 Apr 2023 19:18:45 -0700 (PDT) Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.77 with qID 33H2I83B0030914, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36506.realtek.com.tw[172.21.6.27]) by rtits2.realtek.com.tw (8.15.2/2.81/5.90) with ESMTPS id 33H2I83B0030914 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=OK); Mon, 17 Apr 2023 10:18:08 +0800 Received: from RTEXMBS04.realtek.com.tw (172.21.6.97) by RTEXH36506.realtek.com.tw (172.21.6.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.17; Mon, 17 Apr 2023 10:18:31 +0800 Received: from RTEXMBS03.realtek.com.tw (172.21.6.96) by RTEXMBS04.realtek.com.tw (172.21.6.97) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Mon, 17 Apr 2023 10:18:30 +0800 Received: from RTEXMBS03.realtek.com.tw ([fe80::5510:ad08:5390:1ed3]) by RTEXMBS03.realtek.com.tw ([fe80::5510:ad08:5390:1ed3%2]) with mapi id 15.01.2375.007; Mon, 17 Apr 2023 10:18:30 +0800 From: Max Chou To: Luiz Augusto von Dentz CC: "marcel@holtmann.org" , "johan.hedberg@gmail.com" , "linux-bluetooth@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "alex_lu@realsil.com.cn" , allen_chen , Hilda Wu , Karen Hsu , KidmanLee , "mmandlik@google.com" , "abhishekpandit@chromium.org" , "apusaka@chromium.org" , "yinghsu@chromium.org" , "alainmichaud@google.com" Subject: RE: [PATCH v4] Bluetooth: btrtl: Firmware format v2 support Thread-Topic: [PATCH v4] Bluetooth: btrtl: Firmware format v2 support Thread-Index: AQHZbrxFWESmLor6JkOFLUPdSR6KiK8qyZcAgAP+AeA= Date: Mon, 17 Apr 2023 02:18:30 +0000 Message-ID: References: <20230414103125.33496-1-max.chou@realtek.com> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.21.132.197] x-kse-serverinfo: RTEXMBS04.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkhIEx1aXosDQpUaGFua3MgZm9yIHlvdXIgcmVzcG9uc2UuDQpJIHdpbGwgc3VibWl0IHRoZSB2 NSBwYXRjaCBhcyB5b3VyIGFkdmljZS4NCg0KDQpCUnMsDQpNYXgNCg0KDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXouZGVu dHpAZ21haWwuY29tPg0KPiBTZW50OiBTYXR1cmRheSwgQXByaWwgMTUsIDIwMjMgNToxOCBBTQ0K PiBUbzogTWF4IENob3UgPG1heC5jaG91QHJlYWx0ZWsuY29tPg0KPiBDYzogbWFyY2VsQGhvbHRt YW5uLm9yZzsgam9oYW4uaGVkYmVyZ0BnbWFpbC5jb207DQo+IGxpbnV4LWJsdWV0b290aEB2Z2Vy Lmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7DQo+IGFsZXhfbHVAcmVh bHNpbC5jb20uY247IGFsbGVuX2NoZW4gPGFsbGVuX2NoZW5AcmVhbHNpbC5jb20uY24+OyBIaWxk YSBXdQ0KPiA8aGlsZGF3dUByZWFsdGVrLmNvbT47IEthcmVuIEhzdSA8a2FyZW5oc3VAcmVhbHRl ay5jb20+OyBLaWRtYW5MZWUNCj4gPGtpZG1hbkByZWFsdGVrLmNvbT47IG1tYW5kbGlrQGdvb2ds ZS5jb207DQo+IGFiaGlzaGVrcGFuZGl0QGNocm9taXVtLm9yZzsgYXB1c2FrYUBjaHJvbWl1bS5v cmc7DQo+IHlpbmdoc3VAY2hyb21pdW0ub3JnOyBhbGFpbm1pY2hhdWRAZ29vZ2xlLmNvbQ0KPiBT dWJqZWN0OiBSZTogW1BBVENIIHY0XSBCbHVldG9vdGg6IGJ0cnRsOiBGaXJtd2FyZSBmb3JtYXQg djIgc3VwcG9ydA0KPiANCj4gDQo+IEV4dGVybmFsIG1haWwuDQo+IA0KPiANCj4gDQo+IEhpIE1h eCwNCj4gDQo+IE9uIEZyaSwgQXByIDE0LCAyMDIzIGF0IDM6MzHigK9BTSA8bWF4LmNob3VAcmVh bHRlay5jb20+IHdyb3RlOg0KPiA+DQo+ID4gRnJvbTogTWF4IENob3UgPG1heC5jaG91QHJlYWx0 ZWsuY29tPg0KPiA+DQo+ID4gUmVhbHRlayBjaGFuZ2VkIHRoZSBmb3JtYXQgb2YgdGhlIGZpcm13 YXJlIGZpbGUgYXMgdjIuIFRoZSBkcml2ZXINCj4gPiBzaG91bGQgaW1wbGVtZW50IHRoZSBwYXRj aCB0byBleHRyYWN0IHRoZSBmaXJtd2FyZSBkYXRhIGZyb20gdGhlDQo+ID4gZmlybXdhcmUgZmls ZS4gVGhlIGZ1dHVyZSBjaGlwcyBtdXN0IGFwcGx5IHRoaXMgcGF0Y2ggZm9yIGZpcm13YXJlIGxv YWRpbmcuDQo+ID4gVGhpcyBwYXRjaCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGJvdGggcHJldmlv dXMgZm9ybWF0IGFuZCB2MiBhcyB3ZWxsLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogQWxsZW4g Q2hlbiA8YWxsZW5fY2hlbkByZWFsc2lsLmNvbS5jbj4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbGV4 IEx1IDxhbGV4X2x1QHJlYWxzaWwuY29tLmNuPg0KPiA+IFRlc3RlZC1ieTogSGlsZGEgV3UgPGhp bGRhd3VAcmVhbHRlay5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTWF4IENob3UgPG1heC5jaG91 QHJlYWx0ZWsuY29tPg0KPiA+IC0tLQ0KPiA+IENoYW5nZXMgaW4gdjQ6DQo+ID4gLSBSZXNvbHZl IHRoZSBjb25mbGljdCBkdWUgdG8gdGhlIGxhdGVyIGNvbW1pdHMgQ2hhbmdlcyBpbiB2MzoNCj4g PiAtIEZpeCBzcGFyc2UgY2hlY2sNCj4gPiAtIEVkaXQgY29tbWl0IGxvZw0KPiA+IENoYW5nZXMg aW4gdjI6DQo+ID4gLSBVc2UgaW92ZWMgcHVsbCBkYXRhIGZ1bmN0aW9uIGFzIHJ0bF9pb3ZfcHVs bF9kYXRhKCkgdG8gcGFyc2UgZGF0YS4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9ibHVldG9vdGgv YnRydGwuYyB8IDM1Mg0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t DQo+ID4gIGRyaXZlcnMvYmx1ZXRvb3RoL2J0cnRsLmggfCAgNTMgKysrKystDQo+ID4gIDIgZmls ZXMgY2hhbmdlZCwgMzY0IGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cnRsLmMgYi9kcml2ZXJzL2JsdWV0b290 aC9idHJ0bC5jDQo+ID4gaW5kZXggMGYyNTZhOGFiZWY0Li5iNzQ2ZmU3NjgwOWMgMTAwNjQ0DQo+ ID4gLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYnRydGwuYw0KPiA+ICsrKyBiL2RyaXZlcnMvYmx1 ZXRvb3RoL2J0cnRsLmMNCj4gPiBAQCAtMjEsNiArMjEsNyBAQA0KPiA+ICAjZGVmaW5lIFJUTF9D SElQXzg3MjNDU19WRiAgICAgNA0KPiA+ICAjZGVmaW5lIFJUTF9DSElQXzg3MjNDU19YWCAgICAg NQ0KPiA+ICAjZGVmaW5lIFJUTF9FUEFUQ0hfU0lHTkFUVVJFICAgIlJlYWx0ZWNoIg0KPiA+ICsj ZGVmaW5lIFJUTF9FUEFUQ0hfU0lHTkFUVVJFX1YyICAgICAgICAiUlRCVENvcmUiDQo+ID4gICNk ZWZpbmUgUlRMX1JPTV9MTVBfODcwM0IgICAgICAweDg3MDMNCj4gPiAgI2RlZmluZSBSVExfUk9N X0xNUF84NzIzQSAgICAgIDB4MTIwMA0KPiA+ICAjZGVmaW5lIFJUTF9ST01fTE1QXzg3MjNCICAg ICAgMHg4NzIzDQo+ID4gQEAgLTQzLDYgKzQ0LDE0IEBADQo+ID4gICAgICAgICAuaGNpX3ZlciA9 IChoY2l2KSwgXA0KPiA+ICAgICAgICAgLmhjaV9idXMgPSAoYnVzKQ0KPiA+DQo+ID4gKyNkZWZp bmUgICAgICAgIFJUTF9DSElQX1NVQlZFUiAoJihzdHJ1Y3QgcnRsX3ZlbmRvcl9jbWQpIHt7MHgx MCwNCj4gMHgzOCwgMHgwNCwgMHgyOCwgMHg4MH19KQ0KPiA+ICsjZGVmaW5lICAgICAgICBSVExf Q0hJUF9SRVYgICAgKCYoc3RydWN0IHJ0bF92ZW5kb3JfY21kKSB7ezB4MTAsDQo+IDB4M0EsIDB4 MDQsIDB4MjgsIDB4ODB9fSkNCj4gPiArI2RlZmluZSAgICAgICAgUlRMX1NFQ19QUk9KICAgICgm KHN0cnVjdCBydGxfdmVuZG9yX2NtZCkge3sweDEwLA0KPiAweEE0LCAweDBELCAweDAwLCAweGIw fX0pDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJUTF9QQVRDSF9TTklQUEVUUyAgICAgICAgICAgICAw eDAxDQo+ID4gKyNkZWZpbmUgUlRMX1BBVENIX0RVTU1ZX0hFQURFUiAgICAgICAgIDB4MDINCj4g PiArI2RlZmluZSBSVExfUEFUQ0hfU0VDVVJJVFlfSEVBREVSICAgICAgMHgwMw0KPiA+ICsNCj4g PiAgZW51bSBidHJ0bF9jaGlwX2lkIHsNCj4gPiAgICAgICAgIENISVBfSURfODcyM0EsDQo+ID4g ICAgICAgICBDSElQX0lEXzg3MjNCLA0KPiA+IEBAIC04MSw2ICs5MCw4IEBAIHN0cnVjdCBidHJ0 bF9kZXZpY2VfaW5mbyB7DQo+ID4gICAgICAgICBpbnQgY2ZnX2xlbjsNCj4gPiAgICAgICAgIGJv b2wgZHJvcF9mdzsNCj4gPiAgICAgICAgIGludCBwcm9qZWN0X2lkOw0KPiA+ICsgICAgICAgdTgg a2V5X2lkOw0KPiA+ICsgICAgICAgc3RydWN0IGxpc3RfaGVhZCBwYXRjaF9zdWJzZWNzOw0KPiA+ ICB9Ow0KPiA+DQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWRfdGFibGUgaWNfaWRfdGFibGVb XSA9IHsgQEAgLTM0Myw2ICszNTQsMjI5IEBADQo+ID4gc3RhdGljIGludCBydGxfcmVhZF9yb21f dmVyc2lvbihzdHJ1Y3QgaGNpX2RldiAqaGRldiwgdTggKnZlcnNpb24pDQo+ID4gICAgICAgICBy ZXR1cm4gMDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbnQgYnRydGxfdmVuZG9yX3JlYWRf cmVnMTYoc3RydWN0IGhjaV9kZXYgKmhkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgcnRsX3ZlbmRvcl9jbWQgKmNtZCwgdTgNCj4gKnJwKQ0KPiA+ICt7 DQo+ID4gKyAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KPiA+ICsgICAgICAgaW50IGVyciA9 IDA7DQo+ID4gKw0KPiA+ICsgICAgICAgc2tiID0gX19oY2lfY21kX3N5bmMoaGRldiwgMHhmYzYx LCBzaXplb2YoKmNtZCksIGNtZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhD SV9JTklUX1RJTUVPVVQpOw0KPiA+ICsgICAgICAgaWYgKElTX0VSUihza2IpKSB7DQo+ID4gKyAg ICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIoc2tiKTsNCj4gPiArICAgICAgICAgICAgICAgcnRs X2Rldl9lcnIoaGRldiwgIlJUTDogUmVhZCByZWcxNiBmYWlsZWQgKCVkKSIsIGVycik7DQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgaWYgKHNrYi0+bGVuICE9IDMgfHwgc2tiLT5kYXRhWzBdKSB7DQo+ID4gKyAgICAgICAg ICAgICAgIGJ0X2Rldl9lcnIoaGRldiwgIlJUTDogUmVhZCByZWcxNiBsZW5ndGggbWlzbWF0Y2gi KTsNCj4gPiArICAgICAgICAgICAgICAga2ZyZWVfc2tiKHNrYik7DQo+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRUlPOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGlmIChy cCkNCj4gPiArICAgICAgICAgICAgICAgbWVtY3B5KHJwLCBza2ItPmRhdGEgKyAxLCAyKTsNCj4g PiArDQo+ID4gKyAgICAgICBrZnJlZV9za2Ioc2tiKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgKnJ0bF9pb3ZfcHVsbF9kYXRh KHN0cnVjdCBydGxfaW92ZWMgKmlvdiwgdTMyIGxlbikgew0KPiA+ICsgICAgICAgdm9pZCAqZGF0 YSA9IGlvdi0+ZGF0YTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaW92LT5sZW4gPCBsZW4pDQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICsNCj4gPiArICAgICAgIGlvdi0+ ZGF0YSArPSBsZW47DQo+ID4gKyAgICAgICBpb3YtPmxlbiAgLT0gbGVuOw0KPiA+ICsNCj4gPiAr ICAgICAgIHJldHVybiBkYXRhOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBidHJ0 bF9pbnNlcnRfb3JkZXJlZF9zdWJzZWMoc3RydWN0IHJ0bF9zdWJzZWN0aW9uICpub2RlLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnRydGxfZGV2 aWNlX2luZm8NCj4gPiArKmJ0cnRsX2Rldikgew0KPiA+ICsgICAgICAgc3RydWN0IGxpc3RfaGVh ZCAqcG9zOw0KPiA+ICsgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dDsNCj4gPiArICAgICAg IHN0cnVjdCBydGxfc3Vic2VjdGlvbiAqc3Vic2VjOw0KPiA+ICsNCj4gPiArICAgICAgIGxpc3Rf Zm9yX2VhY2hfc2FmZShwb3MsIG5leHQsICZidHJ0bF9kZXYtPnBhdGNoX3N1YnNlY3MpIHsNCj4g PiArICAgICAgICAgICAgICAgc3Vic2VjID0gbGlzdF9lbnRyeShwb3MsIHN0cnVjdCBydGxfc3Vi c2VjdGlvbiwgbGlzdCk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChzdWJzZWMtPnByaW8gPj0g bm9kZS0+cHJpbykNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAg ICAgIH0NCj4gPiArICAgICAgIF9fbGlzdF9hZGQoJm5vZGUtPmxpc3QsIHBvcy0+cHJldiwgcG9z KTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBidHJ0bF9wYXJzZV9zZWN0aW9uKHN0cnVjdCBo Y2lfZGV2ICpoZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg YnRydGxfZGV2aWNlX2luZm8gKmJ0cnRsX2RldiwNCj4gdTMyIG9wY29kZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdTggKmRhdGEsIHUzMiBsZW4pIHsNCj4gPiArICAgICAg IHN0cnVjdCBydGxfc2VjdGlvbl9oZHIgKmhkcjsNCj4gPiArICAgICAgIHN0cnVjdCBydGxfc3Vi c2VjdGlvbiAqc3Vic2VjOw0KPiA+ICsgICAgICAgc3RydWN0IHJ0bF9jb21tb25fc3Vic2VjICpj b21tb25fc3Vic2VjOw0KPiA+ICsgICAgICAgc3RydWN0IHJ0bF9zZWNfaGRyICpzZWNfaGRyOw0K PiA+ICsgICAgICAgaW50IGk7DQo+ID4gKyAgICAgICB1OCAqcHRyOw0KPiA+ICsgICAgICAgdTE2 IG51bV9zdWJzZWNzOw0KPiA+ICsgICAgICAgdTMyIHN1YnNlY19sZW47DQo+ID4gKyAgICAgICBp bnQgcmMgPSAwOw0KPiA+ICsgICAgICAgc3RydWN0IHJ0bF9pb3ZlYyBpb3YgPSB7DQo+ID4gKyAg ICAgICAgICAgICAgIC5kYXRhID0gZGF0YSwNCj4gPiArICAgICAgICAgICAgICAgLmxlbiAgPSBs ZW4sDQo+ID4gKyAgICAgICB9Ow0KPiA+ICsNCj4gPiArICAgICAgIGhkciA9IHJ0bF9pb3ZfcHVs bF9kYXRhKCZpb3YsIHNpemVvZigqaGRyKSk7DQo+ID4gKyAgICAgICBpZiAoIWhkcikNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgICBudW1fc3Vic2VjcyA9 IGxlMTZfdG9fY3B1KGhkci0+bnVtKTsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBp IDwgbnVtX3N1YnNlY3M7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICBjb21tb25fc3Vic2Vj ID0gcnRsX2lvdl9wdWxsX2RhdGEoJmlvdiwNCj4gc2l6ZW9mKCpjb21tb25fc3Vic2VjKSk7DQo+ ID4gKyAgICAgICAgICAgICAgIGlmICghY29tbW9uX3N1YnNlYykNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgc3Vic2VjX2xlbiA9IGxlMzJf dG9fY3B1KGNvbW1vbl9zdWJzZWMtPmxlbik7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBy dGxfZGV2X2RiZyhoZGV2LCAic3Vic2VjLCBlY28gMHglMDJ4LCBsZW4gJTA4eCIsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbl9zdWJzZWMtPmVjbywgc3Vic2VjX2xlbik7 DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBwdHIgPSBydGxfaW92X3B1bGxfZGF0YSgmaW92 LCBzdWJzZWNfbGVuKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKCFwdHIpDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBpZiAo Y29tbW9uX3N1YnNlYy0+ZWNvICE9IGJ0cnRsX2Rldi0+cm9tX3ZlcnNpb24gKyAxKQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAg ICAgc3dpdGNoIChvcGNvZGUpIHsNCj4gPiArICAgICAgICAgICAgICAgY2FzZSBSVExfUEFUQ0hf U0VDVVJJVFlfSEVBREVSOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHNlY19oZHIgPSAo dm9pZCAqKWNvbW1vbl9zdWJzZWM7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNl Y19oZHItPmtleV9pZCAhPSBidHJ0bF9kZXYtPmtleV9pZCkNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBz dWJzZWMgPSBremFsbG9jKHNpemVvZigqc3Vic2VjKSwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAg ICAgICAgICAgIGlmICghc3Vic2VjKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biAtRU5PTUVNOw0KPiA+ICsgICAgICAgICAgICAgICBzdWJzZWMtPm9wY29kZSA9IG9wY29kZTsN Cj4gPiArICAgICAgICAgICAgICAgc3Vic2VjLT5wcmlvID0gY29tbW9uX3N1YnNlYy0+cHJpbzsN Cj4gPiArICAgICAgICAgICAgICAgc3Vic2VjLT5sZW4gID0gc3Vic2VjX2xlbjsNCj4gPiArICAg ICAgICAgICAgICAgc3Vic2VjLT5kYXRhID0gcHRyOw0KPiA+ICsgICAgICAgICAgICAgICBidHJ0 bF9pbnNlcnRfb3JkZXJlZF9zdWJzZWMoc3Vic2VjLCBidHJ0bF9kZXYpOw0KPiA+ICsgICAgICAg ICAgICAgICByYyAgKz0gc3Vic2VjX2xlbjsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgICByZXR1cm4gcmM7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgcnRsYnRfcGFy c2VfZmlybXdhcmVfdjIoc3RydWN0IGhjaV9kZXYgKmhkZXYsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnRydGxfZGV2aWNlX2luZm8NCj4gKmJ0cnRsX2Rl diwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg KipfYnVmKSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcnRsX2VwYXRjaF9oZWFkZXJfdjIgKmhkcjsN Cj4gPiArICAgICAgIGludCByYzsNCj4gPiArICAgICAgIHU4IHJlZ192YWxbMl07DQo+ID4gKyAg ICAgICB1OCBrZXlfaWQ7DQo+ID4gKyAgICAgICB1MzIgbnVtX3NlY3Rpb25zOw0KPiA+ICsgICAg ICAgc3RydWN0IHJ0bF9zZWN0aW9uICpzZWN0aW9uOw0KPiA+ICsgICAgICAgc3RydWN0IHJ0bF9z dWJzZWN0aW9uICplbnRyeSwgKnRtcDsNCj4gPiArICAgICAgIHUzMiBzZWN0aW9uX2xlbjsNCj4g PiArICAgICAgIHUzMiBvcGNvZGU7DQo+ID4gKyAgICAgICBpbnQgbGVuID0gMDsNCj4gPiArICAg ICAgIGludCBpOw0KPiA+ICsgICAgICAgdTggKnB0cjsNCj4gPiArICAgICAgIHN0cnVjdCBydGxf aW92ZWMgaW92ID0gew0KPiA+ICsgICAgICAgICAgICAgICAuZGF0YSA9IGJ0cnRsX2Rldi0+Zndf ZGF0YSwNCj4gPiArICAgICAgICAgICAgICAgLmxlbiAgPSBidHJ0bF9kZXYtPmZ3X2xlbiAtIDcs IC8qIEN1dCB0aGUgdGFpbCAqLw0KPiA+ICsgICAgICAgfTsNCj4gPiArDQo+ID4gKyAgICAgICBy YyA9IGJ0cnRsX3ZlbmRvcl9yZWFkX3JlZzE2KGhkZXYsIFJUTF9TRUNfUFJPSiwgcmVnX3ZhbCk7 DQo+ID4gKyAgICAgICBpZiAocmMgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJ TzsNCj4gPiArICAgICAgIGtleV9pZCA9IHJlZ192YWxbMF07DQo+ID4gKw0KPiA+ICsgICAgICAg cnRsX2Rldl9kYmcoaGRldiwgIiVzOiBrZXkgaWQgJXUiLCBfX2Z1bmNfXywga2V5X2lkKTsNCj4g PiArDQo+ID4gKyAgICAgICBidHJ0bF9kZXYtPmtleV9pZCA9IGtleV9pZDsNCj4gPiArDQo+ID4g KyAgICAgICBoZHIgPSBydGxfaW92X3B1bGxfZGF0YSgmaW92LCBzaXplb2YoKmhkcikpOw0KPiA+ ICsgICAgICAgaWYgKCFoZHIpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0K PiA+ICsgICAgICAgbnVtX3NlY3Rpb25zID0gbGUzMl90b19jcHUoaGRyLT5udW1fc2VjdGlvbnMp Ow0KPiA+ICsNCj4gPiArICAgICAgIHJ0bF9kZXZfZGJnKGhkZXYsICJGVyB2ZXJzaW9uICUwOHgt JTA4eCIsICooKHUzMg0KPiAqKWhkci0+ZndfdmVyc2lvbiksDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAqKCh1MzIgKikoaGRyLT5md192ZXJzaW9uICsgNCkpKTsNCj4gPiArDQo+ID4gKyAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbnVtX3NlY3Rpb25zOyBpKyspIHsNCj4gPiArICAgICAgICAgICAg ICAgc2VjdGlvbiA9IHJ0bF9pb3ZfcHVsbF9kYXRhKCZpb3YsIHNpemVvZigqc2VjdGlvbikpOw0K PiA+ICsgICAgICAgICAgICAgICBpZiAoIXNlY3Rpb24pDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgIHNlY3Rpb25fbGVuID0gbGUzMl90b19j cHUoc2VjdGlvbi0+bGVuKTsNCj4gPiArICAgICAgICAgICAgICAgb3Bjb2RlICAgICAgPSBsZTMy X3RvX2NwdShzZWN0aW9uLT5vcGNvZGUpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgcnRs X2Rldl9kYmcoaGRldiwgIm9wY29kZSAweCUwNHgiLCBzZWN0aW9uLT5vcGNvZGUpOw0KPiA+ICsN Cj4gPiArICAgICAgICAgICAgICAgcHRyID0gcnRsX2lvdl9wdWxsX2RhdGEoJmlvdiwgc2VjdGlv bl9sZW4pOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoIXB0cikNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIHN3aXRjaCAob3Bj b2RlKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGNhc2UgUlRMX1BBVENIX1NOSVBQRVRTOg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHJjID0gYnRydGxfcGFyc2Vfc2VjdGlvbihoZGV2LCBi dHJ0bF9kZXYsDQo+IG9wY29kZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHRyLA0KPiBzZWN0aW9uX2xlbik7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgIGNhc2UgUlRMX1BBVENIX1NF Q1VSSVRZX0hFQURFUjoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAvKiBJZiBrZXlfaWQg ZnJvbSBjaGlwIGlzIHplcm8sIGlnbm9yZSBhbGwNCj4gc2VjdXJpdHkNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgKiBoZWFkZXJzLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAq Lw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICgha2V5X2lkKQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgcmMgPSBidHJ0bF9wYXJzZV9zZWN0aW9uKGhkZXYsIGJ0cnRsX2RldiwNCj4gb3Bjb2RlLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHIs DQo+IHNlY3Rpb25fbGVuKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4g PiArICAgICAgICAgICAgICAgY2FzZSBSVExfUEFUQ0hfRFVNTVlfSEVBREVSOg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJjID0gYnRydGxfcGFyc2Vfc2VjdGlvbihoZGV2LCBidHJ0bF9k ZXYsDQo+IG9wY29kZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHRyLA0KPiBzZWN0aW9uX2xlbik7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmMgPSAwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr Ow0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyYyA8IDAp IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBydGxfZGV2X2VycihoZGV2LCAiUlRMOiBQ YXJzZSBzZWN0aW9uICgldSkgZXJyDQo+ICVkIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvcGNvZGUsIHJjKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcmM7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgICAgbGVu ICs9IHJjOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGlmICghbGVuKQ0KPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT0RBVEE7DQo+ID4gKw0KPiA+ICsgICAgICAgLyog QWxsb2NhdGUgbWVtIGFuZCBjb3B5IGFsbCBmb3VuZCBzdWJzZWNzLiAqLw0KPiA+ICsgICAgICAg cHRyID0ga3ZtYWxsb2MobGVuLCBHRlBfS0VSTkVMKTsNCj4gPiArICAgICAgIGlmICghcHRyKQ0K PiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKyAgICAgICBs ZW4gPSAwOw0KPiA+ICsgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudHJ5LCB0bXAs ICZidHJ0bF9kZXYtPnBhdGNoX3N1YnNlY3MsDQo+IGxpc3QpIHsNCj4gPiArICAgICAgICAgICAg ICAgcnRsX2Rldl9kYmcoaGRldiwgIlJUTDogb3Bjb2RlICUwOHgsIGFkZHIgJXAsIGxlbg0KPiAw eCV4IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm9wY29kZSwgZW50 cnktPmRhdGEsIGVudHJ5LT5sZW4pOw0KPiA+ICsgICAgICAgICAgICAgICBtZW1jcHkocHRyICsg bGVuLCBlbnRyeS0+ZGF0YSwgZW50cnktPmxlbik7DQo+ID4gKyAgICAgICAgICAgICAgIGxlbiAr PSBlbnRyeS0+bGVuOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGJ0X2Rldl9p bmZvKGhkZXYsICJSVEw6IFBhdGNoIChsZW4gJWQpIGZvdW5kIiwgbGVuKTsNCj4gDQo+IFRoaXMg aXNuJ3QgdmVyeSBpbmZvcm1hdGl2ZSwgdXN1YWxseSB3ZSBleHBlY3QgdGhlIGZpcm13YXJlDQo+ IGZpbGVuYW1lL3ZlcnNpb24vcmV2aXNpb24vZXRjIHRvIGJlIHByaW50ZWQsIGp1c3QgaGF2aW5n IHRoZSBsZW5ndGggaXMgbm90IGdvaW5nDQo+IHRvIGJlIHZlcnkgdXNlZnVsIGlmIHRoZSB1c2Vy IGlzIHRyeWluZyB0byByZXBvcnQgYSBidWcgb3Igc29tZXRoaW5nLCBzbyBJDQo+IHJlY29tbWVu ZCBlaXRoZXIgcmVtb3ZpbmcgdGhpcyBvciB1c2UgYnRfZGV2X2RiZyBhbmQgY29udmVydCB0aGUN Cj4gYnRfZGV2X2RiZyBpbnRvIGJ0X2Rldl9pbmZvIHdoZXJlIHlvdSBwcmludCB0aGUgZncgaW5m b3JtYXRpb24uDQo+IA0KPiA+ICsNCj4gPiArICAgICAgIGlmICghbGVuKQ0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gLUVQRVJNOw0KPiA+ICsNCj4gPiArICAgICAgICpfYnVmID0gcHRyOw0K PiA+ICsgICAgICAgcmV0dXJuIGxlbjsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIGludCBy dGxidF9wYXJzZV9maXJtd2FyZShzdHJ1Y3QgaGNpX2RldiAqaGRldiwNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidHJ0bF9kZXZpY2VfaW5mbyAqYnRydGxfZGV2 LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKl9i dWYpIEBAIC0zNzcsNw0KPiA+ICs2MTEsMTggQEAgc3RhdGljIGludCBydGxidF9wYXJzZV9maXJt d2FyZShzdHJ1Y3QgaGNpX2RldiAqaGRldiwNCj4gPiAgICAgICAgICAgICAgICAgeyBSVExfUk9N X0xNUF84ODUyQSwgMjUgfSwgICAgICAvKiA4ODUyQyAqLw0KPiA+ICAgICAgICAgfTsNCj4gPg0K PiA+IC0gICAgICAgbWluX3NpemUgPSBzaXplb2Yoc3RydWN0IHJ0bF9lcGF0Y2hfaGVhZGVyKSAr IHNpemVvZihleHRlbnNpb25fc2lnKQ0KPiArIDM7DQo+ID4gKyAgICAgICBpZiAoYnRydGxfZGV2 LT5md19sZW4gPD0gOCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4g Kw0KPiA+ICsgICAgICAgaWYgKCFtZW1jbXAoYnRydGxfZGV2LT5md19kYXRhLCBSVExfRVBBVENI X1NJR05BVFVSRSwgOCkpDQo+ID4gKyAgICAgICAgICAgICAgIG1pbl9zaXplID0gc2l6ZW9mKHN0 cnVjdCBydGxfZXBhdGNoX2hlYWRlcikgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mKGV4dGVuc2lvbl9zaWcpICsgMzsNCj4gPiArICAgICAgIGVsc2UgaWYgKCFt ZW1jbXAoYnRydGxfZGV2LT5md19kYXRhLA0KPiBSVExfRVBBVENIX1NJR05BVFVSRV9WMiwgOCkp DQo+ID4gKyAgICAgICAgICAgICAgIG1pbl9zaXplID0gc2l6ZW9mKHN0cnVjdCBydGxfZXBhdGNo X2hlYWRlcl92MikgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m KGV4dGVuc2lvbl9zaWcpICsgMzsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICAgICAgICAgaWYgKGJ0cnRsX2Rldi0+Zndf bGVuIDwgbWluX3NpemUpDQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ DQo+ID4gQEAgLTQ0MiwxMiArNjg3LDE0IEBAIHN0YXRpYyBpbnQgcnRsYnRfcGFyc2VfZmlybXdh cmUoc3RydWN0IGhjaV9kZXYNCj4gKmhkZXYsDQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gLSAgICAgICBlcGF0Y2hfaW5mbyA9IChz dHJ1Y3QgcnRsX2VwYXRjaF9oZWFkZXIgKilidHJ0bF9kZXYtPmZ3X2RhdGE7DQo+ID4gLSAgICAg ICBpZiAobWVtY21wKGVwYXRjaF9pbmZvLT5zaWduYXR1cmUsIFJUTF9FUEFUQ0hfU0lHTkFUVVJF LA0KPiA4KSAhPSAwKSB7DQo+ID4gKyAgICAgICBpZiAobWVtY21wKGJ0cnRsX2Rldi0+ZndfZGF0 YSwgUlRMX0VQQVRDSF9TSUdOQVRVUkUsIDgpICE9IDApDQo+IHsNCj4gPiArICAgICAgICAgICAg ICAgaWYgKCFtZW1jbXAoYnRydGxfZGV2LT5md19kYXRhLA0KPiBSVExfRVBBVENIX1NJR05BVFVS RV9WMiwgOCkpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ0bGJ0X3BhcnNl X2Zpcm13YXJlX3YyKGhkZXYsDQo+ID4gKyBidHJ0bF9kZXYsIF9idWYpOw0KPiA+ICAgICAgICAg ICAgICAgICBydGxfZGV2X2VycihoZGV2LCAiYmFkIEVQQVRDSCBzaWduYXR1cmUiKTsNCj4gPiAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAr ICAgICAgIGVwYXRjaF9pbmZvID0gKHN0cnVjdCBydGxfZXBhdGNoX2hlYWRlciAqKWJ0cnRsX2Rl di0+ZndfZGF0YTsNCj4gPiAgICAgICAgIG51bV9wYXRjaGVzID0gbGUxNl90b19jcHUoZXBhdGNo X2luZm8tPm51bV9wYXRjaGVzKTsNCj4gPiAgICAgICAgIEJUX0RCRygiZndfdmVyc2lvbj0leCwg bnVtX3BhdGNoZXM9JWQiLA0KPiA+ICAgICAgICAgICAgICAgIGxlMzJfdG9fY3B1KGVwYXRjaF9p bmZvLT5md192ZXJzaW9uKSwgbnVtX3BhdGNoZXMpOw0KPiBAQA0KPiA+IC01MTEsNiArNzU4LDcg QEAgc3RhdGljIGludCBydGxfZG93bmxvYWRfZmlybXdhcmUoc3RydWN0IGhjaV9kZXYgKmhkZXYs DQo+ID4gICAgICAgICBpbnQgZnJhZ19sZW4gPSBSVExfRlJBR19MRU47DQo+ID4gICAgICAgICBp bnQgcmV0ID0gMDsNCj4gPiAgICAgICAgIGludCBpOw0KPiA+ICsgICAgICAgaW50IGogPSAwOw0K PiA+ICAgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYjsNCj4gPiAgICAgICAgIHN0cnVjdCBoY2lf cnBfcmVhZF9sb2NhbF92ZXJzaW9uICpycDsNCj4gPg0KPiA+IEBAIC01MjEsMTcgKzc2OSwxNiBA QCBzdGF0aWMgaW50IHJ0bF9kb3dubG9hZF9maXJtd2FyZShzdHJ1Y3QgaGNpX2Rldg0KPiAqaGRl diwNCj4gPiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmcmFnX251bTsgaSsrKSB7DQo+ID4gICAg ICAgICAgICAgICAgIHN0cnVjdCBza19idWZmICpza2I7DQo+ID4NCj4gPiAtICAgICAgICAgICAg ICAgQlRfREJHKCJkb3dubG9hZCBmdyAoJWQvJWQpIiwgaSwgZnJhZ19udW0pOw0KPiA+IC0NCj4g PiAtICAgICAgICAgICAgICAgaWYgKGkgPiAweDdmKQ0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgIGRsX2NtZC0+aW5kZXggPSAoaSAmIDB4N2YpICsgMTsNCj4gPiAtICAgICAgICAgICAgICAg ZWxzZQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGRsX2NtZC0+aW5kZXggPSBpOw0KPiA+ ICsgICAgICAgICAgICAgICBkbF9jbWQtPmluZGV4ID0gaisrOw0KPiA+ICsgICAgICAgICAgICAg ICBpZiAoZGxfY21kLT5pbmRleCA9PSAweDdmKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGogPSAxOw0KPiA+DQo+ID4gICAgICAgICAgICAgICAgIGlmIChpID09IChmcmFnX251bSAtIDEp KSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZGxfY21kLT5pbmRleCB8PSAweDgwOyAv KiBkYXRhIGVuZCAqLw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdfbGVuID0gZndf bGVuICUgUlRMX0ZSQUdfTEVOOw0KPiA+ICAgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAg ICAgICAgIHJ0bF9kZXZfZGJnKGhkZXYsICJkb3dubG9hZCBmdyAoJWQvJWQpLiBpbmRleCA9ICVk IiwgaSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdfbnVtLCBkbF9j bWQtPmluZGV4KTsNCj4gPiAgICAgICAgICAgICAgICAgbWVtY3B5KGRsX2NtZC0+ZGF0YSwgZGF0 YSwgZnJhZ19sZW4pOw0KPiA+DQo+ID4gICAgICAgICAgICAgICAgIC8qIFNlbmQgZG93bmxvYWQg Y29tbWFuZCAqLyBAQCAtNjkxLDggKzkzOCwxNiBAQA0KPiA+IHN0YXRpYyBpbnQgcnRsX3JlYWRf Y2hpcF90eXBlKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCB1OCAqdHlwZSkNCj4gPg0KPiA+ICB2b2lk IGJ0cnRsX2ZyZWUoc3RydWN0IGJ0cnRsX2RldmljZV9pbmZvICpidHJ0bF9kZXYpICB7DQo+ID4g KyAgICAgICBzdHJ1Y3QgcnRsX3N1YnNlY3Rpb24gKmVudHJ5LCAqdG1wOw0KPiA+ICsNCj4gPiAg ICAgICAgIGt2ZnJlZShidHJ0bF9kZXYtPmZ3X2RhdGEpOw0KPiA+ICAgICAgICAga3ZmcmVlKGJ0 cnRsX2Rldi0+Y2ZnX2RhdGEpOw0KPiA+ICsNCj4gPiArICAgICAgIGxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShlbnRyeSwgdG1wLCAmYnRydGxfZGV2LT5wYXRjaF9zdWJzZWNzLA0KPiBsaXN0KSB7 DQo+ID4gKyAgICAgICAgICAgICAgIGxpc3RfZGVsKCZlbnRyeS0+bGlzdCk7DQo+ID4gKyAgICAg ICAgICAgICAgIGtmcmVlKGVudHJ5KTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gICAgICAg ICBrZnJlZShidHJ0bF9kZXYpOw0KPiA+ICB9DQo+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKGJ0cnRs X2ZyZWUpOw0KPiA+IEBAIC03MDUsMTAgKzk2MCwxMSBAQCBzdHJ1Y3QgYnRydGxfZGV2aWNlX2lu Zm8gKmJ0cnRsX2luaXRpYWxpemUoc3RydWN0DQo+IGhjaV9kZXYgKmhkZXYsDQo+ID4gICAgICAg ICBzdHJ1Y3QgaGNpX3JwX3JlYWRfbG9jYWxfdmVyc2lvbiAqcmVzcDsNCj4gPiAgICAgICAgIGNo YXIgY2ZnX25hbWVbNDBdOw0KPiA+ICAgICAgICAgdTE2IGhjaV9yZXYsIGxtcF9zdWJ2ZXI7DQo+ ID4gLSAgICAgICB1OCBoY2lfdmVyLCBjaGlwX3R5cGUgPSAwOw0KPiA+ICsgICAgICAgdTggaGNp X3ZlciwgbG1wX3ZlciwgY2hpcF90eXBlID0gMDsNCj4gPiAgICAgICAgIGludCByZXQ7DQo+ID4g ICAgICAgICB1MTYgb3Bjb2RlOw0KPiA+ICAgICAgICAgdTggY21kWzJdOw0KPiA+ICsgICAgICAg dTggcmVnX3ZhbFsyXTsNCj4gPg0KPiA+ICAgICAgICAgYnRydGxfZGV2ID0ga3phbGxvYyhzaXpl b2YoKmJ0cnRsX2RldiksIEdGUF9LRVJORUwpOw0KPiA+ICAgICAgICAgaWYgKCFidHJ0bF9kZXYp IHsNCj4gPiBAQCAtNzE2LDYgKzk3MiwzMSBAQCBzdHJ1Y3QgYnRydGxfZGV2aWNlX2luZm8gKmJ0 cnRsX2luaXRpYWxpemUoc3RydWN0DQo+IGhjaV9kZXYgKmhkZXYsDQo+ID4gICAgICAgICAgICAg ICAgIGdvdG8gZXJyX2FsbG9jOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gKyAgICAgICBJTklU X0xJU1RfSEVBRCgmYnRydGxfZGV2LT5wYXRjaF9zdWJzZWNzKTsNCj4gPiArDQo+ID4gK2NoZWNr X3ZlcnNpb246DQo+ID4gKyAgICAgICByZXQgPSBidHJ0bF92ZW5kb3JfcmVhZF9yZWcxNihoZGV2 LCBSVExfQ0hJUF9TVUJWRVIsIHJlZ192YWwpOw0KPiA+ICsgICAgICAgaWYgKHJldCA8IDApDQo+ ID4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWU7DQo+ID4gKyAgICAgICBsbXBfc3VidmVy ID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHJlZ192YWwpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChs bXBfc3VidmVyID09IFJUTF9ST01fTE1QXzg4MjJCKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJl dCA9IGJ0cnRsX3ZlbmRvcl9yZWFkX3JlZzE2KGhkZXYsIFJUTF9DSElQX1JFViwNCj4gcmVnX3Zh bCk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGdvdG8gZXJyX2ZyZWU7DQo+ID4gKyAgICAgICAgICAgICAgIGhjaV9yZXYgPSBn ZXRfdW5hbGlnbmVkX2xlMTYocmVnX3ZhbCk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAv KiA4ODIyRSAqLw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoaGNpX3JldiA9PSAweDAwMGUpIHsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBoY2lfdmVyID0gMHgwYzsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBsbXBfdmVyID0gMHgwYzsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBidHJ0bF9kZXYtPmljX2luZm8gPSBidHJ0bF9tYXRjaF9pYyhsbXBfc3VidmVyLA0KPiBo Y2lfcmV2LA0KPiA+ICsNCj4gaGNpX3ZlciwgaGRldi0+YnVzLA0KPiA+ICsNCj4gY2hpcF90eXBl KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHQ7DQo+ID4gKyAgICAgICAg ICAgICAgIH0NCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gICAgICAgICBza2IgPSBidHJ0bF9y ZWFkX2xvY2FsX3ZlcnNpb24oaGRldik7DQo+ID4gICAgICAgICBpZiAoSVNfRVJSKHNrYikpIHsN Cj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihza2IpOw0KPiA+IEBAIC03MjMsMTQg KzEwMDQsMTQgQEAgc3RydWN0IGJ0cnRsX2RldmljZV9pbmZvICpidHJ0bF9pbml0aWFsaXplKHN0 cnVjdA0KPiBoY2lfZGV2ICpoZGV2LA0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICBy ZXNwID0gKHN0cnVjdCBoY2lfcnBfcmVhZF9sb2NhbF92ZXJzaW9uICopc2tiLT5kYXRhOw0KPiA+ IC0gICAgICAgcnRsX2Rldl9pbmZvKGhkZXYsICJleGFtaW5pbmcgaGNpX3Zlcj0lMDJ4IGhjaV9y ZXY9JTA0eA0KPiBsbXBfdmVyPSUwMnggbG1wX3N1YnZlcj0lMDR4IiwNCj4gPiAtICAgICAgICAg ICAgICAgICAgICByZXNwLT5oY2lfdmVyLCByZXNwLT5oY2lfcmV2LA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgIHJlc3AtPmxtcF92ZXIsIHJlc3AtPmxtcF9zdWJ2ZXIpOw0KPiA+DQo+ID4gLSAg ICAgICBoY2lfdmVyID0gcmVzcC0+aGNpX3ZlcjsNCj4gPiAtICAgICAgIGhjaV9yZXYgPSBsZTE2 X3RvX2NwdShyZXNwLT5oY2lfcmV2KTsNCj4gPiArICAgICAgIGhjaV92ZXIgICAgPSByZXNwLT5o Y2lfdmVyOw0KPiA+ICsgICAgICAgaGNpX3JldiAgICA9IGxlMTZfdG9fY3B1KHJlc3AtPmhjaV9y ZXYpOw0KPiA+ICsgICAgICAgbG1wX3ZlciAgICA9IHJlc3AtPmxtcF92ZXI7DQo+ID4gICAgICAg ICBsbXBfc3VidmVyID0gbGUxNl90b19jcHUocmVzcC0+bG1wX3N1YnZlcik7DQo+ID4NCj4gPiAr ICAgICAgIGtmcmVlX3NrYihza2IpOw0KPiA+ICsNCj4gPiAgICAgICAgIGlmIChydGxfaGFzX2No aXBfdHlwZShsbXBfc3VidmVyKSkgew0KPiA+ICAgICAgICAgICAgICAgICByZXQgPSBydGxfcmVh ZF9jaGlwX3R5cGUoaGRldiwgJmNoaXBfdHlwZSk7DQo+ID4gICAgICAgICAgICAgICAgIGlmIChy ZXQpDQo+ID4gQEAgLTc0MCw4ICsxMDIxLDE1IEBAIHN0cnVjdCBidHJ0bF9kZXZpY2VfaW5mbyAq YnRydGxfaW5pdGlhbGl6ZShzdHJ1Y3QNCj4gaGNpX2RldiAqaGRldiwNCj4gPiAgICAgICAgIGJ0 cnRsX2Rldi0+aWNfaW5mbyA9IGJ0cnRsX21hdGNoX2ljKGxtcF9zdWJ2ZXIsIGhjaV9yZXYsIGhj aV92ZXIsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo ZGV2LT5idXMsDQo+IGNoaXBfdHlwZSk7DQo+ID4NCj4gPiAtICAgICAgIGlmICghYnRydGxfZGV2 LT5pY19pbmZvKQ0KPiA+ICtuZXh0Og0KPiA+ICsgICAgICAgcnRsX2Rldl9pbmZvKGhkZXYsICJl eGFtaW5pbmcgaGNpX3Zlcj0lMDJ4IGhjaV9yZXY9JTA0eA0KPiBsbXBfdmVyPSUwMnggbG1wX3N1 YnZlcj0lMDR4IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICBoY2lfdmVyLCBoY2lfcmV2LA0K PiA+ICsgICAgICAgICAgICAgICAgICAgIGxtcF92ZXIsIGxtcF9zdWJ2ZXIpOw0KPiA+ICsNCj4g PiArICAgICAgIGlmICghYnRydGxfZGV2LT5pY19pbmZvICYmICFidHJ0bF9kZXYtPmRyb3BfZncp DQo+ID4gICAgICAgICAgICAgICAgIGJ0cnRsX2Rldi0+ZHJvcF9mdyA9IHRydWU7DQo+ID4gKyAg ICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgIGJ0cnRsX2Rldi0+ZHJvcF9mdyA9IGZhbHNl Ow0KPiA+DQo+ID4gICAgICAgICBpZiAoYnRydGxfZGV2LT5kcm9wX2Z3KSB7DQo+ID4gICAgICAg ICAgICAgICAgIG9wY29kZSA9IGhjaV9vcGNvZGVfcGFjaygweDNmLCAweDY2KTsgQEAgLTc1MCw0 MQ0KPiA+ICsxMDM4LDI1IEBAIHN0cnVjdCBidHJ0bF9kZXZpY2VfaW5mbyAqYnRydGxfaW5pdGlh bGl6ZShzdHJ1Y3QgaGNpX2Rldg0KPiA+ICpoZGV2LA0KPiA+DQo+ID4gICAgICAgICAgICAgICAg IHNrYiA9IGJ0X3NrYl9hbGxvYyhzaXplb2YoY21kKSwgR0ZQX0tFUk5FTCk7DQo+ID4gICAgICAg ICAgICAgICAgIGlmICghc2tiKQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0 X2ZyZWU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfZnJlZTsNCj4gPg0K PiA+ICAgICAgICAgICAgICAgICBza2JfcHV0X2RhdGEoc2tiLCBjbWQsIHNpemVvZihjbWQpKTsN Cj4gPiAgICAgICAgICAgICAgICAgaGNpX3NrYl9wa3RfdHlwZShza2IpID0gSENJX0NPTU1BTkRf UEtUOw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgIGhkZXYtPnNlbmQoaGRldiwgc2tiKTsNCj4g PiArICAgICAgICAgICAgICAgcmV0ID0gaGRldi0+c2VuZChoZGV2LCBza2IpOw0KPiA+ICsgICAg ICAgICAgICAgICBpZiAocmV0IDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJ0 X2Rldl9lcnIoaGRldiwgInNlbmRpbmcgZnJhbWUgZmFpbGVkICglZCkiLA0KPiByZXQpOw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWU7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPg0K PiA+ICAgICAgICAgICAgICAgICAvKiBFbnN1cmUgdGhlIGFib3ZlIHZlbmRvciBjb21tYW5kIGlz IHNlbnQgdG8NCj4gY29udHJvbGxlciBhbmQNCj4gPiAgICAgICAgICAgICAgICAgICogcHJvY2Vz cyBoYXMgZG9uZS4NCj4gPiAgICAgICAgICAgICAgICAgICovDQo+ID4gICAgICAgICAgICAgICAg IG1zbGVlcCgyMDApOw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgIC8qIFJlYWQgdGhlIGxvY2Fs IHZlcnNpb24gYWdhaW4uIEV4cGVjdCB0byBoYXZlIHRoZQ0KPiB2YW5pbGxhDQo+ID4gLSAgICAg ICAgICAgICAgICAqIHZlcnNpb24gYXMgY29sZCBib290Lg0KPiA+IC0gICAgICAgICAgICAgICAg Ki8NCj4gPiAtICAgICAgICAgICAgICAgc2tiID0gYnRydGxfcmVhZF9sb2NhbF92ZXJzaW9uKGhk ZXYpOw0KPiA+IC0gICAgICAgICAgICAgICBpZiAoSVNfRVJSKHNrYikpIHsNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKHNrYik7DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgZ290byBlcnJfZnJlZTsNCj4gPiAtICAgICAgICAgICAgICAgfQ0KPiA+IC0NCj4g PiAtICAgICAgICAgICAgICAgcmVzcCA9IChzdHJ1Y3QgaGNpX3JwX3JlYWRfbG9jYWxfdmVyc2lv biAqKXNrYi0+ZGF0YTsNCj4gPiAtICAgICAgICAgICAgICAgcnRsX2Rldl9pbmZvKGhkZXYsICJl eGFtaW5pbmcgaGNpX3Zlcj0lMDJ4DQo+IGhjaV9yZXY9JTA0eCBsbXBfdmVyPSUwMnggbG1wX3N1 YnZlcj0lMDR4IiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AtPmhjaV92 ZXIsIHJlc3AtPmhjaV9yZXYsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNw LT5sbXBfdmVyLCByZXNwLT5sbXBfc3VidmVyKTsNCj4gPiAtDQo+ID4gLSAgICAgICAgICAgICAg IGhjaV92ZXIgPSByZXNwLT5oY2lfdmVyOw0KPiA+IC0gICAgICAgICAgICAgICBoY2lfcmV2ID0g bGUxNl90b19jcHUocmVzcC0+aGNpX3Jldik7DQo+ID4gLSAgICAgICAgICAgICAgIGxtcF9zdWJ2 ZXIgPSBsZTE2X3RvX2NwdShyZXNwLT5sbXBfc3VidmVyKTsNCj4gPiAtDQo+ID4gLSAgICAgICAg ICAgICAgIGJ0cnRsX2Rldi0+aWNfaW5mbyA9IGJ0cnRsX21hdGNoX2ljKGxtcF9zdWJ2ZXIsIGhj aV9yZXYsDQo+IGhjaV92ZXIsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhkZXYtPmJ1cywNCj4gY2hpcF90eXBlKTsNCj4gPiArICAgICAg ICAgICAgICAgZ290byBjaGVja192ZXJzaW9uOw0KPiA+ICAgICAgICAgfQ0KPiA+IC1vdXRfZnJl ZToNCj4gPiAtICAgICAgIGtmcmVlX3NrYihza2IpOw0KPiA+DQo+ID4gICAgICAgICBpZiAoIWJ0 cnRsX2Rldi0+aWNfaW5mbykgew0KPiA+ICAgICAgICAgICAgICAgICBydGxfZGV2X2luZm8oaGRl diwgInVua25vd24gSUMgaW5mbywgbG1wIHN1YnZlciAlMDR4LA0KPiA+IGhjaSByZXYgJTA0eCwg aGNpIHZlciAlMDR4IiwgZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cnRsLmgNCj4g PiBiL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cnRsLmggaW5kZXggMzQ5ZDcyZWU1NzFiLi5hZGI0YzJj OWFiYzUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYnRydGwuaA0KPiA+ICsr KyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2J0cnRsLmgNCj4gPiBAQCAtNDksNyArNDksNTggQEAgc3Ry dWN0IHJ0bF92ZW5kb3JfY29uZmlnX2VudHJ5IHsgIHN0cnVjdA0KPiA+IHJ0bF92ZW5kb3JfY29u ZmlnIHsNCj4gPiAgICAgICAgIF9fbGUzMiBzaWduYXR1cmU7DQo+ID4gICAgICAgICBfX2xlMTYg dG90YWxfbGVuOw0KPiA+IC0gICAgICAgc3RydWN0IHJ0bF92ZW5kb3JfY29uZmlnX2VudHJ5IGVu dHJ5W107DQo+ID4gKyAgICAgICBfX3U4IGVudHJ5W107DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4g Kw0KPiA+ICtzdHJ1Y3QgcnRsX2VwYXRjaF9oZWFkZXJfdjIgew0KPiA+ICsgICAgICAgX191OCAg IHNpZ25hdHVyZVs4XTsNCj4gPiArICAgICAgIF9fdTggICBmd192ZXJzaW9uWzhdOw0KPiA+ICsg ICAgICAgX19sZTMyIG51bV9zZWN0aW9uczsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4g K3N0cnVjdCBydGxfc2VjdGlvbiB7DQo+ID4gKyAgICAgICBfX2xlMzIgb3Bjb2RlOw0KPiA+ICsg ICAgICAgX19sZTMyIGxlbjsNCj4gPiArICAgICAgIHU4ICAgICBkYXRhW107DQo+ID4gK30gX19w YWNrZWQ7DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgcnRsX3NlY3Rpb25faGRyIHsNCj4gPiArICAgICAg IF9fbGUxNiBudW07DQo+ID4gKyAgICAgICBfX2xlMTYgcmVzZXJ2ZWQ7DQo+ID4gK30gX19wYWNr ZWQ7DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgcnRsX2NvbW1vbl9zdWJzZWMgew0KPiA+ICsgICAgICAg X191OCAgIGVjbzsNCj4gPiArICAgICAgIF9fdTggICBwcmlvOw0KPiA+ICsgICAgICAgX191OCAg IGNiWzJdOw0KPiA+ICsgICAgICAgX19sZTMyIGxlbjsNCj4gPiArICAgICAgIF9fdTggICBkYXRh W107DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgcnRsX3NlY19oZHIgew0KPiA+ICsgICAg ICAgX191OCAgIGVjbzsNCj4gPiArICAgICAgIF9fdTggICBwcmlvOw0KPiA+ICsgICAgICAgX191 OCAgIGtleV9pZDsNCj4gPiArICAgICAgIF9fdTggICByZXNlcnZlZDsNCj4gPiArICAgICAgIF9f bGUzMiBsZW47DQo+ID4gKyAgICAgICBfX3U4ICAgZGF0YVtdOw0KPiA+ICt9IF9fcGFja2VkOw0K PiA+ICsNCj4gPiArc3RydWN0IHJ0bF9zdWJzZWN0aW9uIHsNCj4gPiArICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgbGlzdDsNCj4gPiArICAgICAgIHUzMiBvcGNvZGU7DQo+ID4gKyAgICAgICB1MzIg bGVuOw0KPiA+ICsgICAgICAgdTggcHJpbzsNCj4gPiArICAgICAgIHU4ICpkYXRhOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArc3RydWN0IHJ0bF9pb3ZlYyB7DQo+ID4gKyAgICAgICB1OCAgKmRhdGE7 DQo+ID4gKyAgICAgICB1MzIgbGVuOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IHJ0bF92 ZW5kb3JfY21kIHsNCj4gPiArICAgICAgIF9fdTggcGFyYW1bNV07DQo+ID4gIH0gX19wYWNrZWQ7 DQo+ID4NCj4gPiAgZW51bSB7DQo+ID4gLS0NCj4gPiAyLjM0LjENCj4gPg0KPiANCj4gDQo+IC0t DQo+IEx1aXogQXVndXN0byB2b24gRGVudHoNCj4gDQo+IC0tLS0tLVBsZWFzZSBjb25zaWRlciB0 aGUgZW52aXJvbm1lbnQgYmVmb3JlIHByaW50aW5nIHRoaXMgZS1tYWlsLg0KDQo=