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 319A2C3F2CD for ; Sat, 29 Feb 2020 14:42:52 +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 F318F2469C for ; Sat, 29 Feb 2020 14:42:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Mui3V9YC" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F318F2469C 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=DVOL0ixyn4GkN/QZ/Stbg7c/T1u8vgGZFRZ6lr/g3U8=; b=Mui3V9YCSO1QrZ 0behvwBBBjDepo6fDYoKI/PGRpXNpGOjrCCj/U6QUFVv3YFxxCF2QqaRqvGlR0zyamvC19JszzAs+ omFKrHup44BOuX8poWo2WauPwqb6v9YS1Vr5ix93jBHKfx7Nz4dhKOKrE+ix8fYmp4GdsjPYNh1vr i89iNV6aabLuLF70E50XPjAFJUP9iCbXl6FZAs2/X+UUomZVVw3Sj58s7xW4PDh0keB6gPCaToFmU B48eHp8/gm57Afomy6ceY9SEzDy3YVPQL2cfljOJ7kjKI2Wci0HwzHSr2K2dXkB+gJibffhJB95JM vc8hmrkuuVGRI0dr+Xkw==; 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 1j83KF-00046r-Fq; Sat, 29 Feb 2020 14:42:43 +0000 Received: from mailoutvs55.siol.net ([185.57.226.246] helo=mail.siol.net) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1j83KB-000466-0P for linux-amlogic@lists.infradead.org; Sat, 29 Feb 2020 14:42:42 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTP id 005B252143B; Sat, 29 Feb 2020 15:42:29 +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 kYSbecqOzKhu; Sat, 29 Feb 2020 15:42:28 +0100 (CET) Received: from mail.siol.net (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTPS id B8B6E5235DA; Sat, 29 Feb 2020 15:42:28 +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 C571252143B; Sat, 29 Feb 2020 15:42:27 +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 15:42:27 +0100 Message-ID: <105533194.nniJfEyVGO@jernej-laptop> In-Reply-To: References: <20200206191834.6125-1-narmstrong@baylibre.com> <2970638.5fSG56mABF@jernej-laptop> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200229_064239_368582_44A7078D X-CRM114-Status: GOOD ( 34.58 ) 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 RG5lIHNvYm90YSwgMjkuIGZlYnJ1YXIgMjAyMCBvYiAxMzoxNToyNiBDRVQgamUgSm9uYXMgS2Fy bG1hbiBuYXBpc2FsKGEpOgo+IE9uIDIwMjAtMDItMjkgMTI6MDcsIEplcm5laiDFoGtyYWJlYyB3 cm90ZToKPiA+IERuZSBzb2JvdGEsIDI5LiBmZWJydWFyIDIwMjAgb2IgMTE6MDk6MTQgQ0VUIGpl IEpvbmFzIEthcmxtYW4gbmFwaXNhbChhKToKPiA+PiBIaSBKZXJuZWosCj4gPj4gCj4gPj4gT24g MjAyMC0wMi0yOSAwODo0MiwgSmVybmVqIMWga3JhYmVjIHdyb3RlOgo+ID4+PiBIaSBOZWlsIQo+ ID4+PiAKPiA+Pj4gRG5lIMSNZXRydGVrLCAwNi4gZmVicnVhciAyMDIwIG9iIDIwOjE4OjI3IENF VCBqZSBOZWlsIEFybXN0cm9uZwo+ID4gCj4gPiBuYXBpc2FsKGEpOgo+ID4+Pj4gQWRkIHRoZSBh dG9taWNfZ2V0X291dHB1dF9idXNfZm10cywgYXRvbWljX2dldF9pbnB1dF9idXNfZm10cyB0bwo+ ID4+Pj4gbmVnb2NpYXRlCj4gPj4+PiB0aGUgcG9zc2libGUgb3V0cHV0IGFuZCBpbnB1dCBmb3Jt YXRzIGZvciB0aGUgY3VycmVudCBtb2RlIGFuZCBtb25pdG9yLAo+ID4+Pj4gYW5kIHVzZSB0aGUg bmVnb3RpYXRlZCBmb3JtYXRzIGluIGEgYmFzaWMgYXRvbWljX2NoZWNrIGNhbGxiYWNrLgo+ID4+ Pj4gCj4gPj4+PiBTaWduZWQtb2ZmLWJ5OiBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXls aWJyZS5jb20+Cj4gPj4+PiAtLS0KPiA+Pj4+IAo+ID4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9icmlk Z2Uvc3lub3BzeXMvZHctaGRtaS5jIHwgMjcyICsrKysrKysrKysrKysrKysrKysrKy0KPiA+Pj4+ ICAxIGZpbGUgY2hhbmdlZCwgMjY4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gPj4+ PiAKPiA+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3 LWhkbWkuYwo+ID4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWku YyBpbmRleAo+ID4+Pj4gZmVjNGE0YmNkMWZlLi4xNTA0OGFkNjk0YmMgMTAwNjQ0Cj4gPj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYwo+ID4+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMKPiA+Pj4+IEBAIC0y MDk1LDExICsyMDk1LDEwIEBAIHN0YXRpYyBpbnQgZHdfaGRtaV9zZXR1cChzdHJ1Y3QgZHdfaGRt aSAqaGRtaSwKPiA+Pj4+IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ID4+Pj4gaGRt aS0+aGRtaV9kYXRhLnZpZGVvX21vZGUubXBpeGVscmVwZXRpdGlvbm91dHB1dCA9IDA7Cj4gPj4+ PiAKPiA+Pj4+ICAJaGRtaS0+aGRtaV9kYXRhLnZpZGVvX21vZGUubXBpeGVscmVwZXRpdGlvbmlu cHV0ID0gMDsKPiA+Pj4+IAo+ID4+Pj4gLQkvKiBUT0ZJWDogR2V0IGlucHV0IGZvcm1hdCBmcm9t IHBsYXQgZGF0YSBvciBmYWxsYmFjayB0byBSR0I4ODggKi8KPiA+Pj4+IAo+ID4+Pj4gIAlpZiAo aGRtaS0+cGxhdF9kYXRhLT5pbnB1dF9idXNfZm9ybWF0KQo+ID4+Pj4gIAkKPiA+Pj4+ICAJCWhk bWktPmhkbWlfZGF0YS5lbmNfaW5fYnVzX2Zvcm1hdCA9Cj4gPj4+PiAgCQkKPiA+Pj4+ICAJCQlo ZG1pLT5wbGF0X2RhdGEtPmlucHV0X2J1c19mb3JtYXQ7Cj4gPj4+PiAKPiA+Pj4+IC0JZWxzZQo+ ID4+Pj4gKwllbHNlIGlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2J1c19mb3JtYXQgPT0gTUVE SUFfQlVTX0ZNVF9GSVhFRCkKPiA+Pj4+IAo+ID4+Pj4gIAkJaGRtaS0+aGRtaV9kYXRhLmVuY19p bl9idXNfZm9ybWF0ID0KPiA+Pj4gCj4gPj4+IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7Cj4g Pj4+IAo+ID4+Pj4gIAkvKiBUT0ZJWDogR2V0IGlucHV0IGVuY29kaW5nIGZyb20gcGxhdCBkYXRh IG9yIGZhbGxiYWNrIHRvIG5vbmUgKi8KPiA+Pj4+IAo+ID4+Pj4gQEAgLTIxMDksOCArMjEwOCw4 IEBAIHN0YXRpYyBpbnQgZHdfaGRtaV9zZXR1cChzdHJ1Y3QgZHdfaGRtaSAqaGRtaSwKPiA+Pj4+ IHN0cnVjdAo+ID4+Pj4gZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkgZWxzZQo+ID4+Pj4gCj4gPj4+ PiAgCQloZG1pLT5oZG1pX2RhdGEuZW5jX2luX2VuY29kaW5nID0KPiA+Pj4gCj4gPj4+IFY0TDJf WUNCQ1JfRU5DX0RFRkFVTFQ7Cj4gPj4+IAo+ID4+Pj4gLQkvKiBUT0ZJWDogRGVmYXVsdCB0byBS R0I4ODggb3V0cHV0IGZvcm1hdCAqLwo+ID4+Pj4gLQloZG1pLT5oZG1pX2RhdGEuZW5jX291dF9i dXNfZm9ybWF0ID0gTUVESUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDsKPiA+Pj4+ICsJaWYgKGhkbWkt PmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQgPT0gTUVESUFfQlVTX0ZNVF9GSVhFRCkKPiA+ Pj4+ICsJCWhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQgPQo+ID4+PiAKPiA+Pj4g TUVESUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDsKPiA+Pj4gCj4gPj4+PiAgCWhkbWktPmhkbWlfZGF0 YS5waXhfcmVwZXRfZmFjdG9yID0gMDsKPiA+Pj4+ICAJaGRtaS0+aGRtaV9kYXRhLmhkY3BfZW5h YmxlID0gMDsKPiA+Pj4+IAo+ID4+Pj4gQEAgLTIzODgsNiArMjM4NywyNjcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcwo+ID4+Pj4gZHdfaGRtaV9jb25u ZWN0b3JfaGVscGVyX2Z1bmNzID0gLmF0b21pY19jaGVjayA9Cj4gPj4+PiBkd19oZG1pX2Nvbm5l Y3Rvcl9hdG9taWNfY2hlY2ssCj4gPj4+PiAKPiA+Pj4+ICB9Owo+ID4+Pj4gCj4gPj4+PiArLyoK PiA+Pj4+ICsgKiBQb3NzaWJsZSBvdXRwdXQgZm9ybWF0cyA6Cj4gPj4+PiArICogLSBNRURJQV9C VVNfRk1UX1VZWVZZWTE2XzBfNVg0OCwKPiA+Pj4+ICsgKiAtIE1FRElBX0JVU19GTVRfVVlZVllZ MTJfMF81WDM2LAo+ID4+Pj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9VWVlWWVkxMF8wXzVYMzAsCj4g Pj4+PiArICogLSBNRURJQV9CVVNfRk1UX1VZWVZZWThfMF81WDI0LAo+ID4+Pj4gKyAqIC0gTUVE SUFfQlVTX0ZNVF9ZVVYxNl8xWDQ4LAo+ID4+Pj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9SR0IxNjE2 MTZfMVg0OCwKPiA+Pj4+ICsgKiAtIE1FRElBX0JVU19GTVRfVVlWWTEyXzFYMjQsCj4gPj4+PiAr ICogLSBNRURJQV9CVVNfRk1UX1lVVjEyXzFYMzYsCj4gPj4+PiArICogLSBNRURJQV9CVVNfRk1U X1JHQjEyMTIxMl8xWDM2LAo+ID4+Pj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9VWVZZMTBfMVgyMCwK PiA+Pj4+ICsgKiAtIE1FRElBX0JVU19GTVRfWVVWMTBfMVgzMCwKPiA+Pj4+ICsgKiAtIE1FRElB X0JVU19GTVRfUkdCMTAxMDEwXzFYMzAsCj4gPj4+PiArICogLSBNRURJQV9CVVNfRk1UX1VZVlk4 XzFYMTYsCj4gPj4+PiArICogLSBNRURJQV9CVVNfRk1UX1lVVjhfMVgyNCwKPiA+Pj4+ICsgKiAt IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQsCj4gPj4+PiArICovCj4gPj4+PiArCj4gPj4+PiAr LyogQ2FuIHJldHVybiBhIG1heGltdW0gb2YgMTIgcG9zc2libGUgb3V0cHV0IGZvcm1hdHMgZm9y IGEKPiA+Pj4+IG1vZGUvY29ubmVjdG9yCj4gPj4+PiAqLyArI2RlZmluZSBNQVhfT1VUUFVUX1NF TF9GT1JNQVRTCTEyCj4gPj4+PiArCj4gPj4+PiArc3RhdGljIHUzMiAqZHdfaGRtaV9icmlkZ2Vf YXRvbWljX2dldF9vdXRwdXRfYnVzX2ZtdHMoc3RydWN0Cj4gPj4+PiBkcm1fYnJpZGdlCj4gPj4+ PiAqYnJpZGdlLCArCQkJCQlzdHJ1Y3QKPiA+Pj4gCj4gPj4+IGRybV9icmlkZ2Vfc3RhdGUgKmJy aWRnZV9zdGF0ZSwKPiA+Pj4gCj4gPj4+PiArCQkJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUKPiA+ Pj4gCj4gPj4+ICpjcnRjX3N0YXRlLAo+ID4+PiAKPiA+Pj4+ICsJCQkJCXN0cnVjdAo+ID4+PiAK PiA+Pj4gZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwKPiA+Pj4gCj4gPj4+PiArCQkJ CQl1bnNpZ25lZCBpbnQKPiA+Pj4gCj4gPj4+ICpudW1fb3V0cHV0X2ZtdHMpCj4gPj4+IAo+ID4+ Pj4gK3sKPiA+Pj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4gPSBjb25uX3N0YXRlLT5j b25uZWN0b3I7Cj4gPj4+PiArCXN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICppbmZvID0gJmNvbm4t PmRpc3BsYXlfaW5mbzsKPiA+Pj4+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAm Y3J0Y19zdGF0ZS0+bW9kZTsKPiA+Pj4+ICsJdTggbWF4X2JwYyA9IGNvbm5fc3RhdGUtPm1heF9y ZXF1ZXN0ZWRfYnBjOwo+ID4+Pj4gKwlib29sIGlzX2hkbWkyX3NpbmsgPSBpbmZvLT5oZG1pLnNj ZGMuc3VwcG9ydGVkIHx8Cj4gPj4+PiArCQkJICAgICAoaW5mby0+Y29sb3JfZm9ybWF0cyAmCj4g Pj4+IAo+ID4+PiBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDIwKTsKPiA+Pj4gCj4gPj4+PiArCXUz MiAqb3V0cHV0X2ZtdHM7Cj4gPj4+PiArCWludCBpID0gMDsKPiA+Pj4+ICsKPiA+Pj4+ICsJKm51 bV9vdXRwdXRfZm10cyA9IDA7Cj4gPj4+PiArCj4gPj4+PiArCW91dHB1dF9mbXRzID0ga2NhbGxv YyhNQVhfT1VUUFVUX1NFTF9GT1JNQVRTLAo+ID4gCj4gPiBzaXplb2YoKm91dHB1dF9mbXRzKSwK PiA+IAo+ID4+Pj4gKwkJCSAgICAgIEdGUF9LRVJORUwpOwo+ID4+Pj4gKwlpZiAoIW91dHB1dF9m bXRzKQo+ID4+Pj4gKwkJcmV0dXJuIE5VTEw7Cj4gPj4+PiArCj4gPj4+PiArCS8qCj4gPj4+PiAr CSAqIElmIHRoZSBjdXJyZW50IG1vZGUgZW5mb3JjZXMgNDoyOjAsIGZvcmNlIHRoZSBvdXRwdXQg YnV0IGZvcm1hdAo+ID4+Pj4gKwkgKiB0byA0OjI6MCBhbmQgZG8gbm90IGFkZCB0aGUgWVVWNDIy LzQ0NC9SR0IgZm9ybWF0cwo+ID4+Pj4gKwkgKi8KPiA+Pj4+ICsJaWYgKGNvbm4tPnljYmNyXzQy MF9hbGxvd2VkICYmCj4gPj4+PiArCSAgICAoZHJtX21vZGVfaXNfNDIwX29ubHkoaW5mbywgbW9k ZSkgfHwKPiA+Pj4+ICsJICAgICAoKSkpIHsKPiA+Pj4+ICsKPiA+Pj4+ICsJCS8qIE9yZGVyIGJ1 cyBmb3JtYXRzIGZyb20gMTZiaXQgdG8gOGJpdCBpZiBzdXBwb3J0ZWQgKi8KPiA+Pj4+ICsJCWlm IChtYXhfYnBjID49IDE2ICYmIGluZm8tPmJwYyA9PSAxNiAmJgo+ID4+Pj4gKwkJICAgIChpbmZv LT5oZG1pLnk0MjBfZGNfbW9kZXMgJgo+ID4+PiAKPiA+Pj4gRFJNX0VESURfWUNCQ1I0MjBfRENf NDgpKQo+ID4+PiAKPiA+Pj4+ICsJCQlvdXRwdXRfZm10c1tpKytdID0KPiA+Pj4gCj4gPj4+IE1F RElBX0JVU19GTVRfVVlZVllZMTZfMF81WDQ4Owo+ID4+PiAKPiA+Pj4+ICsKPiA+Pj4+ICsJCWlm IChtYXhfYnBjID49IDEyICYmIGluZm8tPmJwYyA+PSAxMiAmJgo+ID4+Pj4gKwkJICAgIChpbmZv LT5oZG1pLnk0MjBfZGNfbW9kZXMgJgo+ID4+PiAKPiA+Pj4gRFJNX0VESURfWUNCQ1I0MjBfRENf MzYpKQo+ID4+PiAKPiA+Pj4+ICsJCQlvdXRwdXRfZm10c1tpKytdID0KPiA+Pj4gCj4gPj4+IE1F RElBX0JVU19GTVRfVVlZVllZMTJfMF81WDM2Owo+ID4+PiAKPiA+Pj4+ICsKPiA+Pj4+ICsJCWlm IChtYXhfYnBjID49IDEwICYmIGluZm8tPmJwYyA+PSAxMCAmJgo+ID4+Pj4gKwkJICAgIChpbmZv LT5oZG1pLnk0MjBfZGNfbW9kZXMgJgo+ID4+PiAKPiA+Pj4gRFJNX0VESURfWUNCQ1I0MjBfRENf MzApKQo+ID4+PiAKPiA+Pj4+ICsJCQlvdXRwdXRfZm10c1tpKytdID0KPiA+Pj4gCj4gPj4+IE1F RElBX0JVU19GTVRfVVlZVllZMTBfMF81WDMwOwo+ID4+PiAKPiA+Pj4+ICsKPiA+Pj4+ICsJCS8q IERlZmF1bHQgOGJpdCBmYWxsYmFjayAqLwo+ID4+Pj4gKwkJb3V0cHV0X2ZtdHNbaSsrXSA9IE1F RElBX0JVU19GTVRfVVlZVllZOF8wXzVYMjQ7Cj4gPj4+PiArCj4gPj4+PiArCQkqbnVtX291dHB1 dF9mbXRzID0gaTsKPiA+Pj4+ICsKPiA+Pj4+ICsJCXJldHVybiBvdXRwdXRfZm10czsKPiA+Pj4g Cj4gPj4+IERyaXZlciBzaG91bGRuJ3QgcmV0dXJuIGp1c3QgeWV0IGZvciBjYXNlICJpc19oZG1p Ml9zaW5rICYmCj4gPj4+IGRybV9tb2RlX2lzXzQyMF9hbHNvKGluZm8sIG1vZGUpIiwgYmVjYXVz ZSBtb25pdG9yL1RWIGFsc28gc3VwcG9ydHMKPiA+Pj4gWUNiQ3IKPiA+Pj4gNDo0OjQgaW4gdGhh dCBjYXNlLiBJTU8gWUNiQ3IgNDo0OjQgc2hvdWxkIGJlIGV2ZW4gcHJlZmVyZWQuIFdoYXQgZG8g eW91Cj4gPj4+IHRoaW5rPwo+ID4+IAo+ID4+IEkgdGhpbmsgd2UgbmVlZCB0byBoYXZlIHNvbWUg d2F5IGZvciBjb250cm9sbGVyIGRyaXZlciBhbmQgdXNlcnNwYWNlIHRvCj4gPj4gY29udHJvbCB3 aGF0IGhkbWkgb3V0cHV0IGZvcm1hdCBnZXRzIHNlbGVjdGVkLiBJIGtub3cgZm9yIGEgZmFjdCB0 aGF0Cj4gPj4gc29tZQo+ID4+IFNhbXN1bmcgVFYgaGF2ZSBpc3N1ZXMgd2l0aCA0NDQgWUNiQ3Ig bW9kZXMgYXQgNGsgNTAvNjBoeiBidXQgaGF2ZSBubwo+ID4+IHByb2JsZW1zIHdpdGggNDIwIG1v ZGVzLiBUaGUgU2Ftc3VuZyBUViBlZGlkIGxpZSBhbmQvb3IgdGhlIFRWIGlzIG5vdAo+ID4+IGZ1 bGx5Cj4gPj4gZm9sbG93aW5nIEhETUkgc3BlY3MKPiA+IAo+ID4gSW50ZXJlc3RpbmcsIG1heWJl IGp1c3Qgc29tZSBiYW5kd2l0aCBpc3N1ZXM/IEkgZ3Vlc3Mgd2Ugc2hvdWxkIGhhdmUgYQo+ID4g YmxhY2tsaXN0IGZvciBzdWNoIGNhc2VzLiBJIGtub3cgdGhhdCBhdCBsZWFzdCBBbGx3aW5uZXIg QlNQIGRyaXZlciBmb3IgRFcKPiA+IEhETUkgaGFzIGEgYmxhY2tsaXN0LCBpbiB0aGlzIGNhc2Ug Zm9yIDIgbW9uaXRvcnMgd2hpY2ggY2xhaW0gdG8gc3VwcG9ydAo+ID4gWUNiQ3IgNDo0OjQgbW9k ZSBidXQgdGhleSBub3QuCj4gPiAKPiA+PiBGcm9tIGEgcGVyc29uYWwgYW5kIG1lZGlhcGxheWVy IHVzZXJzcGFjZSBwZXJzcGVjdGl2ZSBJIHdvdWxkIGxpa2UgdG8KPiA+PiBwcmVmZXIgNDIwLzQ0 NCBZQ2JDciBtb2RlIGFzIHNvb24gYXMgYW55IHl1diBkcm0gcGxhbmUgaXMgYWN0aXZlIGFuZCBy Z2IKPiA+PiA0NDQgYW55dGltZSBlbHNlLgo+ID4gCj4gPiBJIHdvdWxkIGFyZ3VlIHRoYXQgWUNi Q3IgaXMgYWx3YXlzIHByZWZlcmVkOgo+ID4gLSBDRUEgODYxIHByZWZlcnMgaXQgZm9yIGFsbCBD RUEgbW9kZXMKPiA+IC0gYXZvaWQgZGVhbGluZyB3aXRoIHF1YW50aXphdGlvbiByYW5nZSAtIGl0 J3MgYWx3YXlzIGxpbWl0ZWQgcmFuZ2UgZm9yIDwKPiA+IGhkbWkgMi4wIGFuZCBzZWxlY3RhYmxl IG9uIHNvbWUgaGRtaSAyLjAgY2FwYWJsZSBzaW5rcwo+IAo+IFRoaXMgaXMgcHJvYmFibHkgdHJ1 ZSBpZiB5b3VyIHNpbmsgaXMgYSBUViwgZm9yIG1vbml0b3JzIHdpdGggSERNSQo+IGNvbm5lY3Rp b25zIEkgd291bGQgZXhwZWN0IG9yIGF0IGxlYXN0IGxpa2UgdG8gaGF2ZSBhbiBvcHRpb24gdG8g dXNlIHJnYjQ0NAo+IGZ1bGwgcmFuZ2UgbW9kZSBmb3IgYW55IGRlc2t0b3Agb3IgZ2FtaW5nIG9y IHNpbWlsYXIgdXNlLWNhc2UuCgpXZWxsLCB0aGluZyBpcyB0aGF0IENFQSA4NjEgY2xlYXJseSBz dGF0ZXMgdGhhdCBmb3IgQ0VBIG1vZGVzICg3MjBwLCAxMDgwcCwgCjIxNjBwLCBldGMuKSBsaW1p dGVkIHJhbmdlIHNob3VsZCBiZSBhbHNvIHVzZWQgZm9yIFJHQiBjb2xvciBzcGFjZS4gV2l0aCAK aW1wbGVtZW50ZWQgbG9naWMgdG8gZGV0ZWN0IGlmIFJHQiBsaW1pdGVkIHJhbmdlIGlzIG5lZWRl ZCBvciBub3QgYW5kIAppbmRpY2F0aW5nIHRoYXQgaW4gQVZJIGZyYW1lLCBJIGZpbmFsbHkgZ2V0 IHByb3BlciAoYmV0dGVyPykgY29sb3IgcmVwcm9kdWN0aW9uIAp3aXRoIFBDIG1vbml0b3IgYW5k IFRWIGF0IHRoZSBzYW1lIHRpbWUuIEknbSBub3Qgc3VyZSBpZiB0aGVyZSBpcyBhbnkgd2F5IHRv IApkZXRlY3QgImZ1bGwgcmFuZ2UgUkdCIiBjYXBhYmxlIGRpc3BsYXlzLiBIb3dldmVyLCB3ZSBj YW4gYWx3YXlzIGltcGxlbWVudCAKY29ubmVjdG9yIHByb3BlcnR5IGxpa2UgSW50ZWwgZGlkIGlu IGk5MTUgZHJpdmVyICJCcm9hZGNhc3QgUkdCIiwgd2hpY2ggY2FuIApvdmVycmlkZSBSR0IgcXVh bnRpemF0aW9uIG1vZGUuCgo+IAo+ID4gQW55d2F5LCB0aGVyZSBpcyBubyB1bml2ZXJzYWwgc29s dXRpb24gdG8gYXZvaWQgY29sb3Igc3BhY2UgY29udmVyc2lvbiBpbgo+ID4gYWxsIGNhc2VzLiBG b3IgZXhhbXBsZSwgZHVlIHRvIGRlc2lnbiBvZiBBbGx3aW5uZXIgRGlzcGxheSBFbmdpbmUgMiwg aXQKPiA+IGNhbiBvbmx5IHdvcmsgaW4gUkdCIGZvcm1hdCBpbnRlcm5hbGx5LCBidXQgaXQgY2Fu IGNvbnZlcnQgZmluYWwgb3V0cHV0Cj4gPiB0byBZQ2JDciByaWdodCBiZWZvcmUgaXQncyBmZWVk ZWQgdG8gRFcgSERNSS4gT24gdGhlIG90aGVyIGhhbmQsIHlvdSBoYXZlCj4gPiBtZXNvbiBkaXNw bGF5IHBpcGVsaW5lIHdoaWNoIHdvcmtzIGluIFlDYkNyIGZvcm1hdCBpbnRlcm5hbGx5IGFuZCBy ZWxpZXMKPiA+IG9uIERXIEhETUkgQ1NDIHVuaXQgdG8gY29udmVydCBvdXRwdXQgdG8gUkdCLiBG b3J0dW5hdGVseSwgdGhlcmUgYXJlIGFsc28KPiA+IGRpc3BsYXkgcGlwZWxpbmVzIHdoaWNoIGNh biB3b3JrIGluIGFueSBjb2xvcnNwYWNlIGludGVybmFsbHksIGxpa2UKPiA+IEFsbHdpbm5lciBE aXNwbGF5IEVuZ2luZSAzLiBOb3Qgc3VyZSBpbiB3aGljaCBjYXRlZ29yeSBSb2NrY2hpcCBkaXNw bGF5Cj4gPiBwaXBlbGluZSBmYWxscyBpbnRvLgo+IAo+IEFncmVlLCBhbmQgZm9yIFJvY2tjaGlw IHRvIG15IGtub3dsZWRnZSBSSzMyODggVk9QIChWaWRlbyBPdXRwdXQgUHJvY2Vzc29yKQo+IGNh biBvbmx5IG91dHB1dCA4LzEwLWJpdCByZ2IgKGZ1bGwgcmFuZ2UpIHRvIERXLUhETUkuCj4gQW5k IHRoZSBWT1AgaW4gUkszMjJ4L1JLMzMyOC9SSzMzOTkgY2FuIG91dHB1dCA4LzEwLWJpdCByZ2Ig YW5kIDQ0NC80MjAgeXV2Lgo+IEkgZG8gbm90IGtub3cgaG93IHRoZSBWT1AgaGFuZGxlcyBpbnRl cm5hbCBjb2xvciBjb252ZXJzaW9uLgo+IAo+ID4+IE9uIFJvY2tjaGlwIFNvQ3MgdGhlIGRpc3Bs YXkgY29udHJvbGxlciBjYW5ub3Qgb3V0cHV0IHl1djQyMiB0byBkdy1oZG1pCj4gPj4gYmxvY2ss IHRoZSBvcHRpbWFsIG91dHB1dCBmb3JtYXQgc2VsZWN0aW9uIGluIHN1Y2ggY2FzZSBzaG91bGQg cHV0IHl1djQyMgo+ID4+IGxhc3QuCj4gPiAKPiA+IE5vdGUgdGhhdCBEVyBIRE1JIGhhcyBkZWNp bWF0aW9uIHN1cHBvcnQgd2hpY2ggY29udmVydHMgNDQ0IHRvIDQyMi4gVGhpcwo+ID4gaXMKPiA+ IHBhcnQgb2YgQ1NDIHVuaXQuCj4gCj4gVGhpcyB3b3JrcyBhcyBpdCBzaG91bGQgKGFmdGVyIGEg cGF0Y2ggdG8gZGlzYWJsZSBjb2xvciBjb252ZXJzaW9uIGZvciA0NDQKPiB0byA0MjIpLCAKClll YWgsIEkgbm90aWNlZCB0aGF0IHRvbywgSSBwbGFuIHRvIHNlbmQgYSBwYXRjaCBmb3IgdGhhdCBz b29uLgoKPiB0aGUgaXNzdWUgSSBzZWUgaXMgdGhhdCB0aGUgZm9ybWF0IG5lZ290aWF0aW9uIGNv ZGUgd2lsbCBjdXJyZW50bHkKPiBmYXZvciA0NDQgdG8gNDIyIGRlY2ltYXRpb24gb3ZlciB1c2lu ZyA0NDQgb3V0cHV0Lgo+IE5vdGU6IDQyMiB3aWxsIG5vdCBiZSBzZWxlY3RlZCBvdmVyIDQ0NCBj dXJyZW50bHkgaW4gY2FzZSBzaW5rIHJlcG9ydCBkZWVwCj4gY29sb3Igc3VwcG9ydCBkdWUgdG8g ZHJtIGVkaWQgcGFyc2luZyBjb2RlIGZvbGxvd2luZyBIRE1JIDEuMyBzcGVjLCBzZWUKPiBbMV0u Cj4gCj4gWzFdCj4gaHR0cHM6Ly9naXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2Jsb2IvbWFzdGVy L2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jI0w0Cj4gODAxLUw0ODA2Cj4gPiBTaWRlIG5vdGU6 IENTQyB1bml0IGlzIG9wdGlvbmFsIGZlYXR1cmUgb2YgRFctSERNSSBhbmQgcHJlc2VuY2UgaXMK PiA+IGluZGljYXRlZCBieSBjb25maWcgcmVnaXN0ZXIuIEhvd2V2ZXIsIGl0IHNlZW1zIHRoYXQg Q1NDIHN1cHBvcnQgaXMKPiA+IGJyb2tlbiBpbiBEVyBIRE1JIGNvbnRyb2xsZXIgb24gNDBubSBB bGx3aW5uZXIgU29Dcy4gSWYgaXQgaXMgZW5hYmxlZCwgVFYKPiA+IGxvc2VzIHNpZ25hbC4gSSBo YXZlIHRvIGludmVzdGlnYXRlIGlmIG9ubHkgQ1NDIGlzIGJyb2tlbiBvciBkZWNpbWF0aW9uCj4g PiBhbHNvIGRvbid0IHdvcmsuPiAKClNjcmF0Y2ggYWJvdmUsIERXIEhETUkgQ1NDIHVuaXQgd29y a3Mgb2sgb24gQWxsd2lubmVyIFNvQ3MsIEkganVzdCBmb3Jnb3QgdG8gCmVuYWJsZSBDU0MgY2xv Y2suCgo+ID4+IE1heWJlIGR3LWhkbWkgY2FuIGNhbGwgYSBkdy1oZG1pIGdsdWUgZHJpdmVyIGNh bGxiYWNrIHRvIGdldCB0aGUKPiA+PiBwcmVmZXJyZWQKPiA+PiBvdXRwdXQgZm9ybWF0IG9yZGVy Pwo+ID4+IAo+ID4+IE9uIGEgc2lkZSBub3RlIGJ1dCByZWxhdGVkIGlzc3VlLCB0aGUgZHctaGRt aSBmb3JtYXQgbmVnb3RpYXRpb24gY29kZQo+ID4+IHNob3VsZCBwcm9iYWJseSBhbHNvIGZpbHRl ciBtb2RlcyBvbiB0bWRzIHJhdGUsIHNvbWV0aGluZyBsaWtlIFsxXS4KPiA+PiBJdCBpcyBuZWVk ZWQgdG8gZmlsdGVyIG91dCBkZWVwIGNvbG9yIG1vZGVzIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBi eSB0aGUKPiA+PiBzaW5rIG9yIGhkbWkgc3BlYy4KPiA+IAo+ID4gQWgsIHlvdSBtZWFuIG9uIFRN RFMgcmF0ZXMgc3VwcG9ydGVkIGJ5IHRoZSBzaW5rLiBDb3VsZCB0aGlzIGF2b2lkIFNhbXN1bmcK PiA+IGRlZXAgY29sb3IgaXNzdWVzPyBJZiBzbywgd2UgZG9uJ3QgbmVlZCBibGFja2xpc3QgdGhl bi4KPiAKPiBJIGRvIG5vdCB0aGluayBzbywgdGhlIGluaXRpYWwgaXNzdWUgd2FzIHJlcG9ydGVk IHdpdGggaW50ZWwgZ3JhcGhpY3MgYnV0Cj4gbG9va2luZyBhdCB0aGUgZWRpZCBhbmQgY29tcGFy aW5nIHRvIHRoZSBtYW51YWwgb2Ygc3VwcG9ydGVkIG1vZGVzIHRoZXkgZG8KPiBub3QgZnVsbHkg bWF0Y2guIFNlZSBtYW51YWwgaW5mbyBhdCBbMl0gYW5kIGVkaWQgd2hlbiBVSEQgbW9kZSBpcyBv ZmYgYXQKPiBbM10gYW5kIHdoZW4gb24gYXQgWzRdLgoKV2hpY2ggcGFydCBkb2Vzbid0IG1hdGNo PyBJIGRvbid0IHNlZSBhbnkgaXNzdWUuCgpCZXN0IHJlZ2FyZHMsCkplcm5lagoKPiAKPiBbMl0K PiBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL2ludGVsL3VwbG9hZHMvMzY2MzBj OGE3MjdiZjhjNjZhNTNmZDc0NzAKPiBjODgzODMvTVU3MDAwX21hbnVhbF8tX1VIRF9jb2xvdXJf bW9kZXMuUE5HIFszXSBodHRwOi8vaXguaW8vMUgyNQo+IFs0XSBodHRwOi8vaXguaW8vMUgyZQo+ IAo+ID4gQmVzdCByZWdhcmRzLAo+ID4gSmVybmVqCj4gPiAKPiA+PiBbMV0KPiA+PiBodHRwczov L2dpdGh1Yi5jb20vS3dpYm9vL2xpbnV4LXJvY2tjaGlwL2NvbW1pdC9mYzNkZjY5MDMzODRlNzY0 YWI2YWM1OTg3Cj4gPj4gOWMKPiA+PiA0ODljYmVmNTVmY2JlCj4gPj4gCj4gPj4gQmVzdCByZWdh cmRzLAo+ID4+IEpvbmFzCj4gPj4gCj4gPj4+IEJlc3QgcmVnYXJkcywKPiA+Pj4gSmVybmVqCj4g Pj4+IAo+ID4+Pj4gKwl9Cj4gPj4+PiArCj4gPj4+PiArCS8qCj4gPj4+PiArCSAqIE9yZGVyIGJ1 cyBmb3JtYXRzIGZyb20gMTZiaXQgdG8gOGJpdCBhbmQgZnJvbSBZVVY0MjIgdG8gUkdCCj4gPj4+ PiArCSAqIGlmIHN1cHBvcnRlZC4gSW4gYW55IGNhc2UgdGhlIGRlZmF1bHQgUkdCODg4IGZvcm1h dCBpcyBhZGRlZAo+ID4+Pj4gKwkgKi8KPiA+Pj4+ICsKPiA+Pj4+ICsJaWYgKG1heF9icGMgPj0g MTYgJiYgaW5mby0+YnBjID09IDE2KSB7Cj4gPj4+PiArCQlpZiAoaW5mby0+Y29sb3JfZm9ybWF0 cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0NDQpCj4gPj4+PiArCQkJb3V0cHV0X2ZtdHNbaSsr XSA9IE1FRElBX0JVU19GTVRfWVVWMTZfMVg0ODsKPiA+Pj4+ICsKPiA+Pj4+ICsJCW91dHB1dF9m bXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1JHQjE2MTYxNl8xWDQ4Owo+ID4+Pj4gKwl9Cj4gPj4+ PiArCj4gPj4+PiArCWlmIChtYXhfYnBjID49IDEyICYmIGluZm8tPmJwYyA+PSAxMikgewo+ID4+ Pj4gKwkJaWYgKGluZm8tPmNvbG9yX2Zvcm1hdHMgJiBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDIy KQo+ID4+Pj4gKwkJCW91dHB1dF9mbXRzW2krK10gPQo+ID4gCj4gPiBNRURJQV9CVVNfRk1UX1VZ VlkxMl8xWDI0Owo+ID4gCj4gPj4+PiArCj4gPj4+PiArCQlpZiAoaW5mby0+Y29sb3JfZm9ybWF0 cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0NDQpCj4gPj4+PiArCQkJb3V0cHV0X2ZtdHNbaSsr XSA9IE1FRElBX0JVU19GTVRfWVVWMTJfMVgzNjsKPiA+Pj4+ICsKPiA+Pj4+ICsJCW91dHB1dF9m bXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1JHQjEyMTIxMl8xWDM2Owo+ID4+Pj4gKwl9Cj4gPj4+ PiArCj4gPj4+PiArCWlmIChtYXhfYnBjID49IDEwICYmIGluZm8tPmJwYyA+PSAxMCkgewo+ID4+ Pj4gKwkJaWYgKGluZm8tPmNvbG9yX2Zvcm1hdHMgJiBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDIy KQo+ID4+Pj4gKwkJCW91dHB1dF9mbXRzW2krK10gPQo+ID4gCj4gPiBNRURJQV9CVVNfRk1UX1VZ VlkxMF8xWDIwOwo+ID4gCj4gPj4+PiArCj4gPj4+PiArCQlpZiAoaW5mby0+Y29sb3JfZm9ybWF0 cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0NDQpCj4gPj4+PiArCQkJb3V0cHV0X2ZtdHNbaSsr XSA9IE1FRElBX0JVU19GTVRfWVVWMTBfMVgzMDsKPiA+Pj4+ICsKPiA+Pj4+ICsJCW91dHB1dF9m bXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1JHQjEwMTAxMF8xWDMwOwo+ID4+Pj4gKwl9Cj4gPj4+ PiArCj4gPj4+PiArCWlmIChpbmZvLT5jb2xvcl9mb3JtYXRzICYgRFJNX0NPTE9SX0ZPUk1BVF9Z Q1JDQjQyMikKPiA+Pj4+ICsJCW91dHB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1VZVlk4 XzFYMTY7Cj4gPj4+PiArCj4gPj4+PiArCWlmIChpbmZvLT5jb2xvcl9mb3JtYXRzICYgRFJNX0NP TE9SX0ZPUk1BVF9ZQ1JDQjQ0NCkKPiA+Pj4+ICsJCW91dHB1dF9mbXRzW2krK10gPSBNRURJQV9C VVNfRk1UX1lVVjhfMVgyNDsKPiA+Pj4+ICsKPiA+Pj4+ICsJLyogRGVmYXVsdCA4Yml0IFJHQiBm YWxsYmFjayAqLwo+ID4+Pj4gKwlvdXRwdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9SR0I4 ODhfMVgyNDsKPiA+Pj4+ICsKPiA+Pj4+ICsJKm51bV9vdXRwdXRfZm10cyA9IGk7Cj4gPj4+PiAr Cj4gPj4+PiArCXJldHVybiBvdXRwdXRfZm10czsKPiA+Pj4+ICt9Cj4gPj4+PiArCj4gPj4+PiAr LyoKPiA+Pj4+ICsgKiBQb3NzaWJsZSBpbnB1dCBmb3JtYXRzIDoKPiA+Pj4+ICsgKiAtIE1FRElB X0JVU19GTVRfUkdCODg4XzFYMjQKPiA+Pj4+ICsgKiAtIE1FRElBX0JVU19GTVRfWVVWOF8xWDI0 Cj4gPj4+PiArICogLSBNRURJQV9CVVNfRk1UX1VZVlk4XzFYMTYKPiA+Pj4+ICsgKiAtIE1FRElB X0JVU19GTVRfVVlZVllZOF8wXzVYMjQKPiA+Pj4+ICsgKiAtIE1FRElBX0JVU19GTVRfUkdCMTAx MDEwXzFYMzAKPiA+Pj4+ICsgKiAtIE1FRElBX0JVU19GTVRfWVVWMTBfMVgzMAo+ID4+Pj4gKyAq IC0gTUVESUFfQlVTX0ZNVF9VWVZZMTBfMVgyMAo+ID4+Pj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9V WVlWWVkxMF8wXzVYMzAKPiA+Pj4+ICsgKiAtIE1FRElBX0JVU19GTVRfUkdCMTIxMjEyXzFYMzYK PiA+Pj4+ICsgKiAtIE1FRElBX0JVU19GTVRfWVVWMTJfMVgzNgo+ID4+Pj4gKyAqIC0gTUVESUFf QlVTX0ZNVF9VWVZZMTJfMVgyNAo+ID4+Pj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9VWVlWWVkxMl8w XzVYMzYKPiA+Pj4+ICsgKiAtIE1FRElBX0JVU19GTVRfUkdCMTYxNjE2XzFYNDgKPiA+Pj4+ICsg KiAtIE1FRElBX0JVU19GTVRfWVVWMTZfMVg0OAo+ID4+Pj4gKyAqIC0gTUVESUFfQlVTX0ZNVF9V WVlWWVkxNl8wXzVYNDgKPiA+Pj4+ICsgKi8KPiA+Pj4+ICsKPiA+Pj4+ICsvKiBDYW4gcmV0dXJu IGEgbWF4aW11bSBvZiA0IHBvc3NpYmxlIGlucHV0IGZvcm1hdHMgZm9yIGFuIG91dHB1dAo+ID4+ Pj4gZm9ybWF0Cj4gPj4+PiAqLyArI2RlZmluZSBNQVhfSU5QVVRfU0VMX0ZPUk1BVFMJNAo+ID4+ Pj4gKwo+ID4+Pj4gK3N0YXRpYyB1MzIgKmR3X2hkbWlfYnJpZGdlX2F0b21pY19nZXRfaW5wdXRf YnVzX2ZtdHMoc3RydWN0IGRybV9icmlkZ2UKPiA+Pj4+ICpicmlkZ2UsICsJCQkJCXN0cnVjdAo+ ID4+PiAKPiA+Pj4gZHJtX2JyaWRnZV9zdGF0ZSAqYnJpZGdlX3N0YXRlLAo+ID4+PiAKPiA+Pj4+ ICsJCQkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZQo+ID4+PiAKPiA+Pj4gKmNydGNfc3RhdGUsCj4g Pj4+IAo+ID4+Pj4gKwkJCQkJc3RydWN0Cj4gPj4+IAo+ID4+PiBkcm1fY29ubmVjdG9yX3N0YXRl ICpjb25uX3N0YXRlLAo+ID4+PiAKPiA+Pj4+ICsJCQkJCXUzMiBvdXRwdXRfZm10LAo+ID4+Pj4g KwkJCQkJdW5zaWduZWQgaW50Cj4gPj4+IAo+ID4+PiAqbnVtX2lucHV0X2ZtdHMpCj4gPj4+IAo+ ID4+Pj4gK3sKPiA+Pj4+ICsJdTMyICppbnB1dF9mbXRzOwo+ID4+Pj4gKwlpbnQgaSA9IDA7Cj4g Pj4+PiArCj4gPj4+PiArCSpudW1faW5wdXRfZm10cyA9IDA7Cj4gPj4+PiArCj4gPj4+PiArCWlu cHV0X2ZtdHMgPSBrY2FsbG9jKE1BWF9JTlBVVF9TRUxfRk9STUFUUywgc2l6ZW9mKCppbnB1dF9m bXRzKSwKPiA+Pj4+ICsJCQkgICAgIEdGUF9LRVJORUwpOwo+ID4+Pj4gKwlpZiAoIWlucHV0X2Zt dHMpCj4gPj4+PiArCQlyZXR1cm4gTlVMTDsKPiA+Pj4+ICsKPiA+Pj4+ICsJc3dpdGNoIChvdXRw dXRfZm10KSB7Cj4gPj4+PiArCS8qIDhiaXQgKi8KPiA+Pj4+ICsJY2FzZSBNRURJQV9CVVNfRk1U X1JHQjg4OF8xWDI0Ogo+ID4+Pj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9S R0I4ODhfMVgyNDsKPiA+Pj4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfWVVW OF8xWDI0Owo+ID4+Pj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9VWVZZOF8x WDE2Owo+ID4+Pj4gKwkJYnJlYWs7Cj4gPj4+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVY4XzFY MjQ6Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1lVVjhfMVgyNDsK PiA+Pj4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfVVlWWThfMVgxNjsKPiA+ Pj4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7Cj4gPj4+ PiArCQlicmVhazsKPiA+Pj4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1VZVlk4XzFYMTY6Cj4gPj4+ PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1VZVlk4XzFYMTY7Cj4gPj4+PiAr CQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1lVVjhfMVgyNDsKPiA+Pj4+ICsJCWlu cHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7Cj4gPj4+PiArCQlicmVh azsKPiA+Pj4+ICsKPiA+Pj4+ICsJLyogMTBiaXQgKi8KPiA+Pj4+ICsJY2FzZSBNRURJQV9CVVNf Rk1UX1JHQjEwMTAxMF8xWDMwOgo+ID4+Pj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVT X0ZNVF9SR0IxMDEwMTBfMVgzMDsKPiA+Pj4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JV U19GTVRfWVVWMTBfMVgzMDsKPiA+Pj4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19G TVRfVVlWWTEwXzFYMjA7Cj4gPj4+PiArCQlicmVhazsKPiA+Pj4+ICsJY2FzZSBNRURJQV9CVVNf Rk1UX1lVVjEwXzFYMzA6Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1U X1lVVjEwXzFYMzA7Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1VZ VlkxMF8xWDIwOwo+ID4+Pj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9SR0Ix MDEwMTBfMVgzMDsKPiA+Pj4+ICsJCWJyZWFrOwo+ID4+Pj4gKwljYXNlIE1FRElBX0JVU19GTVRf VVlWWTEwXzFYMjA6Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1VZ VlkxMF8xWDIwOwo+ID4+Pj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9ZVVYx MF8xWDMwOwo+ID4+Pj4gKwkJaW5wdXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9SR0IxMDEw MTBfMVgzMDsKPiA+Pj4+ICsJCWJyZWFrOwo+ID4+Pj4gKwo+ID4+Pj4gKwkvKiAxMmJpdCAqLwo+ ID4+Pj4gKwljYXNlIE1FRElBX0JVU19GTVRfUkdCMTIxMjEyXzFYMzY6Cj4gPj4+PiArCQlpbnB1 dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1JHQjEyMTIxMl8xWDM2Owo+ID4+Pj4gKwkJaW5w dXRfZm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9ZVVYxMl8xWDM2Owo+ID4+Pj4gKwkJaW5wdXRf Zm10c1tpKytdID0gTUVESUFfQlVTX0ZNVF9VWVZZMTJfMVgyNDsKPiA+Pj4+ICsJCWJyZWFrOwo+ ID4+Pj4gKwljYXNlIE1FRElBX0JVU19GTVRfWVVWMTJfMVgzNjoKPiA+Pj4+ICsJCWlucHV0X2Zt dHNbaSsrXSA9IE1FRElBX0JVU19GTVRfWVVWMTJfMVgzNjsKPiA+Pj4+ICsJCWlucHV0X2ZtdHNb aSsrXSA9IE1FRElBX0JVU19GTVRfVVlWWTEyXzFYMjQ7Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2kr K10gPSBNRURJQV9CVVNfRk1UX1JHQjEyMTIxMl8xWDM2Owo+ID4+Pj4gKwkJYnJlYWs7Cj4gPj4+ PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9VWVZZMTJfMVgyNDoKPiA+Pj4+ICsJCWlucHV0X2ZtdHNb aSsrXSA9IE1FRElBX0JVU19GTVRfVVlWWTEyXzFYMjQ7Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2kr K10gPSBNRURJQV9CVVNfRk1UX1lVVjEyXzFYMzY7Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2krK10g PSBNRURJQV9CVVNfRk1UX1JHQjEyMTIxMl8xWDM2Owo+ID4+Pj4gKwkJYnJlYWs7Cj4gPj4+PiAr Cj4gPj4+PiArCS8qIDE2Yml0ICovCj4gPj4+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxNjE2 MTZfMVg0ODoKPiA+Pj4+ICsJCWlucHV0X2ZtdHNbaSsrXSA9IE1FRElBX0JVU19GTVRfUkdCMTYx NjE2XzFYNDg7Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1lVVjE2 XzFYNDg7Cj4gPj4+PiArCQlicmVhazsKPiA+Pj4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjE2 XzFYNDg6Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1lVVjE2XzFY NDg7Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2krK10gPSBNRURJQV9CVVNfRk1UX1JHQjE2MTYxNl8x WDQ4Owo+ID4+Pj4gKwkJYnJlYWs7Cj4gPj4+PiArCj4gPj4+PiArCS8qIDQyMCAqLwo+ID4+Pj4g KwljYXNlIE1FRElBX0JVU19GTVRfVVlZVllZOF8wXzVYMjQ6Cj4gPj4+PiArCWNhc2UgTUVESUFf QlVTX0ZNVF9VWVlWWVkxMF8wXzVYMzA6Cj4gPj4+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9VWVlW WVkxMl8wXzVYMzY6Cj4gPj4+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9VWVlWWVkxNl8wXzVYNDg6 Cj4gPj4+PiArCQlpbnB1dF9mbXRzW2krK10gPSBvdXRwdXRfZm10Owo+ID4+Pj4gKwkJYnJlYWs7 Cj4gPj4+PiArCX0KPiA+Pj4+ICsKPiA+Pj4+ICsJKm51bV9pbnB1dF9mbXRzID0gaTsKPiA+Pj4+ ICsKPiA+Pj4+ICsJaWYgKCpudW1faW5wdXRfZm10cyA9PSAwKSB7Cj4gPj4+PiArCQlrZnJlZShp bnB1dF9mbXRzKTsKPiA+Pj4+ICsJCWlucHV0X2ZtdHMgPSBOVUxMOwo+ID4+Pj4gKwl9Cj4gPj4+ PiArCj4gPj4+PiArCXJldHVybiBpbnB1dF9mbXRzOwo+ID4+Pj4gK30KPiA+Pj4+ICsKPiA+Pj4+ ICtzdGF0aWMgaW50IGR3X2hkbWlfYnJpZGdlX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlLAo+ID4+Pj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUKPiA+ Pj4gCj4gPj4+ICpicmlkZ2Vfc3RhdGUsCj4gPj4+IAo+ID4+Pj4gKwkJCQkgICAgICAgc3RydWN0 IGRybV9jcnRjX3N0YXRlCj4gPj4+IAo+ID4+PiAqY3J0Y19zdGF0ZSwKPiA+Pj4gCj4gPj4+PiAr CQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZQo+ID4+PiAKPiA+Pj4gKmNvbm5f c3RhdGUpCj4gPj4+IAo+ID4+Pj4gK3sKPiA+Pj4+ICsJc3RydWN0IGR3X2hkbWkgKmhkbWkgPSBi cmlkZ2UtPmRyaXZlcl9wcml2YXRlOwo+ID4+Pj4gKwo+ID4+Pj4gKwlkZXZfZGJnKGhkbWktPmRl diwgInNlbGVjdGVkIG91dHB1dCBmb3JtYXQgJXhcbiIsCj4gPj4+PiArCQkJYnJpZGdlX3N0YXRl LT5vdXRwdXRfYnVzX2NmZy5mb3JtYXQpOwo+ID4+Pj4gKwo+ID4+Pj4gKwloZG1pLT5oZG1pX2Rh dGEuZW5jX291dF9idXNfZm9ybWF0ID0KPiA+Pj4+ICsJCQlicmlkZ2Vfc3RhdGUtPm91dHB1dF9i dXNfY2ZnLmZvcm1hdDsKPiA+Pj4+ICsKPiA+Pj4+ICsJZGV2X2RiZyhoZG1pLT5kZXYsICJzZWxl Y3RlZCBpbnB1dCBmb3JtYXQgJXhcbiIsCj4gPj4+PiArCQkJYnJpZGdlX3N0YXRlLT5pbnB1dF9i dXNfY2ZnLmZvcm1hdCk7Cj4gPj4+PiArCj4gPj4+PiArCWhkbWktPmhkbWlfZGF0YS5lbmNfaW5f YnVzX2Zvcm1hdCA9Cj4gPj4+PiArCQkJYnJpZGdlX3N0YXRlLT5pbnB1dF9idXNfY2ZnLmZvcm1h dDsKPiA+Pj4+ICsKPiA+Pj4+ICsJcmV0dXJuIDA7Cj4gPj4+PiArfQo+ID4+Pj4gKwo+ID4+Pj4g Cj4gPj4+PiAgc3RhdGljIGludCBkd19oZG1pX2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSkKPiA+Pj4+ICB7Cj4gPj4+PiAgCj4gPj4+PiAgCXN0cnVjdCBkd19oZG1pICpo ZG1pID0gYnJpZGdlLT5kcml2ZXJfcHJpdmF0ZTsKPiA+Pj4+IAo+ID4+Pj4gQEAgLTI0OTksNiAr Mjc1OSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcwo+ID4+Pj4gZHdf aGRtaV9icmlkZ2VfZnVuY3MgPSB7IC5hdG9taWNfcmVzZXQgPQo+ID4+Pj4gZHJtX2F0b21pY19o ZWxwZXJfYnJpZGdlX3Jlc2V0LAo+ID4+Pj4gCj4gPj4+PiAgCS5hdHRhY2ggPSBkd19oZG1pX2Jy aWRnZV9hdHRhY2gsCj4gPj4+PiAgCS5kZXRhY2ggPSBkd19oZG1pX2JyaWRnZV9kZXRhY2gsCj4g Pj4+PiAKPiA+Pj4+ICsJLmF0b21pY19jaGVjayA9IGR3X2hkbWlfYnJpZGdlX2F0b21pY19jaGVj aywKPiA+Pj4+ICsJLmF0b21pY19nZXRfb3V0cHV0X2J1c19mbXRzID0KPiA+Pj4gCj4gPj4+IGR3 X2hkbWlfYnJpZGdlX2F0b21pY19nZXRfb3V0cHV0X2J1c19mbXRzLAo+ID4+PiAKPiA+Pj4+ICsJ LmF0b21pY19nZXRfaW5wdXRfYnVzX2ZtdHMgPQo+ID4+PiAKPiA+Pj4gZHdfaGRtaV9icmlkZ2Vf YXRvbWljX2dldF9pbnB1dF9idXNfZm10cywKPiA+Pj4gCj4gPj4+PiAgCS5lbmFibGUgPSBkd19o ZG1pX2JyaWRnZV9lbmFibGUsCj4gPj4+PiAgCS5kaXNhYmxlID0gZHdfaGRtaV9icmlkZ2VfZGlz YWJsZSwKPiA+Pj4+ICAJLm1vZGVfc2V0ID0gZHdfaGRtaV9icmlkZ2VfbW9kZV9zZXQsCj4gPj4+ PiAKPiA+Pj4+IEBAIC0yOTYzLDYgKzMyMjYsNyBAQCBfX2R3X2hkbWlfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwKPiA+Pj4+IAo+ID4+Pj4gIAloZG1pLT5icmlkZ2UuZHJpdmVy X3ByaXZhdGUgPSBoZG1pOwo+ID4+Pj4gIAloZG1pLT5icmlkZ2UuZnVuY3MgPSAmZHdfaGRtaV9i cmlkZ2VfZnVuY3M7Cj4gPj4+PiAKPiA+Pj4+ICsKPiA+Pj4+IAo+ID4+Pj4gICNpZmRlZiBDT05G SUdfT0YKPiA+Pj4+ICAKPiA+Pj4+ICAJaGRtaS0+YnJpZGdlLm9mX25vZGUgPSBwZGV2LT5kZXYu b2Zfbm9kZTsKPiA+Pj4+ICAKPiA+Pj4+ICAjZW5kaWYKCgoKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hbWxvZ2ljIG1haWxpbmcgbGlzdAps aW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hbWxvZ2ljCg==