From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 784DB41013 for ; Sun, 2 Jan 2022 18:56:06 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E319D68A867; Sun, 2 Jan 2022 20:56:04 +0200 (EET) Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1FC7168A6B6 for ; Sun, 2 Jan 2022 20:55:58 +0200 (EET) Received: by mail-yb1-f178.google.com with SMTP id g80so49910195ybf.0 for ; Sun, 02 Jan 2022 10:55:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=dgmZS+ZV4G+O8wvuyPEXv/7TX/IYXBI5bxmT5AkTs+0=; b=abqv5D5aq9+pCa22HQ8NPZyRD/Gub4SRI1LnRPJCu9WpcewAG35euaaTnO9A/nsM0C pn/MxCXU6dtHibfJ+2kequ34OzPT+i/U1jPQ0xVIQt16puI84/y5jDUAuxNE8AFGR31d MYelaQF3wfOKRivi3yA48c+9mzwOGqj3lLfonMnyf2GoW7mGeCzlnRZrkuZ5GGm3FE0P 4B8LsRlmw8P5noqsmB0qLmfEmakPNpqbJboaDHztM86rjbtANZIkOaq34Q1aVq1T+rEf n2CsCJaNMh+qBOK4MJR5LDUxwXGBw+qRSY/VY37UKLHE8O4BDGmcH7w+67PXOtyW9nE3 U8Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=dgmZS+ZV4G+O8wvuyPEXv/7TX/IYXBI5bxmT5AkTs+0=; b=BwL5yiBbqML6FRsG5xgtZLGkx0erPxkbdhLeebpJRzyIW94YylN4m77jBlzg/lITVU iDpVXrFdBOXaK/gGG/SxEPXD6Zijld8vbTRxGmUR6+u2Sn6xPfjULOTx5mPBPrII0kl+ Fc2bS/xnC04+PorfGUUD4tWSYRZOTqXquwSwTt9pAQGoJckbxCNI0FGQjH6YABpjdUiE E/7/FIv9KWDpLbqjt1lO6pioZ28f6yCJ91pFiFHYdtcK3/PRBkuXrMafdVx2BkdBlrWR mMLNeSfe8dzkAWTPMPFSkQsHj2Gg9GrjGjyv9U1zPaV2JJDGAYUtQTlxM6PFPR9MZWbW Ld3Q== X-Gm-Message-State: AOAM531krV+A/7M4BpPVaz837N/6J+J/iD8bLO49CntO60kbvpRWczZL W8aizV0FIXJn0NDvWJKHVamQMWQ0bmUDjWYHswTihg8U X-Google-Smtp-Source: ABdhPJxUDM6UdjyZ54m07BYIkkQmcsVwbVRA4BEfzl1aZk3CBRlGd9YNi7d/TUBG5namGOdbD/4koVzr+bowBEVVWu8= X-Received: by 2002:a5b:281:: with SMTP id x1mr7352056ybl.41.1641149756286; Sun, 02 Jan 2022 10:55:56 -0800 (PST) MIME-Version: 1.0 References: <20211222151447.57681-1-ffmpeg@haasn.xyz> <20211222151447.57681-4-ffmpeg@haasn.xyz> <9f82e52a-f19d-a8dc-795a-a7845e184d64@gmail.com> In-Reply-To: <9f82e52a-f19d-a8dc-795a-a7845e184d64@gmail.com> From: Hendrik Leppkes Date: Sun, 2 Jan 2022 19:55:46 +0100 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v9 4/6] lavc: Implement Dolby Vision RPU parsing X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: SmFtZXMgQWxtZXIgPGphbXJpYWxAZ21haWwuY29tPiBzY2hyaWViIGFtIFNvLiwgMi4gSmFuLiAy MDIyLCAxMzo0NjoKCj4gT24gMS8yLzIwMjIgMToxOCBBTSwgQW5kcmVhcyBSaGVpbmhhcmR0IHdy b3RlOgo+ID4gTmlrbGFzIEhhYXM6Cj4gPj4gRnJvbTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5k ZXY+Cj4gPj4KPiA+PiBCYXNlZCBvbiBhIG1peHR1cmUgb2YgZ3Vlc3N3b3JrLCBwYXJ0aWFsIGRv Y3VtZW50YXRpb24gaW4gcGF0ZW50cywgYW5kCj4gPj4gcmV2ZXJzZSBlbmdpbmVlcmluZyBvZiBy ZWFsLXdvcmxkIHNhbXBsZXMuIENvbmZpcm1lZCB3b3JraW5nIGZvciBhbGwgdGhlCj4gPj4gc2Ft cGxlcyBJJ3ZlIHRocm93biBhdCBpdC4KPiA+Pgo+ID4+IENvbnRhaW5zIHNvbWUgYW5ub3lpbmcg bWFjaGluZXJ5IHRvIHBlcnNpc3QgdGhlc2UgdmFsdWVzIGluIGJldHdlZW4KPiA+PiBmcmFtZXMs IHdoaWNoIGlzIG5lZWRlZCBpbiB0aGVvcnkgZXZlbiB0aG91Z2ggSSd2ZSBuZXZlciBhY3R1YWxs eSBzZWVuIGEKPiA+PiBzYW1wbGUgdGhhdCByZWxpZXMgb24gaXQgaW4gcHJhY3RpY2UuIE1heSBv ciBtYXkgbm90IHdvcmsuCj4gPj4KPiA+PiBTaW5jZSB0aGUgZGlzdGluY3Rpb24gbWF0dGVycyBn cmVhdGx5IGZvciBwYXJzaW5nIHRoZSBjb2xvciBtYXRyaXgKPiA+PiB2YWx1ZXMsIHRoaXMgaW5j bHVkZXMgYSBzbWFsbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ3Vlc3MgdGhlIHJpZ2h0IHByb2ZpbGUK PiA+PiBmcm9tIHRoZSBSUFUgaXRzZWxmIGluIGNhc2UgdGhlIHVzZXIgaGFzIGZvcmdvdHRlbiB0 byBmb3J3YXJkIHRoZSBkb3ZpCj4gPj4gY29uZmlndXJhdGlvbiByZWNvcmQgdG8gdGhlIGRlY29k ZXIuIChXaGljaCBpbiBwcmFjdGljZSwgb25seSBmZm1wZWcuYwo+ID4+IGFuZCBmZnBsYXkgZG8u LikKPiA+Pgo+ID4+IE5vdGFibGUgb21pc3Npb25zIC8gZGV2aWF0aW9uczoKPiA+PiAtIENSQzMy IHZlcmlmaWNhdGlvbi4gVGhpcyBpcyBiYXNlZCBvbiB0aGUgTVBFRzIgQ1JDMzIgdHlwZSwgd2hp Y2ggZG9lcwo+ID4+ICAgIG5vdCBzZWVtIHRvIGJlIGltcGxlbWVudGVkIGluIGxhdnUuIChBbmQg SSBkb24ndCBjYXJlIGVub3VnaCB0byBkbwo+IHNvKQo+ID4+IC0gTGluZWFyIGludGVycG9sYXRp b24gc3VwcG9ydC4gTm90aGluZyBkb2N1bWVudHMgdGhpcyAoYmV5b25kIGl0cwo+ID4+ICAgIGV4 aXN0ZW5jZSkgYW5kIG5vIHNhbXBsZXMgdXNlIGl0LCBzbyBpbXBvc3NpYmxlIHRvIGltcGxlbWVu dC4KPiA+PiAtIEFsbCBvZiB0aGUgZXh0ZW5zaW9uIG1ldGFkYXRhIGJsb2NrcywgYnV0IHRoZXNl IGNvbnRhaW4gdmFsdWVzIHRoYXQKPiA+PiAgICBzZWVtIGxhcmdlbHkgY29uZ3J1ZW50IHdpdGgg U1QyMDk0LCBIRFIxMCwgb3Igb3RoZXIgZXhpc3RpbmcgZm9ybXMgb2YKPiA+PiAgICBzaWRlIGRh dGEsIHNvIEkgd2lsbCBkZWZlciBwYXJzaW5nL2F0dGFjaGluZyB0aGVtIHRvIGEgZnV0dXJlIGNv bW1pdC4KPiA+PiAtIFRoZSBwYXRlbnQgZGVzY3JpYmVzIGEgbWVjaGFuaXNtIGZvciBwcmVkaWN0 aW5nIGNvZWZmaWNpZW50cyBmcm9tCj4gPj4gICAgcHJldmlvdXMgUlBVcywgYnV0IHRoZSBiaXQg Zm9yIHRoZSBmbGFnIHdoZXRoZXIgdG8gdXNlIHRoZQo+ID4+ICAgIHByZWRpY3Rpb24gZGVsdGFz IG9yIHNpZ25hbCBlbnRpcmVseSBuZXcgY29lZmZpY2llbnRzIGRvZXMgbm90IHNlZW0KPiB0bwo+ ID4+ICAgIGJlIHByZXNlbnQgaW4gYWN0dWFsIFJQVXMsIHNvIHdlIGlnbm9yZSB0aGlzIHN1YnN5 c3RlbSBlbnRpcmVseS4KPiA+PiAtIEluIHRoZSBwYXRlbnQncyBzcGVjLCB0aGUgTkxRIHN1YnN5 c3RlbSBhbHNvIGxvb3BzIG92ZXIKPiA+PiAgICBudW1fbmxxX3Bpdm90cywgYnV0IGV2ZW4gaW4g dGhlIHBhdGVudCB0aGUgbnVtYmVyIGlzIGhhcmQtY29kZWQgdG8KPiBvbmUKPiA+PiAgICBpdGVy YXRpb24gcmF0aGVyIHRoYW4gc2lnbmFsbGVkLiBTbyB3ZSBvbmx5IHN0b3JlIG9uZSBzZXQgb2Yg Y29lZnMuCj4gPj4KPiA+PiBIZWF2aWx5IGluZmx1ZW5jZWQgYnkgaHR0cHM6Ly9naXRodWIuY29t L3F1aWV0dm9pZC9kb3ZpX3Rvb2wKPiA+PiBEb2N1bWVudGF0aW9uIGRyYXduIGZyb20gVVMgUGF0 ZW50IDEwLDcwMSwzOTkgQjIgYW5kIEVUU0kgR1MgQ0NNIDAwMQo+ID4+Cj4gPj4gU2lnbmVkLW9m Zi1ieTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+Cj4gPj4gLS0tCj4gPj4gICBjb25maWd1 cmUgICAgICAgICAgICAgfCAgIDIgKwo+ID4+ICAgbGliYXZjb2RlYy9NYWtlZmlsZSAgIHwgICAx ICsKPiA+PiAgIGxpYmF2Y29kZWMvZG92aV9ycHUuYyB8IDQzMCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiA+PiAgIGxpYmF2Y29kZWMvZG92aV9ycHUuaCB8ICA3 MSArKysrKysrCj4gPj4gICA0IGZpbGVzIGNoYW5nZWQsIDUwNCBpbnNlcnRpb25zKCspCj4gPj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9kb3ZpX3JwdS5jCj4gPj4gICBjcmVhdGUg bW9kZSAxMDA2NDQgbGliYXZjb2RlYy9kb3ZpX3JwdS5oCj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEv Y29uZmlndXJlIGIvY29uZmlndXJlCj4gPj4gaW5kZXggMGNjZDNiZGExMS4uNjg2NThhODQ3ZiAx MDA3NTUKPiA+PiAtLS0gYS9jb25maWd1cmUKPiA+PiArKysgYi9jb25maWd1cmUKPiA+PiBAQCAt MjQzNCw2ICsyNDM0LDcgQEAgQ09ORklHX0VYVFJBPSIKPiA+PiAgICAgICBjYnNfdnA5Cj4gPj4g ICAgICAgZGlyYWNfcGFyc2UKPiA+PiAgICAgICBkbm4KPiA+PiArICAgIGRvdmlfcnB1Cj4gPj4g ICAgICAgZHZwcm9maWxlCj4gPj4gICAgICAgZXhpZgo+ID4+ICAgICAgIGZhYW5kY3QKPiA+PiBA QCAtMjcwNiw2ICsyNzA3LDcgQEAgY2JzX21wZWcyX3NlbGVjdD0iY2JzIgo+ID4+ICAgY2JzX3Zw OV9zZWxlY3Q9ImNicyIKPiA+PiAgIGRjdF9zZWxlY3Q9InJkZnQiCj4gPj4gICBkaXJhY19wYXJz ZV9zZWxlY3Q9ImdvbG9tYiIKPiA+PiArZG92aV9ycHVfc2VsZWN0PSJnb2xvbWIiCj4gPj4gICBk bm5fc3VnZ2VzdD0ibGlidGVuc29yZmxvdyBsaWJvcGVudmlubyIKPiA+PiAgIGRubl9kZXBzPSJh dmZvcm1hdCBzd3NjYWxlIgo+ID4+ICAgZXJyb3JfcmVzaWxpZW5jZV9zZWxlY3Q9Im1lX2NtcCIK PiA+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZp bGUKPiA+PiBpbmRleCBmYjkwZWNlYTg0Li43MzY0YzdhOTFmIDEwMDY0NAo+ID4+IC0tLSBhL2xp YmF2Y29kZWMvTWFrZWZpbGUKPiA+PiArKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4gPj4gQEAg LTc3LDYgKzc3LDcgQEAgT0JKUy0kKENPTkZJR19DQlNfTVBFRzIpICAgICAgICAgICAgICAgKz0g Y2JzX21wZWcyLm8KPiA+PiAgIE9CSlMtJChDT05GSUdfQ0JTX1ZQOSkgICAgICAgICAgICAgICAg ICs9IGNic192cDkubwo+ID4+ICAgT0JKUy0kKENPTkZJR19DUllTVEFMSEQpICAgICAgICAgICAg ICAgKz0gY3J5c3RhbGhkLm8KPiA+PiAgIE9CSlMtJChDT05GSUdfRENUKSAgICAgICAgICAgICAg ICAgICAgICs9IGRjdC5vIGRjdDMyX2ZpeGVkLm8KPiBkY3QzMl9mbG9hdC5vCj4gPj4gK09CSlMt JChDT05GSUdfRE9WSV9SUFUpICAgICAgICAgICAgICAgICs9IGRvdmlfcnB1Lm8KPiA+PiAgIE9C SlMtJChDT05GSUdfRVJST1JfUkVTSUxJRU5DRSkgICAgICAgICs9IGVycm9yX3Jlc2lsaWVuY2Uu bwo+ID4+ICAgT0JKUy0kKENPTkZJR19FWElGKSAgICAgICAgICAgICAgICAgICAgKz0gZXhpZi5v IHRpZmZfY29tbW9uLm8KPiA+PiAgIE9CSlMtJChDT05GSUdfRkFBTkRDVCkgICAgICAgICAgICAg ICAgICs9IGZhYW5kY3Qubwo+ID4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2RvdmlfcnB1LmMg Yi9saWJhdmNvZGVjL2RvdmlfcnB1LmMKPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4+IGlu ZGV4IDAwMDAwMDAwMDAuLmZjMmUxZmIyYTEKPiA+PiAtLS0gL2Rldi9udWxsCj4gPj4gKysrIGIv bGliYXZjb2RlYy9kb3ZpX3JwdS5jCj4gPj4gQEAgLTAsMCArMSw0MzAgQEAKPiA+PiArLyoKPiA+ PiArICogRG9sYnkgVmlzaW9uIFJQVSBkZWNvZGVyCj4gPj4gKyAqCj4gPj4gKyAqIENvcHlyaWdo dCAoQykgMjAyMSBKYW4gRWtzdHLDtm0KPiA+PiArICogQ29weXJpZ2h0IChDKSAyMDIxIE5pa2xh cyBIYWFzCj4gPj4gKyAqCj4gPj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiA+ PiArICoKPiA+PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgo+ID4+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gPj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ID4+ICsgKiB2ZXJzaW9uIDIu MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K PiA+PiArICoKPiA+PiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCj4gPj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gPj4gKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gPj4g KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gPj4g KyAqCj4gPj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+PiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ID4+ICsgKiBGb3VuZGF0aW9uLCBJ bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAt MTMwMSBVU0EKPiA+PiArICovCj4gPj4gKwo+ID4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2J1ZmZl ci5oIgo+ID4+ICsKPiA+PiArI2luY2x1ZGUgImRvdmlfcnB1LmgiCj4gPj4gKyNpbmNsdWRlICJn b2xvbWIuaCIKPiA+PiArI2luY2x1ZGUgImdldF9iaXRzLmgiCj4gPj4gKwo+ID4+ICtlbnVtIHsK PiA+PiArICAgIFJQVV9DT0VGRl9GSVhFRCA9IDAsCj4gPj4gKyAgICBSUFVfQ09FRkZfRkxPQVQg PSAxLAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArLyoqCj4gPj4gKyAqIFByaXZhdGUgY29udGVudHMg b2YgdmRyX3JlZi4KPiA+PiArICovCj4gPj4gK3R5cGVkZWYgc3RydWN0IERPVklWZHJSZWYgewo+ ID4+ICsgICAgQVZET1ZJRGF0YU1hcHBpbmcgbWFwcGluZzsKPiA+PiArICAgIEFWRE9WSUNvbG9y TWV0YWRhdGEgY29sb3I7Cj4gPj4gK30gRE9WSVZkclJlZjsKPiA+PiArCj4gPj4gK3ZvaWQgZmZf ZG92aV9jdHhfdW5yZWYoRE9WSUNvbnRleHQgKnMpCj4gPj4gK3sKPiA+PiArICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMocy0+dmRyX3JlZik7IGkrKykKPiA+PiArICAgICAg ICBhdl9idWZmZXJfdW5yZWYoJnMtPnZkcl9yZWZbaV0pOwo+ID4+ICsKPiA+PiArICAgIC8qIFBy ZXNlcnZlIHRoZSB1c2VyLXByb3ZpZGVkIGZpZWxkcyBleHBsaWNpdGx5LCByZXNldCBldmVyeXRo aW5nCj4gZWxzZSAqLwo+ID4+ICsgICAgKnMgPSAoRE9WSUNvbnRleHQpIHsKPiA+PiArICAgICAg ICAubG9nY3R4ID0gcy0+bG9nY3R4LAo+ID4+ICsgICAgICAgIC5jb25maWcgPSBzLT5jb25maWcs Cj4gPj4gKyAgICB9Owo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtpbnQgZmZfZG92aV9jdHhfcmVwbGFj ZShET1ZJQ29udGV4dCAqcywgY29uc3QgRE9WSUNvbnRleHQgKnMwKQo+ID4+ICt7Cj4gPj4gKyAg ICBpbnQgcmV0Owo+ID4+ICsgICAgcy0+bG9nY3R4ID0gczAtPmxvZ2N0eDsKPiA+PiArICAgIHMt PmNvbmZpZyA9IHMwLT5jb25maWc7Cj4gPj4gKyAgICBzLT5tYXBwaW5nID0gczAtPm1hcHBpbmc7 Cj4gPj4gKyAgICBzLT5jb2xvciA9IHMwLT5jb2xvcjsKPiA+PiArICAgIGZvciAoaW50IGkgPSAw OyBpIDwgRE9WSV9NQVhfRE1fSUQ7IGkrKykgewo+ID4+ICsgICAgICAgIGlmICgocmV0ID0gYXZf YnVmZmVyX3JlcGxhY2UoJnMtPnZkcl9yZWZbaV0sIHMwLT52ZHJfcmVmW2ldKSkKPiA8IDApCj4g Pj4gKyAgICAgICAgICAgIGdvdG8gZmFpbDsKPiA+PiArICAgIH0KPiA+PiArCj4gPj4gKyAgICBy ZXR1cm4gMDsKPiA+PiArCj4gPj4gK2ZhaWw6Cj4gPj4gKyAgICBmZl9kb3ZpX2N0eF91bnJlZihz KTsKPiA+PiArICAgIHJldHVybiByZXQ7Cj4gPj4gK30KPiA+PiArCj4gPj4gK2ludCBmZl9kb3Zp X2F0dGFjaF9zaWRlX2RhdGEoRE9WSUNvbnRleHQgKnMsIEFWRnJhbWUgKmZyYW1lKQo+ID4+ICt7 Cj4gPj4gKyAgICBBVkZyYW1lU2lkZURhdGEgKnNkOwo+ID4+ICsgICAgQVZCdWZmZXJSZWYgKmJ1 ZjsKPiA+PiArICAgIEFWRE9WSU1ldGFkYXRhICpkb3ZpOwo+ID4+ICsgICAgc2l6ZV90IGRvdmlf c2l6ZTsKPiA+PiArCj4gPj4gKyAgICBpZiAoIXMtPm1hcHBpbmcgfHwgIXMtPmNvbG9yKQo+ID4+ ICsgICAgICAgIHJldHVybiAwOyAvKiBpbmNvbXBsZXRlIGRvdmkgbWV0YWRhdGEgKi8KPiA+PiAr Cj4gPj4gKyAgICBkb3ZpID0gYXZfZG92aV9tZXRhZGF0YV9hbGxvYygmZG92aV9zaXplKTsKPiA+ PiArICAgIGlmICghZG92aSkKPiA+PiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ ID4+ICsKPiA+PiArICAgIGJ1ZiA9IGF2X2J1ZmZlcl9jcmVhdGUoKHVpbnQ4X3QgKikgZG92aSwg ZG92aV9zaXplLCBOVUxMLCBOVUxMLCAwKTsKPiA+PiArICAgIGlmICghYnVmKSB7Cj4gPj4gKyAg ICAgICAgYXZfZnJlZShkb3ZpKTsKPiA+PiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0p Owo+ID4+ICsgICAgfQo+ID4+ICsKPiA+PiArICAgIHNkID0gYXZfZnJhbWVfbmV3X3NpZGVfZGF0 YV9mcm9tX2J1ZihmcmFtZSwKPiBBVl9GUkFNRV9EQVRBX0RPVklfTUVUQURBVEEsIGJ1Zik7Cj4g Pj4gKyAgICBpZiAoIXNkKSB7Cj4gPj4gKyAgICAgICAgYXZfYnVmZmVyX3VucmVmKCZidWYpOwo+ ID4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gPj4gKyAgICB9Cj4gPj4gKwo+ ID4+ICsgICAgbWVtY3B5KGF2X2RvdmlfZ2V0X2hlYWRlcihkb3ZpKSwgJnMtPmhlYWRlciwgc2l6 ZW9mKHMtPmhlYWRlcikpOwo+ID4+ICsgICAgbWVtY3B5KGF2X2RvdmlfZ2V0X21hcHBpbmcoZG92 aSksIHMtPm1hcHBpbmcsIHNpemVvZigqcy0+bWFwcGluZykpOwo+ID4+ICsgICAgbWVtY3B5KGF2 X2RvdmlfZ2V0X2NvbG9yKGRvdmkpLCBzLT5jb2xvciwgc2l6ZW9mKCpzLT5jb2xvcikpOwo+ID4K PiA+IFRoZXNlIGFyZSBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBkdWUgdG8gdHJhaWxpbmcgcGFk ZGluZyBpbiB0aGUKPiA+IHN0cnVjdHVyZXMuIFRoaXMgdHJhaWxpbmcgcGFkZGluZyBtaWdodCBi ZWNvbWUgdmFsaWQgZmllbGRzIGluIG5ld2VyCj4gPiB2ZXJzaW9ucyBvZiB0aGlzIHN0cnVjdHVy ZS4gRS5nLiBhdl9kb3ZpX21ldGFkYXRhX2FsbG9jKCkgbWlnaHQKPiA+IGludGVudGlvbmFsbHkg c2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGVzZSBuZXcgZmllbGRzIHRvIGludmFsaWQKPiA+ IHZhbHVlcy4gWWV0IGxhdmMgKHdpdGggdGhlIG9sZCBzdHJ1Y3R1cmUpIHNlZXMgdGhlbSBhcyBw YWRkaW5nLCBhbGxvd2luZwo+ID4gdGhlIGNvbXBpbGVyIHRvIHRyYXNoIHRoZXNlIHZhbHVlcyBv biBldmVyeSB3cml0ZSB0byB0aGVzZSBzdHJ1Y3R1cmVzLgo+ID4gTW9yZSBsaWtlbHkgdGhvdWdo IGlzIHRoYXQgdGhleSB3aWxsIG5ldmVyIGJlIHRvdWNoZWQgYXQgYWxsIGFuZAo+ID4gdGhlcmVm b3JlIHJldGFpbiB0aGVpciBkZWZhdWx0ICh6ZXJvKSBpbml0aWFsaXphdGlvbi4gV2hpY2ggbWln aHQKPiA+IGNvbmZsaWN0IHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlc2UgZmllbGRzLgo+ ID4gVGhpcyBjYW4gYmUgZml4ZWQgYnkgb25seSBjb3B5aW5nIGV2ZXJ5dGhpbmcgdXAgdG8gYW5k IGluY2x1ZGluZyB0aGUKPiA+IGxhc3QgZmllbGQgdGhhdCB3ZSBrbm93IG9mIGZvciBldmVyeSBv ZiB0aGVzZSBzdHJ1Y3R1cmVzLiBUaGlzIHdpbGwKPiA+IHVuZm9ydHVuYXRlbHkgaW5jcmVhc2Ug dGhlIG1haW50YWluZW5jZSBidXJkZW4gYSBiaXQuCgoKPiBJIG1lYW4sIGJvdGggc2l6ZW9mKEFW RE9WSVJwdURhdGFIZWFkZXIpIGFuZCBzaXplb2YoQVZET1ZJRGF0YU1hcHBpbmcpCj4gYXJlIGRl ZmluZWQgYXMgbm90IGJlaW5nIHBhcnQgb2YgdGhlIEFCSSAoYnV0Cj4gc2l6ZW9mKEFWRE9WSUNv bG9yTWV0YWRhdGEpIGlzPyBJcyB0aGF0IGludGVuZGVkPyksIHNvIHRoZWlyIHVzYWdlIGluCj4g dGhpcyBwYXRjaCBpcyB3cm9uZyB0byBiZWdpbiB3aXRoLgo+CgpUaGlzIGlzIG5vdCBhY3R1YWxs eSBhIHByb2JsZW0gc2luY2UgaXQgZG9lc24ndCByZWx5IG9uIGEgc3RhYmxlIEFCSSBmb3IKdGhl IHNpemUsIGJ1dCBvbmx5IGtub3dpbmcgaG93IGJpZyB0aGUgc3RydWN0IHdhcyBpdCB3YXMgYnVp bHQgd2l0aCwgYW5kCmZpbGxlZCBpdHNlbGYuIElmIHRoZSBzdHJ1Y3QgZ3Jvd3MgaW4gc2l6ZSBp biBsYXZ1IHRoZW4gdGhlIHJlbWFpbmRlciB3aWxsCmp1c3QgYmUgbGVmdCBhbG9uZSwgc2luY2Ug ZXZlcnkgc3RydWN0IGlzIGEgZGlzdGluY3QgcG9pbnRlciBpbnRvIHRoZQpvdmVyYWxsIGJ1ZmZl ci4KCgo+ID4KPiA+PiArICAgIHJldHVybiAwOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMg aW50IGd1ZXNzX3Byb2ZpbGUoY29uc3QgQVZET1ZJUnB1RGF0YUhlYWRlciAqaGRyKQo+ID4+ICt7 Cj4gPj4gKyAgICBzd2l0Y2ggKGhkci0+dmRyX3JwdV9wcm9maWxlKSB7Cj4gPj4gKyAgICBjYXNl IDA6Cj4gPj4gKyAgICAgICAgaWYgKGhkci0+YmxfdmlkZW9fZnVsbF9yYW5nZV9mbGFnKQo+ID4+ ICsgICAgICAgICAgICByZXR1cm4gNTsKPiA+PiArICAgICAgICBicmVhazsKPiA+PiArICAgIGNh c2UgMToKPiA+PiArICAgICAgICBpZiAoaGRyLT5lbF9zcGF0aWFsX3Jlc2FtcGxpbmdfZmlsdGVy X2ZsYWcgJiYKPiAhaGRyLT5kaXNhYmxlX3Jlc2lkdWFsX2ZsYWcpIHsKPiA+PiArICAgICAgICAg ICAgaWYgKGhkci0+dmRyX2JpdF9kZXB0aCA9PSAxMikgewo+ID4+ICsgICAgICAgICAgICAgICAg cmV0dXJuIDc7Cj4gPj4gKyAgICAgICAgICAgIH0gZWxzZSB7Cj4gPj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gNDsKPiA+PiArICAgICAgICAgICAgfQo+ID4+ICsgICAgICAgIH0gZWxzZSB7Cj4g Pj4gKyAgICAgICAgICAgIHJldHVybiA4Owo+ID4+ICsgICAgICAgIH0KPiA+PiArICAgIH0KPiA+ PiArCj4gPj4gKyAgICByZXR1cm4gMDsgLyogdW5rbm93biAqLwo+ID4+ICt9Cj4gPj4gKwo+ID4+ ICtzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGdldF91ZV9jb2VmKEdldEJpdENvbnRleHQgKmdiLCBj b25zdAo+IEFWRE9WSVJwdURhdGFIZWFkZXIgKmhkcikKPiA+PiArewo+ID4+ICsgICAgdWludDY0 X3QgaXBhcnQ7Cj4gPj4gKyAgICB1bmlvbiB7IHVpbnQzMl90IHUzMjsgZmxvYXQgZjMyOyB9IGZw YXJ0Owo+ID4+ICsKPiA+PiArICAgIHN3aXRjaCAoaGRyLT5jb2VmX2RhdGFfdHlwZSkgewo+ID4+ ICsgICAgY2FzZSBSUFVfQ09FRkZfRklYRUQ6Cj4gPj4gKyAgICAgICAgaXBhcnQgPSBnZXRfdWVf Z29sb21iX2xvbmcoZ2IpOwo+ID4+ICsgICAgICAgIGZwYXJ0LnUzMiA9IGdldF9iaXRzX2xvbmco Z2IsIGhkci0+Y29lZl9sb2cyX2Rlbm9tKTsKPiA+PiArICAgICAgICByZXR1cm4gKGlwYXJ0IDw8 IGhkci0+Y29lZl9sb2cyX2Rlbm9tKSArIGZwYXJ0LnUzMjsKPiA+Cj4gPiBIZXJlIGFuZCBpbiBn ZXRfc2VfY29lZiBiZWxvdyB0aGUgZjMyIG1lbWJlciBvZiB0aGUgdW5pb24gaXMgbm90IHVzZWQK PiA+IHdpdGggUlBVX0NPRUZGX0ZJWEVELCBzbyB1c2luZyB0aGUgdW5pb24gc2VlbXMgdW5uZWNl c3NhcnkuIEl0IGlzIGFsc28KPiA+IHNsaWdodGx5IGNvbmZ1c2luZywgYmVjYXVzZSB1cG9uIHNl ZWluZyB0aGlzIGFuZCBzZWVpbmcgdGhhdCB0aGUgdW5pb24KPiA+IGlzIHVzZWQgd2l0aCBSUFVf Q09FRkZfRklYRUQsIEkgZXhwZWN0IGl0IHRvIGJlIHVzZWQgZm9yIHR5cGUtcHVubmluZy4KPiA+ Cj4gPj4gKwo+ID4+ICsgICAgY2FzZSBSUFVfQ09FRkZfRkxPQVQ6Cj4gPj4gKyAgICAgICAgZnBh cnQudTMyID0gZ2V0X2JpdHNfbG9uZyhnYiwgMzIpOwo+ID4+ICsgICAgICAgIHJldHVybiBmcGFy dC5mMzIgKiAoMSA8PCBoZHItPmNvZWZfbG9nMl9kZW5vbSk7Cj4gPgo+ID4gWW91IGNvdWxkIGp1 c3QgdXNlIGF2X2ludDJmbG9hdCgpIGhlcmUgaW5zdGVhZCBvZiBhZGRpbmcgdGhlIHVuaW9uCj4g eW91cnNlbGYuCj4gPgo+ID4+ICsgICAgfQo+ID4+ICsKPiA+PiArICAgIHJldHVybiAwOyAvKiB1 bnJlYWNoYWJsZSAqLwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgaW5saW5lIGludDY0X3Qg Z2V0X3NlX2NvZWYoR2V0Qml0Q29udGV4dCAqZ2IsIGNvbnN0Cj4gQVZET1ZJUnB1RGF0YUhlYWRl ciAqaGRyKQo+ID4+ICt7Cj4gPj4gKyAgICBpbnQ2NF90IGlwYXJ0Owo+ID4+ICsgICAgdW5pb24g eyB1aW50MzJfdCB1MzI7IGZsb2F0IGYzMjsgfSBmcGFydDsKPiA+PiArCj4gPj4gKyAgICBzd2l0 Y2ggKGhkci0+Y29lZl9kYXRhX3R5cGUpIHsKPiA+PiArICAgIGNhc2UgUlBVX0NPRUZGX0ZJWEVE Ogo+ID4+ICsgICAgICAgIGlwYXJ0ID0gZ2V0X3NlX2dvbG9tYl9sb25nKGdiKTsKPiA+PiArICAg ICAgICBmcGFydC51MzIgPSBnZXRfYml0c19sb25nKGdiLCBoZHItPmNvZWZfbG9nMl9kZW5vbSk7 Cj4gPj4gKyAgICAgICAgcmV0dXJuIChpcGFydCA8PCBoZHItPmNvZWZfbG9nMl9kZW5vbSkgKyBm cGFydC51MzI7Cj4gPj4gKwo+ID4+ICsgICAgY2FzZSBSUFVfQ09FRkZfRkxPQVQ6Cj4gPj4gKyAg ICAgICAgZnBhcnQudTMyID0gZ2V0X2JpdHNfbG9uZyhnYiwgMzIpOwo+ID4+ICsgICAgICAgIHJl dHVybiBmcGFydC5mMzIgKiAoMSA8PCBoZHItPmNvZWZfbG9nMl9kZW5vbSk7Cj4gPj4gKyAgICB9 Cj4gPj4gKwo+ID4+ICsgICAgcmV0dXJuIDA7IC8qIHVucmVhY2hhYmxlICovCj4gPj4gK30KPiA+ PiArCj4gPj4gKyNkZWZpbmUgVkFMSURBVEUoVkFSLCBNSU4sIE1BWCkKPiAgICAgICAgICBcCj4g Pj4gKyAgICBkbyB7Cj4gICAgICAgICAgIFwKPiA+PiArICAgICAgICBpZiAoVkFSIDwgTUlOIHx8 IFZBUiA+IE1BWCkgewo+ICAgICAgICAgIFwKPiA+PiArICAgICAgICAgICAgYXZfbG9nKHMtPmxv Z2N0eCwgQVZfTE9HX0VSUk9SLCAiUlBVIHZhbGlkYXRpb24gZmFpbGVkOiAiCj4gICAgICAgICAg XAo+ID4+ICsgICAgICAgICAgICAgICAgICAgI01JTiIgPD0gIiNWQVIiID0gJWQgPD0gIiNNQVgi XG4iLCAoaW50KSBWQVIpOwo+ICAgICAgICAgIFwKPiA+PiArICAgICAgICAgICAgZ290byBmYWls Owo+ICAgICAgICAgICBcCj4gPj4gKyAgICAgICAgfQo+ICAgICAgICAgIFwKPiA+PiArICAgIH0g d2hpbGUgKDApCj4gPj4gKwo+ID4+ICtpbnQgZmZfZG92aV9ycHVfcGFyc2UoRE9WSUNvbnRleHQg KnMsIGNvbnN0IHVpbnQ4X3QgKnJwdSwgc2l6ZV90Cj4gcnB1X3NpemUpCj4gPj4gK3sKPiA+PiAr ICAgIEFWRE9WSVJwdURhdGFIZWFkZXIgKmhkciA9ICZzLT5oZWFkZXI7Cj4gPj4gKyAgICBHZXRC aXRDb250ZXh0ICpnYiA9ICYoR2V0Qml0Q29udGV4dCl7MH07Cj4gPj4gKyAgICBET1ZJVmRyUmVm ICp2ZHI7Cj4gPj4gKyAgICBpbnQgcmV0Owo+ID4+ICsKPiA+PiArICAgIHVpbnQ4X3QgbmFsX3By ZWZpeDsKPiA+PiArICAgIHVpbnQ4X3QgcnB1X3R5cGU7Cj4gPj4gKyAgICB1aW50OF90IHZkcl9z ZXFfaW5mb19wcmVzZW50Owo+ID4+ICsgICAgdWludDhfdCB2ZHJfZG1fbWV0YWRhdGFfcHJlc2Vu dDsKPiA+PiArICAgIHVpbnQ4X3QgdXNlX3ByZXZfdmRyX3JwdTsKPiA+PiArICAgIHVpbnQ4X3Qg dXNlX25scTsKPiA+PiArICAgIHVpbnQ4X3QgcHJvZmlsZTsKPiA+PiArICAgIGlmICgocmV0ID0g aW5pdF9nZXRfYml0czgoZ2IsIHJwdSwgcnB1X3NpemUpKSA8IDApCj4gPgo+ID4gTm90aWNlIHRo YXQgcnB1X3NpemUgaXMgY29udmVydGVkIHRvIGludCBiZWZvcmUgaW5pdF9nZXRfYml0czgoKSBp cwo+ID4gY2FsbGVkLiAoSXQgaXMgbm90IHByb2JsZW1hdGljIHdpdGggdGhlIHVzZSBpbiA2LzYg YmVjYXVzZSB0aGUgc2l6ZSBoYXMKPiA+IGFscmVhZHkgYmVlbiBjaGVja2VkIGluIHRoaXMgY2Fz ZS4pCj4gPgo+ID4+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gPj4gKwo+ID4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IGZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKPiA+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gPiBodHRwczovL2ZmbXBlZy5v cmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPiA+Cj4gPiBUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiA+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCj4KPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QK PiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUs IG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn Cmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5z dWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0 QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==