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 C298140196 for ; Fri, 3 Feb 2023 14:18:33 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 65CA068BDD3; Fri, 3 Feb 2023 16:18:29 +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 1CD8668BCD7 for ; Fri, 3 Feb 2023 16:18:22 +0200 (EET) Received: from [192.168.20.100] ([95.243.137.154]) by santino.mail.tiscali.it with id GeJL2901M3L3PKz01eJLoE; Fri, 03 Feb 2023 14:18:21 +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="------------fxWPAMIQjTMLVW2TGEpj3kux" Message-ID: Date: Fri, 3 Feb 2023 15:18:21 +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, en-US To: ffmpeg-devel@ffmpeg.org References: <8d713a21-f2f0-5c8d-fa93-0278965509e5@tiscali.it> <47ee718c-bce0-cffa-9c6a-2889a6547017@tiscali.it> <9ae25c06-73ce-f3b6-7a29-3dd8e3e530c3@tiscali.it> From: Francesco Carusi In-Reply-To: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tiscali.it; s=smtp; t=1675433901; bh=bwtWzstAzHNHqjSRG8yYRd60R8WM+FmBqnbv/+vRpXY=; h=Date:Subject:To:References:From:In-Reply-To; b=iADszPxo/FzmqPQOt+3vxw183yRmvPPyC1F16eLKbMkFZVBkG3Vt+ZsDxFBeAeBsY 7Yy4WBZ6Ve5LpPjQGA05HP3m7tVUd6FwgSKQ7y/0Oiq3y4SpuPuPdaFd7rjCX809J8 IM4pdwFFaoghJISjbxEBu34uOnas5ofR9n9tSPdA= 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. --------------fxWPAMIQjTMLVW2TGEpj3kux Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 30/01/2023 13:19, Paul B Mahol wrote: > On 1/30/23, Francesco Carusi wrote: >> On 28/01/2023 16:32, Paul B Mahol wrote: >>> On 1/28/23, Francesco Carusi wrote: >>>> On 27/01/2023 18:31, Paul B Mahol wrote: >>>>> On 1/27/23, Francesco Carusi wrote: >>>>>> 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 >>>>> Amazing, I like demos! >>>>> >>>>> Could improve code style of newly added/changed lines? >>>>> For example opening { put on separate line. So code style is in sync >>>>> with rest of codebase. >>>> Sure, I'll put opening { on a new line for functions, not for control >>>> statements, like in the rest of the code. Is it fine? >>> Yes. Thanks. >>> >>>>> The commands stuff does not need to use strcmp to detect if option >>>>> value have been changed, you could avoid strcmp by just caching old >>>>> value prior to calling function the picks new values, and after that >>>>> just compare old with new and then if it differs call needed code. >>>> I'll cache the numeric values. I think that caching string values is not >>>> the preferred solution because in addition to the strcmp needed to check >>>> the value, it would also need a strdup to cache the previous value, even >>>> when the command does not involve those options. Does it sound >>>> reasonable? >>> Yes. >> I'm attaching the patch that includes the changes we discussed. > space between 'for' and '(' > > Do not keep old code in comments if its no longer relevant or working. Ok I added spaces between control statements (if, for, while) and '(', and also cleaned up comments. Following Anton Khirnov suggestion I tried to split the changes into multiple commits. However the first one is quite bit since it contains a major change in how the filter works and cannot be split further. Patches attached. >>>>>>>>>> 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". >>>>> _______________________________________________ >>>>> 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". --------------fxWPAMIQjTMLVW2TGEpj3kux Content-Type: text/plain; charset=UTF-8; name="0001-use-libharfbuzz-to-shape-text.patch" Content-Disposition: attachment; filename="0001-use-libharfbuzz-to-shape-text.patch" Content-Transfer-Encoding: base64 RnJvbSA1MGEyNWYxNTAyYTIxNTAwMGQwYjRiZDMzNzIwNDgwNGI1OWY0MDdkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5ZXRoaWUgPGtsaW1rbGltQHRpc2NhbGkuaXQ+CkRh dGU6IEZyaSwgMyBGZWIgMjAyMyAxNDoxMzo1OSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMS83 XSB1c2UgbGliaGFyZmJ1enogdG8gc2hhcGUgdGV4dCAuIHRoZSBmaWx0ZXIgbm93IGRlcGVu ZHMgb24KIGxpYmhhcmZidXp6IC4gdGhlIGRlZmF1bHQgbGluZSBoZWlnaHQgaXMgc2V0IGVx dWFsIHRvIHRoZSBvbmUgZGVmaW5lZCBpbiB0aGUKIGZvbnQgbWV0cmljcyAuIHN1YnBpeGVs IHByZWNpc2lvbiB0byAxLzQgcGl4ZWwgaXMgbm93IHVzZWQgd2hlbiByZW5kZXJpbmcKIGds eXBocwoKLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgIHwgICA1ICstCiBkb2MvZmls dGVycy50ZXhpICAgICAgICAgIHwgICA4ICstCiBsaWJhdmZpbHRlci92Zl9kcmF3dGV4dC5j IHwgOTYxICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAzIGZpbGVz IGNoYW5nZWQsIDY0OCBpbnNlcnRpb25zKCspLCAzMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IGM3MjYwNzZkYTEuLjU0NTA0YzBk YmMgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTIzNSw2ICsy MzUsNyBAQCBFeHRlcm5hbCBsaWJyYXJ5IHN1cHBvcnQ6CiAgIC0tZW5hYmxlLWxpYmZvbnRj b25maWcgICBlbmFibGUgbGliZm9udGNvbmZpZywgdXNlZnVsIGZvciBkcmF3dGV4dCBmaWx0 ZXIgW25vXQogICAtLWVuYWJsZS1saWJmcmVldHlwZSAgICAgZW5hYmxlIGxpYmZyZWV0eXBl LCBuZWVkZWQgZm9yIGRyYXd0ZXh0IGZpbHRlciBbbm9dCiAgIC0tZW5hYmxlLWxpYmZyaWJp ZGkgICAgICBlbmFibGUgbGliZnJpYmlkaSwgaW1wcm92ZXMgZHJhd3RleHQgZmlsdGVyIFtu b10KKyAgLS1lbmFibGUtbGliaGFyZmJ1enogICAgIGVuYWJsZSBsaWJoYXJmYnV6eiwgbmVl ZGVkIGZvciBkcmF3dGV4dCBmaWx0ZXIgW25vXQogICAtLWVuYWJsZS1saWJnbHNsYW5nICAg ICAgZW5hYmxlIEdMU0wtPlNQSVJWIGNvbXBpbGF0aW9uIHZpYSBsaWJnbHNsYW5nIFtub10K ICAgLS1lbmFibGUtbGliZ21lICAgICAgICAgIGVuYWJsZSBHYW1lIE11c2ljIEVtdSB2aWEg bGliZ21lIFtub10KICAgLS1lbmFibGUtbGliZ3NtICAgICAgICAgIGVuYWJsZSBHU00gZGUv ZW5jb2RpbmcgdmlhIGxpYmdzbSBbbm9dCkBAIC0xODE4LDYgKzE4MTksNyBAQCBFWFRFUk5B TF9MSUJSQVJZX0xJU1Q9IgogICAgIGxpYmZvbnRjb25maWcKICAgICBsaWJmcmVldHlwZQog ICAgIGxpYmZyaWJpZGkKKyAgICBsaWJoYXJmYnV6egogICAgIGxpYmdsc2xhbmcKICAgICBs aWJnbWUKICAgICBsaWJnc20KQEAgLTM2NjAsNyArMzY2Miw3IEBAIGRpbGF0aW9uX29wZW5j bF9maWx0ZXJfZGVwcz0ib3BlbmNsIgogZG5uX2NsYXNzaWZ5X2ZpbHRlcl9zZWxlY3Q9ImRu biIKIGRubl9kZXRlY3RfZmlsdGVyX3NlbGVjdD0iZG5uIgogZG5uX3Byb2Nlc3NpbmdfZmls dGVyX3NlbGVjdD0iZG5uIgotZHJhd3RleHRfZmlsdGVyX2RlcHM9ImxpYmZyZWV0eXBlIgor ZHJhd3RleHRfZmlsdGVyX2RlcHM9ImxpYmZyZWV0eXBlIGxpYmhhcmZidXp6IgogZHJhd3Rl eHRfZmlsdGVyX3N1Z2dlc3Q9ImxpYmZvbnRjb25maWcgbGliZnJpYmlkaSIKIGVsYmdfZmls dGVyX2RlcHM9ImF2Y29kZWMiCiBlcV9maWx0ZXJfZGVwcz0iZ3BsIgpAQCAtNjU4NCw2ICs2 NTg2LDcgQEAgZW5hYmxlZCBmb250Y29uZmlnICAgICAgICAmJiBlbmFibGUgbGliZm9udGNv bmZpZwogZW5hYmxlZCBsaWJmb250Y29uZmlnICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcg bGliZm9udGNvbmZpZyBmb250Y29uZmlnICJmb250Y29uZmlnL2ZvbnRjb25maWcuaCIgRmNJ bml0CiBlbmFibGVkIGxpYmZyZWV0eXBlICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBs aWJmcmVldHlwZSBmcmVldHlwZTIgImZ0MmJ1aWxkLmggRlRfRlJFRVRZUEVfSCIgRlRfSW5p dF9GcmVlVHlwZQogZW5hYmxlZCBsaWJmcmliaWRpICAgICAgICAmJiByZXF1aXJlX3BrZ19j b25maWcgbGliZnJpYmlkaSBmcmliaWRpIGZyaWJpZGkuaCBmcmliaWRpX3ZlcnNpb25faW5m bworZW5hYmxlZCBsaWJoYXJmYnV6eiAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGli aGFyZmJ1enogaGFyZmJ1enogaGIuaCBoYl9idWZmZXJfY3JlYXRlCiBlbmFibGVkIGxpYmds c2xhbmcgJiYgeyBjaGVja19saWIgc3BpcnZfY29tcGlsZXIgZ2xzbGFuZy9JbmNsdWRlL2ds c2xhbmdfY19pbnRlcmZhY2UuaCBnbHNsYW5nX2luaXRpYWxpemVfcHJvY2VzcyBcCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLWxnbHNsYW5nIC1sTWFjaGluZUluZGVwZW5kZW50 IC1sT1NEZXBlbmRlbnQgLWxITFNMIC1sT0dMQ29tcGlsZXIgLWxHZW5lcmljQ29kZUdlbiBc CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWxTUFZSZW1hcHBlciAtbFNQSVJWIC1s U1BJUlYtVG9vbHMtb3B0IC1sU1BJUlYtVG9vbHMgLWxwdGhyZWFkIC1sc3RkYysrIC1sbSB8 fApkaWZmIC0tZ2l0IGEvZG9jL2ZpbHRlcnMudGV4aSBiL2RvYy9maWx0ZXJzLnRleGkKaW5k ZXggM2E1NGM2OGYzZS4uNDlkNzIxOGU4NCAxMDA2NDQKLS0tIGEvZG9jL2ZpbHRlcnMudGV4 aQorKysgYi9kb2MvZmlsdGVycy50ZXhpCkBAIC0xMjAzMiw3ICsxMjAzMiw3IEBAIERyYXcg YSB0ZXh0IHN0cmluZyBvciB0ZXh0IGZyb20gYSBzcGVjaWZpZWQgZmlsZSBvbiB0b3Agb2Yg YSB2aWRlbywgdXNpbmcgdGhlCiBsaWJmcmVldHlwZSBsaWJyYXJ5LgogCiBUbyBlbmFibGUg Y29tcGlsYXRpb24gb2YgdGhpcyBmaWx0ZXIsIHlvdSBuZWVkIHRvIGNvbmZpZ3VyZSBGRm1w ZWcgd2l0aAotQGNvZGV7LS1lbmFibGUtbGliZnJlZXR5cGV9LgorQGNvZGV7LS1lbmFibGUt bGliZnJlZXR5cGV9IGFuZCBAY29kZXstLWVuYWJsZS1saWJoYXJmYnV6en0uCiBUbyBlbmFi bGUgZGVmYXVsdCBmb250IGZhbGxiYWNrIGFuZCB0aGUgQHZhcntmb250fSBvcHRpb24geW91 IG5lZWQgdG8KIGNvbmZpZ3VyZSBGRm1wZWcgd2l0aCBAY29kZXstLWVuYWJsZS1saWJmb250 Y29uZmlnfS4KIFRvIGVuYWJsZSB0aGUgQHZhcnt0ZXh0X3NoYXBpbmd9IG9wdGlvbiwgeW91 IG5lZWQgdG8gY29uZmlndXJlIEZGbXBlZyB3aXRoCkBAIC0xMjA2MCw4ICsxMjA2MCw3IEBA IG9wdGlvbiwgY2hlY2sgdGhlIEByZWZ7Y29sb3Igc3ludGF4LCwiQ29sb3IiIHNlY3Rpb24g aW4gdGhlIGZmbXBlZy11dGlscyBtYW51YWwsCiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBAdmFy e2JveGNvbG9yfSBpcyAid2hpdGUiLgogCiBAaXRlbSBsaW5lX3NwYWNpbmcKLVNldCB0aGUg bGluZSBzcGFjaW5nIGluIHBpeGVscyBvZiB0aGUgYm9yZGVyIHRvIGJlIGRyYXduIGFyb3Vu ZCB0aGUgYm94IHVzaW5nIEB2YXJ7Ym94fS4KLVRoZSBkZWZhdWx0IHZhbHVlIG9mIEB2YXJ7 bGluZV9zcGFjaW5nfSBpcyAwLgorU2V0IHRoZSBsaW5lIHNwYWNpbmcgaW4gcGl4ZWxzLiBU aGUgZGVmYXVsdCB2YWx1ZSBvZiBAdmFye2xpbmVfc3BhY2luZ30gaXMgMC4KIAogQGl0ZW0g Ym9yZGVydwogU2V0IHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIHRvIGJlIGRyYXduIGFyb3Vu ZCB0aGUgdGV4dCB1c2luZyBAdmFye2JvcmRlcmNvbG9yfS4KQEAgLTEyNTU5LDYgKzEyNTU4 LDkgQEAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZm9udGNvbmZpZywgY2hlY2s6CiBG b3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBsaWJmcmliaWRpLCBjaGVjazoKIEB1cmx7aHR0 cDovL2ZyaWJpZGkub3JnL30uCiAKK0ZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGxpYmhh cmZidXp6LCBjaGVjazoKK0B1cmx7aHR0cHM6Ly9naXRodWIuY29tL2hhcmZidXp6L2hhcmZi dXp6fS4KKwogQHNlY3Rpb24gZWRnZWRldGVjdAogCiBEZXRlY3QgYW5kIGRyYXcgZWRnZXMu IFRoZSBmaWx0ZXIgdXNlcyB0aGUgQ2FubnkgRWRnZSBEZXRlY3Rpb24gYWxnb3JpdGhtLgpk aWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYyBiL2xpYmF2ZmlsdGVyL3Zm X2RyYXd0ZXh0LmMKaW5kZXggNTAwMTJiYjI1OC4uN2EwYTI1NWM1ZSAxMDA2NDQKLS0tIGEv bGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYworKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4 dC5jCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMyBGcmFuY2Vz Y28gQ2FydXNpCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTEgU3RlZmFubyBTYWJhdGluaQogICog Q29weXJpZ2h0IChjKSAyMDEwIFMuTi4gSGVtYW50aCBNZWVuYWtzaGlzdW5kYXJhbQogICog Q29weXJpZ2h0IChjKSAyMDAzIEd1c3Rhdm8gU3Zlcnp1dCBCYXJiaWVyaSA8Z3NiYXJiaWVy aUB5YWhvby5jb20uYnI+CkBAIC0yMCw2ICsyMSwxNCBAQAogICogRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0x MzAxIFVTQQogICovCiAKKy8qCisgKiBDaGFuZ2Vsb2cgLSAyMDIzCisgKgorICogLSBUaGlz IGZpbHRlciBub3cgZGVwZW5kcyBvbiBsaWJoYXJmYnV6eiBmb3IgdGV4dCBzaGFwaW5nLgor ICogLSBHbHlwaHMgcG9zaXRpb24gaXMgbm93IGFjY3VyYXRlIHRvIDEvNCBwaXhlbCBpbiBi b3RoIGRpcmVjdGlvbnMKKyAqIC0gVGhlIGRlZmF1bHQgbGluZSBoZWlnaHQgaXMgbm93IHRo ZSBvbmUgZGVmaW5lZCBpbiB0aGUgZm9udAorICovCisKIC8qKgogICogQGZpbGUKICAqIGRy YXd0ZXh0IGZpbHRlciwgYmFzZWQgb24gdGhlIG9yaWdpbmFsIHZob29rL2RyYXd0ZXh0LmMK QEAgLTcyLDE0ICs4MSwyMCBAQAogI2luY2x1ZGUgRlRfR0xZUEhfSAogI2luY2x1ZGUgRlRf U1RST0tFUl9ICiAKKyNpbmNsdWRlIDxoYi5oPgorI2luY2x1ZGUgPGhiLWZ0Lmg+CisKKy8v IENlaWxpbmcgb3BlcmF0aW9uIGZvciBwb3NpdGl2ZSBpbnRlZ2VycyBkaXZpc2lvbgorI2Rl ZmluZSBQT1NfQ0VJTCh4LCB5KSAoKHgpLyh5KSArICgoeCklKHkpICE9IDApKQorCiBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgdmFyX25hbWVzW10gPSB7CiAgICAgImRhciIsCiAgICAg ImhzdWIiLCAidnN1YiIsCi0gICAgImxpbmVfaCIsICJsaCIsICAgICAgICAgICAvLy88IGxp bmUgaGVpZ2h0LCBzYW1lIGFzIG1heF9nbHlwaF9oCisgICAgImxpbmVfaCIsICJsaCIsICAg ICAgICAgICAvLy88IGxpbmUgaGVpZ2h0CiAgICAgIm1haW5faCIsICJoIiwgIkgiLCAgICAg ICAvLy88IGhlaWdodCBvZiB0aGUgaW5wdXQgdmlkZW8KICAgICAibWFpbl93IiwgInciLCAi VyIsICAgICAgIC8vLzwgd2lkdGggIG9mIHRoZSBpbnB1dCB2aWRlbwotICAgICJtYXhfZ2x5 cGhfYSIsICJhc2NlbnQiLCAgLy8vPCBtYXggZ2x5cGggYXNjZW50Ci0gICAgIm1heF9nbHlw aF9kIiwgImRlc2NlbnQiLCAvLy88IG1pbiBnbHlwaCBkZXNjZW50CisgICAgIm1heF9nbHlw aF9hIiwgImFzY2VudCIsICAvLy88IG1heCBnbHlwaCBhc2NlbmRlcgorICAgICJtYXhfZ2x5 cGhfZCIsICJkZXNjZW50IiwgLy8vPCBtaW4gZ2x5cGggZGVzY2VuZGVyCiAgICAgIm1heF9n bHlwaF9oIiwgICAgICAgICAgICAvLy88IG1heCBnbHlwaCBoZWlnaHQKICAgICAibWF4X2ds eXBoX3ciLCAgICAgICAgICAgIC8vLzwgbWF4IGdseXBoIHdpZHRoCiAgICAgIm4iLCAgICAg ICAgICAgICAgICAgICAgICAvLy88IG51bWJlciBvZiBmcmFtZQpAQCAtMTQ4LDEyICsxNjMs NzggQEAgZW51bSBleHBhbnNpb25fbW9kZSB7CiAgICAgRVhQX1NUUkZUSU1FLAogfTsKIAor dHlwZWRlZiBzdHJ1Y3QgSGFyZmJ1enpEYXRhIHsKKyAgICBoYl9idWZmZXJfdCogYnVmOwor ICAgIGhiX2ZvbnRfdCogZm9udDsKKyAgICB1bnNpZ25lZCBpbnQgZ2x5cGhfY291bnQ7Cisg ICAgaGJfZ2x5cGhfaW5mb190KiBnbHlwaF9pbmZvOworICAgIGhiX2dseXBoX3Bvc2l0aW9u X3QqIGdseXBoX3BvczsKK30gSGFyZmJ1enpEYXRhOworCisvKiogSW5mb3JtYXRpb24gYWJv dXQgYSBzaW5nbGUgZ2x5cGggaW4gYSB0ZXh0IGxpbmUgKi8KK3R5cGVkZWYgc3RydWN0IEds eXBoSW5mbyB7CisgICAgdWludDMyX3QgY29kZTsgICAgICAgICAgICAgICAgICAvLy88IHRo ZSBnbHlwaCBjb2RlIHBvaW50CisgICAgaW50IHg7ICAgICAgICAgICAgICAgICAgICAgICAg ICAvLy88IHRoZSB4IHBvc2l0aW9uIG9mIHRoZSBnbHlwaAorICAgIGludCB5OyAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8vPCB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgZ2x5cGgKKyAg ICBpbnQgc2hpZnRfeDY0OyAgICAgICAgICAgICAgICAgIC8vLzwgdGhlIGhvcml6b250YWwg c2hpZnQgb2YgdGhlIGdseXBoIGluIDI2LjYgdW5pdHMKKyAgICBpbnQgc2hpZnRfeTY0OyAg ICAgICAgICAgICAgICAgIC8vLzwgdGhlIHZlcnRpY2FsIHNoaWZ0IG9mIHRoZSBnbHlwaCBp biAyNi42IHVuaXRzCit9IEdseXBoSW5mbzsKKworLyoqIEluZm9ybWF0aW9uIGFib3V0IGEg c2luZ2xlIGxpbmUgb2YgdGV4dCAqLwordHlwZWRlZiBzdHJ1Y3QgVGV4dExpbmUgeworICAg IGludCBvZmZzZXRfbGVmdDY0OyAgICAgICAgICAgICAgLy8vPCBvZmZzZXQgYmV0d2VlbiB0 aGUgb3JpZ2luIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8v ICB0aGUgbGVmdG1vc3QgcGl4ZWwgb2YgdGhlIGZpcnN0IGdseXBoCisgICAgaW50IG9mZnNl dF9yaWdodDY0OyAgICAgICAgICAgICAvLy88IG1heGltdW0gb2Zmc2V0IGJldHdlZW4gdGhl IG9yaWdpbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLyAg dGhlIHJpZ2h0bW9zdCBwaXhlbCBvZiB0aGUgbGFzdCBnbHlwaAorICAgIGludCB3aWR0aDY0 OyAgICAgICAgICAgICAgICAgICAgLy8vPCB3aWR0aCBvZiB0aGUgbGluZQorICAgIEhhcmZi dXp6RGF0YSBoYl9kYXRhOyAgICAgICAgICAgLy8vPCBsaWJoYXJmYnV6eiBkYXRhIG9mIHRo aXMgdGV4dCBsaW5lCisgICAgR2x5cGhJbmZvKiBnbHlwaHM7ICAgICAgICAgICAgICAvLy88 IGFycmF5IG9mIGdseXBocyBpbiB0aGlzIHRleHQgbGluZQorICAgIGludCBjbHVzdGVyX29m ZnNldDsgICAgICAgICAgICAgLy8vPCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgbGluZSBi ZWdpbnMKK30gVGV4dExpbmU7CisKKy8qKiBBIGdseXBoIGFzIGxvYWRlZCBhbmQgcmVuZGVy ZWQgdXNpbmcgbGliZnJlZXR5cGUgKi8KK3R5cGVkZWYgc3RydWN0IEdseXBoIHsKKyAgICBG VF9HbHlwaCBnbHlwaDsKKyAgICBGVF9HbHlwaCBib3JkZXJfZ2x5cGg7CisgICAgdWludDMy X3QgY29kZTsKKyAgICB1bnNpZ25lZCBpbnQgZm9udHNpemU7CisgICAgLyoqIEdseXBoIGJp dG1hcHMgd2l0aCAxLzQgcGl4ZWwgcHJlY2lzaW9uIGluIGJvdGggZGlyZWN0aW9ucyAqLwor ICAgIEZUX0JpdG1hcEdseXBoIGJnbHlwaFsxNl07CisgICAgLyoqIE91dGxpbmVkIGdseXBo IGJpdG1hcHMgd2l0aCAxLzQgcGl4ZWwgcHJlY2lzaW9uIGluIGJvdGggZGlyZWN0aW9ucyAq LworICAgIEZUX0JpdG1hcEdseXBoIGJvcmRlcl9iZ2x5cGhbMTZdOworICAgIEZUX0JCb3gg YmJveDsKK30gR2x5cGg7CisKKy8qKiBHbG9iYWwgdGV4dCBtZXRyaWNzICovCit0eXBlZGVm IHN0cnVjdCBUZXh0TWV0cmljcyB7CisgICAgaW50IG9mZnNldF90b3A2NDsgICAgICAgICAg ICAgICAvLy88IGFzY2VuZGVyIGFtb3VudCBvZiB0aGUgZmlyc3QgbGluZSAoaW4gMjYuNiB1 bml0cykKKyAgICBpbnQgb2Zmc2V0X2JvdHRvbTY0OyAgICAgICAgICAgIC8vLzwgZGVzY2Vu ZGVyIGFtb3VudCBvZiB0aGUgbGFzdCBsaW5lIChpbiAyNi42IHVuaXRzKQorICAgIGludCBv ZmZzZXRfbGVmdDY0OyAgICAgICAgICAgICAgLy8vPCBtYXhpbXVtIG9mZnNldCBiZXR3ZWVu IHRoZSBvcmlnaW4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv Ly8gIHRoZSBsZWZ0bW9zdCBwaXhlbCBvZiB0aGUgZmlyc3QgZ2x5cGgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vLyAgb2YgZWFjaCBsaW5lIChpbiAyNi42IHVu aXRzKQorICAgIGludCBvZmZzZXRfcmlnaHQ2NDsgICAgICAgICAgICAgLy8vPCBtYXhpbXVt IG9mZnNldCBiZXR3ZWVuIHRoZSBvcmlnaW4gYW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLy8gIHRoZSByaWdodG1vc3QgcGl4ZWwgb2YgdGhlIGxhc3QgZ2x5 cGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLyAgb2YgZWFjaCBs aW5lIChpbiAyNi42IHVuaXRzKQorICAgIGludCBsaW5lX2hlaWdodDY0OyAgICAgICAgICAg ICAgLy8vPCB0aGUgZm9udC1kZWZpbmVkIGxpbmUgaGVpZ2h0CisgICAgaW50IHdpZHRoOyAg ICAgICAgICAgICAgICAgICAgICAvLy88IHdpZHRoIG9mIHRoZSBsb25nZXN0IGxpbmUgLSBj ZWlsKHdpZHRoNjQvNjQpCisgICAgaW50IGhlaWdodDsgICAgICAgICAgICAgICAgICAgICAv Ly88IHRvdGFsIGhlaWdodCBvZiB0aGUgdGV4dCAtIGNlaWwoaGVpZ2h0NjQvNjQpCisKKyAg ICBpbnQgbWluX3k2NDsgICAgICAgICAgICAgICAgICAgIC8vLzwgbWluaW11bSB2YWx1ZSBv ZiBiYm94LnlNaW4gYW1vbmcgZ2x5cGhzIChpbiAyNi42IHVuaXRzKQorICAgIGludCBtYXhf eTY0OyAgICAgICAgICAgICAgICAgICAgLy8vPCBtYXhpbXVtIHZhbHVlIG9mIGJib3gueU1h eCBhbW9uZyBnbHlwaHMgKGluIDI2LjYgdW5pdHMpCisgICAgaW50IG1pbl94NjQ7ICAgICAg ICAgICAgICAgICAgICAvLy88IG1pbmltdW0gdmFsdWUgb2YgYmJveC54TWluIGFtb25nIGds eXBocyAoaW4gMjYuNiB1bml0cykKKyAgICBpbnQgbWF4X3g2NDsgICAgICAgICAgICAgICAg ICAgIC8vLzwgbWF4aW11bSB2YWx1ZSBvZiBiYm94LnhNYXggYW1vbmcgZ2x5cGhzIChpbiAy Ni42IHVuaXRzKQorCisgICAgLy8gUG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgYm94ICh3 aXRob3V0IGJvcmRlcnMpCisgICAgaW50IHJlY3RfeDsgICAgICAgICAgICAgICAgICAgICAv Ly88IHggcG9zaXRpb24gb2YgdGhlIGJveAorICAgIGludCByZWN0X3k7ICAgICAgICAgICAg ICAgICAgICAgLy8vPCB5IHBvc2l0aW9uIG9mIHRoZSBib3gKK30gVGV4dE1ldHJpY3M7CisK IHR5cGVkZWYgc3RydWN0IERyYXdUZXh0Q29udGV4dCB7CiAgICAgY29uc3QgQVZDbGFzcyAq Y2xhc3M7CiAgICAgaW50IGV4cF9tb2RlOyAgICAgICAgICAgICAgICAgICAvLy88IGV4cGFu c2lvbiBtb2RlIHRvIHVzZSBmb3IgdGhlIHRleHQKICAgICBpbnQgcmVpbml0OyAgICAgICAg ICAgICAgICAgICAgIC8vLzwgdGVsbHMgaWYgdGhlIGZpbHRlciBpcyBiZWluZyByZWluaXRl ZAogI2lmIENPTkZJR19MSUJGT05UQ09ORklHCi0gICAgdWludDhfdCAqZm9udDsgICAgICAg ICAgICAgIC8vLzwgZm9udCB0byBiZSB1c2VkCisgICAgdWludDhfdCAqZm9udDsgICAgICAg ICAgICAgICAgICAvLy88IGZvbnQgdG8gYmUgdXNlZAogI2VuZGlmCiAgICAgdWludDhfdCAq Zm9udGZpbGU7ICAgICAgICAgICAgICAvLy88IGZvbnQgdG8gYmUgdXNlZAogICAgIHVpbnQ4 X3QgKnRleHQ7ICAgICAgICAgICAgICAgICAgLy8vPCB0ZXh0IHRvIGJlIGRyYXduCkBAIC0x NjEsMTEgKzI0Miw5IEBAIHR5cGVkZWYgc3RydWN0IERyYXdUZXh0Q29udGV4dCB7CiAgICAg dWludDhfdCAqZm9udGNvbG9yX2V4cHI7ICAgICAgICAvLy88IGZvbnRjb2xvciBleHByZXNz aW9uIHRvIGV2YWx1YXRlCiAgICAgQVZCUHJpbnQgZXhwYW5kZWRfZm9udGNvbG9yOyAgICAv Ly88IHVzZWQgdG8gY29udGFpbiB0aGUgZXhwYW5kZWQgZm9udGNvbG9yIHNwZWMKICAgICBp bnQgZnRfbG9hZF9mbGFnczsgICAgICAgICAgICAgIC8vLzwgZmxhZ3MgdXNlZCBmb3IgbG9h ZGluZyBmb250cywgc2VlIEZUX0xPQURfKgotICAgIEZUX1ZlY3RvciAqcG9zaXRpb25zOyAg ICAgICAgICAgLy8vPCBwb3NpdGlvbnMgZm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgdGV4dAot ICAgIHNpemVfdCBuYl9wb3NpdGlvbnM7ICAgICAgICAgICAgLy8vPCBudW1iZXIgb2YgZWxl bWVudHMgb2YgcG9zaXRpb25zIGFycmF5CiAgICAgY2hhciAqdGV4dGZpbGU7ICAgICAgICAg ICAgICAgICAvLy88IGZpbGUgd2l0aCB0ZXh0IHRvIGJlIGRyYXduCi0gICAgaW50IHg7ICAg ICAgICAgICAgICAgICAgICAgICAgICAvLy88IHggcG9zaXRpb24gdG8gc3RhcnQgZHJhd2lu ZyB0ZXh0Ci0gICAgaW50IHk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IHkgcG9z aXRpb24gdG8gc3RhcnQgZHJhd2luZyB0ZXh0CisgICAgZG91YmxlIHg7ICAgICAgICAgICAg ICAgICAgICAgICAvLy88IHggcG9zaXRpb24gdG8gc3RhcnQgZHJhd2luZyB0ZXh0CisgICAg ZG91YmxlIHk7ICAgICAgICAgICAgICAgICAgICAgICAvLy88IHkgcG9zaXRpb24gdG8gc3Rh cnQgZHJhd2luZyB0ZXh0CiAgICAgaW50IG1heF9nbHlwaF93OyAgICAgICAgICAgICAgICAv Ly88IG1heCBnbHlwaCB3aWR0aAogICAgIGludCBtYXhfZ2x5cGhfaDsgICAgICAgICAgICAg ICAgLy8vPCBtYXggZ2x5cGggaGVpZ2h0CiAgICAgaW50IHNoYWRvd3gsIHNoYWRvd3k7CkBA IC0xNzgsNyArMjU3LDEyIEBAIHR5cGVkZWYgc3RydWN0IERyYXdUZXh0Q29udGV4dCB7CiAg ICAgaW50IGxpbmVfc3BhY2luZzsgICAgICAgICAgICAgICAvLy88IGxpbmVzIHNwYWNpbmcg aW4gcGl4ZWxzCiAgICAgc2hvcnQgaW50IGRyYXdfYm94OyAgICAgICAgICAgICAvLy88IGRy YXcgYm94IGFyb3VuZCB0ZXh0IC0gdHJ1ZSBvciBmYWxzZQogICAgIGludCBib3hib3JkZXJ3 OyAgICAgICAgICAgICAgICAgLy8vPCBib3ggYm9yZGVyIHdpZHRoCi0gICAgaW50IHVzZV9r ZXJuaW5nOyAgICAgICAgICAgICAgICAvLy88IGZvbnQga2VybmluZyBpcyB1c2VkIC0gdHJ1 ZS9mYWxzZQorICAgIGludCBiYl90b3A7ICAgICAgICAgICAgICAgICAgICAgLy8vPCB0aGUg c2l6ZSBvZiB0aGUgdG9wIGJveCBib3JkZXIKKyAgICBpbnQgYmJfcmlnaHQ7ICAgICAgICAg ICAgICAgICAgIC8vLzwgdGhlIHNpemUgb2YgdGhlIHJpZ2h0IGJveCBib3JkZXIKKyAgICBp bnQgYmJfYm90dG9tOyAgICAgICAgICAgICAgICAgIC8vLzwgdGhlIHNpemUgb2YgdGhlIGJv dHRvbSBib3ggYm9yZGVyCisgICAgaW50IGJiX2xlZnQ7ICAgICAgICAgICAgICAgICAgICAv Ly88IHRoZSBzaXplIG9mIHRoZSBsZWZ0IGJveCBib3JkZXIKKyAgICBpbnQgYm94X3dpZHRo OyAgICAgICAgICAgICAgICAgIC8vLzwgdGhlIHdpZHRoIG9mIGJveAorICAgIGludCBib3hf aGVpZ2h0OyAgICAgICAgICAgICAgICAgLy8vPCB0aGUgaGVpZ2h0IG9mIGJveAogICAgIGlu dCB0YWJzaXplOyAgICAgICAgICAgICAgICAgICAgLy8vPCB0YWIgc2l6ZQogICAgIGludCBm aXhfYm91bmRzOyAgICAgICAgICAgICAgICAgLy8vPCBkbyB3ZSBsZXQgaXQgZ28gb3V0IG9m IGZyYW1lIGJvdW5kcyAtIHQvZgogCkBAIC0yMTMsMzEgKzI5NywzNyBAQCB0eXBlZGVmIHN0 cnVjdCBEcmF3VGV4dENvbnRleHQgewogICAgIGludCB0ZXh0X3NoYXBpbmc7ICAgICAgICAg ICAgICAgLy8vPCAxIHRvIHNoYXBlIHRoZSB0ZXh0IGJlZm9yZSBkcmF3aW5nIGl0CiAjZW5k aWYKICAgICBBVkRpY3Rpb25hcnkgKm1ldGFkYXRhOworCisgICAgVGV4dExpbmUgKmxpbmVz OyAgICAgICAgICAgICAgICAvLy88IGNvbXB1dGVkIGluZm9ybWF0aW9uIGFib3V0IHRleHQg bGluZXMKKyAgICBpbnQgbGluZV9jb3VudDsgICAgICAgICAgICAgICAgIC8vLzwgdGhlIG51 bWJlciBvZiB0ZXh0IGxpbmVzCisgICAgdWludDMyX3QgKnRhYl9jbHVzdGVyczsgICAgICAg ICAvLy88IHRoZSBwb3NpdGlvbiBvZiB0YWIgY2hhcmFjdGVycyBpbiB0aGUgdGV4dAorICAg IGludCB0YWJfY291bnQ7ICAgICAgICAgICAgICAgICAgLy8vPCB0aGUgbnVtYmVyIG9mIHRh YiBjaGFyYWN0ZXJzCisgICAgaW50IGJsYW5rX2FkdmFuY2U2NDsgICAgICAgICAgICAvLy88 IHRoZSBzaXplIG9mIHRoZSBzcGFjZSBjaGFyYWN0ZXIKIH0gRHJhd1RleHRDb250ZXh0Owog CiAjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihEcmF3VGV4dENvbnRleHQsIHgpCiAjZGVm aW5lIEZMQUdTIEFWX09QVF9GTEFHX0ZJTFRFUklOR19QQVJBTXxBVl9PUFRfRkxBR19WSURF T19QQVJBTQogCiBzdGF0aWMgY29uc3QgQVZPcHRpb24gZHJhd3RleHRfb3B0aW9uc1tdPSB7 Ci0gICAgeyJmb250ZmlsZSIsICAgICJzZXQgZm9udCBmaWxlIiwgICAgICAgIE9GRlNFVChm b250ZmlsZSksICAgICAgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAg MCwgMCwgRkxBR1N9LAotICAgIHsidGV4dCIsICAgICAgICAic2V0IHRleHQiLCAgICAgICAg ICAgICBPRkZTRVQodGV4dCksICAgICAgICAgICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7 LnN0cj1OVUxMfSwgIDAsIDAsIEZMQUdTfSwKLSAgICB7InRleHRmaWxlIiwgICAgInNldCB0 ZXh0IGZpbGUiLCAgICAgICAgT0ZGU0VUKHRleHRmaWxlKSwgICAgICAgICAgIEFWX09QVF9U WVBFX1NUUklORywgey5zdHI9TlVMTH0sICAwLCAwLCBGTEFHU30sCi0gICAgeyJmb250Y29s b3IiLCAgICJzZXQgZm9yZWdyb3VuZCBjb2xvciIsIE9GRlNFVChmb250Y29sb3IucmdiYSks ICAgICBBVl9PUFRfVFlQRV9DT0xPUiwgIHsuc3RyPSJibGFjayJ9LCAwLCAwLCBGTEFHU30s CisgICAgeyJmb250ZmlsZSIsICAgICAgICJzZXQgZm9udCBmaWxlIiwgICAgICAgICBPRkZT RVQoZm9udGZpbGUpLCAgICAgICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj1OVUxM fSwgIDAsIDAsIEZMQUdTfSwKKyAgICB7InRleHQiLCAgICAgICAgICAgInNldCB0ZXh0Iiwg ICAgICAgICAgICAgIE9GRlNFVCh0ZXh0KSwgICAgICAgICAgICAgICBBVl9PUFRfVFlQRV9T VFJJTkcsIHsuc3RyPU5VTEx9LCAgMCwgMCwgRkxBR1N9LAorICAgIHsidGV4dGZpbGUiLCAg ICAgICAic2V0IHRleHQgZmlsZSIsICAgICAgICAgT0ZGU0VUKHRleHRmaWxlKSwgICAgICAg ICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sICAwLCAwLCBGTEFHU30sCisg ICAgeyJmb250Y29sb3IiLCAgICAgICJzZXQgZm9yZWdyb3VuZCBjb2xvciIsICBPRkZTRVQo Zm9udGNvbG9yLnJnYmEpLCAgICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7LnN0cj0iYmxhY2si fSwgMCwgMCwgRkxBR1N9LAogICAgIHsiZm9udGNvbG9yX2V4cHIiLCAic2V0IGZvcmVncm91 bmQgY29sb3IgZXhwcmVzc2lvbiIsIE9GRlNFVChmb250Y29sb3JfZXhwciksIEFWX09QVF9U WVBFX1NUUklORywgey5zdHI9IiJ9LCAwLCAwLCBGTEFHU30sCi0gICAgeyJib3hjb2xvciIs ICAgICJzZXQgYm94IGNvbG9yIiwgICAgICAgIE9GRlNFVChib3hjb2xvci5yZ2JhKSwgICAg ICBBVl9PUFRfVFlQRV9DT0xPUiwgIHsuc3RyPSJ3aGl0ZSJ9LCAwLCAwLCBGTEFHU30sCi0g ICAgeyJib3JkZXJjb2xvciIsICJzZXQgYm9yZGVyIGNvbG9yIiwgICAgIE9GRlNFVChib3Jk ZXJjb2xvci5yZ2JhKSwgICBBVl9PUFRfVFlQRV9DT0xPUiwgIHsuc3RyPSJibGFjayJ9LCAw LCAwLCBGTEFHU30sCi0gICAgeyJzaGFkb3djb2xvciIsICJzZXQgc2hhZG93IGNvbG9yIiwg ICAgIE9GRlNFVChzaGFkb3djb2xvci5yZ2JhKSwgICBBVl9PUFRfVFlQRV9DT0xPUiwgIHsu c3RyPSJibGFjayJ9LCAwLCAwLCBGTEFHU30sCi0gICAgeyJib3giLCAgICAgICAgICJzZXQg Ym94IiwgICAgICAgICAgICAgIE9GRlNFVChkcmF3X2JveCksICAgICAgICAgICBBVl9PUFRf VFlQRV9CT09MLCAgIHsuaTY0PTB9LCAgICAgMCwgICAgICAgIDEgICAgICAgLCBGTEFHU30s Ci0gICAgeyJib3hib3JkZXJ3IiwgICJzZXQgYm94IGJvcmRlciB3aWR0aCIsIE9GRlNFVChi b3hib3JkZXJ3KSwgICAgICAgICBBVl9PUFRfVFlQRV9JTlQsICAgIHsuaTY0PTB9LCAgICAg SU5UX01JTiwgIElOVF9NQVggLCBGTEFHU30sCi0gICAgeyJsaW5lX3NwYWNpbmciLCAgInNl dCBsaW5lIHNwYWNpbmcgaW4gcGl4ZWxzIiwgT0ZGU0VUKGxpbmVfc3BhY2luZyksICAgQVZf T1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIElOVF9NSU4sICBJTlRfTUFYLEZMQUdT fSwKLSAgICB7ImZvbnRzaXplIiwgICAgInNldCBmb250IHNpemUiLCAgICAgICAgT0ZGU0VU KGZvbnRzaXplX2V4cHIpLCAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0s ICAwLCAwICwgRkxBR1N9LAotICAgIHsieCIsICAgICAgICAgICAic2V0IHggZXhwcmVzc2lv biIsICAgICBPRkZTRVQoeF9leHByKSwgICAgICAgICAgICAgQVZfT1BUX1RZUEVfU1RSSU5H LCB7LnN0cj0iMCJ9LCAgIDAsIDAsIEZMQUdTfSwKLSAgICB7InkiLCAgICAgICAgICAgInNl dCB5IGV4cHJlc3Npb24iLCAgICAgT0ZGU0VUKHlfZXhwciksICAgICAgICAgICAgIEFWX09Q VF9UWVBFX1NUUklORywgey5zdHI9IjAifSwgICAwLCAwLCBGTEFHU30sCi0gICAgeyJzaGFk b3d4IiwgICAgICJzZXQgc2hhZG93IHggb2Zmc2V0IiwgIE9GRlNFVChzaGFkb3d4KSwgICAg ICAgICAgICBBVl9PUFRfVFlQRV9JTlQsICAgIHsuaTY0PTB9LCAgICAgSU5UX01JTiwgIElO VF9NQVggLCBGTEFHU30sCi0gICAgeyJzaGFkb3d5IiwgICAgICJzZXQgc2hhZG93IHkgb2Zm c2V0IiwgIE9GRlNFVChzaGFkb3d5KSwgICAgICAgICAgICBBVl9PUFRfVFlQRV9JTlQsICAg IHsuaTY0PTB9LCAgICAgSU5UX01JTiwgIElOVF9NQVggLCBGTEFHU30sCi0gICAgeyJib3Jk ZXJ3IiwgICAgICJzZXQgYm9yZGVyIHdpZHRoIiwgICAgIE9GRlNFVChib3JkZXJ3KSwgICAg ICAgICAgICBBVl9PUFRfVFlQRV9JTlQsICAgIHsuaTY0PTB9LCAgICAgSU5UX01JTiwgIElO VF9NQVggLCBGTEFHU30sCi0gICAgeyJ0YWJzaXplIiwgICAgICJzZXQgdGFiIHNpemUiLCAg ICAgICAgIE9GRlNFVCh0YWJzaXplKSwgICAgICAgICAgICBBVl9PUFRfVFlQRV9JTlQsICAg IHsuaTY0PTR9LCAgICAgMCwgICAgICAgIElOVF9NQVggLCBGTEFHU30sCi0gICAgeyJiYXNl dGltZSIsICAgICJzZXQgYmFzZSB0aW1lIiwgICAgICAgIE9GRlNFVChiYXNldGltZSksICAg ICAgICAgICBBVl9PUFRfVFlQRV9JTlQ2NCwgIHsuaTY0PUFWX05PUFRTX1ZBTFVFfSwgSU5U NjRfTUlOLCBJTlQ2NF9NQVggLCBGTEFHU30sCisgICAgeyJib3hjb2xvciIsICAgICAgICJz ZXQgYm94IGNvbG9yIiwgICAgICAgICBPRkZTRVQoYm94Y29sb3IucmdiYSksICAgICAgQVZf T1BUX1RZUEVfQ09MT1IsICB7LnN0cj0id2hpdGUifSwgMCwgMCwgRkxBR1N9LAorICAgIHsi Ym9yZGVyY29sb3IiLCAgICAic2V0IGJvcmRlciBjb2xvciIsICAgICAgT0ZGU0VUKGJvcmRl cmNvbG9yLnJnYmEpLCAgIEFWX09QVF9UWVBFX0NPTE9SLCAgey5zdHI9ImJsYWNrIn0sIDAs IDAsIEZMQUdTfSwKKyAgICB7InNoYWRvd2NvbG9yIiwgICAgInNldCBzaGFkb3cgY29sb3Ii LCAgICAgIE9GRlNFVChzaGFkb3djb2xvci5yZ2JhKSwgICBBVl9PUFRfVFlQRV9DT0xPUiwg IHsuc3RyPSJibGFjayJ9LCAwLCAwLCBGTEFHU30sCisgICAgeyJib3giLCAgICAgICAgICAg ICJzZXQgYm94IiwgICAgICAgICAgICAgICBPRkZTRVQoZHJhd19ib3gpLCAgICAgICAgICAg QVZfT1BUX1RZUEVfQk9PTCwgICB7Lmk2ND0wfSwgICAgIDAsIDEsIEZMQUdTfSwKKyAgICB7 ImJveGJvcmRlcnciLCAgICAgInNldCBib3ggYm9yZGVycyB3aWR0aCIsIE9GRlNFVChib3hi b3JkZXJ3KSwgICAgICAgICBBVl9PUFRfVFlQRV9JTlQsICAgIHsuaTY0PTB9LCAgICAgMCwg SU5UX01BWCwgRkxBR1N9LAorICAgIHsibGluZV9zcGFjaW5nIiwgICAic2V0IGxpbmUgc3Bh Y2luZyBpbiBwaXhlbHMiLCBPRkZTRVQobGluZV9zcGFjaW5nKSwgIEFWX09QVF9UWVBFX0lO VCwgICAgey5pNjQ9LTF9LCAgICBJTlRfTUlOLCBJTlRfTUFYLCBGTEFHU30sCisgICAgeyJm b250c2l6ZSIsICAgICAgICJzZXQgZm9udCBzaXplIiwgICAgICAgICBPRkZTRVQoZm9udHNp emVfZXhwciksICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj1OVUxMfSwgIDAsIDAs IEZMQUdTfSwKKyAgICB7IngiLCAgICAgICAgICAgICAgInNldCB4IGV4cHJlc3Npb24iLCAg ICAgIE9GRlNFVCh4X2V4cHIpLCAgICAgICAgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsu c3RyPSIwIn0sICAgMCwgMCwgRkxBR1N9LAorICAgIHsieSIsICAgICAgICAgICAgICAic2V0 IHkgZXhwcmVzc2lvbiIsICAgICAgT0ZGU0VUKHlfZXhwciksICAgICAgICAgICAgIEFWX09Q VF9UWVBFX1NUUklORywgey5zdHI9IjAifSwgICAwLCAwLCBGTEFHU30sCisgICAgeyJzaGFk b3d4IiwgICAgICAgICJzZXQgc2hhZG93IHggb2Zmc2V0IiwgICBPRkZTRVQoc2hhZG93eCks ICAgICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIElOVF9NSU4s IElOVF9NQVgsIEZMQUdTfSwKKyAgICB7InNoYWRvd3kiLCAgICAgICAgInNldCBzaGFkb3cg eSBvZmZzZXQiLCAgIE9GRlNFVChzaGFkb3d5KSwgICAgICAgICAgICBBVl9PUFRfVFlQRV9J TlQsICAgIHsuaTY0PTB9LCAgICAgSU5UX01JTiwgSU5UX01BWCwgRkxBR1N9LAorICAgIHsi Ym9yZGVydyIsICAgICAgICAic2V0IGJvcmRlciB3aWR0aCIsICAgICAgT0ZGU0VUKGJvcmRl cncpLCAgICAgICAgICAgIEFWX09QVF9UWVBFX0lOVCwgICAgey5pNjQ9MH0sICAgICBJTlRf TUlOLCBJTlRfTUFYLCBGTEFHU30sCisgICAgeyJ0YWJzaXplIiwgICAgICAgICJzZXQgdGFi IHNpemUiLCAgICAgICAgICBPRkZTRVQodGFic2l6ZSksICAgICAgICAgICAgQVZfT1BUX1RZ UEVfSU5ULCAgICB7Lmk2ND00fSwgICAgIDAsIElOVF9NQVgsIEZMQUdTfSwKKyAgICB7ImJh c2V0aW1lIiwgICAgICAgInNldCBiYXNlIHRpbWUiLCAgICAgICAgIE9GRlNFVChiYXNldGlt ZSksICAgICAgICAgICBBVl9PUFRfVFlQRV9JTlQ2NCwgIHsuaTY0PUFWX05PUFRTX1ZBTFVF fSwgSU5UNjRfTUlOLCBJTlQ2NF9NQVgsIEZMQUdTfSwKICNpZiBDT05GSUdfTElCRk9OVENP TkZJRwogICAgIHsgImZvbnQiLCAgICAgICAgIkZvbnQgbmFtZSIsICAgICAgICAgICAgT0ZG U0VUKGZvbnQpLCAgICAgICAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgeyAuc3RyID0g IlNhbnMiIH0sICAgICAgICAgICAuZmxhZ3MgPSBGTEFHUyB9LAogI2VuZGlmCkBAIC0yNDgs MTUgKzMzOCwxNSBAQCBzdGF0aWMgY29uc3QgQVZPcHRpb24gZHJhd3RleHRfb3B0aW9uc1td PSB7CiAgICAgICAgIHsic3RyZnRpbWUiLCAic2V0IHN0cmZ0aW1lIGV4cGFuc2lvbiAoZGVw cmVjYXRlZCkiLCBPRkZTRVQoZXhwX21vZGUpLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9 RVhQX1NUUkZUSU1FfSwgMCwgMCwgRkxBR1MsICJleHBhbnNpb24ifSwKIAogICAgIHsidGlt ZWNvZGUiLCAgICAgICAgInNldCBpbml0aWFsIHRpbWVjb2RlIiwgICAgICAgICAgICAgT0ZG U0VUKHRjX29wdF9zdHJpbmcpLCBBVl9PUFRfVFlQRV9TVFJJTkcsICAgey5zdHI9TlVMTH0s IDAsIDAsIEZMQUdTfSwKLSAgICB7InRjMjRobWF4IiwgICAgICAgICJzZXQgMjQgaG91cnMg bWF4ICh0aW1lY29kZSBvbmx5KSIsIE9GRlNFVCh0YzI0aG1heCksICAgICAgQVZfT1BUX1RZ UEVfQk9PTCwgICAgIHsuaTY0PTB9LCAgICAgICAgICAgMCwgICAgICAgIDEsIEZMQUdTfSwK LSAgICB7InRpbWVjb2RlX3JhdGUiLCAgICJzZXQgcmF0ZSAodGltZWNvZGUgb25seSkiLCAg ICAgICAgIE9GRlNFVCh0Y19yYXRlKSwgICAgICAgQVZfT1BUX1RZUEVfUkFUSU9OQUwsIHsu ZGJsPTB9LCAgICAgICAgICAgMCwgIElOVF9NQVgsIEZMQUdTfSwKLSAgICB7InIiLCAgICAg ICAgICAgICAgICJzZXQgcmF0ZSAodGltZWNvZGUgb25seSkiLCAgICAgICAgIE9GRlNFVCh0 Y19yYXRlKSwgICAgICAgQVZfT1BUX1RZUEVfUkFUSU9OQUwsIHsuZGJsPTB9LCAgICAgICAg ICAgMCwgIElOVF9NQVgsIEZMQUdTfSwKLSAgICB7InJhdGUiLCAgICAgICAgICAgICJzZXQg cmF0ZSAodGltZWNvZGUgb25seSkiLCAgICAgICAgIE9GRlNFVCh0Y19yYXRlKSwgICAgICAg QVZfT1BUX1RZUEVfUkFUSU9OQUwsIHsuZGJsPTB9LCAgICAgICAgICAgMCwgIElOVF9NQVgs IEZMQUdTfSwKLSAgICB7InJlbG9hZCIsICAgICAicmVsb2FkIHRleHQgZmlsZSBhdCBzcGVj aWZpZWQgZnJhbWUgaW50ZXJ2YWwiLCBPRkZTRVQocmVsb2FkKSwgICAgIEFWX09QVF9UWVBF X0lOVCwgey5pNjQ9MH0sIDAsIElOVF9NQVgsIEZMQUdTfSwKLSAgICB7ICJhbHBoYSIsICAg ICAgICJhcHBseSBhbHBoYSB3aGlsZSByZW5kZXJpbmciLCBPRkZTRVQoYV9leHByKSwgICAg ICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsgLnN0ciA9ICIxIiAgICAgfSwgICAgICAgICAgLmZs YWdzID0gRkxBR1MgfSwKLSAgICB7ImZpeF9ib3VuZHMiLCAiY2hlY2sgYW5kIGZpeCB0ZXh0 IGNvb3JkcyB0byBhdm9pZCBjbGlwcGluZyIsIE9GRlNFVChmaXhfYm91bmRzKSwgQVZfT1BU X1RZUEVfQk9PTCwgey5pNjQ9MH0sIDAsIDEsIEZMQUdTfSwKLSAgICB7InN0YXJ0X251bWJl ciIsICJzdGFydCBmcmFtZSBudW1iZXIgZm9yIG4vZnJhbWVfbnVtIHZhcmlhYmxlIiwgT0ZG U0VUKHN0YXJ0X251bWJlciksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQ9MH0sIDAsIElOVF9N QVgsIEZMQUdTfSwKLSAgICB7InRleHRfc291cmNlIiwgInRoZSBzb3VyY2Ugb2YgdGV4dCIs IE9GRlNFVCh0ZXh0X3NvdXJjZV9zdHJpbmcpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3Ry PU5VTEx9LCAwLCAxLCBGTEFHUyB9LAorICAgIHsidGMyNGhtYXgiLCAgICAgICAgInNldCAy NCBob3VycyBtYXggKHRpbWVjb2RlIG9ubHkpIiwgT0ZGU0VUKHRjMjRobWF4KSwgICAgICBB Vl9PUFRfVFlQRV9CT09MLCAgICAgey5pNjQ9MH0sICAgIDAsIDEsIEZMQUdTfSwKKyAgICB7 InRpbWVjb2RlX3JhdGUiLCAgICJzZXQgcmF0ZSAodGltZWNvZGUgb25seSkiLCAgICAgICAg IE9GRlNFVCh0Y19yYXRlKSwgICAgICAgQVZfT1BUX1RZUEVfUkFUSU9OQUwsIHsuZGJsPTB9 LCAgICAwLCBJTlRfTUFYLCBGTEFHU30sCisgICAgeyJyIiwgICAgICAgICAgICAgICAic2V0 IHJhdGUgKHRpbWVjb2RlIG9ubHkpIiwgICAgICAgICBPRkZTRVQodGNfcmF0ZSksICAgICAg IEFWX09QVF9UWVBFX1JBVElPTkFMLCB7LmRibD0wfSwgICAgMCwgSU5UX01BWCwgRkxBR1N9 LAorICAgIHsicmF0ZSIsICAgICAgICAgICAgInNldCByYXRlICh0aW1lY29kZSBvbmx5KSIs ICAgICAgICAgT0ZGU0VUKHRjX3JhdGUpLCAgICAgICBBVl9PUFRfVFlQRV9SQVRJT05BTCwg ey5kYmw9MH0sICAgIDAsIElOVF9NQVgsIEZMQUdTfSwKKyAgICB7InJlbG9hZCIsICAgICAg ICAgICJyZWxvYWQgdGV4dCBmaWxlIGF0IHNwZWNpZmllZCBmcmFtZSBpbnRlcnZhbCIsIE9G RlNFVChyZWxvYWQpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PTB9LCAgICAwLCBJTlRfTUFY LCBGTEFHU30sCisgICAgeyJhbHBoYSIsICAgICAgICAgICAiYXBwbHkgYWxwaGEgd2hpbGUg cmVuZGVyaW5nIiwgICAgICBPRkZTRVQoYV9leHByKSwgICAgICAgIEFWX09QVF9UWVBFX1NU UklORywgICB7LnN0ciA9ICIxIn0sIC5mbGFncyA9IEZMQUdTfSwKKyAgICB7ImZpeF9ib3Vu ZHMiLCAgICAgICJjaGVjayBhbmQgZml4IHRleHQgY29vcmRzIHRvIGF2b2lkIGNsaXBwaW5n IiwgT0ZGU0VUKGZpeF9ib3VuZHMpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2ND0wfSwgMCwg MSwgRkxBR1N9LAorICAgIHsic3RhcnRfbnVtYmVyIiwgICAgInN0YXJ0IGZyYW1lIG51bWJl ciBmb3Igbi9mcmFtZV9udW0gdmFyaWFibGUiLCBPRkZTRVQoc3RhcnRfbnVtYmVyKSwgQVZf T1BUX1RZUEVfSU5ULCB7Lmk2ND0wfSwgMCwgSU5UX01BWCwgRkxBR1N9LAorICAgIHsidGV4 dF9zb3VyY2UiLCAgICAgInRoZSBzb3VyY2Ugb2YgdGV4dCIsIE9GRlNFVCh0ZXh0X3NvdXJj ZV9zdHJpbmcpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAxLCBGTEFH UyB9LAogCiAjaWYgQ09ORklHX0xJQkZSSUJJREkKICAgICB7InRleHRfc2hhcGluZyIsICJh dHRlbXB0IHRvIHNoYXBlIHRleHQgYmVmb3JlIGRyYXdpbmciLCBPRkZTRVQodGV4dF9zaGFw aW5nKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MX0sIDAsIDEsIEZMQUdTfSwKQEAgLTI5 NywxOCArMzg3LDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZnRfZXJyb3IgewogCiAjZGVm aW5lIEZUX0VSUk1TRyhlKSBmdF9lcnJvcnNbZV0uZXJyX21zZwogCi10eXBlZGVmIHN0cnVj dCBHbHlwaCB7Ci0gICAgRlRfR2x5cGggZ2x5cGg7Ci0gICAgRlRfR2x5cGggYm9yZGVyX2ds eXBoOwotICAgIHVpbnQzMl90IGNvZGU7Ci0gICAgdW5zaWduZWQgaW50IGZvbnRzaXplOwot ICAgIEZUX0JpdG1hcCBiaXRtYXA7IC8vLzwgYXJyYXkgaG9sZGluZyBiaXRtYXBzIG9mIGZv bnQKLSAgICBGVF9CaXRtYXAgYm9yZGVyX2JpdG1hcDsgLy8vPCBhcnJheSBob2xkaW5nIGJp dG1hcHMgb2YgZm9udCBib3JkZXIKLSAgICBGVF9CQm94IGJib3g7Ci0gICAgaW50IGFkdmFu Y2U7Ci0gICAgaW50IGJpdG1hcF9sZWZ0OwotICAgIGludCBiaXRtYXBfdG9wOwotfSBHbHlw aDsKKworLy8gTG9hZHMgYW5kIChvcHRpb25hbGx5KSByZW5kZXJzIGEgZ2x5cGgKK3N0YXRp YyBpbnQgbG9hZF9nbHlwaChBVkZpbHRlckNvbnRleHQgKmN0eCwgR2x5cGggKipnbHlwaF9w dHIsIHVpbnQzMl90IGNvZGUsCisgICAgIGludDhfdCBzaGlmdF94NjQsIGludDhfdCBzaGlm dF95NjQpOworCisvLyBTaGFwZXMgYSBsaW5lIG9mIHRleHQgdXNpbmcgbGliaGFyZmJ1enoK K3N0YXRpYyB2b2lkIHNoYXBlX3RleHRfaGIoRHJhd1RleHRDb250ZXh0ICpzLCBIYXJmYnV6 ekRhdGEqIGhiLCBjb25zdCBjaGFyKiB0ZXh0LCBpbnQgdGV4dExlbik7CisKKy8vIFBlcmZv cm1zIHRleHQgbWVhc3VyZW1lbnRzCitzdGF0aWMgaW50IG1lYXN1cmVfdGV4dChBVkZpbHRl ckNvbnRleHQgKmN0eCwgVGV4dE1ldHJpY3MgKm1ldHJpY3MpOworCisvLyBEcmF3cyBnbHlw aHMgb24gdGhlIGZyYW1lCitzdGF0aWMgaW50IGRyYXdfZ2x5cGhzKERyYXdUZXh0Q29udGV4 dCAqcywgQVZGcmFtZSAqZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgIEZGRHJhd0Nv bG9yICpjb2xvciwgVGV4dE1ldHJpY3MgKm1ldHJpY3MsCisgICAgICAgICAgICAgICAgICAg ICAgIGludCB4LCBpbnQgeSwgaW50IGJvcmRlcncpOworCisvLyBEcmF3cyB0ZXh0IG9uIHRo ZSBmcmFtZQorc3RhdGljIGludCBkcmF3X3RleHQoQVZGaWx0ZXJDb250ZXh0ICpjdHgsIEFW RnJhbWUgKmZyYW1lKTsKIAogc3RhdGljIGludCBnbHlwaF9jbXAoY29uc3Qgdm9pZCAqa2V5 LCBjb25zdCB2b2lkICpiKQogewpAQCAtMzE2LDgwICs0MTIsOSBAQCBzdGF0aWMgaW50IGds eXBoX2NtcChjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmIpCiAgICAgaW50NjRfdCBk aWZmID0gKGludDY0X3QpYS0+Y29kZSAtIChpbnQ2NF90KWJiLT5jb2RlOwogCiAgICAgaWYg KGRpZmYgIT0gMCkKLSAgICAgICAgIHJldHVybiBkaWZmID4gMCA/IDEgOiAtMTsKKyAgICAg ICAgcmV0dXJuIGRpZmYgPiAwID8gMSA6IC0xOwogICAgIGVsc2UKLSAgICAgICAgIHJldHVy biBGRkRJRkZTSUdOKChpbnQ2NF90KWEtPmZvbnRzaXplLCAoaW50NjRfdCliYi0+Zm9udHNp emUpOwotfQotCi0vKioKLSAqIExvYWQgZ2x5cGhzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFVU Ri0zMiBjb2RlcG9pbnQgY29kZS4KLSAqLwotc3RhdGljIGludCBsb2FkX2dseXBoKEFWRmls dGVyQ29udGV4dCAqY3R4LCBHbHlwaCAqKmdseXBoX3B0ciwgdWludDMyX3QgY29kZSkKLXsK LSAgICBEcmF3VGV4dENvbnRleHQgKnMgPSBjdHgtPnByaXY7Ci0gICAgRlRfQml0bWFwR2x5 cGggYml0bWFwZ2x5cGg7Ci0gICAgR2x5cGggKmdseXBoOwotICAgIHN0cnVjdCBBVlRyZWVO b2RlICpub2RlID0gTlVMTDsKLSAgICBpbnQgcmV0OwotCi0gICAgLyogbG9hZCBnbHlwaCBp bnRvIHMtPmZhY2UtPmdseXBoICovCi0gICAgaWYgKEZUX0xvYWRfQ2hhcihzLT5mYWNlLCBj b2RlLCBzLT5mdF9sb2FkX2ZsYWdzKSkKLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFM KTsKLQotICAgIGdseXBoID0gYXZfbWFsbG9jeihzaXplb2YoKmdseXBoKSk7Ci0gICAgaWYg KCFnbHlwaCkgewotICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7Ci0gICAgICAgIGdv dG8gZXJyb3I7Ci0gICAgfQotICAgIGdseXBoLT5jb2RlICA9IGNvZGU7Ci0gICAgZ2x5cGgt PmZvbnRzaXplID0gcy0+Zm9udHNpemU7Ci0KLSAgICBpZiAoRlRfR2V0X0dseXBoKHMtPmZh Y2UtPmdseXBoLCAmZ2x5cGgtPmdseXBoKSkgewotICAgICAgICByZXQgPSBBVkVSUk9SKEVJ TlZBTCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGlmIChzLT5ib3JkZXJ3 KSB7Ci0gICAgICAgIGdseXBoLT5ib3JkZXJfZ2x5cGggPSBnbHlwaC0+Z2x5cGg7Ci0gICAg ICAgIGlmIChGVF9HbHlwaF9TdHJva2VCb3JkZXIoJmdseXBoLT5ib3JkZXJfZ2x5cGgsIHMt PnN0cm9rZXIsIDAsIDApIHx8Ci0gICAgICAgICAgICBGVF9HbHlwaF9Ub19CaXRtYXAoJmds eXBoLT5ib3JkZXJfZ2x5cGgsIEZUX1JFTkRFUl9NT0RFX05PUk1BTCwgMCwgMSkpIHsKLSAg ICAgICAgICAgIHJldCA9IEFWRVJST1JfRVhURVJOQUw7Ci0gICAgICAgICAgICBnb3RvIGVy cm9yOwotICAgICAgICB9Ci0gICAgICAgIGJpdG1hcGdseXBoID0gKEZUX0JpdG1hcEdseXBo KSBnbHlwaC0+Ym9yZGVyX2dseXBoOwotICAgICAgICBnbHlwaC0+Ym9yZGVyX2JpdG1hcCA9 IGJpdG1hcGdseXBoLT5iaXRtYXA7Ci0gICAgfQotICAgIGlmIChGVF9HbHlwaF9Ub19CaXRt YXAoJmdseXBoLT5nbHlwaCwgRlRfUkVOREVSX01PREVfTk9STUFMLCAwLCAxKSkgewotICAg ICAgICByZXQgPSBBVkVSUk9SX0VYVEVSTkFMOwotICAgICAgICBnb3RvIGVycm9yOwotICAg IH0KLSAgICBiaXRtYXBnbHlwaCA9IChGVF9CaXRtYXBHbHlwaCkgZ2x5cGgtPmdseXBoOwot Ci0gICAgZ2x5cGgtPmJpdG1hcCAgICAgID0gYml0bWFwZ2x5cGgtPmJpdG1hcDsKLSAgICBn bHlwaC0+Yml0bWFwX2xlZnQgPSBiaXRtYXBnbHlwaC0+bGVmdDsKLSAgICBnbHlwaC0+Yml0 bWFwX3RvcCAgPSBiaXRtYXBnbHlwaC0+dG9wOwotICAgIGdseXBoLT5hZHZhbmNlICAgICA9 IHMtPmZhY2UtPmdseXBoLT5hZHZhbmNlLnggPj4gNjsKLQotICAgIC8qIG1lYXN1cmUgdGV4 dCBoZWlnaHQgdG8gY2FsY3VsYXRlIHRleHRfaGVpZ2h0IChvciB0aGUgbWF4aW11bSB0ZXh0 IGhlaWdodCkgKi8KLSAgICBGVF9HbHlwaF9HZXRfQ0JveChnbHlwaC0+Z2x5cGgsIGZ0X2ds eXBoX2Jib3hfcGl4ZWxzLCAmZ2x5cGgtPmJib3gpOwotCi0gICAgLyogY2FjaGUgdGhlIG5l d2x5IGNyZWF0ZWQgZ2x5cGggKi8KLSAgICBpZiAoIShub2RlID0gYXZfdHJlZV9ub2RlX2Fs bG9jKCkpKSB7Ci0gICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKLSAgICAgICAgZ290 byBlcnJvcjsKLSAgICB9Ci0gICAgYXZfdHJlZV9pbnNlcnQoJnMtPmdseXBocywgZ2x5cGgs IGdseXBoX2NtcCwgJm5vZGUpOwotCi0gICAgaWYgKGdseXBoX3B0cikKLSAgICAgICAgKmds eXBoX3B0ciA9IGdseXBoOwotICAgIHJldHVybiAwOwotCi1lcnJvcjoKLSAgICBpZiAoZ2x5 cGgpCi0gICAgICAgIGF2X2ZyZWVwKCZnbHlwaC0+Z2x5cGgpOwotCi0gICAgYXZfZnJlZXAo JmdseXBoKTsKLSAgICBhdl9mcmVlcCgmbm9kZSk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICAg ICAgcmV0dXJuIEZGRElGRlNJR04oKGludDY0X3QpYS0+Zm9udHNpemUsIChpbnQ2NF90KWJi LT5mb250c2l6ZSk7CiB9CiAKIHN0YXRpYyBhdl9jb2xkIGludCBzZXRfZm9udHNpemUoQVZG aWx0ZXJDb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBmb250c2l6ZSkKQEAgLTQzOSw3ICs0 NjQsNiBAQCBzdGF0aWMgYXZfY29sZCBpbnQgdXBkYXRlX2ZvbnRzaXplKEFWRmlsdGVyQ29u dGV4dCAqY3R4KQogICAgICAgICAgICByZXR1cm4gZXJyOwogCiAgICAgICAgIHNpemUgPSBh dl9leHByX2V2YWwocy0+Zm9udHNpemVfcGV4cHIsIHMtPnZhcl92YWx1ZXMsICZzLT5wcm5n KTsKLQogICAgICAgICBpZiAoIWlzbmFuKHNpemUpKSB7CiAgICAgICAgICAgICByb3VuZGVk c2l6ZSA9IHJvdW5kKHNpemUpOwogICAgICAgICAgICAgLy8gdGVzdCBmb3Igb3ZlcmZsb3cg YmVmb3JlIGNhc3QKQEAgLTQ0Nyw3ICs0NzEsNiBAQCBzdGF0aWMgYXZfY29sZCBpbnQgdXBk YXRlX2ZvbnRzaXplKEFWRmlsdGVyQ29udGV4dCAqY3R4KQogICAgICAgICAgICAgICAgIGF2 X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgImZvbnRzaXplIG92ZXJmbG93XG4iKTsKICAgICAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgICAgICAgICAgfQotCiAg ICAgICAgICAgICBmb250c2l6ZSA9IHJvdW5kZWRzaXplOwogICAgICAgICB9CiAgICAgfQpA QCAtNTQ4LDcgKzU3MSw3IEBAIHN0YXRpYyBpbnQgbG9hZF9mb250X2ZvbnRjb25maWcoQVZG aWx0ZXJDb250ZXh0ICpjdHgpCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAKLSAgICBh dl9sb2coY3R4LCBBVl9MT0dfSU5GTywgIlVzaW5nIFwiJXNcIlxuIiwgZmlsZW5hbWUpOwor ICAgIGF2X2xvZyhjdHgsIEFWX0xPR19WRVJCT1NFLCAiVXNpbmcgXCIlc1wiXG4iLCBmaWxl bmFtZSk7CiAgICAgaWYgKHBhcnNlX2VycikKICAgICAgICAgcy0+ZGVmYXVsdF9mb250c2l6 ZSA9IHNpemUgKyAwLjU7CiAKQEAgLTY5MCw2ICs3MTMsNyBAQCBzdGF0aWMgaW50IHNoYXBl X3RleHQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiAgICAgcy0+dGV4dCA9IHRtcDsKICAgICBs ZW4gPSBmcmliaWRpX3VuaWNvZGVfdG9fY2hhcnNldChGUklCSURJX0NIQVJfU0VUX1VURjgs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZXN0ciwgbGVu LCBzLT50ZXh0KTsKKwogICAgIHJldCA9IDA7CiAKIG91dDoKQEAgLTcxNSw3ICs3MzksNiBA QCBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKIHsKICAg ICBpbnQgZXJyOwogICAgIERyYXdUZXh0Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKLSAgICBH bHlwaCAqZ2x5cGg7CiAKICAgICBhdl9leHByX2ZyZWUocy0+Zm9udHNpemVfcGV4cHIpOwog ICAgIHMtPmZvbnRzaXplX3BleHByID0gTlVMTDsKQEAgLTgwNCwxNyArODI3LDggQEAgc3Rh dGljIGF2X2NvbGQgaW50IGluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiAgICAgICAgICAg ICAgICAgICAgICAgIEZUX1NUUk9LRVJfTElORUpPSU5fUk9VTkQsIDApOwogICAgIH0KIAot ICAgIHMtPnVzZV9rZXJuaW5nID0gRlRfSEFTX0tFUk5JTkcocy0+ZmFjZSk7Ci0KICAgICAv KiBsb2FkIHRoZSBmYWxsYmFjayBnbHlwaCB3aXRoIGNvZGUgMCAqLwotICAgIGxvYWRfZ2x5 cGgoY3R4LCBOVUxMLCAwKTsKLQotICAgIC8qIHNldCB0aGUgdGFic2l6ZSBpbiBwaXhlbHMg Ki8KLSAgICBpZiAoKGVyciA9IGxvYWRfZ2x5cGgoY3R4LCAmZ2x5cGgsICcgJykpIDwgMCkg ewotICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3Qgc2V0IHRh YnNpemUuXG4iKTsKLSAgICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gICAgcy0+dGFic2l6 ZSAqPSBnbHlwaC0+YWR2YW5jZTsKKyAgICBsb2FkX2dseXBoKGN0eCwgTlVMTCwgMCwgMCwg MCk7CiAKICAgICBpZiAocy0+ZXhwX21vZGUgPT0gRVhQX1NUUkZUSU1FICYmCiAgICAgICAg IChzdHJjaHIocy0+dGV4dCwgJyUnKSB8fCBzdHJjaHIocy0+dGV4dCwgJ1xcJykpKQpAQCAt ODM3LDYgKzg1MSwxNCBAQCBzdGF0aWMgaW50IGdseXBoX2VudV9mcmVlKHZvaWQgKm9wYXF1 ZSwgdm9pZCAqZWxlbSkKIAogICAgIEZUX0RvbmVfR2x5cGgoZ2x5cGgtPmdseXBoKTsKICAg ICBGVF9Eb25lX0dseXBoKGdseXBoLT5ib3JkZXJfZ2x5cGgpOworICAgIGZvciAoaW50IHQg PSAwOyB0IDwgMTY7ICsrdCkgeworICAgICAgICBpZiAoZ2x5cGgtPmJnbHlwaFt0XSAhPSBO VUxMKSB7CisgICAgICAgICAgICBGVF9Eb25lX0dseXBoKChGVF9HbHlwaClnbHlwaC0+Ymds eXBoW3RdKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZ2x5cGgtPmJvcmRlcl9iZ2x5cGhb dF0gIT0gTlVMTCkgeworICAgICAgICAgICAgRlRfRG9uZV9HbHlwaCgoRlRfR2x5cGgpZ2x5 cGgtPmJvcmRlcl9iZ2x5cGhbdF0pOworICAgICAgICB9CisgICAgfQogICAgIGF2X2ZyZWUo ZWxlbSk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC04NTIsOSArODc0LDYgQEAgc3RhdGljIGF2 X2NvbGQgdm9pZCB1bmluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiAKICAgICBzLT54X3Bl eHByID0gcy0+eV9wZXhwciA9IHMtPmFfcGV4cHIgPSBzLT5mb250c2l6ZV9wZXhwciA9IE5V TEw7CiAKLSAgICBhdl9mcmVlcCgmcy0+cG9zaXRpb25zKTsKLSAgICBzLT5uYl9wb3NpdGlv bnMgPSAwOwotCiAgICAgYXZfdHJlZV9lbnVtZXJhdGUocy0+Z2x5cGhzLCBOVUxMLCBOVUxM LCBnbHlwaF9lbnVfZnJlZSk7CiAgICAgYXZfdHJlZV9kZXN0cm95KHMtPmdseXBocyk7CiAg ICAgcy0+Z2x5cGhzID0gTlVMTDsKQEAgLTg4MCwxNSArODk5LDE1IEBAIHN0YXRpYyBpbnQg Y29uZmlnX2lucHV0KEFWRmlsdGVyTGluayAqaW5saW5rKQogICAgIGZmX2RyYXdfY29sb3Io JnMtPmRjLCAmcy0+Ym9yZGVyY29sb3IsIHMtPmJvcmRlcmNvbG9yLnJnYmEpOwogICAgIGZm X2RyYXdfY29sb3IoJnMtPmRjLCAmcy0+Ym94Y29sb3IsICAgIHMtPmJveGNvbG9yLnJnYmEp OwogCi0gICAgcy0+dmFyX3ZhbHVlc1tWQVJfd10gICAgID0gcy0+dmFyX3ZhbHVlc1tWQVJf V10gICAgID0gcy0+dmFyX3ZhbHVlc1tWQVJfTUFJTl9XXSA9IGlubGluay0+dzsKLSAgICBz LT52YXJfdmFsdWVzW1ZBUl9oXSAgICAgPSBzLT52YXJfdmFsdWVzW1ZBUl9IXSAgICAgPSBz LT52YXJfdmFsdWVzW1ZBUl9NQUlOX0hdID0gaW5saW5rLT5oOwotICAgIHMtPnZhcl92YWx1 ZXNbVkFSX1NBUl0gICA9IGlubGluay0+c2FtcGxlX2FzcGVjdF9yYXRpby5udW0gPyBhdl9x MmQoaW5saW5rLT5zYW1wbGVfYXNwZWN0X3JhdGlvKSA6IDE7Ci0gICAgcy0+dmFyX3ZhbHVl c1tWQVJfREFSXSAgID0gKGRvdWJsZSlpbmxpbmstPncgLyBpbmxpbmstPmggKiBzLT52YXJf dmFsdWVzW1ZBUl9TQVJdOwotICAgIHMtPnZhcl92YWx1ZXNbVkFSX0hTVUJdICA9IDEgPDwg cy0+ZGMuaHN1Yl9tYXg7Ci0gICAgcy0+dmFyX3ZhbHVlc1tWQVJfVlNVQl0gID0gMSA8PCBz LT5kYy52c3ViX21heDsKLSAgICBzLT52YXJfdmFsdWVzW1ZBUl9YXSAgICAgPSBOQU47Ci0g ICAgcy0+dmFyX3ZhbHVlc1tWQVJfWV0gICAgID0gTkFOOwotICAgIHMtPnZhcl92YWx1ZXNb VkFSX1RdICAgICA9IE5BTjsKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl93XSAgICA9IHMtPnZh cl92YWx1ZXNbVkFSX1ddID0gcy0+dmFyX3ZhbHVlc1tWQVJfTUFJTl9XXSA9IGlubGluay0+ dzsKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9oXSAgICA9IHMtPnZhcl92YWx1ZXNbVkFSX0hd ID0gcy0+dmFyX3ZhbHVlc1tWQVJfTUFJTl9IXSA9IGlubGluay0+aDsKKyAgICBzLT52YXJf dmFsdWVzW1ZBUl9TQVJdICA9IGlubGluay0+c2FtcGxlX2FzcGVjdF9yYXRpby5udW0gPyBh dl9xMmQoaW5saW5rLT5zYW1wbGVfYXNwZWN0X3JhdGlvKSA6IDE7CisgICAgcy0+dmFyX3Zh bHVlc1tWQVJfREFSXSAgPSAoZG91YmxlKWlubGluay0+dyAvIGlubGluay0+aCAqIHMtPnZh cl92YWx1ZXNbVkFSX1NBUl07CisgICAgcy0+dmFyX3ZhbHVlc1tWQVJfSFNVQl0gPSAxIDw8 IHMtPmRjLmhzdWJfbWF4OworICAgIHMtPnZhcl92YWx1ZXNbVkFSX1ZTVUJdID0gMSA8PCBz LT5kYy52c3ViX21heDsKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9YXSAgICA9IE5BTjsKKyAg ICBzLT52YXJfdmFsdWVzW1ZBUl9ZXSAgICA9IE5BTjsKKyAgICBzLT52YXJfdmFsdWVzW1ZB Ul9UXSAgICA9IE5BTjsKIAogICAgIGF2X2xmZ19pbml0KCZzLT5wcm5nLCBhdl9nZXRfcmFu ZG9tX3NlZWQoKSk7CiAKQEAgLTk0OCw4ICs5NjcsNyBAQCBzdGF0aWMgaW50IGNvbW1hbmQo QVZGaWx0ZXJDb250ZXh0ICpjdHgsIGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqYXJn LCBjaGFyCiAKICAgICAgICAgY3R4LT5wcml2ID0gbmV3OwogICAgICAgICByZXR1cm4gY29u ZmlnX2lucHV0KGN0eC0+aW5wdXRzWzBdKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJu IEFWRVJST1IoRU5PU1lTKTsKKyAgICB9CiAKIGZhaWw6CiAgICAgYXZfbG9nKGN0eCwgQVZf TE9HX0VSUk9SLCAiRmFpbGVkIHRvIHByb2Nlc3MgY29tbWFuZC4gQ29udGludWluZyB3aXRo IGV4aXN0aW5nIHBhcmFtZXRlcnMuXG4iKTsKQEAgLTEzMTgsOTEgKzEzMzYsMzY5IEBAIHN0 YXRpYyBpbnQgZXhwYW5kX3RleHQoQVZGaWx0ZXJDb250ZXh0ICpjdHgsIGNoYXIgKnRleHQs IEFWQlByaW50ICpicCkKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBkcmF3X2ds eXBocyhEcmF3VGV4dENvbnRleHQgKnMsIEFWRnJhbWUgKmZyYW1lLAotICAgICAgICAgICAg ICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg ICAgIEZGRHJhd0NvbG9yICpjb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHgs IGludCB5LCBpbnQgYm9yZGVydykKK3N0YXRpYyB2b2lkIHVwZGF0ZV9jb2xvcl93aXRoX2Fs cGhhKERyYXdUZXh0Q29udGV4dCAqcywgRkZEcmF3Q29sb3IgKmNvbG9yLCBjb25zdCBGRkRy YXdDb2xvciBpbmNvbG9yKQogewotICAgIGNoYXIgKnRleHQgPSBzLT5leHBhbmRlZF90ZXh0 LnN0cjsKLSAgICB1aW50MzJfdCBjb2RlID0gMDsKLSAgICBpbnQgaSwgeDEsIHkxOwotICAg IHVpbnQ4X3QgKnA7Ci0gICAgR2x5cGggKmdseXBoID0gTlVMTDsKKyAgICAqY29sb3IgPSBp bmNvbG9yOworICAgIGNvbG9yLT5yZ2JhWzNdID0gKGNvbG9yLT5yZ2JhWzNdICogcy0+YWxw aGEpIC8gMjU1OworICAgIGZmX2RyYXdfY29sb3IoJnMtPmRjLCBjb2xvciwgY29sb3ItPnJn YmEpOworfQogCi0gICAgZm9yIChpID0gMCwgcCA9IHRleHQ7ICpwOyBpKyspIHsKLSAgICAg ICAgRlRfQml0bWFwIGJpdG1hcDsKLSAgICAgICAgR2x5cGggZHVtbXkgPSB7IDAgfTsKLSAg ICAgICAgR0VUX1VURjgoY29kZSwgKnAgPyAqcCsrIDogMCwgY29kZSA9IDB4ZmZmZDsgZ290 byBjb250aW51ZV9vbl9pbnZhbGlkOyk7Ci1jb250aW51ZV9vbl9pbnZhbGlkOgorc3RhdGlj IHZvaWQgdXBkYXRlX2FscGhhKERyYXdUZXh0Q29udGV4dCAqcykKK3sKKyAgICBkb3VibGUg YWxwaGEgPSBhdl9leHByX2V2YWwocy0+YV9wZXhwciwgcy0+dmFyX3ZhbHVlcywgJnMtPnBy bmcpOwogCi0gICAgICAgIC8qIHNraXAgbmV3IGxpbmUgY2hhcnMsIGp1c3QgZ28gdG8gbmV3 IGxpbmUgKi8KLSAgICAgICAgaWYgKGNvZGUgPT0gJ1xuJyB8fCBjb2RlID09ICdccicgfHwg Y29kZSA9PSAnXHQnKQotICAgICAgICAgICAgY29udGludWU7CisgICAgaWYgKGlzbmFuKGFs cGhhKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGR1bW15LmNvZGUgPSBjb2RlOwot ICAgICAgICBkdW1teS5mb250c2l6ZSA9IHMtPmZvbnRzaXplOwotICAgICAgICBnbHlwaCA9 IGF2X3RyZWVfZmluZChzLT5nbHlwaHMsICZkdW1teSwgZ2x5cGhfY21wLCBOVUxMKTsKKyAg ICBpZiAoYWxwaGEgPj0gMS4wKQorICAgICAgICBzLT5hbHBoYSA9IDI1NTsKKyAgICBlbHNl IGlmIChhbHBoYSA8PSAwKQorICAgICAgICBzLT5hbHBoYSA9IDA7CisgICAgZWxzZQorICAg ICAgICBzLT5hbHBoYSA9IDI1NiAqIGFscGhhOworfQorCitzdGF0aWMgaW5saW5lIGludCBn ZXRfc3VicGl4ZWxfaWR4KGludCBzaGlmdF94NjQsIGludCBzaGlmdF95NjQpCit7CisgICAg aW50IGlkeCA9IChzaGlmdF94NjQgPj4gMikgKyAoc2hpZnRfeTY0ID4+IDQpOworICAgIHJl dHVybiBpZHg7Cit9CiAKLSAgICAgICAgYml0bWFwID0gYm9yZGVydyA/IGdseXBoLT5ib3Jk ZXJfYml0bWFwIDogZ2x5cGgtPmJpdG1hcDsKK3N0YXRpYyBpbnQgbG9hZF9nbHlwaChBVkZp bHRlckNvbnRleHQgKmN0eCwgR2x5cGggKipnbHlwaF9wdHIsIHVpbnQzMl90IGNvZGUsIGlu dDhfdCBzaGlmdF94NjQsIGludDhfdCBzaGlmdF95NjQpCit7CisgICAgRHJhd1RleHRDb250 ZXh0ICpzID0gY3R4LT5wcml2OworICAgIEdseXBoIGR1bW15ID0geyAwIH07CisgICAgR2x5 cGggKmdseXBoOworICAgIEZUX1ZlY3RvciBzaGlmdDsKKyAgICBzdHJ1Y3QgQVZUcmVlTm9k ZSAqbm9kZSA9IE5VTEw7CisgICAgaW50IHJldCA9IDA7CiAKLSAgICAgICAgaWYgKGdseXBo LT5iaXRtYXAucGl4ZWxfbW9kZSAhPSBGVF9QSVhFTF9NT0RFX01PTk8gJiYKLSAgICAgICAg ICAgIGdseXBoLT5iaXRtYXAucGl4ZWxfbW9kZSAhPSBGVF9QSVhFTF9NT0RFX0dSQVkpCisg ICAgLyogZ2V0IGdseXBoICovCisgICAgZHVtbXkuY29kZSA9IGNvZGU7CisgICAgZHVtbXku Zm9udHNpemUgPSBzLT5mb250c2l6ZTsKKyAgICBnbHlwaCA9IGF2X3RyZWVfZmluZChzLT5n bHlwaHMsICZkdW1teSwgZ2x5cGhfY21wLCBOVUxMKTsKKyAgICBpZiAoIWdseXBoKSB7Cisg ICAgICAgIGlmIChGVF9Mb2FkX0dseXBoKHMtPmZhY2UsIGNvZGUsIHMtPmZ0X2xvYWRfZmxh Z3MpKSB7CiAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgICAgICB9 CisgICAgICAgIGdseXBoID0gYXZfbWFsbG9jeihzaXplb2YoKmdseXBoKSk7CisgICAgICAg IGlmICghZ2x5cGgpIHsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKKyAg ICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZ2x5cGgtPmNvZGUg ID0gY29kZTsKKyAgICAgICAgZ2x5cGgtPmZvbnRzaXplID0gcy0+Zm9udHNpemU7CisgICAg ICAgIGlmIChGVF9HZXRfR2x5cGgocy0+ZmFjZS0+Z2x5cGgsICZnbHlwaC0+Z2x5cGgpKSB7 CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICBnb3Rv IGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChzLT5ib3JkZXJ3KSB7CisgICAgICAg ICAgICBnbHlwaC0+Ym9yZGVyX2dseXBoID0gZ2x5cGgtPmdseXBoOworICAgICAgICAgICAg aWYgKEZUX0dseXBoX1N0cm9rZUJvcmRlcigmZ2x5cGgtPmJvcmRlcl9nbHlwaCwgcy0+c3Ry b2tlciwgMCwgMCkpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBBVkVSUk9SX0VYVEVSTkFM OworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgICAgLyogbWVhc3VyZSB0ZXh0IGhlaWdodCB0byBjYWxjdWxhdGUgdGV4dF9o ZWlnaHQgKG9yIHRoZSBtYXhpbXVtIHRleHQgaGVpZ2h0KSAqLworICAgICAgICBGVF9HbHlw aF9HZXRfQ0JveChnbHlwaC0+Z2x5cGgsIEZUX0dMWVBIX0JCT1hfU1VCUElYRUxTLCAmZ2x5 cGgtPmJib3gpOworCisgICAgICAgIC8qIGNhY2hlIHRoZSBuZXdseSBjcmVhdGVkIGdseXBo ICovCisgICAgICAgIGlmICghKG5vZGUgPSBhdl90cmVlX25vZGVfYWxsb2MoKSkpIHsKKyAg ICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgICAgIGdvdG8gZXJy b3I7CisgICAgICAgIH0KKyAgICAgICAgYXZfdHJlZV9pbnNlcnQoJnMtPmdseXBocywgZ2x5 cGgsIGdseXBoX2NtcCwgJm5vZGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzLT5i b3JkZXJ3ICYmICFnbHlwaC0+Ym9yZGVyX2dseXBoKSB7CisgICAgICAgICAgICBnbHlwaC0+ Ym9yZGVyX2dseXBoID0gZ2x5cGgtPmdseXBoOworICAgICAgICAgICAgaWYgKEZUX0dseXBo X1N0cm9rZUJvcmRlcigmZ2x5cGgtPmJvcmRlcl9nbHlwaCwgcy0+c3Ryb2tlciwgMCwgMCkp IHsKKyAgICAgICAgICAgICAgICByZXQgPSBBVkVSUk9SX0VYVEVSTkFMOworICAgICAgICAg ICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK KyAgICAvLyBDaGVjayBpZiBhIGJpdG1hcCBpcyBuZWVkZWQKKyAgICBpZiAoc2hpZnRfeDY0 ID49IDAgJiYgc2hpZnRfeTY0ID49IDApIHsKKyAgICAgICAgLy8gR2V0IHRoZSBiaXRtYXAg c3VicGl4ZWwgaW5kZXggKDAgLT4gMTUpCisgICAgICAgIGludCBpZHggPSBnZXRfc3VicGl4 ZWxfaWR4KHNoaWZ0X3g2NCwgc2hpZnRfeTY0KTsKKyAgICAgICAgc2hpZnQueCA9IHNoaWZ0 X3g2NDsKKyAgICAgICAgc2hpZnQueSA9IHNoaWZ0X3k2NDsKKworICAgICAgICBpZiAoIWds eXBoLT5iZ2x5cGhbaWR4XSkgeworICAgICAgICAgICAgRlRfR2x5cGggdG1wX2dseXBoID0g Z2x5cGgtPmdseXBoOworICAgICAgICAgICAgaWYgKEZUX0dseXBoX1RvX0JpdG1hcCgmdG1w X2dseXBoLCBGVF9SRU5ERVJfTU9ERV9OT1JNQUwsICZzaGlmdCwgMCkpIHsKKyAgICAgICAg ICAgICAgICByZXQgPSBBVkVSUk9SX0VYVEVSTkFMOworICAgICAgICAgICAgICAgIGdvdG8g ZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnbHlwaC0+YmdseXBoW2lkeF0g PSAoRlRfQml0bWFwR2x5cGgpdG1wX2dseXBoOworICAgICAgICAgICAgaWYgKGdseXBoLT5i Z2x5cGhbaWR4XS0+Yml0bWFwLnBpeGVsX21vZGUgPT0gRlRfUElYRUxfTU9ERV9NT05PKSB7 CisgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiTW9ub2Nyb21h dGljICgxYnBwKSBmb250cyBhcmUgbm90IHN1cHBvcnRlZC5cbiIpOworICAgICAgICAgICAg ICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9y OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChzLT5ib3JkZXJ3ICYm ICFnbHlwaC0+Ym9yZGVyX2JnbHlwaFtpZHhdKSB7CisgICAgICAgICAgICBGVF9HbHlwaCB0 bXBfZ2x5cGggPSBnbHlwaC0+Ym9yZGVyX2dseXBoOworICAgICAgICAgICAgaWYgKEZUX0ds eXBoX1RvX0JpdG1hcCgmdG1wX2dseXBoLCBGVF9SRU5ERVJfTU9ERV9OT1JNQUwsICZzaGlm dCwgMCkpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBBVkVSUk9SX0VYVEVSTkFMOworICAg ICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBn bHlwaC0+Ym9yZGVyX2JnbHlwaFtpZHhdID0gKEZUX0JpdG1hcEdseXBoKXRtcF9nbHlwaDsK KyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZ2x5cGhfcHRyKSB7CisgICAgICAgICpnbHlw aF9wdHIgPSBnbHlwaDsKKyAgICB9CisgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgeDEgPSBz LT5wb3NpdGlvbnNbaV0ueCtzLT54K3ggLSBib3JkZXJ3OwotICAgICAgICB5MSA9IHMtPnBv c2l0aW9uc1tpXS55K3MtPnkreSAtIGJvcmRlcnc7CitlcnJvcjoKKyAgICBpZiAoZ2x5cGgg JiYgZ2x5cGgtPmdseXBoKQorICAgICAgICBGVF9Eb25lX0dseXBoKGdseXBoLT5nbHlwaCk7 CiAKLSAgICAgICAgZmZfYmxlbmRfbWFzaygmcy0+ZGMsIGNvbG9yLAotICAgICAgICAgICAg ICAgICAgICAgIGZyYW1lLT5kYXRhLCBmcmFtZS0+bGluZXNpemUsIHdpZHRoLCBoZWlnaHQs Ci0gICAgICAgICAgICAgICAgICAgICAgYml0bWFwLmJ1ZmZlciwgYml0bWFwLnBpdGNoLAot ICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcC53aWR0aCwgYml0bWFwLnJvd3MsCi0gICAg ICAgICAgICAgICAgICAgICAgYml0bWFwLnBpeGVsX21vZGUgPT0gRlRfUElYRUxfTU9ERV9N T05PID8gMCA6IDMsCi0gICAgICAgICAgICAgICAgICAgICAgMCwgeDEsIHkxKTsKKyAgICBh dl9mcmVlcCgmZ2x5cGgpOworICAgIGF2X2ZyZWVwKCZub2RlKTsKKyAgICByZXR1cm4gcmV0 OworfQorCitzdGF0aWMgaW50IGRyYXdfZ2x5cGhzKERyYXdUZXh0Q29udGV4dCAqcywgQVZG cmFtZSAqZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgIEZGRHJhd0NvbG9yICpjb2xv ciwKKyAgICAgICAgICAgICAgICAgICAgICAgVGV4dE1ldHJpY3MgKm1ldHJpY3MsCisgICAg ICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50IGJvcmRlcncpCit7CisgICAg aW50IGcsIGwsIHgxLCB5MSwgdzEsIGgxLCBpZHg7CisgICAgaW50IGR4ID0gMCwgZHkgPSAw LCBwZHggPSAwOworICAgIEdseXBoSW5mbyAqaW5mbzsKKyAgICBHbHlwaCBkdW1teSA9IHsg MCB9LCAqZ2x5cGg7CisgICAgRlRfQml0bWFwIGJpdG1hcDsKKyAgICBGVF9CaXRtYXBHbHlw aCBiX2dseXBoOworICAgIGludCBjbGlwX3ggPSAwLCBjbGlwX3kgPSAwOworCisgICAgY2xp cF94ID0gRkZNSU4obWV0cmljcy0+cmVjdF94ICsgcy0+Ym94X3dpZHRoICsgcy0+YmJfcmln aHQsIGZyYW1lLT53aWR0aCk7CisgICAgY2xpcF95ID0gRkZNSU4obWV0cmljcy0+cmVjdF95 ICsgcy0+Ym94X2hlaWdodCArIHMtPmJiX2JvdHRvbSwgZnJhbWUtPmhlaWdodCk7CisKKyAg ICBmb3IgKGwgPSAwOyBsIDwgcy0+bGluZV9jb3VudDsgKytsKSB7CisgICAgICAgIFRleHRM aW5lICpsaW5lID0gJnMtPmxpbmVzW2xdOworICAgICAgICBmb3IgKGcgPSAwOyBnIDwgbGlu ZS0+aGJfZGF0YS5nbHlwaF9jb3VudDsgKytnKSB7CisgICAgICAgICAgICBpbmZvID0gJmxp bmUtPmdseXBoc1tnXTsKKyAgICAgICAgICAgIGR1bW15LmZvbnRzaXplID0gcy0+Zm9udHNp emU7CisgICAgICAgICAgICBkdW1teS5jb2RlID0gaW5mby0+Y29kZTsKKyAgICAgICAgICAg IGdseXBoID0gYXZfdHJlZV9maW5kKHMtPmdseXBocywgJmR1bW15LCBnbHlwaF9jbXAsIE5V TEwpOworICAgICAgICAgICAgaWYgKCFnbHlwaCkgeworICAgICAgICAgICAgICAgIHJldHVy biBBVkVSUk9SKEVJTlZBTCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlkeCA9 IGdldF9zdWJwaXhlbF9pZHgoaW5mby0+c2hpZnRfeDY0LCBpbmZvLT5zaGlmdF95NjQpOwor ICAgICAgICAgICAgYl9nbHlwaCA9IGJvcmRlcncgPyBnbHlwaC0+Ym9yZGVyX2JnbHlwaFtp ZHhdIDogZ2x5cGgtPmJnbHlwaFtpZHhdOworICAgICAgICAgICAgYml0bWFwID0gYl9nbHlw aC0+Yml0bWFwOworICAgICAgICAgICAgeDEgPSB4ICsgaW5mby0+eCArIGJfZ2x5cGgtPmxl ZnQ7CisgICAgICAgICAgICB5MSA9IHkgKyBpbmZvLT55IC0gYl9nbHlwaC0+dG9wOworICAg ICAgICAgICAgdzEgPSBiaXRtYXAud2lkdGg7CisgICAgICAgICAgICBoMSA9IGJpdG1hcC5y b3dzOworCisgICAgICAgICAgICAvLyBPZmZzZXQgb2YgdGhlIGdseXBoJ3MgYml0bWFwIGlu IHRoZSB2aXNpYmxlIHJlZ2lvbgorICAgICAgICAgICAgZHggPSBkeSA9IDA7CisgICAgICAg ICAgICBpZiAoeDEgPCBtZXRyaWNzLT5yZWN0X3ggLSBzLT5iYl9sZWZ0KSB7CisgICAgICAg ICAgICAgICAgZHggPSBtZXRyaWNzLT5yZWN0X3ggLSBzLT5iYl9sZWZ0IC0geDE7CisgICAg ICAgICAgICAgICAgeDEgPSBtZXRyaWNzLT5yZWN0X3ggLSBzLT5iYl9sZWZ0OworICAgICAg ICAgICAgfQorICAgICAgICAgICAgaWYgKHkxIDwgbWV0cmljcy0+cmVjdF95IC0gcy0+YmJf dG9wKSB7CisgICAgICAgICAgICAgICAgZHkgPSBtZXRyaWNzLT5yZWN0X3kgLSBzLT5iYl90 b3AgLSB5MTsKKyAgICAgICAgICAgICAgICB5MSA9IG1ldHJpY3MtPnJlY3RfeSAtIHMtPmJi X3RvcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGds eXBoIGlzIGVtcHR5IG9yIG91dCBvZiB0aGUgY2xpcHBpbmcgcmVnaW9uCisgICAgICAgICAg ICBpZiAoZHggPj0gdzEgfHwgZHkgPj0gaDEgfHwgeDEgPj0gY2xpcF94IHx8IHkxID49IGNs aXBfeSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisg ICAgICAgICAgICBwZHggPSBkeCArIGR5ICogYml0bWFwLnBpdGNoOworICAgICAgICAgICAg dzEgPSBGRk1JTihjbGlwX3ggLSB4MSwgdzEgLSBkeCk7CisgICAgICAgICAgICBoMSA9IEZG TUlOKGNsaXBfeSAtIHkxLCBoMSAtIGR5KTsKKworICAgICAgICAgICAgZmZfYmxlbmRfbWFz aygmcy0+ZGMsIGNvbG9yLCBmcmFtZS0+ZGF0YSwgZnJhbWUtPmxpbmVzaXplLCBjbGlwX3gs IGNsaXBfeSwKKyAgICAgICAgICAgICAgICBiaXRtYXAuYnVmZmVyICsgcGR4LCBiaXRtYXAu cGl0Y2gsIHcxLCBoMSwgMywgMCwgeDEsIHkxKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg IHJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBzaGFwZV90ZXh0X2hiKERyYXdUZXh0Q29u dGV4dCAqcywgSGFyZmJ1enpEYXRhKiBoYiwgY29uc3QgY2hhciogdGV4dCwgaW50IHRleHRM ZW4pIAoreworICAgIGhiLT5idWYgPSBoYl9idWZmZXJfY3JlYXRlKCk7CisgICAgaGJfYnVm ZmVyX3NldF9kaXJlY3Rpb24oaGItPmJ1ZiwgSEJfRElSRUNUSU9OX0xUUik7CisgICAgaGJf YnVmZmVyX3NldF9zY3JpcHQoaGItPmJ1ZiwgSEJfU0NSSVBUX0xBVElOKTsKKyAgICBoYl9i dWZmZXJfc2V0X2xhbmd1YWdlKGhiLT5idWYsIGhiX2xhbmd1YWdlX2Zyb21fc3RyaW5nKCJl biIsIC0xKSk7CisgICAgaGJfYnVmZmVyX2d1ZXNzX3NlZ21lbnRfcHJvcGVydGllcyhoYi0+ YnVmKTsKKyAgICBoYi0+Zm9udCA9IGhiX2Z0X2ZvbnRfY3JlYXRlKHMtPmZhY2UsIE5VTEwp OworICAgIGhiX2Z0X2ZvbnRfc2V0X2Z1bmNzKGhiLT5mb250KTsKKyAgICBoYl9idWZmZXJf YWRkX3V0ZjgoaGItPmJ1ZiwgdGV4dCwgdGV4dExlbiwgMCwgLTEpOworICAgIGhiX3NoYXBl KGhiLT5mb250LCBoYi0+YnVmLCBOVUxMLCAwKTsKKyAgICBoYi0+Z2x5cGhfaW5mbyA9IGhi X2J1ZmZlcl9nZXRfZ2x5cGhfaW5mb3MoaGItPmJ1ZiwgJmhiLT5nbHlwaF9jb3VudCk7Cisg ICAgaGItPmdseXBoX3BvcyA9IGhiX2J1ZmZlcl9nZXRfZ2x5cGhfcG9zaXRpb25zKGhiLT5i dWYsICZoYi0+Z2x5cGhfY291bnQpOworfQogCi1zdGF0aWMgdm9pZCB1cGRhdGVfY29sb3Jf d2l0aF9hbHBoYShEcmF3VGV4dENvbnRleHQgKnMsIEZGRHJhd0NvbG9yICpjb2xvciwgY29u c3QgRkZEcmF3Q29sb3IgaW5jb2xvcikKK3N0YXRpYyB2b2lkIGhiX2Rlc3Ryb3koSGFyZmJ1 enpEYXRhICpoYikgCiB7Ci0gICAgKmNvbG9yID0gaW5jb2xvcjsKLSAgICBjb2xvci0+cmdi YVszXSA9IChjb2xvci0+cmdiYVszXSAqIHMtPmFscGhhKSAvIDI1NTsKLSAgICBmZl9kcmF3 X2NvbG9yKCZzLT5kYywgY29sb3IsIGNvbG9yLT5yZ2JhKTsKKyAgICBoYl9idWZmZXJfZGVz dHJveShoYi0+YnVmKTsKKyAgICBoYl9mb250X2Rlc3Ryb3koaGItPmZvbnQpOworICAgIGhi LT5idWYgPSBOVUxMOworICAgIGhiLT5mb250ID0gTlVMTDsKKyAgICBoYi0+Z2x5cGhfaW5m byA9IE5VTEw7CisgICAgaGItPmdseXBoX3BvcyA9IE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lk IHVwZGF0ZV9hbHBoYShEcmF3VGV4dENvbnRleHQgKnMpCitzdGF0aWMgaW50IG1lYXN1cmVf dGV4dChBVkZpbHRlckNvbnRleHQgKmN0eCwgVGV4dE1ldHJpY3MgKm1ldHJpY3MpCiB7Ci0g ICAgZG91YmxlIGFscGhhID0gYXZfZXhwcl9ldmFsKHMtPmFfcGV4cHIsIHMtPnZhcl92YWx1 ZXMsICZzLT5wcm5nKTsKKyAgICBEcmF3VGV4dENvbnRleHQgKnMgPSBjdHgtPnByaXY7Cisg ICAgY2hhciogdGV4dCA9IHMtPmV4cGFuZGVkX3RleHQuc3RyOworICAgIGNoYXIgKnRleHRk dXAgPSBhdl9zdHJkdXAodGV4dCksICpzdGFydCA9IHRleHRkdXA7CisgICAgaW50IG51bV9j aGFycyA9IDA7CisgICAgaW50IHdpZHRoNjQgPSAwLCB3NjQgPSAwOworICAgIGludCBjdXJf bWluX3k2NCA9IDAsIGZpcnN0X21heF95NjQgPSAtMzIwMDA7CisgICAgaW50IGZpcnN0X21p bl94NjQgPSAzMjAwMCwgbGFzdF9tYXhfeDY0ID0gLTMyMDAwOworICAgIGludCBtaW5feTY0 ID0gMzIwMDAsIG1heF95NjQgPSAtMzIwMDAsIG1pbl94NjQgPSAzMjAwMCwgbWF4X3g2NCA9 IC0zMjAwMDsKKyAgICBpbnQgbGluZV9jb3VudCA9IDA7CisgICAgdWludDMyX3QgY29kZSA9 IDA7CisgICAgR2x5cGggKmdseXBoID0gTlVMTDsKIAotICAgIGlmIChpc25hbihhbHBoYSkp Ci0gICAgICAgIHJldHVybjsKKyAgICBpbnQgaSwgdGFiX2lkeCA9IDAsIGxhc3RfdGFiX2lk eCA9IDAsIGxpbmVfb2Zmc2V0ID0gMDsKKyAgICBjaGFyKiBwOworICAgIGludCByZXQgPSAw OworCisgICAgLy8gQ291bnQgdGhlIGxpbmVzIGFuZCB0aGUgdGFiIGNoYXJhY3RlcnMKKyAg ICBzLT50YWJfY291bnQgPSAwOworICAgIGZvciAoaSA9IDAsIHAgPSB0ZXh0OyAxOyBpKysp IHsKKyAgICAgICAgR0VUX1VURjgoY29kZSwgKnAgPyAqcCsrIDogMCwgY29kZSA9IDB4ZmZm ZDsgZ290byBjb250aW51ZV9vbl9mYWlsZWQ7KTsKK2NvbnRpbnVlX29uX2ZhaWxlZDoKKyAg ICAgICAgaWYgKGlzX25ld2xpbmUoY29kZSkgfHwgY29kZSA9PSAwKSB7CisgICAgICAgICAg ICArK2xpbmVfY291bnQ7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAwKSB7CisgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY29k ZSA9PSAnXHQnKSB7CisgICAgICAgICAgICArK3MtPnRhYl9jb3VudDsKKyAgICAgICAgfQor ICAgIH0KIAotICAgIGlmIChhbHBoYSA+PSAxLjApCi0gICAgICAgIHMtPmFscGhhID0gMjU1 OwotICAgIGVsc2UgaWYgKGFscGhhIDw9IDApCi0gICAgICAgIHMtPmFscGhhID0gMDsKLSAg ICBlbHNlCi0gICAgICAgIHMtPmFscGhhID0gMjU2ICogYWxwaGE7CisgICAgLy8gRXZhbHVh dGUgdGhlIHdpZHRoIG9mIHRoZSBzcGFjZSBjaGFyYWN0ZXIgaWYgbmVlZGVkIHRvIHJlcGxh Y2UgdGFicworICAgIGlmIChzLT50YWJfY291bnQgPiAwICYmICFzLT5ibGFua19hZHZhbmNl NjQpIHsKKyAgICAgICAgSGFyZmJ1enpEYXRhIGhiX2RhdGE7CisgICAgICAgIHNoYXBlX3Rl eHRfaGIocywgJmhiX2RhdGEsICIgIiwgMSk7CisgICAgICAgIHMtPmJsYW5rX2FkdmFuY2U2 NCA9IGhiX2RhdGEuZ2x5cGhfcG9zWzBdLnhfYWR2YW5jZTsKKyAgICAgICAgaGJfZGVzdHJv eSgmaGJfZGF0YSk7CisgICAgfQorCisgICAgcy0+bGluZV9jb3VudCA9IGxpbmVfY291bnQ7 CisgICAgcy0+bGluZXMgPSBhdl9tYWxsb2N6KGxpbmVfY291bnQgKiBzaXplb2YoVGV4dExp bmUpKTsKKyAgICBzLT50YWJfY2x1c3RlcnMgPSBhdl9tYWxsb2N6KHMtPnRhYl9jb3VudCAq IHNpemVvZih1aW50MzJfdCkpOworICAgIGZvciAoaSA9IDA7IGkgPCBzLT50YWJfY291bnQ7 ICsraSkgeworICAgICAgICBzLT50YWJfY2x1c3RlcnNbaV0gPSAtMTsKKyAgICB9CisKKyAg ICBsaW5lX2NvdW50ID0gMDsKKyAgICBmb3IgKGkgPSAwLCBwID0gdGV4dGR1cDsgMTsgaSsr KSB7CisgICAgICAgIGlmICgqcCA9PSAnXHQnKSB7CisgICAgICAgICAgICBzLT50YWJfY2x1 c3RlcnNbdGFiX2lkeCsrXSA9IGk7CisgICAgICAgICAgICAqcCA9ICcgJzsKKyAgICAgICAg fQorICAgICAgICBHRVRfVVRGOChjb2RlLCAqcCA/ICpwKysgOiAwLCBjb2RlID0gMHhmZmZk OyBnb3RvIGNvbnRpbnVlX29uX2ZhaWxlZDI7KTsKK2NvbnRpbnVlX29uX2ZhaWxlZDI6Cisg ICAgICAgIGlmIChpc19uZXdsaW5lKGNvZGUpIHx8IGNvZGUgPT0gMCkgeworICAgICAgICAg ICAgVGV4dExpbmUgKmN1cl9saW5lID0gJnMtPmxpbmVzW2xpbmVfY291bnRdOworICAgICAg ICAgICAgSGFyZmJ1enpEYXRhICpoYiA9ICZjdXJfbGluZS0+aGJfZGF0YTsKKyAgICAgICAg ICAgIGN1cl9saW5lLT5jbHVzdGVyX29mZnNldCA9IGxpbmVfb2Zmc2V0OworICAgICAgICAg ICAgc2hhcGVfdGV4dF9oYihzLCBoYiwgc3RhcnQsIG51bV9jaGFycyk7CisgICAgICAgICAg ICB3NjQgPSAwOworICAgICAgICAgICAgY3VyX21pbl95NjQgPSAzMjAwMDsKKyAgICAgICAg ICAgIGZvciAoaW50IHQgPSAwOyB0IDwgaGItPmdseXBoX2NvdW50OyArK3QpIHsKKyAgICAg ICAgICAgICAgICB1aW50OF90IGlzX3RhYiA9IGxhc3RfdGFiX2lkeCA8IHMtPnRhYl9jb3Vu dCAmJgorICAgICAgICAgICAgICAgICAgICBoYi0+Z2x5cGhfaW5mb1t0XS5jbHVzdGVyID09 IHMtPnRhYl9jbHVzdGVyc1tsYXN0X3RhYl9pZHhdIC0gbGluZV9vZmZzZXQ7CisgICAgICAg ICAgICAgICAgaWYgKGlzX3RhYikgeworICAgICAgICAgICAgICAgICAgICArK2xhc3RfdGFi X2lkeDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0ID0gbG9hZF9n bHlwaChjdHgsICZnbHlwaCwgaGItPmdseXBoX2luZm9bdF0uY29kZXBvaW50LCAtMSwgLTEp OworICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGxpbmVf Y291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBmaXJzdF9tYXhfeTY0ID0gRkZN QVgoZ2x5cGgtPmJib3gueU1heCwgZmlyc3RfbWF4X3k2NCk7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIGlmICh0ID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAg Y3VyX2xpbmUtPm9mZnNldF9sZWZ0NjQgPSBnbHlwaC0+YmJveC54TWluOworICAgICAgICAg ICAgICAgICAgICBmaXJzdF9taW5feDY0ID0gRkZNSU4oZ2x5cGgtPmJib3gueE1pbiwgZmly c3RfbWluX3g2NCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0 ID09IGhiLT5nbHlwaF9jb3VudCAtIDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdzY0ICs9 IGdseXBoLT5iYm94LnhNYXg7CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbWF4X3g2NCA9 IEZGTUFYKGdseXBoLT5iYm94LnhNYXgsIGxhc3RfbWF4X3g2NCk7CisgICAgICAgICAgICAg ICAgICAgIGN1cl9saW5lLT5vZmZzZXRfcmlnaHQ2NCA9IGdseXBoLT5iYm94LnhNYXg7Cisg ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3Rh YikgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUgPSBzLT5ibGFua19hZHZh bmNlNjQgKiBzLT50YWJzaXplOworICAgICAgICAgICAgICAgICAgICAgICAgdzY0ID0gKHc2 NCAvIHNpemUgKyAxKSAqIHNpemU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICB3NjQgKz0gaGItPmdseXBoX3Bvc1t0XS54X2FkdmFu Y2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgY3VyX21pbl95NjQgPSBGRk1JTihnbHlwaC0+YmJveC55TWluLCBjdXJfbWlu X3k2NCk7CisgICAgICAgICAgICAgICAgbWluX3k2NCA9IEZGTUlOKGdseXBoLT5iYm94LnlN aW4sIG1pbl95NjQpOworICAgICAgICAgICAgICAgIG1heF95NjQgPSBGRk1BWChnbHlwaC0+ YmJveC55TWF4LCBtYXhfeTY0KTsKKyAgICAgICAgICAgICAgICBtaW5feDY0ID0gRkZNSU4o Z2x5cGgtPmJib3gueE1pbiwgbWluX3g2NCk7CisgICAgICAgICAgICAgICAgbWF4X3g2NCA9 IEZGTUFYKGdseXBoLT5iYm94LnhNYXgsIG1heF94NjQpOworICAgICAgICAgICAgfQorCisg ICAgICAgICAgICBpZiAocmV0ID09IDApIHsKKyAgICAgICAgICAgICAgICBjdXJfbGluZS0+ d2lkdGg2NCA9IHc2NDsKKworICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVC VUcsICIgIExpbmU6ICVkIC0tIGdseXBocyBjb3VudDogJWQgLSB3aWR0aDY0OiAlZCAtIG9m ZnNldF9sZWZ0NjQ6ICVkIC0gb2Zmc2V0X3JpZ2h0NjQ6ICVkKVxuIiwKKyAgICAgICAgICAg ICAgICAgICAgbGluZV9jb3VudCwgaGItPmdseXBoX2NvdW50LCBjdXJfbGluZS0+d2lkdGg2 NCwgY3VyX2xpbmUtPm9mZnNldF9sZWZ0NjQsIGN1cl9saW5lLT5vZmZzZXRfcmlnaHQ2NCk7 CisKKyAgICAgICAgICAgICAgICBpZiAodzY0ID4gd2lkdGg2NCkgeworICAgICAgICAgICAg ICAgICAgICB3aWR0aDY0ID0gdzY0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICBudW1fY2hhcnMgPSAtMTsKKyAgICAgICAgICAgICAgICBzdGFydCA9IHA7CisgICAg ICAgICAgICAgICAgKytsaW5lX2NvdW50OworICAgICAgICAgICAgICAgIGxpbmVfb2Zmc2V0 ID0gaSArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29k ZSA9PSAwIHx8IHJldCAhPSAwKSBicmVhazsKKyAgICAgICAgKytudW1fY2hhcnM7CisgICAg fQorCisgICAgaWYgKHJldCA9PSAwKSB7CisgICAgICAgIGludCBoZWlnaHQ2NDsKKyAgICAg ICAgbWV0cmljcy0+bGluZV9oZWlnaHQ2NCA9IHMtPmZhY2UtPnNpemUtPm1ldHJpY3MuaGVp Z2h0OworICAgICAgICAKKyAgICAgICAgbWV0cmljcy0+d2lkdGggPSBQT1NfQ0VJTCh3aWR0 aDY0LCA2NCk7CisgICAgICAgIGhlaWdodDY0ID0gKG1ldHJpY3MtPmxpbmVfaGVpZ2h0NjQg KyBzLT5saW5lX3NwYWNpbmcgKiA2NCkgKgorICAgICAgICAgICAgKEZGTUFYKDAsIGxpbmVf Y291bnQgLSAxKSkgKyBmaXJzdF9tYXhfeTY0IC0gY3VyX21pbl95NjQ7CisgICAgICAgIG1l dHJpY3MtPmhlaWdodCA9IFBPU19DRUlMKGhlaWdodDY0LCA2NCk7CisKKyAgICAgICAgbWV0 cmljcy0+b2Zmc2V0X3RvcDY0ID0gZmlyc3RfbWF4X3k2NDsKKyAgICAgICAgbWV0cmljcy0+ b2Zmc2V0X3JpZ2h0NjQgPSBsYXN0X21heF94NjQ7CisgICAgICAgIG1ldHJpY3MtPm9mZnNl dF9ib3R0b202NCA9IGN1cl9taW5feTY0OworICAgICAgICBtZXRyaWNzLT5vZmZzZXRfbGVm dDY0ID0gZmlyc3RfbWluX3g2NDsKKyAgICAgICAgbWV0cmljcy0+bWluX3g2NCA9IG1pbl94 NjQ7CisgICAgICAgIG1ldHJpY3MtPm1pbl95NjQgPSBtaW5feTY0OworICAgICAgICBtZXRy aWNzLT5tYXhfeDY0ID0gbWF4X3g2NDsKKyAgICAgICAgbWV0cmljcy0+bWF4X3k2NCA9IG1h eF95NjQ7CisgICAgfQorCisgICAgYXZfZnJlZSh0ZXh0ZHVwKTsKKyAgICByZXR1cm4gcmV0 OwogfQogCi1zdGF0aWMgaW50IGRyYXdfdGV4dChBVkZpbHRlckNvbnRleHQgKmN0eCwgQVZG cmFtZSAqZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWln aHQpCitzdGF0aWMgaW50IGRyYXdfdGV4dChBVkZpbHRlckNvbnRleHQgKmN0eCwgQVZGcmFt ZSAqZnJhbWUpCiB7CiAgICAgRHJhd1RleHRDb250ZXh0ICpzID0gY3R4LT5wcml2OwogICAg IEFWRmlsdGVyTGluayAqaW5saW5rID0gY3R4LT5pbnB1dHNbMF07Ci0KLSAgICB1aW50MzJf dCBjb2RlID0gMCwgcHJldl9jb2RlID0gMDsKLSAgICBpbnQgeCA9IDAsIHkgPSAwLCBpID0g MCwgcmV0OwotICAgIGludCBtYXhfdGV4dF9saW5lX3cgPSAwLCBsZW47Ci0gICAgaW50IGJv eF93LCBib3hfaDsKLSAgICBjaGFyICp0ZXh0OwotICAgIHVpbnQ4X3QgKnA7Ci0gICAgaW50 IHlfbWluID0gMzIwMDAsIHlfbWF4ID0gLTMyMDAwOwotICAgIGludCB4X21pbiA9IDMyMDAw LCB4X21heCA9IC0zMjAwMDsKLSAgICBGVF9WZWN0b3IgZGVsdGE7Ci0gICAgR2x5cGggKmds eXBoID0gTlVMTCwgKnByZXZfZ2x5cGggPSBOVUxMOwotICAgIEdseXBoIGR1bW15ID0geyAw IH07CisgICAgaW50IHggPSAwLCB5ID0gMCwgcmV0OworICAgIGludCBzaGlmdF94NjQsIHNo aWZ0X3k2NDsKKyAgICBpbnQgeDY0LCB5NjQ7CisgICAgR2x5cGggKmdseXBoID0gTlVMTDsK IAogICAgIHRpbWVfdCBub3cgPSB0aW1lKDApOwogICAgIHN0cnVjdCB0bSBsdGltZTsKQEAg LTE0MTMsOSArMTcwOSwxNyBAQCBzdGF0aWMgaW50IGRyYXdfdGV4dChBVkZpbHRlckNvbnRl eHQgKmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgRkZEcmF3Q29sb3IgYm9yZGVyY29sb3I7 CiAgICAgRkZEcmF3Q29sb3IgYm94Y29sb3I7CiAKKyAgICBpbnQgd2lkdGggPSBmcmFtZS0+ d2lkdGg7CisgICAgaW50IGhlaWdodCA9IGZyYW1lLT5oZWlnaHQ7CisgICAgaW50IHJlY194 ID0gMCwgcmVjX3kgPSAwLCByZWNfd2lkdGggPSAwLCByZWNfaGVpZ2h0ID0gMDsKKyAgICBp bnQgaXNfb3V0c2lkZSA9IDA7CisgICAgaW50IGxhc3RfdGFiX2lkeCA9IDA7CisKKyAgICBU ZXh0TWV0cmljcyBtZXRyaWNzOworCiAgICAgYXZfYnByaW50X2NsZWFyKGJwKTsKIAotICAg IGlmKHMtPmJhc2V0aW1lICE9IEFWX05PUFRTX1ZBTFVFKQorICAgIGlmIChzLT5iYXNldGlt ZSAhPSBBVl9OT1BUU19WQUxVRSkKICAgICAgICAgbm93PSBmcmFtZS0+cHRzKmF2X3EyZChj dHgtPmlucHV0c1swXS0+dGltZV9iYXNlKSArIHMtPmJhc2V0aW1lLzEwMDAwMDA7CiAKICAg ICBzd2l0Y2ggKHMtPmV4cF9tb2RlKSB7CkBAIC0xNDQxLDEzICsxNzQ1LDYgQEAgc3RhdGlj IGludCBkcmF3X3RleHQoQVZGaWx0ZXJDb250ZXh0ICpjdHgsIEFWRnJhbWUgKmZyYW1lLAog CiAgICAgaWYgKCFhdl9icHJpbnRfaXNfY29tcGxldGUoYnApKQogICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9NRU0pOwotICAgIHRleHQgPSBzLT5leHBhbmRlZF90ZXh0LnN0cjsKLSAg ICBpZiAoKGxlbiA9IHMtPmV4cGFuZGVkX3RleHQubGVuKSA+IHMtPm5iX3Bvc2l0aW9ucykg ewotICAgICAgICBpZiAoIShzLT5wb3NpdGlvbnMgPQotICAgICAgICAgICAgICBhdl9yZWFs bG9jKHMtPnBvc2l0aW9ucywgbGVuKnNpemVvZigqcy0+cG9zaXRpb25zKSkpKQotICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKLSAgICAgICAgcy0+bmJfcG9zaXRpb25z ID0gbGVuOwotICAgIH0KIAogICAgIGlmIChzLT5mb250Y29sb3JfZXhwclswXSkgewogICAg ICAgICAvKiBJZiBleHByZXNzaW9uIGlzIHNldCwgZXZhbHVhdGUgYW5kIHJlcGxhY2UgdGhl IHN0YXRpYyB2YWx1ZSAqLwpAQCAtMTQ2Myw4NSArMTc2MCwyNCBAQCBzdGF0aWMgaW50IGRy YXdfdGV4dChBVkZpbHRlckNvbnRleHQgKmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAg IGZmX2RyYXdfY29sb3IoJnMtPmRjLCAmcy0+Zm9udGNvbG9yLCBzLT5mb250Y29sb3Iucmdi YSk7CiAgICAgfQogCi0gICAgeCA9IDA7Ci0gICAgeSA9IDA7Ci0KLSAgICBpZiAoKHJldCA9 IHVwZGF0ZV9mb250c2l6ZShjdHgpKSA8IDApCisgICAgaWYgKChyZXQgPSB1cGRhdGVfZm9u dHNpemUoY3R4KSkgPCAwKSB7CiAgICAgICAgIHJldHVybiByZXQ7Ci0KLSAgICAvKiBsb2Fk IGFuZCBjYWNoZSBnbHlwaHMgKi8KLSAgICBmb3IgKGkgPSAwLCBwID0gdGV4dDsgKnA7IGkr KykgewotICAgICAgICBHRVRfVVRGOChjb2RlLCAqcCA/ICpwKysgOiAwLCBjb2RlID0gMHhm ZmZkOyBnb3RvIGNvbnRpbnVlX29uX2ludmFsaWQ7KTsKLWNvbnRpbnVlX29uX2ludmFsaWQ6 Ci0KLSAgICAgICAgLyogZ2V0IGdseXBoICovCi0gICAgICAgIGR1bW15LmNvZGUgPSBjb2Rl OwotICAgICAgICBkdW1teS5mb250c2l6ZSA9IHMtPmZvbnRzaXplOwotICAgICAgICBnbHlw aCA9IGF2X3RyZWVfZmluZChzLT5nbHlwaHMsICZkdW1teSwgZ2x5cGhfY21wLCBOVUxMKTsK LSAgICAgICAgaWYgKCFnbHlwaCkgewotICAgICAgICAgICAgcmV0ID0gbG9hZF9nbHlwaChj dHgsICZnbHlwaCwgY29kZSk7Ci0gICAgICAgICAgICBpZiAocmV0IDwgMCkKLSAgICAgICAg ICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9Ci0KLSAgICAgICAgeV9taW4gPSBGRk1J TihnbHlwaC0+YmJveC55TWluLCB5X21pbik7Ci0gICAgICAgIHlfbWF4ID0gRkZNQVgoZ2x5 cGgtPmJib3gueU1heCwgeV9tYXgpOwotICAgICAgICB4X21pbiA9IEZGTUlOKGdseXBoLT5i Ym94LnhNaW4sIHhfbWluKTsKLSAgICAgICAgeF9tYXggPSBGRk1BWChnbHlwaC0+YmJveC54 TWF4LCB4X21heCk7CiAgICAgfQotICAgIHMtPm1heF9nbHlwaF9oID0geV9tYXggLSB5X21p bjsKLSAgICBzLT5tYXhfZ2x5cGhfdyA9IHhfbWF4IC0geF9taW47Ci0KLSAgICAvKiBjb21w dXRlIGFuZCBzYXZlIHBvc2l0aW9uIGZvciBlYWNoIGdseXBoICovCi0gICAgZ2x5cGggPSBO VUxMOwotICAgIGZvciAoaSA9IDAsIHAgPSB0ZXh0OyAqcDsgaSsrKSB7Ci0gICAgICAgIEdF VF9VVEY4KGNvZGUsICpwID8gKnArKyA6IDAsIGNvZGUgPSAweGZmZmQ7IGdvdG8gY29udGlu dWVfb25faW52YWxpZDI7KTsKLWNvbnRpbnVlX29uX2ludmFsaWQyOgotCi0gICAgICAgIC8q IHNraXAgdGhlIFxuIGluIHRoZSBzZXF1ZW5jZSBcclxuICovCi0gICAgICAgIGlmIChwcmV2 X2NvZGUgPT0gJ1xyJyAmJiBjb2RlID09ICdcbicpCi0gICAgICAgICAgICBjb250aW51ZTsK LQotICAgICAgICBwcmV2X2NvZGUgPSBjb2RlOwotICAgICAgICBpZiAoaXNfbmV3bGluZShj b2RlKSkgewotCi0gICAgICAgICAgICBtYXhfdGV4dF9saW5lX3cgPSBGRk1BWChtYXhfdGV4 dF9saW5lX3csIHgpOwotICAgICAgICAgICAgeSArPSBzLT5tYXhfZ2x5cGhfaCArIHMtPmxp bmVfc3BhY2luZzsKLSAgICAgICAgICAgIHggPSAwOwotICAgICAgICAgICAgY29udGludWU7 Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBnZXQgZ2x5cGggKi8KLSAgICAgICAgcHJldl9n bHlwaCA9IGdseXBoOwotICAgICAgICBkdW1teS5jb2RlID0gY29kZTsKLSAgICAgICAgZHVt bXkuZm9udHNpemUgPSBzLT5mb250c2l6ZTsKLSAgICAgICAgZ2x5cGggPSBhdl90cmVlX2Zp bmQocy0+Z2x5cGhzLCAmZHVtbXksIGdseXBoX2NtcCwgTlVMTCk7Ci0KLSAgICAgICAgLyog a2VybmluZyAqLwotICAgICAgICBpZiAocy0+dXNlX2tlcm5pbmcgJiYgcHJldl9nbHlwaCAm JiBnbHlwaC0+Y29kZSkgewotICAgICAgICAgICAgRlRfR2V0X0tlcm5pbmcocy0+ZmFjZSwg cHJldl9nbHlwaC0+Y29kZSwgZ2x5cGgtPmNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBmdF9rZXJuaW5nX2RlZmF1bHQsICZkZWx0YSk7Ci0gICAgICAgICAgICB4ICs9IGRl bHRhLnggPj4gNjsKLSAgICAgICAgfQogCi0gICAgICAgIC8qIHNhdmUgcG9zaXRpb24gKi8K LSAgICAgICAgcy0+cG9zaXRpb25zW2ldLnggPSB4ICsgZ2x5cGgtPmJpdG1hcF9sZWZ0Owot ICAgICAgICBzLT5wb3NpdGlvbnNbaV0ueSA9IHkgLSBnbHlwaC0+Yml0bWFwX3RvcCArIHlf bWF4OwotICAgICAgICBpZiAoY29kZSA9PSAnXHQnKSB4ICA9ICh4IC8gcy0+dGFic2l6ZSAr IDEpKnMtPnRhYnNpemU7Ci0gICAgICAgIGVsc2UgICAgICAgICAgICAgIHggKz0gZ2x5cGgt PmFkdmFuY2U7Ci0gICAgfQorICAgIG1lYXN1cmVfdGV4dChjdHgsICZtZXRyaWNzKTsKIAot ICAgIG1heF90ZXh0X2xpbmVfdyA9IEZGTUFYKHgsIG1heF90ZXh0X2xpbmVfdyk7CisgICAg cy0+bWF4X2dseXBoX2ggPSBQT1NfQ0VJTChtZXRyaWNzLm1heF95NjQgLSBtZXRyaWNzLm1p bl95NjQsIDY0KTsKKyAgICBzLT5tYXhfZ2x5cGhfdyA9IFBPU19DRUlMKG1ldHJpY3MubWF4 X3g2NCAtIG1ldHJpY3MubWluX3g2NCwgNjQpOwogCi0gICAgcy0+dmFyX3ZhbHVlc1tWQVJf VFddID0gcy0+dmFyX3ZhbHVlc1tWQVJfVEVYVF9XXSA9IG1heF90ZXh0X2xpbmVfdzsKLSAg ICBzLT52YXJfdmFsdWVzW1ZBUl9USF0gPSBzLT52YXJfdmFsdWVzW1ZBUl9URVhUX0hdID0g eSArIHMtPm1heF9nbHlwaF9oOworICAgIHMtPnZhcl92YWx1ZXNbVkFSX1RXXSA9IHMtPnZh cl92YWx1ZXNbVkFSX1RFWFRfV10gPSBtZXRyaWNzLndpZHRoOworICAgIHMtPnZhcl92YWx1 ZXNbVkFSX1RIXSA9IHMtPnZhcl92YWx1ZXNbVkFSX1RFWFRfSF0gPSBtZXRyaWNzLmhlaWdo dDsKIAogICAgIHMtPnZhcl92YWx1ZXNbVkFSX01BWF9HTFlQSF9XXSA9IHMtPm1heF9nbHlw aF93OwogICAgIHMtPnZhcl92YWx1ZXNbVkFSX01BWF9HTFlQSF9IXSA9IHMtPm1heF9nbHlw aF9oOwotICAgIHMtPnZhcl92YWx1ZXNbVkFSX01BWF9HTFlQSF9BXSA9IHMtPnZhcl92YWx1 ZXNbVkFSX0FTQ0VOVCBdID0geV9tYXg7Ci0gICAgcy0+dmFyX3ZhbHVlc1tWQVJfTUFYX0dM WVBIX0RdID0gcy0+dmFyX3ZhbHVlc1tWQVJfREVTQ0VOVF0gPSB5X21pbjsKKyAgICBzLT52 YXJfdmFsdWVzW1ZBUl9NQVhfR0xZUEhfQV0gPSBzLT52YXJfdmFsdWVzW1ZBUl9BU0NFTlRd ID0gUE9TX0NFSUwobWV0cmljcy5tYXhfeTY0LCA2NCk7CisgICAgcy0+dmFyX3ZhbHVlc1tW QVJfTUFYX0dMWVBIX0RdID0gcy0+dmFyX3ZhbHVlc1tWQVJfREVTQ0VOVF0gPSBQT1NfQ0VJ TChtZXRyaWNzLm1pbl95NjQsIDY0KTsKIAotICAgIHMtPnZhcl92YWx1ZXNbVkFSX0xJTkVf SF0gPSBzLT52YXJfdmFsdWVzW1ZBUl9MSF0gPSBzLT5tYXhfZ2x5cGhfaDsKKyAgICBzLT52 YXJfdmFsdWVzW1ZBUl9MSU5FX0hdID0gcy0+dmFyX3ZhbHVlc1tWQVJfTEhdID0gbWV0cmlj cy5saW5lX2hlaWdodDY0IC8gNjQuOwogCiAgICAgaWYgKHMtPnRleHRfc291cmNlID09IEFW X0ZSQU1FX0RBVEFfREVURUNUSU9OX0JCT1hFUykgewogICAgICAgICBzLT52YXJfdmFsdWVz W1ZBUl9YXSA9IHMtPng7CkBAIC0xNTU5LDU2ICsxNzk1LDE0MiBAQCBjb250aW51ZV9vbl9p bnZhbGlkMjoKICAgICB1cGRhdGVfY29sb3Jfd2l0aF9hbHBoYShzLCAmYm9yZGVyY29sb3Is IHMtPmJvcmRlcmNvbG9yKTsKICAgICB1cGRhdGVfY29sb3Jfd2l0aF9hbHBoYShzLCAmYm94 Y29sb3IgICAsIHMtPmJveGNvbG9yICAgKTsKIAotICAgIGJveF93ID0gbWF4X3RleHRfbGlu ZV93OwotICAgIGJveF9oID0geSArIHMtPm1heF9nbHlwaF9oOworICAgIGlmIChzLT5kcmF3 X2JveCAmJiBzLT5ib3hib3JkZXJ3KSB7CisgICAgICAgIHMtPmJiX3RvcCA9IHMtPmJiX3Jp Z2h0ID0gcy0+YmJfYm90dG9tID0gcy0+YmJfbGVmdCA9IHMtPmJveGJvcmRlcnc7CisgICAg fSBlbHNlIHsKKyAgICAgICAgcy0+YmJfdG9wID0gcy0+YmJfcmlnaHQgPSBzLT5iYl9ib3R0 b20gPSBzLT5iYl9sZWZ0ID0gMDsKKyAgICB9CiAKICAgICBpZiAocy0+Zml4X2JvdW5kcykg ewotCiAgICAgICAgIC8qIGNhbGN1bGF0ZSBmb290cHJpbnQgb2YgdGV4dCBlZmZlY3RzICov Ci0gICAgICAgIGludCBib3hvZmZzZXQgICAgID0gcy0+ZHJhd19ib3ggPyBGRk1BWChzLT5i b3hib3JkZXJ3LCAwKSA6IDA7CiAgICAgICAgIGludCBib3JkZXJvZmZzZXQgID0gcy0+Ym9y ZGVydyAgPyBGRk1BWChzLT5ib3JkZXJ3LCAwKSA6IDA7CiAKLSAgICAgICAgaW50IG9mZnNl dGxlZnQgPSBGRk1BWDMoYm94b2Zmc2V0LCBib3JkZXJvZmZzZXQsCisgICAgICAgIGludCBv ZmZzZXRsZWZ0ID0gRkZNQVgzKEZGTUFYKHMtPmJiX2xlZnQsIDApLCBib3JkZXJvZmZzZXQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLT5zaGFkb3d4IDwgMCA/IEZG QUJTKHMtPnNoYWRvd3gpIDogMCkpOwotICAgICAgICBpbnQgb2Zmc2V0dG9wID0gRkZNQVgz KGJveG9mZnNldCwgYm9yZGVyb2Zmc2V0LAorICAgICAgICBpbnQgb2Zmc2V0dG9wID0gRkZN QVgzKEZGTUFYKHMtPmJiX3RvcCwgMCksIGJvcmRlcm9mZnNldCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHMtPnNoYWRvd3kgPCAwID8gRkZBQlMocy0+c2hhZG93eSkg OiAwKSk7Ci0KLSAgICAgICAgaW50IG9mZnNldHJpZ2h0ID0gRkZNQVgzKGJveG9mZnNldCwg Ym9yZGVyb2Zmc2V0LAorICAgICAgICBpbnQgb2Zmc2V0cmlnaHQgPSBGRk1BWDMoRkZNQVgo cy0+YmJfcmlnaHQsIDApLCBib3JkZXJvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocy0+c2hhZG93eCA+IDAgPyBzLT5zaGFkb3d4IDogMCkpOwotICAgICAg ICBpbnQgb2Zmc2V0Ym90dG9tID0gRkZNQVgzKGJveG9mZnNldCwgYm9yZGVyb2Zmc2V0LAor ICAgICAgICBpbnQgb2Zmc2V0Ym90dG9tID0gRkZNQVgzKEZGTUFYKHMtPmJiX2JvdHRvbSwg MCksIGJvcmRlcm9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cy0+c2hhZG93eSA+IDAgPyBzLT5zaGFkb3d5IDogMCkpOwogCi0KICAgICAgICAgaWYgKHMt PnggLSBvZmZzZXRsZWZ0IDwgMCkgcy0+eCA9IG9mZnNldGxlZnQ7CiAgICAgICAgIGlmIChz LT55IC0gb2Zmc2V0dG9wIDwgMCkgIHMtPnkgPSBvZmZzZXR0b3A7CiAKLSAgICAgICAgaWYg KHMtPnggKyBib3hfdyArIG9mZnNldHJpZ2h0ID4gd2lkdGgpCi0gICAgICAgICAgICBzLT54 ID0gRkZNQVgod2lkdGggLSBib3hfdyAtIG9mZnNldHJpZ2h0LCAwKTsKLSAgICAgICAgaWYg KHMtPnkgKyBib3hfaCArIG9mZnNldGJvdHRvbSA+IGhlaWdodCkKLSAgICAgICAgICAgIHMt PnkgPSBGRk1BWChoZWlnaHQgLSBib3hfaCAtIG9mZnNldGJvdHRvbSwgMCk7CisgICAgICAg IGlmIChzLT54ICsgbWV0cmljcy53aWR0aCArIG9mZnNldHJpZ2h0ID4gd2lkdGgpCisgICAg ICAgICAgICBzLT54ID0gRkZNQVgod2lkdGggLSBtZXRyaWNzLndpZHRoIC0gb2Zmc2V0cmln aHQsIDApOworICAgICAgICBpZiAocy0+eSArIG1ldHJpY3MuaGVpZ2h0ICsgb2Zmc2V0Ym90 dG9tID4gaGVpZ2h0KQorICAgICAgICAgICAgcy0+eSA9IEZGTUFYKGhlaWdodCAtIG1ldHJp Y3MuaGVpZ2h0IC0gb2Zmc2V0Ym90dG9tLCAwKTsKICAgICB9CiAKLSAgICAvKiBkcmF3IGJv eCAqLwotICAgIGlmIChzLT5kcmF3X2JveCkKLSAgICAgICAgZmZfYmxlbmRfcmVjdGFuZ2xl KCZzLT5kYywgJmJveGNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUt PmRhdGEsIGZyYW1lLT5saW5lc2l6ZSwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPnggLSBzLT5ib3hib3JkZXJ3LCBzLT55IC0gcy0+Ym94Ym9yZGVy dywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveF93ICsgcy0+Ym94Ym9yZGVydyAq IDIsIGJveF9oICsgcy0+Ym94Ym9yZGVydyAqIDIpOworICAgIHggPSAwOworICAgIHkgPSAw OworICAgIHg2NCA9IChpbnQpKHMtPnggKiA2NC4pOworICAgIHk2NCA9IChpbnQpKHMtPnkg KiA2NC4gKyBtZXRyaWNzLm9mZnNldF90b3A2NCk7CisKKyAgICBmb3IgKGludCBsID0gMDsg bCA8IHMtPmxpbmVfY291bnQ7ICsrbCkgeworICAgICAgICBUZXh0TGluZSAqbGluZSA9ICZz LT5saW5lc1tsXTsKKyAgICAgICAgSGFyZmJ1enpEYXRhICpoYiA9ICZsaW5lLT5oYl9kYXRh OworICAgICAgICBsaW5lLT5nbHlwaHMgPSBhdl9tYWxsb2N6KGhiLT5nbHlwaF9jb3VudCAq IHNpemVvZihHbHlwaEluZm8pKTsKKworICAgICAgICBmb3IgKGludCB0ID0gMDsgdCA8IGhi LT5nbHlwaF9jb3VudDsgKyt0KSB7CisgICAgICAgICAgICBHbHlwaEluZm8gKmdfaW5mbyA9 ICZsaW5lLT5nbHlwaHNbdF07CisgICAgICAgICAgICB1aW50OF90IGlzX3RhYiA9IGxhc3Rf dGFiX2lkeCA8IHMtPnRhYl9jb3VudCAmJgorICAgICAgICAgICAgICAgIGhiLT5nbHlwaF9p bmZvW3RdLmNsdXN0ZXIgPT0gcy0+dGFiX2NsdXN0ZXJzW2xhc3RfdGFiX2lkeF0gLSBsaW5l LT5jbHVzdGVyX29mZnNldDsKKyAgICAgICAgICAgIGludCB0cnVlX3gsIHRydWVfeTsKKyAg ICAgICAgICAgIGlmIChpc190YWIpIHsKKyAgICAgICAgICAgICAgICArK2xhc3RfdGFiX2lk eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRydWVfeCA9IHggKyBoYi0+Z2x5cGhf cG9zW3RdLnhfb2Zmc2V0OworICAgICAgICAgICAgdHJ1ZV95ID0geSArIGhiLT5nbHlwaF9w b3NbdF0ueV9vZmZzZXQ7CisgICAgICAgICAgICBzaGlmdF94NjQgPSAoKCh4NjQgKyB0cnVl X3gpID4+IDQpICYgMGIwMDExKSA8PCA0OworICAgICAgICAgICAgc2hpZnRfeTY0ID0gKCg0 IC0gKCgoeTY0ICsgdHJ1ZV95KSA+PiA0KSAmIDBiMDAxMSkpICYgMGIwMDExKSA8PCA0Owor CisgICAgICAgICAgICByZXQgPSBsb2FkX2dseXBoKGN0eCwgJmdseXBoLCBoYi0+Z2x5cGhf aW5mb1t0XS5jb2RlcG9pbnQsIHNoaWZ0X3g2NCwgc2hpZnRfeTY0KTsKKyAgICAgICAgICAg IGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAg ICAgICB9CisgICAgICAgICAgICBnX2luZm8tPmNvZGUgPSBoYi0+Z2x5cGhfaW5mb1t0XS5j b2RlcG9pbnQ7CisgICAgICAgICAgICBnX2luZm8tPnggPSAoeDY0ICsgdHJ1ZV94KSA+PiA2 OworICAgICAgICAgICAgZ19pbmZvLT55ID0gKCh5NjQgKyB0cnVlX3kpID4+IDYpICsgKHNo aWZ0X3k2NCA+IDAgPyAxIDogMCk7CisgICAgICAgICAgICBnX2luZm8tPnNoaWZ0X3g2NCA9 IHNoaWZ0X3g2NDsKKyAgICAgICAgICAgIGdfaW5mby0+c2hpZnRfeTY0ID0gc2hpZnRfeTY0 OworCisgICAgICAgICAgICBpZiAoIWlzX3RhYikgeworICAgICAgICAgICAgICAgIHggKz0g aGItPmdseXBoX3Bvc1t0XS54X2FkdmFuY2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICAgIGludCBzaXplID0gcy0+YmxhbmtfYWR2YW5jZTY0ICogcy0+dGFic2l6 ZTsKKyAgICAgICAgICAgICAgICB4ID0gKHggLyBzaXplICsgMSkgKiBzaXplOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgeSArPSBoYi0+Z2x5cGhfcG9zW3RdLnlfYWR2YW5jZTsK KyAgICAgICAgfQogCi0gICAgaWYgKHMtPnNoYWRvd3ggfHwgcy0+c2hhZG93eSkgewotICAg ICAgICBpZiAoKHJldCA9IGRyYXdfZ2x5cGhzKHMsIGZyYW1lLCB3aWR0aCwgaGVpZ2h0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFkb3djb2xvciwgcy0+c2hhZG93 eCwgcy0+c2hhZG93eSwgMCkpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAg ICAgIHkgKz0gbWV0cmljcy5saW5lX2hlaWdodDY0ICsgcy0+bGluZV9zcGFjaW5nICogNjQ7 CisgICAgICAgIHggPSAwOwogICAgIH0KIAotICAgIGlmIChzLT5ib3JkZXJ3KSB7Ci0gICAg ICAgIGlmICgocmV0ID0gZHJhd19nbHlwaHMocywgZnJhbWUsIHdpZHRoLCBoZWlnaHQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvcmRlcmNvbG9yLCAwLCAwLCBzLT5i b3JkZXJ3KSkgPCAwKQorICAgIG1ldHJpY3MucmVjdF94ID0gcy0+eDsKKyAgICBtZXRyaWNz LnJlY3RfeSA9IHMtPnk7CisgICAgCisgICAgcy0+Ym94X3dpZHRoID0gbWV0cmljcy53aWR0 aDsKKyAgICBzLT5ib3hfaGVpZ2h0ID0gbWV0cmljcy5oZWlnaHQ7CisKKyAgICBpZiAoIXMt PmRyYXdfYm94KSB7CisgICAgICAgIC8vIENyZWF0ZSBhIGJvcmRlciBmb3IgdGhlIGNsaXBw aW5nIHJlZ2lvbiB0byB0YWtlIGludG8gYWNjb3VudCBzdWJwaXhlbAorICAgICAgICAvLyBl cnJvcnMgaW4gdGV4dCBtZWFzdXJlbWVudCBhbmQgZWZmZWN0cy4KKyAgICAgICAgaW50IGJv cmRlcm9mZnNldCA9IHMtPmJvcmRlcncgPyBGRk1BWChzLT5ib3JkZXJ3LCAwKSA6IDA7Cisg ICAgICAgIHMtPmJiX2xlZnQgPSBib3JkZXJvZmZzZXQgKyAocy0+c2hhZG93eCA8IDAgPyBG RkFCUyhzLT5zaGFkb3d4KSA6IDApICsgMTsKKyAgICAgICAgcy0+YmJfdG9wID0gYm9yZGVy b2Zmc2V0ICsgKHMtPnNoYWRvd3kgPCAwID8gRkZBQlMocy0+c2hhZG93eSkgOiAwKSArIDE7 CisgICAgICAgIHMtPmJiX3JpZ2h0ID0gYm9yZGVyb2Zmc2V0ICsgKHMtPnNoYWRvd3ggPiAw ID8gcy0+c2hhZG93eCA6IDApICsgMTsKKyAgICAgICAgcy0+YmJfYm90dG9tID0gYm9yZGVy b2Zmc2V0ICsgKHMtPnNoYWRvd3kgPiAwID8gcy0+c2hhZG93eSA6IDApICsgMTsKKyAgICB9 CisKKyAgICAvKiBDaGVjayBpZiB0aGUgd2hvbGUgYm94IGlzIG91dCBvZiB0aGUgZnJhbWUg Ki8gICAgICAgIAorICAgIGlzX291dHNpZGUgPSBtZXRyaWNzLnJlY3RfeCAtIHMtPmJiX2xl ZnQgPj0gd2lkdGggfHwKKyAgICAgICAgICAgICAgICAgICAgbWV0cmljcy5yZWN0X3kgLSBz LT5iYl90b3AgPj0gaGVpZ2h0IHx8CisgICAgICAgICAgICAgICAgICAgIG1ldHJpY3MucmVj dF94ICsgcy0+Ym94X3dpZHRoICsgcy0+YmJfcmlnaHQgPD0gMCB8fAorICAgICAgICAgICAg ICAgICAgICBtZXRyaWNzLnJlY3RfeSArIHMtPmJveF9oZWlnaHQgKyBzLT5iYl9ib3R0b20g PD0gMDsKKworICAgIGlmICghaXNfb3V0c2lkZSkgeworICAgICAgICAvKiBkcmF3IGJveCAq LworICAgICAgICBpZiAocy0+ZHJhd19ib3gpIHsKKyAgICAgICAgICAgIHJlY194ID0gbWV0 cmljcy5yZWN0X3ggLSBzLT5iYl9sZWZ0OworICAgICAgICAgICAgcmVjX3kgPSBtZXRyaWNz LnJlY3RfeSAtIHMtPmJiX3RvcDsKKyAgICAgICAgICAgIHJlY193aWR0aCA9IHMtPmJveF93 aWR0aCArIHMtPmJiX3JpZ2h0ICsgcy0+YmJfbGVmdDsKKyAgICAgICAgICAgIHJlY19oZWln aHQgPSBzLT5ib3hfaGVpZ2h0ICsgcy0+YmJfYm90dG9tICsgcy0+YmJfdG9wOworICAgICAg ICAgICAgZmZfYmxlbmRfcmVjdGFuZ2xlKCZzLT5kYywgJmJveGNvbG9yLAorICAgICAgICAg ICAgICAgIGZyYW1lLT5kYXRhLCBmcmFtZS0+bGluZXNpemUsIHdpZHRoLCBoZWlnaHQsCisg ICAgICAgICAgICAgICAgcmVjX3gsIHJlY195LCByZWNfd2lkdGgsIHJlY19oZWlnaHQpOwor ICAgICAgICB9CisKKyAgICAgICAgaWYgKHMtPnNoYWRvd3ggfHwgcy0+c2hhZG93eSkgewor ICAgICAgICAgICAgaWYgKChyZXQgPSBkcmF3X2dseXBocyhzLCBmcmFtZSwgJnNoYWRvd2Nv bG9yLCAmbWV0cmljcywKKyAgICAgICAgICAgICAgICAgICAgcy0+c2hhZG93eCwgcy0+c2hh ZG93eSwgcy0+Ym9yZGVydykpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXQ7 CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocy0+Ym9yZGVydykg eworICAgICAgICAgICAgaWYgKChyZXQgPSBkcmF3X2dseXBocyhzLCBmcmFtZSwgJmJvcmRl cmNvbG9yLCAmbWV0cmljcywKKyAgICAgICAgICAgICAgICAgICAgMCwgMCwgcy0+Ym9yZGVy dykpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICB9 CisgICAgICAgIH0KKworICAgICAgICBpZiAoKHJldCA9IGRyYXdfZ2x5cGhzKHMsIGZyYW1l LCAmZm9udGNvbG9yLCAmbWV0cmljcywgMCwKKyAgICAgICAgICAgICAgICAwLCAwKSkgPCAw KSB7CiAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CiAgICAgfQotICAgIGlm ICgocmV0ID0gZHJhd19nbHlwaHMocywgZnJhbWUsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAmZm9udGNvbG9yLCAwLCAwLCAwKSkgPCAwKQotICAgICAg ICByZXR1cm4gcmV0OworCisgICAgLy8gRlJFRSBkYXRhIHN0cnVjdHVyZXMKKyAgICBmb3Ig KGludCBsID0gMDsgbCA8IHMtPmxpbmVfY291bnQ7ICsrbCkgeworICAgICAgICBUZXh0TGlu ZSAqbGluZSA9ICZzLT5saW5lc1tsXTsKKyAgICAgICAgYXZfZnJlZXAoJmxpbmUtPmdseXBo cyk7CisgICAgICAgIGhiX2Rlc3Ryb3koJmxpbmUtPmhiX2RhdGEpOworICAgIH0KKyAgICBh dl9mcmVlcCgmcy0+bGluZXMpOworICAgIGF2X2ZyZWVwKCZzLT50YWJfY2x1c3RlcnMpOwog CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xNjgwLDE0ICsyMDAyLDkgQEAgRkZfRU5BQkxFX0RF UFJFQ0FUSU9OX1dBUk5JTkdTCiAgICAgICAgICAgICBzLT54ID0gYmJveC0+eDsKICAgICAg ICAgICAgIHMtPnkgPSBiYm94LT55IC0gcy0+Zm9udHNpemU7CiAgICAgICAgIH0KLSAgICAg ICAgZHJhd190ZXh0KGN0eCwgZnJhbWUsIGZyYW1lLT53aWR0aCwgZnJhbWUtPmhlaWdodCk7 CisgICAgICAgIGRyYXdfdGV4dChjdHgsIGZyYW1lKTsKICAgICB9CiAKLSAgICBhdl9sb2co Y3R4LCBBVl9MT0dfREVCVUcsICJuOiVkIHQ6JWYgdGV4dF93OiVkIHRleHRfaDolZCB4OiVk IHk6JWRcbiIsCi0gICAgICAgICAgIChpbnQpcy0+dmFyX3ZhbHVlc1tWQVJfTl0sIHMtPnZh cl92YWx1ZXNbVkFSX1RdLAotICAgICAgICAgICAoaW50KXMtPnZhcl92YWx1ZXNbVkFSX1RF WFRfV10sIChpbnQpcy0+dmFyX3ZhbHVlc1tWQVJfVEVYVF9IXSwKLSAgICAgICAgICAgcy0+ eCwgcy0+eSk7Ci0KICAgICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKG91dGxpbmssIGZyYW1l KTsKIH0KIAotLSAKMi4zMC4yCgo= --------------fxWPAMIQjTMLVW2TGEpj3kux Content-Type: text/plain; charset=UTF-8; name="0002-box-borders-can-now-be-set-independently.patch" Content-Disposition: attachment; filename="0002-box-borders-can-now-be-set-independently.patch" Content-Transfer-Encoding: base64 RnJvbSBjMGMwODJjN2FiOTVhNzIyZWJhMmQ3NGFkZmJkYzQwM2Y1MWVkZGM2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5ZXRoaWUgPGtsaW1rbGltQHRpc2NhbGkuaXQ+CkRh dGU6IEZyaSwgMyBGZWIgMjAyMyAxNDoyMzoyMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMi83 XSBib3ggYm9yZGVycyBjYW4gbm93IGJlIHNldCBpbmRlcGVuZGVudGx5CgotLS0KIGRvYy9m aWx0ZXJzLnRleGkgICAgICAgICAgfCAxMiArKysrKysrKysrKy0KIGxpYmF2ZmlsdGVyL3Zm X2RyYXd0ZXh0LmMgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0KIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQppbmRl eCA0OWQ3MjE4ZTg0Li4wNzc1YjM2NmQ4IDEwMDY0NAotLS0gYS9kb2MvZmlsdGVycy50ZXhp CisrKyBiL2RvYy9maWx0ZXJzLnRleGkKQEAgLTEyMDUxLDcgKzEyMDUxLDE3IEBAIFRoZSBk ZWZhdWx0IHZhbHVlIG9mIEB2YXJ7Ym94fSBpcyAwLgogCiBAaXRlbSBib3hib3JkZXJ3CiBT ZXQgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgdG8gYmUgZHJhd24gYXJvdW5kIHRoZSBib3gg dXNpbmcgQHZhcntib3hjb2xvcn0uCi1UaGUgZGVmYXVsdCB2YWx1ZSBvZiBAdmFye2JveGJv cmRlcnd9IGlzIDAuCitUaGUgdmFsdWUgbXVzdCBiZSBzcGVjaWZpZWQgdXNpbmcgb25lIG9m IHRoZSBmb2xsb3dpbmcgZm9ybWF0czoKK0BpdGVtaXplIEBidWxsZXQKK0BpdGVtIEBjb2Rl e2JveGJvcmRlcnc9MTB9IHNldCB0aGUgd2lkdGggb2YgYWxsIHRoZSBib3JkZXJzIHRvIDEw CitAaXRlbSBAY29kZXtib3hib3JkZXJ3PTEwfDIwfSBzZXQgdGhlIHdpZHRoIG9mIHRoZSB0 b3AgYW5kIGJvdHRvbSBib3JkZXJzIHRvIDEwCisgICAgYW5kIHRoZSB3aWR0aCBvZiB0aGUg bGVmdCBhbmQgcmlnaHQgYm9yZGVycyB0byAyMAorQGl0ZW0gQGNvZGV7Ym94Ym9yZGVydz0x MHwyMHwzMH0gc2V0IHRoZSB3aWR0aCBvZiB0aGUgdG9wIGJvcmRlciB0byAxMCwgdGhlIHdp ZHRoCisgICAgb2YgdGhlIGJvdHRvbSBib3JkZXIgdG8gMzAgYW5kIHRoZSB3aWR0aCBvZiB0 aGUgbGVmdCBhbmQgcmlnaHQgYm9yZGVycyB0byAyMAorQGl0ZW0gQGNvZGV7Ym94Ym9yZGVy dz0xMHwyMHwzMHw0MH0gc2V0IHRoZSBib3JkZXJzIHdpZHRoIHRvIDEwICh0b3ApLCAyMCAo cmlnaHQpLAorICAgIDMwIChib3R0b20pLCA0MCAobGVmdCkKK0BlbmQgaXRlbWl6ZQorVGhl IGRlZmF1bHQgdmFsdWUgb2YgQHZhcntib3hib3JkZXJ3fSBpcyAiMCIuCiAKIEBpdGVtIGJv eGNvbG9yCiBUaGUgY29sb3IgdG8gYmUgdXNlZCBmb3IgZHJhd2luZyBib3ggYXJvdW5kIHRl eHQuIEZvciB0aGUgc3ludGF4IG9mIHRoaXMKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3Zm X2RyYXd0ZXh0LmMgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCmluZGV4IDdhMGEyNTVj NWUuLmNlMjgxNGIwZTAgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMK KysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwpAQCAtMjcsNiArMjcsOCBAQAogICog LSBUaGlzIGZpbHRlciBub3cgZGVwZW5kcyBvbiBsaWJoYXJmYnV6eiBmb3IgdGV4dCBzaGFw aW5nLgogICogLSBHbHlwaHMgcG9zaXRpb24gaXMgbm93IGFjY3VyYXRlIHRvIDEvNCBwaXhl bCBpbiBib3RoIGRpcmVjdGlvbnMKICAqIC0gVGhlIGRlZmF1bHQgbGluZSBoZWlnaHQgaXMg bm93IHRoZSBvbmUgZGVmaW5lZCBpbiB0aGUgZm9udAorICogLSBUaGUgYm94Ym9yZGVydyBw YXJhbWV0ZXIgY2FuIG5vdyBjb250YWluIGEgZGlmZmVyZW50IHZhbHVlIGZvciBlYWNoIGJv cmRlcgorICogICAoZS5nLiBib3hib3JkZXJ3PXRvcHxyaWdodHxib3R0b218bGVmdCkKICAq LwogCiAvKioKQEAgLTI1Niw3ICsyNTgsOCBAQCB0eXBlZGVmIHN0cnVjdCBEcmF3VGV4dENv bnRleHQgewogCiAgICAgaW50IGxpbmVfc3BhY2luZzsgICAgICAgICAgICAgICAvLy88IGxp bmVzIHNwYWNpbmcgaW4gcGl4ZWxzCiAgICAgc2hvcnQgaW50IGRyYXdfYm94OyAgICAgICAg ICAgICAvLy88IGRyYXcgYm94IGFyb3VuZCB0ZXh0IC0gdHJ1ZSBvciBmYWxzZQotICAgIGlu dCBib3hib3JkZXJ3OyAgICAgICAgICAgICAgICAgLy8vPCBib3ggYm9yZGVyIHdpZHRoCisg ICAgY2hhciogYm94Ym9yZGVydzsgICAgICAgICAgICAgICAvLy88IGJveCBib3JkZXIgd2lk dGggKHBhZGRpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8g IGFsbG93ZWQgZm9ybWF0czogImFsbCIsICJ2ZXJ0fG9yaXoiLCAidG9wfHJpZ2h0fGJvdHRv bXxsZWZ0IgogICAgIGludCBiYl90b3A7ICAgICAgICAgICAgICAgICAgICAgLy8vPCB0aGUg c2l6ZSBvZiB0aGUgdG9wIGJveCBib3JkZXIKICAgICBpbnQgYmJfcmlnaHQ7ICAgICAgICAg ICAgICAgICAgIC8vLzwgdGhlIHNpemUgb2YgdGhlIHJpZ2h0IGJveCBib3JkZXIKICAgICBp bnQgYmJfYm90dG9tOyAgICAgICAgICAgICAgICAgIC8vLzwgdGhlIHNpemUgb2YgdGhlIGJv dHRvbSBib3ggYm9yZGVyCkBAIC0zMTgsNyArMzIxLDcgQEAgc3RhdGljIGNvbnN0IEFWT3B0 aW9uIGRyYXd0ZXh0X29wdGlvbnNbXT0gewogICAgIHsiYm9yZGVyY29sb3IiLCAgICAic2V0 IGJvcmRlciBjb2xvciIsICAgICAgT0ZGU0VUKGJvcmRlcmNvbG9yLnJnYmEpLCAgIEFWX09Q VF9UWVBFX0NPTE9SLCAgey5zdHI9ImJsYWNrIn0sIDAsIDAsIEZMQUdTfSwKICAgICB7InNo YWRvd2NvbG9yIiwgICAgInNldCBzaGFkb3cgY29sb3IiLCAgICAgIE9GRlNFVChzaGFkb3dj b2xvci5yZ2JhKSwgICBBVl9PUFRfVFlQRV9DT0xPUiwgIHsuc3RyPSJibGFjayJ9LCAwLCAw LCBGTEFHU30sCiAgICAgeyJib3giLCAgICAgICAgICAgICJzZXQgYm94IiwgICAgICAgICAg ICAgICBPRkZTRVQoZHJhd19ib3gpLCAgICAgICAgICAgQVZfT1BUX1RZUEVfQk9PTCwgICB7 Lmk2ND0wfSwgICAgIDAsIDEsIEZMQUdTfSwKLSAgICB7ImJveGJvcmRlcnciLCAgICAgInNl dCBib3ggYm9yZGVycyB3aWR0aCIsIE9GRlNFVChib3hib3JkZXJ3KSwgICAgICAgICBBVl9P UFRfVFlQRV9JTlQsICAgIHsuaTY0PTB9LCAgICAgMCwgSU5UX01BWCwgRkxBR1N9LAorICAg IHsiYm94Ym9yZGVydyIsICAgICAic2V0IGJveCBib3JkZXJzIHdpZHRoIiwgT0ZGU0VUKGJv eGJvcmRlcncpLCAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9IjAifSwgICAw LCAwLCBGTEFHU30sCiAgICAgeyJsaW5lX3NwYWNpbmciLCAgICJzZXQgbGluZSBzcGFjaW5n IGluIHBpeGVscyIsIE9GRlNFVChsaW5lX3NwYWNpbmcpLCAgQVZfT1BUX1RZUEVfSU5ULCAg ICB7Lmk2ND0tMX0sICAgIElOVF9NSU4sIElOVF9NQVgsIEZMQUdTfSwKICAgICB7ImZvbnRz aXplIiwgICAgICAgInNldCBmb250IHNpemUiLCAgICAgICAgIE9GRlNFVChmb250c2l6ZV9l eHByKSwgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAgMCwgMCwgRkxB R1N9LAogICAgIHsieCIsICAgICAgICAgICAgICAic2V0IHggZXhwcmVzc2lvbiIsICAgICAg T0ZGU0VUKHhfZXhwciksICAgICAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9 IjAifSwgICAwLCAwLCBGTEFHU30sCkBAIC03MzUsNiArNzM4LDIxIEBAIHN0YXRpYyBlbnVt IEFWRnJhbWVTaWRlRGF0YVR5cGUgdGV4dF9zb3VyY2Vfc3RyaW5nX3BhcnNlKGNvbnN0IGNo YXIgKnRleHRfc291cmNlCiAgICAgfQogfQogCisvLyBDb252ZXJ0IGEgc3RyaW5nIGZvcm1h dHRlZCBhcyAibjF8bjJ8Li4ufG5OIiBpbnRvIGFuIGludGVnZXIgYXJyYXkKK3N0YXRpYyBp bnQgc3RyaW5nX3RvX2FycmF5KGNvbnN0IGNoYXIqIHNvdXJjZSwgaW50KiByZXN1bHQsIGlu dCByZXN1bHRfc2l6ZSkKK3sKKyAgICBpbnQgY291bnRlciA9IDAsIHNpemUgPSBzdHJsZW4o c291cmNlKSArIDE7CisgICAgY2hhciAqc2F2ZXB0ciwgKmN1cnZhbCwgKmR1cCA9IGF2X21h bGxvYyhzaXplKTsKKyAgICBhdl9zdHJsY3B5KGR1cCwgc291cmNlLCBzaXplKTsKKyAgICBp ZiAocmVzdWx0X3NpemUgPiAwICYmIChjdXJ2YWwgPSBhdl9zdHJ0b2soZHVwLCAifCIsICZz YXZlcHRyKSkpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgcmVzdWx0W2NvdW50ZXIr K10gPSBhdG9pKGN1cnZhbCk7CisgICAgICAgIH0gd2hpbGUgKChjdXJ2YWwgPSBhdl9zdHJ0 b2soTlVMTCwgInwiLCAmc2F2ZXB0cikpICYmIGNvdW50ZXIgPCByZXN1bHRfc2l6ZSk7Cisg ICAgfQorICAgIGF2X2ZyZWUoZHVwKTsKKyAgICByZXR1cm4gY291bnRlcjsKK30KKwogc3Rh dGljIGF2X2NvbGQgaW50IGluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiB7CiAgICAgaW50 IGVycjsKQEAgLTE3OTYsNyArMTgxNCwyNCBAQCBzdGF0aWMgaW50IGRyYXdfdGV4dChBVkZp bHRlckNvbnRleHQgKmN0eCwgQVZGcmFtZSAqZnJhbWUpCiAgICAgdXBkYXRlX2NvbG9yX3dp dGhfYWxwaGEocywgJmJveGNvbG9yICAgLCBzLT5ib3hjb2xvciAgICk7CiAKICAgICBpZiAo cy0+ZHJhd19ib3ggJiYgcy0+Ym94Ym9yZGVydykgewotICAgICAgICBzLT5iYl90b3AgPSBz LT5iYl9yaWdodCA9IHMtPmJiX2JvdHRvbSA9IHMtPmJiX2xlZnQgPSBzLT5ib3hib3JkZXJ3 OworICAgICAgICBpbnQgYmJzaXplWzRdOworICAgICAgICBpbnQgY291bnQ7CisgICAgICAg IGNvdW50ID0gc3RyaW5nX3RvX2FycmF5KHMtPmJveGJvcmRlcncsIGJic2l6ZSwgNCk7Cisg ICAgICAgIGlmIChjb3VudCA9PSAxKSB7CisgICAgICAgICAgICBzLT5iYl90b3AgPSBzLT5i Yl9yaWdodCA9IHMtPmJiX2JvdHRvbSA9IHMtPmJiX2xlZnQgPSBiYnNpemVbMF07CisgICAg ICAgIH0gZWxzZSBpZiAoY291bnQgPT0gMikgeworICAgICAgICAgICAgcy0+YmJfdG9wID0g cy0+YmJfYm90dG9tID0gYmJzaXplWzBdOworICAgICAgICAgICAgcy0+YmJfcmlnaHQgPSBz LT5iYl9sZWZ0ID0gYmJzaXplWzFdOworICAgICAgICB9IGVsc2UgaWYgKGNvdW50ID09IDMp IHsKKyAgICAgICAgICAgIHMtPmJiX3RvcCA9IGJic2l6ZVswXTsKKyAgICAgICAgICAgIHMt PmJiX3JpZ2h0ID0gcy0+YmJfbGVmdCA9IGJic2l6ZVsxXTsKKyAgICAgICAgICAgIHMtPmJi X2JvdHRvbSA9IGJic2l6ZVsyXTsKKyAgICAgICAgfSBlbHNlIGlmIChjb3VudCA9PSA0KSB7 CisgICAgICAgICAgICBzLT5iYl90b3AgPSBiYnNpemVbMF07CisgICAgICAgICAgICBzLT5i Yl9yaWdodCA9IGJic2l6ZVsxXTsKKyAgICAgICAgICAgIHMtPmJiX2JvdHRvbSA9IGJic2l6 ZVsyXTsKKyAgICAgICAgICAgIHMtPmJiX2xlZnQgPSBiYnNpemVbM107CisgICAgICAgIH0K ICAgICB9IGVsc2UgewogICAgICAgICBzLT5iYl90b3AgPSBzLT5iYl9yaWdodCA9IHMtPmJi X2JvdHRvbSA9IHMtPmJiX2xlZnQgPSAwOwogICAgIH0KLS0gCjIuMzAuMgoK --------------fxWPAMIQjTMLVW2TGEpj3kux Content-Type: text/plain; charset=UTF-8; name="0003-boxw-and-boxh-options.patch" Content-Disposition: attachment; filename="0003-boxw-and-boxh-options.patch" Content-Transfer-Encoding: base64 RnJvbSA3OGExOGY4NTRjMmFiNDEwYWQ4N2JmNmFhNTY4MjIyMzU4Y2I1OGI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5ZXRoaWUgPGtsaW1rbGltQHRpc2NhbGkuaXQ+CkRh dGU6IEZyaSwgMyBGZWIgMjAyMyAxNDoyODozOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMy83 XSBib3h3IGFuZCBib3hoIG9wdGlvbnMKCi0tLQogZG9jL2ZpbHRlcnMudGV4aSAgICAgICAg ICB8ICA4ICsrKysrKysrCiBsaWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jIHwgMTEgKysrKysr KysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQpp bmRleCAwNzc1YjM2NmQ4Li4yYTg0ZmE5Y2M4IDEwMDY0NAotLS0gYS9kb2MvZmlsdGVycy50 ZXhpCisrKyBiL2RvYy9maWx0ZXJzLnRleGkKQEAgLTEyMDQ5LDYgKzEyMDQ5LDE0IEBAIFVz ZWQgdG8gZHJhdyBhIGJveCBhcm91bmQgdGV4dCB1c2luZyB0aGUgYmFja2dyb3VuZCBjb2xv ci4KIFRoZSB2YWx1ZSBtdXN0IGJlIGVpdGhlciAxIChlbmFibGUpIG9yIDAgKGRpc2FibGUp LgogVGhlIGRlZmF1bHQgdmFsdWUgb2YgQHZhcntib3h9IGlzIDAuCiAKK0BpdGVtIGJveHcK K1NldCB0aGUgd2lkdGggb2YgdGhlIGJveCB0byBiZSBkcmF3biBhcm91bmQgdGV4dC4KK1Ro ZSBkZWZhdWx0IHZhbHVlIG9mIEB2YXJ7Ym94d30gaXMgY29tcHV0ZWQgYXV0b21hdGljYWxs eSB0byBtYXRjaCB0aGUgdGV4dCB3aWR0aAorCitAaXRlbSBib3hoCitTZXQgdGhlIGhlaWdo dCBvZiB0aGUgYm94IHRvIGJlIGRyYXduIGFyb3VuZCB0ZXh0LgorVGhlIGRlZmF1bHQgdmFs dWUgb2YgQHZhcntib3hofSBpcyBjb21wdXRlZCBhdXRvbWF0aWNhbGx5IHRvIG1hdGNoIHRo ZSB0ZXh0IGhlaWdodAorCiBAaXRlbSBib3hib3JkZXJ3CiBTZXQgdGhlIHdpZHRoIG9mIHRo ZSBib3JkZXIgdG8gYmUgZHJhd24gYXJvdW5kIHRoZSBib3ggdXNpbmcgQHZhcntib3hjb2xv cn0uCiBUaGUgdmFsdWUgbXVzdCBiZSBzcGVjaWZpZWQgdXNpbmcgb25lIG9mIHRoZSBmb2xs b3dpbmcgZm9ybWF0czoKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMg Yi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCmluZGV4IGNlMjgxNGIwZTAuLmM2NzgyNGMw MDYgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMKKysrIGIvbGliYXZm aWx0ZXIvdmZfZHJhd3RleHQuYwpAQCAtMjYsNiArMjYsOCBAQAogICoKICAqIC0gVGhpcyBm aWx0ZXIgbm93IGRlcGVuZHMgb24gbGliaGFyZmJ1enogZm9yIHRleHQgc2hhcGluZy4KICAq IC0gR2x5cGhzIHBvc2l0aW9uIGlzIG5vdyBhY2N1cmF0ZSB0byAxLzQgcGl4ZWwgaW4gYm90 aCBkaXJlY3Rpb25zCisgKiAtIFRoZSBzaXplIG9mIHRoZSBiYWNrZ3JvdW5kIGJveCBjYW4g bm93IGJlIGZvcmNlZCB3aXRoIHRoZSBib3h3CisgKiAgIGFuZCBib3hoIHBhcmFtZXRlcnMK ICAqIC0gVGhlIGRlZmF1bHQgbGluZSBoZWlnaHQgaXMgbm93IHRoZSBvbmUgZGVmaW5lZCBp biB0aGUgZm9udAogICogLSBUaGUgYm94Ym9yZGVydyBwYXJhbWV0ZXIgY2FuIG5vdyBjb250 YWluIGEgZGlmZmVyZW50IHZhbHVlIGZvciBlYWNoIGJvcmRlcgogICogICAoZS5nLiBib3hi b3JkZXJ3PXRvcHxyaWdodHxib3R0b218bGVmdCkKQEAgLTMwMSw2ICszMDMsOSBAQCB0eXBl ZGVmIHN0cnVjdCBEcmF3VGV4dENvbnRleHQgewogI2VuZGlmCiAgICAgQVZEaWN0aW9uYXJ5 ICptZXRhZGF0YTsKIAorICAgIGludCBib3h3OyAgICAgICAgICAgICAgICAgICAgICAgLy8v PCB0aGUgdmFsdWUgb2YgdGhlIGJveHcgcGFyYW1ldGVyCisgICAgaW50IGJveGg7ICAgICAg ICAgICAgICAgICAgICAgICAvLy88IHRoZSB2YWx1ZSBvZiB0aGUgYm94aCBwYXJhbWV0ZXIK KwogICAgIFRleHRMaW5lICpsaW5lczsgICAgICAgICAgICAgICAgLy8vPCBjb21wdXRlZCBp bmZvcm1hdGlvbiBhYm91dCB0ZXh0IGxpbmVzCiAgICAgaW50IGxpbmVfY291bnQ7ICAgICAg ICAgICAgICAgICAvLy88IHRoZSBudW1iZXIgb2YgdGV4dCBsaW5lcwogICAgIHVpbnQzMl90 ICp0YWJfY2x1c3RlcnM7ICAgICAgICAgLy8vPCB0aGUgcG9zaXRpb24gb2YgdGFiIGNoYXJh Y3RlcnMgaW4gdGhlIHRleHQKQEAgLTMyNiw2ICszMzEsOCBAQCBzdGF0aWMgY29uc3QgQVZP cHRpb24gZHJhd3RleHRfb3B0aW9uc1tdPSB7CiAgICAgeyJmb250c2l6ZSIsICAgICAgICJz ZXQgZm9udCBzaXplIiwgICAgICAgICBPRkZTRVQoZm9udHNpemVfZXhwciksICAgICAgQVZf T1BUX1RZUEVfU1RSSU5HLCB7LnN0cj1OVUxMfSwgIDAsIDAsIEZMQUdTfSwKICAgICB7Ingi LCAgICAgICAgICAgICAgInNldCB4IGV4cHJlc3Npb24iLCAgICAgIE9GRlNFVCh4X2V4cHIp LCAgICAgICAgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPSIwIn0sICAgMCwgMCwg RkxBR1N9LAogICAgIHsieSIsICAgICAgICAgICAgICAic2V0IHkgZXhwcmVzc2lvbiIsICAg ICAgT0ZGU0VUKHlfZXhwciksICAgICAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5z dHI9IjAifSwgICAwLCAwLCBGTEFHU30sCisgICAgeyJib3h3IiwgICAgICAgICAgICJzZXQg Ym94IHdpZHRoIiwgICAgICAgICBPRkZTRVQoYm94dyksICAgICAgICAgICAgICAgQVZfT1BU X1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIDAsIElOVF9NQVgsIEZMQUdTfSwKKyAgICB7 ImJveGgiLCAgICAgICAgICAgInNldCBib3ggaGVpZ2h0IiwgICAgICAgIE9GRlNFVChib3ho KSwgICAgICAgICAgICAgICBBVl9PUFRfVFlQRV9JTlQsICAgIHsuaTY0PTB9LCAgICAgMCwg SU5UX01BWCwgRkxBR1N9LAogICAgIHsic2hhZG93eCIsICAgICAgICAic2V0IHNoYWRvdyB4 IG9mZnNldCIsICAgT0ZGU0VUKHNoYWRvd3gpLCAgICAgICAgICAgIEFWX09QVF9UWVBFX0lO VCwgICAgey5pNjQ9MH0sICAgICBJTlRfTUlOLCBJTlRfTUFYLCBGTEFHU30sCiAgICAgeyJz aGFkb3d5IiwgICAgICAgICJzZXQgc2hhZG93IHkgb2Zmc2V0IiwgICBPRkZTRVQoc2hhZG93 eSksICAgICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIElOVF9N SU4sIElOVF9NQVgsIEZMQUdTfSwKICAgICB7ImJvcmRlcnciLCAgICAgICAgInNldCBib3Jk ZXIgd2lkdGgiLCAgICAgIE9GRlNFVChib3JkZXJ3KSwgICAgICAgICAgICBBVl9PUFRfVFlQ RV9JTlQsICAgIHsuaTY0PTB9LCAgICAgSU5UX01JTiwgSU5UX01BWCwgRkxBR1N9LApAQCAt MTkwNyw4ICsxOTE0LDggQEAgc3RhdGljIGludCBkcmF3X3RleHQoQVZGaWx0ZXJDb250ZXh0 ICpjdHgsIEFWRnJhbWUgKmZyYW1lKQogICAgIG1ldHJpY3MucmVjdF94ID0gcy0+eDsKICAg ICBtZXRyaWNzLnJlY3RfeSA9IHMtPnk7CiAgICAgCi0gICAgcy0+Ym94X3dpZHRoID0gbWV0 cmljcy53aWR0aDsKLSAgICBzLT5ib3hfaGVpZ2h0ID0gbWV0cmljcy5oZWlnaHQ7CisgICAg cy0+Ym94X3dpZHRoID0gcy0+Ym94dyA9PSAwID8gbWV0cmljcy53aWR0aCA6IHMtPmJveHc7 CisgICAgcy0+Ym94X2hlaWdodCA9IHMtPmJveGggPT0gMCA/IG1ldHJpY3MuaGVpZ2h0IDog cy0+Ym94aDsKIAogICAgIGlmICghcy0+ZHJhd19ib3gpIHsKICAgICAgICAgLy8gQ3JlYXRl IGEgYm9yZGVyIGZvciB0aGUgY2xpcHBpbmcgcmVnaW9uIHRvIHRha2UgaW50byBhY2NvdW50 IHN1YnBpeGVsCi0tIAoyLjMwLjIKCg== --------------fxWPAMIQjTMLVW2TGEpj3kux Content-Type: text/plain; charset=UTF-8; name="0004-new-variables-added.patch" Content-Disposition: attachment; filename="0004-new-variables-added.patch" Content-Transfer-Encoding: base64 RnJvbSAwMjVjMTcwNTYzNDg4N2IyOTgxN2NlNjQ4Y2M2ZjQ5NmFjZGI1MTM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5ZXRoaWUgPGtsaW1rbGltQHRpc2NhbGkuaXQ+CkRh dGU6IEZyaSwgMyBGZWIgMjAyMyAxNDozNDowNyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggNC83 XSBuZXcgdmFyaWFibGVzIGFkZGVkCgotLS0KIGRvYy9maWx0ZXJzLnRleGkgICAgICAgICAg fCAxMiArKysrKysrKysrKysKIGxpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMgfCAxNCArKysr KysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvZG9jL2ZpbHRlcnMudGV4aSBiL2RvYy9maWx0ZXJzLnRleGkKaW5kZXggMmE4NGZh OWNjOC4uY2IxYTNmZjk4MyAxMDA2NDQKLS0tIGEvZG9jL2ZpbHRlcnMudGV4aQorKysgYi9k b2MvZmlsdGVycy50ZXhpCkBAIC0xMjI4Niw2ICsxMjI4NiwxOCBAQCBjb250YWluZWQgaW4g dGhlIHJlbmRlcmVkIHRleHQsIGl0IGlzIGVxdWl2YWxlbnQgdG8gQHZhcnthc2NlbnR9IC0K IG1heGltdW0gZ2x5cGggd2lkdGgsIHRoYXQgaXMgdGhlIG1heGltdW0gd2lkdGggZm9yIGFs bCB0aGUgZ2x5cGhzCiBjb250YWluZWQgaW4gdGhlIHJlbmRlcmVkIHRleHQKIAorQGl0ZW0g Zm9udF9hCit0aGUgYXNjZW50IHNpemUgZGVmaW5lZCBpbiB0aGUgZm9udCBtZXRyaWNzCisK K0BpdGVtIGZvbnRfZAordGhlIGRlc2NlbnQgc2l6ZSBkZWZpbmVkIGluIHRoZSBmb250IG1l dHJpY3MKKworQGl0ZW0gdG9wX2EKK3RoZSBtYXhpbXVtIGFzY2VuZGVyIG9mIHRoZSBnbHlw aHMgb2YgdGhlIGZpcnN0IHRleHQgbGluZQorCitAaXRlbSBib3R0b21fZAordGhlIG1heGlt dW0gZGVzY2VuZGVyIG9mIHRoZSBnbHlwaHMgb2YgdGhlIGxhc3QgdGV4dCBsaW5lCisKIEBp dGVtIG4KIHRoZSBudW1iZXIgb2YgaW5wdXQgZnJhbWUsIHN0YXJ0aW5nIGZyb20gMAogCmRp ZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jIGIvbGliYXZmaWx0ZXIvdmZf ZHJhd3RleHQuYwppbmRleCBjNjc4MjRjMDA2Li4yNTM0OGJhN2RlIDEwMDY0NAotLS0gYS9s aWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCisrKyBiL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0 LmMKQEAgLTMxLDYgKzMxLDggQEAKICAqIC0gVGhlIGRlZmF1bHQgbGluZSBoZWlnaHQgaXMg bm93IHRoZSBvbmUgZGVmaW5lZCBpbiB0aGUgZm9udAogICogLSBUaGUgYm94Ym9yZGVydyBw YXJhbWV0ZXIgY2FuIG5vdyBjb250YWluIGEgZGlmZmVyZW50IHZhbHVlIGZvciBlYWNoIGJv cmRlcgogICogICAoZS5nLiBib3hib3JkZXJ3PXRvcHxyaWdodHxib3R0b218bGVmdCkKKyAq IC0gVGhlIGZvbGxvd2luZyBuZXcgdmFyaWFibGVzIGNhbiBiZSB1c2VkIGluIHRoZSB4IGFu ZCB5IGV4cHJlc3Npb25zOgorICogICBmb250X2EsIGZvbnRfZCwgdG9wX2EsIGJvdHRvbV9k CiAgKi8KIAogLyoqCkBAIC0xMDEsNiArMTAzLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpj b25zdCB2YXJfbmFtZXNbXSA9IHsKICAgICAibWF4X2dseXBoX2QiLCAiZGVzY2VudCIsIC8v LzwgbWluIGdseXBoIGRlc2NlbmRlcgogICAgICJtYXhfZ2x5cGhfaCIsICAgICAgICAgICAg Ly8vPCBtYXggZ2x5cGggaGVpZ2h0CiAgICAgIm1heF9nbHlwaF93IiwgICAgICAgICAgICAv Ly88IG1heCBnbHlwaCB3aWR0aAorICAgICJmb250X2EiLCAgICAgICAgICAgICAgICAgLy8v PCBmb250LWRlZmluZWQgYXNjZW50CisgICAgImZvbnRfZCIsICAgICAgICAgICAgICAgICAv Ly88IGZvbnQtZGVmaW5lZCBkZXNjZW50CisgICAgInRvcF9hIiwgICAgICAgICAgICAgICAg ICAvLy88IG1heCBnbHlwaCBhc2NlbmRlciBvZiB0aGUgdG9wIGxpbmUKKyAgICAiYm90dG9t X2QiLCAgICAgICAgICAgICAgIC8vLzwgbWF4IGdseXBoIGRlc2NlbmRlciBvZiB0aGUgYm90 dG9tIGxpbmUKICAgICAibiIsICAgICAgICAgICAgICAgICAgICAgIC8vLzwgbnVtYmVyIG9m IGZyYW1lCiAgICAgInNhciIsCiAgICAgInQiLCAgICAgICAgICAgICAgICAgICAgICAvLy88 IHRpbWVzdGFtcCBleHByZXNzZWQgaW4gc2Vjb25kcwpAQCAtMTQ0LDYgKzE1MCwxMCBAQCBl bnVtIHZhcl9uYW1lIHsKICAgICBWQVJfTUFYX0dMWVBIX0QsIFZBUl9ERVNDRU5ULAogICAg IFZBUl9NQVhfR0xZUEhfSCwKICAgICBWQVJfTUFYX0dMWVBIX1csCisgICAgVkFSX0ZPTlRf QSwKKyAgICBWQVJfRk9OVF9ELAorICAgIFZBUl9UT1BfQSwKKyAgICBWQVJfQk9UVE9NX0Qs CiAgICAgVkFSX04sCiAgICAgVkFSX1NBUiwKICAgICBWQVJfVCwKQEAgLTE4MDAsOCArMTgx MCwxMiBAQCBzdGF0aWMgaW50IGRyYXdfdGV4dChBVkZpbHRlckNvbnRleHQgKmN0eCwgQVZG cmFtZSAqZnJhbWUpCiAgICAgcy0+dmFyX3ZhbHVlc1tWQVJfTUFYX0dMWVBIX1ddID0gcy0+ bWF4X2dseXBoX3c7CiAgICAgcy0+dmFyX3ZhbHVlc1tWQVJfTUFYX0dMWVBIX0hdID0gcy0+ bWF4X2dseXBoX2g7CiAgICAgcy0+dmFyX3ZhbHVlc1tWQVJfTUFYX0dMWVBIX0FdID0gcy0+ dmFyX3ZhbHVlc1tWQVJfQVNDRU5UXSA9IFBPU19DRUlMKG1ldHJpY3MubWF4X3k2NCwgNjQp OworICAgIHMtPnZhcl92YWx1ZXNbVkFSX0ZPTlRfQV0gPSBzLT5mYWNlLT5zaXplLT5tZXRy aWNzLmFzY2VuZGVyIC8gNjQ7CiAgICAgcy0+dmFyX3ZhbHVlc1tWQVJfTUFYX0dMWVBIX0Rd ID0gcy0+dmFyX3ZhbHVlc1tWQVJfREVTQ0VOVF0gPSBQT1NfQ0VJTChtZXRyaWNzLm1pbl95 NjQsIDY0KTsKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9GT05UX0RdID0gLXMtPmZhY2UtPnNp emUtPm1ldHJpY3MuZGVzY2VuZGVyIC8gNjQ7CiAKKyAgICBzLT52YXJfdmFsdWVzW1ZBUl9U T1BfQV0gPSBQT1NfQ0VJTChtZXRyaWNzLm9mZnNldF90b3A2NCwgNjQpOworICAgIHMtPnZh cl92YWx1ZXNbVkFSX0JPVFRPTV9EXSA9IFBPU19DRUlMKG1ldHJpY3Mub2Zmc2V0X2JvdHRv bTY0LCA2NCk7CiAgICAgcy0+dmFyX3ZhbHVlc1tWQVJfTElORV9IXSA9IHMtPnZhcl92YWx1 ZXNbVkFSX0xIXSA9IG1ldHJpY3MubGluZV9oZWlnaHQ2NCAvIDY0LjsKIAogICAgIGlmIChz LT50ZXh0X3NvdXJjZSA9PSBBVl9GUkFNRV9EQVRBX0RFVEVDVElPTl9CQk9YRVMpIHsKLS0g CjIuMzAuMgoK --------------fxWPAMIQjTMLVW2TGEpj3kux Content-Type: text/plain; charset=UTF-8; name="0005-vertical-and-horizontal-text-alignment.patch" Content-Disposition: attachment; filename="0005-vertical-and-horizontal-text-alignment.patch" Content-Transfer-Encoding: base64 RnJvbSA0MWMwMDg5NzU4NjBmN2I3YTlkNjA3ZDFiZjM3ODQ5ODVkODk3NGRkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5ZXRoaWUgPGtsaW1rbGltQHRpc2NhbGkuaXQ+CkRh dGU6IEZyaSwgMyBGZWIgMjAyMyAxNDozNjozOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggNS83 XSB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCB0ZXh0IGFsaWdubWVudAoKLS0tCiBkb2MvZmls dGVycy50ZXhpICAgICAgICAgIHwgIDUgKysrKysKIGxpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0 LmMgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDIgZmls ZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmlsdGVycy50ZXhpCmluZGV4IGNiMWEzZmY5 ODMuLjQ3ZTA0YTNhYzMgMTAwNjQ0Ci0tLSBhL2RvYy9maWx0ZXJzLnRleGkKKysrIGIvZG9j L2ZpbHRlcnMudGV4aQpAQCAtMTIwODAsNiArMTIwODAsMTEgQEAgVGhlIGRlZmF1bHQgdmFs dWUgb2YgQHZhcntib3hjb2xvcn0gaXMgIndoaXRlIi4KIEBpdGVtIGxpbmVfc3BhY2luZwog U2V0IHRoZSBsaW5lIHNwYWNpbmcgaW4gcGl4ZWxzLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBA dmFye2xpbmVfc3BhY2luZ30gaXMgMC4KIAorQGl0ZW0gdGV4dF9hbGlnbgorU2V0IHRoZSB2 ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgdGhlIHRleHQgd2l0aCByZXNw ZWN0IHRvIHRoZSBib3ggYm91bmRhcmllcy4KK1RoZSB2YWx1ZSBtdXN0IGNvbnRhaW4gZXhh Y3RseSB0d28gbGV0dGVycywgb25lIGZvciB0aGUgdmVydGljYWwgYWxpZ25tZW50IChUPXRv cCwKK009bWlkZGxlLCBCPWJvdHRvbSkgYW5kIG9uZSBmb3IgdGhlIGhvcml6b250YWwgYWxp Z25tZW50IChMPWxlZnQsIEM9Y2VudGVyLCBSPXJpZ2h0KS4KKwogQGl0ZW0gYm9yZGVydwog U2V0IHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIHRvIGJlIGRyYXduIGFyb3VuZCB0aGUgdGV4 dCB1c2luZyBAdmFye2JvcmRlcmNvbG9yfS4KIFRoZSBkZWZhdWx0IHZhbHVlIG9mIEB2YXJ7 Ym9yZGVyd30gaXMgMC4KZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMg Yi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCmluZGV4IDI1MzQ4YmE3ZGUuLjBiMDFhNzg1 MDkgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMKKysrIGIvbGliYXZm aWx0ZXIvdmZfZHJhd3RleHQuYwpAQCAtMjgsNiArMjgsOCBAQAogICogLSBHbHlwaHMgcG9z aXRpb24gaXMgbm93IGFjY3VyYXRlIHRvIDEvNCBwaXhlbCBpbiBib3RoIGRpcmVjdGlvbnMK ICAqIC0gVGhlIHNpemUgb2YgdGhlIGJhY2tncm91bmQgYm94IGNhbiBub3cgYmUgZm9yY2Vk IHdpdGggdGhlIGJveHcKICAqICAgYW5kIGJveGggcGFyYW1ldGVycworICogLSBUZXh0IGNh biBiZSBhbGlnbmVkIGhvcml6b250YWxseSAodG9wLCBtaWRkbGUsIGJvdHRvbSkgYW5kIHZl cnRpY2FsbHkKKyAqICAgKGxlZnQsIGNlbnRlciwgcmlnaHQpIHJlbGF0aXZlIHRvIHRoZSBi YWNrZ3JvdW5kIGJveAogICogLSBUaGUgZGVmYXVsdCBsaW5lIGhlaWdodCBpcyBub3cgdGhl IG9uZSBkZWZpbmVkIGluIHRoZSBmb250CiAgKiAtIFRoZSBib3hib3JkZXJ3IHBhcmFtZXRl ciBjYW4gbm93IGNvbnRhaW4gYSBkaWZmZXJlbnQgdmFsdWUgZm9yIGVhY2ggYm9yZGVyCiAg KiAgIChlLmcuIGJveGJvcmRlcnc9dG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KQpAQCAtMzE1LDYg KzMxNyw3IEBAIHR5cGVkZWYgc3RydWN0IERyYXdUZXh0Q29udGV4dCB7CiAKICAgICBpbnQg Ym94dzsgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgdGhlIHZhbHVlIG9mIHRoZSBib3h3 IHBhcmFtZXRlcgogICAgIGludCBib3hoOyAgICAgICAgICAgICAgICAgICAgICAgLy8vPCB0 aGUgdmFsdWUgb2YgdGhlIGJveGggcGFyYW1ldGVyCisgICAgdWludDhfdCAqdGV4dF9hbGln bjsgICAgICAgICAgICAvLy88IHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCB0ZXh0IGFs aWdubWVudAogCiAgICAgVGV4dExpbmUgKmxpbmVzOyAgICAgICAgICAgICAgICAvLy88IGNv bXB1dGVkIGluZm9ybWF0aW9uIGFib3V0IHRleHQgbGluZXMKICAgICBpbnQgbGluZV9jb3Vu dDsgICAgICAgICAgICAgICAgIC8vLzwgdGhlIG51bWJlciBvZiB0ZXh0IGxpbmVzCkBAIC0z MzksNiArMzQyLDcgQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIGRyYXd0ZXh0X29wdGlvbnNb XT0gewogICAgIHsiYm94Ym9yZGVydyIsICAgICAic2V0IGJveCBib3JkZXJzIHdpZHRoIiwg T0ZGU0VUKGJveGJvcmRlcncpLCAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9 IjAifSwgICAwLCAwLCBGTEFHU30sCiAgICAgeyJsaW5lX3NwYWNpbmciLCAgICJzZXQgbGlu ZSBzcGFjaW5nIGluIHBpeGVscyIsIE9GRlNFVChsaW5lX3NwYWNpbmcpLCAgQVZfT1BUX1RZ UEVfSU5ULCAgICB7Lmk2ND0tMX0sICAgIElOVF9NSU4sIElOVF9NQVgsIEZMQUdTfSwKICAg ICB7ImZvbnRzaXplIiwgICAgICAgInNldCBmb250IHNpemUiLCAgICAgICAgIE9GRlNFVChm b250c2l6ZV9leHByKSwgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAg MCwgMCwgRkxBR1N9LAorICAgIHsidGV4dF9hbGlnbiIsICAgICAic2V0IHRleHQgYWxpZ25t ZW50IiwgICAgT0ZGU0VUKHRleHRfYWxpZ24pLCAgICAgICAgIEFWX09QVF9UWVBFX1NUUklO Rywgey5zdHI9IlRMIn0sICAwLCAwLCBGTEFHU30sCiAgICAgeyJ4IiwgICAgICAgICAgICAg ICJzZXQgeCBleHByZXNzaW9uIiwgICAgICBPRkZTRVQoeF9leHByKSwgICAgICAgICAgICAg QVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj0iMCJ9LCAgIDAsIDAsIEZMQUdTfSwKICAgICB7 InkiLCAgICAgICAgICAgICAgInNldCB5IGV4cHJlc3Npb24iLCAgICAgIE9GRlNFVCh5X2V4 cHIpLCAgICAgICAgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPSIwIn0sICAgMCwg MCwgRkxBR1N9LAogICAgIHsiYm94dyIsICAgICAgICAgICAic2V0IGJveCB3aWR0aCIsICAg ICAgICAgT0ZGU0VUKGJveHcpLCAgICAgICAgICAgICAgIEFWX09QVF9UWVBFX0lOVCwgICAg ey5pNjQ9MH0sICAgICAwLCBJTlRfTUFYLCBGTEFHU30sCkBAIC03NzAsNiArNzc0LDE5IEBA IHN0YXRpYyBpbnQgc3RyaW5nX3RvX2FycmF5KGNvbnN0IGNoYXIqIHNvdXJjZSwgaW50KiBy ZXN1bHQsIGludCByZXN1bHRfc2l6ZSkKICAgICByZXR1cm4gY291bnRlcjsKIH0KIAorc3Rh dGljIGludCB2YWxpZGF0ZV90ZXh0X2FsaWduKGNoYXIqIHRleHRfYWxpZ24pCit7CisgICAg aW50IGVyciA9IDA7CisgICAgaWYgKHN0cmxlbih0ZXh0X2FsaWduKSAhPSAyCisgICAgICAg IHx8IHN0cmNocigiTENSVE1CIiwgdGV4dF9hbGlnblswXSkgPT0gTlVMTCB8fCBzdHJjaHIo IkxDUlRNQiIsIHRleHRfYWxpZ25bMV0pID09IE5VTEwKKyAgICAgICAgfHwgKHN0cmNocigi VE1CIiwgdGV4dF9hbGlnblswXSkgIT0gTlVMTCAmJiBzdHJjaHIoIkxDUiIsIHRleHRfYWxp Z25bMV0pID09IE5VTEwpCisgICAgICAgIHx8IChzdHJjaHIoIkxDUiIsIHRleHRfYWxpZ25b MF0pICE9IE5VTEwgJiYgc3RyY2hyKCJUTUIiLCB0ZXh0X2FsaWduWzFdKSA9PSBOVUxMKSkg eworICAgICAgICBlcnIgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAgfQorCisgICAgcmV0dXJu IGVycjsKK30KKwogc3RhdGljIGF2X2NvbGQgaW50IGluaXQoQVZGaWx0ZXJDb250ZXh0ICpj dHgpCiB7CiAgICAgaW50IGVycjsKQEAgLTgzNSw2ICs4NTIsMTQgQEAgc3RhdGljIGF2X2Nv bGQgaW50IGluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVJTlZBTCk7CiAgICAgfQogCisgICAgaWYgKChlcnIgPSB2YWxpZGF0ZV90ZXh0X2Fs aWduKHMtPnRleHRfYWxpZ24pKSkgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJS T1IsCisgICAgICAgICAgICAgICAiVGhlIHZhbHVlIHByb3ZpZGVkIGZvciBwYXJhbWV0ZXIg J3RleHRfYWxpZ24nIGlzIG5vdCB2YWxpZCxcbiIpOworICAgICAgICBhdl9sb2coY3R4LCBB Vl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAicGxlYXNlIHNwZWNpZnkgYSB0d28gY2hh cmFjdGVycyBzdHJpbmcgY29udGFpbmluZyBvbmx5IG9uZSBsZXR0ZXIgZm9yIGhvcml6b250 YWwgYWxpZ25tZW50ICgnTENSJykgYW5kIG9uZSBmb3IgdmVydGljYWwgYWxpZ25tZW50ICgn VE1CJylcbiIpOworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKwogI2lmIENPTkZJR19M SUJGUklCSURJCiAgICAgaWYgKHMtPnRleHRfc2hhcGluZykKICAgICAgICAgaWYgKChlcnIg PSBzaGFwZV90ZXh0KGN0eCkpIDwgMCkKQEAgLTE1MDcsMTMgKzE1MzIsMjcgQEAgc3RhdGlj IGludCBkcmF3X2dseXBocyhEcmF3VGV4dENvbnRleHQgKnMsIEFWRnJhbWUgKmZyYW1lLAog ICAgIEdseXBoIGR1bW15ID0geyAwIH0sICpnbHlwaDsKICAgICBGVF9CaXRtYXAgYml0bWFw OwogICAgIEZUX0JpdG1hcEdseXBoIGJfZ2x5cGg7CisgICAgdWludDhfdCBqX2NlbnRlciA9 IDAsIGpfcmlnaHQgPSAwLCBqX21pZGRsZSA9IDAsIGpfYm90dG9tID0gMDsKKyAgICBpbnQg bGluZV93LCBvZmZzZXRfeSA9IDA7CiAgICAgaW50IGNsaXBfeCA9IDAsIGNsaXBfeSA9IDA7 CiAKKyAgICBqX2NlbnRlciA9IHN0cnN0cihzLT50ZXh0X2FsaWduLCAiQyIpID4gMDsKKyAg ICBqX3JpZ2h0ID0gc3Ryc3RyKHMtPnRleHRfYWxpZ24sICJSIikgPiAwOworICAgIGpfbWlk ZGxlID0gc3Ryc3RyKHMtPnRleHRfYWxpZ24sICJNIikgPiAwOworICAgIGpfYm90dG9tID0g c3Ryc3RyKHMtPnRleHRfYWxpZ24sICJCIikgPiAwOworCisgICAgaWYgKGpfbWlkZGxlKSB7 CisgICAgICAgIG9mZnNldF95ID0gKHMtPmJveF9oZWlnaHQgLSBtZXRyaWNzLT5oZWlnaHQp IC8gMjsKKyAgICB9IGVsc2UgaWYgKGpfYm90dG9tKSB7CisgICAgICAgIG9mZnNldF95ID0g cy0+Ym94X2hlaWdodCAtIG1ldHJpY3MtPmhlaWdodDsKKyAgICB9CisKICAgICBjbGlwX3gg PSBGRk1JTihtZXRyaWNzLT5yZWN0X3ggKyBzLT5ib3hfd2lkdGggKyBzLT5iYl9yaWdodCwg ZnJhbWUtPndpZHRoKTsKICAgICBjbGlwX3kgPSBGRk1JTihtZXRyaWNzLT5yZWN0X3kgKyBz LT5ib3hfaGVpZ2h0ICsgcy0+YmJfYm90dG9tLCBmcmFtZS0+aGVpZ2h0KTsKIAogICAgIGZv ciAobCA9IDA7IGwgPCBzLT5saW5lX2NvdW50OyArK2wpIHsKICAgICAgICAgVGV4dExpbmUg KmxpbmUgPSAmcy0+bGluZXNbbF07CisgICAgICAgIGxpbmVfdyA9IFBPU19DRUlMKGxpbmUt PndpZHRoNjQsIDY0KTsKICAgICAgICAgZm9yIChnID0gMDsgZyA8IGxpbmUtPmhiX2RhdGEu Z2x5cGhfY291bnQ7ICsrZykgewogICAgICAgICAgICAgaW5mbyA9ICZsaW5lLT5nbHlwaHNb Z107CiAgICAgICAgICAgICBkdW1teS5mb250c2l6ZSA9IHMtPmZvbnRzaXplOwpAQCAtMTUy NywxMCArMTU2NiwxNiBAQCBzdGF0aWMgaW50IGRyYXdfZ2x5cGhzKERyYXdUZXh0Q29udGV4 dCAqcywgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICBiX2dseXBoID0gYm9yZGVydyA/ IGdseXBoLT5ib3JkZXJfYmdseXBoW2lkeF0gOiBnbHlwaC0+YmdseXBoW2lkeF07CiAgICAg ICAgICAgICBiaXRtYXAgPSBiX2dseXBoLT5iaXRtYXA7CiAgICAgICAgICAgICB4MSA9IHgg KyBpbmZvLT54ICsgYl9nbHlwaC0+bGVmdDsKLSAgICAgICAgICAgIHkxID0geSArIGluZm8t PnkgLSBiX2dseXBoLT50b3A7CisgICAgICAgICAgICB5MSA9IHkgKyBpbmZvLT55IC0gYl9n bHlwaC0+dG9wICsgb2Zmc2V0X3k7CiAgICAgICAgICAgICB3MSA9IGJpdG1hcC53aWR0aDsK ICAgICAgICAgICAgIGgxID0gYml0bWFwLnJvd3M7CiAKKyAgICAgICAgICAgIGlmIChqX2Nl bnRlcikgeworICAgICAgICAgICAgICAgIHgxICs9IChzLT5ib3hfd2lkdGggLSBsaW5lX3cp IC8gMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoal9yaWdodCkgeworICAgICAgICAgICAg ICAgIHgxICs9IHMtPmJveF93aWR0aCAtIGxpbmVfdzsKKyAgICAgICAgICAgIH0KKwogICAg ICAgICAgICAgLy8gT2Zmc2V0IG9mIHRoZSBnbHlwaCdzIGJpdG1hcCBpbiB0aGUgdmlzaWJs ZSByZWdpb24KICAgICAgICAgICAgIGR4ID0gZHkgPSAwOwogICAgICAgICAgICAgaWYgKHgx IDwgbWV0cmljcy0+cmVjdF94IC0gcy0+YmJfbGVmdCkgewotLSAKMi4zMC4yCgo= --------------fxWPAMIQjTMLVW2TGEpj3kux Content-Type: text/plain; charset=UTF-8; name="0006-new-y_align-option.patch" Content-Disposition: attachment; filename="0006-new-y_align-option.patch" Content-Transfer-Encoding: base64 RnJvbSBjYWY2M2U5OTdmNWQyMjc1ZDNkMWJmZTcwMTUxYTljMjk2MDk5MzlhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5ZXRoaWUgPGtsaW1rbGltQHRpc2NhbGkuaXQ+CkRh dGU6IEZyaSwgMyBGZWIgMjAyMyAxNDo0MDoyNSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggNi83 XSBuZXcgeV9hbGlnbiBvcHRpb24KCi0tLQogZG9jL2ZpbHRlcnMudGV4aSAgICAgICAgICB8 IDEwICsrKysrKysrKysKIGxpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMgfCA0MCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNDMg aW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvZmlsdGVy cy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQppbmRleCA0N2UwNGEzYWMzLi4xZmE2Y2NkZWE4 IDEwMDY0NAotLS0gYS9kb2MvZmlsdGVycy50ZXhpCisrKyBiL2RvYy9maWx0ZXJzLnRleGkK QEAgLTEyMDg1LDYgKzEyMDg1LDE2IEBAIFNldCB0aGUgdmVydGljYWwgYW5kIGhvcml6b250 YWwgYWxpZ25tZW50IG9mIHRoZSB0ZXh0IHdpdGggcmVzcGVjdCB0byB0aGUgYm94IGJvCiBU aGUgdmFsdWUgbXVzdCBjb250YWluIGV4YWN0bHkgdHdvIGxldHRlcnMsIG9uZSBmb3IgdGhl IHZlcnRpY2FsIGFsaWdubWVudCAoVD10b3AsCiBNPW1pZGRsZSwgQj1ib3R0b20pIGFuZCBv bmUgZm9yIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCAoTD1sZWZ0LCBDPWNlbnRlciwgUj1y aWdodCkuCiAKK0BpdGVtIHlfYWxpZ24KK1NwZWNpZnkgd2hhdCB0aGUgQHZhcnt5fSB2YWx1 ZSBpcyByZWZlcnJlZCB0by4gUG9zc2libGUgdmFsdWVzIGFyZToKK0BpdGVtaXplIEBidWxs ZXQKK0BpdGVtIEBjb2Rle3RleHR9IHRoZSB0b3Agb2YgdGhlIGhpZ2hlc3QgZ2x5cGggb2Yg dGhlIGZpcnN0IHRleHQgbGluZSBpcyBwbGFjZWQgYXQgQHZhcnt5fQorQGl0ZW0gQGNvZGV7 YmFzZWxpbmV9IHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3QgdGV4dCBsaW5lIGlzIHBsYWNl ZCBhdCBAdmFye3l9CitAaXRlbSBAY29kZXtmb250fSB0aGUgYmFzZWxpbmUgb2YgdGhlIGZp cnN0IHRleHQgbGluZSBpcyBwbGFjZWQgYXQgQHZhcnt5fSBwbHVzIHRoZQorICAgIGFzY2Vu dCAoaW4gcGl4ZWxzKSBkZWZpbmVkIGluIHRoZSBmb250IG1ldHJpY3MKK0BlbmQgaXRlbWl6 ZQorVGhlIGRlZmF1bHQgdmFsdWUgb2YgQHZhcnt5X2FsaWdufSBpcyAidGV4dCIgZm9yIGJh Y2t3YXJkIGNvbXBhdGliaWxpdHkuCisKIEBpdGVtIGJvcmRlcncKIFNldCB0aGUgd2lkdGgg b2YgdGhlIGJvcmRlciB0byBiZSBkcmF3biBhcm91bmQgdGhlIHRleHQgdXNpbmcgQHZhcnti b3JkZXJjb2xvcn0uCiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBAdmFye2JvcmRlcnd9IGlzIDAu CmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jIGIvbGliYXZmaWx0ZXIv dmZfZHJhd3RleHQuYwppbmRleCAwYjAxYTc4NTA5Li40Nzg0YWNiMjlmIDEwMDY0NAotLS0g YS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCisrKyBiL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0 ZXh0LmMKQEAgLTMxLDYgKzMxLDkgQEAKICAqIC0gVGV4dCBjYW4gYmUgYWxpZ25lZCBob3Jp em9udGFsbHkgKHRvcCwgbWlkZGxlLCBib3R0b20pIGFuZCB2ZXJ0aWNhbGx5CiAgKiAgIChs ZWZ0LCBjZW50ZXIsIHJpZ2h0KSByZWxhdGl2ZSB0byB0aGUgYmFja2dyb3VuZCBib3gKICAq IC0gVGhlIGRlZmF1bHQgbGluZSBoZWlnaHQgaXMgbm93IHRoZSBvbmUgZGVmaW5lZCBpbiB0 aGUgZm9udAorICogLSBUaGUgbmV3IHlfYWxpZ24gcGFyYW1ldGVyIHNwZWNpZmllcyBpZiB0 aGUgdXNlciBwcm92aWRlZCB5IHZhbHVlIGlzCisgKiAgIHJlZmVycmVkIHRvIHRoZSB0b3Ag b2YgdGhlIHRleHQsIHRvIHRoZSBmb250IGJhc2VsaW5lIG9yIHRvIHRoZQorICogICB0b3Ag b2YgdGhlIGZvbnQuCiAgKiAtIFRoZSBib3hib3JkZXJ3IHBhcmFtZXRlciBjYW4gbm93IGNv bnRhaW4gYSBkaWZmZXJlbnQgdmFsdWUgZm9yIGVhY2ggYm9yZGVyCiAgKiAgIChlLmcuIGJv eGJvcmRlcnc9dG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KQogICogLSBUaGUgZm9sbG93aW5nIG5l dyB2YXJpYWJsZXMgY2FuIGJlIHVzZWQgaW4gdGhlIHggYW5kIHkgZXhwcmVzc2lvbnM6CkBA IC0xNzksNiArMTgyLDEyIEBAIGVudW0gZXhwYW5zaW9uX21vZGUgewogICAgIEVYUF9TVFJG VElNRSwKIH07CiAKK2VudW0geV9hbGlnbm1lbnQgeworICAgIFlBX1RFWFQsCisgICAgWUFf QkFTRUxJTkUsCisgICAgWUFfRk9OVCwKK307CisKIHR5cGVkZWYgc3RydWN0IEhhcmZidXp6 RGF0YSB7CiAgICAgaGJfYnVmZmVyX3QqIGJ1ZjsKICAgICBoYl9mb250X3QqIGZvbnQ7CkBA IC0zMTgsNiArMzI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRHJhd1RleHRDb250ZXh0IHsKICAg ICBpbnQgYm94dzsgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgdGhlIHZhbHVlIG9mIHRo ZSBib3h3IHBhcmFtZXRlcgogICAgIGludCBib3hoOyAgICAgICAgICAgICAgICAgICAgICAg Ly8vPCB0aGUgdmFsdWUgb2YgdGhlIGJveGggcGFyYW1ldGVyCiAgICAgdWludDhfdCAqdGV4 dF9hbGlnbjsgICAgICAgICAgICAvLy88IHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCB0 ZXh0IGFsaWdubWVudAorICAgIGludCB5X2FsaWduOyAgICAgICAgICAgICAgICAgICAgLy8v PCB0aGUgdmFsdWUgb2YgdGhlIHlfYWxpZ24gcGFyYW1ldGVyCiAKICAgICBUZXh0TGluZSAq bGluZXM7ICAgICAgICAgICAgICAgIC8vLzwgY29tcHV0ZWQgaW5mb3JtYXRpb24gYWJvdXQg dGV4dCBsaW5lcwogICAgIGludCBsaW5lX2NvdW50OyAgICAgICAgICAgICAgICAgLy8vPCB0 aGUgbnVtYmVyIG9mIHRleHQgbGluZXMKQEAgLTM2MCw2ICszNzAsMTAgQEAgc3RhdGljIGNv bnN0IEFWT3B0aW9uIGRyYXd0ZXh0X29wdGlvbnNbXT0gewogICAgICAgICB7Im5vbmUiLCAg ICAgInNldCBubyBleHBhbnNpb24iLCAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKGV4cF9t b2RlKSwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0PUVYUF9OT05FfSwgICAgIDAsIDAsIEZM QUdTLCAiZXhwYW5zaW9uIn0sCiAgICAgICAgIHsibm9ybWFsIiwgICAic2V0IG5vcm1hbCBl eHBhbnNpb24iLCAgICAgICAgICAgICAgICBPRkZTRVQoZXhwX21vZGUpLCBBVl9PUFRfVFlQ RV9DT05TVCwgey5pNjQ9RVhQX05PUk1BTH0sICAgMCwgMCwgRkxBR1MsICJleHBhbnNpb24i fSwKICAgICAgICAgeyJzdHJmdGltZSIsICJzZXQgc3RyZnRpbWUgZXhwYW5zaW9uIChkZXBy ZWNhdGVkKSIsIE9GRlNFVChleHBfbW9kZSksIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1F WFBfU1RSRlRJTUV9LCAwLCAwLCBGTEFHUywgImV4cGFuc2lvbiJ9LAorICAgIHsieV9hbGln biIsICAgInNldCB0aGUgeSBhbGlnbm1lbnQiLCAgICBPRkZTRVQoeV9hbGlnbiksIEFWX09Q VF9UWVBFX0lOVCwgIHsuaTY0PVlBX1RFWFR9LCAwLCAyLCBGTEFHUywgInlfYWxpZ24ifSwK KyAgICAgICAgeyJ0ZXh0IiwgICAgICJ5IGlzIHJlZmVycmVkIHRvIHRoZSB0b3Agb2YgdGhl IGZpcnN0IHRleHQgbGluZSIsIE9GRlNFVCh5X2FsaWduKSwgQVZfT1BUX1RZUEVfQ09OU1Qs IHsuaTY0PVlBX1RFWFR9LCAgICAgMCwgMCwgRkxBR1MsICJ5X2FsaWduIn0sCisgICAgICAg IHsiYmFzZWxpbmUiLCAieSBpcyByZWZlcnJlZCB0byB0aGUgYmFzZWxpbmUgb2YgdGhlIGZp cnN0IGxpbmUiLCBPRkZTRVQoeV9hbGlnbiksIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1Z QV9CQVNFTElORX0sIDAsIDAsIEZMQUdTLCAieV9hbGlnbiJ9LAorICAgICAgICB7ImZvbnQi LCAgICAgInkgaXMgcmVmZXJyZWQgdG8gdGhlIGZvbnQgZGVmaW5lZCBsaW5lIG1ldHJpY3Mi LCAgT0ZGU0VUKHlfYWxpZ24pLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9WUFfRk9OVH0s ICAgICAwLCAwLCBGTEFHUywgInlfYWxpZ24ifSwKIAogICAgIHsidGltZWNvZGUiLCAgICAg ICAgInNldCBpbml0aWFsIHRpbWVjb2RlIiwgICAgICAgICAgICAgT0ZGU0VUKHRjX29wdF9z dHJpbmcpLCBBVl9PUFRfVFlQRV9TVFJJTkcsICAgey5zdHI9TlVMTH0sIDAsIDAsIEZMQUdT fSwKICAgICB7InRjMjRobWF4IiwgICAgICAgICJzZXQgMjQgaG91cnMgbWF4ICh0aW1lY29k ZSBvbmx5KSIsIE9GRlNFVCh0YzI0aG1heCksICAgICAgQVZfT1BUX1RZUEVfQk9PTCwgICAg IHsuaTY0PTB9LCAgICAwLCAxLCBGTEFHU30sCkBAIC0xNzQ5LDE0ICsxNzYzLDE2IEBAIGNv bnRpbnVlX29uX2ZhaWxlZDI6CiAgICAgfQogCiAgICAgaWYgKHJldCA9PSAwKSB7Ci0gICAg ICAgIGludCBoZWlnaHQ2NDsKICAgICAgICAgbWV0cmljcy0+bGluZV9oZWlnaHQ2NCA9IHMt PmZhY2UtPnNpemUtPm1ldHJpY3MuaGVpZ2h0OwogICAgICAgICAKICAgICAgICAgbWV0cmlj cy0+d2lkdGggPSBQT1NfQ0VJTCh3aWR0aDY0LCA2NCk7Ci0gICAgICAgIGhlaWdodDY0ID0g KG1ldHJpY3MtPmxpbmVfaGVpZ2h0NjQgKyBzLT5saW5lX3NwYWNpbmcgKiA2NCkgKgotICAg ICAgICAgICAgKEZGTUFYKDAsIGxpbmVfY291bnQgLSAxKSkgKyBmaXJzdF9tYXhfeTY0IC0g Y3VyX21pbl95NjQ7Ci0gICAgICAgIG1ldHJpY3MtPmhlaWdodCA9IFBPU19DRUlMKGhlaWdo dDY0LCA2NCk7Ci0KKyAgICAgICAgaWYgKHMtPnlfYWxpZ24gPT0gWUFfRk9OVCkgeworICAg ICAgICAgICAgbWV0cmljcy0+aGVpZ2h0ID0gUE9TX0NFSUwobWV0cmljcy0+bGluZV9oZWln aHQ2NCAqIGxpbmVfY291bnQsIDY0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg IGludCBoZWlnaHQ2NCA9IChtZXRyaWNzLT5saW5lX2hlaWdodDY0ICsgcy0+bGluZV9zcGFj aW5nICogNjQpICoKKyAgICAgICAgICAgICAgICAoRkZNQVgoMCwgbGluZV9jb3VudCAtIDEp KSArIGZpcnN0X21heF95NjQgLSBjdXJfbWluX3k2NDsKKyAgICAgICAgICAgIG1ldHJpY3Mt PmhlaWdodCA9IFBPU19DRUlMKGhlaWdodDY0LCA2NCk7CisgICAgICAgIH0KICAgICAgICAg bWV0cmljcy0+b2Zmc2V0X3RvcDY0ID0gZmlyc3RfbWF4X3k2NDsKICAgICAgICAgbWV0cmlj cy0+b2Zmc2V0X3JpZ2h0NjQgPSBsYXN0X21heF94NjQ7CiAgICAgICAgIG1ldHJpY3MtPm9m ZnNldF9ib3R0b202NCA9IGN1cl9taW5feTY0OwpAQCAtMTkyNyw3ICsxOTQzLDEzIEBAIHN0 YXRpYyBpbnQgZHJhd190ZXh0KEFWRmlsdGVyQ29udGV4dCAqY3R4LCBBVkZyYW1lICpmcmFt ZSkKICAgICB4ID0gMDsKICAgICB5ID0gMDsKICAgICB4NjQgPSAoaW50KShzLT54ICogNjQu KTsKLSAgICB5NjQgPSAoaW50KShzLT55ICogNjQuICsgbWV0cmljcy5vZmZzZXRfdG9wNjQp OworICAgIGlmIChzLT55X2FsaWduID09IFlBX0ZPTlQpIHsKKyAgICAgICAgeTY0ID0gKGlu dCkocy0+eSAqIDY0LiArIHMtPmZhY2UtPnNpemUtPm1ldHJpY3MuYXNjZW5kZXIpOworICAg IH0gZWxzZSBpZiAocy0+eV9hbGlnbiA9PSBZQV9CQVNFTElORSkgeworICAgICAgICB5NjQg PSAoaW50KShzLT55ICogNjQuKTsKKyAgICB9IGVsc2UgeworICAgICAgICB5NjQgPSAoaW50 KShzLT55ICogNjQuICsgbWV0cmljcy5vZmZzZXRfdG9wNjQpOworICAgIH0KIAogICAgIGZv ciAoaW50IGwgPSAwOyBsIDwgcy0+bGluZV9jb3VudDsgKytsKSB7CiAgICAgICAgIFRleHRM aW5lICpsaW5lID0gJnMtPmxpbmVzW2xdOwpAQCAtMTk3MSw3ICsxOTkzLDExIEBAIHN0YXRp YyBpbnQgZHJhd190ZXh0KEFWRmlsdGVyQ29udGV4dCAqY3R4LCBBVkZyYW1lICpmcmFtZSkK ICAgICB9CiAKICAgICBtZXRyaWNzLnJlY3RfeCA9IHMtPng7Ci0gICAgbWV0cmljcy5yZWN0 X3kgPSBzLT55OworICAgIGlmIChzLT55X2FsaWduID09IFlBX0JBU0VMSU5FKSB7CisgICAg ICAgIG1ldHJpY3MucmVjdF95ID0gcy0+eSAtIG1ldHJpY3Mub2Zmc2V0X3RvcDY0IC8gNjQ7 CisgICAgfSBlbHNlIHsKKyAgICAgICAgbWV0cmljcy5yZWN0X3kgPSBzLT55OworICAgIH0K ICAgICAKICAgICBzLT5ib3hfd2lkdGggPSBzLT5ib3h3ID09IDAgPyBtZXRyaWNzLndpZHRo IDogcy0+Ym94dzsKICAgICBzLT5ib3hfaGVpZ2h0ID0gcy0+Ym94aCA9PSAwID8gbWV0cmlj cy5oZWlnaHQgOiBzLT5ib3hoOwotLSAKMi4zMC4yCgo= --------------fxWPAMIQjTMLVW2TGEpj3kux Content-Type: text/plain; charset=UTF-8; name="0007-many-options-are-now-supported-as-commands.patch" Content-Disposition: attachment; filename="0007-many-options-are-now-supported-as-commands.patch" Content-Transfer-Encoding: base64 RnJvbSAxYjBlZDRhMmY5MjhmNWI2ZTcwY2FhZjg1ZGU2YWM2OGI2ZTYyM2M3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5ZXRoaWUgPGtsaW1rbGltQHRpc2NhbGkuaXQ+CkRh dGU6IEZyaSwgMyBGZWIgMjAyMyAxNDo0MzozOCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggNy83 XSBtYW55IG9wdGlvbnMgYXJlIG5vdyBzdXBwb3J0ZWQgYXMgY29tbWFuZHMKCi0tLQogZG9j L2ZpbHRlcnMudGV4aSAgICAgICAgICB8IDI1ICsrKysrKysrKystCiBsaWJhdmZpbHRlci92 Zl9kcmF3dGV4dC5jIHwgODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tCiAyIGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmlsdGVycy50ZXhpCmlu ZGV4IDFmYTZjY2RlYTguLjM5OTVlNjIxMDIgMTAwNjQ0Ci0tLSBhL2RvYy9maWx0ZXJzLnRl eGkKKysrIGIvZG9jL2ZpbHRlcnMudGV4aQpAQCAtMTI0NzcsMTEgKzEyNDc3LDM0IEBAIEZ1 bGwgZmlsdGVyIGludm9jYXRpb24gd2l0aCBzZW5kY21kIHdvdWxkIGxvb2sgbGlrZSB0aGlz OgogQGV4YW1wbGUKIHNlbmRjbWQ9Yz0nNTYuMCBkcmF3dGV4dCByZWluaXQgZm9udHNpemU9 NTZcOmZvbnRjb2xvcj1ncmVlblw6dGV4dD1IZWxsb1xcIFdvcmxkJwogQGVuZCBleGFtcGxl Ci1AZW5kIHRhYmxlCiAKIElmIHRoZSBlbnRpcmUgYXJndW1lbnQgY2FuJ3QgYmUgcGFyc2Vk IG9yIGFwcGxpZWQgYXMgdmFsaWQgdmFsdWVzIHRoZW4gdGhlIGZpbHRlciB3aWxsCiBjb250 aW51ZSB3aXRoIGl0cyBleGlzdGluZyBwYXJhbWV0ZXJzLgogCitAZW5kIHRhYmxlCisKK1Ro ZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWxzbyBzdXBwb3J0ZWQgYXMgQHJlZntjb21tYW5k c306CisKK0BpdGVtaXplIEBidWxsZXQKK0BpdGVtIHgKK0BpdGVtIHkKK0BpdGVtIGFscGhh CitAaXRlbSBmb250c2l6ZQorQGl0ZW0gZm9udGNvbG9yCitAaXRlbSBib3hjb2xvcgorQGl0 ZW0gYm9yZGVyY29sb3IKK0BpdGVtIHNoYWRvd2NvbG9yCitAaXRlbSBib3gKK0BpdGVtIGJv eHcKK0BpdGVtIGJveGgKK0BpdGVtIGJveGJvcmRlcncKK0BpdGVtIGxpbmVfc3BhY2luZwor QGl0ZW0gdGV4dF9hbGlnbgorQGl0ZW0gc2hhZG93eAorQGl0ZW0gc2hhZG93eQorQGl0ZW0g Ym9yZGVydworQGVuZCBpdGVtaXplCisKIEBzdWJzZWN0aW9uIEV4YW1wbGVzCiAKIEBpdGVt aXplCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jIGIvbGliYXZmaWx0 ZXIvdmZfZHJhd3RleHQuYwppbmRleCA0Nzg0YWNiMjlmLi4wYWM0MDQ2ZDc2IDEwMDY0NAot LS0gYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCisrKyBiL2xpYmF2ZmlsdGVyL3ZmX2Ry YXd0ZXh0LmMKQEAgLTM2LDYgKzM2LDcgQEAKICAqICAgdG9wIG9mIHRoZSBmb250LgogICog LSBUaGUgYm94Ym9yZGVydyBwYXJhbWV0ZXIgY2FuIG5vdyBjb250YWluIGEgZGlmZmVyZW50 IHZhbHVlIGZvciBlYWNoIGJvcmRlcgogICogICAoZS5nLiBib3hib3JkZXJ3PXRvcHxyaWdo dHxib3R0b218bGVmdCkKKyAqIC0gTWFueSBmaWx0ZXIgcGFyYW1ldGVycyBhcmUgbm93IHN1 cHBvcnRlZCBhcyBjb21tYW5kcy4KICAqIC0gVGhlIGZvbGxvd2luZyBuZXcgdmFyaWFibGVz IGNhbiBiZSB1c2VkIGluIHRoZSB4IGFuZCB5IGV4cHJlc3Npb25zOgogICogICBmb250X2Es IGZvbnRfZCwgdG9wX2EsIGJvdHRvbV9kCiAgKi8KQEAgLTMzOCwyOSArMzM5LDMwIEBAIHR5 cGVkZWYgc3RydWN0IERyYXdUZXh0Q29udGV4dCB7CiAKICNkZWZpbmUgT0ZGU0VUKHgpIG9m ZnNldG9mKERyYXdUZXh0Q29udGV4dCwgeCkKICNkZWZpbmUgRkxBR1MgQVZfT1BUX0ZMQUdf RklMVEVSSU5HX1BBUkFNfEFWX09QVF9GTEFHX1ZJREVPX1BBUkFNCisjZGVmaW5lIFRGTEFH UyBBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFSQU18QVZfT1BUX0ZMQUdfVklERU9fUEFSQU18 QVZfT1BUX0ZMQUdfUlVOVElNRV9QQVJBTQogCiBzdGF0aWMgY29uc3QgQVZPcHRpb24gZHJh d3RleHRfb3B0aW9uc1tdPSB7CiAgICAgeyJmb250ZmlsZSIsICAgICAgICJzZXQgZm9udCBm aWxlIiwgICAgICAgICBPRkZTRVQoZm9udGZpbGUpLCAgICAgICAgICAgQVZfT1BUX1RZUEVf U1RSSU5HLCB7LnN0cj1OVUxMfSwgIDAsIDAsIEZMQUdTfSwKLSAgICB7InRleHQiLCAgICAg ICAgICAgInNldCB0ZXh0IiwgICAgICAgICAgICAgIE9GRlNFVCh0ZXh0KSwgICAgICAgICAg ICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAgMCwgMCwgRkxBR1N9LAor ICAgIHsidGV4dCIsICAgICAgICAgICAic2V0IHRleHQiLCAgICAgICAgICAgICAgT0ZGU0VU KHRleHQpLCAgICAgICAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0s ICAwLCAwLCBURkxBR1N9LAogICAgIHsidGV4dGZpbGUiLCAgICAgICAic2V0IHRleHQgZmls ZSIsICAgICAgICAgT0ZGU0VUKHRleHRmaWxlKSwgICAgICAgICAgIEFWX09QVF9UWVBFX1NU UklORywgey5zdHI9TlVMTH0sICAwLCAwLCBGTEFHU30sCi0gICAgeyJmb250Y29sb3IiLCAg ICAgICJzZXQgZm9yZWdyb3VuZCBjb2xvciIsICBPRkZTRVQoZm9udGNvbG9yLnJnYmEpLCAg ICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7LnN0cj0iYmxhY2sifSwgMCwgMCwgRkxBR1N9LAor ICAgIHsiZm9udGNvbG9yIiwgICAgICAic2V0IGZvcmVncm91bmQgY29sb3IiLCAgT0ZGU0VU KGZvbnRjb2xvci5yZ2JhKSwgICAgIEFWX09QVF9UWVBFX0NPTE9SLCAgey5zdHI9ImJsYWNr In0sIDAsIDAsIFRGTEFHU30sCiAgICAgeyJmb250Y29sb3JfZXhwciIsICJzZXQgZm9yZWdy b3VuZCBjb2xvciBleHByZXNzaW9uIiwgT0ZGU0VUKGZvbnRjb2xvcl9leHByKSwgQVZfT1BU X1RZUEVfU1RSSU5HLCB7LnN0cj0iIn0sIDAsIDAsIEZMQUdTfSwKLSAgICB7ImJveGNvbG9y IiwgICAgICAgInNldCBib3ggY29sb3IiLCAgICAgICAgIE9GRlNFVChib3hjb2xvci5yZ2Jh KSwgICAgICBBVl9PUFRfVFlQRV9DT0xPUiwgIHsuc3RyPSJ3aGl0ZSJ9LCAwLCAwLCBGTEFH U30sCi0gICAgeyJib3JkZXJjb2xvciIsICAgICJzZXQgYm9yZGVyIGNvbG9yIiwgICAgICBP RkZTRVQoYm9yZGVyY29sb3IucmdiYSksICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7LnN0cj0i YmxhY2sifSwgMCwgMCwgRkxBR1N9LAotICAgIHsic2hhZG93Y29sb3IiLCAgICAic2V0IHNo YWRvdyBjb2xvciIsICAgICAgT0ZGU0VUKHNoYWRvd2NvbG9yLnJnYmEpLCAgIEFWX09QVF9U WVBFX0NPTE9SLCAgey5zdHI9ImJsYWNrIn0sIDAsIDAsIEZMQUdTfSwKLSAgICB7ImJveCIs ICAgICAgICAgICAgInNldCBib3giLCAgICAgICAgICAgICAgIE9GRlNFVChkcmF3X2JveCks ICAgICAgICAgICBBVl9PUFRfVFlQRV9CT09MLCAgIHsuaTY0PTB9LCAgICAgMCwgMSwgRkxB R1N9LAotICAgIHsiYm94Ym9yZGVydyIsICAgICAic2V0IGJveCBib3JkZXJzIHdpZHRoIiwg T0ZGU0VUKGJveGJvcmRlcncpLCAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9 IjAifSwgICAwLCAwLCBGTEFHU30sCi0gICAgeyJsaW5lX3NwYWNpbmciLCAgICJzZXQgbGlu ZSBzcGFjaW5nIGluIHBpeGVscyIsIE9GRlNFVChsaW5lX3NwYWNpbmcpLCAgQVZfT1BUX1RZ UEVfSU5ULCAgICB7Lmk2ND0tMX0sICAgIElOVF9NSU4sIElOVF9NQVgsIEZMQUdTfSwKLSAg ICB7ImZvbnRzaXplIiwgICAgICAgInNldCBmb250IHNpemUiLCAgICAgICAgIE9GRlNFVChm b250c2l6ZV9leHByKSwgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAg MCwgMCwgRkxBR1N9LAotICAgIHsidGV4dF9hbGlnbiIsICAgICAic2V0IHRleHQgYWxpZ25t ZW50IiwgICAgT0ZGU0VUKHRleHRfYWxpZ24pLCAgICAgICAgIEFWX09QVF9UWVBFX1NUUklO Rywgey5zdHI9IlRMIn0sICAwLCAwLCBGTEFHU30sCi0gICAgeyJ4IiwgICAgICAgICAgICAg ICJzZXQgeCBleHByZXNzaW9uIiwgICAgICBPRkZTRVQoeF9leHByKSwgICAgICAgICAgICAg QVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj0iMCJ9LCAgIDAsIDAsIEZMQUdTfSwKLSAgICB7 InkiLCAgICAgICAgICAgICAgInNldCB5IGV4cHJlc3Npb24iLCAgICAgIE9GRlNFVCh5X2V4 cHIpLCAgICAgICAgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPSIwIn0sICAgMCwg MCwgRkxBR1N9LAotICAgIHsiYm94dyIsICAgICAgICAgICAic2V0IGJveCB3aWR0aCIsICAg ICAgICAgT0ZGU0VUKGJveHcpLCAgICAgICAgICAgICAgIEFWX09QVF9UWVBFX0lOVCwgICAg ey5pNjQ9MH0sICAgICAwLCBJTlRfTUFYLCBGTEFHU30sCi0gICAgeyJib3hoIiwgICAgICAg ICAgICJzZXQgYm94IGhlaWdodCIsICAgICAgICBPRkZTRVQoYm94aCksICAgICAgICAgICAg ICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIDAsIElOVF9NQVgsIEZMQUdT fSwKLSAgICB7InNoYWRvd3giLCAgICAgICAgInNldCBzaGFkb3cgeCBvZmZzZXQiLCAgIE9G RlNFVChzaGFkb3d4KSwgICAgICAgICAgICBBVl9PUFRfVFlQRV9JTlQsICAgIHsuaTY0PTB9 LCAgICAgSU5UX01JTiwgSU5UX01BWCwgRkxBR1N9LAotICAgIHsic2hhZG93eSIsICAgICAg ICAic2V0IHNoYWRvdyB5IG9mZnNldCIsICAgT0ZGU0VUKHNoYWRvd3kpLCAgICAgICAgICAg IEFWX09QVF9UWVBFX0lOVCwgICAgey5pNjQ9MH0sICAgICBJTlRfTUlOLCBJTlRfTUFYLCBG TEFHU30sCi0gICAgeyJib3JkZXJ3IiwgICAgICAgICJzZXQgYm9yZGVyIHdpZHRoIiwgICAg ICBPRkZTRVQoYm9yZGVydyksICAgICAgICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2 ND0wfSwgICAgIElOVF9NSU4sIElOVF9NQVgsIEZMQUdTfSwKLSAgICB7InRhYnNpemUiLCAg ICAgICAgInNldCB0YWIgc2l6ZSIsICAgICAgICAgIE9GRlNFVCh0YWJzaXplKSwgICAgICAg ICAgICBBVl9PUFRfVFlQRV9JTlQsICAgIHsuaTY0PTR9LCAgICAgMCwgSU5UX01BWCwgRkxB R1N9LAorICAgIHsiYm94Y29sb3IiLCAgICAgICAic2V0IGJveCBjb2xvciIsICAgICAgICAg T0ZGU0VUKGJveGNvbG9yLnJnYmEpLCAgICAgIEFWX09QVF9UWVBFX0NPTE9SLCAgey5zdHI9 IndoaXRlIn0sIDAsIDAsIFRGTEFHU30sCisgICAgeyJib3JkZXJjb2xvciIsICAgICJzZXQg Ym9yZGVyIGNvbG9yIiwgICAgICBPRkZTRVQoYm9yZGVyY29sb3IucmdiYSksICAgQVZfT1BU X1RZUEVfQ09MT1IsICB7LnN0cj0iYmxhY2sifSwgMCwgMCwgVEZMQUdTfSwKKyAgICB7InNo YWRvd2NvbG9yIiwgICAgInNldCBzaGFkb3cgY29sb3IiLCAgICAgIE9GRlNFVChzaGFkb3dj b2xvci5yZ2JhKSwgICBBVl9PUFRfVFlQRV9DT0xPUiwgIHsuc3RyPSJibGFjayJ9LCAwLCAw LCBURkxBR1N9LAorICAgIHsiYm94IiwgICAgICAgICAgICAic2V0IGJveCIsICAgICAgICAg ICAgICAgT0ZGU0VUKGRyYXdfYm94KSwgICAgICAgICAgIEFWX09QVF9UWVBFX0JPT0wsICAg ey5pNjQ9MH0sICAgICAwLCAxLCBURkxBR1N9LAorICAgIHsiYm94Ym9yZGVydyIsICAgICAi c2V0IGJveCBib3JkZXJzIHdpZHRoIiwgT0ZGU0VUKGJveGJvcmRlcncpLCAgICAgICAgIEFW X09QVF9UWVBFX1NUUklORywgey5zdHI9IjAifSwgICAwLCAwLCBURkxBR1N9LAorICAgIHsi bGluZV9zcGFjaW5nIiwgICAic2V0IGxpbmUgc3BhY2luZyBpbiBwaXhlbHMiLCBPRkZTRVQo bGluZV9zcGFjaW5nKSwgIEFWX09QVF9UWVBFX0lOVCwgICAgey5pNjQ9LTF9LCAgICBJTlRf TUlOLCBJTlRfTUFYLCBURkxBR1N9LAorICAgIHsiZm9udHNpemUiLCAgICAgICAic2V0IGZv bnQgc2l6ZSIsICAgICAgICAgT0ZGU0VUKGZvbnRzaXplX2V4cHIpLCAgICAgIEFWX09QVF9U WVBFX1NUUklORywgey5zdHI9TlVMTH0sICAwLCAwLCBURkxBR1N9LAorICAgIHsidGV4dF9h bGlnbiIsICAgICAic2V0IHRleHQgYWxpZ25tZW50IiwgICAgT0ZGU0VUKHRleHRfYWxpZ24p LCAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9IlRMIn0sICAwLCAwLCBURkxB R1N9LAorICAgIHsieCIsICAgICAgICAgICAgICAic2V0IHggZXhwcmVzc2lvbiIsICAgICAg T0ZGU0VUKHhfZXhwciksICAgICAgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9 IjAifSwgICAwLCAwLCBURkxBR1N9LAorICAgIHsieSIsICAgICAgICAgICAgICAic2V0IHkg ZXhwcmVzc2lvbiIsICAgICAgT0ZGU0VUKHlfZXhwciksICAgICAgICAgICAgIEFWX09QVF9U WVBFX1NUUklORywgey5zdHI9IjAifSwgICAwLCAwLCBURkxBR1N9LAorICAgIHsiYm94dyIs ICAgICAgICAgICAic2V0IGJveCB3aWR0aCIsICAgICAgICAgT0ZGU0VUKGJveHcpLCAgICAg ICAgICAgICAgIEFWX09QVF9UWVBFX0lOVCwgICAgey5pNjQ9MH0sICAgICAwLCBJTlRfTUFY LCBURkxBR1N9LAorICAgIHsiYm94aCIsICAgICAgICAgICAic2V0IGJveCBoZWlnaHQiLCAg ICAgICAgT0ZGU0VUKGJveGgpLCAgICAgICAgICAgICAgIEFWX09QVF9UWVBFX0lOVCwgICAg ey5pNjQ9MH0sICAgICAwLCBJTlRfTUFYLCBURkxBR1N9LAorICAgIHsic2hhZG93eCIsICAg ICAgICAic2V0IHNoYWRvdyB4IG9mZnNldCIsICAgT0ZGU0VUKHNoYWRvd3gpLCAgICAgICAg ICAgIEFWX09QVF9UWVBFX0lOVCwgICAgey5pNjQ9MH0sICAgICBJTlRfTUlOLCBJTlRfTUFY LCBURkxBR1N9LAorICAgIHsic2hhZG93eSIsICAgICAgICAic2V0IHNoYWRvdyB5IG9mZnNl dCIsICAgT0ZGU0VUKHNoYWRvd3kpLCAgICAgICAgICAgIEFWX09QVF9UWVBFX0lOVCwgICAg ey5pNjQ9MH0sICAgICBJTlRfTUlOLCBJTlRfTUFYLCBURkxBR1N9LAorICAgIHsiYm9yZGVy dyIsICAgICAgICAic2V0IGJvcmRlciB3aWR0aCIsICAgICAgT0ZGU0VUKGJvcmRlcncpLCAg ICAgICAgICAgIEFWX09QVF9UWVBFX0lOVCwgICAgey5pNjQ9MH0sICAgICBJTlRfTUlOLCBJ TlRfTUFYLCBURkxBR1N9LAorICAgIHsidGFic2l6ZSIsICAgICAgICAic2V0IHRhYiBzaXpl IiwgICAgICAgICAgT0ZGU0VUKHRhYnNpemUpLCAgICAgICAgICAgIEFWX09QVF9UWVBFX0lO VCwgICAgey5pNjQ9NH0sICAgICAwLCBJTlRfTUFYLCBURkxBR1N9LAogICAgIHsiYmFzZXRp bWUiLCAgICAgICAic2V0IGJhc2UgdGltZSIsICAgICAgICAgT0ZGU0VUKGJhc2V0aW1lKSwg ICAgICAgICAgIEFWX09QVF9UWVBFX0lOVDY0LCAgey5pNjQ9QVZfTk9QVFNfVkFMVUV9LCBJ TlQ2NF9NSU4sIElOVDY0X01BWCwgRkxBR1N9LAogI2lmIENPTkZJR19MSUJGT05UQ09ORklH CiAgICAgeyAiZm9udCIsICAgICAgICAiRm9udCBuYW1lIiwgICAgICAgICAgICBPRkZTRVQo Zm9udCksICAgICAgICAgICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7IC5zdHIgPSAiU2Fu cyIgfSwgICAgICAgICAgIC5mbGFncyA9IEZMQUdTIH0sCkBAIC0zNzAsNyArMzcyLDcgQEAg c3RhdGljIGNvbnN0IEFWT3B0aW9uIGRyYXd0ZXh0X29wdGlvbnNbXT0gewogICAgICAgICB7 Im5vbmUiLCAgICAgInNldCBubyBleHBhbnNpb24iLCAgICAgICAgICAgICAgICAgICAgT0ZG U0VUKGV4cF9tb2RlKSwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0PUVYUF9OT05FfSwgICAg IDAsIDAsIEZMQUdTLCAiZXhwYW5zaW9uIn0sCiAgICAgICAgIHsibm9ybWFsIiwgICAic2V0 IG5vcm1hbCBleHBhbnNpb24iLCAgICAgICAgICAgICAgICBPRkZTRVQoZXhwX21vZGUpLCBB Vl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9RVhQX05PUk1BTH0sICAgMCwgMCwgRkxBR1MsICJl eHBhbnNpb24ifSwKICAgICAgICAgeyJzdHJmdGltZSIsICJzZXQgc3RyZnRpbWUgZXhwYW5z aW9uIChkZXByZWNhdGVkKSIsIE9GRlNFVChleHBfbW9kZSksIEFWX09QVF9UWVBFX0NPTlNU LCB7Lmk2ND1FWFBfU1RSRlRJTUV9LCAwLCAwLCBGTEFHUywgImV4cGFuc2lvbiJ9LAotICAg IHsieV9hbGlnbiIsICAgInNldCB0aGUgeSBhbGlnbm1lbnQiLCAgICBPRkZTRVQoeV9hbGln biksIEFWX09QVF9UWVBFX0lOVCwgIHsuaTY0PVlBX1RFWFR9LCAwLCAyLCBGTEFHUywgInlf YWxpZ24ifSwKKyAgICB7InlfYWxpZ24iLCAgICJzZXQgdGhlIHkgYWxpZ25tZW50IiwgICAg T0ZGU0VUKHlfYWxpZ24pLCBBVl9PUFRfVFlQRV9JTlQsICB7Lmk2ND1ZQV9URVhUfSwgMCwg MiwgVEZMQUdTLCAieV9hbGlnbiJ9LAogICAgICAgICB7InRleHQiLCAgICAgInkgaXMgcmVm ZXJyZWQgdG8gdGhlIHRvcCBvZiB0aGUgZmlyc3QgdGV4dCBsaW5lIiwgT0ZGU0VUKHlfYWxp Z24pLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQ9WUFfVEVYVH0sICAgICAwLCAwLCBGTEFH UywgInlfYWxpZ24ifSwKICAgICAgICAgeyJiYXNlbGluZSIsICJ5IGlzIHJlZmVycmVkIHRv IHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3QgbGluZSIsIE9GRlNFVCh5X2FsaWduKSwgQVZf T1BUX1RZUEVfQ09OU1QsIHsuaTY0PVlBX0JBU0VMSU5FfSwgMCwgMCwgRkxBR1MsICJ5X2Fs aWduIn0sCiAgICAgICAgIHsiZm9udCIsICAgICAieSBpcyByZWZlcnJlZCB0byB0aGUgZm9u dCBkZWZpbmVkIGxpbmUgbWV0cmljcyIsICBPRkZTRVQoeV9hbGlnbiksIEFWX09QVF9UWVBF X0NPTlNULCB7Lmk2ND1ZQV9GT05UfSwgICAgIDAsIDAsIEZMQUdTLCAieV9hbGlnbiJ9LApA QCAtMzgxLDcgKzM4Myw3IEBAIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBkcmF3dGV4dF9vcHRp b25zW109IHsKICAgICB7InIiLCAgICAgICAgICAgICAgICJzZXQgcmF0ZSAodGltZWNvZGUg b25seSkiLCAgICAgICAgIE9GRlNFVCh0Y19yYXRlKSwgICAgICAgQVZfT1BUX1RZUEVfUkFU SU9OQUwsIHsuZGJsPTB9LCAgICAwLCBJTlRfTUFYLCBGTEFHU30sCiAgICAgeyJyYXRlIiwg ICAgICAgICAgICAic2V0IHJhdGUgKHRpbWVjb2RlIG9ubHkpIiwgICAgICAgICBPRkZTRVQo dGNfcmF0ZSksICAgICAgIEFWX09QVF9UWVBFX1JBVElPTkFMLCB7LmRibD0wfSwgICAgMCwg SU5UX01BWCwgRkxBR1N9LAogICAgIHsicmVsb2FkIiwgICAgICAgICAgInJlbG9hZCB0ZXh0 IGZpbGUgYXQgc3BlY2lmaWVkIGZyYW1lIGludGVydmFsIiwgT0ZGU0VUKHJlbG9hZCksIEFW X09QVF9UWVBFX0lOVCwgey5pNjQ9MH0sICAgIDAsIElOVF9NQVgsIEZMQUdTfSwKLSAgICB7 ImFscGhhIiwgICAgICAgICAgICJhcHBseSBhbHBoYSB3aGlsZSByZW5kZXJpbmciLCAgICAg IE9GRlNFVChhX2V4cHIpLCAgICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCAgIHsuc3RyID0g IjEifSwgLmZsYWdzID0gRkxBR1N9LAorICAgIHsiYWxwaGEiLCAgICAgICAgICAgImFwcGx5 IGFscGhhIHdoaWxlIHJlbmRlcmluZyIsICAgICAgT0ZGU0VUKGFfZXhwciksICAgICAgICBB Vl9PUFRfVFlQRV9TVFJJTkcsICAgey5zdHIgPSAiMSJ9LCAuZmxhZ3MgPSBURkxBR1N9LAog ICAgIHsiZml4X2JvdW5kcyIsICAgICAgImNoZWNrIGFuZCBmaXggdGV4dCBjb29yZHMgdG8g YXZvaWQgY2xpcHBpbmciLCBPRkZTRVQoZml4X2JvdW5kcyksIEFWX09QVF9UWVBFX0JPT0ws IHsuaTY0PTB9LCAwLCAxLCBGTEFHU30sCiAgICAgeyJzdGFydF9udW1iZXIiLCAgICAic3Rh cnQgZnJhbWUgbnVtYmVyIGZvciBuL2ZyYW1lX251bSB2YXJpYWJsZSIsIE9GRlNFVChzdGFy dF9udW1iZXIpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PTB9LCAwLCBJTlRfTUFYLCBGTEFH U30sCiAgICAgeyJ0ZXh0X3NvdXJjZSIsICAgICAidGhlIHNvdXJjZSBvZiB0ZXh0IiwgT0ZG U0VUKHRleHRfc291cmNlX3N0cmluZyksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVM TH0sIDAsIDEsIEZMQUdTIH0sCkBAIC04OTIsMTEgKzg5NCwxMyBAQCBzdGF0aWMgYXZfY29s ZCBpbnQgaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKICAgICBpZiAoKGVyciA9IHVwZGF0 ZV9mb250c2l6ZShjdHgpKSA8IDApCiAgICAgICAgIHJldHVybiBlcnI7CiAKKyAgICAvLyBB bHdheXMgaW5pdCB0aGUgc3Ryb2tlciwgbWF5IGJlIG5lZWRlZCBpZiBib3JkZXJ3IGlzIHNl dCB2aWEgY29tbWFuZAorICAgIGlmIChGVF9TdHJva2VyX05ldyhzLT5saWJyYXJ5LCAmcy0+ c3Ryb2tlcikpIHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiQ291bHQg bm90IGluaXQgRlQgc3Ryb2tlclxuIik7CisgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVS TkFMOworICAgIH0KKwogICAgIGlmIChzLT5ib3JkZXJ3KSB7Ci0gICAgICAgIGlmIChGVF9T dHJva2VyX05ldyhzLT5saWJyYXJ5LCAmcy0+c3Ryb2tlcikpIHsKLSAgICAgICAgICAgIGF2 X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkNvdWx0IG5vdCBpbml0IEZUIHN0cm9rZXJcbiIp OwotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Ci0gICAgICAgIH0KICAg ICAgICAgRlRfU3Ryb2tlcl9TZXQocy0+c3Ryb2tlciwgcy0+Ym9yZGVydyA8PCA2LCBGVF9T VFJPS0VSX0xJTkVDQVBfUk9VTkQsCiAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NUUk9L RVJfTElORUpPSU5fUk9VTkQsIDApOwogICAgIH0KQEAgLTkxOSw2ICs5MjMsMjMgQEAgc3Rh dGljIGludCBxdWVyeV9mb3JtYXRzKEFWRmlsdGVyQ29udGV4dCAqY3R4KQogICAgIHJldHVy biBmZl9zZXRfY29tbW9uX2Zvcm1hdHMoY3R4LCBmZl9kcmF3X3N1cHBvcnRlZF9waXhlbF9m b3JtYXRzKDApKTsKIH0KIAorc3RhdGljIGludCBnbHlwaF9lbnVfYm9yZGVyX2ZyZWUodm9p ZCAqb3BhcXVlLCB2b2lkICplbGVtKQoreworICAgIEdseXBoICpnbHlwaCA9IGVsZW07CisK KyAgICBpZiAoZ2x5cGgtPmJvcmRlcl9nbHlwaCAhPSBOVUxMKSB7CisgICAgICAgIGZvciAo aW50IHQgPSAwOyB0IDwgMTY7ICsrdCkgeworICAgICAgICAgICAgaWYgKGdseXBoLT5ib3Jk ZXJfYmdseXBoW3RdICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBGVF9Eb25lX0dseXBo KChGVF9HbHlwaClnbHlwaC0+Ym9yZGVyX2JnbHlwaFt0XSk7CisgICAgICAgICAgICAgICAg Z2x5cGgtPmJvcmRlcl9iZ2x5cGhbdF0gPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAg ICB9CisgICAgICAgIEZUX0RvbmVfR2x5cGgoZ2x5cGgtPmJvcmRlcl9nbHlwaCk7CisgICAg ICAgIGdseXBoLT5ib3JkZXJfZ2x5cGggPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gMDsK K30KKwogc3RhdGljIGludCBnbHlwaF9lbnVfZnJlZSh2b2lkICpvcGFxdWUsIHZvaWQgKmVs ZW0pCiB7CiAgICAgR2x5cGggKmdseXBoID0gZWxlbTsKQEAgLTEwNDEsNiArMTA2MiwyNiBA QCBzdGF0aWMgaW50IGNvbW1hbmQoQVZGaWx0ZXJDb250ZXh0ICpjdHgsIGNvbnN0IGNoYXIg KmNtZCwgY29uc3QgY2hhciAqYXJnLCBjaGFyCiAKICAgICAgICAgY3R4LT5wcml2ID0gbmV3 OwogICAgICAgICByZXR1cm4gY29uZmlnX2lucHV0KGN0eC0+aW5wdXRzWzBdKTsKKyAgICB9 IGVsc2UgeworICAgICAgICBpbnQgb2xkX2JvcmRlcncgPSBvbGQtPmJvcmRlcnc7CisgICAg ICAgIGlmICgocmV0ID0gZmZfZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChjdHgsIGNtZCwgYXJn LCByZXMsIHJlc19sZW4sIGZsYWdzKSkgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmV0 OworICAgICAgICB9CisgICAgICAgIGlmIChvbGQtPmJvcmRlcncgIT0gb2xkX2JvcmRlcncp IHsKKyAgICAgICAgICAgIEZUX1N0cm9rZXJfU2V0KG9sZC0+c3Ryb2tlciwgb2xkLT5ib3Jk ZXJ3IDw8IDYsIEZUX1NUUk9LRVJfTElORUNBUF9ST1VORCwKKyAgICAgICAgICAgICAgICAg ICAgICAgIEZUX1NUUk9LRVJfTElORUpPSU5fUk9VTkQsIDApOworICAgICAgICAgICAgLy8g RGlzcG9zZSB0aGUgb2xkIGJvcmRlciBnbHlwaHMKKyAgICAgICAgICAgIGF2X3RyZWVfZW51 bWVyYXRlKG9sZC0+Z2x5cGhzLCBOVUxMLCBOVUxMLCBnbHlwaF9lbnVfYm9yZGVyX2ZyZWUp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmIChzdHJj bXAoY21kLCAidGV4dF9hbGlnbiIpID09IDApIHsKKyAgICAgICAgICAgIGlmICh2YWxpZGF0 ZV90ZXh0X2FsaWduKG9sZC0+dGV4dF9hbGlnbikgIT0gMCkgeworICAgICAgICAgICAgICAg IGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgIkludmFs aWQgY29tbWFuZCB2YWx1ZSAnJXMnIGZvciAndGV4dF9hbGlnbidcbiIsIG9sZC0+dGV4dF9h bGlnbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGNtZCwg ImZvbnRzaXplIikgPT0gMCkgeworICAgICAgICAgICAgYXZfZXhwcl9mcmVlKG9sZC0+Zm9u dHNpemVfcGV4cHIpOworICAgICAgICAgICAgb2xkLT5mb250c2l6ZV9wZXhwciA9IE5VTEw7 CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbmZpZ19pbnB1dChjdHgtPmlucHV0c1sw XSk7CiAgICAgfQogCiBmYWlsOgotLSAKMi4zMC4yCgo= --------------fxWPAMIQjTMLVW2TGEpj3kux 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". --------------fxWPAMIQjTMLVW2TGEpj3kux--