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 5BEF0CD37AC for ; Wed, 13 May 2026 19:20:58 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B652210E336; Wed, 13 May 2026 19:20:57 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=ragnatech.se header.i=@ragnatech.se header.b="Nsq/Fdjr"; dkim=pass (2048-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.b="j/Gr5U51"; dkim-atps=neutral Received: from fhigh-a5-smtp.messagingengine.com (fhigh-a5-smtp.messagingengine.com [103.168.172.156]) by gabe.freedesktop.org (Postfix) with ESMTPS id 29F7C10E336 for ; Wed, 13 May 2026 19:20:57 +0000 (UTC) Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfhigh.phl.internal (Postfix) with ESMTP id 9506414001EC; Wed, 13 May 2026 15:20:56 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-03.internal (MEProxy); Wed, 13 May 2026 15:20:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ragnatech.se; h= cc:cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm2; t=1778700056; x=1778786456; bh=zii2b17jmP9/I1VC6NTbRHmle9vd5Xob7ehOJCpma+A=; b= Nsq/FdjrkfQCHxG29OQLQ7+CwdyunbGOgLfzIgA+mIPir6F9mN437TCAfowZ1PbC lFuL3KPa7Y7VJs7LYhouP631oWlFa2A7uSmdwiQ6Y3tR2ivUbsKr+KUFur2dMYpN 4BMNoRmzQEOsf2Fg9uY7O/pHGu75y+6EmRt8MzFFOiAngvQ5dtYh9EWC3c4Q6FSj WxVu88R6ISV+o26maEhj6BYeOmoFMIczbtDRpK4w2UjK290kEq19nBvPJWDo3eKh D1ZbgnUfzNZdqKEAiDmLElg94ThOijeA+Ve4UROX0s4jVDQ8KQ4ok9BwrqcU1QYU EIdOhr6gDOYxpqDVQsLCjQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1778700056; x= 1778786456; bh=zii2b17jmP9/I1VC6NTbRHmle9vd5Xob7ehOJCpma+A=; b=j /Gr5U51T33GFn6ePPhGaa81/bMI+ORegL99ThNC4N3E7VNt3XJWWzXa8zNg+qfHv hMM2A8CgOxGCn1A5jwC1ucWeZ2O8FpPeUMJoMPsP6wd+w/NE4QCsTA5/CiGArOqa xLfD6MUA+eePQi3ckhKbAC1Q8nQd4XQMrCpSYFk3N++fMiB7v6dHtjO0HP65R06Q HrFhfJnJR4bzyPVIccYU8Ng2GPmTEqDfY3VPJ46uha1HND2N35OBPOLbSJYVVh+H s8jif2vfx5paEH8EHqOe9uoxu0eqpHZbnRrwP7oYj+vWF6ltjLECFI+naZpIfW9w jB8wyIerZzwCqBliEuhoA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdduvdehgeekucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepfffhvfevuffkfhggtggugfgjsehtkeertddttdejnecuhfhrohhmpefpihhklhgr shcuufpnuggvrhhluhhnugcuoehnihhklhgrshdrshhouggvrhhluhhnugesrhgrghhnrg htvggthhdrshgvqeenucggtffrrghtthgvrhhnpeevteegtddvvdfhtdekgefhfeefheet heekkeegfeejudeiudeuleegtdehkeekteenucevlhhushhtvghrufhiiigvpedtnecurf grrhgrmhepmhgrihhlfhhrohhmpehnihhklhgrshdrshhouggvrhhluhhnugesrhgrghhn rghtvggthhdrshgvpdhnsggprhgtphhtthhopeelpdhmohguvgepshhmthhpohhuthdprh gtphhtthhopehlrghurhgvnhhtrdhpihhntghhrghrthdorhgvnhgvshgrshesihguvggr shhonhgsohgrrhgurdgtohhmpdhrtghpthhtoheplhhinhhugidqmhgvughirgesvhhgvg hrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopegurhhiqdguvghvvghlsehlihhsthhs rdhfrhgvvgguvghskhhtohhprdhorhhgpdhrtghpthhtoheplhhinhhugidqrhgvnhgvsh grshdqshhotgesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehtohhmihdr vhgrlhhkvghinhgvnhesihguvggrshhonhgsohgrrhgurdgtohhmpdhrtghpthhtohepkh hivghrrghnrdgsihhnghhhrghmsehiuggvrghsohhnsghorghrugdrtghomhdprhgtphht thhopegsihhjuhdruggrshdrjhiisegsphdrrhgvnhgvshgrshdrtghomhdprhgtphhtth hopegrihhrlhhivggusehgmhgrihhlrdgtohhmpdhrtghpthhtohepshhimhhonhgrsehf fhiflhhlrdgthh X-ME-Proxy: Feedback-ID: i80c9496c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 13 May 2026 15:20:55 -0400 (EDT) Date: Wed, 13 May 2026 21:20:54 +0200 From: Niklas =?utf-8?Q?S=C3=B6derlund?= To: Laurent Pinchart 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: <20260513192054.GH332351@ragnatech.se> References: <20260511235637.3468558-1-laurent.pinchart+renesas@ideasonboard.com> <20260511235637.3468558-6-laurent.pinchart+renesas@ideasonboard.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: base64 In-Reply-To: <20260511235637.3468558-6-laurent.pinchart+renesas@ideasonboard.com> 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" SGkgTGF1cmVudCwKClRoZXNlIG5ldyBjb25zdHJ1Y3RzIGFyZSBzbyB1c2VmdWwsIG5pY2UgdG8g dGFrZSB0aGUgdGltZSB0byBtYWtlIHVzZSBvZiAKdGhlbSBpbiBleGlzdGluZyBkcml2ZXJzLgoK T24gMjAyNi0wNS0xMiAwMjo1NjoyOSArMDMwMCwgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiBS ZXBsYWNlIG1hbnVhbCBtdXRleCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgd2l0aCBndWFyZHMuIFRo aXMgc2ltcGxpZmllcwo+IGVycm9yIHBhdGhzIGFuZCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgY29k ZS4gTGltaXQgdGhlIGNoYW5nZXMgdG8KPiBsb2NhdGlvbnMgd2hlcmUgdGhlIGd1YXJkIGNvdmVy cyB1bnRpbCB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiB0byBlYXNlCj4gcmV2aWV3LiBTY29wZWQg Z3VhcmRzIHdpbGwgYmUgaW50cm9kdWNlZCBzZXBhcmF0ZWx5Lgo+IAo+IFNpZ25lZC1vZmYtYnk6 IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnQrcmVuZXNhc0BpZGVhc29uYm9hcmQu Y29tPgoKUmV2aWV3ZWQtYnk6IE5pa2xhcyBTw7ZkZXJsdW5kIDxuaWtsYXMuc29kZXJsdW5kK3Jl bmVzYXNAcmFnbmF0ZWNoLnNlPgoKPiAtLS0KPiAgLi4uL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMv dnNwMS92c3AxX2JyeC5jICAgIHwgMjYgKysrKy0tLS0tLS0KPiAgLi4uL21lZGlhL3BsYXRmb3Jt L3JlbmVzYXMvdnNwMS92c3AxX2RybS5jICAgIHwgIDcgKy0tCj4gIC4uLi9tZWRpYS9wbGF0Zm9y bS9yZW5lc2FzL3ZzcDEvdnNwMV9lbnRpdHkuYyB8IDE5ICsrKy0tLS0tCj4gIC4uLi9tZWRpYS9w bGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9oaXN0by5jICB8IDM1ICsrKysrLS0tLS0tLS0tLQo+ ICAuLi4vbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfaHNpdC5jICAgfCAxNSArKyst LS0tCj4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9yd3BmLmMgICB8IDQ0 ICsrKysrKy0tLS0tLS0tLS0tLS0KPiAgLi4uL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92 c3AxX3NydS5jICAgIHwgMTMgKystLS0tCj4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3Zz cDEvdnNwMV91ZHMuYyAgICB8IDEzICsrLS0tLQo+ICAuLi4vbWVkaWEvcGxhdGZvcm0vcmVuZXNh cy92c3AxL3ZzcDFfdWlmLmMgICAgfCAyOSArKysrLS0tLS0tLS0KPiAgLi4uL21lZGlhL3BsYXRm b3JtL3JlbmVzYXMvdnNwMS92c3AxX3ZpZGVvLmMgIHwgMjAgKysrKy0tLS0tCj4gIC4uLi9tZWRp YS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV93cGYuYyAgICB8IDE3ICsrKy0tLS0KPiAgMTEg ZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTYxIGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2JyeC5j IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9icnguYwo+IGluZGV4 IDlkOTNjYjhiOGU4Mi4uYmQyNjcyMzQxMzg2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfYnJ4LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2JyeC5jCj4gQEAgLTEzMCwxNSArMTMwLDEyIEBAIHN0 YXRpYyBpbnQgYnJ4X3NldF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAlz dHJ1Y3QgdnNwMV9icnggKmJyeCA9IHRvX2JyeChzdWJkZXYpOwo+ICAJc3RydWN0IHY0bDJfc3Vi ZGV2X3N0YXRlICpzdGF0ZTsKPiAgCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKmZvcm1hdDsK PiAtCWludCByZXQgPSAwOwo+ICAKPiAtCW11dGV4X2xvY2soJmJyeC0+ZW50aXR5LmxvY2spOwo+ ICsJZ3VhcmQobXV0ZXgpKCZicngtPmVudGl0eS5sb2NrKTsKPiAgCj4gIAlzdGF0ZSA9IHZzcDFf ZW50aXR5X2dldF9zdGF0ZSgmYnJ4LT5lbnRpdHksIHNkX3N0YXRlLCBmbXQtPndoaWNoKTsKPiAt CWlmICghc3RhdGUpIHsKPiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0JCWdvdG8gZG9uZTsKPiAtCX0K PiArCWlmICghc3RhdGUpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJYnJ4X3RyeV9mb3Jt YXQoYnJ4LCBzdGF0ZSwgZm10LT5wYWQsICZmbXQtPmZvcm1hdCk7Cj4gIAo+IEBAIC0xNjYsOSAr MTYzLDcgQEAgc3RhdGljIGludCBicnhfc2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1 YmRldiwKPiAgCQl9Cj4gIAl9Cj4gIAo+IC1kb25lOgo+IC0JbXV0ZXhfdW5sb2NrKCZicngtPmVu dGl0eS5sb2NrKTsKPiAtCXJldHVybiByZXQ7Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3Rh dGljIGludCBicnhfZ2V0X3NlbGVjdGlvbihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiBA QCAtMjEzLDcgKzIwOCw2IEBAIHN0YXRpYyBpbnQgYnJ4X3NldF9zZWxlY3Rpb24oc3RydWN0IHY0 bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAlzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+ ICAJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqZm9ybWF0Owo+ICAJc3RydWN0IHY0bDJfcmVj dCAqY29tcG9zZTsKPiAtCWludCByZXQgPSAwOwo+ICAKPiAgCWlmIChzZWwtPnBhZCA9PSBicngt PmVudGl0eS5zb3VyY2VfcGFkKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0yMjEsMTMgKzIx NSwxMSBAQCBzdGF0aWMgaW50IGJyeF9zZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAq c3ViZGV2LAo+ICAJaWYgKHNlbC0+dGFyZ2V0ICE9IFY0TDJfU0VMX1RHVF9DT01QT1NFKQo+ICAJ CXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCW11dGV4X2xvY2soJmJyeC0+ZW50aXR5LmxvY2spOwo+ ICsJZ3VhcmQobXV0ZXgpKCZicngtPmVudGl0eS5sb2NrKTsKPiAgCj4gIAlzdGF0ZSA9IHZzcDFf ZW50aXR5X2dldF9zdGF0ZSgmYnJ4LT5lbnRpdHksIHNkX3N0YXRlLCBzZWwtPndoaWNoKTsKPiAt CWlmICghc3RhdGUpIHsKPiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0JCWdvdG8gZG9uZTsKPiAtCX0K PiArCWlmICghc3RhdGUpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJLyoKPiAgCSAqIFRo ZSBjb21wb3NlIHJlY3RhbmdsZSB0b3AgbGVmdCBjb3JuZXIgbXVzdCBiZSBpbnNpZGUgdGhlIG91 dHB1dAo+IEBAIC0yNDgsOSArMjQwLDcgQEAgc3RhdGljIGludCBicnhfc2V0X3NlbGVjdGlvbihz dHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiAgCWNvbXBvc2UgPSB2NGwyX3N1YmRldl9zdGF0 ZV9nZXRfY29tcG9zZShzdGF0ZSwgc2VsLT5wYWQpOwo+ICAJKmNvbXBvc2UgPSBzZWwtPnI7Cj4g IAo+IC1kb25lOgo+IC0JbXV0ZXhfdW5sb2NrKCZicngtPmVudGl0eS5sb2NrKTsKPiAtCXJldHVy biByZXQ7Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwy X3N1YmRldl9wYWRfb3BzIGJyeF9wYWRfb3BzID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2RybS5jIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9kcm0uYwo+IGluZGV4IDFmNDMxODc0MDY0ZC4uMTQzOWNm N2JmYjU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3Ax L3ZzcDFfZHJtLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92 c3AxX2RybS5jCj4gQEAgLTkyMCw3ICs5MjAsNyBAQCB2b2lkIHZzcDFfZHVfYXRvbWljX2ZsdXNo KHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGVfaW5kZXgsCj4gIAo+ICAJZHJt X3BpcGUtPmNyYyA9IGNmZy0+Y3JjOwo+ICAKPiAtCW11dGV4X2xvY2soJnZzcDEtPmRybS0+bG9j ayk7Cj4gKwlndWFyZChtdXRleCkoJnZzcDEtPmRybS0+bG9jayk7Cj4gIAo+ICAJaWYgKGNmZy0+ d3JpdGViYWNrLnBpeGVsZm9ybWF0KSB7Cj4gIAkJY29uc3Qgc3RydWN0IHZzcDFfZHVfd3JpdGVi YWNrX2NvbmZpZyAqd2JfY2ZnID0gJmNmZy0+d3JpdGViYWNrOwo+IEBAIC05MjksNyArOTI5LDcg QEAgdm9pZCB2c3AxX2R1X2F0b21pY19mbHVzaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVk IGludCBwaXBlX2luZGV4LAo+ICAJCQkJCQkgICAgICAgd2JfY2ZnLT5waXhlbGZvcm1hdCwKPiAg CQkJCQkJICAgICAgIHdiX2NmZy0+cGl0Y2gpOwo+ICAJCWlmIChXQVJOX09OKHJldCA8IDApKQo+ IC0JCQlnb3RvIGRvbmU7Cj4gKwkJCXJldHVybjsKPiAgCj4gIAkJcGlwZS0+b3V0cHV0LT5tZW0u YWRkclswXSA9IHdiX2NmZy0+bWVtWzBdOwo+ICAJCXBpcGUtPm91dHB1dC0+bWVtLmFkZHJbMV0g PSB3Yl9jZmctPm1lbVsxXTsKPiBAQCAtOTQyLDkgKzk0Miw2IEBAIHZvaWQgdnNwMV9kdV9hdG9t aWNfZmx1c2goc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZV9pbmRleCwKPiAg CXZzcDFfcGlwZWxpbmVfZHVtcChwaXBlLCAiYXRvbWljIHVwZGF0ZSIpOwo+ICAKPiAgCXZzcDFf ZHVfcGlwZWxpbmVfY29uZmlndXJlKHBpcGUpOwo+IC0KPiAtZG9uZToKPiAtCW11dGV4X3VubG9j aygmdnNwMS0+ZHJtLT5sb2NrKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTCh2c3AxX2R1X2F0 b21pY19mbHVzaCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Jl bmVzYXMvdnNwMS92c3AxX2VudGl0eS5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2Fz L3ZzcDEvdnNwMV9lbnRpdHkuYwo+IGluZGV4IDgzOWI3NWI2MmNlYi4uMzgyMGJhNTNiNDVmIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfZW50 aXR5LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX2Vu dGl0eS5jCj4gQEAgLTE3Miw5ICsxNzIsOSBAQCBpbnQgdnNwMV9zdWJkZXZfZ2V0X3BhZF9mb3Jt YXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAlpZiAoIXN0YXRlKQo+ICAJCXJldHVy biAtRUlOVkFMOwo+ICAKPiAtCW11dGV4X2xvY2soJmVudGl0eS0+bG9jayk7Cj4gKwlndWFyZCht dXRleCkoJmVudGl0eS0+bG9jayk7Cj4gKwo+ICAJZm10LT5mb3JtYXQgPSAqdjRsMl9zdWJkZXZf c3RhdGVfZ2V0X2Zvcm1hdChzdGF0ZSwgZm10LT5wYWQpOwo+IC0JbXV0ZXhfdW5sb2NrKCZlbnRp dHktPmxvY2spOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTMwOCwyMiArMzA4LDE5IEBA IGludCB2c3AxX3N1YmRldl9zZXRfcGFkX2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRl diwKPiAgCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKmZvcm1hdDsKPiAgCXN0cnVjdCB2NGwy X3JlY3QgKnNlbGVjdGlvbjsKPiAgCXVuc2lnbmVkIGludCBpOwo+IC0JaW50IHJldCA9IDA7Cj4g IAo+IC0JbXV0ZXhfbG9jaygmZW50aXR5LT5sb2NrKTsKPiArCWd1YXJkKG11dGV4KSgmZW50aXR5 LT5sb2NrKTsKPiAgCj4gIAlzdGF0ZSA9IHZzcDFfZW50aXR5X2dldF9zdGF0ZShlbnRpdHksIHNk X3N0YXRlLCBmbXQtPndoaWNoKTsKPiAtCWlmICghc3RhdGUpIHsKPiAtCQlyZXQgPSAtRUlOVkFM Owo+IC0JCWdvdG8gZG9uZTsKPiAtCX0KPiArCWlmICghc3RhdGUpCj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gIAo+ICAJZm9ybWF0ID0gdjRsMl9zdWJkZXZfc3RhdGVfZ2V0X2Zvcm1hdChzdGF0ZSwg Zm10LT5wYWQpOwo+ICAKPiAgCWlmIChmbXQtPnBhZCA9PSBlbnRpdHktPnNvdXJjZV9wYWQpIHsK PiAgCQkvKiBUaGUgb3V0cHV0IGZvcm1hdCBjYW4ndCBiZSBtb2RpZmllZC4gKi8KPiAgCQlmbXQt PmZvcm1hdCA9ICpmb3JtYXQ7Cj4gLQkJZ290byBkb25lOwo+ICsJCXJldHVybiAwOwo+ICAJfQo+ ICAKPiAgCS8qCj4gQEAgLTM2OSw5ICszNjYsNyBAQCBpbnQgdnNwMV9zdWJkZXZfc2V0X3BhZF9m b3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAlzZWxlY3Rpb24tPndpZHRoID0g Zm9ybWF0LT53aWR0aDsKPiAgCXNlbGVjdGlvbi0+aGVpZ2h0ID0gZm9ybWF0LT5oZWlnaHQ7Cj4g IAo+IC1kb25lOgo+IC0JbXV0ZXhfdW5sb2NrKCZlbnRpdHktPmxvY2spOwo+IC0JcmV0dXJuIHJl dDsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHZzcDFfZW50aXR5X2luaXRf c3RhdGUoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfaGlzdG8uYyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfaGlzdG8uYwo+IGluZGV4IDNmODdhMmM5ZGYwZS4u NzJmNmVmMmZkYzRmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNh cy92c3AxL3ZzcDFfaGlzdG8uYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNh cy92c3AxL3ZzcDFfaGlzdG8uYwo+IEBAIC0xOTYsMTggKzE5NiwxNSBAQCBzdGF0aWMgaW50IGhp c3RvX2dldF9zZWxlY3Rpb24oc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAlzdHJ1Y3Qg djRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+ICAJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAq Zm9ybWF0Owo+ICAJc3RydWN0IHY0bDJfcmVjdCAqY3JvcDsKPiAtCWludCByZXQgPSAwOwo+ICAK PiAgCWlmIChzZWwtPnBhZCAhPSBISVNUT19QQURfU0lOSykKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCj4gLQltdXRleF9sb2NrKCZoaXN0by0+ZW50aXR5LmxvY2spOwo+ICsJZ3VhcmQobXV0ZXgp KCZoaXN0by0+ZW50aXR5LmxvY2spOwo+ICAKPiAgCXN0YXRlID0gdnNwMV9lbnRpdHlfZ2V0X3N0 YXRlKCZoaXN0by0+ZW50aXR5LCBzZF9zdGF0ZSwgc2VsLT53aGljaCk7Cj4gLQlpZiAoIXN0YXRl KSB7Cj4gLQkJcmV0ID0gLUVJTlZBTDsKPiAtCQlnb3RvIGRvbmU7Cj4gLQl9Cj4gKwlpZiAoIXN0 YXRlKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCXN3aXRjaCAoc2VsLT50YXJnZXQpIHsK PiAgCWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBPU0VfQk9VTkRTOgo+IEBAIC0yMzcsMTMgKzIzNCwx MCBAQCBzdGF0aWMgaW50IGhpc3RvX2dldF9zZWxlY3Rpb24oc3RydWN0IHY0bDJfc3ViZGV2ICpz dWJkZXYsCj4gIAkJYnJlYWs7Cj4gIAo+ICAJZGVmYXVsdDoKPiAtCQlyZXQgPSAtRUlOVkFMOwo+ IC0JCWJyZWFrOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiAtZG9uZToKPiAtCW11 dGV4X3VubG9jaygmaGlzdG8tPmVudGl0eS5sb2NrKTsKPiAtCXJldHVybiByZXQ7Cj4gKwlyZXR1 cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBoaXN0b19zZXRfY3JvcChzdHJ1Y3QgdjRsMl9z dWJkZXYgKnN1YmRldiwKPiBAQCAtMzIxLDI5ICszMTUsMjIgQEAgc3RhdGljIGludCBoaXN0b19z ZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ICB7Cj4gIAlzdHJ1Y3Qg dnNwMV9oaXN0b2dyYW0gKmhpc3RvID0gc3ViZGV2X3RvX2hpc3RvKHN1YmRldik7Cj4gIAlzdHJ1 Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+IC0JaW50IHJldDsKPiAgCj4gIAlpZiAoc2Vs LT5wYWQgIT0gSElTVE9fUEFEX1NJTkspCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JbXV0 ZXhfbG9jaygmaGlzdG8tPmVudGl0eS5sb2NrKTsKPiArCWd1YXJkKG11dGV4KSgmaGlzdG8tPmVu dGl0eS5sb2NrKTsKPiAgCj4gIAlzdGF0ZSA9IHZzcDFfZW50aXR5X2dldF9zdGF0ZSgmaGlzdG8t PmVudGl0eSwgc2Rfc3RhdGUsIHNlbC0+d2hpY2gpOwo+IC0JaWYgKCFzdGF0ZSkgewo+IC0JCXJl dCA9IC1FSU5WQUw7Cj4gLQkJZ290byBkb25lOwo+IC0JfQo+ICsJaWYgKCFzdGF0ZSkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAlpZiAoc2VsLT50YXJnZXQgPT0gVjRMMl9TRUxfVEdUX0NS T1ApCj4gLQkJcmV0ID0gaGlzdG9fc2V0X2Nyb3Aoc3ViZGV2LCBzdGF0ZSwgc2VsKTsKPiArCQly ZXR1cm4gaGlzdG9fc2V0X2Nyb3Aoc3ViZGV2LCBzdGF0ZSwgc2VsKTsKPiAgCWVsc2UgaWYgKHNl bC0+dGFyZ2V0ID09IFY0TDJfU0VMX1RHVF9DT01QT1NFKQo+IC0JCXJldCA9IGhpc3RvX3NldF9j b21wb3NlKHN1YmRldiwgc3RhdGUsIHNlbCk7Cj4gKwkJcmV0dXJuIGhpc3RvX3NldF9jb21wb3Nl KHN1YmRldiwgc3RhdGUsIHNlbCk7Cj4gIAllbHNlCj4gLQkJcmV0ID0gLUVJTlZBTDsKPiAtCj4g LWRvbmU6Cj4gLQltdXRleF91bmxvY2soJmhpc3RvLT5lbnRpdHkubG9jayk7Cj4gLQlyZXR1cm4g cmV0Owo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGhpc3RvX3Nl dF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfaHNpdC5jIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9oc2l0LmMKPiBpbmRleCA4MzBlMTI0YmViN2Iu LmRmMDY5YzIyODI0MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVz YXMvdnNwMS92c3AxX2hzaXQuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNh cy92c3AxL3ZzcDFfaHNpdC5jCj4gQEAgLTExNSwxNSArMTE1LDEyIEBAIHN0YXRpYyBpbnQgaHNp dF9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ICAJc3RydWN0IHZzcDFf aHNpdCAqaHNpdCA9IHRvX2hzaXQoc3ViZGV2KTsKPiAgCXN0cnVjdCB2NGwyX3N1YmRldl9zdGF0 ZSAqc3RhdGU7Cj4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmb3JtYXQ7Cj4gLQlpbnQg cmV0ID0gMDsKPiAgCj4gLQltdXRleF9sb2NrKCZoc2l0LT5lbnRpdHkubG9jayk7Cj4gKwlndWFy ZChtdXRleCkoJmhzaXQtPmVudGl0eS5sb2NrKTsKPiAgCj4gIAlzdGF0ZSA9IHZzcDFfZW50aXR5 X2dldF9zdGF0ZSgmaHNpdC0+ZW50aXR5LCBzZF9zdGF0ZSwgZm10LT53aGljaCk7Cj4gLQlpZiAo IXN0YXRlKSB7Cj4gLQkJcmV0ID0gLUVJTlZBTDsKPiAtCQlnb3RvIGRvbmU7Cj4gLQl9Cj4gKwlp ZiAoIXN0YXRlKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWZvcm1hdCA9IHY0bDJfc3Vi ZGV2X3N0YXRlX2dldF9mb3JtYXQoc3RhdGUsIGZtdC0+cGFkKTsKPiAgCj4gQEAgLTEzMyw3ICsx MzAsNyBAQCBzdGF0aWMgaW50IGhzaXRfc2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1 YmRldiwKPiAgCQkgKiBtb2RpZmllZC4KPiAgCQkgKi8KPiAgCQlmbXQtPmZvcm1hdCA9ICpmb3Jt YXQ7Cj4gLQkJZ290byBkb25lOwo+ICsJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAgCWZvcm1hdC0+ Y29kZSA9IGhzaXQtPmludmVyc2UgPyBNRURJQV9CVVNfRk1UX0FIU1Y4ODg4XzFYMzIKPiBAQCAt MTYxLDkgKzE1OCw3IEBAIHN0YXRpYyBpbnQgaHNpdF9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1 YmRldiAqc3ViZGV2LAo+ICAKPiAgCXZzcDFfZW50aXR5X2FkanVzdF9jb2xvcl9zcGFjZShmb3Jt YXQpOwo+ICAKPiAtZG9uZToKPiAtCW11dGV4X3VubG9jaygmaHNpdC0+ZW50aXR5LmxvY2spOwo+ IC0JcmV0dXJuIHJldDsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3Ry dWN0IHY0bDJfc3ViZGV2X3BhZF9vcHMgaHNpdF9wYWRfb3BzID0gewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX3J3cGYuYyBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfcndwZi5jCj4gaW5kZXggYzcyNTE4YjI5 Zjg0Li5jZWQwMTg3MGFjZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9y ZW5lc2FzL3ZzcDEvdnNwMV9yd3BmLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Jl bmVzYXMvdnNwMS92c3AxX3J3cGYuYwo+IEBAIC0xMTYsMTUgKzExNiwxMiBAQCBzdGF0aWMgaW50 IHZzcDFfcndwZl9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ICAJc3Ry dWN0IHZzcDFfcndwZiAqcndwZiA9IHRvX3J3cGYoc3ViZGV2KTsKPiAgCXN0cnVjdCB2NGwyX3N1 YmRldl9zdGF0ZSAqc3RhdGU7Cj4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmb3JtYXQ7 Cj4gLQlpbnQgcmV0ID0gMDsKPiAgCj4gLQltdXRleF9sb2NrKCZyd3BmLT5lbnRpdHkubG9jayk7 Cj4gKwlndWFyZChtdXRleCkoJnJ3cGYtPmVudGl0eS5sb2NrKTsKPiAgCj4gIAlzdGF0ZSA9IHZz cDFfZW50aXR5X2dldF9zdGF0ZSgmcndwZi0+ZW50aXR5LCBzZF9zdGF0ZSwgZm10LT53aGljaCk7 Cj4gLQlpZiAoIXN0YXRlKSB7Cj4gLQkJcmV0ID0gLUVJTlZBTDsKPiAtCQlnb3RvIGRvbmU7Cj4g LQl9Cj4gKwlpZiAoIXN0YXRlKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCS8qIERlZmF1 bHQgdG8gWVVWIGlmIHRoZSByZXF1ZXN0ZWQgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQuICovCj4g IAlpZiAoZm10LT5mb3JtYXQuY29kZSAhPSBNRURJQV9CVVNfRk1UX0FSR0I4ODg4XzFYMzIgJiYK PiBAQCAtMTc0LDcgKzE3MSw3IEBAIHN0YXRpYyBpbnQgdnNwMV9yd3BmX3NldF9mb3JtYXQoc3Ry dWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAkJZm10LT5mb3JtYXQgPSAqZm9ybWF0Owo+ICAJ CWZtdC0+Zm9ybWF0LmZsYWdzID0gZmxhZ3M7Cj4gIAo+IC0JCWdvdG8gZG9uZTsKPiArCQlyZXR1 cm4gMDsKPiAgCX0KPiAgCj4gIAlmb3JtYXQtPmNvZGUgPSBmbXQtPmZvcm1hdC5jb2RlOwo+IEBA IC0yMTMsOSArMjEwLDcgQEAgc3RhdGljIGludCB2c3AxX3J3cGZfc2V0X2Zvcm1hdChzdHJ1Y3Qg djRsMl9zdWJkZXYgKnN1YmRldiwKPiAgCQlmb3JtYXQtPmhlaWdodCA9IGZtdC0+Zm9ybWF0Lndp ZHRoOwo+ICAJfQo+ICAKPiAtZG9uZToKPiAtCW11dGV4X3VubG9jaygmcndwZi0+ZW50aXR5Lmxv Y2spOwo+IC0JcmV0dXJuIHJldDsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50 IHZzcDFfcndwZl9nZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+IEBA IC0yMjUsNyArMjIwLDYgQEAgc3RhdGljIGludCB2c3AxX3J3cGZfZ2V0X3NlbGVjdGlvbihzdHJ1 Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiAgCXN0cnVjdCB2c3AxX3J3cGYgKnJ3cGYgPSB0b19y d3BmKHN1YmRldik7Cj4gIAlzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+ICAJc3Ry dWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqZm9ybWF0Owo+IC0JaW50IHJldCA9IDA7Cj4gIAo+ICAJ LyoKPiAgCSAqIENyb3BwaW5nIGlzIG9ubHkgc3VwcG9ydGVkIG9uIHRoZSBSUEYgYW5kIGlzIGlt cGxlbWVudGVkIG9uIHRoZSBzaW5rCj4gQEAgLTIzNCwxMyArMjI4LDExIEBAIHN0YXRpYyBpbnQg dnNwMV9yd3BmX2dldF9zZWxlY3Rpb24oc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAlp ZiAocndwZi0+ZW50aXR5LnR5cGUgPT0gVlNQMV9FTlRJVFlfV1BGIHx8IHNlbC0+cGFkICE9IFJX UEZfUEFEX1NJTkspCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmcndw Zi0+ZW50aXR5LmxvY2spOwo+ICsJZ3VhcmQobXV0ZXgpKCZyd3BmLT5lbnRpdHkubG9jayk7Cj4g IAo+ICAJc3RhdGUgPSB2c3AxX2VudGl0eV9nZXRfc3RhdGUoJnJ3cGYtPmVudGl0eSwgc2Rfc3Rh dGUsIHNlbC0+d2hpY2gpOwo+IC0JaWYgKCFzdGF0ZSkgewo+IC0JCXJldCA9IC1FSU5WQUw7Cj4g LQkJZ290byBkb25lOwo+IC0JfQo+ICsJaWYgKCFzdGF0ZSkKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiAgCj4gIAlzd2l0Y2ggKHNlbC0+dGFyZ2V0KSB7Cj4gIAljYXNlIFY0TDJfU0VMX1RHVF9DUk9Q Ogo+IEBAIC0yNTYsMTMgKzI0OCwxMCBAQCBzdGF0aWMgaW50IHZzcDFfcndwZl9nZXRfc2VsZWN0 aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ICAJCWJyZWFrOwo+ICAKPiAgCWRlZmF1 bHQ6Cj4gLQkJcmV0ID0gLUVJTlZBTDsKPiAtCQlicmVhazsKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiAgCX0KPiAgCj4gLWRvbmU6Cj4gLQltdXRleF91bmxvY2soJnJ3cGYtPmVudGl0eS5sb2NrKTsK PiAtCXJldHVybiByZXQ7Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGludCB2c3Ax X3J3cGZfc2V0X3NlbGVjdGlvbihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwKPiBAQCAtMjc1 LDcgKzI2NCw2IEBAIHN0YXRpYyBpbnQgdnNwMV9yd3BmX3NldF9zZWxlY3Rpb24oc3RydWN0IHY0 bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAlzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+ ICAJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqZm9ybWF0Owo+ICAJc3RydWN0IHY0bDJfcmVj dCAqY3JvcDsKPiAtCWludCByZXQgPSAwOwo+ICAKPiAgCS8qCj4gIAkgKiBDcm9wcGluZyBpcyBv bmx5IHN1cHBvcnRlZCBvbiB0aGUgUlBGIGFuZCBpcyBpbXBsZW1lbnRlZCBvbiB0aGUgc2luawo+ IEBAIC0yODcsMTMgKzI3NSwxMSBAQCBzdGF0aWMgaW50IHZzcDFfcndwZl9zZXRfc2VsZWN0aW9u KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ICAJaWYgKHNlbC0+dGFyZ2V0ICE9IFY0TDJf U0VMX1RHVF9DUk9QKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCW11dGV4X2xvY2soJnJ3 cGYtPmVudGl0eS5sb2NrKTsKPiArCWd1YXJkKG11dGV4KSgmcndwZi0+ZW50aXR5LmxvY2spOwo+ ICAKPiAgCXN0YXRlID0gdnNwMV9lbnRpdHlfZ2V0X3N0YXRlKCZyd3BmLT5lbnRpdHksIHNkX3N0 YXRlLCBzZWwtPndoaWNoKTsKPiAtCWlmICghc3RhdGUpIHsKPiAtCQlyZXQgPSAtRUlOVkFMOwo+ IC0JCWdvdG8gZG9uZTsKPiAtCX0KPiArCWlmICghc3RhdGUpCj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gIAo+ICAJLyogTWFrZSBzdXJlIHRoZSBjcm9wIHJlY3RhbmdsZSBpcyBlbnRpcmVseSBjb250 YWluZWQgaW4gdGhlIGltYWdlLiAqLwo+ICAJZm9ybWF0ID0gdjRsMl9zdWJkZXZfc3RhdGVfZ2V0 X2Zvcm1hdChzdGF0ZSwgUldQRl9QQURfU0lOSyk7Cj4gQEAgLTM0Miw5ICszMjgsNyBAQCBzdGF0 aWMgaW50IHZzcDFfcndwZl9zZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2 LAo+ICAJZm9ybWF0LT53aWR0aCA9IGNyb3AtPndpZHRoOwo+ICAJZm9ybWF0LT5oZWlnaHQgPSBj cm9wLT5oZWlnaHQ7Cj4gIAo+IC1kb25lOgo+IC0JbXV0ZXhfdW5sb2NrKCZyd3BmLT5lbnRpdHku bG9jayk7Cj4gLQlyZXR1cm4gcmV0Owo+ICsJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX29wcyB2c3AxX3J3cGZfcGFkX29wcyA9IHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9zcnUu YyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfc3J1LmMKPiBpbmRl eCA5NDE0OWRhMGM5MDAuLjNmZDlmZGU1YzcyNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX3NydS5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV9zcnUuYwo+IEBAIC0yMTYsMTUgKzIxNiwxMiBAQCBz dGF0aWMgaW50IHNydV9zZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ICAJ c3RydWN0IHZzcDFfc3J1ICpzcnUgPSB0b19zcnUoc3ViZGV2KTsKPiAgCXN0cnVjdCB2NGwyX3N1 YmRldl9zdGF0ZSAqc3RhdGU7Cj4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmb3JtYXQ7 Cj4gLQlpbnQgcmV0ID0gMDsKPiAgCj4gLQltdXRleF9sb2NrKCZzcnUtPmVudGl0eS5sb2NrKTsK PiArCWd1YXJkKG11dGV4KSgmc3J1LT5lbnRpdHkubG9jayk7Cj4gIAo+ICAJc3RhdGUgPSB2c3Ax X2VudGl0eV9nZXRfc3RhdGUoJnNydS0+ZW50aXR5LCBzZF9zdGF0ZSwgZm10LT53aGljaCk7Cj4g LQlpZiAoIXN0YXRlKSB7Cj4gLQkJcmV0ID0gLUVJTlZBTDsKPiAtCQlnb3RvIGRvbmU7Cj4gLQl9 Cj4gKwlpZiAoIXN0YXRlKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCXNydV90cnlfZm9y bWF0KHNydSwgc3RhdGUsIGZtdC0+cGFkLCAmZm10LT5mb3JtYXQpOwo+ICAKPiBAQCAtMjM5LDkg KzIzNiw3IEBAIHN0YXRpYyBpbnQgc3J1X3NldF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpz dWJkZXYsCj4gIAkJc3J1X3RyeV9mb3JtYXQoc3J1LCBzdGF0ZSwgU1JVX1BBRF9TT1VSQ0UsIGZv cm1hdCk7Cj4gIAl9Cj4gIAo+IC1kb25lOgo+IC0JbXV0ZXhfdW5sb2NrKCZzcnUtPmVudGl0eS5s b2NrKTsKPiAtCXJldHVybiByZXQ7Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGNv bnN0IHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfb3BzIHNydV9wYWRfb3BzID0gewo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX3Vkcy5jIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV91ZHMuYwo+IGluZGV4IGRkNDcy MjMxNWM1Ni4uOWY3YmIxMTI5MjllIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vcmVuZXNhcy92c3AxL3ZzcDFfdWRzLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L3JlbmVzYXMvdnNwMS92c3AxX3Vkcy5jCj4gQEAgLTE5OSwxNSArMTk5LDEyIEBAIHN0YXRpYyBp bnQgdWRzX3NldF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsCj4gIAlzdHJ1Y3Qg dnNwMV91ZHMgKnVkcyA9IHRvX3VkcyhzdWJkZXYpOwo+ICAJc3RydWN0IHY0bDJfc3ViZGV2X3N0 YXRlICpzdGF0ZTsKPiAgCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKmZvcm1hdDsKPiAtCWlu dCByZXQgPSAwOwo+ICAKPiAtCW11dGV4X2xvY2soJnVkcy0+ZW50aXR5LmxvY2spOwo+ICsJZ3Vh cmQobXV0ZXgpKCZ1ZHMtPmVudGl0eS5sb2NrKTsKPiAgCj4gIAlzdGF0ZSA9IHZzcDFfZW50aXR5 X2dldF9zdGF0ZSgmdWRzLT5lbnRpdHksIHNkX3N0YXRlLCBmbXQtPndoaWNoKTsKPiAtCWlmICgh c3RhdGUpIHsKPiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0JCWdvdG8gZG9uZTsKPiAtCX0KPiArCWlm ICghc3RhdGUpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJdWRzX3RyeV9mb3JtYXQodWRz LCBzdGF0ZSwgZm10LT5wYWQsICZmbXQtPmZvcm1hdCk7Cj4gIAo+IEBAIC0yMjIsOSArMjE5LDcg QEAgc3RhdGljIGludCB1ZHNfc2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldiwK PiAgCQl1ZHNfdHJ5X2Zvcm1hdCh1ZHMsIHN0YXRlLCBVRFNfUEFEX1NPVVJDRSwgZm9ybWF0KTsK PiAgCX0KPiAgCj4gLWRvbmU6Cj4gLQltdXRleF91bmxvY2soJnVkcy0+ZW50aXR5LmxvY2spOwo+ IC0JcmV0dXJuIHJldDsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNw MS92c3AxX3VpZi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV91 aWYuYwo+IGluZGV4IDNhZWZlNWM5ZDQyMS4uNTJkYmZlNThhNzBkIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfdWlmLmMKPiArKysgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX3VpZi5jCj4gQEAgLTYwLDE4ICs2 MCwxNSBAQCBzdGF0aWMgaW50IHVpZl9nZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAq c3ViZGV2LAo+ICAJc3RydWN0IHZzcDFfdWlmICp1aWYgPSB0b191aWYoc3ViZGV2KTsKPiAgCXN0 cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGU7Cj4gIAlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1l Zm10ICpmb3JtYXQ7Cj4gLQlpbnQgcmV0ID0gMDsKPiAgCj4gIAlpZiAoc2VsLT5wYWQgIT0gVUlG X1BBRF9TSU5LKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCW11dGV4X2xvY2soJnVpZi0+ ZW50aXR5LmxvY2spOwo+ICsJZ3VhcmQobXV0ZXgpKCZ1aWYtPmVudGl0eS5sb2NrKTsKPiAgCj4g IAlzdGF0ZSA9IHZzcDFfZW50aXR5X2dldF9zdGF0ZSgmdWlmLT5lbnRpdHksIHNkX3N0YXRlLCBz ZWwtPndoaWNoKTsKPiAtCWlmICghc3RhdGUpIHsKPiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0JCWdv dG8gZG9uZTsKPiAtCX0KPiArCWlmICghc3RhdGUpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ ICAJc3dpdGNoIChzZWwtPnRhcmdldCkgewo+ICAJY2FzZSBWNEwyX1NFTF9UR1RfQ1JPUF9CT1VO RFM6Cj4gQEAgLTg4LDEzICs4NSwxMCBAQCBzdGF0aWMgaW50IHVpZl9nZXRfc2VsZWN0aW9uKHN0 cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+ICAJCWJyZWFrOwo+ICAKPiAgCWRlZmF1bHQ6Cj4g LQkJcmV0ID0gLUVJTlZBTDsKPiAtCQlicmVhazsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0K PiAgCj4gLWRvbmU6Cj4gLQltdXRleF91bmxvY2soJnVpZi0+ZW50aXR5LmxvY2spOwo+IC0JcmV0 dXJuIHJldDsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHVpZl9zZXRfc2Vs ZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2LAo+IEBAIC0xMDUsMTkgKzk5LDE2IEBA IHN0YXRpYyBpbnQgdWlmX3NldF9zZWxlY3Rpb24oc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYs Cj4gIAlzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlOwo+ICAJc3RydWN0IHY0bDJfbWJ1 c19mcmFtZWZtdCAqZm9ybWF0Owo+ICAJc3RydWN0IHY0bDJfcmVjdCAqc2VsZWN0aW9uOwo+IC0J aW50IHJldCA9IDA7Cj4gIAo+ICAJaWYgKHNlbC0+cGFkICE9IFVJRl9QQURfU0lOSyB8fAo+ICAJ ICAgIHNlbC0+dGFyZ2V0ICE9IFY0TDJfU0VMX1RHVF9DUk9QKQo+ICAJCXJldHVybiAtRUlOVkFM Owo+ICAKPiAtCW11dGV4X2xvY2soJnVpZi0+ZW50aXR5LmxvY2spOwo+ICsJZ3VhcmQobXV0ZXgp KCZ1aWYtPmVudGl0eS5sb2NrKTsKPiAgCj4gIAlzdGF0ZSA9IHZzcDFfZW50aXR5X2dldF9zdGF0 ZSgmdWlmLT5lbnRpdHksIHNkX3N0YXRlLCBzZWwtPndoaWNoKTsKPiAtCWlmICghc3RhdGUpIHsK PiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0JCWdvdG8gZG9uZTsKPiAtCX0KPiArCWlmICghc3RhdGUp Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJLyogVGhlIGNyb3AgcmVjdGFuZ2xlIG11c3Qg YmUgaW5zaWRlIHRoZSBpbnB1dCBmcmFtZS4gKi8KPiAgCWZvcm1hdCA9IHY0bDJfc3ViZGV2X3N0 YXRlX2dldF9mb3JtYXQoc3RhdGUsIFVJRl9QQURfU0lOSyk7Cj4gQEAgLTEzMyw5ICsxMjQsNyBA QCBzdGF0aWMgaW50IHVpZl9zZXRfc2VsZWN0aW9uKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2 LAo+ICAJc2VsZWN0aW9uID0gdjRsMl9zdWJkZXZfc3RhdGVfZ2V0X2Nyb3Aoc3RhdGUsIHNlbC0+ cGFkKTsKPiAgCSpzZWxlY3Rpb24gPSBzZWwtPnI7Cj4gIAo+IC1kb25lOgo+IC0JbXV0ZXhfdW5s b2NrKCZ1aWYtPmVudGl0eS5sb2NrKTsKPiAtCXJldHVybiByZXQ7Cj4gKwlyZXR1cm4gMDsKPiAg fQo+ICAKPiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV92aWRlby5jIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV92aWRlby5jCj4gaW5kZXggYThkYjk0YmRiNjcwLi40 Y2YyY2MzNzA0MTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2Fz L3ZzcDEvdnNwMV92aWRlby5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2Fz L3ZzcDEvdnNwMV92aWRlby5jCj4gQEAgLTU5MCw5ICs1OTAsOSBAQCBzdGF0aWMgdm9pZCB2c3Ax X3ZpZGVvX3BpcGVsaW5lX3B1dChzdHJ1Y3QgdnNwMV9waXBlbGluZSAqcGlwZSkKPiAgewo+ICAJ c3RydWN0IG1lZGlhX2RldmljZSAqbWRldiA9ICZwaXBlLT5vdXRwdXQtPmVudGl0eS52c3AxLT5t ZWRpYV9kZXY7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmbWRldi0+Z3JhcGhfbXV0ZXgpOwo+ICsJZ3Vh cmQobXV0ZXgpKCZtZGV2LT5ncmFwaF9tdXRleCk7Cj4gKwo+ICAJa3JlZl9wdXQoJnBpcGUtPmty ZWYsIHZzcDFfdmlkZW9fcGlwZWxpbmVfcmVsZWFzZSk7Cj4gLQltdXRleF91bmxvY2soJm1kZXYt PmdyYXBoX211dGV4KTsKPiAgfQo+ICAKPiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBAQCAt OTMzLDkgKzkzMyw5IEBAIHZzcDFfdmlkZW9fZ2V0X2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwg dm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm9ybWF0KQo+ICAJaWYgKGZvcm1hdC0+dHlw ZSAhPSB2aWRlby0+cXVldWUudHlwZSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQltdXRl eF9sb2NrKCZ2aWRlby0+bG9jayk7Cj4gKwlndWFyZChtdXRleCkoJnZpZGVvLT5sb2NrKTsKPiAr Cj4gIAlmb3JtYXQtPmZtdC5waXhfbXAgPSB2aWRlby0+cndwZi0+Zm9ybWF0Owo+IC0JbXV0ZXhf dW5sb2NrKCZ2aWRlby0+bG9jayk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtOTY3LDE5 ICs5NjcsMTUgQEAgdnNwMV92aWRlb19zZXRfZm9ybWF0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lk ICpmaCwgc3RydWN0IHY0bDJfZm9ybWF0ICpmb3JtYXQpCj4gIAlpZiAocmV0IDwgMCkKPiAgCQly ZXR1cm4gcmV0Owo+ICAKPiAtCW11dGV4X2xvY2soJnZpZGVvLT5sb2NrKTsKPiArCWd1YXJkKG11 dGV4KSgmdmlkZW8tPmxvY2spOwo+ICAKPiAtCWlmICh2YjJfaXNfYnVzeSgmdmlkZW8tPnF1ZXVl KSkgewo+IC0JCXJldCA9IC1FQlVTWTsKPiAtCQlnb3RvIGRvbmU7Cj4gLQl9Cj4gKwlpZiAodmIy X2lzX2J1c3koJnZpZGVvLT5xdWV1ZSkpCj4gKwkJcmV0dXJuIC1FQlVTWTsKPiAgCj4gIAl2aWRl by0+cndwZi0+Zm9ybWF0ID0gZm9ybWF0LT5mbXQucGl4X21wOwo+ICAJdmlkZW8tPnJ3cGYtPmZt dGluZm8gPSBpbmZvOwo+ICAKPiAtZG9uZToKPiAtCW11dGV4X3VubG9jaygmdmlkZW8tPmxvY2sp Owo+IC0JcmV0dXJuIHJldDsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfd3Bm LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS92c3AxX3dwZi5jCj4gaW5k ZXggY2Q2YzU1OTIyMjFiLi5lN2VkM2M4ZTllOTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9yZW5lc2FzL3ZzcDEvdnNwMV93cGYuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vcmVuZXNhcy92c3AxL3ZzcDFfd3BmLmMKPiBAQCAtNDcsNyArNDcsNiBAQCBzdGF0 aWMgaW50IHZzcDFfd3BmX3NldF9yb3RhdGlvbihzdHJ1Y3QgdnNwMV9yd3BmICp3cGYsIHVuc2ln bmVkIGludCByb3RhdGlvbikKPiAgCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKnNpbmtfZm9y bWF0Owo+ICAJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqc291cmNlX2Zvcm1hdDsKPiAgCWJv b2wgcm90YXRlOwo+IC0JaW50IHJldCA9IDA7Cj4gIAo+ICAJLyoKPiAgCSAqIE9ubHkgY29uc2lk ZXIgdGhlIDDCsC8xODDCsCBmcm9tL3RvIDkwwrAvMjcwwrAgbW9kaWZpY2F0aW9ucywgdGhlIHJl c3QKPiBAQCAtNTgsMTkgKzU3LDE3IEBAIHN0YXRpYyBpbnQgdnNwMV93cGZfc2V0X3JvdGF0aW9u KHN0cnVjdCB2c3AxX3J3cGYgKndwZiwgdW5zaWduZWQgaW50IHJvdGF0aW9uKQo+ICAJCXJldHVy biAwOwo+ICAKPiAgCS8qIENoYW5naW5nIHJvdGF0aW9uIGlzbid0IGFsbG93ZWQgd2hlbiBidWZm ZXJzIGFyZSBhbGxvY2F0ZWQuICovCj4gLQltdXRleF9sb2NrKCZ2aWRlby0+bG9jayk7Cj4gKwln dWFyZChtdXRleCkoJnZpZGVvLT5sb2NrKTsKPiAgCj4gLQlpZiAodmIyX2lzX2J1c3koJnZpZGVv LT5xdWV1ZSkpIHsKPiAtCQlyZXQgPSAtRUJVU1k7Cj4gLQkJZ290byBkb25lOwo+IC0JfQo+ICsJ aWYgKHZiMl9pc19idXN5KCZ2aWRlby0+cXVldWUpKQo+ICsJCXJldHVybiAtRUJVU1k7Cj4gIAo+ ICAJc2lua19mb3JtYXQgPSB2NGwyX3N1YmRldl9zdGF0ZV9nZXRfZm9ybWF0KHdwZi0+ZW50aXR5 LnN0YXRlLAo+ICAJCQkJCQkgICBSV1BGX1BBRF9TSU5LKTsKPiAgCXNvdXJjZV9mb3JtYXQgPSB2 NGwyX3N1YmRldl9zdGF0ZV9nZXRfZm9ybWF0KHdwZi0+ZW50aXR5LnN0YXRlLAo+ICAJCQkJCQkg ICAgIFJXUEZfUEFEX1NPVVJDRSk7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmd3BmLT5lbnRpdHkubG9j ayk7Cj4gKwlndWFyZChtdXRleCkoJndwZi0+ZW50aXR5LmxvY2spOwo+ICAKPiAgCWlmIChyb3Rh dGUpIHsKPiAgCQlzb3VyY2VfZm9ybWF0LT53aWR0aCA9IHNpbmtfZm9ybWF0LT5oZWlnaHQ7Cj4g QEAgLTgyLDExICs3OSw3IEBAIHN0YXRpYyBpbnQgdnNwMV93cGZfc2V0X3JvdGF0aW9uKHN0cnVj dCB2c3AxX3J3cGYgKndwZiwgdW5zaWduZWQgaW50IHJvdGF0aW9uKQo+ICAKPiAgCXdwZi0+Zmxp cC5yb3RhdGUgPSByb3RhdGU7Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZ3cGYtPmVudGl0eS5sb2Nr KTsKPiAtCj4gLWRvbmU6Cj4gLQltdXRleF91bmxvY2soJnZpZGVvLT5sb2NrKTsKPiAtCXJldHVy biByZXQ7Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGludCB2c3AxX3dwZl9zX2N0 cmwoc3RydWN0IHY0bDJfY3RybCAqY3RybCkKPiAtLSAKPiBSZWdhcmRzLAo+IAo+IExhdXJlbnQg UGluY2hhcnQKPiAKPiAKCi0tIApLaW5kIFJlZ2FyZHMsCk5pa2xhcyBTw7ZkZXJsdW5kCg==