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 X-Spam-Level: X-Spam-Status: No, score=-11.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9664C3F2CE for ; Sat, 29 Feb 2020 11:07:43 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 9096F24695 for ; Sat, 29 Feb 2020 11:07:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="ttiA6GJP" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9096F24695 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=siol.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XjtIKk4YOAad2ud7aitaXfoMIj6/FRSezDiRr4/FA9w=; b=ttiA6GJPS78G4o i5FRbEKTC3Rrnf2X1ZsACVObgMj/aKLCEL90fkz4XtlgfP4Rfh+kDFU1V/FnzpBXyhBbCzquMIzmY nmxNQMdIm0D2SMym3ha0qWat/El+zuTkHtLj6/kOLAsNxMuCYY3S2uo6PwVRPZS8/GCYdx+ooVv9D ju1QEKBrMeaPLVjJWq4w2vvDcsM2e+/Ju7YIwjypaTQQCSXVy+0+bEkoYksFxTRNvFvdLCrAajSg7 Xy/SS2Qs1Z7g+4z2oh5AjVQwINFjlGeaUtHJ90WlYmHBJrdlMi4ypQkgBm6EXluPQDsgFyizKKVQq amMdczd7ISQuhkuX5Dxg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1j7zy3-0007MW-RF; Sat, 29 Feb 2020 11:07:35 +0000 Received: from mailoutvs44.siol.net ([185.57.226.235] helo=mail.siol.net) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1j7zxz-0007Lj-EK for linux-amlogic@lists.infradead.org; Sat, 29 Feb 2020 11:07:34 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTP id 7F4E45222AB; Sat, 29 Feb 2020 12:07:20 +0100 (CET) X-Virus-Scanned: amavisd-new at psrvmta09.zcs-production.pri Received: from mail.siol.net ([127.0.0.1]) by localhost (psrvmta09.zcs-production.pri [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id wsE15d5diRwz; Sat, 29 Feb 2020 12:07:19 +0100 (CET) Received: from mail.siol.net (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTPS id 6B0195223EF; Sat, 29 Feb 2020 12:07:19 +0100 (CET) Received: from jernej-laptop.localnet (cpe-194-152-20-232.static.triera.net [194.152.20.232]) (Authenticated sender: jernej.skrabec@siol.net) by mail.siol.net (Postfix) with ESMTPA id 627CA5222AB; Sat, 29 Feb 2020 12:07:18 +0100 (CET) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: a.hajda@samsung.com, Laurent.pinchart@ideasonboard.com, boris.brezillon@collabora.com, Neil Armstrong , Jonas Karlman Subject: Re: [PATCH v4 04/11] drm/bridge: synopsys: dw-hdmi: add bus format negociation Date: Sat, 29 Feb 2020 12:07:17 +0100 Message-ID: <2970638.5fSG56mABF@jernej-laptop> In-Reply-To: <64b6ef10-b2e2-02f3-56dd-14dd0782a7aa@kwiboo.se> References: <20200206191834.6125-1-narmstrong@baylibre.com> <5330543.DvuYhMxLoT@jernej-laptop> <64b6ef10-b2e2-02f3-56dd-14dd0782a7aa@kwiboo.se> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200229_030731_805317_D0B22CD5 X-CRM114-Status: GOOD ( 24.36 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org RG5lIHNvYm90YSwgMjkuIGZlYnJ1YXIgMjAyMCBvYiAxMTowOToxNCBDRVQgamUgSm9uYXMgS2Fy bG1hbiBuYXBpc2FsKGEpOgo+IEhpIEplcm5laiwKPiAKPiBPbiAyMDIwLTAyLTI5IDA4OjQyLCBK ZXJuZWogxaBrcmFiZWMgd3JvdGU6Cj4gPiBIaSBOZWlsIQo+ID4gCj4gPiBEbmUgxI1ldHJ0ZWss IDA2LiBmZWJydWFyIDIwMjAgb2IgMjA6MTg6MjcgQ0VUIGplIE5laWwgQXJtc3Ryb25nIApuYXBp c2FsKGEpOgo+ID4+IEFkZCB0aGUgYXRvbWljX2dldF9vdXRwdXRfYnVzX2ZtdHMsIGF0b21pY19n ZXRfaW5wdXRfYnVzX2ZtdHMgdG8KPiA+PiBuZWdvY2lhdGUKPiA+PiB0aGUgcG9zc2libGUgb3V0 cHV0IGFuZCBpbnB1dCBmb3JtYXRzIGZvciB0aGUgY3VycmVudCBtb2RlIGFuZCBtb25pdG9yLAo+ ID4+IGFuZCB1c2UgdGhlIG5lZ290aWF0ZWQgZm9ybWF0cyBpbiBhIGJhc2ljIGF0b21pY19jaGVj ayBjYWxsYmFjay4KPiA+PiAKPiA+PiBTaWduZWQtb2ZmLWJ5OiBOZWlsIEFybXN0cm9uZyA8bmFy bXN0cm9uZ0BiYXlsaWJyZS5jb20+Cj4gPj4gLS0tCj4gPj4gCj4gPj4gIGRyaXZlcnMvZ3B1L2Ry bS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5jIHwgMjcyICsrKysrKysrKysrKysrKysrKysrKy0K PiA+PiAgMSBmaWxlIGNoYW5nZWQsIDI2OCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+ ID4+IAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3 LWhkbWkuYwo+ID4+IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMg aW5kZXgKPiA+PiBmZWM0YTRiY2QxZmUuLjE1MDQ4YWQ2OTRiYyAxMDA2NDQKPiA+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYwo+ID4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5jCj4gPj4gQEAgLTIwOTUsMTEgKzIw OTUsMTAgQEAgc3RhdGljIGludCBkd19oZG1pX3NldHVwKHN0cnVjdCBkd19oZG1pICpoZG1pLAo+ ID4+IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ID4+IGhkbWktPmhkbWlfZGF0YS52 aWRlb19tb2RlLm1waXhlbHJlcGV0aXRpb25vdXRwdXQgPSAwOwo+ID4+IAo+ID4+ICAJaGRtaS0+ aGRtaV9kYXRhLnZpZGVvX21vZGUubXBpeGVscmVwZXRpdGlvbmlucHV0ID0gMDsKPiA+PiAKPiA+ PiAtCS8qIFRPRklYOiBHZXQgaW5wdXQgZm9ybWF0IGZyb20gcGxhdCBkYXRhIG9yIGZhbGxiYWNr IHRvIFJHQjg4OCAqLwo+ID4+IAo+ID4+ICAJaWYgKGhkbWktPnBsYXRfZGF0YS0+aW5wdXRfYnVz X2Zvcm1hdCkKPiA+PiAgCQo+ID4+ICAJCWhkbWktPmhkbWlfZGF0YS5lbmNfaW5fYnVzX2Zvcm1h dCA9Cj4gPj4gIAkJCj4gPj4gIAkJCWhkbWktPnBsYXRfZGF0YS0+aW5wdXRfYnVzX2Zvcm1hdDsK PiA+PiAKPiA+PiAtCWVsc2UKPiA+PiArCWVsc2UgaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfaW5f YnVzX2Zvcm1hdCA9PSBNRURJQV9CVVNfRk1UX0ZJWEVEKQo+ID4+IAo+ID4+ICAJCWhkbWktPmhk bWlfZGF0YS5lbmNfaW5fYnVzX2Zvcm1hdCA9Cj4gPiAKPiA+IE1FRElBX0JVU19GTVRfUkdCODg4 XzFYMjQ7Cj4gPiAKPiA+PiAgCS8qIFRPRklYOiBHZXQgaW5wdXQgZW5jb2RpbmcgZnJvbSBwbGF0 IGRhdGEgb3IgZmFsbGJhY2sgdG8gbm9uZSAqLwo+ID4+IAo+ID4+IEBAIC0yMTA5LDggKzIxMDgs OCBAQCBzdGF0aWMgaW50IGR3X2hkbWlfc2V0dXAoc3RydWN0IGR3X2hkbWkgKmhkbWksCj4gPj4g c3RydWN0Cj4gPj4gZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkgZWxzZQo+ID4+IAo+ID4+ICAJCWhk bWktPmhkbWlfZGF0YS5lbmNfaW5fZW5jb2RpbmcgPQo+ID4gCj4gPiBWNEwyX1lDQkNSX0VOQ19E RUZBVUxUOwo+ID4gCj4gPj4gLQkvKiBUT0ZJWDogRGVmYXVsdCB0byBSR0I4ODggb3V0cHV0IGZv cm1hdCAqLwo+ID4+IC0JaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfYnVzX2Zvcm1hdCA9IE1FRElB X0JVU19GTVRfUkdCODg4XzFYMjQ7Cj4gPj4gKwlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRf YnVzX2Zvcm1hdCA9PSBNRURJQV9CVVNfRk1UX0ZJWEVEKQo+ID4+ICsJCWhkbWktPmhkbWlfZGF0 YS5lbmNfb3V0X2J1c19mb3JtYXQgPQo+ID4gCj4gPiBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0 Owo+ID4gCj4gPj4gIAloZG1pLT5oZG1pX2RhdGEucGl4X3JlcGV0X2ZhY3RvciA9IDA7Cj4gPj4g IAloZG1pLT5oZG1pX2RhdGEuaGRjcF9lbmFibGUgPSAwOwo+ID4+IAo+ID4+IEBAIC0yMzg4LDYg KzIzODcsMjY3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVu Y3MKPiA+PiBkd19oZG1pX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSAuYXRvbWljX2NoZWNrID0K PiA+PiBkd19oZG1pX2Nvbm5lY3Rvcl9hdG9taWNfY2hlY2ssCj4gPj4gCj4gPj4gIH07Cj4gPj4g Cj4gPj4gKy8qCj4gPj4gKyAqIFBvc3NpYmxlIG91dHB1dCBmb3JtYXRzIDoKPiA+PiArICogLSBN RURJQV9CVVNfRk1UX1VZWVZZWTE2XzBfNVg0OCwKPiA+PiArICogLSBNRURJQV9CVVNfRk1UX1VZ WVZZWTEyXzBfNVgzNiwKPiA+PiArICogLSBNRURJQV9CVVNfRk1UX1VZWVZZWTEwXzBfNVgzMCwK PiA+PiArICogLSBNRURJQV9CVVNfRk1UX1VZWVZZWThfMF81WDI0LAo+ID4+ICsgKiAtIE1FRElB X0JVU19GTVRfWVVWMTZfMVg0OCwKPiA+PiArICogLSBNRURJQV9CVVNfRk1UX1JHQjE2MTYxNl8x WDQ4LAo+ID4+ICsgKiAtIE1FRElBX0JVU19GTVRfVVlWWTEyXzFYMjQsCj4gPj4gKyAqIC0gTUVE SUFfQlVTX0ZNVF9ZVVYxMl8xWDM2LAo+ID4+ICsgKiAtIE1FRElBX0JVU19GTVRfUkdCMTIxMjEy XzFYMzYsCj4gPj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9VWVZZMTBfMVgyMCwKPiA+PiArICogLSBN RURJQV9CVVNfRk1UX1lVVjEwXzFYMzAsCj4gPj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9SR0IxMDEw MTBfMVgzMCwKPiA+PiArICogLSBNRURJQV9CVVNfRk1UX1VZVlk4XzFYMTYsCj4gPj4gKyAqIC0g TUVESUFfQlVTX0ZNVF9ZVVY4XzFYMjQsCj4gPj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9SR0I4ODhf MVgyNCwKPiA+PiArICovCj4gPj4gKwo+ID4+ICsvKiBDYW4gcmV0dXJuIGEgbWF4aW11bSBvZiAx MiBwb3NzaWJsZSBvdXRwdXQgZm9ybWF0cyBmb3IgYQo+ID4+IG1vZGUvY29ubmVjdG9yCj4gPj4g Ki8gKyNkZWZpbmUgTUFYX09VVFBVVF9TRUxfRk9STUFUUwkxMgo+ID4+ICsKPiA+PiArc3RhdGlj IHUzMiAqZHdfaGRtaV9icmlkZ2VfYXRvbWljX2dldF9vdXRwdXRfYnVzX2ZtdHMoc3RydWN0IGRy bV9icmlkZ2UKPiA+PiAqYnJpZGdlLCArCQkJCQlzdHJ1Y3QKPiA+IAo+ID4gZHJtX2JyaWRnZV9z dGF0ZSAqYnJpZGdlX3N0YXRlLAo+ID4gCj4gPj4gKwkJCQkJc3RydWN0IGRybV9jcnRjX3N0YXRl Cj4gPiAKPiA+ICpjcnRjX3N0YXRlLAo+ID4gCj4gPj4gKwkJCQkJc3RydWN0Cj4gPiAKPiA+IGRy bV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsCj4gPiAKPiA+PiArCQkJCQl1bnNpZ25lZCBp bnQKPiA+IAo+ID4gKm51bV9vdXRwdXRfZm10cykKPiA+IAo+ID4+ICt7Cj4gPj4gKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubiA9IGNvbm5fc3RhdGUtPmNvbm5lY3RvcjsKPiA+PiArCXN0cnVj dCBkcm1fZGlzcGxheV9pbmZvICppbmZvID0gJmNvbm4tPmRpc3BsYXlfaW5mbzsKPiA+PiArCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGNfc3RhdGUtPm1vZGU7Cj4gPj4gKwl1 OCBtYXhfYnBjID0gY29ubl9zdGF0ZS0+bWF4X3JlcXVlc3RlZF9icGM7Cj4gPj4gKwlib29sIGlz X2hkbWkyX3NpbmsgPSBpbmZvLT5oZG1pLnNjZGMuc3VwcG9ydGVkIHx8Cj4gPj4gKwkJCSAgICAg KGluZm8tPmNvbG9yX2Zvcm1hdHMgJgo+ID4gCj4gPiBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDIw KTsKPiA+IAo+ID4+ICsJdTMyICpvdXRwdXRfZm10czsKPiA+PiArCWludCBpID0gMDsKPiA+PiAr Cj4gPj4gKwkqbnVtX291dHB1dF9mbXRzID0gMDsKPiA+PiArCj4gPj4gKwlvdXRwdXRfZm10cyA9 IGtjYWxsb2MoTUFYX09VVFBVVF9TRUxfRk9STUFUUywgCnNpemVvZigqb3V0cHV0X2ZtdHMpLAo+ ID4+ICsJCQkgICAgICBHRlBfS0VSTkVMKTsKPiA+PiArCWlmICghb3V0cHV0X2ZtdHMpCj4gPj4g KwkJcmV0dXJuIE5VTEw7Cj4gPj4gKwo+ID4+ICsJLyoKPiA+PiArCSAqIElmIHRoZSBjdXJyZW50 IG1vZGUgZW5mb3JjZXMgNDoyOjAsIGZvcmNlIHRoZSBvdXRwdXQgYnV0IGZvcm1hdAo+ID4+ICsJ ICogdG8gNDoyOjAgYW5kIGRvIG5vdCBhZGQgdGhlIFlVVjQyMi80NDQvUkdCIGZvcm1hdHMKPiA+ PiArCSAqLwo+ID4+ICsJaWYgKGNvbm4tPnljYmNyXzQyMF9hbGxvd2VkICYmCj4gPj4gKwkgICAg KGRybV9tb2RlX2lzXzQyMF9vbmx5KGluZm8sIG1vZGUpIHx8Cj4gPj4gKwkgICAgICgpKSkgewo+ ID4+ICsKPiA+PiArCQkvKiBPcmRlciBidXMgZm9ybWF0cyBmcm9tIDE2Yml0IHRvIDhiaXQgaWYg c3VwcG9ydGVkICovCj4gPj4gKwkJaWYgKG1heF9icGMgPj0gMTYgJiYgaW5mby0+YnBjID09IDE2 ICYmCj4gPj4gKwkJICAgIChpbmZvLT5oZG1pLnk0MjBfZGNfbW9kZXMgJgo+ID4gCj4gPiBEUk1f RURJRF9ZQ0JDUjQyMF9EQ180OCkpCj4gPiAKPiA+PiArCQkJb3V0cHV0X2ZtdHNbaSsrXSA9Cj4g PiAKPiA+IE1FRElBX0JVU19GTVRfVVlZVllZMTZfMF81WDQ4Owo+ID4gCj4gPj4gKwo+ID4+ICsJ CWlmIChtYXhfYnBjID49IDEyICYmIGluZm8tPmJwYyA+PSAxMiAmJgo+ID4+ICsJCSAgICAoaW5m by0+aGRtaS55NDIwX2RjX21vZGVzICYKPiA+IAo+ID4gRFJNX0VESURfWUNCQ1I0MjBfRENfMzYp KQo+ID4gCj4gPj4gKwkJCW91dHB1dF9mbXRzW2krK10gPQo+ID4gCj4gPiBNRURJQV9CVVNfRk1U X1VZWVZZWTEyXzBfNVgzNjsKPiA+IAo+ID4+ICsKPiA+PiArCQlpZiAobWF4X2JwYyA+PSAxMCAm JiBpbmZvLT5icGMgPj0gMTAgJiYKPiA+PiArCQkgICAgKGluZm8tPmhkbWkueTQyMF9kY19tb2Rl cyAmCj4gPiAKPiA+IERSTV9FRElEX1lDQkNSNDIwX0RDXzMwKSkKPiA+IAo+ID4+ICsJCQlvdXRw dXRfZm10c1tpKytdID0KPiA+IAo+ID4gTUVESUFfQlVTX0ZNVF9VWVlWWVkxMF8wXzVYMzA7Cj4g PiAKPiA+PiArCj4gPj4gKwkJLyogRGVmYXVsdCA4Yml0IGZhbGxiYWNrICovCj4gPj4gKwkJb3V0 cHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfVVlZVllZOF8wXzVYMjQ7Cj4gPj4gKwo+ID4+ ICsJCSpudW1fb3V0cHV0X2ZtdHMgPSBpOwo+ID4+ICsKPiA+PiArCQlyZXR1cm4gb3V0cHV0X2Zt dHM7Cj4gPiAKPiA+IERyaXZlciBzaG91bGRuJ3QgcmV0dXJuIGp1c3QgeWV0IGZvciBjYXNlICJp c19oZG1pMl9zaW5rICYmCj4gPiBkcm1fbW9kZV9pc180MjBfYWxzbyhpbmZvLCBtb2RlKSIsIGJl Y2F1c2UgbW9uaXRvci9UViBhbHNvIHN1cHBvcnRzIFlDYkNyCj4gPiA0OjQ6NCBpbiB0aGF0IGNh c2UuIElNTyBZQ2JDciA0OjQ6NCBzaG91bGQgYmUgZXZlbiBwcmVmZXJlZC4gV2hhdCBkbyB5b3UK PiA+IHRoaW5rPwo+IAo+IEkgdGhpbmsgd2UgbmVlZCB0byBoYXZlIHNvbWUgd2F5IGZvciBjb250 cm9sbGVyIGRyaXZlciBhbmQgdXNlcnNwYWNlIHRvCj4gY29udHJvbCB3aGF0IGhkbWkgb3V0cHV0 IGZvcm1hdCBnZXRzIHNlbGVjdGVkLiBJIGtub3cgZm9yIGEgZmFjdCB0aGF0IHNvbWUKPiBTYW1z dW5nIFRWIGhhdmUgaXNzdWVzIHdpdGggNDQ0IFlDYkNyIG1vZGVzIGF0IDRrIDUwLzYwaHogYnV0 IGhhdmUgbm8KPiBwcm9ibGVtcyB3aXRoIDQyMCBtb2Rlcy4gVGhlIFNhbXN1bmcgVFYgZWRpZCBs aWUgYW5kL29yIHRoZSBUViBpcyBub3QgZnVsbHkKPiBmb2xsb3dpbmcgSERNSSBzcGVjcwoKSW50 ZXJlc3RpbmcsIG1heWJlIGp1c3Qgc29tZSBiYW5kd2l0aCBpc3N1ZXM/IEkgZ3Vlc3Mgd2Ugc2hv dWxkIGhhdmUgYSAKYmxhY2tsaXN0IGZvciBzdWNoIGNhc2VzLiBJIGtub3cgdGhhdCBhdCBsZWFz dCBBbGx3aW5uZXIgQlNQIGRyaXZlciBmb3IgRFcgCkhETUkgaGFzIGEgYmxhY2tsaXN0LCBpbiB0 aGlzIGNhc2UgZm9yIDIgbW9uaXRvcnMgd2hpY2ggY2xhaW0gdG8gc3VwcG9ydCBZQ2JDciAKNDo0 OjQgbW9kZSBidXQgdGhleSBub3QuCgo+IAo+IEZyb20gYSBwZXJzb25hbCBhbmQgbWVkaWFwbGF5 ZXIgdXNlcnNwYWNlIHBlcnNwZWN0aXZlIEkgd291bGQgbGlrZSB0byBwcmVmZXIKPiA0MjAvNDQ0 IFlDYkNyIG1vZGUgYXMgc29vbiBhcyBhbnkgeXV2IGRybSBwbGFuZSBpcyBhY3RpdmUgYW5kIHJn YiA0NDQKPiBhbnl0aW1lIGVsc2UuCgpJIHdvdWxkIGFyZ3VlIHRoYXQgWUNiQ3IgaXMgYWx3YXlz IHByZWZlcmVkOgotIENFQSA4NjEgcHJlZmVycyBpdCBmb3IgYWxsIENFQSBtb2RlcwotIGF2b2lk IGRlYWxpbmcgd2l0aCBxdWFudGl6YXRpb24gcmFuZ2UgLSBpdCdzIGFsd2F5cyBsaW1pdGVkIHJh bmdlIGZvciA8IGhkbWkgCjIuMCBhbmQgc2VsZWN0YWJsZSBvbiBzb21lIGhkbWkgMi4wIGNhcGFi bGUgc2lua3MKCkFueXdheSwgdGhlcmUgaXMgbm8gdW5pdmVyc2FsIHNvbHV0aW9uIHRvIGF2b2lk IGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gaW4gYWxsIApjYXNlcy4gRm9yIGV4YW1wbGUsIGR1ZSB0 byBkZXNpZ24gb2YgQWxsd2lubmVyIERpc3BsYXkgRW5naW5lIDIsIGl0IGNhbiBvbmx5IAp3b3Jr IGluIFJHQiBmb3JtYXQgaW50ZXJuYWxseSwgYnV0IGl0IGNhbiBjb252ZXJ0IGZpbmFsIG91dHB1 dCB0byBZQ2JDciByaWdodCAKYmVmb3JlIGl0J3MgZmVlZGVkIHRvIERXIEhETUkuIE9uIHRoZSBv dGhlciBoYW5kLCB5b3UgaGF2ZSBtZXNvbiBkaXNwbGF5IApwaXBlbGluZSB3aGljaCB3b3JrcyBp biBZQ2JDciBmb3JtYXQgaW50ZXJuYWxseSBhbmQgcmVsaWVzIG9uIERXIEhETUkgQ1NDIHVuaXQg CnRvIGNvbnZlcnQgb3V0cHV0IHRvIFJHQi4gRm9ydHVuYXRlbHksIHRoZXJlIGFyZSBhbHNvIGRp c3BsYXkgcGlwZWxpbmVzIHdoaWNoIApjYW4gd29yayBpbiBhbnkgY29sb3JzcGFjZSBpbnRlcm5h bGx5LCBsaWtlIEFsbHdpbm5lciBEaXNwbGF5IEVuZ2luZSAzLiBOb3QgCnN1cmUgaW4gd2hpY2gg Y2F0ZWdvcnkgUm9ja2NoaXAgZGlzcGxheSBwaXBlbGluZSBmYWxscyBpbnRvLgoKPiAKPiBPbiBS b2NrY2hpcCBTb0NzIHRoZSBkaXNwbGF5IGNvbnRyb2xsZXIgY2Fubm90IG91dHB1dCB5dXY0MjIg dG8gZHctaGRtaQo+IGJsb2NrLCB0aGUgb3B0aW1hbCBvdXRwdXQgZm9ybWF0IHNlbGVjdGlvbiBp biBzdWNoIGNhc2Ugc2hvdWxkIHB1dCB5dXY0MjIKPiBsYXN0LgoKTm90ZSB0aGF0IERXIEhETUkg aGFzIGRlY2ltYXRpb24gc3VwcG9ydCB3aGljaCBjb252ZXJ0cyA0NDQgdG8gNDIyLiBUaGlzIGlz IApwYXJ0IG9mIENTQyB1bml0LgoKU2lkZSBub3RlOiBDU0MgdW5pdCBpcyBvcHRpb25hbCBmZWF0 dXJlIG9mIERXLUhETUkgYW5kIHByZXNlbmNlIGlzIGluZGljYXRlZCAKYnkgY29uZmlnIHJlZ2lz dGVyLiBIb3dldmVyLCBpdCBzZWVtcyB0aGF0IENTQyBzdXBwb3J0IGlzIGJyb2tlbiBpbiBEVyBI RE1JIApjb250cm9sbGVyIG9uIDQwbm0gQWxsd2lubmVyIFNvQ3MuIElmIGl0IGlzIGVuYWJsZWQs IFRWIGxvc2VzIHNpZ25hbC4gSSBoYXZlIAp0byBpbnZlc3RpZ2F0ZSBpZiBvbmx5IENTQyBpcyBi cm9rZW4gb3IgZGVjaW1hdGlvbiBhbHNvIGRvbid0IHdvcmsuCgo+IAo+IE1heWJlIGR3LWhkbWkg Y2FuIGNhbGwgYSBkdy1oZG1pIGdsdWUgZHJpdmVyIGNhbGxiYWNrIHRvIGdldCB0aGUgcHJlZmVy cmVkCj4gb3V0cHV0IGZvcm1hdCBvcmRlcj8KPiAKPiBPbiBhIHNpZGUgbm90ZSBidXQgcmVsYXRl ZCBpc3N1ZSwgdGhlIGR3LWhkbWkgZm9ybWF0IG5lZ290aWF0aW9uIGNvZGUgc2hvdWxkCj4gcHJv YmFibHkgYWxzbyBmaWx0ZXIgbW9kZXMgb24gdG1kcyByYXRlLCBzb21ldGhpbmcgbGlrZSBbMV0u Cj4gSXQgaXMgbmVlZGVkIHRvIGZpbHRlciBvdXQgZGVlcCBjb2xvciBtb2RlcyB0aGF0IGlzIG5v dCBzdXBwb3J0ZWQgYnkgdGhlCj4gc2luayBvciBoZG1pIHNwZWMuCgpBaCwgeW91IG1lYW4gb24g VE1EUyByYXRlcyBzdXBwb3J0ZWQgYnkgdGhlIHNpbmsuIENvdWxkIHRoaXMgYXZvaWQgU2Ftc3Vu ZyAKZGVlcCBjb2xvciBpc3N1ZXM/IElmIHNvLCB3ZSBkb24ndCBuZWVkIGJsYWNrbGlzdCB0aGVu LgoKQmVzdCByZWdhcmRzLApKZXJuZWoKCj4gCj4gWzFdCj4gaHR0cHM6Ly9naXRodWIuY29tL0t3 aWJvby9saW51eC1yb2NrY2hpcC9jb21taXQvZmMzZGY2OTAzMzg0ZTc2NGFiNmFjNTk4NzljCj4g NDg5Y2JlZjU1ZmNiZQo+IAo+IEJlc3QgcmVnYXJkcywKPiBKb25hcwo+IAo+ID4gQmVzdCByZWdh cmRzLAo+ID4gSmVybmVqCj4gPiAKPiA+PiArCX0KPiA+PiArCj4gPj4gKwkvKgo+ID4+ICsJICog T3JkZXIgYnVzIGZvcm1hdHMgZnJvbSAxNmJpdCB0byA4Yml0IGFuZCBmcm9tIFlVVjQyMiB0byBS R0IKPiA+PiArCSAqIGlmIHN1cHBvcnRlZC4gSW4gYW55IGNhc2UgdGhlIGRlZmF1bHQgUkdCODg4 IGZvcm1hdCBpcyBhZGRlZAo+ID4+ICsJICovCj4gPj4gKwo+ID4+ICsJaWYgKG1heF9icGMgPj0g MTYgJiYgaW5mby0+YnBjID09IDE2KSB7Cj4gPj4gKwkJaWYgKGluZm8tPmNvbG9yX2Zvcm1hdHMg JiBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDQ0KQo+ID4+ICsJCQlvdXRwdXRfZm10c1tpKytdID0g TUVESUFfQlVTX0ZNVF9ZVVYxNl8xWDQ4Owo+ID4+ICsKPiA+PiArCQlvdXRwdXRfZm10c1tpKytd ID0gTUVESUFfQlVTX0ZNVF9SR0IxNjE2MTZfMVg0ODsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwlp ZiAobWF4X2JwYyA+PSAxMiAmJiBpbmZvLT5icGMgPj0gMTIpIHsKPiA+PiArCQlpZiAoaW5mby0+ Y29sb3JfZm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjIpCj4gPj4gKwkJCW91dHB1 dF9mbXRzW2krK10gPSAKTUVESUFfQlVTX0ZNVF9VWVZZMTJfMVgyNDsKPiA+PiArCj4gPj4gKwkJ aWYgKGluZm8tPmNvbG9yX2Zvcm1hdHMgJiBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDQ0KQo+ID4+ ICsJCQlvdXRwdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9ZVVYxMl8xWDM2Owo+ID4+ICsK PiA+PiArCQlvdXRwdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9SR0IxMjEyMTJfMVgzNjsK PiA+PiArCX0KPiA+PiArCj4gPj4gKwlpZiAobWF4X2JwYyA+PSAxMCAmJiBpbmZvLT5icGMgPj0g MTApIHsKPiA+PiArCQlpZiAoaW5mby0+Y29sb3JfZm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRf WUNSQ0I0MjIpCj4gPj4gKwkJCW91dHB1dF9mbXRzW2krK10gPSAKTUVESUFfQlVTX0ZNVF9VWVZZ MTBfMVgyMDsKPiA+PiArCj4gPj4gKwkJaWYgKGluZm8tPmNvbG9yX2Zvcm1hdHMgJiBEUk1fQ09M T1JfRk9STUFUX1lDUkNCNDQ0KQo+ID4+ICsJCQlvdXRwdXRfZm10c1tpKytdID0gTUVESUFfQlVT X0ZNVF9ZVVYxMF8xWDMwOwo+ID4+ICsKPiA+PiArCQlvdXRwdXRfZm10c1tpKytdID0gTUVESUFf QlVTX0ZNVF9SR0IxMDEwMTBfMVgzMDsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwlpZiAoaW5mby0+ Y29sb3JfZm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjIpCj4gPj4gKwkJb3V0cHV0 X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfVVlWWThfMVgxNjsKPiA+PiArCj4gPj4gKwlpZiAo aW5mby0+Y29sb3JfZm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0NDQpCj4gPj4gKwkJ b3V0cHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfWVVWOF8xWDI0Owo+ID4+ICsKPiA+PiAr CS8qIERlZmF1bHQgOGJpdCBSR0IgZmFsbGJhY2sgKi8KPiA+PiArCW91dHB1dF9mbXRzW2krK10g PSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0Owo+ID4+ICsKPiA+PiArCSpudW1fb3V0cHV0X2Zt dHMgPSBpOwo+ID4+ICsKPiA+PiArCXJldHVybiBvdXRwdXRfZm10czsKPiA+PiArfQo+ID4+ICsK PiA+PiArLyoKPiA+PiArICogUG9zc2libGUgaW5wdXQgZm9ybWF0cyA6Cj4gPj4gKyAqIC0gTUVE SUFfQlVTX0ZNVF9SR0I4ODhfMVgyNAo+ID4+ICsgKiAtIE1FRElBX0JVU19GTVRfWVVWOF8xWDI0 Cj4gPj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9VWVZZOF8xWDE2Cj4gPj4gKyAqIC0gTUVESUFfQlVT X0ZNVF9VWVlWWVk4XzBfNVgyNAo+ID4+ICsgKiAtIE1FRElBX0JVU19GTVRfUkdCMTAxMDEwXzFY MzAKPiA+PiArICogLSBNRURJQV9CVVNfRk1UX1lVVjEwXzFYMzAKPiA+PiArICogLSBNRURJQV9C VVNfRk1UX1VZVlkxMF8xWDIwCj4gPj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9VWVlWWVkxMF8wXzVY MzAKPiA+PiArICogLSBNRURJQV9CVVNfRk1UX1JHQjEyMTIxMl8xWDM2Cj4gPj4gKyAqIC0gTUVE SUFfQlVTX0ZNVF9ZVVYxMl8xWDM2Cj4gPj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9VWVZZMTJfMVgy NAo+ID4+ICsgKiAtIE1FRElBX0JVU19GTVRfVVlZVllZMTJfMF81WDM2Cj4gPj4gKyAqIC0gTUVE SUFfQlVTX0ZNVF9SR0IxNjE2MTZfMVg0OAo+ID4+ICsgKiAtIE1FRElBX0JVU19GTVRfWVVWMTZf MVg0OAo+ID4+ICsgKiAtIE1FRElBX0JVU19GTVRfVVlZVllZMTZfMF81WDQ4Cj4gPj4gKyAqLwo+ ID4+ICsKPiA+PiArLyogQ2FuIHJldHVybiBhIG1heGltdW0gb2YgNCBwb3NzaWJsZSBpbnB1dCBm b3JtYXRzIGZvciBhbiBvdXRwdXQgZm9ybWF0Cj4gPj4gKi8gKyNkZWZpbmUgTUFYX0lOUFVUX1NF TF9GT1JNQVRTCTQKPiA+PiArCj4gPj4gK3N0YXRpYyB1MzIgKmR3X2hkbWlfYnJpZGdlX2F0b21p Y19nZXRfaW5wdXRfYnVzX2ZtdHMoc3RydWN0IGRybV9icmlkZ2UKPiA+PiAqYnJpZGdlLCArCQkJ CQlzdHJ1Y3QKPiA+IAo+ID4gZHJtX2JyaWRnZV9zdGF0ZSAqYnJpZGdlX3N0YXRlLAo+ID4gCj4g Pj4gKwkJCQkJc3RydWN0IGRybV9jcnRjX3N0YXRlCj4gPiAKPiA+ICpjcnRjX3N0YXRlLAo+ID4g Cj4gPj4gKwkJCQkJc3RydWN0Cj4gPiAKPiA+IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Rh dGUsCj4gPiAKPiA+PiArCQkJCQl1MzIgb3V0cHV0X2ZtdCwKPiA+PiArCQkJCQl1bnNpZ25lZCBp bnQKPiA+IAo+ID4gKm51bV9pbnB1dF9mbXRzKQo+ID4gCj4gPj4gK3sKPiA+PiArCXUzMiAqaW5w dXRfZm10czsKPiA+PiArCWludCBpID0gMDsKPiA+PiArCj4gPj4gKwkqbnVtX2lucHV0X2ZtdHMg PSAwOwo+ID4+ICsKPiA+PiArCWlucHV0X2ZtdHMgPSBrY2FsbG9jKE1BWF9JTlBVVF9TRUxfRk9S TUFUUywgc2l6ZW9mKCppbnB1dF9mbXRzKSwKPiA+PiArCQkJICAgICBHRlBfS0VSTkVMKTsKPiA+ PiArCWlmICghaW5wdXRfZm10cykKPiA+PiArCQlyZXR1cm4gTlVMTDsKPiA+PiArCj4gPj4gKwlz d2l0Y2ggKG91dHB1dF9mbXQpIHsKPiA+PiArCS8qIDhiaXQgKi8KPiA+PiArCWNhc2UgTUVESUFf QlVTX0ZNVF9SR0I4ODhfMVgyNDoKPiA+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNf Rk1UX1JHQjg4OF8xWDI0Owo+ID4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRf WVVWOF8xWDI0Owo+ID4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfVVlWWThf MVgxNjsKPiA+PiArCQlicmVhazsKPiA+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVY4XzFYMjQ6 Cj4gPj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9ZVVY4XzFYMjQ7Cj4gPj4g KwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9VWVZZOF8xWDE2Owo+ID4+ICsJCWlu cHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7Cj4gPj4gKwkJYnJlYWs7 Cj4gPj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWThfMVgxNjoKPiA+PiArCQlpbnB1dF9mbXRz W2krK10gPSBNRURJQV9CVVNfRk1UX1VZVlk4XzFYMTY7Cj4gPj4gKwkJaW5wdXRfZm10c1tpKytd ID0gTUVESUFfQlVTX0ZNVF9ZVVY4XzFYMjQ7Cj4gPj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVE SUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDsKPiA+PiArCQlicmVhazsKPiA+PiArCj4gPj4gKwkvKiAx MGJpdCAqLwo+ID4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1JHQjEwMTAxMF8xWDMwOgo+ID4+ICsJ CWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfUkdCMTAxMDEwXzFYMzA7Cj4gPj4gKwkJ aW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9ZVVYxMF8xWDMwOwo+ID4+ICsJCWlucHV0 X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA7Cj4gPj4gKwkJYnJlYWs7Cj4g Pj4gKwljYXNlIE1FRElBX0JVU19GTVRfWVVWMTBfMVgzMDoKPiA+PiArCQlpbnB1dF9mbXRzW2kr K10gPSBNRURJQV9CVVNfRk1UX1lVVjEwXzFYMzA7Cj4gPj4gKwkJaW5wdXRfZm10c1tpKytdID0g TUVESUFfQlVTX0ZNVF9VWVZZMTBfMVgyMDsKPiA+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJ QV9CVVNfRk1UX1JHQjEwMTAxMF8xWDMwOwo+ID4+ICsJCWJyZWFrOwo+ID4+ICsJY2FzZSBNRURJ QV9CVVNfRk1UX1VZVlkxMF8xWDIwOgo+ID4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JV U19GTVRfVVlWWTEwXzFYMjA7Cj4gPj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZN VF9ZVVYxMF8xWDMwOwo+ID4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfUkdC MTAxMDEwXzFYMzA7Cj4gPj4gKwkJYnJlYWs7Cj4gPj4gKwo+ID4+ICsJLyogMTJiaXQgKi8KPiA+ PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxMjEyMTJfMVgzNjoKPiA+PiArCQlpbnB1dF9mbXRz W2krK10gPSBNRURJQV9CVVNfRk1UX1JHQjEyMTIxMl8xWDM2Owo+ID4+ICsJCWlucHV0X2ZtdHNb aSsrXSA9IE1FRElBX0JVU19GTVRfWVVWMTJfMVgzNjsKPiA+PiArCQlpbnB1dF9mbXRzW2krK10g PSBNRURJQV9CVVNfRk1UX1VZVlkxMl8xWDI0Owo+ID4+ICsJCWJyZWFrOwo+ID4+ICsJY2FzZSBN RURJQV9CVVNfRk1UX1lVVjEyXzFYMzY6Cj4gPj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFf QlVTX0ZNVF9ZVVYxMl8xWDM2Owo+ID4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19G TVRfVVlWWTEyXzFYMjQ7Cj4gPj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9S R0IxMjEyMTJfMVgzNjsKPiA+PiArCQlicmVhazsKPiA+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9V WVZZMTJfMVgyNDoKPiA+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1VZVlkx Ml8xWDI0Owo+ID4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfWVVWMTJfMVgz NjsKPiA+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1JHQjEyMTIxMl8xWDM2 Owo+ID4+ICsJCWJyZWFrOwo+ID4+ICsKPiA+PiArCS8qIDE2Yml0ICovCj4gPj4gKwljYXNlIE1F RElBX0JVU19GTVRfUkdCMTYxNjE2XzFYNDg6Cj4gPj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVE SUFfQlVTX0ZNVF9SR0IxNjE2MTZfMVg0ODsKPiA+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJ QV9CVVNfRk1UX1lVVjE2XzFYNDg7Cj4gPj4gKwkJYnJlYWs7Cj4gPj4gKwljYXNlIE1FRElBX0JV U19GTVRfWVVWMTZfMVg0ODoKPiA+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1U X1lVVjE2XzFYNDg7Cj4gPj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9SR0Ix NjE2MTZfMVg0ODsKPiA+PiArCQlicmVhazsKPiA+PiArCj4gPj4gKwkvKiA0MjAgKi8KPiA+PiAr CWNhc2UgTUVESUFfQlVTX0ZNVF9VWVlWWVk4XzBfNVgyNDoKPiA+PiArCWNhc2UgTUVESUFfQlVT X0ZNVF9VWVlWWVkxMF8wXzVYMzA6Cj4gPj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlZVllZMTJf MF81WDM2Ogo+ID4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1VZWVZZWTE2XzBfNVg0ODoKPiA+PiAr CQlpbnB1dF9mbXRzW2krK10gPSBvdXRwdXRfZm10Owo+ID4+ICsJCWJyZWFrOwo+ID4+ICsJfQo+ ID4+ICsKPiA+PiArCSpudW1faW5wdXRfZm10cyA9IGk7Cj4gPj4gKwo+ID4+ICsJaWYgKCpudW1f aW5wdXRfZm10cyA9PSAwKSB7Cj4gPj4gKwkJa2ZyZWUoaW5wdXRfZm10cyk7Cj4gPj4gKwkJaW5w dXRfZm10cyA9IE5VTEw7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIGlucHV0X2ZtdHM7 Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBpbnQgZHdfaGRtaV9icmlkZ2VfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPj4gKwkJCQkgICAgICAgc3RydWN0IGRy bV9icmlkZ2Vfc3RhdGUKPiA+IAo+ID4gKmJyaWRnZV9zdGF0ZSwKPiA+IAo+ID4+ICsJCQkJICAg ICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZQo+ID4gCj4gPiAqY3J0Y19zdGF0ZSwKPiA+IAo+ID4+ ICsJCQkJICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlCj4gPiAKPiA+ICpjb25uX3N0 YXRlKQo+ID4gCj4gPj4gK3sKPiA+PiArCXN0cnVjdCBkd19oZG1pICpoZG1pID0gYnJpZGdlLT5k cml2ZXJfcHJpdmF0ZTsKPiA+PiArCj4gPj4gKwlkZXZfZGJnKGhkbWktPmRldiwgInNlbGVjdGVk IG91dHB1dCBmb3JtYXQgJXhcbiIsCj4gPj4gKwkJCWJyaWRnZV9zdGF0ZS0+b3V0cHV0X2J1c19j ZmcuZm9ybWF0KTsKPiA+PiArCj4gPj4gKwloZG1pLT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9y bWF0ID0KPiA+PiArCQkJYnJpZGdlX3N0YXRlLT5vdXRwdXRfYnVzX2NmZy5mb3JtYXQ7Cj4gPj4g Kwo+ID4+ICsJZGV2X2RiZyhoZG1pLT5kZXYsICJzZWxlY3RlZCBpbnB1dCBmb3JtYXQgJXhcbiIs Cj4gPj4gKwkJCWJyaWRnZV9zdGF0ZS0+aW5wdXRfYnVzX2NmZy5mb3JtYXQpOwo+ID4+ICsKPiA+ PiArCWhkbWktPmhkbWlfZGF0YS5lbmNfaW5fYnVzX2Zvcm1hdCA9Cj4gPj4gKwkJCWJyaWRnZV9z dGF0ZS0+aW5wdXRfYnVzX2NmZy5mb3JtYXQ7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIDA7Cj4gPj4g K30KPiA+PiArCj4gPj4gCj4gPj4gIHN0YXRpYyBpbnQgZHdfaGRtaV9icmlkZ2VfYXR0YWNoKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gPj4gIHsKPiA+PiAgCj4gPj4gIAlzdHJ1Y3QgZHdf aGRtaSAqaGRtaSA9IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7Cj4gPj4gCj4gPj4gQEAgLTI0OTks NiArMjc1OSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcwo+ID4+IGR3 X2hkbWlfYnJpZGdlX2Z1bmNzID0geyAuYXRvbWljX3Jlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJf YnJpZGdlX3Jlc2V0LAo+ID4+IAo+ID4+ICAJLmF0dGFjaCA9IGR3X2hkbWlfYnJpZGdlX2F0dGFj aCwKPiA+PiAgCS5kZXRhY2ggPSBkd19oZG1pX2JyaWRnZV9kZXRhY2gsCj4gPj4gCj4gPj4gKwku YXRvbWljX2NoZWNrID0gZHdfaGRtaV9icmlkZ2VfYXRvbWljX2NoZWNrLAo+ID4+ICsJLmF0b21p Y19nZXRfb3V0cHV0X2J1c19mbXRzID0KPiA+IAo+ID4gZHdfaGRtaV9icmlkZ2VfYXRvbWljX2dl dF9vdXRwdXRfYnVzX2ZtdHMsCj4gPiAKPiA+PiArCS5hdG9taWNfZ2V0X2lucHV0X2J1c19mbXRz ID0KPiA+IAo+ID4gZHdfaGRtaV9icmlkZ2VfYXRvbWljX2dldF9pbnB1dF9idXNfZm10cywKPiA+ IAo+ID4+ICAJLmVuYWJsZSA9IGR3X2hkbWlfYnJpZGdlX2VuYWJsZSwKPiA+PiAgCS5kaXNhYmxl ID0gZHdfaGRtaV9icmlkZ2VfZGlzYWJsZSwKPiA+PiAgCS5tb2RlX3NldCA9IGR3X2hkbWlfYnJp ZGdlX21vZGVfc2V0LAo+ID4+IAo+ID4+IEBAIC0yOTYzLDYgKzMyMjYsNyBAQCBfX2R3X2hkbWlf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiA+PiAKPiA+PiAgCWhkbWktPmJy aWRnZS5kcml2ZXJfcHJpdmF0ZSA9IGhkbWk7Cj4gPj4gIAloZG1pLT5icmlkZ2UuZnVuY3MgPSAm ZHdfaGRtaV9icmlkZ2VfZnVuY3M7Cj4gPj4gCj4gPj4gKwo+ID4+IAo+ID4+ICAjaWZkZWYgQ09O RklHX09GCj4gPj4gIAo+ID4+ICAJaGRtaS0+YnJpZGdlLm9mX25vZGUgPSBwZGV2LT5kZXYub2Zf bm9kZTsKPiA+PiAgCj4gPj4gICNlbmRpZgoKCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0CmxpbnV4LWFt bG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK