<?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>92573</bug_id>
          
          <creation_ts>2005-05-14 03:35 0000</creation_ts>
          <short_desc>app-admin/gamin version bump to 0.1.0</short_desc>
          <delta_ts>2005-06-20 10:43:26 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>GNOME</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>93587</blocked>
          
          <everconfirmed>1</everconfirmed>
          <reporter>dsd@gentoo.org</reporter>
          <assigned_to>gnome@gentoo.org</assigned_to>
          <cc>bsd@gentoo.org</cc>
    
    <cc>gentopia@gentoo.org</cc>
    
    <cc>herbs@gentoo.org</cc>
    
    <cc>ladanyi@tmit.bme.hu</cc>
    
    <cc>murray.alex@gmail.com</cc>
    
    <cc>nuno.araujo@russo79.com</cc>
    
    <cc>steev@gentoo.org</cc>

      

      
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2005-05-14 03:35:12 0000</bug_when>
            <thetext>This requires inotify 0.23-6 which is not available in portage yet, so if its added to portage, it needs to be in package.mask.

gentoo-sources-2.6.12 will include inotify 0.23-7 or whatever the newest one is at time of release.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2005-05-14 03:35:42 0000</bug_when>
            <thetext>Created an attachment (id=58855)
gamin-0.1.0.ebuild

Nothing needed changing except the info messages</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>mark@borkware.net</who>
            <bug_when>2005-05-15 05:34:23 0000</bug_when>
            <thetext>Created an attachment (id=58948)
gamin-0.1.0.ebuild (noinotify USE flag)

Optional (although heavily encouraged) inotify usage. I got it imported to
gentopia yesterday.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>mark@borkware.net</who>
            <bug_when>2005-05-15 08:39:41 0000</bug_when>
            <thetext>(From update of attachment 58948)
Never mind. joem didn&apos;t like the idea of configurable inotify support.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2005-05-23 13:11:03 0000</bug_when>
            <thetext>Created an attachment (id=59654)
gamin-0.1.0.ebuild

Latest bugfix from John McCutchan</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2005-05-23 13:11:25 0000</bug_when>
            <thetext>Created an attachment (id=59655)
gamin-0.1.0-flow-control.patch

The actual fix</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ghepeu@virgilio.it</who>
            <bug_when>2005-05-23 14:38:03 0000</bug_when>
            <thetext>Created an attachment (id=59663)
gamin-0.1.0-cvs-upgrade.patch

includes two CVS fixes since the release of 0.1.0

* server/gam_poll.c: (unregister_node), factorize code and make sure node are
unregistered correctly. Fix crash from bug #303932.
* libgamin/gam_data.c: (gamin_data_conn_event): Fix req-&gt;state vs req-&gt;type
thinko.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>steev@gentoo.org</who>
            <bug_when>2005-05-23 14:50:51 0000</bug_when>
            <thetext>Is this going to go into the gentopia overlay as well?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>cardoe@gentoo.org</who>
            <bug_when>2005-05-23 19:51:37 0000</bug_when>
            <thetext>Dan, any chance we can give ya commit access or anything? And you toss them in
there? It will give you a larger test base.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>cardoe@gentoo.org</who>
            <bug_when>2005-05-23 19:56:30 0000</bug_when>
            <thetext>Dan, to Gentopia that is.

Added ebuild to Gentopia overlay as gamin-0.1.0-r1.ebuild with both patches applied.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>flameeyes@gentoo.org</who>
            <bug_when>2005-05-26 16:07:28 0000</bug_when>
            <thetext>fam is not going to work fine on Gentoo/FreeBSD, I&apos;ll submit a patch to this 
ebuild and a patch to gamin sourced (cumulative of ports patches) as gamin is 
probably the best way to go for us. </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>flameeyes@gentoo.org</who>
            <bug_when>2005-05-26 16:18:50 0000</bug_when>
            <thetext>Created an attachment (id=59898)
gamin-0.1.0-r1.patch

(svn) patch over gamin-0.1.0-r1 ebuild, which adds G/FreeBSD support.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>flameeyes@gentoo.org</who>
            <bug_when>2005-05-26 16:19:57 0000</bug_when>
            <thetext>Created an attachment (id=59899)
gamin-0.1.0-freebsd.patch

Patch with all the FreeBSD changes. Works fine on Linux (and probably
Gentoo/kFreeBSD), too.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gad.kadosh@gmail.com</who>
            <bug_when>2005-06-18 04:19:27 0000</bug_when>
            <thetext>gamin-0.1.1 is out, but it doesn&apos;t look like kernel 2.6.12 has inotify ?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2005-06-18 08:01:48 0000</bug_when>
            <thetext>Correct. inotify has never been in the upstream kernel.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>x_claessens@skynet.be</who>
            <bug_when>2005-06-18 22:03:20 0000</bug_when>
            <thetext>gentoo-sources-2.6.12 is out with inotify 0.23-12. So gamin-0.1.0 can now be in
portage in ~x86</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>steev@gentoo.org</who>
            <bug_when>2005-06-19 01:48:11 0000</bug_when>
            <thetext>I&apos;m not sure if it works for you Claessens, however, here, I have
gentoo-sources-2.6.12, and gamin-0.1.0-r1 (and even tried gamin CVS) and I am
back to the problem that I had before with mm-sources, in which, gamin no longer
notifies/reads my usb disk insertion/pmount no longer automounts the disk.

steev@mebius ~ $ pmount-hal /org/freedesktop/Hal/devices/volume_uuid_1C98_52D7
Error: device /dev/sda1 is not removable

Is what I get (and got with mm-sources, but due to mm-sources nature, I didn&apos;t
file a bug, simply bumped down to 2.6.11-r11, which worked fine once I applied
the proper patch for inotify to the kernel)  It seems like the new inotify patch
in gentoo-sources SHOULD work, but apparently, something is missing somewhere. 
Watching both gamin and pmount closely to see.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2005-06-19 02:10:10 0000</bug_when>
            <thetext>I think you are running into a HAL bug which is fixed in hal 0.5. Either way,
it&apos;s certainly not related to gamin.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>x_claessens@skynet.be</who>
            <bug_when>2005-06-19 12:27:59 0000</bug_when>
            <thetext>works for me yes ! just tried gamin-0.1.0.ebuild and gamin-0.1.0-flow-control.patch.

i&apos;ve sys-apps/hal-0.4.8 and usb key are correctly monted and the icon appeare on
the gnome desktop witch was buggy with preview versions of kernel/gamin.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2005-06-20 10:43:26 0000</bug_when>
            <thetext>gamin-0.1.1 is now included in the tree</thetext>
          </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>58855</attachid>
            <date>2005-05-14 03:35 0000</date>
            <desc>gamin-0.1.0.ebuild</desc>
            <filename>gamin-0.1.0.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA1IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L2FwcC1hZG1pbi9nYW1pbi9nYW1pbi0wLjAuMjYu
ZWJ1aWxkLHYgMS4xIDIwMDUvMDMvMTUgMjI6MTE6MTIgYXphcmFoIEV4cCAkCgpERVNDUklQVElP
Tj0iTGlicmFyeSBwcm92aWRpbmcgdGhlIEZBTSBGaWxlIEFsdGVyYXRpb24gTW9uaXRvciBBUEki
CkhPTUVQQUdFPSJodHRwOi8vd3d3Lmdub21lLm9yZy9+dmVpbGxhcmQvZ2FtaW4vIgpTUkNfVVJJ
PSJodHRwOi8vd3d3Lmdub21lLm9yZy9+dmVpbGxhcmQvZ2FtaW4vc291cmNlcy8ke1B9LnRhci5n
eiIKCkxJQ0VOU0U9IkxHUEwtMiIKU0xPVD0iMCIKS0VZV09SRFM9In54ODYgfmFtZDY0IH5hcm0g
fmhwcGEgfmlhNjQgfnBwYyB+czM5MCIKSVVTRT0iZGVidWcgZG9jIgoKUkRFUEVORD0idmlydHVh
bC9saWJjCgk+PWRldi1saWJzL2dsaWItMgoJIWFwcC1hZG1pbi9mYW0iCgpERVBFTkQ9IiR7UkRF
UEVORH0KCWRldi11dGlsL3BrZ2NvbmZpZyIKClBST1ZJREU9InZpcnR1YWwvZmFtIgoKc3JjX2Nv
bXBpbGUoKSB7CgoJZWNvbmYgXAoJCS0tZW5hYmxlLWlub3RpZnkgXAoJCWB1c2VfZW5hYmxlIGRl
YnVnYCBcCgkJYHVzZV9lbmFibGUgZGVidWcgZGVidWctYXBpYCBcCgkJfHwgZGllCgoJZW1ha2Ug
fHwgZGllICJlbWFrZSBmYWlsZWQiCgp9CgpzcmNfaW5zdGFsbCgpIHsKCgltYWtlIERFU1RESVI9
IiR7RH0iIGluc3RhbGwgfHwgZGllCgoJZG9kb2MgQVVUSE9SUyBDaGFuZ2VMb2cgUkVBRE1FIFRP
RE8gTkVXUyBkb2MvKnR4dAoKCXVzZSBkb2MgJiYgZG9odG1sIGRvYy8qCgp9Cgpwa2dfcG9zdGlu
c3QoKSB7CgoJZWluZm8gIkl0IGlzIHN0cm9uZ2x5IHN1Z2dlc3RlZCB5b3UgdXNlIEdhbWluIHdp
dGggYW4gaW5vdGlmeSBlbmFibGVkIgoJZWluZm8gImtlcm5lbCBmb3IgYmVzdCBwZXJmb3JtYW5j
ZS4gRm9yIHRoaXMgcmVsZWFzZSBvZiBnYW1pbiB5b3UgbmVlZCIKCWVpbmZvICJhdCBsZWFzdCBh
biBpbm90aWZ5IDAuMjMtNiBwYXRjaGVkIGtlcm5lbCwgZ2VudG9vLWRldi1zb3VyY2VzLTIuNi4x
MiIKCWVpbmZvICJwcm92aWRlcyB0aGlzIHBhdGNoIGZvciBleGFtcGxlLiIKCn0K
</data>        

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>58948</attachid>
            <date>2005-05-15 05:34 0000</date>
            <desc>gamin-0.1.0.ebuild (noinotify USE flag)</desc>
            <filename>gamin-0.1.0.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA1IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6ICQKCkRFU0NSSVBUSU9OPSJMaWJyYXJ5IHByb3ZpZGluZyB0aGUgRkFNIEZpbGUgQWx0ZXJh
dGlvbiBNb25pdG9yIEFQSSIKSE9NRVBBR0U9Imh0dHA6Ly93d3cuZ25vbWUub3JnL352ZWlsbGFy
ZC9nYW1pbiIKU1JDX1VSST0iJHtIT01FUEFHRX0vc291cmNlcy8ke1B9LnRhci5neiIKCkxJQ0VO
U0U9IkxHUEwtMiIKU0xPVD0iMCIKS0VZV09SRFM9In54ODYgfmFtZDY0IH5hcm0gfmhwcGEgfmlh
NjQgfnBwYyB+czM5MCIKSVVTRT0iZGVidWcgZG9jIG5vaW5vdGlmeSIKClJERVBFTkQ9InZpcnR1
YWwvbGliYwoJCT49ZGV2LWxpYnMvZ2xpYi0yCgkJIWFwcC1hZG1pbi9mYW0iCgpERVBFTkQ9IiR7
UkRFUEVORH0KCQlkZXYtdXRpbC9wa2djb25maWciCgpQUk9WSURFPSJ2aXJ0dWFsL2ZhbSIKCnNy
Y19jb21waWxlKCkgewoKCWVjb25mIFwKCQkkKHVzZV9lbmFibGUgIW5vaW5vdGlmeSBpbm90aWZ5
KSBcCgkJJCh1c2VfZW5hYmxlIGRlYnVnKSBcCgkJJCh1c2VfZW5hYmxlIGRlYnVnIGRlYnVnLWFw
aSkgXAoJCXx8IGRpZQoKCWVtYWtlIHx8IGRpZSAiZW1ha2UgZmFpbGVkIgoKfQoKc3JjX2luc3Rh
bGwoKSB7CgoJbWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsIHx8IGRpZQoKCWRvZG9jIEFVVEhP
UlMgQ2hhbmdlTG9nIFJFQURNRSBUT0RPIE5FV1MgZG9jLyp0eHQKCgl1c2UgZG9jICYmIGRvaHRt
bCBkb2MvKgoKfQoKcGtnX3Bvc3RpbnN0KCkgewoKCWVjaG8KCWlmIHVzZSBub2lub3RpZnk7IHRo
ZW4KCgkJZXdhcm4gIllvdSBoYXZlIGNob3NlbiB0byBidWlsZCBnYW1pbiB3aXRob3V0IGlub3Rp
Znkgc3VwcG9ydC4iCgkJZXdhcm4KCQlld2FybiAiVGhpcyBpcyBzdHJvbmdseSB1bnJlY29tbWVu
ZGVkIGFuZCB5b3Ugd2lsbCBzdWZmZXIiCgkJZXdhcm4gImZyb20gZXh0cmVtZWx5IHBvb3IgcGVy
Zm9ybWFuY2UhIgoJCWV3YXJuCgkJZXdhcm4gIlBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgdG8g
YW4gaW5vdGlmeS1lbmFibGVkIGtlcm5lbCIKCQlld2FybiAic3VjaCBhcyA+PXN5cy1rZXJuZWwv
Z2VudG9vLXNvdXJjZXMtMi42LjEyIgoKCWVsc2UKCgkJZXdhcm4gIllvdSBoYXZlIGJ1aWx0IGdh
bWluIHdpdGggaW5vdGlmeSBzdXBwb3J0LiBJbiBvcmRlciBmb3IgdGhpcyB0byIKCQlld2FybiAi
d29yaywgeW91IG11c3QgdXNlIGFuIGlub2ZpdHktZW5hYmxlZCBrZXJuZWwuIgoJCWVjaG8KCQll
aW5mbyAiVGhpcyByZWxlYXNlIG9mIGdhbWluIHJlcXVpcmVzIGlub3RpZnkgdmVyc2lvbiAwLjIz
IG9yIG5ld2VyLiIKCQllaW5mbyAiR2V0IHRoZSBsYXRlc3QgcGF0Y2ggZm9yIHlvdXIga2VybmVs
IGZyb20iCgkJZWluZm8gIiAgaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwv
cGVvcGxlL3JtbC9pbm90aWZ5L3YyLjYvMC4yMyIKCQllaW5mbwoJCWVpbmZvICJUbyBhZGQgaW5v
dGlmeS0wLjIzIHN1cHBvcnQgdG8geW91ciBjdXJyZW50IGtlcm5lbDoiCgkJZWluZm8KCQllaW5m
byAiICBjZCAvdXNyL3NyYy9saW51eCIKCQllaW5mbyAiICBwYXRjaCAtcDEgPCR7RklMRVNESVJ9
L2lub3RpZnktMC4yMy1ybWwtMi42LjEyLXJjNC03LnBhdGNoIgoJCWVpbmZvICIgIG1ha2Ugb2xk
Y29uZmlnIgojCQllaW5mbyAiICBtYWtlICYmIGNwIGFyY2gvJCh1bmFtZSAtbSkvYm9vdC9ieklt
YWdlIFxcIgojCQllaW5mbyAiICAgIC9ib290L2tlcm5lbC0kKHVuYW1lIC1yKSIKIwkJZWluZm8g
IiAgcmVib290IgoJCWVpbmZvCgkJZWluZm8gIk5vdyByZS1jb21waWxlIHlvdXIga2VybmVsIGFz
IHVzdWFsIGFuZCBib290IGl0LiIKCglmaQoJZWNobwoKfQo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>59654</attachid>
            <date>2005-05-23 13:11 0000</date>
            <desc>gamin-0.1.0.ebuild</desc>
            <filename>gamin-0.1.0.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA1IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L2FwcC1hZG1pbi9nYW1pbi9nYW1pbi0wLjAuMjYu
ZWJ1aWxkLHYgMS4xIDIwMDUvMDMvMTUgMjI6MTE6MTIgYXphcmFoIEV4cCAkCgppbmhlcml0IGV1
dGlscwoKREVTQ1JJUFRJT049IkxpYnJhcnkgcHJvdmlkaW5nIHRoZSBGQU0gRmlsZSBBbHRlcmF0
aW9uIE1vbml0b3IgQVBJIgpIT01FUEFHRT0iaHR0cDovL3d3dy5nbm9tZS5vcmcvfnZlaWxsYXJk
L2dhbWluLyIKU1JDX1VSST0iaHR0cDovL3d3dy5nbm9tZS5vcmcvfnZlaWxsYXJkL2dhbWluL3Nv
dXJjZXMvJHtQfS50YXIuZ3oiCgpMSUNFTlNFPSJMR1BMLTIiClNMT1Q9IjAiCktFWVdPUkRTPSJ+
eDg2IH5hbWQ2NCB+YXJtIH5ocHBhIH5pYTY0IH5wcGMgfnMzOTAiCklVU0U9ImRlYnVnIGRvYyIK
ClJERVBFTkQ9InZpcnR1YWwvbGliYwoJPj1kZXYtbGlicy9nbGliLTIKCSFhcHAtYWRtaW4vZmFt
IgoKREVQRU5EPSIke1JERVBFTkR9CglkZXYtdXRpbC9wa2djb25maWciCgpQUk9WSURFPSJ2aXJ0
dWFsL2ZhbSIKCnNyY191bnBhY2soKSB7Cgl1bnBhY2sgJHtBfQoJY2QgJHtTfQoJZXBhdGNoICR7
RklMRVNESVJ9LyR7UH0tZmxvdy1jb250cm9sLnBhdGNoCn0KCnNyY19jb21waWxlKCkgewoKCWVj
b25mIFwKCQktLWVuYWJsZS1pbm90aWZ5IFwKCQlgdXNlX2VuYWJsZSBkZWJ1Z2AgXAoJCWB1c2Vf
ZW5hYmxlIGRlYnVnIGRlYnVnLWFwaWAgXAoJCXx8IGRpZQoKCWVtYWtlIHx8IGRpZSAiZW1ha2Ug
ZmFpbGVkIgoKfQoKc3JjX2luc3RhbGwoKSB7CgoJbWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxs
IHx8IGRpZQoKCWRvZG9jIEFVVEhPUlMgQ2hhbmdlTG9nIFJFQURNRSBUT0RPIE5FV1MgZG9jLyp0
eHQKCgl1c2UgZG9jICYmIGRvaHRtbCBkb2MvKgoKfQoKcGtnX3Bvc3RpbnN0KCkgewoKCWVpbmZv
ICJJdCBpcyBzdHJvbmdseSBzdWdnZXN0ZWQgeW91IHVzZSBHYW1pbiB3aXRoIGFuIGlub3RpZnkg
ZW5hYmxlZCIKCWVpbmZvICJrZXJuZWwgZm9yIGJlc3QgcGVyZm9ybWFuY2UuIEZvciB0aGlzIHJl
bGVhc2Ugb2YgZ2FtaW4geW91IG5lZWQiCgllaW5mbyAiYXQgbGVhc3QgYW4gaW5vdGlmeSAwLjIz
LTYgcGF0Y2hlZCBrZXJuZWwsIGdlbnRvby1kZXYtc291cmNlcy0yLjYuMTIiCgllaW5mbyAicHJv
dmlkZXMgdGhpcyBwYXRjaCBmb3IgZXhhbXBsZS4iCgp9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59655</attachid>
            <date>2005-05-23 13:11 0000</date>
            <desc>gamin-0.1.0-flow-control.patch</desc>
            <filename>gamin-0.1.0-flow-control.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">PyBNYWtlZmlsZQo/IE1ha2VmaWxlLmluCj8gYWNsb2NhbC5tNAo/IGF1dG9tNHRlLmNhY2hlCj8g
Y29uZmlnLmgKPyBjb25maWcuaC5pbgo/IGNvbmZpZy5sb2cKPyBjb25maWcuc3RhdHVzCj8gY29u
ZmlndXJlCj8gZ2FtaW4ucGMKPyBnYW1pbi5zcGVjCj8gbGlidG9vbAo/IHN0YW1wLWgxCj8gZG9j
L01ha2VmaWxlCj8gZG9jL01ha2VmaWxlLmluCj8gbGliL01ha2VmaWxlCj8gbGliL01ha2VmaWxl
LmluCj8gbGliZ2FtaW4vTWFrZWZpbGUKPyBsaWJnYW1pbi9NYWtlZmlsZS5pbgo/IGxpYmdhbWlu
L2dhbV9lcnJvci5jCj8gbGliZ2FtaW4vZ2FtX2V2ZW50LmMKPyBsaWJnYW1pbi9nYW1pbgo/IHB5
dGhvbi9NYWtlZmlsZQo/IHB5dGhvbi9NYWtlZmlsZS5pbgo/IHB5dGhvbi90ZXN0cy9NYWtlZmls
ZQo/IHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5pbgo/IHNlcnZlci9NYWtlZmlsZQo/IHNlcnZlci9N
YWtlZmlsZS5pbgo/IHNlcnZlci9nYW1fc2VydmVyCj8gdGVzdHMvTWFrZWZpbGUKPyB0ZXN0cy9N
YWtlZmlsZS5pbgo/IHRlc3RzL3Rlc3RnYW0KSW5kZXg6IHNlcnZlci9nYW1faW5vdGlmeS5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ25vbWUvZ2FtaW4vc2VydmVyL2dhbV9pbm90aWZ5LmMs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjEKZGlmZiAtdSAtcjEuMjEgZ2FtX2lub3RpZnkuYwot
LS0gc2VydmVyL2dhbV9pbm90aWZ5LmMJMTAgTWF5IDIwMDUgMDk6Mjk6NTIgLTAwMDAJMS4yMQor
Kysgc2VydmVyL2dhbV9pbm90aWZ5LmMJMjMgTWF5IDIwMDUgMTc6NDE6MjAgLTAwMDAKQEAgLTE2
OCwxMCArMTY4LDEwIEBACiAJICAgIEdBTV9ERUJVRyhERUJVR19JTkZPLCAiUmVtb3ZpbmcgJXMg
ZnJvbSBpbm90aWZ5XG4iLCBwYXRoKTsKIAkgICAgYnJlYWs7CiAJY2FzZSBHQU1JTl9GTE9XQ09O
VFJPTFNUQVJUOgotCSAgICBHQU1fREVCVUcoREVCVUdfSU5GTywgIlN0YXJ0IGZsb3cgY29udHJv
bCBmb3IgJXNcbiIsIHBhdGgpOworCSAgICBHQU1fREVCVUcoREVCVUdfSU5GTywgImlub3RpZnk6
IFN0YXJ0IGZsb3cgY29udHJvbCBmb3IgJXNcbiIsIHBhdGgpOwogCSAgICBicmVhazsKIAljYXNl
IEdBTUlOX0ZMT1dDT05UUk9MU1RPUDoKLQkgICAgR0FNX0RFQlVHKERFQlVHX0lORk8sICJTdG9w
IGZsb3cgY29udHJvbCBmb3IgJXNcbiIsIHBhdGgpOworCSAgICBHQU1fREVCVUcoREVCVUdfSU5G
TywgImlub3RpZnk6IFN0b3AgZmxvdyBjb250cm9sIGZvciAlc1xuIiwgcGF0aCk7CiAJICAgIGJy
ZWFrOwogCWRlZmF1bHQ6CiAJICAgIGdhbV9lcnJvcihERUJVR19JTkZPLCAiVW5rbm93biBpbm90
aWZ5IG9wZXJhdGlvbiAlZCBmb3IgJXNcbiIsCkBAIC0yODEsOCArMjgxLDEwIEBACiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBHQU1fREVCVUcoREVCVUdfSU5GTywgIiAgbm90IGZvdW5kIHVz
aW5nIHBhcmVudFxuIik7CiAgICAgICAgIH0KKyNpZiAwCiAgICAgICAgIGlmIChkYXRhICE9IE5V
TEwpIHsKIAkgICAgaWYgKG1vZGUgPT0gR0FNSU5fRkxPV0NPTlRST0xTVEFSVCkgeworCQlHQU1f
REVCVUcoREVCVUdfSU5GTywgImlub3RpZnk6IEdBTUlOX0ZMT1dDT05UUk9MU1RBUlQgZm9yICVz
XG4iLCBkYXRhLT5wYXRoKTsKIAkJaWYgKGRhdGEtPndkID49IDApIHsKIAkJICAgIGlmIChpb2N0
bCAoaW5vdGlmeV9kZXZpY2VfZmQsIElOT1RJRllfSUdOT1JFLCAmZGF0YS0+d2QpIDwgMCkgewog
CQkJR0FNX0RFQlVHIChERUJVR19JTkZPLCAiSU5PVElGWV9JR05PUkUgZmFpbGVkIGZvciAlcyAo
d2QgPSAlZClcbiIsIGRhdGEtPnBhdGgsIGRhdGEtPndkKTsKQEAgLTI5NiwxNCArMjk4LDE3IEBA
CiAJCX0KIAkJZGF0YS0+YnVzeSsrOwogCSAgICB9IGVsc2UgeworCQlHQU1fREVCVUcoREVCVUdf
SU5GTywgImlub3RpZnk6IEdBTUlOX0ZMT1dDT05UUk9MU1RPUCBmb3IgJXNcbiIsIGRhdGEtPnBh
dGgpOwogCSAgICAgICAgaWYgKGRhdGEtPmJ1c3kgPiAwKSB7CisJCSAgICBHQU1fREVCVUcoREVC
VUdfSU5GTywgImlub3RpZnk6IGRhdGEtPmJ1c3kgPiAwIGZvciAlc1xuIiwgZGF0YS0+cGF0aCk7
CiAJCSAgICBkYXRhLT5idXN5LS07CiAJCSAgICBpZiAoZGF0YS0+YnVzeSA9PSAwKSB7CisJCQlH
QU1fREVCVUcoREVCVUdfSU5GTywgImlub3RpZnk6IGRhdGEtPmJ1c3kgPT0gMCBmb3IgJXNcbiIs
IGRhdGEtPnBhdGgpOwogCQkJcGF0aF9mZCA9IG9wZW4oZGF0YS0+cGF0aCwgT19SRE9OTFkpOwog
CQkJaWYgKHBhdGhfZmQgPCAwKSB7CiAJCQkgICAgR19VTkxPQ0soaW5vdGlmeSk7CiAJCQkgICAg
R0FNX0RFQlVHKERFQlVHX0lORk8sCi0JCQkgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhY3Rp
dmF0ZSBpbm90aWZ5IGZvciAlc1xuIiwKKwkJCSAgICAgICAgICAgICAgImZhaWxlZCB0byByZWFj
dGl2YXRlIGlub3RpZnkgZm9yICVzXG4iLAogCQkJCSAgICAgIGRhdGEtPnBhdGgpOwogCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChkaXIgIT0gcGF0aCkgJiYgKGRpciAhPSBOVUxM
KSkKQEAgLTMxNyw3ICszMjIsNyBAQAogCQkJY2xvc2UgKHBhdGhfZmQpOwogCiAJCQkvKiBSZW1v
dmUgdGhlIG9sZCB3ZCBmcm9tIHRoZSBoYXNoIHRhYmxlICovCi0JCSAgICBnX2hhc2hfdGFibGVf
cmVtb3ZlKHdkX2hhc2gsIEdJTlRfVE9fUE9JTlRFUihkYXRhLT53ZCkpOworCQkJZ19oYXNoX3Rh
YmxlX3JlbW92ZSh3ZF9oYXNoLCBHSU5UX1RPX1BPSU5URVIoZGF0YS0+d2QpKTsKIAogCQkJZGF0
YS0+d2QgPSBwYXRoX3dkOwogCQkJZGF0YS0+ZGVhY3RpdmF0ZWQgPSBGQUxTRTsKQEAgLTMyNSw3
ICszMzAsNyBAQAogCQkJLyogSW5zZXJ0IHRoZSBuZXcgd2QgaW50byB0aGUgaGFzaCB0YWJsZSAq
LwogCQkJZ19oYXNoX3RhYmxlX2luc2VydCh3ZF9oYXNoLCBHSU5UX1RPX1BPSU5URVIoZGF0YS0+
d2QpLAogCQkJICAgICAgICAgICAgICAgICAgICBkYXRhKTsKLQkJCUdBTV9ERUJVRyhERUJVR19J
TkZPLCAiUmVhY3RpdmF0ZWQgaW5vdGlmeSBmb3IgJXNcbiIsCisJCQlHQU1fREVCVUcoREVCVUdf
SU5GTywgInJlYWN0aXZhdGVkIGlub3RpZnkgZm9yICVzXG4iLAogCQkJICAgICAgICAgIGRhdGEt
PnBhdGgpOwogI2lmZGVmIEdBTUlOX0RFQlVHX0FQSQogCQkJZ2FtX2RlYnVnX3JlcG9ydChHQU1p
bm90aWZ5Rmxvd09mZiwgcGF0aCwgMCk7CkBAIC0zMzQsNiArMzM5LDcgQEAKIAkJfQogCSAgICB9
CiAJfQorI2VuZGlmCiAgICAgICAgIGlmICgoZGlyICE9IHBhdGgpICYmIChkaXIgIT0gTlVMTCkp
CiAgICAgICAgICAgICBnX2ZyZWUoZGlyKTsKICAgICB9IGVsc2UgewpAQCAtNDIwLDEyICs0MjYs
MTUgQEAKIAogCWRhdGEgPSBnX2hhc2hfdGFibGVfbG9va3VwICh3ZF9oYXNoLCBHSU5UX1RPX1BP
SU5URVIoZXZlbnQtPndkKSk7CiAJaWYgKCFkYXRhKSB7Ci0JICAgIEdBTV9ERUJVRyhERUJVR19J
TkZPLCAiaW5vdGlmeSBjYW4ndCBmaW5kIHdkICVkXG4iLCBldmVudC0+d2QpOworCSAgICBHQU1f
REVCVUcoREVCVUdfSU5GTywgInByb2Nlc3NpbmcgZXZlbnQ6IGlub3RpZnkgY2FuJ3QgZmluZCB3
ZCAlZFxuIiwgZXZlbnQtPndkKTsKKwl9IGVsc2UgaWYgKGRhdGEtPmRlYWN0aXZhdGVkKSB7CisJ
ICAgIEdBTV9ERUJVRyhERUJVR19JTkZPLCAiaW5vdGlmeTogaWdub3JpbmcgZXZlbnQgb24gdGVt
cG9yYXJpbHkgZGVhY3RpdmF0ZWQgd2F0Y2ggJXNcbiIsIGRhdGEtPnBhdGgpOwogCX0gZWxzZSB7
CiAJICAgIGlmIChldmVudC0+bWFzayA9PSBJTl9JR05PUkVEKSB7CiAJCUdMaXN0ICpsOwogCi0J
CUdBTV9ERUJVRyhERUJVR19JTkZPLCAiaW5vdGlmeSBpZ25vcmluZyB3ZCAlZFxuIiwgZXZlbnQt
PndkKTsKKwkJR0FNX0RFQlVHKERFQlVHX0lORk8sICJpbm90aWZ5OiBJTl9JR05PUkUgb24gd2Q9
JWRcbiIsIGV2ZW50LT53ZCk7CisJCUdBTV9ERUJVRyhERUJVR19JTkZPLCAiaW5vdGlmeTogcmVt
b3ZpbmcgYWxsIHN1YnNjcmlwdGlvbnMgZm9yICVzXG4iLCBkYXRhLT5wYXRoKTsKIAogCQlsID0g
ZGF0YS0+c3ViczsKIAkJZGF0YS0+c3VicyA9IE5VTEw7CkBAIC00NDEsNyArNDUwLDggQEAKIAkJ
ICAgIGdhbV9wb2xsX3NjYW5fZGlyZWN0b3J5IChkYXRhLT5wYXRoKTsKIAkJfQogCSAgICB9IGVs
c2UgaWYgKGV2ZW50LT5tYXNrID09IElOX1FfT1ZFUkZMT1cpIHsKLQkJR0FNX0RFQlVHKERFQlVH
X0lORk8sICJpbm90aWZ5IHF1ZXVlIG92ZXIgZmxvd2VkXG4iKTsKKwkJICAgIEdBTV9ERUJVRyhE
RUJVR19JTkZPLCAiaW5vdGlmeSBxdWV1ZSBvdmVyIGZsb3dlZFxuIik7CisJCSAgICBHQU1fREVC
VUcoREVCVUdfSU5GTywgIkZJWE1FLCBzaG91bGQgcmVxdWVzdCBwb2xsIGZvciBhbGwgcGF0aHMg
aGVyZVxuIik7CiAJICAgIH0KIAl9CiAKSW5kZXg6IHNlcnZlci9nYW1fc2VydmVyLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9nbm9tZS9nYW1pbi9zZXJ2ZXIvZ2FtX3NlcnZlci5jLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjIyCmRpZmYgLXUgLXIxLjIyIGdhbV9zZXJ2ZXIuYwotLS0gc2Vy
dmVyL2dhbV9zZXJ2ZXIuYwk5IE1heSAyMDA1IDEzOjQ1OjU1IC0wMDAwCTEuMjIKKysrIHNlcnZl
ci9nYW1fc2VydmVyLmMJMjMgTWF5IDIwMDUgMTc6NDE6MjAgLTAwMDAKQEAgLTk5LDYgKzk5LDgg
QEAKIAlpZiAoZ2FtX2lub3RpZnlfaW5pdCgpKSB7CiAJICAgIEdBTV9ERUJVRyhERUJVR19JTkZP
LCAiVXNpbmcgSU5vdGlmeSBhcyBiYWNrZW5kXG4iKTsKIAkgICAgcmV0dXJuKFRSVUUpOworCX0g
ZWxzZSB7CisJCXByaW50ZigiTm90IHVzaW5nIGlub3RpZnkgYmFja2VuZFxuIik7CiAJfQogI2Vu
ZGlmCiAjaWZkZWYgRU5BQkxFX0ROT1RJRlkK
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59663</attachid>
            <date>2005-05-23 14:38 0000</date>
            <desc>gamin-0.1.0-cvs-upgrade.patch</desc>
            <filename>gamin-0.1.0-cvs-upgrade.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">LS0tIHNlcnZlci9nYW1fcG9sbC5jCTIwMDUvMDUvMDkgMTM6NDU6NTUJMS41MgorKysgc2VydmVy
L2dhbV9wb2xsLmMJMjAwNS8wNS8yMCAxMToyNjowNwkxLjUzCkBAIC02MzEsNiArNjMxLDIxIEBA
CiAgICAgZ19saXN0X2ZyZWUoY2hpbGRyZW4pOwogfQogCitzdGF0aWMgdm9pZAordW5yZWdpc3Rl
cl9ub2RlIChHYW1Ob2RlICogbm9kZSkKK3sKKyAgICBpZiAobWlzc2luZ19yZXNvdXJjZXMgIT0g
TlVMTCkgeworICAgICAgIAlnYW1fcG9sbF9yZW1vdmVfbWlzc2luZyhub2RlKTsKKyAgICB9Cisg
ICAgaWYgKGJ1c3lfcmVzb3VyY2VzICE9IE5VTEwpIHsKKyAgICAgICAgZ2FtX3BvbGxfcmVtb3Zl
X2J1c3kobm9kZSk7CisgICAgfQorICAgIGlmIChhbGxfcmVzb3VyY2VzICE9IE5VTEwpIHsKKyAg
ICAgICAgYWxsX3Jlc291cmNlcyA9IGdfbGlzdF9yZW1vdmUoYWxsX3Jlc291cmNlcywgbm9kZSk7
CisgICAgfQorfQorCisKIHN0YXRpYyBnYm9vbGVhbgogcmVtb3ZlX2RpcmVjdG9yeV9zdWJzY3Jp
cHRpb24oR2FtTm9kZSAqIG5vZGUsIEdhbVN1YnNjcmlwdGlvbiAqIHN1YikKIHsKQEAgLTY1MCwx
MiArNjY1LDggQEAKIAogICAgICAgICBpZiAoKCFnYW1fbm9kZV9nZXRfc3Vic2NyaXB0aW9ucyhj
aGlsZCkpICYmIChyZW1vdmVfZGlyKSAmJgogICAgICAgICAgICAgKCFnYW1fdHJlZV9oYXNfY2hp
bGRyZW4odHJlZSwgY2hpbGQpKSkgewotICAgICAgICAgICAgaWYgKG1pc3NpbmdfcmVzb3VyY2Vz
ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnYW1fcG9sbF9yZW1vdmVfbWlzc2luZyhjaGls
ZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYnVzeV9yZXNvdXJjZXMgIT0gTlVM
TCkgewotICAgICAgICAgICAgICAgIGdhbV9wb2xsX3JlbW92ZV9idXN5KGNoaWxkKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHVucmVnaXN0ZXJfbm9kZSAoY2hpbGQpOworCiAgICAgICAg
ICAgICBnYW1fdHJlZV9yZW1vdmUodHJlZSwgY2hpbGQpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgcmVtb3ZlX2RpciA9IEZBTFNFOwpAQCAtNzkwLDE1ICs4MDEsNyBAQAogICAgICAg
ICAgICAgICAgICAgInBydW5lX3RyZWU6IG5vZGUgJXNcbiIsIGdhbV9ub2RlX2dldF9wYXRoKG5v
ZGUpKTsKIAogICAgICAgICBwYXJlbnQgPSBnYW1fbm9kZV9wYXJlbnQobm9kZSk7Ci0gICAgICAg
IGlmIChtaXNzaW5nX3Jlc291cmNlcyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBnYW1fcG9sbF9y
ZW1vdmVfbWlzc2luZyhub2RlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnVzeV9yZXNvdXJj
ZXMgIT0gTlVMTCkgewotICAgICAgICAgICAgZ2FtX3BvbGxfcmVtb3ZlX2J1c3kobm9kZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGFsbF9yZXNvdXJjZXMgIT0gTlVMTCkgewotICAgICAgICAg
ICAgYWxsX3Jlc291cmNlcyA9IGdfbGlzdF9yZW1vdmUoYWxsX3Jlc291cmNlcywgbm9kZSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgdW5yZWdpc3Rlcl9ub2RlKG5vZGUpOwogICAgICAgICBnYW1fdHJl
ZV9yZW1vdmUodHJlZSwgbm9kZSk7CiAgICAgICAgIHBydW5lX3RyZWUocGFyZW50KTsKICAgICB9
CkBAIC05NzUsMTUgKzk3OCw3IEBACiAgICAgICAgICAgICBpZiAoIWdhbV9ub2RlX2dldF9zdWJz
Y3JpcHRpb25zKG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgR2FtTm9kZSAqcGFyZW50OwogCi0g
ICAgICAgICAgICAgICAgaWYgKG1pc3NpbmdfcmVzb3VyY2VzICE9IE5VTEwpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZ2FtX3BvbGxfcmVtb3ZlX21pc3Npbmcobm9kZSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChidXN5X3Jlc291cmNlcyAhPSBOVUxMKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGdhbV9wb2xsX3JlbW92ZV9idXN5KG5vZGUpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYWxsX3Jlc291cmNlcyAhPSBOVUxMKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGFsbF9yZXNvdXJjZXMgPSBnX2xpc3RfcmVtb3ZlKGFsbF9yZXNvdXJj
ZXMsIG5vZGUpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB1bnJlZ2lzdGVy
X25vZGUgKG5vZGUpOwogICAgICAgICAgICAgICAgIGlmIChnYW1fdHJlZV9oYXNfY2hpbGRyZW4o
dHJlZSwgbm9kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm5vZGUgJXMgaXMgbm90IGRpciBidXQgaGFzIGNoaWxk
cmVuXG4iLApAQCAtMTAwNCwxNSArOTk5LDcgQEAKICAgICAgICAgICAgIGlmIChyZW1vdmVfZGly
ZWN0b3J5X3N1YnNjcmlwdGlvbihub2RlLCBzdWIpKSB7CiAgICAgICAgICAgICAgICAgR2FtTm9k
ZSAqcGFyZW50OwogCi0gICAgICAgICAgICAgICAgaWYgKG1pc3NpbmdfcmVzb3VyY2VzICE9IE5V
TEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZ2FtX3BvbGxfcmVtb3ZlX21pc3Npbmcobm9kZSk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChidXN5X3Jlc291cmNlcyAh
PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGdhbV9wb2xsX3JlbW92ZV9idXN5KG5vZGUp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYWxsX3Jlc291cmNlcyAh
PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF9yZXNvdXJjZXMgPSBnX2xpc3RfcmVt
b3ZlKGFsbF9yZXNvdXJjZXMsIG5vZGUpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB1bnJlZ2lzdGVyX25vZGUgKG5vZGUpOwogICAgICAgICAgICAgICAgIHBhcmVudCA9IGdh
bV9ub2RlX3BhcmVudChub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoIWdhbV90cmVlX2hhc19j
aGlsZHJlbih0cmVlLCBub2RlKSkgewogICAgICAgICAgICAgICAgICAgICBnYW1fdHJlZV9yZW1v
dmUodHJlZSwgbm9kZSk7CgoKLS0tIGxpYmdhbWluL2dhbV9kYXRhLmMJMjAwNS8wNS8xMiAxMToz
ODoyMQkxLjEzCisrKyBsaWJnYW1pbi9nYW1fZGF0YS5jCTIwMDUvMDUvMTggMTQ6NDM6MTIJMS4x
NApAQCAtNjUwLDcgKzY1MCw3IEBACiAgICAgICAgIHJldHVybiAoMCk7CiAgICAgfQogCi0gICAg
c3dpdGNoIChyZXEtPnR5cGUpIHsKKyAgICBzd2l0Y2ggKHJlcS0+c3RhdGUpIHsKICAgICAgICAg
Y2FzZSBSRVFfTk9ORToKICAgICAgICAgY2FzZSBSRVFfU1VTUEVOREVEOgogICAgICAgICAgICAg
R0FNX0RFQlVHKERFQlVHX0lORk8sCkBAIC02NjUsNyArNjY1LDcgQEAKICAgICAgICAgICAgICAg
ICAgICAgICByZXEtPnR5cGUpOwogICAgICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICAgY2Fz
ZSBSRVFfSU5JVDoKLSAgICAgICAgICAgIHJlcS0+dHlwZSA9IFJFUV9DT05GSVJNRUQ7CisgICAg
ICAgICAgICByZXEtPnN0YXRlID0gUkVRX0NPTkZJUk1FRDsKICAgICAgICAgY2FzZSBSRVFfQ09O
RklSTUVEOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQoK
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59898</attachid>
            <date>2005-05-26 16:18 0000</date>
            <desc>gamin-0.1.0-r1.patch</desc>
            <filename>gamin-0.1.0-r1.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">SW5kZXg6IGdhbWluLTAuMS4wLXIxLmVidWlsZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnYW1pbi0wLjEuMC1y
MS5lYnVpbGQJKHJldmlzaW9uIDk2KQorKysgZ2FtaW4tMC4xLjAtcjEuZWJ1aWxkCSh3b3JraW5n
IGNvcHkpCkBAIC0xMyw4ICsxMyw3IEBACiBLRVlXT1JEUz0ifng4NiB+YW1kNjQgfmFybSB+aHBw
YSB+aWE2NCB+cHBjIH5zMzkwIgogSVVTRT0iZGVidWcgZG9jIgogCi1SREVQRU5EPSJ2aXJ0dWFs
L2xpYmMKLQk+PWRldi1saWJzL2dsaWItMgorUkRFUEVORD0iPj1kZXYtbGlicy9nbGliLTIKIAkh
YXBwLWFkbWluL2ZhbSIKIAogREVQRU5EPSIke1JERVBFTkR9CkBAIC0yNywzNSArMjYsMzIgQEAK
IAljZCAke1N9CiAJZXBhdGNoICR7RklMRVNESVJ9LyR7UH0tZmxvdy1jb250cm9sLnBhdGNoCiAJ
ZXBhdGNoICR7RklMRVNESVJ9LyR7UH0tY3ZzLXVwZ3JhZGUucGF0Y2gKKwllcGF0Y2ggJHtGSUxF
U0RJUn0vJHtQfS1mcmVlYnNkLnBhdGNoCiB9CiAKIHNyY19jb21waWxlKCkgewotCiAJZWNvbmYg
XAotCQktLWVuYWJsZS1pbm90aWZ5IFwKKwkJJCh1c2VfZW5hYmxlIGtlcm5lbF9saW51eCBpbm90
aWZ5KSBcCiAJCWB1c2VfZW5hYmxlIGRlYnVnYCBcCiAJCWB1c2VfZW5hYmxlIGRlYnVnIGRlYnVn
LWFwaWAgXAogCQl8fCBkaWUKIAogCWVtYWtlIHx8IGRpZSAiZW1ha2UgZmFpbGVkIgotCiB9CiAK
IHNyY19pbnN0YWxsKCkgewotCiAJbWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsIHx8IGRpZQog
CiAJZG9kb2MgQVVUSE9SUyBDaGFuZ2VMb2cgUkVBRE1FIFRPRE8gTkVXUyBkb2MvKnR4dAogCiAJ
dXNlIGRvYyAmJiBkb2h0bWwgZG9jLyoKLQogfQogCiBwa2dfcG9zdGluc3QoKSB7Ci0KLQllaW5m
byAiSXQgaXMgc3Ryb25nbHkgc3VnZ2VzdGVkIHlvdSB1c2UgR2FtaW4gd2l0aCBhbiBpbm90aWZ5
IGVuYWJsZWQiCi0JZWluZm8gImtlcm5lbCBmb3IgYmVzdCBwZXJmb3JtYW5jZS4gRm9yIHRoaXMg
cmVsZWFzZSBvZiBnYW1pbiB5b3UgbmVlZCIKLQllaW5mbyAiYXQgbGVhc3QgYW4gaW5vdGlmeSAw
LjIzLTYgcGF0Y2hlZCBrZXJuZWwsIGdlbnRvby1kZXYtc291cmNlcy0yLjYuMTIiCi0JZWluZm8g
InByb3ZpZGVzIHRoaXMgcGF0Y2ggZm9yIGV4YW1wbGUuIgotCisJaWYgdXNlIGtlcm5lbF9saW51
eDsgdGhlbgorCQllaW5mbyAiSXQgaXMgc3Ryb25nbHkgc3VnZ2VzdGVkIHlvdSB1c2UgR2FtaW4g
d2l0aCBhbiBpbm90aWZ5IGVuYWJsZWQiCisJCWVpbmZvICJrZXJuZWwgZm9yIGJlc3QgcGVyZm9y
bWFuY2UuIEZvciB0aGlzIHJlbGVhc2Ugb2YgZ2FtaW4geW91IG5lZWQiCisJCWVpbmZvICJhdCBs
ZWFzdCBhbiBpbm90aWZ5IDAuMjMtNiBwYXRjaGVkIGtlcm5lbCwgZ2VudG9vLWRldi1zb3VyY2Vz
LTIuNi4xMiIKKwkJZWluZm8gInByb3ZpZGVzIHRoaXMgcGF0Y2ggZm9yIGV4YW1wbGUuIgorCWZp
CiB9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59899</attachid>
            <date>2005-05-26 16:19 0000</date>
            <desc>gamin-0.1.0-freebsd.patch</desc>
            <filename>gamin-0.1.0-freebsd.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAteCAnKn4nIC11ciBnYW1pbi0wLjEuMC9saWJnYW1pbi9nYW1fYXBpLmMgZ2FtaW4tMC4x
LjAtZmJzZC9saWJnYW1pbi9nYW1fYXBpLmMKLS0tIGdhbWluLTAuMS4wL2xpYmdhbWluL2dhbV9h
cGkuYwkyMDA1LTA1LTEwIDE4OjIzOjQ3LjAwMDAwMDAwMCArMDIwMAorKysgZ2FtaW4tMC4xLjAt
ZmJzZC9saWJnYW1pbi9nYW1fYXBpLmMJMjAwNS0wNS0yNyAwMTowMDoyNC4yMjAxNTY5MjAgKzAy
MDAKQEAgLTQyMSw3ICs0MjEsNyBAQAogewogICAgIGNoYXIgZGF0YVsyXSA9IHsgMCwgMCB9Owog
ICAgIGludCB3cml0dGVuOwotI2lmIGRlZmluZWQoSEFWRV9DTVNHQ1JFRCkgJiYgIWRlZmluZWQo
TE9DQUxfQ1JFRFMpCisjaWYgZGVmaW5lZChIQVZFX0NNU0dDUkVEKSAmJiAoIWRlZmluZWQoTE9D
QUxfQ1JFRFMpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKQogICAgIHN0cnVjdCB7CiAJICAgIHN0
cnVjdCBjbXNnaGRyIGhkcjsKIAkgICAgc3RydWN0IGNtc2djcmVkIGNyZWQ7CkBAIC00NDUsNyAr
NDQ1LDcgQEAKICNlbmRpZgogCiByZXRyeToKLSNpZiBkZWZpbmVkKEhBVkVfQ01TR0NSRUQpICYm
ICFkZWZpbmVkKExPQ0FMX0NSRURTKQorI2lmIGRlZmluZWQoSEFWRV9DTVNHQ1JFRCkgJiYgKCFk
ZWZpbmVkKExPQ0FMX0NSRURTKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkKICAgICB3cml0dGVu
ID0gc2VuZG1zZyhmZCwgJm1zZywgMCk7CiAjZWxzZQogICAgIHdyaXR0ZW4gPSB3cml0ZShmZCwg
JmRhdGFbMF0sIDEpOwpAQCAtNjUwLDcgKzY1MCw3IEBACiAKICAgICBzX3VpZCA9IGdldHVpZCgp
OwogCi0jaWYgZGVmaW5lZChMT0NBTF9DUkVEUykgJiYgZGVmaW5lZChIQVZFX0NNU0dDUkVEKQor
I2lmIGRlZmluZWQoTE9DQUxfQ1JFRFMpICYmIGRlZmluZWQoSEFWRV9DTVNHQ1JFRCkgJiYgIWRl
ZmluZWQoX19GcmVlQlNEX18pCiAgICAgLyogU2V0IHRoZSBzb2NrZXQgdG8gcmVjZWl2ZSBjcmVk
ZW50aWFscyBvbiB0aGUgbmV4dCBtZXNzYWdlICovCiAgICAgewogICAgICAgICBpbnQgb24gPSAx
OwpkaWZmIC14ICcqficgLXVyIGdhbWluLTAuMS4wL2xpYmdhbWluL2dhbV9kYXRhLmMgZ2FtaW4t
MC4xLjAtZmJzZC9saWJnYW1pbi9nYW1fZGF0YS5jCi0tLSBnYW1pbi0wLjEuMC9saWJnYW1pbi9n
YW1fZGF0YS5jCTIwMDUtMDUtMTAgMTg6MjY6MTAuMDAwMDAwMDAwICswMjAwCisrKyBnYW1pbi0w
LjEuMC1mYnNkL2xpYmdhbWluL2dhbV9kYXRhLmMJMjAwNS0wNS0yNyAwMTowNjozMC4xMDg1MzM0
MzIgKzAyMDAKQEAgLTE1LDYgKzE1LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZmRl
ZiBIQVZFX1BUSFJFQURfSAorCisjaWZkZWYgX19HTElCQ19fCisjZGVmaW5lIFBUSFJFQURfTVVU
RVhfUkVDVVJTSVZFIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QCisjZW5kaWYKKwogI2luY2x1
ZGUgPHB0aHJlYWQuaD4KIAogc3RhdGljIGludCBpc190aHJlYWRlZCA9IC0xOwpAQCAtNDcxLDcg
KzQ3Niw3IEBACiAgICAgfQogICAgIGlmIChpc190aHJlYWRlZCA+IDApIHsKIAlwdGhyZWFkX211
dGV4YXR0cl9pbml0KCZhdHRyKTsKLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZhdHRyLCBQ
VEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCk7CisJcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgm
YXR0ciwgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUpOwogCXB0aHJlYWRfbXV0ZXhfaW5pdCgmcmV0
LT5sb2NrLCAmYXR0cik7CiAJcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSgmYXR0cik7CiAgICAg
fQpkaWZmIC14ICcqficgLXVyIGdhbWluLTAuMS4wL3NlcnZlci9nYW1fY2hhbm5lbC5jIGdhbWlu
LTAuMS4wLWZic2Qvc2VydmVyL2dhbV9jaGFubmVsLmMKLS0tIGdhbWluLTAuMS4wL3NlcnZlci9n
YW1fY2hhbm5lbC5jCTIwMDUtMDUtMDkgMTU6NDE6MTEuMDAwMDAwMDAwICswMjAwCisrKyBnYW1p
bi0wLjEuMC1mYnNkL3NlcnZlci9nYW1fY2hhbm5lbC5jCTIwMDUtMDUtMjcgMDE6MDA6MzMuNzA5
NzE0Mjg4ICswMjAwCkBAIC0yOSw3ICsyOSw3IEBACiB7CiAgICAgY2hhciBkYXRhWzJdID0geyAw
LCAwIH07CiAgICAgaW50IHdyaXR0ZW47Ci0jaWYgZGVmaW5lZChIQVZFX0NNU0dDUkVEKSAmJiAh
ZGVmaW5lZChMT0NBTF9DUkVEUykKKyNpZiBkZWZpbmVkKEhBVkVfQ01TR0NSRUQpICYmICghZGVm
aW5lZChMT0NBTF9DUkVEUykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpCiAgICAgc3RydWN0IHsK
IAkgICAgc3RydWN0IGNtc2doZHIgaGRyOwogCSAgICBzdHJ1Y3QgY21zZ2NyZWQgY3JlZDsKQEAg
LTUzLDcgKzUzLDcgQEAKICNlbmRpZgogCiByZXRyeToKLSNpZiBkZWZpbmVkKEhBVkVfQ01TR0NS
RUQpICYmICFkZWZpbmVkKExPQ0FMX0NSRURTKQorI2lmIGRlZmluZWQoSEFWRV9DTVNHQ1JFRCkg
JiYgKCFkZWZpbmVkKExPQ0FMX0NSRURTKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkKICAgICB3
cml0dGVuID0gc2VuZG1zZyhmZCwgJm1zZywgMCk7CiAjZWxzZQogICAgIHdyaXR0ZW4gPSB3cml0
ZShmZCwgJmRhdGFbMF0sIDEpOwpAQCAtMTAwLDcgKzEwMCw3IEBACiAKICAgICBzX3VpZCA9IGdl
dHVpZCgpOwogCi0jaWYgZGVmaW5lZChMT0NBTF9DUkVEUykgJiYgZGVmaW5lZChIQVZFX0NNU0dD
UkVEKQorI2lmIGRlZmluZWQoTE9DQUxfQ1JFRFMpICYmIGRlZmluZWQoSEFWRV9DTVNHQ1JFRCkg
JiYgIWRlZmluZWQoX19GcmVlQlNEX18pCiAgICAgLyogU2V0IHRoZSBzb2NrZXQgdG8gcmVjZWl2
ZSBjcmVkZW50aWFscyBvbiB0aGUgbmV4dCBtZXNzYWdlICovCiAgICAgewogICAgICAgICBpbnQg
b24gPSAxOwpkaWZmIC14ICcqficgLXVyIGdhbWluLTAuMS4wL3NlcnZlci9nYW1fa3F1ZXVlLmMg
Z2FtaW4tMC4xLjAtZmJzZC9zZXJ2ZXIvZ2FtX2txdWV1ZS5jCi0tLSBnYW1pbi0wLjEuMC9zZXJ2
ZXIvZ2FtX2txdWV1ZS5jCTIwMDUtMDUtMDkgMTU6NDM6MjEuMDAwMDAwMDAwICswMjAwCisrKyBn
YW1pbi0wLjEuMC1mYnNkL3NlcnZlci9nYW1fa3F1ZXVlLmMJMjAwNS0wNS0yNyAwMTowMDozNi41
NzUyNzg2NTYgKzAyMDAKQEAgLTEsNSArMSwzNyBAQAogLyoKKyAqIGdhbV9rcXVldWUuYyAtIGEg
a3F1ZXVlKDIpIEdhbWluIGJhY2tlbmQKKyAqCisgKiBOb3RlczoKKyAqCisgKiAgICAgKiBodHRw
Oi8vdGVjaHB1YnMuc2dpLmNvbS9saWJyYXJ5L3RwbC9jZ2ktYmluL2dldGRvYy5jZ2k/Y29sbD0w
NjUwJmRiPWJrcyZmbmFtZT0vU0dJX0RldmVsb3Blci9ib29rcy9JSURza3RwX0lHL3NnaV9odG1s
L2NoMDguaHRtbAorICogICAgICAgc3RhdGVzIHRoYXQgRkFNIGRvZXMgbm90IGZvbGxvdyBtb25p
dG9yZWQgc3ltYm9saWMgbGlua3M6IHdlCisgKiAgICAgICBkbyB0aGUgc2FtZSAobm90ZSB0aGF0
IHJlZ2FyZGluZworICogICAgICAgaHR0cDovL29zcy5zZ2kuY29tL2J1Z3ppbGxhL3Nob3dfYnVn
LmNnaT9pZD00MDUsIHdlIGRvIHdoYXQKKyAqICAgICAgIEZBTSBzaG91bGQgZG86IHdlIGRvIG5v
dCBjYWxsIGdfZGlyX29wZW4oKSBpZiB0aGUgZmlsZSBpcyBhCisgKiAgICAgICBzeW1ib2xpYyBs
aW5rKS4KKyAqCisgKiAgICAgKiBrcXVldWUgY2Fubm90IG1vbml0b3IgZmlsZXMgcmVzaWRpbmcg
b24gYW55dGhpbmcgYnV0IGEgVUZTCisgKiAgICAgICBmaWxlIHN5c3RlbS4gSWYga3F1ZXVlIGNh
bm5vdCBtb25pdG9yIGEgZmlsZSwgdGhpcyBiYWNrZW5kCisgKiAgICAgICB3aWxsIHBvbGwgaXQg
cGVyaW9kaWNhbGx5LgorICoKKyAqICAgICAqIE1vbml0b3JpbmcgYSBmaWxlIHdpdGgga3F1ZXVl
IHByZXZlbnRzIHRoZSBmaWxlIHN5c3RlbSBpdAorICogICAgICAgcmVzaWRlcyBvbiBmcm9tIGJl
aW5nIHVubW91bnRlZCwgYmVjYXVzZSBrcXVldWUgY2FuIG9ubHkKKyAqICAgICAgIG1vbml0b3Ig
b3BlbiBmaWxlcy4KKyAqCisgKiAgICAgKiBUaGUgY3JlYXRpb24gb2YgbWlzc2luZyBtb25pdG9y
ZWQgZmlsZXMgaXMgZGV0ZWN0ZWQgYnkKKyAqICAgICAgIHBlcmZvcm1pbmcgYSBsc3RhdCgpIGV2
ZXJ5IHNlY29uZC4gQWx0aG91Z2ggdXNpbmcga3F1ZXVlIHRvCisgKiAgICAgICBtb25pdG9yIHRo
ZSBwYXJlbnQgZGlyZWN0b3J5IGlzIHRlY2huaWNhbGx5IGZlYXNpYmxlLCBpdAorICogICAgICAg
d291bGQgaW50cm9kdWNlIGEgbG90IG9mIGNvbXBsZXhpdHkgaW4gdGhlIGNvZGUuCisgKgorICog
ICAgICogSW4gbGlnaHQgb2YgdGhlIHByZXZpb3VzIHBvaW50cywgaXQgYXBwZWFycyB0aGF0Ogor
ICoKKyAqICAgICAgICAgICAtIGtxdWV1ZSBuZWVkcyB0byBiZSBhdWdtZW50ZWQgd2l0aCBhIGZp
bGVuYW1lLWJhc2VkCisgKiAgICAgICAgICAgICBtb25pdG9yaW5nIGZhY2lsaXR5OworICoKKyAq
ICAgICAgICAgICAtIGtxdWV1ZSBuZWVkcyB0byBiZSBtb3ZlZCBvdXQgdGhlIFVGUyBjb2RlLgor
ICoKICAqIENvcHlyaWdodCAoQykgMjAwNSBKb2UgTWFyY3VzIENsYXJrZSA8bWFyY3VzQEZyZWVC
U0Qub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA1IEplYW4tWXZlcyBMZWZvcnQgPGp5bGVmb3J0
QEZyZWVCU0Qub3JnPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTE2LDUwOCArNDgsMTA2OCBAQAog
ICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1B
IDAyMTM5LCBVU0EuCiAgKi8KIAotCi0jaW5jbHVkZSAic2VydmVyX2NvbmZpZy5oIgorI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+Cisj
aW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lz
L3N5c2N0bC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL2V2ZW50Lmg+
CiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5
cy9pb2N0bC5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2lu
Y2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgor
I2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSAiZ2FtX2Vycm9yLmgiCiAjaW5jbHVkZSAiZ2Ft
X2txdWV1ZS5oIgotI2luY2x1ZGUgImdhbV90cmVlLmgiCiAjaW5jbHVkZSAiZ2FtX2V2ZW50Lmgi
CiAjaW5jbHVkZSAiZ2FtX3NlcnZlci5oIgotI2luY2x1ZGUgImdhbV9ldmVudC5oIgogCi10eXBl
ZGVmIHN0cnVjdCB7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBpbnQgZmQ7Ci0gICAgaW50IHJlZmNv
dW50OwotICAgIGdib29sZWFuIGlzZGlyOwotICAgIEdMaXN0ICpzdWJzOwotICAgIEdTTGlzdCAq
ZGlybGlzdDsKLX0gS1F1ZXVlRGF0YTsKKy8qKiogdHVuYWJsZSBjb25zdGFudHMsIG1vZGlmeSB0
byB0d2VhayB0aGUgYmFja2VuZCBhZ2dyZXNzaXZpdHkgKioqKioqKioqKioqKi8KIAotc3RhdGlj
IEdIYXNoVGFibGUgKmRpcl9wYXRoX2hhc2ggPSBOVUxMOwotc3RhdGljIEdIYXNoVGFibGUgKmZp
bGVfcGF0aF9oYXNoID0gTlVMTDsKLXN0YXRpYyBHSGFzaFRhYmxlICpmZF9oYXNoID0gTlVMTDsK
Ky8qCisgKiBUaGUgYmFja2VuZCB3aWxsIHVzZSBhdCBtb3N0IG4gZmlsZSBkZXNjcmlwdG9ycywg
d2hlcmUgbiBpcyB0aGUKKyAqIG1pbmltdW0gdmFsdWUgYmV0d2VlbiAoa2Vybi5tYXhmaWxlcyAq
IENGR19HTE9CQUxfRklMRV9SRVNFUlZFX1JBVElPKQorICogYW5kIChrZXJuLm1heGZpbGVzcGVy
cHJvYyAtIENGR19TRUxGX0ZJTEVfUkVTRVJWRSkuCisgKi8KKyNkZWZpbmUgQ0ZHX0dMT0JBTF9G
SUxFX1JFU0VSVkVfUkFUSU8JCQkwLjcKKyNkZWZpbmUgQ0ZHX1NFTEZfRklMRV9SRVNFUlZFCQkJ
CTIwMAogCi1zdGF0aWMgR1NMaXN0ICpleGlzdF9saXN0ID0gTlVMTDsKKy8qCisgKiBJZiBhIFN1
Yk1vbml0b3Igb3IgRmlsZU1vbml0b3IgaXMgbm90IHN1cHBvcnRlZCBieSBrcXVldWUgYW5kIGhh
cworICogdG8gYmUgcG9sbGVkLCB0aGUgYmFja2VuZCB3aWxsIHJlLWF0dGVtcHQgdG8gZW5hYmxl
IGtxdWV1ZQorICogbm90aWZpY2F0aW9uIGV2ZXJ5IG4gcG9sbHMuCisgKi8KKyNkZWZpbmUgQ0ZH
X1VOU1VQUE9SVEVEX1NNT05fS1FVRVVFX1JFVFJZX0ZSRVFVRU5DWQkxMAorI2RlZmluZSBDRkdf
VU5TVVBQT1JURURfRk1PTl9LUVVFVUVfUkVUUllfRlJFUVVFTkNZCTEwCiAKLXN0YXRpYyBHTGlz
dCAqbmV3X3N1YnMgPSBOVUxMOwotR19MT0NLX0RFRklORV9TVEFUSUMobmV3X3N1YnMpOwotc3Rh
dGljIEdMaXN0ICpyZW1vdmVkX3N1YnMgPSBOVUxMOwotR19MT0NLX0RFRklORV9TVEFUSUMocmVt
b3ZlZF9zdWJzKTsKKy8qCisgKiBUaGUgdmFyaW91cyBwb2xsIGludGVydmFscywgaW4gbWlsbGlz
ZWNvbmRzLiBUaGUgZGVmYXVsdCBpbnRlcnZhbAorICogZm9yIGVhY2ggcG9sbGVyIGlzIGJhc2Vk
IG9uIHRoZSBwb2xsZXIncyBleHBlY3RlZCB1c2FnZS4KKyAqLworI2RlZmluZSBDRkdfTUlTU0lO
R19TTU9OX1BPTExfSU5URVJWQUwJCQkxMDAwCisjZGVmaW5lIENGR19VTlNVUFBPUlRFRF9TTU9O
X1BPTExfSU5URVJWQUwJCTMwMDAKKyNkZWZpbmUgQ0ZHX1VOU1VQUE9SVEVEX0ZNT05fUE9MTF9J
TlRFUlZBTAkJMzAwMAorCisvKioqIGVuZCBvZiB0dW5hYmxlIGNvbnN0YW50cyAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgVk5fTk9U
RV9DSEFOR0VECShOT1RFX1dSSVRFIHwgTk9URV9FWFRFTkQgfCBOT1RFX0FUVFJJQiB8IE5PVEVf
TElOSykKKyNkZWZpbmUgVk5fTk9URV9ERUxFVEVEIChOT1RFX0RFTEVURSB8IE5PVEVfUkVWT0tF
KQorI2RlZmluZSBWTl9OT1RFX0FMTAkoVk5fTk9URV9DSEFOR0VEIHwgVk5fTk9URV9ERUxFVEVE
IHwgTk9URV9SRU5BTUUpCiAKLUdfTE9DS19ERUZJTkVfU1RBVElDKGtxdWV1ZSk7CisvKgorICog
QSBiYXJlYm9uZSBzdGF0IHN0cnVjdHVyZSwgb25seSBjb250YWluaW5nIHRoZSBmaWVsZHMgd2Ug
bmVlZC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgZ2Jvb2xlYW4JZXhpc3RzOworICBpbm9f
dAkJaW5vOworICBtb2RlX3QJbW9kZTsKKyAgdWlkX3QJCXVpZDsKKyAgZ2lkX3QJCWdpZDsKKyAg
dGltZV90CW10aW1lOworICB0aW1lX3QJY3RpbWU7CisgIG9mZl90CQlzaXplOworfSBNaW5pU3Rh
dDsKKwordHlwZWRlZiB2b2lkICgqSGFzaFRhYmxlQWRkRnVuYykgKEdIYXNoVGFibGUgKnRhYmxl
LAorCQkJCSAgZ3BvaW50ZXIgaXRlbSwKKwkJCQkgIGdwb2ludGVyIHVzZXJfZGF0YSk7Cit0eXBl
ZGVmIHZvaWQgKCpIYXNoVGFibGVQb3N0QWRkRnVuYykgKEdIYXNoVGFibGUgKnRhYmxlLAorCQkJ
CSAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7Cit0eXBlZGVmIHZvaWQgKCpIYXNoVGFibGVSZW1v
dmVGdW5jKSAoR0hhc2hUYWJsZSAqdGFibGUsCisJCQkJICAgICBncG9pbnRlciBpdGVtLAorCQkJ
CSAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK3R5cGVkZWYgdm9pZCAoKkhhc2hUYWJsZVBvc3RS
ZW1vdmVGdW5jKSAoR0hhc2hUYWJsZSAqdGFibGUsCisJCQkJCSBncG9pbnRlciB1c2VyX2RhdGEp
OwogCi1zdGF0aWMgZ2Jvb2xlYW4gaGF2ZV9jb25zdW1lX2lkbGVyID0gRkFMU0U7Cit0eXBlZGVm
IHN0cnVjdAoreworICBIYXNoVGFibGVBZGRGdW5jCQlhZGQ7CisgIEhhc2hUYWJsZVBvc3RBZGRG
dW5jCQlwb3N0X2FkZDsKKyAgSGFzaFRhYmxlUmVtb3ZlRnVuYwkJcmVtb3ZlOworICBIYXNoVGFi
bGVQb3N0UmVtb3ZlRnVuYwlwb3N0X3JlbW92ZTsKK30gSGFzaFRhYmxlTWV0aG9kczsKKyAgCisv
KgorICogQSBoYXNoIHRhYmxlIHdoaWNoIGNhbiBiZSBtb2RpZmllZCB3aGlsZSBpdGVyYXRpbmcg
b3ZlciBpdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR0hhc2hUYWJsZQkJKm1haW47Cisg
IGdib29sZWFuCQlpdGVyYXRpbmc7CisgIEdTTGlzdAkJKnBlbmRpbmdfYWRkaXRpb25zOworICBH
U0xpc3QJCSpwZW5kaW5nX3JlbW92YWxzOworICBIYXNoVGFibGVNZXRob2RzCSptZXRob2RzOwor
ICBncG9pbnRlcgkJdXNlcl9kYXRhOworfSBIYXNoVGFibGU7CisKKy8qIHRoZSBiYXNlIG1vbml0
b3IgY2xhc3MgKi8KK3R5cGVkZWYgc3RydWN0IF9Nb25pdG9yIE1vbml0b3I7CitzdHJ1Y3QgX01v
bml0b3IKK3sKKyAgdm9pZCAoKmhhbmRsZV9rZXZlbnQpIChNb25pdG9yICptb25pdG9yLCBzdHJ1
Y3Qga2V2ZW50ICpldmVudCk7CisgIGNoYXIJCSpwYXRobmFtZTsKKyAgaW50CQlmZDsJCS8qIGZv
ciBrcXVldWUgKi8KKyAgTWluaVN0YXQJc2I7CQkvKiBmb3IgcG9sbCAqLworICB1bnNpZ25lZCBp
bnQJcG9sbF9jb3VudDsKK307CisjZGVmaW5lIE1PTklUT1IocHRyKQkJKChNb25pdG9yICopIHB0
cikKIAotaW50IGtxID0gLTE7Cit0eXBlZGVmIGVudW0KK3sKKyAgTU9OSVRPUl9JU0RJUgkJPSAx
IDw8IDAsCisgIE1PTklUT1JfSVNOT1RESVIJPSAxIDw8IDEKK30gTW9uaXRvckZsYWdzOworI2Rl
ZmluZSBNT05JVE9SX0ZMQUdTX1NISUZUCTIKIAotc3RhdGljIEtRdWV1ZURhdGEgKgotZ2FtX2tx
dWV1ZV9kYXRhX25ldyhjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQpCisvKiBtb25pdG9yIGZvciBH
YW1pbiBzdWJzY3JpcHRpb25zICovCit0eXBlZGVmIHN0cnVjdAogewotICAgIEtRdWV1ZURhdGEg
KmRhdGE7CisgIE1vbml0b3IJYmFzZTsKKyAgR0xpc3QJCSpzdWJzOworICBIYXNoVGFibGUJKmZt
b25zOwkJCS8qIEZpbGVNb25pdG9yIG9iamVjdHMgKi8KKyAgSGFzaFRhYmxlCSp1bnN1cHBvcnRl
ZF9mbW9uczsJLyogc3Vic2V0IG9mIGZtb25zIHRvIHBvbGwgKi8KKyAgZ2Jvb2xlYW4JaXNkaXI7
CQkJLyogaXMgYSBkaXJlY3Rvcnkgc3Vic2NyaXB0aW9uPyAqLworfSBTdWJNb25pdG9yOworI2Rl
ZmluZSBTVUJfTU9OSVRPUihwdHIpCSgoU3ViTW9uaXRvciAqKSBwdHIpCiAKLSAgICBkYXRhID0g
Z19uZXcwKEtRdWV1ZURhdGEsIDEpOwotICAgIGRhdGEtPnBhdGggPSBnX3N0cmR1cChwYXRoKTsK
LSAgICBkYXRhLT5mZCA9IGZkOwotICAgIGRhdGEtPnJlZmNvdW50ID0gMTsKLSAgICBkYXRhLT5p
c2RpciA9IEZBTFNFOwotICAgIGRhdGEtPnN1YnMgPSBOVUxMOwotICAgIGRhdGEtPmRpcmxpc3Qg
PSBOVUxMOwordHlwZWRlZiBlbnVtCit7CisgIFNVQl9NT05JVE9SX1dBU19NSVNTSU5HCQk9IDEg
PDwgTU9OSVRPUl9GTEFHU19TSElGVAorfSBTdWJNb25pdG9yRmxhZ3M7CiAKLSAgICByZXR1cm4g
ZGF0YTsKLX0KKy8qIG1vbml0b3IgZm9yIGZpbGVzIHdpdGhpbiBkaXJlY3Rvcnkgc3Vic2NyaXB0
aW9ucyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgTW9uaXRvcgliYXNlOworICBTdWJNb25pdG9y
CSpzbW9uOwkJLyogdGhlIFN1Yk1vbml0b3IgdGhpcyBmbW9uIGJlbG9uZ3MgdG8gKi8KKyAgY2hh
cgkJKmZpbGVuYW1lOwkvKiBwb2ludGVyIGludG8gYmFzZS5wYXRobmFtZSAqLworfSBGaWxlTW9u
aXRvcjsKKyNkZWZpbmUgRklMRV9NT05JVE9SKHB0cikJKChGaWxlTW9uaXRvciAqKSBwdHIpCisK
K3R5cGVkZWYgZW51bQoreworICBGSUxFX01PTklUT1JfUE9TU0lCTFlfUkVDUkVBVEVECT0gMSA8
PCBNT05JVE9SX0ZMQUdTX1NISUZUCit9IEZpbGVNb25pdG9yRmxhZ3M7CiAKLXN0YXRpYyBHU0xp
c3QgKgotZ2FtX2txdWV1ZV9sc2Rpcihjb25zdCBjaGFyICpwYXRoKQordHlwZWRlZiB2b2lkICgq
UG9sbGVyRnVuYykgKFN1Yk1vbml0b3IgKnNtb24pOwordHlwZWRlZiBzdHJ1Y3QKIHsKLSAgICBH
RGlyICpkaXI7Ci0gICAgR1NMaXN0ICpsc3QgPSBOVUxMOwotICAgIGNvbnN0IGdjaGFyICplbnRy
eTsKKyAgUG9sbGVyRnVuYwlmdW5jOworICB1bnNpZ25lZCBpbnQJaW50ZXJ2YWw7CisgIHVuc2ln
bmVkIGludAl0aW1lb3V0X2lkOworICBIYXNoVGFibGUJKnNtb25zOwkJLyogU3ViTW9uaXRvciBv
YmplY3RzICovCit9IFBvbGxlcjsKKworc3RhdGljIGludCBrcSA9IC0xOworCitzdGF0aWMgdW5z
aWduZWQgaW50IG9wZW5fZmlsZXMgPSAwOworc3RhdGljIHVuc2lnbmVkIGludCBtYXhfb3Blbl9m
aWxlcyA9IDA7CisKK3N0YXRpYyBHSGFzaFRhYmxlICpkaXJfaGFzaCA9IE5VTEw7CitzdGF0aWMg
R0hhc2hUYWJsZSAqZmlsZV9oYXNoID0gTlVMTDsKKworc3RhdGljIFBvbGxlciBtaXNzaW5nX3Nt
b25fcG9sbGVyOworc3RhdGljIFBvbGxlciB1bnN1cHBvcnRlZF9zbW9uX3BvbGxlcjsKK3N0YXRp
YyBQb2xsZXIgdW5zdXBwb3J0ZWRfZm1vbl9wb2xsZXI7CisKK3N0YXRpYyB2b2lkIGdhbV9rcXVl
dWVfaGFzaF90YWJsZV9kZWZhdWx0X2FkZF9jYiAoR0hhc2hUYWJsZSAqdGFibGUsCisJCQkJCQkg
IGdwb2ludGVyIGl0ZW0sCisJCQkJCQkgIGdwb2ludGVyIHVzZXJfZGF0YSk7CitzdGF0aWMgdm9p
ZCBnYW1fa3F1ZXVlX2hhc2hfdGFibGVfZGVmYXVsdF9yZW1vdmVfY2IgKEdIYXNoVGFibGUgKnRh
YmxlLAorCQkJCQkJICAgICBncG9pbnRlciBpdGVtLAorCQkJCQkJICAgICBncG9pbnRlciB1c2Vy
X2RhdGEpOworCitzdGF0aWMgdm9pZCBnYW1fa3F1ZXVlX3BvbGxlcl9wb3N0X2FkZF9jYiAoR0hh
c2hUYWJsZSAqdGFibGUsIFBvbGxlciAqcG9sbGVyKTsKK3N0YXRpYyB2b2lkIGdhbV9rcXVldWVf
cG9sbGVyX3Bvc3RfcmVtb3ZlX2NiIChHSGFzaFRhYmxlICp0YWJsZSwgUG9sbGVyICpwb2xsZXIp
OworCitzdGF0aWMgSGFzaFRhYmxlTWV0aG9kcyBwb2xsZXJfaGFzaF90YWJsZV9tZXRob2RzID0K
KyAgeworICAgIGdhbV9rcXVldWVfaGFzaF90YWJsZV9kZWZhdWx0X2FkZF9jYiwKKyAgICAoSGFz
aFRhYmxlUG9zdEFkZEZ1bmMpIGdhbV9rcXVldWVfcG9sbGVyX3Bvc3RfYWRkX2NiLAorICAgIGdh
bV9rcXVldWVfaGFzaF90YWJsZV9kZWZhdWx0X3JlbW92ZV9jYiwKKyAgICAoSGFzaFRhYmxlUG9z
dFJlbW92ZUZ1bmMpIGdhbV9rcXVldWVfcG9sbGVyX3Bvc3RfcmVtb3ZlX2NiCisgIH07CisKK3N0
YXRpYyB2b2lkIGdhbV9rcXVldWVfc3ViX21vbml0b3JfYWRkX2Ztb25fY2IgKEdIYXNoVGFibGUg
KnRhYmxlLAorCQkJCQkJRmlsZU1vbml0b3IgKmZtb24sCisJCQkJCQlTdWJNb25pdG9yICpzbW9u
KTsKK3N0YXRpYyB2b2lkIGdhbV9rcXVldWVfc3ViX21vbml0b3JfcmVtb3ZlX2Ztb25fY2IgKEdI
YXNoVGFibGUgKnRhYmxlLAorCQkJCQkJICAgRmlsZU1vbml0b3IgKmZtb24sCisJCQkJCQkgICBT
dWJNb25pdG9yICpzbW9uKTsKKworc3RhdGljIEhhc2hUYWJsZU1ldGhvZHMgc3ViX21vbml0b3Jf
Zm1vbnNfaGFzaF90YWJsZV9tZXRob2RzID0KKyAgeworICAgIChIYXNoVGFibGVBZGRGdW5jKSBn
YW1fa3F1ZXVlX3N1Yl9tb25pdG9yX2FkZF9mbW9uX2NiLAorICAgIChIYXNoVGFibGVQb3N0QWRk
RnVuYykgTlVMTCwKKyAgICAoSGFzaFRhYmxlUmVtb3ZlRnVuYykgZ2FtX2txdWV1ZV9zdWJfbW9u
aXRvcl9yZW1vdmVfZm1vbl9jYiwKKyAgICAoSGFzaFRhYmxlUG9zdFJlbW92ZUZ1bmMpIE5VTEwK
KyAgfTsKKworc3RhdGljIHZvaWQgZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9wb3N0X2FkZF91bnN1
cHBvcnRlZF9mbW9uX2NiIChHSGFzaFRhYmxlICp0YWJsZSwKKwkJCQkJCQkJIFN1Yk1vbml0b3Ig
KnNtb24pOworc3RhdGljIHZvaWQgZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9wb3N0X3JlbW92ZV91
bnN1cHBvcnRlZF9mbW9uX2NiIChHSGFzaFRhYmxlICp0YWJsZSwKKwkJCQkJCQkJICAgIFN1Yk1v
bml0b3IgKnNtb24pOworCitzdGF0aWMgSGFzaFRhYmxlTWV0aG9kcyBzdWJfbW9uaXRvcl91bnN1
cHBvcnRlZF9mbW9uc19oYXNoX3RhYmxlX21ldGhvZHMgPQorICB7CisgICAgZ2FtX2txdWV1ZV9o
YXNoX3RhYmxlX2RlZmF1bHRfYWRkX2NiLAorICAgIChIYXNoVGFibGVQb3N0QWRkRnVuYykgZ2Ft
X2txdWV1ZV9zdWJfbW9uaXRvcl9wb3N0X2FkZF91bnN1cHBvcnRlZF9mbW9uX2NiLAorICAgIGdh
bV9rcXVldWVfaGFzaF90YWJsZV9kZWZhdWx0X3JlbW92ZV9jYiwKKyAgICAoSGFzaFRhYmxlUG9z
dFJlbW92ZUZ1bmMpIGdhbV9rcXVldWVfc3ViX21vbml0b3JfcG9zdF9yZW1vdmVfdW5zdXBwb3J0
ZWRfZm1vbl9jYgorICB9OworCitzdGF0aWMgdm9pZCBnYW1fa3F1ZXVlX3N1Yl9tb25pdG9yX2Vt
aXRfZXZlbnQgKFN1Yk1vbml0b3IgKnNtb24sCisJCQkJCSAgICAgICBHYW1pbkV2ZW50VHlwZSBl
dmVudCwKKwkJCQkJICAgICAgIFN1Yk1vbml0b3JGbGFncyBmbGFncyk7CitzdGF0aWMgdm9pZCBn
YW1fa3F1ZXVlX3N1Yl9tb25pdG9yX2hhbmRsZV9rZXZlbnQgKE1vbml0b3IgKm1vbiwKKwkJCQkJ
CSAgc3RydWN0IGtldmVudCAqZXZlbnQpOworCitzdGF0aWMgRmlsZU1vbml0b3IgKmdhbV9rcXVl
dWVfZmlsZV9tb25pdG9yX25ldyAoU3ViTW9uaXRvciAqc21vbiwKKwkJCQkJCSBjb25zdCBjaGFy
ICpmaWxlbmFtZSwKKwkJCQkJCSBGaWxlTW9uaXRvckZsYWdzICpmbGFncyk7CitzdGF0aWMgdm9p
ZCBnYW1fa3F1ZXVlX2ZpbGVfbW9uaXRvcl9mcmVlIChGaWxlTW9uaXRvciAqZm1vbik7CitzdGF0
aWMgdm9pZCBnYW1fa3F1ZXVlX2ZpbGVfbW9uaXRvcl9lbWl0X2V2ZW50IChGaWxlTW9uaXRvciAq
Zm1vbiwKKwkJCQkJCUdhbWluRXZlbnRUeXBlIGV2ZW50LAorCQkJCQkJRmlsZU1vbml0b3JGbGFn
cyBmbGFncyk7CitzdGF0aWMgdm9pZCBnYW1fa3F1ZXVlX2ZpbGVfbW9uaXRvcl9oYW5kbGVfa2V2
ZW50IChNb25pdG9yICptb24sIHN0cnVjdCBrZXZlbnQgKmV2ZW50KTsKIAotICAgIGlmICghcGF0
aCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKioqIGhlbHBlcnMgKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLSAgICBk
aXIgPSBnX2Rpcl9vcGVuKHBhdGgsIDAsIE5VTEwpOwotICAgIGlmICghZGlyKQotICAgICAgICBy
ZXR1cm4gTlVMTDsKK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX21pbmlfbHN0YXQgKGNvbnN0IGNo
YXIgKnBhdGhuYW1lLCBNaW5pU3RhdCAqbWluaV9zYikKK3sKKyAgc3RydWN0IHN0YXQgc2I7Cisg
IAorICBpZiAobHN0YXQocGF0aG5hbWUsICZzYikgPCAwKQorICAgIG1lbXNldChtaW5pX3NiLCAw
LCBzaXplb2YoKm1pbmlfc2IpKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIG1pbmlfc2ItPmV4aXN0
cyA9IFRSVUU7CisgICAgICBtaW5pX3NiLT5pbm8gPSBzYi5zdF9pbm87CisgICAgICBtaW5pX3Ni
LT5tb2RlID0gc2Iuc3RfbW9kZTsKKyAgICAgIG1pbmlfc2ItPnVpZCA9IHNiLnN0X3VpZDsKKyAg
ICAgIG1pbmlfc2ItPmdpZCA9IHNiLnN0X2dpZDsKKyAgICAgIG1pbmlfc2ItPm10aW1lID0gc2Iu
c3RfbXRpbWU7CisgICAgICBtaW5pX3NiLT5jdGltZSA9IHNiLnN0X2N0aW1lOworICAgICAgbWlu
aV9zYi0+c2l6ZSA9IHNiLnN0X3NpemU7CisgICAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dh
bV9rcXVldWVfZGlmZmVycyAoY29uc3QgTWluaVN0YXQgKnNiMSwgY29uc3QgTWluaVN0YXQgKnNi
MikKK3sKKyAgcmV0dXJuIHNiMS0+bXRpbWUgIT0gc2IyLT5tdGltZQorICAgIHx8IHNiMS0+Y3Rp
bWUgIT0gc2IyLT5jdGltZQorICAgIHx8IHNiMS0+c2l6ZSAhPSBzYjItPnNpemUKKyAgICB8fCBz
YjEtPm1vZGUgIT0gc2IyLT5tb2RlCisgICAgfHwgc2IxLT51aWQgIT0gc2IyLT51aWQKKyAgICB8
fCBzYjEtPmdpZCAhPSBzYjItPmdpZAorICAgIHx8IHNiMS0+aW5vICE9IHNiMi0+aW5vOworfQor
CitzdGF0aWMgZ2Jvb2xlYW4KK2dhbV9rcXVldWVfaXNkaXIgKGNvbnN0IGNoYXIgKnBhdGhuYW1l
LCBNb25pdG9yRmxhZ3MgZmxhZ3MpCit7CisgIGlmICgoZmxhZ3MgJiBNT05JVE9SX0lTRElSKSAh
PSAwKQorICAgIHJldHVybiBUUlVFOworICBlbHNlIGlmICgoZmxhZ3MgJiBNT05JVE9SX0lTTk9U
RElSKSAhPSAwKQorICAgIHJldHVybiBGQUxTRTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHN0cnVj
dCBzdGF0IHNiOworICAgICAgcmV0dXJuIGxzdGF0KHBhdGhuYW1lLCAmc2IpID49IDAgJiYgKHNi
LnN0X21vZGUgJiBTX0lGRElSKSAhPSAwOworICAgIH0KK30KIAotICAgIGVudHJ5ID0gZ19kaXJf
cmVhZF9uYW1lKGRpcik7CitzdGF0aWMgZ2Jvb2xlYW4KK2dhbV9rcXVldWVfZ2V0X3VpbnRfc3lz
Y3RsIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgKnZhbHVlKQoreworICB1bnNpZ25l
ZCBpbnQgdmFsdWVfbGVuID0gc2l6ZW9mKCp2YWx1ZSk7CiAKLSAgICB3aGlsZSAoZW50cnkpIHsK
LSAgICAgICAgbHN0ID0gZ19zbGlzdF9wcmVwZW5kKGxzdCwgZ19zdHJkdXAoZW50cnkpKTsKLSAg
ICAgICAgZW50cnkgPSBnX2Rpcl9yZWFkX25hbWUoZGlyKTsKKyAgaWYgKHN5c2N0bGJ5bmFtZShu
YW1lLCB2YWx1ZSwgJnZhbHVlX2xlbiwgTlVMTCwgMCkgPCAwKQorICAgIHsKKyAgICAgIGdhbV9l
cnJvcihERUJVR19JTkZPLCAidW5hYmxlIHRvIHJldHJpZXZlICVzOiAlc1xuIiwgbmFtZSwgZ19z
dHJlcnJvcihlcnJubykpOworICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KKyAgZWxzZQorICAg
IHJldHVybiBUUlVFOworfQogCi0gICAgZ19kaXJfY2xvc2UoZGlyKTsKKy8qKiogSGFzaFRhYmxl
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KIAotICAgIHJldHVybiBsc3Q7CitzdGF0aWMgSGFzaFRhYmxlICoKK2dhbV9rcXVl
dWVfaGFzaF90YWJsZV9uZXcgKEdIYXNoVGFibGUgKm1haW4sCisJCQkgICBIYXNoVGFibGVNZXRo
b2RzICptZXRob2RzLAorCQkJICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBIYXNoVGFibGUg
KnRhYmxlOworCisgIHRhYmxlID0gZ19uZXcwKEhhc2hUYWJsZSwgMSk7CisgIHRhYmxlLT5tYWlu
ID0gbWFpbjsKKyAgdGFibGUtPm1ldGhvZHMgPSBtZXRob2RzOworICB0YWJsZS0+dXNlcl9kYXRh
ID0gdXNlcl9kYXRhOworCisgIHJldHVybiB0YWJsZTsKIH0KIAogc3RhdGljIHZvaWQKLWdhbV9r
cXVldWVfY21wbHN0KEdTTGlzdCAqbHN0MSwgR1NMaXN0ICpsc3QyLCBHU0xpc3QgKiphZGRlZCwg
R1NMaXN0ICoqZGVsZXRlZCkKK2dhbV9rcXVldWVfaGFzaF90YWJsZV9kZWZhdWx0X2FkZF9jYiAo
R0hhc2hUYWJsZSAqdGFibGUsCisJCQkJICAgICAgZ3BvaW50ZXIgaXRlbSwKKwkJCQkgICAgICBn
cG9pbnRlciB1c2VyX2RhdGEpCiB7Ci0gICAgaW50IGZvdW5kOwotICAgIEdTTGlzdCAqbDsKKyAg
Z19oYXNoX3RhYmxlX2luc2VydCh0YWJsZSwgaXRlbSwgR0lOVF9UT19QT0lOVEVSKFRSVUUpKTsK
K30KIAotICAgIGlmICghbHN0MSAmJiAhbHN0MikKLSAgICAgICAgcmV0dXJuOworc3RhdGljIHZv
aWQKK2dhbV9rcXVldWVfaGFzaF90YWJsZV9kZWZhdWx0X3JlbW92ZV9jYiAoR0hhc2hUYWJsZSAq
dGFibGUsCisJCQkJCSBncG9pbnRlciBpdGVtLAorCQkJCQkgZ3BvaW50ZXIgdXNlcl9kYXRhKQor
eworICBnX2hhc2hfdGFibGVfcmVtb3ZlKHRhYmxlLCBpdGVtKTsKK30KIAotICAgIGlmICghbHN0
MSkgewotICAgICAgICAqYWRkZWQgPSBnX3NsaXN0X2NvcHkobHN0Mik7Ci0gICAgICAgIHJldHVy
bjsKK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX2hhc2hfdGFibGVfYWRkIChIYXNoVGFibGUgKnRh
YmxlLCBncG9pbnRlciBpdGVtKQoreworICBpZiAodGFibGUtPml0ZXJhdGluZykKKyAgICB0YWJs
ZS0+cGVuZGluZ19hZGRpdGlvbnMgPSBnX3NsaXN0X3ByZXBlbmQodGFibGUtPnBlbmRpbmdfYWRk
aXRpb25zLCBpdGVtKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHRhYmxlLT5tZXRob2RzLT5hZGQo
dGFibGUtPm1haW4sIGl0ZW0sIHRhYmxlLT51c2VyX2RhdGEpOworICAgICAgaWYgKHRhYmxlLT5t
ZXRob2RzLT5wb3N0X2FkZCkKKwl0YWJsZS0+bWV0aG9kcy0+cG9zdF9hZGQodGFibGUtPm1haW4s
IHRhYmxlLT51c2VyX2RhdGEpOwogICAgIH0KK30KIAotICAgIGlmICghbHN0MikgewotICAgICAg
ICAqZGVsZXRlZCA9IGdfc2xpc3RfY29weShsc3QxKTsKLSAgICAgICAgcmV0dXJuOworc3RhdGlj
IHZvaWQKK2dhbV9rcXVldWVfaGFzaF90YWJsZV9yZW1vdmUgKEhhc2hUYWJsZSAqdGFibGUsIGdw
b2ludGVyIGl0ZW0pCit7CisgIGlmICh0YWJsZS0+aXRlcmF0aW5nKQorICAgIHRhYmxlLT5wZW5k
aW5nX3JlbW92YWxzID0gZ19zbGlzdF9wcmVwZW5kKHRhYmxlLT5wZW5kaW5nX3JlbW92YWxzLCBp
dGVtKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHRhYmxlLT5tZXRob2RzLT5yZW1vdmUodGFibGUt
Pm1haW4sIGl0ZW0sIHRhYmxlLT51c2VyX2RhdGEpOworICAgICAgaWYgKHRhYmxlLT5tZXRob2Rz
LT5wb3N0X3JlbW92ZSkKKwl0YWJsZS0+bWV0aG9kcy0+cG9zdF9yZW1vdmUodGFibGUtPm1haW4s
IHRhYmxlLT51c2VyX2RhdGEpOwogICAgIH0KK30KIAotICAgIGZvciAobCA9IGxzdDE7IGw7IGwg
PSBsLT5uZXh0KSB7Ci0gICAgICAgIGZvdW5kID0gMDsKLSAgICAgICAgaWYgKGdfc2xpc3RfZmlu
ZF9jdXN0b20obHN0MiwgbC0+ZGF0YSwgKEdDb21wYXJlRnVuYylzdHJjbXApKSB7Ci0gICAgICAg
ICAgICBmb3VuZCA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZvdW5kID09IDApIHsKLSAg
ICAgICAgICAgICpkZWxldGVkID0gZ19zbGlzdF9wcmVwZW5kKCpkZWxldGVkLCBsLT5kYXRhKTsK
LSAgICAgICAgfQorc3RhdGljIHZvaWQKK2dhbV9rcXVldWVfaGFzaF90YWJsZV9mb3JlYWNoIChI
YXNoVGFibGUgKnRhYmxlLAorCQkJICAgICAgIEdIRnVuYyBmdW5jLAorCQkJICAgICAgIGdwb2lu
dGVyIHVzZXJfZGF0YSkKK3sKKyAgZ19hc3NlcnQodGFibGUtPml0ZXJhdGluZyA9PSBGQUxTRSk7
CisKKyAgdGFibGUtPml0ZXJhdGluZyA9IFRSVUU7CisgIGdfaGFzaF90YWJsZV9mb3JlYWNoKHRh
YmxlLT5tYWluLCBmdW5jLCB1c2VyX2RhdGEpOworICB0YWJsZS0+aXRlcmF0aW5nID0gRkFMU0U7
CisgIAorICBpZiAodGFibGUtPnBlbmRpbmdfYWRkaXRpb25zKQorICAgIHsKKyAgICAgIEdTTGlz
dCAqbDsKKworICAgICAgZm9yIChsID0gdGFibGUtPnBlbmRpbmdfYWRkaXRpb25zOyBsICE9IE5V
TEw7IGwgPSBsLT5uZXh0KQorCXRhYmxlLT5tZXRob2RzLT5hZGQodGFibGUtPm1haW4sIGwtPmRh
dGEsIHRhYmxlLT51c2VyX2RhdGEpOworCisgICAgICBnX3NsaXN0X2ZyZWUodGFibGUtPnBlbmRp
bmdfYWRkaXRpb25zKTsKKyAgICAgIHRhYmxlLT5wZW5kaW5nX2FkZGl0aW9ucyA9IE5VTEw7CisK
KyAgICAgIGlmICh0YWJsZS0+bWV0aG9kcy0+cG9zdF9hZGQpCisJdGFibGUtPm1ldGhvZHMtPnBv
c3RfYWRkKHRhYmxlLT5tYWluLCB0YWJsZS0+dXNlcl9kYXRhKTsKICAgICB9CiAKLSAgICBmb3Ig
KGwgPSBsc3QyOyBsOyBsID0gbC0+bmV4dCkgewotICAgICAgICBmb3VuZCA9IDA7Ci0gICAgICAg
IGlmIChnX3NsaXN0X2ZpbmRfY3VzdG9tKGxzdDEsIGwtPmRhdGEsIChHQ29tcGFyZUZ1bmMpc3Ry
Y21wKSkgewotICAgICAgICAgICAgZm91bmQgPSAxOwotICAgICAgICB9Ci0gICAgICAgIGlmIChm
b3VuZCA9PSAwKSB7Ci0gICAgICAgICAgICAqYWRkZWQgPSBnX3NsaXN0X3ByZXBlbmQoKmFkZGVk
LCBsLT5kYXRhKTsKLSAgICAgICAgfQorICBpZiAodGFibGUtPnBlbmRpbmdfcmVtb3ZhbHMpCisg
ICAgeworICAgICAgR1NMaXN0ICpsOworCisgICAgICBmb3IgKGwgPSB0YWJsZS0+cGVuZGluZ19y
ZW1vdmFsczsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkKKwl0YWJsZS0+bWV0aG9kcy0+cmVtb3Zl
KHRhYmxlLT5tYWluLCBsLT5kYXRhLCB0YWJsZS0+dXNlcl9kYXRhKTsKKworICAgICAgZ19zbGlz
dF9mcmVlKHRhYmxlLT5wZW5kaW5nX3JlbW92YWxzKTsKKyAgICAgIHRhYmxlLT5wZW5kaW5nX3Jl
bW92YWxzID0gTlVMTDsKKworICAgICAgaWYgKHRhYmxlLT5tZXRob2RzLT5wb3N0X3JlbW92ZSkK
Kwl0YWJsZS0+bWV0aG9kcy0+cG9zdF9yZW1vdmUodGFibGUtPm1haW4sIHRhYmxlLT51c2VyX2Rh
dGEpOwogICAgIH0KIH0KIAogc3RhdGljIHZvaWQKLWdhbV9rcXVldWVfZGF0YV9mcmVlKEtRdWV1
ZURhdGEgKiBkYXRhKQorZ2FtX2txdWV1ZV9oYXNoX3RhYmxlX2Rlc3Ryb3kgKEhhc2hUYWJsZSAq
dGFibGUpCiB7Ci0gICAgZ19mcmVlKGRhdGEtPnBhdGgpOwotICAgIGlmIChkYXRhLT5kaXJsaXN0
KSB7Ci0gICAgICAgIGdfc2xpc3RfZm9yZWFjaChkYXRhLT5kaXJsaXN0LCAoR0Z1bmMpZ19mcmVl
LCBOVUxMKTsKLSAgICAgICAgZ19zbGlzdF9mcmVlKGRhdGEtPmRpcmxpc3QpOwotICAgIH0KLSAg
ICBpZiAoZGF0YS0+c3VicykgewotCWdfbGlzdF9mcmVlKGRhdGEtPnN1YnMpOworICBnX2Fzc2Vy
dCh0YWJsZS0+aXRlcmF0aW5nID09IEZBTFNFKTsKKworICBnX2hhc2hfdGFibGVfZGVzdHJveSh0
YWJsZS0+bWFpbik7CisgIGdfZnJlZSh0YWJsZSk7Cit9CisKKy8qKiogUG9sbGVyICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KKworc3RhdGljIHZvaWQKK2dhbV9rcXVldWVfcG9sbGVyX2luaXQgKFBvbGxlciAqcG9sbGVy
LCBQb2xsZXJGdW5jIGZ1bmMsIHVuc2lnbmVkIGludCBpbnRlcnZhbCkKK3sKKyAgcG9sbGVyLT5m
dW5jID0gZnVuYzsKKyAgcG9sbGVyLT5pbnRlcnZhbCA9IGludGVydmFsOworICBwb2xsZXItPnRp
bWVvdXRfaWQgPSAwOworICBwb2xsZXItPnNtb25zID0gZ2FtX2txdWV1ZV9oYXNoX3RhYmxlX25l
dyhnX2hhc2hfdGFibGVfbmV3KGdfZGlyZWN0X2hhc2gsIGdfZGlyZWN0X2VxdWFsKSwKKwkJCQkJ
ICAgICZwb2xsZXJfaGFzaF90YWJsZV9tZXRob2RzLAorCQkJCQkgICAgcG9sbGVyKTsKK30KKwor
c3RhdGljIHZvaWQKK2dhbV9rcXVldWVfcG9sbGVyX2ZvcmVhY2hfY2IgKFN1Yk1vbml0b3IgKnNt
b24sCisJCQkgICAgICBncG9pbnRlciB1bnVzZWQsCisJCQkgICAgICBQb2xsZXIgKnBvbGxlcikK
K3sKKyAgcG9sbGVyLT5mdW5jKHNtb24pOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dhbV9rcXVl
dWVfcG9sbGVyX3RpbWVvdXRfY2IgKFBvbGxlciAqcG9sbGVyKQoreworICBnYW1fa3F1ZXVlX2hh
c2hfdGFibGVfZm9yZWFjaChwb2xsZXItPnNtb25zLCAoR0hGdW5jKSBnYW1fa3F1ZXVlX3BvbGxl
cl9mb3JlYWNoX2NiLCBwb2xsZXIpOworCisgIHJldHVybiBUUlVFOwkJCS8qIGtlZXAgc291cmNl
ICovCit9CisKK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX3BvbGxlcl9wb3N0X2FkZF9jYiAoR0hh
c2hUYWJsZSAqdGFibGUsIFBvbGxlciAqcG9sbGVyKQoreworICBpZiAoISBwb2xsZXItPnRpbWVv
dXRfaWQpCisgICAgcG9sbGVyLT50aW1lb3V0X2lkID0gZ190aW1lb3V0X2FkZChwb2xsZXItPmlu
dGVydmFsLCAoR1NvdXJjZUZ1bmMpIGdhbV9rcXVldWVfcG9sbGVyX3RpbWVvdXRfY2IsIHBvbGxl
cik7Cit9CisKK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX3BvbGxlcl9wb3N0X3JlbW92ZV9jYiAo
R0hhc2hUYWJsZSAqdGFibGUsIFBvbGxlciAqcG9sbGVyKQoreworICBpZiAoZ19oYXNoX3RhYmxl
X3NpemUodGFibGUpID09IDAgJiYgcG9sbGVyLT50aW1lb3V0X2lkKQorICAgIHsKKyAgICAgIGdf
c291cmNlX3JlbW92ZShwb2xsZXItPnRpbWVvdXRfaWQpOworICAgICAgcG9sbGVyLT50aW1lb3V0
X2lkID0gMDsKICAgICB9Ci0gICAgZ19mcmVlKGRhdGEpOwogfQogCiBzdGF0aWMgdm9pZAotZ2Ft
X2txdWV1ZV9hZGRfcm1faGFuZGxlcihjb25zdCBjaGFyICpwYXRoLCBHYW1TdWJzY3JpcHRpb24g
KnN1YiwgZ2Jvb2xlYW4gYWRkZWQsIGdib29sZWFuIHdhc19taXNzaW5nKQorZ2FtX2txdWV1ZV9w
b2xsZXJfYWRkX3N1Yl9tb25pdG9yIChQb2xsZXIgKnBvbGxlciwgU3ViTW9uaXRvciAqc21vbikK
K3sKKyAgZ2FtX2txdWV1ZV9oYXNoX3RhYmxlX2FkZChwb2xsZXItPnNtb25zLCBzbW9uKTsKK30K
Kworc3RhdGljIHZvaWQKK2dhbV9rcXVldWVfcG9sbGVyX3JlbW92ZV9zdWJfbW9uaXRvciAoUG9s
bGVyICpwb2xsZXIsIFN1Yk1vbml0b3IgKnNtb24pCiB7Ci0gICAgS1F1ZXVlRGF0YSAqZGF0YTsK
LSAgICBzdHJ1Y3Qga2V2ZW50IGV2WzFdOwotICAgIGludCBpc2RpciA9IDA7Ci0gICAgaW50IGZk
OworICBnYW1fa3F1ZXVlX2hhc2hfdGFibGVfcmVtb3ZlKHBvbGxlci0+c21vbnMsIHNtb24pOwor
fQogCi0gICAgR19MT0NLKGtxdWV1ZSk7CisvKioqIE1vbml0b3IgKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLSAgICBp
c2RpciA9IGdfZmlsZV90ZXN0KHBhdGgsIEdfRklMRV9URVNUX0lTX0RJUik7Ci0gICAgaWYgKGdh
bV9zdWJzY3JpcHRpb25faXNfZGlyKHN1YikpIHsKLSAgICAgICAgZGF0YSA9IGdfaGFzaF90YWJs
ZV9sb29rdXAoZGlyX3BhdGhfaGFzaCwgcGF0aCk7CitzdGF0aWMgZ2Jvb2xlYW4KK2dhbV9rcXVl
dWVfbW9uaXRvcl9lbmFibGVfa3F1ZXVlIChNb25pdG9yICptb24pCit7CisgIHN0cnVjdCBrZXZl
bnQgZXZbMV07CisKKyAgaWYgKG9wZW5fZmlsZXMgPT0gbWF4X29wZW5fZmlsZXMpCisgICAgewor
ICAgICAgR0FNX0RFQlVHKERFQlVHX0lORk8sICJjYW5ub3Qgb3BlbiAlcyAobWF4X29wZW5fZmls
ZXMgbGltaXQgcmVhY2hlZCksIGZhbGxpbmcgYmFjayB0byBwb2xsXG4iLCBtb24tPnBhdGhuYW1l
KTsKKyAgICAgIHJldHVybiBGQUxTRTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRhdGEg
PSBnX2hhc2hfdGFibGVfbG9va3VwKGZpbGVfcGF0aF9oYXNoLCBwYXRoKTsKKyAgCisgIG1vbi0+
ZmQgPSBvcGVuKG1vbi0+cGF0aG5hbWUsIE9fUkRPTkxZIHwgT19OT0ZPTExPVyk7CisgIGlmICht
b24tPmZkIDwgMCkKKyAgICB7CisgICAgICBHQU1fREVCVUcoREVCVUdfSU5GTywgImNhbm5vdCBv
cGVuICVzICglcyksIGZhbGxpbmcgYmFjayB0byBwb2xsXG4iLCBtb24tPnBhdGhuYW1lLCBnX3N0
cmVycm9yKGVycm5vKSk7CisgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCi0gICAgaWYgKGFk
ZGVkKSB7Ci0JR0xpc3QgKnN1YnM7CisgIEVWX1NFVChldiwgbW9uLT5mZCwgRVZGSUxUX1ZOT0RF
LCBFVl9BREQgfCBFVl9FTkFCTEUgfCBFVl9DTEVBUiwgVk5fTk9URV9BTEwsIDAsIG1vbik7Cisg
IGlmIChrZXZlbnQoa3EsIGV2LCBHX05fRUxFTUVOVFMoZXYpLCBOVUxMLCAwLCBOVUxMKSA8IDAp
CisgICAgeworICAgICAgR0FNX0RFQlVHKERFQlVHX0lORk8sICJjYW5ub3QgZW5hYmxlIGtxdWV1
ZSBub3RpZmljYXRpb24gZm9yICVzICglcyksIGZhbGxpbmcgYmFjayB0byBwb2xsXG4iLCBtb24t
PnBhdGhuYW1lLCBnX3N0cmVycm9yKGVycm5vKSk7CiAKLQlzdWJzID0gTlVMTDsKLQlzdWJzID0g
Z19saXN0X2FwcGVuZChzdWJzLCBzdWIpOworICAgICAgY2xvc2UobW9uLT5mZCk7CisgICAgICBt
b24tPmZkID0gLTE7CiAKLSAgICAgICAgaWYgKGRhdGEgIT0gTlVMTCkgewotICAgICAgICAgICAg
ZGF0YS0+cmVmY291bnQrKzsKLQkgICAgZGF0YS0+c3VicyA9IGdfbGlzdF9wcmVwZW5kKGRhdGEt
PnN1YnMsIHN1Yik7Ci0gICAgICAgICAgICBHX1VOTE9DSyhrcXVldWUpOwotCSAgICBHQU1fREVC
VUcoREVCVUdfSU5GTywgImtxdWV1ZSB1cGRhdGVkIHJlZmNvdW50XG4iKTsKLQkgICAgaWYgKCF3
YXNfbWlzc2luZykgewotCSAgICAgICAgZ2FtX3NlcnZlcl9lbWl0X2V2ZW50IChwYXRoLCBpc2Rp
ciwgR0FNSU5fRVZFTlRfRVhJU1RTLCBzdWJzLCAxKTsKLSAgICAgICAgICAgICAgICBnYW1fc2Vy
dmVyX2VtaXRfZXZlbnQgKHBhdGgsIGlzZGlyLCBHQU1JTl9FVkVOVF9FTkRFWElTVFMsIHN1YnMs
IDEpOwotCSAgICB9Ci0JICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGdhbV9zZXJ2ZXJfZW1p
dF9ldmVudCAocGF0aCwgaXNkaXIsIEdBTUlOX0VWRU5UX0NSRUFURUQsIHN1YnMsIDEpOwotCSAg
ICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgIHJldHVybiBGQUxTRTsK
KyAgICB9CiAKLQlpZiAoIWdfZmlsZV90ZXN0KHBhdGgsIEdfRklMRV9URVNUX0VYSVNUUykpIHsK
LQkgICAgZGF0YSA9IGdhbV9rcXVldWVfZGF0YV9uZXcocGF0aCwgLTEpOwotCSAgICBkYXRhLT5z
dWJzID0gZ19saXN0X3ByZXBlbmQoZGF0YS0+c3Vicywgc3ViKTsKLSAgICAgICAgICAgIGV4aXN0
X2xpc3QgPSBnX3NsaXN0X2FwcGVuZChleGlzdF9saXN0LCBkYXRhKTsKLQkgICAgZ2FtX3NlcnZl
cl9lbWl0X2V2ZW50IChwYXRoLCBpc2RpciwgR0FNSU5fRVZFTlRfREVMRVRFRCwgc3VicywgMSk7
Ci0JICAgIGdhbV9zZXJ2ZXJfZW1pdF9ldmVudCAocGF0aCwgaXNkaXIsIEdBTUlOX0VWRU5UX0VO
REVYSVNUUywgc3VicywgMSk7Ci0JICAgIEdfVU5MT0NLKGtxdWV1ZSk7Ci0JICAgIHJldHVybjsK
LQl9CisgIG9wZW5fZmlsZXMrKzsKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitn
YW1fa3F1ZXVlX21vbml0b3Jfc2V0X3Vuc3VwcG9ydGVkIChNb25pdG9yICptb24pCit7CisgIGlm
IChtb24tPmZkID49IDApCisgICAgeworICAgICAgY2xvc2UobW9uLT5mZCk7CisgICAgICBtb24t
PmZkID0gLTE7CiAKLQlmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOworICAgICAgb3Blbl9maWxl
cy0tOworICAgIH0KIAotCWlmIChmZCA8IDApIHsKLSAgICAgICAgICAgIEdfVU5MT0NLKGtxdWV1
ZSk7Ci0JICAgIHJldHVybjsKLQl9CisgIGdhbV9rcXVldWVfbWluaV9sc3RhdChtb24tPnBhdGhu
YW1lLCAmbW9uLT5zYik7Cit9CiAKLSAgICAgICAgRVZfU0VUKGV2LCBmZCwgRVZGSUxUX1ZOT0RF
LAotICAgICAgICAgICAgRVZfQUREIHwgRVZfRU5BQkxFIHwgRVZfQ0xFQVIsIFZOX05PVEVfQUxM
LCAwLCAwKTsKLSAgICAgICAga2V2ZW50KGtxLCBldiwgMSwgTlVMTCwgMCwgTlVMTCk7CitzdGF0
aWMgdm9pZAorZ2FtX2txdWV1ZV9tb25pdG9yX2ZyZWUgKE1vbml0b3IgKm1vbikKK3sKKyAgZ19m
cmVlKG1vbi0+cGF0aG5hbWUpOworICBpZiAobW9uLT5mZCA+PSAwKQorICAgIHsKKyAgICAgIGNs
b3NlKG1vbi0+ZmQpOworICAgICAgb3Blbl9maWxlcy0tOworICAgIH0KKyAgZ19mcmVlKG1vbik7
Cit9CiAKLSAgICAgICAgZGF0YSA9IGdhbV9rcXVldWVfZGF0YV9uZXcocGF0aCwgZmQpOwotICAg
ICAgICBkYXRhLT5zdWJzID0gZ19saXN0X3ByZXBlbmQoZGF0YS0+c3Vicywgc3ViKTsKKy8qKiog
U3ViTW9uaXRvciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KIAotCWlmICghd2FzX21pc3NpbmcpIHsKLSAgICAgICAgICAgIGdh
bV9zZXJ2ZXJfZW1pdF9ldmVudCAocGF0aCwgaXNkaXIsIEdBTUlOX0VWRU5UX0VYSVNUUywgc3Vi
cywgMSk7Ci0JfQotCWVsc2UgewotICAgICAgICAgICAgZ2FtX3NlcnZlcl9lbWl0X2V2ZW50IChw
YXRoLCBpc2RpciwgR0FNSU5fRVZFTlRfQ1JFQVRFRCwgc3VicywgMSk7Ci0JfQotICAgICAgICBp
ZiAoZ2FtX3N1YnNjcmlwdGlvbl9pc19kaXIoc3ViKSAmJiBpc2RpcikgewotCSAgICBHU0xpc3Qg
Kmw7CitzdGF0aWMgdm9pZAorZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9pbml0X2Ztb25zIChTdWJN
b25pdG9yICpzbW9uKQoreworICBzbW9uLT5mbW9ucyA9IGdhbV9rcXVldWVfaGFzaF90YWJsZV9u
ZXcoZ19oYXNoX3RhYmxlX25ld19mdWxsKGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLCBOVUxMLCAo
R0Rlc3Ryb3lOb3RpZnkpIGdhbV9rcXVldWVfZmlsZV9tb25pdG9yX2ZyZWUpLAorCQkJCQkgICZz
dWJfbW9uaXRvcl9mbW9uc19oYXNoX3RhYmxlX21ldGhvZHMsCisJCQkJCSAgc21vbik7CisgIHNt
b24tPnVuc3VwcG9ydGVkX2Ztb25zID0gZ2FtX2txdWV1ZV9oYXNoX3RhYmxlX25ldyhnX2hhc2hf
dGFibGVfbmV3KGdfZGlyZWN0X2hhc2gsIGdfZGlyZWN0X2VxdWFsKSwKKwkJCQkJCSAgICAgICZz
dWJfbW9uaXRvcl91bnN1cHBvcnRlZF9mbW9uc19oYXNoX3RhYmxlX21ldGhvZHMsCisJCQkJCQkg
ICAgICBzbW9uKTsKK30KIAotICAgICAgICAgICAgZGF0YS0+aXNkaXIgPSBUUlVFOwotICAgICAg
ICAgICAgZGF0YS0+ZGlybGlzdCA9IGdhbV9rcXVldWVfbHNkaXIocGF0aCk7CitzdGF0aWMgU3Vi
TW9uaXRvciAqCitnYW1fa3F1ZXVlX3N1Yl9tb25pdG9yX25ldyAoR2FtU3Vic2NyaXB0aW9uICpz
dWIpCit7CisgIFN1Yk1vbml0b3IgKnNtb247CisgIE1vbml0b3IgKm1vbjsKIAotCSAgICBmb3Ig
KGwgPSBkYXRhLT5kaXJsaXN0OyBsOyBsID0gbC0+bmV4dCkgewotICAgICAgICAgICAgICAgIGNo
YXIgKnRtcGVudHJ5OworICBzbW9uID0gZ19uZXcwKFN1Yk1vbml0b3IsIDEpOwogCi0gICAgICAg
ICAgICAgICAgdG1wZW50cnkgPSBnX2J1aWxkX2ZpbGVuYW1lKHBhdGgsIGwtPmRhdGEsIE5VTEwp
OwotCQlpZiAoIXdhc19taXNzaW5nKSB7Ci0JCSAgICBnYW1fc2VydmVyX2VtaXRfZXZlbnQgKHRt
cGVudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgZ19maWxlX3Rlc3QodG1wZW50cnksIEdf
RklMRV9URVNUX0lTX0RJUiksCi0JCSAgICAgICAgR0FNSU5fRVZFTlRfRVhJU1RTLCBzdWJzLCAx
KTsKLQkJfQotCQlnX2ZyZWUodG1wZW50cnkpOwotCSAgICB9Ci0JfQorICBtb24gPSBNT05JVE9S
KHNtb24pOworICBtb24tPmhhbmRsZV9rZXZlbnQgPSBnYW1fa3F1ZXVlX3N1Yl9tb25pdG9yX2hh
bmRsZV9rZXZlbnQ7CisgIG1vbi0+cGF0aG5hbWUgPSBnX3N0cmR1cChnYW1fc3Vic2NyaXB0aW9u
X2dldF9wYXRoKHN1YikpOworICBtb24tPmZkID0gLTE7CiAKLQlpZiAoIXdhc19taXNzaW5nKSB7
Ci0JICAgIGdhbV9zZXJ2ZXJfZW1pdF9ldmVudCAocGF0aCwgaXNkaXIsIEdBTUlOX0VWRU5UX0VO
REVYSVNUUywgc3VicywgMSk7Ci0JfQorICBzbW9uLT5pc2RpciA9IGdhbV9zdWJzY3JpcHRpb25f
aXNfZGlyKHN1Yik7CisgIGdhbV9rcXVldWVfc3ViX21vbml0b3JfaW5pdF9mbW9ucyhzbW9uKTsK
IAotICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KGZkX2hhc2gsIEdJTlRfVE9fUE9JTlRFUihk
YXRhLT5mZCksIGRhdGEpOwotCWlmIChkYXRhLT5pc2RpcikgewotICAgICAgICAgICAgZ19oYXNo
X3RhYmxlX2luc2VydChkaXJfcGF0aF9oYXNoLCBkYXRhLT5wYXRoLCBkYXRhKTsKLQl9Ci0JZWxz
ZSB7Ci0gICAgICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KGZpbGVfcGF0aF9oYXNoLCBkYXRh
LT5wYXRoLCBkYXRhKTsKLQl9CisgIHJldHVybiBzbW9uOworfQogCi0JaWYgKHN1YnMpCi0gICAg
ICAgICAgICBnX2xpc3RfZnJlZShzdWJzKTsKK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX3N1Yl9t
b25pdG9yX2NsZWFyX2Ztb25zIChTdWJNb25pdG9yICpzbW9uKQoreworICBpZiAoZ19oYXNoX3Rh
YmxlX3NpemUoc21vbi0+dW5zdXBwb3J0ZWRfZm1vbnMtPm1haW4pID4gMCkKKyAgICBnYW1fa3F1
ZXVlX3BvbGxlcl9yZW1vdmVfc3ViX21vbml0b3IoJnVuc3VwcG9ydGVkX2Ztb25fcG9sbGVyLCBz
bW9uKTsKIAotICAgICAgICBHQU1fREVCVUcoREVCVUdfSU5GTywgImFkZGVkIGtxdWV1ZSB3YXRj
aCBmb3IgJXNcbiIsIHBhdGgpOwotICAgIH0gZWxzZSB7CisgIGdhbV9rcXVldWVfaGFzaF90YWJs
ZV9kZXN0cm95KHNtb24tPnVuc3VwcG9ydGVkX2Ztb25zKTsKKyAgZ2FtX2txdWV1ZV9oYXNoX3Rh
YmxlX2Rlc3Ryb3koc21vbi0+Zm1vbnMpOworfQogCi0gICAgICAgIGlmICghZGF0YSkgewotICAg
ICAgICAgICAgR19VTkxPQ0soa3F1ZXVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQorc3RhdGljIHZvaWQKK2dhbV9rcXVldWVfc3ViX21vbml0b3JfZnJlZSAoU3ViTW9uaXRvciAq
c21vbikKK3sKKyAgZ2FtX2txdWV1ZV9wb2xsZXJfcmVtb3ZlX3N1Yl9tb25pdG9yKCZtaXNzaW5n
X3Ntb25fcG9sbGVyLCBzbW9uKTsKKyAgZ2FtX2txdWV1ZV9wb2xsZXJfcmVtb3ZlX3N1Yl9tb25p
dG9yKCZ1bnN1cHBvcnRlZF9zbW9uX3BvbGxlciwgc21vbik7CisgIC8qIHVuc3VwcG9ydGVkX2Rp
cnNfcG9sbGVyIGlzIGhhbmRsZWQgYnkgX2NsZWFyX2Ztb25zKCkgYmVsb3cgKi8KKyAgCisgIGdh
bV9rcXVldWVfc3ViX21vbml0b3JfY2xlYXJfZm1vbnMoc21vbik7CisgIGdhbV9rcXVldWVfbW9u
aXRvcl9mcmVlKE1PTklUT1Ioc21vbikpOworfQogCi0JaWYgKGdfbGlzdF9maW5kIChkYXRhLT5z
dWJzLCBzdWIpKSB7Ci0JCWRhdGEtPnN1YnMgPSBnX2xpc3RfcmVtb3ZlX2FsbCAoZGF0YS0+c3Vi
cywgc3ViKTsKLQl9Ci0gICAgICAgIGRhdGEtPnJlZmNvdW50LS07Ci0JICAgIEdBTV9ERUJVRyhE
RUJVR19JTkZPLCAia3F1ZXVlIGRlY3JlbWVuZXRlZCByZWZjb3VudCBmb3IgJXNcbiIsIHBhdGgp
Oworc3RhdGljIHZvaWQKK2dhbV9rcXVldWVfc3ViX21vbml0b3JfYWRkX2Ztb25fY2IgKEdIYXNo
VGFibGUgKnRhYmxlLAorCQkJCSAgICBGaWxlTW9uaXRvciAqZm1vbiwKKwkJCQkgICAgU3ViTW9u
aXRvciAqc21vbikKK3sKKyAgZ19oYXNoX3RhYmxlX3JlcGxhY2UodGFibGUsIGZtb24tPmZpbGVu
YW1lLCBmbW9uKTsKK30KIAotICAgICAgICBpZiAoZGF0YS0+cmVmY291bnQgPT0gMCkgewotICAg
ICAgICAgICAgR0xpc3QgKmw7CitzdGF0aWMgdm9pZAorZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9y
ZW1vdmVfZm1vbl9jYiAoR0hhc2hUYWJsZSAqdGFibGUsCisJCQkJICAgICAgIEZpbGVNb25pdG9y
ICpmbW9uLAorCQkJCSAgICAgICBTdWJNb25pdG9yICpzbW9uKQoreworICBnX2hhc2hfdGFibGVf
cmVtb3ZlKHRhYmxlLCBmbW9uLT5maWxlbmFtZSk7Cit9CiAKLQkgICAgY2xvc2UoZGF0YS0+ZmQp
OwotICAgICAgICAgICAgbCA9IGRhdGEtPnN1YnM7Ci0gICAgICAgICAgICBmb3IgKGwgPSBsOyBs
OyBsID0gbC0+bmV4dCkgewotICAgICAgICAgICAgICAgIEdhbVN1YnNjcmlwdGlvbiAqc3ViID0g
bC0+ZGF0YTsKLSAgICAgICAgICAgICAgICBnYW1fa3F1ZXVlX3JlbW92ZV9zdWJzY3JpcHRpb24g
KHN1Yik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBHQU1fREVCVUcoREVCVUdfSU5GTywg
InJlbW92ZWQga3F1ZXVlIHdhdGNoIGZvciAlc1xuIiwgZGF0YS0+cGF0aCk7Ci0JICAgIGlmIChk
YXRhLT5pc2RpcikgewotICAgICAgICAgICAgICAgIGdfaGFzaF90YWJsZV9yZW1vdmUoZGlyX3Bh
dGhfaGFzaCwgZGF0YS0+cGF0aCk7Ci0JICAgIH0KLQkgICAgZWxzZSB7Ci0JCWdfaGFzaF90YWJs
ZV9yZW1vdmUoZmlsZV9wYXRoX2hhc2gsIGRhdGEtPnBhdGgpOwotCSAgICB9Ci0gICAgICAgICAg
ICBnX2hhc2hfdGFibGVfcmVtb3ZlKGZkX2hhc2gsIEdJTlRfVE9fUE9JTlRFUihkYXRhLT5mZCkp
OwotICAgICAgICAgICAgZ2FtX2txdWV1ZV9kYXRhX2ZyZWUoZGF0YSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgR19VTkxPQ0soa3F1ZXVlKTsKK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX3N1Yl9t
b25pdG9yX3Bvc3RfYWRkX3Vuc3VwcG9ydGVkX2Ztb25fY2IgKEdIYXNoVGFibGUgKnRhYmxlLAor
CQkJCQkJICAgICBTdWJNb25pdG9yICpzbW9uKQoreworICBnYW1fa3F1ZXVlX3BvbGxlcl9hZGRf
c3ViX21vbml0b3IoJnVuc3VwcG9ydGVkX2Ztb25fcG9sbGVyLCBzbW9uKTsKIH0KIAotc3RhdGlj
IEdhbWluRXZlbnRUeXBlIGtxdWV1ZV9ldmVudF90b19nYW1pbl9ldmVudCAoaW50IG1hc2spCitz
dGF0aWMgdm9pZAorZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9wb3N0X3JlbW92ZV91bnN1cHBvcnRl
ZF9mbW9uX2NiIChHSGFzaFRhYmxlICp0YWJsZSwKKwkJCQkJCQlTdWJNb25pdG9yICpzbW9uKQog
ewotCWlmICgobWFzayAmIFZOX05PVEVfQ0hBTkdFRCkgIT0gMCkKLQkJcmV0dXJuIEdBTUlOX0VW
RU5UX0NIQU5HRUQ7Ci0JZWxzZSBpZiAoKG1hc2sgJiBOT1RFX0RFTEVURSkgIT0gMCkKLQkJcmV0
dXJuIEdBTUlOX0VWRU5UX0RFTEVURUQ7Ci0JZWxzZSBpZiAoKG1hc2sgJiBOT1RFX1JFVk9LRSkg
IT0gMCkKLQkJcmV0dXJuIEdBTUlOX0VWRU5UX0VOREVYSVNUUzsKLQllbHNlIGlmICgobWFzayAm
IE5PVEVfUkVOQU1FKSAhPSAwKQotCQlyZXR1cm4gR0FNSU5fRVZFTlRfTU9WRUQ7Ci0JZWxzZQot
CQlyZXR1cm4gR0FNSU5fRVZFTlRfVU5LTk9XTjsKKyAgaWYgKGdfaGFzaF90YWJsZV9zaXplKHRh
YmxlKSA9PSAwKQorICAgIGdhbV9rcXVldWVfcG9sbGVyX3JlbW92ZV9zdWJfbW9uaXRvcigmdW5z
dXBwb3J0ZWRfZm1vbl9wb2xsZXIsIHNtb24pOwogfQogCi1zdGF0aWMgdm9pZCBnYW1fa3F1ZXVl
X2VtaXRfZXZlbnQgKEtRdWV1ZURhdGEgKmRhdGEsIHN0cnVjdCBrZXZlbnQgKmV2ZW50KQorc3Rh
dGljIHZvaWQKK2dhbV9rcXVldWVfc3ViX21vbml0b3Jfc2V0X21pc3NpbmcgKFN1Yk1vbml0b3Ig
KnNtb24pCiB7Ci0JR2FtaW5FdmVudFR5cGUgZ2V2ZW50OwotCWludCBpc2RpciA9IDA7Ci0JY2hh
ciAqZXZlbnRfcGF0aDsKKyAgTW9uaXRvciAqbW9uID0gTU9OSVRPUihzbW9uKTsKIAotCWlmICgh
ZGF0YXx8IWV2ZW50KQotCQlyZXR1cm47CisgIGlmIChtb24tPmZkID49IDApCisgICAgeworICAg
ICAgY2xvc2UobW9uLT5mZCk7CisgICAgICBtb24tPmZkID0gLTE7CiAKLQlnZXZlbnQgPSBrcXVl
dWVfZXZlbnRfdG9fZ2FtaW5fZXZlbnQgKGV2ZW50LT5mZmxhZ3MpOworICAgICAgb3Blbl9maWxl
cy0tOworICAgIH0KIAotCWlmIChnZXZlbnQgPT0gR0FNSU5fRVZFTlRfVU5LTk9XTikgewotCQly
ZXR1cm47Ci0JfQorICAvKgorICAgKiBBIHJlbW92ZWQgZGlyZWN0b3J5IHdpbGwgbm9ybWFsbHkg
bm90IGNvbnRhaW4gZmlsZXMsIGJ1dCB3ZSBtdXN0CisgICAqIG5vdCBhc3N1bWUgaXQgKHdlIG1p
Z2h0IHJlY2VpdmUgZXZlbnRzIG91dCBvZiBvcmRlciwgZXRjKS4gV2UKKyAgICogdGhlcmVmb3Jl
IGNoZWNrIGlmIGZpbGVzIGFyZSByZW1haW5pbmcsIGFuZCBpZiB5ZXMsIGNsZWFyIHRoZW0uCisg
ICAqLworICBpZiAoZ19oYXNoX3RhYmxlX3NpemUoc21vbi0+Zm1vbnMtPm1haW4pID4gMCkKKyAg
ICB7CisgICAgICBnYW1fa3F1ZXVlX3N1Yl9tb25pdG9yX2NsZWFyX2Ztb25zKHNtb24pOworICAg
ICAgZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9pbml0X2Ztb25zKHNtb24pOworICAgIH0KIAotCWlz
ZGlyID0gZ19maWxlX3Rlc3QoZGF0YS0+cGF0aCwgR19GSUxFX1RFU1RfSVNfRElSKTsKKyAgZ2Ft
X2txdWV1ZV9wb2xsZXJfcmVtb3ZlX3N1Yl9tb25pdG9yKCZ1bnN1cHBvcnRlZF9zbW9uX3BvbGxl
ciwgc21vbik7CisgIGdhbV9rcXVldWVfcG9sbGVyX2FkZF9zdWJfbW9uaXRvcigmbWlzc2luZ19z
bW9uX3BvbGxlciwgc21vbik7Cit9CiAKLQlpZiAoZ2V2ZW50ID09IEdBTUlOX0VWRU5UX0NIQU5H
RUQgJiYgZGF0YS0+aXNkaXIpIHsKLQkgICAgR1NMaXN0ICpkaXJsaXN0ID0gTlVMTCwgKmFkZGVk
ID0gTlVMTCwgKmRlbGV0ZWQgPSBOVUxMOwotCSAgICBHU0xpc3QgKmw7Ci0KLQkgICAgZGlybGlz
dCA9IGdhbV9rcXVldWVfbHNkaXIoZGF0YS0+cGF0aCk7Ci0JICAgIGdhbV9rcXVldWVfY21wbHN0
KGRhdGEtPmRpcmxpc3QsIGRpcmxpc3QsICZhZGRlZCwgJmRlbGV0ZWQpOwotCSAgICBpZiAoYWRk
ZWQgfHwgZGVsZXRlZCkgewotCSAgICAgICAgZm9yIChsID0gZGVsZXRlZDsgbDsgbCA9IGwtPm5l
eHQpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZGlybGlzdCA9IGdfc2xpc3RfcmVtb3Zl
KGRhdGEtPmRpcmxpc3QsIGwtPmRhdGEpOwotCQkgICAgZXZlbnRfcGF0aCA9IGdfYnVpbGRfZmls
ZW5hbWUoZGF0YS0+cGF0aCwgbC0+ZGF0YSwgTlVMTCk7Ci0JCSAgICBnX2ZyZWUobC0+ZGF0YSk7
Ci0JCSAgICBpc2RpciA9IGdfZmlsZV90ZXN0KGV2ZW50X3BhdGgsIEdfRklMRV9URVNUX0lTX0RJ
Uik7Ci0KLSAgICAgICAgICAgICAgICAgICAgR0FNX0RFQlVHKERFQlVHX0lORk8sICJrcXVldWUg
ZW1pdHRpbmcgZXZlbnQgJXMgZm9yICVzXG4iLCBnYW1fZXZlbnRfdG9fc3RyaW5nKEdBTUlOX0VW
RU5UX0RFTEVURUQpICwgZXZlbnRfcGF0aCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZ2FtX3Nl
cnZlcl9lbWl0X2V2ZW50IChldmVudF9wYXRoLCBpc2RpciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEdBTUlOX0VWRU5UX0RFTEVURUQsIGRhdGEtPnN1YnMsIDEpOwotCQkgICAgZ19mcmVlKGV2
ZW50X3BhdGgpOwotCQl9CitzdGF0aWMgdm9pZAorZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9zZXRf
dW5zdXBwb3J0ZWQgKFN1Yk1vbml0b3IgKnNtb24pCit7CisgIE1vbml0b3IgKm1vbiA9IE1PTklU
T1Ioc21vbik7CiAKLQkJZm9yIChsID0gYWRkZWQ7IGw7IGwgPSBsLT5uZXh0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGRpcmxpc3QgPSBnX3NsaXN0X3JlbW92ZShkaXJsaXN0LCBsLT5kYXRhKTsK
LQkJICAgIGRhdGEtPmRpcmxpc3QgPSBnX3NsaXN0X3ByZXBlbmQoZGF0YS0+ZGlybGlzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdfc3RyZHVwKGwtPmRhdGEpKTsKLQkJICAgIGV2ZW50X3Bh
dGggPSBnX2J1aWxkX2ZpbGVuYW1lKGRhdGEtPnBhdGgsIGwtPmRhdGEsIE5VTEwpOwotCQkgICAg
Z19mcmVlKGwtPmRhdGEpOwotCQkgICAgaXNkaXIgPSBnX2ZpbGVfdGVzdChldmVudF9wYXRoLCBH
X0ZJTEVfVEVTVF9JU19ESVIpOwotCi0JCSAgICBHQU1fREVCVUcoREVCVUdfSU5GTywgImtxdWV1
ZSBlbWl0dGluZyBldmVudCAlcyBmb3IgJXNcbiIsIGdhbV9ldmVudF90b19zdHJpbmcoR0FNSU5f
RVZFTlRfQ1JFQVRFRCkgLCBldmVudF9wYXRoKTsKLQotCQkgICAgZ2FtX3NlcnZlcl9lbWl0X2V2
ZW50IChldmVudF9wYXRoLCBpc2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdBTUlOX0VW
RU5UX0NSRUFURUQsIGRhdGEtPnN1YnMsIDEpOwotCQkgICAgZ19mcmVlKGV2ZW50X3BhdGgpOwot
CQl9CisgIGdhbV9rcXVldWVfbW9uaXRvcl9zZXRfdW5zdXBwb3J0ZWQobW9uKTsKKyAgZ2FtX2tx
dWV1ZV9wb2xsZXJfYWRkX3N1Yl9tb25pdG9yKCZ1bnN1cHBvcnRlZF9zbW9uX3BvbGxlciwgc21v
bik7Cit9CiAKLQkJaWYgKGFkZGVkKQotICAgICAgICAgICAgICAgICAgZ19zbGlzdF9mcmVlKGFk
ZGVkKTsKLQkJaWYgKGRlbGV0ZWQpCi0gICAgICAgICAgICAgICAgICBnX3NsaXN0X2ZyZWUoZGVs
ZXRlZCk7Ci0JICAgIH0KK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX3N1Yl9tb25pdG9yX2VuYWJs
ZV9ub3RpZmljYXRpb24gKFN1Yk1vbml0b3IgKnNtb24sCisJCQkJCSAgICBTdWJNb25pdG9yRmxh
Z3MgZmxhZ3MpCit7CisgIE1vbml0b3IgKm1vbiA9IE1PTklUT1Ioc21vbik7CisgIGdib29sZWFu
IGV4aXN0czsKKworICAvKiB3ZSBmaXJzdCBzZW5kIENSRUFURUQgb3IgRVhJU1RTL0RFTEVURUQr
RU5ERVhJU1RTIGV2ZW50cyAqLwogCi0JICAgIGlmIChkaXJsaXN0KSB7Ci0JICAgICAgICBnX3Ns
aXN0X2ZvcmVhY2goZGlybGlzdCwgKEdGdW5jKWdfZnJlZSwgTlVMTCk7Ci0JICAgICAgICBnX3Ns
aXN0X2ZyZWUoZGlybGlzdCk7CisgIGlmICgoZmxhZ3MgJiBTVUJfTU9OSVRPUl9XQVNfTUlTU0lO
RykgIT0gMCkKKyAgICBleGlzdHMgPSBUUlVFOworICBlbHNlCisgICAgeworICAgICAgc3RydWN0
IHN0YXQgc2I7CisKKyAgICAgIGV4aXN0cyA9IGxzdGF0KG1vbi0+cGF0aG5hbWUsICZzYikgPj0g
MDsKKyAgICAgIGZsYWdzIHw9IChleGlzdHMgJiYgKHNiLnN0X21vZGUgJiBTX0lGRElSKSAhPSAw
KSA/IE1PTklUT1JfSVNESVIgOiBNT05JVE9SX0lTTk9URElSOworICAgIH0KKworICBpZiAoZXhp
c3RzKQorICAgIHsKKyAgICAgIEdhbWluRXZlbnRUeXBlIGdldmVudDsKKworICAgICAgZ2V2ZW50
ID0gKGZsYWdzICYgU1VCX01PTklUT1JfV0FTX01JU1NJTkcpICE9IDAgPyBHQU1JTl9FVkVOVF9D
UkVBVEVEIDogR0FNSU5fRVZFTlRfRVhJU1RTOworICAgICAgZ2FtX2txdWV1ZV9zdWJfbW9uaXRv
cl9lbWl0X2V2ZW50KHNtb24sIGdldmVudCwgZmxhZ3MpOworCisgICAgICBpZiAoc21vbi0+aXNk
aXIgJiYgKGZsYWdzICYgTU9OSVRPUl9JU0RJUikgIT0gMCkKKwl7CisJICBHRGlyICpkaXI7CisJ
ICBHRXJyb3IgKmVyciA9IE5VTEw7CisJICAKKwkgIGRpciA9IGdfZGlyX29wZW4obW9uLT5wYXRo
bmFtZSwgMCwgJmVycik7CisJICBpZiAoZGlyKQorCSAgICB7CisJICAgICAgY29uc3QgY2hhciAq
ZmlsZW5hbWU7CisJICAgICAgCisJICAgICAgd2hpbGUgKChmaWxlbmFtZSA9IGdfZGlyX3JlYWRf
bmFtZShkaXIpKSkKKwkJeworCQkgIEZpbGVNb25pdG9yICpmbW9uOworCQkgIEZpbGVNb25pdG9y
RmxhZ3MgZm1vbl9mbGFnczsKKwkJICAKKwkJICBmbW9uID0gZ2FtX2txdWV1ZV9maWxlX21vbml0
b3JfbmV3KHNtb24sIGZpbGVuYW1lLCAmZm1vbl9mbGFncyk7CisJCSAgZ2FtX2txdWV1ZV9maWxl
X21vbml0b3JfZW1pdF9ldmVudChmbW9uLCBnZXZlbnQsIGZtb25fZmxhZ3MpOworCQl9CisJICAg
ICAgCisJICAgICAgZ19kaXJfY2xvc2UoZGlyKTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJ
ICAgICAgR0FNX0RFQlVHKERFQlVHX0lORk8sICJ1bmFibGUgdG8gb3BlbiBkaXJlY3RvcnkgJXM6
ICVzXG4iLCBtb24tPnBhdGhuYW1lLCBlcnItPm1lc3NhZ2UpOworCSAgICAgIGdfZXJyb3JfZnJl
ZShlcnIpOwogCSAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0JfQotCWVsc2UgewotCSAgICBl
dmVudF9wYXRoID0gZ19zdHJkdXAgKGRhdGEtPnBhdGgpOwogCX0KIAotICAgICAgICBpc2RpciA9
IGdfZmlsZV90ZXN0KGV2ZW50X3BhdGgsIEdfRklMRV9URVNUX0lTX0RJUik7CisgICAgICBpZiAo
KGZsYWdzICYgU1VCX01PTklUT1JfV0FTX01JU1NJTkcpID09IDApCisJZ2FtX2txdWV1ZV9zdWJf
bW9uaXRvcl9lbWl0X2V2ZW50KHNtb24sIEdBTUlOX0VWRU5UX0VOREVYSVNUUywgZmxhZ3MpOwor
ICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGdhbV9rcXVldWVfc3ViX21vbml0b3JfZW1pdF9l
dmVudChzbW9uLCBHQU1JTl9FVkVOVF9ERUxFVEVELCBmbGFncyk7CisgICAgICBnYW1fa3F1ZXVl
X3N1Yl9tb25pdG9yX2VtaXRfZXZlbnQoc21vbiwgR0FNSU5fRVZFTlRfRU5ERVhJU1RTLCBmbGFn
cyk7CiAKLQlHQU1fREVCVUcoREVCVUdfSU5GTywgImtxdWV1ZSBlbWl0dGluZyBldmVudCAlcyBm
b3IgJXNcbiIsIGdhbV9ldmVudF90b19zdHJpbmcoZ2V2ZW50KSAsIGV2ZW50X3BhdGgpOworICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgLyogdGhlbiB3ZSBlbmFibGUga3F1ZXVlIG5vdGlm
aWNhdGlvbiwgZmFsbGluZyBiYWNrIHRvIHBvbGwgaWYgbmVjZXNzYXJ5ICovCiAKLQlnYW1fc2Vy
dmVyX2VtaXRfZXZlbnQgKGV2ZW50X3BhdGgsIGlzZGlyLCBnZXZlbnQsIGRhdGEtPnN1YnMsIDEp
OworICBpZiAoISBnYW1fa3F1ZXVlX21vbml0b3JfZW5hYmxlX2txdWV1ZShtb24pKQorICAgIGdh
bV9rcXVldWVfc3ViX21vbml0b3Jfc2V0X3Vuc3VwcG9ydGVkKHNtb24pOworfQogCi0JZ19mcmVl
IChldmVudF9wYXRoKTsKK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX3N1Yl9tb25pdG9yX2hhbmRs
ZV9kaXJlY3RvcnlfY2hhbmdlX3JlbW92YWxfY2IgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJ
CQkJCSAgIEZpbGVNb25pdG9yICpmbW9uLAorCQkJCQkJCSAgIEdIYXNoVGFibGUgKmZpbGVuYW1l
cykKK3sKKyAgaWYgKCEgZ19oYXNoX3RhYmxlX2xvb2t1cChmaWxlbmFtZXMsIGZpbGVuYW1lKSkK
KyAgICBnYW1fa3F1ZXVlX2ZpbGVfbW9uaXRvcl9lbWl0X2V2ZW50KGZtb24sIEdBTUlOX0VWRU5U
X0RFTEVURUQsIE1PTklUT1JfSVNOT1RESVIpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdhbV9r
cXVldWVfZXhpc3RfY2hlY2sgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3N0YXRpYyB2b2lkCitnYW1f
a3F1ZXVlX3N1Yl9tb25pdG9yX2hhbmRsZV9kaXJlY3RvcnlfY2hhbmdlIChTdWJNb25pdG9yICpz
bW9uLAorCQkJCQkJZ2Jvb2xlYW4gaXNkaXIpCiB7Ci0gICAgR1NMaXN0ICpsLCAqdG1wbHN0Owot
ICAgIEtRdWV1ZURhdGEgKmRhdGE7CisgIE1vbml0b3IgKm1vbiA9IE1PTklUT1Ioc21vbik7Cisg
IEdIYXNoVGFibGUgKmZpbGVuYW1lczsKKworICBmaWxlbmFtZXMgPSBnX2hhc2hfdGFibGVfbmV3
X2Z1bGwoZ19zdHJfaGFzaCwgZ19zdHJfZXF1YWwsIGdfZnJlZSwgTlVMTCk7CisKKyAgaWYgKGlz
ZGlyKQkJCS8qIGRvIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MgKi8KKyAgICB7CisgICAgICBH
RGlyICpkaXI7CisgICAgICBHRXJyb3IgKmVyciA9IE5VTEw7CisKKyAgICAgIGRpciA9IGdfZGly
X29wZW4obW9uLT5wYXRobmFtZSwgMCwgJmVycik7CisgICAgICBpZiAoZGlyKQorCXsKKwkgIGNv
bnN0IGNoYXIgKmZpbGVuYW1lOworCSAgCisJICB3aGlsZSAoKGZpbGVuYW1lID0gZ19kaXJfcmVh
ZF9uYW1lKGRpcikpKQorCSAgICB7CisJICAgICAgZ19oYXNoX3RhYmxlX2luc2VydChmaWxlbmFt
ZXMsIGdfc3RyZHVwKGZpbGVuYW1lKSwgR0lOVF9UT19QT0lOVEVSKFRSVUUpKTsKKworCSAgICAg
IC8qIGhhbmRsZSBmaWxlIGNyZWF0aW9uICovCisJICAgICAgaWYgKCEgZ19oYXNoX3RhYmxlX2xv
b2t1cChzbW9uLT5mbW9ucy0+bWFpbiwgZmlsZW5hbWUpKQorCQl7CisJCSAgRmlsZU1vbml0b3Ig
KmZtb247CisJCSAgRmlsZU1vbml0b3JGbGFncyBmbW9uX2ZsYWdzOworCQkgIAorCQkgIGZtb24g
PSBnYW1fa3F1ZXVlX2ZpbGVfbW9uaXRvcl9uZXcoc21vbiwgZmlsZW5hbWUsICZmbW9uX2ZsYWdz
KTsKKwkJICBnYW1fa3F1ZXVlX2ZpbGVfbW9uaXRvcl9lbWl0X2V2ZW50KGZtb24sIEdBTUlOX0VW
RU5UX0NSRUFURUQsIGZtb25fZmxhZ3MpOworCQl9CisJICAgIH0KKwkgIAorCSAgZ19kaXJfY2xv
c2UoZGlyKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgR0FNX0RFQlVHKERFQlVHX0lORk8sICJ1
bmFibGUgdG8gb3BlbiBkaXJlY3RvcnkgJXM6ICVzXG4iLCBtb24tPnBhdGhuYW1lLCBlcnItPm1l
c3NhZ2UpOworCSAgZ19lcnJvcl9mcmVlKGVycik7CisJfQorICAgIH0KIAotICAgIHRtcGxzdCA9
IGdfc2xpc3RfY29weShleGlzdF9saXN0KTsKKyAgLyoKKyAgICogSGFuZGxlIGRlbGV0ZWQgZmls
ZXMgKHRoZXkgYXJlIGFsc28gaGFuZGxlZCBhdCB0aGUgRmlsZU1vbml0b3IKKyAgICogbGV2ZWws
IGJ1dCB3ZSBtdXN0IHVzZSB3aGljaGV2ZXIgZXZlbnQgY29tZXMgZmlyc3QpLgorICAgKi8KKyAg
Z2FtX2txdWV1ZV9oYXNoX3RhYmxlX2ZvcmVhY2goc21vbi0+Zm1vbnMsIChHSEZ1bmMpIGdhbV9r
cXVldWVfc3ViX21vbml0b3JfaGFuZGxlX2RpcmVjdG9yeV9jaGFuZ2VfcmVtb3ZhbF9jYiwgZmls
ZW5hbWVzKTsKKyAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3koZmlsZW5hbWVzKTsKK30KIAotICAgIGZv
ciAobCA9IHRtcGxzdDsgbDsgbCA9IGwtPm5leHQpIHsKLSAgICAgICAgZGF0YSA9IGwtPmRhdGE7
CitzdGF0aWMgdm9pZAorZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9lbWl0X2V2ZW50IChTdWJNb25p
dG9yICpzbW9uLAorCQkJCSAgIEdhbWluRXZlbnRUeXBlIGV2ZW50LAorCQkJCSAgIFN1Yk1vbml0
b3JGbGFncyBmbGFncykKK3sKKyAgTW9uaXRvciAqbW9uID0gTU9OSVRPUihzbW9uKTsKKyAgZ2Jv
b2xlYW4gaXNkaXI7CiAKLQlpZiAoZ19maWxlX3Rlc3QoZGF0YS0+cGF0aCwgR19GSUxFX1RFU1Rf
RVhJU1RTKSkgewotICAgICAgICAgICAgLyogVGhlIHN1YnMgbGlzdCBpcyBndWFyYW50ZWVkIHRv
IGhhdmUgb25seSBvbmUgZW50cnkuICovCi0gICAgICAgICAgICBHYW1TdWJzY3JpcHRpb24gKnN1
YiA9IGRhdGEtPnN1YnMtPmRhdGE7CisgIGlzZGlyID0gZ2FtX2txdWV1ZV9pc2Rpcihtb24tPnBh
dGhuYW1lLCBmbGFncyk7CiAKLSAgICAgICAgICAgIGV4aXN0X2xpc3QgPSBnX3NsaXN0X3JlbW92
ZShleGlzdF9saXN0LCBkYXRhKTsKLQkgICAgZ2FtX2txdWV1ZV9hZGRfcm1faGFuZGxlcihkYXRh
LT5wYXRoLCBzdWIsIFRSVUUsIFRSVUUpOwotCSAgICBnYW1fa3F1ZXVlX2RhdGFfZnJlZShkYXRh
KTsKKyAgc3dpdGNoIChldmVudCkKKyAgICB7CisgICAgY2FzZSBHQU1JTl9FVkVOVF9DSEFOR0VE
OgorICAgICAgaWYgKHNtb24tPmlzZGlyKQorCXsKKwkgIGdhbV9rcXVldWVfc3ViX21vbml0b3Jf
aGFuZGxlX2RpcmVjdG9yeV9jaGFuZ2Uoc21vbiwgaXNkaXIpOworCSAgcmV0dXJuOwogCX0KKyAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBHQU1JTl9FVkVOVF9ERUxFVEVEOgorICAgIGNhc2UgR0FN
SU5fRVZFTlRfTU9WRUQ6CisgICAgICBnYW1fa3F1ZXVlX3N1Yl9tb25pdG9yX3NldF9taXNzaW5n
KHNtb24pOworICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKHRtcGxzdCkKLSAgICAgICAg
Z19zbGlzdF9mcmVlKHRtcGxzdCk7CisgIGdhbV9zZXJ2ZXJfZW1pdF9ldmVudChtb24tPnBhdGhu
YW1lLCBpc2RpciwgZXZlbnQsIHNtb24tPnN1YnMsIDEpOworfQogCi0gICAgcmV0dXJuIFRSVUU7
CitzdGF0aWMgdm9pZAorZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9oYW5kbGVfa2V2ZW50IChNb25p
dG9yICptb24sIHN0cnVjdCBrZXZlbnQgKmV2ZW50KQoreworICBTdWJNb25pdG9yICpzbW9uID0g
U1VCX01PTklUT1IobW9uKTsKKworICBpZiAoKGV2ZW50LT5mbGFncyAmIEVWX0VSUk9SKSAhPSAw
KQorICAgIHsKKyAgICAgIC8qIGtxdWV1ZSBmYWlsZWQsIGZhbGxiYWNrIHRvIHBvbGwgKi8KKyAg
ICAgIEdBTV9ERUJVRyhERUJVR19JTkZPLCAia3F1ZXVlIGZhaWxlZCBmb3IgJXMsIGZhbGxpbmcg
YmFjayB0byBwb2xsXG4iLCBtb24tPnBhdGhuYW1lKTsKKyAgICAgIGdhbV9rcXVldWVfc3ViX21v
bml0b3Jfc2V0X3Vuc3VwcG9ydGVkKHNtb24pOworICAgICAgcmV0dXJuOworICAgIH0KKworICAv
KgorICAgKiBrZXZlbnQgYWdncmVnYXRlcyBldmVudHMsIHNvIHdlIG11c3QgaGFuZGxlIGEgZmZs
YWdzIHdpdGgKKyAgICogbXVsdGlwbGUgZXZlbnQgYml0cyBzZXQuCisgICAqLworICBpZiAoKGV2
ZW50LT5mZmxhZ3MgJiBWTl9OT1RFX0NIQU5HRUQpICE9IDApCisgICAgZ2FtX2txdWV1ZV9zdWJf
bW9uaXRvcl9lbWl0X2V2ZW50KHNtb24sIEdBTUlOX0VWRU5UX0NIQU5HRUQsIDApOworCisgIC8q
IGVtaXR0aW5nIHRoZSBmb2xsb3dpbmcgZXZlbnRzIHdpbGwgYWRkIHRoZSBzbW9uIHRvIHRoZSBt
aXNzaW5nIHBvbGxlciAqLworICBpZiAoKGV2ZW50LT5mZmxhZ3MgJiBWTl9OT1RFX0RFTEVURUQp
ICE9IDApCisgICAgZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9lbWl0X2V2ZW50KHNtb24sIEdBTUlO
X0VWRU5UX0RFTEVURUQsIE1PTklUT1JfSVNOT1RESVIpOworICBlbHNlIGlmICgoZXZlbnQtPmZm
bGFncyAmIE5PVEVfUkVOQU1FKSAhPSAwKQorICAgIGdhbV9rcXVldWVfc3ViX21vbml0b3JfZW1p
dF9ldmVudChzbW9uLCBHQU1JTl9FVkVOVF9NT1ZFRCwgTU9OSVRPUl9JU05PVERJUik7CiB9CiAK
LXN0YXRpYyBnYm9vbGVhbgotZ2FtX2txdWV1ZV9ldmVudF9oYW5kbGVyIChncG9pbnRlciB1c2Vy
X2RhdGEpCisvKioqIEZpbGVNb25pdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVl
X2ZpbGVfbW9uaXRvcl9zZXRfdW5zdXBwb3J0ZWQgKEZpbGVNb25pdG9yICpmbW9uKQogewotICAg
IEtRdWV1ZURhdGEgKmRhdGE7Ci0gICAgc3RydWN0IGtldmVudCBldlsxXTsKLSAgICBzdHJ1Y3Qg
dGltZXNwZWMgdGltZW91dCA9IHsgMCwgMCB9OwotICAgIGludCBmZCwgaSwgbmV2ZW50czsKLQot
ICAgIEdfTE9DSyhrcXVldWUpOwotCi0gICAgR0FNX0RFQlVHKERFQlVHX0lORk8sICJnYW1fa3F1
ZXVlX2V2ZW50X2hhbmRsZXIoKVxuIik7Ci0KLSAgICBuZXZlbnRzID0ga2V2ZW50KGtxLCBOVUxM
LCAwLCBldiwgMSwgJnRpbWVvdXQpOwotICAgIGlmIChuZXZlbnRzID09IC0xKQotICAgICAgICBy
ZXR1cm4gRkFMU0U7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5ldmVudHM7IGkrKykgewotICAgICAg
ICBmZCA9IGV2W2ldLmlkZW50OwotCi0JZGF0YSA9IGdfaGFzaF90YWJsZV9sb29rdXAgKGZkX2hh
c2gsIEdJTlRfVE9fUE9JTlRFUihmZCkpOwotCWlmICghZGF0YSkgewotCSAgICBHQU1fREVCVUco
REVCVUdfSU5GTywgImtxdWV1ZSBjYW4ndCBmaW5kIGZkICVkXG4iLCBmZCk7Ci0JICAgIEdBTV9E
RUJVRyhERUJVR19JTkZPLCAid2VpcmQgdGhpbmdzIGhhdmUgaGFwcGVuZWQgdG8ga3F1ZXVlLlxu
Iik7Ci0JfSBlbHNlIHsKLQkgICAgZ2FtX2txdWV1ZV9lbWl0X2V2ZW50IChkYXRhLCAmZXZbaV0p
OwotCX0KKyAgTW9uaXRvciAqbW9uID0gTU9OSVRPUihmbW9uKTsKKworICBnYW1fa3F1ZXVlX21v
bml0b3Jfc2V0X3Vuc3VwcG9ydGVkKG1vbik7CisgIGdhbV9rcXVldWVfaGFzaF90YWJsZV9hZGQo
Zm1vbi0+c21vbi0+dW5zdXBwb3J0ZWRfZm1vbnMsIGZtb24pOworfQorCitzdGF0aWMgRmlsZU1v
bml0b3IgKgorZ2FtX2txdWV1ZV9maWxlX21vbml0b3JfbmV3IChTdWJNb25pdG9yICpzbW9uLAor
CQkJICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwKKwkJCSAgICAgRmlsZU1vbml0b3JGbGFncyAq
ZmxhZ3MpCit7CisgIEZpbGVNb25pdG9yICpmbW9uOworICBNb25pdG9yICptb247CiAKKyAgZm1v
biA9IGdfbmV3MChGaWxlTW9uaXRvciwgMSk7CisKKyAgbW9uID0gTU9OSVRPUihmbW9uKTsKKyAg
bW9uLT5oYW5kbGVfa2V2ZW50ID0gZ2FtX2txdWV1ZV9maWxlX21vbml0b3JfaGFuZGxlX2tldmVu
dDsKKyAgbW9uLT5wYXRobmFtZSA9IGdfYnVpbGRfZmlsZW5hbWUoTU9OSVRPUihzbW9uKS0+cGF0
aG5hbWUsIGZpbGVuYW1lLCBOVUxMKTsKKyAgbW9uLT5mZCA9IC0xOworCisgIGZtb24tPnNtb24g
PSBzbW9uOworICBmbW9uLT5maWxlbmFtZSA9IHN0cnJjaHIobW9uLT5wYXRobmFtZSwgR19ESVJf
U0VQQVJBVE9SKTsKKyAgZm1vbi0+ZmlsZW5hbWUgPSBmbW9uLT5maWxlbmFtZSA/IGZtb24tPmZp
bGVuYW1lICsgMSA6IG1vbi0+cGF0aG5hbWU7CisKKyAgZ2FtX2txdWV1ZV9oYXNoX3RhYmxlX2Fk
ZChmbW9uLT5zbW9uLT5mbW9ucywgZm1vbik7CisKKyAgaWYgKGdhbV9rcXVldWVfbW9uaXRvcl9l
bmFibGVfa3F1ZXVlKG1vbikpCisgICAgKmZsYWdzID0gMDsKKyAgZWxzZQorICAgIHsKKyAgICAg
IGdhbV9rcXVldWVfZmlsZV9tb25pdG9yX3NldF91bnN1cHBvcnRlZChmbW9uKTsKKyAgICAgICpm
bGFncyA9IChtb24tPnNiLm1vZGUgJiBTX0lGRElSKSAhPSAwID8gTU9OSVRPUl9JU0RJUiA6IE1P
TklUT1JfSVNOT1RESVI7CiAgICAgfQogCi0gICAgR19VTkxPQ0soa3F1ZXVlKTsKKyAgcmV0dXJu
IGZtb247Cit9CiAKLSAgICByZXR1cm4gVFJVRTsKK3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX2Zp
bGVfbW9uaXRvcl9mcmVlIChGaWxlTW9uaXRvciAqZm1vbikKK3sKKyAgZ2FtX2txdWV1ZV9tb25p
dG9yX2ZyZWUoTU9OSVRPUihmbW9uKSk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbgotZ2FtX2txdWV1
ZV9jb25zdW1lX3N1YnNjcmlwdGlvbnNfcmVhbChncG9pbnRlciBkYXRhKQorc3RhdGljIHZvaWQK
K2dhbV9rcXVldWVfZmlsZV9tb25pdG9yX2VtaXRfZXZlbnQgKEZpbGVNb25pdG9yICpmbW9uLAor
CQkJCSAgICBHYW1pbkV2ZW50VHlwZSBldmVudCwKKwkJCQkgICAgRmlsZU1vbml0b3JGbGFncyBm
bGFncykKIHsKLQlHTGlzdCAqc3VicywgKmw7CisgIE1vbml0b3IgKm1vbiA9IE1PTklUT1IoZm1v
bik7CisgIHN0cnVjdCBzdGF0IHNiOworICBnYm9vbGVhbiBpc2RpcjsKKyAgZ2Jvb2xlYW4gc3Rh
dF9kb25lOworICBnYm9vbGVhbiBzdGF0X3N1Y2NlZWRlZDsKKyAgCisgIGlmICgoZmxhZ3MgJiBN
T05JVE9SX0lTRElSKSA9PSAwICYmIChmbGFncyAmIE1PTklUT1JfSVNOT1RESVIpID09IDApCisg
ICAgeworICAgICAgc3RhdF9kb25lID0gVFJVRTsKKyAgICAgIHN0YXRfc3VjY2VlZGVkID0gbHN0
YXQobW9uLT5wYXRobmFtZSwgJnNiKSA+PSAwOworICAgICAgaXNkaXIgPSBzdGF0X3N1Y2NlZWRl
ZCAmJiAoc2Iuc3RfbW9kZSAmIFNfSUZESVIpICE9IDA7CisgICAgfQorICBlbHNlCisgICAgewor
ICAgICAgc3RhdF9kb25lID0gRkFMU0U7CisgICAgICBpc2RpciA9IChmbGFncyAmIE1PTklUT1Jf
SVNESVIpICE9IDA7CisgICAgfQorICAKKyAgZ2FtX3NlcnZlcl9lbWl0X2V2ZW50KG1vbi0+cGF0
aG5hbWUsIGlzZGlyLCBldmVudCwgZm1vbi0+c21vbi0+c3VicywgMSk7CiAKLQlHX0xPQ0sobmV3
X3N1YnMpOwotCWlmIChuZXdfc3VicykgewotCQlzdWJzID0gbmV3X3N1YnM7Ci0JCW5ld19zdWJz
ID0gTlVMTDsKLQkJR19VTkxPQ0sobmV3X3N1YnMpOwotCi0JCWZvciAobCA9IHN1YnM7IGw7IGwg
PSBsLT5uZXh0KSB7Ci0JCQlHYW1TdWJzY3JpcHRpb24gKnN1YiA9IGwtPmRhdGE7Ci0JCQlHQU1f
REVCVUcoREVCVUdfSU5GTywgImNhbGxlZCBnYW1fa3F1ZXVlX2FkZF9oYW5kbGVyKClcbiIpOwot
CQkJZ2FtX2txdWV1ZV9hZGRfcm1faGFuZGxlciAoZ2FtX3N1YnNjcmlwdGlvbl9nZXRfcGF0aCAo
c3ViKSwgc3ViLCBUUlVFLCBGQUxTRSk7Ci0JCX0KKyAgc3dpdGNoIChldmVudCkKKyAgICB7Cisg
ICAgY2FzZSBHQU1JTl9FVkVOVF9ERUxFVEVEOgorICAgIGNhc2UgR0FNSU5fRVZFTlRfTU9WRUQ6
CisgICAgICBpZiAobW9uLT5mZCA8IDApCisJZ2FtX2txdWV1ZV9oYXNoX3RhYmxlX3JlbW92ZShm
bW9uLT5zbW9uLT51bnN1cHBvcnRlZF9mbW9ucywgZm1vbik7CisKKyAgICAgIGlmICgoZmxhZ3Mg
JiBGSUxFX01PTklUT1JfUE9TU0lCTFlfUkVDUkVBVEVEKSAhPSAwKQorCXsKKwkgIGlmICghIHN0
YXRfZG9uZSkKKwkgICAgc3RhdF9zdWNjZWVkZWQgPSBsc3RhdChtb24tPnBhdGhuYW1lLCAmc2Ip
ID49IDA7CisKKwkgIGlmIChzdGF0X3N1Y2NlZWRlZCkKKwkgICAgeworCSAgICAgIEZpbGVNb25p
dG9yICpuZXdfZm1vbjsKKwkgICAgICBGaWxlTW9uaXRvckZsYWdzIG5ld19mbW9uX2ZsYWdzOwor
CSAgICAgIAorCSAgICAgIC8qCisJICAgICAgICogVGhlIGZpbGUgZXhpc3RzIGFnYWluLiBJdCBt
ZWFucyB0aGF0IGtxdWV1ZSBoYXMKKwkgICAgICAgKiBhZ2dyZWdhdGVkIGEgcmVtb3ZhbCtjcmVh
dGlvbiBpbnRvIGEgc2luZ2xlIGV2ZW50LiBXZQorCSAgICAgICAqIG11c3QgdGhlcmVmb3JlIGNy
ZWF0ZSBhIG5ldyBmbW9uIGFuZCBlbWl0IGEKKwkgICAgICAgKiBHQU1JTl9FVkVOVF9DUkVBVEVE
IGV2ZW50LCBiZWNhdXNlCisJICAgICAgICogZ2FtX2txdWV1ZV9zdWJfbW9uaXRvcl9oYW5kbGVf
ZGlyZWN0b3J5X2NoYW5nZSgpIGRpZAorCSAgICAgICAqIG5vdCBkZXRlY3QgdGhlIHJlbW92YWwr
Y3JlYXRpb24uCisJICAgICAgICovCiAKLQl9IGVsc2UgewotCQlHX1VOTE9DSyhuZXdfc3Vicyk7
Ci0JfQorCSAgICAgIG5ld19mbW9uID0gZ2FtX2txdWV1ZV9maWxlX21vbml0b3JfbmV3KGZtb24t
PnNtb24sIGZtb24tPmZpbGVuYW1lLCAmbmV3X2Ztb25fZmxhZ3MpOworCSAgICAgIGdhbV9rcXVl
dWVfZmlsZV9tb25pdG9yX2VtaXRfZXZlbnQobmV3X2Ztb24sIEdBTUlOX0VWRU5UX0NSRUFURUQs
IG5ld19mbW9uX2ZsYWdzKTsKIAotCUdfTE9DSyhyZW1vdmVkX3N1YnMpOwotCWlmIChyZW1vdmVk
X3N1YnMpIHsKLQkJc3VicyA9IHJlbW92ZWRfc3ViczsKLQkJcmVtb3ZlZF9zdWJzID0gTlVMTDsK
LQkJR19VTkxPQ0socmVtb3ZlZF9zdWJzKTsKLQotCQlmb3IgKGwgPSBzdWJzOyBsOyBsID0gbC0+
bmV4dCkgewotCQkJR2FtU3Vic2NyaXB0aW9uICpzdWIgPSBsLT5kYXRhOwotCQkJR0FNX0RFQlVH
KERFQlVHX0lORk8sICJjYWxsZWQgZ2FtX2txdWV1ZV9ybV9oYW5kbGVyKClcbiIpOwotCQkJZ2Ft
X2txdWV1ZV9hZGRfcm1faGFuZGxlciAoZ2FtX3N1YnNjcmlwdGlvbl9nZXRfcGF0aCAoc3ViKSwg
c3ViLCBGQUxTRSwgRkFMU0UpOwotCQl9Ci0JfSBlbHNlIHsKLQkJR19VTkxPQ0socmVtb3ZlZF9z
dWJzKTsKKwkgICAgICBicmVhazsJCS8qIGRvIG5vdCByZW1vdmUgdGhlIGZtb24gd2UndmUganVz
dCBjcmVhdGVkICovCisJICAgIH0KIAl9CisJCisgICAgICBnYW1fa3F1ZXVlX2hhc2hfdGFibGVf
cmVtb3ZlKGZtb24tPnNtb24tPmZtb25zLCBmbW9uKTsKKyAgICAgIGJyZWFrOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQKK2dhbV9rcXVldWVfZmlsZV9tb25pdG9yX2hhbmRsZV9rZXZlbnQgKE1v
bml0b3IgKm1vbiwgc3RydWN0IGtldmVudCAqZXZlbnQpCit7CisgIEZpbGVNb25pdG9yICpmbW9u
ID0gRklMRV9NT05JVE9SKG1vbik7CisKKyAgaWYgKChldmVudC0+ZmxhZ3MgJiBFVl9FUlJPUikg
IT0gMCkKKyAgICB7CisgICAgICAvKiBrcXVldWUgZmFpbGVkLCBmYWxsYmFjayB0byBwb2xsICov
CisgICAgICBHQU1fREVCVUcoREVCVUdfSU5GTywgImtxdWV1ZSBmYWlsZWQgZm9yICVzLCBmYWxs
aW5nIGJhY2sgdG8gcG9sbFxuIiwgbW9uLT5wYXRobmFtZSk7CisgICAgICBnYW1fa3F1ZXVlX2Zp
bGVfbW9uaXRvcl9zZXRfdW5zdXBwb3J0ZWQoZm1vbik7CisgICAgICByZXR1cm47CisgICAgfQor
CisgIC8qCisgICAqIGtldmVudCBhZ2dyZWdhdGVzIGV2ZW50cywgc28gd2UgbXVzdCBoYW5kbGUg
YSBmZmxhZ3Mgd2l0aAorICAgKiBtdWx0aXBsZSBldmVudCBiaXRzIHNldC4KKyAgICovCisKKyAg
aWYgKChldmVudC0+ZmZsYWdzICYgVk5fTk9URV9DSEFOR0VEKSAhPSAwKQorICAgIGdhbV9rcXVl
dWVfZmlsZV9tb25pdG9yX2VtaXRfZXZlbnQoZm1vbiwgR0FNSU5fRVZFTlRfQ0hBTkdFRCwgMCk7
CisKKyAgLyogZW1pdHRpbmcgdGhlIGZvbGxvd2luZyBldmVudHMgd2lsbCBmcmVlIHRoZSBmbW9u
ICovCisgIGlmICgoZXZlbnQtPmZmbGFncyAmIFZOX05PVEVfREVMRVRFRCkgIT0gMCkKKyAgICBn
YW1fa3F1ZXVlX2ZpbGVfbW9uaXRvcl9lbWl0X2V2ZW50KGZtb24sIEdBTUlOX0VWRU5UX0RFTEVU
RUQsIE1PTklUT1JfSVNOT1RESVIgfCBGSUxFX01PTklUT1JfUE9TU0lCTFlfUkVDUkVBVEVEKTsK
KyAgZWxzZSBpZiAoKGV2ZW50LT5mZmxhZ3MgJiBOT1RFX1JFTkFNRSkgIT0gMCkKKyAgICBnYW1f
a3F1ZXVlX2ZpbGVfbW9uaXRvcl9lbWl0X2V2ZW50KGZtb24sIEdBTUlOX0VWRU5UX01PVkVELCBN
T05JVE9SX0lTTk9URElSIHwgRklMRV9NT05JVE9SX1BPU1NJQkxZX1JFQ1JFQVRFRCk7Cit9CisK
Ky8qKioga2V2ZW50L3BvbGwgY2FsbGJhY2tzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGdib29sZWFuCitnYW1fa3F1ZXVlX2tl
dmVudF9jYiAoR0lPQ2hhbm5lbCAqc291cmNlLAorCQkgICAgICBHSU9Db25kaXRpb24gY29uZGl0
aW9uLAorCQkgICAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGludCBuZXZlbnRzOworICBz
dHJ1Y3Qga2V2ZW50IGV2WzFdOworICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dCA9IHsgMCwgMCB9
OworICBpbnQgaTsKKworICBuZXZlbnRzID0ga2V2ZW50KGtxLCBOVUxMLCAwLCBldiwgR19OX0VM
RU1FTlRTKGV2KSwgJnRpbWVvdXQpOworICBpZiAobmV2ZW50cyA8IDApCisgICAgeworICAgICAg
R0FNX0RFQlVHKERFQlVHX0lORk8sICJrZXZlbnQoKSBmYWlsdXJlOiAlc1xuIiwgZ19zdHJlcnJv
cihlcnJubykpOworICAgICAgcmV0dXJuIFRSVUU7CQkvKiBrZWVwIHNvdXJjZSAqLworICAgIH0K
KworICBmb3IgKGkgPSAwOyBpIDwgbmV2ZW50czsgaSsrKQorICAgIE1PTklUT1IoZXZbaV0udWRh
dGEpLT5oYW5kbGVfa2V2ZW50KGV2W2ldLnVkYXRhLCAmZXZbaV0pOworICAKKyAgcmV0dXJuIFRS
VUU7CQkJLyoga2VlcCBzb3VyY2UgKi8KK30KIAotCUdBTV9ERUJVRyhERUJVR19JTkZPLCAiZ2Ft
X2txdWV1ZV9jb25zdW1lX3N1YnNjcmlwdGlvbnMoKVxuIik7CitzdGF0aWMgdm9pZAorZ2FtX2tx
dWV1ZV9taXNzaW5nX3Ntb25fcG9sbCAoU3ViTW9uaXRvciAqc21vbikKK3sKKyAgc3RydWN0IHN0
YXQgc2I7CiAKLQloYXZlX2NvbnN1bWVfaWRsZXIgPSBGQUxTRTsKLQlyZXR1cm4gRkFMU0U7Cisg
IGlmIChsc3RhdChNT05JVE9SKHNtb24pLT5wYXRobmFtZSwgJnNiKSA+PSAwKQorICAgIHsKKyAg
ICAgIGdhbV9rcXVldWVfcG9sbGVyX3JlbW92ZV9zdWJfbW9uaXRvcigmbWlzc2luZ19zbW9uX3Bv
bGxlciwgc21vbik7CisgICAgICBnYW1fa3F1ZXVlX3N1Yl9tb25pdG9yX2VuYWJsZV9ub3RpZmlj
YXRpb24oc21vbiwgU1VCX01PTklUT1JfV0FTX01JU1NJTkcgfCAoKHNiLnN0X21vZGUgJiBTX0lG
RElSKSAhPSAwID8gTU9OSVRPUl9JU0RJUiA6IE1PTklUT1JfSVNOT1RESVIpKTsKKyAgICB9CiB9
CiAKIHN0YXRpYyB2b2lkCi1nYW1fa3F1ZXVlX2NvbnN1bWVfc3Vic2NyaXB0aW9ucyh2b2lkKQor
Z2FtX2txdWV1ZV91bnN1cHBvcnRlZF9zbW9uX3BvbGwgKFN1Yk1vbml0b3IgKnNtb24pCiB7Ci0J
R1NvdXJjZSAqc291cmNlOworICBNb25pdG9yICptb24gPSBNT05JVE9SKHNtb24pOworICBNaW5p
U3RhdCBzYjsKKyAgR2FtaW5FdmVudFR5cGUgZXZlbnQ7CisKKyAgaWYgKCsrbW9uLT5wb2xsX2Nv
dW50ID09IENGR19VTlNVUFBPUlRFRF9TTU9OX0tRVUVVRV9SRVRSWV9GUkVRVUVOQ1kpCisgICAg
eworICAgICAgbW9uLT5wb2xsX2NvdW50ID0gMDsKKyAgICAgIGlmIChnYW1fa3F1ZXVlX21vbml0
b3JfZW5hYmxlX2txdWV1ZShtb24pKQorCWdhbV9rcXVldWVfcG9sbGVyX3JlbW92ZV9zdWJfbW9u
aXRvcigmbWlzc2luZ19zbW9uX3BvbGxlciwgc21vbik7CisgICAgfQorICAKKyAgZ2FtX2txdWV1
ZV9taW5pX2xzdGF0KG1vbi0+cGF0aG5hbWUsICZzYik7CisgIAorICBpZiAoISBzYi5leGlzdHMg
JiYgbW9uLT5zYi5leGlzdHMpCisgICAgZXZlbnQgPSBHQU1JTl9FVkVOVF9ERUxFVEVEOworICBl
bHNlIGlmIChnYW1fa3F1ZXVlX2RpZmZlcnMoJnNiLCAmbW9uLT5zYikpCisgICAgZXZlbnQgPSBH
QU1JTl9FVkVOVF9DSEFOR0VEOworICBlbHNlCisgICAgcmV0dXJuOworCQorICBtZW1jcHkoJm1v
bi0+c2IsICZzYiwgc2l6ZW9mKHNiKSk7CisgIGdhbV9rcXVldWVfc3ViX21vbml0b3JfZW1pdF9l
dmVudChzbW9uLCBldmVudCwgKHNiLm1vZGUgJiBTX0lGRElSKSAhPSAwID8gTU9OSVRPUl9JU0RJ
UiA6IE1PTklUT1JfSVNOT1RESVIpOworfQogCi0JaWYgKGhhdmVfY29uc3VtZV9pZGxlcikKLQkJ
cmV0dXJuOworc3RhdGljIHZvaWQKK2dhbV9rcXVldWVfdW5zdXBwb3J0ZWRfZm1vbl9wb2xsX2Zv
cmVhY2hfY2IgKEZpbGVNb25pdG9yICpmbW9uLAorCQkJCQkgICAgIGdwb2ludGVyIHVudXNlZCwK
KwkJCQkJICAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIE1vbml0b3IgKm1vbiA9IE1PTklU
T1IoZm1vbik7CisgIE1pbmlTdGF0IHNiOworICBHYW1pbkV2ZW50VHlwZSBldmVudDsKKworICBp
ZiAoKyttb24tPnBvbGxfY291bnQgPT0gQ0ZHX1VOU1VQUE9SVEVEX0ZNT05fS1FVRVVFX1JFVFJZ
X0ZSRVFVRU5DWSkKKyAgICB7CisgICAgICBtb24tPnBvbGxfY291bnQgPSAwOworICAgICAgaWYg
KGdhbV9rcXVldWVfbW9uaXRvcl9lbmFibGVfa3F1ZXVlKG1vbikpCisJZ2FtX2txdWV1ZV9oYXNo
X3RhYmxlX3JlbW92ZShmbW9uLT5zbW9uLT51bnN1cHBvcnRlZF9mbW9ucywgZm1vbik7CisgICAg
fQogCi0JaGF2ZV9jb25zdW1lX2lkbGVyID0gVFJVRTsKKyAgZ2FtX2txdWV1ZV9taW5pX2xzdGF0
KG1vbi0+cGF0aG5hbWUsICZzYik7CiAKLQlzb3VyY2UgPSBnX2lkbGVfc291cmNlX25ldyAoKTsK
LQlnX3NvdXJjZV9zZXRfY2FsbGJhY2sgKHNvdXJjZSwgZ2FtX2txdWV1ZV9jb25zdW1lX3N1YnNj
cmlwdGlvbnNfcmVhbCwgTlVMTCwgTlVMTCk7CisgIGlmICghIHNiLmV4aXN0cyAmJiBtb24tPnNi
LmV4aXN0cykKKyAgICBldmVudCA9IEdBTUlOX0VWRU5UX0RFTEVURUQ7CisgIGVsc2UgaWYgKGdh
bV9rcXVldWVfZGlmZmVycygmc2IsICZtb24tPnNiKSkKKyAgICBldmVudCA9IEdBTUlOX0VWRU5U
X0NIQU5HRUQ7CisgIGVsc2UKKyAgICByZXR1cm47CiAKLQlnX3NvdXJjZV9hdHRhY2ggKHNvdXJj
ZSwgTlVMTCk7CisgIG1lbWNweSgmbW9uLT5zYiwgJnNiLCBzaXplb2Yoc2IpKTsKKyAgZ2FtX2tx
dWV1ZV9maWxlX21vbml0b3JfZW1pdF9ldmVudChmbW9uLCBldmVudCwgKHNiLm1vZGUgJiBTX0lG
RElSKSAhPSAwID8gTU9OSVRPUl9JU0RJUiA6IE1PTklUT1JfSVNOT1RESVIpOwogfQogCi0vKioK
LSAqIEBkZWZncm91cCBrcXVldWUga3F1ZXVlIGJhY2tlbmQKLSAqIEBpbmdyb3VwIEJhY2tlbmRz
Ci0gKiBAYnJpZWYga3F1ZXVlIGJhY2tlbmQgQVBJCi0gKgotICogU2luY2UgNC4xLCBGcmVlQlNE
IGtlcm5lbHMgaGF2ZSBpbmNsdWRlZCB0aGUga2VybmVsIGV2ZW50IG5vdGlmaWNhdGlvbgotICog
bWFjaGFuaXNtIChrcXVldWUpLiAgVGhpcyBiYWNrZW5kIHVzZXMga3F1ZXVlIHRvIGtub3cgd2hl
bgotICogZmlsZXMgYXJlIGNoYW5nZWQvY3JlYXRlZC9kZWxldGVkLgotICoKLSAqIEB7Ci0gKi8K
K3N0YXRpYyB2b2lkCitnYW1fa3F1ZXVlX3Vuc3VwcG9ydGVkX2Ztb25fcG9sbCAoU3ViTW9uaXRv
ciAqc21vbikKK3sKKyAgZ2FtX2txdWV1ZV9oYXNoX3RhYmxlX2ZvcmVhY2goc21vbi0+dW5zdXBw
b3J0ZWRfZm1vbnMsIChHSEZ1bmMpIGdhbV9rcXVldWVfdW5zdXBwb3J0ZWRfZm1vbl9wb2xsX2Zv
cmVhY2hfY2IsIE5VTEwpOworfQogCisvKioqIEdhbWluIGJhY2tlbmQgaW1wbGVtZW50YXRpb24g
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qKgogICog
SW5pdGlhbGl6ZXMgdGhlIGtxdWV1ZSBzeXN0ZW0uICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9y
ZQpAQCAtNTI2LDI4ICsxMTE4LDU4IEBACiAgKiBAcmV0dXJucyBUUlVFIGlmIGluaXRpYWxpemF0
aW9uIHN1Y2NlZWRlZCwgRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIGdib29sZWFuCi1nYW1fa3F1ZXVl
X2luaXQodm9pZCkKK2dhbV9rcXVldWVfaW5pdCAodm9pZCkKIHsKLSAgICBrcSA9IGtxdWV1ZSgp
OwotICAgIGlmIChrcSA9PSAtMSkgewotCUdBTV9ERUJVRyhERUJVR19JTkZPLCAiQ291bGQgbm90
IGluaXRpYWxpemUgYSBuZXcga3F1ZXVlXG4iKTsKLQlyZXR1cm4gRkFMU0U7CisgIEdJT0NoYW5u
ZWwgKmNoYW5uZWw7CisgIHVuc2lnbmVkIGludCBtYXhmaWxlczsKKyAgdW5zaWduZWQgaW50IG1h
eGZpbGVzcGVycHJvYzsKKworICBrcSA9IGtxdWV1ZSgpOworICBpZiAoa3EgPCAwKQorICAgIHsK
KyAgICAgIGdhbV9lcnJvcihERUJVR19JTkZPLCAia3F1ZXVlIGluaXRpYWxpemF0aW9uIGZhaWx1
cmU6ICVzXG4iLCBnX3N0cmVycm9yKGVycm5vKSk7CisgICAgICByZXR1cm4gRkFMU0U7CiAgICAg
fQogCi0gICAgZ190aW1lb3V0X2FkZCgxMDAwLCBnYW1fa3F1ZXVlX2V4aXN0X2NoZWNrLCBOVUxM
KTsKLSAgICBnX3RpbWVvdXRfYWRkKDEwMDAsIGdhbV9rcXVldWVfZXZlbnRfaGFuZGxlciwgTlVM
TCk7Ci0KLSAgICBkaXJfcGF0aF9oYXNoID0gZ19oYXNoX3RhYmxlX25ldyhnX3N0cl9oYXNoLCBn
X3N0cl9lcXVhbCk7Ci0gICAgZmlsZV9wYXRoX2hhc2ggPSBnX2hhc2hfdGFibGVfbmV3KGdfc3Ry
X2hhc2gsIGdfc3RyX2VxdWFsKTsKLSAgICBmZF9oYXNoID0gZ19oYXNoX3RhYmxlX25ldyhnX2Rp
cmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCk7Ci0KLSAgICBHQU1fREVCVUcoREVCVUdfSU5GTywg
ImtxdWV1ZSBpbml0aWFsaXplZFxuIik7Ci0KLSAgICBnYW1fYmFja2VuZF9hZGRfc3Vic2NyaXB0
aW9uID0gZ2FtX2txdWV1ZV9hZGRfc3Vic2NyaXB0aW9uOwotICAgIGdhbV9iYWNrZW5kX3JlbW92
ZV9zdWJzY3JpcHRpb24gPSBnYW1fa3F1ZXVlX3JlbW92ZV9zdWJzY3JpcHRpb247Ci0gICAgZ2Ft
X2JhY2tlbmRfcmVtb3ZlX2FsbF9mb3IgPSBnYW1fa3F1ZXVlX3JlbW92ZV9hbGxfZm9yOworICBp
ZiAoISBnYW1fa3F1ZXVlX2dldF91aW50X3N5c2N0bCgia2Vybi5tYXhmaWxlcyIsICZtYXhmaWxl
cykpCisgICAgcmV0dXJuIEZBTFNFOworICBpZiAoISBnYW1fa3F1ZXVlX2dldF91aW50X3N5c2N0
bCgia2Vybi5tYXhmaWxlc3BlcnByb2MiLCAmbWF4ZmlsZXNwZXJwcm9jKSkKKyAgICByZXR1cm4g
RkFMU0U7CisKKyAgLyoKKyAgICogV2UgbWFrZSBzdXJlIHRvOgorICAgKgktIG5ldmVyIHBhcmFs
eXplIHRoZSBzeXN0ZW0gKENGR19HTE9CQUxfRklMRV9SRVNFUlZFX1JBVElPKQorICAgKgktIG5l
dmVyIHBhcmFseXplIG91ciBvd24gcHJvY2VzcyAoQ0ZHX1NFTEZfRklMRV9SRVNFUlZFKQorICAg
Ki8KKworICBtYXhmaWxlcyAqPSBDRkdfR0xPQkFMX0ZJTEVfUkVTRVJWRV9SQVRJTzsKKyAgbWF4
ZmlsZXNwZXJwcm9jID0gbWF4ZmlsZXNwZXJwcm9jID4gQ0ZHX1NFTEZfRklMRV9SRVNFUlZFCisg
ICAgPyBtYXhmaWxlc3BlcnByb2MgLSBDRkdfU0VMRl9GSUxFX1JFU0VSVkUKKyAgICA6IDA7CisK
KyAgbWF4X29wZW5fZmlsZXMgPSBNSU4obWF4ZmlsZXMsIG1heGZpbGVzcGVycHJvYyk7CisKKyAg
ZGlyX2hhc2ggPSBnX2hhc2hfdGFibGVfbmV3KGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsKTsKKyAg
ZmlsZV9oYXNoID0gZ19oYXNoX3RhYmxlX25ldyhnX3N0cl9oYXNoLCBnX3N0cl9lcXVhbCk7CisK
KyAgZ2FtX2txdWV1ZV9wb2xsZXJfaW5pdCgmbWlzc2luZ19zbW9uX3BvbGxlciwKKwkJCSBnYW1f
a3F1ZXVlX21pc3Npbmdfc21vbl9wb2xsLAorCQkJIENGR19NSVNTSU5HX1NNT05fUE9MTF9JTlRF
UlZBTCk7CisgIGdhbV9rcXVldWVfcG9sbGVyX2luaXQoJnVuc3VwcG9ydGVkX3Ntb25fcG9sbGVy
LAorCQkJIGdhbV9rcXVldWVfdW5zdXBwb3J0ZWRfc21vbl9wb2xsLAorCQkJIENGR19VTlNVUFBP
UlRFRF9TTU9OX1BPTExfSU5URVJWQUwpOworICBnYW1fa3F1ZXVlX3BvbGxlcl9pbml0KCZ1bnN1
cHBvcnRlZF9mbW9uX3BvbGxlciwKKwkJCSBnYW1fa3F1ZXVlX3Vuc3VwcG9ydGVkX2Ztb25fcG9s
bCwKKwkJCSBDRkdfVU5TVVBQT1JURURfRk1PTl9QT0xMX0lOVEVSVkFMKTsKKworICBjaGFubmVs
ID0gZ19pb19jaGFubmVsX3VuaXhfbmV3KGtxKTsKKyAgZ19pb19hZGRfd2F0Y2goY2hhbm5lbCwg
R19JT19JTiwgZ2FtX2txdWV1ZV9rZXZlbnRfY2IsIE5VTEwpOworCisgIGdhbV9iYWNrZW5kX2Fk
ZF9zdWJzY3JpcHRpb24gPSBnYW1fa3F1ZXVlX2FkZF9zdWJzY3JpcHRpb247CisgIGdhbV9iYWNr
ZW5kX3JlbW92ZV9zdWJzY3JpcHRpb24gPSBnYW1fa3F1ZXVlX3JlbW92ZV9zdWJzY3JpcHRpb247
CisgIGdhbV9iYWNrZW5kX3JlbW92ZV9hbGxfZm9yID0gZ2FtX2txdWV1ZV9yZW1vdmVfYWxsX2Zv
cjsKIAotICAgIHJldHVybiBUUlVFOworICByZXR1cm4gVFJVRTsKIH0KIAogLyoqCkBAIC01NTcs
MTggKzExNzksMzEgQEAKICAqIEByZXR1cm5zIFRSVUUgaWYgYWRkaW5nIHRoZSBzdWJzY3JpcHRp
b24gc3VjY2VlZGVkLCBGQUxTRSBvdGhlcndpc2UKICAqLwogZ2Jvb2xlYW4KLWdhbV9rcXVldWVf
YWRkX3N1YnNjcmlwdGlvbihHYW1TdWJzY3JpcHRpb24gKiBzdWIpCitnYW1fa3F1ZXVlX2FkZF9z
dWJzY3JpcHRpb24gKEdhbVN1YnNjcmlwdGlvbiAqc3ViKQogewotCWdhbV9saXN0ZW5lcl9hZGRf
c3Vic2NyaXB0aW9uKGdhbV9zdWJzY3JpcHRpb25fZ2V0X2xpc3RlbmVyKHN1YiksIHN1Yik7Ci0K
LQlHX0xPQ0sobmV3X3N1YnMpOwotCW5ld19zdWJzID0gZ19saXN0X3ByZXBlbmQobmV3X3N1YnMs
IHN1Yik7Ci0JR19VTkxPQ0sobmV3X3N1YnMpOworICBjb25zdCBjaGFyICpwYXRoOworICBHSGFz
aFRhYmxlICpoYXNoOworICBTdWJNb25pdG9yICpzbW9uOworCisgIGdhbV9saXN0ZW5lcl9hZGRf
c3Vic2NyaXB0aW9uKGdhbV9zdWJzY3JpcHRpb25fZ2V0X2xpc3RlbmVyKHN1YiksIHN1Yik7CisK
KyAgcGF0aCA9IGdhbV9zdWJzY3JpcHRpb25fZ2V0X3BhdGgoc3ViKTsKKyAgaGFzaCA9IGdhbV9z
dWJzY3JpcHRpb25faXNfZGlyKHN1YikgPyBkaXJfaGFzaCA6IGZpbGVfaGFzaDsKKyAgc21vbiA9
IGdfaGFzaF90YWJsZV9sb29rdXAoaGFzaCwgcGF0aCk7CisKKyAgaWYgKHNtb24pCisgICAgewor
ICAgICAgc21vbi0+c3VicyA9IGdfbGlzdF9hcHBlbmQoc21vbi0+c3Vicywgc3ViKTsKKyAgICAg
IHJldHVybiBUUlVFOworICAgIH0KKyAgCisgIHNtb24gPSBnYW1fa3F1ZXVlX3N1Yl9tb25pdG9y
X25ldyhzdWIpOworICBzbW9uLT5zdWJzID0gZ19saXN0X2FwcGVuZChzbW9uLT5zdWJzLCBzdWIp
OwogCi0JR0FNX0RFQlVHKERFQlVHX0lORk8sICJrcXVldWVfYWRkX3N1YlxuIik7CisgIGdfaGFz
aF90YWJsZV9pbnNlcnQoaGFzaCwgTU9OSVRPUihzbW9uKS0+cGF0aG5hbWUsIHNtb24pOworICBn
YW1fa3F1ZXVlX3N1Yl9tb25pdG9yX2VuYWJsZV9ub3RpZmljYXRpb24oc21vbiwgMCk7CiAKLQln
YW1fa3F1ZXVlX2NvbnN1bWVfc3Vic2NyaXB0aW9ucygpOwotICAgIHJldHVybiBUUlVFOworICBy
ZXR1cm4gVFJVRTsKIH0KIAogLyoqCkBAIC01NzgsMjggKzEyMTMsMjggQEAKICAqIEByZXR1cm5z
IFRSVUUgaWYgcmVtb3ZpbmcgdGhlIHN1YnNjcmlwdGlvbiBzdWNjZWVkZWQsIEZBTFNFIG90aGVy
d2lzZQogICovCiBnYm9vbGVhbgotZ2FtX2txdWV1ZV9yZW1vdmVfc3Vic2NyaXB0aW9uKEdhbVN1
YnNjcmlwdGlvbiAqIHN1YikKK2dhbV9rcXVldWVfcmVtb3ZlX3N1YnNjcmlwdGlvbiAoR2FtU3Vi
c2NyaXB0aW9uICpzdWIpCiB7Ci0JR19MT0NLKG5ld19zdWJzKTsKLQlpZiAoZ19saXN0X2ZpbmQo
bmV3X3N1YnMsIHN1YikpIHsKLQkJR0FNX0RFQlVHKERFQlVHX0lORk8sICJyZW1vdmVkIHN1YiBm
b3VuZCBvbiBuZXdfc3Vic1xuIik7Ci0JCW5ld19zdWJzID0gZ19saXN0X3JlbW92ZV9hbGwgKG5l
d19zdWJzLCBzdWIpOwotCQlHX1VOTE9DSyhuZXdfc3Vicyk7Ci0JCXJldHVybiBUUlVFOwotCX0K
LQlHX1VOTE9DSyhuZXdfc3Vicyk7CisgIEdIYXNoVGFibGUgKmhhc2g7CisgIFN1Yk1vbml0b3Ig
KnNtb247CiAKLQlnYW1fc3Vic2NyaXB0aW9uX2NhbmNlbCAoc3ViKTsKLQlnYW1fbGlzdGVuZXJf
cmVtb3ZlX3N1YnNjcmlwdGlvbihnYW1fc3Vic2NyaXB0aW9uX2dldF9saXN0ZW5lcihzdWIpLCBz
dWIpOworICBoYXNoID0gZ2FtX3N1YnNjcmlwdGlvbl9pc19kaXIoc3ViKSA/IGRpcl9oYXNoIDog
ZmlsZV9oYXNoOworICBzbW9uID0gZ19oYXNoX3RhYmxlX2xvb2t1cChoYXNoLCBnYW1fc3Vic2Ny
aXB0aW9uX2dldF9wYXRoKHN1YikpOwogCi0JR19MT0NLKHJlbW92ZWRfc3Vicyk7Ci0JcmVtb3Zl
ZF9zdWJzID0gZ19saXN0X3ByZXBlbmQgKHJlbW92ZWRfc3Vicywgc3ViKTsKLQlHX1VOTE9DSyhy
ZW1vdmVkX3N1YnMpOworICBpZiAoISBzbW9uKQorICAgIHJldHVybiBGQUxTRTsKIAotCUdBTV9E
RUJVRyhERUJVR19JTkZPLCAia3F1ZXVlX3JlbW92ZV9zdWJcbiIpOwotCWdhbV9rcXVldWVfY29u
c3VtZV9zdWJzY3JpcHRpb25zKCk7CisgIHNtb24tPnN1YnMgPSBnX2xpc3RfcmVtb3ZlX2FsbChz
bW9uLT5zdWJzLCBzdWIpOworICBpZiAoISBzbW9uLT5zdWJzKQorICAgIHsKKyAgICAgIGdfaGFz
aF90YWJsZV9yZW1vdmUoaGFzaCwgTU9OSVRPUihzbW9uKS0+cGF0aG5hbWUpOworICAgICAgZ2Ft
X2txdWV1ZV9zdWJfbW9uaXRvcl9mcmVlKHNtb24pOworICAgIH0KIAotICAgIHJldHVybiBUUlVF
OworICBnYW1fc3Vic2NyaXB0aW9uX2NhbmNlbChzdWIpOworICBnYW1fbGlzdGVuZXJfcmVtb3Zl
X3N1YnNjcmlwdGlvbihnYW1fc3Vic2NyaXB0aW9uX2dldF9saXN0ZW5lcihzdWIpLCBzdWIpOwor
CisgIHJldHVybiBUUlVFOwogfQogCiAvKioKQEAgLTYwOSwyOCArMTI0NCwxOSBAQAogICogQHJl
dHVybnMgVFJVRSBpZiByZW1vdmluZyB0aGUgc3Vic2NyaXB0aW9ucyBzdWNjZWVkZWQsIEZBTFNF
IG90aGVyd2lzZQogICovCiBnYm9vbGVhbgotZ2FtX2txdWV1ZV9yZW1vdmVfYWxsX2ZvcihHYW1M
aXN0ZW5lciAqIGxpc3RlbmVyKQorZ2FtX2txdWV1ZV9yZW1vdmVfYWxsX2ZvciAoR2FtTGlzdGVu
ZXIgKmxpc3RlbmVyKQogewotCUdMaXN0ICpzdWJzLCAqbCA9IE5VTEw7Ci0KLQlzdWJzID0gZ2Ft
X2xpc3RlbmVyX2dldF9zdWJzY3JpcHRpb25zIChsaXN0ZW5lcik7Ci0KLQlmb3IgKGwgPSBzdWJz
OyBsOyBsID0gbC0+bmV4dCkgewotCQlHYW1TdWJzY3JpcHRpb24gKnN1YiA9IGwtPmRhdGE7Ci0K
LQkJZ19hc3NlcnQgKHN1YiAhPSBOVUxMKTsKLQotCQlnYW1fa3F1ZXVlX3JlbW92ZV9zdWJzY3Jp
cHRpb24gKHN1Yik7Ci0KLQl9Ci0KLQlpZiAoc3VicykgewotCQlnX2xpc3RfZnJlZSAoc3Vicyk7
Ci0JCWdhbV9rcXVldWVfY29uc3VtZV9zdWJzY3JpcHRpb25zKCk7Ci0JCXJldHVybiBUUlVFOwot
CX0gZWxzZSB7Ci0JCXJldHVybiBGQUxTRTsKLQl9CisgIEdMaXN0ICpzdWJzOworICBHTGlzdCAq
bDsKKyAgZ2Jvb2xlYW4gc3VjY2VzcyA9IFRSVUU7CisKKyAgc3VicyA9IGdhbV9saXN0ZW5lcl9n
ZXRfc3Vic2NyaXB0aW9ucyhsaXN0ZW5lcik7CisKKyAgZm9yIChsID0gc3ViczsgbCAhPSBOVUxM
OyBsID0gbC0+bmV4dCkKKyAgICBpZiAoISBnYW1fa3F1ZXVlX3JlbW92ZV9zdWJzY3JpcHRpb24o
bC0+ZGF0YSkpCisgICAgICBzdWNjZXNzID0gRkFMU0U7CisKKyAgZ19saXN0X2ZyZWUoc3Vicyk7
CisgIAorICByZXR1cm4gc3VjY2VzczsKIH0KLQotLyoqIEB9ICovCmRpZmYgLXggJyp+JyAtdXIg
Z2FtaW4tMC4xLjAvc2VydmVyL2dhbV9rcXVldWUuaCBnYW1pbi0wLjEuMC1mYnNkL3NlcnZlci9n
YW1fa3F1ZXVlLmgKLS0tIGdhbWluLTAuMS4wL3NlcnZlci9nYW1fa3F1ZXVlLmgJMjAwNS0wNC0w
MiAxNjo0MTo1Mi4wMDAwMDAwMDAgKzAyMDAKKysrIGdhbWluLTAuMS4wLWZic2Qvc2VydmVyL2dh
bV9rcXVldWUuaAkyMDA1LTA1LTI3IDAxOjAwOjM4LjAxNTA1OTc3NiArMDIwMApAQCAtMSwxNyAr
MSw5IEBACi0KICNpZm5kZWYgX19NRF9LUVVFVUVfSF9fCiAjZGVmaW5lIF9fTURfS1FVRVVFX0hf
XwogCiAjaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgImdhbV9wb2xsLmgiCiAjaW5jbHVkZSAi
Z2FtX3N1YnNjcmlwdGlvbi5oIgogCi0jZGVmaW5lIFZOX05PVEVfTU9TVAkoTk9URV9ERUxFVEUg
fCBOT1RFX1dSSVRFIHwgTk9URV9FWFRFTkQgfCBcCi0JCQkgTk9URV9BVFRSSUIgfCBOT1RFX0xJ
TksgfCBOT1RFX1JFTkFNRSB8IFwKLQkJCSBOT1RFX1JFVk9LRSkKLSNkZWZpbmUgVk5fTk9URV9B
TEwJVk5fTk9URV9NT1NUCi0jZGVmaW5lIFZOX05PVEVfQ0hBTkdFRAkoTk9URV9XUklURSB8IE5P
VEVfRVhURU5EIHwgTk9URV9BVFRSSUIgfCBOT1RFX0xJTkspCi0KIEdfQkVHSU5fREVDTFMKIAog
Z2Jvb2xlYW4gICBnYW1fa3F1ZXVlX2luaXQgICAgICAgICAgICAgICAgICAodm9pZCk7Cg==
</data>        

          </attachment>
    </bug>

</bugzilla>