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 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BA278CD37AC for ; Wed, 13 May 2026 19:40:23 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0F23610F035; Wed, 13 May 2026 19:40:23 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="wXztKGVz"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7BD0710F038 for ; Wed, 13 May 2026 19:40:21 +0000 (UTC) Received: from killaraus.ideasonboard.com (2001-14ba-70f3-e800--a06.rev.dnainternet.fi [IPv6:2001:14ba:70f3:e800::a06]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 1ECC39A0; Wed, 13 May 2026 21:40:11 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1778701211; bh=jlWHu1fXFM3qCsVs2Dtd/hqL0fuEiheEM0UFk2/CMU0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=wXztKGVz1CXEhaxpmnwbdlF8KW+G19KK17oDOgLFOwWmNCx2g/E+Of9LDXhXsBD4+ W/jz9XT90s69Gw9fLOGCOkt14m3mfpGTEfvT9keJIune0nbfFNvuLbKZ4gr+xP679G byNe44q9m9LtsC8yuY1l4zS5Ru8lnY6wZbKXdUL0= Date: Wed, 13 May 2026 22:40:18 +0300 From: Laurent Pinchart To: Niklas =?utf-8?Q?S=C3=B6derlund?= Cc: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Tomi Valkeinen , Kieran Bingham , Biju Das , David Airlie , Simona Vetter Subject: Re: [PATCH 05/11] media: renesas: vsp1: Use mutex guards Message-ID: <20260513194018.GA291825@killaraus.ideasonboard.com> References: <20260511235637.3468558-1-laurent.pinchart+renesas@ideasonboard.com> <20260511235637.3468558-6-laurent.pinchart+renesas@ideasonboard.com> <20260513192054.GH332351@ragnatech.se> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: base64 In-Reply-To: <20260513192054.GH332351@ragnatech.se> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gV2VkLCBNYXkgMTMsIDIwMjYgYXQgMDk6MjA6NTRQTSArMDIwMCwgTmlrbGFzIFPDtmRlcmx1 bmQgd3JvdGU6Cj4gSGkgTGF1cmVudCwKPiAKPiBUaGVzZSBuZXcgY29uc3RydWN0cyBhcmUgc28g dXNlZnVsLCBuaWNlIHRvIHRha2UgdGhlIHRpbWUgdG8gbWFrZSB1c2Ugb2YgCj4gdGhlbSBpbiBl eGlzdGluZyBkcml2ZXJzLgoKWWVzLCBJIGxpa2UgdGhlbSB0b28uIFRoZSBzY29wZWQgZ3VhcmRz IGFyZSBzb21ldGltZXMgbW9yZSBhbm5veWluZyBhcwp0aGV5IGFkZCBvbmUgaW5kZW50YXRpb24g bGV2ZWwuCgo+IE9uIDIwMjYtMDUtMTIgMDI6NTY6MjkgKzAzMDAsIExhdXJlbnQgUGluY2hhcnQg d3JvdGU6Cj4gPiBSZXBsYWNlIG1hbnVhbCBtdXRleCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgd2l0 aCBndWFyZHMuIFRoaXMgc2ltcGxpZmllcwo+ID4gZXJyb3IgcGF0aHMgYW5kIHJlZHVjZXMgdGhl IGFtb3VudCBvZiBjb2RlLiBMaW1pdCB0aGUgY2hhbmdlcyB0bwo+ID4gbG9jYXRpb25zIHdoZXJl IHRoZSBndWFyZCBjb3ZlcnMgdW50aWwgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24gdG8gZWFzZQo+ ID4gcmV2aWV3LiBTY29wZWQgZ3VhcmRzIHdpbGwgYmUgaW50cm9kdWNlZCBzZXBhcmF0ZWx5Lgo+ ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0 K3JlbmVzYXNAaWRlYXNvbmJvYXJkLmNvbT4KPiAKPiBSZXZpZXdlZC1ieTogTmlrbGFzIFPDtmRl cmx1bmQgPG5pa2xhcy5zb2Rlcmx1bmQrcmVuZXNhc0ByYWduYXRlY2guc2U+Cj4gCj4gPiAtLS0K PiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfYnJ4LmMgICAgfCAyNiAr KysrLS0tLS0tLQo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9kcm0u YyAgICB8ICA3ICstLQo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9l bnRpdHkuYyB8IDE5ICsrKy0tLS0tCj4gPiAgLi4uL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNw MS92c3AxX2hpc3RvLmMgIHwgMzUgKysrKystLS0tLS0tLS0tCj4gPiAgLi4uL21lZGlhL3BsYXRm b3JtL3JlbmVzYXMvdnNwMS92c3AxX2hzaXQuYyAgIHwgMTUgKysrLS0tLQo+ID4gIC4uLi9tZWRp YS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9yd3BmLmMgICB8IDQ0ICsrKysrKy0tLS0tLS0t LS0tLS0KPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfc3J1LmMgICAg fCAxMyArKy0tLS0KPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfdWRz LmMgICAgfCAxMyArKy0tLS0KPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3Zz cDFfdWlmLmMgICAgfCAyOSArKysrLS0tLS0tLS0KPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vcmVu ZXNhcy92c3AxL3ZzcDFfdmlkZW8uYyAgfCAyMCArKysrLS0tLS0KPiA+ICAuLi4vbWVkaWEvcGxh dGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfd3BmLmMgICAgfCAxNyArKystLS0tCj4gPiAgMTEgZmls ZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTYxIGRlbGV0aW9ucygtKQo+ID4gCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9icngu YyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfYnJ4LmMKPiA+IGlu ZGV4IDlkOTNjYjhiOGU4Mi4uYmQyNjcyMzQxMzg2IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9icnguYwo+ID4gKysrIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9icnguYwo+ID4gQEAgLTEzMCwxNSArMTMw LDEyIEBAIHN0YXRpYyBpbnQgYnJ4X3NldF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJk ZXYsCj4gPiAgCXN0cnVjdCB2c3AxX2JyeCAqYnJ4ID0gdG9fYnJ4KHN1YmRldik7Cj4gPiAgCXN0 cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGU7Cj4gPiAgCXN0cnVjdCB2NGwyX21idXNfZnJh bWVmbXQgKmZvcm1hdDsKPiA+IC0JaW50IHJldCA9IDA7Cj4gPiAgCj4gPiAtCW11dGV4X2xvY2so JmJyeC0+ZW50aXR5LmxvY2spOwo+ID4gKwlndWFyZChtdXRleCkoJmJyeC0+ZW50aXR5LmxvY2sp Owo+ID4gIAo+ID4gIAlzdGF0ZSA9IHZzcDFfZW50aXR5X2dldF9zdGF0ZSgmYnJ4LT5lbnRpdHks IHNkX3N0YXRlLCBmbXQtPndoaWNoKTsKPiA+IC0JaWYgKCFzdGF0ZSkgewo+ID4gLQkJcmV0ID0g LUVJTlZBTDsKPiA+IC0JCWdvdG8gZG9uZTsKPiA+IC0JfQo+ID4gKwlpZiAoIXN0YXRlKQo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAgCWJyeF90cnlfZm9ybWF0KGJyeCwgc3RhdGUs IGZtdC0+cGFkLCAmZm10LT5mb3JtYXQpOwo+ID4gIAo+ID4gQEAgLTE2Niw5ICsxNjMsNyBAQCBz dGF0aWMgaW50IGJyeF9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ID4g IAkJfQo+ID4gIAl9Cj4gPiAgCj4gPiAtZG9uZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZicngtPmVu dGl0eS5sb2NrKTsKPiA+IC0JcmV0dXJuIHJldDsKPiA+ICsJcmV0dXJuIDA7Cj4gPiAgfQo+ID4g IAo+ID4gIHN0YXRpYyBpbnQgYnJ4X2dldF9zZWxlY3Rpb24oc3RydWN0IHY0bDJfc3ViZGV2ICpz dWJkZXYsCj4gPiBAQCAtMjEzLDcgKzIwOCw2IEBAIHN0YXRpYyBpbnQgYnJ4X3NldF9zZWxlY3Rp b24oc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiAgCXN0cnVjdCB2NGwyX3N1YmRldl9z dGF0ZSAqc3RhdGU7Cj4gPiAgCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKmZvcm1hdDsKPiA+ ICAJc3RydWN0IHY0bDJfcmVjdCAqY29tcG9zZTsKPiA+IC0JaW50IHJldCA9IDA7Cj4gPiAgCj4g PiAgCWlmIChzZWwtPnBhZCA9PSBicngtPmVudGl0eS5zb3VyY2VfcGFkKQo+ID4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gPiBAQCAtMjIxLDEzICsyMTUsMTEgQEAgc3RhdGljIGludCBicnhfc2V0X3Nl bGVjdGlvbihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiA+ICAJaWYgKHNlbC0+dGFyZ2V0 ICE9IFY0TDJfU0VMX1RHVF9DT01QT1NFKQo+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4g PiAtCW11dGV4X2xvY2soJmJyeC0+ZW50aXR5LmxvY2spOwo+ID4gKwlndWFyZChtdXRleCkoJmJy eC0+ZW50aXR5LmxvY2spOwo+ID4gIAo+ID4gIAlzdGF0ZSA9IHZzcDFfZW50aXR5X2dldF9zdGF0 ZSgmYnJ4LT5lbnRpdHksIHNkX3N0YXRlLCBzZWwtPndoaWNoKTsKPiA+IC0JaWYgKCFzdGF0ZSkg ewo+ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+IC0JCWdvdG8gZG9uZTsKPiA+IC0JfQo+ID4gKwlp ZiAoIXN0YXRlKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAgCS8qCj4gPiAgCSAq IFRoZSBjb21wb3NlIHJlY3RhbmdsZSB0b3AgbGVmdCBjb3JuZXIgbXVzdCBiZSBpbnNpZGUgdGhl IG91dHB1dAo+ID4gQEAgLTI0OCw5ICsyNDAsNyBAQCBzdGF0aWMgaW50IGJyeF9zZXRfc2VsZWN0 aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ID4gIAljb21wb3NlID0gdjRsMl9zdWJk ZXZfc3RhdGVfZ2V0X2NvbXBvc2Uoc3RhdGUsIHNlbC0+cGFkKTsKPiA+ICAJKmNvbXBvc2UgPSBz ZWwtPnI7Cj4gPiAgCj4gPiAtZG9uZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZicngtPmVudGl0eS5s b2NrKTsKPiA+IC0JcmV0dXJuIHJldDsKPiA+ICsJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX29wcyBicnhfcGFkX29wcyA9IHsK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3Ax X2RybS5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9kcm0uYwo+ ID4gaW5kZXggMWY0MzE4NzQwNjRkLi4xNDM5Y2Y3YmZiNTkgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2RybS5jCj4gPiArKysgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2RybS5jCj4gPiBAQCAtOTIwLDcg KzkyMCw3IEBAIHZvaWQgdnNwMV9kdV9hdG9taWNfZmx1c2goc3RydWN0IGRldmljZSAqZGV2LCB1 bnNpZ25lZCBpbnQgcGlwZV9pbmRleCwKPiA+ICAKPiA+ICAJZHJtX3BpcGUtPmNyYyA9IGNmZy0+ Y3JjOwo+ID4gIAo+ID4gLQltdXRleF9sb2NrKCZ2c3AxLT5kcm0tPmxvY2spOwo+ID4gKwlndWFy ZChtdXRleCkoJnZzcDEtPmRybS0+bG9jayk7Cj4gPiAgCj4gPiAgCWlmIChjZmctPndyaXRlYmFj ay5waXhlbGZvcm1hdCkgewo+ID4gIAkJY29uc3Qgc3RydWN0IHZzcDFfZHVfd3JpdGViYWNrX2Nv bmZpZyAqd2JfY2ZnID0gJmNmZy0+d3JpdGViYWNrOwo+ID4gQEAgLTkyOSw3ICs5MjksNyBAQCB2 b2lkIHZzcDFfZHVfYXRvbWljX2ZsdXNoKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHBpcGVfaW5kZXgsCj4gPiAgCQkJCQkJICAgICAgIHdiX2NmZy0+cGl4ZWxmb3JtYXQsCj4gPiAg CQkJCQkJICAgICAgIHdiX2NmZy0+cGl0Y2gpOwo+ID4gIAkJaWYgKFdBUk5fT04ocmV0IDwgMCkp Cj4gPiAtCQkJZ290byBkb25lOwo+ID4gKwkJCXJldHVybjsKPiA+ICAKPiA+ICAJCXBpcGUtPm91 dHB1dC0+bWVtLmFkZHJbMF0gPSB3Yl9jZmctPm1lbVswXTsKPiA+ICAJCXBpcGUtPm91dHB1dC0+ bWVtLmFkZHJbMV0gPSB3Yl9jZmctPm1lbVsxXTsKPiA+IEBAIC05NDIsOSArOTQyLDYgQEAgdm9p ZCB2c3AxX2R1X2F0b21pY19mbHVzaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBw aXBlX2luZGV4LAo+ID4gIAl2c3AxX3BpcGVsaW5lX2R1bXAocGlwZSwgImF0b21pYyB1cGRhdGUi KTsKPiA+ICAKPiA+ICAJdnNwMV9kdV9waXBlbGluZV9jb25maWd1cmUocGlwZSk7Cj4gPiAtCj4g PiAtZG9uZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZ2c3AxLT5kcm0tPmxvY2spOwo+ID4gIH0KPiA+ ICBFWFBPUlRfU1lNQk9MX0dQTCh2c3AxX2R1X2F0b21pY19mbHVzaCk7Cj4gPiAgCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9lbnRpdHku YyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfZW50aXR5LmMKPiA+ IGluZGV4IDgzOWI3NWI2MmNlYi4uMzgyMGJhNTNiNDVmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9lbnRpdHkuYwo+ID4gKysrIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9lbnRpdHkuYwo+ID4gQEAgLTE3 Miw5ICsxNzIsOSBAQCBpbnQgdnNwMV9zdWJkZXZfZ2V0X3BhZF9mb3JtYXQoc3RydWN0IHY0bDJf c3ViZGV2ICpzdWJkZXYsCj4gPiAgCWlmICghc3RhdGUpCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiA+ICAKPiA+IC0JbXV0ZXhfbG9jaygmZW50aXR5LT5sb2NrKTsKPiA+ICsJZ3VhcmQobXV0ZXgp KCZlbnRpdHktPmxvY2spOwo+ID4gKwo+ID4gIAlmbXQtPmZvcm1hdCA9ICp2NGwyX3N1YmRldl9z dGF0ZV9nZXRfZm9ybWF0KHN0YXRlLCBmbXQtPnBhZCk7Cj4gPiAtCW11dGV4X3VubG9jaygmZW50 aXR5LT5sb2NrKTsKPiA+ICAKPiA+ICAJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gQEAgLTMwOCwyMiAr MzA4LDE5IEBAIGludCB2c3AxX3N1YmRldl9zZXRfcGFkX2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJk ZXYgKnN1YmRldiwKPiA+ICAJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqZm9ybWF0Owo+ID4g IAlzdHJ1Y3QgdjRsMl9yZWN0ICpzZWxlY3Rpb247Cj4gPiAgCXVuc2lnbmVkIGludCBpOwo+ID4g LQlpbnQgcmV0ID0gMDsKPiA+ICAKPiA+IC0JbXV0ZXhfbG9jaygmZW50aXR5LT5sb2NrKTsKPiA+ ICsJZ3VhcmQobXV0ZXgpKCZlbnRpdHktPmxvY2spOwo+ID4gIAo+ID4gIAlzdGF0ZSA9IHZzcDFf ZW50aXR5X2dldF9zdGF0ZShlbnRpdHksIHNkX3N0YXRlLCBmbXQtPndoaWNoKTsKPiA+IC0JaWYg KCFzdGF0ZSkgewo+ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+IC0JCWdvdG8gZG9uZTsKPiA+IC0J fQo+ID4gKwlpZiAoIXN0YXRlKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAgCWZv cm1hdCA9IHY0bDJfc3ViZGV2X3N0YXRlX2dldF9mb3JtYXQoc3RhdGUsIGZtdC0+cGFkKTsKPiA+ ICAKPiA+ICAJaWYgKGZtdC0+cGFkID09IGVudGl0eS0+c291cmNlX3BhZCkgewo+ID4gIAkJLyog VGhlIG91dHB1dCBmb3JtYXQgY2FuJ3QgYmUgbW9kaWZpZWQuICovCj4gPiAgCQlmbXQtPmZvcm1h dCA9ICpmb3JtYXQ7Cj4gPiAtCQlnb3RvIGRvbmU7Cj4gPiArCQlyZXR1cm4gMDsKPiA+ICAJfQo+ ID4gIAo+ID4gIAkvKgo+ID4gQEAgLTM2OSw5ICszNjYsNyBAQCBpbnQgdnNwMV9zdWJkZXZfc2V0 X3BhZF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiAgCXNlbGVjdGlvbi0+ d2lkdGggPSBmb3JtYXQtPndpZHRoOwo+ID4gIAlzZWxlY3Rpb24tPmhlaWdodCA9IGZvcm1hdC0+ aGVpZ2h0Owo+ID4gIAo+ID4gLWRvbmU6Cj4gPiAtCW11dGV4X3VubG9jaygmZW50aXR5LT5sb2Nr KTsKPiA+IC0JcmV0dXJuIHJldDsKPiA+ICsJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0 YXRpYyBpbnQgdnNwMV9lbnRpdHlfaW5pdF9zdGF0ZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRl diwKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92 c3AxX2hpc3RvLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2hp c3RvLmMKPiA+IGluZGV4IDNmODdhMmM5ZGYwZS4uNzJmNmVmMmZkYzRmIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9oaXN0by5jCj4gPiAr KysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2hpc3RvLmMKPiA+ IEBAIC0xOTYsMTggKzE5NiwxNSBAQCBzdGF0aWMgaW50IGhpc3RvX2dldF9zZWxlY3Rpb24oc3Ry dWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiAgCXN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAq c3RhdGU7Cj4gPiAgCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKmZvcm1hdDsKPiA+ICAJc3Ry dWN0IHY0bDJfcmVjdCAqY3JvcDsKPiA+IC0JaW50IHJldCA9IDA7Cj4gPiAgCj4gPiAgCWlmIChz ZWwtPnBhZCAhPSBISVNUT19QQURfU0lOSykKPiA+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gIAo+ ID4gLQltdXRleF9sb2NrKCZoaXN0by0+ZW50aXR5LmxvY2spOwo+ID4gKwlndWFyZChtdXRleCko Jmhpc3RvLT5lbnRpdHkubG9jayk7Cj4gPiAgCj4gPiAgCXN0YXRlID0gdnNwMV9lbnRpdHlfZ2V0 X3N0YXRlKCZoaXN0by0+ZW50aXR5LCBzZF9zdGF0ZSwgc2VsLT53aGljaCk7Cj4gPiAtCWlmICgh c3RhdGUpIHsKPiA+IC0JCXJldCA9IC1FSU5WQUw7Cj4gPiAtCQlnb3RvIGRvbmU7Cj4gPiAtCX0K PiA+ICsJaWYgKCFzdGF0ZSkKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gIAo+ID4gIAlzd2l0 Y2ggKHNlbC0+dGFyZ2V0KSB7Cj4gPiAgCWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBPU0VfQk9VTkRT Ogo+ID4gQEAgLTIzNywxMyArMjM0LDEwIEBAIHN0YXRpYyBpbnQgaGlzdG9fZ2V0X3NlbGVjdGlv bihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiA+ICAJCWJyZWFrOwo+ID4gIAo+ID4gIAlk ZWZhdWx0Ogo+ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+IC0JCWJyZWFrOwo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gPiAgCX0KPiA+ICAKPiA+IC1kb25lOgo+ID4gLQltdXRleF91bmxvY2soJmhp c3RvLT5lbnRpdHkubG9jayk7Cj4gPiAtCXJldHVybiByZXQ7Cj4gPiArCXJldHVybiAwOwo+ID4g IH0KPiA+ICAKPiA+ICBzdGF0aWMgaW50IGhpc3RvX3NldF9jcm9wKHN0cnVjdCB2NGwyX3N1YmRl diAqc3ViZGV2LAo+ID4gQEAgLTMyMSwyOSArMzE1LDIyIEBAIHN0YXRpYyBpbnQgaGlzdG9fc2V0 X3NlbGVjdGlvbihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiA+ICB7Cj4gPiAgCXN0cnVj dCB2c3AxX2hpc3RvZ3JhbSAqaGlzdG8gPSBzdWJkZXZfdG9faGlzdG8oc3ViZGV2KTsKPiA+ICAJ c3RydWN0IHY0bDJfc3ViZGV2X3N0YXRlICpzdGF0ZTsKPiA+IC0JaW50IHJldDsKPiA+ICAKPiA+ ICAJaWYgKHNlbC0+cGFkICE9IEhJU1RPX1BBRF9TSU5LKQo+ID4gIAkJcmV0dXJuIC1FSU5WQUw7 Cj4gPiAgCj4gPiAtCW11dGV4X2xvY2soJmhpc3RvLT5lbnRpdHkubG9jayk7Cj4gPiArCWd1YXJk KG11dGV4KSgmaGlzdG8tPmVudGl0eS5sb2NrKTsKPiA+ICAKPiA+ICAJc3RhdGUgPSB2c3AxX2Vu dGl0eV9nZXRfc3RhdGUoJmhpc3RvLT5lbnRpdHksIHNkX3N0YXRlLCBzZWwtPndoaWNoKTsKPiA+ IC0JaWYgKCFzdGF0ZSkgewo+ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+IC0JCWdvdG8gZG9uZTsK PiA+IC0JfQo+ID4gKwlpZiAoIXN0YXRlKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4g PiAgCWlmIChzZWwtPnRhcmdldCA9PSBWNEwyX1NFTF9UR1RfQ1JPUCkKPiA+IC0JCXJldCA9IGhp c3RvX3NldF9jcm9wKHN1YmRldiwgc3RhdGUsIHNlbCk7Cj4gPiArCQlyZXR1cm4gaGlzdG9fc2V0 X2Nyb3Aoc3ViZGV2LCBzdGF0ZSwgc2VsKTsKPiA+ICAJZWxzZSBpZiAoc2VsLT50YXJnZXQgPT0g VjRMMl9TRUxfVEdUX0NPTVBPU0UpCj4gPiAtCQlyZXQgPSBoaXN0b19zZXRfY29tcG9zZShzdWJk ZXYsIHN0YXRlLCBzZWwpOwo+ID4gKwkJcmV0dXJuIGhpc3RvX3NldF9jb21wb3NlKHN1YmRldiwg c3RhdGUsIHNlbCk7Cj4gPiAgCWVsc2UKPiA+IC0JCXJldCA9IC1FSU5WQUw7Cj4gPiAtCj4gPiAt ZG9uZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZoaXN0by0+ZW50aXR5LmxvY2spOwo+ID4gLQlyZXR1 cm4gcmV0Owo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBp bnQgaGlzdG9fc2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2hzaXQuYyBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfaHNpdC5jCj4gPiBpbmRl eCA4MzBlMTI0YmViN2IuLmRmMDY5YzIyODI0MyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfaHNpdC5jCj4gPiArKysgYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2hzaXQuYwo+ID4gQEAgLTExNSwxNSArMTE1 LDEyIEBAIHN0YXRpYyBpbnQgaHNpdF9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3Vi ZGV2LAo+ID4gIAlzdHJ1Y3QgdnNwMV9oc2l0ICpoc2l0ID0gdG9faHNpdChzdWJkZXYpOwo+ID4g IAlzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+ID4gIAlzdHJ1Y3QgdjRsMl9tYnVz X2ZyYW1lZm10ICpmb3JtYXQ7Cj4gPiAtCWludCByZXQgPSAwOwo+ID4gIAo+ID4gLQltdXRleF9s b2NrKCZoc2l0LT5lbnRpdHkubG9jayk7Cj4gPiArCWd1YXJkKG11dGV4KSgmaHNpdC0+ZW50aXR5 LmxvY2spOwo+ID4gIAo+ID4gIAlzdGF0ZSA9IHZzcDFfZW50aXR5X2dldF9zdGF0ZSgmaHNpdC0+ ZW50aXR5LCBzZF9zdGF0ZSwgZm10LT53aGljaCk7Cj4gPiAtCWlmICghc3RhdGUpIHsKPiA+IC0J CXJldCA9IC1FSU5WQUw7Cj4gPiAtCQlnb3RvIGRvbmU7Cj4gPiAtCX0KPiA+ICsJaWYgKCFzdGF0 ZSkKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gIAo+ID4gIAlmb3JtYXQgPSB2NGwyX3N1YmRl dl9zdGF0ZV9nZXRfZm9ybWF0KHN0YXRlLCBmbXQtPnBhZCk7Cj4gPiAgCj4gPiBAQCAtMTMzLDcg KzEzMCw3IEBAIHN0YXRpYyBpbnQgaHNpdF9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAq c3ViZGV2LAo+ID4gIAkJICogbW9kaWZpZWQuCj4gPiAgCQkgKi8KPiA+ICAJCWZtdC0+Zm9ybWF0 ID0gKmZvcm1hdDsKPiA+IC0JCWdvdG8gZG9uZTsKPiA+ICsJCXJldHVybiAwOwo+ID4gIAl9Cj4g PiAgCj4gPiAgCWZvcm1hdC0+Y29kZSA9IGhzaXQtPmludmVyc2UgPyBNRURJQV9CVVNfRk1UX0FI U1Y4ODg4XzFYMzIKPiA+IEBAIC0xNjEsOSArMTU4LDcgQEAgc3RhdGljIGludCBoc2l0X3NldF9m b3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiAgCj4gPiAgCXZzcDFfZW50aXR5 X2FkanVzdF9jb2xvcl9zcGFjZShmb3JtYXQpOwo+ID4gIAo+ID4gLWRvbmU6Cj4gPiAtCW11dGV4 X3VubG9jaygmaHNpdC0+ZW50aXR5LmxvY2spOwo+ID4gLQlyZXR1cm4gcmV0Owo+ID4gKwlyZXR1 cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9w YWRfb3BzIGhzaXRfcGFkX29wcyA9IHsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX3J3cGYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v cmVuZXNhcy92c3AxL3ZzcDFfcndwZi5jCj4gPiBpbmRleCBjNzI1MThiMjlmODQuLmNlZDAxODcw YWNkNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3Ax L3ZzcDFfcndwZi5jCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNw MS92c3AxX3J3cGYuYwo+ID4gQEAgLTExNiwxNSArMTE2LDEyIEBAIHN0YXRpYyBpbnQgdnNwMV9y d3BmX3NldF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiAgCXN0cnVjdCB2 c3AxX3J3cGYgKnJ3cGYgPSB0b19yd3BmKHN1YmRldik7Cj4gPiAgCXN0cnVjdCB2NGwyX3N1YmRl dl9zdGF0ZSAqc3RhdGU7Cj4gPiAgCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKmZvcm1hdDsK PiA+IC0JaW50IHJldCA9IDA7Cj4gPiAgCj4gPiAtCW11dGV4X2xvY2soJnJ3cGYtPmVudGl0eS5s b2NrKTsKPiA+ICsJZ3VhcmQobXV0ZXgpKCZyd3BmLT5lbnRpdHkubG9jayk7Cj4gPiAgCj4gPiAg CXN0YXRlID0gdnNwMV9lbnRpdHlfZ2V0X3N0YXRlKCZyd3BmLT5lbnRpdHksIHNkX3N0YXRlLCBm bXQtPndoaWNoKTsKPiA+IC0JaWYgKCFzdGF0ZSkgewo+ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+ IC0JCWdvdG8gZG9uZTsKPiA+IC0JfQo+ID4gKwlpZiAoIXN0YXRlKQo+ID4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gPiAgCj4gPiAgCS8qIERlZmF1bHQgdG8gWVVWIGlmIHRoZSByZXF1ZXN0ZWQgZm9y bWF0IGlzIG5vdCBzdXBwb3J0ZWQuICovCj4gPiAgCWlmIChmbXQtPmZvcm1hdC5jb2RlICE9IE1F RElBX0JVU19GTVRfQVJHQjg4ODhfMVgzMiAmJgo+ID4gQEAgLTE3NCw3ICsxNzEsNyBAQCBzdGF0 aWMgaW50IHZzcDFfcndwZl9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ ID4gIAkJZm10LT5mb3JtYXQgPSAqZm9ybWF0Owo+ID4gIAkJZm10LT5mb3JtYXQuZmxhZ3MgPSBm bGFnczsKPiA+ICAKPiA+IC0JCWdvdG8gZG9uZTsKPiA+ICsJCXJldHVybiAwOwo+ID4gIAl9Cj4g PiAgCj4gPiAgCWZvcm1hdC0+Y29kZSA9IGZtdC0+Zm9ybWF0LmNvZGU7Cj4gPiBAQCAtMjEzLDkg KzIxMCw3IEBAIHN0YXRpYyBpbnQgdnNwMV9yd3BmX3NldF9mb3JtYXQoc3RydWN0IHY0bDJfc3Vi ZGV2ICpzdWJkZXYsCj4gPiAgCQlmb3JtYXQtPmhlaWdodCA9IGZtdC0+Zm9ybWF0LndpZHRoOwo+ ID4gIAl9Cj4gPiAgCj4gPiAtZG9uZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZyd3BmLT5lbnRpdHku bG9jayk7Cj4gPiAtCXJldHVybiByZXQ7Cj4gPiArCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+ ICBzdGF0aWMgaW50IHZzcDFfcndwZl9nZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAq c3ViZGV2LAo+ID4gQEAgLTIyNSw3ICsyMjAsNiBAQCBzdGF0aWMgaW50IHZzcDFfcndwZl9nZXRf c2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ID4gIAlzdHJ1Y3QgdnNwMV9y d3BmICpyd3BmID0gdG9fcndwZihzdWJkZXYpOwo+ID4gIAlzdHJ1Y3QgdjRsMl9zdWJkZXZfc3Rh dGUgKnN0YXRlOwo+ID4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmb3JtYXQ7Cj4gPiAt CWludCByZXQgPSAwOwo+ID4gIAo+ID4gIAkvKgo+ID4gIAkgKiBDcm9wcGluZyBpcyBvbmx5IHN1 cHBvcnRlZCBvbiB0aGUgUlBGIGFuZCBpcyBpbXBsZW1lbnRlZCBvbiB0aGUgc2luawo+ID4gQEAg LTIzNCwxMyArMjI4LDExIEBAIHN0YXRpYyBpbnQgdnNwMV9yd3BmX2dldF9zZWxlY3Rpb24oc3Ry dWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiAgCWlmIChyd3BmLT5lbnRpdHkudHlwZSA9PSBW U1AxX0VOVElUWV9XUEYgfHwgc2VsLT5wYWQgIT0gUldQRl9QQURfU0lOSykKPiA+ICAJCXJldHVy biAtRUlOVkFMOwo+ID4gIAo+ID4gLQltdXRleF9sb2NrKCZyd3BmLT5lbnRpdHkubG9jayk7Cj4g PiArCWd1YXJkKG11dGV4KSgmcndwZi0+ZW50aXR5LmxvY2spOwo+ID4gIAo+ID4gIAlzdGF0ZSA9 IHZzcDFfZW50aXR5X2dldF9zdGF0ZSgmcndwZi0+ZW50aXR5LCBzZF9zdGF0ZSwgc2VsLT53aGlj aCk7Cj4gPiAtCWlmICghc3RhdGUpIHsKPiA+IC0JCXJldCA9IC1FSU5WQUw7Cj4gPiAtCQlnb3Rv IGRvbmU7Cj4gPiAtCX0KPiA+ICsJaWYgKCFzdGF0ZSkKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ ID4gIAo+ID4gIAlzd2l0Y2ggKHNlbC0+dGFyZ2V0KSB7Cj4gPiAgCWNhc2UgVjRMMl9TRUxfVEdU X0NST1A6Cj4gPiBAQCAtMjU2LDEzICsyNDgsMTAgQEAgc3RhdGljIGludCB2c3AxX3J3cGZfZ2V0 X3NlbGVjdGlvbihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiA+ICAJCWJyZWFrOwo+ID4g IAo+ID4gIAlkZWZhdWx0Ogo+ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+IC0JCWJyZWFrOwo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCX0KPiA+ICAKPiA+IC1kb25lOgo+ID4gLQltdXRleF91 bmxvY2soJnJ3cGYtPmVudGl0eS5sb2NrKTsKPiA+IC0JcmV0dXJuIHJldDsKPiA+ICsJcmV0dXJu IDA7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBpbnQgdnNwMV9yd3BmX3NldF9zZWxlY3Rpb24o c3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiBAQCAtMjc1LDcgKzI2NCw2IEBAIHN0YXRp YyBpbnQgdnNwMV9yd3BmX3NldF9zZWxlY3Rpb24oc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYs Cj4gPiAgCXN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGU7Cj4gPiAgCXN0cnVjdCB2NGwy X21idXNfZnJhbWVmbXQgKmZvcm1hdDsKPiA+ICAJc3RydWN0IHY0bDJfcmVjdCAqY3JvcDsKPiA+ IC0JaW50IHJldCA9IDA7Cj4gPiAgCj4gPiAgCS8qCj4gPiAgCSAqIENyb3BwaW5nIGlzIG9ubHkg c3VwcG9ydGVkIG9uIHRoZSBSUEYgYW5kIGlzIGltcGxlbWVudGVkIG9uIHRoZSBzaW5rCj4gPiBA QCAtMjg3LDEzICsyNzUsMTEgQEAgc3RhdGljIGludCB2c3AxX3J3cGZfc2V0X3NlbGVjdGlvbihz dHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiA+ICAJaWYgKHNlbC0+dGFyZ2V0ICE9IFY0TDJf U0VMX1RHVF9DUk9QKQo+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAtCW11dGV4X2xv Y2soJnJ3cGYtPmVudGl0eS5sb2NrKTsKPiA+ICsJZ3VhcmQobXV0ZXgpKCZyd3BmLT5lbnRpdHku bG9jayk7Cj4gPiAgCj4gPiAgCXN0YXRlID0gdnNwMV9lbnRpdHlfZ2V0X3N0YXRlKCZyd3BmLT5l bnRpdHksIHNkX3N0YXRlLCBzZWwtPndoaWNoKTsKPiA+IC0JaWYgKCFzdGF0ZSkgewo+ID4gLQkJ cmV0ID0gLUVJTlZBTDsKPiA+IC0JCWdvdG8gZG9uZTsKPiA+IC0JfQo+ID4gKwlpZiAoIXN0YXRl KQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAgCS8qIE1ha2Ugc3VyZSB0aGUgY3Jv cCByZWN0YW5nbGUgaXMgZW50aXJlbHkgY29udGFpbmVkIGluIHRoZSBpbWFnZS4gKi8KPiA+ICAJ Zm9ybWF0ID0gdjRsMl9zdWJkZXZfc3RhdGVfZ2V0X2Zvcm1hdChzdGF0ZSwgUldQRl9QQURfU0lO Syk7Cj4gPiBAQCAtMzQyLDkgKzMyOCw3IEBAIHN0YXRpYyBpbnQgdnNwMV9yd3BmX3NldF9zZWxl Y3Rpb24oc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiAgCWZvcm1hdC0+d2lkdGggPSBj cm9wLT53aWR0aDsKPiA+ICAJZm9ybWF0LT5oZWlnaHQgPSBjcm9wLT5oZWlnaHQ7Cj4gPiAgCj4g PiAtZG9uZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZyd3BmLT5lbnRpdHkubG9jayk7Cj4gPiAtCXJl dHVybiByZXQ7Cj4gPiArCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgY29uc3Qg c3RydWN0IHY0bDJfc3ViZGV2X3BhZF9vcHMgdnNwMV9yd3BmX3BhZF9vcHMgPSB7Cj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9zcnUuYyBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfc3J1LmMKPiA+IGluZGV4 IDk0MTQ5ZGEwYzkwMC4uM2ZkOWZkZTVjNzI0IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9zcnUuYwo+ID4gKysrIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9zcnUuYwo+ID4gQEAgLTIxNiwxNSArMjE2LDEy IEBAIHN0YXRpYyBpbnQgc3J1X3NldF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYs Cj4gPiAgCXN0cnVjdCB2c3AxX3NydSAqc3J1ID0gdG9fc3J1KHN1YmRldik7Cj4gPiAgCXN0cnVj dCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGU7Cj4gPiAgCXN0cnVjdCB2NGwyX21idXNfZnJhbWVm bXQgKmZvcm1hdDsKPiA+IC0JaW50IHJldCA9IDA7Cj4gPiAgCj4gPiAtCW11dGV4X2xvY2soJnNy dS0+ZW50aXR5LmxvY2spOwo+ID4gKwlndWFyZChtdXRleCkoJnNydS0+ZW50aXR5LmxvY2spOwo+ ID4gIAo+ID4gIAlzdGF0ZSA9IHZzcDFfZW50aXR5X2dldF9zdGF0ZSgmc3J1LT5lbnRpdHksIHNk X3N0YXRlLCBmbXQtPndoaWNoKTsKPiA+IC0JaWYgKCFzdGF0ZSkgewo+ID4gLQkJcmV0ID0gLUVJ TlZBTDsKPiA+IC0JCWdvdG8gZG9uZTsKPiA+IC0JfQo+ID4gKwlpZiAoIXN0YXRlKQo+ID4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAgCXNydV90cnlfZm9ybWF0KHNydSwgc3RhdGUsIGZt dC0+cGFkLCAmZm10LT5mb3JtYXQpOwo+ID4gIAo+ID4gQEAgLTIzOSw5ICsyMzYsNyBAQCBzdGF0 aWMgaW50IHNydV9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ID4gIAkJ c3J1X3RyeV9mb3JtYXQoc3J1LCBzdGF0ZSwgU1JVX1BBRF9TT1VSQ0UsIGZvcm1hdCk7Cj4gPiAg CX0KPiA+ICAKPiA+IC1kb25lOgo+ID4gLQltdXRleF91bmxvY2soJnNydS0+ZW50aXR5LmxvY2sp Owo+ID4gLQlyZXR1cm4gcmV0Owo+ID4gKwlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAgc3Rh dGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfb3BzIHNydV9wYWRfb3BzID0gewo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfdWRz LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX3Vkcy5jCj4gPiBp bmRleCBkZDQ3MjIzMTVjNTYuLjlmN2JiMTEyOTI5ZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfdWRzLmMKPiA+ICsrKyBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfdWRzLmMKPiA+IEBAIC0xOTksMTUgKzE5 OSwxMiBAQCBzdGF0aWMgaW50IHVkc19zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3Vi ZGV2LAo+ID4gIAlzdHJ1Y3QgdnNwMV91ZHMgKnVkcyA9IHRvX3VkcyhzdWJkZXYpOwo+ID4gIAlz dHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+ID4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2Zy YW1lZm10ICpmb3JtYXQ7Cj4gPiAtCWludCByZXQgPSAwOwo+ID4gIAo+ID4gLQltdXRleF9sb2Nr KCZ1ZHMtPmVudGl0eS5sb2NrKTsKPiA+ICsJZ3VhcmQobXV0ZXgpKCZ1ZHMtPmVudGl0eS5sb2Nr KTsKPiA+ICAKPiA+ICAJc3RhdGUgPSB2c3AxX2VudGl0eV9nZXRfc3RhdGUoJnVkcy0+ZW50aXR5 LCBzZF9zdGF0ZSwgZm10LT53aGljaCk7Cj4gPiAtCWlmICghc3RhdGUpIHsKPiA+IC0JCXJldCA9 IC1FSU5WQUw7Cj4gPiAtCQlnb3RvIGRvbmU7Cj4gPiAtCX0KPiA+ICsJaWYgKCFzdGF0ZSkKPiA+ ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gIAo+ID4gIAl1ZHNfdHJ5X2Zvcm1hdCh1ZHMsIHN0YXRl LCBmbXQtPnBhZCwgJmZtdC0+Zm9ybWF0KTsKPiA+ICAKPiA+IEBAIC0yMjIsOSArMjE5LDcgQEAg c3RhdGljIGludCB1ZHNfc2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiA+ ICAJCXVkc190cnlfZm9ybWF0KHVkcywgc3RhdGUsIFVEU19QQURfU09VUkNFLCBmb3JtYXQpOwo+ ID4gIAl9Cj4gPiAgCj4gPiAtZG9uZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZ1ZHMtPmVudGl0eS5s b2NrKTsKPiA+IC0JcmV0dXJuIHJldDsKPiA+ICsJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4g IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV91aWYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v cmVuZXNhcy92c3AxL3ZzcDFfdWlmLmMKPiA+IGluZGV4IDNhZWZlNWM5ZDQyMS4uNTJkYmZlNThh NzBkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEv dnNwMV91aWYuYwo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEv dnNwMV91aWYuYwo+ID4gQEAgLTYwLDE4ICs2MCwxNSBAQCBzdGF0aWMgaW50IHVpZl9nZXRfc2Vs ZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ID4gIAlzdHJ1Y3QgdnNwMV91aWYg KnVpZiA9IHRvX3VpZihzdWJkZXYpOwo+ID4gIAlzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0 YXRlOwo+ID4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmb3JtYXQ7Cj4gPiAtCWludCBy ZXQgPSAwOwo+ID4gIAo+ID4gIAlpZiAoc2VsLT5wYWQgIT0gVUlGX1BBRF9TSU5LKQo+ID4gIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAtCW11dGV4X2xvY2soJnVpZi0+ZW50aXR5LmxvY2sp Owo+ID4gKwlndWFyZChtdXRleCkoJnVpZi0+ZW50aXR5LmxvY2spOwo+ID4gIAo+ID4gIAlzdGF0 ZSA9IHZzcDFfZW50aXR5X2dldF9zdGF0ZSgmdWlmLT5lbnRpdHksIHNkX3N0YXRlLCBzZWwtPndo aWNoKTsKPiA+IC0JaWYgKCFzdGF0ZSkgewo+ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+IC0JCWdv dG8gZG9uZTsKPiA+IC0JfQo+ID4gKwlpZiAoIXN0YXRlKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gPiAgCj4gPiAgCXN3aXRjaCAoc2VsLT50YXJnZXQpIHsKPiA+ICAJY2FzZSBWNEwyX1NFTF9U R1RfQ1JPUF9CT1VORFM6Cj4gPiBAQCAtODgsMTMgKzg1LDEwIEBAIHN0YXRpYyBpbnQgdWlmX2dl dF9zZWxlY3Rpb24oc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiAgCQlicmVhazsKPiA+ ICAKPiA+ICAJZGVmYXVsdDoKPiA+IC0JCXJldCA9IC1FSU5WQUw7Cj4gPiAtCQlicmVhazsKPiA+ ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gIAl9Cj4gPiAgCj4gPiAtZG9uZToKPiA+IC0JbXV0ZXhf dW5sb2NrKCZ1aWYtPmVudGl0eS5sb2NrKTsKPiA+IC0JcmV0dXJuIHJldDsKPiA+ICsJcmV0dXJu IDA7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBpbnQgdWlmX3NldF9zZWxlY3Rpb24oc3RydWN0 IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiBAQCAtMTA1LDE5ICs5OSwxNiBAQCBzdGF0aWMgaW50 IHVpZl9zZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ID4gIAlzdHJ1 Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+ID4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1l Zm10ICpmb3JtYXQ7Cj4gPiAgCXN0cnVjdCB2NGwyX3JlY3QgKnNlbGVjdGlvbjsKPiA+IC0JaW50 IHJldCA9IDA7Cj4gPiAgCj4gPiAgCWlmIChzZWwtPnBhZCAhPSBVSUZfUEFEX1NJTksgfHwKPiA+ ICAJICAgIHNlbC0+dGFyZ2V0ICE9IFY0TDJfU0VMX1RHVF9DUk9QKQo+ID4gIAkJcmV0dXJuIC1F SU5WQUw7Cj4gPiAgCj4gPiAtCW11dGV4X2xvY2soJnVpZi0+ZW50aXR5LmxvY2spOwo+ID4gKwln dWFyZChtdXRleCkoJnVpZi0+ZW50aXR5LmxvY2spOwo+ID4gIAo+ID4gIAlzdGF0ZSA9IHZzcDFf ZW50aXR5X2dldF9zdGF0ZSgmdWlmLT5lbnRpdHksIHNkX3N0YXRlLCBzZWwtPndoaWNoKTsKPiA+ IC0JaWYgKCFzdGF0ZSkgewo+ID4gLQkJcmV0ID0gLUVJTlZBTDsKPiA+IC0JCWdvdG8gZG9uZTsK PiA+IC0JfQo+ID4gKwlpZiAoIXN0YXRlKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4g PiAgCS8qIFRoZSBjcm9wIHJlY3RhbmdsZSBtdXN0IGJlIGluc2lkZSB0aGUgaW5wdXQgZnJhbWUu ICovCj4gPiAgCWZvcm1hdCA9IHY0bDJfc3ViZGV2X3N0YXRlX2dldF9mb3JtYXQoc3RhdGUsIFVJ Rl9QQURfU0lOSyk7Cj4gPiBAQCAtMTMzLDkgKzEyNCw3IEBAIHN0YXRpYyBpbnQgdWlmX3NldF9z ZWxlY3Rpb24oc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gPiAgCXNlbGVjdGlvbiA9IHY0 bDJfc3ViZGV2X3N0YXRlX2dldF9jcm9wKHN0YXRlLCBzZWwtPnBhZCk7Cj4gPiAgCSpzZWxlY3Rp b24gPSBzZWwtPnI7Cj4gPiAgCj4gPiAtZG9uZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZ1aWYtPmVu dGl0eS5sb2NrKTsKPiA+IC0JcmV0dXJuIHJldDsKPiA+ICsJcmV0dXJuIDA7Cj4gPiAgfQo+ID4g IAo+ID4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV92aWRlby5jIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV92aWRlby5jCj4gPiBpbmRleCBhOGRiOTRiZGI2NzAu LjRjZjJjYzM3MDQxNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVu ZXNhcy92c3AxL3ZzcDFfdmlkZW8uYwo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9y ZW5lc2FzL3ZzcDEvdnNwMV92aWRlby5jCj4gPiBAQCAtNTkwLDkgKzU5MCw5IEBAIHN0YXRpYyB2 b2lkIHZzcDFfdmlkZW9fcGlwZWxpbmVfcHV0KHN0cnVjdCB2c3AxX3BpcGVsaW5lICpwaXBlKQo+ ID4gIHsKPiA+ICAJc3RydWN0IG1lZGlhX2RldmljZSAqbWRldiA9ICZwaXBlLT5vdXRwdXQtPmVu dGl0eS52c3AxLT5tZWRpYV9kZXY7Cj4gPiAgCj4gPiAtCW11dGV4X2xvY2soJm1kZXYtPmdyYXBo X211dGV4KTsKPiA+ICsJZ3VhcmQobXV0ZXgpKCZtZGV2LT5ncmFwaF9tdXRleCk7Cj4gPiArCj4g PiAgCWtyZWZfcHV0KCZwaXBlLT5rcmVmLCB2c3AxX3ZpZGVvX3BpcGVsaW5lX3JlbGVhc2UpOwo+ ID4gLQltdXRleF91bmxvY2soJm1kZXYtPmdyYXBoX211dGV4KTsKPiA+ICB9Cj4gPiAgCj4gPiAg LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+IEBAIC05MzMsOSArOTMzLDkgQEAgdnNwMV92aWRl b19nZXRfZm9ybWF0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfZm9y bWF0ICpmb3JtYXQpCj4gPiAgCWlmIChmb3JtYXQtPnR5cGUgIT0gdmlkZW8tPnF1ZXVlLnR5cGUp Cj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAKPiA+IC0JbXV0ZXhfbG9jaygmdmlkZW8tPmxv Y2spOwo+ID4gKwlndWFyZChtdXRleCkoJnZpZGVvLT5sb2NrKTsKPiA+ICsKPiA+ICAJZm9ybWF0 LT5mbXQucGl4X21wID0gdmlkZW8tPnJ3cGYtPmZvcm1hdDsKPiA+IC0JbXV0ZXhfdW5sb2NrKCZ2 aWRlby0+bG9jayk7Cj4gPiAgCj4gPiAgCXJldHVybiAwOwo+ID4gIH0KPiA+IEBAIC05NjcsMTkg Kzk2NywxNSBAQCB2c3AxX3ZpZGVvX3NldF9mb3JtYXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQg KmZoLCBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmZvcm1hdCkKPiA+ICAJaWYgKHJldCA8IDApCj4gPiAg CQlyZXR1cm4gcmV0Owo+ID4gIAo+ID4gLQltdXRleF9sb2NrKCZ2aWRlby0+bG9jayk7Cj4gPiAr CWd1YXJkKG11dGV4KSgmdmlkZW8tPmxvY2spOwo+ID4gIAo+ID4gLQlpZiAodmIyX2lzX2J1c3ko JnZpZGVvLT5xdWV1ZSkpIHsKPiA+IC0JCXJldCA9IC1FQlVTWTsKPiA+IC0JCWdvdG8gZG9uZTsK PiA+IC0JfQo+ID4gKwlpZiAodmIyX2lzX2J1c3koJnZpZGVvLT5xdWV1ZSkpCj4gPiArCQlyZXR1 cm4gLUVCVVNZOwo+ID4gIAo+ID4gIAl2aWRlby0+cndwZi0+Zm9ybWF0ID0gZm9ybWF0LT5mbXQu cGl4X21wOwo+ID4gIAl2aWRlby0+cndwZi0+Zm10aW5mbyA9IGluZm87Cj4gPiAgCj4gPiAtZG9u ZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZ2aWRlby0+bG9jayk7Cj4gPiAtCXJldHVybiByZXQ7Cj4g PiArCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgaW50Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV93cGYuYyBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfd3BmLmMKPiA+IGluZGV4IGNkNmM1 NTkyMjIxYi4uZTdlZDNjOGU5ZTkwIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV93cGYuYwo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV93cGYuYwo+ID4gQEAgLTQ3LDcgKzQ3LDYgQEAgc3RhdGlj IGludCB2c3AxX3dwZl9zZXRfcm90YXRpb24oc3RydWN0IHZzcDFfcndwZiAqd3BmLCB1bnNpZ25l ZCBpbnQgcm90YXRpb24pCj4gPiAgCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKnNpbmtfZm9y bWF0Owo+ID4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpzb3VyY2VfZm9ybWF0Owo+ID4g IAlib29sIHJvdGF0ZTsKPiA+IC0JaW50IHJldCA9IDA7Cj4gPiAgCj4gPiAgCS8qCj4gPiAgCSAq IE9ubHkgY29uc2lkZXIgdGhlIDDCsC8xODDCsCBmcm9tL3RvIDkwwrAvMjcwwrAgbW9kaWZpY2F0 aW9ucywgdGhlIHJlc3QKPiA+IEBAIC01OCwxOSArNTcsMTcgQEAgc3RhdGljIGludCB2c3AxX3dw Zl9zZXRfcm90YXRpb24oc3RydWN0IHZzcDFfcndwZiAqd3BmLCB1bnNpZ25lZCBpbnQgcm90YXRp b24pCj4gPiAgCQlyZXR1cm4gMDsKPiA+ICAKPiA+ICAJLyogQ2hhbmdpbmcgcm90YXRpb24gaXNu J3QgYWxsb3dlZCB3aGVuIGJ1ZmZlcnMgYXJlIGFsbG9jYXRlZC4gKi8KPiA+IC0JbXV0ZXhfbG9j aygmdmlkZW8tPmxvY2spOwo+ID4gKwlndWFyZChtdXRleCkoJnZpZGVvLT5sb2NrKTsKPiA+ICAK PiA+IC0JaWYgKHZiMl9pc19idXN5KCZ2aWRlby0+cXVldWUpKSB7Cj4gPiAtCQlyZXQgPSAtRUJV U1k7Cj4gPiAtCQlnb3RvIGRvbmU7Cj4gPiAtCX0KPiA+ICsJaWYgKHZiMl9pc19idXN5KCZ2aWRl by0+cXVldWUpKQo+ID4gKwkJcmV0dXJuIC1FQlVTWTsKPiA+ICAKPiA+ICAJc2lua19mb3JtYXQg PSB2NGwyX3N1YmRldl9zdGF0ZV9nZXRfZm9ybWF0KHdwZi0+ZW50aXR5LnN0YXRlLAo+ID4gIAkJ CQkJCSAgIFJXUEZfUEFEX1NJTkspOwo+ID4gIAlzb3VyY2VfZm9ybWF0ID0gdjRsMl9zdWJkZXZf c3RhdGVfZ2V0X2Zvcm1hdCh3cGYtPmVudGl0eS5zdGF0ZSwKPiA+ICAJCQkJCQkgICAgIFJXUEZf UEFEX1NPVVJDRSk7Cj4gPiAgCj4gPiAtCW11dGV4X2xvY2soJndwZi0+ZW50aXR5LmxvY2spOwo+ ID4gKwlndWFyZChtdXRleCkoJndwZi0+ZW50aXR5LmxvY2spOwo+ID4gIAo+ID4gIAlpZiAocm90 YXRlKSB7Cj4gPiAgCQlzb3VyY2VfZm9ybWF0LT53aWR0aCA9IHNpbmtfZm9ybWF0LT5oZWlnaHQ7 Cj4gPiBAQCAtODIsMTEgKzc5LDcgQEAgc3RhdGljIGludCB2c3AxX3dwZl9zZXRfcm90YXRpb24o c3RydWN0IHZzcDFfcndwZiAqd3BmLCB1bnNpZ25lZCBpbnQgcm90YXRpb24pCj4gPiAgCj4gPiAg CXdwZi0+ZmxpcC5yb3RhdGUgPSByb3RhdGU7Cj4gPiAgCj4gPiAtCW11dGV4X3VubG9jaygmd3Bm LT5lbnRpdHkubG9jayk7Cj4gPiAtCj4gPiAtZG9uZToKPiA+IC0JbXV0ZXhfdW5sb2NrKCZ2aWRl by0+bG9jayk7Cj4gPiAtCXJldHVybiByZXQ7Cj4gPiArCXJldHVybiAwOwo+ID4gIH0KPiA+ICAK PiA+ICBzdGF0aWMgaW50IHZzcDFfd3BmX3NfY3RybChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQoK LS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0Cg==