<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>198238</bug_id>
          
          <creation_ts>2007-11-06 03:15 0000</creation_ts>
          <short_desc>app-text/tetex &lt; 3.0_p1-r6 Multiple issues in dviljk and dvips (CVE-2007-{5935,5936,5937})</short_desc>
          <delta_ts>2008-03-06 09:47:02 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Security</product>
          <component>Vulnerabilities</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <status_whiteboard>B2 [glsa]</status_whiteboard>
          
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>196735</blocked>
          
          <everconfirmed>1</everconfirmed>
          <reporter>rbu@gentoo.org</reporter>
          <assigned_to>security@gentoo.org</assigned_to>
          <cc>mailingdotlist@gmail.com</cc>
    
    <cc>mips@gentoo.org</cc>
    
    <cc>tex@gentoo.org</cc>

      

      
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-06 03:15:46 0000</bug_when>
            <thetext>+++ This bug was initially created as a clone of Bug #198229 +++

dviljk as shipped in app-text/tetex-3.0_p1-r4 is vulnerable to multiple buffer overflows and insecure temporary file creation. See attached patch for details.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-06 03:17:52 0000</bug_when>
            <thetext>Created an attachment (id=135310)
tetex-src-3.0-dviljk-security-fixes.patch

Please note that the attached patch contains changes to configure.in, but does not include a regenerated configure file, (e)autoreconf is necessary befure building.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-06 03:18:38 0000</bug_when>
            <thetext>tex, please advise.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-06 03:29:40 0000</bug_when>
            <thetext>Created an attachment (id=135312)
tetex-src-3.0-dvips_bufferoverflow.patch

For Details, see: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=447081</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-06 03:30:45 0000</bug_when>
            <thetext>^^ As mentioned above, another set of buffer overflows exist in dvips.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>aballier@gentoo.org</who>
            <bug_when>2007-11-07 23:04:50 0000</bug_when>
            <thetext>fixed in tetex-3.0_p1-r5</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-07 23:30:05 0000</bug_when>
            <thetext>This also contains the fix for Xpdf, bug 196735. Thanks for handling it so fast, Alexis.

Arches, please test and mark stable app-text/tetex-3.0_p1-r5.
Target keywords : &quot;alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc x86&quot;
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jer@gentoo.org</who>
            <bug_when>2007-11-08 08:21:41 0000</bug_when>
            <thetext>Stable for HPPA.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>fauli@gentoo.org</who>
            <bug_when>2007-11-08 09:14:34 0000</bug_when>
            <thetext>x86 stable</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>fmccor@gentoo.org</who>
            <bug_when>2007-11-08 13:33:00 0000</bug_when>
            <thetext>Sparc stable.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>armin76@gentoo.org</who>
            <bug_when>2007-11-08 18:07:37 0000</bug_when>
            <thetext>alpha/ia64 stable</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>corsair@gentoo.org</who>
            <bug_when>2007-11-08 18:13:52 0000</bug_when>
            <thetext>ppc64 stable</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ssuominen@gentoo.org</who>
            <bug_when>2007-11-13 17:24:45 0000</bug_when>
            <thetext>amd64 stable</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-15 00:17:32 0000</bug_when>
            <thetext>Alexis, I just discovered that tetex does not link against the system t1lib, but its own version which is (probably) vulnerable to bug 193437.

I&apos;ll stop stabling here and we&apos;ll restart it with a new -r that passes --with-system-t1lib to configure, ok?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>aballier@gentoo.org</who>
            <bug_when>2007-11-15 08:26:03 0000</bug_when>
            <thetext>hmmm...

configure.in:test &quot;$with_dvipng&quot;  != no    &amp;&amp; : ${needs_libt1=yes}
configure.in:test &quot;$with_xdvik&quot;   != no    &amp;&amp; : ${needs_libt1=yes}
configure.in:test &quot;$with_oxdvik&quot;  != no    &amp;&amp; : ${needs_libt1=yes}

so in our case it only affects us with use=X;
in tetex.eclass:
  if useq X ; then
        addwrite /var/cache/fonts
        xdvik=&quot;--with-xdvik --with-oxdvik&quot;
        #xdvik=&quot;$xdvik --with-system-t1lib&quot;
    else

I&apos;ll have to check why it&apos;s commented out...</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>aballier@gentoo.org</who>
            <bug_when>2007-11-15 08:34:59 0000</bug_when>
            <thetext>been added there, never touched again:

http://sources.gentoo.org/viewcvs.py/gentoo-x86/eclass/tetex.eclass?r1=1.24&amp;r2=1.25

what do you think, should we just uncomment it here, add the t1lib dep, and rev bump tetex ? or the other way, add it in the ebuild ?

