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 9961AC38142 for ; Tue, 24 Jan 2023 15:27:26 +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:Reply-To:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:Subject: From:MIME-Version:Date:Message-ID:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=l/ZjP7TOA8qyRUaYqW6rHNUDL53Weq24tuULHSISKG8=; b=h1T6rQMm16u9ZLvc6PSXM//E0I ykaEHM7e+bnszloKMYo7j8Fsu0nSGEoBH5V90RQCBtX8u9LFPMjOMYVRhZM4znw0JCtJEeFDi0/Qg Y9LwDzKG+/dLet0HvzHGncXf685z0bCk4sfAO1s9zXBGYUj29NIOKUngsV3ZrrNkSKIdl0s4BceHL w6kTXeDncaUEMyo2H8KVb5jF3EG9rUJEqLDjT4xOgQNLcpIOsG1YSJaKpbq34yOOz3kK+nYkMZQ3d P76xen2wUincBtYihLXFglabXONjeVi9WS7/Ji9xWy66nqGs4wN0vjLqdQy3lqTInVUCusX/pmdtM X7B/BnZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pKLCe-004VM9-4q; Tue, 24 Jan 2023 15:27:16 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pKLCR-004VHY-Ta for linux-amlogic@lists.infradead.org; Tue, 24 Jan 2023 15:27:07 +0000 Received: by mail-wr1-x42e.google.com with SMTP id r9so14239627wrw.4 for ; Tue, 24 Jan 2023 07:27:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:organization:references:cc:to :content-language:subject:reply-to:from:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=bJO8CdzU4xRSfNUOLOHev+hcHOKLnTCgurcu/axtFA0=; b=Nd8a28OD2r5HmUMZbVRKn51vxLYhWheLfwcpYG0fKq7SVhNp0H7NZGxC0TKx2Ozuoo xCfdS6wuQmzLkngW3TG1PTmTgfW3taVNt5VdUIX5JeB/F2W1GPlvLv7J92cLXw3AdHo7 NB6vN5VW2+Z6e2WYz41t6tIIJrRtrBAGVJoBuBD67apZx3P1uP2IU7Idbaha0Vn/LgZ6 cxVr6t/BPlzwcDlEmcktli+HIZY3I/GuWO+TycgpgEc8YI2fj6QjNh0ZF01WlrWj7CMp TF0T4TddXopOR0/L+6ihIjT1YU/2fUDV31UFf7ojKfOd9KdPE+YgZrKFPYjZOczjn2Ai vFFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:organization:references:cc:to :content-language:subject:reply-to:from:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=bJO8CdzU4xRSfNUOLOHev+hcHOKLnTCgurcu/axtFA0=; b=7wQZRGZFJzIPSpgFFK6jR4gJKa28DltwynmnG/nO2HaKoVhLxcwJ2XF0Qh2r1ZggE2 DY/Rk34twqL5bZz285yXexqQM4iGb6sniMqp84KdkrZi/pVE5AgCdikjQFnwCjPcPusY YJIJH6gQfyxpBxbqihsGFfySQAdb+k9Id4hPGHsnzizoGV4JMySw3JJ18QGYgNHvzZ8I eC8j41q5PC2Hfvk4hvDKxAwmYvaP5zIu1WYx3qkqXGf15xfj3qlvvvof5NibUD2guhCb M4XtDUMUR/3fBB+RUdRadBpgGc8CE4/TDqYs46LpJ7vbhb8Qgwq/+surq+PUscJ6xIqz 4tDQ== X-Gm-Message-State: AFqh2krGdzv2fVcnQZNvd6kWMGVDQl47nMa2PvgN1c7emSUhPMJwqu4B 8chaLdYv8cHByt/UTnrvnT6fKg== X-Google-Smtp-Source: AMrXdXtcnhqKzTwxCymwVBmqtGsR7JP8avONT4iTc7QjLZeI9QR53CxO/SkxCh8dd0fpQm83xt80nw== X-Received: by 2002:adf:f790:0:b0:2bd:ebc0:6f79 with SMTP id q16-20020adff790000000b002bdebc06f79mr25042701wrp.46.1674574019894; Tue, 24 Jan 2023 07:26:59 -0800 (PST) Received: from ?IPV6:2a01:e0a:982:cbb0:ebd2:15b:f444:7985? ([2a01:e0a:982:cbb0:ebd2:15b:f444:7985]) by smtp.gmail.com with ESMTPSA id bj7-20020a0560001e0700b002bfb5618ee7sm460523wrb.91.2023.01.24.07.26.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 24 Jan 2023 07:26:59 -0800 (PST) Message-ID: <07933226-fbab-fa78-6b96-38e365577605@linaro.org> Date: Tue, 24 Jan 2023 16:26:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 From: Neil Armstrong Subject: Re: [PATCH v2 1/2] media: meson: vdec: implement 10bit bitstream handling Content-Language: en-US To: Nicolas Dufresne , Christian Hewitt , Mauro Carvalho Chehab , Greg Kroah-Hartman , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , linux-media@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Benjamin Roszak References: <20230124034058.3407235-1-christianshewitt@gmail.com> <20230124034058.3407235-2-christianshewitt@gmail.com> <6ff68c4bea9d48980853e9af9db1fc0bf13976ae.camel@ndufresne.ca> Organization: Linaro Developer Services In-Reply-To: <6ff68c4bea9d48980853e9af9db1fc0bf13976ae.camel@ndufresne.ca> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230124_072703_975116_5998C168 X-CRM114-Status: GOOD ( 25.50 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: neil.armstrong@linaro.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gMjQvMDEvMjAyMyAxNjoyMSwgTmljb2xhcyBEdWZyZXNuZSB3cm90ZToKPiBIaSwKPiAKPiBM ZSBtYXJkaSAyNCBqYW52aWVyIDIwMjMgw6AgMDM6NDAgKzAwMDAsIENocmlzdGlhbiBIZXdpdHQg YSDDqWNyaXTCoDoKPj4gRnJvbTogQmVuamFtaW4gUm9zemFrIDxiZW5qYW1pbjU0NUBnbWFpbC5j b20+Cj4+Cj4+IEluIG9yZGVyIHRvIHN1cHBvcnQgMTBiaXQgYml0c3RyZWFtIGRlY29kaW5nLCBi dWZmZXJzIGFuZCBNTVUKPj4gaGFuZGxpbmcgbXVzdCBiZSBjbGVhbmVkIHVwIHRvIHN1cHBvcnQg ZWl0aGVyIGRvd25zY2FsZSBvdXRwdXQKPj4gZnJvbSBjb21wcmVzc2VkIDEwYml0IGRlY29kaW5n IHRvIHVuY29tcHJlc3NlZCA4Yml0IE5WMTIgb3V0cHV0Cj4+IG9yIHRvIGNvbXByZXNzZWQgMTBi aXQgcHJvcHJpZXRhcnkgZW5jb2RlZCBmcmFtZSBmb3JtYXQuCj4gCj4gSSB1bmRlcnN0YW5kIHRo aXMgaXMgc3RlcCBmb3J3YXJkLCBhbmQgYWdyZWUgd2l0aCB0aGUgcGF0Y2hlcyBpbiBnZW5lcmFs LCB0aG91Z2gKPiBJJ2QgbGlrZSB0byBrbm93IGlmIHdlIGNhbiBleHBlY3QgMTBiaXQgc2Vjb25k YXJ5IGJ1ZmZlcnMgaW4gdGhlIGZ1dHVyZSA/IE9yIGlzCj4gdGhlIEFNRkJDIHRoYXQgb25seSAx MGJpdCBmb3JtYXQgc3VwcG9ydGVkID8gU2hvdWxkIGJlIGV4cGVjdCB0aGUgMTBiaXQgZm9ybWF0 Cj4gZGVmaW5pdGlvbiB0byBiZSBhZGRlZCBsYXRlciA/CgpUaGUgc3VwcG9ydCBleGlzdCwgYnV0 IGl0IHN0b3BwZWQgd2hlbiBub2JvZHkgYWdncmVlZCBvbiBob3cgdG8gaGFuZGxlIHRoZSBkaWZm ZXJlbnQKbGF5b3V0cyBnZW5lcmF0ZWQgYnkgdGhlIGRlY29kZXIuCgpUaGVyZSdzIGF0IGxlYXN0 IDQgcG9zc2libGUgbGF5b3V0cyB2cyBob3cgd2UgcmVwcmVzZW50IHRoZW4gaW4gRFJNIDoKLSBH WCA4Yml0OiBEUk1fRk9STUFUX1lVVjQyMF84QklUIHwgRFJNX0ZPUk1BVF9NT0RfQU1MT0dJQ19G QkMoQU1MT0dJQ19GQkNfTEFZT1VUX0JBU0lDLCAwKQotIEdYIDEwYml0OiBEUk1fRk9STUFUX1lV VjQyMF8xMEJJVCB8IERSTV9GT1JNQVRfTU9EX0FNTE9HSUNfRkJDKEFNTE9HSUNfRkJDX0xBWU9V VF9CQVNJQywgMCkKLSBHMTIgOGJpdDogRFJNX0ZPUk1BVF9ZVVY0MjBfOEJJVCB8IERSTV9GT1JN QVRfTU9EX0FNTE9HSUNfRkJDKEFNTE9HSUNfRkJDX0xBWU9VVF9TQ0FUVEVSLEFNTE9HSUNfRkJD X09QVElPTl9NRU1fU0FWSU5HKQotIEcxMiAxMGJpdDogRFJNX0ZPUk1BVF9ZVVY0MjBfMTBCSVQg fCBEUk1fRk9STUFUX01PRF9BTUxPR0lDX0ZCQygpQU1MT0dJQ19GQkNfTEFZT1VUX1NDQVRURVIs IEFNTE9HSUNfRkJDX09QVElPTl9NRU1fU0FWSU5HKQoKQW5kIHByb2JhYmx5IG1vcmUgZGVwZW5k aW5nIG9uIG5ldyBTb0NzIGFuZCBuZXcgY29kZWNzLgoKTmVpbAoKPiAKPj4KPj4gRm9yIHRoYXQs ICJhbTIxYyIgbmFtZSBpcyBtb3ZlZCB0byAiYW1mYmMiIHRvIHJlZmxlY3QgdGhlIHVwc3RyZWFt Cj4+IEFtbG9naWMgQ29tcHJlc3NlZCBmcmFtZWJ1ZmZlciBtb2RpZmllciBuYW1pbmcuCj4+Cj4+ IENvbXByZXNzZWQgZnJhbWUgYnVmZmVycyBhbGxvY2F0aW9uIGlzIGFsc28gY2xlYW5lZCB1cCBz byBpdAo+PiBjYW4gYmUgc2hhcmVkIHdpdGggdGhlIEhFVkMgZGVjb2RlciBpbXBsZW1lbnRhdGlv bi4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gUm9zemFrIDxiZW5qYW1pbjU0NUBnbWFp bC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBIZXdpdHQgPGNocmlzdGlhbnNoZXdp dHRAZ21haWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRl Yy9jb2RlY19oMjY0LmMgfCAgIDMgKy0KPj4gICAuLi4vbWVkaWEvbWVzb24vdmRlYy9jb2RlY19o ZXZjX2NvbW1vbi5jICAgICAgfCAxNjEgKysrKysrKysrKystLS0tLS0tCj4+ICAgLi4uL21lZGlh L21lc29uL3ZkZWMvY29kZWNfaGV2Y19jb21tb24uaCAgICAgIHwgICAzICstCj4+ICAgZHJpdmVy cy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvY29kZWNfdnA5LmMgIHwgIDM1ICsrLS0KPj4gICBk cml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9lc3BhcnNlci5jICAgfCAgIDEgKwo+PiAg IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL3ZkZWMuaCAgICAgICB8ICAgMSArCj4+ ICAgLi4uL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjX2hlbHBlcnMuYyAgIHwgIDQ0ICsr Ky0tCj4+ICAgLi4uL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjX2hlbHBlcnMuaCAgIHwg IDEwICstCj4+ICAgOCBmaWxlcyBjaGFuZ2VkLCAxNjEgaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRp b25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRl Yy9jb2RlY19oMjY0LmMgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9jb2RlY19o MjY0LmMKPj4gaW5kZXggYzYxMTI4ZmM0YmI5Li5kNTNjOWE0NjRiZGUgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2NvZGVjX2gyNjQuYwo+PiArKysgYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9jb2RlY19oMjY0LmMKPj4gQEAgLTM1Myw3 ICszNTMsOCBAQCBzdGF0aWMgdm9pZCBjb2RlY19oMjY0X3NyY19jaGFuZ2Uoc3RydWN0IGFtdmRl Y19zZXNzaW9uICpzZXNzKQo+PiAgIAkJZnJhbWVfd2lkdGgsIGZyYW1lX2hlaWdodCwgY3JvcF9y aWdodCwgY3JvcF9ib3R0b20pOwo+PiAgIAo+PiAgIAljb2RlY19oMjY0X3NldF9wYXIoc2Vzcyk7 Cj4+IC0JYW12ZGVjX3NyY19jaGFuZ2Uoc2VzcywgZnJhbWVfd2lkdGgsIGZyYW1lX2hlaWdodCwg aDI2NC0+bWF4X3JlZnMgKyA1KTsKPj4gKwlhbXZkZWNfc3JjX2NoYW5nZShzZXNzLCBmcmFtZV93 aWR0aCwgZnJhbWVfaGVpZ2h0LAo+PiArCQkJICBoMjY0LT5tYXhfcmVmcyArIDUsIDgpOwo+PiAg IH0KPj4gICAKPj4gICAvKgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21l c29uL3ZkZWMvY29kZWNfaGV2Y19jb21tb24uYyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNv bi92ZGVjL2NvZGVjX2hldmNfY29tbW9uLmMKPj4gaW5kZXggMDMxNWNjMDkxMWNkLi4xYzc0YjQ4 MzdkY2IgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2Nv ZGVjX2hldmNfY29tbW9uLmMKPj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3Zk ZWMvY29kZWNfaGV2Y19jb21tb24uYwo+PiBAQCAtMzAsOCArMzAsMTEgQEAgY29uc3QgdTE2IHZk ZWNfaGV2Y19wYXJzZXJfY21kW10gPSB7Cj4+ICAgdm9pZCBjb2RlY19oZXZjX3NldHVwX2RlY29k ZV9oZWFkKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcywgaW50IGlzXzEwYml0KQo+PiAgIHsK Pj4gICAJc3RydWN0IGFtdmRlY19jb3JlICpjb3JlID0gc2Vzcy0+Y29yZTsKPj4gLQl1MzIgYm9k eV9zaXplID0gYW12ZGVjX2FtMjFjX2JvZHlfc2l6ZShzZXNzLT53aWR0aCwgc2Vzcy0+aGVpZ2h0 KTsKPj4gLQl1MzIgaGVhZF9zaXplID0gYW12ZGVjX2FtMjFjX2hlYWRfc2l6ZShzZXNzLT53aWR0 aCwgc2Vzcy0+aGVpZ2h0KTsKPj4gKwl1MzIgdXNlX21tdSA9IGNvZGVjX2hldmNfdXNlX21tdShj b3JlLT5wbGF0Zm9ybS0+cmV2aXNpb24sCj4+ICsJCQkJCSBzZXNzLT5waXhmbXRfY2FwLCBpc18x MGJpdCk7Cj4+ICsJdTMyIGJvZHlfc2l6ZSA9IGFtdmRlY19hbWZiY19ib2R5X3NpemUoc2Vzcy0+ d2lkdGgsIHNlc3MtPmhlaWdodCwKPj4gKwkJCQkJICAgICAgIGlzXzEwYml0LCB1c2VfbW11KTsK Pj4gKwl1MzIgaGVhZF9zaXplID0gYW12ZGVjX2FtZmJjX2hlYWRfc2l6ZShzZXNzLT53aWR0aCwg c2Vzcy0+aGVpZ2h0KTsKPj4gICAKPj4gICAJaWYgKCFjb2RlY19oZXZjX3VzZV9mYmMoc2Vzcy0+ cGl4Zm10X2NhcCwgaXNfMTBiaXQpKSB7Cj4+ICAgCQkvKiBFbmFibGUgMi1wbGFuZSByZWZlcmVu Y2UgcmVhZCBtb2RlICovCj4+IEBAIC0zOSw5ICs0MiwxNyBAQCB2b2lkIGNvZGVjX2hldmNfc2V0 dXBfZGVjb2RlX2hlYWQoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLCBpbnQgaXNfMTBiaXQp Cj4+ICAgCQlyZXR1cm47Cj4+ICAgCX0KPj4gICAKPj4gKwkvKiBlbmFibGUgbWVtIHNhdmluZyBt b2RlIGZvciA4LWJpdCAqLwo+PiArCWlmICghaXNfMTBiaXQpCj4+ICsJCWFtdmRlY193cml0ZV9k b3NfYml0cyhjb3JlLCBIRVZDX1NBT19DVFJMNSwgQklUKDkpKTsKPj4gKwllbHNlCj4+ICsJCWFt dmRlY19jbGVhcl9kb3NfYml0cyhjb3JlLCBIRVZDX1NBT19DVFJMNSwgQklUKDkpKTsKPj4gKwo+ PiAgIAlpZiAoY29kZWNfaGV2Y191c2VfbW11KGNvcmUtPnBsYXRmb3JtLT5yZXZpc2lvbiwKPj4g ICAJCQkgICAgICAgc2Vzcy0+cGl4Zm10X2NhcCwgaXNfMTBiaXQpKQo+PiAgIAkJYW12ZGVjX3dy aXRlX2Rvcyhjb3JlLCBIRVZDRF9NUFBfREVDT01QX0NUTDEsIEJJVCg0KSk7Cj4+ICsJZWxzZSBp ZiAoIWlzXzEwYml0KQo+PiArCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNEX01QUF9ERUNP TVBfQ1RMMSwgQklUKDMpKTsKPj4gICAJZWxzZQo+PiAgIAkJYW12ZGVjX3dyaXRlX2Rvcyhjb3Jl LCBIRVZDRF9NUFBfREVDT01QX0NUTDEsIDApOwo+PiAgIAo+PiBAQCAtNzMsNyArODQsNyBAQCBz dGF0aWMgdm9pZCBjb2RlY19oZXZjX3NldHVwX2J1ZmZlcnNfZ3hiYihzdHJ1Y3QgYW12ZGVjX3Nl c3Npb24gKnNlc3MsCj4+ICAgCj4+ICAgCQlpZHggPSB2Yi0+aW5kZXg7Cj4+ICAgCj4+IC0JCWlm IChjb2RlY19oZXZjX3VzZV9kb3duc2FtcGxlKHNlc3MtPnBpeGZtdF9jYXAsIGlzXzEwYml0KSkK Pj4gKwkJaWYgKGNvZGVjX2hldmNfdXNlX2ZiYyhzZXNzLT5waXhmbXRfY2FwLCBpc18xMGJpdCkp Cj4+ICAgCQkJYnVmX3lfcGFkZHIgPSBjb21tLT5mYmNfYnVmZmVyX3BhZGRyW2lkeF07Cj4+ICAg CQllbHNlCj4+ICAgCQkJYnVmX3lfcGFkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRk cih2YiwgMCk7Cj4+IEBAIC0xMTQsOCArMTI1LDggQEAgc3RhdGljIHZvaWQgY29kZWNfaGV2Y19z ZXR1cF9idWZmZXJzX2d4bChzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+ICAgewo+PiAg IAlzdHJ1Y3QgYW12ZGVjX2NvcmUgKmNvcmUgPSBzZXNzLT5jb3JlOwo+PiAgIAlzdHJ1Y3QgdjRs Ml9tMm1fYnVmZmVyICpidWY7Cj4+IC0JdTMyIHJldmlzaW9uID0gY29yZS0+cGxhdGZvcm0tPnJl dmlzaW9uOwo+PiAgIAl1MzIgcGl4Zm10X2NhcCA9IHNlc3MtPnBpeGZtdF9jYXA7Cj4+ICsJY29u c3QgdTMyIHJldmlzaW9uID0gY29yZS0+cGxhdGZvcm0tPnJldmlzaW9uOwo+PiAgIAlpbnQgaTsK Pj4gICAKPj4gICAJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDRF9NUFBfQU5DMkFYSV9UQkxf Q09ORl9BRERSLAo+PiBAQCAtMTI3LDEyICsxMzgsMTQgQEAgc3RhdGljIHZvaWQgY29kZWNfaGV2 Y19zZXR1cF9idWZmZXJzX2d4bChzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+ICAgCQlk bWFfYWRkcl90IGJ1Zl91dl9wYWRkciA9IDA7Cj4+ICAgCQl1MzIgaWR4ID0gdmItPmluZGV4Owo+ PiAgIAo+PiAtCQlpZiAoY29kZWNfaGV2Y191c2VfbW11KHJldmlzaW9uLCBwaXhmbXRfY2FwLCBp c18xMGJpdCkpCj4+IC0JCQlidWZfeV9wYWRkciA9IGNvbW0tPm1tdV9oZWFkZXJfcGFkZHJbaWR4 XTsKPj4gLQkJZWxzZSBpZiAoY29kZWNfaGV2Y191c2VfZG93bnNhbXBsZShwaXhmbXRfY2FwLCBp c18xMGJpdCkpCj4+IC0JCQlidWZfeV9wYWRkciA9IGNvbW0tPmZiY19idWZmZXJfcGFkZHJbaWR4 XTsKPj4gLQkJZWxzZQo+PiArCQlpZiAoY29kZWNfaGV2Y191c2VfZG93bnNhbXBsZShwaXhmbXRf Y2FwLCBpc18xMGJpdCkpIHsKPj4gKwkJCWlmIChjb2RlY19oZXZjX3VzZV9tbXUocmV2aXNpb24s IHBpeGZtdF9jYXAsIGlzXzEwYml0KSkKPj4gKwkJCQlidWZfeV9wYWRkciA9IGNvbW0tPm1tdV9o ZWFkZXJfcGFkZHJbaWR4XTsKPj4gKwkJCWVsc2UKPj4gKwkJCQlidWZfeV9wYWRkciA9IGNvbW0t PmZiY19idWZmZXJfcGFkZHJbaWR4XTsKPj4gKwkJfSBlbHNlIHsKPj4gICAJCQlidWZfeV9wYWRk ciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHZiLCAwKTsKPj4gKwkJfQo+PiAgIAo+ PiAgIAkJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDRF9NUFBfQU5DMkFYSV9UQkxfREFUQSwK Pj4gICAJCQkJIGJ1Zl95X3BhZGRyID4+IDUpOwo+PiBAQCAtMTUwLDYwICsxNjMsNjcgQEAgc3Rh dGljIHZvaWQgY29kZWNfaGV2Y19zZXR1cF9idWZmZXJzX2d4bChzdHJ1Y3QgYW12ZGVjX3Nlc3Np b24gKnNlc3MsCj4+ICAgCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNEX01QUF9BTkNfQ0FO VkFTX0RBVEFfQUREUiwgMCk7Cj4+ICAgfQo+PiAgIAo+PiAtdm9pZCBjb2RlY19oZXZjX2ZyZWVf ZmJjX2J1ZmZlcnMoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+PiArdm9pZCBjb2RlY19o ZXZjX2ZyZWVfbW11X2hlYWRlcnMoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+PiAgIAkJ CQkgc3RydWN0IGNvZGVjX2hldmNfY29tbW9uICpjb21tKQo+PiAgIHsKPj4gICAJc3RydWN0IGRl dmljZSAqZGV2ID0gc2Vzcy0+Y29yZS0+ZGV2Owo+PiAtCXUzMiBhbTIxX3NpemUgPSBhbXZkZWNf YW0yMWNfc2l6ZShzZXNzLT53aWR0aCwgc2Vzcy0+aGVpZ2h0KTsKPj4gICAJaW50IGk7Cj4+ICAg Cj4+ICAgCWZvciAoaSA9IDA7IGkgPCBNQVhfUkVGX1BJQ19OVU07ICsraSkgewo+PiAtCQlpZiAo Y29tbS0+ZmJjX2J1ZmZlcl92YWRkcltpXSkgewo+PiAtCQkJZG1hX2ZyZWVfY29oZXJlbnQoZGV2 LCBhbTIxX3NpemUsCj4+IC0JCQkJCSAgY29tbS0+ZmJjX2J1ZmZlcl92YWRkcltpXSwKPj4gLQkJ CQkJICBjb21tLT5mYmNfYnVmZmVyX3BhZGRyW2ldKTsKPj4gLQkJCWNvbW0tPmZiY19idWZmZXJf dmFkZHJbaV0gPSBOVUxMOwo+PiArCQlpZiAoY29tbS0+bW11X2hlYWRlcl92YWRkcltpXSkgewo+ PiArCQkJZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBNTVVfQ09NUFJFU1NfSEVBREVSX1NJWkUsCj4+ ICsJCQkJCSAgY29tbS0+bW11X2hlYWRlcl92YWRkcltpXSwKPj4gKwkJCQkJICBjb21tLT5tbXVf aGVhZGVyX3BhZGRyW2ldKTsKPj4gKwkJCWNvbW0tPm1tdV9oZWFkZXJfdmFkZHJbaV0gPSBOVUxM Owo+PiAgIAkJfQo+PiAgIAl9Cj4+ICAgfQo+PiAtRVhQT1JUX1NZTUJPTF9HUEwoY29kZWNfaGV2 Y19mcmVlX2ZiY19idWZmZXJzKTsKPj4gK0VYUE9SVF9TWU1CT0xfR1BMKGNvZGVjX2hldmNfZnJl ZV9tbXVfaGVhZGVycyk7Cj4+ICAgCj4+IC1zdGF0aWMgaW50IGNvZGVjX2hldmNfYWxsb2NfZmJj X2J1ZmZlcnMoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+PiArc3RhdGljIGludCBjb2Rl Y19oZXZjX2FsbG9jX21tdV9oZWFkZXJzKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcywKPj4g ICAJCQkJCXN0cnVjdCBjb2RlY19oZXZjX2NvbW1vbiAqY29tbSkKPj4gICB7Cj4+ICAgCXN0cnVj dCBkZXZpY2UgKmRldiA9IHNlc3MtPmNvcmUtPmRldjsKPj4gICAJc3RydWN0IHY0bDJfbTJtX2J1 ZmZlciAqYnVmOwo+PiAtCXUzMiBhbTIxX3NpemUgPSBhbXZkZWNfYW0yMWNfc2l6ZShzZXNzLT53 aWR0aCwgc2Vzcy0+aGVpZ2h0KTsKPj4gICAKPj4gICAJdjRsMl9tMm1fZm9yX2VhY2hfZHN0X2J1 ZihzZXNzLT5tMm1fY3R4LCBidWYpIHsKPj4gICAJCXUzMiBpZHggPSBidWYtPnZiLnZiMl9idWYu aW5kZXg7Cj4+ICAgCQlkbWFfYWRkcl90IHBhZGRyOwo+PiAtCQl2b2lkICp2YWRkciA9IGRtYV9h bGxvY19jb2hlcmVudChkZXYsIGFtMjFfc2l6ZSwgJnBhZGRyLAo+PiAtCQkJCQkJIEdGUF9LRVJO RUwpOwo+PiArCQl2b2lkICp2YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIE1NVV9DT01Q UkVTU19IRUFERVJfU0laRSwKPj4gKwkJCQkJCSAmcGFkZHIsIEdGUF9LRVJORUwpOwo+PiAgIAkJ aWYgKCF2YWRkcikgewo+PiAtCQkJY29kZWNfaGV2Y19mcmVlX2ZiY19idWZmZXJzKHNlc3MsIGNv bW0pOwo+PiArCQkJY29kZWNfaGV2Y19mcmVlX21tdV9oZWFkZXJzKHNlc3MsIGNvbW0pOwo+PiAg IAkJCXJldHVybiAtRU5PTUVNOwo+PiAgIAkJfQo+PiAgIAo+PiAtCQljb21tLT5mYmNfYnVmZmVy X3ZhZGRyW2lkeF0gPSB2YWRkcjsKPj4gLQkJY29tbS0+ZmJjX2J1ZmZlcl9wYWRkcltpZHhdID0g cGFkZHI7Cj4+ICsJCWNvbW0tPm1tdV9oZWFkZXJfdmFkZHJbaWR4XSA9IHZhZGRyOwo+PiArCQlj b21tLT5tbXVfaGVhZGVyX3BhZGRyW2lkeF0gPSBwYWRkcjsKPj4gICAJfQo+PiAgIAo+PiAgIAly ZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+IC12b2lkIGNvZGVjX2hldmNfZnJlZV9tbXVfaGVhZGVy cyhzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+ICt2b2lkIGNvZGVjX2hldmNfZnJlZV9m YmNfYnVmZmVycyhzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+ICAgCQkJCSBzdHJ1Y3Qg Y29kZWNfaGV2Y19jb21tb24gKmNvbW0pCj4+ICAgewo+PiAgIAlzdHJ1Y3QgZGV2aWNlICpkZXYg PSBzZXNzLT5jb3JlLT5kZXY7Cj4+ICsJdTMyIHVzZV9tbXU7Cj4+ICsJdTMyIGFtMjFfc2l6ZTsK Pj4gICAJaW50IGk7Cj4+ICAgCj4+ICsJdXNlX21tdSA9IGNvZGVjX2hldmNfdXNlX21tdShzZXNz LT5jb3JlLT5wbGF0Zm9ybS0+cmV2aXNpb24sCj4+ICsJCQkJICAgICBzZXNzLT5waXhmbXRfY2Fw LAo+PiArCQkJCXNlc3MtPmJpdGRlcHRoID09IDEwID8gMSA6IDApOwo+PiArCj4+ICsJYW0yMV9z aXplID0gYW12ZGVjX2FtZmJjX3NpemUoc2Vzcy0+d2lkdGgsIHNlc3MtPmhlaWdodCwKPj4gKwkJ CQkgICAgICBzZXNzLT5iaXRkZXB0aCA9PSAxMCA/IDEgOiAwLCB1c2VfbW11KTsKPj4gKwo+PiAg IAlmb3IgKGkgPSAwOyBpIDwgTUFYX1JFRl9QSUNfTlVNOyArK2kpIHsKPj4gLQkJaWYgKGNvbW0t Pm1tdV9oZWFkZXJfdmFkZHJbaV0pIHsKPj4gLQkJCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgTU1V X0NPTVBSRVNTX0hFQURFUl9TSVpFLAo+PiAtCQkJCQkgIGNvbW0tPm1tdV9oZWFkZXJfdmFkZHJb aV0sCj4+IC0JCQkJCSAgY29tbS0+bW11X2hlYWRlcl9wYWRkcltpXSk7Cj4+IC0JCQljb21tLT5t bXVfaGVhZGVyX3ZhZGRyW2ldID0gTlVMTDsKPj4gKwkJaWYgKGNvbW0tPmZiY19idWZmZXJfdmFk ZHJbaV0pIHsKPj4gKwkJCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgYW0yMV9zaXplLAo+PiArCQkJ CQkgIGNvbW0tPmZiY19idWZmZXJfdmFkZHJbaV0sCj4+ICsJCQkJCSAgY29tbS0+ZmJjX2J1ZmZl cl9wYWRkcltpXSk7Cj4+ICsJCQljb21tLT5mYmNfYnVmZmVyX3ZhZGRyW2ldID0gTlVMTDsKPj4g ICAJCX0KPj4gICAJfQo+PiAgIAo+PiBAQCAtMjEzLDMzICsyMzMsNTAgQEAgdm9pZCBjb2RlY19o ZXZjX2ZyZWVfbW11X2hlYWRlcnMoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+PiAgIAkJ CQkgIGNvbW0tPm1tdV9tYXBfcGFkZHIpOwo+PiAgIAkJY29tbS0+bW11X21hcF92YWRkciA9IE5V TEw7Cj4+ICAgCX0KPj4gKwo+PiArCWNvZGVjX2hldmNfZnJlZV9tbXVfaGVhZGVycyhzZXNzLCBj b21tKTsKPj4gICB9Cj4+IC1FWFBPUlRfU1lNQk9MX0dQTChjb2RlY19oZXZjX2ZyZWVfbW11X2hl YWRlcnMpOwo+PiArRVhQT1JUX1NZTUJPTF9HUEwoY29kZWNfaGV2Y19mcmVlX2ZiY19idWZmZXJz KTsKPj4gICAKPj4gLXN0YXRpYyBpbnQgY29kZWNfaGV2Y19hbGxvY19tbXVfaGVhZGVycyhzdHJ1 Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+ICtzdGF0aWMgaW50IGNvZGVjX2hldmNfYWxsb2Nf ZmJjX2J1ZmZlcnMoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+PiAgIAkJCQkJc3RydWN0 IGNvZGVjX2hldmNfY29tbW9uICpjb21tKQo+PiAgIHsKPj4gICAJc3RydWN0IGRldmljZSAqZGV2 ID0gc2Vzcy0+Y29yZS0+ZGV2Owo+PiAgIAlzdHJ1Y3QgdjRsMl9tMm1fYnVmZmVyICpidWY7Cj4+ ICsJdTMyIHVzZV9tbXU7Cj4+ICsJdTMyIGFtMjFfc2l6ZTsKPj4gKwljb25zdCB1MzIgcmV2aXNp b24gPSBzZXNzLT5jb3JlLT5wbGF0Zm9ybS0+cmV2aXNpb247Cj4+ICsJY29uc3QgdTMyIGlzXzEw Yml0ID0gc2Vzcy0+Yml0ZGVwdGggPT0gMTAgPyAxIDogMDsKPj4gKwlpbnQgcmV0Owo+PiAgIAo+ PiAtCWNvbW0tPm1tdV9tYXBfdmFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBNTVVfTUFQ X1NJWkUsCj4+IC0JCQkJCQkgJmNvbW0tPm1tdV9tYXBfcGFkZHIsCj4+IC0JCQkJCQkgR0ZQX0tF Uk5FTCk7Cj4+IC0JaWYgKCFjb21tLT5tbXVfbWFwX3ZhZGRyKQo+PiAtCQlyZXR1cm4gLUVOT01F TTsKPj4gKwl1c2VfbW11ID0gY29kZWNfaGV2Y191c2VfbW11KHJldmlzaW9uLCBzZXNzLT5waXhm bXRfY2FwLAo+PiArCQkJCSAgICAgaXNfMTBiaXQpOwo+PiArCj4+ICsJYW0yMV9zaXplID0gYW12 ZGVjX2FtZmJjX3NpemUoc2Vzcy0+d2lkdGgsIHNlc3MtPmhlaWdodCwKPj4gKwkJCQkgICAgICBp c18xMGJpdCwgdXNlX21tdSk7Cj4+ICAgCj4+ICAgCXY0bDJfbTJtX2Zvcl9lYWNoX2RzdF9idWYo c2Vzcy0+bTJtX2N0eCwgYnVmKSB7Cj4+ICAgCQl1MzIgaWR4ID0gYnVmLT52Yi52YjJfYnVmLmlu ZGV4Owo+PiAgIAkJZG1hX2FkZHJfdCBwYWRkcjsKPj4gLQkJdm9pZCAqdmFkZHIgPSBkbWFfYWxs b2NfY29oZXJlbnQoZGV2LCBNTVVfQ09NUFJFU1NfSEVBREVSX1NJWkUsCj4+IC0JCQkJCQkgJnBh ZGRyLCBHRlBfS0VSTkVMKTsKPj4gKwo+PiArCQl2b2lkICp2YWRkciA9IGRtYV9hbGxvY19jb2hl cmVudChkZXYsIGFtMjFfc2l6ZSwgJnBhZGRyLAo+PiArCQkJCQkJIEdGUF9LRVJORUwpOwo+PiAg IAkJaWYgKCF2YWRkcikgewo+PiAtCQkJY29kZWNfaGV2Y19mcmVlX21tdV9oZWFkZXJzKHNlc3Ms IGNvbW0pOwo+PiArCQkJY29kZWNfaGV2Y19mcmVlX2ZiY19idWZmZXJzKHNlc3MsIGNvbW0pOwo+ PiAgIAkJCXJldHVybiAtRU5PTUVNOwo+PiAgIAkJfQo+PiAgIAo+PiAtCQljb21tLT5tbXVfaGVh ZGVyX3ZhZGRyW2lkeF0gPSB2YWRkcjsKPj4gLQkJY29tbS0+bW11X2hlYWRlcl9wYWRkcltpZHhd ID0gcGFkZHI7Cj4+ICsJCWNvbW0tPmZiY19idWZmZXJfdmFkZHJbaWR4XSA9IHZhZGRyOwo+PiAr CQljb21tLT5mYmNfYnVmZmVyX3BhZGRyW2lkeF0gPSBwYWRkcjsKPj4gKwl9Cj4+ICsKPj4gKwlp ZiAoY29kZWNfaGV2Y191c2VfbW11KHJldmlzaW9uLCBzZXNzLT5waXhmbXRfY2FwLCBpc18xMGJp dCkgJiYKPj4gKwkgICAgY29kZWNfaGV2Y191c2VfZG93bnNhbXBsZShzZXNzLT5waXhmbXRfY2Fw LCBpc18xMGJpdCkpIHsKPj4gKwkJcmV0ID0gY29kZWNfaGV2Y19hbGxvY19tbXVfaGVhZGVycyhz ZXNzLCBjb21tKTsKPj4gKwkJaWYgKHJldCkgewo+PiArCQkJY29kZWNfaGV2Y19mcmVlX2ZiY19i dWZmZXJzKHNlc3MsIGNvbW0pOwo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwkJfQo+PiAgIAl9Cj4+ ICAgCj4+ICAgCXJldHVybiAwOwo+PiBAQCAtMjUwLDIxICsyODcsMjQgQEAgaW50IGNvZGVjX2hl dmNfc2V0dXBfYnVmZmVycyhzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+ICAgCQkJICAg ICBpbnQgaXNfMTBiaXQpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgYW12ZGVjX2NvcmUgKmNvcmUgPSBz ZXNzLT5jb3JlOwo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNvcmUtPmRldjsKPj4gICAJaW50 IHJldDsKPj4gICAKPj4gLQlpZiAoY29kZWNfaGV2Y191c2VfZG93bnNhbXBsZShzZXNzLT5waXhm bXRfY2FwLCBpc18xMGJpdCkpIHsKPj4gLQkJcmV0ID0gY29kZWNfaGV2Y19hbGxvY19mYmNfYnVm ZmVycyhzZXNzLCBjb21tKTsKPj4gLQkJaWYgKHJldCkKPj4gLQkJCXJldHVybiByZXQ7Cj4+ICsJ aWYgKGNvZGVjX2hldmNfdXNlX21tdShjb3JlLT5wbGF0Zm9ybS0+cmV2aXNpb24sCj4+ICsJCQkg ICAgICAgc2Vzcy0+cGl4Zm10X2NhcCwgaXNfMTBiaXQpKSB7Cj4+ICsJCWNvbW0tPm1tdV9tYXBf dmFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBNTVVfTUFQX1NJWkUsCj4+ICsJCQkJCQkJ ICZjb21tLT5tbXVfbWFwX3BhZGRyLAo+PiArCQkJCQkJCSBHRlBfS0VSTkVMKTsKPj4gKwkJaWYg KCFjb21tLT5tbXVfbWFwX3ZhZGRyKQo+PiArCQkJcmV0dXJuIC1FTk9NRU07Cj4+ICAgCX0KPj4g ICAKPj4gICAJaWYgKGNvZGVjX2hldmNfdXNlX21tdShjb3JlLT5wbGF0Zm9ybS0+cmV2aXNpb24s Cj4+IC0JCQkgICAgICAgc2Vzcy0+cGl4Zm10X2NhcCwgaXNfMTBiaXQpKSB7Cj4+IC0JCXJldCA9 IGNvZGVjX2hldmNfYWxsb2NfbW11X2hlYWRlcnMoc2VzcywgY29tbSk7Cj4+IC0JCWlmIChyZXQp IHsKPj4gLQkJCWNvZGVjX2hldmNfZnJlZV9mYmNfYnVmZmVycyhzZXNzLCBjb21tKTsKPj4gKwkJ CSAgICAgICBzZXNzLT5waXhmbXRfY2FwLCBpc18xMGJpdCkgfHwKPj4gKwkgICAgY29kZWNfaGV2 Y191c2VfZG93bnNhbXBsZShzZXNzLT5waXhmbXRfY2FwLCBpc18xMGJpdCkpIHsKPj4gKwkJcmV0 ID0gY29kZWNfaGV2Y19hbGxvY19mYmNfYnVmZmVycyhzZXNzLCBjb21tKTsKPj4gKwkJaWYgKHJl dCkKPj4gICAJCQlyZXR1cm4gcmV0Owo+PiAtCQl9Cj4+ICAgCX0KPj4gICAKPj4gICAJaWYgKGNv cmUtPnBsYXRmb3JtLT5yZXZpc2lvbiA9PSBWREVDX1JFVklTSU9OX0dYQkIpCj4+IEBAIC0yNzgs MTkgKzMxOCwyNCBAQCBFWFBPUlRfU1lNQk9MX0dQTChjb2RlY19oZXZjX3NldHVwX2J1ZmZlcnMp Owo+PiAgIAo+PiAgIHZvaWQgY29kZWNfaGV2Y19maWxsX21tdV9tYXAoc3RydWN0IGFtdmRlY19z ZXNzaW9uICpzZXNzLAo+PiAgIAkJCSAgICAgc3RydWN0IGNvZGVjX2hldmNfY29tbW9uICpjb21t LAo+PiAtCQkJICAgICBzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpCj4+ICsJCQkgICAgIHN0cnVjdCB2 YjJfYnVmZmVyICp2YiwKPj4gKwkJCSAgICAgdTMyIGlzXzEwYml0KQo+PiAgIHsKPj4gLQl1MzIg c2l6ZSA9IGFtdmRlY19hbTIxY19zaXplKHNlc3MtPndpZHRoLCBzZXNzLT5oZWlnaHQpOwo+PiAt CXUzMiBuYl9wYWdlcyA9IHNpemUgLyBQQUdFX1NJWkU7Cj4+ICsJdTMyIHVzZV9tbXU7Cj4+ICsJ dTMyIHNpemU7Cj4+ICsJdTMyIG5iX3BhZ2VzOwo+PiAgIAl1MzIgKm1tdV9tYXAgPSBjb21tLT5t bXVfbWFwX3ZhZGRyOwo+PiAgIAl1MzIgZmlyc3RfcGFnZTsKPj4gICAJdTMyIGk7Cj4+ICAgCj4+ IC0JaWYgKHNlc3MtPnBpeGZtdF9jYXAgPT0gVjRMMl9QSVhfRk1UX05WMTJNKQo+PiAtCQlmaXJz dF9wYWdlID0gY29tbS0+ZmJjX2J1ZmZlcl9wYWRkclt2Yi0+aW5kZXhdID4+IFBBR0VfU0hJRlQ7 Cj4+IC0JZWxzZQo+PiAtCQlmaXJzdF9wYWdlID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2Fk ZHIodmIsIDApID4+IFBBR0VfU0hJRlQ7Cj4+ICsJdXNlX21tdSA9IGNvZGVjX2hldmNfdXNlX21t dShzZXNzLT5jb3JlLT5wbGF0Zm9ybS0+cmV2aXNpb24sCj4+ICsJCQkJICAgICBzZXNzLT5waXhm bXRfY2FwLCBpc18xMGJpdCk7Cj4+ICsKPj4gKwlzaXplID0gYW12ZGVjX2FtZmJjX3NpemUoc2Vz cy0+d2lkdGgsIHNlc3MtPmhlaWdodCwgaXNfMTBiaXQsCj4+ICsJCQkJIHVzZV9tbXUpOwo+PiAg IAo+PiArCW5iX3BhZ2VzID0gc2l6ZSAvIFBBR0VfU0laRTsKPj4gKwlmaXJzdF9wYWdlID0gY29t bS0+ZmJjX2J1ZmZlcl9wYWRkclt2Yi0+aW5kZXhdID4+IFBBR0VfU0hJRlQ7Cj4+ICAgCWZvciAo aSA9IDA7IGkgPCBuYl9wYWdlczsgKytpKQo+PiAgIAkJbW11X21hcFtpXSA9IGZpcnN0X3BhZ2Ug KyBpOwo+PiAgIH0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92 ZGVjL2NvZGVjX2hldmNfY29tbW9uLmggYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRl Yy9jb2RlY19oZXZjX2NvbW1vbi5oCj4+IGluZGV4IGNmMDcyYjhhOWRhMi4uMTNmOWYxZDkwYTk0 IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9jb2RlY19o ZXZjX2NvbW1vbi5oCj4+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2Nv ZGVjX2hldmNfY29tbW9uLmgKPj4gQEAgLTY0LDYgKzY0LDcgQEAgaW50IGNvZGVjX2hldmNfc2V0 dXBfYnVmZmVycyhzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+ICAgCj4+ICAgdm9pZCBj b2RlY19oZXZjX2ZpbGxfbW11X21hcChzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4+ICAg CQkJICAgICBzdHJ1Y3QgY29kZWNfaGV2Y19jb21tb24gKmNvbW0sCj4+IC0JCQkgICAgIHN0cnVj dCB2YjJfYnVmZmVyICp2Yik7Cj4+ICsJCQkgICAgIHN0cnVjdCB2YjJfYnVmZmVyICp2YiwKPj4g KwkJCSAgICAgdTMyIGlzXzEwYml0KTsKPj4gICAKPj4gICAjZW5kaWYKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2NvZGVjX3ZwOS5jIGIvZHJpdmVycy9z dGFnaW5nL21lZGlhL21lc29uL3ZkZWMvY29kZWNfdnA5LmMKPj4gaW5kZXggMzk0ZGY1NzYxNTU2 Li44ZTNiYmYwZGI0YjMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNv bi92ZGVjL2NvZGVjX3ZwOS5jCj4+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92 ZGVjL2NvZGVjX3ZwOS5jCj4+IEBAIC00NTgsMTIgKzQ1OCw2IEBAIHN0cnVjdCBjb2RlY192cDkg ewo+PiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIHJlZl9mcmFtZXNfbGlzdDsKPj4gICAJdTMyIGZyYW1l c19udW07Cj4+ICAgCj4+IC0JLyogSW4gY2FzZSBvZiBkb3duc2FtcGxpbmcgKGRlY29kaW5nIHdp dGggRkJDIGJ1dCBvdXRwdXR0aW5nIGluIE5WMTJNKSwKPj4gLQkgKiB3ZSBuZWVkIHRvIGFsbG9j YXRlIGFkZGl0aW9uYWwgYnVmZmVycyBmb3IgRkJDLgo+PiAtCSAqLwo+PiAtCXZvaWQgICAgICAq ZmJjX2J1ZmZlcl92YWRkcltNQVhfUkVGX1BJQ19OVU1dOwo+PiAtCWRtYV9hZGRyX3QgZmJjX2J1 ZmZlcl9wYWRkcltNQVhfUkVGX1BJQ19OVU1dOwo+PiAtCj4+ICAgCWludCByZWZfZnJhbWVfbWFw W1JFRl9GUkFNRVNdOwo+PiAgIAlpbnQgbmV4dF9yZWZfZnJhbWVfbWFwW1JFRl9GUkFNRVNdOwo+ PiAgIAlzdHJ1Y3QgdnA5X2ZyYW1lICpmcmFtZV9yZWZzW1JFRlNfUEVSX0ZSQU1FXTsKPj4gQEAg LTkwMSwxMSArODk1LDggQEAgc3RhdGljIHZvaWQgY29kZWNfdnA5X3NldF9zYW8oc3RydWN0IGFt dmRlY19zZXNzaW9uICpzZXNzLAo+PiAgIAkJYnVmX3lfcGFkZHIgPQo+PiAgIAkJICAgICAgIHZi Ml9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKHZiLCAwKTsKPj4gICAKPj4gLQlpZiAoY29kZWNf aGV2Y191c2VfZmJjKHNlc3MtPnBpeGZtdF9jYXAsIHZwOS0+aXNfMTBiaXQpKSB7Cj4+IC0JCXZh bCA9IGFtdmRlY19yZWFkX2Rvcyhjb3JlLCBIRVZDX1NBT19DVFJMNSkgJiB+MHhmZjAyMDA7Cj4+ IC0JCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19TQU9fQ1RSTDUsIHZhbCk7Cj4+ICsJaWYg KGNvZGVjX2hldmNfdXNlX2ZiYyhzZXNzLT5waXhmbXRfY2FwLCB2cDktPmlzXzEwYml0KSkKPj4g ICAJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19DTV9CT0RZX1NUQVJUX0FERFIsIGJ1Zl95 X3BhZGRyKTsKPj4gLQl9Cj4+ICAgCj4+ICAgCWlmIChzZXNzLT5waXhmbXRfY2FwID09IFY0TDJf UElYX0ZNVF9OVjEyTSkgewo+PiAgIAkJYnVmX3lfcGFkZHIgPQo+PiBAQCAtOTIwLDggKzkxMSwx MyBAQCBzdGF0aWMgdm9pZCBjb2RlY192cDlfc2V0X3NhbyhzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24g KnNlc3MsCj4+ICAgCj4+ICAgCWlmIChjb2RlY19oZXZjX3VzZV9tbXUoY29yZS0+cGxhdGZvcm0t PnJldmlzaW9uLCBzZXNzLT5waXhmbXRfY2FwLAo+PiAgIAkJCSAgICAgICB2cDktPmlzXzEwYml0 KSkgewo+PiAtCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNfQ01fSEVBREVSX1NUQVJUX0FE RFIsCj4+IC0JCQkJIHZwOS0+Y29tbW9uLm1tdV9oZWFkZXJfcGFkZHJbdmItPmluZGV4XSk7Cj4+ ICsJCWRtYV9hZGRyX3QgaGVhZGVyX2FkcjsKPj4gKwo+PiArCQlpZiAoY29kZWNfaGV2Y191c2Vf ZG93bnNhbXBsZShzZXNzLT5waXhmbXRfY2FwLCB2cDktPmlzXzEwYml0KSkKPj4gKwkJCWhlYWRl cl9hZHIgPSB2cDktPmNvbW1vbi5tbXVfaGVhZGVyX3BhZGRyW3ZiLT5pbmRleF07Cj4+ICsJCWVs c2UKPj4gKwkJCWhlYWRlcl9hZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcih2Yiwg MCk7Cj4+ICsJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19DTV9IRUFERVJfU1RBUlRfQURE UiwgaGVhZGVyX2Fkcik7Cj4+ICAgCQkvKiB1c2UgSEVWQ19DTV9IRUFERVJfU1RBUlRfQUREUiAq Lwo+PiAgIAkJYW12ZGVjX3dyaXRlX2Rvc19iaXRzKGNvcmUsIEhFVkNfU0FPX0NUUkw1LCBCSVQo MTApKTsKPj4gICAJfQo+PiBAQCAtMTE0OCw5ICsxMTQ0LDEzIEBAIHN0YXRpYyB2b2lkIGNvZGVj X3ZwOV9zZXRfbWMoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+PiAgIHsKPj4gICAJc3Ry dWN0IGFtdmRlY19jb3JlICpjb3JlID0gc2Vzcy0+Y29yZTsKPj4gICAJdTMyIHNjYWxlID0gMDsK Pj4gKwl1MzIgdXNlX21tdTsKPj4gICAJdTMyIHN6Owo+PiAgIAlpbnQgaTsKPj4gICAKPj4gKwl1 c2VfbW11ID0gY29kZWNfaGV2Y191c2VfbW11KGNvcmUtPnBsYXRmb3JtLT5yZXZpc2lvbiwKPj4g KwkJCQkgICAgIHNlc3MtPnBpeGZtdF9jYXAsIHZwOS0+aXNfMTBiaXQpOwo+PiArCj4+ICAgCWFt dmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ0RfTVBQX0FOQ19DQU5WQVNfQUNDQ09ORklHX0FERFIs IDEpOwo+PiAgIAljb2RlY192cDlfc2V0X3JlZnMoc2VzcywgdnA5KTsKPj4gICAJYW12ZGVjX3dy aXRlX2Rvcyhjb3JlLCBIRVZDRF9NUFBfQU5DX0NBTlZBU19BQ0NDT05GSUdfQUREUiwKPj4gQEAg LTExNjYsOCArMTE2Niw5IEBAIHN0YXRpYyB2b2lkIGNvZGVjX3ZwOV9zZXRfbWMoc3RydWN0IGFt dmRlY19zZXNzaW9uICpzZXNzLAo+PiAgIAkJICAgIHZwOS0+ZnJhbWVfcmVmc1tpXS0+aGVpZ2h0 ICE9IHZwOS0+aGVpZ2h0KQo+PiAgIAkJCXNjYWxlID0gMTsKPj4gICAKPj4gLQkJc3ogPSBhbXZk ZWNfYW0yMWNfYm9keV9zaXplKHZwOS0+ZnJhbWVfcmVmc1tpXS0+d2lkdGgsCj4+IC0JCQkJCSAg ICB2cDktPmZyYW1lX3JlZnNbaV0tPmhlaWdodCk7Cj4+ICsJCXN6ID0gYW12ZGVjX2FtZmJjX2Jv ZHlfc2l6ZSh2cDktPmZyYW1lX3JlZnNbaV0tPndpZHRoLAo+PiArCQkJCQkgICAgdnA5LT5mcmFt ZV9yZWZzW2ldLT5oZWlnaHQsCj4+ICsJCQkJCSAgICB2cDktPmlzXzEwYml0LCB1c2VfbW11KTsK Pj4gICAKPj4gICAJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgVlA5RF9NUFBfUkVGSU5GT19EQVRB LAo+PiAgIAkJCQkgdnA5LT5mcmFtZV9yZWZzW2ldLT53aWR0aCk7Cj4+IEBAIC0xMjgzLDcgKzEy ODQsOCBAQCBzdGF0aWMgdm9pZCBjb2RlY192cDlfcHJvY2Vzc19mcmFtZShzdHJ1Y3QgYW12ZGVj X3Nlc3Npb24gKnNlc3MpCj4+ICAgCWlmIChjb2RlY19oZXZjX3VzZV9tbXUoY29yZS0+cGxhdGZv cm0tPnJldmlzaW9uLCBzZXNzLT5waXhmbXRfY2FwLAo+PiAgIAkJCSAgICAgICB2cDktPmlzXzEw Yml0KSkKPj4gICAJCWNvZGVjX2hldmNfZmlsbF9tbXVfbWFwKHNlc3MsICZ2cDktPmNvbW1vbiwK Pj4gLQkJCQkJJnZwOS0+Y3VyX2ZyYW1lLT52YnVmLT52YjJfYnVmKTsKPj4gKwkJCQkJJnZwOS0+ Y3VyX2ZyYW1lLT52YnVmLT52YjJfYnVmLAo+PiArCQkJCQl2cDktPmlzXzEwYml0KTsKPj4gICAK Pj4gICAJaW50cmFfb25seSA9IHBhcmFtLT5wLnNob3dfZnJhbWUgPyAwIDogcGFyYW0tPnAuaW50 cmFfb25seTsKPj4gICAKPj4gQEAgLTIxMzAsNyArMjEzMiw4IEBAIHN0YXRpYyBpcnFyZXR1cm5f dCBjb2RlY192cDlfdGhyZWFkZWRfaXNyKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcykKPj4g ICAKPj4gICAJY29kZWNfdnA5X2ZldGNoX3JwbShzZXNzKTsKPj4gICAJaWYgKGNvZGVjX3ZwOV9w cm9jZXNzX3JwbSh2cDkpKSB7Cj4+IC0JCWFtdmRlY19zcmNfY2hhbmdlKHNlc3MsIHZwOS0+d2lk dGgsIHZwOS0+aGVpZ2h0LCAxNik7Cj4+ICsJCWFtdmRlY19zcmNfY2hhbmdlKHNlc3MsIHZwOS0+ d2lkdGgsIHZwOS0+aGVpZ2h0LCAxNiwKPj4gKwkJCQkgIHZwOS0+aXNfMTBiaXQgPyAxMCA6IDgp Owo+PiAgIAo+PiAgIAkJLyogTm8gZnJhbWUgaXMgYWN0dWFsbHkgcHJvY2Vzc2VkICovCj4+ICAg CQl2cDktPmN1cl9mcmFtZSA9IE5VTEw7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvbWVzb24vdmRlYy9lc3BhcnNlci5jIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29u L3ZkZWMvZXNwYXJzZXIuYwo+PiBpbmRleCAxOTA0ZDU4ODc1YWQuLjNjZDI5YWI0Zjk3OSAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvZXNwYXJzZXIuYwo+ PiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9lc3BhcnNlci5jCj4+IEBA IC0zMjAsNiArMzIwLDcgQEAgZXNwYXJzZXJfcXVldWUoc3RydWN0IGFtdmRlY19zZXNzaW9uICpz ZXNzLCBzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YnVmKQo+PiAgIAkJaWYgKGVzcGFyc2VyX3Zp Zmlmb19nZXRfZnJlZV9zcGFjZShzZXNzKSA8IHBheWxvYWRfc2l6ZSB8fAo+PiAgIAkJICAgIGF0 b21pY19yZWFkKCZzZXNzLT5lc3BhcnNlcl9xdWV1ZWRfYnVmcykgPj0gbnVtX2RzdF9idWZzKQo+ PiAgIAkJCXJldHVybiAtRUFHQUlOOwo+PiArCj4+ICAgCX0gZWxzZSBpZiAoZXNwYXJzZXJfdmlm aWZvX2dldF9mcmVlX3NwYWNlKHNlc3MpIDwgcGF5bG9hZF9zaXplKSB7Cj4+ICAgCQlyZXR1cm4g LUVBR0FJTjsKPj4gICAJfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21l c29uL3ZkZWMvdmRlYy5oIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlYy5o Cj4+IGluZGV4IDA5MDZiOGZiNWNjNi4uYTQ4MTcwZmU0Y2ZmIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjLmgKPj4gKysrIGIvZHJpdmVycy9zdGFn aW5nL21lZGlhL21lc29uL3ZkZWMvdmRlYy5oCj4+IEBAIC0yNDQsNiArMjQ0LDcgQEAgc3RydWN0 IGFtdmRlY19zZXNzaW9uIHsKPj4gICAJdTMyIHdpZHRoOwo+PiAgIAl1MzIgaGVpZ2h0Owo+PiAg IAl1MzIgY29sb3JzcGFjZTsKPj4gKwl1MzIgYml0ZGVwdGg7Cj4+ICAgCXU4IHljYmNyX2VuYzsK Pj4gICAJdTggcXVhbnRpemF0aW9uOwo+PiAgIAl1OCB4ZmVyX2Z1bmM7Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjX2hlbHBlcnMuYyBiL2RyaXZl cnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL3ZkZWNfaGVscGVycy5jCj4+IGluZGV4IDdkMmE3 NTY1MzI1MC4uZmVmNzYxNDJmMGM1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVk aWEvbWVzb24vdmRlYy92ZGVjX2hlbHBlcnMuYwo+PiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVk aWEvbWVzb24vdmRlYy92ZGVjX2hlbHBlcnMuYwo+PiBAQCAtNTAsMzIgKzUwLDQwIEBAIHZvaWQg YW12ZGVjX3dyaXRlX3BhcnNlcihzdHJ1Y3QgYW12ZGVjX2NvcmUgKmNvcmUsIHUzMiByZWcsIHUz MiB2YWwpCj4+ICAgfQo+PiAgIEVYUE9SVF9TWU1CT0xfR1BMKGFtdmRlY193cml0ZV9wYXJzZXIp Owo+PiAgIAo+PiAtLyogNCBLaUIgcGVyIDY0eDMyIGJsb2NrICovCj4+IC11MzIgYW12ZGVjX2Ft MjFjX2JvZHlfc2l6ZSh1MzIgd2lkdGgsIHUzMiBoZWlnaHQpCj4+ICsvKiBBTUZCQyBib2R5IGlz IG1hZGUgb3V0IG9mIDY0eDMyIGJsb2NrcyB3aXRoIHZhcnlpbmcgYmxvY2sgc2l6ZSAqLwo+PiAr dTMyIGFtdmRlY19hbWZiY19ib2R5X3NpemUodTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCB1MzIgaXNf MTBiaXQsIHUzMiB1c2VfbW11KQo+PiAgIHsKPj4gICAJdTMyIHdpZHRoXzY0ID0gQUxJR04od2lk dGgsIDY0KSAvIDY0Owo+PiAgIAl1MzIgaGVpZ2h0XzMyID0gQUxJR04oaGVpZ2h0LCAzMikgLyAz MjsKPj4gKwl1MzIgYmxrX3NpemUgPSA0MDk2Owo+PiAgIAo+PiAtCXJldHVybiBTWl80SyAqIHdp ZHRoXzY0ICogaGVpZ2h0XzMyOwo+PiArCWlmICghaXNfMTBiaXQpIHsKPj4gKwkJaWYgKHVzZV9t bXUpCj4+ICsJCQlibGtfc2l6ZSA9IDMyMDA7Cj4+ICsJCWVsc2UKPj4gKwkJCWJsa19zaXplID0g MzA3MjsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gYmxrX3NpemUgKiB3aWR0aF82NCAqIGhlaWdo dF8zMjsKPj4gICB9Cj4+IC1FWFBPUlRfU1lNQk9MX0dQTChhbXZkZWNfYW0yMWNfYm9keV9zaXpl KTsKPj4gK0VYUE9SVF9TWU1CT0xfR1BMKGFtdmRlY19hbWZiY19ib2R5X3NpemUpOwo+PiAgIAo+ PiAgIC8qIDMyIGJ5dGVzIHBlciAxMjh4NjQgYmxvY2sgKi8KPj4gLXUzMiBhbXZkZWNfYW0yMWNf aGVhZF9zaXplKHUzMiB3aWR0aCwgdTMyIGhlaWdodCkKPj4gK3UzMiBhbXZkZWNfYW1mYmNfaGVh ZF9zaXplKHUzMiB3aWR0aCwgdTMyIGhlaWdodCkKPj4gICB7Cj4+ICAgCXUzMiB3aWR0aF8xMjgg PSBBTElHTih3aWR0aCwgMTI4KSAvIDEyODsKPj4gICAJdTMyIGhlaWdodF82NCA9IEFMSUdOKGhl aWdodCwgNjQpIC8gNjQ7Cj4+ICAgCj4+ICAgCXJldHVybiAzMiAqIHdpZHRoXzEyOCAqIGhlaWdo dF82NDsKPj4gICB9Cj4+IC1FWFBPUlRfU1lNQk9MX0dQTChhbXZkZWNfYW0yMWNfaGVhZF9zaXpl KTsKPj4gK0VYUE9SVF9TWU1CT0xfR1BMKGFtdmRlY19hbWZiY19oZWFkX3NpemUpOwo+PiAgIAo+ PiAtdTMyIGFtdmRlY19hbTIxY19zaXplKHUzMiB3aWR0aCwgdTMyIGhlaWdodCkKPj4gK3UzMiBh bXZkZWNfYW1mYmNfc2l6ZSh1MzIgd2lkdGgsIHUzMiBoZWlnaHQsIHUzMiBpc18xMGJpdCwgdTMy IHVzZV9tbXUpCj4+ICAgewo+PiAtCXJldHVybiBBTElHTihhbXZkZWNfYW0yMWNfYm9keV9zaXpl KHdpZHRoLCBoZWlnaHQpICsKPj4gLQkJICAgICBhbXZkZWNfYW0yMWNfaGVhZF9zaXplKHdpZHRo LCBoZWlnaHQpLCBTWl82NEspOwo+PiArCXJldHVybiBBTElHTihhbXZkZWNfYW1mYmNfYm9keV9z aXplKHdpZHRoLCBoZWlnaHQsIGlzXzEwYml0LCB1c2VfbW11KSArCj4+ICsJCSAgICAgYW12ZGVj X2FtZmJjX2hlYWRfc2l6ZSh3aWR0aCwgaGVpZ2h0KSwgU1pfNjRLKTsKPj4gICB9Cj4+IC1FWFBP UlRfU1lNQk9MX0dQTChhbXZkZWNfYW0yMWNfc2l6ZSk7Cj4+ICtFWFBPUlRfU1lNQk9MX0dQTChh bXZkZWNfYW1mYmNfc2l6ZSk7Cj4+ICAgCj4+ICAgc3RhdGljIGludCBjYW52YXNfYWxsb2Moc3Ry dWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLCB1OCAqY2FudmFzX2lkKQo+PiAgIHsKPj4gQEAgLTQ0 MCw3ICs0NDgsNyBAQCB2b2lkIGFtdmRlY19zZXRfcGFyX2Zyb21fZGFyKHN0cnVjdCBhbXZkZWNf c2Vzc2lvbiAqc2VzcywKPj4gICBFWFBPUlRfU1lNQk9MX0dQTChhbXZkZWNfc2V0X3Bhcl9mcm9t X2Rhcik7Cj4+ICAgCj4+ICAgdm9pZCBhbXZkZWNfc3JjX2NoYW5nZShzdHJ1Y3QgYW12ZGVjX3Nl c3Npb24gKnNlc3MsIHUzMiB3aWR0aCwKPj4gLQkJICAgICAgIHUzMiBoZWlnaHQsIHUzMiBkcGJf c2l6ZSkKPj4gKwkJICAgICAgIHUzMiBoZWlnaHQsIHUzMiBkcGJfc2l6ZSwgdTMyIGJpdGRlcHRo KQo+PiAgIHsKPj4gICAJc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2V2ZW50IGV2ID0gewo+PiAg IAkJLnR5cGUgPSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0UsCj4+IEBAIC00NDgsMjUgKzQ1Niwy NyBAQCB2b2lkIGFtdmRlY19zcmNfY2hhbmdlKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2Vzcywg dTMyIHdpZHRoLAo+PiAgIAo+PiAgIAl2NGwyX2N0cmxfc19jdHJsKHNlc3MtPmN0cmxfbWluX2J1 Zl9jYXB0dXJlLCBkcGJfc2l6ZSk7Cj4+ICAgCj4+ICsJc2Vzcy0+Yml0ZGVwdGggPSBiaXRkZXB0 aDsKPj4gKwo+PiAgIAkvKgo+PiAgIAkgKiBDaGVjayBpZiB0aGUgY2FwdHVyZSBxdWV1ZSBpcyBh bHJlYWR5IGNvbmZpZ3VyZWQgd2VsbCBmb3Igb3VyCj4+IC0JICogdXNlY2FzZS4gSWYgc28sIGtl ZXAgZGVjb2Rpbmcgd2l0aCBpdCBhbmQgZG8gbm90IHNlbmQgdGhlIGV2ZW50Cj4+ICsJICogdXNl Y2FzZS4gSWYgc28sIGtlZXAgZGVjb2Rpbmcgd2l0aCBpdC4KPj4gICAJICovCj4+ICAgCWlmIChz ZXNzLT5zdHJlYW1vbl9jYXAgJiYKPj4gICAJICAgIHNlc3MtPndpZHRoID09IHdpZHRoICYmCj4+ ICAgCSAgICBzZXNzLT5oZWlnaHQgPT0gaGVpZ2h0ICYmCj4+ICAgCSAgICBkcGJfc2l6ZSA8PSBz ZXNzLT5udW1fZHN0X2J1ZnMpIHsKPj4gICAJCXNlc3MtPmZtdF9vdXQtPmNvZGVjX29wcy0+cmVz dW1lKHNlc3MpOwo+PiAtCQlyZXR1cm47Cj4+ICsJfSBlbHNlIHsKPj4gKwkJc2Vzcy0+c3RhdHVz ID0gU1RBVFVTX05FRURTX1JFU1VNRTsKPj4gKwkJc2Vzcy0+Y2hhbmdlZF9mb3JtYXQgPSAwOwo+ PiAgIAl9Cj4+ICAgCj4+IC0Jc2Vzcy0+Y2hhbmdlZF9mb3JtYXQgPSAwOwo+PiAgIAlzZXNzLT53 aWR0aCA9IHdpZHRoOwo+PiAgIAlzZXNzLT5oZWlnaHQgPSBoZWlnaHQ7Cj4+IC0Jc2Vzcy0+c3Rh dHVzID0gU1RBVFVTX05FRURTX1JFU1VNRTsKPj4gICAKPj4gLQlkZXZfZGJnKHNlc3MtPmNvcmUt PmRldiwgIlJlcy4gY2hhbmdlZCAoJXV4JXUpLCBEUEIgc2l6ZSAldVxuIiwKPj4gLQkJd2lkdGgs IGhlaWdodCwgZHBiX3NpemUpOwo+PiArCWRldl9kYmcoc2Vzcy0+Y29yZS0+ZGV2LCAiUmVzLiBj aGFuZ2VkICgldXgldSksIERQQiAldSwgYml0ZGVwdGggJXVcbiIsCj4+ICsJCXdpZHRoLCBoZWln aHQsIGRwYl9zaXplLCBiaXRkZXB0aCk7Cj4+ICAgCXY0bDJfZXZlbnRfcXVldWVfZmgoJnNlc3Mt PmZoLCAmZXYpOwo+PiAgIH0KPj4gICBFWFBPUlRfU1lNQk9MX0dQTChhbXZkZWNfc3JjX2NoYW5n ZSk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVj X2hlbHBlcnMuaCBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL3ZkZWNfaGVscGVy cy5oCj4+IGluZGV4IDRiZjNlNjFkMDgxYi4uMWE3MTE2NzlkMjZhIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjX2hlbHBlcnMuaAo+PiArKysgYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjX2hlbHBlcnMuaAo+PiBAQCAtMjcs OSArMjcsMTAgQEAgdm9pZCBhbXZkZWNfY2xlYXJfZG9zX2JpdHMoc3RydWN0IGFtdmRlY19jb3Jl ICpjb3JlLCB1MzIgcmVnLCB1MzIgdmFsKTsKPj4gICB1MzIgYW12ZGVjX3JlYWRfcGFyc2VyKHN0 cnVjdCBhbXZkZWNfY29yZSAqY29yZSwgdTMyIHJlZyk7Cj4+ICAgdm9pZCBhbXZkZWNfd3JpdGVf cGFyc2VyKHN0cnVjdCBhbXZkZWNfY29yZSAqY29yZSwgdTMyIHJlZywgdTMyIHZhbCk7Cj4+ICAg Cj4+IC11MzIgYW12ZGVjX2FtMjFjX2JvZHlfc2l6ZSh1MzIgd2lkdGgsIHUzMiBoZWlnaHQpOwo+ PiAtdTMyIGFtdmRlY19hbTIxY19oZWFkX3NpemUodTMyIHdpZHRoLCB1MzIgaGVpZ2h0KTsKPj4g LXUzMiBhbXZkZWNfYW0yMWNfc2l6ZSh1MzIgd2lkdGgsIHUzMiBoZWlnaHQpOwo+PiArLyogSGVs cGVycyBmb3IgdGhlIEFtbG9naWMgY29tcHJlc3NlZCBmcmFtZWJ1ZmZlciBmb3JtYXQgKi8KPj4g K3UzMiBhbXZkZWNfYW1mYmNfYm9keV9zaXplKHUzMiB3aWR0aCwgdTMyIGhlaWdodCwgdTMyIGlz XzEwYml0LCB1MzIgdXNlX21tdSk7Cj4+ICt1MzIgYW12ZGVjX2FtZmJjX2hlYWRfc2l6ZSh1MzIg d2lkdGgsIHUzMiBoZWlnaHQpOwo+PiArdTMyIGFtdmRlY19hbWZiY19zaXplKHUzMiB3aWR0aCwg dTMyIGhlaWdodCwgdTMyIGlzXzEwYml0LCB1MzIgdXNlX21tdSk7Cj4+ICAgCj4+ICAgLyoqCj4+ ICAgICogYW12ZGVjX2RzdF9idWZfZG9uZV9pZHgoKSAtIFNpZ25hbCB0aGF0IGEgYnVmZmVyIGlz IGRvbmUgZGVjb2RpbmcKPj4gQEAgLTc3LDkgKzc4LDEwIEBAIHZvaWQgYW12ZGVjX3NldF9wYXJf ZnJvbV9kYXIoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+PiAgICAqIEB3aWR0aDogcGlj dHVyZSB3aWR0aCBkZXRlY3RlZCBieSB0aGUgaGFyZHdhcmUKPj4gICAgKiBAaGVpZ2h0OiBwaWN0 dXJlIGhlaWdodCBkZXRlY3RlZCBieSB0aGUgaGFyZHdhcmUKPj4gICAgKiBAZHBiX3NpemU6IERl Y29kZWQgUGljdHVyZSBCdWZmZXIgc2l6ZSAoPSBhbW91bnQgb2YgYnVmZmVycyBmb3IgZGVjb2Rp bmcpCj4+ICsgKiBAYml0ZGVwdGg6IEJpdCBkZXB0aCAodXN1YWxseSAxMCBvciA4KSBvZiB0aGUg Y29kZWQgY29udGVudAo+PiAgICAqLwo+PiAgIHZvaWQgYW12ZGVjX3NyY19jaGFuZ2Uoc3RydWN0 IGFtdmRlY19zZXNzaW9uICpzZXNzLCB1MzIgd2lkdGgsCj4+IC0JCSAgICAgICB1MzIgaGVpZ2h0 LCB1MzIgZHBiX3NpemUpOwo+PiArCQkgICAgICAgdTMyIGhlaWdodCwgdTMyIGRwYl9zaXplLCB1 MzIgYml0ZGVwdGgpOwo+PiAgIAo+PiAgIC8qKgo+PiAgICAqIGFtdmRlY19hYm9ydCgpIC0gQWJv cnQgdGhlIGN1cnJlbnQgZGVjb2Rpbmcgc2Vzc2lvbgo+IAoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0Cmxp bnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK