Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2363729ybb; Sun, 12 Apr 2020 04:13:12 -0700 (PDT) X-Google-Smtp-Source: APiQypJn5tFsYJUEeiFCnQrwmoI6cIrhw11o2REB82hk3QOV+rkqxG0YMwPvJJHVn+X8FqWYcQNL X-Received: by 2002:a37:4b08:: with SMTP id y8mr11819472qka.494.1586689992261; Sun, 12 Apr 2020 04:13:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586689992; cv=none; d=google.com; s=arc-20160816; b=Fp8+3WfxuCpD9hL1jKQeH+6eJYrFWQFpdwRhXozNOH0xygqOAY+IxjrSrAhatbt5HH blVflXczJfzfZ4ih1MTBQVx8qItWwpPZLteXlJbenCJa8wd04ZrrsmSf1TyVI4DQ8MD0 xNBMXED/GFXINqR66hWZ8Z86NIAw37CtaFP89ZC7O+RB4xlbNn7NDX6ebVGgE/39dvLs SAHh4n2IOLuHkRO1Vvq4GeppvHv7/DvRSzKTEao9fecC3l51bez9DepyJ3oH/wEmgl8T I5QSUaxlsl1wNpzcGmsg4mu4LUE6xHZ6Omo5azTk4rZE4IgwrG0GreBJaF2zbvmbRUsp 89BA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:from:mime-version:in-reply-to :subject:cc:to:message-id:content-transfer-encoding; bh=mTLnKlRBoKXAk9AvHwmCYyBbUfVD8CD+3IrEl5Hv1M0=; b=zYbKbji89vyhLU3SGfDkaerSZKAvxEA10BCJbDHZ8hF4IPLTlnHebPaOxCumbAxs5a 9X5S1mQl6obKvNKRKTVTNfm4l7ArDiFjTR7dTWFxEj9S8qymXYS1AWOREb01QcaxYuSi D4hfH8yjHKKv1US/QpPpYc1CDqUC8YrFHSAyl6QrmMDRGTGNRjqeezUajFI8mvir6FN7 VprSVcFAv4ArFOBHPTElUdQWMW56rvfS2U0Jl2B0jCt+/knO1tjw+PYrrIuyH2pfu6Qo LJAf253pa5slQD+ehDCA92gBCfzSwlY3Sr/RrPdxsgvISjwFTXOCfi5Q6Lw7wD1oz6K9 5ogQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w23si4166235qtn.255.2020.04.12.04.12.55; Sun, 12 Apr 2020 04:13:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726934AbgDLLMH (ORCPT + 99 others); Sun, 12 Apr 2020 07:12:07 -0400 Received: from m176151.mail.qiye.163.com ([59.111.176.151]:45206 "EHLO m176151.mail.qiye.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725909AbgDLLMH (ORCPT ); Sun, 12 Apr 2020 07:12:07 -0400 Received: from vivo.com (wm-11.qy.internal [127.0.0.1]) by m176151.mail.qiye.163.com (Hmail) with ESMTP id 9B1094829A1; Sun, 12 Apr 2020 19:12:00 +0800 (CST) Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Message-ID: To: Randy Dunlap Cc: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org Subject: =?UTF-8?B?UmU6IFtQQVRDSCAzLzNdIGRyaXZlcjogcnBtb246IGFkZCBycG1vbl9xbWkgZHJpdmVy?= X-Priority: 3 X-Mailer: HMail Webmail Server V2.0 Copyright (c) 2016-163.com X-Originating-IP: 58.251.74.226 In-Reply-To: <4aea2dc0-3378-9da0-9123-115a5c3e9893@infradead.org> MIME-Version: 1.0 Received: from wenhu.wang@vivo.com( [58.251.74.226) ] by ajax-webmail ( [127.0.0.1] ) ; Sun, 12 Apr 2020 19:12:00 +0800 (GMT+08:00) From: =?UTF-8?B?546L5paH6JmO?= Date: Sun, 12 Apr 2020 19:12:00 +0800 (GMT+08:00) X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgYFAkeWUFZT1VMTUxCQkJNT0JLT0xDTllXWShZQU hPN1dZLVlBSVdZCQ4XHghZQVk1NCk2OjckKS43PlkG X-HM-Sender-Digest: e1kJHlYWEh9ZQUhMSkNPSklMTElLN1dZDB4ZWUEPCQ4eV1kSHx4VD1lB WUc6NxQ6TTo4LTg1OBQJSDAVGT40TQIaCQpVSFVKTkNNTUNCQklJTEpPVTMWGhIXVQweFRMOVQwa FRw7DRINFFUYFBZFWVdZEgtZQVlOQ1VJTkpVTE9VSUlNWVdZCAFZQUpJQklONwY+ X-HM-Tid: 0a716e16ce7c93b5kuws9b1094829a1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksCkZyb206IFJhbmR5IER1bmxhcCA8cmR1bmxhcEBpbmZyYWRlYWQub3JnPgpEYXRlOiAyMDIw LTA0LTEyIDAzOjIzOjAwClRvOiAgV2FuZyBXZW5odSA8d2VuaHUud2FuZ0B2aXZvLmNvbT4sZ3Jl Z2toQGxpbnV4Zm91bmRhdGlvbi5vcmcsbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwpTdWJq ZWN0OiBSZTogW1BBVENIIDMvM10gZHJpdmVyOiBycG1vbjogYWRkIHJwbW9uX3FtaSBkcml2ZXI+ SGktLQo+Cj5PbiA0LzExLzIwIDI6NTMgQU0sIFdhbmcgV2VuaHUgd3JvdGU6Cj4+IFJQTU9OX1FN SSBpcyB1c2VkIGJ5IFJQTU9OIHRvIGNvbW11bmljYXRlIHdpdGggcmVtb3RlIHByb2Nlc3NvcnMK Pj4gd2l0aCBRTUkgQVBJcyBpZiBlbmFibGVkLiBSUE1PTl9RTUkgaXRzZWxmIGlzIGRlc2lnbmVk IGFzIGEgbW9kdWxhcgo+PiBmcmFtZXdvcmsgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgZGlmZmVyZW50 IGtpbmRzIG9mIG1lc3NhZ2Ugc2V0cwo+PiB3aGljaCBtYXkgYmUgdXBkYXRlZCBmb3IgdmVyc2lv bnMuCj4+IAo+PiBSUE1PTl9RTUkgY3JlYXRlcyBhIGRldmljZSBvZiBycG1vbl9kZXZpY2UgdHlw ZSBmb3IgZWFjaCByZW1vdGUKPj4gcHJvY2Vzc29yIGVuZHBvaW50LiBBbGwgdGhlIGVuZHBvaW50 IGRldmljZXMgc2hhcmVzIGFuIHVuaXF1ZSBzZXQKPj4gb2YgUU1JIHN1aXRlLgo+PiAKPj4gU2ln bmVkLW9mZi1ieTogV2FuZyBXZW5odSA8d2VuaHUud2FuZ0B2aXZvLmNvbT4KPj4gLS0tCj4+ICBk cml2ZXJzL3JwbW9uL0tjb25maWcgICAgIHwgIDE1ICsrCj4+ICBkcml2ZXJzL3JwbW9uL01ha2Vm aWxlICAgIHwgICAxICsKPj4gIGRyaXZlcnMvcnBtb24vcnBtb25fcW1pLmMgfCA0MzQgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gIDMgZmlsZXMgY2hhbmdlZCwgNDUw IGluc2VydGlvbnMoKykKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3JwbW9uL3JwbW9u X3FtaS5jCj4+IAo+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3JwbW9uL3JwbW9uX3FtaS5jIGIv ZHJpdmVycy9ycG1vbi9ycG1vbl9xbWkuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRl eCAwMDAwMDAwMDAwMDAuLmFlNDk1MTBjYmI4Mwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2Ry aXZlcnMvcnBtb24vcnBtb25fcW1pLmMKPj4gQEAgLTAsMCArMSw0MzQgQEAKPj4gKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQg KEMpIDIwMjAgVml2byBDb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgQ28uIEx0ZC4KPj4gKyAqIENv cHlyaWdodCAoQykgMjAyMCBXYW5nIFdlbmh1IDx3ZW5odS53YW5nQHZpdm8uY29tPgo+PiArICog QWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4gKyAqCj4+ICsgKiBSUE1PTjogQW4gaW1wbGVtZW50YXRp b24gb2YgcmVtb3RlIHByb2Nlc3NvciBtb25pdG9yIGZyZWFtd29yawo+Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1ld29yawo+ CgpBZGRyZXNzZWQgaW4gdjIKCj4+ICsgKiBmb3IgcGxhdGZvcm1zIHRoYXQgbXVsdGktcHJvY2Vz c29ycyBleGlzdHMuIFJQTU9OIGlzIGltcGxlbWVudGVkCj4KPiAgICAgIGNvbmZ1c2luZyBzZW50 ZW5jZSBhYm92ZS4KPgoKQWRkcmVzc2VkIGluIHYyCgo+PiArICogd2l0aCBjaGFyZGV2IGFuZCBz eXNmcyBjbGFzcyBhcyBpbnRlcmZhY2VzIHRvIGNvbW11bmljYXRlIHdpdGgKPj4gKyAqIHRoZSB1 c2VyIGxldmVsLiBJdCBzdXBwb3J0cyBkaWZmZXJlbnQgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2Vz Cj4+ICsgKiBhZGRlZCBtb2R1bGFybHkgd2l0aCByZW1vdGUgcHJvY2Vzc29ycy4gQ3VycmVudGx5 IFFNSSBpbXBsZW1lbnRhdGlvbgo+PiArICogaXMgYXZhaWxhYmxlLgo+PiArICoKPj4gKyAqIFJQ TU9OIGNvdWxkIGJlIHVzZWQgdG8gZGV0ZWN0IHRoZSBzdGFiaWxpdGllcyBvZiByZW1vdGUgcHJv Y2Vzc29ycywKPj4gKyAqIGNvbGxlY3QgYW55IGtpbmRzIG9mIGluZm9ybWF0aW9uIHlvdSBhcmUg aW50ZXJlc3RlZCB3aXRoLCB0YWtlCj4KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ZXJlc3RlZCBpbiwgdGFrZQo+CgpBZGRyZXNzZWQgaW4gdjIKCj4+ ICsgKiBhY3Rpb25zIGxpa2UgY29ubmVjdGlvbiBzdGF0dXMgY2hlY2ssIGFuZCBzbyBvbi4gRW5o YW5jZW1lbnRzIGNhbgo+PiArICogYmUgbWFkZSB1cG9uIGN1cnJlbnQgaW1wbGVtZW50YXRpb24u Cj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiArI2luY2x1ZGUg PGxpbnV4L3JwbW9uLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvc29jL3Fjb20vcW1pLmg+Cj4+ICsj aW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KPj4gKyNpbmNsdWRlICJycG1vbl9xbWkuaCIK Pj4gKwo+PiArI2RlZmluZSBEUklWRVJfTkFNRSAicnBtb25fcW1pX2RydiIKPj4gKwo+PiArLyoK Pj4gKyAqIFJlbW90ZSBwcm9jZXNzb3IgcmVnaXN0ZXJlZC4KPj4gKyAqLwo+PiArI2RlZmluZSBS UF9SRUdJU1RFUkVECQkweDAwMDEKPj4gKwo+PiArLyoKPj4gKyAqIHdvcmsgc3RydWN0IGZvciBt ZXNzYWdlIHByb2Nlc3NpbmcuCj4+ICsgKi8KPj4gK3N0cnVjdCByZWN2X3dvcmsgewo+PiArCXN0 cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwo+PiArCXN0cnVjdCBzb2NrYWRkcl9xcnRyIHNxOwo+PiAr CXZvaWQgKm1zZzsKPj4gK307Cj4+ICsKPj4gKy8qCj4+ICsgKiBEZWxheWVkIHdvcmsgdG8gdGFr ZSBhIHJlc2V0IGFjdGlvbiB3aGVuIGEgZmFpbHVyZSBpcyBkZXRlY3RlZC4KPj4gKyAqLwo+PiAr c3RydWN0IGV4ZWNfY2Jfd29yayB7Cj4+ICsJc3RydWN0IGRlbGF5ZWRfd29yawkJZHdrOwo+PiAr CXN0cnVjdCBycG1vbl9xbWlfZGV2aWNlICpyZGV2Owo+PiArCXUzMgkJCWNoZWNrczsKPj4gK307 Cj4+ICsKPj4gK3N0cnVjdCBycG1vbl9xbWlfZXhlY19mbiB7Cj4+ICsJaW50ICgqZXhlY19jYWxs KShzdHJ1Y3QgcnBtb25fcW1pX2RldmljZSAqcmRldik7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3Qg cnBtb25fcW1pX2NiX2ZuIHsKPj4gKwl2b2lkICgqY2FsbGJhY2spKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yayk7Cj4+ICsJdTMyIG1zZ19sZW47Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgREVGSU5F X01VVEVYKHJkZXZfbGlzdF9sb2NrKTsKPj4gK3N0YXRpYyBMSVNUX0hFQUQocmRldl9saXN0KTsK Pj4gK3N0YXRpYyBzdHJ1Y3QgcnBtb25fcW1pICpycHFtaTsKPj4gK3N0YXRpYyBzdHJ1Y3Qgd29y a3F1ZXVlX3N0cnVjdCAqcnBxbWlfd3E7Cj4KPltzbmlwXQo+Cj4+ICsvKioKPj4gKyAqIHJwbW9u X3FtaV9leGVjX2NiX3dvcmtlciAtIGNhbGxiYWNrIHdvcmtlciBmb3IgZXhlY3V0aW9uCj4+ICsg KiBAd29yazogd29yayB0byBiZWVuIGRvbmUKPj4gKyAqCj4+ICsgKiBDYWxsZWQgYXMgd29ya2Vy IGhhbmRsZXIgYnkgdGhlIHNpZ25sZSB3b3JrZXIgdGhyZWFkIG9mIHJwbW9uX3dxLgo+Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZQo+CgpBZGRyZXNzZWQgaW4g djIKCj4+ICsgKiBUaGUgd29ya2VyIGlzIHNjaGVkdWxlZCBhZnRlciB0aW1lb3V0IG1zIGR1cmF0 aW9uIHNpbmNlIHRoZSBleGVjdXRpb24uCj4+ICsgKi8KPj4gK3N0YXRpYyB2b2lkIHJwbW9uX3Ft aV9leGVjX2NiX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4+ICt7Cj4+ICsJc3Ry dWN0IGRlbGF5ZWRfd29yayAqZHdrID0gdG9fZGVsYXllZF93b3JrKHdvcmspOwo+PiArCXN0cnVj dCBleGVjX2NiX3dvcmsgKmV3ayA9Cj4+ICsJCQljb250YWluZXJfb2YoZHdrLCBzdHJ1Y3QgZXhl Y19jYl93b3JrLCBkd2spOwo+PiArCXN0cnVjdCBycG1vbl9xbWlfZGV2aWNlICpyZGV2ID0gZXdr LT5yZGV2Owo+PiArCj4+ICsJbXV0ZXhfbG9jaygmcmRldl9saXN0X2xvY2spOwo+PiArCWlmIChl d2stPmNoZWNrcyA8PSBhdG9taWNfcmVhZCgmcmRldi0+cmVwb3J0cykpIHsKPj4gKwkJcHJfZGVi dWcoIiVzIGhlYWx0aCBjaGVjayBzdWNjZXNzIiwgcmRldi0+aW5mby0+bmFtZSk7Cj4+ICsJCWdv dG8gb3V0Owo+PiArCX0KPj4gKwo+PiArCXByX2Vycigic3Vic3lzdGVtICVzIGZhaWxlZCB0byBy ZXNwb25kIGluIHRpbWUiLCByZGV2LT5pbmZvLT5uYW1lKTsKPj4gKwo+PiArCXJwbW9uX2V2ZW50 X25vdGlmeShyZGV2LT5pbmZvLCBSUE1PTl9FVkVOVF9DSEtDT05OX0ZBSUwpOwo+PiArCj4+ICtv dXQ6Cj4+ICsJbXV0ZXhfdW5sb2NrKCZyZGV2X2xpc3RfbG9jayk7Cj4+ICsJa2ZyZWUoZXdrKTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHN0cnVjdCBycG1vbl9xbWlfY2JfZm4gcnBtb25fcW1pX2V2 ZW50X2NhbGxiYWNrc1tdID0gewo+PiArCXsKPj4gKwkJLmNhbGxiYWNrID0gcnBtb25fcW1pX3Jl Z2lzdGVyX3JlcV9jYiwKPj4gKwkJLm1zZ19sZW4gPSBzaXplb2Yoc3RydWN0IHJwbW9uX3JlZ2lz dGVyX3JlcSksCj4+ICsJfSwKPj4gKwl7Cj4+ICsJCS5jYWxsYmFjayA9IHJwbW9uX3FtaV9jb25u X2NoZWNrX3Jlc3BfY2IsCj4+ICsJCS5tc2dfbGVuID0gc2l6ZW9mKHN0cnVjdCBycG1vbl9jb25u X2NoZWNrX3Jlc3ApLAo+PiArCX0sCj4+ICt9Owo+PiArCj4+ICsvKioKPj4gKyAqIHJwbW9uX3Ft aV9jb25uX2NoZWNrIC0gc2VuZCBpbmRpY2F0aW9uLCBpbml0aWF0ZSBhbmQgcXVldWUgY2FsbGJh Y2sgd29yawo+PiArICogQHJkZXY6IGRldmljZSBpbnRlcmZhY2Ugb2Ygc3BlY2lmaWMgcmVtb3Rl IHByb2Nlc3NvciB0byBiZSBjaGVja2VkCj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQgcnBtb25fcW1p X2Nvbm5fY2hlY2soc3RydWN0IHJwbW9uX3FtaV9kZXZpY2UgKnJkZXYpCj4+ICt7Cj4+ICsJc3Ry dWN0IGV4ZWNfY2Jfd29yayAqZXdrOwo+PiArCj4+ICsJbXV0ZXhfbG9jaygmcmRldl9saXN0X2xv Y2spOwo+PiArCWlmICghKHJkZXYtPmZsYWcgJiBSUF9SRUdJU1RFUkVEKSkgewo+PiArCQlwcl9l cnIoIiVzIGhhcyBub3QgcmVnaXN0ZXJlZCIsIHJkZXYtPmluZm8tPm5hbWUpOwo+PiArCQlyZXR1 cm4gLUVOT0FOTzsKPgo+V2h5IEVOT0FOTz8KPgpNeSBmYXVsdCwgc2hvdWxkIGJlIEVOT05FVCBj YXVzZSB0aGUgcmVtb3RlIGVuZHBvaW50IGhhcyBub3QgcmVnaXN0ZXJlZCwKbWVhbmluZyAiTWFj aGluZSBpcyBub3Qgb24gdGhlIG5ldHdvcmsiLgoKQWRkcmVzc2VkIGluIHYyCgo+PiArCX0KPj4g Kwo+PiArCWlmICghX19yYXRlbGltaXQoJnJkZXYtPnJhdGVsaW1pdCkpIHsKPj4gKwkJcHJfZXJy KCIlcyByYXRlLWxpbWl0ZWQiLCByZGV2LT5pbmZvLT5uYW1lKTsKPj4gKwkJcmV0dXJuIDA7Cj4+ ICsJfQo+PiArCW11dGV4X3VubG9jaygmcmRldl9saXN0X2xvY2spOwo+PiArCj4+ICsJcmRldi0+ cnFtaS0+c2VuZG1zZyhyZGV2LCBOVUxMLCAwKTsKPj4gKwo+PiArCWV3ayA9IGt6YWxsb2Moc2l6 ZW9mKCpld2spLCBHRlBfS0VSTkVMKTsKPj4gKwlpZiAoIWV3aykKPj4gKwkJcmV0dXJuIC1FTk9B Tk87Cj4KPmRpdHRvLgoKTXkgZmF1bHQsIHNob3VsZCBiZSBFTk9NRU07CkFkZHJlc3NlZCBpbiB2 MgoKPgo+PiArCWV3ay0+cmRldiA9IHJkZXY7Cj4+ICsJZXdrLT5jaGVja3MgPSBhdG9taWNfaW5j X3JldHVybigmcmRldi0+Y2hlY2tzKTsKPj4gKwlJTklUX0RFTEFZRURfV09SSygmZXdrLT5kd2ss IHJwbW9uX3FtaV9leGVjX2NiX3dvcmtlcik7Cj4+ICsJcXVldWVfZGVsYXllZF93b3JrKHJwcW1p X3dxLAo+PiArCQkJICAgJmV3ay0+ZHdrLCBtc2Vjc190b19qaWZmaWVzKHJkZXYtPnRpbWVvdXQp KTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3RydWN0IHJwbW9u X3FtaV9leGVjX2ZuIHJwbW9uX3FtaV9leGVjX2NhbGxzW10gPSB7Cj4+ICsJey5leGVjX2NhbGwg PSBycG1vbl9xbWlfY29ubl9jaGVja30sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IHJwbW9u X3FtaV9tb25pdG9yKHN0cnVjdCBycG1vbl9pbmZvICppbmZvLCB1MzIgZXZlbnQpCj4+ICt7Cj4+ ICsJc3RydWN0IHJwbW9uX3FtaV9kZXZpY2UgKnJkZXYgPSAoc3RydWN0IHJwbW9uX3FtaV9kZXZp Y2UgKilpbmZvLT5wcml2Owo+PiArCWludCBpOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IFJQ TU9OX0VYRUNfTUFYOyBpKyspIHsKPj4gKwkJaWYgKGV2ZW50ICYgUlBNT05fQUNUSU9OKGkpKSB7 Cj4+ICsJCQlpZiAoaSA+PSAoc2l6ZW9mKHJwbW9uX3FtaV9leGVjX2NhbGxzKSAvCj4+ICsJCQkJ ICBzaXplb2Yoc3RydWN0IHJwbW9uX3FtaV9leGVjX2ZuKSkpCj4+ICsJCQkJcmV0dXJuIC1FTk9U U1VQUDsKPj4gKwo+Cj5JJ20gbm90IHRvdGFsbHkgdXAgYWJvdXQgc3BlY3VsYXRpdmUgZmV0Y2hl cywgYnV0IGlzIGFueSBvZgo+PGxpbnV4L25vc3BlYy5oPiBuZWVkZWQgaGVyZT8KPgoKU3VyZWx5 LCBhZGRyZXNzZWQgaW4gdjIKCj4+ICsJCQlpZiAocnBtb25fcW1pX2V4ZWNfY2FsbHNbaV0uZXhl Y19jYWxsKQo+PiArCQkJCXJldHVybiBycG1vbl9xbWlfZXhlY19jYWxsc1tpXS5leGVjX2NhbGwo cmRldik7Cj4+ICsJCQllbHNlCj4+ICsJCQkJcmV0dXJuIC1FTk9UU1VQUDsKPj4gKwkJfQo+PiAr CX0KPj4gKwo+PiArCXJldHVybiAtRUlOVkFMOwo+PiArfQo+Cj5bc25pcF0KPgo+PiArc3RhdGlj IHZvaWQgcnBtb25fcW1pX21zZ19jYWxsYmFjayhlbnVtIHJwbW9uX3FtaV9tc2dfdHlwZSB0eXBl LAo+PiArCQkJc3RydWN0IHNvY2thZGRyX3FydHIgKnNxLAo+PiArCQkJY29uc3Qgdm9pZCAqbXNn KQo+PiArewo+PiArCXN0cnVjdCByZWN2X3dvcmsgKnJ3azsKPj4gKwo+PiArCWlmICh0eXBlID49 IChzaXplb2YocnBtb25fcW1pX2V2ZW50X2NhbGxiYWNrcykgLwo+PiArCQkgICAgIHNpemVvZihz dHJ1Y3QgcnBtb25fcW1pX2NiX2ZuKSkpIHsKPj4gKwkJcHJfZXJyKCJFcnJvciBub25lIHN1cHBv cnRlZCBtZXNzYWdlIHR5cGUuXG4iKTsKPgo+CQkgICAgICAgICAgICAgIG5vbi1zdXBwb3J0ZWQK PgoKQWRkcmVzc2VkIGluIHYyCgo+PiArCQlyZXR1cm47Cj4+ICsJfQo+PiArCj4+ICsJaWYgKHJw bW9uX3FtaV9ldmVudF9jYWxsYmFja3NbdHlwZV0uY2FsbGJhY2spIHsKPj4gKwkJcndrID0ga3ph bGxvYyhzaXplb2YoKnJ3ayksIEdGUF9LRVJORUwpOwo+PiArCQlpZiAoIXJ3aykgewo+PiArCQkJ cHJfZXJyKCJFcnJvciB0byBhbGxvYyByZWN2X3dvcmsiKTsKPj4gKwkJCXJldHVybjsKPj4gKwkJ fQo+PiArCj4+ICsJCUlOSVRfV09SSygmcndrLT53b3JrLCBycG1vbl9xbWlfZXZlbnRfY2FsbGJh Y2tzW3R5cGVdLmNhbGxiYWNrKTsKPj4gKwkJbWVtY3B5KCZyd2stPnNxLCBzcSwgc2l6ZW9mKCpz cSkpOwo+PiArCj4+ICsJCXJ3ay0+bXNnID0ga3phbGxvYyhycG1vbl9xbWlfZXZlbnRfY2FsbGJh Y2tzW3R5cGVdLm1zZ19sZW4sCj4+ICsJCQkJICAgR0ZQX0tFUk5FTCk7Cj4+ICsJCWlmICghcndr LT5tc2cpIHsKPj4gKwkJCXByX2VycigiRXJyb3IgdG8gYWxsb2MgbWVzc2FnZSBvZiByZWN2X3dv cmsiKTsKPj4gKwkJCWtmcmVlKHJ3ayk7Cj4+ICsJCQlyZXR1cm47Cj4+ICsJCX0KPj4gKwo+PiAr CQltZW1jcHkocndrLT5tc2csIG1zZywgcnBtb25fcW1pX2V2ZW50X2NhbGxiYWNrc1t0eXBlXS5t c2dfbGVuKTsKPj4gKwkJcXVldWVfd29yayhycHFtaV93cSwgJnJ3ay0+d29yayk7Cj4+ICsJfQo+ PiArfQo+Cj5bc25pcF0KPgo+PiArc3RhdGljIHZvaWQgX19leGl0IHJwbW9uX3FtaV9kcnZfZXhp dCh2b2lkKQo+PiArewo+PiArCXJwbW9uX3FtaV9kZWxfc2VydmVyKCk7Cj4+ICsKPj4gKwlxbWlf aGFuZGxlX3JlbGVhc2UoJnJwcW1pLT5xbWkpOwo+PiArCj4+ICsJcGxhdGZvcm1fZHJpdmVyX3Vu cmVnaXN0ZXIoJnJwbW9uX3FtaV9kcnYpOwo+PiArfQo+PiArbW9kdWxlX2V4aXQocnBtb25fcW1p X2Rydl9leGl0KTsKPj4gKwo+PiArTU9EVUxFX0FVVEhPUigiV2FuZyBXZW5odSIpOwo+Cj5QbGVh c2UgYWRkIGVtYWlsIGFkZHJlc3MgYWJvdmUuCj4KCkFkZHJlc3NlZCBpbiB2MgoKPj4gK01PRFVM RV9ERVNDUklQVElPTigiU3Vic3lzdGVtIE1vbml0b3IgdmlhIFFNSSBwbGF0Zm9ybSBkcml2ZXIi KTsKPj4gK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBEUklWRVJfTkFNRSk7Cj4+ICtNT0RVTEVf TElDRU5TRSgiR1BMIHYyIik7Cj4+IAo+Cj50aGFua3MuCj4tLSAKPn5SYW5keQo+CgpUaGFua3Ms Cldlbmh1DQoNCg==