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 8DDA9442A2 for ; Fri, 5 May 2023 14:10:17 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B537C68BDFB; Fri, 5 May 2023 17:10:14 +0300 (EEST) Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 55A2468006F for ; Fri, 5 May 2023 17:10:08 +0300 (EEST) Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-51f6461af24so1267944a12.2 for ; Fri, 05 May 2023 07:10:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683295806; x=1685887806; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=c9Jq4rNxk+tNFt5W4QTxnidIb7wXLB/cvQBCGFnm5m8=; b=JlVbVraziyxlpEdBMTWs2H1Pa8qka8NYfhRjxvDWH33HvYYKbTyEal801myqvD3Xaz Ekg8wk9rL0DDG1dAWHtKAlIq/hT4tr8Ss4y9CFl2FGF3zJyeg7yjIKR7jFAi3bkItG6Y uLY2caLdfXc7BiIVRlEN2oB+PhxGuBNHhkVxEAcj44ay8l/9UNsO1aI+wErnizbMnY5h 3x1Qb3ideSI44qgErYMqXK2LHxkkHuy1M5YovsDwmOyCm+/1TViJFFBYqopKLsz2n8H1 iynpV9RGSMowlim1IloYJ8yqlIblwrHh89vzMX4jV8vfm8v5tlMF3xAUUM69s6uTo7b9 6Rpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683295806; x=1685887806; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=c9Jq4rNxk+tNFt5W4QTxnidIb7wXLB/cvQBCGFnm5m8=; b=eSzhG2E/s2Rq7fQf9/JtEmNBHy3bY1zuARzVUomANjh4/I4KdpMfM6/JxQkSygIfNV uoN4Alc2UgPMTcSlG8iGE5KGosSf0CDYCg2qw7BJBGQinj2wMF0PwIQtGv27pvdiD5gM fjR34d0u881sWGXCBKkt6LYul3j6Y0a0ndnvJuFSt9b/sb2pVmBICXGv6dB9aos/G9GJ d4ZIoni5bP6OC7nAIsUjoNDiJCK2bMBHg7HO/YM0Yl6sABzc3c2R/FJZyHlBqXcLkeUz 1sZkc0ec2B47iHHkQIDYb87D1Zzay9QzZLiDkC9FB3H1oPEhBvOzmEISCA1ZoXZqed+y TU1g== X-Gm-Message-State: AC+VfDz7Z7GYSyTZAtdeU9FM4KxIThL2FdUN7xuWjt2kbnxOdNMbDhIs K0WJ245TpO4DE2tERwtlb3qYgD/RSd5w7knnKx7BH45xUl4uQOLZtDek5g== X-Google-Smtp-Source: ACHHUZ51TTrAbLMf2xnFImdJTTeHpItKYBAf//po2NkmMhrMXdtISTIU9WbsX8kTbMGvnTmUjhvCW0EX8axFclHkmds= X-Received: by 2002:a05:6a20:7d90:b0:dd:7661:fb34 with SMTP id v16-20020a056a207d9000b000dd7661fb34mr2146498pzj.51.1683295805790; Fri, 05 May 2023 07:10:05 -0700 (PDT) MIME-Version: 1.0 References: <1683237740-32743-1-git-send-email-dheitmueller@ltnglobal.com> <1683237740-32743-2-git-send-email-dheitmueller@ltnglobal.com> In-Reply-To: <1683237740-32743-2-git-send-email-dheitmueller@ltnglobal.com> From: Lance Wang Date: Fri, 5 May 2023 22:09:52 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v5 1/6] ccfifo: Properly handle CEA-708 captions through framerate conversion 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: T24gRnJpLCBNYXkgNSwgMjAyMyBhdCA1OjA34oCvQU0gRGV2aW4gSGVpdG11ZWxsZXIgPApkZXZp bi5oZWl0bXVlbGxlckBsdG5nbG9iYWwuY29tPiB3cm90ZToKCj4gV2hlbiB0cmFuc2NvZGluZyB2 aWRlbyB0aGF0IGNvbnRhaW5zIDcwOCBjbG9zZWQgY2FwdGlvbnMsIHRoZQo+IGNhcHRpb24gZGF0 YSBpcyB0aWVkIHRvIHRoZSBmcmFtZXMgYXMgc2lkZSBkYXRhLiAgU2ltcGx5IGRyb3BwaW5nCj4g b3IgYWRkaW5nIGZyYW1lcyB0byBjaGFuZ2UgdGhlIGZyYW1lcmF0ZSB3aWxsIHJlc3VsdCBpbiBs b3NzIG9mCj4gZGF0YSwgc28gdGhlIGNhcHRpb24gZGF0YSBuZWVkcyB0byBiZSBwcmVzZXJ2ZWQg YW5kIHJlZm9ybWF0dGVkLgo+Cj4gRm9yIGV4YW1wbGUsIHdpdGhvdXQgdGhpcyBwYXRjaCBjb252 ZXJ0aW5nIDcyMHA1OSB0byAxMDgwaTU5Cj4gd291bGQgcmVzdWx0IGluIGxvc3Mgb2YgNTAlIG9m IHRoZSBjYXB0aW9uIGJ5dGVzLCByZXN1bHRpbmcgaW4KPiBnYXJibGVkIDYwOCBjYXB0aW9ucyBh bmQgNzA4IHByb2JhYmx5IHdvdWxkbid0IHJlbmRlciBhdCBhbGwuCj4gRnVydGhlciwgdGhlIGZy YW1lcyB0aGF0IGFyZSB0aGVyZSB3aWxsIGhhdmUgYW4gaWxsZWdhbAo+IGNjX2NvdW50IGZvciB0 aGUgdGFyZ2V0IGZyYW1lcmF0ZSwgc28gc29tZSBkZWNvZGVycyBtYXkgaWdub3JlCj4gdGhlIHBh Y2tldHMgZW50aXJlbHkuCj4KPiBFeHRyYWN0IHRoZSA2MDggYW5kIDcwOCB0dXBsZXMgYW5kIGlu c2VydCB0aGVtIG9udG8gcXVldWVzLiAgVGhlbgo+IGFmdGVyIGRyb3BwaW5nL2FkZGluZyBmcmFt ZXMsIHJlLXdyaXRlIHRoZSB0dXBsZXMgYmFjayBpbnRvIHRoZQo+IHJlc3VsdGluZyBmcmFtZXMg YXQgdGhlIGFwcHJvcHJpYXRlIHJhdGUgZ2l2ZW4gdGhlIHRhcmdldAo+IGZyYW1lcmF0ZS4gIFRo aXMgaW5jbHVkZXMgYm90aCBoYXZpbmcgdGhlIGNvcnJlY3QgY2NfY291bnQgYXMKPiB3ZWxsIGFz IGNsb2NraW5nIG91dCB0aGUgNjA4IHBhaXJzIGF0IHRoZSBhcHByb3ByaWF0ZSByYXRlLgo+Cj4g VGhhbmtzIGZvciBMYW5jZSBXYW5nIDxsYW5jZS5sbXdhbmdAZ21haWwuY29tPiBhbmQgQW50b24K PiBLaGlybm92IDxhbnRvbkBraGlybm92Lm5ldD4gZm9yIHByb3ZpZGluZyByZXZpZXcvZmVlZGJh Y2suCj4KPiBTaWduZWQtb2ZmLWJ5OiBEZXZpbiBIZWl0bXVlbGxlciA8ZGhlaXRtdWVsbGVyQGx0 bmdsb2JhbC5jb20+Cj4gLS0tCj4gIGxpYmF2ZmlsdGVyL01ha2VmaWxlIHwgICAxICsKPiAgbGli YXZmaWx0ZXIvY2NmaWZvLmMgfCAyMjIKPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgbGliYXZmaWx0ZXIvY2NmaWZvLmggfCAxMTAgKysrKysr KysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDMzMyBpbnNlcnRpb25zKCsp Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9jY2ZpZm8uYwo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliYXZmaWx0ZXIvY2NmaWZvLmgKPgo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRl ci9NYWtlZmlsZSBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gaW5kZXggNDgyYWVhZi4uNjhjOGYx NCAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci9NYWtlZmlsZQo+ICsrKyBiL2xpYmF2ZmlsdGVy L01ha2VmaWxlCj4gQEAgLTE0LDYgKzE0LDcgQEAgT0JKUyA9IGFsbGZpbHRlcnMubwo+ICAgICAg ICAgICAgICAgIFwKPiAgICAgICAgIGJ1ZmZlcnNpbmsubyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgYnVmZmVyc3JjLm8gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAg ICAgICBjb2xvcnNwYWNlLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKPiArICAgICAgIGNjZmlmby5vICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgZHJhd3V0aWxzLm8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g ICAgICAgICBmaWZvLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKPiAgICAgICAgIGZvcm1hdHMubyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IGRpZmYgLS1naXQgYS9saWJh dmZpbHRlci9jY2ZpZm8uYyBiL2xpYmF2ZmlsdGVyL2NjZmlmby5jCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwLi4zNTdmNzY0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xp YmF2ZmlsdGVyL2NjZmlmby5jCj4gQEAgLTAsMCArMSwyMjIgQEAKPiArLyoKPiArICogQ0VBLTcw OCBDbG9zZWQgQ2FwdGlvbmluZyBGSUZPCj4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBMVE4gR2xv YmFsIENvbW11bmljYXRpb25zCj4gKyAqCj4gKyAqIEF1dGhvcjogRGV2aW4gSGVpdG11ZWxsZXIg PGRoZWl0bXVlbGxlckBsdG5nbG9iYWwuY29tPgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVyc2lvbiAy LjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Cj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj Cj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArI2lu Y2x1ZGUgImNjZmlmby5oIgo+ICsKPiArc3RydWN0IEFWQ0NGaWZvIHsKPiArICAgIEFWRmlmbyAq Y2NfNjA4X2ZpZm87Cj4gKyAgICBBVkZpZm8gKmNjXzcwOF9maWZvOwo+ICsgICAgQVZSYXRpb25h bCBmcmFtZXJhdGU7Cj4gKyAgICBpbnQgZXhwZWN0ZWRfY2NfY291bnQ7Cj4gKyAgICBpbnQgZXhw ZWN0ZWRfNjA4Owo+ICsgICAgaW50IGNjX2RldGVjdGVkOwo+ICsgICAgaW50IHBhc3N0aHJvdWdo Owo+ICsgICAgaW50IHBhc3N0aHJvdWdoX3dhcm5pbmc7Cj4gKyAgICB2b2lkICpsb2dfY3R4Owo+ ICt9Owo+ICsKPiArI2RlZmluZSBNQVhfQ0NfRUxFTUVOVFMgMTI4Cj4gKyNkZWZpbmUgQ0NfQllU RVNfUEVSX0VOVFJZIDMKPiArCj4gK3N0cnVjdCBjY19sb29rdXAgewo+ICsgICAgaW50IG51bTsK PiArICAgIGludCBkZW47Cj4gKyAgICBpbnQgY2NfY291bnQ7Cj4gKyAgICBpbnQgbnVtXzYwODsK PiArfTsKPiArCj4gK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgY2NfbG9va3VwIGNjX2xvb2t1cF92YWxz W10gPSB7Cj4gKyAgICB7IDE1LCAxLCA0MCwgNCB9LAo+ICsgICAgeyAyNCwgMSwgMjUsIDMgfSwK PiArICAgIHsgMjQwMDAsIDEwMDEsIDI1LCAzIH0sCj4gKyAgICB7IDMwLCAxLCAyMCwgMiB9LAo+ ICsgICAgeyAzMDAwMCwgMTAwMSwgMjAsIDJ9LAo+ICsgICAgeyA2MCwgMSwgMTAsIDEgfSwKPiAr ICAgIHsgNjAwMDAsIDEwMDEsIDEwLCAxfSwKPiArfTsKPiArCj4gK3ZvaWQgZmZfY2NmaWZvX2Zy ZWVwKEFWQ0NGaWZvICoqY2NmKQo+ICt7Cj4gKyAgICBBVkNDRmlmbyAqdG1wID0gKmNjZjsKPiAr ICAgIGF2X2ZpZm9fZnJlZXAyKCZ0bXAtPmNjXzYwOF9maWZvKTsKPiArICAgIGF2X2ZpZm9fZnJl ZXAyKCZ0bXAtPmNjXzcwOF9maWZvKTsKPiArICAgIGF2X2ZyZWVwKCpjY2YpOwo+ICt9Cj4gKwo+ ICtBVkNDRmlmbyAqZmZfY2NmaWZvX2FsbG9jKEFWUmF0aW9uYWwgZnJhbWVyYXRlLCB2b2lkICps b2dfY3R4KQo+ICt7Cj4gKyAgICBBVkNDRmlmbyAqY2NmOwo+ICsgICAgaW50IGk7Cj4gKwo+ICsg ICAgY2NmID0gYXZfbWFsbG9jeihzaXplb2YoKmNjZikpOwo+ICsgICAgaWYgKCFjY2YpCj4gKyAg ICAgICAgcmV0dXJuIE5VTEw7Cj4gKwo+ICsgICAgY2NmLT5sb2dfY3R4ID0gbG9nX2N0eDsKPiAr ICAgIGNjZi0+ZnJhbWVyYXRlID0gZnJhbWVyYXRlOwo+ICsKPiArICAgIGlmICghKGNjZi0+Y2Nf NzA4X2ZpZm8gPSBhdl9maWZvX2FsbG9jMihNQVhfQ0NfRUxFTUVOVFMsCj4gQ0NfQllURVNfUEVS X0VOVFJZLCAwKSkpCj4gKyAgICAgICAgZ290byBlcnJvcjsKPiArCj4gKyAgICBpZiAoIShjY2Yt PmNjXzYwOF9maWZvID0gYXZfZmlmb19hbGxvYzIoTUFYX0NDX0VMRU1FTlRTLAo+IENDX0JZVEVT X1BFUl9FTlRSWSwgMCkpKQo+ICsgICAgICAgIGdvdG8gZXJyb3I7Cj4gKwo+ICsgICAgLyogQmFz ZWQgb24gdGhlIHRhcmdldCBGUFMsIGZpZ3VyZSBvdXQgdGhlIGV4cGVjdGVkIGNjX2NvdW50IGFu ZAo+IG51bWJlciBvZgo+ICsgICAgICAgNjA4IHR1cGxlcyBwZXIgcGFja2V0LiAgU2VlIEFOU0kv Q1RBLTcwOC1FIFNlYyA0LjMuNi4xLiAqLwo+ICsgICAgZm9yIChpID0gMDsgaSA8IEZGX0FSUkFZ X0VMRU1TKGNjX2xvb2t1cF92YWxzKTsgaSsrKSB7Cj4gKyAgICAgICAgaWYgKGZyYW1lcmF0ZS5u dW0gPT0gY2NfbG9va3VwX3ZhbHNbaV0ubnVtICYmCj4gKyAgICAgICAgICAgIGZyYW1lcmF0ZS5k ZW4gPT0gY2NfbG9va3VwX3ZhbHNbaV0uZGVuKSB7Cj4gKyAgICAgICAgICAgIGNjZi0+ZXhwZWN0 ZWRfY2NfY291bnQgPSBjY19sb29rdXBfdmFsc1tpXS5jY19jb3VudDsKPiArICAgICAgICAgICAg Y2NmLT5leHBlY3RlZF82MDggPSBjY19sb29rdXBfdmFsc1tpXS5udW1fNjA4Owo+ICsgICAgICAg ICAgICBicmVhazsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKGNjZi0+ZXhw ZWN0ZWRfNjA4ID09IDApIHsKPiArICAgICAgICAvKiBXZSBkaWRuJ3QgZmluZCBhbiBvdXRwdXQg ZnJhbWUgd2Ugc3VwcG9ydC4gIFdlJ2xsIGxldCB0aGUgY2FsbAo+IHN1Y2NlZWQKPiArICAgICAg ICAgICBhbmQgdGhlIEZJRk8gdG8gYmUgYWxsb2NhdGVkLCBidXQgdGhlIGV4dHJhY3QvaW5qZWN0 IGZ1bmN0aW9ucwo+IHdpbGwgc2ltcGx5Cj4gKyAgICAgICAgICAgbGVhdmUgZXZlcnl0aGluZyB0 aGUgd2F5IGl0IGlzICovCj4gKyAgICAgICAgY2NmLT5wYXNzdGhyb3VnaCA9IDE7Cj4gKyAgICB9 Cj4gKwo+ICsgICAgcmV0dXJuIGNjZjsKPiArCj4gK2Vycm9yOgo+ICsgICAgZmZfY2NmaWZvX2Zy ZWVwKCZjY2YpOwo+ICsgICAgcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK2ludCBmZl9jY2ZpZm9f Z2V0b3V0cHV0c2l6ZShBVkNDRmlmbyAqY2NmKQo+ICt7Cj4gKyAgICByZXR1cm4gY2NmLT5leHBl Y3RlZF9jY19jb3VudCAqIENDX0JZVEVTX1BFUl9FTlRSWTsKPiArfQo+ICsKPiAraW50IGZmX2Nj Zmlmb19jY2RldGVjdGVkKEFWQ0NGaWZvICpjY2YpCj4gK3sKPiArICAgIHJldHVybiBjY2YtPmNj X2RldGVjdGVkOwo+ICt9Cj4gKwo+ICtpbnQgZmZfY2NmaWZvX2luamVjdGJ5dGVzKEFWQ0NGaWZv ICpjY2YsIHVpbnQ4X3QgKmNjX2RhdGEsIHNpemVfdCBsZW4pCj4gK3sKPiArICAgIGludCBjY182 MDhfdHVwbGVzID0gMDsKPiArICAgIGludCBjY183MDhfdHVwbGVzID0gMDsKPiArICAgIGludCBj Y19maWxsZWQgPSAwOwo+ICsKPiArICAgIGlmIChjY2YtPnBhc3N0aHJvdWdoKSB7Cj4gKyAgICAg ICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKGxlbiA8IGZmX2NjZmlmb19nZXRv dXRwdXRzaXplKGNjZikpIHsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ICsg ICAgfQo+ICsKPiArICAgIC8qIEluc2VydCBhbnkgYXZhaWxhYmxlIGRhdGEgZnJvbSB0aGUgNjA4 IEZJRk8gKi8KPiArICAgIGlmIChjY2YtPmV4cGVjdGVkXzYwOCA8PSBhdl9maWZvX2Nhbl9yZWFk KGNjZi0+Y2NfNjA4X2ZpZm8pKQo+ICsgICAgICAgIGNjXzYwOF90dXBsZXMgPSBjY2YtPmV4cGVj dGVkXzYwODsKPiArICAgIGVsc2UKPiArICAgICAgICBjY182MDhfdHVwbGVzID0gYXZfZmlmb19j YW5fcmVhZChjY2YtPmNjXzYwOF9maWZvKTsKPiArICAgIGF2X2ZpZm9fcmVhZChjY2YtPmNjXzYw OF9maWZvLCBjY19kYXRhLCBjY182MDhfdHVwbGVzKTsKPiArICAgIGNjX2ZpbGxlZCArPSBjY182 MDhfdHVwbGVzOwo+ICsKPiArICAgIC8qIEluc2VydCBhbnkgYXZhaWxhYmxlIGRhdGEgZnJvbSB0 aGUgNzA4IEZJRk8gKi8KPiArICAgIGlmICgoY2NmLT5leHBlY3RlZF9jY19jb3VudCAtIGNjX2Zp bGxlZCkgPD0KPiBhdl9maWZvX2Nhbl9yZWFkKGNjZi0+Y2NfNzA4X2ZpZm8pKQo+ICsgICAgICAg IGNjXzcwOF90dXBsZXMgPSBjY2YtPmV4cGVjdGVkX2NjX2NvdW50IC0gY2NfZmlsbGVkOwo+ICsg ICAgZWxzZQo+ICsgICAgICAgIGNjXzcwOF90dXBsZXMgPSBhdl9maWZvX2Nhbl9yZWFkKGNjZi0+ Y2NfNzA4X2ZpZm8pOwo+ICsgICAgYXZfZmlmb19yZWFkKGNjZi0+Y2NfNzA4X2ZpZm8sICZjY19k YXRhW2NjX2ZpbGxlZCAqCj4gQ0NfQllURVNfUEVSX0VOVFJZXSwgY2NfNzA4X3R1cGxlcyk7Cj4g KyAgICBjY19maWxsZWQgKz0gY2NfNzA4X3R1cGxlczsKPiArCj4gKyAgICAvKiBJbnNlcnQgNzA4 IHBhZGRpbmcgaW50byBhbnkgcmVtYWluaW5nIGZpZWxkcyAqLwo+ICsgICAgd2hpbGUgKGNjX2Zp bGxlZCA8IGNjZi0+ZXhwZWN0ZWRfY2NfY291bnQpIHsKPiArICAgICAgICBjY19kYXRhW2NjX2Zp bGxlZCAqIENDX0JZVEVTX1BFUl9FTlRSWV0gICAgID0gMHhmYTsKPiArICAgICAgICBjY19kYXRh W2NjX2ZpbGxlZCAqIENDX0JZVEVTX1BFUl9FTlRSWSArIDFdID0gMHgwMDsKPiArICAgICAgICBj Y19kYXRhW2NjX2ZpbGxlZCAqIENDX0JZVEVTX1BFUl9FTlRSWSArIDJdID0gMHgwMDsKPiArICAg ICAgICBjY19maWxsZWQrKzsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsK PiAraW50IGZmX2NjZmlmb19pbmplY3QoQVZDQ0ZpZm8gKmNjZiwgQVZGcmFtZSAqZnJhbWUpCj4g K3sKPiArICAgIEFWRnJhbWVTaWRlRGF0YSAqc2Q7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAg IGlmIChjY2YtPnBhc3N0aHJvdWdoID09IDEgfHwgY2NmLT5jY19kZXRlY3RlZCA9PSAwKQo+ICsg ICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIHNkID0gYXZfZnJhbWVfbmV3X3NpZGVfZGF0YShm cmFtZSwgQVZfRlJBTUVfREFUQV9BNTNfQ0MsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmZfY2NmaWZvX2dldG91dHB1dHNpemUoY2NmKSk7Cj4gKyAgICBpZiAoc2QpIHsKPiAr ICAgICAgICByZXQgPSBmZl9jY2ZpZm9faW5qZWN0Ynl0ZXMoY2NmLCBzZC0+ZGF0YSwgc2QtPnNp emUpOwo+ICsgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgIGF2X2ZyYW1lX3Jl bW92ZV9zaWRlX2RhdGEoZnJhbWUsIEFWX0ZSQU1FX0RBVEFfQTUzX0NDKTsKPiArICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPgoKcHJlZmVyIHRvIHJldHVybiByZXQgZnJvbSBm Zl9jY2ZpZm9faW5qZWN0Ynl0ZXMoKQoKCj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAg IHJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgZmZfY2NmaWZvX2V4dHJhY3RieXRlcyhBVkNDRmlm byAqY2NmLCB1aW50OF90ICpjY19ieXRlcywgc2l6ZV90IGxlbikKPiArewo+ICsgICAgaW50IGNj X2NvdW50ID0gbGVuIC8gQ0NfQllURVNfUEVSX0VOVFJZOwo+ICsKPiArICAgIGlmIChjY2YtPnBh c3N0aHJvdWdoID09IDEpIHsKPiArICAgICAgICBhdl9sb2dfb25jZShjY2YtPmxvZ19jdHgsIEFW X0xPR19XQVJOSU5HLCBBVl9MT0dfREVCVUcsCj4gJmNjZi0+cGFzc3Rocm91Z2hfd2FybmluZywK PiArICAgICAgICAgICAgICAgICAgICAiY2NfZmlmbyBjYW5ub3QgdHJhbnNjb2RlIGNhcHRpb25z IGZwcz0lZC8lZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICBjY2YtPmZyYW1lcmF0ZS5udW0s IGNjZi0+ZnJhbWVyYXRlLmRlbik7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ ICsgICAgY2NmLT5jY19kZXRlY3RlZCA9IDE7Cj4gKwo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBjY19jb3VudDsgaSsrKSB7Cj4gKyAgICAgICAgLyogU2VlIEFOU0kvQ1RBLTcwOC1FIFNlYyA0 LjMsIFRhYmxlIDMgKi8KPiArICAgICAgICB1aW50OF90IGNjX3ZhbGlkID0gKGNjX2J5dGVzW0ND X0JZVEVTX1BFUl9FTlRSWSppXSAmIDB4MDQpID4+IDI7Cj4gKyAgICAgICAgdWludDhfdCBjY190 eXBlID0gY2NfYnl0ZXNbQ0NfQllURVNfUEVSX0VOVFJZKmldICYgMHgwMzsKPiArICAgICAgICBp ZiAoY2NfdHlwZSA9PSAweDAwIHx8IGNjX3R5cGUgPT0gMHgwMSkgewo+ICsgICAgICAgICAgICBh dl9maWZvX3dyaXRlKGNjZi0+Y2NfNjA4X2ZpZm8sCj4gJmNjX2J5dGVzW0NDX0JZVEVTX1BFUl9F TlRSWSppXSwgMSk7Cj4gKyAgICAgICAgfSBlbHNlIGlmIChjY192YWxpZCAmJiAoY2NfdHlwZSA9 PSAweDAyIHx8IGNjX3R5cGUgPT0gMHgwMykpIHsKPiArICAgICAgICAgICAgYXZfZmlmb193cml0 ZShjY2YtPmNjXzcwOF9maWZvLAo+ICZjY19ieXRlc1tDQ19CWVRFU19QRVJfRU5UUlkqaV0sIDEp Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKiBS ZWFkIHRoZSBBNTMgc2lkZSBkYXRhLCBkaXNjYXJkIHBhZGRpbmcsIGFuZCBwdXQgNjA4LzcwOCBp bnRvCj4gKyAgIHF1ZXVlcyBzbyB3ZSBjYW4gZW5zdXJlIHRoZXkgZ2V0IGludG8gdGhlIG91dHB1 dCBmcmFtZXMgYXQKPiArICAgdGhlIGNvcnJlY3QgcmF0ZS4uLiAqLwo+ICtpbnQgZmZfY2NmaWZv X2V4dHJhY3QoQVZDQ0ZpZm8gKmNjZiwgQVZGcmFtZSAqZnJhbWUpCj4gK3sKPiArICAgIEFWRnJh bWVTaWRlRGF0YSAqc2lkZV9kYXRhID0gYXZfZnJhbWVfZ2V0X3NpZGVfZGF0YShmcmFtZSwKPiBB Vl9GUkFNRV9EQVRBX0E1M19DQyk7Cj4gKyAgICBpZiAoc2lkZV9kYXRhKSB7Cj4gKyAgICAgICAg ZmZfY2NmaWZvX2V4dHJhY3RieXRlcyhjY2YsIHNpZGVfZGF0YS0+ZGF0YSwgc2lkZV9kYXRhLT5z aXplKTsKPiArCj4gKyAgICAgICAgLyogUmVtb3ZlIHRoZSBzaWRlIGRhdGEsIGFzIHdlIHdpbGwg cmUtY3JlYXRlIGl0IG9uIHRoZQo+ICsgICAgICAgICAgIG91dHB1dCBhcyBuZWVkZWQgKi8KPiAr ICAgICAgICBpZiAoIWNjZi0+cGFzc3Rocm91Z2gpCj4gKyAgICAgICAgICAgIGF2X2ZyYW1lX3Jl bW92ZV9zaWRlX2RhdGEoZnJhbWUsIEFWX0ZSQU1FX0RBVEFfQTUzX0NDKTsKPiArICAgIH0KPiAr ICAgIHJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2NjZmlmby5oIGIv bGliYXZmaWx0ZXIvY2NmaWZvLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLjQ0YzkyNDUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZmaWx0ZXIvY2NmaWZvLmgK PiBAQCAtMCwwICsxLDExMCBAQAo+ICsvKgo+ICsgKiBDRUEtNzA4IENsb3NlZCBDYXB0aW9uaW5n IEZJRk8KPiArICogQ29weXJpZ2h0IChjKSAyMDIzIExUTiBHbG9iYWwgQ29tbXVuaWNhdGlvbnMK PiArICoKPiArICogQXV0aG9yOiBEZXZpbiBIZWl0bXVlbGxlciA8ZGhlaXRtdWVsbGVyQGx0bmds b2JhbC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoK PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVn IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9u ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BCj4gMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsvKioKPiArICogQGZpbGUKPiArICog Q0MgRklGTyBCdWZmZXIKPiArICovCj4gKwo+ICsjaWZuZGVmIEFWRklMVEVSX0NDRklGT19ICj4g KyNkZWZpbmUgQVZGSUxURVJfQ0NGSUZPX0gKPiArCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1 dGlsLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvZnJhbWUuaCIKPiArI2luY2x1ZGUgImxpYmF2 dXRpbC9maWZvLmgiCj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBBVkNDRmlmbyBBVkNDRmlmbzsKPiAr Cj4gKy8qKgo+ICsgKiBBbGxvY2F0ZSBhbiBBVkNDRmlmby4KPiArICoKPiArICogQHBhcmFtIGZy YW1lcmF0ZSAgIG91dHB1dCBmcmFtZXJhdGUKPiArICogQHBhcmFtIGxvZ19jdHggICAgIHVzZWQg Zm9yIGFueSBhdl9sb2coKSBjYWxscwo+ICsgKiBAcmV0dXJuICAgICAgICAgICAgbmV3bHkgYWxs b2NhdGVkIEFWQ0NGaWZvLCBvciBOVUxMIG9uIGVycm9yCj4gKyAqLwo+ICtBVkNDRmlmbyAqZmZf Y2NmaWZvX2FsbG9jKEFWUmF0aW9uYWwgZnJhbWVyYXRlLCB2b2lkICpsb2dfY3R4KTsKPiArCj4g Ky8qKgo+ICsgKiBGcmVlIGFuIEFWQ0NGaWZvCj4gKyAqCj4gKyAqIEBwYXJhbSBjY2YgUG9pbnRl ciB0byB0aGUgcG9pbnRlciB0byB0aGUgQVZDQ0ZpZm8gd2hpY2ggc2hvdWxkIGJlIGZyZWVkCj4g KyAqIEBub3RlIGAqcHRyID0gTlVMTGAgaXMgc2FmZSBhbmQgbGVhZHMgdG8gbm8gYWN0aW9uLgo+ ICsgKi8KPiArdm9pZCBmZl9jY2ZpZm9fZnJlZXAoQVZDQ0ZpZm8gKipjY2YpOwo+ICsKPiArCj4g Ky8qKgo+ICsgKiBFeHRyYWN0IENDIGRhdGEgZnJvbSBhbiBBVkZyYW1lCj4gKyAqCj4gKyAqIEV4 dHJhY3QgQ0MgYnl0ZXMgZnJvbSB0aGUgQVZGcmFtZSwgaW5zZXJ0IHRoZW0gaW50byBvdXIgcXVl dWUsIGFuZAo+ICsgKiByZW1vdmUgdGhlIHNpZGUgZGF0YSBmcm9tIHRoZSBBVkZyYW1lLiAgVGhl IHNpZGUgZGF0YSBpcyByZW1vdmVkCj4gKyAqIGFzIGl0IHdpbGwgYmUgcmUtaW5zZXJ0ZWQgYXQg dGhlIGFwcHJvcHJpYXRlIHJhdGUgbGF0ZXIgaW4gdGhlCj4gKyAqIGZpbHRlci4KPiArICoKPiAr ICogQHBhcmFtIGFmICAgICAgICAgIEFWQ0NGaWZvIHRvIHdyaXRlIHRvCj4gKyAqIEBwYXJhbSBm cmFtZSAgICAgICBBVkZyYW1lIHdpdGggdGhlIHZpZGVvIGZyYW1lIHRvIG9wZXJhdGUgb24KPiAr ICogQHJldHVybiAgICAgICAgICAgIFplcm8gb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgQVZFUlJP Ugo+ICsgKiAgICAgICAgICAgICAgICAgICAgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50 IGZmX2NjZmlmb19leHRyYWN0KEFWQ0NGaWZvICpjY2YsIEFWRnJhbWUgKmZyYW1lKTsKPiArCj4g Ky8qKgo+ICsgKkp1c3QgbGlrZSBmZl9jY2ZpZm9fZXh0cmFjdCgpLCBidXQgdGFrZXMgdGhlIHJh dyBieXRlcyBpbnN0ZWFkIG9mIGFuCj4gQVZGcmFtZQo+ICsgKi8KPiAraW50IGZmX2NjZmlmb19l eHRyYWN0Ynl0ZXMoQVZDQ0ZpZm8gKmNjZiwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbik7Cj4g Kwo+ICsvKioKPiArICogUHJvdmlkZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhbiBvdXRwdXQgYnVm ZmVyIHRvIGFsbG9jYXRlCj4gKyAqCj4gKyAqIEFzayBmb3IgaG93IG1hbnkgYnl0ZXMgdGhlIG91 dHB1dCB3aWxsIGNvbnRhaW4sIHNvIHRoZSBjYWxsZXIgY2FuCj4gYWxsb2NhdGUKPiArICogYW4g YXBwcm9wcmlhdGVseSBzaXplZCBidWZmZXIgYW5kIHBhc3MgaXQgdG8gZmZfY2NmaWZvX2luamVj dGJ5dGVzKCkKPiArICoKPiArICovCj4gK2ludCBmZl9jY2ZpZm9fZ2V0b3V0cHV0c2l6ZShBVkND RmlmbyAqY2NmKTsKPiArCj4gKy8qKgo+ICsgKiBJbnNlcnQgQ0MgZGF0YSBmcm9tIHRoZSBGSUZP IGludG8gYW4gQVZGcmFtZSAoYXMgc2lkZSBkYXRhKQo+ICsgKgo+ICsgKiBEZXF1ZXVlIHRoZSBh cHByb3ByaWF0ZSBudW1iZXIgb2YgQ0MgdHVwbGVzIGJhc2VkIG9uIHRoZQo+ICsgKiBmcmFtZSBy YXRlLCBhbmQgaW5zZXJ0IHRoZW0gaW50byB0aGUgQVZGcmFtZQo+ICsgKgo+ICsgKiBAcGFyYW0g YWYgICAgICAgICAgQVZDQ0ZpZm8gdG8gcmVhZCBmcm9tCj4gKyAqIEBwYXJhbSBmcmFtZSAgICAg ICBBVkZyYW1lIHdpdGggdGhlIHZpZGVvIGZyYW1lIHRvIG9wZXJhdGUgb24KPiArICogQHJldHVy biAgICAgICAgICAgIFplcm8gb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgQVZFUlJPUgo+ICsgKiAg ICAgICAgICAgICAgICAgICAgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGZmX2NjZmlm b19pbmplY3QoQVZDQ0ZpZm8gKmNjZiwgQVZGcmFtZSAqZnJhbWUpOwo+ICsKPiArLyoqCj4gKyAq IEp1c3QgbGlrZSBmZl9jY2ZpZm9faW5qZWN0KCksIGJ1dCB0YWtlcyB0aGUgcmF3IGJ5dGVzIHRv IGluc2VydCB0aGUgQ0MKPiBkYXRhCj4gKyAqIGludCByYXRoZXIgdGhhbiBhbiBBVkZyYW1lCj4g KyAqLwo+ICtpbnQgZmZfY2NmaWZvX2luamVjdGJ5dGVzKEFWQ0NGaWZvICpjY2YsIHVpbnQ4X3Qg KmRhdGEsIHNpemVfdCBsZW4pOwo+ICsKPiArLyoqCj4gKyAqIFJldHVybnMgMSBpZiBjYXB0aW9u cyBoYXZlIGJlZW4gZm91bmQgYXMgYSBwcmlvciBjYWxsCj4gKyAqIHRvIGZmX2NjZmlmb19leHRy YWN0KCkgb3IgZmZfY2NmaWZvX2V4dHJhY3RieXRlcygpCj4gKyAqLwo+ICtpbnQgZmZfY2NmaWZv X2NjZGV0ZWN0ZWQoQVZDQ0ZpZm8gKmNjZik7Cj4gKwo+ICsjZW5kaWYgLyogQVZGSUxURVJfQ0NG SUZPX0ggKi8KPiAtLQo+IDEuOC4zLjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZt cGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwK PiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3Jp YmUiLgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZm bXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9m Zm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9y ZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K