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 6A2DD453BA for ; Fri, 27 Jan 2023 17:18:50 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B21EF68BE59; Fri, 27 Jan 2023 19:18:47 +0200 (EET) Received: from smtp.tiscali.it (santino-notr.mail.tiscali.it [213.205.33.215]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4B99868B7D5 for ; Fri, 27 Jan 2023 19:18:41 +0200 (EET) Received: from [192.168.20.100] ([95.243.137.154]) by santino.mail.tiscali.it with id DtJf2901f3L3PKz01tJgow; Fri, 27 Jan 2023 17:18:40 +0000 X-Spam-Final-Verdict: clean X-Spam-State: 0 X-Spam-Score: 0 X-Spam-Verdict: clean x-auth-user: klimklim@tiscali.it Content-Type: multipart/mixed; boundary="------------CEyY38a18K0vr4CqhoVIFGe6" Message-ID: <47ee718c-bce0-cffa-9c6a-2889a6547017@tiscali.it> Date: Fri, 27 Jan 2023 18:18:39 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Content-Language: it To: ffmpeg-devel@ffmpeg.org References: <8d713a21-f2f0-5c8d-fa93-0278965509e5@tiscali.it> From: Francesco Carusi In-Reply-To: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tiscali.it; s=smtp; t=1674839920; bh=wyWckT6migtNCzOCZeMwuTpECXHaUKbo1sFWaQO2q5o=; h=Date:Subject:To:References:From:In-Reply-To; b=Dr15LLWEXqsXBXlr5Z3iemB0UTu6MKoUv/5DQfwlpFbQsr8Mf6YQlk+/as0urdEAH tUfggs/g+64DyzyQKLPPk43Bu0kz55k9FFIhNdm25szYgUc/3LaWkHwCzmMYK8w24R 6FlaPZhhUQtd+Ti703q9KsJAWP8ZIyUy83N3qR34= Subject: Re: [FFmpeg-devel] drawtext filter 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: This is a multi-part message in MIME format. --------------CEyY38a18K0vr4CqhoVIFGe6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 26/01/2023 17:37, Paul B Mahol wrote: > On 1/26/23, Francesco Carusi wrote: >> On 26/01/2023 14:21, Paul B Mahol wrote: >>> On 1/26/23, Francesco Carusi wrote: >>>> The drawtext reinit command is also used in the docs as an example for >>>> the sendcmd filter, so I thought it was fine to use commands in that >>>> way. In my opinion it is also a convenient way to modify multiple >>>> options at the same time. >>>> Should the command match the name of a filter option instead? >>>> >>> Please do not top post. >>> >>> It is much better to use already existing options for commands that is >>> more intuitive to users. Also multiple options can be set at runtime, >>> there is no such limitation. >> ok, I'm going to remove the "change" command and add commands that match >> the options that it included. > Thanks, feel free to ask questions on #ffmpeg-devel irc channel. I'm attaching the updated patch, I also updated the document at https://github.com/yethie/FFmpeg/blob/master/drawtext/CHANGES.md Thanks > >>>> On 26/01/2023 11:50, Paul B Mahol wrote: >>>>> On 1/26/23, Francesco Carusi wrote: >>>>>> Hi, I'm new to contributing to ffmpeg! >>>>>> >>>>>> I modified the drawtext filter to improve text rendering and add some >>>>>> features. You can find a high level description of the changes at this >>>>>> link: >>>>>> >>>>>> https://github.com/yethie/FFmpeg/blob/master/drawtext/CHANGES.md >>>>>> >>>>>> I'm also attaching the patch file. >>>>>> I looked for the filter maintainer to discuss about the changes I made >>>>>> but it looks like there isn't any, am I correct? >>>>>> >>>>>> Please let me know if this is the right way to submit my contribution. >>>>> Why filter can not support normal commands for options? Like most/all >>>>> other filters that have support for changing options values at >>>>> runtime. >>>>> >>>>> The reinit and yours added change option(s) are very >>>>> strange/inconvenient things to do. >>>>> _______________________________________________ >>>>> ffmpeg-devel mailing list >>>>> ffmpeg-devel@ffmpeg.org >>>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>>>> >>>>> To unsubscribe, visit link above, or email >>>>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >>>> _______________________________________________ >>>> ffmpeg-devel mailing list >>>> ffmpeg-devel@ffmpeg.org >>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>>> >>>> To unsubscribe, visit link above, or email >>>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >>>> >>> _______________________________________________ >>> ffmpeg-devel mailing list >>> ffmpeg-devel@ffmpeg.org >>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>> >>> To unsubscribe, visit link above, or email >>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >> > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --------------CEyY38a18K0vr4CqhoVIFGe6 Content-Type: text/plain; charset=UTF-8; name="0001-enhanced-drawtext-filter.patch" Content-Disposition: attachment; filename="0001-enhanced-drawtext-filter.patch" Content-Transfer-Encoding: base64 RnJvbSBmNzUzYTkzNzliNWYxOWRkZTA0NjQ4ODBiZDE3YjViMDA0NDA1MDVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5ZXRoaWUgPGtsaW1rbGltQHRpc2NhbGkuaXQ+CkRh dGU6IEZyaSwgMjcgSmFuIDIwMjMgMTc6MjQ6NDYgKzAxMDAKU3ViamVjdDogW1BBVENIIDEv MV0gZW5oYW5jZWQgZHJhd3RleHQgZmlsdGVyCgotLS0KIGNvbmZpZ3VyZSAgICAgICAgICAg ICAgICAgfCAgICA1ICstCiBkb2MvZmlsdGVycy50ZXhpICAgICAgICAgIHwgICA4NSArKy0K IGxpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMgfCAxMTgxICsrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgOTM1IGluc2VydGlvbnMoKyks IDMzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUK aW5kZXggNmU4OGMzMjIyMy4uOGMyYzQzNGM2NiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisr KyBiL2NvbmZpZ3VyZQpAQCAtMjM1LDYgKzIzNSw3IEBAIEV4dGVybmFsIGxpYnJhcnkgc3Vw cG9ydDoKICAgLS1lbmFibGUtbGliZm9udGNvbmZpZyAgIGVuYWJsZSBsaWJmb250Y29uZmln LCB1c2VmdWwgZm9yIGRyYXd0ZXh0IGZpbHRlciBbbm9dCiAgIC0tZW5hYmxlLWxpYmZyZWV0 eXBlICAgICBlbmFibGUgbGliZnJlZXR5cGUsIG5lZWRlZCBmb3IgZHJhd3RleHQgZmlsdGVy IFtub10KICAgLS1lbmFibGUtbGliZnJpYmlkaSAgICAgIGVuYWJsZSBsaWJmcmliaWRpLCBp bXByb3ZlcyBkcmF3dGV4dCBmaWx0ZXIgW25vXQorICAtLWVuYWJsZS1saWJoYXJmYnV6eiAg ICAgZW5hYmxlIGxpYmhhcmZidXp6LCBuZWVkZWQgZm9yIGRyYXd0ZXh0IGZpbHRlciBbbm9d CiAgIC0tZW5hYmxlLWxpYmdsc2xhbmcgICAgICBlbmFibGUgR0xTTC0+U1BJUlYgY29tcGls YXRpb24gdmlhIGxpYmdsc2xhbmcgW25vXQogICAtLWVuYWJsZS1saWJnbWUgICAgICAgICAg ZW5hYmxlIEdhbWUgTXVzaWMgRW11IHZpYSBsaWJnbWUgW25vXQogICAtLWVuYWJsZS1saWJn c20gICAgICAgICAgZW5hYmxlIEdTTSBkZS9lbmNvZGluZyB2aWEgbGliZ3NtIFtub10KQEAg LTE4MTgsNiArMTgxOSw3IEBAIEVYVEVSTkFMX0xJQlJBUllfTElTVD0iCiAgICAgbGliZm9u dGNvbmZpZwogICAgIGxpYmZyZWV0eXBlCiAgICAgbGliZnJpYmlkaQorICAgIGxpYmhhcmZi dXp6CiAgICAgbGliZ2xzbGFuZwogICAgIGxpYmdtZQogICAgIGxpYmdzbQpAQCAtMzY1Nyw3 ICszNjU5LDcgQEAgZGlsYXRpb25fb3BlbmNsX2ZpbHRlcl9kZXBzPSJvcGVuY2wiCiBkbm5f Y2xhc3NpZnlfZmlsdGVyX3NlbGVjdD0iZG5uIgogZG5uX2RldGVjdF9maWx0ZXJfc2VsZWN0 PSJkbm4iCiBkbm5fcHJvY2Vzc2luZ19maWx0ZXJfc2VsZWN0PSJkbm4iCi1kcmF3dGV4dF9m aWx0ZXJfZGVwcz0ibGliZnJlZXR5cGUiCitkcmF3dGV4dF9maWx0ZXJfZGVwcz0ibGliZnJl ZXR5cGUgbGliaGFyZmJ1enoiCiBkcmF3dGV4dF9maWx0ZXJfc3VnZ2VzdD0ibGliZm9udGNv bmZpZyBsaWJmcmliaWRpIgogZWxiZ19maWx0ZXJfZGVwcz0iYXZjb2RlYyIKIGVxX2ZpbHRl cl9kZXBzPSJncGwiCkBAIC02NTc3LDYgKzY1NzksNyBAQCBlbmFibGVkIGZvbnRjb25maWcg ICAgICAgICYmIGVuYWJsZSBsaWJmb250Y29uZmlnCiBlbmFibGVkIGxpYmZvbnRjb25maWcg ICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJmb250Y29uZmlnIGZvbnRjb25maWcgImZv bnRjb25maWcvZm9udGNvbmZpZy5oIiBGY0luaXQKIGVuYWJsZWQgbGliZnJlZXR5cGUgICAg ICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYmZyZWV0eXBlIGZyZWV0eXBlMiAiZnQyYnVp bGQuaCBGVF9GUkVFVFlQRV9IIiBGVF9Jbml0X0ZyZWVUeXBlCiBlbmFibGVkIGxpYmZyaWJp ZGkgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJmcmliaWRpIGZyaWJpZGkgZnJp YmlkaS5oIGZyaWJpZGlfdmVyc2lvbl9pbmZvCitlbmFibGVkIGxpYmhhcmZidXp6ICAgICAg ICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJoYXJmYnV6eiBoYXJmYnV6eiBoYi5oIGhiX2J1 ZmZlcl9jcmVhdGUKIGVuYWJsZWQgbGliZ2xzbGFuZyAmJiB7IGNoZWNrX2xpYiBzcGlydl9j b21waWxlciBnbHNsYW5nL0luY2x1ZGUvZ2xzbGFuZ19jX2ludGVyZmFjZS5oIGdsc2xhbmdf aW5pdGlhbGl6ZV9wcm9jZXNzIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbGds c2xhbmcgLWxNYWNoaW5lSW5kZXBlbmRlbnQgLWxPU0RlcGVuZGVudCAtbEhMU0wgLWxPR0xD b21waWxlciAtbEdlbmVyaWNDb2RlR2VuIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtbFNQVlJlbWFwcGVyIC1sU1BJUlYgLWxTUElSVi1Ub29scy1vcHQgLWxTUElSVi1Ub29s cyAtbHB0aHJlYWQgLWxzdGRjKysgLWxtIHx8CmRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50 ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQppbmRleCA0ZjRkMmVhODA3Li5lNzFlNmFiOGZjIDEw MDY0NAotLS0gYS9kb2MvZmlsdGVycy50ZXhpCisrKyBiL2RvYy9maWx0ZXJzLnRleGkKQEAg LTEyMDMyLDcgKzEyMDMyLDcgQEAgRHJhdyBhIHRleHQgc3RyaW5nIG9yIHRleHQgZnJvbSBh IHNwZWNpZmllZCBmaWxlIG9uIHRvcCBvZiBhIHZpZGVvLCB1c2luZyB0aGUKIGxpYmZyZWV0 eXBlIGxpYnJhcnkuCiAKIFRvIGVuYWJsZSBjb21waWxhdGlvbiBvZiB0aGlzIGZpbHRlciwg eW91IG5lZWQgdG8gY29uZmlndXJlIEZGbXBlZyB3aXRoCi1AY29kZXstLWVuYWJsZS1saWJm cmVldHlwZX0uCitAY29kZXstLWVuYWJsZS1saWJmcmVldHlwZX0gYW5kIEBjb2Rley0tZW5h YmxlLWxpYmhhcmZidXp6fS4KIFRvIGVuYWJsZSBkZWZhdWx0IGZvbnQgZmFsbGJhY2sgYW5k IHRoZSBAdmFye2ZvbnR9IG9wdGlvbiB5b3UgbmVlZCB0bwogY29uZmlndXJlIEZGbXBlZyB3 aXRoIEBjb2Rley0tZW5hYmxlLWxpYmZvbnRjb25maWd9LgogVG8gZW5hYmxlIHRoZSBAdmFy e3RleHRfc2hhcGluZ30gb3B0aW9uLCB5b3UgbmVlZCB0byBjb25maWd1cmUgRkZtcGVnIHdp dGgKQEAgLTEyMDQ5LDkgKzEyMDQ5LDI3IEBAIFVzZWQgdG8gZHJhdyBhIGJveCBhcm91bmQg dGV4dCB1c2luZyB0aGUgYmFja2dyb3VuZCBjb2xvci4KIFRoZSB2YWx1ZSBtdXN0IGJlIGVp dGhlciAxIChlbmFibGUpIG9yIDAgKGRpc2FibGUpLgogVGhlIGRlZmF1bHQgdmFsdWUgb2Yg QHZhcntib3h9IGlzIDAuCiAKK0BpdGVtIGJveHcKK1NldCB0aGUgd2lkdGggb2YgdGhlIGJv eCB0byBiZSBkcmF3biBhcm91bmQgdGV4dC4KK1RoZSBkZWZhdWx0IHZhbHVlIG9mIEB2YXJ7 Ym94d30gaXMgY29tcHV0ZWQgYXV0b21hdGljYWxseSB0byBtYXRjaCB0aGUgdGV4dCB3aWR0 aAorCitAaXRlbSBib3hoCitTZXQgdGhlIGhlaWdodCBvZiB0aGUgYm94IHRvIGJlIGRyYXdu IGFyb3VuZCB0ZXh0LgorVGhlIGRlZmF1bHQgdmFsdWUgb2YgQHZhcntib3hofSBpcyBjb21w dXRlZCBhdXRvbWF0aWNhbGx5IHRvIG1hdGNoIHRoZSB0ZXh0IGhlaWdodAorCiBAaXRlbSBi b3hib3JkZXJ3CiBTZXQgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgdG8gYmUgZHJhd24gYXJv dW5kIHRoZSBib3ggdXNpbmcgQHZhcntib3hjb2xvcn0uCi1UaGUgZGVmYXVsdCB2YWx1ZSBv ZiBAdmFye2JveGJvcmRlcnd9IGlzIDAuCitUaGUgdmFsdWUgbXVzdCBiZSBzcGVjaWZpZWQg dXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybWF0czoKK0BpdGVtaXplIEBidWxsZXQK K0BpdGVtIEBjb2Rle2JveGJvcmRlcnc9MTB9IHNldCB0aGUgd2lkdGggb2YgYWxsIHRoZSBi b3JkZXJzIHRvIDEwCitAaXRlbSBAY29kZXtib3hib3JkZXJ3PTEwfDIwfSBzZXQgdGhlIHdp ZHRoIG9mIHRoZSB0b3AgYW5kIGJvdHRvbSBib3JkZXJzIHRvIDEwCisgICAgYW5kIHRoZSB3 aWR0aCBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgYm9yZGVycyB0byAyMAorQGl0ZW0gQGNvZGV7 Ym94Ym9yZGVydz0xMHwyMHwzMH0gc2V0IHRoZSB3aWR0aCBvZiB0aGUgdG9wIGJvcmRlciB0 byAxMCwgdGhlIHdpZHRoCisgICAgb2YgdGhlIGJvdHRvbSBib3JkZXIgdG8gMzAgYW5kIHRo ZSB3aWR0aCBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgYm9yZGVycyB0byAyMAorQGl0ZW0gQGNv ZGV7Ym94Ym9yZGVydz0xMHwyMHwzMHw0MH0gc2V0IHRoZSBib3JkZXJzIHdpZHRoIHRvIDEw ICh0b3ApLCAyMCAocmlnaHQpLAorICAgIDMwIChib3R0b20pLCA0MCAobGVmdCkKK0BlbmQg aXRlbWl6ZQorVGhlIGRlZmF1bHQgdmFsdWUgb2YgQHZhcntib3hib3JkZXJ3fSBpcyAiMCIu CiAKIEBpdGVtIGJveGNvbG9yCiBUaGUgY29sb3IgdG8gYmUgdXNlZCBmb3IgZHJhd2luZyBi b3ggYXJvdW5kIHRleHQuIEZvciB0aGUgc3ludGF4IG9mIHRoaXMKQEAgLTEyMDYwLDggKzEy MDc4LDIyIEBAIG9wdGlvbiwgY2hlY2sgdGhlIEByZWZ7Y29sb3Igc3ludGF4LCwiQ29sb3Ii IHNlY3Rpb24gaW4gdGhlIGZmbXBlZy11dGlscyBtYW51YWwsCiBUaGUgZGVmYXVsdCB2YWx1 ZSBvZiBAdmFye2JveGNvbG9yfSBpcyAid2hpdGUiLgogCiBAaXRlbSBsaW5lX3NwYWNpbmcK LVNldCB0aGUgbGluZSBzcGFjaW5nIGluIHBpeGVscyBvZiB0aGUgYm9yZGVyIHRvIGJlIGRy YXduIGFyb3VuZCB0aGUgYm94IHVzaW5nIEB2YXJ7Ym94fS4KLVRoZSBkZWZhdWx0IHZhbHVl IG9mIEB2YXJ7bGluZV9zcGFjaW5nfSBpcyAwLgorU2V0IHRoZSBsaW5lIHNwYWNpbmcgaW4g cGl4ZWxzLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBAdmFye2xpbmVfc3BhY2luZ30gaXMgMC4K KworQGl0ZW0gdGV4dF9hbGlnbgorU2V0IHRoZSB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBh bGlnbm1lbnQgb2YgdGhlIHRleHQgd2l0aCByZXNwZWN0IHRvIHRoZSBib3ggYm91bmRhcmll cy4KK1RoZSB2YWx1ZSBtdXN0IGNvbnRhaW4gZXhhY3RseSB0d28gbGV0dGVycywgb25lIGZv ciB0aGUgdmVydGljYWwgYWxpZ25tZW50IChUPXRvcCwKK009bWlkZGxlLCBCPWJvdHRvbSkg YW5kIG9uZSBmb3IgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IChMPWxlZnQsIEM9Y2VudGVy LCBSPXJpZ2h0KS4KKworQGl0ZW0geV9hbGlnbgorU3BlY2lmeSB3aGF0IHRoZSBAdmFye3l9 IHZhbHVlIGlzIHJlZmVycmVkIHRvLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorQGl0ZW1pemUg QGJ1bGxldAorQGl0ZW0gQGNvZGV7dGV4dH0gdGhlIHRvcCBvZiB0aGUgaGlnaGVzdCBnbHlw aCBvZiB0aGUgZmlyc3QgdGV4dCBsaW5lIGlzIHBsYWNlZCBhdCBAdmFye3l9CitAaXRlbSBA Y29kZXtiYXNlbGluZX0gdGhlIGJhc2VsaW5lIG9mIHRoZSBmaXJzdCB0ZXh0IGxpbmUgaXMg cGxhY2VkIGF0IEB2YXJ7eX0KK0BpdGVtIEBjb2Rle2ZvbnR9IHRoZSBiYXNlbGluZSBvZiB0 aGUgZmlyc3QgdGV4dCBsaW5lIGlzIHBsYWNlZCBhdCBAdmFye3l9IHBsdXMgdGhlCisgICAg YXNjZW50IChpbiBwaXhlbHMpIGRlZmluZWQgaW4gdGhlIGZvbnQgbWV0cmljcworQGVuZCBp dGVtaXplCitUaGUgZGVmYXVsdCB2YWx1ZSBvZiBAdmFye3lfYWxpZ259IGlzICJ0ZXh0IiBm b3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIAogQGl0ZW0gYm9yZGVydwogU2V0IHRoZSB3 aWR0aCBvZiB0aGUgYm9yZGVyIHRvIGJlIGRyYXduIGFyb3VuZCB0aGUgdGV4dCB1c2luZyBA dmFye2JvcmRlcmNvbG9yfS4KQEAgLTEyMDcwLDcgKzEyMTAyLDYgQEAgVGhlIGRlZmF1bHQg dmFsdWUgb2YgQHZhcntib3JkZXJ3fSBpcyAwLgogQGl0ZW0gYm9yZGVyY29sb3IKIFNldCB0 aGUgY29sb3IgdG8gYmUgdXNlZCBmb3IgZHJhd2luZyBib3JkZXIgYXJvdW5kIHRleHQuIEZv ciB0aGUgc3ludGF4IG9mIHRoaXMKIG9wdGlvbiwgY2hlY2sgdGhlIEByZWZ7Y29sb3Igc3lu dGF4LCwiQ29sb3IiIHNlY3Rpb24gaW4gdGhlIGZmbXBlZy11dGlscyBtYW51YWwsZmZtcGVn LXV0aWxzfS4KLQogVGhlIGRlZmF1bHQgdmFsdWUgb2YgQHZhcntib3JkZXJjb2xvcn0gaXMg ImJsYWNrIi4KIAogQGl0ZW0gZXhwYW5zaW9uCkBAIC0xMjE2OCwxMCArMTIxOTksNiBAQCB2 YWx1ZXMuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBib3RoIGlzICIwIi4KIFRoZSBzdGFydGlu ZyBmcmFtZSBudW1iZXIgZm9yIHRoZSBuL2ZyYW1lX251bSB2YXJpYWJsZS4gVGhlIGRlZmF1 bHQgdmFsdWUKIGlzICIwIi4KIAotQGl0ZW0gdGFic2l6ZQotVGhlIHNpemUgaW4gbnVtYmVy IG9mIHNwYWNlcyB0byB1c2UgZm9yIHJlbmRlcmluZyB0aGUgdGFiLgotRGVmYXVsdCB2YWx1 ZSBpcyA0LgotCiBAaXRlbSB0aW1lY29kZQogU2V0IHRoZSBpbml0aWFsIHRpbWVjb2RlIHJl cHJlc2VudGF0aW9uIGluICJoaDptbTpzc1s6Oy5dZmYiCiBmb3JtYXQuIEl0IGNhbiBiZSB1 c2VkIHdpdGggb3Igd2l0aG91dCB0ZXh0IHBhcmFtZXRlci4gQHZhcnt0aW1lY29kZV9yYXRl fQpAQCAtMTIyNjksNiArMTIyOTYsMTggQEAgY29udGFpbmVkIGluIHRoZSByZW5kZXJlZCB0 ZXh0LCBpdCBpcyBlcXVpdmFsZW50IHRvIEB2YXJ7YXNjZW50fSAtCiBtYXhpbXVtIGdseXBo IHdpZHRoLCB0aGF0IGlzIHRoZSBtYXhpbXVtIHdpZHRoIGZvciBhbGwgdGhlIGdseXBocwog Y29udGFpbmVkIGluIHRoZSByZW5kZXJlZCB0ZXh0CiAKK0BpdGVtIGZvbnRfYQordGhlIGFz Y2VudCBzaXplIGRlZmluZWQgaW4gdGhlIGZvbnQgbWV0cmljcworCitAaXRlbSBmb250X2QK K3RoZSBkZXNjZW50IHNpemUgZGVmaW5lZCBpbiB0aGUgZm9udCBtZXRyaWNzCisKK0BpdGVt IHRvcF9hCit0aGUgbWF4aW11bSBhc2NlbmRlciBvZiB0aGUgZ2x5cGhzIG9mIHRoZSBmaXJz dCB0ZXh0IGxpbmUKKworQGl0ZW0gYm90dG9tX2QKK3RoZSBtYXhpbXVtIGRlc2NlbmRlciBv ZiB0aGUgZ2x5cGhzIG9mIHRoZSBsYXN0IHRleHQgbGluZQorCiBAaXRlbSBuCiB0aGUgbnVt YmVyIG9mIGlucHV0IGZyYW1lLCBzdGFydGluZyBmcm9tIDAKIApAQCAtMTI0MzMsMTEgKzEy NDcyLDM0IEBAIEZ1bGwgZmlsdGVyIGludm9jYXRpb24gd2l0aCBzZW5kY21kIHdvdWxkIGxv b2sgbGlrZSB0aGlzOgogQGV4YW1wbGUKIHNlbmRjbWQ9Yz0nNTYuMCBkcmF3dGV4dCByZWlu aXQgZm9udHNpemU9NTZcOmZvbnRjb2xvcj1ncmVlblw6dGV4dD1IZWxsb1xcIFdvcmxkJwog QGVuZCBleGFtcGxlCi1AZW5kIHRhYmxlCiAKIElmIHRoZSBlbnRpcmUgYXJndW1lbnQgY2Fu J3QgYmUgcGFyc2VkIG9yIGFwcGxpZWQgYXMgdmFsaWQgdmFsdWVzIHRoZW4gdGhlIGZpbHRl ciB3aWxsCiBjb250aW51ZSB3aXRoIGl0cyBleGlzdGluZyBwYXJhbWV0ZXJzLgogCitAZW5k IHRhYmxlCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWxzbyBzdXBwb3J0ZWQgYXMg QHJlZntjb21tYW5kc306CisKK0BpdGVtaXplIEBidWxsZXQKK0BpdGVtIHgKK0BpdGVtIHkK K0BpdGVtIGFscGhhCitAaXRlbSBmb250c2l6ZQorQGl0ZW0gZm9udGNvbG9yCitAaXRlbSBi b3hjb2xvcgorQGl0ZW0gYm9yZGVyY29sb3IKK0BpdGVtIHNoYWRvd2NvbG9yCitAaXRlbSBi b3gKK0BpdGVtIGJveHcKK0BpdGVtIGJveGgKK0BpdGVtIGJveGJvcmRlcncKK0BpdGVtIGxp bmVfc3BhY2luZworQGl0ZW0gdGV4dF9hbGlnbgorQGl0ZW0gc2hhZG93eAorQGl0ZW0gc2hh ZG93eQorQGl0ZW0gYm9yZGVydworQGVuZCBpdGVtaXplCisKIEBzdWJzZWN0aW9uIEV4YW1w bGVzCiAKIEBpdGVtaXplCkBAIC0xMjU1OSw2ICsxMjYyMSw5IEBAIEZvciBtb3JlIGluZm9y bWF0aW9uIGFib3V0IGZvbnRjb25maWcsIGNoZWNrOgogRm9yIG1vcmUgaW5mb3JtYXRpb24g YWJvdXQgbGliZnJpYmlkaSwgY2hlY2s6CiBAdXJse2h0dHA6Ly9mcmliaWRpLm9yZy99Lgog CitGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBsaWJoYXJmYnV6eiwgY2hlY2s6CitAdXJs e2h0dHBzOi8vZ2l0aHViLmNvbS9oYXJmYnV6ei9oYXJmYnV6en0uCisKIEBzZWN0aW9uIGVk Z2VkZXRlY3QKIAogRGV0ZWN0IGFuZCBkcmF3IGVkZ2VzLiBUaGUgZmlsdGVyIHVzZXMgdGhl IENhbm55IEVkZ2UgRGV0ZWN0aW9uIGFsZ29yaXRobS4KZGlmZiAtLWdpdCBhL2xpYmF2Zmls dGVyL3ZmX2RyYXd0ZXh0LmMgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCmluZGV4IDUw MDEyYmIyNTguLjAwNTA3MGI4MjUgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0 ZXh0LmMKKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwpAQCAtMSw0ICsxLDUgQEAK IC8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjMgRnJhbmNlc2NvIENhcnVzaQogICogQ29weXJp Z2h0IChjKSAyMDExIFN0ZWZhbm8gU2FiYXRpbmkKICAqIENvcHlyaWdodCAoYykgMjAxMCBT Lk4uIEhlbWFudGggTWVlbmFrc2hpc3VuZGFyYW0KICAqIENvcHlyaWdodCAoYykgMjAwMyBH dXN0YXZvIFN2ZXJ6dXQgQmFyYmllcmkgPGdzYmFyYmllcmlAeWFob28uY29tLmJyPgpAQCAt MjAsNiArMjEsMjYgQEAKICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKICAqLwogCisvKgor ICogQ2hhbmdlbG9nIC0gMjAyMworICoKKyAqIC0gVGhpcyBmaWx0ZXIgbm93IGRlcGVuZHMg b24gbGliaGFyZmJ1enogZm9yIHRleHQgc2hhcGluZy4KKyAqIC0gR2x5cGhzIHBvc2l0aW9u IGlzIG5vdyBhY2N1cmF0ZSB0byAxLzQgcGl4ZWwgaW4gYm90aCBkaXJlY3Rpb25zCisgKiAt IFRoZSBzaXplIG9mIHRoZSBiYWNrZ3JvdW5kIGJveCBjYW4gbm93IGJlIGZvcmNlZCB3aXRo IHRoZSBib3h3CisgKiAgIGFuZCBib3hoIHBhcmFtZXRlcnMKKyAqIC0gVGV4dCBjYW4gYmUg YWxpZ25lZCBob3Jpem9udGFsbHkgKHRvcCwgbWlkZGxlLCBib3R0b20pIGFuZCB2ZXJ0aWNh bGx5CisgKiAgIChsZWZ0LCBjZW50ZXIsIHJpZ2h0KSByZWxhdGl2ZSB0byB0aGUgYmFja2dy b3VuZCBib3gKKyAqIC0gVGhlIGRlZmF1bHQgbGluZSBoZWlnaHQgaXMgbm93IHRoZSBvbmUg ZGVmaW5lZCBpbiB0aGUgZm9udAorICogLSBUaGUgbmV3IHlfYWxpZ24gcGFyYW1ldGVyIHNw ZWNpZmllcyBpZiB0aGUgdXNlciBwcm92aWRlZCB5IHZhbHVlIGlzCisgKiAgIHJlZmVycmVk IHRvIHRoZSB0b3Agb2YgdGhlIHRleHQsIHRvIHRoZSBmb250IGJhc2VsaW5lIG9yIHRvIHRo ZQorICogICB0b3Agb2YgdGhlIGZvbnQuCisgKiAtIFRoZSBib3hib3JkZXJ3IHBhcmFtZXRl ciBjYW4gbm93IGNvbnRhaW4gYSBkaWZmZXJlbnQgdmFsdWUgZm9yIGVhY2ggYm9yZGVyCisg KiAgIChlLmcuIGJveGJvcmRlcnc9dG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KQorICogLSBNYW55 IGZpbHRlciBwYXJhbWV0ZXJzIGFyZSBub3cgc3VwcG9ydGVkIGFzIGNvbW1hbmRzLgorICog LSBUaGUgZm9sbG93aW5nIG5ldyB2YXJpYWJsZXMgY2FuIGJlIHVzZWQgaW4gdGhlIHggYW5k IHkgZXhwcmVzc2lvbnM6CisgKiAgIGZvbnRfYSwgZm9udF9kLCB0b3BfYSwgYm90dG9tX2QK KyAqLworCiAvKioKICAqIEBmaWxlCiAgKiBkcmF3dGV4dCBmaWx0ZXIsIGJhc2VkIG9uIHRo ZSBvcmlnaW5hbCB2aG9vay9kcmF3dGV4dC5jCkBAIC03MiwxNiArOTMsMjYgQEAKICNpbmNs dWRlIEZUX0dMWVBIX0gKICNpbmNsdWRlIEZUX1NUUk9LRVJfSAogCisjaW5jbHVkZSA8aGIu aD4KKyNpbmNsdWRlIDxoYi1mdC5oPgorCisvLyBDZWlsaW5nIG9wZXJhdGlvbiBmb3IgcG9z aXRpdmUgaW50ZWdlcnMgZGl2aXNpb24KKyNkZWZpbmUgUE9TX0NFSUwoeCwgeSkgKCh4KS8o eSkgKyAoKHgpJSh5KSAhPSAwKSkKKwogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHZhcl9u YW1lc1tdID0gewogICAgICJkYXIiLAogICAgICJoc3ViIiwgInZzdWIiLAotICAgICJsaW5l X2giLCAibGgiLCAgICAgICAgICAgLy8vPCBsaW5lIGhlaWdodCwgc2FtZSBhcyBtYXhfZ2x5 cGhfaAorICAgICJsaW5lX2giLCAibGgiLCAgICAgICAgICAgLy8vPCBsaW5lIGhlaWdodAog ICAgICJtYWluX2giLCAiaCIsICJIIiwgICAgICAgLy8vPCBoZWlnaHQgb2YgdGhlIGlucHV0 IHZpZGVvCiAgICAgIm1haW5fdyIsICJ3IiwgIlciLCAgICAgICAvLy88IHdpZHRoICBvZiB0 aGUgaW5wdXQgdmlkZW8KLSAgICAibWF4X2dseXBoX2EiLCAiYXNjZW50IiwgIC8vLzwgbWF4 IGdseXBoIGFzY2VudAotICAgICJtYXhfZ2x5cGhfZCIsICJkZXNjZW50IiwgLy8vPCBtaW4g Z2x5cGggZGVzY2VudAorICAgICJtYXhfZ2x5cGhfYSIsICJhc2NlbnQiLCAgLy8vPCBtYXgg Z2x5cGggYXNjZW5kZXIKKyAgICAibWF4X2dseXBoX2QiLCAiZGVzY2VudCIsIC8vLzwgbWlu IGdseXBoIGRlc2NlbmRlcgogICAgICJtYXhfZ2x5cGhfaCIsICAgICAgICAgICAgLy8vPCBt YXggZ2x5cGggaGVpZ2h0CiAgICAgIm1heF9nbHlwaF93IiwgICAgICAgICAgICAvLy88IG1h eCBnbHlwaCB3aWR0aAorICAgICJmb250X2EiLCAgICAgICAgICAgICAgICAgLy8vPCBmb250 LWRlZmluZWQgYXNjZW50CisgICAgImZvbnRfZCIsICAgICAgICAgICAgICAgICAvLy88IGZv bnQtZGVmaW5lZCBkZXNjZW50CisgICAgInRvcF9hIiwgICAgICAgICAgICAgICAgICAvLy88 IG1heCBnbHlwaCBhc2NlbmRlciBvZiB0aGUgdG9wIGxpbmUKKyAgICAiYm90dG9tX2QiLCAg ICAgICAgICAgICAgIC8vLzwgbWF4IGdseXBoIGRlc2NlbmRlciBvZiB0aGUgYm90dG9tIGxp bmUKICAgICAibiIsICAgICAgICAgICAgICAgICAgICAgIC8vLzwgbnVtYmVyIG9mIGZyYW1l CiAgICAgInNhciIsCiAgICAgInQiLCAgICAgICAgICAgICAgICAgICAgICAvLy88IHRpbWVz dGFtcCBleHByZXNzZWQgaW4gc2Vjb25kcwpAQCAtMTI1LDYgKzE1NiwxMCBAQCBlbnVtIHZh cl9uYW1lIHsKICAgICBWQVJfTUFYX0dMWVBIX0QsIFZBUl9ERVNDRU5ULAogICAgIFZBUl9N QVhfR0xZUEhfSCwKICAgICBWQVJfTUFYX0dMWVBIX1csCisgICAgVkFSX0ZPTlRfQSwKKyAg ICBWQVJfRk9OVF9ELAorICAgIFZBUl9UT1BfQSwKKyAgICBWQVJfQk9UVE9NX0QsCiAgICAg VkFSX04sCiAgICAgVkFSX1NBUiwKICAgICBWQVJfVCwKQEAgLTE0OCwxMiArMTgzLDg0IEBA IGVudW0gZXhwYW5zaW9uX21vZGUgewogICAgIEVYUF9TVFJGVElNRSwKIH07CiAKK2VudW0g eV9hbGlnbm1lbnQgeworICAgIFlBX1RFWFQsCisgICAgWUFfQkFTRUxJTkUsCisgICAgWUFf Rk9OVCwKK307CisKK3R5cGVkZWYgc3RydWN0IEhhcmZidXp6RGF0YSB7CisgICAgaGJfYnVm ZmVyX3QqIGJ1ZjsKKyAgICBoYl9mb250X3QqIGZvbnQ7CisgICAgdW5zaWduZWQgaW50IGds eXBoX2NvdW50OworICAgIGhiX2dseXBoX2luZm9fdCogZ2x5cGhfaW5mbzsKKyAgICBoYl9n bHlwaF9wb3NpdGlvbl90KiBnbHlwaF9wb3M7Cit9IEhhcmZidXp6RGF0YTsKKworLyoqIElu Zm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGdseXBoIGluIGEgdGV4dCBsaW5lICovCit0eXBl ZGVmIHN0cnVjdCBHbHlwaEluZm8geworICAgIHVpbnQzMl90IGNvZGU7ICAgICAgICAgICAg ICAgICAgLy8vPCB0aGUgZ2x5cGggY29kZSBwb2ludAorICAgIGludCB4OyAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8vPCB0aGUgeCBwb3NpdGlvbiBvZiB0aGUgZ2x5cGgKKyAgICBp bnQgeTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgdGhlIHkgcG9zaXRpb24gb2Yg dGhlIGdseXBoCisgICAgaW50IHNoaWZ0X3g2NDsgICAgICAgICAgICAgICAgICAvLy88IHRo ZSBob3Jpem9udGFsIHNoaWZ0IG9mIHRoZSBnbHlwaCBpbiAyNi42IHVuaXRzCisgICAgaW50 IHNoaWZ0X3k2NDsgICAgICAgICAgICAgICAgICAvLy88IHRoZSB2ZXJ0aWNhbCBzaGlmdCBv ZiB0aGUgZ2x5cGggaW4gMjYuNiB1bml0cworfSBHbHlwaEluZm87CisKKy8qKiBJbmZvcm1h dGlvbiBhYm91dCBhIHNpbmdsZSBsaW5lIG9mIHRleHQgKi8KK3R5cGVkZWYgc3RydWN0IFRl eHRMaW5lIHsKKyAgICBpbnQgb2Zmc2V0X2xlZnQ2NDsgICAgICAgICAgICAgIC8vLzwgb2Zm c2V0IGJldHdlZW4gdGhlIG9yaWdpbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vLyAgdGhlIGxlZnRtb3N0IHBpeGVsIG9mIHRoZSBmaXJzdCBnbHlwaAor ICAgIGludCBvZmZzZXRfcmlnaHQ2NDsgICAgICAgICAgICAgLy8vPCBtYXhpbXVtIG9mZnNl dCBiZXR3ZWVuIHRoZSBvcmlnaW4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLy8gIHRoZSByaWdodG1vc3QgcGl4ZWwgb2YgdGhlIGxhc3QgZ2x5cGgKKyAg ICBpbnQgd2lkdGg2NDsgICAgICAgICAgICAgICAgICAgIC8vLzwgd2lkdGggb2YgdGhlIGxp bmUKKyAgICBIYXJmYnV6ekRhdGEgaGJfZGF0YTsgICAgICAgICAgIC8vLzwgbGliaGFyZmJ1 enogZGF0YSBvZiB0aGlzIHRleHQgbGluZQorICAgIEdseXBoSW5mbyogZ2x5cGhzOyAgICAg ICAgICAgICAgLy8vPCBhcnJheSBvZiBnbHlwaHMgaW4gdGhpcyB0ZXh0IGxpbmUKKyAgICBp bnQgY2x1c3Rlcl9vZmZzZXQ7ICAgICAgICAgICAgIC8vLzwgdGhlIG9mZnNldCBhdCB3aGlj aCB0aGlzIGxpbmUgYmVnaW5zCit9IFRleHRMaW5lOworCisvKiogQSBnbHlwaCBhcyBsb2Fk ZWQgYW5kIHJlbmRlcmVkIHVzaW5nIGxpYmZyZWV0eXBlICovCit0eXBlZGVmIHN0cnVjdCBH bHlwaCB7CisgICAgRlRfR2x5cGggZ2x5cGg7CisgICAgRlRfR2x5cGggYm9yZGVyX2dseXBo OworICAgIHVpbnQzMl90IGNvZGU7CisgICAgdW5zaWduZWQgaW50IGZvbnRzaXplOworICAg IC8qKiBHbHlwaCBiaXRtYXBzIHdpdGggMS80IHBpeGVsIHByZWNpc2lvbiBpbiBib3RoIGRp cmVjdGlvbnMgKi8KKyAgICBGVF9CaXRtYXBHbHlwaCBiZ2x5cGhbMTZdOworICAgIC8qKiBP dXRsaW5lZCBnbHlwaCBiaXRtYXBzIHdpdGggMS80IHBpeGVsIHByZWNpc2lvbiBpbiBib3Ro IGRpcmVjdGlvbnMgKi8KKyAgICBGVF9CaXRtYXBHbHlwaCBib3JkZXJfYmdseXBoWzE2XTsK KyAgICBGVF9CQm94IGJib3g7Cit9IEdseXBoOworCisvKiogR2xvYmFsIHRleHQgbWV0cmlj cyAqLwordHlwZWRlZiBzdHJ1Y3QgVGV4dE1ldHJpY3MgeworICAgIGludCBvZmZzZXRfdG9w NjQ7ICAgICAgICAgICAgICAgLy8vPCBhc2NlbmRlciBhbW91bnQgb2YgdGhlIGZpcnN0IGxp bmUgKGluIDI2LjYgdW5pdHMpCisgICAgaW50IG9mZnNldF9ib3R0b202NDsgICAgICAgICAg ICAvLy88IGRlc2NlbmRlciBhbW91bnQgb2YgdGhlIGxhc3QgbGluZSAoaW4gMjYuNiB1bml0 cykKKyAgICBpbnQgb2Zmc2V0X2xlZnQ2NDsgICAgICAgICAgICAgIC8vLzwgbWF4aW11bSBv ZmZzZXQgYmV0d2VlbiB0aGUgb3JpZ2luIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8vICB0aGUgbGVmdG1vc3QgcGl4ZWwgb2YgdGhlIGZpcnN0IGdseXBo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8gIG9mIGVhY2ggbGlu ZSAoaW4gMjYuNiB1bml0cykKKyAgICBpbnQgb2Zmc2V0X3JpZ2h0NjQ7ICAgICAgICAgICAg IC8vLzwgbWF4aW11bSBvZmZzZXQgYmV0d2VlbiB0aGUgb3JpZ2luIGFuZAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vICB0aGUgcmlnaHRtb3N0IHBpeGVsIG9m IHRoZSBsYXN0IGdseXBoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv Ly8gIG9mIGVhY2ggbGluZSAoaW4gMjYuNiB1bml0cykKKyAgICBpbnQgbGluZV9oZWlnaHQ2 NDsgICAgICAgICAgICAgIC8vLzwgdGhlIGZvbnQtZGVmaW5lZCBsaW5lIGhlaWdodAorICAg IGludCB3aWR0aDsgICAgICAgICAgICAgICAgICAgICAgLy8vPCB3aWR0aCBvZiB0aGUgbG9u Z2VzdCBsaW5lIC0gY2VpbCh3aWR0aDY0LzY0KQorICAgIGludCBoZWlnaHQ7ICAgICAgICAg ICAgICAgICAgICAgLy8vPCB0b3RhbCBoZWlnaHQgb2YgdGhlIHRleHQgLSBjZWlsKGhlaWdo dDY0LzY0KQorCisgICAgaW50IG1pbl95NjQ7ICAgICAgICAgICAgICAgICAgICAvLy88IG1p bmltdW0gdmFsdWUgb2YgYmJveC55TWluIGFtb25nIGdseXBocyAoaW4gMjYuNiB1bml0cykK KyAgICBpbnQgbWF4X3k2NDsgICAgICAgICAgICAgICAgICAgIC8vLzwgbWF4aW11bSB2YWx1 ZSBvZiBiYm94LnlNYXggYW1vbmcgZ2x5cGhzIChpbiAyNi42IHVuaXRzKQorICAgIGludCBt aW5feDY0OyAgICAgICAgICAgICAgICAgICAgLy8vPCBtaW5pbXVtIHZhbHVlIG9mIGJib3gu eE1pbiBhbW9uZyBnbHlwaHMgKGluIDI2LjYgdW5pdHMpCisgICAgaW50IG1heF94NjQ7ICAg ICAgICAgICAgICAgICAgICAvLy88IG1heGltdW0gdmFsdWUgb2YgYmJveC54TWF4IGFtb25n IGdseXBocyAoaW4gMjYuNiB1bml0cykKKworICAgIC8vIFBvc2l0aW9uIG9mIHRoZSBiYWNr Z3JvdW5kIGJveCAod2l0aG91dCBib3JkZXJzKQorICAgIGludCByZWN0X3g7ICAgICAgICAg ICAgICAgICAgICAgLy8vPCB4IHBvc2l0aW9uIG9mIHRoZSBib3gKKyAgICBpbnQgcmVjdF95 OyAgICAgICAgICAgICAgICAgICAgIC8vLzwgeSBwb3NpdGlvbiBvZiB0aGUgYm94Cit9IFRl eHRNZXRyaWNzOworCiB0eXBlZGVmIHN0cnVjdCBEcmF3VGV4dENvbnRleHQgewogICAgIGNv bnN0IEFWQ2xhc3MgKmNsYXNzOwogICAgIGludCBleHBfbW9kZTsgICAgICAgICAgICAgICAg ICAgLy8vPCBleHBhbnNpb24gbW9kZSB0byB1c2UgZm9yIHRoZSB0ZXh0CiAgICAgaW50IHJl aW5pdDsgICAgICAgICAgICAgICAgICAgICAvLy88IHRlbGxzIGlmIHRoZSBmaWx0ZXIgaXMg YmVpbmcgcmVpbml0ZWQKICNpZiBDT05GSUdfTElCRk9OVENPTkZJRwotICAgIHVpbnQ4X3Qg KmZvbnQ7ICAgICAgICAgICAgICAvLy88IGZvbnQgdG8gYmUgdXNlZAorICAgIHVpbnQ4X3Qg KmZvbnQ7ICAgICAgICAgICAgICAgICAgLy8vPCBmb250IHRvIGJlIHVzZWQKICNlbmRpZgog ICAgIHVpbnQ4X3QgKmZvbnRmaWxlOyAgICAgICAgICAgICAgLy8vPCBmb250IHRvIGJlIHVz ZWQKICAgICB1aW50OF90ICp0ZXh0OyAgICAgICAgICAgICAgICAgIC8vLzwgdGV4dCB0byBi ZSBkcmF3bgpAQCAtMTYxLDExICsyNjgsOSBAQCB0eXBlZGVmIHN0cnVjdCBEcmF3VGV4dENv bnRleHQgewogICAgIHVpbnQ4X3QgKmZvbnRjb2xvcl9leHByOyAgICAgICAgLy8vPCBmb250 Y29sb3IgZXhwcmVzc2lvbiB0byBldmFsdWF0ZQogICAgIEFWQlByaW50IGV4cGFuZGVkX2Zv bnRjb2xvcjsgICAgLy8vPCB1c2VkIHRvIGNvbnRhaW4gdGhlIGV4cGFuZGVkIGZvbnRjb2xv ciBzcGVjCiAgICAgaW50IGZ0X2xvYWRfZmxhZ3M7ICAgICAgICAgICAgICAvLy88IGZsYWdz IHVzZWQgZm9yIGxvYWRpbmcgZm9udHMsIHNlZSBGVF9MT0FEXyoKLSAgICBGVF9WZWN0b3Ig KnBvc2l0aW9uczsgICAgICAgICAgIC8vLzwgcG9zaXRpb25zIGZvciBlYWNoIGVsZW1lbnQg aW4gdGhlIHRleHQKLSAgICBzaXplX3QgbmJfcG9zaXRpb25zOyAgICAgICAgICAgIC8vLzwg bnVtYmVyIG9mIGVsZW1lbnRzIG9mIHBvc2l0aW9ucyBhcnJheQogICAgIGNoYXIgKnRleHRm aWxlOyAgICAgICAgICAgICAgICAgLy8vPCBmaWxlIHdpdGggdGV4dCB0byBiZSBkcmF3bgot ICAgIGludCB4OyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCB4IHBvc2l0aW9uIHRv IHN0YXJ0IGRyYXdpbmcgdGV4dAotICAgIGludCB5OyAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8vPCB5IHBvc2l0aW9uIHRvIHN0YXJ0IGRyYXdpbmcgdGV4dAorICAgIGRvdWJsZSB4 OyAgICAgICAgICAgICAgICAgICAgICAgLy8vPCB4IHBvc2l0aW9uIHRvIHN0YXJ0IGRyYXdp bmcgdGV4dAorICAgIGRvdWJsZSB5OyAgICAgICAgICAgICAgICAgICAgICAgLy8vPCB5IHBv c2l0aW9uIHRvIHN0YXJ0IGRyYXdpbmcgdGV4dAogICAgIGludCBtYXhfZ2x5cGhfdzsgICAg ICAgICAgICAgICAgLy8vPCBtYXggZ2x5cGggd2lkdGgKICAgICBpbnQgbWF4X2dseXBoX2g7 ICAgICAgICAgICAgICAgIC8vLzwgbWF4IGdseXBoIGhlaWdodAogICAgIGludCBzaGFkb3d4 LCBzaGFkb3d5OwpAQCAtMTc3LDggKzI4MiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBEcmF3VGV4 dENvbnRleHQgewogCiAgICAgaW50IGxpbmVfc3BhY2luZzsgICAgICAgICAgICAgICAvLy88 IGxpbmVzIHNwYWNpbmcgaW4gcGl4ZWxzCiAgICAgc2hvcnQgaW50IGRyYXdfYm94OyAgICAg ICAgICAgICAvLy88IGRyYXcgYm94IGFyb3VuZCB0ZXh0IC0gdHJ1ZSBvciBmYWxzZQotICAg IGludCBib3hib3JkZXJ3OyAgICAgICAgICAgICAgICAgLy8vPCBib3ggYm9yZGVyIHdpZHRo Ci0gICAgaW50IHVzZV9rZXJuaW5nOyAgICAgICAgICAgICAgICAvLy88IGZvbnQga2Vybmlu ZyBpcyB1c2VkIC0gdHJ1ZS9mYWxzZQorICAgIGNoYXIqIGJveGJvcmRlcnc7ICAgICAgICAg ICAgICAgLy8vPCBib3ggYm9yZGVyIHdpZHRoIChwYWRkaW5nKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8vICBhbGxvd2VkIGZvcm1hdHM6ICJhbGwiLCAidmVy dHxvcml6IiwgInRvcHxyaWdodHxib3R0b218bGVmdCIKKyAgICBpbnQgYmJfdG9wOyAgICAg ICAgICAgICAgICAgICAgIC8vLzwgdGhlIHNpemUgb2YgdGhlIHRvcCBib3ggYm9yZGVyCisg ICAgaW50IGJiX3JpZ2h0OyAgICAgICAgICAgICAgICAgICAvLy88IHRoZSBzaXplIG9mIHRo ZSByaWdodCBib3ggYm9yZGVyCisgICAgaW50IGJiX2JvdHRvbTsgICAgICAgICAgICAgICAg ICAvLy88IHRoZSBzaXplIG9mIHRoZSBib3R0b20gYm94IGJvcmRlcgorICAgIGludCBiYl9s ZWZ0OyAgICAgICAgICAgICAgICAgICAgLy8vPCB0aGUgc2l6ZSBvZiB0aGUgbGVmdCBib3gg Ym9yZGVyCisgICAgaW50IGJveF93aWR0aDsgICAgICAgICAgICAgICAgICAvLy88IHRoZSB3 aWR0aCBvZiBib3gKKyAgICBpbnQgYm94X2hlaWdodDsgICAgICAgICAgICAgICAgIC8vLzwg dGhlIGhlaWdodCBvZiBib3gKICAgICBpbnQgdGFic2l6ZTsgICAgICAgICAgICAgICAgICAg IC8vLzwgdGFiIHNpemUKICAgICBpbnQgZml4X2JvdW5kczsgICAgICAgICAgICAgICAgIC8v LzwgZG8gd2UgbGV0IGl0IGdvIG91dCBvZiBmcmFtZSBib3VuZHMgLSB0L2YKIApAQCAtMjEz LDMxICszMjQsNDYgQEAgdHlwZWRlZiBzdHJ1Y3QgRHJhd1RleHRDb250ZXh0IHsKICAgICBp bnQgdGV4dF9zaGFwaW5nOyAgICAgICAgICAgICAgIC8vLzwgMSB0byBzaGFwZSB0aGUgdGV4 dCBiZWZvcmUgZHJhd2luZyBpdAogI2VuZGlmCiAgICAgQVZEaWN0aW9uYXJ5ICptZXRhZGF0 YTsKKworICAgIGludCBib3h3OyAgICAgICAgICAgICAgICAgICAgICAgLy8vPCB0aGUgdmFs dWUgb2YgdGhlIGJveHcgcGFyYW1ldGVyCisgICAgaW50IGJveGg7ICAgICAgICAgICAgICAg ICAgICAgICAvLy88IHRoZSB2YWx1ZSBvZiB0aGUgYm94aCBwYXJhbWV0ZXIKKyAgICB1aW50 OF90ICp0ZXh0X2FsaWduOyAgICAgICAgICAgIC8vLzwgdGhlIGhvcml6b250YWwgYW5kIHZl cnRpY2FsIHRleHQgYWxpZ25tZW50CisgICAgaW50IHlfYWxpZ247ICAgICAgICAgICAgICAg ICAgICAvLy88IHRoZSB2YWx1ZSBvZiB0aGUgeV9hbGlnbiBwYXJhbWV0ZXIKKworICAgIFRl eHRMaW5lICpsaW5lczsgICAgICAgICAgICAgICAgLy8vPCBjb21wdXRlZCBpbmZvcm1hdGlv biBhYm91dCB0ZXh0IGxpbmVzCisgICAgaW50IGxpbmVfY291bnQ7ICAgICAgICAgICAgICAg ICAvLy88IHRoZSBudW1iZXIgb2YgdGV4dCBsaW5lcworICAgIHVpbnQzMl90ICp0YWJfY2x1 c3RlcnM7ICAgICAgICAgLy8vPCB0aGUgcG9zaXRpb24gb2YgdGFiIGNoYXJhY3RlcnMgaW4g dGhlIHRleHQKKyAgICBpbnQgdGFiX2NvdW50OyAgICAgICAgICAgICAgICAgIC8vLzwgdGhl IG51bWJlciBvZiB0YWIgY2hhcmFjdGVycworICAgIGludCBibGFua19hZHZhbmNlNjQ7ICAg ICAgICAgICAgLy8vPCB0aGUgc2l6ZSBvZiB0aGUgc3BhY2UgY2hhcmFjdGVyCiB9IERyYXdU ZXh0Q29udGV4dDsKIAogI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoRHJhd1RleHRDb250 ZXh0LCB4KQogI2RlZmluZSBGTEFHUyBBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFSQU18QVZf T1BUX0ZMQUdfVklERU9fUEFSQU0KKyNkZWZpbmUgVEZMQUdTIEFWX09QVF9GTEFHX0ZJTFRF UklOR19QQVJBTXxBVl9PUFRfRkxBR19WSURFT19QQVJBTXxBVl9PUFRfRkxBR19SVU5USU1F X1BBUkFNCiAKIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBkcmF3dGV4dF9vcHRpb25zW109IHsK LSAgICB7ImZvbnRmaWxlIiwgICAgInNldCBmb250IGZpbGUiLCAgICAgICAgT0ZGU0VUKGZv bnRmaWxlKSwgICAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sICAw LCAwLCBGTEFHU30sCi0gICAgeyJ0ZXh0IiwgICAgICAgICJzZXQgdGV4dCIsICAgICAgICAg ICAgIE9GRlNFVCh0ZXh0KSwgICAgICAgICAgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsu c3RyPU5VTEx9LCAgMCwgMCwgRkxBR1N9LAotICAgIHsidGV4dGZpbGUiLCAgICAic2V0IHRl eHQgZmlsZSIsICAgICAgICBPRkZTRVQodGV4dGZpbGUpLCAgICAgICAgICAgQVZfT1BUX1RZ UEVfU1RSSU5HLCB7LnN0cj1OVUxMfSwgIDAsIDAsIEZMQUdTfSwKLSAgICB7ImZvbnRjb2xv ciIsICAgInNldCBmb3JlZ3JvdW5kIGNvbG9yIiwgT0ZGU0VUKGZvbnRjb2xvci5yZ2JhKSwg ICAgIEFWX09QVF9UWVBFX0NPTE9SLCAgey5zdHI9ImJsYWNrIn0sIDAsIDAsIEZMQUdTfSwK KyAgICB7ImZvbnRmaWxlIiwgICAgICAgInNldCBmb250IGZpbGUiLCAgICAgICAgIE9GRlNF VChmb250ZmlsZSksICAgICAgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9 LCAgMCwgMCwgRkxBR1N9LAorICAgIHsidGV4dCIsICAgICAgICAgICAic2V0IHRleHQiLCAg ICAgICAgICAgICAgT0ZGU0VUKHRleHQpLCAgICAgICAgICAgICAgIEFWX09QVF9UWVBFX1NU UklORywgey5zdHI9TlVMTH0sICAwLCAwLCBURkxBR1N9LAorICAgIHsidGV4dGZpbGUiLCAg ICAgICAic2V0IHRleHQgZmlsZSIsICAgICAgICAgT0ZGU0VUKHRleHRmaWxlKSwgICAgICAg ICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sICAwLCAwLCBGTEFHU30sCisg ICAgeyJmb250Y29sb3IiLCAgICAgICJzZXQgZm9yZWdyb3VuZCBjb2xvciIsICBPRkZTRVQo Zm9udGNvbG9yLnJnYmEpLCAgICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7LnN0cj0iYmxhY2si fSwgMCwgMCwgVEZMQUdTfSwKICAgICB7ImZvbnRjb2xvcl9leHByIiwgInNldCBmb3JlZ3Jv dW5kIGNvbG9yIGV4cHJlc3Npb24iLCBPRkZTRVQoZm9udGNvbG9yX2V4cHIpLCBBVl9PUFRf VFlQRV9TVFJJTkcsIHsuc3RyPSIifSwgMCwgMCwgRkxBR1N9LAotICAgIHsiYm94Y29sb3Ii LCAgICAic2V0IGJveCBjb2xvciIsICAgICAgICBPRkZTRVQoYm94Y29sb3IucmdiYSksICAg ICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7LnN0cj0id2hpdGUifSwgMCwgMCwgRkxBR1N9LAot ICAgIHsiYm9yZGVyY29sb3IiLCAic2V0IGJvcmRlciBjb2xvciIsICAgICBPRkZTRVQoYm9y ZGVyY29sb3IucmdiYSksICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7LnN0cj0iYmxhY2sifSwg MCwgMCwgRkxBR1N9LAotICAgIHsic2hhZG93Y29sb3IiLCAic2V0IHNoYWRvdyBjb2xvciIs ICAgICBPRkZTRVQoc2hhZG93Y29sb3IucmdiYSksICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7 LnN0cj0iYmxhY2sifSwgMCwgMCwgRkxBR1N9LAotICAgIHsiYm94IiwgICAgICAgICAic2V0 IGJveCIsICAgICAgICAgICAgICBPRkZTRVQoZHJhd19ib3gpLCAgICAgICAgICAgQVZfT1BU X1RZUEVfQk9PTCwgICB7Lmk2ND0wfSwgICAgIDAsICAgICAgICAxICAgICAgICwgRkxBR1N9 LAotICAgIHsiYm94Ym9yZGVydyIsICAic2V0IGJveCBib3JkZXIgd2lkdGgiLCBPRkZTRVQo Ym94Ym9yZGVydyksICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAg IElOVF9NSU4sICBJTlRfTUFYICwgRkxBR1N9LAotICAgIHsibGluZV9zcGFjaW5nIiwgICJz ZXQgbGluZSBzcGFjaW5nIGluIHBpeGVscyIsIE9GRlNFVChsaW5lX3NwYWNpbmcpLCAgIEFW X09QVF9UWVBFX0lOVCwgICAgey5pNjQ9MH0sICAgICBJTlRfTUlOLCAgSU5UX01BWCxGTEFH U30sCi0gICAgeyJmb250c2l6ZSIsICAgICJzZXQgZm9udCBzaXplIiwgICAgICAgIE9GRlNF VChmb250c2l6ZV9leHByKSwgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9 LCAgMCwgMCAsIEZMQUdTfSwKLSAgICB7IngiLCAgICAgICAgICAgInNldCB4IGV4cHJlc3Np b24iLCAgICAgT0ZGU0VUKHhfZXhwciksICAgICAgICAgICAgIEFWX09QVF9UWVBFX1NUUklO Rywgey5zdHI9IjAifSwgICAwLCAwLCBGTEFHU30sCi0gICAgeyJ5IiwgICAgICAgICAgICJz ZXQgeSBleHByZXNzaW9uIiwgICAgIE9GRlNFVCh5X2V4cHIpLCAgICAgICAgICAgICBBVl9P UFRfVFlQRV9TVFJJTkcsIHsuc3RyPSIwIn0sICAgMCwgMCwgRkxBR1N9LAotICAgIHsic2hh ZG93eCIsICAgICAic2V0IHNoYWRvdyB4IG9mZnNldCIsICBPRkZTRVQoc2hhZG93eCksICAg ICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIElOVF9NSU4sICBJ TlRfTUFYICwgRkxBR1N9LAotICAgIHsic2hhZG93eSIsICAgICAic2V0IHNoYWRvdyB5IG9m ZnNldCIsICBPRkZTRVQoc2hhZG93eSksICAgICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAg ICB7Lmk2ND0wfSwgICAgIElOVF9NSU4sICBJTlRfTUFYICwgRkxBR1N9LAotICAgIHsiYm9y ZGVydyIsICAgICAic2V0IGJvcmRlciB3aWR0aCIsICAgICBPRkZTRVQoYm9yZGVydyksICAg ICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIElOVF9NSU4sICBJ TlRfTUFYICwgRkxBR1N9LAotICAgIHsidGFic2l6ZSIsICAgICAic2V0IHRhYiBzaXplIiwg ICAgICAgICBPRkZTRVQodGFic2l6ZSksICAgICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAg ICB7Lmk2ND00fSwgICAgIDAsICAgICAgICBJTlRfTUFYICwgRkxBR1N9LAotICAgIHsiYmFz ZXRpbWUiLCAgICAic2V0IGJhc2UgdGltZSIsICAgICAgICBPRkZTRVQoYmFzZXRpbWUpLCAg ICAgICAgICAgQVZfT1BUX1RZUEVfSU5UNjQsICB7Lmk2ND1BVl9OT1BUU19WQUxVRX0sIElO VDY0X01JTiwgSU5UNjRfTUFYICwgRkxBR1N9LAorICAgIHsiYm94Y29sb3IiLCAgICAgICAi c2V0IGJveCBjb2xvciIsICAgICAgICAgT0ZGU0VUKGJveGNvbG9yLnJnYmEpLCAgICAgIEFW X09QVF9UWVBFX0NPTE9SLCAgey5zdHI9IndoaXRlIn0sIDAsIDAsIFRGTEFHU30sCisgICAg eyJib3JkZXJjb2xvciIsICAgICJzZXQgYm9yZGVyIGNvbG9yIiwgICAgICBPRkZTRVQoYm9y ZGVyY29sb3IucmdiYSksICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7LnN0cj0iYmxhY2sifSwg MCwgMCwgVEZMQUdTfSwKKyAgICB7InNoYWRvd2NvbG9yIiwgICAgInNldCBzaGFkb3cgY29s b3IiLCAgICAgIE9GRlNFVChzaGFkb3djb2xvci5yZ2JhKSwgICBBVl9PUFRfVFlQRV9DT0xP UiwgIHsuc3RyPSJibGFjayJ9LCAwLCAwLCBURkxBR1N9LAorICAgIHsiYm94IiwgICAgICAg ICAgICAic2V0IGJveCIsICAgICAgICAgICAgICAgT0ZGU0VUKGRyYXdfYm94KSwgICAgICAg ICAgIEFWX09QVF9UWVBFX0JPT0wsICAgey5pNjQ9MH0sICAgICAwLCAxLCBURkxBR1N9LAor ICAgIHsiYm94Ym9yZGVydyIsICAgICAic2V0IGJveCBib3JkZXJzIHdpZHRoIiwgT0ZGU0VU KGJveGJvcmRlcncpLCAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9IjAifSwg ICAwLCAwLCBURkxBR1N9LAorICAgIHsibGluZV9zcGFjaW5nIiwgICAic2V0IGxpbmUgc3Bh Y2luZyBpbiBwaXhlbHMiLCBPRkZTRVQobGluZV9zcGFjaW5nKSwgQVZfT1BUX1RZUEVfSU5U LCAgICB7Lmk2ND0tMX0sICAgIElOVF9NSU4sIElOVF9NQVgsIFRGTEFHU30sCisgICAgeyJm b250c2l6ZSIsICAgICAgICJzZXQgZm9udCBzaXplIiwgICAgICAgICBPRkZTRVQoZm9udHNp emVfZXhwciksICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj1OVUxMfSwgIDAsIDAs IFRGTEFHU30sCisgICAgeyJ0ZXh0X2FsaWduIiwgICAgICJzZXQgdGV4dCBhbGlnbm1lbnQi LCAgICBPRkZTRVQodGV4dF9hbGlnbiksICAgICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7 LnN0cj0iVEwifSwgIDAsIDAsIFRGTEFHU30sCisgICAgeyJ4IiwgICAgICAgICAgICAgICJz ZXQgeCBleHByZXNzaW9uIiwgICAgICBPRkZTRVQoeF9leHByKSwgICAgICAgICAgICAgQVZf T1BUX1RZUEVfU1RSSU5HLCB7LnN0cj0iMCJ9LCAgIDAsIDAsIFRGTEFHU30sCisgICAgeyJ5 IiwgICAgICAgICAgICAgICJzZXQgeSBleHByZXNzaW9uIiwgICAgICBPRkZTRVQoeV9leHBy KSwgICAgICAgICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj0iMCJ9LCAgIDAsIDAs IFRGTEFHU30sCisgICAgeyJib3h3IiwgICAgICAgICAgICJzZXQgYm94IHdpZHRoIiwgICAg ICAgICBPRkZTRVQoYm94dyksICAgICAgICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7 Lmk2ND0wfSwgICAgIDAsIElOVF9NQVgsIFRGTEFHU30sCisgICAgeyJib3hoIiwgICAgICAg ICAgICJzZXQgYm94IGhlaWdodCIsICAgICAgICBPRkZTRVQoYm94aCksICAgICAgICAgICAg ICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIDAsIElOVF9NQVgsIFRGTEFH U30sCisgICAgeyJzaGFkb3d4IiwgICAgICAgICJzZXQgc2hhZG93IHggb2Zmc2V0IiwgICBP RkZTRVQoc2hhZG93eCksICAgICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0w fSwgICAgIElOVF9NSU4sIElOVF9NQVgsIFRGTEFHU30sCisgICAgeyJzaGFkb3d5IiwgICAg ICAgICJzZXQgc2hhZG93IHkgb2Zmc2V0IiwgICBPRkZTRVQoc2hhZG93eSksICAgICAgICAg ICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIElOVF9NSU4sIElOVF9NQVgs IFRGTEFHU30sCisgICAgeyJib3JkZXJ3IiwgICAgICAgICJzZXQgYm9yZGVyIHdpZHRoIiwg ICAgICBPRkZTRVQoYm9yZGVydyksICAgICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7 Lmk2ND0wfSwgICAgIElOVF9NSU4sIElOVF9NQVgsIFRGTEFHU30sCisgICAgeyJ0YWJzaXpl IiwgICAgICAgICJzZXQgdGFiIHNpemUiLCAgICAgICAgICBPRkZTRVQodGFic2l6ZSksICAg ICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND00fSwgICAgIDAsIElOVF9NQVgs IFRGTEFHU30sCisgICAgeyJiYXNldGltZSIsICAgICAgICJzZXQgYmFzZSB0aW1lIiwgICAg ICAgICBPRkZTRVQoYmFzZXRpbWUpLCAgICAgICAgICAgQVZfT1BUX1RZUEVfSU5UNjQsICB7 Lmk2ND1BVl9OT1BUU19WQUxVRX0sIElOVDY0X01JTiwgSU5UNjRfTUFYLCBGTEFHU30sCiAj aWYgQ09ORklHX0xJQkZPTlRDT05GSUcKICAgICB7ICJmb250IiwgICAgICAgICJGb250IG5h bWUiLCAgICAgICAgICAgIE9GRlNFVChmb250KSwgICAgICAgICAgICAgICBBVl9PUFRfVFlQ RV9TVFJJTkcsIHsgLnN0ciA9ICJTYW5zIiB9LCAgICAgICAgICAgLmZsYWdzID0gRkxBR1Mg fSwKICNlbmRpZgpAQCAtMjQ2LDE3ICszNzIsMjEgQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9u IGRyYXd0ZXh0X29wdGlvbnNbXT0gewogICAgICAgICB7Im5vbmUiLCAgICAgInNldCBubyBl eHBhbnNpb24iLCAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKGV4cF9tb2RlKSwgQVZfT1BU X1RZUEVfQ09OU1QsIHsuaTY0PUVYUF9OT05FfSwgICAgIDAsIDAsIEZMQUdTLCAiZXhwYW5z aW9uIn0sCiAgICAgICAgIHsibm9ybWFsIiwgICAic2V0IG5vcm1hbCBleHBhbnNpb24iLCAg ICAgICAgICAgICAgICBPRkZTRVQoZXhwX21vZGUpLCBBVl9PUFRfVFlQRV9DT05TVCwgey5p NjQ9RVhQX05PUk1BTH0sICAgMCwgMCwgRkxBR1MsICJleHBhbnNpb24ifSwKICAgICAgICAg eyJzdHJmdGltZSIsICJzZXQgc3RyZnRpbWUgZXhwYW5zaW9uIChkZXByZWNhdGVkKSIsIE9G RlNFVChleHBfbW9kZSksIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1FWFBfU1RSRlRJTUV9 LCAwLCAwLCBGTEFHUywgImV4cGFuc2lvbiJ9LAorICAgIHsieV9hbGlnbiIsICAgInNldCB0 aGUgeSBhbGlnbm1lbnQiLCAgICBPRkZTRVQoeV9hbGlnbiksIEFWX09QVF9UWVBFX0lOVCwg IHsuaTY0PVlBX1RFWFR9LCAwLCAyLCBURkxBR1MsICJ5X2FsaWduIn0sCisgICAgICAgIHsi dGV4dCIsICAgICAieSBpcyByZWZlcnJlZCB0byB0aGUgdG9wIG9mIHRoZSBmaXJzdCB0ZXh0 IGxpbmUiLCBPRkZTRVQoeV9hbGlnbiksIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1ZQV9U RVhUfSwgICAgIDAsIDAsIEZMQUdTLCAieV9hbGlnbiJ9LAorICAgICAgICB7ImJhc2VsaW5l IiwgInkgaXMgcmVmZXJyZWQgdG8gdGhlIGJhc2VsaW5lIG9mIHRoZSBmaXJzdCBsaW5lIiwg T0ZGU0VUKHlfYWxpZ24pLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9WUFfQkFTRUxJTkV9 LCAwLCAwLCBGTEFHUywgInlfYWxpZ24ifSwKKyAgICAgICAgeyJmb250IiwgICAgICJ5IGlz IHJlZmVycmVkIHRvIHRoZSBmb250IGRlZmluZWQgbGluZSBtZXRyaWNzIiwgIE9GRlNFVCh5 X2FsaWduKSwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0PVlBX0ZPTlR9LCAgICAgMCwgMCwg RkxBR1MsICJ5X2FsaWduIn0sCiAKICAgICB7InRpbWVjb2RlIiwgICAgICAgICJzZXQgaW5p dGlhbCB0aW1lY29kZSIsICAgICAgICAgICAgIE9GRlNFVCh0Y19vcHRfc3RyaW5nKSwgQVZf T1BUX1RZUEVfU1RSSU5HLCAgIHsuc3RyPU5VTEx9LCAwLCAwLCBGTEFHU30sCi0gICAgeyJ0 YzI0aG1heCIsICAgICAgICAic2V0IDI0IGhvdXJzIG1heCAodGltZWNvZGUgb25seSkiLCBP RkZTRVQodGMyNGhtYXgpLCAgICAgIEFWX09QVF9UWVBFX0JPT0wsICAgICB7Lmk2ND0wfSwg ICAgICAgICAgIDAsICAgICAgICAxLCBGTEFHU30sCi0gICAgeyJ0aW1lY29kZV9yYXRlIiwg ICAic2V0IHJhdGUgKHRpbWVjb2RlIG9ubHkpIiwgICAgICAgICBPRkZTRVQodGNfcmF0ZSks ICAgICAgIEFWX09QVF9UWVBFX1JBVElPTkFMLCB7LmRibD0wfSwgICAgICAgICAgIDAsICBJ TlRfTUFYLCBGTEFHU30sCi0gICAgeyJyIiwgICAgICAgICAgICAgICAic2V0IHJhdGUgKHRp bWVjb2RlIG9ubHkpIiwgICAgICAgICBPRkZTRVQodGNfcmF0ZSksICAgICAgIEFWX09QVF9U WVBFX1JBVElPTkFMLCB7LmRibD0wfSwgICAgICAgICAgIDAsICBJTlRfTUFYLCBGTEFHU30s Ci0gICAgeyJyYXRlIiwgICAgICAgICAgICAic2V0IHJhdGUgKHRpbWVjb2RlIG9ubHkpIiwg ICAgICAgICBPRkZTRVQodGNfcmF0ZSksICAgICAgIEFWX09QVF9UWVBFX1JBVElPTkFMLCB7 LmRibD0wfSwgICAgICAgICAgIDAsICBJTlRfTUFYLCBGTEFHU30sCi0gICAgeyJyZWxvYWQi LCAgICAgInJlbG9hZCB0ZXh0IGZpbGUgYXQgc3BlY2lmaWVkIGZyYW1lIGludGVydmFsIiwg T0ZGU0VUKHJlbG9hZCksICAgICBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PTB9LCAwLCBJTlRf TUFYLCBGTEFHU30sCi0gICAgeyAiYWxwaGEiLCAgICAgICAiYXBwbHkgYWxwaGEgd2hpbGUg cmVuZGVyaW5nIiwgT0ZGU0VUKGFfZXhwciksICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7 IC5zdHIgPSAiMSIgICAgIH0sICAgICAgICAgIC5mbGFncyA9IEZMQUdTIH0sCi0gICAgeyJm aXhfYm91bmRzIiwgImNoZWNrIGFuZCBmaXggdGV4dCBjb29yZHMgdG8gYXZvaWQgY2xpcHBp bmciLCBPRkZTRVQoZml4X2JvdW5kcyksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9LCAw LCAxLCBGTEFHU30sCi0gICAgeyJzdGFydF9udW1iZXIiLCAic3RhcnQgZnJhbWUgbnVtYmVy IGZvciBuL2ZyYW1lX251bSB2YXJpYWJsZSIsIE9GRlNFVChzdGFydF9udW1iZXIpLCBBVl9P UFRfVFlQRV9JTlQsIHsuaTY0PTB9LCAwLCBJTlRfTUFYLCBGTEFHU30sCi0gICAgeyJ0ZXh0 X3NvdXJjZSIsICJ0aGUgc291cmNlIG9mIHRleHQiLCBPRkZTRVQodGV4dF9zb3VyY2Vfc3Ry aW5nKSwgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj1OVUxMfSwgMCwgMSwgRkxBR1MgfSwK KyAgICB7InRjMjRobWF4IiwgICAgICAgICJzZXQgMjQgaG91cnMgbWF4ICh0aW1lY29kZSBv bmx5KSIsIE9GRlNFVCh0YzI0aG1heCksICAgICAgQVZfT1BUX1RZUEVfQk9PTCwgICAgIHsu aTY0PTB9LCAgICAwLCAxLCBGTEFHU30sCisgICAgeyJ0aW1lY29kZV9yYXRlIiwgICAic2V0 IHJhdGUgKHRpbWVjb2RlIG9ubHkpIiwgICAgICAgICBPRkZTRVQodGNfcmF0ZSksICAgICAg IEFWX09QVF9UWVBFX1JBVElPTkFMLCB7LmRibD0wfSwgICAgMCwgSU5UX01BWCwgRkxBR1N9 LAorICAgIHsiciIsICAgICAgICAgICAgICAgInNldCByYXRlICh0aW1lY29kZSBvbmx5KSIs ICAgICAgICAgT0ZGU0VUKHRjX3JhdGUpLCAgICAgICBBVl9PUFRfVFlQRV9SQVRJT05BTCwg ey5kYmw9MH0sICAgIDAsIElOVF9NQVgsIEZMQUdTfSwKKyAgICB7InJhdGUiLCAgICAgICAg ICAgICJzZXQgcmF0ZSAodGltZWNvZGUgb25seSkiLCAgICAgICAgIE9GRlNFVCh0Y19yYXRl KSwgICAgICAgQVZfT1BUX1RZUEVfUkFUSU9OQUwsIHsuZGJsPTB9LCAgICAwLCBJTlRfTUFY LCBGTEFHU30sCisgICAgeyJyZWxvYWQiLCAgICAgICAgICAicmVsb2FkIHRleHQgZmlsZSBh dCBzcGVjaWZpZWQgZnJhbWUgaW50ZXJ2YWwiLCBPRkZTRVQocmVsb2FkKSwgQVZfT1BUX1RZ UEVfSU5ULCB7Lmk2ND0wfSwgICAgMCwgSU5UX01BWCwgRkxBR1N9LAorICAgIHsiYWxwaGEi LCAgICAgICAgICAgImFwcGx5IGFscGhhIHdoaWxlIHJlbmRlcmluZyIsICAgICAgT0ZGU0VU KGFfZXhwciksICAgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsICAgey5zdHIgPSAiMSJ9LCAu ZmxhZ3MgPSBURkxBR1N9LAorICAgIHsiZml4X2JvdW5kcyIsICAgICAgImNoZWNrIGFuZCBm aXggdGV4dCBjb29yZHMgdG8gYXZvaWQgY2xpcHBpbmciLCBPRkZTRVQoZml4X2JvdW5kcyks IEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9LCAwLCAxLCBGTEFHU30sCisgICAgeyJzdGFy dF9udW1iZXIiLCAgICAic3RhcnQgZnJhbWUgbnVtYmVyIGZvciBuL2ZyYW1lX251bSB2YXJp YWJsZSIsIE9GRlNFVChzdGFydF9udW1iZXIpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PTB9 LCAwLCBJTlRfTUFYLCBGTEFHU30sCisgICAgeyJ0ZXh0X3NvdXJjZSIsICAgICAidGhlIHNv dXJjZSBvZiB0ZXh0IiwgT0ZGU0VUKHRleHRfc291cmNlX3N0cmluZyksIEFWX09QVF9UWVBF X1NUUklORywgey5zdHI9TlVMTH0sIDAsIDEsIEZMQUdTIH0sCiAKICNpZiBDT05GSUdfTElC RlJJQklESQogICAgIHsidGV4dF9zaGFwaW5nIiwgImF0dGVtcHQgdG8gc2hhcGUgdGV4dCBi ZWZvcmUgZHJhd2luZyIsIE9GRlNFVCh0ZXh0X3NoYXBpbmcpLCBBVl9PUFRfVFlQRV9CT09M LCB7Lmk2ND0xfSwgMCwgMSwgRkxBR1N9LApAQCAtMjk3LDE4ICs0MjcsMjQgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBmdF9lcnJvciB7CiAKICNkZWZpbmUgRlRfRVJSTVNHKGUpIGZ0X2Vy cm9yc1tlXS5lcnJfbXNnCiAKLXR5cGVkZWYgc3RydWN0IEdseXBoIHsKLSAgICBGVF9HbHlw aCBnbHlwaDsKLSAgICBGVF9HbHlwaCBib3JkZXJfZ2x5cGg7Ci0gICAgdWludDMyX3QgY29k ZTsKLSAgICB1bnNpZ25lZCBpbnQgZm9udHNpemU7Ci0gICAgRlRfQml0bWFwIGJpdG1hcDsg Ly8vPCBhcnJheSBob2xkaW5nIGJpdG1hcHMgb2YgZm9udAotICAgIEZUX0JpdG1hcCBib3Jk ZXJfYml0bWFwOyAvLy88IGFycmF5IGhvbGRpbmcgYml0bWFwcyBvZiBmb250IGJvcmRlcgot ICAgIEZUX0JCb3ggYmJveDsKLSAgICBpbnQgYWR2YW5jZTsKLSAgICBpbnQgYml0bWFwX2xl ZnQ7Ci0gICAgaW50IGJpdG1hcF90b3A7Ci19IEdseXBoOworCisvLyBMb2FkcyBhbmQgKG9w dGlvbmFsbHkpIHJlbmRlcnMgYSBnbHlwaAorc3RhdGljIGludCBsb2FkX2dseXBoKEFWRmls dGVyQ29udGV4dCAqY3R4LCBHbHlwaCAqKmdseXBoX3B0ciwgdWludDMyX3QgY29kZSwKKyAg ICAgaW50OF90IHNoaWZ0X3g2NCwgaW50OF90IHNoaWZ0X3k2NCk7CisKKy8vIFNoYXBlcyBh IGxpbmUgb2YgdGV4dCB1c2luZyBsaWJoYXJmYnV6egorc3RhdGljIHZvaWQgc2hhcGVfdGV4 dF9oYihEcmF3VGV4dENvbnRleHQgKnMsIEhhcmZidXp6RGF0YSogaGIsIGNvbnN0IGNoYXIq IHRleHQsIGludCB0ZXh0TGVuKTsKKworLy8gUGVyZm9ybXMgdGV4dCBtZWFzdXJlbWVudHMK K3N0YXRpYyBpbnQgbWVhc3VyZV90ZXh0KEFWRmlsdGVyQ29udGV4dCAqY3R4LCBUZXh0TWV0 cmljcyAqbWV0cmljcyk7CisKKy8vIERyYXdzIGdseXBocyBvbiB0aGUgZnJhbWUKK3N0YXRp YyBpbnQgZHJhd19nbHlwaHMoRHJhd1RleHRDb250ZXh0ICpzLCBBVkZyYW1lICpmcmFtZSwK KyAgICAgICAgICAgICAgICAgICAgICAgRkZEcmF3Q29sb3IgKmNvbG9yLCBUZXh0TWV0cmlj cyAqbWV0cmljcywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsIGludCB5LCBpbnQg Ym9yZGVydyk7CisKKy8vIERyYXdzIHRleHQgb24gdGhlIGZyYW1lCitzdGF0aWMgaW50IGRy YXdfdGV4dChBVkZpbHRlckNvbnRleHQgKmN0eCwgQVZGcmFtZSAqZnJhbWUpOwogCiBzdGF0 aWMgaW50IGdseXBoX2NtcChjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmIpCiB7CkBA IC0zMTYsODAgKzQ1Miw5IEBAIHN0YXRpYyBpbnQgZ2x5cGhfY21wKGNvbnN0IHZvaWQgKmtl eSwgY29uc3Qgdm9pZCAqYikKICAgICBpbnQ2NF90IGRpZmYgPSAoaW50NjRfdClhLT5jb2Rl IC0gKGludDY0X3QpYmItPmNvZGU7CiAKICAgICBpZiAoZGlmZiAhPSAwKQotICAgICAgICAg cmV0dXJuIGRpZmYgPiAwID8gMSA6IC0xOworICAgICAgICByZXR1cm4gZGlmZiA+IDAgPyAx IDogLTE7CiAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIEZGRElGRlNJR04oKGludDY0X3Qp YS0+Zm9udHNpemUsIChpbnQ2NF90KWJiLT5mb250c2l6ZSk7Ci19Ci0KLS8qKgotICogTG9h ZCBnbHlwaHMgY29ycmVzcG9uZGluZyB0byB0aGUgVVRGLTMyIGNvZGVwb2ludCBjb2RlLgot ICovCi1zdGF0aWMgaW50IGxvYWRfZ2x5cGgoQVZGaWx0ZXJDb250ZXh0ICpjdHgsIEdseXBo ICoqZ2x5cGhfcHRyLCB1aW50MzJfdCBjb2RlKQotewotICAgIERyYXdUZXh0Q29udGV4dCAq cyA9IGN0eC0+cHJpdjsKLSAgICBGVF9CaXRtYXBHbHlwaCBiaXRtYXBnbHlwaDsKLSAgICBH bHlwaCAqZ2x5cGg7Ci0gICAgc3RydWN0IEFWVHJlZU5vZGUgKm5vZGUgPSBOVUxMOwotICAg IGludCByZXQ7Ci0KLSAgICAvKiBsb2FkIGdseXBoIGludG8gcy0+ZmFjZS0+Z2x5cGggKi8K LSAgICBpZiAoRlRfTG9hZF9DaGFyKHMtPmZhY2UsIGNvZGUsIHMtPmZ0X2xvYWRfZmxhZ3Mp KQotICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwotCi0gICAgZ2x5cGggPSBhdl9t YWxsb2N6KHNpemVvZigqZ2x5cGgpKTsKLSAgICBpZiAoIWdseXBoKSB7Ci0gICAgICAgIHJl dCA9IEFWRVJST1IoRU5PTUVNKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAg Z2x5cGgtPmNvZGUgID0gY29kZTsKLSAgICBnbHlwaC0+Zm9udHNpemUgPSBzLT5mb250c2l6 ZTsKLQotICAgIGlmIChGVF9HZXRfR2x5cGgocy0+ZmFjZS0+Z2x5cGgsICZnbHlwaC0+Z2x5 cGgpKSB7Ci0gICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKLSAgICAgICAgZ290byBl cnJvcjsKLSAgICB9Ci0gICAgaWYgKHMtPmJvcmRlcncpIHsKLSAgICAgICAgZ2x5cGgtPmJv cmRlcl9nbHlwaCA9IGdseXBoLT5nbHlwaDsKLSAgICAgICAgaWYgKEZUX0dseXBoX1N0cm9r ZUJvcmRlcigmZ2x5cGgtPmJvcmRlcl9nbHlwaCwgcy0+c3Ryb2tlciwgMCwgMCkgfHwKLSAg ICAgICAgICAgIEZUX0dseXBoX1RvX0JpdG1hcCgmZ2x5cGgtPmJvcmRlcl9nbHlwaCwgRlRf UkVOREVSX01PREVfTk9STUFMLCAwLCAxKSkgewotICAgICAgICAgICAgcmV0ID0gQVZFUlJP Ul9FWFRFUk5BTDsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAg ICAgYml0bWFwZ2x5cGggPSAoRlRfQml0bWFwR2x5cGgpIGdseXBoLT5ib3JkZXJfZ2x5cGg7 Ci0gICAgICAgIGdseXBoLT5ib3JkZXJfYml0bWFwID0gYml0bWFwZ2x5cGgtPmJpdG1hcDsK LSAgICB9Ci0gICAgaWYgKEZUX0dseXBoX1RvX0JpdG1hcCgmZ2x5cGgtPmdseXBoLCBGVF9S RU5ERVJfTU9ERV9OT1JNQUwsIDAsIDEpKSB7Ci0gICAgICAgIHJldCA9IEFWRVJST1JfRVhU RVJOQUw7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGJpdG1hcGdseXBoID0g KEZUX0JpdG1hcEdseXBoKSBnbHlwaC0+Z2x5cGg7Ci0KLSAgICBnbHlwaC0+Yml0bWFwICAg ICAgPSBiaXRtYXBnbHlwaC0+Yml0bWFwOwotICAgIGdseXBoLT5iaXRtYXBfbGVmdCA9IGJp dG1hcGdseXBoLT5sZWZ0OwotICAgIGdseXBoLT5iaXRtYXBfdG9wICA9IGJpdG1hcGdseXBo LT50b3A7Ci0gICAgZ2x5cGgtPmFkdmFuY2UgICAgID0gcy0+ZmFjZS0+Z2x5cGgtPmFkdmFu Y2UueCA+PiA2OwotCi0gICAgLyogbWVhc3VyZSB0ZXh0IGhlaWdodCB0byBjYWxjdWxhdGUg dGV4dF9oZWlnaHQgKG9yIHRoZSBtYXhpbXVtIHRleHQgaGVpZ2h0KSAqLwotICAgIEZUX0ds eXBoX0dldF9DQm94KGdseXBoLT5nbHlwaCwgZnRfZ2x5cGhfYmJveF9waXhlbHMsICZnbHlw aC0+YmJveCk7Ci0KLSAgICAvKiBjYWNoZSB0aGUgbmV3bHkgY3JlYXRlZCBnbHlwaCAqLwot ICAgIGlmICghKG5vZGUgPSBhdl90cmVlX25vZGVfYWxsb2MoKSkpIHsKLSAgICAgICAgcmV0 ID0gQVZFUlJPUihFTk9NRU0pOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBh dl90cmVlX2luc2VydCgmcy0+Z2x5cGhzLCBnbHlwaCwgZ2x5cGhfY21wLCAmbm9kZSk7Ci0K LSAgICBpZiAoZ2x5cGhfcHRyKQotICAgICAgICAqZ2x5cGhfcHRyID0gZ2x5cGg7Ci0gICAg cmV0dXJuIDA7Ci0KLWVycm9yOgotICAgIGlmIChnbHlwaCkKLSAgICAgICAgYXZfZnJlZXAo JmdseXBoLT5nbHlwaCk7Ci0KLSAgICBhdl9mcmVlcCgmZ2x5cGgpOwotICAgIGF2X2ZyZWVw KCZub2RlKTsKLSAgICByZXR1cm4gcmV0OworICAgICAgICByZXR1cm4gRkZESUZGU0lHTigo aW50NjRfdClhLT5mb250c2l6ZSwgKGludDY0X3QpYmItPmZvbnRzaXplKTsKIH0KIAogc3Rh dGljIGF2X2NvbGQgaW50IHNldF9mb250c2l6ZShBVkZpbHRlckNvbnRleHQgKmN0eCwgdW5z aWduZWQgaW50IGZvbnRzaXplKQpAQCAtNDM5LDcgKzUwNCw2IEBAIHN0YXRpYyBhdl9jb2xk IGludCB1cGRhdGVfZm9udHNpemUoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiAgICAgICAgICAg IHJldHVybiBlcnI7CiAKICAgICAgICAgc2l6ZSA9IGF2X2V4cHJfZXZhbChzLT5mb250c2l6 ZV9wZXhwciwgcy0+dmFyX3ZhbHVlcywgJnMtPnBybmcpOwotCiAgICAgICAgIGlmICghaXNu YW4oc2l6ZSkpIHsKICAgICAgICAgICAgIHJvdW5kZWRzaXplID0gcm91bmQoc2l6ZSk7CiAg ICAgICAgICAgICAvLyB0ZXN0IGZvciBvdmVyZmxvdyBiZWZvcmUgY2FzdApAQCAtNDQ3LDcg KzUxMSw2IEBAIHN0YXRpYyBhdl9jb2xkIGludCB1cGRhdGVfZm9udHNpemUoQVZGaWx0ZXJD b250ZXh0ICpjdHgpCiAgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9S LCAiZm9udHNpemUgb3ZlcmZsb3dcbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVJTlZBTCk7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGZvbnRzaXplID0g cm91bmRlZHNpemU7CiAgICAgICAgIH0KICAgICB9CkBAIC01NDgsNyArNjExLDcgQEAgc3Rh dGljIGludCBsb2FkX2ZvbnRfZm9udGNvbmZpZyhBVkZpbHRlckNvbnRleHQgKmN0eCkKICAg ICAgICAgZ290byBmYWlsOwogICAgIH0KIAotICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZP LCAiVXNpbmcgXCIlc1wiXG4iLCBmaWxlbmFtZSk7CisgICAgYXZfbG9nKGN0eCwgQVZfTE9H X1ZFUkJPU0UsICJVc2luZyBcIiVzXCJcbiIsIGZpbGVuYW1lKTsKICAgICBpZiAocGFyc2Vf ZXJyKQogICAgICAgICBzLT5kZWZhdWx0X2ZvbnRzaXplID0gc2l6ZSArIDAuNTsKIApAQCAt NjkwLDYgKzc1Myw3IEBAIHN0YXRpYyBpbnQgc2hhcGVfdGV4dChBVkZpbHRlckNvbnRleHQg KmN0eCkKICAgICBzLT50ZXh0ID0gdG1wOwogICAgIGxlbiA9IGZyaWJpZGlfdW5pY29kZV90 b19jaGFyc2V0KEZSSUJJRElfQ0hBUl9TRVRfVVRGOCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bmljb2Rlc3RyLCBsZW4sIHMtPnRleHQpOworCiAgICAgcmV0 ID0gMDsKIAogb3V0OgpAQCAtNzExLDExICs3NzUsMzYgQEAgc3RhdGljIGVudW0gQVZGcmFt ZVNpZGVEYXRhVHlwZSB0ZXh0X3NvdXJjZV9zdHJpbmdfcGFyc2UoY29uc3QgY2hhciAqdGV4 dF9zb3VyY2UKICAgICB9CiB9CiAKKy8vIENvbnZlcnQgYSBzdHJpbmcgZm9ybWF0dGVkIGFz ICJuMXxuMnwuLi58bk4iIGludG8gYW4gaW50ZWdlciBhcnJheQorc3RhdGljIGludCBzdHJp bmdfdG9fYXJyYXkoY29uc3QgY2hhciogc291cmNlLCBpbnQqIHJlc3VsdCwgaW50IHJlc3Vs dF9zaXplKSB7CisgICAgaW50IGNvdW50ZXIgPSAwLCBzaXplID0gc3RybGVuKHNvdXJjZSkg KyAxOworICAgIGNoYXIgKnNhdmVwdHIsICpjdXJ2YWwsICpkdXAgPSBhdl9tYWxsb2Moc2l6 ZSk7CisgICAgYXZfc3RybGNweShkdXAsIHNvdXJjZSwgc2l6ZSk7CisgICAgaWYocmVzdWx0 X3NpemUgPiAwICYmIChjdXJ2YWwgPSBhdl9zdHJ0b2soZHVwLCAifCIsICZzYXZlcHRyKSkp IHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgcmVzdWx0W2NvdW50ZXIrK10gPSBhdG9p KGN1cnZhbCk7CisgICAgICAgIH0gd2hpbGUoKGN1cnZhbCA9IGF2X3N0cnRvayhOVUxMLCAi fCIsICZzYXZlcHRyKSkgJiYgY291bnRlciA8IHJlc3VsdF9zaXplKTsKKyAgICB9CisgICAg YXZfZnJlZShkdXApOworICAgIHJldHVybiBjb3VudGVyOworfQorCitzdGF0aWMgaW50IHZh bGlkYXRlX3RleHRfYWxpZ24oY2hhciogdGV4dF9hbGlnbikgeworICAgIGludCBlcnIgPSAw OworICAgIGlmKHN0cmxlbih0ZXh0X2FsaWduKSAhPSAyCisgICAgICAgIHx8IHN0cmNocigi TENSVE1CIiwgdGV4dF9hbGlnblswXSkgPT0gTlVMTCB8fCBzdHJjaHIoIkxDUlRNQiIsIHRl eHRfYWxpZ25bMV0pID09IE5VTEwKKyAgICAgICAgfHwgKHN0cmNocigiVE1CIiwgdGV4dF9h bGlnblswXSkgIT0gTlVMTCAmJiBzdHJjaHIoIkxDUiIsIHRleHRfYWxpZ25bMV0pID09IE5V TEwpCisgICAgICAgIHx8IChzdHJjaHIoIkxDUiIsIHRleHRfYWxpZ25bMF0pICE9IE5VTEwg JiYgc3RyY2hyKCJUTUIiLCB0ZXh0X2FsaWduWzFdKSA9PSBOVUxMKSkgeworICAgICAgICBl cnIgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgfQorCisgICAgcmV0dXJuIGVycjsKK30KKwog c3RhdGljIGF2X2NvbGQgaW50IGluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiB7CiAgICAg aW50IGVycjsKICAgICBEcmF3VGV4dENvbnRleHQgKnMgPSBjdHgtPnByaXY7Ci0gICAgR2x5 cGggKmdseXBoOwogCiAgICAgYXZfZXhwcl9mcmVlKHMtPmZvbnRzaXplX3BleHByKTsKICAg ICBzLT5mb250c2l6ZV9wZXhwciA9IE5VTEw7CkBAIC03NzcsNiArODY2LDE0IEBAIHN0YXRp YyBhdl9jb2xkIGludCBpbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4KQogICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAorICAgIGlmKChlcnIgPSB2YWxpZGF0ZV90 ZXh0X2FsaWduKHMtPnRleHRfYWxpZ24pKSkgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9M T0dfRVJST1IsCisgICAgICAgICAgICAgICAiVGhlIHZhbHVlIHByb3ZpZGVkIGZvciBwYXJh bWV0ZXIgJ3RleHRfYWxpZ24nIGlzIG5vdCB2YWxpZCxcbiIpOworICAgICAgICBhdl9sb2co Y3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAicGxlYXNlIHNwZWNpZnkgYSB0 d28gY2hhcmFjdGVycyBzdHJpbmcgY29udGFpbmluZyBvbmx5IG9uZSBsZXR0ZXIgZm9yIGhv cml6b250YWwgYWxpZ25tZW50ICgnTENSJykgYW5kIG9uZSBmb3IgdmVydGljYWwgYWxpZ25t ZW50ICgnVE1CJylcbiIpOworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKwogI2lmIENP TkZJR19MSUJGUklCSURJCiAgICAgaWYgKHMtPnRleHRfc2hhcGluZykKICAgICAgICAgaWYg KChlcnIgPSBzaGFwZV90ZXh0KGN0eCkpIDwgMCkKQEAgLTc5NSwyNiArODkyLDE5IEBAIHN0 YXRpYyBhdl9jb2xkIGludCBpbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4KQogICAgIGlmICgo ZXJyID0gdXBkYXRlX2ZvbnRzaXplKGN0eCkpIDwgMCkKICAgICAgICAgcmV0dXJuIGVycjsK IAorICAgIC8vIEFsd2F5cyBpbml0IHRoZSBzdHJva2VyLCBtYXkgYmUgbmVlZGVkIGlmIGJv cmRlcncgaXMgc2V0IHZpYSB0aGUgImNoYW5nZSIgY29tbWFuZAorICAgIGlmIChGVF9TdHJv a2VyX05ldyhzLT5saWJyYXJ5LCAmcy0+c3Ryb2tlcikpIHsKKyAgICAgICAgYXZfbG9nKGN0 eCwgQVZfTE9HX0VSUk9SLCAiQ291bHQgbm90IGluaXQgRlQgc3Ryb2tlclxuIik7CisgICAg ICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOworICAgIH0KKwogICAgIGlmIChzLT5ib3Jk ZXJ3KSB7Ci0gICAgICAgIGlmIChGVF9TdHJva2VyX05ldyhzLT5saWJyYXJ5LCAmcy0+c3Ry b2tlcikpIHsKLSAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkNvdWx0 IG5vdCBpbml0IEZUIHN0cm9rZXJcbiIpOwotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Jf RVhURVJOQUw7Ci0gICAgICAgIH0KICAgICAgICAgRlRfU3Ryb2tlcl9TZXQocy0+c3Ryb2tl ciwgcy0+Ym9yZGVydyA8PCA2LCBGVF9TVFJPS0VSX0xJTkVDQVBfUk9VTkQsCiAgICAgICAg ICAgICAgICAgICAgICAgIEZUX1NUUk9LRVJfTElORUpPSU5fUk9VTkQsIDApOwogICAgIH0K IAotICAgIHMtPnVzZV9rZXJuaW5nID0gRlRfSEFTX0tFUk5JTkcocy0+ZmFjZSk7Ci0KICAg ICAvKiBsb2FkIHRoZSBmYWxsYmFjayBnbHlwaCB3aXRoIGNvZGUgMCAqLwotICAgIGxvYWRf Z2x5cGgoY3R4LCBOVUxMLCAwKTsKLQotICAgIC8qIHNldCB0aGUgdGFic2l6ZSBpbiBwaXhl bHMgKi8KLSAgICBpZiAoKGVyciA9IGxvYWRfZ2x5cGgoY3R4LCAmZ2x5cGgsICcgJykpIDwg MCkgewotICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3Qgc2V0 IHRhYnNpemUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gICAgcy0+dGFi c2l6ZSAqPSBnbHlwaC0+YWR2YW5jZTsKKyAgICBsb2FkX2dseXBoKGN0eCwgTlVMTCwgMCwg MCwgMCk7CiAKICAgICBpZiAocy0+ZXhwX21vZGUgPT0gRVhQX1NUUkZUSU1FICYmCiAgICAg ICAgIChzdHJjaHIocy0+dGV4dCwgJyUnKSB8fCBzdHJjaHIocy0+dGV4dCwgJ1xcJykpKQpA QCAtODMxLDEyICs5MjEsMzYgQEAgc3RhdGljIGludCBxdWVyeV9mb3JtYXRzKEFWRmlsdGVy Q29udGV4dCAqY3R4KQogICAgIHJldHVybiBmZl9zZXRfY29tbW9uX2Zvcm1hdHMoY3R4LCBm Zl9kcmF3X3N1cHBvcnRlZF9waXhlbF9mb3JtYXRzKDApKTsKIH0KIAorc3RhdGljIGludCBn bHlwaF9lbnVfYm9yZGVyX2ZyZWUodm9pZCAqb3BhcXVlLCB2b2lkICplbGVtKSB7CisgICAg R2x5cGggKmdseXBoID0gZWxlbTsKKworICAgIGlmKGdseXBoLT5ib3JkZXJfZ2x5cGggIT0g TlVMTCkgeworICAgICAgICBmb3IoaW50IHQgPSAwOyB0IDwgMTY7ICsrdCkgeworICAgICAg ICAgICAgaWYoZ2x5cGgtPmJvcmRlcl9iZ2x5cGhbdF0gIT0gTlVMTCkgeworICAgICAgICAg ICAgICAgIEZUX0RvbmVfR2x5cGgoKEZUX0dseXBoKWdseXBoLT5ib3JkZXJfYmdseXBoW3Rd KTsKKyAgICAgICAgICAgICAgICBnbHlwaC0+Ym9yZGVyX2JnbHlwaFt0XSA9IE5VTEw7Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgRlRfRG9uZV9HbHlwaChnbHlwaC0+ Ym9yZGVyX2dseXBoKTsKKyAgICAgICAgZ2x5cGgtPmJvcmRlcl9nbHlwaCA9IE5VTEw7Cisg ICAgfQorICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGdseXBoX2VudV9mcmVlKHZv aWQgKm9wYXF1ZSwgdm9pZCAqZWxlbSkKIHsKICAgICBHbHlwaCAqZ2x5cGggPSBlbGVtOwog CiAgICAgRlRfRG9uZV9HbHlwaChnbHlwaC0+Z2x5cGgpOwogICAgIEZUX0RvbmVfR2x5cGgo Z2x5cGgtPmJvcmRlcl9nbHlwaCk7CisgICAgZm9yKGludCB0ID0gMDsgdCA8IDE2OyArK3Qp IHsKKyAgICAgICAgaWYoZ2x5cGgtPmJnbHlwaFt0XSAhPSBOVUxMKSB7CisgICAgICAgICAg ICBGVF9Eb25lX0dseXBoKChGVF9HbHlwaClnbHlwaC0+YmdseXBoW3RdKTsKKyAgICAgICAg fQorICAgICAgICBpZihnbHlwaC0+Ym9yZGVyX2JnbHlwaFt0XSAhPSBOVUxMKSB7CisgICAg ICAgICAgICBGVF9Eb25lX0dseXBoKChGVF9HbHlwaClnbHlwaC0+Ym9yZGVyX2JnbHlwaFt0 XSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgYXZfZnJlZShlbGVtKTsKICAgICByZXR1cm4g MDsKIH0KQEAgLTg1Miw5ICs5NjYsNiBAQCBzdGF0aWMgYXZfY29sZCB2b2lkIHVuaW5pdChB VkZpbHRlckNvbnRleHQgKmN0eCkKIAogICAgIHMtPnhfcGV4cHIgPSBzLT55X3BleHByID0g cy0+YV9wZXhwciA9IHMtPmZvbnRzaXplX3BleHByID0gTlVMTDsKIAotICAgIGF2X2ZyZWVw KCZzLT5wb3NpdGlvbnMpOwotICAgIHMtPm5iX3Bvc2l0aW9ucyA9IDA7Ci0KICAgICBhdl90 cmVlX2VudW1lcmF0ZShzLT5nbHlwaHMsIE5VTEwsIE5VTEwsIGdseXBoX2VudV9mcmVlKTsK ICAgICBhdl90cmVlX2Rlc3Ryb3kocy0+Z2x5cGhzKTsKICAgICBzLT5nbHlwaHMgPSBOVUxM OwpAQCAtODgwLDE1ICs5OTEsMTUgQEAgc3RhdGljIGludCBjb25maWdfaW5wdXQoQVZGaWx0 ZXJMaW5rICppbmxpbmspCiAgICAgZmZfZHJhd19jb2xvcigmcy0+ZGMsICZzLT5ib3JkZXJj b2xvciwgcy0+Ym9yZGVyY29sb3IucmdiYSk7CiAgICAgZmZfZHJhd19jb2xvcigmcy0+ZGMs ICZzLT5ib3hjb2xvciwgICAgcy0+Ym94Y29sb3IucmdiYSk7CiAKLSAgICBzLT52YXJfdmFs dWVzW1ZBUl93XSAgICAgPSBzLT52YXJfdmFsdWVzW1ZBUl9XXSAgICAgPSBzLT52YXJfdmFs dWVzW1ZBUl9NQUlOX1ddID0gaW5saW5rLT53OwotICAgIHMtPnZhcl92YWx1ZXNbVkFSX2hd ICAgICA9IHMtPnZhcl92YWx1ZXNbVkFSX0hdICAgICA9IHMtPnZhcl92YWx1ZXNbVkFSX01B SU5fSF0gPSBpbmxpbmstPmg7Ci0gICAgcy0+dmFyX3ZhbHVlc1tWQVJfU0FSXSAgID0gaW5s aW5rLT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSA/IGF2X3EyZChpbmxpbmstPnNhbXBsZV9h c3BlY3RfcmF0aW8pIDogMTsKLSAgICBzLT52YXJfdmFsdWVzW1ZBUl9EQVJdICAgPSAoZG91 YmxlKWlubGluay0+dyAvIGlubGluay0+aCAqIHMtPnZhcl92YWx1ZXNbVkFSX1NBUl07Ci0g ICAgcy0+dmFyX3ZhbHVlc1tWQVJfSFNVQl0gID0gMSA8PCBzLT5kYy5oc3ViX21heDsKLSAg ICBzLT52YXJfdmFsdWVzW1ZBUl9WU1VCXSAgPSAxIDw8IHMtPmRjLnZzdWJfbWF4OwotICAg IHMtPnZhcl92YWx1ZXNbVkFSX1hdICAgICA9IE5BTjsKLSAgICBzLT52YXJfdmFsdWVzW1ZB Ul9ZXSAgICAgPSBOQU47Ci0gICAgcy0+dmFyX3ZhbHVlc1tWQVJfVF0gICAgID0gTkFOOwor ICAgIHMtPnZhcl92YWx1ZXNbVkFSX3ddICAgID0gcy0+dmFyX3ZhbHVlc1tWQVJfV10gPSBz LT52YXJfdmFsdWVzW1ZBUl9NQUlOX1ddID0gaW5saW5rLT53OworICAgIHMtPnZhcl92YWx1 ZXNbVkFSX2hdICAgID0gcy0+dmFyX3ZhbHVlc1tWQVJfSF0gPSBzLT52YXJfdmFsdWVzW1ZB Ul9NQUlOX0hdID0gaW5saW5rLT5oOworICAgIHMtPnZhcl92YWx1ZXNbVkFSX1NBUl0gID0g aW5saW5rLT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSA/IGF2X3EyZChpbmxpbmstPnNhbXBs ZV9hc3BlY3RfcmF0aW8pIDogMTsKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9EQVJdICA9IChk b3VibGUpaW5saW5rLT53IC8gaW5saW5rLT5oICogcy0+dmFyX3ZhbHVlc1tWQVJfU0FSXTsK KyAgICBzLT52YXJfdmFsdWVzW1ZBUl9IU1VCXSA9IDEgPDwgcy0+ZGMuaHN1Yl9tYXg7Cisg ICAgcy0+dmFyX3ZhbHVlc1tWQVJfVlNVQl0gPSAxIDw8IHMtPmRjLnZzdWJfbWF4OworICAg IHMtPnZhcl92YWx1ZXNbVkFSX1hdICAgID0gTkFOOworICAgIHMtPnZhcl92YWx1ZXNbVkFS X1ldICAgID0gTkFOOworICAgIHMtPnZhcl92YWx1ZXNbVkFSX1RdICAgID0gTkFOOwogCiAg ICAgYXZfbGZnX2luaXQoJnMtPnBybmcsIGF2X2dldF9yYW5kb21fc2VlZCgpKTsKIApAQCAt OTQ4LDggKzEwNTksMzAgQEAgc3RhdGljIGludCBjb21tYW5kKEFWRmlsdGVyQ29udGV4dCAq Y3R4LCBjb25zdCBjaGFyICpjbWQsIGNvbnN0IGNoYXIgKmFyZywgY2hhcgogCiAgICAgICAg IGN0eC0+cHJpdiA9IG5ldzsKICAgICAgICAgcmV0dXJuIGNvbmZpZ19pbnB1dChjdHgtPmlu cHV0c1swXSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NZUyk7 CisgICAgfSBlbHNlIHsKKy8vICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfREVCVUcsICJD b21tYW5kICclcycgJyVzJ1xuIiwgY21kLCBhcmcpOworICAgICAgICBpbnQgb2xkX2JvcmRl cncgPSBvbGQtPmJvcmRlcnc7CisgICAgICAgIGlmICgocmV0ID0gZmZfZmlsdGVyX3Byb2Nl c3NfY29tbWFuZChjdHgsIGNtZCwgYXJnLCByZXMsIHJlc19sZW4sIGZsYWdzKSkgPCAwKSB7 CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgICAgIGlmKHN0cmNt cChjbWQsICJib3JkZXJ3IikgPT0gMCkgeworICAgICAgICAgICAgaWYob2xkLT5ib3JkZXJ3 ICE9IG9sZF9ib3JkZXJ3KSB7CisgICAgICAgICAgICAgICAgRlRfU3Ryb2tlcl9TZXQob2xk LT5zdHJva2VyLCBvbGQtPmJvcmRlcncgPDwgNiwgRlRfU1RST0tFUl9MSU5FQ0FQX1JPVU5E LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NUUk9LRVJfTElORUpPSU5fUk9V TkQsIDApOworICAgICAgICAgICAgICAgIGF2X3RyZWVfZW51bWVyYXRlKG9sZC0+Z2x5cGhz LCBOVUxMLCBOVUxMLCBnbHlwaF9lbnVfYm9yZGVyX2ZyZWUpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmKHN0cmNtcChj bWQsICJ0ZXh0X2FsaWduIikgPT0gMCkgeworICAgICAgICAgICAgLy8gQ2xlYW51cCBib3Jk ZXIgZ2x5cGhzCisgICAgICAgICAgICBpZih2YWxpZGF0ZV90ZXh0X2FsaWduKG9sZC0+dGV4 dF9hbGlnbikgIT0gMCkgeworICAgICAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19F UlJPUiwKKyAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgY29tbWFuZCB2YWx1ZSAnJXMn IGZvciAndGV4dF9hbGlnbidcbiIsIG9sZC0+dGV4dF9hbGlnbik7CisgICAgICAgICAgICB9 CisgICAgICAgIH0gZWxzZSBpZihzdHJjbXAoY21kLCAiZm9udHNpemUiKSA9PSAwKSB7Cisg ICAgICAgICAgICBhdl9leHByX2ZyZWUob2xkLT5mb250c2l6ZV9wZXhwcik7CisgICAgICAg ICAgICBvbGQtPmZvbnRzaXplX3BleHByID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBy ZXR1cm4gY29uZmlnX2lucHV0KGN0eC0+aW5wdXRzWzBdKTsKKyAgICB9CiAKIGZhaWw6CiAg ICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHByb2Nlc3MgY29tbWFu ZC4gQ29udGludWluZyB3aXRoIGV4aXN0aW5nIHBhcmFtZXRlcnMuXG4iKTsKQEAgLTEzMTgs OTEgKzE0NTEsNDIyIEBAIHN0YXRpYyBpbnQgZXhwYW5kX3RleHQoQVZGaWx0ZXJDb250ZXh0 ICpjdHgsIGNoYXIgKnRleHQsIEFWQlByaW50ICpicCkKICAgICByZXR1cm4gMDsKIH0KIAor c3RhdGljIHZvaWQgdXBkYXRlX2NvbG9yX3dpdGhfYWxwaGEoRHJhd1RleHRDb250ZXh0ICpz LCBGRkRyYXdDb2xvciAqY29sb3IsIGNvbnN0IEZGRHJhd0NvbG9yIGluY29sb3IpCit7Cisg ICAgKmNvbG9yID0gaW5jb2xvcjsKKyAgICBjb2xvci0+cmdiYVszXSA9IChjb2xvci0+cmdi YVszXSAqIHMtPmFscGhhKSAvIDI1NTsKKyAgICBmZl9kcmF3X2NvbG9yKCZzLT5kYywgY29s b3IsIGNvbG9yLT5yZ2JhKTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlX2FscGhhKERyYXdU ZXh0Q29udGV4dCAqcykKK3sKKyAgICBkb3VibGUgYWxwaGEgPSBhdl9leHByX2V2YWwocy0+ YV9wZXhwciwgcy0+dmFyX3ZhbHVlcywgJnMtPnBybmcpOworCisgICAgaWYgKGlzbmFuKGFs cGhhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGFscGhhID49IDEuMCkKKyAgICAg ICAgcy0+YWxwaGEgPSAyNTU7CisgICAgZWxzZSBpZiAoYWxwaGEgPD0gMCkKKyAgICAgICAg cy0+YWxwaGEgPSAwOworICAgIGVsc2UKKyAgICAgICAgcy0+YWxwaGEgPSAyNTYgKiBhbHBo YTsKK30KKworc3RhdGljIGlubGluZSBpbnQgZ2V0X3N1YnBpeGVsX2lkeChpbnQgc2hpZnRf eDY0LCBpbnQgc2hpZnRfeTY0KSB7CisgICAgaW50IGlkeCA9IChzaGlmdF94NjQgPj4gMikg KyAoc2hpZnRfeTY0ID4+IDQpOworICAgIHJldHVybiBpZHg7Cit9CisKK3N0YXRpYyBpbnQg bG9hZF9nbHlwaChBVkZpbHRlckNvbnRleHQgKmN0eCwgR2x5cGggKipnbHlwaF9wdHIsIHVp bnQzMl90IGNvZGUsIGludDhfdCBzaGlmdF94NjQsIGludDhfdCBzaGlmdF95NjQpCit7Cisg ICAgRHJhd1RleHRDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIEdseXBoIGR1bW15ID0g eyAwIH07CisgICAgR2x5cGggKmdseXBoOworICAgIEZUX1ZlY3RvciBzaGlmdDsKKyAgICBz dHJ1Y3QgQVZUcmVlTm9kZSAqbm9kZSA9IE5VTEw7CisgICAgaW50IHJldCA9IDA7CisKKyAg ICAvKiBnZXQgZ2x5cGggKi8KKyAgICBkdW1teS5jb2RlID0gY29kZTsKKyAgICBkdW1teS5m b250c2l6ZSA9IHMtPmZvbnRzaXplOworICAgIGdseXBoID0gYXZfdHJlZV9maW5kKHMtPmds eXBocywgJmR1bW15LCBnbHlwaF9jbXAsIE5VTEwpOworICAgIGlmKCFnbHlwaCkgeworLy8g ICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIkdseXBoOiAlZCBub3QgY2FjaGVk IC0+IGxvYWRpbmcuLi5cbiIsIGNvZGUpOworICAgICAgICBpZiAoRlRfTG9hZF9HbHlwaChz LT5mYWNlLCBjb2RlLCBzLT5mdF9sb2FkX2ZsYWdzKSkgeworICAgICAgICAgICAgcmV0dXJu IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgfQorICAgICAgICBnbHlwaCA9IGF2X21hbGxv Y3ooc2l6ZW9mKCpnbHlwaCkpOworICAgICAgICBpZiAoIWdseXBoKSB7CisgICAgICAgICAg ICByZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAg ICAgICB9CisgICAgICAgIGdseXBoLT5jb2RlICA9IGNvZGU7CisgICAgICAgIGdseXBoLT5m b250c2l6ZSA9IHMtPmZvbnRzaXplOworICAgICAgICBpZiAoRlRfR2V0X0dseXBoKHMtPmZh Y2UtPmdseXBoLCAmZ2x5cGgtPmdseXBoKSkgeworICAgICAgICAgICAgcmV0ID0gQVZFUlJP UihFSU5WQUwpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAg ICBpZiAocy0+Ym9yZGVydykgeworICAgICAgICAgICAgZ2x5cGgtPmJvcmRlcl9nbHlwaCA9 IGdseXBoLT5nbHlwaDsKKyAgICAgICAgICAgIGlmIChGVF9HbHlwaF9TdHJva2VCb3JkZXIo JmdseXBoLT5ib3JkZXJfZ2x5cGgsIHMtPnN0cm9rZXIsIDAsIDApKSB7CisgICAgICAgICAg ICAgICAgcmV0ID0gQVZFUlJPUl9FWFRFUk5BTDsKKyAgICAgICAgICAgICAgICBnb3RvIGVy cm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIG1lYXN1cmUgdGV4 dCBoZWlnaHQgdG8gY2FsY3VsYXRlIHRleHRfaGVpZ2h0IChvciB0aGUgbWF4aW11bSB0ZXh0 IGhlaWdodCkgKi8KKyAgICAgICAgRlRfR2x5cGhfR2V0X0NCb3goZ2x5cGgtPmdseXBoLCBG VF9HTFlQSF9CQk9YX1NVQlBJWEVMUywgJmdseXBoLT5iYm94KTsKKworICAgICAgICAvKiBj YWNoZSB0aGUgbmV3bHkgY3JlYXRlZCBnbHlwaCAqLworICAgICAgICBpZiAoIShub2RlID0g YXZfdHJlZV9ub2RlX2FsbG9jKCkpKSB7CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVO T01FTSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGF2 X3RyZWVfaW5zZXJ0KCZzLT5nbHlwaHMsIGdseXBoLCBnbHlwaF9jbXAsICZub2RlKTsKKyAg ICB9IGVsc2UgeworICAgICAgICBpZihzLT5ib3JkZXJ3ICYmICFnbHlwaC0+Ym9yZGVyX2ds eXBoKSB7CisgICAgICAgICAgICBnbHlwaC0+Ym9yZGVyX2dseXBoID0gZ2x5cGgtPmdseXBo OworICAgICAgICAgICAgaWYgKEZUX0dseXBoX1N0cm9rZUJvcmRlcigmZ2x5cGgtPmJvcmRl cl9nbHlwaCwgcy0+c3Ryb2tlciwgMCwgMCkpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBB VkVSUk9SX0VYVEVSTkFMOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAg ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDaGVjayBpZiBhIGJpdG1hcCBp cyBuZWVkZWQKKyAgICBpZihzaGlmdF94NjQgPj0gMCAmJiBzaGlmdF95NjQgPj0gMCkgewor ICAgICAgICAvLyBHZXQgdGhlIGJpdG1hcCBzdWJwaXhlbCBpbmRleCAoMCAtPiAxNSkKKyAg ICAgICAgaW50IGlkeCA9IGdldF9zdWJwaXhlbF9pZHgoc2hpZnRfeDY0LCBzaGlmdF95NjQp OworICAgICAgICBzaGlmdC54ID0gc2hpZnRfeDY0OworICAgICAgICBzaGlmdC55ID0gc2hp ZnRfeTY0OworCisgICAgICAgIGlmKCFnbHlwaC0+YmdseXBoW2lkeF0pIHsKKyAgICAgICAg ICAgIEZUX0dseXBoIHRtcF9nbHlwaCA9IGdseXBoLT5nbHlwaDsKKyAgICAgICAgICAgIC8v IGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIlJlbmRlcmluZyBiaXRtYXAgWyVkXSBmb3Ig Z2x5cGg6ICVkXG4iLCBpZHgsIGNvZGUpOworICAgICAgICAgICAgaWYoRlRfR2x5cGhfVG9f Qml0bWFwKCZ0bXBfZ2x5cGgsIEZUX1JFTkRFUl9NT0RFX05PUk1BTCwgJnNoaWZ0LCAwKSkg eworICAgICAgICAgICAgICAgIHJldCA9IEFWRVJST1JfRVhURVJOQUw7CisgICAgICAgICAg ICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdseXBoLT5i Z2x5cGhbaWR4XSA9IChGVF9CaXRtYXBHbHlwaCl0bXBfZ2x5cGg7CisgICAgICAgICAgICBp ZihnbHlwaC0+YmdseXBoW2lkeF0tPmJpdG1hcC5waXhlbF9tb2RlID09IEZUX1BJWEVMX01P REVfTU9OTykgeworICAgICAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwg Ik1vbm9jcm9tYXRpYyAoMWJwcCkgZm9udHMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4iKTsKKyAg ICAgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICAgICAg Z290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocy0+ Ym9yZGVydyAmJiAhZ2x5cGgtPmJvcmRlcl9iZ2x5cGhbaWR4XSkgeworICAgICAgICAgICAg RlRfR2x5cGggdG1wX2dseXBoID0gZ2x5cGgtPmJvcmRlcl9nbHlwaDsKKyAgICAgICAgICAg IC8vIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIlJlbmRlcmluZyBib3JkZXIgYml0bWFw IFslZF0gZm9yIGdseXBoOiAlZFxuIiwgaWR4LCBjb2RlKTsKKyAgICAgICAgICAgIGlmKEZU X0dseXBoX1RvX0JpdG1hcCgmdG1wX2dseXBoLCBGVF9SRU5ERVJfTU9ERV9OT1JNQUwsICZz aGlmdCwgMCkpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBBVkVSUk9SX0VYVEVSTkFMOwor ICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICBnbHlwaC0+Ym9yZGVyX2JnbHlwaFtpZHhdID0gKEZUX0JpdG1hcEdseXBoKXRtcF9nbHlw aDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZihnbHlwaF9wdHIpIHsKKyAgICAgICAgKmds eXBoX3B0ciA9IGdseXBoOworICAgIH0KKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAg aWYgKGdseXBoICYmIGdseXBoLT5nbHlwaCkKKyAgICAgICAgRlRfRG9uZV9HbHlwaChnbHlw aC0+Z2x5cGgpOworCisgICAgYXZfZnJlZXAoJmdseXBoKTsKKyAgICBhdl9mcmVlcCgmbm9k ZSk7CisgICAgcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBkcmF3X2dseXBocyhEcmF3 VGV4dENvbnRleHQgKnMsIEFWRnJhbWUgKmZyYW1lLAotICAgICAgICAgICAgICAgICAgICAg ICBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIEZGRHJh d0NvbG9yICpjb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgVGV4dE1ldHJpY3MgKm1l dHJpY3MsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50IGJvcmRl cncpCiB7Ci0gICAgY2hhciAqdGV4dCA9IHMtPmV4cGFuZGVkX3RleHQuc3RyOwotICAgIHVp bnQzMl90IGNvZGUgPSAwOwotICAgIGludCBpLCB4MSwgeTE7Ci0gICAgdWludDhfdCAqcDsK LSAgICBHbHlwaCAqZ2x5cGggPSBOVUxMOworICAgIGludCBnLCBsLCB4MSwgeTEsIHcxLCBo MSwgaWR4OworICAgIGludCBkeCA9IDAsIGR5ID0gMCwgcGR4ID0gMDsKKyAgICBHbHlwaElu Zm8gKmluZm87CisgICAgR2x5cGggZHVtbXkgPSB7IDAgfSwgKmdseXBoOworICAgIEZUX0Jp dG1hcCBiaXRtYXA7CisgICAgRlRfQml0bWFwR2x5cGggYl9nbHlwaDsKKyAgICB1aW50OF90 IGpfY2VudGVyID0gMCwgal9yaWdodCA9IDAsIGpfbWlkZGxlID0gMCwgal9ib3R0b20gPSAw OworICAgIGludCBsaW5lX3csIG9mZnNldF95ID0gMDsKKyAgICBpbnQgY2xpcF94ID0gMCwg Y2xpcF95ID0gMDsKKworICAgIGpfY2VudGVyID0gc3Ryc3RyKHMtPnRleHRfYWxpZ24sICJD IikgPiAwOworICAgIGpfcmlnaHQgPSBzdHJzdHIocy0+dGV4dF9hbGlnbiwgIlIiKSA+IDA7 CisgICAgal9taWRkbGUgPSBzdHJzdHIocy0+dGV4dF9hbGlnbiwgIk0iKSA+IDA7CisgICAg al9ib3R0b20gPSBzdHJzdHIocy0+dGV4dF9hbGlnbiwgIkIiKSA+IDA7CisgICAgLy8gYXZf bG9nKHMsIEFWX0xPR19ERUJVRywgIk91dGVyIHJlY3RhbmdsZSAtIHc6ICVkLCBoOiAlZFxu Iiwgcy0+Ym94X3dpZHRoLCBzLT5ib3hfaGVpZ2h0KTsKKyAgICAvLyBhdl9sb2cocywgQVZf TE9HX0RFQlVHLCAiVGV4dCBwb3NpdGlvbjogJXNcbiIsIHMtPnRleHRfYWxpZ24pOworCisg ICAgaWYoal9taWRkbGUpIHsKKyAgICAgICAgb2Zmc2V0X3kgPSAocy0+Ym94X2hlaWdodCAt IG1ldHJpY3MtPmhlaWdodCkgLyAyOworICAgIH0gZWxzZSBpZihqX2JvdHRvbSkgeworICAg ICAgICBvZmZzZXRfeSA9IHMtPmJveF9oZWlnaHQgLSBtZXRyaWNzLT5oZWlnaHQ7CisgICAg fQogCi0gICAgZm9yIChpID0gMCwgcCA9IHRleHQ7ICpwOyBpKyspIHsKLSAgICAgICAgRlRf Qml0bWFwIGJpdG1hcDsKLSAgICAgICAgR2x5cGggZHVtbXkgPSB7IDAgfTsKLSAgICAgICAg R0VUX1VURjgoY29kZSwgKnAgPyAqcCsrIDogMCwgY29kZSA9IDB4ZmZmZDsgZ290byBjb250 aW51ZV9vbl9pbnZhbGlkOyk7Ci1jb250aW51ZV9vbl9pbnZhbGlkOgorICAgIGNsaXBfeCA9 IEZGTUlOKG1ldHJpY3MtPnJlY3RfeCArIHMtPmJveF93aWR0aCArIHMtPmJiX3JpZ2h0LCBm cmFtZS0+d2lkdGgpOworICAgIGNsaXBfeSA9IEZGTUlOKG1ldHJpY3MtPnJlY3RfeSArIHMt PmJveF9oZWlnaHQgKyBzLT5iYl9ib3R0b20sIGZyYW1lLT5oZWlnaHQpOworCisgICAgLy8g YXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIkRyYXdpbmcgdGV4dCBhdCAoJWQsICVkKSAoY2xp cF94OiAlZCwgY2xpcF95OiAlZClcbiIsCisgICAgLy8gICAgIHgsIHksIGNsaXBfeCwgY2xp cF95KTsKKworICAgIGZvcihsID0gMDsgbCA8IHMtPmxpbmVfY291bnQ7ICsrbCkgeworICAg ICAgICBUZXh0TGluZSAqbGluZSA9ICZzLT5saW5lc1tsXTsKKyAgICAgICAgbGluZV93ID0g UE9TX0NFSUwobGluZS0+d2lkdGg2NCwgNjQpOworICAgICAgICBmb3IoZyA9IDA7IGcgPCBs aW5lLT5oYl9kYXRhLmdseXBoX2NvdW50OyArK2cpIHsKKyAgICAgICAgICAgIGluZm8gPSAm bGluZS0+Z2x5cGhzW2ddOworICAgICAgICAgICAgZHVtbXkuZm9udHNpemUgPSBzLT5mb250 c2l6ZTsKKyAgICAgICAgICAgIGR1bW15LmNvZGUgPSBpbmZvLT5jb2RlOworICAgICAgICAg ICAgZ2x5cGggPSBhdl90cmVlX2ZpbmQocy0+Z2x5cGhzLCAmZHVtbXksIGdseXBoX2NtcCwg TlVMTCk7CisgICAgICAgICAgICBpZighZ2x5cGgpIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAgICAgfQogCi0gICAgICAgIC8qIHNraXAg bmV3IGxpbmUgY2hhcnMsIGp1c3QgZ28gdG8gbmV3IGxpbmUgKi8KLSAgICAgICAgaWYgKGNv ZGUgPT0gJ1xuJyB8fCBjb2RlID09ICdccicgfHwgY29kZSA9PSAnXHQnKQotICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgICAgICBpZHggPSBnZXRfc3VicGl4ZWxfaWR4KGluZm8t PnNoaWZ0X3g2NCwgaW5mby0+c2hpZnRfeTY0KTsKKyAgICAgICAgICAgIGJfZ2x5cGggPSBi b3JkZXJ3ID8gZ2x5cGgtPmJvcmRlcl9iZ2x5cGhbaWR4XSA6IGdseXBoLT5iZ2x5cGhbaWR4 XTsKKyAgICAgICAgICAgIGJpdG1hcCA9IGJfZ2x5cGgtPmJpdG1hcDsKKyAgICAgICAgICAg IHgxID0geCArIGluZm8tPnggKyBiX2dseXBoLT5sZWZ0OworICAgICAgICAgICAgeTEgPSB5 ICsgaW5mby0+eSAtIGJfZ2x5cGgtPnRvcCArIG9mZnNldF95OworICAgICAgICAgICAgdzEg PSBiaXRtYXAud2lkdGg7CisgICAgICAgICAgICBoMSA9IGJpdG1hcC5yb3dzOworCisgICAg ICAgICAgICBpZihqX2NlbnRlcikgeworICAgICAgICAgICAgICAgIHgxICs9IChzLT5ib3hf d2lkdGggLSBsaW5lX3cpIC8gMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZihqX3JpZ2h0KSB7 CisgICAgICAgICAgICAgICAgeDEgKz0gcy0+Ym94X3dpZHRoIC0gbGluZV93OworICAgICAg ICAgICAgfQogCi0gICAgICAgIGR1bW15LmNvZGUgPSBjb2RlOwotICAgICAgICBkdW1teS5m b250c2l6ZSA9IHMtPmZvbnRzaXplOwotICAgICAgICBnbHlwaCA9IGF2X3RyZWVfZmluZChz LT5nbHlwaHMsICZkdW1teSwgZ2x5cGhfY21wLCBOVUxMKTsKKyAgICAgICAgICAgIC8vIE9m ZnNldCBvZiB0aGUgZ2x5cGgncyBiaXRtYXAgaW4gdGhlIHZpc2libGUgcmVnaW9uCisgICAg ICAgICAgICBkeCA9IGR5ID0gMDsKKyAgICAgICAgICAgIGlmKHgxIDwgbWV0cmljcy0+cmVj dF94IC0gcy0+YmJfbGVmdCkgeworICAgICAgICAgICAgICAgIGR4ID0gbWV0cmljcy0+cmVj dF94IC0gcy0+YmJfbGVmdCAtIHgxOworICAgICAgICAgICAgICAgIHgxID0gbWV0cmljcy0+ cmVjdF94IC0gcy0+YmJfbGVmdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKHkx IDwgbWV0cmljcy0+cmVjdF95IC0gcy0+YmJfdG9wKSB7CisgICAgICAgICAgICAgICAgZHkg PSBtZXRyaWNzLT5yZWN0X3kgLSBzLT5iYl90b3AgLSB5MTsKKyAgICAgICAgICAgICAgICB5 MSA9IG1ldHJpY3MtPnJlY3RfeSAtIHMtPmJiX3RvcDsKKyAgICAgICAgICAgIH0KIAotICAg ICAgICBiaXRtYXAgPSBib3JkZXJ3ID8gZ2x5cGgtPmJvcmRlcl9iaXRtYXAgOiBnbHlwaC0+ Yml0bWFwOworICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGdseXBoIGlzIGVtcHR5IG9y IG91dCBvZiB0aGUgY2xpcHBpbmcgcmVnaW9uCisgICAgICAgICAgICBpZihkeCA+PSB3MSB8 fCBkeSA+PSBoMSB8fCB4MSA+PSBjbGlwX3ggfHwgeTEgPj0gY2xpcF95KSB7CisgICAgICAg ICAgICAgICAgLy8gYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIkdseXBoIChjb2RlOiAlZCAt IGxpbmU6ICVkIC0gZ2x5cGg6ICVkIC0gZHg6ICVkIC0gd3g6ICVkKSBpcyBlbXB0eSBvciBv dXQgb2YgdGhlIGNsaXBwaW5nIHJlZ2lvblxuIiwKKyAgICAgICAgICAgICAgICAvLyAgICAg aW5mby0+Y29kZSwgbCwgZywgZHgsIHcxKTsKKyAgICAgICAgICAgICAgICAvLyBhdl9sb2co cywgQVZfTE9HX0RFQlVHLCAiR2x5cGggJWQgLS0gZHg6ICVkLCBkeTogJWQsIHgxOiAlZCwg eTE6ICVkLCB3MTogJWQsIGgxOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAvLyAgICAgaW5m by0+Y29kZSwgZHgsIGR5LCB4MSwgeTEsIHcxLCBoMSk7CisgICAgICAgICAgICAgICAgY29u dGludWU7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKGdseXBoLT5iaXRtYXAucGl4 ZWxfbW9kZSAhPSBGVF9QSVhFTF9NT0RFX01PTk8gJiYKLSAgICAgICAgICAgIGdseXBoLT5i aXRtYXAucGl4ZWxfbW9kZSAhPSBGVF9QSVhFTF9NT0RFX0dSQVkpCi0gICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAgICAgcGR4ID0gZHggKyBkeSAqIGJp dG1hcC5waXRjaDsKKyAgICAgICAgICAgIHcxID0gRkZNSU4oY2xpcF94IC0geDEsIHcxIC0g ZHgpOworICAgICAgICAgICAgaDEgPSBGRk1JTihjbGlwX3kgLSB5MSwgaDEgLSBkeSk7CiAK LSAgICAgICAgeDEgPSBzLT5wb3NpdGlvbnNbaV0ueCtzLT54K3ggLSBib3JkZXJ3OwotICAg ICAgICB5MSA9IHMtPnBvc2l0aW9uc1tpXS55K3MtPnkreSAtIGJvcmRlcnc7CisgICAgICAg ICAgICAvLyBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiRHJhd2luZyBnbHlwaCAlZFslZF0g KGxpbmU6ICVkIG51bTogJWQpIGF0ICglZCwgJWQpIChpbmZvLng6ICVkLCBpbmZvLnk6ICVk KVxuIiwKKyAgICAgICAgICAgIC8vICAgICBpbmZvLT5jb2RlLCBpZHgsIGwsIGcsIHgxLCB5 MSwgaW5mby0+eCwgaW5mby0+eSk7CiAKLSAgICAgICAgZmZfYmxlbmRfbWFzaygmcy0+ZGMs IGNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5kYXRhLCBmcmFtZS0+bGlu ZXNpemUsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgYml0bWFwLmJ1 ZmZlciwgYml0bWFwLnBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcC53aWR0 aCwgYml0bWFwLnJvd3MsCi0gICAgICAgICAgICAgICAgICAgICAgYml0bWFwLnBpeGVsX21v ZGUgPT0gRlRfUElYRUxfTU9ERV9NT05PID8gMCA6IDMsCi0gICAgICAgICAgICAgICAgICAg ICAgMCwgeDEsIHkxKTsKKyAgICAgICAgICAgIGZmX2JsZW5kX21hc2soJnMtPmRjLCBjb2xv ciwgZnJhbWUtPmRhdGEsIGZyYW1lLT5saW5lc2l6ZSwgY2xpcF94LCBjbGlwX3ksCisgICAg ICAgICAgICAgICAgYml0bWFwLmJ1ZmZlciArIHBkeCwgYml0bWFwLnBpdGNoLCB3MSwgaDEs IDMsIDAsIHgxLCB5MSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gMDsKIH0K IAorc3RhdGljIHZvaWQgc2hhcGVfdGV4dF9oYihEcmF3VGV4dENvbnRleHQgKnMsIEhhcmZi dXp6RGF0YSogaGIsIGNvbnN0IGNoYXIqIHRleHQsIGludCB0ZXh0TGVuKSB7CisgICAgaGIt PmJ1ZiA9IGhiX2J1ZmZlcl9jcmVhdGUoKTsKKyAgICBoYl9idWZmZXJfc2V0X2RpcmVjdGlv bihoYi0+YnVmLCBIQl9ESVJFQ1RJT05fTFRSKTsKKyAgICBoYl9idWZmZXJfc2V0X3Njcmlw dChoYi0+YnVmLCBIQl9TQ1JJUFRfTEFUSU4pOworICAgIGhiX2J1ZmZlcl9zZXRfbGFuZ3Vh Z2UoaGItPmJ1ZiwgaGJfbGFuZ3VhZ2VfZnJvbV9zdHJpbmcoImVuIiwgLTEpKTsKKyAgICBo Yl9idWZmZXJfZ3Vlc3Nfc2VnbWVudF9wcm9wZXJ0aWVzKGhiLT5idWYpOworICAgIGhiLT5m b250ID0gaGJfZnRfZm9udF9jcmVhdGUocy0+ZmFjZSwgTlVMTCk7CisgICAgaGJfZnRfZm9u dF9zZXRfZnVuY3MoaGItPmZvbnQpOworICAgIGhiX2J1ZmZlcl9hZGRfdXRmOChoYi0+YnVm LCB0ZXh0LCB0ZXh0TGVuLCAwLCAtMSk7CisgICAgaGJfc2hhcGUoaGItPmZvbnQsIGhiLT5i dWYsIE5VTEwsIDApOworICAgIGhiLT5nbHlwaF9pbmZvID0gaGJfYnVmZmVyX2dldF9nbHlw aF9pbmZvcyhoYi0+YnVmLCAmaGItPmdseXBoX2NvdW50KTsKKyAgICBoYi0+Z2x5cGhfcG9z ID0gaGJfYnVmZmVyX2dldF9nbHlwaF9wb3NpdGlvbnMoaGItPmJ1ZiwgJmhiLT5nbHlwaF9j b3VudCk7Cit9CiAKLXN0YXRpYyB2b2lkIHVwZGF0ZV9jb2xvcl93aXRoX2FscGhhKERyYXdU ZXh0Q29udGV4dCAqcywgRkZEcmF3Q29sb3IgKmNvbG9yLCBjb25zdCBGRkRyYXdDb2xvciBp bmNvbG9yKQotewotICAgICpjb2xvciA9IGluY29sb3I7Ci0gICAgY29sb3ItPnJnYmFbM10g PSAoY29sb3ItPnJnYmFbM10gKiBzLT5hbHBoYSkgLyAyNTU7Ci0gICAgZmZfZHJhd19jb2xv cigmcy0+ZGMsIGNvbG9yLCBjb2xvci0+cmdiYSk7CitzdGF0aWMgdm9pZCBoYl9kZXN0cm95 KEhhcmZidXp6RGF0YSAqaGIpIHsKKyAgICBoYl9idWZmZXJfZGVzdHJveShoYi0+YnVmKTsK KyAgICBoYl9mb250X2Rlc3Ryb3koaGItPmZvbnQpOworICAgIGhiLT5idWYgPSBOVUxMOwor ICAgIGhiLT5mb250ID0gTlVMTDsKKyAgICBoYi0+Z2x5cGhfaW5mbyA9IE5VTEw7CisgICAg aGItPmdseXBoX3BvcyA9IE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lkIHVwZGF0ZV9hbHBoYShE cmF3VGV4dENvbnRleHQgKnMpCi17Ci0gICAgZG91YmxlIGFscGhhID0gYXZfZXhwcl9ldmFs KHMtPmFfcGV4cHIsIHMtPnZhcl92YWx1ZXMsICZzLT5wcm5nKTsKK3N0YXRpYyBpbnQgbWVh c3VyZV90ZXh0KEFWRmlsdGVyQ29udGV4dCAqY3R4LCBUZXh0TWV0cmljcyAqbWV0cmljcykg eworICAgIERyYXdUZXh0Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBjaGFyKiB0ZXh0 ID0gcy0+ZXhwYW5kZWRfdGV4dC5zdHI7CisgICAgY2hhciAqdGV4dGR1cCA9IGF2X3N0cmR1 cCh0ZXh0KSwgKnN0YXJ0ID0gdGV4dGR1cDsKKyAgICBpbnQgbnVtX2NoYXJzID0gMDsKKyAg ICBpbnQgd2lkdGg2NCA9IDAsIHc2NCA9IDA7CisgICAgaW50IGN1cl9taW5feTY0ID0gMCwg Zmlyc3RfbWF4X3k2NCA9IC0zMjAwMDsKKyAgICBpbnQgZmlyc3RfbWluX3g2NCA9IDMyMDAw LCBsYXN0X21heF94NjQgPSAtMzIwMDA7CisgICAgaW50IG1pbl95NjQgPSAzMjAwMCwgbWF4 X3k2NCA9IC0zMjAwMCwgbWluX3g2NCA9IDMyMDAwLCBtYXhfeDY0ID0gLTMyMDAwOworICAg IGludCBsaW5lX2NvdW50ID0gMDsKKyAgICB1aW50MzJfdCBjb2RlID0gMDsKKyAgICBHbHlw aCAqZ2x5cGggPSBOVUxMOwogCi0gICAgaWYgKGlzbmFuKGFscGhhKSkKLSAgICAgICAgcmV0 dXJuOworICAgIGludCBpLCB0YWJfaWR4ID0gMCwgbGFzdF90YWJfaWR4ID0gMCwgbGluZV9v ZmZzZXQgPSAwOworICAgIGNoYXIqIHA7CisgICAgaW50IHJldCA9IDA7CisKKyAgICAvLyBD b3VudCB0aGUgbGluZXMgYW5kIHRoZSB0YWIgY2hhcmFjdGVycworICAgIHMtPnRhYl9jb3Vu dCA9IDA7CisgICAgZm9yIChpID0gMCwgcCA9IHRleHQ7IDE7IGkrKykgeworICAgICAgICBH RVRfVVRGOChjb2RlLCAqcCA/ICpwKysgOiAwLCBjb2RlID0gMHhmZmZkOyBnb3RvIGNvbnRp bnVlX29uX2ZhaWxlZDspOworY29udGludWVfb25fZmFpbGVkOgorICAgICAgICBpZihpc19u ZXdsaW5lKGNvZGUpIHx8IGNvZGUgPT0gMCkgeworICAgICAgICAgICAgKytsaW5lX2NvdW50 OworICAgICAgICAgICAgaWYoY29kZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZihjb2RlID09ICdcdCcpIHsKKyAg ICAgICAgICAgICsrcy0+dGFiX2NvdW50OworICAgICAgICB9CisgICAgfQogCi0gICAgaWYg KGFscGhhID49IDEuMCkKLSAgICAgICAgcy0+YWxwaGEgPSAyNTU7Ci0gICAgZWxzZSBpZiAo YWxwaGEgPD0gMCkKLSAgICAgICAgcy0+YWxwaGEgPSAwOwotICAgIGVsc2UKLSAgICAgICAg cy0+YWxwaGEgPSAyNTYgKiBhbHBoYTsKKyAgICAvLyBFdmFsdWF0ZSB0aGUgd2lkdGggb2Yg dGhlIHNwYWNlIGNoYXJhY3RlciBpZiBuZWVkZWQgdG8gcmVwbGFjZSB0YWJzCisgICAgaWYo cy0+dGFiX2NvdW50ID4gMCAmJiAhcy0+YmxhbmtfYWR2YW5jZTY0KSB7CisgICAgICAgIEhh cmZidXp6RGF0YSBoYl9kYXRhOworICAgICAgICBzaGFwZV90ZXh0X2hiKHMsICZoYl9kYXRh LCAiICIsIDEpOworICAgICAgICBzLT5ibGFua19hZHZhbmNlNjQgPSBoYl9kYXRhLmdseXBo X3Bvc1swXS54X2FkdmFuY2U7CisgICAgICAgIGhiX2Rlc3Ryb3koJmhiX2RhdGEpOworICAg IH0KKworICAgIHMtPmxpbmVfY291bnQgPSBsaW5lX2NvdW50OworICAgIHMtPmxpbmVzID0g YXZfbWFsbG9jeihsaW5lX2NvdW50ICogc2l6ZW9mKFRleHRMaW5lKSk7CisgICAgcy0+dGFi X2NsdXN0ZXJzID0gYXZfbWFsbG9jeihzLT50YWJfY291bnQgKiBzaXplb2YodWludDMyX3Qp KTsKKyAgICBmb3IoaSA9IDA7IGkgPCBzLT50YWJfY291bnQ7ICsraSkgeworICAgICAgICBz LT50YWJfY2x1c3RlcnNbaV0gPSAtMTsKKyAgICB9CisKKyAgICAvLyBhdl9sb2cocywgQVZf TE9HX0RFQlVHLCAiU3RhcnRpbmcgdGV4dCBtZWFzdXJlbWVudC4uLlxuIik7CisgICAgbGlu ZV9jb3VudCA9IDA7CisgICAgZm9yIChpID0gMCwgcCA9IHRleHRkdXA7IDE7IGkrKykgewor ICAgICAgICBpZigqcCA9PSAnXHQnKSB7CisgICAgICAgICAgICBzLT50YWJfY2x1c3RlcnNb dGFiX2lkeCsrXSA9IGk7CisgICAgICAgICAgICAqcCA9ICcgJzsKKyAgICAgICAgfQorICAg ICAgICBHRVRfVVRGOChjb2RlLCAqcCA/ICpwKysgOiAwLCBjb2RlID0gMHhmZmZkOyBnb3Rv IGNvbnRpbnVlX29uX2ZhaWxlZDI7KTsKK2NvbnRpbnVlX29uX2ZhaWxlZDI6CisgICAgICAg IGlmKGlzX25ld2xpbmUoY29kZSkgfHwgY29kZSA9PSAwKSB7CisgICAgICAgICAgICBUZXh0 TGluZSAqY3VyX2xpbmUgPSAmcy0+bGluZXNbbGluZV9jb3VudF07CisgICAgICAgICAgICBI YXJmYnV6ekRhdGEgKmhiID0gJmN1cl9saW5lLT5oYl9kYXRhOworICAgICAgICAgICAgY3Vy X2xpbmUtPmNsdXN0ZXJfb2Zmc2V0ID0gbGluZV9vZmZzZXQ7CisgICAgICAgICAgICBzaGFw ZV90ZXh0X2hiKHMsIGhiLCBzdGFydCwgbnVtX2NoYXJzKTsKKyAgICAgICAgICAgIHc2NCA9 IDA7CisgICAgICAgICAgICBjdXJfbWluX3k2NCA9IDMyMDAwOworICAgICAgICAgICAgZm9y KGludCB0ID0gMDsgdCA8IGhiLT5nbHlwaF9jb3VudDsgKyt0KSB7CisgICAgICAgICAgICAg ICAgdWludDhfdCBpc190YWIgPSBsYXN0X3RhYl9pZHggPCBzLT50YWJfY291bnQgJiYKKyAg ICAgICAgICAgICAgICAgICAgaGItPmdseXBoX2luZm9bdF0uY2x1c3RlciA9PSBzLT50YWJf Y2x1c3RlcnNbbGFzdF90YWJfaWR4XSAtIGxpbmVfb2Zmc2V0OworICAgICAgICAgICAgICAg IGlmKGlzX3RhYikgeworICAgICAgICAgICAgICAgICAgICArK2xhc3RfdGFiX2lkeDsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0ID0gbG9hZF9nbHlwaChjdHgs ICZnbHlwaCwgaGItPmdseXBoX2luZm9bdF0uY29kZXBvaW50LCAtMSwgLTEpOworICAgICAg ICAgICAgICAgIGlmKHJldCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZihsaW5lX2NvdW50ID09IDAp IHsKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RfbWF4X3k2NCA9IEZGTUFYKGdseXBoLT5i Ym94LnlNYXgsIGZpcnN0X21heF95NjQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICBpZih0ID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyAoT0ZG U0VUIExFRlQpCisgICAgICAgICAgICAgICAgICAgIC8vIHc2NCArPSBnbHlwaC0+YmJveC54 TWluOworICAgICAgICAgICAgICAgICAgICBjdXJfbGluZS0+b2Zmc2V0X2xlZnQ2NCA9IGds eXBoLT5iYm94LnhNaW47CisgICAgICAgICAgICAgICAgICAgIGZpcnN0X21pbl94NjQgPSBG Rk1JTihnbHlwaC0+YmJveC54TWluLCBmaXJzdF9taW5feDY0KTsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgaWYodCA9PSBoYi0+Z2x5cGhfY291bnQgLSAxKSB7Cisg ICAgICAgICAgICAgICAgICAgIHc2NCArPSBnbHlwaC0+YmJveC54TWF4OworICAgICAgICAg ICAgICAgICAgICBsYXN0X21heF94NjQgPSBGRk1BWChnbHlwaC0+YmJveC54TWF4LCBsYXN0 X21heF94NjQpOworICAgICAgICAgICAgICAgICAgICBjdXJfbGluZS0+b2Zmc2V0X3JpZ2h0 NjQgPSBnbHlwaC0+YmJveC54TWF4OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgICAgIGlmKGlzX3RhYikgeworICAgICAgICAgICAgICAgICAgICAgICAg aW50IHNpemUgPSBzLT5ibGFua19hZHZhbmNlNjQgKiBzLT50YWJzaXplOworICAgICAgICAg ICAgICAgICAgICAgICAgdzY0ID0gKHc2NCAvIHNpemUgKyAxKSAqIHNpemU7CisgICAgICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3NjQgKz0g aGItPmdseXBoX3Bvc1t0XS54X2FkdmFuY2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VyX21pbl95NjQgPSBGRk1JTihn bHlwaC0+YmJveC55TWluLCBjdXJfbWluX3k2NCk7CisgICAgICAgICAgICAgICAgbWluX3k2 NCA9IEZGTUlOKGdseXBoLT5iYm94LnlNaW4sIG1pbl95NjQpOworICAgICAgICAgICAgICAg IG1heF95NjQgPSBGRk1BWChnbHlwaC0+YmJveC55TWF4LCBtYXhfeTY0KTsKKyAgICAgICAg ICAgICAgICBtaW5feDY0ID0gRkZNSU4oZ2x5cGgtPmJib3gueE1pbiwgbWluX3g2NCk7Cisg ICAgICAgICAgICAgICAgbWF4X3g2NCA9IEZGTUFYKGdseXBoLT5iYm94LnhNYXgsIG1heF94 NjQpOworCisgICAgICAgICAgICAgICAgLy8gYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIiAg ICBHbHlwaDogJWQgLS0geU1pbjogJWxkIC0tIHlNYXg6ICVsZCAtLSB4TWluOiAlbGQgLS0g eE1heDogJWxkXG4iLAorICAgICAgICAgICAgICAgIC8vICAgICBoYi0+Z2x5cGhfaW5mb1t0 XS5jb2RlcG9pbnQsIGdseXBoLT5iYm94LnlNaW4sIGdseXBoLT5iYm94LnlNYXgsIGdseXBo LT5iYm94LnhNaW4sIGdseXBoLT5iYm94LnhNYXgpOworICAgICAgICAgICAgICAgIC8vIGF2 X2xvZyhzLCBBVl9MT0dfREVCVUcsICIgICAgICBtaW5feTY0OiAlZCAtLSBtYXhfeTY0OiAl ZCAtLSBtaW5feDY0OiAlZCAtLSBtYXhfeDY0OiAlZFxuIiwKKyAgICAgICAgICAgICAgICAv LyAgICAgbWluX3k2NCwgbWF4X3k2NCwgbWluX3g2NCwgbWF4X3g2NCk7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgIGlmKHJldCA9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8g VE9ETyAoT0ZGU0VUIExFRlQpCisgICAgICAgICAgICAgICAgLy8gY3VyX2xpbmUtPndpZHRo NjQgPSB3NjQgLSBjdXJfbGluZS0+b2Zmc2V0X2xlZnQ2NDsKKyAgICAgICAgICAgICAgICBj dXJfbGluZS0+d2lkdGg2NCA9IHc2NDsKKworICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBB Vl9MT0dfREVCVUcsICIgIExpbmU6ICVkIC0tIGdseXBocyBjb3VudDogJWQgLSB3aWR0aDY0 OiAlZCAtIG9mZnNldF9sZWZ0NjQ6ICVkIC0gb2Zmc2V0X3JpZ2h0NjQ6ICVkKVxuIiwKKyAg ICAgICAgICAgICAgICAgICAgbGluZV9jb3VudCwgaGItPmdseXBoX2NvdW50LCBjdXJfbGlu ZS0+d2lkdGg2NCwgY3VyX2xpbmUtPm9mZnNldF9sZWZ0NjQsIGN1cl9saW5lLT5vZmZzZXRf cmlnaHQ2NCk7CisKKyAgICAgICAgICAgICAgICBpZih3NjQgPiB3aWR0aDY0KSB7CisgICAg ICAgICAgICAgICAgICAgIHdpZHRoNjQgPSB3NjQ7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIG51bV9jaGFycyA9IC0xOworICAgICAgICAgICAgICAgIHN0YXJ0ID0g cDsKKyAgICAgICAgICAgICAgICArK2xpbmVfY291bnQ7CisgICAgICAgICAgICAgICAgbGlu ZV9vZmZzZXQgPSBpICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg IGlmKGNvZGUgPT0gMCB8fCByZXQgIT0gMCkgYnJlYWs7CisgICAgICAgICsrbnVtX2NoYXJz OworICAgIH0KKworICAgIGlmKHJldCA9PSAwKSB7CisgICAgICAgIG1ldHJpY3MtPmxpbmVf aGVpZ2h0NjQgPSBzLT5mYWNlLT5zaXplLT5tZXRyaWNzLmhlaWdodDsKKyAgICAgICAgCisg ICAgICAgIC8vIFRPRE8gKExFRlQgT0ZGU0VUKSAKKyAgICAgICAgLy8gbWV0cmljcy0+d2lk dGggPSBQT1NfQ0VJTCh3aWR0aDY0IC0gZmlyc3RfbWluX3g2NCwgNjQpOworICAgICAgICBt ZXRyaWNzLT53aWR0aCA9IFBPU19DRUlMKHdpZHRoNjQsIDY0KTsKKyAgICAgICAgaWYocy0+ eV9hbGlnbiA9PSBZQV9GT05UKSB7CisgICAgICAgICAgICBtZXRyaWNzLT5oZWlnaHQgPSBQ T1NfQ0VJTChtZXRyaWNzLT5saW5lX2hlaWdodDY0ICogbGluZV9jb3VudCwgNjQpOworICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IGhlaWdodDY0ID0gKG1ldHJpY3MtPmxp bmVfaGVpZ2h0NjQgKyBzLT5saW5lX3NwYWNpbmcgKiA2NCkgKgorICAgICAgICAgICAgICAg IChGRk1BWCgwLCBsaW5lX2NvdW50IC0gMSkpICsgZmlyc3RfbWF4X3k2NCAtIGN1cl9taW5f eTY0OworICAgICAgICAgICAgbWV0cmljcy0+aGVpZ2h0ID0gUE9TX0NFSUwoaGVpZ2h0NjQs IDY0KTsKKyAgICAgICAgfQorICAgICAgICBtZXRyaWNzLT5vZmZzZXRfdG9wNjQgPSBmaXJz dF9tYXhfeTY0OworICAgICAgICBtZXRyaWNzLT5vZmZzZXRfcmlnaHQ2NCA9IGxhc3RfbWF4 X3g2NDsKKyAgICAgICAgbWV0cmljcy0+b2Zmc2V0X2JvdHRvbTY0ID0gY3VyX21pbl95NjQ7 CisgICAgICAgIG1ldHJpY3MtPm9mZnNldF9sZWZ0NjQgPSBmaXJzdF9taW5feDY0OworICAg ICAgICBtZXRyaWNzLT5taW5feDY0ID0gbWluX3g2NDsKKyAgICAgICAgbWV0cmljcy0+bWlu X3k2NCA9IG1pbl95NjQ7CisgICAgICAgIG1ldHJpY3MtPm1heF94NjQgPSBtYXhfeDY0Owor ICAgICAgICBtZXRyaWNzLT5tYXhfeTY0ID0gbWF4X3k2NDsKKworICAgICAgICAvLyBhdl9s b2cocywgQVZfTE9HX0RFQlVHLCAiICBUZXh0OiB3aWR0aDogJWQgfCBoZWlnaHQ6ICVkXG4i LCBtZXRyaWNzLT53aWR0aCwgbWV0cmljcy0+aGVpZ2h0KTsKKyAgICAgICAgLy8gYXZfbG9n KHMsIEFWX0xPR19ERUJVRywgIiAgICAgIG9mZl90NjQ6ICVkIHwgb2ZmX3I2NDogJWQgfCBv ZmZfYjY0OiAlZCB8IG9mZl9sNjQ6ICVkXG4iLAorICAgICAgICAvLyAgICAgbWV0cmljcy0+ b2Zmc2V0X3RvcDY0LCBtZXRyaWNzLT5vZmZzZXRfcmlnaHQ2NCwgbWV0cmljcy0+b2Zmc2V0 X2JvdHRvbTY0LCBtZXRyaWNzLT5vZmZzZXRfbGVmdDY0KTsKKyAgICAgICAgLy8gYXZfbG9n KHMsIEFWX0xPR19ERUJVRywgIiAgICAgIG1pbl94NjQ6ICVkIHwgbWluX3k2NDogJWQgfCBt YXhfeDY0OiAlZCB8IG1heF95NjQ6ICVkXG4iLAorICAgICAgICAvLyAgICAgbWV0cmljcy0+ bWluX3g2NCwgbWV0cmljcy0+bWluX3k2NCwgbWV0cmljcy0+bWF4X3g2NCwgbWV0cmljcy0+ bWF4X3k2NCk7CisgICAgICAgIC8vIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICJUZXh0IG1l YXN1cmVtZW50IGNvbXBsZXRlZFxuIik7CisgICAgfQorCisgICAgYXZfZnJlZSh0ZXh0ZHVw KTsKKyAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGRyYXdfdGV4dChBVkZpbHRl ckNvbnRleHQgKmN0eCwgQVZGcmFtZSAqZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICBp bnQgd2lkdGgsIGludCBoZWlnaHQpCitzdGF0aWMgaW50IGRyYXdfdGV4dChBVkZpbHRlckNv bnRleHQgKmN0eCwgQVZGcmFtZSAqZnJhbWUpCiB7CiAgICAgRHJhd1RleHRDb250ZXh0ICpz ID0gY3R4LT5wcml2OwogICAgIEFWRmlsdGVyTGluayAqaW5saW5rID0gY3R4LT5pbnB1dHNb MF07Ci0KLSAgICB1aW50MzJfdCBjb2RlID0gMCwgcHJldl9jb2RlID0gMDsKLSAgICBpbnQg eCA9IDAsIHkgPSAwLCBpID0gMCwgcmV0OwotICAgIGludCBtYXhfdGV4dF9saW5lX3cgPSAw LCBsZW47Ci0gICAgaW50IGJveF93LCBib3hfaDsKLSAgICBjaGFyICp0ZXh0OwotICAgIHVp bnQ4X3QgKnA7Ci0gICAgaW50IHlfbWluID0gMzIwMDAsIHlfbWF4ID0gLTMyMDAwOwotICAg IGludCB4X21pbiA9IDMyMDAwLCB4X21heCA9IC0zMjAwMDsKLSAgICBGVF9WZWN0b3IgZGVs dGE7Ci0gICAgR2x5cGggKmdseXBoID0gTlVMTCwgKnByZXZfZ2x5cGggPSBOVUxMOwotICAg IEdseXBoIGR1bW15ID0geyAwIH07CisgICAgaW50IHggPSAwLCB5ID0gMCwgcmV0OworICAg IGludCBzaGlmdF94NjQsIHNoaWZ0X3k2NDsKKyAgICBpbnQgeDY0LCB5NjQ7CisgICAgaW50 IG9mZnNldF9sZWZ0ID0gMDsKKyAgICBHbHlwaCAqZ2x5cGggPSBOVUxMOwogCiAgICAgdGlt ZV90IG5vdyA9IHRpbWUoMCk7CiAgICAgc3RydWN0IHRtIGx0aW1lOwpAQCAtMTQxMyw2ICsx ODc3LDE3IEBAIHN0YXRpYyBpbnQgZHJhd190ZXh0KEFWRmlsdGVyQ29udGV4dCAqY3R4LCBB VkZyYW1lICpmcmFtZSwKICAgICBGRkRyYXdDb2xvciBib3JkZXJjb2xvcjsKICAgICBGRkRy YXdDb2xvciBib3hjb2xvcjsKIAorICAgIGludCB3aWR0aCA9IGZyYW1lLT53aWR0aDsKKyAg ICBpbnQgaGVpZ2h0ID0gZnJhbWUtPmhlaWdodDsKKyAgICBpbnQgcmVjX3ggPSAwLCByZWNf eSA9IDAsIHJlY193aWR0aCA9IDAsIHJlY19oZWlnaHQgPSAwOworICAgIGludCBpc19vdXRz aWRlID0gMDsKKyAgICBpbnQgbGFzdF90YWJfaWR4ID0gMDsKKworICAgIFRleHRNZXRyaWNz IG1ldHJpY3M7CisKKyAgICAvLyBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiYXNjZW5kOiAl bGQgZGVzY2VudDogJWxkIGhlaWdodDogJWxkXG4iLAorICAgIC8vICAgICBzLT5mYWNlLT5z aXplLT5tZXRyaWNzLmFzY2VuZGVyLCBzLT5mYWNlLT5zaXplLT5tZXRyaWNzLmRlc2NlbmRl ciwgcy0+ZmFjZS0+c2l6ZS0+bWV0cmljcy5oZWlnaHQpOworCiAgICAgYXZfYnByaW50X2Ns ZWFyKGJwKTsKIAogICAgIGlmKHMtPmJhc2V0aW1lICE9IEFWX05PUFRTX1ZBTFVFKQpAQCAt MTQ0MSwxMyArMTkxNiw2IEBAIHN0YXRpYyBpbnQgZHJhd190ZXh0KEFWRmlsdGVyQ29udGV4 dCAqY3R4LCBBVkZyYW1lICpmcmFtZSwKIAogICAgIGlmICghYXZfYnByaW50X2lzX2NvbXBs ZXRlKGJwKSkKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKLSAgICB0ZXh0ID0g cy0+ZXhwYW5kZWRfdGV4dC5zdHI7Ci0gICAgaWYgKChsZW4gPSBzLT5leHBhbmRlZF90ZXh0 LmxlbikgPiBzLT5uYl9wb3NpdGlvbnMpIHsKLSAgICAgICAgaWYgKCEocy0+cG9zaXRpb25z ID0KLSAgICAgICAgICAgICAgYXZfcmVhbGxvYyhzLT5wb3NpdGlvbnMsIGxlbipzaXplb2Yo KnMtPnBvc2l0aW9ucykpKSkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7 Ci0gICAgICAgIHMtPm5iX3Bvc2l0aW9ucyA9IGxlbjsKLSAgICB9CiAKICAgICBpZiAocy0+ Zm9udGNvbG9yX2V4cHJbMF0pIHsKICAgICAgICAgLyogSWYgZXhwcmVzc2lvbiBpcyBzZXQs IGV2YWx1YXRlIGFuZCByZXBsYWNlIHRoZSBzdGF0aWMgdmFsdWUgKi8KQEAgLTE0NjMsODUg KzE5MzEsMjggQEAgc3RhdGljIGludCBkcmF3X3RleHQoQVZGaWx0ZXJDb250ZXh0ICpjdHgs IEFWRnJhbWUgKmZyYW1lLAogICAgICAgICBmZl9kcmF3X2NvbG9yKCZzLT5kYywgJnMtPmZv bnRjb2xvciwgcy0+Zm9udGNvbG9yLnJnYmEpOwogICAgIH0KIAotICAgIHggPSAwOwotICAg IHkgPSAwOwotCi0gICAgaWYgKChyZXQgPSB1cGRhdGVfZm9udHNpemUoY3R4KSkgPCAwKQor ICAgIGlmICgocmV0ID0gdXBkYXRlX2ZvbnRzaXplKGN0eCkpIDwgMCkgewogICAgICAgICBy ZXR1cm4gcmV0OwotCi0gICAgLyogbG9hZCBhbmQgY2FjaGUgZ2x5cGhzICovCi0gICAgZm9y IChpID0gMCwgcCA9IHRleHQ7ICpwOyBpKyspIHsKLSAgICAgICAgR0VUX1VURjgoY29kZSwg KnAgPyAqcCsrIDogMCwgY29kZSA9IDB4ZmZmZDsgZ290byBjb250aW51ZV9vbl9pbnZhbGlk Oyk7Ci1jb250aW51ZV9vbl9pbnZhbGlkOgotCi0gICAgICAgIC8qIGdldCBnbHlwaCAqLwot ICAgICAgICBkdW1teS5jb2RlID0gY29kZTsKLSAgICAgICAgZHVtbXkuZm9udHNpemUgPSBz LT5mb250c2l6ZTsKLSAgICAgICAgZ2x5cGggPSBhdl90cmVlX2ZpbmQocy0+Z2x5cGhzLCAm ZHVtbXksIGdseXBoX2NtcCwgTlVMTCk7Ci0gICAgICAgIGlmICghZ2x5cGgpIHsKLSAgICAg ICAgICAgIHJldCA9IGxvYWRfZ2x5cGgoY3R4LCAmZ2x5cGgsIGNvZGUpOwotICAgICAgICAg ICAgaWYgKHJldCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg fQotCi0gICAgICAgIHlfbWluID0gRkZNSU4oZ2x5cGgtPmJib3gueU1pbiwgeV9taW4pOwot ICAgICAgICB5X21heCA9IEZGTUFYKGdseXBoLT5iYm94LnlNYXgsIHlfbWF4KTsKLSAgICAg ICAgeF9taW4gPSBGRk1JTihnbHlwaC0+YmJveC54TWluLCB4X21pbik7Ci0gICAgICAgIHhf bWF4ID0gRkZNQVgoZ2x5cGgtPmJib3gueE1heCwgeF9tYXgpOwogICAgIH0KLSAgICBzLT5t YXhfZ2x5cGhfaCA9IHlfbWF4IC0geV9taW47Ci0gICAgcy0+bWF4X2dseXBoX3cgPSB4X21h eCAtIHhfbWluOwotCi0gICAgLyogY29tcHV0ZSBhbmQgc2F2ZSBwb3NpdGlvbiBmb3IgZWFj aCBnbHlwaCAqLwotICAgIGdseXBoID0gTlVMTDsKLSAgICBmb3IgKGkgPSAwLCBwID0gdGV4 dDsgKnA7IGkrKykgewotICAgICAgICBHRVRfVVRGOChjb2RlLCAqcCA/ICpwKysgOiAwLCBj b2RlID0gMHhmZmZkOyBnb3RvIGNvbnRpbnVlX29uX2ludmFsaWQyOyk7Ci1jb250aW51ZV9v bl9pbnZhbGlkMjoKIAotICAgICAgICAvKiBza2lwIHRoZSBcbiBpbiB0aGUgc2VxdWVuY2Ug XHJcbiAqLwotICAgICAgICBpZiAocHJldl9jb2RlID09ICdccicgJiYgY29kZSA9PSAnXG4n KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgcHJldl9jb2RlID0gY29kZTsK LSAgICAgICAgaWYgKGlzX25ld2xpbmUoY29kZSkpIHsKLQotICAgICAgICAgICAgbWF4X3Rl eHRfbGluZV93ID0gRkZNQVgobWF4X3RleHRfbGluZV93LCB4KTsKLSAgICAgICAgICAgIHkg Kz0gcy0+bWF4X2dseXBoX2ggKyBzLT5saW5lX3NwYWNpbmc7Ci0gICAgICAgICAgICB4ID0g MDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogZ2V0 IGdseXBoICovCi0gICAgICAgIHByZXZfZ2x5cGggPSBnbHlwaDsKLSAgICAgICAgZHVtbXku Y29kZSA9IGNvZGU7Ci0gICAgICAgIGR1bW15LmZvbnRzaXplID0gcy0+Zm9udHNpemU7Ci0g ICAgICAgIGdseXBoID0gYXZfdHJlZV9maW5kKHMtPmdseXBocywgJmR1bW15LCBnbHlwaF9j bXAsIE5VTEwpOwotCi0gICAgICAgIC8qIGtlcm5pbmcgKi8KLSAgICAgICAgaWYgKHMtPnVz ZV9rZXJuaW5nICYmIHByZXZfZ2x5cGggJiYgZ2x5cGgtPmNvZGUpIHsKLSAgICAgICAgICAg IEZUX0dldF9LZXJuaW5nKHMtPmZhY2UsIHByZXZfZ2x5cGgtPmNvZGUsIGdseXBoLT5jb2Rl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZnRfa2VybmluZ19kZWZhdWx0LCAmZGVs dGEpOwotICAgICAgICAgICAgeCArPSBkZWx0YS54ID4+IDY7Ci0gICAgICAgIH0KLQotICAg ICAgICAvKiBzYXZlIHBvc2l0aW9uICovCi0gICAgICAgIHMtPnBvc2l0aW9uc1tpXS54ID0g eCArIGdseXBoLT5iaXRtYXBfbGVmdDsKLSAgICAgICAgcy0+cG9zaXRpb25zW2ldLnkgPSB5 IC0gZ2x5cGgtPmJpdG1hcF90b3AgKyB5X21heDsKLSAgICAgICAgaWYgKGNvZGUgPT0gJ1x0 JykgeCAgPSAoeCAvIHMtPnRhYnNpemUgKyAxKSpzLT50YWJzaXplOwotICAgICAgICBlbHNl ICAgICAgICAgICAgICB4ICs9IGdseXBoLT5hZHZhbmNlOwotICAgIH0KKyAgICBtZWFzdXJl X3RleHQoY3R4LCAmbWV0cmljcyk7CiAKLSAgICBtYXhfdGV4dF9saW5lX3cgPSBGRk1BWCh4 LCBtYXhfdGV4dF9saW5lX3cpOworICAgIHMtPm1heF9nbHlwaF9oID0gUE9TX0NFSUwobWV0 cmljcy5tYXhfeTY0IC0gbWV0cmljcy5taW5feTY0LCA2NCk7CisgICAgcy0+bWF4X2dseXBo X3cgPSBQT1NfQ0VJTChtZXRyaWNzLm1heF94NjQgLSBtZXRyaWNzLm1pbl94NjQsIDY0KTsK IAotICAgIHMtPnZhcl92YWx1ZXNbVkFSX1RXXSA9IHMtPnZhcl92YWx1ZXNbVkFSX1RFWFRf V10gPSBtYXhfdGV4dF9saW5lX3c7Ci0gICAgcy0+dmFyX3ZhbHVlc1tWQVJfVEhdID0gcy0+ dmFyX3ZhbHVlc1tWQVJfVEVYVF9IXSA9IHkgKyBzLT5tYXhfZ2x5cGhfaDsKKyAgICBzLT52 YXJfdmFsdWVzW1ZBUl9UV10gPSBzLT52YXJfdmFsdWVzW1ZBUl9URVhUX1ddID0gbWV0cmlj cy53aWR0aDsKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9USF0gPSBzLT52YXJfdmFsdWVzW1ZB Ul9URVhUX0hdID0gbWV0cmljcy5oZWlnaHQ7CiAKICAgICBzLT52YXJfdmFsdWVzW1ZBUl9N QVhfR0xZUEhfV10gPSBzLT5tYXhfZ2x5cGhfdzsKICAgICBzLT52YXJfdmFsdWVzW1ZBUl9N QVhfR0xZUEhfSF0gPSBzLT5tYXhfZ2x5cGhfaDsKLSAgICBzLT52YXJfdmFsdWVzW1ZBUl9N QVhfR0xZUEhfQV0gPSBzLT52YXJfdmFsdWVzW1ZBUl9BU0NFTlQgXSA9IHlfbWF4OwotICAg IHMtPnZhcl92YWx1ZXNbVkFSX01BWF9HTFlQSF9EXSA9IHMtPnZhcl92YWx1ZXNbVkFSX0RF U0NFTlRdID0geV9taW47CisgICAgcy0+dmFyX3ZhbHVlc1tWQVJfTUFYX0dMWVBIX0FdID0g cy0+dmFyX3ZhbHVlc1tWQVJfQVNDRU5UXSA9IFBPU19DRUlMKG1ldHJpY3MubWF4X3k2NCwg NjQpOworICAgIHMtPnZhcl92YWx1ZXNbVkFSX0ZPTlRfQV0gPSBzLT5mYWNlLT5zaXplLT5t ZXRyaWNzLmFzY2VuZGVyIC8gNjQ7CisgICAgcy0+dmFyX3ZhbHVlc1tWQVJfTUFYX0dMWVBI X0RdID0gcy0+dmFyX3ZhbHVlc1tWQVJfREVTQ0VOVF0gPSBQT1NfQ0VJTChtZXRyaWNzLm1p bl95NjQsIDY0KTsKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9GT05UX0RdID0gLXMtPmZhY2Ut PnNpemUtPm1ldHJpY3MuZGVzY2VuZGVyIC8gNjQ7CiAKLSAgICBzLT52YXJfdmFsdWVzW1ZB Ul9MSU5FX0hdID0gcy0+dmFyX3ZhbHVlc1tWQVJfTEhdID0gcy0+bWF4X2dseXBoX2g7Cisg ICAgcy0+dmFyX3ZhbHVlc1tWQVJfVE9QX0FdID0gUE9TX0NFSUwobWV0cmljcy5vZmZzZXRf dG9wNjQsIDY0KTsKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9CT1RUT01fRF0gPSBQT1NfQ0VJ TChtZXRyaWNzLm9mZnNldF9ib3R0b202NCwgNjQpOworICAgIHMtPnZhcl92YWx1ZXNbVkFS X0xJTkVfSF0gPSBzLT52YXJfdmFsdWVzW1ZBUl9MSF0gPSBtZXRyaWNzLmxpbmVfaGVpZ2h0 NjQgLyA2NC47CiAKICAgICBpZiAocy0+dGV4dF9zb3VyY2UgPT0gQVZfRlJBTUVfREFUQV9E RVRFQ1RJT05fQkJPWEVTKSB7CiAgICAgICAgIHMtPnZhcl92YWx1ZXNbVkFSX1hdID0gcy0+ eDsKQEAgLTE1NTksNTYgKzE5NzAsMTc2IEBAIGNvbnRpbnVlX29uX2ludmFsaWQyOgogICAg IHVwZGF0ZV9jb2xvcl93aXRoX2FscGhhKHMsICZib3JkZXJjb2xvciwgcy0+Ym9yZGVyY29s b3IpOwogICAgIHVwZGF0ZV9jb2xvcl93aXRoX2FscGhhKHMsICZib3hjb2xvciAgICwgcy0+ Ym94Y29sb3IgICApOwogCi0gICAgYm94X3cgPSBtYXhfdGV4dF9saW5lX3c7Ci0gICAgYm94 X2ggPSB5ICsgcy0+bWF4X2dseXBoX2g7CisgICAgaWYgKHMtPmRyYXdfYm94ICYmIHMtPmJv eGJvcmRlcncpIHsKKyAgICAgICAgaW50IGJic2l6ZVs0XTsKKyAgICAgICAgaW50IGNvdW50 OworICAgICAgICBjb3VudCA9IHN0cmluZ190b19hcnJheShzLT5ib3hib3JkZXJ3LCBiYnNp emUsIDQpOworICAgICAgICBpZihjb3VudCA9PSAxKSB7CisgICAgICAgICAgICBzLT5iYl90 b3AgPSBzLT5iYl9yaWdodCA9IHMtPmJiX2JvdHRvbSA9IHMtPmJiX2xlZnQgPSBiYnNpemVb MF07CisgICAgICAgIH0gZWxzZSBpZihjb3VudCA9PSAyKSB7CisgICAgICAgICAgICBzLT5i Yl90b3AgPSBzLT5iYl9ib3R0b20gPSBiYnNpemVbMF07CisgICAgICAgICAgICBzLT5iYl9y aWdodCA9IHMtPmJiX2xlZnQgPSBiYnNpemVbMV07CisgICAgICAgIH0gZWxzZSBpZihjb3Vu dCA9PSAzKSB7CisgICAgICAgICAgICBzLT5iYl90b3AgPSBiYnNpemVbMF07CisgICAgICAg ICAgICBzLT5iYl9yaWdodCA9IHMtPmJiX2xlZnQgPSBiYnNpemVbMV07CisgICAgICAgICAg ICBzLT5iYl9ib3R0b20gPSBiYnNpemVbMl07CisgICAgICAgIH0gZWxzZSBpZihjb3VudCA9 PSA0KSB7CisgICAgICAgICAgICBzLT5iYl90b3AgPSBiYnNpemVbMF07CisgICAgICAgICAg ICBzLT5iYl9yaWdodCA9IGJic2l6ZVsxXTsKKyAgICAgICAgICAgIHMtPmJiX2JvdHRvbSA9 IGJic2l6ZVsyXTsKKyAgICAgICAgICAgIHMtPmJiX2xlZnQgPSBiYnNpemVbM107CisgICAg ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBzLT5iYl90b3AgPSBzLT5iYl9yaWdodCA9 IHMtPmJiX2JvdHRvbSA9IHMtPmJiX2xlZnQgPSAwOworICAgIH0KIAogICAgIGlmIChzLT5m aXhfYm91bmRzKSB7Ci0KICAgICAgICAgLyogY2FsY3VsYXRlIGZvb3RwcmludCBvZiB0ZXh0 IGVmZmVjdHMgKi8KLSAgICAgICAgaW50IGJveG9mZnNldCAgICAgPSBzLT5kcmF3X2JveCA/ IEZGTUFYKHMtPmJveGJvcmRlcncsIDApIDogMDsKICAgICAgICAgaW50IGJvcmRlcm9mZnNl dCAgPSBzLT5ib3JkZXJ3ICA/IEZGTUFYKHMtPmJvcmRlcncsIDApIDogMDsKIAotICAgICAg ICBpbnQgb2Zmc2V0bGVmdCA9IEZGTUFYMyhib3hvZmZzZXQsIGJvcmRlcm9mZnNldCwKKyAg ICAgICAgaW50IG9mZnNldGxlZnQgPSBGRk1BWDMoRkZNQVgocy0+YmJfbGVmdCwgMCksIGJv cmRlcm9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPnNoYWRv d3ggPCAwID8gRkZBQlMocy0+c2hhZG93eCkgOiAwKSk7Ci0gICAgICAgIGludCBvZmZzZXR0 b3AgPSBGRk1BWDMoYm94b2Zmc2V0LCBib3JkZXJvZmZzZXQsCisgICAgICAgIGludCBvZmZz ZXR0b3AgPSBGRk1BWDMoRkZNQVgocy0+YmJfdG9wLCAwKSwgYm9yZGVyb2Zmc2V0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocy0+c2hhZG93eSA8IDAgPyBGRkFCUyhz LT5zaGFkb3d5KSA6IDApKTsKLQotICAgICAgICBpbnQgb2Zmc2V0cmlnaHQgPSBGRk1BWDMo Ym94b2Zmc2V0LCBib3JkZXJvZmZzZXQsCisgICAgICAgIGludCBvZmZzZXRyaWdodCA9IEZG TUFYMyhGRk1BWChzLT5iYl9yaWdodCwgMCksIGJvcmRlcm9mZnNldCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzLT5zaGFkb3d4ID4gMCA/IHMtPnNoYWRvd3ggOiAw KSk7Ci0gICAgICAgIGludCBvZmZzZXRib3R0b20gPSBGRk1BWDMoYm94b2Zmc2V0LCBib3Jk ZXJvZmZzZXQsCisgICAgICAgIGludCBvZmZzZXRib3R0b20gPSBGRk1BWDMoRkZNQVgocy0+ YmJfYm90dG9tLCAwKSwgYm9yZGVyb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzLT5zaGFkb3d5ID4gMCA/IHMtPnNoYWRvd3kgOiAwKSk7CiAKLQogICAg ICAgICBpZiAocy0+eCAtIG9mZnNldGxlZnQgPCAwKSBzLT54ID0gb2Zmc2V0bGVmdDsKICAg ICAgICAgaWYgKHMtPnkgLSBvZmZzZXR0b3AgPCAwKSAgcy0+eSA9IG9mZnNldHRvcDsKIAot ICAgICAgICBpZiAocy0+eCArIGJveF93ICsgb2Zmc2V0cmlnaHQgPiB3aWR0aCkKLSAgICAg ICAgICAgIHMtPnggPSBGRk1BWCh3aWR0aCAtIGJveF93IC0gb2Zmc2V0cmlnaHQsIDApOwot ICAgICAgICBpZiAocy0+eSArIGJveF9oICsgb2Zmc2V0Ym90dG9tID4gaGVpZ2h0KQotICAg ICAgICAgICAgcy0+eSA9IEZGTUFYKGhlaWdodCAtIGJveF9oIC0gb2Zmc2V0Ym90dG9tLCAw KTsKKyAgICAgICAgaWYgKHMtPnggKyBtZXRyaWNzLndpZHRoICsgb2Zmc2V0cmlnaHQgPiB3 aWR0aCkKKyAgICAgICAgICAgIHMtPnggPSBGRk1BWCh3aWR0aCAtIG1ldHJpY3Mud2lkdGgg LSBvZmZzZXRyaWdodCwgMCk7CisgICAgICAgIGlmIChzLT55ICsgbWV0cmljcy5oZWlnaHQg KyBvZmZzZXRib3R0b20gPiBoZWlnaHQpCisgICAgICAgICAgICBzLT55ID0gRkZNQVgoaGVp Z2h0IC0gbWV0cmljcy5oZWlnaHQgLSBvZmZzZXRib3R0b20sIDApOwogICAgIH0KIAotICAg IC8qIGRyYXcgYm94ICovCi0gICAgaWYgKHMtPmRyYXdfYm94KQotICAgICAgICBmZl9ibGVu ZF9yZWN0YW5nbGUoJnMtPmRjLCAmYm94Y29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBmcmFtZS0+ZGF0YSwgZnJhbWUtPmxpbmVzaXplLCB3aWR0aCwgaGVpZ2h0LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgcy0+eCAtIHMtPmJveGJvcmRlcncsIHMtPnkgLSBz LT5ib3hib3JkZXJ3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94X3cgKyBzLT5i b3hib3JkZXJ3ICogMiwgYm94X2ggKyBzLT5ib3hib3JkZXJ3ICogMik7CisgICAgeCA9IDA7 CisgICAgeSA9IDA7CisgICAgeDY0ID0gKGludCkocy0+eCAqIDY0Lik7CisgICAgaWYocy0+ eV9hbGlnbiA9PSBZQV9GT05UKSB7CisgICAgICAgIHk2NCA9IChpbnQpKHMtPnkgKiA2NC4g KyBzLT5mYWNlLT5zaXplLT5tZXRyaWNzLmFzY2VuZGVyKTsKKyAgICB9IGVsc2UgaWYocy0+ eV9hbGlnbiA9PSBZQV9CQVNFTElORSkgeworICAgICAgICB5NjQgPSAoaW50KShzLT55ICog NjQuKTsKKyAgICB9IGVsc2UgeworICAgICAgICB5NjQgPSAoaW50KShzLT55ICogNjQuICsg bWV0cmljcy5vZmZzZXRfdG9wNjQpOworICAgIH0KIAotICAgIGlmIChzLT5zaGFkb3d4IHx8 IHMtPnNoYWRvd3kpIHsKLSAgICAgICAgaWYgKChyZXQgPSBkcmF3X2dseXBocyhzLCBmcmFt ZSwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hh ZG93Y29sb3IsIHMtPnNoYWRvd3gsIHMtPnNoYWRvd3ksIDApKSA8IDApCi0gICAgICAgICAg ICByZXR1cm4gcmV0OworICAgIGZvcihpbnQgbCA9IDA7IGwgPCBzLT5saW5lX2NvdW50OyAr K2wpIHsKKyAgICAgICAgVGV4dExpbmUgKmxpbmUgPSAmcy0+bGluZXNbbF07CisgICAgICAg IEhhcmZidXp6RGF0YSAqaGIgPSAmbGluZS0+aGJfZGF0YTsKKyAgICAgICAgbGluZS0+Z2x5 cGhzID0gYXZfbWFsbG9jeihoYi0+Z2x5cGhfY291bnQgKiBzaXplb2YoR2x5cGhJbmZvKSk7 CisKKyAgICAgICAgZm9yKGludCB0ID0gMDsgdCA8IGhiLT5nbHlwaF9jb3VudDsgKyt0KSB7 CisgICAgICAgICAgICBHbHlwaEluZm8gKmdfaW5mbyA9ICZsaW5lLT5nbHlwaHNbdF07Cisg ICAgICAgICAgICB1aW50OF90IGlzX3RhYiA9IGxhc3RfdGFiX2lkeCA8IHMtPnRhYl9jb3Vu dCAmJgorICAgICAgICAgICAgICAgIGhiLT5nbHlwaF9pbmZvW3RdLmNsdXN0ZXIgPT0gcy0+ dGFiX2NsdXN0ZXJzW2xhc3RfdGFiX2lkeF0gLSBsaW5lLT5jbHVzdGVyX29mZnNldDsKKyAg ICAgICAgICAgIGludCB0cnVlX3gsIHRydWVfeTsKKyAgICAgICAgICAgIGlmKGlzX3RhYikg eworICAgICAgICAgICAgICAgICsrbGFzdF90YWJfaWR4OworICAgICAgICAgICAgfQorICAg ICAgICAgICAgdHJ1ZV94ID0geCArIGhiLT5nbHlwaF9wb3NbdF0ueF9vZmZzZXQ7CisgICAg ICAgICAgICB0cnVlX3kgPSB5ICsgaGItPmdseXBoX3Bvc1t0XS55X29mZnNldDsKKyAgICAg ICAgICAgIHNoaWZ0X3g2NCA9ICgoKHg2NCArIHRydWVfeCkgPj4gNCkgJiAwYjAwMTEpIDw8 IDQ7CisgICAgICAgICAgICBzaGlmdF95NjQgPSAoKDQgLSAoKCh5NjQgKyB0cnVlX3kpID4+ IDQpICYgMGIwMDExKSkgJiAwYjAwMTEpIDw8IDQ7CisKKyAgICAgICAgICAgIHJldCA9IGxv YWRfZ2x5cGgoY3R4LCAmZ2x5cGgsIGhiLT5nbHlwaF9pbmZvW3RdLmNvZGVwb2ludCwgc2hp ZnRfeDY0LCBzaGlmdF95NjQpOworICAgICAgICAgICAgaWYgKHJldCAhPSAwKSB7CisgICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdf aW5mby0+Y29kZSA9IGhiLT5nbHlwaF9pbmZvW3RdLmNvZGVwb2ludDsKKyAgICAgICAgICAg IGdfaW5mby0+eCA9ICh4NjQgKyB0cnVlX3gpID4+IDY7CisgICAgICAgICAgICBnX2luZm8t PnkgPSAoKHk2NCArIHRydWVfeSkgPj4gNikgKyAoc2hpZnRfeTY0ID4gMCA/IDEgOiAwKTsK KyAgICAgICAgICAgIGdfaW5mby0+c2hpZnRfeDY0ID0gc2hpZnRfeDY0OworICAgICAgICAg ICAgZ19pbmZvLT5zaGlmdF95NjQgPSBzaGlmdF95NjQ7CisKKyAgICAgICAgICAgIGlmKCFp c190YWIpIHsKKyAgICAgICAgICAgICAgICB4ICs9IGhiLT5nbHlwaF9wb3NbdF0ueF9hZHZh bmNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9 IHMtPmJsYW5rX2FkdmFuY2U2NCAqIHMtPnRhYnNpemU7CisgICAgICAgICAgICAgICAgeCA9 ICh4IC8gc2l6ZSArIDEpICogc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHkg Kz0gaGItPmdseXBoX3Bvc1t0XS55X2FkdmFuY2U7CisgICAgICAgIH0KKworICAgICAgICB5 ICs9IG1ldHJpY3MubGluZV9oZWlnaHQ2NCArIHMtPmxpbmVfc3BhY2luZyAqIDY0OworICAg ICAgICB4ID0gMDsKICAgICB9CiAKLSAgICBpZiAocy0+Ym9yZGVydykgewotICAgICAgICBp ZiAoKHJldCA9IGRyYXdfZ2x5cGhzKHMsIGZyYW1lLCB3aWR0aCwgaGVpZ2h0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZib3JkZXJjb2xvciwgMCwgMCwgcy0+Ym9yZGVy dykpIDwgMCkKKy8vIFRPRE8gKExFRlQgT0ZGU0VUKQorLy8gICAgb2Zmc2V0X2xlZnQgPSBt ZXRyaWNzLm9mZnNldF9sZWZ0NjQgLyA2NDsKKyAgICBvZmZzZXRfbGVmdCA9IDA7CisgICAg bWV0cmljcy5yZWN0X3ggPSBzLT54OworICAgIGlmKHMtPnlfYWxpZ24gPT0gWUFfQkFTRUxJ TkUpIHsKKyAgICAgICAgbWV0cmljcy5yZWN0X3kgPSBzLT55IC0gbWV0cmljcy5vZmZzZXRf dG9wNjQgLyA2NDsKKyAgICB9IGVsc2UgeworICAgICAgICBtZXRyaWNzLnJlY3RfeSA9IHMt Pnk7CisgICAgfQorICAgIAorICAgIHMtPmJveF93aWR0aCA9IHMtPmJveHcgPT0gMCA/IG1l dHJpY3Mud2lkdGggOiBzLT5ib3h3OworICAgIHMtPmJveF9oZWlnaHQgPSBzLT5ib3hoID09 IDAgPyBtZXRyaWNzLmhlaWdodCA6IHMtPmJveGg7CisKKyAgICBpZighcy0+ZHJhd19ib3gp IHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgYm9yZGVyIGZvciB0aGUgY2xpcHBpbmcgcmVnaW9u IHRvIHRha2UgaW50byBhY2NvdW50IHN1YnBpeGVsCisgICAgICAgIC8vIGVycm9ycyBpbiB0 ZXh0IG1lYXN1cmVtZW50IGFuZCBlZmZlY3RzLgorICAgICAgICBpbnQgYm9yZGVyb2Zmc2V0 ID0gcy0+Ym9yZGVydyA/IEZGTUFYKHMtPmJvcmRlcncsIDApIDogMDsKKyAgICAgICAgcy0+ YmJfbGVmdCA9IGJvcmRlcm9mZnNldCArIChzLT5zaGFkb3d4IDwgMCA/IEZGQUJTKHMtPnNo YWRvd3gpIDogMCkgKyAxOworICAgICAgICBzLT5iYl90b3AgPSBib3JkZXJvZmZzZXQgKyAo cy0+c2hhZG93eSA8IDAgPyBGRkFCUyhzLT5zaGFkb3d5KSA6IDApICsgMTsKKyAgICAgICAg cy0+YmJfcmlnaHQgPSBib3JkZXJvZmZzZXQgKyAocy0+c2hhZG93eCA+IDAgPyBzLT5zaGFk b3d4IDogMCkgKyAxOworICAgICAgICBzLT5iYl9ib3R0b20gPSBib3JkZXJvZmZzZXQgKyAo cy0+c2hhZG93eSA+IDAgPyBzLT5zaGFkb3d5IDogMCkgKyAxOworICAgIH0KKworICAgIC8q IENoZWNrIGlmIHRoZSB3aG9sZSBib3ggaXMgb3V0IG9mIHRoZSBmcmFtZSAqLyAgICAgICAg CisgICAgaXNfb3V0c2lkZSA9IG1ldHJpY3MucmVjdF94IC0gcy0+YmJfbGVmdCA+PSB3aWR0 aCB8fAorICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLnJlY3RfeSAtIHMtPmJiX3RvcCA+ PSBoZWlnaHQgfHwKKyAgICAgICAgICAgICAgICAgICAgbWV0cmljcy5yZWN0X3ggKyBzLT5i b3hfd2lkdGggKyBzLT5iYl9yaWdodCA8PSAwIHx8CisgICAgICAgICAgICAgICAgICAgIG1l dHJpY3MucmVjdF95ICsgcy0+Ym94X2hlaWdodCArIHMtPmJiX2JvdHRvbSA8PSAwOworCisg ICAgaWYoIWlzX291dHNpZGUpIHsKKyAgICAgICAgLyogZHJhdyBib3ggKi8KKyAgICAgICAg aWYgKHMtPmRyYXdfYm94KSB7CisgICAgICAgICAgICByZWNfeCA9IG1ldHJpY3MucmVjdF94 IC0gcy0+YmJfbGVmdDsKKyAgICAgICAgICAgIHJlY195ID0gbWV0cmljcy5yZWN0X3kgLSBz LT5iYl90b3A7CisgICAgICAgICAgICByZWNfd2lkdGggPSBzLT5ib3hfd2lkdGggKyBzLT5i Yl9yaWdodCArIHMtPmJiX2xlZnQ7CisgICAgICAgICAgICByZWNfaGVpZ2h0ID0gcy0+Ym94 X2hlaWdodCArIHMtPmJiX2JvdHRvbSArIHMtPmJiX3RvcDsKKyAgICAgICAgICAgIC8vIGF2 X2xvZyhzLCBBVl9MT0dfREVCVUcsICJyZWN0X3g6ICVkIC0+IGJiX2xlZnQ6ICVkXG4iLAor ICAgICAgICAgICAgLy8gICAgIG1ldHJpY3MucmVjdF94LCBzLT5iYl9sZWZ0KTsKKyAgICAg ICAgICAgIC8vIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICJSZWN0IC0+ICh4OiAlZCAtIHk6 ICVkIC0gZHg6ICVkIC0gZHk6ICVkKVxuIiwKKyAgICAgICAgICAgIC8vICAgICByZWNfeCwg cmVjX3ksIHJlY193aWR0aCwgcmVjX2hlaWdodCk7CisgICAgICAgICAgICBmZl9ibGVuZF9y ZWN0YW5nbGUoJnMtPmRjLCAmYm94Y29sb3IsCisgICAgICAgICAgICAgICAgZnJhbWUtPmRh dGEsIGZyYW1lLT5saW5lc2l6ZSwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICBy ZWNfeCwgcmVjX3ksIHJlY193aWR0aCwgcmVjX2hlaWdodCk7CisgICAgICAgIH0KKworICAg ICAgICBpZiAocy0+c2hhZG93eCB8fCBzLT5zaGFkb3d5KSB7CisgICAgICAgICAgICBpZiAo KHJldCA9IGRyYXdfZ2x5cGhzKHMsIGZyYW1lLCAmc2hhZG93Y29sb3IsICZtZXRyaWNzLAor ICAgICAgICAgICAgICAgICAgICBzLT5zaGFkb3d4IC0gb2Zmc2V0X2xlZnQsIHMtPnNoYWRv d3ksIHMtPmJvcmRlcncpKSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owor ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHMtPmJvcmRlcncpIHsK KyAgICAgICAgICAgIGlmICgocmV0ID0gZHJhd19nbHlwaHMocywgZnJhbWUsICZib3JkZXJj b2xvciwgJm1ldHJpY3MsCisgICAgICAgICAgICAgICAgICAgIC1vZmZzZXRfbGVmdCwgMCwg cy0+Ym9yZGVydykpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAg ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoKHJldCA9IGRyYXdfZ2x5cGhz KHMsIGZyYW1lLCAmZm9udGNvbG9yLCAmbWV0cmljcywgLW9mZnNldF9sZWZ0LAorICAgICAg ICAgICAgICAgIDAsIDApKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAg ICAgIH0KICAgICB9Ci0gICAgaWYgKChyZXQgPSBkcmF3X2dseXBocyhzLCBmcmFtZSwgd2lk dGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250Y29sb3IsIDAs IDAsIDApKSA8IDApCi0gICAgICAgIHJldHVybiByZXQ7CisKKyAgICAvLyBGUkVFIGRhdGEg c3RydWN0dXJlcworICAgIGZvcihpbnQgbCA9IDA7IGwgPCBzLT5saW5lX2NvdW50OyArK2wp IHsKKyAgICAgICAgVGV4dExpbmUgKmxpbmUgPSAmcy0+bGluZXNbbF07CisgICAgICAgIGF2 X2ZyZWVwKCZsaW5lLT5nbHlwaHMpOworICAgICAgICBoYl9kZXN0cm95KCZsaW5lLT5oYl9k YXRhKTsKKyAgICB9CisgICAgYXZfZnJlZXAoJnMtPmxpbmVzKTsKKyAgICBhdl9mcmVlcCgm cy0+dGFiX2NsdXN0ZXJzKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMTY4MCwxMyArMjIx MSwxMyBAQCBGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MKICAgICAgICAgICAgIHMt PnggPSBiYm94LT54OwogICAgICAgICAgICAgcy0+eSA9IGJib3gtPnkgLSBzLT5mb250c2l6 ZTsKICAgICAgICAgfQotICAgICAgICBkcmF3X3RleHQoY3R4LCBmcmFtZSwgZnJhbWUtPndp ZHRoLCBmcmFtZS0+aGVpZ2h0KTsKKyAgICAgICAgZHJhd190ZXh0KGN0eCwgZnJhbWUpOwog ICAgIH0KIAotICAgIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIm46JWQgdDolZiB0ZXh0 X3c6JWQgdGV4dF9oOiVkIHg6JWQgeTolZFxuIiwKLSAgICAgICAgICAgKGludClzLT52YXJf dmFsdWVzW1ZBUl9OXSwgcy0+dmFyX3ZhbHVlc1tWQVJfVF0sCi0gICAgICAgICAgIChpbnQp cy0+dmFyX3ZhbHVlc1tWQVJfVEVYVF9XXSwgKGludClzLT52YXJfdmFsdWVzW1ZBUl9URVhU X0hdLAotICAgICAgICAgICBzLT54LCBzLT55KTsKKyAgICAvLyBhdl9sb2coY3R4LCBBVl9M T0dfREVCVUcsICJuOiVkIHQ6JWYgdGV4dF93OiVkIHRleHRfaDolZCB4OiUuMmYgeTolLjJm XG4iLAorICAgIC8vICAgICAgICAoaW50KXMtPnZhcl92YWx1ZXNbVkFSX05dLCBzLT52YXJf dmFsdWVzW1ZBUl9UXSwKKyAgICAvLyAgICAgICAgKGludClzLT52YXJfdmFsdWVzW1ZBUl9U RVhUX1ddLCAoaW50KXMtPnZhcl92YWx1ZXNbVkFSX1RFWFRfSF0sCisgICAgLy8gICAgICAg IHMtPngsIHMtPnkpOwogCiAgICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShvdXRsaW5rLCBm cmFtZSk7CiB9Ci0tIAoyLjMwLjIKCg== --------------CEyY38a18K0vr4CqhoVIFGe6 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --------------CEyY38a18K0vr4CqhoVIFGe6--