note that t1lib + use doc needs a latex compiler so this will cause circular deps... monolithic ebuilds suck :/</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-15 11:36:10 0000</bug_when>
            <thetext>(In reply to comment #15)
&gt; note that t1lib + use doc needs a latex compiler so this will cause circular
&gt; deps... monolithic ebuilds suck :/

That indeed is a problem. So I would advise to patch the bundled t1lib, or is there any strategy to avoid this?

The patch in /media-libs/t1lib/files/t1lib-5.0.2-SA26241_buffer_overflow.patch should work, if I remember the versions right.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>aballier@gentoo.org</who>
            <bug_when>2007-11-15 18:03:57 0000</bug_when>
            <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; note that t1lib + use doc needs a latex compiler so this will cause circular
&gt; &gt; deps... monolithic ebuilds suck :/
&gt; 
&gt; That indeed is a problem. So I would advise to patch the bundled t1lib, or is
&gt; there any strategy to avoid this?

it should be possible to just not build xdvik in tetex, but as our tetex has been doing this for years, I suppose it&apos;s better to keep it like this, patching for security holes.

&gt; The patch in /media-libs/t1lib/files/t1lib-5.0.2-SA26241_buffer_overflow.patch
&gt; should work, if I remember the versions right.
 

applied in tetex-3.0_p1-r6</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-15 19:05:47 0000</bug_when>
            <thetext>Arches, please test and mark stable app-text/tetex-3.0_p1-r6.
Target keywords : &quot;alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc
x86&quot;</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>maekke@gentoo.org</who>
            <bug_when>2007-11-15 19:53:33 0000</bug_when>
            <thetext>x86 stable</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jer@gentoo.org</who>
            <bug_when>2007-11-16 02:17:53 0000</bug_when>
            <thetext>Stable for HPPA again.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>fmccor@gentoo.org</who>
            <bug_when>2007-11-16 13:51:25 0000</bug_when>
            <thetext>Stable on sparc.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>armin76@gentoo.org</who>
            <bug_when>2007-11-16 16:31:07 0000</bug_when>
            <thetext>alpha/ia64 stable</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2007-11-17 09:34:31 0000</bug_when>
            <thetext>*** Bug 199421 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dertobi123@gentoo.org</who>
            <bug_when>2007-11-18 09:25:04 0000</bug_when>
            <thetext>ppc stable</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>corsair@gentoo.org</who>
            <bug_when>2007-11-18 13:47:04 0000</bug_when>
            <thetext>ppc64 stable</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-18 21:46:02 0000</bug_when>
            <thetext>compiles and works, amd64 stable.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rbu@gentoo.org</who>
            <bug_when>2007-11-18 21:46:23 0000</bug_when>
            <thetext>Moving to [glsa] then.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>py@gentoo.org</who>
            <bug_when>2007-11-18 23:00:51 0000</bug_when>
            <thetext>GLSA 200711-26</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>pva@gentoo.org</who>
            <bug_when>2008-03-06 09:47:02 0000</bug_when>
            <thetext>Does not affect current (2008.0) release. Removing release.</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135310</attachid>
            <date>2007-11-06 03:17 0000</date>
            <desc>tetex-src-3.0-dviljk-security-fixes.patch</desc>
            <filename>tetex-src-3.0-dviljk-security-fixes.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">c2VjdXJpdHkgZml4ZXMgZnJvbSBKb2FjaGltIFNjaHJvZCA8anNjaHJvZEBhY20ub3JnPgoocHJl
c2VudCBpbiB0aGUgc2VjdXJpdHkgYnJhbmNoIG9mIFRlWCBMaXZlIDIwMDcgYnJhbmNoMjAwNykK
VGhpcyB1cGRhdGUgaXMgYWxsIGFib3V0IHNlY3VyaXR5IGZpeGVzOgogMSkgZHZpbGprIGRpZCBu
b3QgY2hlY2sgYW55IG1lbW9yeSBib3VuZHMuIEFueSByZWFkIG9wZXJhdGlvbiwgYW55CiAgICBz
dHJpbmcgaGFuZGxpbmcgd2FzIGRvbmUgd2l0aG91dCBib3VuZHMgY2hlY2tpbmcgYW5kIGNvdWxk
IGJlCiAgICBleHBsb2l0ZWQgZm9yIGJ1ZmZlciBvdmVyZmxvd3MuCgogICAgSSBkaXNjb3ZlcmVk
IGNhLiAzMCBwbGFjZXMgd2hlcmUgdGhpcyBoYXBwZW5zIGFuZCBmaXhlZCBhbGwgb2YKICAgIHRo
ZW0uIEkgZGlkIG5vdCBkbyBhIGZ1bGwgY29kZSByZXZpZXcgYW5kIHRoZXJlZm9yZSBjYW4gbm90
CiAgICBwcm9taXNlIHRoYXQgdGhlcmUgYXJlIGV2ZW4gbW9yZSwgYnV0IGFsbCBvY2N1cmVuY2Vz
IG9mIGZyZWFkKCkKICAgIHdpdGggYXJiaXRyYXJ5IGxlbmd0aHMsIHN0cmNweSBhbmQgZnJpZW5k
cywgc3RyaW5nIGNvcHlpbmcgYnkKICAgICIqZGVzdCsrID0gKnNyYysrIiwgYW5kIG90aGVyIGZp
eGVkIGFycmF5IGFjY2Vzc2VzIGFyZSBub3cKICAgIGNoZWNrZWQuCgogMikgZHZpbGprIGhhZCBh
IHRlbXBmaWxlIGNyZWF0aW9uIHJhY2UgY29uZGl0aW9uLCBkdWUgdG8gdGhlIHVzYWdlIG9mCiAg
ICB0bXBuYW0oKS4gKFRoZXJlIGFyZSBtb3JlIGNhc2VzIGluIHRoZSB0ZXhrIHNvdXJjZSB0cmVl
LCBidHcuKQogICAgU2luY2UgbWtzdGVtcCgpIGNhbm5vdCBiZSB1dGlsaXplZCBoZXJlLCBJIGNo
YW5nZWQgdGhlIGNvZGUgdG8gdXNlCiAgICBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgY3JlYXRlZCB3
aXRoIG1rZHRlbXAoKS4gKElmIG1rZHRlbXAoKSBpcyBub3QKICAgIGF2YWlsYWJsZSwgSSBmYWxs
IGJhY2sgdG8gdXNlIHRtcG5hbSgpOyBpdCdzIG5vdCB3b3JzZSB0aGFuCiAgICBiZWZvcmUuKSBB
dCB0aGUgc2FtZSB0aW1lLCB0aGUgdGVtcG9yYXJ5IGZpbGVzIChhbmQgZGlyZWN0b3J5KSBhcmUK
ICAgIGRlbGV0ZWQgbm93IGF0IHRoZSBlbmQgb2YgdGhlIHByb2dyYW0gcnVuLgotLS0KIGJ1aWxk
L3NvdXJjZS90ZXhrL2R2aWxqay9DaGFuZ2VMb2cgICAgfCAgIDQ3ICsKIGJ1aWxkL3NvdXJjZS90
ZXhrL2R2aWxqay9jLWF1dG8uaW4gICAgfCAgIDI2IAogYnVpbGQvc291cmNlL3RleGsvZHZpbGpr
L2NvbmZpZy5oICAgICB8ICAgMjggLQogYnVpbGQvc291cmNlL3RleGsvZHZpbGprL2NvbmZpZ3Vy
ZSAgICB8ICAgNTYgKysKIGJ1aWxkL3NvdXJjZS90ZXhrL2R2aWxqay9jb25maWd1cmUuaW4gfCAg
ICAyIAogYnVpbGQvc291cmNlL3RleGsvZHZpbGprL2R2aTJ4eC5jICAgICB8ICA4ODkgKysrKysr
KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogYnVpbGQvc291cmNlL3RleGsvZHZpbGprL2R2
aTJ4eC5oICAgICB8ICAgMzAgLQogNyBmaWxlcyBjaGFuZ2VkLCA2MzEgaW5zZXJ0aW9ucygrKSwg
NDQ3IGRlbGV0aW9ucygtKQoKSW5kZXg6IHRldGV4LXNyYy0zLjAvdGV4ay9kdmlsamsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRldGV4LXNyYy0zLjAub3JpZy90ZXhrL2R2aWxqay9DaGFuZ2VM
b2cKKysrIHRldGV4LXNyYy0zLjAvdGV4ay9kdmlsamsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMDctMDctMDIgIEpvYWNoaW0gU2Nocm9kICA8anNjaHJvZEBhY20ub3JnPgorCisJKiBk
dmkyeHguYyAoRG9TcGVjaWFsKTogU2VjdXJpdHkgaXNzdWU6IHVzYWdlIG9mIHRtcG5hbSgpIGNh
dXNlZAorCXRlbXBmaWxlIHJhY2UgY29uZGl0aW9uLiBJIHVzZSBta2R0ZW1wKCkgaWYgaXQncyBh
dmFpbGFibGUgYW5kCisJZmFsbCBiYWNrIHRvIHRtcG5hbS4KKworCVNwZWNpYWwgcGFyc2luZyBv
ZiBpbmNsdWRlIGZpbGVzIHdhcyBpbmNvbnNpc3RlbnQsIHVuaWZ5IGl0LiBUaGUKKwljdXJyZW50
IHBhcnNpbmcgY29kZSBzdGlsbCBhbGxvd3MgbG90cyBvZiBub24tc2Vuc2ljYWwgc3BlY2lhbAor
CWNvbW1hbmRzLCBidXQgYXQgbGVhc3QgaXQgZG9lc24ndCBhY2Nlc3MgdW5yZWxhdGVkIHZhcmlh
YmxlcyBhbnkKKwltb3JlLgorCisyMDA3LTA2LTI4ICBKb2FjaGltIFNjaHJvZCAgPGpzY2hyb2RA
YWNtLm9yZz4KKworCSogZHZpMnh4LmM6IEZpeGVkIGEgd2hvbGUgYnVuY2ggb2YgYnVmZmVyIG92
ZXJmbG93czogVGhlIHByb2dyYW0KKwlkaWQgbm90IGNoZWNrIG1lbW9yeSBib3VuZHMgZm9yIGFu
eSBzdHJpbmcgb3BlcmF0aW9uLiBBbGwgcGxhY2VzCisJd2hlcmUgc3RyaW5ncyBhcmUgY29waWVk
IHdpdGggc3RyY3B5IGFyZSByZXBsYWNlZCBieSBkeW5hbWljYWxseQorCWFsbG9jYXRlZCBzdHJp
bmdzICh3aXRoIHhzdHJkdXAgZnJvbSBrcGF0aHNlYSkgb3IgYm91bmRlZCBzdHJpbmcKKwlvcGVy
YXRpb25zLiBGaXhlZCBhbHNvIG1hbnVhbCBzdHJpbmcgY29weSBvcGVyYXRpb25zIG9uIHNwZWNp
YWwKKwlzdHJpbmdzLiBGaXhlZCBhcnJheSBidWZmZXIgb3ZlcmZsb3cgaW4gZGVmcG9pbnQgYW5k
IGZpbGwgc3BlY2lhbAorCW9wZXJhdGlvbnMuCisJKERvU3BlY2lhbCk6IENhbGwgb2YgZ2hvc3Rz
Y3JpcHQgZm9yIHBzZmlsZSBzcGVjaWFsIGhhZCBhbHNvIGEKKwlwb3RlbnRpYWwgYnVmZmVyIG92
ZXJmbG93IGNhdXNlZCBieSB1bmNoZWNrZWQgdXNhZ2Ugb2Ygc3ByaW50Zi4KKwlGaXggY29yZSBk
dW1wOiBDaGVjayBpZiBhbGwgcmVxdWlyZWQgcGFyYW1ldGVycyBvZiBwc2ZpbGUgc3BlY2lhbAor
CWFyZSBwYXNzZWQuCisKKwlCdW1wZWQgdmVyc2lvbiBudW1iZXIgdXAgdG8gMi42cDMuCisKKwkq
IGR2aTJ4eC5oOiBTb21lIGZpeGVkIHNpemVkIHN0cmluZyBhcnJheXMgYXJlIHBvaW50ZXJzIG5v
dywgdGhleQorCWdldCBkeW5hbWljYWxseSBhbGxvY2F0ZWQuCisJKEdldEJ5dGVzKTogQW5vdGhl
ciBidWZmZXIgb3ZlcmZsb3c6IENoZWNrIHRoYXQgdGhlIGJ1ZmZlciBzaXplIGlzCisJc3VmZmlj
aWVudCB0byBzdG9yZSB0aGUgcmVhZCBieXRlcy4gVGhhdCByZWxpZXMgb24gdGhlIGludmFyaWFu
dAorCXRoYXQgdGhlIEdldEJ5dGVzIG1hY3JvIGlzIGFsd2F5cyBjYWxsZWQgd2l0aCBhbiBhcnJh
eSBhcyBhcmd1bWVudAorCWFuZCBub3Qgd2l0aCBhIHBvaW50ZXIuCisKKwkqIGNvbmZpZy5oOiBU
aHJvdyBhbiBlcnJvciBpZiBrcGF0aHNlYSBpcyBub3QgdXNlZC4gZHZpMnh4LmMKKwloYWQgcHJl
dmlvdXNseSBhbHJlYWR5IGtwYXRoc2VhIGRlcGVuZGVuY2llcyB3aXRob3V0IHByb3RlY3RpbmcK
Kwl0aGVtIHdpdGggI2lmIEtQQVRIU0VBLiBXZSBnbyB0aGF0IHJvYWQgZnVydGhlciBzaW5jZSB1
cHN0cmVhbQorCWRvZXMgbm90IGV4aXN0IGFueSBtb3JlLgorCiBUdWUgTWFyICAzIDEwOjE3OjAz
IDE5OTggIFNlYmFzdGlhbiBSYWh0eiAgPHMucmFodHpAZWxzZXZpZXIuY28udWs+CiAKIAkqIGNv
bmZpZy5oOiBNYXJrdXMgR3lnZXIgPG1neWdlckBvc2YxLmdtdS5lZHU+IGZpeCBvZiBjb25maWcK
QEAgLTEyLDcgKzUxLDcgQEAgVHVlIEphbiAyNyAxNDozMjoyNSAxOTk4ICBTZWJhc3RpYW4gUmFo
dAogCU9sYWYgV2ViZXIKIFNhdCBKYW4gMTcgMTU6MDk6NTkgMTk5OCAgU2ViYXN0aWFuIFJhaHR6
ICA8cy5yYWh0ekBlbHNldmllci5jby51az4KIAotCSogYXNzb3J0ZWQgcGF0Y2hlcyBmcm9tIFBl
dGVyIEJyZWl0ZW5sb2huZXIsIE9sYWYgV2ViZXIsIAorCSogYXNzb3J0ZWQgcGF0Y2hlcyBmcm9t
IFBldGVyIEJyZWl0ZW5sb2huZXIsIE9sYWYgV2ViZXIsCiAgCUVsaSBaYXJldHNraWksIEZhYnJp
Y2UgUG9waW5lYXUgZXRjLiBIb3BlIGl0IGFsbCBzdGlsbCB3b3Jrcy4KIAogCkBAIC00OSw3ICs4
OCw3IEBAIFN1biBKYW4gIDUgMTY6MTI6MDYgMTk5NyAgS2FybCBCZXJyeSAgPGsKIE1vbiBEZWMg
IDkgMDA6NTM6MzAgMTk5NiAgVWxyaWsgVmlldGggIDx2aWV0aEB0aHBoeS51bmktZHVlc3NlbGRv
cmYuZGU+CiAKIAkqIGR2aWhwOiBVc2UgYGJhc2VuYW1lICQwYCBpbiB1c2FnZSBhbmQgdmVyc2lv
biBtZXNzYWdlcyBmb3IKLSAJY29uc2lzdGVuY3kgd2l0aCBvdGhlciBwcm9ncmFtcyBhbmQgc2Ny
aXB0cy4gIAorIAljb25zaXN0ZW5jeSB3aXRoIG90aGVyIHByb2dyYW1zIGFuZCBzY3JpcHRzLgog
CUFsc28gYWNjZXB0IC1oZWxwLCAtdmVyc2lvbiBpbiBhZGRpdGlvbiB0byAtLWhlbHAsIC0tdmVy
c2lvbi4KIAogU2F0IERlYyAgNyAxNzoxNTo1NCAxOTk2ICBLYXJsIEJlcnJ5ICA8a2FybEBjcy51
bWIuZWR1PgpAQCAtMjEzLDcgKzI1Miw3IEBAIFNhdCBEZWMgMzEgMTc6MzA6NTggMTk5NCAgS2Fy
bCBCZXJyeSAgPGsKIEZyaSBEZWMgMzAgMTU6MjU6NTQgMTk5NCAgS2FybCBCZXJyeSAgPGthcmxA
Y3MudW1iLmVkdT4KIAogICAgICAgICAqIE1ha2VmaWxlLmluIChpbnN0YWxsLWV4ZWMpOiBEb24n
dCBkZXBlbmQgb24gZGVmYXVsdCwgc28gZHZpbGo0Ci0gICAgICAgIGRvZXNuJ3QgZ2V0IG1hZGUg
aWYgdGhlIHVzZXIgZGlkbid0IHdhbnQgaXQuIAorICAgICAgICBkb2Vzbid0IGdldCBtYWRlIGlm
IHRoZSB1c2VyIGRpZG4ndCB3YW50IGl0LgogICAgICAgICAoaW5zdGFsbC1kYXRhKTogbWtkaXJj
aGFpbiBvbiB0ZXhpbnB1dGRpciBhbmQgZm9udGRpci4KICAgICAgICAgRnJvbSBKb2FjaGltLgog
CkBAIC0zMjAsNyArMzU5LDcgQEAgRnJpIEp1bCAyOSAxMzoyNjo0OSAxOTk0ICBLYXJsIEJlcnJ5
ICAoawogICAgICAgICAqIGNvbmZpZy5oIChSRVNPTFVUSU9OLCBNRk1PREUpIFtMSjRMXTogU2V0
IHRvIDMwMC9jeCBmb3IgdGhpcyBuZXcKICAgICAgICAgc3ltYm9sLgogCi0gICAgICAgICogZHZp
Mnh4LmMgKERlY29kZUFyZ3MpOiBBbHdheXMgc2NhbGUgcGdzaXpfZG90cy4gCisgICAgICAgICog
ZHZpMnh4LmMgKERlY29kZUFyZ3MpOiBBbHdheXMgc2NhbGUgcGdzaXpfZG90cy4KICAgICAgICAg
KG1haW4pIFtMSjRdOiBEb24ndCBoYXJkd2lyZSA2MDBkcGkuCiAgICAgICAgIFRoZXNlIGZpeGVz
IGZyb20gYWpwQGVuZy5jYW0uYWMudWsuCiAKSW5kZXg6IHRldGV4LXNyYy0zLjAvdGV4ay9kdmls
amsvY29uZmlndXJlLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRldGV4LXNyYy0zLjAub3JpZy90ZXhrL2R2
aWxqay9jb25maWd1cmUuaW4KKysrIHRldGV4LXNyYy0zLjAvdGV4ay9kdmlsamsvY29uZmlndXJl
LmluCkBAIC0xNCw1ICsxNCw3IEBAIGRubCBUaGVzZSB0ZXN0cyBwcmV2ZW50IHJlbGlhYmxlIGNy
b3NzLWMKIEFDX0NfQ0hBUl9VTlNJR05FRAogQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCiAKK0FDX0NI
RUNLX0ZVTkNTKHJtZGlyIHVubGluayBta2R0ZW1wKQorCiBLUFNFX0NPTkZJR19GSUxFUyhbTWFr
ZWZpbGVdKQogQUNfT1VUUFVUCkluZGV4OiB0ZXRleC1zcmMtMy4wL3RleGsvZHZpbGprL2R2aTJ4
eC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRldGV4LXNyYy0zLjAub3JpZy90ZXhrL2R2aWxqay9kdmkyeHgu
YworKysgdGV0ZXgtc3JjLTMuMC90ZXhrL2R2aWxqay9kdmkyeHguYwpAQCAtMSw1ICsxLDUgQEAK
IC8qICRJZDogZHZpMnh4LmMsdiAyLjUgMTk5Ny8xMi8wOCAyMDo1MjoyMCBuZXVtYW5uIEV4cCAk
ICovCi0jZGVmaW5lIFZFUlNJT04gIjIuNnAyIChkdmlsamspIgorI2RlZmluZSBWRVJTSU9OICJk
dmlsamsgKHZlcnNpb24gMi42cDMpIgogLyoKICNkZWZpbmUgREVCVUdHUyAxCiAqLwpAQCAtMTY1
LDcgKzE2NSw3IEBAIGNoYXIgICAgKmFyZ3ZbXTsKICMgZW5kaWYKICNlbmRpZgogCi0gIC8qIElu
aXRpYWxpemUgcGl4ZWxfZmlsZXMgKi8gICAKKyAgLyogSW5pdGlhbGl6ZSBwaXhlbF9maWxlcyAq
LwogICBmb3IgKGkgPSAwOyBpIDw9IE1BWE9QRU47IGkrKykKICAgICBwaXhlbF9maWxlc1tpXS5w
aXhlbF9maWxlX2lkID0gRlBOVUxMOwogCkBAIC0xNzMsNyArMTczLDcgQEAgY2hhciAgICAqYXJn
dltdOwogICB5X29yaWdpbiA9IFlERUZBVUxUT0ZGOyAvKiB5LW9yaWdpbiBpbiBkb3RzICAgICAg
ICAgICAgICAgICAgICAqLwogCiAgIHNldGJ1ZihFUlJfU1RSRUFNLCBOVUxMKTsKLSAgKHZvaWQp
IHN0cmNweShHX3Byb2duYW1lLCBhcmd2WzBdKTsKKyAgR19wcm9nbmFtZSA9IGFyZ3ZbMF07CiAj
aWZkZWYgS1BBVEhTRUEKICAga3BzZV9zZXRfcHJvZ25hbWUoYXJndlswXSk7CiAgIGtwc2Vfc2V0
X3Byb2dyYW1fZW5hYmxlZCAoa3BzZV9wa19mb3JtYXQsIE1BS0VfVEVYX1BLX0JZX0RFRkFVTFQs
IGtwc2Vfc3JjX2NvbXBpbGUpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIGNoYXIgICAgKmFyZ3ZbXTsK
ICAgRU1JVDEoIkBQSkwgU0VUIFBBR0VQUk9URUNUPU9GRlwwMTIiKTsKICAgRU1JVDEoIkBQSkwg
RU5URVIgTEFOR1VBR0U9UENMXDAxMiIpOwogICBpZiAoZWNvbm9Nb2RlICYmIExKNikKLSAgICAg
IEVNSVQxKCJAUEpMIFNFVCBFQ09OT01PREU9T05cMDEyIik7ICAKKyAgICAgIEVNSVQxKCJAUEpM
IFNFVCBFQ09OT01PREU9T05cMDEyIik7CiAgIEVNSVQzKCJcMDMzJnUlZERcMDMzKnQlZFIiLFJF
U09MVVRJT04sUkVTT0xVVElPTik7CiAgIGlmIChlY29ub01vZGUgJiYgIUxKNikKICAgICBFTUlU
MSgiXDAzMyp2MVQiKTsKQEAgLTQzMSw4ICs0MzEsOCBAQCBjaGFyICAgICphcmd2W107CiAgICAg
ICAgICAgLyoKICAgICAgICAgICAgIGZwcmludGYoRVJSX1NUUkVBTSwiRmlyc3RQYXJ0XG4gY291
bnQgJWQsIG1vZCAlZCwgcHAgJWRcbiIsKGludCljb3VudFswXSwoaW50KWNvdW50WzBdJTIsUGFn
ZVBhcml0eSk7CiAgICAgICAgICAgICAqLwotICAgICAgICAgIFNraXBNb2RlID0gCi0gICAgICAg
ICAgICAoYm9vbCkoUGFnZVBhcml0eSAhPSAoc2hvcnQpKChjb3VudFswXTwwID8gCisgICAgICAg
ICAgU2tpcE1vZGUgPQorICAgICAgICAgICAgKGJvb2wpKFBhZ2VQYXJpdHkgIT0gKHNob3J0KSgo
Y291bnRbMF08MCA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YWJzKGNvdW50WzBdKSsxIDogY291bnRbMF0pJTIpKTsKICAgICAgICAgICBpZiAoY291bnRbMF0g
PT0gMCkgU2tpcE1vZGUgPSAoYm9vbCkhU2tpcE1vZGU7CiAgICAgICAgIH0KQEAgLTY0MSw3ICs2
NDEsNyBAQCBjaGFyICAgICphcmd2W107CiAgICBpcyBub3QgYnVmZmVyZWQuICovCiAKIC8qIHJl
YWQgYSBidWZmZXJlZCBieXRlICovCi1jaGFyIAorY2hhcgogI2lmIE5lZWRGdW5jdGlvblByb3Rv
dHlwZXMKIGJfcmVhZChGSUxFUFRSIHNwZnApCiAjZWxzZQpAQCAtNjYxLDcgKzY2MSw3IEBAIEZJ
TEVQVFIgc3BmcDsKIH0KIAogI2lmZGVmIFJJU0NfQlVGRkVSCi12b2lkIAordm9pZAogI2lmIE5l
ZWRGdW5jdGlvblByb3RvdHlwZXMKIGJfd3JpdGUoRklMRVBUUiBzcGZwLCBjaGFyIGMpIC8qIHdy
aXRlIGEgYnVmZmVyZWQgYnl0ZSAqLwogI2Vsc2UKQEAgLTY3Nyw3ICs2NzcsNyBAQCBjaGFyIGM7
CiAgIGJ1ZmZvdXRbYm9hY3QrK10gPSBjOwogfQogCi12b2lkIAordm9pZAogI2lmIE5lZWRGdW5j
dGlvblByb3RvdHlwZXMKIGJfd3J0bXVsdChGSUxFUFRSIHNwZnAsIGNoYXIgKmJ1ZiwgaW50IGxl
bikgLyogd3JpdGUgYSBzZXF1ZW5jZSBvZiBieXRlcyB0byB0aGUgb3V0cHV0IGJ1ZmZlciAqLwog
I2Vsc2UKQEAgLTY5MywyMiArNjkzLDIyIEBAIGludCBsZW47CiAgICAgd3JpdGVfbXVsdGkoYnVm
Zm91dCwxLGJvYWN0LHNwZnApOwogICAgIC8qIENvcHkgb25seSBzbWFsbCBibG9ja3M7IGxhcmdl
IG9uZXMgYXJlIHdyaXR0ZW4gZGlyZWN0bHkgKi8KICAgICBpZiAobGVuIDwgKEJVRkZTSVpFLzQp
KSB7Ci0gICAgICBmb3IgKGkgPSAwOyBpPGxlbjsgaSsrKSAKKyAgICAgIGZvciAoaSA9IDA7IGk8
bGVuOyBpKyspCiAgICAgICAgIGJ1ZmZvdXRbaV0gPSBidWZbaV07CiAgICAgICBib2FjdCA9IGxl
bjsKICAgICB9IGVsc2UgewotICAgICAgd3JpdGVfbXVsdGkoYnVmLDEsbGVuLHNwZnApOyAKKyAg
ICAgIHdyaXRlX211bHRpKGJ1ZiwxLGxlbixzcGZwKTsKICAgICAgIGJvYWN0ID0gMDsKICAgICB9
CiAgIH0KICAgZWxzZSB7Ci0gICAgZm9yIChpID0gMDsgaTxsZW47IGkrKykgCisgICAgZm9yIChp
ID0gMDsgaTxsZW47IGkrKykKICAgICAgIGJ1ZmZvdXRbYm9hY3QrK10gPSBidWZbaV07CiAgIH0K
IH0KIAogLyogZmx1c2ggdGhlIG91dHB1dCBidWZmZXIgKi8KLXZvaWQgCit2b2lkCiAjaWYgTmVl
ZEZ1bmN0aW9uUHJvdG90eXBlcwogYl9vZmx1c2goRklMRVBUUiBzcGZwKQogI2Vsc2UKQEAgLTc2
Miw5ICs3NjIsOSBAQCBjaGFyICAgICpzdHI7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiogQ29weUhQRmlsZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLwogI2lmIE5lZWRGdW5jdGlvblByb3RvdHlwZXMKLWludCBnZXRudW0oRklMRVBUUiBzcGZw
LCBjaGFyICp0LCBjaGFyICpudW1zdHIpIAoraW50IGdldG51bShGSUxFUFRSIHNwZnAsIGNoYXIg
KnQsIGNoYXIgKm51bXN0cikKICNlbHNlCi1pbnQgZ2V0bnVtKHNwZnAsIHQsIG51bXN0cikgCitp
bnQgZ2V0bnVtKHNwZnAsIHQsIG51bXN0cikKIEZJTEVQVFIgc3BmcDsKIGNoYXIgKnQsICpudW1z
dHI7CiAjZW5kaWYKQEAgLTc3NywzMCArNzc3LDMwIEBAIGNoYXIgKnQsICpudW1zdHI7CiB9CiAK
ICNpZiBOZWVkRnVuY3Rpb25Qcm90b3R5cGVzCi12b2lkIHNldE9mZnNldChjaGFyIGRpciwgY2hh
ciBzaWduLCBpbnQgcG9zKSAKK3ZvaWQgc2V0T2Zmc2V0KGNoYXIgZGlyLCBjaGFyIHNpZ24sIGlu
dCBwb3MpCiAjZWxzZQotdm9pZCBzZXRPZmZzZXQoZGlyLCBzaWduLCBwb3MsIGZpcnN0KSAKK3Zv
aWQgc2V0T2Zmc2V0KGRpciwgc2lnbiwgcG9zLCBmaXJzdCkKIGNoYXIgZGlyLCBzaWduOwogaW50
IHBvczsKICNlbmRpZgogewogICBpZiAoKHNpZ24gPT0gJysnIHx8IHNpZ24gPT0gJy0nKSAmJiBw
b3MgPiAwICkgewogICAgIEVNSVQ0KCJcMDMzKnAlYyVkJWMiLHNpZ24scG9zLGRpcik7Ci0jaWZk
ZWYgREVCVUdHUyAgIAorI2lmZGVmIERFQlVHR1MKICAgICBmcHJpbnRmKHN0ZGVyciwgInJlbGF0
aXZlOiAqcCVjJWQlY1xuIiwgc2lnbiwgcG9zLCBkaXIpOwogI2VuZGlmCiAgIH0gZWxzZSBpZiAo
cG9zPjApIHsKICAgICBFTUlUMygiXDAzMypwJWQlYyIscG9zLGRpcik7Ci0jaWZkZWYgREVCVUdH
UyAgIAorI2lmZGVmIERFQlVHR1MKICAgICBmcHJpbnRmKHN0ZGVyciwgImFic29sdXRlOiAqcCVk
JWNcbiIsIHBvcywgZGlyKTsKICNlbmRpZgotICAgIGlmIChkaXIgPT0gJ1gnKSAKKyAgICBpZiAo
ZGlyID09ICdYJykKICAgICAgIGxhc3RfcnggPSBwb3M7Ci0gICAgZWxzZSAKKyAgICBlbHNlCiAg
ICAgICBsYXN0X3J5ID0gcG9zOwogICB9IGVsc2UgewogICAgIC8qRU1JVDMoIlwwMzMqcCVkJWMi
LHBvcyxkaXIpOyovCi0jaWZkZWYgREVCVUdHUyAgIAorI2lmZGVmIERFQlVHR1MKICAgICBmcHJp
bnRmKHN0ZGVyciwgIlJlbGF0aXZlOiAqcCVkJWNcbiIsIHBvcywgZGlyKTsKICNlbmRpZgogICB9
CkBAIC04MzIsNyArODMyLDcgQEAgY2hhciAgICAqc3RyOwogICAgICB1bndhbnRlZCBjb21tYW5k
cyBmcm9tIHRoZSBpbnB1dCBmaWxlIGFuZCBvdXRwdXRzIHRoZSByZXN0ICovCiAKICAgLyogcmVz
ZXQgdGhlIGlucHV0IGJ1ZmZlciAqLwotICBiaW51bWJlciA9IDA7IAorICBiaW51bWJlciA9IDA7
CiAgIGJpYWN0ID0gMDsKIAogICBxZnByaW50ZihFUlJfU1RSRUFNLCIgWyVzIiwgc3RyKTsKQEAg
LTg1MywxNiArODUzLDE2IEBAIGNoYXIgICAgKnN0cjsKICAgICAgICAgICAvKiBvZiB0aGUgY29t
bWFuZHMgKHggZmlyc3QsIHkgZmlyc3QpICovCiAKICAgICAgICAgICBpZiAodD09J1knIHx8IHQ9
PSd5JykgewotICAgICAgICAgICAgaWYgKG51bXN0clswXSE9JysnICYmIG51bXN0clswXSE9Jy0n
ICYmIG51bTxtaW55KSAKKyAgICAgICAgICAgIGlmIChudW1zdHJbMF0hPScrJyAmJiBudW1zdHJb
MF0hPSctJyAmJiBudW08bWlueSkKICAgICAgICAgICAgICAgbWlueSA9IG51bTsKICAgICAgICAg
ICAgIGlmICh0PT0neScpIHsKICAgICAgICAgICAgICAgbnVtID0gZ2V0bnVtKHNwZnAsICZ0LCBu
dW1zdHIpOwotICAgICAgICAgICAgICBpZiAobnVtc3RyWzBdIT0nKycgJiYgbnVtc3RyWzBdIT0n
LScgJiYgbnVtPG1pbngpIAorICAgICAgICAgICAgICBpZiAobnVtc3RyWzBdIT0nKycgJiYgbnVt
c3RyWzBdIT0nLScgJiYgbnVtPG1pbngpCiAgICAgICAgICAgICAgICAgbWlueCA9IG51bTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICB9CiAgICAgICAgICAgaWYgKHQ9PSdYJyB8fCB0PT0neCcp
IHsKLSAgICAgICAgICAgIGlmIChudW1zdHJbMF0hPScrJyAmJiBudW1zdHJbMF0hPSctJyAmJiBu
dW08bWlueCkgCisgICAgICAgICAgICBpZiAobnVtc3RyWzBdIT0nKycgJiYgbnVtc3RyWzBdIT0n
LScgJiYgbnVtPG1pbngpCiAgICAgICAgICAgICAgIG1pbnggPSBudW07CiAKICAgICAgICAgICAg
IGlmICh0PT0neCcpIHsKQEAgLTkyMCwxNiArOTIwLDE2IEBAIGNoYXIgICAgKnN0cjsKICAgfQog
ICBxZnByaW50ZihFUlJfU1RSRUFNLCIgWyVzIiwgc3RyKTsKICAgLyogcmVzZXQgaW5wdXQgYnVm
ZmVyIGFnYWluICovCi0gIGJpbnVtYmVyID0gMDsgCisgIGJpbnVtYmVyID0gMDsKICAgYmlhY3Qg
PSAwOwogCiAKICAgLyogUGFzcyB0aHJvdWdoIHRoZSBpbnB1dCBmaWxlIGFnYWluIGJ1dCB0aGlz
IHRpbWUgb3V0cHV0IHRoZSAqLwogICAvKiByZXRhaW5lZCBQQ0wgY29tbWFuZHMgKi8KLSNpZmRl
ZiBERUJVR0dTICAgCi0gIGZwcmludGYoc3RkZXJyLCJcbm1pbng9JWQsIG1pbnk9JWQsIHhnPSVk
LCB5Zz0lZFxuIiwgCisjaWZkZWYgREVCVUdHUworICBmcHJpbnRmKHN0ZGVyciwiXG5taW54PSVk
LCBtaW55PSVkLCB4Zz0lZCwgeWc9JWRcbiIsCiAgICAgICAgICAgbWlueCwgbWlueSwgeF9nb2Zm
c2V0LCB5X2dvZmZzZXQpOwotI2VuZGlmICAKKyNlbmRpZgogICBkbyB7CiAgICAgdCA9IChjaGFy
KWJfcmVhZChzcGZwKTsKICAgICBpZiAodD09MHgxQikgewpAQCAtOTQ4LDcgKzk0OCw3IEBAIGNo
YXIgICAgKnN0cjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgIHNldE9mZnNl
dCgnWScsbnVtc3RyWzBdLCBudW0pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAg
ICAgICAgICAgIGlmICh0ID09ICd5JykgewogICAgICAgICAgICAgICBudW0gPSBnZXRudW0oc3Bm
cCwgJnQsbnVtc3RyKTsKICAgICAgICAgICAgICAgaWYgKG51bXN0clswXSE9JysnICYmIG51bXN0
clswXSE9Jy0nKSB7CkBAIC05NjAsMTYgKzk2MCwxNiBAQCBjaGFyICAgICpzdHI7CiAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAg
ICAgICAgIGlmICh0PT0nWCcgfHwgdD09J3gnKSB7CiAgICAgICAgICAgICBpZiAobnVtc3RyWzBd
IT0nKycgJiYgbnVtc3RyWzBdIT0nLScpIHsKICAgICAgICAgICAgICAgLypBZGQgaW4gdGhlIGNv
cnJlY3QgaG9yaXpvbnRhbCBvZmZzZXQqLwogICAgICAgICAgICAgICBzZXRPZmZzZXQoJ1gnLG51
bXN0clswXSwKICAgICAgICAgICAgICAgICAgICAgICAgIG51bSAtIG1pbnggKyAoaW50KVBJWFJP
VU5EKGgsaGNvbnYpICsgeF9nb2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7IAorICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgc2V0T2Zmc2V0KCdYJyxudW1zdHJbMF0sIG51
bSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKHQ9PSd4
JykgewogICAgICAgICAgICAgICBudW0gPSBnZXRudW0oc3BmcCwgJnQsbnVtc3RyKTsKICAgICAg
ICAgICAgICAgaWYgKG51bXN0clswXSE9JysnICYmIG51bXN0clswXSE9Jy0nKSB7CkBAIC0xMDI3
LDcgKzEwMjcsNyBAQCBjaGFyICAgICpzdHI7CiAgICAgICAgIGNhc2UoMHg2Myk6CiAgICAgICAg
ICAgLyogUmVjdGFuZ3VsYXIgZHJhdyBjb21tYW5kcyAqLwogICAgICAgICAgIEVNSVQxKCJcMDMz
KmMiKTsKLSAgICAgICAgICBmb3IgKHQgPSAoY2hhciliX3JlYWQoc3BmcCk7IHQ8MHg0MCB8fCB0
PjB4NjA7IAorICAgICAgICAgIGZvciAodCA9IChjaGFyKWJfcmVhZChzcGZwKTsgdDwweDQwIHx8
IHQ+MHg2MDsKICAgICAgICAgICAgICAgIHQgPSAoY2hhciliX3JlYWQoc3BmcCkpCiAgICAgICAg
ICAgICBFTUlUQyh0KTsKICAgICAgICAgICBFTUlUQyh0KTsKQEAgLTExMTAsNyArMTExMCw3IEBA
IHJlZ2lzdGVyIGludCAgICBuOyAgICAgIC8qIG51bWJlciBvZiBieXQKICAgbG9uZzQgeCA9IDA7
ICAgICAgLyogbnVtYmVyIGJlaW5nIGNvbnN0cnVjdGVkICovCiAgIHVuc2lnbmVkIGNoYXIgaDsK
ICAgd2hpbGUgKG4tLSkgewotICAgIHggPDw9IDg7IAorICAgIHggPDw9IDg7CiAgICAgcmVhZF9i
eXRlKGZwLGgpOwogICAgIHggfD0gaDsKICAgfQpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgcmVnaXN0
ZXIgaW50ICAgICBuOyAgIC8qIG51bWJlciBvZiBieXRlcwogI2lmZGVmIFNJR05fREVCVUcKICAg
bG9uZzQgICAgeDA7ICAgICAgLyogY29weSBvZiB4ICAqLwogI2VuZGlmCi0gIHJlYWRfYnl0ZShm
cCxoKTsgCisgIHJlYWRfYnl0ZShmcCxoKTsKICAgeCA9IGg7IC8qIGdldCBmaXJzdCAoaGlnaC1v
cmRlcikgYnl0ZSAqLwogICBuMSA9IG4tLTsKICAgd2hpbGUgKG4tLSkgewpAQCAtMTI5Niw3ICsx
Mjk2LDcgQEAgRklMRVBUUiBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIC0tLT4gcmVzdWx0IGluIERYICAgICAgICovCiAKICAgaWYgKCAgKHJlZ3MuaC5kbCAm
IDB4ODApICAgICAgICAgICAgICAvKiBmaWxlIGhhbmRsZSBwb2ludHMgdG8gYSBkZXZpY2UgKi8K
LSAgICAgICAgJiYgIShyZWdzLmguZGwgJiAweDA3KSApIHsgICAgICAvKiBuZWl0aGVyIGNvbnNv
bGUgaS9vIG9yIG51bGwgICAgKi8gCisgICAgICAgICYmICEocmVncy5oLmRsICYgMHgwNykgKSB7
ICAgICAgLyogbmVpdGhlciBjb25zb2xlIGkvbyBvciBudWxsICAgICovCiAKICAgICByZWdzLmgu
ZGwgIHw9IDB4MjA7ICAgICAgICAgICAgICAgICAvKiBzZXQgQklOQVJZIGJpdCBpbiBkZXZpY2Ug
aW5mbyAgKi8KICAgICByZWdzLmguYWggPSAodW5zaWduZWQgY2hhcikgMHg0NDsgICAvKiBJT0NU
TCAgICAgICAgICAgICAgICAgICovCkBAIC0xNTAxLDIwICsxNTAxLDIwIEBAIHByaW50ZigiRW1p
dCBjaGFyYWN0ZXIgJWMoJWQpIGlkPSVkLCB5b2YKICAgICAvKiBGb3IgQ09NUFJFU1NFRCBDSEFS
UyAqLwogICAgIGlmIChQcmV2U2l6ZSA8IG5icGwpIHsKICAgICAgIFByZXZTaXplID0gbmJwbDsK
LSAgICAgIGlmIChQcmV2TGluZSAhPSBOVUxMKSAKKyAgICAgIGlmIChQcmV2TGluZSAhPSBOVUxM
KQogICAgICAgICBmcmVlKFByZXZMaW5lKTsKLSAgICAgIGlmICgoUHJldkxpbmUgPSAodW5zaWdu
ZWQgY2hhciopbWFsbG9jKFByZXZTaXplKnNpemVvZihjaGFyKSkpIAorICAgICAgaWYgKChQcmV2
TGluZSA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2MoUHJldlNpemUqc2l6ZW9mKGNoYXIpKSkKICAg
ICAgICAgICA9PSBOVUxMKSB7Ci0gICAgICAgIFByZXZTaXplID0gMDsgCisgICAgICAgIFByZXZT
aXplID0gMDsKICAgICAgICAgRmF0YWwoIkVtaXRDaGFyOiBPdXQgb2YgbWVtb3J5IGVycm9yIVxu
Iik7CiAgICAgICB9CiAgICAgfQogICAgIC8qIENsZWFyIHNlZWQgbGluZSAqLwotICAgIGZvciAo
aSA9IDA7IGk8bmJwbDsgaSsrKSAKKyAgICBmb3IgKGkgPSAwOyBpPG5icGw7IGkrKykKICAgICAg
IFByZXZMaW5lW2ldID0gMDsKLSAgICBDQ2hhcl9PZmYgPSAwOyAKKyAgICBDQ2hhcl9PZmYgPSAw
OwogICAgIENDaGFyX0xhc3QgPSAtMTsKLSAgICAKKwogICAgIC8qIFRoaXMgYml0IGNvcGllZCBm
cm9tIGJlbG93Li4uICovCiAjICBpZmRlZiBVU0VQWEwKICAgICBpZiAoZm9udHB0ci0+aWQgPT0g
cGs4OSkKQEAgLTE1MzAsMTEgKzE1MzAsMTEgQEAgcHJpbnRmKCJFbWl0IGNoYXJhY3RlciAlYygl
ZCkgaWQ9JWQsIHlvZgogICAgICAgICBDb21wcmVzc2VkQ2hhckxpbmUoY2UsbmJwbCxzbCk7CiAg
ICAgICB9CiAjICBlbHNlCi0gICAgZm9yIChpID0gbnVtX3Jvd3M7IGkgPiAwOyBpLS0pIAorICAg
IGZvciAoaSA9IG51bV9yb3dzOyBpID4gMDsgaS0tKQogICAgICAgQ29tcHJlc3NlZENoYXJMaW5l
KGNlLG5icGwsKGJpdHMgKyAoaS0xKSpuYnBsKSk7CiAjICBlbmRpZiAvKiBVU0VQWEwgKi8KICAg
fQotICBlbHNlIAorICBlbHNlCiAgICAgQ0NoYXJfT2ZmID0gLTE7CiAjIGVuZGlmIC8qIExKNCAq
LwogCkBAIC0xNTQ0LDEwICsxNTQ0LDEwIEBAIHByaW50ZigiRW1pdCBjaGFyYWN0ZXIgJWMoJWQp
IGlkPSVkLCB5b2YKICMgaWZkZWYgTEo0CiAgIC8qIHByaW50ZigicmF3OiAlZCAoJWQgKiAlZCks
IGNvbXA6ICVkXG4iLAogICAgICB0b3RhbCxjZS0+d2lkdGgsY2UtPmhlaWdodCxDQ2hhcl9PZmYp
OyAqLwotICAvKiBDaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgY29tcHJlc3Mgd2VsbCBhcmUgdXN1YWxs
eSByYXRoZXIgc21hbGwgc28gCi0gICAgIHJlYWRpbmcgdGhlbSBhZ2FpbiBhbmQgd3JpdGluZyB0
aGVtIHVuY29tcHJlc3NlZCB3b24ndCB0YWtlIAorICAvKiBDaGFyYWN0ZXJzIHRoYXQgZG9uJ3Qg
Y29tcHJlc3Mgd2VsbCBhcmUgdXN1YWxseSByYXRoZXIgc21hbGwgc28KKyAgICAgcmVhZGluZyB0
aGVtIGFnYWluIGFuZCB3cml0aW5nIHRoZW0gdW5jb21wcmVzc2VkIHdvbid0IHRha2UKICAgICAg
bXVjaCB0aW1lIGFueXdheS4gKi8KLSAgaWYgKENDaGFyX09mZiA+IHRvdGFsKSAKKyAgaWYgKEND
aGFyX09mZiA+IHRvdGFsKQogICAgIENDaGFyX09mZiA9IC0xOwogICBpZiAoQ0NoYXJfT2ZmID49
IDApIHsKICAgICBFTUlUNCgiXDAzMypjJXNkJWRFXDAzMyhzJWxkVyIsIGNudl9idWZmZXIsCkBA
IC0xNjA2LDcgKzE2MDYsNyBAQCBwcmludGYoIkVtaXQgY2hhcmFjdGVyICVjKCVkKSBpZD0lZCwg
eW9mCiAgICAgICB9CiAjZW5kaWYKICAgICB9Ci0gICAgCisKICNpZmRlZiBJQk0zODEyCiAjaWZk
ZWYgVVNFUFhMCiAgIHVzZWRfZm9udHN0b3JhZ2UgKz0gKGxvbmc0KWNlLT5oZWlnaHQgKiAoKGNl
LT53aWR0aCArIDE1KSA+PiA0KSAqIDIgKyAxNDsKQEAgLTE2NTIsNyArMTY1Miw3IEBAIHVuc2ln
bmVkIGNoYXIgICAqcGtsb2M7CiBpbnQgICAgIHJlcGVhdGNvdW50OwogCiB2b2lkICAgICAgICAg
ICAgIC8qIDxSZWFkIGFuZCB0cmFuc2xhdGUgcmFzdGVyIGRlc2NyaXB0aW9uQD4qLwotI2lmIE5l
ZWRGdW5jdGlvblByb3RvdHlwZXMgCisjaWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcwogUGtSYXN0
ZXIoc3RydWN0IGNoYXJfZW50cnkgKmNlLCBpbnQgcmFzdGVyKQogI2Vsc2UKIFBrUmFzdGVyKGNl
LCByYXN0ZXIpCkBAIC0xNzM1LDcgKzE3MzUsNyBAQCBpbnQgcmFzdGVyOwogICAgICAgaWYgKHdv
cmR3ZWlnaHQgPCAzMSkgewogI2lmZGVmIENPTU1FTlQKICMgaWZkZWYgRFJBV0dMWVBICi0gICAg
ICAgIHsgCisgICAgICAgIHsKICAgICAgICAgICBpbnQgazsKICAgICAgICAgICBmb3IgKGsgPSAx
NTsgaz49MDsgay0tKSB7CiAgICAgICAgICAgICBpZiAoKHBvd2VyW2tdICYgd29yZCkhPTApIHBy
aW50ZigiWiIpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgaW50IHJhc3RlcjsKICAgICAgICAgZm9y
IChqID0gMzsgaiA+PSAod29yZHdpZHRoICogNCAtIChsb25nNCluYnBsKTsgai0tKSB7CiAgICAg
ICAgICAgT1VUQ0hBUigoKHdvcmQgPj4gKGogPDwgMykpICYgMHhmZikpOwogI2lmZGVmIERSQVdH
TFlQSAotICAgICAgICAgIHsgCisgICAgICAgICAgewogICAgICAgICAgICAgaW50IGs7CiAgICAg
ICAgICAgICBmb3IgKGsgPSA3OyBrPj0wOyBrLS0pIHsKICAgICAgICAgICAgICAgaWYgKChwb3dl
cltrXSAmICgod29yZCA+PiAoaiA8PCAzKSkgJiAweGZmKSkhPTApIHByaW50ZigiTSIpOwpAQCAt
MTc2MCw5ICsxNzYwLDkgQEAgaW50IHJhc3RlcjsKICAgICAgICAgfQogCiAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICBzd2l0Y2ggKHJhc3RlcikgewotICAgICAgY2FzZSAxOiAKKyAgICAgIGNh
c2UgMToKICAgICAgICAgUmFzdGVyTGluZShjZSwgbmJwbCwgY3VycmVudF9saW5lLCByYXN0ZXJf
bGluZV9idWYpOwogICAgICAgICBjdXJyZW50X2xpbmUrKzsKICAgICAgICAgYnJlYWs7CkBAIC0x
ODI2LDcgKzE4MjYsNyBAQCBpbnQgcmFzdGVyOwogICAgICAgICAgICAgT1VUQ0hBUigodGwgICAg
ICAgJiAweEZGKSk7CiAKICNpZmRlZiBEUkFXR0xZUEgKLSAgICAgICAgICAgIHsgCisgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgIGludCBrOwogICAgICAgICAgICAgICBmb3IgKGsgPSAzMTsg
az49MDsgay0tKSB7CiAgICAgICAgICAgICAgICAgaWYgKChwb3dlcltrXSAmIHJvd1tpaV0pIT0w
KSBwcmludGYoIk0iKTsKQEAgLTE4MzksNyArMTgzOSw3IEBAIGludCByYXN0ZXI7CiAgICAgICAg
ICAgZm9yIChqID0gMzsgaiA+PSAod29yZHdpZHRoICo0IC0gKGxvbmc0KW5icGwpOyBqLS0pIHsK
ICAgICAgICAgICAgIE9VVENIQVIoKCh0bCA+PiAoaiA8PCAzKSkgJiAweGZmKSk7CiAjaWZkZWYg
RFJBV0dMWVBICi0gICAgICAgICAgICB7IAorICAgICAgICAgICAgewogICAgICAgICAgICAgICBp
bnQgazsKICAgICAgICAgICAgICAgZm9yIChrID0gNzsgaz49MDsgay0tKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKChwb3dlcltrXSAmICgodGwgPj4gKGogPDwgMykpICYgMHhmZikpIT0wKSBwcmlu
dGYoIk0iKTsKQEAgLTE4NTAsNyArMTg1MCw3IEBAIGludCByYXN0ZXI7CiAgICAgICAgICAgfQog
CiAgICAgICAgICAgc3dpdGNoIChyYXN0ZXIpIHsKLSAgICAgICAgICBjYXNlIDE6IAorICAgICAg
ICAgIGNhc2UgMToKICAgICAgICAgICAgIFJhc3RlckxpbmUoY2UsICh1bnNpZ25lZCBpbnQpbmJw
bCwgY3VycmVudF9saW5lLCByYXN0ZXJfbGluZV9idWYpOwogICAgICAgICAgICAgY3VycmVudF9s
aW5lKys7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5NjksNyArMTk2OSw3IEBAIGludCBuOwog
CiAjaWZkZWYgTEo0CiAvKiBDb21wcmVzcyBhIHJhc3RlciBsaW5lIGluIGNvbXByZXNzaW9uIG1v
ZGUgMiAqLwotaW50IAoraW50CiAjaWYgTmVlZEZ1bmN0aW9uUHJvdG90eXBlcwogQ29tcHJlc3NM
aW5lMih1bnNpZ25lZCBjaGFyICpidWZmZXIsIHVuc2lnbmVkIGNoYXIgKmJ1ZmZvdXQsIGludCBl
bWl0Ynl0ZXMpCiAjZWxzZQpAQCAtMTk4NCwxMyArMTk4NCwxMyBAQCBpbnQgZW1pdGJ5dGVzOwog
ICBjaGFyIGxhc3QsYzsKIAogICAvKiB0cmFwIGVtcHR5IGxpbmVzIChvdGhlcndpc2UgcHJvYmxl
bXMgd2l0aCBQYWNrYml0cykgKi8KLSAgaWYgKGVtaXRieXRlcyA9PSAwKSAKKyAgaWYgKGVtaXRi
eXRlcyA9PSAwKQogICAgIHJldHVybigwKTsKICAgLyogVXNlIFBhY2tiaXRzIGNvbXByZXNzaW9u
IChtb2RlIDIpIG9uIHJhc3RlciBsaW5lICovCi0gIHBvcyA9IGJ1ZmZlcjsgCi0gIGxpdHBvcyA9
IGJ1ZmZlcjsgCi0gIHBhY2sgPSAxOyAKLSAgcHBvcyA9IGJ1ZmZvdXQ7IAorICBwb3MgPSBidWZm
ZXI7CisgIGxpdHBvcyA9IGJ1ZmZlcjsKKyAgcGFjayA9IDE7CisgIHBwb3MgPSBidWZmb3V0Owog
ICBsYXN0ID0gKnBvcysrOwogICB1cHBlciA9IGJ1ZmZlciArIGVtaXRieXRlczsKICAgd2hpbGUg
KHBvcyA8IHVwcGVyKSB7CkBAIC0yMDAwLDE0ICsyMDAwLDE0IEBAIGludCBlbWl0Ynl0ZXM7CiAg
ICAgICAvKiBBdCBsZWFzdCB0aHJlZSBlcXVhbCBieXRlcyA9PT4gd3JpdGUgb3V0IHByZWNlZGlu
ZyBsaXRlcmFsIHNlcXVlbmNlICovCiAgICAgICBpZiAoKHBhY2sgPT0gMykgJiYgKChsaXQgPSAo
aW50KShwb3MgLSBsaXRwb3MgLSAzKSkgIT0gMCkpIHsKICAgICAgICAgd2hpbGUgKGxpdCA+PSAx
MjgpIHsKLSAgICAgICAgICAqcHBvcysrID0gMTI3OyAKLSAgICAgICAgICBmb3IgKGkgPSAxOyBp
PD0xMjg7IGkrKykgCisgICAgICAgICAgKnBwb3MrKyA9IDEyNzsKKyAgICAgICAgICBmb3IgKGkg
PSAxOyBpPD0xMjg7IGkrKykKICAgICAgICAgICAgICpwcG9zKysgPSAqbGl0cG9zKys7CiAgICAg
ICAgICAgbGl0IC09IDEyODsKICAgICAgICAgfQogICAgICAgICBpZiAobGl0ICE9IDApIHsKLSAg
ICAgICAgICAqcHBvcysrID0gbGl0LTE7IAotICAgICAgICAgIHdoaWxlICgobGl0LS0pID4gMCkg
CisgICAgICAgICAgKnBwb3MrKyA9IGxpdC0xOworICAgICAgICAgIHdoaWxlICgobGl0LS0pID4g
MCkKICAgICAgICAgICAgICpwcG9zKysgPSAqbGl0cG9zKys7CiAgICAgICAgICAgLyogbGl0cG9z
IGlzIG5vdyBwb3MtMyAoaS5lLiBmaXJzdCBvZiB0aGUgc2VxdWVuY2UpICovCiAgICAgICAgIH0K
QEAgLTIwMTUsMTkgKzIwMTUsMTkgQEAgaW50IGVtaXRieXRlczsKICAgICB9CiAgICAgZWxzZSB7
CiAgICAgICB3aGlsZSAocGFjayA+PSAxMjgpIHsKLSAgICAgICAgKnBwb3MrKyA9IDEyOTsgCi0g
ICAgICAgICpwcG9zKysgPSBsYXN0OyAKLSAgICAgICAgbGl0cG9zICs9IDEyODsgCisgICAgICAg
ICpwcG9zKysgPSAxMjk7CisgICAgICAgICpwcG9zKysgPSBsYXN0OworICAgICAgICBsaXRwb3Mg
Kz0gMTI4OwogICAgICAgICBwYWNrIC09IDEyODsKICAgICAgIH0KICAgICAgIC8qIEF0IGxlYXN0
IDMgZXF1YWwgYnl0ZXMgb3IgMiB0aGF0IGRvbid0IGJyZWFrIGEgbGl0ZXJhbCBzZXF1ZW5jZQog
ICAgICAgICAgPT0+IHdyaXRlIG91dCBwYWNrZWQgc2VxdWVuY2UgKi8KICAgICAgIGlmICgocGFj
ayA+PSAzKSB8fCAoKHBhY2sgPT0gMikgJiYgKGxpdHBvcyA9PSBwb3MtMykpKSB7Ci0gICAgICAg
ICpwcG9zKysgPSAyNTcgLSBwYWNrOyAKLSAgICAgICAgKnBwb3MrKyA9IGxhc3Q7IAorICAgICAg
ICAqcHBvcysrID0gMjU3IC0gcGFjazsKKyAgICAgICAgKnBwb3MrKyA9IGxhc3Q7CiAgICAgICAg
IGxpdHBvcyArPSBwYWNrOwogICAgICAgfQotICAgICAgcGFjayA9IDE7IAorICAgICAgcGFjayA9
IDE7CiAgICAgICBsYXN0ID0gYzsKICAgICB9CiAgICAgaWYgKHBwb3MgPiAoYnVmZm91dCArIEJV
RkZTSVpFLzIgLSAxMjkpKSB7CkBAIC0yMDM2LDI4ICsyMDM2LDI4IEBAIGludCBlbWl0Ynl0ZXM7
CiAgICAgICByZXR1cm4oMCk7CiAgICAgfQogICB9Ci0gIAorCiAgIHdoaWxlIChwYWNrID49IDEy
OCkgewotICAgICpwcG9zKysgPSAxMjk7IAotICAgICpwcG9zKysgPSBsYXN0OyAKLSAgICBsaXRw
b3MgKz0gMTI4OyAKKyAgICAqcHBvcysrID0gMTI5OworICAgICpwcG9zKysgPSBsYXN0OworICAg
IGxpdHBvcyArPSAxMjg7CiAgICAgcGFjayAtPSAxMjg7CiAgIH0KICAgaWYgKChwYWNrID49IDMp
IHx8ICgocGFjayA9PSAyKSAmJiAobGl0cG9zID09IHBvcy0zKSkpIHsKLSAgICAqcHBvcysrID0g
MjU3IC0gcGFjazsgCi0gICAgKnBwb3MrKyA9IGxhc3Q7IAorICAgICpwcG9zKysgPSAyNTcgLSBw
YWNrOworICAgICpwcG9zKysgPSBsYXN0OwogICAgIGxpdHBvcyArPSBwYWNrOwogICB9CiAgIGVs
c2UgaWYgKChsaXQgPSAoaW50KShwb3MgLSBsaXRwb3MpKSAhPSAwKSB7CiAgICAgd2hpbGUgKGxp
dCA+PSAxMjgpIHsKLSAgICAgICpwcG9zKysgPSAxMjc7IAotICAgICAgZm9yIChpID0gMTsgaTw9
MTI4OyBpKyspIAorICAgICAgKnBwb3MrKyA9IDEyNzsKKyAgICAgIGZvciAoaSA9IDE7IGk8PTEy
ODsgaSsrKQogICAgICAgICAqcHBvcysrID0gKmxpdHBvcysrOwogICAgICAgbGl0IC09IDEyODsK
ICAgICB9CiAgICAgaWYgKGxpdCAhPSAwKSB7Ci0gICAgICAqcHBvcysrID0gbGl0LTE7IAotICAg
ICAgd2hpbGUgKChsaXQtLSkgPiAwKSAKKyAgICAgICpwcG9zKysgPSBsaXQtMTsKKyAgICAgIHdo
aWxlICgobGl0LS0pID4gMCkKICAgICAgICAgKnBwb3MrKyA9ICpsaXRwb3MrKzsKICAgICB9CiAg
IH0KQEAgLTIwNzksMjQgKzIwNzksMjQgQEAgaW50IGVtaXRieXRlczsKICAgaW50IGxpdCxpLHBh
Y2s7CiAKICAgLyogVXNlIGNvbXByZXNzaW9uIG1vZGUgMyAqLwotICBwb3MgPSBidWZmZXI7IAot
ICBwcG9zID0gYnVmZm91dDsgCi0gIHVwcGVyID0gYnVmZmVyICsgZW1pdGJ5dGVzOyAKKyAgcG9z
ID0gYnVmZmVyOworICBwcG9zID0gYnVmZm91dDsKKyAgdXBwZXIgPSBidWZmZXIgKyBlbWl0Ynl0
ZXM7CiAgIHByZXYgPSBQcmV2TGluZTsKICAgd2hpbGUocG9zIDwgdXBwZXIpIHsKICAgICBsaXRw
b3MgPSBwb3M7CiAgICAgd2hpbGUgKCgqcHJldiA9PSAqcG9zKSAmJiAocG9zIDwgdXBwZXIpKSB7
Ci0gICAgICBwcmV2Kys7IAorICAgICAgcHJldisrOwogICAgICAgcG9zKys7CiAgICAgfQogICAg
IGlmIChwb3MgPCB1cHBlcikgewotICAgICAgcGFjayA9IChpbnQpKHBvcyAtIGxpdHBvcyk7IAor
ICAgICAgcGFjayA9IChpbnQpKHBvcyAtIGxpdHBvcyk7CiAgICAgICBsaXRwb3MgPSBwb3M7Ci0g
ICAgICBpID0gdXBwZXIgLSBwb3M7IAotICAgICAgaWYgKGkgPiA4KSAKKyAgICAgIGkgPSB1cHBl
ciAtIHBvczsKKyAgICAgIGlmIChpID4gOCkKICAgICAgICAgaSA9IDg7CiAgICAgICB3aGlsZSAo
KCpwb3MgIT0gKnByZXYpICYmIChpID4gMCkpIHsKLSAgICAgICAgKnByZXYrKyA9ICpwb3MrKzsg
CisgICAgICAgICpwcmV2KysgPSAqcG9zKys7CiAgICAgICAgIGktLTsKICAgICAgIH0KICAgICAg
IGkgPSAoaW50KShwb3MgLSBsaXRwb3MgLSAxKTsKQEAgLTIxMDUsMTYgKzIxMDUsMTYgQEAgaW50
IGVtaXRieXRlczsKICAgICAgICAgKnBwb3MrKyA9IGxpdCArIHBhY2s7CiAgICAgICB9CiAgICAg
ICBlbHNlIHsKLSAgICAgICAgKnBwb3MrKyA9IGxpdCArIDMxOyAKKyAgICAgICAgKnBwb3MrKyA9
IGxpdCArIDMxOwogICAgICAgICBwYWNrIC09IDMxOwogICAgICAgICB3aGlsZSAocGFjayA+PSAy
NTUpIHsKLSAgICAgICAgICAqcHBvcysrID0gMjU1OyAKKyAgICAgICAgICAqcHBvcysrID0gMjU1
OwogICAgICAgICAgIHBhY2sgLT0gMjU1OwogICAgICAgICB9CiAgICAgICAgICpwcG9zKysgPSBw
YWNrOwogICAgICAgfQogICAgICAgd2hpbGUgKGkgPj0gMCkgewotICAgICAgICAqcHBvcysrID0g
KmxpdHBvcysrOyAKKyAgICAgICAgKnBwb3MrKyA9ICpsaXRwb3MrKzsKICAgICAgICAgaS0tOwog
ICAgICAgfQogICAgIH0KQEAgLTIxMzQsNyArMjEzNCw3IEBAIGludCBlbWl0Ynl0ZXM7CiAvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KIHZvaWQKICNpZiBOZWVkRnVuY3Rpb25Qcm90b3R5cGVzCi1SYXN0ZXJMaW5l
KHN0cnVjdCBjaGFyX2VudHJ5ICpjZSwgdW5zaWduZWQgaW50IG5icGwsIAorUmFzdGVyTGluZShz
dHJ1Y3QgY2hhcl9lbnRyeSAqY2UsIHVuc2lnbmVkIGludCBuYnBsLAogICAgICAgICAgICB1bnNp
Z25lZCBpbnQgY3VycmVudF9saW5lLCB1bnNpZ25lZCBjaGFyICpidWZmZXIpCiAjZWxzZQogUmFz
dGVyTGluZShjZSwgbmJwbCwgY3VycmVudF9saW5lLCBidWZmZXIpCkBAIC0yMjA4LDIxICsyMjA4
LDIxIEBAIGNoYXIgKmJ1ZmZlcjsKICAgICBFTUlUMigiXDAzMypiJWRXIiwgZW1pdGJ5dGVzKTsK
ICAgICBFTUlUTChlbWl0Ynl0ZXMsIGJ1ZmZlcik7CiAgICAgYnJlYWs7Ci0gCisKICAgY2FzZSAy
OgogICAgIGkgPSBDb21wcmVzc0xpbmUyKGJ1ZmZlcixidWZmaW4sZW1pdGJ5dGVzKTsKICAgICBF
TUlUMigiXDAzMypiJWRXIiwgaSk7CiAgICAgRU1JVEwoaSxidWZmaW4pOwogICAgIGJyZWFrOwot
IAorCiAgIGNhc2UgMzoKICAgICBpID0gQ29tcHJlc3NMaW5lMyhidWZmZXIsYnVmZmluICsgQlVG
RlNJWkUvMiwoaW50KW5icGwpOwogICAgIEVNSVQyKCJcMDMzKmIlZFciLCBpKTsKICAgICBFTUlU
TChpLGJ1ZmZpbiArIEJVRkZTSVpFLzIpOwogICAgIGJyZWFrOwotIAotICBkZWZhdWx0OiAKLSAg
ICBmcHJpbnRmKEVSUl9TVFJFQU0sIlVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1vZGUhXG4iKTsg
CisKKyAgZGVmYXVsdDoKKyAgICBmcHJpbnRmKEVSUl9TVFJFQU0sIlVuc3VwcG9ydGVkIGNvbXBy
ZXNzaW9uIG1vZGUhXG4iKTsKICAgfQogIyBlbHNlCiAgIEVNSVQyKCJcMDMzKmIlZFciLCBlbWl0
Ynl0ZXMpOwpAQCAtMjI4MCwxMCArMjI4MCwxMCBAQCBzdHJ1Y3QgY2hhcl9lbnRyeSAqY2U7CiAg
IGlmIChDb21wcmVzc0NoYXJNb2RlID09IDMpIHsKICAgICAvKiBDaGVjayBpZiBQcmV2TGluZSBi
aWcgZW5vdWdoOyBjbGFpbSBtb3JlIHNwYWNlIGlmIG5vdCAqLwogICAgIGlmICgoKGludCluYnBs
KSA+IFByZXZTaXplKSB7Ci0gICAgICBpZiAoUHJldkxpbmUgIT0gTlVMTCkgCisgICAgICBpZiAo
UHJldkxpbmUgIT0gTlVMTCkKICAgICAgICAgZnJlZShQcmV2TGluZSk7CiAgICAgICBpZiAoKFBy
ZXZMaW5lID0gKHVuc2lnbmVkIGNoYXIgKiltYWxsb2MobmJwbCpzaXplb2YoY2hhcikpKSA9PSBO
VUxMKSB7Ci0gICAgICAgIFByZXZTaXplID0gMDsgCisgICAgICAgIFByZXZTaXplID0gMDsKICAg
ICAgICAgRmF0YWwoIlJhc3RlckNoYXI6IG91dCBvZiBtZW1vcnkhXG4iKTsKICAgICAgIH0KICAg
ICAgIFByZXZTaXplID0gKGludCluYnBsOwpAQCAtMjQxOSw3ICsyNDE5LDcgQEAgcmVnaXN0ZXIg
c3RydWN0IGNoYXJfZW50cnkgKnB0cjsKICAgaWYgKGJ5dGVzID4gMCkgewogICAgIC8qIGRvIE5P
VCBsb2FkIEh1Z2UgY2hhcmFjdGVycyAqLwogICAgIGlmICgoYnl0ZXMgPiBIVUdFX0NIQVJfUEFU
VEVSTikgJiYgKGZvbnRwdHItPmlkICE9IHBrODkpKSB7Ci0gICAgICBxZnByaW50ZihFUlJfU1RS
RUFNLCJIdWdlIENoYXJhY3RlciA8JWM+ICglbGQgQnl0ZXMpXG4iLCAKKyAgICAgIHFmcHJpbnRm
KEVSUl9TVFJFQU0sIkh1Z2UgQ2hhcmFjdGVyIDwlYz4gKCVsZCBCeXRlcylcbiIsCiAgICAgICAg
ICAgICAgICAoY2hhciljLCBieXRlcyk7CiAgICAgICBwdHItPmNoYXJzaXplID0gSFVHRV9TSVpF
OwogICAgICAgcHRyLT53aGVyZS5pc2xvYWRlZCA9IF9GQUxTRTsKQEAgLTI1MDUsNyArMjUwNSw3
IEBAIGJvb2wgZG9fcG9zbixpbl9zdHJpbmc7CiAgICAgU2V0UG9zbihoLCB2KTsKICAgfQogCi0g
IC8qICAKKyAgLyoKICAgICBmcHJpbnRmKEVSUl9TVFJFQU0sCiAgICAgICAgICAgICAiKCVkKSBo
aD0lbGQgKCslbGQvKyVsZCksIGg9JWxkLCB4aD0lbGQseGhoPSVsZCwgWyVsZHwlbGRdIC0+JWRc
biIsCiAgICAgICAgICAgICAoaW50KWRvX3Bvc24saGgsKGxvbmc0KXB0ci0+Y3csKGxvbmc0KXB0
ci0+Y3cqKGxvbmc0KWhjb252LGgsCkBAIC0yNTUzLDcgKzI1NTMsNyBAQCBib29sIGRvX3Bvc24s
aW5fc3RyaW5nOwogICAgICAgaW50ICAgICB0bXA7CiAgICAgICBjaGFyICAgIHNpZ247CiAKLSAg
ICAgIGlmICghZG9fcG9zbikgCisgICAgICBpZiAoIWRvX3Bvc24pCiAgICAgICAgIFNldFBvc24o
aCwgdik7CiAKICNpZmRlZiBVU0VQWEwKQEAgLTI1NjMsNyArMjU2Myw3IEBAIGJvb2wgZG9fcG9z
bixpbl9zdHJpbmc7CiAjZW5kaWYKICAgICAgIGlmICh0bXAgIT0gMCkgewogICAgICAgICBpZiAo
dG1wIDwgMCkgewotICAgICAgICAgIHNpZ24gPSAnLSc7IAorICAgICAgICAgIHNpZ24gPSAnLSc7
CiAgICAgICAgICAgdG1wID0gLXRtcDsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgc2lnbiA9
ICcrJzsKQEAgLTI1NzYsNyArMjU3Niw3IEBAIGJvb2wgZG9fcG9zbixpbl9zdHJpbmc7CiAjZW5k
aWYKICAgICAgIGlmICh0bXAgIT0gMCkgewogICAgICAgICBpZiAodG1wIDwgMCkgewotICAgICAg
ICAgIHNpZ24gPSAnLSc7IAorICAgICAgICAgIHNpZ24gPSAnLSc7CiAgICAgICAgICAgdG1wID0g
LXRtcDsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgc2lnbiA9ICcrJzsKQEAgLTI2NDQsNyAr
MjY0NCw3IEBAIGJvb2wgZG9fcG9zbixpbl9zdHJpbmc7CiAgICAgZnByaW50ZihzdGRlcnIsIi0t
PiBoaCglbGQpICs9IGN3KCVsZCkgKiBoY29udiglbGQpIiwKICAgICAgICAgICAgIChsb25nKWho
LCAobG9uZylwdHItPmN3LCAobG9uZykgaGNvbnYpOwogICAgICAgICAgICAgKi8KLSNpZmRlZiBM
SiAgICAKKyNpZmRlZiBMSgogICAgIC8qIHRoZSBndWVzc2VkIHBvc2l0aW9uIG11c3QgYmUgYSBt
dWx0aXBsZSBvZiBwaXhlbHMgKi8KICAgICBpZiAoUkVTT0xVVElPTiA9PSAzMDApCiAgICAgICBo
aCArPSAobG9uZzQpICgocHRyLT5jdykvNCkqNCpoY29udjsKQEAgLTI2NjEsNyArMjY2MSw3IEBA
IGJvb2wgZG9fcG9zbixpbl9zdHJpbmc7CiAgIGlmIChjb21tYW5kIDw9IFNFVDQpCiAgICAgaCAr
PSBwdHItPnRmbXc7CiAKLSAgaWYgKHBvc19hZnRlcikgCisgIGlmIChwb3NfYWZ0ZXIpCiAgICAg
U2V0UG9zbihoLCB2KTsKICAgZWxzZQogICAgIGxhc3RfcnggPSAoaW50KVBJWFJPVU5EKGgsIGhj
b252KSArIHhfZ29mZnNldDsKQEAgLTI2ODIsNyArMjY4Miw3IEBAIHZvaWQgRG9Cb3AoKQogICB9
CiAgIGZvbnRzX3VzZWRfb25fdGhpc19wYWdlID0gMDsKICNlbmRpZgotICBmb3IgKHAgPSBoZm9u
dHB0cjsgcDsgcCA9IHAtPm5leHQpIAorICBmb3IgKHAgPSBoZm9udHB0cjsgcDsgcCA9IHAtPm5l
eHQpCiAgICAgcC0+dXNlZF9vbl90aGlzX3BhZ2UgPSBfRkFMU0U7CiB9CiAKQEAgLTI3NDAsNyAr
Mjc0MCw3IEBAIGxvbmc0ICAgIHgsIHk7CiAgIHJ4ID0gKGludClQSVhST1VORCh4LCBoY29udikg
KyB4X2dvZmZzZXQ7CiAgIHJ5ID0gKGludClQSVhST1VORCh5LCB2Y29udikgKyB5X2dvZmZzZXQ7
CiAKLSAgLyogIAorICAvKgogICBmcHJpbnRmKEVSUl9TVFJFQU0sCiAJICAic2V0cG9zbiB0byAl
bGQvJWxkLCAlZC8lZCwgbGFzdDogJWQvJWRcbiIsCiAJICAobG9uZyl4LChsb25nKXksCkBAIC0y
ODA0LDEzICsyODA0LDEzIEBAIGxvbmc0ICAgIHgsIHk7CiAgICBvZmZzZXQgaW4gdGhlIGJ1ZmZl
ciwgQ0NoYXJfTGFzdCBpcyB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgbGFzdAogICAgY29tcGFjdGVk
IHJvdyAobGluZSByZXBlYXQgY291bnQpLiAgVXBkYXRlcyB0aGUgcHJldmlvdXMgbGluZQogICAg
KFByZXZMaW5lKSBpZiBuZWNlc3NhcnkuICovCi12b2lkIAordm9pZAogI2lmIE5lZWRGdW5jdGlv
blByb3RvdHlwZXMKIENvbXByZXNzZWRDaGFyTGluZShzdHJ1Y3QgY2hhcl9lbnRyeSAqY2UsIGlu
dCBuYnBsLCB1bnNpZ25lZCBjaGFyICpidWZmZXIpCiAjZWxzZQogQ29tcHJlc3NlZENoYXJMaW5l
KGNlLCBuYnBsLCBidWZmZXIpCiBzdHJ1Y3QgY2hhcl9lbnRyeSAqY2U7Ci1pbnQgbmJwbDsgCitp
bnQgbmJwbDsKIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKICNlbmRpZgogewpAQCAtMjgyMSwzMSAr
MjgyMSwzMSBAQCB1bnNpZ25lZCBjaGFyICpidWZmZXI7CiAgICAgaW50IHQsbW9kZSxtYXg7CiAg
ICAgcmVnaXN0ZXIgaW50IHgseSxpOwogCi0gICAgcHJldiA9IFByZXZMaW5lOyAKLSAgICBvYnVm
ID0gYnVmZmVyOyAKLSAgICBlbmQgPSBidWZmZXIgKyBuYnBsOyAKKyAgICBwcmV2ID0gUHJldkxp
bmU7CisgICAgb2J1ZiA9IGJ1ZmZlcjsKKyAgICBlbmQgPSBidWZmZXIgKyBuYnBsOwogICAgIHgg
PSAwOwogICAgIHdoaWxlIChvYnVmIDwgZW5kKSB7CiAgICAgICBpZiAoKm9idWYgIT0gKnByZXYp
IHsKLSAgICAgICAgKnByZXYgPSAqb2J1ZjsgCisgICAgICAgICpwcmV2ID0gKm9idWY7CiAgICAg
ICAgIHggPSAxOwogICAgICAgfQotICAgICAgb2J1ZisrOyAKKyAgICAgIG9idWYrKzsKICAgICAg
IHByZXYrKzsKICAgICB9CiAgICAgaWYgKHggPT0gMCAmJiBDQ2hhcl9MYXN0ID49IDApIHsKLSAg
ICAgIChidWZmaW5bQ0NoYXJfTGFzdF0pKys7IAorICAgICAgKGJ1ZmZpbltDQ2hhcl9MYXN0XSkr
KzsKICAgICAgIHJldHVybjsgLyogbGluZSByZXBlYXQgY291bnQgKzEgKi8KICAgICB9CiAKLSAg
ICBlbmQgPSBidWZmaW4gKyBCVUZGU0laRSAtIDE2OyAKLSAgICBvYnVmID0gYnVmZmluICsgQ0No
YXJfT2ZmOyAKKyAgICBlbmQgPSBidWZmaW4gKyBCVUZGU0laRSAtIDE2OworICAgIG9idWYgPSBi
dWZmaW4gKyBDQ2hhcl9PZmY7CiAgICAgYnVmZiA9IGJ1ZmZlcjsKICAgICAqb2J1ZisrID0gMDsg
LyogTGluZSByZXBlYXQgY291bnQgPSAwICovCiAgICAgdCA9IDA7CiAgICAgQ0NoYXJfTGFzdCA9
IENDaGFyX09mZjsgLyogTmV4dCBsaW5lICovCi0gICAgbW9kZSA9IDA7IAotICAgIHkgPSAqYnVm
ZisrOyAKKyAgICBtb2RlID0gMDsKKyAgICB5ID0gKmJ1ZmYrKzsKICAgICBpID0gNzsgLyogaSA9
IGN1cnJlbnQgYml0ICovCiAgICAgd2hpbGUgKCh0IDwgY2UtPndpZHRoKSAmJiAob2J1ZiA8IGVu
ZCkpIHsKICAgICAgIG1heCA9IGNlLT53aWR0aCAtIHQ7IC8qIG1heGltdW0gcGl4ZWxzIGxlZnQg
dG8gZG8gKi8KQEAgLTI4NTMsMTMgKzI4NTMsMTMgQEAgdW5zaWduZWQgY2hhciAqYnVmZmVyOwog
ICAgICAgaWYgKG1vZGUgPT0gMCkgewogICAgICAgICAvKiB3aGl0ZSBydW4gKi8KICAgICAgICAg
d2hpbGUgKCh5ICYgKDE8PGkpKSA9PSAwICYmIHggPCBtYXgpIHsKLSAgICAgICAgICB4Kys7IAot
ICAgICAgICAgIGktLTsgCisgICAgICAgICAgeCsrOworICAgICAgICAgIGktLTsKICAgICAgICAg
ICBpZiAoaSA8IDApIHsKLSAgICAgICAgICAgIGkgPSA3OyAKLSAgICAgICAgICAgIHkgPSAqYnVm
ZisrOyAKKyAgICAgICAgICAgIGkgPSA3OworICAgICAgICAgICAgeSA9ICpidWZmKys7CiAgICAg
ICAgICAgICB3aGlsZSAoeSA9PSAwICYmIHggPCBtYXgpIHsKLSAgICAgICAgICAgICAgeCArPSA4
OyAKKyAgICAgICAgICAgICAgeCArPSA4OwogICAgICAgICAgICAgICB5ID0gKmJ1ZmYrKzsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICB9CkBAIC0yODY5LDI2ICsyODY5LDI2IEBAIHVuc2lnbmVk
IGNoYXIgKmJ1ZmZlcjsKICAgICAgIGVsc2UgewogICAgICAgICAvKiBibGFjayBydW4gKi8KICAg
ICAgICAgd2hpbGUgKCh5ICYgKDE8PGkpKSAhPSAwICYmIHggPCBtYXgpIHsKLSAgICAgICAgICB4
Kys7IAotICAgICAgICAgIGktLTsgCisgICAgICAgICAgeCsrOworICAgICAgICAgIGktLTsKICAg
ICAgICAgICBpZiAoaSA8IDApIHsKLSAgICAgICAgICAgIGkgPSA3OyAKLSAgICAgICAgICAgIHkg
PSAqYnVmZisrOyAKKyAgICAgICAgICAgIGkgPSA3OworICAgICAgICAgICAgeSA9ICpidWZmKys7
CiAgICAgICAgICAgICB3aGlsZSAoeSA9PSAweGZmICYmIHggPCBtYXgpIHsKLSAgICAgICAgICAg
ICAgeCArPSA4OyAKKyAgICAgICAgICAgICAgeCArPSA4OwogICAgICAgICAgICAgICB5ID0gKmJ1
ZmYrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbW9k
ZSA9IDA7CiAgICAgICB9Ci0gICAgICBpZiAoeCA+IG1heCkgCisgICAgICBpZiAoeCA+IG1heCkK
ICAgICAgICAgeCA9IG1heDsKICAgICAgIHQgKz0geDsKICAgICAgIC8qIG1ha2UgcHJlY2F1dGlv
bnMgZm9yIHZlcnkgbG9uZyBydW5zICovCiAgICAgICB3aGlsZSAoeCA+IDB4ZmYpIHsKLSAgICAg
ICAgKm9idWYrKyA9IDB4ZmY7IAotICAgICAgICAqb2J1ZisrID0gMDsgCisgICAgICAgICpvYnVm
KysgPSAweGZmOworICAgICAgICAqb2J1ZisrID0gMDsKICAgICAgICAgeCAtPSAweGZmOwogICAg
ICAgfQogICAgICAgKm9idWYrKyA9IHg7CkBAIC0yOTY4LDggKzI5NjgsOCBAQCBjaGFyICAgICph
cmd2W107CiAjZW5kaWYKIHsKICAgaW50ICAgICBhcmdpbmQ7ICAgICAgICAgICAgLyogYXJndW1l
bnQgaW5kZXggZm9yIGZsYWdzICAgICAgKi8KLSAgY2hhciAgICBjdXJhcmVhW1NUUlNJWkVdOyAg
LyogY3VycmVudCBmaWxlIGFyZWEgICAgICAgICAgICAgKi8KLSAgY2hhciAgICBjdXJuYW1lW1NU
UlNJWkVdOyAgLyogY3VycmVudCBmaWxlIG5hbWUgICAgICAgICAgICAgKi8KKyAgY2hhciAgICAq
Y3VyYXJlYTsJICAgICAvKiBjdXJyZW50IGZpbGUgYXJlYSAgICAgICAgICAgICAqLworICBjaGFy
ICAgICpjdXJuYW1lOyAgIAkgICAgIC8qIGN1cnJlbnQgZmlsZSBuYW1lICAgICAgICAgICAgICov
CiAgIGNoYXIgICAgKnRjcCwgKnRjcDE7ICAgICAgIC8qIHRlbXBvcmFyeSBjaGFyYWN0ZXIgcG9p
bnRlcnMgICovCiAgIGNoYXIgICAgKnRoaXNfYXJnOwogICBkb3VibGUgIHhfb2Zmc2V0ID0gMC4w
LCB5X29mZnNldCA9IDAuMDsKQEAgLTI5ODgsOSArMjk4OCw5IEBAIGNoYXIgICAgKmFyZ3ZbXTsK
ICNlbmRpZgogI2VuZGlmCiAKLSAgaWYgKGFyZ2MgPT0gMiAmJiAoc3RyY21wIChhcmd2WzFdLCAi
LS12ZXJzaW9uIikgPT0gMCkpIHsKKyAgaWYgKGFyZ2MgPT0gMiAmJiBFUShhcmd2WzFdLCAiLS12
ZXJzaW9uIikpIHsKICAgICBleHRlcm4gS1BTRURMTCBjaGFyICprcGF0aHNlYV92ZXJzaW9uX3N0
cmluZzsKLSAgICBwdXRzICgiZHZpbGooaykgMi42Iik7CisgICAgcHV0cyAoVkVSU0lPTik7CiAg
ICAgcHV0cyAoa3BhdGhzZWFfdmVyc2lvbl9zdHJpbmcpOwogICAgIHB1dHMgKCJDb3B5cmlnaHQg
KEMpIDE5OTcgR3VzdGFmIE5ldW1hbm4uXG5cCiBUaGVyZSBpcyBOTyB3YXJyYW50eS4gIFlvdSBt
YXkgcmVkaXN0cmlidXRlIHRoaXMgc29mdHdhcmVcblwKQEAgLTI5OTgsNyArMjk5OCw3IEBAIHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGkKIEZvciBtb3JlIGluZm9ybWF0
aW9uIGFib3V0IHRoZXNlIG1hdHRlcnMsIHNlZSB0aGUgZmlsZXNcblwKIG5hbWVkIENPUFlJTkcg
YW5kIGR2aTJ4eC5jLlxuXAogUHJpbWFyeSBhdXRob3Igb2YgRHZpMnh4OiBHdXN0YWYgTmV1bWFu
bjsgLWsgbWFpbnRhaW5lcjogSy4gQmVycnkuIik7Ci0gICAgZXhpdCAoMCk7IAorICAgIGV4aXQg
KDApOwogICB9CiAKICNpZmRlZiBMSjQKQEAgLTMwNDgsOSArMzA0OCw5IEBAIFByaW1hcnkgYXV0
aG9yIG9mIER2aTJ4eDogR3VzdGFmIE5ldW1hbm4KICNpZmRlZiBMSjJQCiAgICAgICBjYXNlICdk
JzogICAgICAgLyogZCBzZWxlY3RzIERVUExFWCBtb2RlICAqLwogICAgICAgICB0Y3ArKzsKLSAg
ICAgICAgaWYgKCp0Y3AgPT0gJzEnICkgCisgICAgICAgIGlmICgqdGNwID09ICcxJyApCiAgICAg
ICAgICAgRHVwbGV4TW9kZSA9IDE7Ci0gICAgICAgIGVsc2UgaWYgKCp0Y3AgPT0gJzInKSAKKyAg
ICAgICAgZWxzZSBpZiAoKnRjcCA9PSAnMicpCiAgICAgICAgICAgRHVwbGV4TW9kZSA9IDI7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgIFdhcm5pbmcoIkludmFsaWQgRFVQTEVYIG1vZGUsIGFz
c3VtaW5nIERVUExFWD0xLCBMb25nLUVkZ2UgQmluZGluZyIpOwpAQCAtMzA2MiwxMyArMzA2Miwx
MyBAQCBQcmltYXJ5IGF1dGhvciBvZiBEdmkyeHg6IEd1c3RhZiBOZXVtYW5uCiAgICAgICAgIERv
dWJsZVBhZ2UgPSBfVFJVRTsKICAgICAgICAgdGNwKys7CiAgICAgICAgIGlmICgqdGNwID09ICcx
JyB8fCAqdGNwID09ICcyJykgewotICAgICAgICAgIGlmICgqdGNwID09ICcyJykgCisgICAgICAg
ICAgaWYgKCp0Y3AgPT0gJzInKQogICAgICAgICAgICAgUHJpbnRGaXJzdFBhcnQgPSBfRkFMU0U7
Ci0gICAgICAgICAgZWxzZSAgICAgICAgICAgICAKKyAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBQcmludFNlY29uZFBhcnQgPSBfRkFMU0U7CiAgICAgICAgICAgdGNwKys7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKCp0Y3AgPT0gJy0nKSAKKyAgICAgICAgaWYgKCp0Y3AgPT0gJy0nKQogICAg
ICAgICAgIFByaW50RW1wdHlQYWdlcyA9IF9GQUxTRTsKICAgICAgICAgYnJlYWs7CiAjaWZkZWYg
TEo0CkBAIC0zMjU2LDE0ICszMjU2LDE0IEBAIFByaW1hcnkgYXV0aG9yIG9mIER2aTJ4eDogR3Vz
dGFmIE5ldW1hbm4KICNpZmRlZiBMSgogICAgICAgY2FzZSAnVic6ICAgLyogYnVnZml4ZXMgZm9y
IHZhcmlvdXMgdmVuZG9yJ3MgUENMIGVtdWxhdGlvbnMgKi8KICAgICAgICAgdGNwKys7Ci0gICAg
ICAgIGlmICgqdGNwID09ICdLJyB8fCAqdGNwID09ICdrJykgCisgICAgICAgIGlmICgqdGNwID09
ICdLJyB8fCAqdGNwID09ICdrJykKICAgICAgICAgICBreW9jZXJhX21vZGUgPSBfVFJVRTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgIGlmICgqdGNwID09ICdCJyB8fCAqdGNwID09ICdiJykgCisg
ICAgICAgICAgaWYgKCp0Y3AgPT0gJ0InIHx8ICp0Y3AgPT0gJ2InKQogICAgICAgICAgICAgYnJv
dGhlcl9tb2RlID0gX1RSVUU7CiAjIGlmZGVmIExKNAogCWVsc2UKLSAgICAgICAgaWYgKCp0Y3Ag
PT0gJzYnIHx8ICp0Y3AgPT0gJzYnKSAKKyAgICAgICAgaWYgKCp0Y3AgPT0gJzYnIHx8ICp0Y3Ag
PT0gJzYnKQogCSAgICBMSjYgPSBfVFJVRTsKICMgZW5kaWYKICAgICAgICAgYnJlYWs7CkBAIC0z
MzA2LDcgKzMzMDYsNyBAQCBQcmltYXJ5IGF1dGhvciBvZiBEdmkyeHg6IEd1c3RhZiBOZXVtYW5u
CiAjZW5kaWYKICNpZmRlZiBfX3Jpc2NvcwogICAgICAgY2FzZSAnaSc6IC8qIG5hbWUgb2YgZGly
ZWN0b3J5IHRvIHN0b3JlIGRpYWdyYW1zIGluICovCi0gICAgICAgIHRjcCsrOyAKKyAgICAgICAg
dGNwKys7CiAgICAgICAgIGRkaSA9IDA7CiAgICAgICAgIHdoaWxlICgqdGNwICE9ICcgJyAmJiAq
dGNwICE9ICdcMCcgJiYgZGRpIDwgRElBR0RJUlNJWkUtMSkgewogICAgICAgICAgIGRpYWdkaXJb
ZGRpKytdID0gKnRjcCsrOwpAQCAtMzMyOCw4ICszMzI4LDggQEAgUHJpbWFyeSBhdXRob3Igb2Yg
RHZpMnh4OiBHdXN0YWYgTmV1bWFubgogICAgICAgfQogICAgIH0gZWxzZSB7CiAKLSAgICAgICh2
b2lkKSBzdHJjcHkoZmlsZW5hbWUsIHRjcCk7Ci0gICAgICBpZiAoIXN0cmNtcChmaWxlbmFtZSwg
Ii0iKSkgeworICAgICAgZmlsZW5hbWUgPSB0Y3A7CisgICAgICBpZiAoRVEoZmlsZW5hbWUsICIt
IikpIHsKICAgICAgICAgRW1pdEZpbGVOYW1lID0gIi0iOwogI2lmZGVmIFJJU0NfVVNFX09TTAog
ICAgICAgICBkdmlmcCA9IEJJTk9QRU4oIktiZDoiKTsKQEAgLTMzMzksNTcgKzMzMzksNjggQEAg
UHJpbWFyeSBhdXRob3Igb2YgRHZpMnh4OiBHdXN0YWYgTmV1bWFubgogCSAgQXNzdXJlQmluYXJ5
KGZpbGVubyhkdmlmcCkpOwogI2VuZGlmCiAgICAgICB9IGVsc2UgeworCS8qIFNpbmNlIHRoaXMg
Y29kZSBpcyB1c2VkIG9ubHkgb25jZSBkdXJpbmcgc3RhcnR1cCwgd2UgZG9uJ3QgY2FyZQorCSAg
IGFib3V0IGZyZWUoKWluZyB0aGUgYWxsb2NhdGVkIHN0cmluZ3MgdGhhdCByZXByZXNlbnQgZmls
ZW5hbWVzLgorCSAgIEl0IHdpbGwgYmUgbW9yZSB3b3JrIHRvIHJlYWxpemUgcHJvcGVyIGRlYWxs
b2NhdGlvbiBoYW5kbGluZyB0aGFuCisJICAgaXQncyB3b3J0aCBpbiB0ZXJtcyBvZiBzYXZpbmcg
YSBmZXcgYnl0ZXMuIFdlIGNvbnNpZGVyIHRoZXNlCisJICAgYnl0ZXMgYWN0dWFsbHkgc3RhdGlj
IG1lbW9yeSB3aGVyZSB3ZSBkb24ndCBrbm93IHRoZSBzaXplIGluCisJICAgYWR2YW5jZSBhbmQg
ZG9uJ3QgYWRkIHRoZW0gdG8gdGhlIGFsbG9jYXRlZF9zdG9yYWdlIGNvdW50LgorCSAgIFsyNyBK
dW4gMDcgLWpzXSAqLwogI2lmZGVmIEtQQVRIU0VBCiAgICAgICAgIC8qIHNwbGl0IGludG8gZGly
ZWN0b3J5ICsgZmlsZSBuYW1lICovCiAJaW50IHRjcGxlbiwgYXJndmxlbjsKIAl0Y3AgPSAoY2hh
ciAqKXhiYXNlbmFtZShhcmd2W2FyZ2luZF0pOy8qIHRoaXMga25vd3MgYWJvdXQgYW55IGtpbmQg
b2Ygc2xhc2hlcyAqLwogCXRjcGxlbiA9IHN0cmxlbih0Y3ApOworCWlmICggdGNwbGVuID09IDAg
KSB7CisJICAvKiBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgRFZJIGZpbGUgbmFtZSBoYXMgYSB0cmFp
bGluZyBzbGFzaDsgdGhpcworCSAgICAgaXMgbm90IGEgdmFsaWQgbmFtZS4gVGhlbiB3ZSB0ZXJt
aW5hdGUgdGhlIGFyZ3VtZW50IHBhcnNpbmcKKwkgICAgIGxvb3AsIGEgdXNhZ2UgbWVzc2FnZSB3
aWxsIGJlIG91dHB1dCBiZWxvdy4gKi8KKwkgIGJyZWFrOworCX0KIAlhcmd2bGVuID0gc3RybGVu
KGFyZ3ZbYXJnaW5kXSk7CiAJaWYgKHRjcGxlbiA9PSBhcmd2bGVuKQotCSAgY3VyYXJlYVswXSA9
ICdcMCc7CisJICBjdXJhcmVhID0gIiI7CiAJZWxzZSB7Ci0JICAodm9pZCkgc3RyY3B5KGN1cmFy
ZWEsIGFyZ3ZbYXJnaW5kXSk7CisJICBjdXJhcmVhID0geHN0cmR1cChhcmd2W2FyZ2luZF0pOwog
CSAgY3VyYXJlYVthcmd2bGVuLXRjcGxlbl0gPSAnXDAnOwogCX0KICNlbHNlCiAgICAgICAgIHRj
cCA9IHN0cnJjaHIoYXJndlthcmdpbmRdLCAnLycpOwogICAgICAgICAvKiBzcGxpdCBpbnRvIGRp
cmVjdG9yeSArIGZpbGUgbmFtZSAqLwogICAgICAgICBpZiAodGNwID09IE5VTEwpIHsKLSAgICAg
ICAgICBjdXJhcmVhWzBdID0gJ1wwJzsKKyAgICAgICAgICBjdXJhcmVhWzBdID0gIiI7CiAgICAg
ICAgICAgdGNwID0gYXJndlthcmdpbmRdOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICh2
b2lkKSBzdHJjcHkoY3VyYXJlYSwgYXJndlthcmdpbmRdKTsKKwkgIGN1cmFyZWEgPSB4c3RyZHVw
KGFyZ3ZbYXJnaW5kXSk7CiAgICAgICAgICAgY3VyYXJlYVt0Y3AtYXJndlthcmdpbmRdKzFdID0g
J1wwJzsKICAgICAgICAgICB0Y3AgKz0gMTsKICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAg
KHZvaWQpIHN0cmNweShjdXJuYW1lLCB0Y3ApOworICAgICAgICBjdXJuYW1lID0gKGNoYXIgKikg
eG1hbGxvYyhzdHJsZW4odGNwKSs1KTsgIC8qICsgc3BhY2UgZm9yICIuZHZpIiAqLworCSh2b2lk
KSBzdHJjcHkoY3VybmFtZSwgdGNwKTsKICAgICAgICAgLyogc3BsaXQgaW50byBmaWxlIG5hbWUg
KyBleHRlbnNpb24gKi8KLSAgICAgICAgdGNwMSA9IHN0cnJjaHIodGNwLCAnLicpOworICAgICAg
ICB0Y3AxID0gc3RycmNocihjdXJuYW1lLCAnLicpOwogICAgICAgICBpZiAodGNwMSA9PSBOVUxM
KSB7Ci0gICAgICAgICAgKHZvaWQpIHN0cmNweShyb290bmFtZSwgY3VybmFtZSk7CisgICAgICAg
ICAgcm9vdG5hbWUgPSB4c3RyZHVwKGN1cm5hbWUpOwogICAgICAgICAgIHN0cmNhdChjdXJuYW1l
LCAiLmR2aSIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICp0Y3AxID0gJ1wwJzsKLSAg
ICAgICAgICAodm9pZCkgc3RyY3B5KHJvb3RuYW1lLCBjdXJuYW1lKTsKKyAgICAgICAgICByb290
bmFtZSA9IHhzdHJkdXAoY3VybmFtZSk7CiAgICAgICAgICAgKnRjcDEgPSAnLic7CiAgICAgICAg
IH0KIAorCWZpbGVuYW1lID0gKGNoYXIgKikgeG1hbGxvYyhzdHJsZW4oY3VyYXJlYSkrc3RybGVu
KGN1cm5hbWUpKzEpOwogICAgICAgICAodm9pZCkgc3RyY3B5KGZpbGVuYW1lLCBjdXJhcmVhKTsK
ICAgICAgICAgKHZvaWQpIHN0cmNhdChmaWxlbmFtZSwgY3VybmFtZSk7CiAKICAgICAgICAgaWYg
KChkdmlmcCA9IEJJTk9QRU4oZmlsZW5hbWUpKSA9PSBGUE5VTEwpIHsKICAgICAgICAgICAvKiBk
byBub3QgaW5zaXN0IG9uIC5kdmkgKi8KICAgICAgICAgICBpZiAodGNwMSA9PSBOVUxMKSB7Ci0g
ICAgICAgICAgICBpbnQgbCA9IHN0cmxlbihjdXJuYW1lKTsKLSAgICAgICAgICAgIGlmIChsID4g
NCkKLSAgICAgICAgICAgICAgY3VybmFtZVtsIC0gNF0gPSAnXDAnOwotICAgICAgICAgICAgbCA9
IHN0cmxlbihmaWxlbmFtZSk7Ci0gICAgICAgICAgICBpZiAobCA+IDQpCi0gICAgICAgICAgICAg
IGZpbGVuYW1lW2wgLSA0XSA9ICdcMCc7CisJICAgIGZpbGVuYW1lW3N0cmxlbihmaWxlbmFtZSkg
LSA0XSA9ICdcMCc7CisJICAgIGR2aWZwID0gQklOT1BFTihmaWxlbmFtZSk7CiAgICAgICAgICAg
fQotICAgICAgICAgIGlmICh0Y3AxICE9IE5VTEwgfHwgKGR2aWZwID0gQklOT1BFTihmaWxlbmFt
ZSkpID09IEZQTlVMTCkgeworICAgICAgICAgIGlmIChkdmlmcCA9PSBGUE5VTEwpIHsKICNpZmRl
ZiBNU0M1CiAgICAgICAgICAgICBGYXRhbCgiJXM6IGNhbid0IGZpbmQgRFZJIGZpbGUgXCIlc1wi
XG5cbiIsCiAgICAgICAgICAgICAgICAgICBHX3Byb2duYW1lLCBmaWxlbmFtZSk7CkBAIC0zNDEx
LDcgKzM0MjIsNyBAQCBQcmltYXJ5IGF1dGhvciBvZiBEdmkyeHg6IEd1c3RhZiBOZXVtYW5uCiAg
IHlfZ29mZnNldCA9IChzaG9ydCkgTU1fVE9fUFhMKHlfb2Zmc2V0KSArIHlfb3JpZ2luOwogCiAg
IGlmIChkdmlmcCA9PSBGUE5VTEwpIHsKLSAgICBmcHJpbnRmKEVSUl9TVFJFQU0sIlxuVGhpcyBp
cyB0aGUgRFZJIHRvICVzIGNvbnZlcnRlciB2ZXJzaW9uICVzIiwKKyAgICBmcHJpbnRmKEVSUl9T
VFJFQU0sIlxuVGhpcyBpcyB0aGUgRFZJIHRvICVzIGNvbnZlcnRlciAlcyIsCiAgICAgICAgICAg
ICBQUklOVEVSLCBWRVJTSU9OKTsKICNpZmRlZiBTRVZFTkJJVAogICAgIGZwcmludGYoRVJSX1NU
UkVBTSwiLCA3Yml0Iik7CkBAIC0zNTA3LDEzICszNTE4LDggQEAgUHJpbWFyeSBhdXRob3Igb2Yg
RHZpMnh4OiBHdXN0YWYgTmV1bWFubgogICAgIGV4aXQoMSk7CiAgIH0KICAgaWYgKEVRKEVtaXRG
aWxlTmFtZSwgIiIpKSB7Ci0gICAgaWYgKChFbWl0RmlsZU5hbWUgPSAoY2hhciAqKW1hbGxvYygg
U1RSU0laRSApKSAhPSBOVUxMKQotICAgICAgYWxsb2NhdGVkX3N0b3JhZ2UgKz0gU1RSU0laRTsK
LSAgICBlbHNlCi0gICAgICBGYXRhbCgiQ2FuJ3QgYWxsb2NhdGUgc3RvcmFnZSBvZiAlZCBieXRl
c1xuIixTVFJTSVpFKTsKLSAgICAodm9pZCkgc3RyY3B5KEVtaXRGaWxlTmFtZSwgY3VybmFtZSk7
Ci0gICAgaWYgKCh0Y3AxID0gc3RycmNocihFbWl0RmlsZU5hbWUsICcuJykpKQotICAgICAgKnRj
cDEgPSAnXDAnOworICAgIEVtaXRGaWxlTmFtZSA9IChjaGFyICopIHhtYWxsb2Moc3RybGVuKHJv
b3RuYW1lKStzaXplb2YoRU1JVEZJTEVfRVhURU5TSU9OKSk7CisgICAgKHZvaWQpIHN0cmNweShF
bWl0RmlsZU5hbWUsIHJvb3RuYW1lKTsKICAgICBzdHJjYXQoRW1pdEZpbGVOYW1lLCBFTUlURklM
RV9FWFRFTlNJT04pOwogICB9CiAgIGlmIChHX3F1aWV0KQpAQCAtMzY2OCw3ICszNjc0LDcgQEAg
Ym9vbCBQRmxhZzsKICAgaWYgKFByaW50VGVzdFBhZ2UpIEVNSVQxKCJcMDMzeiIpOwogI2lmZGVm
IHZtcwogICAvKiBsYXN0IHJlY29yZCBpcyBub3QgZmx1c2hlZCB0byBmaWxlLCB1bmxlc3MgaXQg
aXMgY29tcGxldGVseSBmaWxsZWQgKi8KLSAgZm9yIChrayA9IChpbnQpKCgqb3V0ZnApLT5fY250
KTsga2sgPiAwOyAtLWtrKSAKKyAgZm9yIChrayA9IChpbnQpKCgqb3V0ZnApLT5fY250KTsga2sg
PiAwOyAtLWtrKQogICAgIHB1dGMoJ1wwJyxvdXRmcCk7CiAgIGZmbHVzaChvdXRmcCk7CiAjZW5k
aWYKQEAgLTM2OTgsNiArMzcwNCw4IEBAIGJvb2wgUEZsYWc7CiAjZW5kaWYKICAgfQogICBDbG9z
ZUZpbGVzKCk7CisgIGlmICggdG1wX2RpclswXSAhPSAnXDAnICkKKyAgICBybWRpciAodG1wX2Rp
cik7CQkJLyogaWdub3JlIGVycm9ycyAqLwogICBleGl0KEdfZXJyZW5jKTsKIH0KIApAQCAtMzc2
NCwxNSArMzc3MiwxNSBAQCBjaGFyICoqZW5kOwogI2VuZGlmCiB7CiAgIGNoYXIgKmEsKmI7Ci0g
IAotICBhID0gczE7IAorCisgIGEgPSBzMTsKICAgYiA9IHMyOwogICB3aGlsZSAoKmEgIT0gJ1ww
JykgewogICAgIGlmICh0b2xvd2VyKCphKSAhPSB0b2xvd2VyKCpiKSkgcmV0dXJuKF9GQUxTRSk7
Ci0gICAgYSsrOyAKKyAgICBhKys7CiAgICAgYisrOwogICB9Ci0gICplbmQgPSBiOyAKKyAgKmVu
ZCA9IGI7CiAgIHJldHVybihfVFJVRSk7CiB9CiAKQEAgLTM3OTEsMTggKzM3OTksMTggQEAgY2hh
ciAqKmVuZDsKIHsKICAgY2hhciAqczsKICAgaW50IGNvdW50ID0gMDsKLSAgCisKICAgcyA9IHN0
cjsKICAgd2hpbGUgKCgqcyAhPSAnXDAnKSAmJiAoY291bnQgPCBudW1iZXIpKSB7Ci0gICAgd2hp
bGUgKCgqcyA9PSAnICcpIHx8ICgqcyA9PSAnLCcpIHx8ICgqcyA9PSAnPScpKSAKKyAgICB3aGls
ZSAoKCpzID09ICcgJykgfHwgKCpzID09ICcsJykgfHwgKCpzID09ICc9JykpCiAgICAgICBzKys7
CiAgICAgaWYgKCpzICE9ICdcMCcpIHsKICAgICAgIHJlc3VsdFtjb3VudCsrXSA9IHN0cnRvZChz
LCZzKTsKICAgICB9CiAgIH0KLSAgd2hpbGUgKCgqcyA9PSAnICcpIHx8ICgqcyA9PSAnLCcpIHx8
ICgqcyA9PSAnPScpKSAKKyAgd2hpbGUgKCgqcyA9PSAnICcpIHx8ICgqcyA9PSAnLCcpIHx8ICgq
cyA9PSAnPScpKQogICAgIHMrKzsKLSAgKmVuZCA9IHM7IAorICAqZW5kID0gczsKICAgcmV0dXJu
KGNvdW50KTsKIH0KIApAQCAtMzgyMiwyMiArMzgzMCwyMiBAQCBjaGFyICpzdHI7CiAgIGludCBy
ZXN1bHRzWzRdLG5vOwogCiAgIHMgPSBzdHI7Ci0gIHdoaWxlICgqcyA9PSAnICcpIAorICB3aGls
ZSAoKnMgPT0gJyAnKQogICAgIHMrKzsKICAgaWYgKChTdHJDb21wYXJlKCJkcmF3ZmlsZSIscywm
cykpIHx8IChTdHJDb21wYXJlKCJEVkl2aWV3X2RpYWdyYW0iLHMsJnMpKSkgewogCi0gICAgaWYg
KHByaW50ZGlhZyA9PSBfRkFMU0UpIAorICAgIGlmIChwcmludGRpYWcgPT0gX0ZBTFNFKQogICAg
ICAgcmV0dXJuKF9UUlVFKTsgLyogaXQncyBhIGRpYWdyYW0sIGJ1dCBkb24ndCBwcmludCAqLwog
Ci0gICAgd2hpbGUgKCgqcyA9PSAnICcpIHx8ICgqcyA9PSAnPScpKSAKKyAgICB3aGlsZSAoKCpz
ID09ICcgJykgfHwgKCpzID09ICc9JykpCiAgICAgICBzKys7IC8qIHNwYWNlIG9yICc9JyBzZXBh
cmF0ZXMga2V5d29yZC9rZXl2YWwgKi8KIAogICAgIGlmICgqcyA9PSAnXDAnKSB7Ci0gICAgICBm
cHJpbnRmKEVSUl9TVFJFQU0sIk5vIGZpbGVuYW1lIGdpdmVuIGZvciBcXHNwZWNpYWwtZGlhZ3Jh
bSFcbiIpOyAKKyAgICAgIGZwcmludGYoRVJSX1NUUkVBTSwiTm8gZmlsZW5hbWUgZ2l2ZW4gZm9y
IFxcc3BlY2lhbC1kaWFncmFtIVxuIik7CiAgICAgICByZXR1cm4oX1RSVUUpOwogICAgIH0KICAg
ICBzaCA9IGRpYWduYW1lOwotICAgIHdoaWxlICgoKnMgIT0gJyAnKSAmJiAoKnMgIT0gJywnKSAm
JiAoKnMgIT0gJ1wwJykpIAorICAgIHdoaWxlICgoKnMgIT0gJyAnKSAmJiAoKnMgIT0gJywnKSAm
JiAoKnMgIT0gJ1wwJykpCiAgICAgICAqc2grKyA9ICpzKys7CiAgICAgKnNoID0gJ1wwJzsKIApA
QCAtMzg0NSw3ICszODUzLDcgQEAgY2hhciAqc3RyOwogICAgIGR0LnNjYWxleCA9IGR0LnNjYWxl
eSA9IDEwMDsKICAgICBkdC5jcm9wbCA9IGR0LmNyb3BiID0gZHQuY3JvcHIgPSBkdC5jcm9wdCA9
IDA7CiAgICAgd2hpbGUgKCpzICE9ICdcMCcpIHsKLSAgICAgIHdoaWxlICgoKnMgPT0gJyAnKSB8
fCAoKnMgPT0gJywnKSkgCisgICAgICB3aGlsZSAoKCpzID09ICcgJykgfHwgKCpzID09ICcsJykp
CiAgICAgICAgIHMrKzsKICAgICAgIGlmICgqcyAhPSAnXDAnKSB7CiAgICAgICAgIGlmIChTdHJD
b21wYXJlKCJzY2FsZSIscywmcykpIHsKQEAgLTM4NTMsNyArMzg2MSw3IEBAIGNoYXIgKnN0cjsK
ICAgICAgICAgICAgIGZwcmludGYoRVJSX1NUUkVBTSwKICAgICAgICAgICAgICAgICAgICAiVG9v
IGZldyBhcmd1bWVudHMgKCVkKSBnaXZlbiBmb3IgPHNjYWxlPiAtIGlnbm9yZWQuXG4iLG5vKTsK
ICAgICAgICAgICB9Ci0gICAgICAgICAgZHQuc2NhbGV4ID0gcmVzdWx0c1swXTsgCisgICAgICAg
ICAgZHQuc2NhbGV4ID0gcmVzdWx0c1swXTsKICAgICAgICAgICBkdC5zY2FsZXkgPSByZXN1bHRz
WzFdOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKFN0ckNvbXBhcmUoImNyb3AiLHMsJnMp
KSB7CkBAIC0zODYxLDE1ICszODY5LDE1IEBAIGNoYXIgKnN0cjsKICAgICAgICAgICAgIGZwcmlu
dGYoRVJSX1NUUkVBTSwKICAgICAgICAgICAgICAgICAgICAiVG9vIGZldyBhcmd1bWVudHMgKCVk
KSBnaXZlbiBmb3IgPGNyb3A+IC0gaWdub3JlZC5cbiIsbm8pOwogICAgICAgICAgIH0KLSAgICAg
ICAgICBkdC5jcm9wbCA9IHJlc3VsdHNbMF07IAorICAgICAgICAgIGR0LmNyb3BsID0gcmVzdWx0
c1swXTsKICAgICAgICAgICBkdC5jcm9wciA9IHJlc3VsdHNbMV07Ci0gICAgICAgICAgZHQuY3Jv
cHQgPSByZXN1bHRzWzJdOyAKKyAgICAgICAgICBkdC5jcm9wdCA9IHJlc3VsdHNbMl07CiAgICAg
ICAgICAgZHQuY3JvcGIgPSByZXN1bHRzWzNdOwogICAgICAgICB9CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgIGZwcmludGYoRVJSX1NUUkVBTSwiQmFkIFxcc3BlY2lhbCBrZXl3b3JkIC0gPCVz
PiBpZ25vcmVkXG4iLHMpOwogICAgICAgICAgIC8qIHNraXAgb3ZlciB0aGlzIHdvcmQgKi8KLSAg
ICAgICAgICB3aGlsZSAoKCpzICE9ICcgJykgJiYgKCpzICE9ICcsJykgJiYgKCpzICE9ICc9Jykg
JiYgKCpzICE9ICdcMCcpKSAKKyAgICAgICAgICB3aGlsZSAoKCpzICE9ICcgJykgJiYgKCpzICE9
ICcsJykgJiYgKCpzICE9ICc9JykgJiYgKCpzICE9ICdcMCcpKQogICAgICAgICAgICAgcysrOwog
ICAgICAgICB9CiAgICAgICB9CkBAIC0zODc5LDcgKzM4ODcsNyBAQCBjaGFyICpzdHI7CiAgICAg
ZGlhZ3JhbShkaWFnbmFtZSwmZHQpOwogICAgIHJldHVybihfVFJVRSk7CiAgIH0KLSAgZWxzZSAK
KyAgZWxzZQogICAgIHJldHVybihfRkFMU0UpOwogfQogIyBlbmRpZiAvKiBMSiAqLwpAQCAtMzg5
NSw3MCArMzkwMyw1OCBAQCBjaGFyICpzdHI7CiBpbnQgIG47CiAjZW5kaWYKIHsKLSAgY2hhciAg
ICBzcGJ1ZltTVFJTSVpFXSwgeHNbU1RSU0laRV0sIHlzW1NUUlNJWkVdOwotICBjaGFyICAgICpz
ZiA9IE5VTEwsICpwc2ZpbGUgPSBOVUxMOworICBjaGFyICAgIHhzW1NUUlNJWkVdLCB5c1tTVFJT
SVpFXTsKKyAgY2hhciAgICAqaW5jbHVkZV9maWxlID0gTlVMTDsKKyAgZW51bSAgICB7IFZlcmJG
aWxlLCBIUEZpbGUsIFBTRmlsZSB9IGZpbGVfdHlwZTsKICAgZmxvYXQgICB4LHk7CiAgIGxvbmc0
ICAgeF9wb3MsIHlfcG9zOwogICBLZXlXb3JkIGs7CiAgIGludCAgICAgaSwgaiwgajE7CiAgIHN0
YXRpYyAgaW50ICAgR3JheVNjYWxlID0gMTAsIFBhdHRlcm4gPSAxOwogICBzdGF0aWMgIGJvb2wg
IEdyYXlGaWxsID0gX1RSVUU7Ci0gIHN0YXRpYyAgbG9uZzQgcF94WzgwXSwgcF95WzgwXTsKLSAg
aW50IGxseD0wLCBsbHk9MCwgdXJ4PTAsIHVyeT0wLCByd2k9MCwgcmhpPTA7Ci0jaWZkZWYgV0lO
MzIKLSAgY2hhciAgICAqZ3NfcGF0aDsKLSNlbmRpZgorICBzdGF0aWMgIGxvbmc0IHBfeFtNQVhf
U1BFQ0lBTF9ERUZQT0lOVFNdLCBwX3lbTUFYX1NQRUNJQUxfREVGUE9JTlRTXTsKKyAgaW50IGxs
eD0wLCBsbHk9MCwgdXJ4PTAsIHVyeT0wLCByd2k9MDsKIAogICBzdHJbbl0gPSAnXDAnOwotICBz
cGJ1ZlswXSA9ICdcMCc7CisgIGZvciAoIGk9MCA7IGk8TUFYX1NQRUNJQUxfREVGUE9JTlRTIDsg
aSsrICkKKyAgICBwX3hbaV0gPSBwX3lbaV0gPSAtMTsKIAogICBTZXRQb3NuKGgsIHYpOwogI2lm
ZGVmIF9fcmlzY29zCiAjaWZkZWYgTEoKLSAgaWYgKFBhcnNlRGlhZ3JhbShzdHIpKSAKKyAgaWYg
KFBhcnNlRGlhZ3JhbShzdHIpKQogICAgIHJldHVybjsKICNlbmRpZgogI2VuZGlmCi0gCisKICAg
d2hpbGUgKCAoc3RyID0gR2V0S2V5U3RyKHN0ciwgJmspKSAhPSBOVUxMICkgewogICAgIC8qIGdl
dCBhbGwga2V5d29yZC12YWx1ZSBwYWlycyAqLwogICAgIC8qIGZvciBjb21wYXRpYmlsaXR5LCBz
aW5nbGUgd29yZHMgYXJlIHRha2VuIGFzIGZpbGUgbmFtZXMgKi8KICAgICBpZiAoIGsudnQgPT0g
Tm9uZSAmJiBhY2Nlc3Moay5LZXksIDApID09IDApIHsKLSAgICAgIGlmICggc2YKLSNpZmRlZiBL
UEFUSFNFQQotICAgICAgICAgICAmJiAha3BzZV90ZXhfaHVzaCAoInNwZWNpYWwiKQotI2VuZGlm
Ci0gICAgICAgICApCi0gICAgICAgIFdhcm5pbmcoIk1vcmUgdGhhbiBvbmUgXFxzcGVjaWFsIGZp
bGUgbmFtZSBnaXZlbi4gJXMgaWdub3JlZCIsIHNmKTsKLSAgICAgICh2b2lkKSBzdHJjcHkoc3Bi
dWYsIGsuS2V5KTsKLSAgICAgIHNmID0gc3BidWY7Ci0gICAgICAvKgotICAgICAgICBmb3IgKGog
PSAxOyAoKHNmW2pdPT0nLycgPyBzZltqXT0nXFwnOnNmW2pdKSAhPSAnXDAnKTsgaisrKTsKLSAg
ICAgICAgKi8KLSAgICB9IGVsc2UgaWYgKCBHZXRLZXlWYWwoICZrLCBLZXlUYWIsIE5LRVlTLCAm
aSApICYmIGkgIT0gLTEgKQorICAgICAgaWYgKCBpbmNsdWRlX2ZpbGUgJiYgIWtwc2VfdGV4X2h1
c2ggKCJzcGVjaWFsIikgKSB7CisgICAgICAgIFdhcm5pbmcoIk1vcmUgdGhhbiBvbmUgXFxzcGVj
aWFsIGZpbGUgbmFtZSBnaXZlbi4gJXMgaWdub3JlZCIsIGluY2x1ZGVfZmlsZSk7CisJZnJlZSAo
aW5jbHVkZV9maWxlKTsKKyAgICAgIH0KKyAgICAgIGluY2x1ZGVfZmlsZSA9IHhzdHJkdXAoay5L
ZXkpOworICAgICAgZmlsZV90eXBlID0gVmVyYkZpbGU7CisgICAgfSBlbHNlIGlmICggR2V0S2V5
VmFsKCAmaywgS2V5VGFiLCBOS0VZUywgJmkgKSAmJiBpICE9IC0xICkgewogICAgICAgc3dpdGNo
IChpKSB7CiAgICAgICBjYXNlIFBTRklMRToKLSAgICAgICAgaWYgKHNmCi0jaWZkZWYgS1BBVEhT
RUEKLSAgICAgICAgICAgICYmICFrcHNlX3RleF9odXNoICgic3BlY2lhbCIpCi0jZW5kaWYKLSAg
ICAgICAgICAgICkKLSAgICAgICAgICAgIFdhcm5pbmcoIk1vcmUgdGhhbiBvbmUgXFxzcGVjaWFs
IGZpbGUgbmFtZSBnaXZlbi4gJXMgaWdub3JlZCIsIHNmKTsKLSAgICAgICAgKHZvaWQpIHN0cmNw
eShzcGJ1Ziwgay5WYWwpOwotICAgICAgICBwc2ZpbGUgPSBzcGJ1ZjsKLSAgICAgICAgLyoKLSAg
ICAgICAgICBmb3IgKGo9MTsgKChzZltqXT09Jy8nID8gc2Zbal09J1xcJzpzZltqXSkgIT0gJ1ww
Jyk7IGorKyk7Ci0gICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBpbmNsdWRlX2ZpbGUgKSB7CisJ
ICBXYXJuaW5nKCJNb3JlIHRoYW4gb25lIFxcc3BlY2lhbCBmaWxlIG5hbWUgZ2l2ZW4uICVzIGln
bm9yZWQiLCBpbmNsdWRlX2ZpbGUpOworCSAgZnJlZShpbmNsdWRlX2ZpbGUpOworCX0KKyAgICAg
ICAgaW5jbHVkZV9maWxlID0geHN0cmR1cChrLlZhbCk7CisJZmlsZV90eXBlID0gUFNGaWxlOwog
ICAgICAgICBicmVhazsKLSAgICAgICAgCisKICAgICAgIGNhc2UgSFBGSUxFOgotICAgICAgICBp
ZiAoc2YpCi0gICAgICAgICAgICBXYXJuaW5nKCJNb3JlIHRoYW4gb25lIFxcc3BlY2lhbCBmaWxl
IG5hbWUgZ2l2ZW4uICVzIGlnbm9yZWQiLCBzZik7Ci0gICAgICAgICh2b2lkKSBzdHJjcHkoc3Bi
dWYsIGsuVmFsKTsKLSAgICAgICAgc2YgPSBzcGJ1ZjsKLSAgICAgICAgLyoKLSAgICAgICAgICBm
b3IgKGo9MTsgKChzZltqXT09Jy8nID8gc2Zbal09J1xcJzpzZltqXSkgIT0gJ1wwJyk7IGorKyk7
Ci0gICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBpbmNsdWRlX2ZpbGUgJiYgIWtwc2VfdGV4X2h1
c2ggKCJzcGVjaWFsIikgKSB7CisJICBXYXJuaW5nKCJNb3JlIHRoYW4gb25lIFxcc3BlY2lhbCBm
aWxlIG5hbWUgZ2l2ZW4uICVzIGlnbm9yZWQiLCBpbmNsdWRlX2ZpbGUpOworCSAgZnJlZShpbmNs
dWRlX2ZpbGUpOworCX0KKyAgICAgICAgaW5jbHVkZV9maWxlID0geHN0cmR1cChrLlZhbCk7CisJ
ZmlsZV90eXBlID0gSFBGaWxlOwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBPUklFTlRB
VElPTjoKQEAgLTM5NzcsMjQgKzM5NzMsMjYgQEAgaW50ICBuOwogICAgICAgICAgIEVNSVQyKCJc
MDMzJmwlZE9cMDMzKnJGIiwgKHVuc2lnbmVkIGNoYXIpay52LmkpOwogICAgICAgICB9CiAjZW5k
aWYKLSAgICAgICAgZWxzZQotI2lmZGVmIEtQQVRIU0VBCi0gICAgICAgICAgIGlmICgha3BzZV90
ZXhfaHVzaCAoInNwZWNpYWwiKSkKLSNlbmRpZgotICAgICAgICAgIFdhcm5pbmcoICJJbnZhbGlk
IG9yaWVudGF0aW9uICglZClnaXZlbjsgaWdub3JlZC4iLCBrLnYuaSk7CisgICAgICAgIGVsc2Ug
eworCSAgV2FybmluZyggIkludmFsaWQgb3JpZW50YXRpb24gKCVkKSBnaXZlbjsgaWdub3JlZC4i
LCBrLnYuaSk7CisJfQogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBSRVNFVFBPSU5UUzoK
LSAgICAgICAgKHZvaWQpIHN0cmNweShzcGJ1Ziwgay5WYWwpOwotCi0gICAgICAgIHNmID0gTlVM
TDsKKwlmb3IgKCBpPTAgOyBpPE1BWF9TUEVDSUFMX0RFRlBPSU5UUyA7IGkrKyApCisJICBwX3hb
aV0gPSBwX3lbaV0gPSAtMTsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgREVGUE9JTlQ6
Ci0gICAgICAgICh2b2lkKSBzdHJjcHkoc3BidWYsIGsuVmFsKTsKLSAgICAgICAgaSA9IHNzY2Fu
ZihzcGJ1ZiwiJWQoJVteLF0sJXMpIiwmaix4cyx5cyk7CisJLyogMjU0IGlzIFNUUlNJWkUtMS4g
Y3BwIHNob3VsZCBiZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGF0IG51bWJlci4gKi8KKyAgICAgICAg
aSA9IHNzY2FuZihrLlZhbCwiJWQoJTI1NFteLF0sJTI1NHMpIiwmaix4cyx5cyk7CiAgICAgICAg
IGlmIChpPjApIHsKLSAgICAgICAgICB4X3BvcyA9IGg7IAorCSAgaWYgKCBqIDwgMCAgfHwgIGog
Pj0gTUFYX1NQRUNJQUxfREVGUE9JTlRTICkgeworCSAgICBXYXJuaW5nICgiZGVmcG9pbnQgJWQg
aWdub3JlZCwgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kICVkIiwKKwkJICAgICBqLCBNQVhfU1BFQ0lB
TF9ERUZQT0lOVFMpOworCSAgICBicmVhazsKKwkgIH0KKyAgICAgICAgICB4X3BvcyA9IGg7CiAg
ICAgICAgICAgeV9wb3MgPSB2OwogICAgICAgICAgIGlmIChpPjEpIHsKICAgICAgICAgICAgIGlm
IChzc2NhbmYoeHMsIiVmcHQiLCZ4KT4wKSB7CkBAIC00MDEwLDIwICs0MDA4LDM0IEBAIGludCAg
bjsKICAgICAgICAgICB9CiAgICAgICAgICAgcF94W2pdPXhfcG9zOwogICAgICAgICAgIHBfeVtq
XT15X3BvczsKLSAgICAgICAgfSBlbHNlCi0jaWZkZWYgS1BBVEhTRUEKLSAgICAgICAgICAgICAg
aWYgKCFrcHNlX3RleF9odXNoICgic3BlY2lhbCIpKQotI2VuZGlmCi0gICAgICAgICAgV2Fybmlu
ZygiaW52YWxpZCBwb2ludCBkZWZpbml0aW9uXG4iKTsKLQotICAgICAgICBzZiA9IE5VTEw7Cisg
ICAgICAgIH0gZWxzZSB7CisJICBXYXJuaW5nKCJpbnZhbGlkIHBvaW50IGRlZmluaXRpb24iKTsK
Kwl9CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEZJTEw6Ci0gICAgICAgICh2b2lkKSBz
dHJjcHkoc3BidWYsIGsuVmFsKTsKLSAgICAgICAgaSA9IHNzY2FuZihzcGJ1ZiwiJWQvJWQgJXMi
LCZqLCZqMSx4cyk7CisJLyogMjU0IGlzIFNUUlNJWkUtMS4gY3BwIHNob3VsZCBiZSB1c2VkIHRv
IGNvbnN0cnVjdCB0aGF0IG51bWJlci4gKi8KKyAgICAgICAgaSA9IHNzY2FuZihrLlZhbCwiJWQv
JWQgJTI1NHMiLCZqLCZqMSx4cyk7CiAgICAgICAgIGlmIChpPjEpIHsKICNpZmRlZiBMSgorCSAg
aWYgKCBqIDwgMCB8fCBqID49IE1BWF9TUEVDSUFMX0RFRlBPSU5UUyApIHsKKwkgICAgV2Fybmlu
ZyAoImZpbGwgaWdub3JlZCwgcG9pbnQgJWQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kICVkIiwKKwkJ
ICAgICBqLCBNQVhfU1BFQ0lBTF9ERUZQT0lOVFMpOworCSAgICBicmVhazsKKwkgIH0KKwkgIGlm
ICggcF94W2pdID09IC0xICkgeworCSAgICBXYXJuaW5nICgiZmlsbCBpZ25vcmVkLCBwb2ludCAl
ZCBpcyB1bmRlZmluZWRcbiIsIGopOworCSAgICBicmVhazsKKwkgIH0KKwkgIGlmICggajEgPCAw
IHx8IGoxID49IE1BWF9TUEVDSUFMX0RFRlBPSU5UUyApIHsKKwkgICAgV2FybmluZyAoImZpbGwg
aWdub3JlZCwgcG9pbnQgJWQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kICVkIiwKKwkJICAgICBqMSwg
TUFYX1NQRUNJQUxfREVGUE9JTlRTKTsKKwkgICAgYnJlYWs7CisJICB9CisJICBpZiAoIHBfeFtq
MV0gPT0gLTEgKSB7CisJICAgIFdhcm5pbmcgKCJmaWxsIGlnbm9yZWQsIHBvaW50ICVkIGlzIHVu
ZGVmaW5lZFxuIiwgajEpOworCSAgICBicmVhazsKKwkgIH0KICAgICAgICAgICBTZXRQb3NuKHBf
eFtqXSwgcF95W2pdKTsKICAgICAgICAgICB4X3BvcyA9IChsb25nNClQSVhST1VORChwX3hbajFd
LXBfeFtqXSwgaGNvbnYpOwogICAgICAgICAgIHlfcG9zID0gKGxvbmc0KVBJWFJPVU5EKHBfeVtq
MV0tcF95W2pdLCB2Y29udik7CkBAIC00MDQzLDIyICs0MDU1LDE4IEBAIGludCAgbjsKICAgICAg
ICAgaWYgKChrLnYuaSA+PSAwKSAmJiAoay52LmkgPCAxMDEpKSB7CiAgICAgICAgICAgR3JheVNj
YWxlID0gay52Lmk7CiAgICAgICAgICAgR3JheUZpbGwgPSBfVFJVRTsKLSAgICAgICAgfSBlbHNl
Ci0jaWZkZWYgS1BBVEhTRUEKLSAgICAgICAgICAgaWYgKCFrcHNlX3RleF9odXNoICgic3BlY2lh
bCIpKQotI2VuZGlmCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgV2FybmluZyggIkludmFs
aWQgZ3JheSBzY2FsZSAoJWQpIGdpdmVuOyBpZ25vcmVkLiIsIGsudi5pKTsKKwl9CiAgICAgICAg
IGJyZWFrOwogCiAgICAgICBjYXNlIFBBVFRFUk46CiAgICAgICAgIGlmICgoay52LmkgPj0gMCkg
JiYgKGsudi5pIDwgNykpIHsKICAgICAgICAgICBQYXR0ZXJuID0gay52Lmk7CiAgICAgICAgICAg
R3JheUZpbGwgPSBfRkFMU0U7Ci0gICAgICAgIH0gZWxzZQotI2lmZGVmIEtQQVRIU0VBCi0gICAg
ICAgICAgIGlmICgha3BzZV90ZXhfaHVzaCAoInNwZWNpYWwiKSkKLSNlbmRpZgorICAgICAgICB9
IGVsc2UgewogICAgICAgICAgIFdhcm5pbmcoICJJbnZhbGlkIHBhdHRlcm4gKCVkKSBnaXZlbjsg
aWdub3JlZC4iLCBrLnYuaSk7CisJfQogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBMTFg6
IGxseCA9IGsudi5pOyBicmVhazsKQEAgLTQwNjYsMTAzICs0MDc0LDE2MSBAQCBpbnQgIG47CiAg
ICAgICBjYXNlIFVSWDogdXJ4ID0gay52Lmk7IGJyZWFrOwogICAgICAgY2FzZSBVUlk6IHVyeSA9
IGsudi5pOyBicmVhazsKICAgICAgIGNhc2UgUldJOiByd2kgPSBrLnYuaTsgYnJlYWs7Ci0gICAg
ICBjYXNlIFJISTogcmhpID0gay52Lmk7IGJyZWFrOworICAgICAgY2FzZSBSSEk6CisJaWYgKCFr
cHNlX3RleF9odXNoICgic3BlY2lhbCIpKQorCSAgV2FybmluZygiV2hhdGV2ZXIgcmhpIHdhcyBn
b29kIGZvciBvbmNlLCBpdCBpcyBpZ25vcmVkIG5vdy4iKTsKKwlicmVhazsKIAogICAgICAgZGVm
YXVsdDoKLSNpZmRlZiBLUEFUSFNFQQotICAgICAgICAgICBpZiAoIWtwc2VfdGV4X2h1c2ggKCJz
cGVjaWFsIikpCi0jZW5kaWYKLSAgICAgICAgV2FybmluZygiQ2FuJ3QgaGFuZGxlICVzPSVzIGNv
bW1hbmQ7IGlnbm9yZWQuIiwgay5LZXksIGsuVmFsKTsKKwlpZiAoICFrcHNlX3RleF9odXNoICgi
c3BlY2lhbCIpICkKKwkgIFdhcm5pbmcoIkNhbid0IGhhbmRsZSAlcz0lcyBjb21tYW5kOyBpZ25v
cmVkLiIsIGsuS2V5LCBrLlZhbCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgICAgCi0g
ICAgZWxzZQotI2lmZGVmIEtQQVRIU0VBCi0gICAgICAgICAgIGlmICgha3BzZV90ZXhfaHVzaCAo
InNwZWNpYWwiKSkKLSNlbmRpZgorCisgICAgfSBlbHNlIGlmICgha3BzZV90ZXhfaHVzaCAoInNw
ZWNpYWwiKSkgewogICAgICAgV2FybmluZygiSW52YWxpZCBrZXl3b3JkIG9yIHZhbHVlIGluIFxc
c3BlY2lhbCAtIDwlcz4gaWdub3JlZCIsIGsuS2V5KTsKKyAgICB9CisKKyAgICBmcmVlIChrLktl
eSk7CisgICAgaWYgKCBrLlZhbCAhPSBOVUxMICkgIGZyZWUoay5WYWwpOwogICB9CiAKLSAgaWYg
KCBzZiB8fCBwc2ZpbGUgKSB7CisgIGlmICggaW5jbHVkZV9maWxlICkgewogICAgIGxhc3Rfcngg
PSBsYXN0X3J5ID0gVU5LTk9XTjsKICNpZmRlZiBJQk0zODEyCiAgICAgUE1QZmx1c2g7CiAjZW5k
aWYKLSAgICBpZiAoc2YpIHsKLSAgICAgIGlmIChpID09IEhQRklMRSkgCi0gICAgICAgIENvcHlI
UEZpbGUoIHNmICk7Ci0gICAgICBlbHNlIAotICAgICAgICBDb3B5RmlsZSggc2YgKTsKLSAgICB9
Ci0gICAgZWxzZQorCiAjaWZkZWYgTEoKLSAgICAgIGlmIChwc2ZpbGUpIHsKLSAgICAgICAgLyog
aW50IGhlaWdodCA9IHJ3aSAqICh1cnggLSBsbHgpIC8gKHVyeSAtIGxseSk7Ki8KLSAgICAgICAg
aW50IHdpZHRoICA9IHVyeCAtIGxseDsKLSAgICAgICAgaW50IGhlaWdodCA9IHVyeSAtIGxseTsK
LSAgICAgICAgY2hhciBjbWRbMjU1XTsKLSAgICAgICAgaW50IHNjYWxlX2ZhY3RvciAgICA9IDMw
MDAgKiB3aWR0aCAvIHJ3aTsKLSAgICAgICAgaW50IGFkanVzdGVkX2hlaWdodCA9IGhlaWdodCAq
IDMwMC9zY2FsZV9mYWN0b3I7Ci0gICAgICAgIGludCBhZGp1c3RlZF9sbHggICAgPSBsbHggICAg
KiAzMDAvc2NhbGVfZmFjdG9yOwotICAgICAgICBjaGFyICpwcmludGVyID0gImxqZXRwbHVzIjsg
LyogdXNlIHRoZSBtb3N0IHN0dXBpZCBvbmUgKi8KLQotCi0gICAgICAgIGNoYXIgc2NhbGVfZmls
ZV9uYW1lWzI1NV07Ci0gICAgICAgIGNoYXIgKnNjYWxlX2ZpbGUgPSB0bXBuYW0oc2NhbGVfZmls
ZV9uYW1lKTsKLSAgICAgICAgY2hhciAqcGNsX2ZpbGUgPSB0bXBuYW0oTlVMTCk7ICAKLSAgICAg
ICAgRklMRVBUUiBzY2FsZWY7Ci0KLSAgICAgICAgaWYgKCAoc2NhbGVmID0gQk9VVE9QRU4oc2Nh
bGVfZmlsZSkpID09IEZQTlVMTCApIHsKLSAgICAgICAgICBXYXJuaW5nKCJVbmFibGUgdG8gb3Bl
biBmaWxlICVzIGZvciB3cml0aW5nIiwgc2NhbGVfZmlsZSApOwotICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBmcHJpbnRmKHNjYWxlZiwgIiUuMmYgJS4yZiBzY2FsZVxuJWQg
JWQgdHJhbnNsYXRlXG4iLCAgCi0gICAgICAgICAgICAgICAgMzAwLjAvc2NhbGVfZmFjdG9yLCAz
MDAuMC9zY2FsZV9mYWN0b3IsCi0gICAgICAgICAgICAgICAgMCwgYWRqdXN0ZWRfaGVpZ2h0ID09
IGhlaWdodCA/IDAgOiB1cnkpOwotICAgICAgICBCQ0xPU0UoIHNjYWxlZiApOworICAgIGlmICgg
ZmlsZV90eXBlID09IFBTRmlsZSkgeworICAgICAgLyogaW50IGhlaWdodCA9IHJ3aSAqICh1cngg
LSBsbHgpIC8gKHVyeSAtIGxseSk7Ki8KKyAgICAgIGludCB3aWR0aCAgPSB1cnggLSBsbHg7Cisg
ICAgICBpbnQgaGVpZ2h0ID0gdXJ5IC0gbGx5OworICAgICAgY2hhciBjbWRbMjU1XTsKKyAgICAg
IGNoYXIgKmNtZF9mb3JtYXQgPSAiJXMgLXEgLWRTSU1QTEUgLWRTQUZFUiAtZE5PUEFVU0UgLXNE
RVZJQ0U9JXMgLXNPdXRwdXRGaWxlPSVzICVzICVzIHNob3dwYWdlLnBzIC1jIHF1aXQiOworICAg
ICAgY2hhciAqZ3NfY21kOworICAgICAgaW50IHNjYWxlX2ZhY3RvciwgYWRqdXN0ZWRfaGVpZ2h0
LCBhZGp1c3RlZF9sbHg7CisgICAgICBjaGFyICpwcmludGVyID0gImxqZXRwbHVzIjsgLyogdXNl
IHRoZSBtb3N0IHN0dXBpZCBvbmUgKi8KKworICAgICAgY2hhciBwY2xfZmlsZVtTVFJTSVpFXTsK
KyAgICAgIGNoYXIgc2NhbGVfZmlsZVtTVFJTSVpFXTsKKyAgICAgIEZJTEVQVFIgc2NhbGVmOwor
CisgICAgICBpZiAoIHVyeCA9PSAwIHx8IHVyeSA9PSAwIHx8IHJ3aSA9PSAwICkgeworCS8qIFNp
bmNlIGR2aXBzJyBwc2ZpbGUgc3BlY2lhbCBoYXMgYSBkaWZmZXJlbnQgc3ludGF4LCB0aGlzIG1p
Z2h0CisJICAgd2VsbCBiZSBvbmUgb2YgdGhvc2Ugc3BlY2lhbHMsIGkuZS4sIGEgbm9uLWR2aWxq
ayBzcGVjaWFsLiBUaGVuCisJICAgdGhlIFdhcm5pbmcgc2hvdWxkIGJlIHN1cHByZXNzYWJsZS4g
Ki8KKwlpZiAoICFrcHNlX3RleF9odXNoICgic3BlY2lhbCIpICkKKwkgIFdhcm5pbmcgKCJJZ25v
cmluZyBwc2ZpbGUgc3BlY2lhbCB3aXRob3V0IHVyeCwgdXJ5IGFuZCByd2kgYXR0cmlidXRlcyIp
OworCWZyZWUgKGluY2x1ZGVfZmlsZSk7CisJcmV0dXJuOworICAgICAgfQorICAgICAgc2NhbGVf
ZmFjdG9yICAgID0gMzAwMCAqIHdpZHRoIC8gcndpOworICAgICAgYWRqdXN0ZWRfaGVpZ2h0ID0g
aGVpZ2h0ICogMzAwL3NjYWxlX2ZhY3RvcjsKKyAgICAgIGFkanVzdGVkX2xseCAgICA9IGxseCAg
ICAqIDMwMC9zY2FsZV9mYWN0b3I7CisKKyAgICAgIC8qIFdlIGNhbm5vdCB1c2UgbWtzdGVtcCwg
YXMgd2UgY2Fubm90IHBhc3MgdHdvIG9wZW4gZmlsZSBkZXNjcmlwdG9ycworCSBwb3J0YWJseSB0
byBHaG9zdHNjcmlwdC4gV2UgZG9uJ3Qgd2FudCB0byB1c2UgdG1wbmFtKCkgb3IgdGVtcG5hbSgp
CisJIGVpdGhlciwgYXMgdGhleSBoYXZlIHRlbXBmaWxlIGNyZWF0aW9uIHJhY2UgY29uZGl0aW9u
cy4gSW5zdGVhZCB3ZQorCSBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdpdGggbWtkdGVt
cCgpIC0tIGlmIHRoYXQncyBhdmFpbGFibGUuCisJIElmIG5vdCwgd2UgYXJlIHRocm93biBiYWNr
IHRvIHRlbXBuYW0oKSwgdG8gZ2V0IG91ciBmdW5jdGlvbmFsaXR5CisJIGF0IGFsbC4gV2UgbmVl
ZCB0byBjcmVhdGUgdGhlIHRlbXBvcmFyeSBkaXJlY3Rvcnkgb25seSBvbmNlIHBlcgorCSBydW47
IGl0IHdpbGwgYmUgZGVsZXRlZCBpbiBBbGxEb25lKCkuICovCisgICAgICBpZiAoIHRtcF9kaXJb
MF0gPT0gJ1wwJyApIHsKKwljaGFyICogYmFzZV9kaXI7CisJaWYgKCAoYmFzZV9kaXIgPSBnZXRl
bnYoIlRNUERJUiIpKSA9PSBOVUxMICkgeworCSAgYmFzZV9kaXIgPSAiL3RtcCI7CisJfSBlbHNl
IGlmICggc3RybGVuKGJhc2VfZGlyKSA+IFNUUlNJWkUgLSBzaXplb2YoIi9kdmlsamtYWFhYWFgv
aW5jbHVkZS5wY2wiKSApIHsKKwkgIFdhcm5pbmcgKCJUTVBESVIgJXMgaXMgdG9vIGxvbmcsIHVz
aW5nIC90bXAgaW5zdGVhZCIsIGJhc2VfZGlyKTsKKwkgIGJhc2VfZGlyID0gIi90bXAiOworCX0K
KwlpZiAoIGJhc2VfZGlyWzBdID09ICcvJyAgJiYgYmFzZV9kaXJbMV0gPT0gJ1wwJyApIHsKKwkg
IFdhcm5pbmcgKCJGZWVsaW5nIG5hdWdodHksIGRvIHdlPyAvIGlzIG5vIHRlbXBvcmFyeSBkaXJl
Y3RvcnksIGR1ZGUiKTsKKwkgIGJhc2VfZGlyID0gIi90bXAiOworCX0KKwlzdHJjcHkgKHRtcF9k
aXIsIGJhc2VfZGlyKTsKKwlzdHJjYXQgKHRtcF9kaXIsICIvZHZpbGprWFhYWFhYIik7CisJaWYg
KCBta2R0ZW1wKHRtcF9kaXIpID09IE5VTEwgKSB7CisJICBXYXJuaW5nICgiQ291bGQgbm90IGNy
ZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5ICVzLCBlcnJubyA9ICVkOyBpZ25vcmluZyBpbmNsdWRl
IGZpbGUgc3BlY2lhbCIsCisJCSAgIHRtcF9kaXIsIGVycm5vKTsKKwkgIHJldHVybjsKKwl9Cisg
ICAgICB9CisgICAgICBzdHJjcHkocGNsX2ZpbGUsIHRtcF9kaXIpOworICAgICAgc3RyY2F0KHBj
bF9maWxlLCAiL2luY2x1ZGUucGNsIik7CisgICAgICBzdHJjcHkoc2NhbGVfZmlsZSwgdG1wX2Rp
cik7CisgICAgICBzdHJjYXQoc2NhbGVfZmlsZSwgIi9zY2FsZS5wcyIpOworCisgICAgICBpZiAo
IChzY2FsZWYgPSBCT1VUT1BFTihzY2FsZV9maWxlKSkgPT0gRlBOVUxMICkgeworCVdhcm5pbmco
IlVuYWJsZSB0byBvcGVuIGZpbGUgJXMgZm9yIHdyaXRpbmciLCBzY2FsZV9maWxlICk7CisJZnJl
ZSAoaW5jbHVkZV9maWxlKTsKKwl1bmxpbmsoc2NhbGVfZmlsZSk7CQkvKiBpZ25vcmUgZXJyb3Ig
Ki8KKwlyZXR1cm47CisgICAgICB9CisgICAgICBmcHJpbnRmKHNjYWxlZiwgIiUuMmYgJS4yZiBz
Y2FsZVxuJWQgJWQgdHJhbnNsYXRlXG4iLAorCSAgICAgIDMwMC4wL3NjYWxlX2ZhY3RvciwgMzAw
LjAvc2NhbGVfZmFjdG9yLAorCSAgICAgIDAsIGFkanVzdGVkX2hlaWdodCA9PSBoZWlnaHQgPyAw
IDogdXJ5KTsKKyAgICAgIEJDTE9TRSggc2NhbGVmICk7CiAKICNpZmRlZiBXSU4zMgotCWdzX3Bh
dGggPSBnZXRlbnYoIkdTX1BBVEgiKTsKLQlpZiAoIWdzX3BhdGgpCi0JICBnc19wYXRoID0gImdz
d2luMzJjLmV4ZSI7Ci0gICAgICAgIHNwcmludGYoY21kLCIlcyAtcSAtZFNJTVBMRSAtZFNBRkVS
IC1kTk9QQVVTRSAtc0RFVklDRT0lcyAtc091dHB1dEZpbGU9JXMgJXMgJXMgc2hvd3BhZ2UucHMg
LWMgcXVpdCIsCi0JCWdzX3BhdGgsIHByaW50ZXIsIHBjbF9maWxlLCBzY2FsZV9maWxlLCBwc2Zp
bGUpOwotI2Vsc2UKLSAgICAgICAgc3ByaW50ZihjbWQsImdzIC1xIC1kU0lNUExFIC1kU0FGRVIg
LWROT1BBVVNFIC1zREVWSUNFPSVzIC1zT3V0cHV0RmlsZT0lcyAlcyAlcyBzaG93cGFnZS5wcyAt
YyBxdWl0IiwKLSAgICAgICAgICAgICAgICBwcmludGVyLCBwY2xfZmlsZSwgc2NhbGVfZmlsZSwg
cHNmaWxlKTsKLSNlbmRpZgotI2lmZGVmIERFQlVHR1MgICAKLSAgICAgICAgZnByaW50ZihzdGRl
cnIsCi0gICAgICAgICAgIlBTLWZpbGUgJyVzJyB3PSVkLCBoPSVkLCB1cng9JWQsIHVyeT0lZCwg
bGx4PSVkLCBsbHk9JWQsIHJ3aT0lZFxuIiwKLSAgICAgICAgICAgICAgICBwc2ZpbGUsIHVyeCAt
IGxseCwgaGVpZ2h0LCB1cngsdXJ5LGxseCxsbHksIHJ3aSk7Ci0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCIlc1xuIixjbWQpOworICAgICAgaWYgKCAoZ3NfY21kID0gZ2V0ZW52KCJHU19QQVRIIikp
ID09IE5VTEwgKQorCWdzX2NtZCA9ICJnc3dpbjMyYy5leGUiOworI2Vsc2UKKyAgICAgIGdzX2Nt
ZCA9ICJncyI7CiAjZW5kaWYKLSAgICAgICAgaWYgKHN5c3RlbShjbWQpKSB7Ci0gICAgICAgICAg
V2FybmluZygiZXhlY3V0aW9uIG9mICclcycgcmV0dXJuZWQgYW4gZXJyb3IiLCBjbWQpOwotICAg
ICAgICB9IGVsc2UgewotI2lmZGVmIERFQlVHR1MgICAKLSAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIm89JWQsIGg9JWQsIHNvPSVkLCBzaD0lZFxuIiwgCi0gICAgICAgICAgICAgICAgICBsbHgs
IGhlaWdodCwgYWRqdXN0ZWRfbGx4LCBhZGp1c3RlZF9oZWlnaHQpOwotICAgICAgICAgIAotICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiT0xEIHg9JWQsIHk9JWRcbiIsIAotICAgICAgICAgICAg
ICAgICAgKGludClQSVhST1VORChoLCBoY29udikgKyB4X2dvZmZzZXQsCi0gICAgICAgICAgICAg
ICAgICAoaW50KVBJWFJPVU5EKHYsIHZjb252KSArIHlfZ29mZnNldCk7Ci0jZW5kaWYgIAotICAg
ICAgICAgIHYgLT0gNjU1MzZsKmFkanVzdGVkX2hlaWdodDsgLyoqMzAwL3NjYWxlX2ZhY3Rvcjsq
LwotICAgICAgICAgIGggLT0gNjU1MzZsKmFkanVzdGVkX2xseDsgLyogKjMwMC9zY2FsZV9mYWN0
b3I7Ki8KLSAgICAgICAgICBTZXRQb3NuKGgsIHYpOwotI2lmZGVmIERFQlVHR1MgICAKLSAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIk5FVyB4PSVkLCB5PSVkXG4iLCAKLSAgICAgICAgICAgICAg
ICAgIChpbnQpUElYUk9VTkQoaCwgaGNvbnYpICsgeF9nb2Zmc2V0LAotICAgICAgICAgICAgICAg
ICAgKGludClQSVhST1VORCh2LCB2Y29udikgKyB5X2dvZmZzZXQpOwotI2VuZGlmCi0KLSAgICAg
ICAgICBDb3B5SFBGaWxlKCBwY2xfZmlsZSApOwotICAgICAgICAgIC8qIHVubGluayhwY2xfZmls
ZSk7ICovCi0gICAgICAgICAgLyogdW5saW5rKHNjYWxlX2ZpbGUpOyAqLwotICAgICAgICB9Cisg
ICAgICBpZiAoIHN0cmxlbihjbWRfZm9ybWF0KS0xMCArIHN0cmxlbihnc19jbWQpICsgc3RybGVu
KHByaW50ZXIpICsKKwkgICAgICAgc3RybGVuKHBjbF9maWxlKSArIHN0cmxlbihzY2FsZV9maWxl
KSArIHN0cmxlbihpbmNsdWRlX2ZpbGUpICsxID4KKwkgICBzaXplb2YoY21kKSApIHsKKwlXYXJu
aW5nICgiR2hvc3RzY3JpcHQgY29tbWFuZCBmb3IgJXMgd291bGQgYmUgdG9vIGxvbmcsIHNraXBw
aW5nIHNwZWNpYWwiLCBpbmNsdWRlX2ZpbGUpOworCWZyZWUgKGluY2x1ZGVfZmlsZSk7CisJdW5s
aW5rKHNjYWxlX2ZpbGUpOwkJLyogaWdub3JlIGVycm9ycyAqLworCXVubGluayhwY2xfZmlsZSk7
CisJcmV0dXJuOworICAgICAgfQorICAgICAgc3ByaW50ZihjbWQsIGNtZF9mb3JtYXQsCisJICAg
ICAgZ3NfY21kLCBwcmludGVyLCBwY2xfZmlsZSwgc2NhbGVfZmlsZSwgaW5jbHVkZV9maWxlKTsK
KyNpZmRlZiBERUJVR0dTCisgICAgICBmcHJpbnRmKHN0ZGVyciwKKwkiUFMtZmlsZSAnJXMnIHc9
JWQsIGg9JWQsIHVyeD0lZCwgdXJ5PSVkLCBsbHg9JWQsIGxseT0lZCwgcndpPSVkXG4iLAorCSAg
ICAgIGluY2x1ZGVfZmlsZSwgdXJ4IC0gbGx4LCBoZWlnaHQsIHVyeCx1cnksbGx4LGxseSwgcndp
KTsKKyAgICAgIGZwcmludGYoc3RkZXJyLCIlc1xuIixjbWQpOworI2VuZGlmCisgICAgICBpZiAo
c3lzdGVtKGNtZCkpIHsKKwlXYXJuaW5nKCJleGVjdXRpb24gb2YgJyVzJyByZXR1cm5lZCBhbiBl
cnJvciIsIGNtZCk7CisgICAgICB9IGVsc2UgeworI2lmZGVmIERFQlVHR1MKKwlmcHJpbnRmKHN0
ZGVyciwgIm89JWQsIGg9JWQsIHNvPSVkLCBzaD0lZFxuIiwKKwkJbGx4LCBoZWlnaHQsIGFkanVz
dGVkX2xseCwgYWRqdXN0ZWRfaGVpZ2h0KTsKKworCWZwcmludGYoc3RkZXJyLCAiT0xEIHg9JWQs
IHk9JWRcbiIsCisJCShpbnQpUElYUk9VTkQoaCwgaGNvbnYpICsgeF9nb2Zmc2V0LAorCQkoaW50
KVBJWFJPVU5EKHYsIHZjb252KSArIHlfZ29mZnNldCk7CisjZW5kaWYKKwl2IC09IDY1NTM2bCph
ZGp1c3RlZF9oZWlnaHQ7IC8qKjMwMC9zY2FsZV9mYWN0b3I7Ki8KKwloIC09IDY1NTM2bCphZGp1
c3RlZF9sbHg7IC8qICozMDAvc2NhbGVfZmFjdG9yOyovCisJU2V0UG9zbihoLCB2KTsKKyNpZmRl
ZiBERUJVR0dTCisJZnByaW50ZihzdGRlcnIsICJORVcgeD0lZCwgeT0lZFxuIiwKKwkJKGludClQ
SVhST1VORChoLCBoY29udikgKyB4X2dvZmZzZXQsCisJCShpbnQpUElYUk9VTkQodiwgdmNvbnYp
ICsgeV9nb2Zmc2V0KTsKKyNlbmRpZgorCisJQ29weUhQRmlsZSggcGNsX2ZpbGUgKTsKICAgICAg
IH0KKyAgICAgIHVubGluayhzY2FsZV9maWxlKTsJCS8qIGlnbm9yZSBlcnJvcnMgKi8KKyAgICAg
IHVubGluayhwY2xfZmlsZSk7CisgICAgfQorICAgIGVsc2UKICNlbmRpZiAvKiBMSiAqLworCisg
ICAgaWYgKCBmaWxlX3R5cGUgPT0gSFBGaWxlICkKKyAgICAgIENvcHlIUEZpbGUoIGluY2x1ZGVf
ZmlsZSApOworICAgIGVsc2UgaWYgKCBmaWxlX3R5cGUgPT0gVmVyYkZpbGUgKQorICAgICAgQ29w
eUZpbGUoIGluY2x1ZGVfZmlsZSApOworICAgIGVsc2UKKyAgICAgIFdhcm5pbmcgKCJUaGlzIGNh
bid0IGhhcHBlbjogdW5rbm93biBmaWxlX3R5cGUgdmFsdWUgJWQiLCBmaWxlX3R5cGUpOworCisg
ICAgaWYgKCBpbmNsdWRlX2ZpbGUgIT0gTlVMTCApICBmcmVlKGluY2x1ZGVfZmlsZSk7CiAgIH0K
IH0KIApAQCAtNDE3MywxMiArNDIzOSwxMSBAQCBpbnQgIG47CiAvKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgR2V0S2V5U3RyICAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBleHRyYWN0IGZpcnN0IGtleXdvcmQt
dmFsdWUgcGFpciBmcm9tIHN0cmluZyAodmFsdWUgcGFydCBtYXkgYmUgbnVsbCkKLSAqIHJldHVy
biBwb2ludGVyIHRvIHJlbWFpbmRlciBvZiBzdHJpbmcKLSAqIHJldHVybiBOVUxMIGlmIG5vbmUg
Zm91bmQKKy8qIEV4dHJhY3QgZmlyc3Qga2V5d29yZC12YWx1ZSBwYWlyIGZyb20gc3RyaW5nICh2
YWx1ZSBwYXJ0IG1heSBiZSBudWxsKSwKKyAqIGtleXdvcmQgYW5kIHZhbHVlIGFyZSBhbGxvY2F0
ZWQgYW5kIG11c3QgYmUgZnJlZSBieSBjYWxsZXIuCisgKiBSZXR1cm4gcG9pbnRlciB0byByZW1h
aW5kZXIgb2Ygc3RyaW5nLAorICogcmV0dXJuIE5VTEwgaWYgbm9uZSBmb3VuZC4KICAqLwotY2hh
ciAgICBLZXlTdHJbU1RSU0laRV07Ci1jaGFyICAgIFZhbFN0cltTVFJTSVpFXTsKICNpZiBOZWVk
RnVuY3Rpb25Qcm90b3R5cGVzCiBjaGFyICpHZXRLZXlTdHIoY2hhciAqc3RyLCBLZXlXb3JkICpr
dyApCiAjZWxzZQpAQCAtNDE4NywzOSArNDI1Miw0NiBAQCBjaGFyICAgICpzdHI7CiBLZXlXb3Jk
ICprdzsKICNlbmRpZgogewotICBjaGFyICAgICpzLCAqaywgKnYsIHQ7CisgIGNoYXIgKnMsICpz
dGFydDsKKyAgY2hhciBzYXZlX2NoYXIsIHF1b3RlX2NoYXI7CiAgIGlmICggIXN0ciApCiAgICAg
cmV0dXJuKCBOVUxMICk7CiAgIGZvciAocyA9IHN0cjsgKnMgPT0gJyAnOyBzKyspCiAgICAgOyAg
ICAgICAgICAvKiBza2lwIG92ZXIgYmxhbmtzICovCiAgIGlmICgqcyA9PSAnXDAnKQogICAgIHJl
dHVybiggTlVMTCApOwotICBmb3IgKGsgPSBLZXlTdHI7IC8qIGV4dHJhY3Qga2V5d29yZCBwb3J0
aW9uICovCi0gICAgICAgKnMgIT0gJyAnICYmICpzICE9ICdcMCcgJiYgKnMgIT0gJz0nOwotICAg
ICAgICprKysgPSAqcysrKQotICAgIDsKLSAgKmsgPSAnXDAnOwotICBrdy0+S2V5ID0gS2V5U3Ry
OwotICBrdy0+VmFsID0gdiA9IE5VTEw7CisgIHN0YXJ0ID0gcysrOwkJCQkvKiBzdGFydCBvZiBr
ZXl3b3JkICovCisgIHdoaWxlICggKnMgIT0gJyAnICYmICpzICE9ICdcMCcgJiYgKnMgIT0gJz0n
ICkgIC8qIGxvY2F0ZSBlbmQgKi8KKyAgICBzKys7CisgIHNhdmVfY2hhciA9ICpzOworICAqcyA9
ICdcMCc7CisgIGt3LT5LZXkgPSB4c3RyZHVwKHN0YXJ0KTsKKyAga3ctPlZhbCA9IE5VTEw7CiAg
IGt3LT52dCA9IE5vbmU7Ci0gIGZvciAoIDsgKnMgPT0gJyAnOyBzKyspCi0gICAgOyAgICAgICAg
ICAgIC8qIHNraXAgb3ZlciBibGFua3MgKi8KLSAgaWYgKCAqcyAhPSAnPScgKSAgICAgICAgIC8q
IGxvb2sgZm9yICI9IiAqLworICBpZiAoIHNhdmVfY2hhciA9PSAnXDAnICkJCS8qIHNob3J0Y3V0
IHdoZW4gd2UncmUgYXQgdGhlIGVuZCAqLworICAgIHJldHVybiAocyk7CisgICpzID0gc2F2ZV9j
aGFyOwkJCS8qIHJlc3RvcmUga2V5d29yZCBlbmQgY2hhciAqLworICB3aGlsZSAoICpzID09ICcg
JyApIHMrKyA7CQkvKiBza2lwIG92ZXIgYmxhbmtzICovCisgIGlmICggKnMgIT0gJz0nICkJCQkv
KiBubyAiPSIgbWVhbnMgbm8gdmFsdWUgKi8KICAgICByZXR1cm4oIHMgKTsKLSAgZm9yIChzKys7
ICpzID09ICcgJzsgcysrKTsgICAgICAvKiBza2lwIG92ZXIgYmxhbmtzICovCi0gIGlmICggKnMg
PT0gJ1wnJyB8fCAqcyA9PSAnXCInICkgIC8qIGdldCBzdHJpbmcgZGVsaW1pdGVyICovCi0gICAg
dCA9ICpzKys7CisgIGZvciAocysrOyAqcyA9PSAnICc7IHMrKykKKyAgICA7CQkJCQkvKiBza2lw
IG92ZXIgYmxhbmtzICovCisgIGlmICggKnMgPT0gJ1wnJyB8fCAqcyA9PSAnXCInICkJLyogZ2V0
IHN0cmluZyBkZWxpbWl0ZXIgKi8KKyAgICBxdW90ZV9jaGFyID0gKnMrKzsKICAgZWxzZQotICAg
IHQgPSAnICc7Ci0gIGZvciAodiA9IFZhbFN0cjsgLyogY29weSB2YWx1ZSBwb3J0aW9uIHVwIHRv
IGRlbGltICovCi0gICAgICAgKnMgIT0gdCAmJiAqcyAhPSAnXDAnOwotICAgICAgICp2KysgPSAq
cysrKQotICAgIDsKLSAgaWYgKCB0ICE9ICcgJyAmJiAqcyA9PSB0ICkKLSAgICBzKys7Ci0gICp2
ID0gJ1wwJzsKLSAga3ctPlZhbCA9IFZhbFN0cjsKKyAgICBxdW90ZV9jaGFyID0gJyAnOworICBz
dGFydCA9IHM7CQkJCS8qIG5vIGluY3JlbWVudCwgbWlnaHQgYmUgIiIgYXMgdmFsdWUgKi8KKyAg
d2hpbGUgKCAqcyAhPSBxdW90ZV9jaGFyICYmICpzICE9ICdcMCcgKQorICAgIHMrKzsJCQkgIC8q
IGxvY2F0ZSBlbmQgb2YgdmFsdWUgcG9ydGlvbiAqLworICBzYXZlX2NoYXIgPSAqczsKKyAgKnMg
PSAnXDAnOworICBrdy0+VmFsID0geHN0cmR1cChzdGFydCk7CiAgIGt3LT52dCA9IFN0cmluZzsK
KyAgaWYgKCBzYXZlX2NoYXIgIT0gJ1wwJyApIHsJCS8qIHNhdmVfY2hhciBpcyBub3cgcXVvdGVf
Y2hhciAqLworICAgICpzID0gc2F2ZV9jaGFyOworICAgIGlmICggcXVvdGVfY2hhciAhPSAnICcg
KQkJLyogd2UgaGFkIHJlYWwgcXVvdGUgY2hhcnMgKi8KKyAgICAgIHMrKzsKKyAgfQogICByZXR1
cm4oIHMgKTsKIH0KIApAQCAtNDI4MSw3ICs0MzUzLDcgQEAgY2hhciAgICAqYSwgKmI7CiAjZW5k
aWYKIHsKICAgY2hhciAqeCwgKnk7Ci0gIAorCiAgIGZvciAoeCA9IGEsIHkgPSBiOyAqYTsgYSsr
LCBiKyspCiAgICAgaWYgKCB0b2xvd2VyKCphKSAhPSB0b2xvd2VyKCpiKSApCiAgICAgICByZXR1
cm4oIF9GQUxTRSApOwpAQCAtNDQ2OSwxMCArNDU0MSwxMCBAQCBpbnQgICAgIFNldDsKICAgICAg
ICAqICAgcHJvY2VzcyBmb3Igc2ltcGxpY2l0eSBhbHdheXMgaG9yaXpvbnRhbGx5CiAgICAgICAg
Ki8KIAotICAgICAgLyogCisgICAgICAvKgogICAgICAgICAgZnByaW50ZihFUlJfU1RSRUFNLCJs
YXJnZSBib3g6IHc9JWQseD0lZCx5PSVkXG4iLChpbnQpeXksKGludCl4eCwwKTsKICAgICAgICAg
ICovCi0gICAgICAKKwogICAgICAgaG9yX29mZnNldCAgPSBIT1JfSEFMRigzMCk7CiAgICAgICBN
b3ZlSG9yKGhvcl9vZmZzZXQpOwogICAgICAgdmVydF9vZmZzZXQgPSBWRVJUX0hBTEYoMzApOwpA
QCAtNDU0Nyw3ICs0NjE5LDcgQEAgaW50ICAgICBTZXQ7CiAgICAgICB5eSArPSAobG9uZzQpcGdz
aXpfZG90cyAtIChsb25nNClsYXN0X3J5OwogCiAgICAgaWYgKCh5eT4wKSAmJiAoeHg+MCkpCi0g
ICAgICBFTUlUNCgiXDAzMypwLSVsZFlcMDMzKmMlbGRhJWxkYlAiLCAKKyAgICAgIEVNSVQ0KCJc
MDMzKnAtJWxkWVwwMzMqYyVsZGElbGRiUCIsCiAgICAgICAgICAgICAobG9uZyl5eSAtIDEsIChs
b25nKXh4LCAobG9uZyl5eSk7CiAjZW5kaWYKICAgICBsYXN0X3J4ID0gbGFzdF9yeSA9IFVOS05P
V047ICAgICAgIC8qIG5leHQgdGltZSBmdWxsIHBvc2l0aW9uaW5nICovCkBAIC00NzA4LDcgKzQ3
ODAsNyBAQCB2b2lkIE9wZW5Gb250RmlsZSgpCiAgICAgICBpZiAoKGZpZCA9IHBpeGVsX2ZpbGVz
W2xlYXN0X3VzZWRdLnBpeGVsX2ZpbGVfaWQpICE9IE5PX0ZJTEUpIHsKICAgICAgICAgLyogbWFy
ayBmaWxlIGFzIGJlaW5nIGNsb3NlZCBpbiB0aGUgZW50cnkgKi8KICAgICAgICAgZnAgPSBoZm9u
dHB0cjsKLSAgICAgICAgd2hpbGUgKGZwICE9IE5VTEwgJiYgZnAtPmZvbnRfZmlsZV9pZCAhPSBm
aWQpIAorICAgICAgICB3aGlsZSAoZnAgIT0gTlVMTCAmJiBmcC0+Zm9udF9maWxlX2lkICE9IGZp
ZCkKICAgICAgICAgICBmcCA9IGZwLT5uZXh0OwogICAgICAgICBpZiAoZnAgPT0gTlVMTCkKICAg
ICAgICAgICBGYXRhbCgiT3BlbiBmaWxlICV4IG5vdCBmb3VuZCBpbiBmb250IGVudHJ5IGxpc3Qu
XG4iLCBmaWQpOwpAQCAtNDc2Myw5ICs0ODM1LDkgQEAgdm9pZCBPcGVuRm9udEZpbGUoKQogICAg
ICAgd2hpbGUgKChmcCAhPSBOVUxMKSAmJiAoZnAtPmZvbnRfZmlsZV9pZCAhPSBmKSkKICAgICAg
ICAgZnAgPSBmcC0+bmV4dDsKIAotICAgICAgaWYgKGZwID09IE5VTEwpIAorICAgICAgaWYgKGZw
ID09IE5VTEwpCiAgICAgICAgIEZhdGFsKCJPcGVuIGZpbGUgJXggbm90IGZvdW5kIGluIGZvbnQg
ZW50cnkgbGlzdC5cbiIsZik7Ci0gICAgICBlbHNlIAorICAgICAgZWxzZQogICAgICAgICBmcC0+
Zm9udF9maWxlX2lkID0gRlBOVUxMOwogICAgIH0KICAgICBCQ0xPU0UoZik7CkBAIC00ODE5LDEz
ICs0ODkxLDE0IEBAIHN0cnVjdCBmb250X2VudHJ5ICpmb250cHRyOwogICAgICB0aGUgcmVzaWRl
bnQgZm9udHMuICAqLwogICBpZiAodGZtX3JlYWRfaW5mbyhmb250cHRyLT5uLCAmdGZtX2luZm8p
CiAgICAgICAmJiB0Zm1faW5mby5mYW1pbHlbMF0KLSAgICAgICYmIHN0cmNtcCgoY2hhciAqKXRm
bV9pbmZvLmZhbWlseSwgIkhQQVVUT1RGTSIpID09IDApIHsKKyAgICAgICYmIEVRKChjaGFyICop
dGZtX2luZm8uZmFtaWx5LCAiSFBBVVRPVEZNIikpIHsKICAgICB1bnNpZ25lZCBpOwogICAgIGRv
dWJsZSBmYWN0b3IgPSBmb250cHRyLT5zIC8gKGRvdWJsZSkweDEwMDAwMDsKIAogICAgIHJlc2lk
ZW50X2NvdW50Kys7CiAgICAgZm9udHB0ci0+cmVzaWRlbnRfcCA9IF9UUlVFOwotICAgIHN0cmNw
eShmb250cHRyLT5zeW1ib2xfc2V0LCAoY2hhciAqKXRmbV9pbmZvLmNvZGluZ19zY2hlbWUpOwor
ICAgIHN0cm5jcHkoZm9udHB0ci0+c3ltYm9sX3NldCwgKGNoYXIgKil0Zm1faW5mby5jb2Rpbmdf
c2NoZW1lLCAzOSk7CisgICAgZm9udHB0ci0+c3ltYm9sX3NldFszOV0gPSAnXDAnOwogICAgIGZv
bnRwdHItPnJlc2lkID0gdGZtX2luZm8udHlwZWZhY2VfaWQ7CiAgICAgZm9udHB0ci0+c3BhY2lu
ZyA9IHRmbV9pbmZvLnNwYWNpbmc7CiAgICAgZm9udHB0ci0+c3R5bGUgPSB0Zm1faW5mby5zdHls
ZTsKQEAgLTQ4NzgsNyArNDk1MSw3IEBAIHN0cnVjdCBmb250X2VudHJ5ICpmb250cHRyOwogICAg
IGZvbnRwdHItPnJlc2lkZW50X3AgPSBfRkFMU0U7CiAKICAgICBpZiAodGZtX2luZm8uZmFtaWx5
WzBdCi0gICAgICAgICYmIHN0cmNtcCgoY2hhciAqKXRmbV9pbmZvLmZhbWlseSwgIlVOU1BFQ0lG
SUVEIikgPT0gMCkgeworICAgICAgICAmJiBFUSgoY2hhciAqKXRmbV9pbmZvLmZhbWlseSwgIlVO
U1BFQ0lGSUVEIikpIHsKICAgICAgIFdhcm5pbmcoImZvbnQgZmFtaWx5IGZvciAlcyBpcyBVTlNQ
RUNJRklFRDsgbmVlZCB0byBydW4gZHZpY29weT8iLAogICAgICAgICAgICAgICBmb250cHRyLT5u
KTsKICAgICAgIGZvbnRwdHItPmZvbnRfZmlsZV9pZCA9IE5PX0ZJTEU7CkBAIC01MDA1LDcgKzUw
NzgsNyBAQCBsb25nNCAgICBrOwogICBHZXRCeXRlcyhkdmlmcCwgdGZvbnRwdHItPm4sIHRmb250
cHRyLT5hICsgdGZvbnRwdHItPmwpOwogICB0Zm9udHB0ci0+blt0Zm9udHB0ci0+YSt0Zm9udHB0
ci0+bF0gPSAnXDAnOwogCi0gIHRmb250cHRyLT5mb250X21hZyA9IAorICB0Zm9udHB0ci0+Zm9u
dF9tYWcgPQogICAgIChsb25nNCkoKEFjdHVhbEZhY3RvcigobG9uZzQpKDEwMDAuMCp0Zm9udHB0
ci0+cy8oZG91YmxlKXRmb250cHRyLT5kKzAuNSkpCiAgICAgICAgICAgICAgKiBBY3R1YWxGYWN0
b3IobWFnKQogI2lmZGVmIFVTRVBYTApAQCAtNTAzMSwxMCArNTEwNCw5IEBAIHByaW50ZigiWyVs
ZF09JWxmICogJWxmICogJWxmICsgMC41ID0gJWwKICAgaWYgKHRmb250cHRyLT5yZXNpZGVudF9w
KQogICAgIHJldHVybjsKIAotICBpZiAoIShyZXNpZGVudF9mb250X2xvY2F0ZWQpKSB7CisgIGlm
ICghKHJlc2lkZW50X2ZvbnRfbG9jYXRlZCkpCiAjZW5kaWYKIAotI2lmZGVmIEtQQVRIU0VBCiAg
ICAgewogICAgICAga3BzZV9nbHlwaF9maWxlX3R5cGUgZm9udF9yZXQ7CiAgICAgICBjaGFyICpu
YW1lOwpAQCAtNTA0MiwxNCArNTExNCwxNCBAQCBwcmludGYoIlslbGRdPSVsZiAqICVsZiAqICVs
ZiArIDAuNSA9ICVsCiAgICAgICAgID0ga3BzZV9tYWdzdGVwX2ZpeCAoKHVuc2lnbmVkKSAodGZv
bnRwdHItPmZvbnRfbWFnIC8gNS4wICsgLjUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJFU09MVVRJT04sIE5VTEwpOwogICAgICAgdGZvbnRwdHItPmZvbnRfbWFnID0gZHBpICogNTsg
Lyogc2F2ZSBjb3JyZWN0IGRwaSAqLwotICAgICAgCisKICAgICAgIG5hbWUgPSBrcHNlX2ZpbmRf
cGsgKHRmb250cHRyLT5uLCBkcGksICZmb250X3JldCk7CiAgICAgICBpZiAobmFtZSkKICAgICAg
ICAgewogICAgICAgICAgIGZvbnRfZm91bmQgPSBfVFJVRTsKLSAgICAgICAgICBzdHJjcHkgKHRm
b250cHRyLT5uYW1lLCBuYW1lKTsKLSAgICAgICAgICBmcmVlIChuYW1lKTsKLSAgICAgICAgICAK
KyAgICAgICAgICB0Zm9udHB0ci0+bmFtZSA9IG5hbWU7CisgICAgICAgICAgYWxsb2NhdGVkX3N0
b3JhZ2UgKz0gc3RybGVuKG5hbWUpKzE7CisKICAgICAgICAgICBpZiAoIUZJTEVTVFJDQVNFRVEg
KHRmb250cHRyLT5uLCBmb250X3JldC5uYW1lKSkgewogICAgICAgICAgICAgICBmcHJpbnRmIChz
dGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICJkdmlsajogRm9udCAlcyBub3QgZm91bmQs
IHVzaW5nICVzIGF0ICVkIGluc3RlYWQuXG4iLApAQCAtNTA3MSwyOSArNTE0Myw2IEBAIHByaW50
ZigiWyVsZF09JWxmICogJWxmICogJWxmICsgMC41ID0gJWwKICAgICAgICAgICAgIHRmb250cHRy
LT5uLCBkcGkpOwogICAgICAgICB9CiAgICAgfQotI2Vsc2UgLyogbm90IEtQQVRIU0VBICovCi0g
ICAgaWYgKCEoZmluZGZpbGUoUFhMcGF0aCwKLSAgICAgICAgICAgICAgICAgICB0Zm9udHB0ci0+
biwKLSAgICAgICAgICAgICAgICAgICB0Zm9udHB0ci0+Zm9udF9tYWcsCi0gICAgICAgICAgICAg
ICAgICAgdGZvbnRwdHItPm5hbWUsCi0gICAgICAgICAgICAgICAgICAgX0ZBTFNFLAotICAgICAg
ICAgICAgICAgICAgIDApKSkgewotICAgICAgV2FybmluZyh0Zm9udHB0ci0+bmFtZSk7IC8qIGNv
bnRhaW5zIGVycm9yIG1lc3NzYWdlICovCi0gICAgICB0Zm9udHB0ci0+Zm9udF9maWxlX2lkID0g
Tk9fRklMRTsKLSNpZmRlZiBfX3Jpc2NvcwotICAgICAgTWFrZU1ldGFmb250RmlsZShQWExwYXRo
LCB0Zm9udHB0ci0+biwgdGZvbnRwdHItPmZvbnRfbWFnKTsKLSNlbmRpZgotICAgIH0KLSAgICBl
bHNlIHsKLSAgICAgIGZvbnRfZm91bmQgPSBfVFJVRTsKLSAgICAgIGlmIChHX3ZlcmJvc2UpCi0g
ICAgICAgIGZwcmludGYoRVJSX1NUUkVBTSwiJWQ6IHVzaW5nIGZvbnQgPCVzPlxuIiwgcGx1c2lk
LCB0Zm9udHB0ci0+bmFtZSk7Ci0gICAgfQotI2VuZGlmIC8qIG5vdCBLUEFUSFNFQSAqLwotCi0j
aWZkZWYgTEpfUkVTSURFTlRfRk9OVFMKLSAgfQotI2VuZGlmCiAKICAgdGZvbnRwdHItPnBsdXNp
ZCA9IHBsdXNpZDsKICAgcGx1c2lkKys7CkBAIC01MTA3LDcgKzUxNTYsNyBAQCBwcmludGYoIlsl
bGRdPSVsZiAqICVsZiAqICVsZiArIDAuNSA9ICVsCiAgICAgICAgICAgSEFORExFX01BWF9GT05U
Uyk7CiAjZW5kaWYKICAgaWYgKHRmb250cHRyICE9IHBmb250cHRyKSB7Ci0gICAgaWYgKGZvbnRf
Zm91bmQpIAorICAgIGlmIChmb250X2ZvdW5kKQogICAgICAgT3BlbkZvbnRGaWxlKCk7CiAgICAg
ZWxzZQogICAgICAgcHhsZnAgPSBOT19GSUxFOwpAQCAtNTE0Niw3ICs1MTk1LDcgQEAgcHJpbnRm
KCJbJWxkXT0lbGYgKiAlbGYgKiAlbGYgKyAwLjUgPSAlbAogICAgIGlmICh0ID09IFBLX1BSRSkg
ewogICAgICAgdW5zaWduZWQgY2hhciAgIHRlbXBfYnl0ZTsKICAgICAgIHRlbXBfYnl0ZSA9ICh1
bnNpZ25lZCBjaGFyKSBOb1NpZ25FeHRlbmQocHhsZnAsIDEpOwotICAgICAgaWYgKHRlbXBfYnl0
ZSAhPSBQS19JRCkgCisgICAgICBpZiAodGVtcF9ieXRlICE9IFBLX0lEKQogICAgICAgICBGYXRh
bCggIldyb25nIFZlcnNpb24gb2YgcGsgZmlsZSEgICglZCBzaG91bGQgYmUgODkpXG4iLAogICAg
ICAgICAgICAgICAgKGludCl0ZW1wX2J5dGUpOwogICAgICAgZWxzZQpAQCAtNTE2Myw3ICs1MjEy
LDcgQEAgcHJpbnRmKCJbJWxkXT0lbGYgKiAlbGYgKiAlbGYgKyAwLjUgPSAlbAogCiAgICAgdGZv
bnRwdHItPm1hZ25pZmljYXRpb24gPSBOb1NpZ25FeHRlbmQocHhsZnAsIDQpOwogICAgIHRmb250
cHRyLT5kZXNpZ25zaXplICAgID0gTm9TaWduRXh0ZW5kKHB4bGZwLCA0KTsKLSAgICAgICAgCisK
ICAgICBpZiAodGZvbnRwdHItPmlkID09IGlkMTAwMSkKICAgICAgIEZTRUVLKHB4bGZwLCAobG9u
ZykoTm9TaWduRXh0ZW5kKHB4bGZwLCA0KSAqIDQpLCBTRUVLX1NFVCk7CiAgICAgZWxzZQpAQCAt
NTIzMiw3ICs1MjgxLDcgQEAgcHJpbnRmKCJbJWxkXT0lbGYgKiAlbGYgKiAlbGYgKyAwLjUgPSAl
bAogICAgIGhwcHAgPSBOb1NpZ25FeHRlbmQocHhsZnAsIDQpOwogICAgIHZwcHAgPSBOb1NpZ25F
eHRlbmQocHhsZnAsIDQpOwogICAgIGlmIChocHBwICE9IHZwcHApCi0gICAgICBXYXJuaW5nKCJh
c3BlY3QgcmF0aW8gaXMgJWxkOiVsZCAoc2hvdWxkIGJlIDE6MSkhIiwgCisgICAgICBXYXJuaW5n
KCJhc3BlY3QgcmF0aW8gaXMgJWxkOiVsZCAoc2hvdWxkIGJlIDE6MSkhIiwKICAgICAgICAgICAg
ICAgKGxvbmcpaHBwcCwgKGxvbmcpdnBwcCk7CiAgICAgdGZvbnRwdHItPm1hZ25pZmljYXRpb24g
PSAobG9uZzQpKGhwcHAgKiA3Mi4yNyAqIDUgLyA2NTUzNmwgKyAwLjUpOwogCkBAIC01NTE1LDcg
KzU1NjQsNyBAQCB2b2lkIFNraXBGb250RGVmKCkKIHsKICAgaW50ICAgICBhLCBsOwogICBjaGFy
ICAgIG5bU1RSU0laRV07Ci0gIAorCiAgICh2b2lkKSBOb1NpZ25FeHRlbmQoZHZpZnAsIDQpOwog
ICAodm9pZCkgTm9TaWduRXh0ZW5kKGR2aWZwLCA0KTsKICAgKHZvaWQpIE5vU2lnbkV4dGVuZChk
dmlmcCwgNCk7CkBAIC01NTI0LDcgKzU1NzMsNyBAQCB2b2lkIFNraXBGb250RGVmKCkKICAgR2V0
Qnl0ZXMoZHZpZnAsIG4sIGEgKyBsKTsKIH0KIAotICAgIAorCiAKIC8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIGVuZCBkdmlmb250LmMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
CiAKQEAgLTU1OTgsNyArNTY0Nyw3IEBAIFdhcm5pbmcodmFfYWxpc3QpCiAjZW5kaWYKICAgaWYg
KCBHX25vd2FybiB8fCBHX3F1aWV0ICkKICAgICByZXR1cm47Ci0gIAorCiAgIGZwcmludGYoRVJS
X1NUUkVBTSwgIiVzOiB3YXJuaW5nOiAiLCBHX3Byb2duYW1lKTsKICAgdmZwcmludGYoRVJSX1NU
UkVBTSwgZm10LCBhcmdzKTsKICAgZnByaW50ZihFUlJfU1RSRUFNLCAiXG4iKTsKSW5kZXg6IHRl
dGV4LXNyYy0zLjAvdGV4ay9kdmlsamsvZHZpMnh4LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGV0ZXgtc3Jj
LTMuMC5vcmlnL3RleGsvZHZpbGprL2R2aTJ4eC5oCisrKyB0ZXRleC1zcmMtMy4wL3RleGsvZHZp
bGprL2R2aTJ4eC5oCkBAIC0xMCw4ICsxMCw4IEBACiAKICNpZmRlZiBLUEFUSFNFQQogI2luY2x1
ZGUgPGtwYXRoc2VhL2NvbmZpZy5oPgorI2luY2x1ZGUgPGtwYXRoc2VhL2Mtc3RkLmg+CiAjaW5j
bHVkZSA8a3BhdGhzZWEvYy1saW1pdHMuaD4KLSNpbmNsdWRlIDxrcGF0aHNlYS9jLW1lbXN0ci5o
PgogI2luY2x1ZGUgPGtwYXRoc2VhL21hZ3N0ZXAuaD4KICNpbmNsdWRlIDxrcGF0aHNlYS9wcm9n
aW5pdC5oPgogI2luY2x1ZGUgPGtwYXRoc2VhL3Byb2duYW1lLmg+CkBAIC0yNCw2ICsyNCw3IEBA
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRs
aWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KICNpZmRlZiAgdW5peAogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2VuZGlmCkBAIC00MSw5ICs0Miw2IEBACiAjaWZkZWYgTVNDNQogI2luY2x1ZGUgPGRv
cy5oPiAgICAgLyogb25seSBmb3IgYmluYXJ5b3BlbiBvbiBkZXZpY2UgICovCiAjZW5kaWYKLSNp
ZiBkZWZpbmVkICh1bml4KSAmJiAhZGVmaW5lZCAoS1BBVEhTRUEpCi0jaW5jbHVkZSA8bGltaXRz
Lmg+Ci0jZW5kaWYKIAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0xMTYsNiArMTE0LDcgQEAK
ICNkZWZpbmUgIEhVR0VfU0laRSAgKHVuc2lnbmVkIGNoYXIpIDIKICNkZWZpbmUgIEhVR0VfQ0hB
Ul9QQVRURVJOIDMyNzY3bAogI2RlZmluZSAgQllURVNfUEVSX1BJWEVMX0xJTkUgNTAwICAgIC8q
IG1heCBudW1iZXIgb2YgYnl0ZXMgcGVyIHBpeGVsIGxpbmUgKi8KKyNkZWZpbmUgIE1BWF9TUEVD
SUFMX0RFRlBPSU5UUyA4MCAgICAvKiBtYXggbnVtYmVyIG9mIGRlZnBvaW50IHNwZWNpYWxzICov
CiAKIAogI2RlZmluZSBQS19QT1NUIDI0NQpAQCAtMjgxLDcgKzI4MCwxNCBAQCBjaGFyICpNRk1P
REUgICAgID0gTUZNT0RFNjAwOwogI2RlZmluZSBWaXNDaGFyKGMpICh1bnNpZ25lZCBjaGFyKShj
KQogI2VuZGlmCiAKLSNkZWZpbmUgR2V0Qnl0ZXMoZnAsYnVmLG4pIHJlYWRfbXVsdGkoYnVmLDEs
bixmcCkgLyogdXNlZCB0byBiZSBhIGZ1bmN0aW9uICovCisvKiBVc2VkIHRvIGJlIGEgZnVuY3Rp
b24uIGJ1ZiBpcyBhbHdheXMgYW4gYXJyYXksIG5ldmVyIGEgcG9pbnRlci4KKyAgIFdpdGhvdXQg
dGhhdCBpbnZhcmlhbnQsIHdlIHdvdWxkIGhhdmUgdG8gaW50cm9kdWNlIGZ1bGwgZHluYW1pYwor
ICAgbWVtb3J5IG1hbmFnZW1lbnQgaW4gdGhpcyBkcml2ZXIgLS0gcHJvYmFibHkgaXQgd291bGQg
YmUgZWFzaWVyIHRvCisgICB3cml0ZSBhIG5ldyBvbmUuIFsyNyBKdW4gMDcgLWpzXSAqLworI2Rl
ZmluZSBHZXRCeXRlcyhmcCxidWYsbikgXAorICAgICggc2l6ZW9mKGJ1ZikgIT0gc2l6ZW9mKHZv
aWQgKikgJiYgc2l6ZW9mKGJ1ZikgPiBuID8gXAorICAgICAgICByZWFkX211bHRpKGJ1ZiwgMSwg
biwgZnApIFwKKyAgICAgIDogRmF0YWwoIlRyeSB0byByZWFkICVkIGJ5dGVzIGluIGFuIGFycmF5
IG9mIHNpemUgJWQiLCBuLCBzaXplb2YoYnVmKSkgKQogCiAKIC8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAt
MzA3LDYgKzMxMyw3IEBAIGludCAgICAgcHJpbnRmKCk7CiBpbnQgICAgIHNzY2FuZigpOwogaW50
ICAgICBzdHJjbXAoKTsKIGNoYXIgICAqc3RyY3B5KCk7CitjaGFyICAgKnN0cm5jcHkoKTsKICMg
ICBpZmRlZiBNU0M1CiB1bnNpZ25lZCBpbnQgc3RybGVuKCk7CiAjICAgZW5kaWYKQEAgLTM5Myw3
ICs0MDAsNyBAQCBzdHJ1Y3QgZm9udF9lbnRyeSB7ICAgIC8qIGZvbnQgZW50cnkgKi8KICAgICBj
aGFyIG5bU1RSU0laRV07ICAgICAgICAgIC8qIEZOVF9ERUYgY29tbWFuZCBwYXJhbWV0ZXJzICAg
ICAgICAgICAgICAgICovCiAgICAgbG9uZzQgICAgZm9udF9tYWc7ICAgICAgICAgLyogY29tcHV0
ZWQgZnJvbSBGTlRfREVGIHMgYW5kIGQgcGFyYW1ldGVycyAgKi8KICAgICAvKmNoYXIgcHNuYW1l
W1NUUlNJWkVdOyovIC8qIFBvc3RTY3JpcHQgbmFtZSBvZiB0aGUgZm9udCAgICAgICAgICAgICAg
ICovCi0gICAgY2hhciAgICBuYW1lW1NUUlNJWkVdOyAgICAvKiBmdWxsIG5hbWUgb2YgUFhMIGZp
bGUgICAgICAgICAgICAgICAgICAgICAqLworICAgIGNoYXIgICAgKm5hbWU7CSAgICAgICAvKiBm
dWxsIG5hbWUgb2YgUFhMIGZpbGUgICAgICAgICAgICAgICAgICAgICAqLwogICAgIEZJTEVQVFIg
Zm9udF9maWxlX2lkOyAgICAgIC8qIGZpbGUgaWRlbnRpZmllciAoTk9fRklMRSBpZiBub25lKSAg
ICAgICAgICovCiAjaWZkZWYgVVNFUFhMCiAgICAgbG9uZzQgICAgbWFnbmlmaWNhdGlvbjsgICAg
LyogbWFnbmlmaWNhdGlvbiByZWFkIGZyb20gUFhMIGZpbGUgICAgICAgICAgKi8KQEAgLTQ4Nyw4
ICs0OTQsOCBAQCB2b2lkICAgIExvYWRBQ2hhciBEVklQUk9UTygobG9uZzQsIHJlZ2lzCiBsb25n
NCAgIE5vU2lnbkV4dGVuZCBEVklQUk9UTygoRklMRVBUUiwgaW50KSk7CiB2b2lkICAgIE9wZW5G
b250RmlsZSBEVklQUk9UTygodm9pZCkpOwogbG9uZzQgICBQaXhSb3VuZCBEVklQUk9UTygobG9u
ZzQsIGxvbmc0KSk7Ci12b2lkICAgIFBrUmFzdGVyIERWSVBST1RPKChzdHJ1Y3QgY2hhcl9lbnRy
eSAqLCBpbnQpKTsgCi12b2lkICAgIFJhc3RlckxpbmUgRFZJUFJPVE8oKHN0cnVjdCBjaGFyX2Vu
dHJ5ICosIHVuc2lnbmVkIGludCwgCit2b2lkICAgIFBrUmFzdGVyIERWSVBST1RPKChzdHJ1Y3Qg
Y2hhcl9lbnRyeSAqLCBpbnQpKTsKK3ZvaWQgICAgUmFzdGVyTGluZSBEVklQUk9UTygoc3RydWN0
IGNoYXJfZW50cnkgKiwgdW5zaWduZWQgaW50LAogCQkJICAgICB1bnNpZ25lZCBpbnQsIHVuc2ln
bmVkIGNoYXIgKikpOwogdm9pZCAgICBSYXN0ZXJDaGFyIERWSVBST1RPKChzdHJ1Y3QgY2hhcl9l
bnRyeSAqKSk7CiB2b2lkICAgIFJlYWRGb250RGVmIERWSVBST1RPKChsb25nNCkpOwpAQCAtNTM0
LDExICs1NDEsMTIgQEAgYm9vbCAgICBMYXN0UGFnZVNwZWNpZmllZCA9IF9GQUxTRTsKICNpZm5k
ZWYgS1BBVEhTRUEKIGNoYXIgICAqUFhMcGF0aCA9IEZPTlRBUkVBOwogI2VuZGlmCi1jaGFyICAg
IEdfcHJvZ25hbWVbU1RSU0laRV07ICAgICAvKiBwcm9ncmFtIG5hbWUgICAgICAgICAgICAgICAg
ICAgICAgICAqLwotY2hhciAgICBmaWxlbmFtZVtTVFJTSVpFXTsgICAgICAgLyogRFZJIGZpbGUg
bmFtZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLWNoYXIgICAgcm9vdG5hbWVbU1RSU0laRV07
ICAgICAgIC8qIERWSSBmaWxlbmFtZSB3aXRob3V0IGV4dGVuc2lvbiAgICAgICovCitjaGFyICAg
KkdfcHJvZ25hbWU7CQkgLyogcHJvZ3JhbSBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgKi8K
K2NoYXIgICAqZmlsZW5hbWU7CSAgICAgICAgIC8qIERWSSBmaWxlIG5hbWUgICAgICAgICAgICAg
ICAgICAgICAgICovCitjaGFyICAgKnJvb3RuYW1lOwkJIC8qIERWSSBmaWxlbmFtZSB3aXRob3V0
IGV4dGVuc2lvbiAgICAgICovCiBjaGFyICAgKkhlYWRlckZpbGVOYW1lID0gIiI7ICAgICAvKiBm
aWxlIG5hbWUgJiBwYXRoIG9mIEhlYWRlcmZpbGUgICAgICAqLwogY2hhciAgICpFbWl0RmlsZU5h
bWUgPSAiIjsgICAgICAgLyogZmlsZSBuYW1lICYgcGF0aCBmb3Igb3V0cHV0ICAgICAgICAgKi8K
K2NoYXIgICAgdG1wX2RpcltTVFJTSVpFXSA9ICIiOwkgLyogdGVtcG9yYXJ5IGRpcmVjdG9yeSBm
b3IgYXV4aWxsaWFyeSBmaWxlcyAqLwogI2lmZGVmIElCTTM4MTIKIGJvb2wgICAgRmlyc3RBbHRl
cm5hdGUgPSBfRkFMU0U7IC8qIGZpcnN0IHBhZ2UgZnJvbSBhbHRlcm5hdGUgY2FzZXR0ZSA/ICAg
Ki8KICNlbmRpZgo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135312</attachid>
            <date>2007-11-06 03:29 0000</date>
            <desc>tetex-src-3.0-dvips_bufferoverflow.patch</desc>
            <filename>tetex-src-3.0-dvips_bufferoverflow.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">aHBzLmMgKHN0YW1wX2V4dGVybmFsLCBzdGFtcF9ocHMpOiBwcm90ZXh0IGFnYWluc3QgbG9uZyBz
dHJpbmdzLgogICAgRnJvbSBCYXN0aWVuIFJvdWNhcmllcyB2aWEgTm9yYmVydCwgMjEgT2N0IDIw
MDcgMTM6MjI6MTksCiAgICBEZWJpYW4gYnVnIDQ0NzA4MS4KCkluZGV4OiB0ZXRleC1zcmMtMy4w
L3RleGsvZHZpcHNrL2hwcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRldGV4LXNyYy0zLjAub3JpZy90ZXhr
L2R2aXBzay9ocHMuYworKysgdGV0ZXgtc3JjLTMuMC90ZXhrL2R2aXBzay9ocHMuYwpAQCAtNDQx
LDE5ICs0NDEsMjggQEAgaW50IGhyZWZfbmFtZV9tYXRjaCBQMkMoY2hhciAqLCBoLCBjaGFyIAog
CiB2b2lkIHN0YW1wX2hwcyBQMUMoSHBzX2xpbmsgKiwgcGwpCiB7Ci0gIGNoYXIgdG1wYnVmWzIw
MF0gOworICBjaGFyICogdG1wYnVmOwogICBpZiAocGwgPT0gTlVMTCkgewotICAgIGVycm9yKCJO
dWxsIHBvaW50ZXIsIG9oIG5vISIpIDsKKyAgICBlcnJvcigic3RhbXBfaHBzOiBudWxsIHBsIHBv
aW50ZXIsIG9oIG5vISIpIDsKICAgICByZXR1cm4gOwotICB9IGVsc2UgewotICAgIC8qIHByaW50
IG91dCB0aGUgcHJvcGVyIHBkZm0gd2l0aCBsb2NhbCBwYWdlIGluZm8gb25seSAKLSAgICAgKiAg
dGFyZ2V0IGluZm8gd2lsbCBiZSBpbiB0aGUgdGFyZ2V0IGRpY3Rpb25hcnkgKi8KLSAgICAodm9p
ZClzcHJpbnRmKHRtcGJ1ZiwgCi0JCSAgIiAoJXMpIFtbJS4wZiAlLjBmICUuMGYgJS4wZl0gWyVp
ICVpICVpIFslaSAlaV1dIFslLjBmICUuMGYgJS4wZl1dIHBkZm0gIiwgcGwtPnRpdGxlLCBwbC0+
cmVjdC5sbHgsIHBsLT5yZWN0LmxseSwgcGwtPnJlY3QudXJ4LCBwbC0+cmVjdC51cnksCi0JCSAg
cGwtPmJvcmRlclswXSwgcGwtPmJvcmRlclsxXSwgcGwtPmJvcmRlclsyXSwgcGwtPmJvcmRlclsz
XSxwbC0+Ym9yZGVyWzRdLAotCQkgIHBsLT5jb2xvclswXSwgcGwtPmNvbG9yWzFdLCBwbC0+Y29s
b3JbMl0pIDsKLSAgICBjbWRvdXQodG1wYnVmKSA7IAotICB9CisgIH0gCisgIGlmKHBsLT50aXRs
ZSA9PSBOVUxMKSB7CisgICAgZXJyb3IoInN0YW1wX2hwczogbnVsbCBwbC0+dGl0bGUgcG9pbnRl
ciwgb2ggbm8hIikgOworICAgIHJldHVybiA7CisgIH0gCisKKyAgdG1wYnVmID0gKGNoYXIgKikg
eG1hbGxvYyhzdHJsZW4ocGwtPnRpdGxlKSsyMDApOworCisgIC8qIHByaW50IG91dCB0aGUgcHJv
cGVyIHBkZm0gd2l0aCBsb2NhbCBwYWdlIGluZm8gb25seSAKKyAgICogIHRhcmdldCBpbmZvIHdp
bGwgYmUgaW4gdGhlIHRhcmdldCBkaWN0aW9uYXJ5ICovCisgICh2b2lkKXNwcmludGYodG1wYnVm
LCAKKwkJIiAoJXMpIFtbJS4wZiAlLjBmICUuMGYgJS4wZl0gWyVpICVpICVpIFslaSAlaV1dIFsl
LjBmICUuMGYgJS4wZl1dIHBkZm0gIiwgCisJCXBsLT50aXRsZSwgcGwtPnJlY3QubGx4LCBwbC0+
cmVjdC5sbHksIHBsLT5yZWN0LnVyeCwgcGwtPnJlY3QudXJ5LAorCQlwbC0+Ym9yZGVyWzBdLCBw
bC0+Ym9yZGVyWzFdLCBwbC0+Ym9yZGVyWzJdLCBwbC0+Ym9yZGVyWzNdLHBsLT5ib3JkZXJbNF0s
CisJCXBsLT5jb2xvclswXSwgcGwtPmNvbG9yWzFdLCBwbC0+Y29sb3JbMl0pIDsKKyAgY21kb3V0
KHRtcGJ1ZikgOyAKKyAgZnJlZSh0bXBidWYpOworICAKICAgCiB9CiAKQEAgLTQ2MiwxOCArNDcx
LDI3IEBAIHZvaWQgc3RhbXBfaHBzIFAxQyhIcHNfbGluayAqLCBwbCkKICAqLwogdm9pZCBzdGFt
cF9leHRlcm5hbCBQMkMoY2hhciAqLCBzLCBIcHNfbGluayAqLCBwbCkgCiB7Ci0gIGNoYXIgdG1w
YnVmWzIwMF07CisgIGNoYXIgKnRtcGJ1ZjsKICAgaWYgKHBsID09IE5VTEwpIHsKLSAgICBlcnJv
cigiTnVsbCBwb2ludGVyLCBvaCBubyEiKSA7CisgICAgZXJyb3IoInN0YW1wX2V4dGVybmFsOiBu
dWxsIHBsIHBvaW50ZXIsIG9oIG5vISIpIDsKICAgICByZXR1cm4gOwotICB9IGVsc2UgewotICAg
IC8qIHByaW50IG91dCB0aGUgcHJvcGVyIHBkZm0gd2l0aCBsb2NhbCBwYWdlIGluZm8gb25seSAK
LSAgICAgKiAgdGFyZ2V0IGluZm8gd2lsbCBiZSBpbiB0aGUgdGFyZ2V0IGRpY3Rpb25hcnkgKi8K
LSAgICAodm9pZClzcHJpbnRmKHRtcGJ1ZiwiIFtbJS4wZiAlLjBmICUuMGYgJS4wZl0gWyVpICVp
ICVpIFslaSAlaV1dIFslLjBmICUuMGYgJS4wZl1dICglcykgcGRmbSAiLCBwbC0+cmVjdC5sbHgs
IHBsLT5yZWN0LmxseSwgcGwtPnJlY3QudXJ4LCBwbC0+cmVjdC51cnksCi0JCSAgcGwtPmJvcmRl
clswXSwgcGwtPmJvcmRlclsxXSwgcGwtPmJvcmRlclsyXSwgcGwtPmJvcmRlclszXSxwbC0+Ym9y
ZGVyWzRdLAotCQkgIHBsLT5jb2xvclswXSwgcGwtPmNvbG9yWzFdLCBwbC0+Y29sb3JbMl0sIHMp
IDsKLSAgICBjbWRvdXQodG1wYnVmKSA7Ci0gIH0KKyAgfSAKKworICBpZiAocyA9PSBOVUxMKSB7
CisgICAgZXJyb3IoInN0YW1wX2V4dGVybmFsOiBudWxsIHMgcG9pbnRlciwgb2ggbm8hIikgOwor
ICAgIHJldHVybiA7CisgIH0gCisKKyAgdG1wYnVmID0gKGNoYXIgKikgeG1hbGxvYyhzdHJsZW4o
cykgKyAyMDApOworCisgIC8qIHByaW50IG91dCB0aGUgcHJvcGVyIHBkZm0gd2l0aCBsb2NhbCBw
YWdlIGluZm8gb25seSAKKyAgICogIHRhcmdldCBpbmZvIHdpbGwgYmUgaW4gdGhlIHRhcmdldCBk
aWN0aW9uYXJ5ICovCisgICh2b2lkKXNwcmludGYodG1wYnVmLCIgW1slLjBmICUuMGYgJS4wZiAl
LjBmXSBbJWkgJWkgJWkgWyVpICVpXV0gWyUuMGYgJS4wZiAlLjBmXV0gKCVzKSBwZGZtICIsCisJ
CXBsLT5yZWN0LmxseCwgcGwtPnJlY3QubGx5LCBwbC0+cmVjdC51cngsIHBsLT5yZWN0LnVyeSwK
KwkJcGwtPmJvcmRlclswXSwgcGwtPmJvcmRlclsxXSwgcGwtPmJvcmRlclsyXSwgcGwtPmJvcmRl
clszXSxwbC0+Ym9yZGVyWzRdLAorCQlwbC0+Y29sb3JbMF0sIHBsLT5jb2xvclsxXSwgcGwtPmNv
bG9yWzJdLCBzKSA7CisgIGNtZG91dCh0bXBidWYpIDsKKyAgZnJlZSh0bXBidWYpOwogfQogCiB2
b2lkIGZpbmlzaF9ocHMgUDFIKHZvaWQpIHsK
</data>        

          </attachment>
    </bug>

</bugzilla>