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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 31A65FF8875 for ; Thu, 30 Apr 2026 08:27:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8mCYfOD+UysVRhvg8ECwAC7GTgciqXb0pI9iAhlwgzo=; b=arkmJqGCm5Eytn oQlU0NQLkvJp2bCRo6XkyfvbUEIQp4V+Xh6WRKHh/FpT4eVbkw0+NKM6JntW3rC1oJy4e+5ZeWfiO 3rJ6pY77W+u+8BZhn9C8bhHiIF373RipCEk4+IFvOBazYo+9Lv/TP6iMr/46ops7oWADVLaTmh4YG OQxlFAKxoSCg6fckazAyhc6XJUH+lVHahE2NNlPNfWVzDp1stx63xzSksz4NMGf2+yILIDwDQl3Gk AiRC7lDPo/nupZMAQR4qq8chaadWFAJ0UVaN8RmeQIS9BxEkpFJRbHviXFe4+DOpdVPNWLQE0uaTn Ki1A1rvzBR+qmnHaeT2Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1wIMk7-000000050JO-1PPG; Thu, 30 Apr 2026 08:27:31 +0000 Received: from bali.collaboradmins.com ([148.251.105.195]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1wIMk2-000000050IH-2WzM; Thu, 30 Apr 2026 08:27:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1777537643; bh=nxuSSDOBNJMew46ns/1ra5A3Xc0e6/yKMmiK1XRsbQc=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=MYElx6Pe2pheezy+vCUmn0xqiYJJBNDztrP9al2mcccH6FrAPXMuvbYl5fkp6EQ2h ru3pPimmDRU/IOT/RMHiwlFOJEI8qOlzJTAY+yKi36u7UTCkbZLIAizwt3z3NVNwe7 MtgXLSAgzKbfGqRZb9L+QrJUxCXGZbiNco3/ctxFo/SKCG4pLlSjIRzygQ2DCMZ+ny NWjecfZ3fHdgGxX8+kKg3fufBQJvHXrPlsRJGUgyNVPhXEG4vW+COK6pj+PT2p234f 8C0BKODZnVXrNQ1cWgmUAjE3ST5HlPKCD8XrSzvKBXUQLGBi1VBUluHCOh34RuaLA7 c2O9SXkR08Ikw== Received: from [100.64.1.43] (unknown [100.64.1.43]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by bali.collaboradmins.com (Postfix) with ESMTPSA id B6EA117E13D6; Thu, 30 Apr 2026 10:27:22 +0200 (CEST) Message-ID: <22fcc684-9a7f-4e94-abea-832e4f6ed3fe@collabora.com> Date: Thu, 30 Apr 2026 10:27:22 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] media: verisilicon: Stop allocate mv and rfc buffers inside frame buffers To: Nicolas Dufresne , p.zabel@pengutronix.de, mchehab@kernel.org, heiko@sntech.de Cc: linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@collabora.com References: <20260312173545.223021-1-benjamin.gaignard@collabora.com> <4f5af7ff2f8e9be44f8f8c488fdf4edc0dd0c0a4.camel@collabora.com> Content-Language: en-US From: Benjamin Gaignard In-Reply-To: <4f5af7ff2f8e9be44f8f8c488fdf4edc0dd0c0a4.camel@collabora.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260430_012727_119083_BE3EA22A X-CRM114-Status: GOOD ( 28.39 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org CkxlIDI5LzA0LzIwMjYgw6AgMjA6MTMsIE5pY29sYXMgRHVmcmVzbmUgYSDDqWNyaXTCoDoKPiBM ZSBsdW5kaSAxNiBtYXJzIDIwMjYgw6AgMTE6MzcgLTA0MDAsIE5pY29sYXMgRHVmcmVzbmUgYSDD qWNyaXTCoDoKPj4gSGksCj4+Cj4+IExlIGpldWRpIDEyIG1hcnMgMjAyNiDDoCAxODozNSArMDEw MCwgQmVuamFtaW4gR2FpZ25hcmQgYSDDqWNyaXTCoDoKPj4+IFVudGlsIG5vdyB3ZSByZXNlcnZl IHRoZSBzcGFjZSBuZWVkZWQgZm9yIG1vdGlvbiB2ZWN0b3JzIGFuZCByZWZlcmVuY2UKPj4+IGZy YW1lIGNvbXByZXNzaW9uIGF0IHRoZSBlbmQgb2YgdGhlIGZyYW1lIGJ1ZmZlci4KPj4+IFRoaXMg bWV0aG9kIHdhcyBjb252ZW5pZW50IGJ1dCB3b24ndCBmaXQgd2hlbiB3ZSB3aWxsIGludHJvZHVj ZSBzZWN1cmUKPj4+IGRhdGEgcGF0aCBiZWNhdXNlIHdlIHdpbGwgd2FudCB0byBwcm90ZWN0IFlV ViBkYXRhIGJ1dCBub3QgbW90aW9uIHZlY3RvcnMKPj4+IG9yIGNvbXByZXNzaW9uIGRhdGEuCj4+ Pgo+Pj4gVGhpcyBwYXRjaCBkaXNlbnRhbmdsZW1lbnQgbXYgYW5kIHJmYyBmcm9tIGZyYW1lIGJ1 ZmZlcnMgYnkgYWxsb2NhdGluZwo+Pj4gZGlzdGluY3QgYnVmZmVycyBmb3IgZWFjaCBwdXJwb3Nl Lgo+Pj4KPj4+IFRlc3RlZCBvbiBpbXg4bXEgZm9yIFZQOCwgVlA5LCBIMjY0IGFuZCBIMjY1IGNv ZGVjcy4KPj4gV2hhdCBkaWQgeW91IHRlc3QgZXhhY3RseSA/IFdoZW4gSSBjaGVjayB0aGUgUkRD IGtub2JzIG9uIGlteDhtcSwgdGhlcmUgaXMgbm8KPj4gc3ViZGl2aXNpb24gb2YgdGhlIGRvbWFp bi4gU28gd2hlbiB5b3UgcnVuIGluIHBvbGljeSAyICh1c2luZyB0aGUgUkRDIGFuZCBzZXQKPj4g dGhlIFZQVSBkb21haW4gYXMgc2VjdXJlIHJlYWQvd3JpdGUpIHRoZXNlIGJ1ZmZlcnMgZWZmZWN0 aXZlbHkgbmVlZCB0byBiZSBpbnNpZGUKPj4gdGhlIHNlY3VyZSByYW5nZXMsIGFuZCB0aGlzIGlz IHdoYXQgSSBoYXZlIHJ1bm5pbmcgZG93bnN0cmVhbSBhdCB0aGUgbW9tZW50IChub3QKPj4gcmVh ZHkgZm9yIHVwc3RyZWFtaW5nIHlldCkuIFRvIGJlIG1vcmUgZmxleGlibHksIGFuZCBzdWJkaXZp ZGVzIHRoZSBydWxlcyB3aXRoaW4KPj4gYW4gSVAsIHBvbGljeSAxIGlzIG5lZWRlZCwgbWVhbmlu ZyB5b3UgbmVlZCB0byBwcm90ZWN0IHRoZSBJUCByZWdpc3RlciByYW5nZSwKPj4gYW5kIGNsZWFy bHkgd2UgZG9uJ3QgaGF2ZSB0aGF0IHVwc3RyZWFtIHNpbmNlIHRoYXQgaW1wbHkgcGFzc2luZyB0 aGUgcmVnaXN0ZXIKPj4gZGF0YSBvdmVyIHRvIHRoZSBURUUuIFNvIHdpdGggdGhhdCBqdXN0aWZp Y2F0aW9uLCB0aGlzIGNoYW5nZSBzZWVtcyBsaWtlIGEgYml0Cj4+IGVhcmx5Lgo+Pgo+PiBUaGUg c2VwYXJhdGlvbiBzZWVtcyB3YW50ZWQgaW4gdGhlIG1vcmUgZ2VuZXJhbCBjYXNlLCBidXQgeW91 ciBpbXBsZW1lbnRhdGlvbgo+PiBkb2VzIG5vdCB0YWtlIGFkdmFudGFnZSBvZiBpdC4gTm90YWJs eSwgdGhpcyBkcml2ZXIgYWxsb2NhdGVzIHRoZSBzYW1lIG51bWJlciBvZgo+PiByZWZlcmVuY2Ug YXMgdGhlcmUgaXMgY2FwdHVyZSBidWZmZXJzLiBCb3RoIGFsbG9jYXRpb24gcG9vbCBlbmR1cCB0 b28gYmlnIGR1ZSB0bwo+PiBWNEwyIGxpbWl0YXRpb25zLCBidXQgaWYgeW91IGxvb2sgYXQgTVRL LCB5b3UgY2FuIHNlZSB0aGV5IG1hZGUgdGhlIGVmZm9ydCB0bwo+PiBsaW1pdCB0aGUgbnVtYmVy IG9mIGF1eGlsaWFyeSBidWZmZXJzLiBQZXJoYXBzIGxldmVyYWdpbmcgdGhlIHNlcGFyYXRpb24g d291bGQKPj4gbWFrZSB0aGlzIHBhdGNoIGEgYml0IG1vcmUgYWNjZXB0YWJsZSB0byBtZS4KPgo+ IEkgaGF2ZW4ndCByZWNlaXZlZCBhbnkgZmVlZGJhY2sgb24gdGhpcy4gQXJlIHdlIGdvaW5nIHRv IHRyeSBhbmQgbGltaXQgdGhlCj4gbnVtYmVyIG9mIGF1eGlsaWFyeSBidWZmZXIgdG8gdGhlIG51 bWJlciBvZiByZWZlcmVuY2UgKG9yIHBlciBjb2RlYyBtYXhpbXVtKSA/CgpGb3Igc3VyZSBub3Qg aXMgdGhpcyBwYXRjaCBidXQgdGhhdCBjb3VsZCBiZSBkb25lIGFmdGVyLgoKQmVuamFtaW4KCj4K PiBOaWNvbGFzCj4KPj4gcmVnYXJkcywKPj4gTmljb2xhcwo+Pgo+Pj4gVGVzdGVkIG9uIHJrMzU4 OCBmb3IgQVYxLgo+Pj4gQWxsIGZsdXN0ZXIgc2NvcmVzIGFyZSByZW1haW4gdGhlIHNhbWVzLgo+ Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWlnbmFy ZEBjb2xsYWJvcmEuY29tPgo+Pj4gLS0tCj4+PiBOb3RlOiBUaGlzIHBhdGNoIGRlcGVuZHMgb24g Im1lZGlhOiB2ZXJpc2lsaWNvbjogQ3JlYXRlIEFWMSBoZWxwZXIgbGlicmFyeSIKPj4+IHZlcnNp b24gMgo+Pj4KPj4+ICDCoGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJv LmjCoMKgIHzCoCAyOCArLQo+Pj4gIMKgLi4uL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hh bnRyb19hdjEuY8KgwqAgfMKgwqAgNyAtCj4+PiAgwqAuLi4vbWVkaWEvcGxhdGZvcm0vdmVyaXNp bGljb24vaGFudHJvX2F2MS5owqDCoCB8wqDCoCAxIC0KPj4+ICDCoC4uLi9tZWRpYS9wbGF0Zm9y bS92ZXJpc2lsaWNvbi9oYW50cm9fZzIuY8KgwqDCoCB8wqAgMzYgLS0KPj4+ICDCoC4uLi9wbGF0 Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9fZzJfaGV2Y19kZWMuYyB8wqAgNjUgKystLQo+Pj4gIMKg Li4uL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb19nMl92cDlfZGVjLmPCoCB8wqAgMTIgKy0K Pj4+ICDCoC4uLi9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9faGV2Yy5jwqAgfMKg IDM4ICsrLQo+Pj4gIMKgLi4uL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb19ody5o wqDCoMKgIHwgMTAzICstLS0tLQo+Pj4gIMKgLi4uL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRy b19wb3N0cHJvYy5jwqDCoMKgIHzCoCAyOSArLQo+Pj4gIMKgLi4uL21lZGlhL3BsYXRmb3JtL3Zl cmlzaWxpY29uL2hhbnRyb192NGwyLmPCoCB8IDMxNCArKysrKysrKysrKysrKysrLS0KPj4+ICDC oC4uLi92ZXJpc2lsaWNvbi9yb2NrY2hpcF92cHU5ODFfaHdfYXYxX2RlYy5jwqAgfMKgIDE2ICst Cj4+PiAgwqAxMSBmaWxlcyBjaGFuZ2VkLCAzODggaW5zZXJ0aW9ucygrKSwgMjYxIGRlbGV0aW9u cygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxp Y29uL2hhbnRyby5oCj4+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFu dHJvLmgKPj4+IGluZGV4IDAzNTNkZTE1NGExZS4uZGFlZTViOTU0ODBjIDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm8uaAo+Pj4gKysrIGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm8uaAo+Pj4gQEAgLTMxLDYg KzMxLDkgQEAgc3RydWN0IGhhbnRyb19jdHg7Cj4+PiAgwqBzdHJ1Y3QgaGFudHJvX2NvZGVjX29w czsKPj4+ICDCoHN0cnVjdCBoYW50cm9fcG9zdHByb2Nfb3BzOwo+Pj4gICAKPj4+ICsjZGVmaW5l IE1BWF9NVl9CVUZGRVJTCU1BWF9QT1NUUFJPQ19CVUZGRVJTCj4+PiArI2RlZmluZSBNQVhfUkZD X0JVRkZFUlMJTUFYX1BPU1RQUk9DX0JVRkZFUlMKPj4+ICsKPj4+ICDCoCNkZWZpbmUgSEFOVFJP X0pQRUdfRU5DT0RFUglCSVQoMCkKPj4+ICDCoCNkZWZpbmUgSEFOVFJPX0VOQ09ERVJTCQkweDAw MDBmZmZmCj4+PiAgwqAjZGVmaW5lIEhBTlRST19NUEVHMl9ERUNPREVSCUJJVCgxNikKPj4+IEBA IC0yMzcsNiArMjQwLDkgQEAgc3RydWN0IGhhbnRyb19kZXYgewo+Pj4gIMKgICogQG5lZWRfcG9z dHByb2M6CVNldCB0byB0cnVlIGlmIHRoZSBiaXRzdHJlYW0gZmVhdHVyZXMgcmVxdWlyZSB0bwo+ Pj4gIMKgICoJCQl1c2UgdGhlIHBvc3QtcHJvY2Vzc29yLgo+Pj4gIMKgICoKPj4+ICsgKiBAZGVj X212OgkJbW90aW9uIHZlY3RvcnMgYnVmZmVycyBmb3IgdGhlIGNvbnRleHQuCj4+PiArICogQGRl Y19yZmM6CQlyZWZlcmVuY2UgZnJhbWUgY29tcHJlc3Npb24gYnVmZmVycyBmb3IgdGhlIGNvbnRl eHQuCj4+PiArICoKPj4+ICDCoCAqIEBjb2RlY19vcHM6CQlTZXQgb2Ygb3BlcmF0aW9ucyByZWxh dGVkIHRvIGNvZGVjIG1vZGUuCj4+PiAgwqAgKiBAcG9zdHByb2M6CQlQb3N0LXByb2Nlc3Npbmcg Y29udGV4dC4KPj4+ICDCoCAqIEBoMjY0X2RlYzoJCUguMjY0LWRlY29kaW5nIGNvbnRleHQuCj4+ PiBAQCAtMjY0LDYgKzI3MCw5IEBAIHN0cnVjdCBoYW50cm9fY3R4IHsKPj4+ICDCoAlpbnQganBl Z19xdWFsaXR5Owo+Pj4gIMKgCWludCBiaXRfZGVwdGg7Cj4+PiAgIAo+Pj4gKwlzdHJ1Y3QgaGFu dHJvX2F1eF9idWYgZGVjX212W01BWF9NVl9CVUZGRVJTXTsKPj4+ICsJc3RydWN0IGhhbnRyb19h dXhfYnVmIGRlY19yZmNbTUFYX1JGQ19CVUZGRVJTXTsKPj4+ICsKPj4+ICDCoAljb25zdCBzdHJ1 Y3QgaGFudHJvX2NvZGVjX29wcyAqY29kZWNfb3BzOwo+Pj4gIMKgCXN0cnVjdCBoYW50cm9fcG9z dHByb2NfY3R4IHBvc3Rwcm9jOwo+Pj4gIMKgCWJvb2wgbmVlZF9wb3N0cHJvYzsKPj4+IEBAIC0z MjksMTkgKzMzOCwyOSBAQCBzdHJ1Y3QgaGFudHJvX3Bvc3Rwcm9jX3JlZ3Mgewo+Pj4gIMKgCXN0 cnVjdCBoYW50cm9fcmVnIGlucHV0X2hlaWdodF9leHQ7Cj4+PiAgwqB9Owo+Pj4gICAKPj4+ICtz dHJ1Y3QgaGFudHJvX2hldmNfZGVjb2RlZF9idWZmZXJfaW5mbyB7Cj4+PiArCS8qIEluZm8gbmVl ZGVkIHdoZW4gdGhlIGRlY29kZWQgZnJhbWUgc2VydmVzIGFzIGEgcmVmZXJlbmNlIGZyYW1lLiAq Lwo+Pj4gKwlzMzIgcG9jOwo+Pj4gKwlkbWFfYWRkcl90IGx1bWFfYWRkcjsKPj4+ICsJZG1hX2Fk ZHJfdCBjaHJvbWFfYWRkcjsKPj4+ICsJZG1hX2FkZHJfdCBtdl9hZGRyOwo+Pj4gKwlkbWFfYWRk cl90IHJmY19sdW1hX2FkZHI7Cj4+PiArCWRtYV9hZGRyX3QgcmZjX2Nocm9tYV9hZGRyOwo+Pj4g K307Cj4+PiArCj4+PiAgwqBzdHJ1Y3QgaGFudHJvX3ZwOV9kZWNvZGVkX2J1ZmZlcl9pbmZvIHsK Pj4+ICDCoAkvKiBJbmZvIG5lZWRlZCB3aGVuIHRoZSBkZWNvZGVkIGZyYW1lIHNlcnZlcyBhcyBh IHJlZmVyZW5jZSBmcmFtZS4gKi8KPj4+ICDCoAl1bnNpZ25lZCBzaG9ydCB3aWR0aDsKPj4+ICDC oAl1bnNpZ25lZCBzaG9ydCBoZWlnaHQ7Cj4+PiAgwqAJc2l6ZV90IGNocm9tYV9vZmZzZXQ7Cj4+ PiAtCXNpemVfdCBtdl9vZmZzZXQ7Cj4+PiArCWRtYV9hZGRyX3QgbXZfYWRkcjsKPj4+ICDCoAl1 MzIgYml0X2RlcHRoIDogNDsKPj4+ICDCoH07Cj4+PiAgIAo+Pj4gIMKgc3RydWN0IGhhbnRyb19h djFfZGVjb2RlZF9idWZmZXJfaW5mbyB7Cj4+PiAgwqAJLyogSW5mbyBuZWVkZWQgd2hlbiB0aGUg ZGVjb2RlZCBmcmFtZSBzZXJ2ZXMgYXMgYSByZWZlcmVuY2UgZnJhbWUuICovCj4+PiAgwqAJc2l6 ZV90IGNocm9tYV9vZmZzZXQ7Cj4+PiAtCXNpemVfdCBtdl9vZmZzZXQ7Cj4+PiArCWRtYV9hZGRy X3QgbXZfYWRkcjsKPj4+ICDCoH07Cj4+PiAgIAo+Pj4gIMKgc3RydWN0IGhhbnRyb19kZWNvZGVk X2J1ZmZlciB7Cj4+PiBAQCAtMzUxLDYgKzM3MCw3IEBAIHN0cnVjdCBoYW50cm9fZGVjb2RlZF9i dWZmZXIgewo+Pj4gIMKgCXVuaW9uIHsKPj4+ICDCoAkJc3RydWN0IGhhbnRyb192cDlfZGVjb2Rl ZF9idWZmZXJfaW5mbyB2cDk7Cj4+PiAgwqAJCXN0cnVjdCBoYW50cm9fYXYxX2RlY29kZWRfYnVm ZmVyX2luZm8gYXYxOwo+Pj4gKwkJc3RydWN0IGhhbnRyb19oZXZjX2RlY29kZWRfYnVmZmVyX2lu Zm8gaGV2YzsKPj4+ICDCoAl9Owo+Pj4gIMKgfTsKPj4+ICAgCj4+PiBAQCAtNTA3LDQgKzUyNyw4 IEBAIHZvaWQgaGFudHJvX3Bvc3Rwcm9jX2ZyZWUoc3RydWN0IGhhbnRyb19jdHggKmN0eCk7Cj4+ PiAgwqBpbnQgaGFudG9fcG9zdHByb2NfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBoYW50cm9fY3R4 ICpjdHgsCj4+PiAgwqAJCQkJwqDCoCBzdHJ1Y3QgdjRsMl9mcm1zaXplZW51bSAqZnNpemUpOwo+ Pj4gICAKPj4+ICtkbWFfYWRkcl90IGhhbnRyb19tdl9nZXRfYnVmX2FkZHIoc3RydWN0IGhhbnRy b19jdHggKmN0eCwgaW50IGluZGV4KTsKPj4+ICtkbWFfYWRkcl90IGhhbnRyb19yZmNfZ2V0X2x1 bWFfYnVmX2FkZHIoc3RydWN0IGhhbnRyb19jdHggKmN0eCwgaW50IGluZGV4KTsKPj4+ICtkbWFf YWRkcl90IGhhbnRyb19yZmNfZ2V0X2Nocm9tYV9idWZfYWRkcihzdHJ1Y3QgaGFudHJvX2N0eCAq Y3R4LCBpbnQgaW5kZXgpOwo+Pj4gKwo+Pj4gIMKgI2VuZGlmIC8qIEhBTlRST19IXyAqLwo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX2F2 MS5jCj4+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX2F2MS5j Cj4+PiBpbmRleCA1YTUxYWM4NzdjOWMuLjNhODBhNzk5NGY2NyAxMDA2NDQKPj4+IC0tLSBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX2F2MS5jCj4+PiArKysgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb19hdjEuYwo+Pj4gQEAgLTIy MiwxMyArMjIyLDYgQEAgc2l6ZV90IGhhbnRyb19hdjFfbHVtYV9zaXplKHN0cnVjdCBoYW50cm9f Y3R4ICpjdHgpCj4+PiAgwqAJcmV0dXJuIGN0eC0+cmVmX2ZtdC5wbGFuZV9mbXRbMF0uYnl0ZXNw ZXJsaW5lICogY3R4LT5yZWZfZm10LmhlaWdodDsKPj4+ICDCoH0KPj4+ICAgCj4+PiAtc2l6ZV90 IGhhbnRyb19hdjFfY2hyb21hX3NpemUoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPj4+IC17Cj4+ PiAtCXNpemVfdCBjcl9vZmZzZXQgPSBoYW50cm9fYXYxX2x1bWFfc2l6ZShjdHgpOwo+Pj4gLQo+ Pj4gLQlyZXR1cm4gQUxJR04oKGNyX29mZnNldCAqIDMpIC8gMiwgNjQpOwo+Pj4gLX0KPj4+IC0K Pj4+ICDCoHN0YXRpYyB2b2lkIGhhbnRyb19hdjFfdGlsZXNfZnJlZShzdHJ1Y3QgaGFudHJvX2N0 eCAqY3R4KQo+Pj4gIMKgewo+Pj4gIMKgCXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRl djsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hh bnRyb19hdjEuaAo+Pj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRy b19hdjEuaAo+Pj4gaW5kZXggNGUyMTIyYjk1Y2RkLi4zMzBmNzkzOGQwOTcgMTAwNjQ0Cj4+PiAt LS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb19hdjEuaAo+Pj4g KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9fYXYxLmgKPj4+ IEBAIC00MSw3ICs0MSw2IEBAIGludCBoYW50cm9fYXYxX2dldF9vcmRlcl9oaW50KHN0cnVjdCBo YW50cm9fY3R4ICpjdHgsIGludAo+Pj4gcmVmKTsKPj4+ICDCoGludCBoYW50cm9fYXYxX2ZyYW1l X3JlZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCB1NjQgdGltZXN0YW1wKTsKPj4+ICDCoHZvaWQg aGFudHJvX2F2MV9jbGVhbl9yZWZzKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+Pj4gIMKgc2l6 ZV90IGhhbnRyb19hdjFfbHVtYV9zaXplKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+Pj4gLXNp emVfdCBoYW50cm9fYXYxX2Nocm9tYV9zaXplKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+Pj4g IMKgdm9pZCBoYW50cm9fYXYxX2V4aXQoc3RydWN0IGhhbnRyb19jdHggKmN0eCk7Cj4+PiAgwqBp bnQgaGFudHJvX2F2MV9pbml0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+Pj4gIMKgaW50IGhh bnRyb19hdjFfcHJlcGFyZV9ydW4oc3RydWN0IGhhbnRyb19jdHggKmN0eCk7Cj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9fZzIuYwo+Pj4g Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb19nMi5jCj4+PiBpbmRl eCAzMTg2NzNiNjZkYTguLjRhZTdkZjUzZGNiMSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX2cyLmMKPj4+ICsrKyBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX2cyLmMKPj4+IEBAIC05OSwzOSArOTksMyBA QCBzaXplX3QgaGFudHJvX2cyX2Nocm9tYV9vZmZzZXQoc3RydWN0IGhhbnRyb19jdHggKmN0eCkK Pj4+ICDCoHsKPj4+ICDCoAlyZXR1cm4gY3R4LT5yZWZfZm10LnBsYW5lX2ZtdFswXS5ieXRlc3Bl cmxpbmUgKgljdHgtCj4+Pj4gcmVmX2ZtdC5oZWlnaHQ7Cj4+PiAgwqB9Cj4+PiAtCj4+PiAtc2l6 ZV90IGhhbnRyb19nMl9tb3Rpb25fdmVjdG9yc19vZmZzZXQoc3RydWN0IGhhbnRyb19jdHggKmN0 eCkKPj4+IC17Cj4+PiAtCXNpemVfdCBjcl9vZmZzZXQgPSBoYW50cm9fZzJfY2hyb21hX29mZnNl dChjdHgpOwo+Pj4gLQo+Pj4gLQlyZXR1cm4gQUxJR04oKGNyX29mZnNldCAqIDMpIC8gMiwgRzJf QUxJR04pOwo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMgc2l6ZV90IGhhbnRyb19nMl9tdl9zaXpl KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4+PiAtewo+Pj4gLQljb25zdCBzdHJ1Y3QgaGFudHJv X2hldmNfZGVjX2N0cmxzICpjdHJscyA9ICZjdHgtPmhldmNfZGVjLmN0cmxzOwo+Pj4gLQljb25z dCBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNfc3BzICpzcHMgPSBjdHJscy0+c3BzOwo+Pj4gLQl1bnNp Z25lZCBpbnQgcGljX3dpZHRoX2luX2N0YnMsIHBpY19oZWlnaHRfaW5fY3RiczsKPj4+IC0JdW5z aWduZWQgaW50IG1heF9sb2cyX2N0Yl9zaXplOwo+Pj4gLQo+Pj4gLQltYXhfbG9nMl9jdGJfc2l6 ZSA9IHNwcy0+bG9nMl9taW5fbHVtYV9jb2RpbmdfYmxvY2tfc2l6ZV9taW51czMgKyAzICsKPj4+ IC0JCQnCoMKgwqAgc3BzLT5sb2cyX2RpZmZfbWF4X21pbl9sdW1hX2NvZGluZ19ibG9ja19zaXpl Owo+Pj4gLQlwaWNfd2lkdGhfaW5fY3RicyA9IChzcHMtPnBpY193aWR0aF9pbl9sdW1hX3NhbXBs ZXMgKwo+Pj4gLQkJCcKgwqDCoCAoMSA8PCBtYXhfbG9nMl9jdGJfc2l6ZSkgLSAxKSA+Pgo+Pj4g bWF4X2xvZzJfY3RiX3NpemU7Cj4+PiAtCXBpY19oZWlnaHRfaW5fY3RicyA9IChzcHMtPnBpY19o ZWlnaHRfaW5fbHVtYV9zYW1wbGVzICsgKDEgPDwKPj4+IG1heF9sb2cyX2N0Yl9zaXplKSAtIDEp Cj4+PiAtCQkJwqDCoMKgwqAgPj4gbWF4X2xvZzJfY3RiX3NpemU7Cj4+PiAtCj4+PiAtCXJldHVy biBwaWNfd2lkdGhfaW5fY3RicyAqIHBpY19oZWlnaHRfaW5fY3RicyAqICgxIDw8ICgyICoKPj4+ IChtYXhfbG9nMl9jdGJfc2l6ZSAtIDQpKSkgKiAxNjsKPj4+IC19Cj4+PiAtCj4+PiAtc2l6ZV90 IGhhbnRyb19nMl9sdW1hX2NvbXByZXNzX29mZnNldChzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ Pj4gLXsKPj4+IC0JcmV0dXJuIGhhbnRyb19nMl9tb3Rpb25fdmVjdG9yc19vZmZzZXQoY3R4KSAr Cj4+PiAtCcKgwqDCoMKgwqDCoCBoYW50cm9fZzJfbXZfc2l6ZShjdHgpOwo+Pj4gLX0KPj4+IC0K Pj4+IC1zaXplX3QgaGFudHJvX2cyX2Nocm9tYV9jb21wcmVzc19vZmZzZXQoc3RydWN0IGhhbnRy b19jdHggKmN0eCkKPj4+IC17Cj4+PiAtCXJldHVybiBoYW50cm9fZzJfbHVtYV9jb21wcmVzc19v ZmZzZXQoY3R4KSArCj4+PiAtCcKgwqDCoMKgwqDCoCBoYW50cm9faGV2Y19sdW1hX2NvbXByZXNz ZWRfc2l6ZShjdHgtPmRzdF9mbXQud2lkdGgsIGN0eC0KPj4+PiBkc3RfZm10LmhlaWdodCk7Cj4+ PiAtfQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24v aGFudHJvX2cyX2hldmNfZGVjLmMKPj4+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2ls aWNvbi9oYW50cm9fZzJfaGV2Y19kZWMuYwo+Pj4gaW5kZXggZThjMmU4MzM3OWRlLi41MjQwY2Y5 YjVmNTggMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29u L2hhbnRyb19nMl9oZXZjX2RlYy5jCj4+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zl cmlzaWxpY29uL2hhbnRyb19nMl9oZXZjX2RlYy5jCj4+PiBAQCAtMzc3LDE1ICszNzcsOSBAQCBz dGF0aWMgaW50IHNldF9yZWYoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPj4+ICDCoAljb25zdCBz dHJ1Y3QgdjRsMl9jdHJsX2hldmNfcHBzICpwcHMgPSBjdHJscy0+cHBzOwo+Pj4gIMKgCWNvbnN0 IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19kZWNvZGVfcGFyYW1zICpkZWNvZGVfcGFyYW1zID0gY3Ry bHMtCj4+Pj4gZGVjb2RlX3BhcmFtczsKPj4+ICDCoAljb25zdCBzdHJ1Y3QgdjRsMl9oZXZjX2Rw Yl9lbnRyeSAqZHBiID0gZGVjb2RlX3BhcmFtcy0+ZHBiOwo+Pj4gLQlkbWFfYWRkcl90IGx1bWFf YWRkciwgY2hyb21hX2FkZHIsIG12X2FkZHIgPSAwOwo+Pj4gLQlkbWFfYWRkcl90IGNvbXByZXNz X2x1bWFfYWRkciwgY29tcHJlc3NfY2hyb21hX2FkZHIgPSAwOwo+Pj4gIMKgCXN0cnVjdCBoYW50 cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPj4+ICDCoAlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2 YjJfZHN0Owo+Pj4gLQlzdHJ1Y3QgaGFudHJvX2RlY29kZWRfYnVmZmVyICpkc3Q7Cj4+PiAtCXNp emVfdCBjcl9vZmZzZXQgPSBoYW50cm9fZzJfY2hyb21hX29mZnNldChjdHgpOwo+Pj4gLQlzaXpl X3QgbXZfb2Zmc2V0ID0gaGFudHJvX2cyX21vdGlvbl92ZWN0b3JzX29mZnNldChjdHgpOwo+Pj4g LQlzaXplX3QgY29tcHJlc3NfbHVtYV9vZmZzZXQgPSBoYW50cm9fZzJfbHVtYV9jb21wcmVzc19v ZmZzZXQoY3R4KTsKPj4+IC0Jc2l6ZV90IGNvbXByZXNzX2Nocm9tYV9vZmZzZXQgPQo+Pj4gaGFu dHJvX2cyX2Nocm9tYV9jb21wcmVzc19vZmZzZXQoY3R4KTsKPj4+ICsJc3RydWN0IGhhbnRyb19k ZWNvZGVkX2J1ZmZlciAqcmVmOwo+Pj4gIMKgCXUzMiBtYXhfcmVmX2ZyYW1lczsKPj4+ICDCoAl1 MTYgZHBiX2xvbmd0ZXJtX2U7Cj4+PiAgwqAJc3RhdGljIGNvbnN0IHN0cnVjdCBoYW50cm9fcmVn IGN1cl9wb2NbXSA9IHsKPj4+IEBAIC00NTMsNTAgKzQ0NywzNyBAQCBzdGF0aWMgaW50IHNldF9y ZWYoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPj4+ICDCoAlkcGJfbG9uZ3Rlcm1fZSA9IDA7Cj4+ PiAgwqAJZm9yIChpID0gMDsgaSA8IGRlY29kZV9wYXJhbXMtPm51bV9hY3RpdmVfZHBiX2VudHJp ZXMgJiYKPj4+ICDCoAnCoMKgwqDCoCBpIDwgKFY0TDJfSEVWQ19EUEJfRU5UUklFU19OVU1fTUFY IC0gMSk7IGkrKykgewo+Pj4gLQkJbHVtYV9hZGRyID0gaGFudHJvX2hldmNfZ2V0X3JlZl9idWYo Y3R4LAo+Pj4gZHBiW2ldLnBpY19vcmRlcl9jbnRfdmFsKTsKPj4+IC0JCWlmICghbHVtYV9hZGRy KQo+Pj4gKwkJdmIyX2RzdCA9IGhhbnRyb19oZXZjX2dldF9yZWZfYnVmKGN0eCwKPj4+IGRwYltp XS5waWNfb3JkZXJfY250X3ZhbCk7Cj4+PiArCQlpZiAoIXZiMl9kc3QpCj4+PiAgwqAJCQlyZXR1 cm4gLUVOT01FTTsKPj4+ICAgCj4+PiAtCQljaHJvbWFfYWRkciA9IGx1bWFfYWRkciArIGNyX29m ZnNldDsKPj4+IC0JCW12X2FkZHIgPSBsdW1hX2FkZHIgKyBtdl9vZmZzZXQ7Cj4+PiAtCQljb21w cmVzc19sdW1hX2FkZHIgPSBsdW1hX2FkZHIgKyBjb21wcmVzc19sdW1hX29mZnNldDsKPj4+IC0J CWNvbXByZXNzX2Nocm9tYV9hZGRyID0gbHVtYV9hZGRyICsgY29tcHJlc3NfY2hyb21hX29mZnNl dDsKPj4+IC0KPj4+ICDCoAkJaWYgKGRwYltpXS5mbGFncyAmIFY0TDJfSEVWQ19EUEJfRU5UUllf TE9OR19URVJNX1JFRkVSRU5DRSkKPj4+ICDCoAkJCWRwYl9sb25ndGVybV9lIHw9IEJJVChWNEwy X0hFVkNfRFBCX0VOVFJJRVNfTlVNX01BWCAtCj4+PiAxIC0gaSk7Cj4+PiAgIAo+Pj4gLQkJaGFu dHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUZfTFVNQV9BRERSKGkpLCBsdW1hX2FkZHIpOwo+Pj4g LQkJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUZfQ0hST01BX0FERFIoaSksIGNocm9tYV9h ZGRyKTsKPj4+IC0JCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfUkVGX01WX0FERFIoaSksIG12 X2FkZHIpOwo+Pj4gLQkJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUZfQ09NUF9MVU1BX0FE RFIoaSksCj4+PiBjb21wcmVzc19sdW1hX2FkZHIpOwo+Pj4gLQkJaGFudHJvX3dyaXRlX2FkZHIo dnB1LCBHMl9SRUZfQ09NUF9DSFJPTUFfQUREUihpKSwKPj4+IGNvbXByZXNzX2Nocm9tYV9hZGRy KTsKPj4+ICsJCXJlZiA9IHZiMl90b19oYW50cm9fZGVjb2RlZF9idWYoJnZiMl9kc3QtPnZiMl9i dWYpOwo+Pj4gKwkJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUZfTFVNQV9BRERSKGkpLCBy ZWYtCj4+Pj4gaGV2Yy5sdW1hX2FkZHIpOwo+Pj4gKwkJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBH Ml9SRUZfQ0hST01BX0FERFIoaSksIHJlZi0KPj4+PiBoZXZjLmNocm9tYV9hZGRyKTsKPj4+ICsJ CWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfUkVGX01WX0FERFIoaSksIHJlZi0+aGV2Yy5tdl9h ZGRyKTsKPj4+ICsJCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfUkVGX0NPTVBfTFVNQV9BRERS KGkpLCByZWYtCj4+Pj4gaGV2Yy5yZmNfbHVtYV9hZGRyKTsKPj4+ICsJCWhhbnRyb193cml0ZV9h ZGRyKHZwdSwgRzJfUkVGX0NPTVBfQ0hST01BX0FERFIoaSksIHJlZi0KPj4+PiBoZXZjLnJmY19j aHJvbWFfYWRkcik7Cj4+PiAgwqAJfQo+Pj4gICAKPj4+IC0JdmIyX2RzdCA9IGhhbnRyb19nZXRf ZHN0X2J1ZihjdHgpOwo+Pj4gLQlkc3QgPSB2YjJfdG9faGFudHJvX2RlY29kZWRfYnVmKCZ2YjJf ZHN0LT52YjJfYnVmKTsKPj4+IC0JbHVtYV9hZGRyID0gaGFudHJvX2dldF9kZWNfYnVmX2FkZHIo Y3R4LCAmZHN0LT5iYXNlLnZiLnZiMl9idWYpOwo+Pj4gLQlpZiAoIWx1bWFfYWRkcikKPj4+IC0J CXJldHVybiAtRU5PTUVNOwo+Pj4gLQo+Pj4gLQlpZiAoaGFudHJvX2hldmNfYWRkX3JlZl9idWYo Y3R4LCBkZWNvZGVfcGFyYW1zLT5waWNfb3JkZXJfY250X3ZhbCwKPj4+IGx1bWFfYWRkcikpCj4+ PiArCXZiMl9kc3QgPSBoYW50cm9faGV2Y19hZGRfcmVmX2J1ZihjdHgsIGRlY29kZV9wYXJhbXMt Cj4+Pj4gcGljX29yZGVyX2NudF92YWwpOwo+Pj4gKwlpZiAoIXZiMl9kc3QpCj4+PiAgwqAJCXJl dHVybiAtRUlOVkFMOwo+Pj4gICAKPj4+IC0JY2hyb21hX2FkZHIgPSBsdW1hX2FkZHIgKyBjcl9v ZmZzZXQ7Cj4+PiAtCW12X2FkZHIgPSBsdW1hX2FkZHIgKyBtdl9vZmZzZXQ7Cj4+PiAtCWNvbXBy ZXNzX2x1bWFfYWRkciA9IGx1bWFfYWRkciArIGNvbXByZXNzX2x1bWFfb2Zmc2V0Owo+Pj4gLQlj b21wcmVzc19jaHJvbWFfYWRkciA9IGx1bWFfYWRkciArIGNvbXByZXNzX2Nocm9tYV9vZmZzZXQ7 Cj4+PiAtCj4+PiAtCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfUkVGX0xVTUFfQUREUihpKSwg bHVtYV9hZGRyKTsKPj4+IC0JaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUZfQ0hST01BX0FE RFIoaSksIGNocm9tYV9hZGRyKTsKPj4+IC0JaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUZf TVZfQUREUihpKSwgbXZfYWRkcik7Cj4+PiAtCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfUkVG X0NPTVBfTFVNQV9BRERSKGkpLCBjb21wcmVzc19sdW1hX2FkZHIpOwo+Pj4gLQloYW50cm9fd3Jp dGVfYWRkcih2cHUsIEcyX1JFRl9DT01QX0NIUk9NQV9BRERSKGkrKyksCj4+PiBjb21wcmVzc19j aHJvbWFfYWRkcik7Cj4+PiAtCj4+PiAtCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfT1VUX0xV TUFfQUREUiwgbHVtYV9hZGRyKTsKPj4+IC0JaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9PVVRf Q0hST01BX0FERFIsIGNocm9tYV9hZGRyKTsKPj4+IC0JaGFudHJvX3dyaXRlX2FkZHIodnB1LCBH Ml9PVVRfTVZfQUREUiwgbXZfYWRkcik7Cj4+PiAtCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJf T1VUX0NPTVBfTFVNQV9BRERSLCBjb21wcmVzc19sdW1hX2FkZHIpOwo+Pj4gLQloYW50cm9fd3Jp dGVfYWRkcih2cHUsIEcyX09VVF9DT01QX0NIUk9NQV9BRERSLAo+Pj4gY29tcHJlc3NfY2hyb21h X2FkZHIpOwo+Pj4gKwlyZWYgPSB2YjJfdG9faGFudHJvX2RlY29kZWRfYnVmKCZ2YjJfZHN0LT52 YjJfYnVmKTsKPj4+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUZfTFVNQV9BRERSKGkp LCByZWYtPmhldmMubHVtYV9hZGRyKTsKPj4+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9S RUZfQ0hST01BX0FERFIoaSksIHJlZi0+aGV2Yy5jaHJvbWFfYWRkcik7Cj4+PiArCWhhbnRyb193 cml0ZV9hZGRyKHZwdSwgRzJfUkVGX01WX0FERFIoaSksIHJlZi0+aGV2Yy5tdl9hZGRyKTsKPj4+ ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUZfQ09NUF9MVU1BX0FERFIoaSksIHJlZi0K Pj4+PiBoZXZjLnJmY19sdW1hX2FkZHIpOwo+Pj4gKwloYW50cm9fd3JpdGVfYWRkcih2cHUsIEcy X1JFRl9DT01QX0NIUk9NQV9BRERSKGkrKyksIHJlZi0KPj4+PiBoZXZjLnJmY19jaHJvbWFfYWRk cik7Cj4+PiArCj4+PiArCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfT1VUX0xVTUFfQUREUiwg cmVmLT5oZXZjLmx1bWFfYWRkcik7Cj4+PiArCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfT1VU X0NIUk9NQV9BRERSLCByZWYtPmhldmMuY2hyb21hX2FkZHIpOwo+Pj4gKwloYW50cm9fd3JpdGVf YWRkcih2cHUsIEcyX09VVF9NVl9BRERSLCByZWYtPmhldmMubXZfYWRkcik7Cj4+PiArCWhhbnRy b193cml0ZV9hZGRyKHZwdSwgRzJfT1VUX0NPTVBfTFVNQV9BRERSLCByZWYtCj4+Pj4gaGV2Yy5y ZmNfbHVtYV9hZGRyKTsKPj4+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9PVVRfQ09NUF9D SFJPTUFfQUREUiwgcmVmLQo+Pj4+IGhldmMucmZjX2Nocm9tYV9hZGRyKTsKPj4+ICAgCj4+PiAg wqAJZm9yICg7IGkgPCBWNEwyX0hFVkNfRFBCX0VOVFJJRVNfTlVNX01BWDsgaSsrKSB7Cj4+PiAg wqAJCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfUkVGX0xVTUFfQUREUihpKSwgMCk7Cj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9fZzJf dnA5X2RlYy5jCj4+PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJv X2cyX3ZwOV9kZWMuYwo+Pj4gaW5kZXggNTZjNzllMzM5MDMwLi4xZTk2ZDBmY2U3MmEgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb19nMl92 cDlfZGVjLmMKPj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFu dHJvX2cyX3ZwOV9kZWMuYwo+Pj4gQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgdm9pZCBjb25m aWdfb3V0cHV0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsCj4+PiAgwqAJCQnCoCBzdHJ1Y3QgaGFu dHJvX2RlY29kZWRfYnVmZmVyICpkc3QsCj4+PiAgwqAJCQnCoCBjb25zdCBzdHJ1Y3QgdjRsMl9j dHJsX3ZwOV9mcmFtZSAqZGVjX3BhcmFtcykKPj4+ICDCoHsKPj4+IC0JZG1hX2FkZHJfdCBsdW1h X2FkZHIsIGNocm9tYV9hZGRyLCBtdl9hZGRyOwo+Pj4gKwlkbWFfYWRkcl90IGx1bWFfYWRkciwg Y2hyb21hX2FkZHI7Cj4+PiAgIAo+Pj4gIMKgCWhhbnRyb19yZWdfd3JpdGUoY3R4LT5kZXYsICZn Ml9vdXRfZGlzLCAwKTsKPj4+ICDCoAlpZiAoIWN0eC0+ZGV2LT52YXJpYW50LT5sZWdhY3lfcmVn cykKPj4+IEBAIC0xNDIsOSArMTQyLDggQEAgc3RhdGljIHZvaWQgY29uZmlnX291dHB1dChzdHJ1 Y3QgaGFudHJvX2N0eCAqY3R4LAo+Pj4gIMKgCWhhbnRyb193cml0ZV9hZGRyKGN0eC0+ZGV2LCBH Ml9PVVRfQ0hST01BX0FERFIsIGNocm9tYV9hZGRyKTsKPj4+ICDCoAlkc3QtPnZwOS5jaHJvbWFf b2Zmc2V0ID0gaGFudHJvX2cyX2Nocm9tYV9vZmZzZXQoY3R4KTsKPj4+ICAgCj4+PiAtCW12X2Fk ZHIgPSBsdW1hX2FkZHIgKyBoYW50cm9fZzJfbW90aW9uX3ZlY3RvcnNfb2Zmc2V0KGN0eCk7Cj4+ PiAtCWhhbnRyb193cml0ZV9hZGRyKGN0eC0+ZGV2LCBHMl9PVVRfTVZfQUREUiwgbXZfYWRkcik7 Cj4+PiAtCWRzdC0+dnA5Lm12X29mZnNldCA9IGhhbnRyb19nMl9tb3Rpb25fdmVjdG9yc19vZmZz ZXQoY3R4KTsKPj4+ICsJZHN0LT52cDkubXZfYWRkciA9IGhhbnRyb19tdl9nZXRfYnVmX2FkZHIo Y3R4LCBkc3QtCj4+Pj4gYmFzZS52Yi52YjJfYnVmLmluZGV4KTsKPj4+ICsJaGFudHJvX3dyaXRl X2FkZHIoY3R4LT5kZXYsIEcyX09VVF9NVl9BRERSLCBkc3QtPnZwOS5tdl9hZGRyKTsKPj4+ICDC oH0KPj4+ICAgCj4+PiAgwqBzdHJ1Y3QgaGFudHJvX3ZwOV9yZWZfcmVnIHsKPj4+IEBAIC0yMTUs MTUgKzIxNCwxMiBAQCBzdGF0aWMgdm9pZCBjb25maWdfcmVmX3JlZ2lzdGVycyhzdHJ1Y3QgaGFu dHJvX2N0eCAqY3R4LAo+Pj4gIMKgCQkJLmNfYmFzZSA9IEcyX1JFRl9DSFJPTUFfQUREUig1KSwK Pj4+ICDCoAkJfSwKPj4+ICDCoAl9Owo+Pj4gLQlkbWFfYWRkcl90IG12X2FkZHI7Cj4+PiAgIAo+ Pj4gIMKgCWNvbmZpZ19yZWYoY3R4LCBkc3QsICZyZWZfcmVnc1swXSwgZGVjX3BhcmFtcywgZGVj X3BhcmFtcy0KPj4+PiBsYXN0X2ZyYW1lX3RzKTsKPj4+ICDCoAljb25maWdfcmVmKGN0eCwgZHN0 LCAmcmVmX3JlZ3NbMV0sIGRlY19wYXJhbXMsIGRlY19wYXJhbXMtCj4+Pj4gZ29sZGVuX2ZyYW1l X3RzKTsKPj4+ICDCoAljb25maWdfcmVmKGN0eCwgZHN0LCAmcmVmX3JlZ3NbMl0sIGRlY19wYXJh bXMsIGRlY19wYXJhbXMtCj4+Pj4gYWx0X2ZyYW1lX3RzKTsKPj4+ICAgCj4+PiAtCW12X2FkZHIg PSBoYW50cm9fZ2V0X2RlY19idWZfYWRkcihjdHgsICZtdl9yZWYtPmJhc2UudmIudmIyX2J1Zikg Kwo+Pj4gLQkJwqAgbXZfcmVmLT52cDkubXZfb2Zmc2V0Owo+Pj4gLQloYW50cm9fd3JpdGVfYWRk cihjdHgtPmRldiwgRzJfUkVGX01WX0FERFIoMCksIG12X2FkZHIpOwo+Pj4gKwloYW50cm9fd3Jp dGVfYWRkcihjdHgtPmRldiwgRzJfUkVGX01WX0FERFIoMCksIG12X3JlZi0+dnA5Lm12X2FkZHIp Owo+Pj4gICAKPj4+ICDCoAloYW50cm9fcmVnX3dyaXRlKGN0eC0+ZGV2LCAmdnA5X2xhc3Rfc2ln bl9iaWFzLAo+Pj4gIMKgCQkJIGRlY19wYXJhbXMtPnJlZl9mcmFtZV9zaWduX2JpYXMgJgo+Pj4g VjRMMl9WUDlfU0lHTl9CSUFTX0xBU1QgPyAxIDogMCk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9faGV2Yy5jCj4+PiBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX2hldmMuYwo+Pj4gaW5kZXggODNjZDEy YjBkZGQ2Li43ZWExZGM1N2E2MzkgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL3ZlcmlzaWxpY29uL2hhbnRyb19oZXZjLmMKPj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vdmVyaXNpbGljb24vaGFudHJvX2hldmMuYwo+Pj4gQEAgLTM3LDM5ICszNyw1NyBAQCB2 b2lkIGhhbnRyb19oZXZjX3JlZl9pbml0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4+PiAgwqAJ aGV2Y19kZWMtPnJlZl9idWZzX3VzZWQgPSAwOwo+Pj4gIMKgfQo+Pj4gICAKPj4+IC1kbWFfYWRk cl90IGhhbnRyb19oZXZjX2dldF9yZWZfYnVmKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsCj4+PiAt CQkJCcKgwqAgczMyIHBvYykKPj4+ICtzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICpoYW50cm9faGV2 Y19nZXRfcmVmX2J1ZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCBzMzIKPj4+IHBvYykKPj4+ICDC oHsKPj4+ICDCoAlzdHJ1Y3QgaGFudHJvX2hldmNfZGVjX2h3X2N0eCAqaGV2Y19kZWMgPSAmY3R4 LT5oZXZjX2RlYzsKPj4+ICsJc3RydWN0IGhhbnRyb19kZWNvZGVkX2J1ZmZlciAqcmVmOwo+Pj4g IMKgCWludCBpOwo+Pj4gICAKPj4+ICDCoAkvKiBGaW5kIHRoZSByZWZlcmVuY2UgYnVmZmVyIGlu IGFscmVhZHkga25vd24gb25lcyAqLwo+Pj4gIMKgCWZvciAoaSA9IDA7wqAgaSA8IE5VTV9SRUZf UElDVFVSRVM7IGkrKykgewo+Pj4gLQkJaWYgKGhldmNfZGVjLT5yZWZfYnVmc19wb2NbaV0gPT0g cG9jKSB7Cj4+PiArCQlyZWYgPSB2YjJfdG9faGFudHJvX2RlY29kZWRfYnVmKCZoZXZjX2RlYy0+ dmIyX3JlZltpXS0KPj4+PiB2YjJfYnVmKTsKPj4+ICsJCWlmIChyZWYtPmhldmMucG9jID09IHBv Yykgewo+Pj4gIMKgCQkJaGV2Y19kZWMtPnJlZl9idWZzX3VzZWQgfD0gMSA8PCBpOwo+Pj4gLQkJ CXJldHVybiBoZXZjX2RlYy0+cmVmX2J1ZnNbaV0uZG1hOwo+Pj4gKwkJCXJldHVybiBoZXZjX2Rl Yy0+dmIyX3JlZltpXTsKPj4+ICDCoAkJfQo+Pj4gIMKgCX0KPj4+ICAgCj4+PiAtCXJldHVybiAw Owo+Pj4gKwlyZXR1cm4gTlVMTDsKPj4+ICDCoH0KPj4+ICAgCj4+PiAtaW50IGhhbnRyb19oZXZj X2FkZF9yZWZfYnVmKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsIGludCBwb2MsIGRtYV9hZGRyX3Qg YWRkcikKPj4+ICtzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICpoYW50cm9faGV2Y19hZGRfcmVmX2J1 ZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCBpbnQKPj4+IHBvYykKPj4+ICDCoHsKPj4+ICDCoAlz dHJ1Y3QgaGFudHJvX2hldmNfZGVjX2h3X2N0eCAqaGV2Y19kZWMgPSAmY3R4LT5oZXZjX2RlYzsK Pj4+ICsJc3RydWN0IGhhbnRyb19kZWNvZGVkX2J1ZmZlciAqZHN0Owo+Pj4gIMKgCWludCBpOwo+ Pj4gICAKPj4+ICDCoAkvKiBBZGQgYSBuZXcgcmVmZXJlbmNlIGJ1ZmZlciAqLwo+Pj4gIMKgCWZv ciAoaSA9IDA7IGkgPCBOVU1fUkVGX1BJQ1RVUkVTOyBpKyspIHsKPj4+ICDCoAkJaWYgKCEoaGV2 Y19kZWMtPnJlZl9idWZzX3VzZWQgJiAxIDw8IGkpKSB7Cj4+PiAgwqAJCQloZXZjX2RlYy0+cmVm X2J1ZnNfdXNlZCB8PSAxIDw8IGk7Cj4+PiAtCQkJaGV2Y19kZWMtPnJlZl9idWZzX3BvY1tpXSA9 IHBvYzsKPj4+IC0JCQloZXZjX2RlYy0+cmVmX2J1ZnNbaV0uZG1hID0gYWRkcjsKPj4+IC0JCQly ZXR1cm4gMDsKPj4+ICsJCQloZXZjX2RlYy0+dmIyX3JlZltpXSA9IGhhbnRyb19nZXRfZHN0X2J1 ZihjdHgpOwo+Pj4gKwkJCWRzdCA9IHZiMl90b19oYW50cm9fZGVjb2RlZF9idWYoJmhldmNfZGVj LQo+Pj4+IHZiMl9yZWZbaV0tPnZiMl9idWYpOwo+Pj4gKwkJCWRzdC0+aGV2Yy5wb2MgPSBwb2M7 Cj4+PiArCQkJZHN0LT5oZXZjLmx1bWFfYWRkciA9IGhhbnRyb19nZXRfZGVjX2J1Zl9hZGRyKGN0 eCwKPj4+ICZkc3QtPmJhc2UudmIudmIyX2J1Zik7Cj4+PiArCQkJZHN0LT5oZXZjLmNocm9tYV9h ZGRyID0gZHN0LT5oZXZjLmx1bWFfYWRkciArCj4+PiBoYW50cm9fZzJfY2hyb21hX29mZnNldChj dHgpOwo+Pj4gKwkJCWRzdC0+aGV2Yy5tdl9hZGRyID0gaGFudHJvX212X2dldF9idWZfYWRkcihj dHgsIGRzdC0KPj4+PiBiYXNlLnZiLnZiMl9idWYuaW5kZXgpOwo+Pj4gKwkJCWlmIChjdHgtPmhl dmNfZGVjLnVzZV9jb21wcmVzc2lvbikgewo+Pj4gKwkJCQlkc3QtPmhldmMucmZjX2x1bWFfYWRk ciA9Cj4+PiArCQkJCQloYW50cm9fcmZjX2dldF9sdW1hX2J1Zl9hZGRyKGN0eCwKPj4+ICsJCQkJ CQkJCcKgwqDCoMKgIGRzdC0KPj4+PiBiYXNlLnZiLnZiMl9idWYuaW5kZXgpOwo+Pj4gKwkJCQlk c3QtPmhldmMucmZjX2Nocm9tYV9hZGRyID0KPj4+ICsJCQkJCWhhbnRyb19yZmNfZ2V0X2Nocm9t YV9idWZfYWRkcihjdHgsCj4+PiArCQkJCQkJCQnCoMKgwqDCoMKgwqAgZHN0LQo+Pj4+IGJhc2Uu dmIudmIyX2J1Zi5pbmRleCk7Cj4+PiArCQkJfSBlbHNlIHsKPj4+ICsJCQkJZHN0LT5oZXZjLnJm Y19sdW1hX2FkZHIgPSAwOwo+Pj4gKwkJCQlkc3QtPmhldmMucmZjX2Nocm9tYV9hZGRyID0gMDsK Pj4+ICsJCQl9Cj4+PiArCj4+PiArCQkJcmV0dXJuIGhldmNfZGVjLT52YjJfcmVmW2ldOwo+Pj4g IMKgCQl9Cj4+PiAgwqAJfQo+Pj4gICAKPj4+IC0JcmV0dXJuIC1FSU5WQUw7Cj4+PiArCXJldHVy biBOVUxMOwo+Pj4gIMKgfQo+Pj4gICAKPj4+ICDCoHN0YXRpYyBpbnQgdGlsZV9idWZmZXJfcmVh bGxvY2F0ZShzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX2h3LmgKPj4+IGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9faHcuaAo+Pj4gaW5kZXggZjBlNGJjYTRiMmIy Li43NGUyMGZjODI2MzAgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zl cmlzaWxpY29uL2hhbnRyb19ody5oCj4+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zl cmlzaWxpY29uL2hhbnRyb19ody5oCj4+PiBAQCAtMTQ3LDggKzE0Nyw4IEBAIHN0cnVjdCBoYW50 cm9faGV2Y19kZWNfY3RybHMgewo+Pj4gIMKgICogQHRpbGVfYnNkOgkJVGlsZSBCU0QgY29udHJv bCBidWZmZXIKPj4+ICDCoCAqIEByZWZfYnVmczoJCUludGVybmFsIHJlZmVyZW5jZSBidWZmZXJz Cj4+PiAgwqAgKiBAc2NhbGluZ19saXN0czoJU2NhbGluZyBsaXN0cyBidWZmZXIKPj4+IC0gKiBA cmVmX2J1ZnNfcG9jOglJbnRlcm5hbCByZWZlcmVuY2UgYnVmZmVycyBwaWN0dXJlIG9yZGVyIGNv dW50Cj4+PiAgwqAgKiBAcmVmX2J1ZnNfdXNlZDoJQml0ZmllbGQgb2YgdXNlZCByZWZlcmVuY2Ug YnVmZmVycwo+Pj4gKyAqIEB2YjJfcmVmOgkJUmVmZXJlbmNlIGJ1ZmZlcnMKPj4+ICDCoCAqIEBj dHJsczoJCVY0TDIgY29udHJvbHMgYXR0YWNoZWQgdG8gYSBydW4KPj4+ICDCoCAqIEBudW1fdGls ZV9jb2xzX2FsbG9jYXRlZDogbnVtYmVyIG9mIGFsbG9jYXRlZCB0aWxlcwo+Pj4gIMKgICogQHVz ZV9jb21wcmVzc2lvbjoJdXNlIHJlZmVyZW5jZSBidWZmZXIgY29tcHJlc3Npb24KPj4+IEBAIC0x NTgsMTAgKzE1OCw5IEBAIHN0cnVjdCBoYW50cm9faGV2Y19kZWNfaHdfY3R4IHsKPj4+ICDCoAlz dHJ1Y3QgaGFudHJvX2F1eF9idWYgdGlsZV9maWx0ZXI7Cj4+PiAgwqAJc3RydWN0IGhhbnRyb19h dXhfYnVmIHRpbGVfc2FvOwo+Pj4gIMKgCXN0cnVjdCBoYW50cm9fYXV4X2J1ZiB0aWxlX2JzZDsK Pj4+IC0Jc3RydWN0IGhhbnRyb19hdXhfYnVmIHJlZl9idWZzW05VTV9SRUZfUElDVFVSRVNdOwo+ Pj4gIMKgCXN0cnVjdCBoYW50cm9fYXV4X2J1ZiBzY2FsaW5nX2xpc3RzOwo+Pj4gLQlzMzIgcmVm X2J1ZnNfcG9jW05VTV9SRUZfUElDVFVSRVNdOwo+Pj4gIMKgCXUzMiByZWZfYnVmc191c2VkOwo+ Pj4gKwlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YjJfcmVmW05VTV9SRUZfUElDVFVSRVNdOwo+ Pj4gIMKgCXN0cnVjdCBoYW50cm9faGV2Y19kZWNfY3RybHMgY3RybHM7Cj4+PiAgwqAJdW5zaWdu ZWQgaW50IG51bV90aWxlX2NvbHNfYWxsb2NhdGVkOwo+Pj4gIMKgCWJvb2wgdXNlX2NvbXByZXNz aW9uOwo+Pj4gQEAgLTQ1Niw4ICs0NTUsOSBAQCB2b2lkIGhhbnRyb19oZXZjX2RlY19leGl0KHN0 cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+Pj4gIMKgaW50IGhhbnRyb19nMl9oZXZjX2RlY19ydW4o c3RydWN0IGhhbnRyb19jdHggKmN0eCk7Cj4+PiAgwqBpbnQgaGFudHJvX2hldmNfZGVjX3ByZXBh cmVfcnVuKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+Pj4gIMKgdm9pZCBoYW50cm9faGV2Y19y ZWZfaW5pdChzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KTsKPj4+IC1kbWFfYWRkcl90IGhhbnRyb19o ZXZjX2dldF9yZWZfYnVmKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsIHMzMiBwb2MpOwo+Pj4gLWlu dCBoYW50cm9faGV2Y19hZGRfcmVmX2J1ZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCBpbnQgcG9j LCBkbWFfYWRkcl90Cj4+PiBhZGRyKTsKPj4+ICtzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICpoYW50 cm9faGV2Y19nZXRfcmVmX2J1ZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCBzMzIKPj4+IHBvYyk7 Cj4+PiArc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqaGFudHJvX2hldmNfYWRkX3JlZl9idWYoc3Ry dWN0IGhhbnRyb19jdHggKmN0eCwgaW50Cj4+PiBwb2MpOwo+Pj4gK2ludCBoYW50cm9faGV2Y19n ZXRfcmVmX2J1Zl9pbmRleChzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCBzMzIgcG9jKTsKPj4+ICAg Cj4+PiAgwqBpbnQgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfaW5pdChzdHJ1Y3QgaGFudHJvX2N0 eCAqY3R4KTsKPj4+ICDCoHZvaWQgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZXhpdChzdHJ1Y3Qg aGFudHJvX2N0eCAqY3R4KTsKPj4+IEBAIC00NjksMTAwICs0NjksNyBAQCBzdGF0aWMgaW5saW5l IHVuc2lnbmVkIHNob3J0IGhhbnRyb192cDlfbnVtX3Nicyh1bnNpZ25lZAo+Pj4gc2hvcnQgZGlt ZW5zaW9uKQo+Pj4gIMKgCXJldHVybiAoZGltZW5zaW9uICsgNjMpIC8gNjQ7Cj4+PiAgwqB9Cj4+ PiAgIAo+Pj4gLXN0YXRpYyBpbmxpbmUgc2l6ZV90Cj4+PiAtaGFudHJvX3ZwOV9tdl9zaXplKHVu c2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCkKPj4+IC17Cj4+PiAtCWludCBu dW1fY3RiczsKPj4+IC0KPj4+IC0JLyoKPj4+IC0JICogVGhlcmUgY2FuIGJlIHVwIHRvIChDVEJz IHggNjQpIG51bWJlciBvZiBibG9ja3MsCj4+PiAtCSAqIGFuZCB0aGUgbW90aW9uIHZlY3RvciBm b3IgZWFjaCBibG9jayBuZWVkcyAxNiBieXRlcy4KPj4+IC0JICovCj4+PiAtCW51bV9jdGJzID0g aGFudHJvX3ZwOV9udW1fc2JzKHdpZHRoKSAqIGhhbnRyb192cDlfbnVtX3NicyhoZWlnaHQpOwo+ Pj4gLQlyZXR1cm4gKG51bV9jdGJzICogNjQpICogMTY7Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0YXRp YyBpbmxpbmUgc2l6ZV90Cj4+PiAtaGFudHJvX2gyNjRfbXZfc2l6ZSh1bnNpZ25lZCBpbnQgd2lk dGgsIHVuc2lnbmVkIGludCBoZWlnaHQpCj4+PiAtewo+Pj4gLQkvKgo+Pj4gLQkgKiBBIGRlY29k ZWQgOC1iaXQgNDoyOjAgTlYxMiBmcmFtZSBtYXkgbmVlZCBtZW1vcnkgZm9yIHVwIHRvCj4+PiAt CSAqIDQ0OCBieXRlcyBwZXIgbWFjcm9ibG9jayB3aXRoIGFkZGl0aW9uYWwgMzIgYnl0ZXMgb24K Pj4+IC0JICogbXVsdGktY29yZSB2YXJpYW50cy4KPj4+IC0JICoKPj4+IC0JICogVGhlIEgyNjQg ZGVjb2RlciBuZWVkcyBleHRyYSBzcGFjZSBvbiB0aGUgb3V0cHV0IGJ1ZmZlcnMKPj4+IC0JICog dG8gc3RvcmUgbW90aW9uIHZlY3RvcnMuIFRoaXMgaXMgbmVlZGVkIGZvciByZWZlcmVuY2UKPj4+ IC0JICogZnJhbWVzIGFuZCBvbmx5IGlmIHRoZSBmb3JtYXQgaXMgbm9uLXBvc3QtcHJvY2Vzc2Vk IE5WMTIuCj4+PiAtCSAqCj4+PiAtCSAqIE1lbW9yeSBsYXlvdXQgaXMgYXMgZm9sbG93Ogo+Pj4g LQkgKgo+Pj4gLQkgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4gLQkgKiB8IFkt cGxhbmXCoMKgIDI1NiBieXRlcyB4IE1CcyB8Cj4+PiAtCSAqICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rCj4+PiAtCSAqIHwgVVYtcGxhbmXCoCAxMjggYnl0ZXMgeCBNQnMgfAo+Pj4gLQkg KiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4gLQkgKiB8IE1WIGJ1ZmZlcsKgIDY0 IGJ5dGVzIHggTUJzIHwKPj4+IC0JICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+ IC0JICogfCBNQyBzeW5jwqDCoMKgwqDCoMKgwqDCoMKgIDMyIGJ5dGVzIHwKPj4+IC0JICogKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+IC0JICovCj4+PiAtCXJldHVybiA2NCAqIE1C X1dJRFRIKHdpZHRoKSAqIE1CX1dJRFRIKGhlaWdodCkgKyAzMjsKPj4+IC19Cj4+PiAtCj4+PiAt c3RhdGljIGlubGluZSBzaXplX3QKPj4+IC1oYW50cm9faGV2Y19tdl9zaXplKHVuc2lnbmVkIGlu dCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCkKPj4+IC17Cj4+PiAtCS8qCj4+PiAtCSAqIEEg Q1RCIGNhbiBiZSA2NHg2NCwgMzJ4MzIgb3IgMTZ4MTYuCj4+PiAtCSAqIEFsbG9jYXRlZCBtZW1v cnkgZm9yIHRoZSAid29yc2UiIGNhc2U6IDE2eDE2Cj4+PiAtCSAqLwo+Pj4gLQlyZXR1cm4gd2lk dGggKiBoZWlnaHQgLyAxNjsKPj4+IC19Cj4+PiAtCj4+PiAtc3RhdGljIGlubGluZSBzaXplX3QK Pj4+IC1oYW50cm9faGV2Y19sdW1hX2NvbXByZXNzZWRfc2l6ZSh1bnNpZ25lZCBpbnQgd2lkdGgs IHVuc2lnbmVkIGludCBoZWlnaHQpCj4+PiAtewo+Pj4gLQl1MzIgcGljX3dpZHRoX2luX2Nic3kg PQo+Pj4gLQkJcm91bmRfdXAoKHdpZHRoICsgQ0JTX0xVTUEgLSAxKSAvIENCU19MVU1BLCBDQlNf U0laRSk7Cj4+PiAtCXUzMiBwaWNfaGVpZ2h0X2luX2Nic3kgPSAoaGVpZ2h0ICsgQ0JTX0xVTUEg LSAxKSAvIENCU19MVU1BOwo+Pj4gLQo+Pj4gLQlyZXR1cm4gcm91bmRfdXAocGljX3dpZHRoX2lu X2Nic3kgKiBwaWNfaGVpZ2h0X2luX2Nic3ksIENCU19TSVpFKTsKPj4+IC19Cj4+PiAtCj4+PiAt c3RhdGljIGlubGluZSBzaXplX3QKPj4+IC1oYW50cm9faGV2Y19jaHJvbWFfY29tcHJlc3NlZF9z aXplKHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCkKPj4+IC17Cj4+PiAt CXUzMiBwaWNfd2lkdGhfaW5fY2JzYyA9Cj4+PiAtCQlyb3VuZF91cCgod2lkdGggKyBDQlNfQ0hS T01BX1cgLSAxKSAvIENCU19DSFJPTUFfVywKPj4+IENCU19TSVpFKTsKPj4+IC0JdTMyIHBpY19o ZWlnaHRfaW5fY2JzYyA9IChoZWlnaHQgLyAyICsgQ0JTX0NIUk9NQV9IIC0gMSkgLwo+Pj4gQ0JT X0NIUk9NQV9IOwo+Pj4gLQo+Pj4gLQlyZXR1cm4gcm91bmRfdXAocGljX3dpZHRoX2luX2Nic2Mg KiBwaWNfaGVpZ2h0X2luX2Nic2MsIENCU19TSVpFKTsKPj4+IC19Cj4+PiAtCj4+PiAtc3RhdGlj IGlubGluZSBzaXplX3QKPj4+IC1oYW50cm9faGV2Y19jb21wcmVzc2VkX3NpemUodW5zaWduZWQg aW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0KQo+Pj4gLXsKPj4+IC0JcmV0dXJuIGhhbnRy b19oZXZjX2x1bWFfY29tcHJlc3NlZF9zaXplKHdpZHRoLCBoZWlnaHQpICsKPj4+IC0JwqDCoMKg wqDCoMKgIGhhbnRyb19oZXZjX2Nocm9tYV9jb21wcmVzc2VkX3NpemUod2lkdGgsIGhlaWdodCk7 Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQgaGFudHJvX2F2 MV9udW1fc2JzKHVuc2lnbmVkIHNob3J0IGRpbWVuc2lvbikKPj4+IC17Cj4+PiAtCXJldHVybiBE SVZfUk9VTkRfVVAoZGltZW5zaW9uLCA2NCk7Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0YXRpYyBpbmxp bmUgc2l6ZV90Cj4+PiAtaGFudHJvX2F2MV9tdl9zaXplKHVuc2lnbmVkIGludCB3aWR0aCwgdW5z aWduZWQgaW50IGhlaWdodCkKPj4+IC17Cj4+PiAtCXNpemVfdCBudW1fc2JzID0gaGFudHJvX2F2 MV9udW1fc2JzKHdpZHRoKSAqCj4+PiBoYW50cm9fYXYxX251bV9zYnMoaGVpZ2h0KTsKPj4+IC0K Pj4+IC0JcmV0dXJuIEFMSUdOKG51bV9zYnMgKiAzODQsIDE2KSAqIDIgKyA1MTI7Cj4+PiAtfQo+ Pj4gLQo+Pj4gIMKgc2l6ZV90IGhhbnRyb19nMl9jaHJvbWFfb2Zmc2V0KHN0cnVjdCBoYW50cm9f Y3R4ICpjdHgpOwo+Pj4gLXNpemVfdCBoYW50cm9fZzJfbW90aW9uX3ZlY3RvcnNfb2Zmc2V0KHN0 cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+Pj4gLXNpemVfdCBoYW50cm9fZzJfbHVtYV9jb21wcmVz c19vZmZzZXQoc3RydWN0IGhhbnRyb19jdHggKmN0eCk7Cj4+PiAtc2l6ZV90IGhhbnRyb19nMl9j aHJvbWFfY29tcHJlc3Nfb2Zmc2V0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+Pj4gICAKPj4+ ICDCoGludCBoYW50cm9fZzFfbXBlZzJfZGVjX3J1bihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KTsK Pj4+ICDCoGludCByb2NrY2hpcF92cHUyX21wZWcyX2RlY19ydW4oc3RydWN0IGhhbnRyb19jdHgg KmN0eCk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNv bi9oYW50cm9fcG9zdHByb2MuYwo+Pj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxp Y29uL2hhbnRyb19wb3N0cHJvYy5jCj4+PiBpbmRleCBlOTRkMWJhNWVmMTAuLjI0MDkzNTNjMTZl NCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFu dHJvX3Bvc3Rwcm9jLmMKPj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGlj b24vaGFudHJvX3Bvc3Rwcm9jLmMKPj4+IEBAIC0xOTYsMzYgKzE5NiwxMSBAQCB2b2lkIGhhbnRy b19wb3N0cHJvY19mcmVlKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4+PiAgwqAJfQo+Pj4gIMKg fQo+Pj4gICAKPj4+IC1zdGF0aWMgdW5zaWduZWQgaW50IGhhbnRyb19wb3N0cHJvY19idWZmZXJf c2l6ZShzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+Pj4gLXsKPj4+IC0JdW5zaWduZWQgaW50IGJ1 Zl9zaXplOwo+Pj4gLQo+Pj4gLQlidWZfc2l6ZSA9IGN0eC0+cmVmX2ZtdC5wbGFuZV9mbXRbMF0u c2l6ZWltYWdlOwo+Pj4gLQlpZiAoY3R4LT52cHVfc3JjX2ZtdC0+Zm91cmNjID09IFY0TDJfUElY X0ZNVF9IMjY0X1NMSUNFKQo+Pj4gLQkJYnVmX3NpemUgKz0gaGFudHJvX2gyNjRfbXZfc2l6ZShj dHgtPnJlZl9mbXQud2lkdGgsCj4+PiAtCQkJCQkJY3R4LT5yZWZfZm10LmhlaWdodCk7Cj4+PiAt CWVsc2UgaWYgKGN0eC0+dnB1X3NyY19mbXQtPmZvdXJjYyA9PSBWNEwyX1BJWF9GTVRfVlA5X0ZS QU1FKQo+Pj4gLQkJYnVmX3NpemUgKz0gaGFudHJvX3ZwOV9tdl9zaXplKGN0eC0+cmVmX2ZtdC53 aWR0aCwKPj4+IC0JCQkJCcKgwqDCoMKgwqDCoCBjdHgtPnJlZl9mbXQuaGVpZ2h0KTsKPj4+IC0J ZWxzZSBpZiAoY3R4LT52cHVfc3JjX2ZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZNVF9IRVZDX1NM SUNFKSB7Cj4+PiAtCQlidWZfc2l6ZSArPSBoYW50cm9faGV2Y19tdl9zaXplKGN0eC0+cmVmX2Zt dC53aWR0aCwKPj4+IC0JCQkJCQljdHgtPnJlZl9mbXQuaGVpZ2h0KTsKPj4+IC0JCWlmIChjdHgt PmhldmNfZGVjLnVzZV9jb21wcmVzc2lvbikKPj4+IC0JCQlidWZfc2l6ZSArPSBoYW50cm9faGV2 Y19jb21wcmVzc2VkX3NpemUoY3R4LQo+Pj4+IHJlZl9mbXQud2lkdGgsCj4+PiAtCQkJCQkJCQlj dHgtCj4+Pj4gcmVmX2ZtdC5oZWlnaHQpOwo+Pj4gLQl9Cj4+PiAtCWVsc2UgaWYgKGN0eC0+dnB1 X3NyY19mbXQtPmZvdXJjYyA9PSBWNEwyX1BJWF9GTVRfQVYxX0ZSQU1FKQo+Pj4gLQkJYnVmX3Np emUgKz0gaGFudHJvX2F2MV9tdl9zaXplKGN0eC0+cmVmX2ZtdC53aWR0aCwKPj4+IC0JCQkJCcKg wqDCoMKgwqDCoCBjdHgtPnJlZl9mbXQuaGVpZ2h0KTsKPj4+IC0KPj4+IC0JcmV0dXJuIGJ1Zl9z aXplOwo+Pj4gLX0KPj4+IC0KPj4+ICDCoHN0YXRpYyBpbnQgaGFudHJvX3Bvc3Rwcm9jX2FsbG9j KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsIGludCBpbmRleCkKPj4+ICDCoHsKPj4+ICDCoAlzdHJ1 Y3QgaGFudHJvX2RldiAqdnB1ID0gY3R4LT5kZXY7Cj4+PiAgwqAJc3RydWN0IGhhbnRyb19hdXhf YnVmICpwcml2ID0gJmN0eC0+cG9zdHByb2MuZGVjX3FbaW5kZXhdOwo+Pj4gLQl1bnNpZ25lZCBp bnQgYnVmX3NpemUgPSBoYW50cm9fcG9zdHByb2NfYnVmZmVyX3NpemUoY3R4KTsKPj4+ICsJdW5z aWduZWQgaW50IGJ1Zl9zaXplID0gY3R4LT5yZWZfZm10LnBsYW5lX2ZtdFswXS5zaXplaW1hZ2U7 Cj4+PiAgIAo+Pj4gIMKgCWlmICghYnVmX3NpemUpCj4+PiAgwqAJCXJldHVybiAtRUlOVkFMOwo+ Pj4gQEAgLTI2Nyw3ICsyNDIsNyBAQCBkbWFfYWRkcl90Cj4+PiAgwqBoYW50cm9fcG9zdHByb2Nf Z2V0X2RlY19idWZfYWRkcihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCBpbnQgaW5kZXgpCj4+PiAg wqB7Cj4+PiAgwqAJc3RydWN0IGhhbnRyb19hdXhfYnVmICpwcml2ID0gJmN0eC0+cG9zdHByb2Mu ZGVjX3FbaW5kZXhdOwo+Pj4gLQl1bnNpZ25lZCBpbnQgYnVmX3NpemUgPSBoYW50cm9fcG9zdHBy b2NfYnVmZmVyX3NpemUoY3R4KTsKPj4+ICsJdW5zaWduZWQgaW50IGJ1Zl9zaXplID0gY3R4LT5y ZWZfZm10LnBsYW5lX2ZtdFswXS5zaXplaW1hZ2U7Cj4+PiAgwqAJc3RydWN0IGhhbnRyb19kZXYg KnZwdSA9IGN0eC0+ZGV2Owo+Pj4gIMKgCWludCByZXQ7Cj4+PiAgIAo+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX3Y0bDIuYwo+Pj4gYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb192NGwyLmMKPj4+IGluZGV4 IGZjZjNiZDliY2RhMi4uNmE4NzYxNDJjMjI0IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9oYW50cm9fdjRsMi5jCj4+PiArKysgYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb192NGwyLmMKPj4+IEBAIC0zNiw2ICszNiw5 IEBAIHN0YXRpYyBpbnQgaGFudHJvX3NldF9mbXRfb3V0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgs Cj4+PiAgwqBzdGF0aWMgaW50IGhhbnRyb19zZXRfZm10X2NhcChzdHJ1Y3QgaGFudHJvX2N0eCAq Y3R4LAo+Pj4gIMKgCQkJwqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0X21wbGFuZSAq cGl4X21wKTsKPj4+ICAgCj4+PiArc3RhdGljIHZvaWQgaGFudHJvX212X2ZyZWUoc3RydWN0IGhh bnRyb19jdHggKmN0eCk7Cj4+PiArc3RhdGljIHZvaWQgaGFudHJvX3JmY19mcmVlKHN0cnVjdCBo YW50cm9fY3R4ICpjdHgpOwo+Pj4gKwo+Pj4gIMKgc3RhdGljIGNvbnN0IHN0cnVjdCBoYW50cm9f Zm10ICoKPj4+ICDCoGhhbnRyb19nZXRfZm9ybWF0cyhjb25zdCBzdHJ1Y3QgaGFudHJvX2N0eCAq Y3R4LCB1bnNpZ25lZCBpbnQgKm51bV9mbXRzLCBib29sCj4+PiBuZWVkX3Bvc3Rwcm9jKQo+Pj4g IMKgewo+Pj4gQEAgLTM2MiwyNiArMzY1LDYgQEAgc3RhdGljIGludCBoYW50cm9fdHJ5X2ZtdChj b25zdCBzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LAo+Pj4gIMKgCQkvKiBGaWxsIHJlbWFpbmluZyBm aWVsZHMgKi8KPj4+ICDCoAkJdjRsMl9maWxsX3BpeGZtdF9tcChwaXhfbXAsIGZtdC0+Zm91cmNj LCBwaXhfbXAtPndpZHRoLAo+Pj4gIMKgCQkJCcKgwqDCoCBwaXhfbXAtPmhlaWdodCk7Cj4+PiAt CQlpZiAoY3R4LT52cHVfc3JjX2ZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZNVF9IMjY0X1NMSUNF ICYmCj4+PiAtCQnCoMKgwqAgIWhhbnRyb19uZWVkc19wb3N0cHJvYyhjdHgsIGZtdCkpCj4+PiAt CQkJcGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlICs9Cj4+PiAtCQkJCWhhbnRyb19oMjY0 X212X3NpemUocGl4X21wLT53aWR0aCwKPj4+IC0JCQkJCQnCoMKgwqAgcGl4X21wLT5oZWlnaHQp Owo+Pj4gLQkJZWxzZSBpZiAoY3R4LT52cHVfc3JjX2ZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZN VF9WUDlfRlJBTUUKPj4+ICYmCj4+PiAtCQkJICFoYW50cm9fbmVlZHNfcG9zdHByb2MoY3R4LCBm bXQpKQo+Pj4gLQkJCXBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVpbWFnZSArPQo+Pj4gLQkJCQlo YW50cm9fdnA5X212X3NpemUocGl4X21wLT53aWR0aCwKPj4+IC0JCQkJCQnCoMKgIHBpeF9tcC0+ aGVpZ2h0KTsKPj4+IC0JCWVsc2UgaWYgKGN0eC0+dnB1X3NyY19mbXQtPmZvdXJjYyA9PSBWNEwy X1BJWF9GTVRfSEVWQ19TTElDRQo+Pj4gJiYKPj4+IC0JCQkgIWhhbnRyb19uZWVkc19wb3N0cHJv YyhjdHgsIGZtdCkpCj4+PiAtCQkJcGl4X21wLT5wbGFuZV9mbXRbMF0uc2l6ZWltYWdlICs9Cj4+ PiAtCQkJCWhhbnRyb19oZXZjX212X3NpemUocGl4X21wLT53aWR0aCwKPj4+IC0JCQkJCQnCoMKg wqAgcGl4X21wLT5oZWlnaHQpOwo+Pj4gLQkJZWxzZSBpZiAoY3R4LT52cHVfc3JjX2ZtdC0+Zm91 cmNjID09IFY0TDJfUElYX0ZNVF9BVjFfRlJBTUUKPj4+ICYmCj4+PiAtCQkJICFoYW50cm9fbmVl ZHNfcG9zdHByb2MoY3R4LCBmbXQpKQo+Pj4gLQkJCXBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVp bWFnZSArPQo+Pj4gLQkJCQloYW50cm9fYXYxX212X3NpemUocGl4X21wLT53aWR0aCwKPj4+IC0J CQkJCQnCoMKgIHBpeF9tcC0+aGVpZ2h0KTsKPj4+ICDCoAl9IGVsc2UgaWYgKCFwaXhfbXAtPnBs YW5lX2ZtdFswXS5zaXplaW1hZ2UpIHsKPj4+ICDCoAkJLyoKPj4+ICDCoAkJICogRm9yIGNvZGVk IGZvcm1hdHMgdGhlIGFwcGxpY2F0aW9uIGNhbiBzcGVjaWZ5Cj4+PiBAQCAtOTk5LDYgKzk4Miw5 IEBAIHN0YXRpYyB2b2lkIGhhbnRyb19zdG9wX3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpx KQo+Pj4gIMKgCWlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKHEtPnR5cGUpICYmCj4+PiAgwqAJwqDC oMKgIHY0bDJfbTJtX2hhc19zdG9wcGVkKGN0eC0+ZmgubTJtX2N0eCkpCj4+PiAgwqAJCXY0bDJf ZXZlbnRfcXVldWVfZmgoJmN0eC0+ZmgsICZoYW50cm9fZW9zX2V2ZW50KTsKPj4+ICsKPj4+ICsJ aGFudHJvX212X2ZyZWUoY3R4KTsKPj4+ICsJaGFudHJvX3JmY19mcmVlKGN0eCk7Cj4+PiAgwqB9 Cj4+PiAgIAo+Pj4gIMKgc3RhdGljIHZvaWQgaGFudHJvX2J1Zl9yZXF1ZXN0X2NvbXBsZXRlKHN0 cnVjdCB2YjJfYnVmZmVyICp2YikKPj4+IEBAIC0xMDI1LDMgKzEwMTEsMjkxIEBAIGNvbnN0IHN0 cnVjdCB2YjJfb3BzIGhhbnRyb19xdWV1ZV9vcHMgPSB7Cj4+PiAgwqAJLnN0YXJ0X3N0cmVhbWlu ZyA9IGhhbnRyb19zdGFydF9zdHJlYW1pbmcsCj4+PiAgwqAJLnN0b3Bfc3RyZWFtaW5nID0gaGFu dHJvX3N0b3Bfc3RyZWFtaW5nLAo+Pj4gIMKgfTsKPj4+ICsKPj4+ICtzdGF0aWMgc2l6ZV90Cj4+ PiAraGFudHJvX3ZwOV9tdl9zaXplKHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhl aWdodCkKPj4+ICt7Cj4+PiArCWludCBudW1fY3RiczsKPj4+ICsKPj4+ICsJLyoKPj4+ICsJICog VGhlcmUgY2FuIGJlIHVwIHRvIChDVEJzIHggNjQpIG51bWJlciBvZiBibG9ja3MsCj4+PiArCSAq IGFuZCB0aGUgbW90aW9uIHZlY3RvciBmb3IgZWFjaCBibG9jayBuZWVkcyAxNiBieXRlcy4KPj4+ ICsJICovCj4+PiArCW51bV9jdGJzID0gaGFudHJvX3ZwOV9udW1fc2JzKHdpZHRoKSAqIGhhbnRy b192cDlfbnVtX3NicyhoZWlnaHQpOwo+Pj4gKwlyZXR1cm4gKG51bV9jdGJzICogNjQpICogMTY7 Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBzaXplX3QKPj4+ICtoYW50cm9faDI2NF9tdl9zaXpl KHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCkKPj4+ICt7Cj4+PiArCS8q Cj4+PiArCSAqIEEgZGVjb2RlZCA4LWJpdCA0OjI6MCBOVjEyIGZyYW1lIG1heSBuZWVkIG1lbW9y eSBmb3IgdXAgdG8KPj4+ICsJICogNDQ4IGJ5dGVzIHBlciBtYWNyb2Jsb2NrIHdpdGggYWRkaXRp b25hbCAzMiBieXRlcyBvbgo+Pj4gKwkgKiBtdWx0aS1jb3JlIHZhcmlhbnRzLgo+Pj4gKwkgKgo+ Pj4gKwkgKiBUaGUgSDI2NCBkZWNvZGVyIG5lZWRzIGV4dHJhIHNwYWNlIG9uIHRoZSBvdXRwdXQg YnVmZmVycwo+Pj4gKwkgKiB0byBzdG9yZSBtb3Rpb24gdmVjdG9ycy4gVGhpcyBpcyBuZWVkZWQg Zm9yIHJlZmVyZW5jZQo+Pj4gKwkgKiBmcmFtZXMgYW5kIG9ubHkgaWYgdGhlIGZvcm1hdCBpcyBu b24tcG9zdC1wcm9jZXNzZWQgTlYxMi4KPj4+ICsJICoKPj4+ICsJICogTWVtb3J5IGxheW91dCBp cyBhcyBmb2xsb3c6Cj4+PiArCSAqCj4+PiArCSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCj4+PiArCSAqIHwgWS1wbGFuZcKgwqAgMjU2IGJ5dGVzIHggTUJzIHwKPj4+ICsJICogKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+ICsJICogfCBVVi1wbGFuZcKgIDEyOCBieXRl cyB4IE1CcyB8Cj4+PiArCSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+PiArCSAq IHwgTVYgYnVmZmVywqAgNjQgYnl0ZXMgeCBNQnMgfAo+Pj4gKwkgKiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKwo+Pj4gKwkgKiB8IE1DIHN5bmPCoMKgwqDCoMKgwqDCoMKgwqAgMzIgYnl0 ZXMgfAo+Pj4gKwkgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4gKwkgKi8KPj4+ ICsJcmV0dXJuIDY0ICogTUJfV0lEVEgod2lkdGgpICogTUJfV0lEVEgoaGVpZ2h0KSArIDMyOwo+ Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgc2l6ZV90Cj4+PiAraGFudHJvX2hldmNfbXZfc2l6ZSh1 bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsIGludCBkZXB0aCkKPj4+ICt7 Cj4+PiArCS8qCj4+PiArCSAqIEEgQ1RCIGNhbiBiZSA2NHg2NCwgMzJ4MzIgb3IgMTZ4MTYuCj4+ PiArCSAqIEFsbG9jYXRlZCBtZW1vcnkgZm9yIHRoZSAid29yc2UiIGNhc2U6IDE2eDE2Cj4+PiAr CSAqLwo+Pj4gKwlyZXR1cm4gRElWX1JPVU5EX1VQKHdpZHRoICogaGVpZ2h0ICogZGVwdGggLyA4 LCAxNik7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQgaGFu dHJvX2F2MV9udW1fc2JzKHVuc2lnbmVkIHNob3J0IGRpbWVuc2lvbikKPj4+ICt7Cj4+PiArCXJl dHVybiBESVZfUk9VTkRfVVAoZGltZW5zaW9uLCA2NCk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRp YyBzaXplX3QKPj4+ICtoYW50cm9fYXYxX212X3NpemUodW5zaWduZWQgaW50IHdpZHRoLCB1bnNp Z25lZCBpbnQgaGVpZ2h0KQo+Pj4gK3sKPj4+ICsJc2l6ZV90IG51bV9zYnMgPSBoYW50cm9fYXYx X251bV9zYnMod2lkdGgpICoKPj4+IGhhbnRyb19hdjFfbnVtX3NicyhoZWlnaHQpOwo+Pj4gKwo+ Pj4gKwlyZXR1cm4gQUxJR04obnVtX3NicyAqIDM4NCwgMTYpICogMiArIDUxMjsKPj4+ICt9Cj4+ PiArCj4+PiArc3RhdGljIHZvaWQgaGFudHJvX212X2ZyZWUoc3RydWN0IGhhbnRyb19jdHggKmN0 eCkKPj4+ICt7Cj4+PiArCXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPj4+ICsJ aW50IGk7Cj4+PiArCj4+PiArCWZvciAoaSA9IDA7IGkgPCBNQVhfTVZfQlVGRkVSUzsgaSsrKSB7 Cj4+PiArCQlzdHJ1Y3QgaGFudHJvX2F1eF9idWYgKm12ID0gJmN0eC0+ZGVjX212W2ldOwo+Pj4g Kwo+Pj4gKwkJaWYgKCFtdi0+Y3B1KQo+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4gKwo+Pj4gKwkJZG1h X2ZyZWVfYXR0cnModnB1LT5kZXYsIG12LT5zaXplLCBtdi0+Y3B1LAo+Pj4gKwkJCcKgwqDCoMKg wqDCoCBtdi0+ZG1hLCBtdi0+YXR0cnMpOwo+Pj4gKwkJbXYtPmNwdSA9IE5VTEw7Cj4+PiArCX0K Pj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHVuc2lnbmVkIGludCBoYW50cm9fbXZfYnVmZmVyX3Np emUoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPj4+ICt7Cj4+PiArCXN0cnVjdCBoYW50cm9fZGV2 ICp2cHUgPSBjdHgtPmRldjsKPj4+ICsJaW50IGZvdXJjYyA9IGN0eC0+dnB1X3NyY19mbXQtPmZv dXJjYzsKPj4+ICsJaW50IHdpZHRoID0gY3R4LT5yZWZfZm10LndpZHRoOwo+Pj4gKwlpbnQgaGVp Z2h0ID0gY3R4LT5yZWZfZm10LmhlaWdodDsKPj4+ICsKPj4+ICsJc3dpdGNoIChmb3VyY2MpIHsK Pj4+ICsJY2FzZSBWNEwyX1BJWF9GTVRfSDI2NF9TTElDRToKPj4+ICsJCXJldHVybiBoYW50cm9f aDI2NF9tdl9zaXplKHdpZHRoLCBoZWlnaHQpOwo+Pj4gKwljYXNlIFY0TDJfUElYX0ZNVF9WUDlf RlJBTUU6Cj4+PiArCQlyZXR1cm4gaGFudHJvX3ZwOV9tdl9zaXplKHdpZHRoLCBoZWlnaHQpOwo+ Pj4gKwljYXNlIFY0TDJfUElYX0ZNVF9IRVZDX1NMSUNFOgo+Pj4gKwkJcmV0dXJuIGhhbnRyb19o ZXZjX212X3NpemUod2lkdGgsIGhlaWdodCwgY3R4LT5iaXRfZGVwdGgpOwo+Pj4gKwljYXNlIFY0 TDJfUElYX0ZNVF9BVjFfRlJBTUU6Cj4+PiArCQlyZXR1cm4gaGFudHJvX2F2MV9tdl9zaXplKHdp ZHRoLCBoZWlnaHQpOwo+Pj4gKwl9Cj4+PiArCj4+PiArCS8qIFNob3VsZCBub3QgaGFwcGVuICov Cj4+PiArCWRldl93YXJuKHZwdS0+ZGV2LCAiSW52YWxpZCBtb3Rpb24gdmVjdG9ycyBzaXplXG4i KTsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgaGFudHJvX212 X2J1ZmZlcl9hbGxvYyhzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCBpbnQgaW5kZXgpCj4+PiArewo+ Pj4gKwlzdHJ1Y3QgaGFudHJvX2RldiAqdnB1ID0gY3R4LT5kZXY7Cj4+PiArCXN0cnVjdCBoYW50 cm9fYXV4X2J1ZiAqbXYgPSAmY3R4LT5kZWNfbXZbaW5kZXhdOwo+Pj4gKwl1bnNpZ25lZCBpbnQg YnVmX3NpemUgPSBoYW50cm9fbXZfYnVmZmVyX3NpemUoY3R4KTsKPj4+ICsKPj4+ICsJaWYgKCFi dWZfc2l6ZSkKPj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gKwkvKgo+Pj4gKwkgKiBN b3Rpb24gdmVjdG9ycyBidWZmZXJzIGFyZSBvbmx5IHJlYWQgYW5kIHdyaXRlIGJ5IHRoZQo+Pj4g KwkgKiBoYXJkd2FyZSBzbyBubyBtYXBwaW5nIGlzIG5lZWRlZC4KPj4+ICsJICovCj4+PiArCW12 LT5hdHRycyA9IERNQV9BVFRSX05PX0tFUk5FTF9NQVBQSU5HOwo+Pj4gKwltdi0+Y3B1ID0gZG1h X2FsbG9jX2F0dHJzKHZwdS0+ZGV2LCBidWZfc2l6ZSwgJm12LT5kbWEsCj4+PiArCQkJCcKgIEdG UF9LRVJORUwsIG12LT5hdHRycyk7Cj4+PiArCWlmICghbXYtPmNwdSkKPj4+ICsJCXJldHVybiAt RU5PTUVNOwo+Pj4gKwltdi0+c2l6ZSA9IGJ1Zl9zaXplOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gMDsK Pj4+ICt9Cj4+PiArCj4+PiArZG1hX2FkZHJfdAo+Pj4gK2hhbnRyb19tdl9nZXRfYnVmX2FkZHIo c3RydWN0IGhhbnRyb19jdHggKmN0eCwgaW50IGluZGV4KQo+Pj4gK3sKPj4+ICsJc3RydWN0IGhh bnRyb19hdXhfYnVmICptdiA9ICZjdHgtPmRlY19tdltpbmRleF07Cj4+PiArCXVuc2lnbmVkIGlu dCBidWZfc2l6ZSA9IGhhbnRyb19tdl9idWZmZXJfc2l6ZShjdHgpOwo+Pj4gKwlzdHJ1Y3QgaGFu dHJvX2RldiAqdnB1ID0gY3R4LT5kZXY7Cj4+PiArCWludCByZXQ7Cj4+PiArCj4+PiArCWlmICht di0+c2l6ZSA8IGJ1Zl9zaXplICYmIG12LT5jcHUpIHsKPj4+ICsJCS8qIGJ1ZmZlciBpcyB0b28g c21hbGwsIHJlbGVhc2UgaXQgKi8KPj4+ICsJCWRtYV9mcmVlX2F0dHJzKHZwdS0+ZGV2LCBtdi0+ c2l6ZSwgbXYtPmNwdSwKPj4+ICsJCQnCoMKgwqDCoMKgwqAgbXYtPmRtYSwgbXYtPmF0dHJzKTsK Pj4+ICsJCW12LT5jcHUgPSBOVUxMOwo+Pj4gKwl9Cj4+PiArCj4+PiArCWlmICghbXYtPmNwdSkg ewo+Pj4gKwkJLyogYnVmZmVyIG5vdCBhbHJlYWR5IGFsbG9jYXRlZCwgdHJ5IGdldHRpbmcgYSBu ZXcgb25lICovCj4+PiArCQlyZXQgPSBoYW50cm9fbXZfYnVmZmVyX2FsbG9jKGN0eCwgaW5kZXgp Owo+Pj4gKwkJaWYgKHJldCkKPj4+ICsJCQlyZXR1cm4gMDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlp ZiAoIW12LT5jcHUpCj4+PiArCQlyZXR1cm4gMDsKPj4+ICsKPj4+ICsJcmV0dXJuIG12LT5kbWE7 Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxpbmUgc2l6ZV90Cj4+PiAraGFudHJvX2hldmNf bHVtYV9jb21wcmVzc2VkX3NpemUodW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVp Z2h0KQo+Pj4gK3sKPj4+ICsJdTMyIHBpY193aWR0aF9pbl9jYnN5ID0KPj4+ICsJCXJvdW5kX3Vw KCh3aWR0aCArIENCU19MVU1BIC0gMSkgLyBDQlNfTFVNQSwgQ0JTX1NJWkUpOwo+Pj4gKwl1MzIg cGljX2hlaWdodF9pbl9jYnN5ID0gKGhlaWdodCArIENCU19MVU1BIC0gMSkgLyBDQlNfTFVNQTsK Pj4+ICsKPj4+ICsJcmV0dXJuIHJvdW5kX3VwKHBpY193aWR0aF9pbl9jYnN5ICogcGljX2hlaWdo dF9pbl9jYnN5LCBDQlNfU0laRSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxpbmUgc2l6 ZV90Cj4+PiAraGFudHJvX2hldmNfY2hyb21hX2NvbXByZXNzZWRfc2l6ZSh1bnNpZ25lZCBpbnQg d2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQpCj4+PiArewo+Pj4gKwl1MzIgcGljX3dpZHRoX2lu X2Nic2MgPQo+Pj4gKwkJcm91bmRfdXAoKHdpZHRoICsgQ0JTX0NIUk9NQV9XIC0gMSkgLyBDQlNf Q0hST01BX1csCj4+PiBDQlNfU0laRSk7Cj4+PiArCXUzMiBwaWNfaGVpZ2h0X2luX2Nic2MgPSAo aGVpZ2h0IC8gMiArIENCU19DSFJPTUFfSCAtIDEpIC8KPj4+IENCU19DSFJPTUFfSDsKPj4+ICsK Pj4+ICsJcmV0dXJuIHJvdW5kX3VwKHBpY193aWR0aF9pbl9jYnNjICogcGljX2hlaWdodF9pbl9j YnNjLCBDQlNfU0laRSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxpbmUgc2l6ZV90Cj4+ PiAraGFudHJvX2hldmNfY29tcHJlc3NlZF9zaXplKHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWdu ZWQgaW50IGhlaWdodCkKPj4+ICt7Cj4+PiArCXJldHVybiBoYW50cm9faGV2Y19sdW1hX2NvbXBy ZXNzZWRfc2l6ZSh3aWR0aCwgaGVpZ2h0KSArCj4+PiArCcKgwqDCoMKgwqDCoCBoYW50cm9faGV2 Y19jaHJvbWFfY29tcHJlc3NlZF9zaXplKHdpZHRoLCBoZWlnaHQpOwo+Pj4gK30KPj4+ICsKPj4+ ICtzdGF0aWMgdm9pZCBoYW50cm9fcmZjX2ZyZWUoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPj4+ ICt7Cj4+PiArCXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPj4+ICsJaW50IGk7 Cj4+PiArCj4+PiArCWZvciAoaSA9IDA7IGkgPCBNQVhfTVZfQlVGRkVSUzsgaSsrKSB7Cj4+PiAr CQlzdHJ1Y3QgaGFudHJvX2F1eF9idWYgKnJmYyA9ICZjdHgtPmRlY19yZmNbaV07Cj4+PiArCj4+ PiArCQlpZiAoIXJmYy0+Y3B1KQo+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4gKwo+Pj4gKwkJZG1hX2Zy ZWVfYXR0cnModnB1LT5kZXYsIHJmYy0+c2l6ZSwgcmZjLT5jcHUsCj4+PiArCQkJwqDCoMKgwqDC oMKgIHJmYy0+ZG1hLCByZmMtPmF0dHJzKTsKPj4+ICsJCXJmYy0+Y3B1ID0gTlVMTDsKPj4+ICsJ fQo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdW5zaWduZWQgaW50IGhhbnRyb19yZmNfYnVmZmVy X3NpemUoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPj4+ICt7Cj4+PiArCXN0cnVjdCBoYW50cm9f ZGV2ICp2cHUgPSBjdHgtPmRldjsKPj4+ICsJaW50IGZvdXJjYyA9IGN0eC0+dnB1X3NyY19mbXQt PmZvdXJjYzsKPj4+ICsJaW50IHdpZHRoID0gY3R4LT5yZWZfZm10LndpZHRoOwo+Pj4gKwlpbnQg aGVpZ2h0ID0gY3R4LT5yZWZfZm10LmhlaWdodDsKPj4+ICsKPj4+ICsJc3dpdGNoIChmb3VyY2Mp IHsKPj4+ICsJY2FzZSBWNEwyX1BJWF9GTVRfSEVWQ19TTElDRToKPj4+ICsJCXJldHVybiBoYW50 cm9faGV2Y19jb21wcmVzc2VkX3NpemUod2lkdGgsIGhlaWdodCk7Cj4+PiArCX0KPj4+ICsKPj4+ ICsJLyogU2hvdWxkIG5vdCBoYXBwZW4gKi8KPj4+ICsJZGV2X3dhcm4odnB1LT5kZXYsICJJbnZh bGlkIHJmYyBzaXplXG4iKTsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRp YyBpbnQgaGFudHJvX3JmY19idWZmZXJfYWxsb2Moc3RydWN0IGhhbnRyb19jdHggKmN0eCwgaW50 IGluZGV4KQo+Pj4gK3sKPj4+ICsJc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+ Pj4gKwlzdHJ1Y3QgaGFudHJvX2F1eF9idWYgKnJmYyA9ICZjdHgtPmRlY19yZmNbaW5kZXhdOwo+ Pj4gKwl1bnNpZ25lZCBpbnQgYnVmX3NpemUgPSBoYW50cm9fcmZjX2J1ZmZlcl9zaXplKGN0eCk7 Cj4+PiArCj4+PiArCWlmICghYnVmX3NpemUpCj4+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4+ICsK Pj4+ICsJLyoKPj4+ICsJICogUkZDIGJ1ZmZlcnMgYXJlIG9ubHkgcmVhZCBhbmQgd3JpdGUgYnkg dGhlCj4+PiArCSAqIGhhcmR3YXJlIHNvIG5vIG1hcHBpbmcgaXMgbmVlZGVkLgo+Pj4gKwkgKi8K Pj4+ICsJcmZjLT5hdHRycyA9IERNQV9BVFRSX05PX0tFUk5FTF9NQVBQSU5HOwo+Pj4gKwlyZmMt PmNwdSA9IGRtYV9hbGxvY19hdHRycyh2cHUtPmRldiwgYnVmX3NpemUsICZyZmMtPmRtYSwKPj4+ ICsJCQkJwqDCoCBHRlBfS0VSTkVMLCByZmMtPmF0dHJzKTsKPj4+ICsJaWYgKCFyZmMtPmNwdSkK Pj4+ICsJCXJldHVybiAtRU5PTUVNOwo+Pj4gKwlyZmMtPnNpemUgPSBidWZfc2l6ZTsKPj4+ICsK Pj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK2RtYV9hZGRyX3QKPj4+ICtoYW50cm9f cmZjX2dldF9sdW1hX2J1Zl9hZGRyKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsIGludCBpbmRleCkK Pj4+ICt7Cj4+PiArCXN0cnVjdCBoYW50cm9fYXV4X2J1ZiAqcmZjID0gJmN0eC0+ZGVjX3JmY1tp bmRleF07Cj4+PiArCXVuc2lnbmVkIGludCBidWZfc2l6ZSA9IGhhbnRyb19yZmNfYnVmZmVyX3Np emUoY3R4KTsKPj4+ICsJc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+Pj4gKwlp bnQgcmV0Owo+Pj4gKwo+Pj4gKwlpZiAocmZjLT5zaXplIDwgYnVmX3NpemUgJiYgcmZjLT5jcHUp IHsKPj4+ICsJCS8qIGJ1ZmZlciBpcyB0b28gc21hbGwsIHJlbGVhc2UgaXQgKi8KPj4+ICsJCWRt YV9mcmVlX2F0dHJzKHZwdS0+ZGV2LCByZmMtPnNpemUsIHJmYy0+Y3B1LAo+Pj4gKwkJCcKgwqDC oMKgwqDCoCByZmMtPmRtYSwgcmZjLT5hdHRycyk7Cj4+PiArCQlyZmMtPmNwdSA9IE5VTEw7Cj4+ PiArCX0KPj4+ICsKPj4+ICsJaWYgKCFyZmMtPmNwdSkgewo+Pj4gKwkJLyogYnVmZmVyIG5vdCBh bHJlYWR5IGFsbG9jYXRlZCwgdHJ5IGdldHRpbmcgYSBuZXcgb25lICovCj4+PiArCQlyZXQgPSBo YW50cm9fcmZjX2J1ZmZlcl9hbGxvYyhjdHgsIGluZGV4KTsKPj4+ICsJCWlmIChyZXQpCj4+PiAr CQkJcmV0dXJuIDA7Cj4+PiArCX0KPj4+ICsKPj4+ICsJaWYgKCFyZmMtPmNwdSkKPj4+ICsJCXJl dHVybiAwOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gcmZjLT5kbWE7Cj4+PiArfQo+Pj4gKwo+Pj4gK2Rt YV9hZGRyX3QKPj4+ICtoYW50cm9fcmZjX2dldF9jaHJvbWFfYnVmX2FkZHIoc3RydWN0IGhhbnRy b19jdHggKmN0eCwgaW50IGluZGV4KQo+Pj4gK3sKPj4+ICsJZG1hX2FkZHJfdCBsdW1hX2FkZHIg PSBoYW50cm9fcmZjX2dldF9sdW1hX2J1Zl9hZGRyKGN0eCwgaW5kZXgpOwo+Pj4gKwlzdHJ1Y3Qg aGFudHJvX2RldiAqdnB1ID0gY3R4LT5kZXY7Cj4+PiArCWludCBmb3VyY2MgPSBjdHgtPnZwdV9z cmNfZm10LT5mb3VyY2M7Cj4+PiArCWludCB3aWR0aCA9IGN0eC0+cmVmX2ZtdC53aWR0aDsKPj4+ ICsJaW50IGhlaWdodCA9IGN0eC0+cmVmX2ZtdC5oZWlnaHQ7Cj4+PiArCj4+PiArCWlmICghbHVt YV9hZGRyKQo+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+PiArCj4+PiArCXN3aXRjaCAoZm91cmNj KSB7Cj4+PiArCWNhc2UgVjRMMl9QSVhfRk1UX0hFVkNfU0xJQ0U6Cj4+PiArCQlyZXR1cm4gbHVt YV9hZGRyICsgaGFudHJvX2hldmNfbHVtYV9jb21wcmVzc2VkX3NpemUod2lkdGgsCj4+PiBoZWln aHQpOwo+Pj4gKwl9Cj4+PiArCj4+PiArCS8qIFNob3VsZCBub3QgaGFwcGVuICovCj4+PiArCWRl dl93YXJuKHZwdS0+ZGV2LCAiSW52YWxpZCByZmMgY2hyb21hIGFkZHJlc3NcbiIpOwo+Pj4gKwly ZXR1cm4gMDsKPj4+ICt9Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92 ZXJpc2lsaWNvbi9yb2NrY2hpcF92cHU5ODFfaHdfYXYxX2RlYy5jCj4+PiBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vdmVyaXNpbGljb24vcm9ja2NoaXBfdnB1OTgxX2h3X2F2MV9kZWMuYwo+Pj4g aW5kZXggYzFhZGExNGRmNGMzLi4yMWRhOGRkZmM0YjMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL3JvY2tjaGlwX3ZwdTk4MV9od19hdjFfZGVjLmMK Pj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vcm9ja2NoaXBfdnB1 OTgxX2h3X2F2MV9kZWMuYwo+Pj4gQEAgLTYyLDcgKzYyLDcgQEAgcm9ja2NoaXBfdnB1OTgxX2F2 MV9kZWNfc2V0X3JlZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCBpbnQKPj4+IHJlZiwgaW50IGlk eCwKPj4+ICDCoAljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZSAqZnJhbWUgPSBjdHJs cy0+ZnJhbWU7Cj4+PiAgwqAJc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+Pj4g IMKgCXN0cnVjdCBoYW50cm9fZGVjb2RlZF9idWZmZXIgKmRzdDsKPj4+IC0JZG1hX2FkZHJfdCBs dW1hX2FkZHIsIGNocm9tYV9hZGRyLCBtdl9hZGRyID0gMDsKPj4+ICsJZG1hX2FkZHJfdCBsdW1h X2FkZHIsIGNocm9tYV9hZGRyID0gMDsKPj4+ICDCoAlpbnQgY3VyX3dpZHRoID0gZnJhbWUtPmZy YW1lX3dpZHRoX21pbnVzXzEgKyAxOwo+Pj4gIMKgCWludCBjdXJfaGVpZ2h0ID0gZnJhbWUtPmZy YW1lX2hlaWdodF9taW51c18xICsgMTsKPj4+ICDCoAlpbnQgc2NhbGVfd2lkdGggPQo+Pj4gQEAg LTEyMCwxMSArMTIwLDEwIEBAIHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3NldF9yZWYoc3RydWN0 IGhhbnRyb19jdHggKmN0eCwKPj4+IGludCByZWYsIGludCBpZHgsCj4+PiAgwqAJZHN0ID0gdmIy X3RvX2hhbnRyb19kZWNvZGVkX2J1ZigmYXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhdLnZiMl9yZWYt Cj4+Pj4gdmIyX2J1Zik7Cj4+PiAgwqAJbHVtYV9hZGRyID0gaGFudHJvX2dldF9kZWNfYnVmX2Fk ZHIoY3R4LCAmZHN0LT5iYXNlLnZiLnZiMl9idWYpOwo+Pj4gIMKgCWNocm9tYV9hZGRyID0gbHVt YV9hZGRyICsgZHN0LT5hdjEuY2hyb21hX29mZnNldDsKPj4+IC0JbXZfYWRkciA9IGx1bWFfYWRk ciArIGRzdC0+YXYxLm12X29mZnNldDsKPj4+ICAgCj4+PiAgwqAJaGFudHJvX3dyaXRlX2FkZHIo dnB1LCBBVjFfUkVGRVJFTkNFX1kocmVmKSwgbHVtYV9hZGRyKTsKPj4+ICDCoAloYW50cm9fd3Jp dGVfYWRkcih2cHUsIEFWMV9SRUZFUkVOQ0VfQ0IocmVmKSwgY2hyb21hX2FkZHIpOwo+Pj4gLQlo YW50cm9fd3JpdGVfYWRkcih2cHUsIEFWMV9SRUZFUkVOQ0VfTVYocmVmKSwgbXZfYWRkcik7Cj4+ PiArCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgQVYxX1JFRkVSRU5DRV9NVihyZWYpLCBkc3QtPmF2 MS5tdl9hZGRyKTsKPj4+ICAgCj4+PiAgwqAJcmV0dXJuIChzY2FsZV93aWR0aCAhPSAoMSA8PCBB VjFfUkVGX1NDQUxFX1NISUZUKSkgfHwKPj4+ICDCoAkJKHNjYWxlX2hlaWdodCAhPSAoMSA8PCBB VjFfUkVGX1NDQUxFX1NISUZUKSk7Cj4+PiBAQCAtMTgwLDExICsxNzksMTAgQEAgc3RhdGljIHZv aWQKPj4+IHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3NldF9zZWdtZW50YXRpb24oc3RydWN0IGhh bnRyb19jdHggKmN0eCkKPj4+ICDCoAkJaWYgKGlkeCA+PSAwKSB7Cj4+PiAgwqAJCQlkbWFfYWRk cl90IGx1bWFfYWRkciwgbXZfYWRkciA9IDA7Cj4+PiAgwqAJCQlzdHJ1Y3QgaGFudHJvX2RlY29k ZWRfYnVmZmVyICpzZWc7Cj4+PiAtCQkJc2l6ZV90IG12X29mZnNldCA9IGhhbnRyb19hdjFfY2hy b21hX3NpemUoY3R4KTsKPj4+ICAgCj4+PiAgwqAJCQlzZWcgPSB2YjJfdG9faGFudHJvX2RlY29k ZWRfYnVmKCZhdjFfZGVjLQo+Pj4+IGZyYW1lX3JlZnNbaWR4XS52YjJfcmVmLT52YjJfYnVmKTsK Pj4+ICDCoAkJCWx1bWFfYWRkciA9IGhhbnRyb19nZXRfZGVjX2J1Zl9hZGRyKGN0eCwgJnNlZy0K Pj4+PiBiYXNlLnZiLnZiMl9idWYpOwo+Pj4gLQkJCW12X2FkZHIgPSBsdW1hX2FkZHIgKyBtdl9v ZmZzZXQ7Cj4+PiArCQkJbXZfYWRkciA9IGhhbnRyb19tdl9nZXRfYnVmX2FkZHIoY3R4LCBzZWct Cj4+Pj4gYmFzZS52Yi52YjJfYnVmLmluZGV4KTsKPj4+ICAgCj4+PiAgwqAJCQloYW50cm9fd3Jp dGVfYWRkcih2cHUsIEFWMV9TRUdNRU5UQVRJT04sIG12X2FkZHIpOwo+Pj4gIMKgCQkJaGFudHJv X3JlZ193cml0ZSh2cHUsICZhdjFfdXNlX3RlbXBvcmFsM19tdnMsIDEpOwo+Pj4gQEAgLTEzNTAs MjIgKzEzNDgsMjAgQEAgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfc2V0X291dHB1dF9idWZmZXIo c3RydWN0Cj4+PiBoYW50cm9fY3R4ICpjdHgpCj4+PiAgwqAJc3RydWN0IGhhbnRyb19kZXYgKnZw dSA9IGN0eC0+ZGV2Owo+Pj4gIMKgCXN0cnVjdCBoYW50cm9fZGVjb2RlZF9idWZmZXIgKmRzdDsK Pj4+ICDCoAlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YjJfZHN0Owo+Pj4gLQlkbWFfYWRkcl90 IGx1bWFfYWRkciwgY2hyb21hX2FkZHIsIG12X2FkZHIgPSAwOwo+Pj4gKwlkbWFfYWRkcl90IGx1 bWFfYWRkciwgY2hyb21hX2FkZHIgPSAwOwo+Pj4gIMKgCXNpemVfdCBjcl9vZmZzZXQgPSBoYW50 cm9fYXYxX2x1bWFfc2l6ZShjdHgpOwo+Pj4gLQlzaXplX3QgbXZfb2Zmc2V0ID0gaGFudHJvX2F2 MV9jaHJvbWFfc2l6ZShjdHgpOwo+Pj4gICAKPj4+ICDCoAl2YjJfZHN0ID0gYXYxX2RlYy0+ZnJh bWVfcmVmc1thdjFfZGVjLT5jdXJyZW50X2ZyYW1lX2luZGV4XS52YjJfcmVmOwo+Pj4gIMKgCWRz dCA9IHZiMl90b19oYW50cm9fZGVjb2RlZF9idWYoJnZiMl9kc3QtPnZiMl9idWYpOwo+Pj4gIMKg CWx1bWFfYWRkciA9IGhhbnRyb19nZXRfZGVjX2J1Zl9hZGRyKGN0eCwgJmRzdC0+YmFzZS52Yi52 YjJfYnVmKTsKPj4+ICDCoAljaHJvbWFfYWRkciA9IGx1bWFfYWRkciArIGNyX29mZnNldDsKPj4+ IC0JbXZfYWRkciA9IGx1bWFfYWRkciArIG12X29mZnNldDsKPj4+ICAgCj4+PiAgwqAJZHN0LT5h djEuY2hyb21hX29mZnNldCA9IGNyX29mZnNldDsKPj4+IC0JZHN0LT5hdjEubXZfb2Zmc2V0ID0g bXZfb2Zmc2V0Owo+Pj4gKwlkc3QtPmF2MS5tdl9hZGRyID0gaGFudHJvX212X2dldF9idWZfYWRk cihjdHgsIGRzdC0KPj4+PiBiYXNlLnZiLnZiMl9idWYuaW5kZXgpOwo+Pj4gICAKPj4+ICDCoAlo YW50cm9fd3JpdGVfYWRkcih2cHUsIEFWMV9USUxFX09VVF9MVSwgbHVtYV9hZGRyKTsKPj4+ICDC oAloYW50cm9fd3JpdGVfYWRkcih2cHUsIEFWMV9USUxFX09VVF9DSCwgY2hyb21hX2FkZHIpOwo+ Pj4gLQloYW50cm9fd3JpdGVfYWRkcih2cHUsIEFWMV9USUxFX09VVF9NViwgbXZfYWRkcik7Cj4+ PiArCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgQVYxX1RJTEVfT1VUX01WLCBkc3QtPmF2MS5tdl9h ZGRyKTsKPj4+ICDCoH0KPj4+ICAgCj4+PiAgwqBpbnQgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNf cnVuKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9j a2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==