<?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>46703</bug_id>
          
          <creation_ts>2004-04-03 10:05 0000</creation_ts>
          <short_desc>ocaml-3.07-r1 doesn&apos;t build</short_desc>
          <delta_ts>2004-04-19 05:02:07 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>Applications</component>
          <version>unspecified</version>
          <rep_platform>x86</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>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>alexeyp@tts-sf.com</reporter>
          <assigned_to>ml@gentoo.org</assigned_to>
          

      

      
          <long_desc isprivate="0">
            <who>alexeyp@tts-sf.com</who>
            <bug_when>2004-04-03 10:05:00 0000</bug_when>
            <thetext>../ocamlcomp.sh -pp &apos;./remove_DEBUG&apos; -I ../parsing -I ../utils -I ../typing -I ../driver -I ../bytecomp -I ../tools -I ../toplevel/ -I ../stdlib -I ../otherlibs/str -I ../otherlibs/dynlink -I ../otherlibs/unix -I ../otherlibs/num -I ../otherlibs/graph -warn-error A -c odoc_sig.ml
File &quot;odoc_sig.ml&quot;, line 1302, characters 16-17:
Syntax error
make[1]: *** [odoc_sig.cmo] Error 2
make[1]: Leaving directory `/var/tmp/portage/ocaml-3.07-r1/work/ocaml-3.07/ocamldoc&apos;
make: *** [ocamldoc] Error 2
 
!!! ERROR: dev-lang/ocaml-3.07-r1 failed.
!!! Function src_compile, Line 45, Exitcode 2
!!! (no error message)

screamer root # emerge info
Portage 2.0.50-r1 (default-x86-2004.0, gcc-3.3.3, glibc-2.3.3_pre20040207-r0, 2.6.4-gentoo)
=================================================================
System uname: 2.6.4-gentoo i686 AMD Athlon(TM) MP 2000+
Gentoo Base System version 1.4.3.13p1
ccache version 2.3 [enabled]
Autoconf: sys-devel/autoconf-2.59-r3
Automake: sys-devel/automake-1.8.3
ACCEPT_KEYWORDS=&quot;x86 ~x86&quot;
AUTOCLEAN=&quot;yes&quot;
CFLAGS=&quot;-O2 -march=athlon-mp -fomit-frame-pointer&quot;
CHOST=&quot;i686-pc-linux-gnu&quot;
COMPILER=&quot;gcc3&quot;
CONFIG_PROTECT=&quot;/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.2/share/config /usr/kde/3/share/config /usr/lib/mozilla/defaults/pref /usr/share/config /var/qmail/control&quot;
CONFIG_PROTECT_MASK=&quot;/etc/gconf /etc/terminfo /etc/env.d&quot;
CXXFLAGS=&quot;-O2 -march=athlon-mp -fomit-frame-pointer&quot;
DISTDIR=&quot;/usr/portage/distfiles&quot;
FEATURES=&quot;autoaddcvs ccache sandbox&quot;
GENTOO_MIRRORS=&quot;http://gentoo.oregonstate.edu http://distro.ibiblio.org/pub/Linux/distributions/gentoo&quot;
MAKEOPTS=&quot;-j3&quot;
PKGDIR=&quot;/usr/portage/packages&quot;
PORTAGE_TMPDIR=&quot;/var/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
PORTDIR_OVERLAY=&quot;&quot;
SYNC=&quot;rsync://rsync.gentoo.org/gentoo-portage&quot;
USE=&quot;3dnow X aim alsa amd apache2 apm arts autofs avantgo avi berkdb cddb cdr client crypt cups dga directfb dvd dvdr encode esd fax fbdev ffmpeg flac fltk foomaticdb freetype fs gd gdbm gif glut gnome gpm gtk gtk2 icq imap imlib informix jabber java javascript joystick jpeg kde lesstif libg++ libwww mad maildir mbox mcal mdb mikmod mmx mng motif mozcalendar mozilla mpeg mpeg4 msn music mysql ncurses neXt net netcdf nls nvidia oci8 offensive oggvorbis opengl oss pam pcap pda pdflib perl php png postgres ppds pthreads python qt quicktime readline rplay samba scanner sdl slang snmp spell ssl svga tcltk tcpd tiff transcode truetype type1 usb virus-scan wmf x86 xine xml2 xmms xv xvid yahoo zlib zvbi&quot;</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>mattam@gentoo.org</who>
            <bug_when>2004-04-04 15:16:39 0000</bug_when>
            <thetext>It seems the ./remove_DEBUG script doesn&apos;t work well on your box, could you please go the the /var/tmp/portage/ocaml-3.07-r1/work/ocaml-3.07/ocamldoc directory and send the output of # ./remove_DEBUG odoc_sig.ml ? Also what version of sed have you installed ?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>alexeyp@tts-sf.com</who>
            <bug_when>2004-04-04 19:34:32 0000</bug_when>
            <thetext>Created an attachment (id=28713)
the output of # ./remove_DEBUG odoc_sig.ml
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>alexeyp@tts-sf.com</who>
            <bug_when>2004-04-04 19:35:48 0000</bug_when>
            <thetext>See the attachment ..
The version of sed is 4.0.9.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>mattam@gentoo.org</who>
            <bug_when>2004-04-05 12:34:22 0000</bug_when>
            <thetext>It seems your locale settings are making the sed script fail. What are your $LC_ALL and $LANG set to ? If something non-standard, you can try 
# LC_ALL=C LANG= emerge ocaml
and tell me how it works :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>alexeyp@tts-sf.com</who>
            <bug_when>2004-04-05 20:27:45 0000</bug_when>
            <thetext>The locale stuff worked - I&apos;ve emerged the ocaml package. It&apos;s still a question why since I never changed local settings :( In my case both LC_ALL and LANG are not defined.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>rktmb.list@wanadoo.fr</who>
            <bug_when>2004-04-19 04:51:35 0000</bug_when>
            <thetext>i emerged it (3.07-r1) on a sparc , without problem .
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>mattam@gentoo.org</who>
            <bug_when>2004-04-19 05:02:07 0000</bug_when>
            <thetext>I added an export LC_ALL=C to be sure it builds whatever your environment is.</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>28713</attachid>
            <date>2004-04-04 19:34 0000</date>
            <desc>the output of # ./remove_DEBUG odoc_sig.ml</desc>
            <filename>1.txt</filename>
            <type>text/plain</type>
            <data encoding="base64">IyAxICJvZG9jX3NpZy5tbCIKKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKQooKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT0NhbWxkb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopCigqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKikKKCogICAgICAgICAgICBNYXhlbmNlIEd1ZXNkb24sIHByb2pldCBDcmlzdGFs
LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAqKQooKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopCigqICBDb3B5cmln
aHQgMjAwMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0
ICAgKikKKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmls
ZSBpcyBkaXN0cmlidXRlZCAgICAqKQooKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBRIFB1Ymxp
YyBMaWNlbnNlIHZlcnNpb24gMS4wLiAgICAgICAgICAgICAgICopCigqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKikK
KCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKQoKCigqKiBBbmFseXNpcyBvZiBpbnRlcmZhY2UgZmlsZXMuICopCgpv
cGVuIE1pc2MKb3BlbiBBc3R0eXBlcwpvcGVuIFR5cGVzCm9wZW4gVHlwZWR0cmVlCm9wZW4gUGF0
aAoKCgptb2R1bGUgTmFtZSA9IE9kb2NfbmFtZQpvcGVuIE9kb2NfcGFyYW1ldGVyCm9wZW4gT2Rv
Y192YWx1ZQpvcGVuIE9kb2NfdHlwZQpvcGVuIE9kb2NfZXhjZXB0aW9uCm9wZW4gT2RvY19jbGFz
cwpvcGVuIE9kb2NfbW9kdWxlCm9wZW4gT2RvY190eXBlcwoKbW9kdWxlIFNpZ25hdHVyZV9zZWFy
Y2ggPQogIHN0cnVjdAogICAgdHlwZSBlbGUgPSAKICAgICAgfCBNIG9mIHN0cmluZwogICAgICB8
IE1UIG9mIHN0cmluZwogICAgICB8IFYgb2Ygc3RyaW5nCiAgICAgIHwgVCBvZiBzdHJpbmcKICAg
ICAgfCBDIG9mIHN0cmluZwogICAgICB8IENUIG9mIHN0cmluZwogICAgICB8IEUgb2Ygc3RyaW5n
CiAgICAgIHwgRVIgb2Ygc3RyaW5nCiAgICAgIHwgUCBvZiBzdHJpbmcKCiAgICB0eXBlIHRhYiA9
IChlbGUsIFR5cGVzLnNpZ25hdHVyZV9pdGVtKSBIYXNodGJsLnQKCiAgICBsZXQgYWRkX3RvX2hh
c2ggdGFibGUgc2lnbmF0ID0KICAgICAgbWF0Y2ggc2lnbmF0IHdpdGgKICAgICAgICBUeXBlcy5U
c2lnX3ZhbHVlIChpZGVudCwgXykgLT4KICAgICAgICAgIEhhc2h0YmwuYWRkIHRhYmxlIChWIChO
YW1lLmZyb21faWRlbnQgaWRlbnQpKSBzaWduYXQKICAgICAgfCBUeXBlcy5Uc2lnX2V4Y2VwdGlv
biAoaWRlbnQsIF8pIC0+CiAgICAgICAgICBIYXNodGJsLmFkZCB0YWJsZSAoRSAoTmFtZS5mcm9t
X2lkZW50IGlkZW50KSkgc2lnbmF0CiAgICAgIHwgVHlwZXMuVHNpZ190eXBlIChpZGVudCwgXykg
LT4KICAgICAgICAgIEhhc2h0YmwuYWRkIHRhYmxlIChUIChOYW1lLmZyb21faWRlbnQgaWRlbnQp
KSBzaWduYXQKICAgICAgfCBUeXBlcy5Uc2lnX2NsYXNzIChpZGVudCxfKSAtPgogICAgICAgICAg
SGFzaHRibC5hZGQgdGFibGUgKEMgKE5hbWUuZnJvbV9pZGVudCBpZGVudCkpIHNpZ25hdAogICAg
ICB8IFR5cGVzLlRzaWdfY2x0eXBlIChpZGVudCwgXykgLT4KICAgICAgICAgIEhhc2h0YmwuYWRk
IHRhYmxlIChDVCAoTmFtZS5mcm9tX2lkZW50IGlkZW50KSkgc2lnbmF0CiAgICAgIHwgVHlwZXMu
VHNpZ19tb2R1bGUgKGlkZW50LCBfKSAtPgogICAgICAgICAgSGFzaHRibC5hZGQgdGFibGUgKE0g
KE5hbWUuZnJvbV9pZGVudCBpZGVudCkpIHNpZ25hdAogICAgICB8IFR5cGVzLlRzaWdfbW9kdHlw
ZSAoaWRlbnQsXykgLT4KICAgICAgICAgIEhhc2h0YmwuYWRkIHRhYmxlIChNVCAoTmFtZS5mcm9t
X2lkZW50IGlkZW50KSkgc2lnbmF0CgogICAgbGV0IHRhYmxlIHNpZ25hdCA9CiAgICAgIGxldCB0
ID0gSGFzaHRibC5jcmVhdGUgMTMgaW4KICAgICAgTGlzdC5pdGVyIChhZGRfdG9faGFzaCB0KSBz
aWduYXQ7CiAgICAgIHQKCiAgICBsZXQgc2VhcmNoX3ZhbHVlIHRhYmxlIG5hbWUgPQogICAgICBt
YXRjaCBIYXNodGJsLmZpbmQgdGFibGUgKFYgbmFtZSkgd2l0aAogICAgICB8IChUeXBlcy5Uc2ln
X3ZhbHVlIChfLCB2YWxfZGVzYykpIC0+ICB2YWxfZGVzYy5UeXBlcy52YWxfdHlwZQogICAgICB8
IF8gLT4gYXNzZXJ0IGZhbHNlCgogICAgbGV0IHNlYXJjaF9leGNlcHRpb24gdGFibGUgbmFtZSA9
CiAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0YWJsZSAoRSBuYW1lKSB3aXRoCiAgICAgIHwgKFR5
cGVzLlRzaWdfZXhjZXB0aW9uIChfLCB0eXBlX2V4cHJfbGlzdCkpIC0+CiAgICAgICAgICB0eXBl
X2V4cHJfbGlzdAogICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlCgogICAgbGV0IHNlYXJjaF90eXBl
IHRhYmxlIG5hbWUgPQogICAgICBtYXRjaCBIYXNodGJsLmZpbmQgdGFibGUgKFQgbmFtZSkgd2l0
aAogICAgICB8IChUeXBlcy5Uc2lnX3R5cGUgKF8sIHR5cGVfZGVjbCkpIC0+IHR5cGVfZGVjbAog
ICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlCgogICAgbGV0IHNlYXJjaF9jbGFzcyB0YWJsZSBuYW1l
ID0KICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHRhYmxlIChDIG5hbWUpIHdpdGgKICAgICAgfCAo
VHlwZXMuVHNpZ19jbGFzcyAoXywgY2xhc3NfZGVjbCkpIC0+IGNsYXNzX2RlY2wKICAgICAgfCBf
IC0+IGFzc2VydCBmYWxzZQoKICAgIGxldCBzZWFyY2hfY2xhc3NfdHlwZSB0YWJsZSBuYW1lID0K
ICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHRhYmxlIChDVCBuYW1lKSB3aXRoCiAgICAgIHwgKFR5
cGVzLlRzaWdfY2x0eXBlIChfLCBjbHR5cGVfZGVjbCkpIC0+IGNsdHlwZV9kZWNsCiAgICAgIHwg
XyAtPiBhc3NlcnQgZmFsc2UKCiAgICBsZXQgc2VhcmNoX21vZHVsZSB0YWJsZSBuYW1lID0KICAg
ICAgbWF0Y2ggSGFzaHRibC5maW5kIHRhYmxlIChNIG5hbWUpIHdpdGgKICAgICAgfCAoVHlwZXMu
VHNpZ19tb2R1bGUgKGlkZW50LCBtb2R1bGVfdHlwZSkpIC0+IG1vZHVsZV90eXBlCiAgICAgIHwg
XyAtPiBhc3NlcnQgZmFsc2UKCiAgICBsZXQgc2VhcmNoX21vZHVsZV90eXBlIHRhYmxlIG5hbWUg
PQogICAgICBtYXRjaCBIYXNodGJsLmZpbmQgdGFibGUgKE1UIG5hbWUpIHdpdGgKICAgICAgfCAo
VHlwZXMuVHNpZ19tb2R0eXBlIChfLCBUeXBlcy5UbW9kdHlwZV9tYW5pZmVzdCBtb2R1bGVfdHlw
ZSkpIC0+CiAgICAgICAgICBTb21lIG1vZHVsZV90eXBlCiAgICAgIHwgKFR5cGVzLlRzaWdfbW9k
dHlwZSAoXywgVHlwZXMuVG1vZHR5cGVfYWJzdHJhY3QpKSAtPgogICAgICAgICAgTm9uZQogICAg
ICB8IF8gLT4gYXNzZXJ0IGZhbHNlCgogICAgbGV0IHNlYXJjaF9hdHRyaWJ1dGVfdHlwZSBuYW1l
IGNsYXNzX3NpZyA9CiAgICAgIGxldCAoXywgdHlwZV9leHByKSA9IFR5cGVzLlZhcnMuZmluZCBu
YW1lIGNsYXNzX3NpZy5UeXBlcy5jdHlfdmFycyBpbgogICAgICB0eXBlX2V4cHIKICAgICAgICAg
IAogICAgbGV0IHNlYXJjaF9tZXRob2RfdHlwZSBuYW1lIGNsYXNzX3NpZyA9CiAgICAgIGxldCBm
aWVsZHMgPSBPZG9jX21pc2MuZ2V0X2ZpZWxkcyBjbGFzc19zaWcuVHlwZXMuY3R5X3NlbGYgaW4K
ICAgICAgTGlzdC5hc3NvYyBuYW1lIGZpZWxkcwogIGVuZAoKbW9kdWxlIHR5cGUgSW5mb19yZXRy
aWV2ZXIgPQogIHNpZwogICAgdmFsIGFsbF9zcGVjaWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBp
bnQgKiAoT2RvY190eXBlcy5pbmZvIGxpc3QpCiAgICB2YWwgYmxhbmtfbGluZV9vdXRzaWRlX3Np
bXBsZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbAogICAgdmFsIGp1c3RfYWZ0ZXJfc3BlY2lh
bCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gKGludCAqIE9kb2NfdHlwZXMuaW5mbyBvcHRpb24pCiAg
ICB2YWwgZmlyc3Rfc3BlY2lhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gKGludCAqIE9kb2NfdHlw
ZXMuaW5mbyBvcHRpb24pCiAgICB2YWwgZ2V0X2NvbW1lbnRzIDogCiAgICAgICAgKE9kb2NfdHlw
ZXMudGV4dCAtPiAnYSkgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiAoT2RvY190eXBlcy5pbmZvIG9w
dGlvbiAqICdhIGxpc3QpCiAgZW5kCgptb2R1bGUgQW5hbHlzZXIgPSAKICBmdW5jdG9yIChNeV9p
ciA6IEluZm9fcmV0cmlldmVyKSAtPgogIHN0cnVjdAogICAgKCoqIFRoaXMgdmFyaWFibGUgaXMg
dXNlZCB0byBsb2FkIGEgZmlsZSBhcyBhIHN0cmluZyBhbmQgcmV0cmlldmUgY2hhcmFjdGVycyBm
cm9tIGl0LiopCiAgICBsZXQgZmlsZSA9IHJlZiAiIgogICAgKCoqIFRoZSBuYW1lIG9mIHRoZSBh
bmFseXNlZCBmaWxlLiAqKQogICAgbGV0IGZpbGVfbmFtZSA9IHJlZiAiIgoKICAgICgqKiBUaGlz
IGZ1bmN0aW9uIHRha2VzIHR3byBpbmRleGVzIChzdGFydCBhbmQgZW5kKSBhbmQgcmV0dXJuIHRo
ZSBzdHJpbmcKICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGluZGV4ZXMgaW4gdGhlIGZpbGUg
Z2xvYmFsIHZhcmlhYmxlLiBUaGUgZnVuY3Rpb24KICAgICAgIHByZXBhcmVfZmlsZSBtdXN0IGhh
dmUgYmVlbiBjYWxsZWQgdG8gZmlsbCB0aGUgZmlsZSBnbG9iYWwgdmFyaWFibGUuKikKICAgIGxl
dCBnZXRfc3RyaW5nX29mX2ZpbGUgdGhlX3N0YXJ0IHRoZV9lbmQgPQogICAgICB0cnkKICAgICAg
ICBsZXQgcyA9IFN0cmluZy5zdWIgIWZpbGUgdGhlX3N0YXJ0ICh0aGVfZW5kLXRoZV9zdGFydCkg
aW4KICAgICAgICBzCiAgICAgIHdpdGgKICAgICAgICBJbnZhbGlkX2FyZ3VtZW50IF8gLT4KICAg
ICAgICAgICIiCgogICAgKCoqIFRoaXMgZnVuY3Rpb24gbG9hZHMgdGhlIGdpdmVuIGZpbGUgaW4g
dGhlIGZpbGUgZ2xvYmFsIHZhcmlhYmxlLAogICAgICAgYW5kIHNldHMgZmlsZV9uYW1lLiopCiAg
ICBsZXQgcHJlcGFyZV9maWxlIGYgaW5wdXRfZiA9CiAgICAgIHRyeQogICAgICAgIGxldCBzID0g
T2RvY19taXNjLmlucHV0X2ZpbGVfYXNfc3RyaW5nIGlucHV0X2YgaW4KICAgICAgICBmaWxlIDo9
IHM7CiAgICAgICAgZmlsZV9uYW1lIDo9IGYKICAgICAgd2l0aAogICAgICAgIGUgLT4KICAgICAg
ICAgIGZpbGUgOj0gIiI7CiAgICAgICAgICByYWlzZSBlCgogICAgKCoqIFRoZSBmdW5jdGlvbiB1
c2VkIHRvIGdldCB0aGUgY29tbWVudHMgaW4gYSBjbGFzcy4gKikKICAgIGxldCBnZXRfY29tbWVu
dHNfaW5fY2xhc3MgcG9zX3N0YXJ0IHBvc19lbmQgPQogICAgICBNeV9pci5nZXRfY29tbWVudHMg
KGZ1biB0IC0+IENsYXNzX2NvbW1lbnQgdCkgCiAgICAgICAgIWZpbGVfbmFtZQogICAgICAgIChn
ZXRfc3RyaW5nX29mX2ZpbGUgcG9zX3N0YXJ0IHBvc19lbmQpCgogICAgKCoqIFRoZSBmdW5jdGlv
biB1c2VkIHRvIGdldCB0aGUgY29tbWVudHMgaW4gYSBtb2R1bGUuICopCiAgICBsZXQgZ2V0X2Nv
bW1lbnRzX2luX21vZHVsZSBwb3Nfc3RhcnQgcG9zX2VuZCA9CiAgICAgIE15X2lyLmdldF9jb21t
ZW50cyAoZnVuIHQgLT4gRWxlbWVudF9tb2R1bGVfY29tbWVudCB0KSAKICAgICAgICAhZmlsZV9u
YW1lCiAgICAgICAgKGdldF9zdHJpbmdfb2ZfZmlsZSBwb3Nfc3RhcnQgcG9zX2VuZCkKCiAgICBs
ZXQgbWVyZ2VfaW5mb3MgPSBPZG9jX21lcmdlLm1lcmdlX2luZm9fb3B0IE9kb2NfdHlwZXMuYWxs
X21lcmdlX29wdGlvbnMgCgogICAgbGV0IG5hbWVfY29tbWVudF9mcm9tX3R5cGVfa2luZCBwb3Nf
c3RhcnQgcG9zX2VuZCBwb3NfbGltaXQgdGsgPQogICAgICBtYXRjaCB0ayB3aXRoCiAgICAgICAg
UGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+CiAgICAgICAgICAoMCwgW10pCiAgICAgIHwgUGFy
c2V0cmVlLlB0eXBlX3ZhcmlhbnQgKGNvbnNfY29yZV90eXBlX2xpc3RfbGlzdCwgXykgLT4gCiAg
ICAgICAgICAoKm9mIChzdHJpbmcgKiBjb3JlX3R5cGUgbGlzdCkgbGlzdCAqKQogICAgICAgICAg
bGV0IHJlYyBmIGFjYyBsYXN0X3BvcyBjb25zX2NvcmVfdHlwZV9saXN0X2xpc3QgPQogICAgICAg
ICAgICBtYXRjaCBjb25zX2NvcmVfdHlwZV9saXN0X2xpc3Qgd2l0aAogICAgICAgICAgICAgIFtd
IC0+CiAgICAgICAgICAgICAgICAoMCwgYWNjKQogICAgICAgICAgICB8IChuYW1lLCBjb3JlX3R5
cGVfbGlzdCkgOjogW10gLT4KICAgICAgICAgICAgICAgIGxldCBwb3MgPSBTdHIuc2VhcmNoX2Zv
cndhcmQgKFN0ci5yZWdleHBfc3RyaW5nIG5hbWUpICFmaWxlIGxhc3RfcG9zIGluCiAgICAgICAg
ICAgICAgICBsZXQgcyA9IGdldF9zdHJpbmdfb2ZfZmlsZSBwb3NfZW5kIHBvc19saW1pdCBpbgog
ICAgICAgICAgICAgICAgbGV0IChsZW4sIGNvbW1lbnRfb3B0KSA9ICBNeV9pci5qdXN0X2FmdGVy
X3NwZWNpYWwgIWZpbGVfbmFtZSBzIGluCiAgICAgICAgICAgICAgICAobGVuLCBhY2MgQCBbIChu
YW1lLCBjb21tZW50X29wdCkgXSkKCiAgICAgICAgICAgIHwgKG5hbWUsIGNvcmVfdHlwZV9saXN0
KSA6OiAobmFtZTIsIGNvcmVfdHlwZV9saXN0MikgOjogcSAtPgogICAgICAgICAgICAgICAgbWF0
Y2ggKExpc3QucmV2IGNvcmVfdHlwZV9saXN0LCBjb3JlX3R5cGVfbGlzdDIpIHdpdGgKICAgICAg
ICAgICAgICAgICAgKFtdLCBbXSkgLT4KICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gU3Ry
LnNlYXJjaF9mb3J3YXJkIChTdHIucmVnZXhwX3N0cmluZyBuYW1lKSAhZmlsZSBsYXN0X3BvcyBp
bgogICAgICAgICAgICAgICAgICAgIGxldCBwb3MnID0gcG9zICsgKFN0cmluZy5sZW5ndGggbmFt
ZSkgaW4KICAgICAgICAgICAgICAgICAgICBsZXQgcG9zMiA9IFN0ci5zZWFyY2hfZm9yd2FyZCAo
U3RyLnJlZ2V4cF9zdHJpbmcgbmFtZTIpICFmaWxlIHBvcycgaW4KICAgICAgICAgICAgICAgICAg
ICBsZXQgcyA9IGdldF9zdHJpbmdfb2ZfZmlsZSBwb3MnIHBvczIgaW4KICAgICAgICAgICAgICAg
ICAgICBsZXQgKF8sY29tbWVudF9vcHQpID0gIE15X2lyLmp1c3RfYWZ0ZXJfc3BlY2lhbCAhZmls
ZV9uYW1lICBzIGluCiAgICAgICAgICAgICAgICAgICAgZiAoYWNjIEAgW25hbWUsIGNvbW1lbnRf
b3B0XSkgcG9zMiAoKG5hbWUyLCBjb3JlX3R5cGVfbGlzdDIpIDo6IHEpCiAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgIHwgKFtdLCAoY3QyIDo6IF8pKSAtPgogICAgICAgICAg
ICAgICAgICAgIGxldCBwb3MgPSBTdHIuc2VhcmNoX2ZvcndhcmQgKFN0ci5yZWdleHBfc3RyaW5n
IG5hbWUpICFmaWxlIGxhc3RfcG9zIGluCiAgICAgICAgICAgICAgICAgICAgbGV0IHBvcycgPSBw
b3MgKyAoU3RyaW5nLmxlbmd0aCBuYW1lKSBpbgogICAgICAgICAgICAgICAgICAgIGxldCBwb3My
ID0gY3QyLlBhcnNldHJlZS5wdHlwX2xvYy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4aW5nLnBvc19j
bnVtIGluCiAgICAgICAgICAgICAgICAgICAgbGV0IHBvczInID0gU3RyLnNlYXJjaF9iYWNrd2Fy
ZCAoU3RyLnJlZ2V4cF9zdHJpbmcgbmFtZTIpICFmaWxlIHBvczIgaW4KICAgICAgICAgICAgICAg
ICAgICBsZXQgcyA9IGdldF9zdHJpbmdfb2ZfZmlsZSBwb3MnIHBvczInIGluCiAgICAgICAgICAg
ICAgICAgICAgbGV0IChfLGNvbW1lbnRfb3B0KSA9ICBNeV9pci5qdXN0X2FmdGVyX3NwZWNpYWwg
IWZpbGVfbmFtZSAgcyBpbgogICAgICAgICAgICAgICAgICAgIGYgKGFjYyBAIFtuYW1lLCBjb21t
ZW50X29wdF0pIHBvczInICgobmFtZTIsIGNvcmVfdHlwZV9saXN0MikgOjogcSkKICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfCAoKGN0IDo6IF8pLCBfKSAtPgogICAgICAg
ICAgICAgICAgICAgIGxldCBwb3MgPSBjdC5QYXJzZXRyZWUucHR5cF9sb2MuTG9jYXRpb24ubG9j
X2VuZC5MZXhpbmcucG9zX2NudW0gaW4KICAgICAgICAgICAgICAgICAgICBsZXQgcG9zMiA9IFN0
ci5zZWFyY2hfZm9yd2FyZCAoU3RyLnJlZ2V4cF9zdHJpbmcgbmFtZTIpICFmaWxlIHBvcyBpbgog
ICAgICAgICAgICAgICAgICAgIGxldCBzID0gZ2V0X3N0cmluZ19vZl9maWxlIHBvcyBwb3MyIGlu
CiAgICAgICAgICAgICAgICAgICAgbGV0IChfLGNvbW1lbnRfb3B0KSA9ICBNeV9pci5qdXN0X2Fm
dGVyX3NwZWNpYWwgIWZpbGVfbmFtZSAgcyBpbgogICAgICAgICAgICAgICAgICAgIGxldCBuZXdf
cG9zX2VuZCA9CiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjb21tZW50X29wdCB3aXRoCiAg
ICAgICAgICAgICAgICAgICAgICAgIE5vbmUgLT4gY3QuUGFyc2V0cmVlLnB0eXBfbG9jLkxvY2F0
aW9uLmxvY19lbmQuTGV4aW5nLnBvc19jbnVtCiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21l
IF8gLT4gU3RyLnNlYXJjaF9mb3J3YXJkIChTdHIucmVnZXhwICIqKSIpICFmaWxlIHBvcwogICAg
ICAgICAgICAgICAgICAgIGluCiAgICAgICAgICAgICAgICAgICAgZiAoYWNjIEAgW25hbWUsIGNv
bW1lbnRfb3B0XSkgbmV3X3Bvc19lbmQgKChuYW1lMiwgY29yZV90eXBlX2xpc3QyKSA6OiBxKQog
ICAgICAgICAgaW4KICAgICAgICAgIGYgW10gcG9zX3N0YXJ0IGNvbnNfY29yZV90eXBlX2xpc3Rf
bGlzdAogICAgICAgICAgICAKICAgICAgfCBQYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChuYW1lX211
dGFibGVfdHlwZV9saXN0LCBfKSAoKiBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogY29yZV90
eXBlKSBsaXN0KikgLT4KICAgICAgICAgIGxldCByZWMgZiA9IGZ1bmN0aW9uCiAgICAgICAgICAg
ICAgW10gLT4KICAgICAgICAgICAgICAgIFtdCiAgICAgICAgICAgIHwgKG5hbWUsIF8sIGN0KSA6
OiBbXSAtPgogICAgICAgICAgICAgICAgbGV0IHBvcyA9IGN0LlBhcnNldHJlZS5wdHlwX2xvYy5M
b2NhdGlvbi5sb2NfZW5kLkxleGluZy5wb3NfY251bSBpbgogICAgICAgICAgICAgICAgbGV0IHMg
PSBnZXRfc3RyaW5nX29mX2ZpbGUgcG9zIHBvc19lbmQgaW4KICAgICAgICAgICAgICAgIGxldCAo
Xyxjb21tZW50X29wdCkgPSAgTXlfaXIuanVzdF9hZnRlcl9zcGVjaWFsICFmaWxlX25hbWUgcyBp
bgogICAgICAgICAgICAgICAgW25hbWUsIGNvbW1lbnRfb3B0XQogICAgICAgICAgICB8IChuYW1l
LF8sY3QpIDo6ICgobmFtZTIsXyxjdDIpIGFzIGVsZTIpIDo6IHEgLT4KICAgICAgICAgICAgICAg
IGxldCBwb3MgPSBjdC5QYXJzZXRyZWUucHR5cF9sb2MuTG9jYXRpb24ubG9jX2VuZC5MZXhpbmcu
cG9zX2NudW0gaW4KICAgICAgICAgICAgICAgIGxldCBwb3MyID0gY3QyLlBhcnNldHJlZS5wdHlw
X2xvYy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4aW5nLnBvc19jbnVtIGluCiAgICAgICAgICAgICAg
ICBsZXQgcyA9IGdldF9zdHJpbmdfb2ZfZmlsZSBwb3MgcG9zMiBpbgogICAgICAgICAgICAgICAg
bGV0IChfLGNvbW1lbnRfb3B0KSA9ICBNeV9pci5qdXN0X2FmdGVyX3NwZWNpYWwgIWZpbGVfbmFt
ZSBzIGluCiAgICAgICAgICAgICAgICAobmFtZSwgY29tbWVudF9vcHQpIDo6IChmIChlbGUyIDo6
IHEpKQogICAgICAgICAgaW4KICAgICAgICAgICgwLCBmIG5hbWVfbXV0YWJsZV90eXBlX2xpc3Qp
CgogICAgbGV0IGdldF90eXBlX2tpbmQgZW52IG5hbWVfY29tbWVudF9saXN0IHR5cGVfa2luZCA9
CiAgICAgIG1hdGNoIHR5cGVfa2luZCB3aXRoCiAgICAgICAgVHlwZXMuVHlwZV9hYnN0cmFjdCAt
PgogICAgICAgICAgT2RvY190eXBlLlR5cGVfYWJzdHJhY3QKCiAgICAgIHwgVHlwZXMuVHlwZV92
YXJpYW50IChsLCBwcml2KSAtPgogICAgICAgICAgbGV0IGYgKGNvbnN0cnVjdG9yX25hbWUsIHR5
cGVfZXhwcl9saXN0KSA9CiAgICAgICAgICAgIGxldCBjb21tZW50X29wdCA9IAogICAgICAgICAg
ICAgIHRyeSAKICAgICAgICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgY29uc3RydWN0b3JfbmFt
ZSBuYW1lX2NvbW1lbnRfbGlzdCB3aXRoCiAgICAgICAgICAgICAgICAgIE5vbmUgLT4gTm9uZQog
ICAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZC5PZG9jX3R5cGVzLmlfZGVzYwogICAgICAgICAg
ICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUKICAgICAgICAgICAgaW4KICAgICAgICAgICAgewog
ICAgICAgICAgICAgIHZjX25hbWUgPSBjb25zdHJ1Y3Rvcl9uYW1lIDsKICAgICAgICAgICAgICB2
Y19hcmdzID0gTGlzdC5tYXAgKE9kb2NfZW52LnN1YnN0X3R5cGUgZW52KSB0eXBlX2V4cHJfbGlz
dCA7CiAgICAgICAgICAgICAgdmNfdGV4dCA9IGNvbW1lbnRfb3B0CiAgICAgICAgICAgIH0gCiAg
ICAgICAgICBpbgogICAgICAgICAgT2RvY190eXBlLlR5cGVfdmFyaWFudCAoTGlzdC5tYXAgZiBs
LCBwcml2ID0gQXN0dHlwZXMuUHJpdmF0ZSkKCiAgICAgIHwgVHlwZXMuVHlwZV9yZWNvcmQgKGws
IF8sIHByaXYpIC0+CiAgICAgICAgICBsZXQgZiAoZmllbGRfbmFtZSwgbXV0YWJsZV9mbGFnLCB0
eXBlX2V4cHIpID0KICAgICAgICAgICAgbGV0IGNvbW1lbnRfb3B0ID0gCiAgICAgICAgICAgICAg
dHJ5IAogICAgICAgICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBmaWVsZF9uYW1lIG5hbWVfY29t
bWVudF9saXN0IHdpdGgKICAgICAgICAgICAgICAgICAgTm9uZSAtPiBOb25lCiAgICAgICAgICAg
ICAgICB8IFNvbWUgZCAtPiBkLk9kb2NfdHlwZXMuaV9kZXNjCiAgICAgICAgICAgICAgd2l0aCBO
b3RfZm91bmQgLT4gTm9uZQogICAgICAgICAgICBpbgogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgcmZfbmFtZSA9IGZpZWxkX25hbWUgOwogICAgICAgICAgICAgIHJmX211dGFibGUgPSBtdXRh
YmxlX2ZsYWcgPSBNdXRhYmxlIDsKICAgICAgICAgICAgICByZl90eXBlID0gT2RvY19lbnYuc3Vi
c3RfdHlwZSBlbnYgdHlwZV9leHByIDsKICAgICAgICAgICAgICByZl90ZXh0ID0gY29tbWVudF9v
cHQKICAgICAgICAgICAgfSAKICAgICAgICAgIGluCiAgICAgICAgICBPZG9jX3R5cGUuVHlwZV9y
ZWNvcmQgKExpc3QubWFwIGYgbCwgcHJpdiA9IEFzdHR5cGVzLlByaXZhdGUpCgogICAgKCoqIEFu
YWx5c2lzIG9mIHRoZSBlbGVtZW50cyBvZiBhIGNsYXNzLCBmcm9tIHRoZSBpbmZvcm1hdGlvbiBp
biB0aGUgcGFyc2V0cmVlIGFuZCBpbiB0aGUgY2xhc3MKICAgICAgIHNpZ25hdHVyZS4gQHJldHVy
biB0aGUgY291cGxlIChpbmhlcml0ZWRfY2xhc3MgbGlzdCwgZWxlbWVudHMpLiopCiAgICBsZXQg
YW5hbHlzZV9jbGFzc19lbGVtZW50cyBlbnYgY3VycmVudF9jbGFzc19uYW1lIGxhc3RfcG9zIHBv
c19saW1pdCAKICAgICAgICBjbGFzc190eXBlX2ZpZWxkX2xpc3QgY2xhc3Nfc2lnbmF0dXJlID0K
CgoKCgogICAgICBsZXQgZ2V0X3Bvc19saW1pdDIgcSA9CiAgICAgICAgbWF0Y2ggcSB3aXRoCiAg
ICAgICAgICBbXSAtPiBwb3NfbGltaXQKICAgICAgICB8IGVsZTIgOjogXyAtPgogICAgICAgICAg
ICBtYXRjaCBlbGUyIHdpdGgKICAgICAgICAgICAgICBQYXJzZXRyZWUuUGN0Zl92YWwgKF8sIF8s
IF8sIGxvYykgIAogICAgICAgICAgICB8IFBhcnNldHJlZS5QY3RmX3ZpcnQgKF8sIF8sIF8sIGxv
YykKICAgICAgICAgICAgfCBQYXJzZXRyZWUuUGN0Zl9tZXRoIChfLCBfLCBfLCBsb2MpCiAgICAg
ICAgICAgIHwgUGFyc2V0cmVlLlBjdGZfY3N0ciAoXywgXywgbG9jKSAtPiBsb2MuTG9jYXRpb24u
bG9jX3N0YXJ0LkxleGluZy5wb3NfY251bQogICAgICAgICAgICB8IFBhcnNldHJlZS5QY3RmX2lu
aGVyIGNsYXNzX3R5cGUgLT4KICAgICAgICAgICAgICAgIGNsYXNzX3R5cGUuUGFyc2V0cmVlLnBj
dHlfbG9jLkxvY2F0aW9uLmxvY19zdGFydC5MZXhpbmcucG9zX2NudW0KICAgICAgaW4KICAgICAg
bGV0IGdldF9tZXRob2QgbmFtZSBjb21tZW50X29wdCBwcml2YXRlX2ZsYWcgbG9jIHEgPQogICAg
ICAgIGxldCBjb21wbGV0ZV9uYW1lID0gTmFtZS5jb25jYXQgY3VycmVudF9jbGFzc19uYW1lIG5h
bWUgaW4KICAgICAgICBsZXQgdHlwID0gCiAgICAgICAgICB0cnkgU2lnbmF0dXJlX3NlYXJjaC5z
ZWFyY2hfbWV0aG9kX3R5cGUgbmFtZSBjbGFzc19zaWduYXR1cmUKICAgICAgICAgIHdpdGggTm90
X2ZvdW5kIC0+CiAgICAgICAgICAgIHJhaXNlIChGYWlsdXJlIChPZG9jX21lc3NhZ2VzLm1ldGhv
ZF90eXBlX25vdF9mb3VuZCBjdXJyZW50X2NsYXNzX25hbWUgbmFtZSkpCiAgICAgICAgaW4KICAg
ICAgICBsZXQgc3Vic3RfdHlwID0gT2RvY19lbnYuc3Vic3RfdHlwZSBlbnYgdHlwIGluCiAgICAg
ICAgbGV0IG1ldCA9CiAgICAgICAgICB7CiAgICAgICAgICAgIG1ldF92YWx1ZSA9IAogICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgdmFsX25hbWUgPSBjb21wbGV0ZV9uYW1lIDsKICAgICAgICAg
ICAgICB2YWxfaW5mbyA9IGNvbW1lbnRfb3B0IDsKICAgICAgICAgICAgICB2YWxfdHlwZSA9IHN1
YnN0X3R5cCA7CiAgICAgICAgICAgICAgdmFsX3JlY3Vyc2l2ZSA9IGZhbHNlIDsKICAgICAgICAg
ICAgICB2YWxfcGFyYW1ldGVycyA9IE9kb2NfdmFsdWUuZHVtbXlfcGFyYW1ldGVyX2xpc3Qgc3Vi
c3RfdHlwIDsKICAgICAgICAgICAgICB2YWxfY29kZSA9IE5vbmUgOwogICAgICAgICAgICAgIHZh
bF9sb2MgPSB7IGxvY19pbXBsID0gTm9uZSA7IGxvY19pbnRlciA9IFNvbWUgKCFmaWxlX25hbWUs
IGxvYy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4aW5nLnBvc19jbnVtKSB9OwogICAgICAgICAgICB9
IDsKICAgICAgICAgICAgbWV0X3ByaXZhdGUgPSBwcml2YXRlX2ZsYWcgPSBBc3R0eXBlcy5Qcml2
YXRlIDsKICAgICAgICAgICAgbWV0X3ZpcnR1YWwgPSBmYWxzZSA7CiAgICAgICAgICB9CiAgICAg
ICAgaW4KICAgICAgICBsZXQgcG9zX2xpbWl0MiA9IGdldF9wb3NfbGltaXQyIHEgaW4KICAgICAg
ICBsZXQgcG9zX2VuZCA9IGxvYy5Mb2NhdGlvbi5sb2NfZW5kLkxleGluZy5wb3NfY251bSBpbgog
ICAgICAgIGxldCAobWF5YmVfbW9yZSwgaW5mb19hZnRlcl9vcHQpID0gCiAgICAgICAgICBNeV9p
ci5qdXN0X2FmdGVyX3NwZWNpYWwKICAgICAgICAgICAgIWZpbGVfbmFtZQogICAgICAgICAgICAo
Z2V0X3N0cmluZ19vZl9maWxlIHBvc19lbmQgcG9zX2xpbWl0MikKICAgICAgICBpbgogICAgICAg
IG1ldC5tZXRfdmFsdWUudmFsX2luZm8gPC0gbWVyZ2VfaW5mb3MgbWV0Lm1ldF92YWx1ZS52YWxf
aW5mbyBpbmZvX2FmdGVyX29wdCA7CiAgICAgICAgKCogdXBkYXRlIHRoZSBwYXJhbWV0ZXIgZGVz
Y3JpcHRpb24gKikKICAgICAgICBPZG9jX3ZhbHVlLnVwZGF0ZV92YWx1ZV9wYXJhbWV0ZXJzX3Rl
eHQgbWV0Lm1ldF92YWx1ZTsKCiAgICAgICAgKG1ldCwgbWF5YmVfbW9yZSkKICAgICAgaW4KICAg
ICAgbGV0IHJlYyBmIGxhc3RfcG9zIGNsYXNzX3R5cGVfZmllbGRfbGlzdCA9CiAgICAgICAgbWF0
Y2ggY2xhc3NfdHlwZV9maWVsZF9saXN0IHdpdGgKICAgICAgICAgIFtdIC0+CiAgICAgICAgICAg
IGxldCBzID0gZ2V0X3N0cmluZ19vZl9maWxlIGxhc3RfcG9zIHBvc19saW1pdCBpbgogICAgICAg
ICAgICBsZXQgKF8sIGVsZV9jb21zKSA9IE15X2lyLmFsbF9zcGVjaWFsICFmaWxlX25hbWUgcyBp
bgogICAgICAgICAgICBsZXQgZWxlX2NvbW1lbnRzID0KICAgICAgICAgICAgICBMaXN0LmZvbGRf
bGVmdAogICAgICAgICAgICAgICAgKGZ1biBhY2MgLT4gZnVuIHNjIC0+CiAgICAgICAgICAgICAg
ICAgIG1hdGNoIHNjLk9kb2NfdHlwZXMuaV9kZXNjIHdpdGgKICAgICAgICAgICAgICAgICAgICBO
b25lIC0+CiAgICAgICAgICAgICAgICAgICAgICBhY2MKICAgICAgICAgICAgICAgICAgfCBTb21l
IHQgLT4KICAgICAgICAgICAgICAgICAgICAgIGFjYyBAIFtDbGFzc19jb21tZW50IHRdKQogICAg
ICAgICAgICAgICAgW10KICAgICAgICAgICAgICAgIGVsZV9jb21zCiAgICAgICAgICAgIGluCiAg
ICAgICAgICAgIChbXSwgZWxlX2NvbW1lbnRzKQoKICAgICAgICB8IFBhcnNldHJlZS5QY3RmX3Zh
bCAobmFtZSwgbXV0YWJsZV9mbGFnLCBfLCBsb2MpIDo6IHEgLT4KICAgICAgICAgICAgKCogb2Yg
KHN0cmluZyAqIG11dGFibGVfZmxhZyAqIGNvcmVfdHlwZSBvcHRpb24gKiBMb2NhdGlvbi50KSop
CiAgICAgICAgICAgIGxldCAoY29tbWVudF9vcHQsIGVsZXNfY29tbWVudHMpID0gZ2V0X2NvbW1l
bnRzX2luX2NsYXNzIGxhc3RfcG9zIGxvYy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4aW5nLnBvc19j
bnVtIGluCiAgICAgICAgICAgIGxldCBjb21wbGV0ZV9uYW1lID0gTmFtZS5jb25jYXQgY3VycmVu
dF9jbGFzc19uYW1lIG5hbWUgaW4KICAgICAgICAgICAgbGV0IHR5cCA9IAogICAgICAgICAgICAg
IHRyeSBTaWduYXR1cmVfc2VhcmNoLnNlYXJjaF9hdHRyaWJ1dGVfdHlwZSBuYW1lIGNsYXNzX3Np
Z25hdHVyZQogICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+CiAgICAgICAgICAgICAgICBy
YWlzZSAoRmFpbHVyZSAoT2RvY19tZXNzYWdlcy5hdHRyaWJ1dGVfdHlwZV9ub3RfZm91bmQgY3Vy
cmVudF9jbGFzc19uYW1lIG5hbWUpKQogICAgICAgICAgICBpbgogICAgICAgICAgICBsZXQgc3Vi
c3RfdHlwID0gT2RvY19lbnYuc3Vic3RfdHlwZSBlbnYgdHlwIGluCiAgICAgICAgICAgIGxldCBh
dHQgPQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGF0dF92YWx1ZSA9IAogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICB2YWxfbmFtZSA9IGNvbXBsZXRlX25hbWUgOwog
ICAgICAgICAgICAgICAgICB2YWxfaW5mbyA9IGNvbW1lbnRfb3B0IDsKICAgICAgICAgICAgICAg
ICAgdmFsX3R5cGUgPSBzdWJzdF90eXA7CiAgICAgICAgICAgICAgICAgIHZhbF9yZWN1cnNpdmUg
PSBmYWxzZSA7CiAgICAgICAgICAgICAgICAgIHZhbF9wYXJhbWV0ZXJzID0gW10gOwogICAgICAg
ICAgICAgICAgICB2YWxfY29kZSA9IE5vbmUgOwogICAgICAgICAgICAgICAgICB2YWxfbG9jID0g
eyBsb2NfaW1wbCA9IE5vbmUgOyBsb2NfaW50ZXIgPSBTb21lICghZmlsZV9uYW1lLCBsb2MuTG9j
YXRpb24ubG9jX3N0YXJ0LkxleGluZy5wb3NfY251bSl9IDsKICAgICAgICAgICAgICAgIH0gOwog
ICAgICAgICAgICAgICAgYXR0X211dGFibGUgPSBtdXRhYmxlX2ZsYWcgPSBBc3R0eXBlcy5NdXRh
YmxlIDsKICAgICAgICAgICAgICB9IAogICAgICAgICAgICBpbgogICAgICAgICAgICBsZXQgcG9z
X2xpbWl0MiA9IGdldF9wb3NfbGltaXQyIHEgaW4KICAgICAgICAgICAgbGV0IHBvc19lbmQgPSBs
b2MuTG9jYXRpb24ubG9jX2VuZC5MZXhpbmcucG9zX2NudW0gaW4KICAgICAgICAgICAgbGV0ICht
YXliZV9tb3JlLCBpbmZvX2FmdGVyX29wdCkgPSAKICAgICAgICAgICAgICBNeV9pci5qdXN0X2Fm
dGVyX3NwZWNpYWwKICAgICAgICAgICAgICAgICFmaWxlX25hbWUKICAgICAgICAgICAgICAgIChn
ZXRfc3RyaW5nX29mX2ZpbGUgcG9zX2VuZCBwb3NfbGltaXQyKQogICAgICAgICAgICBpbgogICAg
ICAgICAgICBhdHQuYXR0X3ZhbHVlLnZhbF9pbmZvIDwtIG1lcmdlX2luZm9zIGF0dC5hdHRfdmFs
dWUudmFsX2luZm8gaW5mb19hZnRlcl9vcHQgOwogICAgICAgICAgICBsZXQgKGluaGVyX2wsIGVs
ZXMpID0gZiAocG9zX2VuZCArIG1heWJlX21vcmUpIHEgaW4KICAgICAgICAgICAgKGluaGVyX2ws
IGVsZXNfY29tbWVudHMgQCAoKENsYXNzX2F0dHJpYnV0ZSBhdHQpIDo6IGVsZXMpKQoKICAgICAg
ICB8IFBhcnNldHJlZS5QY3RmX3ZpcnQgKG5hbWUsIHByaXZhdGVfZmxhZywgXywgbG9jKSA6OiBx
IC0+CiAgICAgICAgICAgICgqIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiBjb3JlX3R5cGUg
KiBMb2NhdGlvbi50KSAqKQogICAgICAgICAgICBsZXQgKGNvbW1lbnRfb3B0LCBlbGVzX2NvbW1l
bnRzKSA9IGdldF9jb21tZW50c19pbl9jbGFzcyBsYXN0X3BvcyBsb2MuTG9jYXRpb24ubG9jX3N0
YXJ0LkxleGluZy5wb3NfY251bSBpbgogICAgICAgICAgICBsZXQgKG1ldCwgbWF5YmVfbW9yZSkg
PSBnZXRfbWV0aG9kIG5hbWUgY29tbWVudF9vcHQgcHJpdmF0ZV9mbGFnIGxvYyBxIGluCiAgICAg
ICAgICAgIGxldCBtZXQyID0geyBtZXQgd2l0aCBtZXRfdmlydHVhbCA9IHRydWUgfSBpbgogICAg
ICAgICAgICBsZXQgKGluaGVyX2wsIGVsZXMpID0gZiAobG9jLkxvY2F0aW9uLmxvY19lbmQuTGV4
aW5nLnBvc19jbnVtICsgbWF5YmVfbW9yZSkgcSBpbgogICAgICAgICAgICAoaW5oZXJfbCwgZWxl
c19jb21tZW50cyBAICgoQ2xhc3NfbWV0aG9kIG1ldDIpIDo6IGVsZXMpKQoKICAgICAgICB8IFBh
cnNldHJlZS5QY3RmX21ldGggKG5hbWUsIHByaXZhdGVfZmxhZywgXywgbG9jKSA6OiBxIC0+CiAg
ICAgICAgICAgICgqIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiBjb3JlX3R5cGUgKiBMb2Nh
dGlvbi50KSAqKQogICAgICAgICAgICBsZXQgKGNvbW1lbnRfb3B0LCBlbGVzX2NvbW1lbnRzKSA9
IGdldF9jb21tZW50c19pbl9jbGFzcyBsYXN0X3BvcyBsb2MuTG9jYXRpb24ubG9jX3N0YXJ0Lkxl
eGluZy5wb3NfY251bSBpbgogICAgICAgICAgICBsZXQgKG1ldCwgbWF5YmVfbW9yZSkgPSBnZXRf
bWV0aG9kIG5hbWUgY29tbWVudF9vcHQgcHJpdmF0ZV9mbGFnIGxvYyBxIGluCiAgICAgICAgICAg
IGxldCAoaW5oZXJfbCwgZWxlcykgPSBmIChsb2MuTG9jYXRpb24ubG9jX2VuZC5MZXhpbmcucG9z
X2NudW0gKyBtYXliZV9tb3JlKSBxIGluCiAgICAgICAgICAgIChpbmhlcl9sLCBlbGVzX2NvbW1l
bnRzIEAgKChDbGFzc19tZXRob2QgbWV0KSA6OiBlbGVzKSkKCiAgICAgICAgfCAoUGFyc2V0cmVl
LlBjdGZfY3N0ciAoXywgXywgbG9jKSkgOjogcSAtPgogICAgICAgICAgICAoKiBvZiAoY29yZV90
eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgKikKICAgICAgICAgICAgKCogQSBWT0lSIDog
Y2VsYSBjb3JyZXNwb25kIGF1eCBjb250cmFpbnRlcywgbm9uID8gb24gbmUgbGVzIGdhcmRlIHBh
cyBwb3VyIGwnaW5zdGFudCAqKQogICAgICAgICAgICBsZXQgKGNvbW1lbnRfb3B0LCBlbGVzX2Nv
bW1lbnRzKSA9IGdldF9jb21tZW50c19pbl9jbGFzcyBsYXN0X3BvcyBsb2MuTG9jYXRpb24ubG9j
X3N0YXJ0LkxleGluZy5wb3NfY251bSBpbgogICAgICAgICAgICBsZXQgKGluaGVyX2wsIGVsZXMp
ID0gZiBsb2MuTG9jYXRpb24ubG9jX2VuZC5MZXhpbmcucG9zX2NudW0gcSBpbgogICAgICAgICAg
ICAoaW5oZXJfbCwgZWxlc19jb21tZW50cyBAIGVsZXMpCiAgICAgIAogICAgICAgIHwgUGFyc2V0
cmVlLlBjdGZfaW5oZXIgY2xhc3NfdHlwZSA6OiBxIC0+CiAgICAgICAgICAgIGxldCBsb2MgPSBj
bGFzc190eXBlLlBhcnNldHJlZS5wY3R5X2xvYyBpbgogICAgICAgICAgICBsZXQgKGNvbW1lbnRf
b3B0LCBlbGVzX2NvbW1lbnRzKSA9IAogICAgICAgICAgICAgIGdldF9jb21tZW50c19pbl9jbGFz
cyBsYXN0X3BvcyBsb2MuTG9jYXRpb24ubG9jX3N0YXJ0LkxleGluZy5wb3NfY251bQogICAgICAg
ICAgICBpbgogICAgICAgICAgICBsZXQgcG9zX2xpbWl0MiA9IGdldF9wb3NfbGltaXQyIHEgaW4K
ICAgICAgICAgICAgbGV0IHBvc19lbmQgPSBsb2MuTG9jYXRpb24ubG9jX2VuZC5MZXhpbmcucG9z
X2NudW0gaW4KICAgICAgICAgICAgbGV0IChtYXliZV9tb3JlLCBpbmZvX2FmdGVyX29wdCkgPSAK
ICAgICAgICAgICAgICBNeV9pci5qdXN0X2FmdGVyX3NwZWNpYWwKICAgICAgICAgICAgICAgICFm
aWxlX25hbWUKICAgICAgICAgICAgICAgIChnZXRfc3RyaW5nX29mX2ZpbGUgcG9zX2VuZCBwb3Nf
bGltaXQyKQogICAgICAgICAgICBpbgogICAgICAgICAgICBsZXQgY29tbWVudF9vcHQyID0gbWVy
Z2VfaW5mb3MgY29tbWVudF9vcHQgaW5mb19hZnRlcl9vcHQgaW4KICAgICAgICAgICAgbGV0IHRl
eHRfb3B0ID0gbWF0Y2ggY29tbWVudF9vcHQyIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSBpIC0+
IGkuT2RvY190eXBlcy5pX2Rlc2MgaW4KICAgICAgICAgICAgbGV0IGluaCAgPSAKICAgICAgICAg
ICAgICBtYXRjaCBjbGFzc190eXBlLlBhcnNldHJlZS5wY3R5X2Rlc2Mgd2l0aAogICAgICAgICAg
ICAgICAgUGFyc2V0cmVlLlBjdHlfY29uc3RyIChsb25naWRlbnQsIF8pIC0+CiAgICAgICAgICAg
ICAgICAgICgqb2YgTG9uZ2lkZW50LnQgKiBjb3JlX3R5cGUgbGlzdCopCiAgICAgICAgICAgICAg
ICAgIGxldCBuYW1lID0gTmFtZS5mcm9tX2xvbmdpZGVudCBsb25naWRlbnQgaW4KICAgICAgICAg
ICAgICAgICAgbGV0IGljID0gCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgaWNfbmFtZSA9IE9kb2NfZW52LmZ1bGxfY2xhc3Nfb3JfY2xhc3NfdHlwZV9uYW1lIGVu
diBuYW1lIDsKICAgICAgICAgICAgICAgICAgICAgIGljX2NsYXNzID0gTm9uZSA7CiAgICAgICAg
ICAgICAgICAgICAgICBpY190ZXh0ID0gdGV4dF9vcHQgOwogICAgICAgICAgICAgICAgICAgIH0g
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAgICBpYwogICAg
CiAgICAgICAgICAgICAgfCBQYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgXyAKICAgICAgICAgICAg
ICB8IFBhcnNldHJlZS5QY3R5X2Z1biBfIC0+CiAgICAgICAgICAgICAgICAgICgqIHdlIGRvbid0
IGhhdmUgYSBuYW1lIGZvciB0aGUgY2xhc3Mgc2lnbmF0dXJlLCBzbyB3ZSBjYWxsIGl0ICJvYmpl
Y3QgLi4uIGVuZCIgICopCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBp
Y19uYW1lID0gT2RvY19tZXNzYWdlcy5vYmplY3RfZW5kIDsKICAgICAgICAgICAgICAgICAgICBp
Y19jbGFzcyA9IE5vbmUgOwogICAgICAgICAgICAgICAgICAgIGljX3RleHQgPSB0ZXh0X29wdCA7
CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgaW4KICAgICAgICAgICAgbGV0IChpbmhl
cl9sLCBlbGVzKSA9IGYgKHBvc19lbmQgKyBtYXliZV9tb3JlKSBxIGluCiAgICAgICAgICAgIChp
bmggOjogaW5oZXJfbCAsIGVsZXNfY29tbWVudHMgQCBlbGVzKQogICAgICBpbgogICAgICBmIGxh
c3RfcG9zIGNsYXNzX3R5cGVfZmllbGRfbGlzdAoKICAgICgqKiBBbmFseXNlIG9mIGEgLm1saSBw
YXJzZSB0cmVlLCB0byBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuCiAgICAgICBsYXN0
X3BvcyBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB3aGljaCBtYXkgYmUg
dXNlZCB0byBsb29rIGZvciBzcGVjaWFsIGNvbW1lbnRzLgogICAgKikKICAgIGxldCByZWMgYW5h
bHlzZV9wYXJzZXRyZWUgZW52IHNpZ25hdCBjdXJyZW50X21vZHVsZV9uYW1lIGxhc3RfcG9zIHBv
c19saW1pdCBzaWdfaXRlbV9saXN0ID0KICAgICAgbGV0IHRhYmxlID0gU2lnbmF0dXJlX3NlYXJj
aC50YWJsZSBzaWduYXQgaW4KICAgICAgKCogd2UgbG9vayBmb3IgdGhlIGNvbW1lbnQgb2YgZWFj
aCBpdGVtIHRoZW4gYW5hbHlzZSB0aGUgaXRlbSAqKQogICAgICBsZXQgcmVjIGYgYWNjX2VsZXMg
YWNjX2VudiBsYXN0X3BvcyA9IGZ1bmN0aW9uCiAgICAgICAgICBbXSAtPgogICAgICAgICAgICBs
ZXQgcyA9IGdldF9zdHJpbmdfb2ZfZmlsZSBsYXN0X3BvcyBwb3NfbGltaXQgaW4KICAgICAgICAg
ICAgbGV0IChfLCBlbGVfY29tcykgPSBNeV9pci5hbGxfc3BlY2lhbCAhZmlsZV9uYW1lIHMgaW4K
ICAgICAgICAgICAgbGV0IGVsZV9jb21tZW50cyA9CiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xl
ZnQKICAgICAgICAgICAgICAgIChmdW4gYWNjIC0+IGZ1biBzYyAtPgogICAgICAgICAgICAgICAg
ICBtYXRjaCBzYy5PZG9jX3R5cGVzLmlfZGVzYyB3aXRoCiAgICAgICAgICAgICAgICAgICAgTm9u
ZSAtPgogICAgICAgICAgICAgICAgICAgICAgYWNjCiAgICAgICAgICAgICAgICAgIHwgU29tZSB0
IC0+CiAgICAgICAgICAgICAgICAgICAgICBhY2MgQCBbRWxlbWVudF9tb2R1bGVfY29tbWVudCB0
XSkKICAgICAgICAgICAgICAgIFtdCiAgICAgICAgICAgICAgICBlbGVfY29tcwogICAgICAgICAg
ICBpbgogICAgICAgICAgICBhY2NfZWxlcyBAIGVsZV9jb21tZW50cwoKICAgICAgICB8IGVsZSA6
OiBxIC0+CiAgICAgICAgICAgIGxldCAoYXNzb2NfY29tLCBlbGVfY29tbWVudHMpID0gIGdldF9j
b21tZW50c19pbl9tb2R1bGUgCiAgICAgICAgICAgICAgICBsYXN0X3BvcwogICAgICAgICAgICAg
ICAgZWxlLlBhcnNldHJlZS5wc2lnX2xvYy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4aW5nLnBvc19j
bnVtCiAgICAgICAgICAgIGluCiAgICAgICAgICAgIGxldCAobWF5YmVfbW9yZSwgbmV3X2Vudiwg
ZWxlbWVudHMpID0gYW5hbHlzZV9zaWduYXR1cmVfaXRlbV9kZXNjCiAgICAgICAgICAgICAgICBh
Y2NfZW52CiAgICAgICAgICAgICAgICBzaWduYXQKICAgICAgICAgICAgICAgIHRhYmxlCiAgICAg
ICAgICAgICAgICBjdXJyZW50X21vZHVsZV9uYW1lCiAgICAgICAgICAgICAgICBlbGUuUGFyc2V0
cmVlLnBzaWdfbG9jLkxvY2F0aW9uLmxvY19zdGFydC5MZXhpbmcucG9zX2NudW0KICAgICAgICAg
ICAgICAgIGVsZS5QYXJzZXRyZWUucHNpZ19sb2MuTG9jYXRpb24ubG9jX2VuZC5MZXhpbmcucG9z
X2NudW0KICAgICAgICAgICAgICAgIChtYXRjaCBxIHdpdGggCiAgICAgICAgICAgICAgICAgIFtd
IC0+IHBvc19saW1pdCAKICAgICAgICAgICAgICAgIHwgZWxlMiA6OiBfIC0+IGVsZTIuUGFyc2V0
cmVlLnBzaWdfbG9jLkxvY2F0aW9uLmxvY19zdGFydC5MZXhpbmcucG9zX2NudW0KICAgICAgICAg
ICAgICAgICkKICAgICAgICAgICAgICAgIGFzc29jX2NvbQogICAgICAgICAgICAgICAgZWxlLlBh
cnNldHJlZS5wc2lnX2Rlc2MKICAgICAgICAgICAgaW4KICAgICAgICAgICAgZiAoYWNjX2VsZXMg
QCAoZWxlX2NvbW1lbnRzIEAgZWxlbWVudHMpKQogICAgICAgICAgICAgIG5ld19lbnYKICAgICAg
ICAgICAgICAoZWxlLlBhcnNldHJlZS5wc2lnX2xvYy5Mb2NhdGlvbi5sb2NfZW5kLkxleGluZy5w
b3NfY251bSArIG1heWJlX21vcmUpIAogICAgICAgICAgICAgICAgICAgKCogZm9yIHRoZSBjb21t
ZW50cyBvZiBjb25zdHJ1Y3RvcnMgaW4gdHlwZXMsIAogICAgICAgICAgICAgICAgICAgICAgd2hp
Y2ggYXJlIGFmdGVyIHRoZSBjb25zdHJ1Y3RvciBkZWZpbml0aW9uIGFuZCBjYW4KICAgICAgICAg
ICAgICAgICAgICAgIGdvIGJleW9uZCBlbGUuUGFyc2V0cmVlLnBzaWdfbG9jLkxvY2F0aW9uLmxv
Y19lbmQuTGV4aW5nLnBvc19jbnVtICopCiAgICAgICAgICAgICAgcQogICAgICBpbgogICAgICBm
IFtdIGVudiBsYXN0X3BvcyBzaWdfaXRlbV9saXN0CgogICAgKCoqIEFuYWx5c2UgdGhlIGdpdmVu
IHNpZ25hdHVyZV9pdGVtX2Rlc2MgdG8gY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZSBl
bGVtZW50CiAgICAgICAod2l0aCB0aGUgZ2l2ZW4gYXR0YWNoZWQgY29tbWVudCkuKikKICAgIGFu
ZCBhbmFseXNlX3NpZ25hdHVyZV9pdGVtX2Rlc2MgZW52IHNpZ25hdCB0YWJsZSBjdXJyZW50X21v
ZHVsZV9uYW1lIAogICAgICAgIHBvc19zdGFydF9lbGUgcG9zX2VuZF9lbGUgcG9zX2xpbWl0IGNv
bW1lbnRfb3B0IHNpZ19pdGVtX2Rlc2MgPQogICAgICAgIG1hdGNoIHNpZ19pdGVtX2Rlc2Mgd2l0
aAogICAgICAgICAgUGFyc2V0cmVlLlBzaWdfdmFsdWUgKG5hbWVfcHJlLCB2YWx1ZV9kZXNjKSAt
PgogICAgICAgICAgICBsZXQgdHlwZV9leHByID0gCiAgICAgICAgICAgICAgdHJ5IFNpZ25hdHVy
ZV9zZWFyY2guc2VhcmNoX3ZhbHVlIHRhYmxlIG5hbWVfcHJlCiAgICAgICAgICAgICAgd2l0aCBO
b3RfZm91bmQgLT4KICAgICAgICAgICAgICAgIHJhaXNlIChGYWlsdXJlIChPZG9jX21lc3NhZ2Vz
LnZhbHVlX25vdF9mb3VuZCBjdXJyZW50X21vZHVsZV9uYW1lIG5hbWVfcHJlKSkKICAgICAgICAg
ICAgaW4KICAgICAgICAgICAgbGV0IG5hbWUgPSBOYW1lLnBhcmVuc19pZl9pbmZpeCBuYW1lX3By
ZSBpbgogICAgICAgICAgICBsZXQgc3Vic3RfdHlwID0gT2RvY19lbnYuc3Vic3RfdHlwZSBlbnYg
dHlwZV9leHByIGluCiAgICAgICAgICAgIGxldCB2ID0gIAogICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIHZhbF9uYW1lID0gTmFtZS5jb25jYXQgY3VycmVudF9tb2R1bGVfbmFtZSBuYW1l
IDsKICAgICAgICAgICAgICAgIHZhbF9pbmZvID0gY29tbWVudF9vcHQgOwogICAgICAgICAgICAg
ICAgdmFsX3R5cGUgPSBzdWJzdF90eXAgOwogICAgICAgICAgICAgICAgdmFsX3JlY3Vyc2l2ZSA9
IGZhbHNlIDsKICAgICAgICAgICAgICAgIHZhbF9wYXJhbWV0ZXJzID0gT2RvY192YWx1ZS5kdW1t
eV9wYXJhbWV0ZXJfbGlzdCBzdWJzdF90eXAgOwogICAgICAgICAgICAgICAgdmFsX2NvZGUgPSBO
b25lIDsKICAgICAgICAgICAgICAgIHZhbF9sb2MgPSB7IGxvY19pbXBsID0gTm9uZSA7IGxvY19p
bnRlciA9IFNvbWUgKCFmaWxlX25hbWUsIHBvc19zdGFydF9lbGUpfQogICAgICAgICAgICAgIH0g
CiAgICAgICAgICAgIGluCiAgICAgICAgICAgIGxldCAobWF5YmVfbW9yZSwgaW5mb19hZnRlcl9v
cHQpID0gCiAgICAgICAgICAgICAgTXlfaXIuanVzdF9hZnRlcl9zcGVjaWFsCiAgICAgICAgICAg
ICAgICAhZmlsZV9uYW1lCiAgICAgICAgICAgICAgICAoZ2V0X3N0cmluZ19vZl9maWxlIHBvc19l
bmRfZWxlIHBvc19saW1pdCkKICAgICAgICAgICAgaW4KICAgICAgICAgICAgdi52YWxfaW5mbyA8
LSBtZXJnZV9pbmZvcyB2LnZhbF9pbmZvIGluZm9fYWZ0ZXJfb3B0IDsKICAgICAgICAgICAgKCog
dXBkYXRlIHRoZSBwYXJhbWV0ZXIgZGVzY3JpcHRpb24gKikKICAgICAgICAgICAgT2RvY192YWx1
ZS51cGRhdGVfdmFsdWVfcGFyYW1ldGVyc190ZXh0IHY7CgogICAgICAgICAgICBsZXQgbmV3X2Vu
diA9IE9kb2NfZW52LmFkZF92YWx1ZSBlbnYgdi52YWxfbmFtZSBpbgogICAgICAgICAgICAobWF5
YmVfbW9yZSwgbmV3X2VudiwgWyBFbGVtZW50X3ZhbHVlIHYgXSkKCiAgICAgICAgfCBQYXJzZXRy
ZWUuUHNpZ19leGNlcHRpb24gKG5hbWUsIGV4Y2VwdGlvbl9kZWNsKSAtPgogICAgICAgICAgICBs
ZXQgdHlwZXNfZXhjZXBfZGVjbCA9IAogICAgICAgICAgICAgIHRyeSBTaWduYXR1cmVfc2VhcmNo
LnNlYXJjaF9leGNlcHRpb24gdGFibGUgbmFtZSAgCiAgICAgICAgICAgICAgd2l0aCBOb3RfZm91
bmQgLT4gCiAgICAgICAgICAgICAgICByYWlzZSAoRmFpbHVyZSAoT2RvY19tZXNzYWdlcy5leGNl
cHRpb25fbm90X2ZvdW5kIGN1cnJlbnRfbW9kdWxlX25hbWUgbmFtZSkpCiAgICAgICAgICAgIGlu
CiAgICAgICAgICAgIGxldCBlID0KICAgICAgICAgICAgICB7IAogICAgICAgICAgICAgICAgZXhf
bmFtZSA9IE5hbWUuY29uY2F0IGN1cnJlbnRfbW9kdWxlX25hbWUgbmFtZSA7CiAgICAgICAgICAg
ICAgICBleF9pbmZvID0gY29tbWVudF9vcHQgOwogICAgICAgICAgICAgICAgZXhfYXJncyA9IExp
c3QubWFwIChPZG9jX2Vudi5zdWJzdF90eXBlIGVudikgdHlwZXNfZXhjZXBfZGVjbCA7CiAgICAg
ICAgICAgICAgICBleF9hbGlhcyA9IE5vbmUgOwogICAgICAgICAgICAgICAgZXhfbG9jID0geyBs
b2NfaW1wbCA9IE5vbmUgOyBsb2NfaW50ZXIgPSBTb21lICghZmlsZV9uYW1lLCBwb3Nfc3RhcnRf
ZWxlKSB9IDsKCQlleF9jb2RlID0gCgkJICAgKAogICAgICAgICAgICAgICAgICAgIGlmICFPZG9j
X2FyZ3Mua2VlcF9jb2RlIHRoZW4KICAgICAgICAgICAgICAgICAgICAgIFNvbWUgKGdldF9zdHJp
bmdfb2ZfZmlsZSBwb3Nfc3RhcnRfZWxlIChwb3NfZW5kX2VsZSArIHBvc19saW1pdCkpCiAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgTm9uZQogICAgICAgICAg
ICAgICAgICAgKSA7CiAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgaW4KICAgICAgICAgICAg
bGV0IChtYXliZV9tb3JlLCBpbmZvX2FmdGVyX29wdCkgPSAKICAgICAgICAgICAgICBNeV9pci5q
dXN0X2FmdGVyX3NwZWNpYWwKICAgICAgICAgICAgICAgICFmaWxlX25hbWUKICAgICAgICAgICAg
ICAgIChnZXRfc3RyaW5nX29mX2ZpbGUgcG9zX2VuZF9lbGUgcG9zX2xpbWl0KQogICAgICAgICAg
ICBpbgogICAgICAgICAgICBlLmV4X2luZm8gPC0gbWVyZ2VfaW5mb3MgZS5leF9pbmZvIGluZm9f
YWZ0ZXJfb3B0IDsKICAgICAgICAgICAgbGV0IG5ld19lbnYgPSBPZG9jX2Vudi5hZGRfZXhjZXB0
aW9uIGVudiBlLmV4X25hbWUgaW4KICAgICAgICAgICAgKG1heWJlX21vcmUsIG5ld19lbnYsIFsg
RWxlbWVudF9leGNlcHRpb24gZSBdKQoKICAgICAgICB8IFBhcnNldHJlZS5Qc2lnX3R5cGUgbmFt
ZV90eXBlX2RlY2xfbGlzdCAtPgogICAgICAgICAgICAoKiB3ZSBzdGFydCBieSBleHRlbmRpbmcg
dGhlIGVudmlyb25tZW50ICopCiAgICAgICAgICAgIGxldCBuZXdfZW52ID0KICAgICAgICAgICAg
ICBMaXN0LmZvbGRfbGVmdCAKICAgICAgICAgICAgICAgIChmdW4gYWNjX2VudiAtPiBmdW4gKG5h
bWUsIF8pIC0+CiAgICAgICAgICAgICAgICAgIGxldCBjb21wbGV0ZV9uYW1lID0gTmFtZS5jb25j
YXQgY3VycmVudF9tb2R1bGVfbmFtZSBuYW1lIGluCiAgICAgICAgICAgICAgICAgIE9kb2NfZW52
LmFkZF90eXBlIGFjY19lbnYgY29tcGxldGVfbmFtZQogICAgICAgICAgICAgICAgKQogICAgICAg
ICAgICAgICAgZW52CiAgICAgICAgICAgICAgICBuYW1lX3R5cGVfZGVjbF9saXN0CiAgICAgICAg
ICAgIGluCiAgICAgICAgICAgIGxldCByZWMgZiA/KGZpcnN0PWZhbHNlKSBhY2NfbWF5YmVfbW9y
ZSBsYXN0X3BvcyBuYW1lX3R5cGVfZGVjbF9saXN0ID0KICAgICAgICAgICAgICBtYXRjaCBuYW1l
X3R5cGVfZGVjbF9saXN0IHdpdGgKICAgICAgICAgICAgICAgIFtdIC0+IAogICAgICAgICAgICAg
ICAgICAoYWNjX21heWJlX21vcmUsIFtdKQogICAgICAgICAgICAgIHwgKG5hbWUsIHR5cGVfZGVj
bCkgOjogcSAtPgogICAgICAgICAgICAgICAgICBsZXQgKGFzc29jX2NvbSwgZWxlX2NvbW1lbnRz
KSA9CiAgICAgICAgICAgICAgICAgICAgaWYgZmlyc3QgdGhlbgogICAgICAgICAgICAgICAgICAg
ICAgKGNvbW1lbnRfb3B0LCBbXSkKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICBnZXRfY29tbWVudHNfaW5fbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgICAg
IGxhc3RfcG9zCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfZGVjbC5QYXJzZXRyZWUucHR5
cGVfbG9jLkxvY2F0aW9uLmxvY19zdGFydC5MZXhpbmcucG9zX2NudW0KICAgICAgICAgICAgICAg
ICAgaW4KICAgICAgICAgICAgICAgICAgbGV0IHBvc19saW1pdDIgPQogICAgICAgICAgICAgICAg
ICAgIG1hdGNoIHEgd2l0aAogICAgICAgICAgICAgICAgICAgICAgW10gLT4gcG9zX2xpbWl0CiAg
ICAgICAgICAgICAgICAgICAgfCAoXywgdGQpIDo6IF8gLT4gdGQuUGFyc2V0cmVlLnB0eXBlX2xv
Yy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4aW5nLnBvc19jbnVtCiAgICAgICAgICAgICAgICAgIGlu
CiAgICAgICAgICAgICAgICAgIGxldCAobWF5YmVfbW9yZSwgbmFtZV9jb21tZW50X2xpc3QpID0g
CiAgICAgICAgICAgICAgICAgICAgbmFtZV9jb21tZW50X2Zyb21fdHlwZV9raW5kCiAgICAgICAg
ICAgICAgICAgICAgICB0eXBlX2RlY2wuUGFyc2V0cmVlLnB0eXBlX2xvYy5Mb2NhdGlvbi5sb2Nf
c3RhcnQuTGV4aW5nLnBvc19jbnVtCiAgICAgICAgICAgICAgICAgICAgICB0eXBlX2RlY2wuUGFy
c2V0cmVlLnB0eXBlX2xvYy5Mb2NhdGlvbi5sb2NfZW5kLkxleGluZy5wb3NfY251bQogICAgICAg
ICAgICAgICAgICAgICAgcG9zX2xpbWl0MgogICAgICAgICAgICAgICAgICAgICAgdHlwZV9kZWNs
LlBhcnNldHJlZS5wdHlwZV9raW5kCiAgICAgICAgICAgICAgICAgIGluCgoKCiAgICAgICAgICAg
ICAgICAgICgqIGdldCB0aGUgaW5mb3JtYXRpb24gZm9yIHRoZSB0eXBlIGluIHRoZSBzaWduYXR1
cmUgKikKICAgICAgICAgICAgICAgICAgbGV0IHNpZ190eXBlX2RlY2wgPSAKICAgICAgICAgICAg
ICAgICAgICB0cnkgU2lnbmF0dXJlX3NlYXJjaC5zZWFyY2hfdHlwZSB0YWJsZSBuYW1lIAogICAg
ICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+CiAgICAgICAgICAgICAgICAgICAgICBy
YWlzZSAoRmFpbHVyZSAoT2RvY19tZXNzYWdlcy50eXBlX25vdF9mb3VuZCBjdXJyZW50X21vZHVs
ZV9uYW1lIG5hbWUpKQogICAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAgICAoKiBn
ZXQgdGhlIHR5cGUga2luZCB3aXRoIHRoZSBhc3NvY2lhdGVkIGNvbW1lbnRzICopCiAgICAgICAg
ICAgICAgICAgIGxldCB0eXBlX2tpbmQgPSBnZXRfdHlwZV9raW5kIG5ld19lbnYgbmFtZV9jb21t
ZW50X2xpc3Qgc2lnX3R5cGVfZGVjbC5UeXBlcy50eXBlX2tpbmQgaW4KCQkgIGxldCBsb2Nfc3Rh
cnQgPSB0eXBlX2RlY2wuUGFyc2V0cmVlLnB0eXBlX2xvYy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4
aW5nLnBvc19jbnVtIGluCiAgICAgICAgICAgICAgICAgIGxldCBuZXdfZW5kID0gdHlwZV9kZWNs
LlBhcnNldHJlZS5wdHlwZV9sb2MuTG9jYXRpb24ubG9jX2VuZC5MZXhpbmcucG9zX2NudW0gKyBt
YXliZV9tb3JlIGluCiAgICAgICAgICAgICAgICAgICgqIGFzc29jaWF0ZSB0aGUgY29tbWVudHMg
dG8gZWFjaCBjb25zdHJ1Y3RvciBhbmQgYnVpbGQgdGhlIFtUeXBlLnRfdHlwZV0gKikKICAgICAg
ICAgICAgICAgICAgbGV0IG5ld190eXBlID0KICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICB0eV9uYW1lID0gTmFtZS5jb25jYXQgY3VycmVudF9tb2R1bGVfbmFtZSBu
YW1lIDsKICAgICAgICAgICAgICAgICAgICAgIHR5X2luZm8gPSBhc3NvY19jb20gOwogICAgICAg
ICAgICAgICAgICAgICAgdHlfcGFyYW1ldGVycyA9IAoJCSAgICAgICAgTGlzdC5tYXAyIChmdW4g
cCAoY28sY24sXykgLT4KCQkJICAgICAgICAgICAgIChPZG9jX2Vudi5zdWJzdF90eXBlIG5ld19l
bnYgcCwKCQkJCSAgICAgIGNvLCBjbikKCQkJCSAgKSAKCQkJc2lnX3R5cGVfZGVjbC5UeXBlcy50
eXBlX3BhcmFtcyAKCQkJc2lnX3R5cGVfZGVjbC5UeXBlcy50eXBlX3ZhcmlhbmNlOwogICAgICAg
ICAgICAgICAgICAgICAgdHlfa2luZCA9IHR5cGVfa2luZCA7CiAgICAgICAgICAgICAgICAgICAg
ICB0eV9tYW5pZmVzdCA9IAogICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHNpZ190eXBlX2Rl
Y2wuVHlwZXMudHlwZV9tYW5pZmVzdCB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUg
LT4gTm9uZQogICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHQgLT4gU29tZSAoT2RvY19lbnYu
c3Vic3RfdHlwZSBuZXdfZW52IHQpKTsKICAgICAgICAgICAgICAgICAgICAgIHR5X2xvYyA9IAog
ICAgICAgICAgICAgICAgICAgICAgeyBsb2NfaW1wbCA9IE5vbmUgOyAKICAgICAgICAgICAgICAg
ICAgICAgICAgbG9jX2ludGVyID0gU29tZSAoIWZpbGVfbmFtZSxsb2Nfc3RhcnQpIDsKICAgICAg
ICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICB0eV9jb2RlID0gCgkJICAg
ICAgICAoCgkJCSBpZiAhT2RvY19hcmdzLmtlZXBfY29kZSB0aGVuCgkJCSAgIFNvbWUgKGdldF9z
dHJpbmdfb2ZfZmlsZSBsb2Nfc3RhcnQgbmV3X2VuZCkgCgkJCSBlbHNlCgkJCSAgIE5vbmUKCQkJ
KSA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpbgogICAgICAgICAg
ICAgICAgICBsZXQgKG1heWJlX21vcmUyLCBpbmZvX2FmdGVyX29wdCkgPSAKICAgICAgICAgICAg
ICAgICAgICBNeV9pci5qdXN0X2FmdGVyX3NwZWNpYWwKICAgICAgICAgICAgICAgICAgICAgICFm
aWxlX25hbWUKICAgICAgICAgICAgICAgICAgICAgIChnZXRfc3RyaW5nX29mX2ZpbGUgbmV3X2Vu
ZCBwb3NfbGltaXQyKQogICAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAgICBuZXdf
dHlwZS50eV9pbmZvIDwtIG1lcmdlX2luZm9zIG5ld190eXBlLnR5X2luZm8gaW5mb19hZnRlcl9v
cHQgOwogICAgICAgICAgICAgICAgICBsZXQgKG5ld19tYXliZV9tb3JlLCBlbGVzKSA9IGYgCiAg
ICAgICAgICAgICAgICAgICAgICAobWF5YmVfbW9yZSArIG1heWJlX21vcmUyKQogICAgICAgICAg
ICAgICAgICAgICAgKG5ld19lbmQgKyBtYXliZV9tb3JlMikKICAgICAgICAgICAgICAgICAgICAg
IHEKICAgICAgICAgICAgICAgICAgaW4KICAgICAgICAgICAgICAgICAgKG5ld19tYXliZV9tb3Jl
LCAoZWxlX2NvbW1lbnRzIEAgW0VsZW1lbnRfdHlwZSBuZXdfdHlwZV0pIEAgZWxlcykKICAgICAg
ICAgICAgaW4KICAgICAgICAgICAgbGV0IChtYXliZV9tb3JlLCB0eXBlcykgPSBmIH5maXJzdDog
dHJ1ZSAwIHBvc19zdGFydF9lbGUgbmFtZV90eXBlX2RlY2xfbGlzdCBpbgogICAgICAgICAgICAo
bWF5YmVfbW9yZSwgbmV3X2VudiwgdHlwZXMpCiAgICAgICAgICAgICAgCiAgICAgICAgfCBQYXJz
ZXRyZWUuUHNpZ19vcGVuIF8gLT4gKCogQSBWT0lSICopCiAgICAgICAgICAgIGxldCBlbGVfY29t
bWVudHMgPSBtYXRjaCBjb21tZW50X29wdCB3aXRoCiAgICAgICAgICAgICAgTm9uZSAtPiBbXQog
ICAgICAgICAgICB8IFNvbWUgaSAtPgogICAgICAgICAgICAgICAgbWF0Y2ggaS5pX2Rlc2Mgd2l0
aAogICAgICAgICAgICAgICAgICBOb25lIC0+IFtdCiAgICAgICAgICAgICAgICB8IFNvbWUgdCAt
PiBbRWxlbWVudF9tb2R1bGVfY29tbWVudCB0XQogICAgICAgICAgICBpbgogICAgICAgICAgICAo
MCwgZW52LCBlbGVfY29tbWVudHMpCgogICAgICAgIHwgUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChu
YW1lLCBtb2R1bGVfdHlwZSkgLT4KICAgICAgICAgICAgbGV0IGNvbXBsZXRlX25hbWUgPSBOYW1l
LmNvbmNhdCBjdXJyZW50X21vZHVsZV9uYW1lIG5hbWUgaW4KICAgICAgICAgICAgKCogZ2V0IHRo
ZSB0aGUgbW9kdWxlIHR5cGUgaW4gdGhlIHNpZ25hdHVyZSBieSB0aGUgbW9kdWxlIG5hbWUgKikK
ICAgICAgICAgICAgbGV0IHNpZ19tb2R1bGVfdHlwZSA9IAogICAgICAgICAgICAgIHRyeSBTaWdu
YXR1cmVfc2VhcmNoLnNlYXJjaF9tb2R1bGUgdGFibGUgbmFtZSAKICAgICAgICAgICAgICB3aXRo
IE5vdF9mb3VuZCAtPgogICAgICAgICAgICAgICAgcmFpc2UgKEZhaWx1cmUgKE9kb2NfbWVzc2Fn
ZXMubW9kdWxlX25vdF9mb3VuZCBjdXJyZW50X21vZHVsZV9uYW1lIG5hbWUpKQogICAgICAgICAg
ICBpbgogICAgICAgICAgICBsZXQgbW9kdWxlX2tpbmQgPSBhbmFseXNlX21vZHVsZV9raW5kIGVu
diBjb21wbGV0ZV9uYW1lIG1vZHVsZV90eXBlIHNpZ19tb2R1bGVfdHlwZSBpbgogICAgICAgICAg
ICBsZXQgbmV3X21vZHVsZSA9IAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG1fbmFt
ZSA9IGNvbXBsZXRlX25hbWUgOwogICAgICAgICAgICAgICAgbV90eXBlID0gc2lnX21vZHVsZV90
eXBlOwogICAgICAgICAgICAgICAgbV9pbmZvID0gY29tbWVudF9vcHQgOwogICAgICAgICAgICAg
ICAgbV9pc19pbnRlcmZhY2UgPSB0cnVlIDsKICAgICAgICAgICAgICAgIG1fZmlsZSA9ICFmaWxl
X25hbWUgOwogICAgICAgICAgICAgICAgbV9raW5kID0gbW9kdWxlX2tpbmQgOwogICAgICAgICAg
ICAgICAgbV9sb2MgPSB7IGxvY19pbXBsID0gTm9uZSA7IGxvY19pbnRlciA9IFNvbWUgKCFmaWxl
X25hbWUsIHBvc19zdGFydF9lbGUpIH0gOwogICAgICAgICAgICAgICAgbV90b3BfZGVwcyA9IFtd
IDsKICAgICAgICAgICAgICB9IAogICAgICAgICAgICBpbgogICAgICAgICAgICBsZXQgKG1heWJl
X21vcmUsIGluZm9fYWZ0ZXJfb3B0KSA9IAogICAgICAgICAgICAgIE15X2lyLmp1c3RfYWZ0ZXJf
c3BlY2lhbAogICAgICAgICAgICAgICAgIWZpbGVfbmFtZQogICAgICAgICAgICAgICAgKGdldF9z
dHJpbmdfb2ZfZmlsZSBwb3NfZW5kX2VsZSBwb3NfbGltaXQpCiAgICAgICAgICAgIGluCiAgICAg
ICAgICAgIG5ld19tb2R1bGUubV9pbmZvIDwtIG1lcmdlX2luZm9zIG5ld19tb2R1bGUubV9pbmZv
IGluZm9fYWZ0ZXJfb3B0IDsKICAgICAgICAgICAgbGV0IG5ld19lbnYgPSBPZG9jX2Vudi5hZGRf
bW9kdWxlIGVudiBuZXdfbW9kdWxlLm1fbmFtZSBpbgogICAgICAgICAgICBsZXQgbmV3X2VudjIg
PSAKICAgICAgICAgICAgICBtYXRjaCBuZXdfbW9kdWxlLm1fdHlwZSB3aXRoICgqIEEgVk9JUiA6
IGNlbGEgcGV1dC1pbCDqdHJlIFRtdHlfaWRlbnQgPyBkYW5zIGNlIGNhcywgb24gYXVyYWl0IHBh
cyBsYSBzaWduYXR1cmUgKikKICAgICAgICAgICAgICAgIFR5cGVzLlRtdHlfc2lnbmF0dXJlIHMg
LT4gT2RvY19lbnYuYWRkX3NpZ25hdHVyZSBuZXdfZW52IG5ld19tb2R1bGUubV9uYW1lIH5yZWw6
IChOYW1lLnNpbXBsZSBuZXdfbW9kdWxlLm1fbmFtZSkgcwogICAgICAgICAgICAgIHwgXyAtPiBu
ZXdfZW52CiAgICAgICAgICAgIGluCiAgICAgICAgICAgIChtYXliZV9tb3JlLCBuZXdfZW52Miwg
WyBFbGVtZW50X21vZHVsZSBuZXdfbW9kdWxlIF0pCgogICAgICAgIHwgUGFyc2V0cmVlLlBzaWdf
cmVjbW9kdWxlIGRlY2xzIC0+CgkgICAgKCogd2Ugc3RhcnQgYnkgZXh0ZW5kaW5nIHRoZSBlbnZp
cm9ubWVudCAqKQogICAgICAgICAgICBsZXQgbmV3X2VudiA9CiAgICAgICAgICAgICAgTGlzdC5m
b2xkX2xlZnQgCiAgICAgICAgICAgICAgICAoZnVuIGFjY19lbnYgLT4gZnVuIChuYW1lLCBfKSAt
PgogICAgICAgICAgICAgICAgICBsZXQgY29tcGxldGVfbmFtZSA9IE5hbWUuY29uY2F0IGN1cnJl
bnRfbW9kdWxlX25hbWUgbmFtZSBpbgogICAgICAgICAgICAgICAgICBsZXQgZSA9IE9kb2NfZW52
LmFkZF9tb2R1bGUgYWNjX2VudiBjb21wbGV0ZV9uYW1lIGluCiAgICAgICAgICAgICAgICAgICgq
IGdldCB0aGUgaW5mb3JtYXRpb24gZm9yIHRoZSBtb2R1bGUgaW4gdGhlIHNpZ25hdHVyZSAqKQog
ICAgICAgICAgICAgICAgICBsZXQgc2lnX21vZHVsZV90eXBlID0gCiAgICAgICAgICAgICAgICAg
ICAgdHJ5IFNpZ25hdHVyZV9zZWFyY2guc2VhcmNoX21vZHVsZSB0YWJsZSBuYW1lIAogICAgICAg
ICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+CiAgICAgICAgICAgICAgICAgICAgICByYWlz
ZSAoRmFpbHVyZSAoT2RvY19tZXNzYWdlcy5tb2R1bGVfbm90X2ZvdW5kIGN1cnJlbnRfbW9kdWxl
X25hbWUgbmFtZSkpCiAgICAgICAgICAgICAgICAgIGluCgkJICBtYXRjaCBzaWdfbW9kdWxlX3R5
cGUgd2l0aAogICAgICAgICAgICAgICAgICAgICgqIEEgVk9JUiA6IGNlbGEgcGV1dC1pbCDqdHJl
IFRtdHlfaWRlbnQgPyBkYW5zIGNlIGNhcywgb24gYXVyYWl0IHBhcyBsYSBzaWduYXR1cmUgKikK
ICAgICAgICAgICAgICAgICAgICBUeXBlcy5UbXR5X3NpZ25hdHVyZSBzIC0+IAoJCSAgICAgIE9k
b2NfZW52LmFkZF9zaWduYXR1cmUgZSBjb21wbGV0ZV9uYW1lIH5yZWw6IG5hbWUgcwoJCSAgfCBf
IC0+IAoKCQkgICAgICBlCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBlbnYKICAg
ICAgICAgICAgICAgIGRlY2xzCiAgICAgICAgICAgIGluCiAgICAgICAgICAgIGxldCByZWMgZiA/
KGZpcnN0PWZhbHNlKSBhY2NfbWF5YmVfbW9yZSBsYXN0X3BvcyBuYW1lX210eXBlX2xpc3QgPQog
ICAgICAgICAgICAgIG1hdGNoIG5hbWVfbXR5cGVfbGlzdCB3aXRoCiAgICAgICAgICAgICAgICBb
XSAtPiAKICAgICAgICAgICAgICAgICAgKGFjY19tYXliZV9tb3JlLCBbXSkKICAgICAgICAgICAg
ICB8IChuYW1lLCBtb2R0eXBlKSA6OiBxIC0+CgkJICBsZXQgY29tcGxldGVfbmFtZSA9IE5hbWUu
Y29uY2F0IGN1cnJlbnRfbW9kdWxlX25hbWUgbmFtZSBpbgoJCSAgbGV0IGxvY19zdGFydCA9IG1v
ZHR5cGUuUGFyc2V0cmVlLnBtdHlfbG9jLkxvY2F0aW9uLmxvY19zdGFydC5MZXhpbmcucG9zX2Nu
dW0gaW4KICAgICAgICAgICAgICAgICAgbGV0IGxvY19lbmQgPSBtb2R0eXBlLlBhcnNldHJlZS5w
bXR5X2xvYy5Mb2NhdGlvbi5sb2NfZW5kLkxleGluZy5wb3NfY251bSBpbgogICAgICAgICAgICAg
ICAgICBsZXQgKGFzc29jX2NvbSwgZWxlX2NvbW1lbnRzKSA9CiAgICAgICAgICAgICAgICAgICAg
aWYgZmlyc3QgdGhlbgogICAgICAgICAgICAgICAgICAgICAgKGNvbW1lbnRfb3B0LCBbXSkKICAg
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICBnZXRfY29tbWVudHNf
aW5fbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfcG9zCgkJCWxvY19zdGFydAog
ICAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAgICBsZXQgcG9zX2xpbWl0MiA9CiAg
ICAgICAgICAgICAgICAgICAgbWF0Y2ggcSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICBbXSAt
PiBwb3NfbGltaXQKICAgICAgICAgICAgICAgICAgICB8IChfLCBtdHkpIDo6IF8gLT4gbXR5LlBh
cnNldHJlZS5wbXR5X2xvYy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4aW5nLnBvc19jbnVtCiAgICAg
ICAgICAgICAgICAgIGluCiAgICAgICAgICAgICAgICAgICgqIGdldCB0aGUgaW5mb3JtYXRpb24g
Zm9yIHRoZSBtb2R1bGUgaW4gdGhlIHNpZ25hdHVyZSAqKQogICAgICAgICAgICAgICAgICBsZXQg
c2lnX21vZHVsZV90eXBlID0gCiAgICAgICAgICAgICAgICAgICAgdHJ5IFNpZ25hdHVyZV9zZWFy
Y2guc2VhcmNoX21vZHVsZSB0YWJsZSBuYW1lIAogICAgICAgICAgICAgICAgICAgIHdpdGggTm90
X2ZvdW5kIC0+CiAgICAgICAgICAgICAgICAgICAgICByYWlzZSAoRmFpbHVyZSAoT2RvY19tZXNz
YWdlcy5tb2R1bGVfbm90X2ZvdW5kIGN1cnJlbnRfbW9kdWxlX25hbWUgbmFtZSkpCiAgICAgICAg
ICAgICAgICAgIGluCiAgICAgICAgICAgICAgICAgICgqIGFzc29jaWF0ZSB0aGUgY29tbWVudHMg
dG8gZWFjaCBjb25zdHJ1Y3RvciBhbmQgYnVpbGQgdGhlIFtUeXBlLnRfdHlwZV0gKikKCQkgIGxl
dCBtb2R1bGVfa2luZCA9IGFuYWx5c2VfbW9kdWxlX2tpbmQgbmV3X2VudiBjb21wbGV0ZV9uYW1l
IG1vZHR5cGUgc2lnX21vZHVsZV90eXBlIGluCgkJICBsZXQgbmV3X21vZHVsZSA9IAoJCSAgICB7
CiAgICAgICAgICAgICAgICAgICAgICBtX25hbWUgPSBjb21wbGV0ZV9uYW1lIDsKICAgICAgICAg
ICAgICAgICAgICAgIG1fdHlwZSA9IHNpZ19tb2R1bGVfdHlwZTsKICAgICAgICAgICAgICAgICAg
ICAgIG1faW5mbyA9IGFzc29jX2NvbSA7CiAgICAgICAgICAgICAgICAgICAgICBtX2lzX2ludGVy
ZmFjZSA9IHRydWUgOwogICAgICAgICAgICAgICAgICAgICAgbV9maWxlID0gIWZpbGVfbmFtZSA7
CiAgICAgICAgICAgICAgICAgICAgICBtX2tpbmQgPSBtb2R1bGVfa2luZCA7CiAgICAgICAgICAg
ICAgICAgICAgICBtX2xvYyA9IHsgbG9jX2ltcGwgPSBOb25lIDsgbG9jX2ludGVyID0gU29tZSAo
IWZpbGVfbmFtZSwgcG9zX3N0YXJ0X2VsZSkgfSA7CiAgICAgICAgICAgICAgICAgICAgICBtX3Rv
cF9kZXBzID0gW10gOwoJCSAgICB9IAoJCSAgaW4KCQkgIGxldCAobWF5YmVfbW9yZSwgaW5mb19h
ZnRlcl9vcHQpID0gCgkJICAgIE15X2lyLmp1c3RfYWZ0ZXJfc3BlY2lhbAogICAgICAgICAgICAg
ICAgICAgICAgIWZpbGVfbmFtZQogICAgICAgICAgICAgICAgICAgICAgKGdldF9zdHJpbmdfb2Zf
ZmlsZSBsb2NfZW5kIHBvc19saW1pdDIpCgkJICBpbgoJCSAgbmV3X21vZHVsZS5tX2luZm8gPC0g
bWVyZ2VfaW5mb3MgbmV3X21vZHVsZS5tX2luZm8gaW5mb19hZnRlcl9vcHQgOwoKICAgICAgICAg
ICAgICAgICAgbGV0IChtYXliZV9tb3JlMiwgZWxlcykgPSBmIAogICAgICAgICAgICAgICAgICAg
ICAgbWF5YmVfbW9yZQogICAgICAgICAgICAgICAgICAgICAgKGxvY19lbmQgKyBtYXliZV9tb3Jl
KQogICAgICAgICAgICAgICAgICAgICAgcQogICAgICAgICAgICAgICAgICBpbgogICAgICAgICAg
ICAgICAgICAobWF5YmVfbW9yZTIsIChlbGVfY29tbWVudHMgQCBbRWxlbWVudF9tb2R1bGUgbmV3
X21vZHVsZV0pIEAgZWxlcykKICAgICAgICAgICAgaW4KICAgICAgICAgICAgbGV0IChtYXliZV9t
b3JlLCBtb2RzKSA9IGYgfmZpcnN0OiB0cnVlIDAgcG9zX3N0YXJ0X2VsZSBkZWNscyBpbgogICAg
ICAgICAgICAobWF5YmVfbW9yZSwgbmV3X2VudiwgbW9kcykgICAgICAgICAgICAgIAoKICAgICAg
ICB8IFBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKG5hbWUsIFBhcnNldHJlZS5QbW9kdHlwZV9hYnN0
cmFjdCkgLT4KICAgICAgICAgICAgbGV0IHNpZ19tdHlwZSA9IAogICAgICAgICAgICAgIHRyeSBT
aWduYXR1cmVfc2VhcmNoLnNlYXJjaF9tb2R1bGVfdHlwZSB0YWJsZSBuYW1lIAogICAgICAgICAg
ICAgIHdpdGggTm90X2ZvdW5kIC0+CiAgICAgICAgICAgICAgICByYWlzZSAoRmFpbHVyZSAoT2Rv
Y19tZXNzYWdlcy5tb2R1bGVfdHlwZV9ub3RfZm91bmQgY3VycmVudF9tb2R1bGVfbmFtZSBuYW1l
KSkKICAgICAgICAgICAgaW4KICAgICAgICAgICAgbGV0IGNvbXBsZXRlX25hbWUgPSBOYW1lLmNv
bmNhdCBjdXJyZW50X21vZHVsZV9uYW1lIG5hbWUgaW4KICAgICAgICAgICAgbGV0IG10ID0KICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBtdF9uYW1lID0gY29tcGxldGVfbmFtZSA7CiAg
ICAgICAgICAgICAgICBtdF9pbmZvID0gY29tbWVudF9vcHQgOwogICAgICAgICAgICAgICAgbXRf
dHlwZSA9IHNpZ19tdHlwZSA7CiAgICAgICAgICAgICAgICBtdF9pc19pbnRlcmZhY2UgPSB0cnVl
IDsKICAgICAgICAgICAgICAgIG10X2ZpbGUgPSAhZmlsZV9uYW1lIDsKICAgICAgICAgICAgICAg
IG10X2tpbmQgPSBOb25lIDsKICAgICAgICAgICAgICAgIG10X2xvYyA9IHsgbG9jX2ltcGwgPSBO
b25lIDsgbG9jX2ludGVyID0gU29tZSAoIWZpbGVfbmFtZSwgcG9zX3N0YXJ0X2VsZSkgfSA7CiAg
ICAgICAgICAgICAgfSAKICAgICAgICAgICAgaW4KICAgICAgICAgICAgbGV0IChtYXliZV9tb3Jl
LCBpbmZvX2FmdGVyX29wdCkgPSAKICAgICAgICAgICAgICBNeV9pci5qdXN0X2FmdGVyX3NwZWNp
YWwKICAgICAgICAgICAgICAgICFmaWxlX25hbWUKICAgICAgICAgICAgICAgIChnZXRfc3RyaW5n
X29mX2ZpbGUgcG9zX2VuZF9lbGUgcG9zX2xpbWl0KQogICAgICAgICAgICBpbgogICAgICAgICAg
ICBtdC5tdF9pbmZvIDwtIG1lcmdlX2luZm9zIG10Lm10X2luZm8gaW5mb19hZnRlcl9vcHQgOwog
ICAgICAgICAgICBsZXQgbmV3X2VudiA9IE9kb2NfZW52LmFkZF9tb2R1bGVfdHlwZSBlbnYgbXQu
bXRfbmFtZSBpbgogICAgICAgICAgICAobWF5YmVfbW9yZSwgbmV3X2VudiwgWyBFbGVtZW50X21v
ZHVsZV90eXBlIG10IF0pCgogICAgICAgIHwgUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAobmFtZSwg
UGFyc2V0cmVlLlBtb2R0eXBlX21hbmlmZXN0IG1vZHVsZV90eXBlKSAtPgogICAgICAgICAgICBs
ZXQgY29tcGxldGVfbmFtZSA9IE5hbWUuY29uY2F0IGN1cnJlbnRfbW9kdWxlX25hbWUgbmFtZSBp
bgogICAgICAgICAgICBsZXQgc2lnX210eXBlX29wdCA9IAogICAgICAgICAgICAgIHRyeSBTaWdu
YXR1cmVfc2VhcmNoLnNlYXJjaF9tb2R1bGVfdHlwZSB0YWJsZSBuYW1lIAogICAgICAgICAgICAg
IHdpdGggTm90X2ZvdW5kIC0+CiAgICAgICAgICAgICAgICByYWlzZSAoRmFpbHVyZSAoT2RvY19t
ZXNzYWdlcy5tb2R1bGVfdHlwZV9ub3RfZm91bmQgY3VycmVudF9tb2R1bGVfbmFtZSBuYW1lKSkK
ICAgICAgICAgICAgaW4KICAgICAgICAgICAgbGV0IG1vZHVsZV90eXBlX2tpbmQgPQogICAgICAg
ICAgICAgIG1hdGNoIHNpZ19tdHlwZV9vcHQgd2l0aAogICAgICAgICAgICAgIHwgU29tZSBzaWdf
bXR5cGUgLT4gU29tZSAoYW5hbHlzZV9tb2R1bGVfdHlwZV9raW5kIGVudiBjb21wbGV0ZV9uYW1l
IG1vZHVsZV90eXBlIHNpZ19tdHlwZSkKICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZQogICAg
ICAgICAgICBpbgogICAgICAgICAgICBsZXQgbXQgPSAKICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICBtdF9uYW1lID0gY29tcGxldGVfbmFtZSA7CiAgICAgICAgICAgICAgICBtdF9pbmZv
ID0gY29tbWVudF9vcHQgOwogICAgICAgICAgICAgICAgbXRfdHlwZSA9IHNpZ19tdHlwZV9vcHQg
OwogICAgICAgICAgICAgICAgbXRfaXNfaW50ZXJmYWNlID0gdHJ1ZSA7CiAgICAgICAgICAgICAg
ICBtdF9maWxlID0gIWZpbGVfbmFtZSA7CiAgICAgICAgICAgICAgICBtdF9raW5kID0gbW9kdWxl
X3R5cGVfa2luZCA7CiAgICAgICAgICAgICAgICBtdF9sb2MgPSB7IGxvY19pbXBsID0gTm9uZSA7
IGxvY19pbnRlciA9IFNvbWUgKCFmaWxlX25hbWUsIHBvc19zdGFydF9lbGUpIH0gOwogICAgICAg
ICAgICAgIH0gCiAgICAgICAgICAgIGluCiAgICAgICAgICAgIGxldCAobWF5YmVfbW9yZSwgaW5m
b19hZnRlcl9vcHQpID0gCiAgICAgICAgICAgICAgTXlfaXIuanVzdF9hZnRlcl9zcGVjaWFsCiAg
ICAgICAgICAgICAgICAhZmlsZV9uYW1lCiAgICAgICAgICAgICAgICAoZ2V0X3N0cmluZ19vZl9m
aWxlIHBvc19lbmRfZWxlIHBvc19saW1pdCkKICAgICAgICAgICAgaW4KICAgICAgICAgICAgbXQu
bXRfaW5mbyA8LSBtZXJnZV9pbmZvcyBtdC5tdF9pbmZvIGluZm9fYWZ0ZXJfb3B0IDsKICAgICAg
ICAgICAgbGV0IG5ld19lbnYgPSBPZG9jX2Vudi5hZGRfbW9kdWxlX3R5cGUgZW52IG10Lm10X25h
bWUgaW4KICAgICAgICAgICAgbGV0IG5ld19lbnYyID0KICAgICAgICAgICAgICBtYXRjaCBzaWdf
bXR5cGVfb3B0IHdpdGggKCogQSBWT0lSIDogY2VsYSBwZXV0LWlsIOp0cmUgVG10eV9pZGVudCA/
IGRhbnMgY2UgY2FzLCBvbiBhdXJhaXQgcGFzIGxhIHNpZ25hdHVyZSAqKQogICAgICAgICAgICAg
ICAgU29tZSAoVHlwZXMuVG10eV9zaWduYXR1cmUgcykgLT4gT2RvY19lbnYuYWRkX3NpZ25hdHVy
ZSBuZXdfZW52IG10Lm10X25hbWUgfnJlbDogKE5hbWUuc2ltcGxlIG10Lm10X25hbWUpIHMKICAg
ICAgICAgICAgICB8IF8gLT4gbmV3X2VudgogICAgICAgICAgICBpbgogICAgICAgICAgICAobWF5
YmVfbW9yZSwgbmV3X2VudjIsIFsgRWxlbWVudF9tb2R1bGVfdHlwZSBtdCBdKQoKICAgICAgICB8
IFBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgbW9kdWxlX3R5cGUgLT4KICAgICAgICAgICAgbGV0IHJl
YyBmID0gZnVuY3Rpb24KICAgICAgICAgICAgICAgIFBhcnNldHJlZS5QbXR5X2lkZW50IGxvbmdp
ZGVudCAtPgogICAgICAgICAgICAgICAgICBOYW1lLmZyb21fbG9uZ2lkZW50IGxvbmdpZGVudAog
ICAgICAgICAgICAgIHwgUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIF8gLT4gCiAgICAgICAgICAg
ICAgICAgICI/PyIKICAgICAgICAgICAgICB8IFBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgXyAtPgog
ICAgICAgICAgICAgICAgICAiPz8iCiAgICAgICAgICAgICAgfCBQYXJzZXRyZWUuUG10eV93aXRo
IChtdCwgXykgLT4KICAgICAgICAgICAgICAgICAgZiBtdC5QYXJzZXRyZWUucG10eV9kZXNjCiAg
ICAgICAgICAgIGluCiAgICAgICAgICAgIGxldCBpbSA9IAogICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIGltX25hbWUgPSBPZG9jX2Vudi5mdWxsX21vZHVsZV9vcl9tb2R1bGVfdHlwZV9u
YW1lIGVudiAoZiBtb2R1bGVfdHlwZS5QYXJzZXRyZWUucG10eV9kZXNjKSA7CiAgICAgICAgICAg
ICAgICBpbV9tb2R1bGUgPSBOb25lIDsKICAgICAgICAgICAgICB9IAogICAgICAgICAgICBpbgog
ICAgICAgICAgICAoMCwgZW52LCBbIEVsZW1lbnRfaW5jbHVkZWRfbW9kdWxlIGltIF0pICgqIEEg
Vk9JUiA6IOl0ZW5kcmUgbCdlbnZpcm9ubmVtZW50ID8gYXZlYyBxdW9pID8gKikKCiAgICAgICAg
fCBQYXJzZXRyZWUuUHNpZ19jbGFzcyBjbGFzc19kZXNjcmlwdGlvbl9saXN0IC0+CiAgICAgICAg
ICAgICgqIHdlIHN0YXJ0IGJ5IGV4dGVuZGluZyB0aGUgZW52aXJvbm1lbnQgKikKICAgICAgICAg
ICAgbGV0IG5ld19lbnYgPQogICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IAogICAgICAgICAg
ICAgICAgKGZ1biBhY2NfZW52IC0+IGZ1biBjbGFzc19kZXNjIC0+CiAgICAgICAgICAgICAgICAg
IGxldCBjb21wbGV0ZV9uYW1lID0gTmFtZS5jb25jYXQgY3VycmVudF9tb2R1bGVfbmFtZSBjbGFz
c19kZXNjLlBhcnNldHJlZS5wY2lfbmFtZSBpbgogICAgICAgICAgICAgICAgICBPZG9jX2Vudi5h
ZGRfY2xhc3MgYWNjX2VudiBjb21wbGV0ZV9uYW1lCiAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICAgICBlbnYKICAgICAgICAgICAgICAgIGNsYXNzX2Rlc2NyaXB0aW9uX2xpc3QKICAgICAg
ICAgICAgaW4KICAgICAgICAgICAgbGV0IHJlYyBmID8oZmlyc3Q9ZmFsc2UpIGFjY19tYXliZV9t
b3JlIGxhc3RfcG9zIGNsYXNzX2Rlc2NyaXB0aW9uX2xpc3QgPQogICAgICAgICAgICAgIG1hdGNo
IGNsYXNzX2Rlc2NyaXB0aW9uX2xpc3Qgd2l0aAogICAgICAgICAgICAgICAgW10gLT4KICAgICAg
ICAgICAgICAgICAgKGFjY19tYXliZV9tb3JlLCBbXSkKICAgICAgICAgICAgICB8IGNsYXNzX2Rl
c2MgOjogcSAtPgogICAgICAgICAgICAgICAgICBsZXQgKGFzc29jX2NvbSwgZWxlX2NvbW1lbnRz
KSA9CiAgICAgICAgICAgICAgICAgICAgaWYgZmlyc3QgdGhlbgogICAgICAgICAgICAgICAgICAg
ICAgKGNvbW1lbnRfb3B0LCBbXSkKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICBnZXRfY29tbWVudHNfaW5fbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgICAg
IGxhc3RfcG9zCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX2Rlc2MuUGFyc2V0cmVlLnBj
aV9sb2MuTG9jYXRpb24ubG9jX3N0YXJ0LkxleGluZy5wb3NfY251bQogICAgICAgICAgICAgICAg
ICBpbgogICAgICAgICAgICAgICAgICBsZXQgcG9zX2VuZCA9IGNsYXNzX2Rlc2MuUGFyc2V0cmVl
LnBjaV9sb2MuTG9jYXRpb24ubG9jX2VuZC5MZXhpbmcucG9zX2NudW0gaW4KICAgICAgICAgICAg
ICAgICAgbGV0IHBvc19saW1pdDIgPQogICAgICAgICAgICAgICAgICAgIG1hdGNoIHEgd2l0aAog
ICAgICAgICAgICAgICAgICAgICAgW10gLT4gcG9zX2xpbWl0CiAgICAgICAgICAgICAgICAgICAg
fCBjZCA6OiBfIC0+IGNkLlBhcnNldHJlZS5wY2lfbG9jLkxvY2F0aW9uLmxvY19zdGFydC5MZXhp
bmcucG9zX2NudW0KICAgICAgICAgICAgICAgICAgaW4KICAgICAgICAgICAgICAgICAgbGV0IG5h
bWUgPSBjbGFzc19kZXNjLlBhcnNldHJlZS5wY2lfbmFtZSBpbgogICAgICAgICAgICAgICAgICBs
ZXQgY29tcGxldGVfbmFtZSA9IE5hbWUuY29uY2F0IGN1cnJlbnRfbW9kdWxlX25hbWUgbmFtZSBp
bgogICAgICAgICAgICAgICAgICBsZXQgc2lnX2NsYXNzX2RlY2wgPSAKICAgICAgICAgICAgICAg
ICAgICB0cnkgU2lnbmF0dXJlX3NlYXJjaC5zZWFyY2hfY2xhc3MgdGFibGUgbmFtZQogICAgICAg
ICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+CiAgICAgICAgICAgICAgICAgICAgICByYWlz
ZSAoRmFpbHVyZSAoT2RvY19tZXNzYWdlcy5jbGFzc19ub3RfZm91bmQgY3VycmVudF9tb2R1bGVf
bmFtZSBuYW1lKSkKICAgICAgICAgICAgICAgICAgaW4KICAgICAgICAgICAgICAgICAgbGV0IHNp
Z19jbGFzc190eXBlID0gc2lnX2NsYXNzX2RlY2wuVHlwZXMuY3R5X3R5cGUgaW4KICAgICAgICAg
ICAgICAgICAgbGV0IChwYXJhbWV0ZXJzLCBjbGFzc19raW5kKSA9IAogICAgICAgICAgICAgICAg
ICAgIGFuYWx5c2VfY2xhc3Nfa2luZAogICAgICAgICAgICAgICAgICAgICBuZXdfZW52CiAgICAg
ICAgICAgICAgICAgICAgIGNvbXBsZXRlX25hbWUKICAgICAgICAgICAgICAgICAgICAgY2xhc3Nf
ZGVzYy5QYXJzZXRyZWUucGNpX2xvYy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4aW5nLnBvc19jbnVt
CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzX2Rlc2MuUGFyc2V0cmVlLnBjaV9leHByCiAgICAg
ICAgICAgICAgICAgICAgIHNpZ19jbGFzc190eXBlCiAgICAgICAgICAgICAgICAgaW4KICAgICAg
ICAgICAgICAgICBsZXQgbmV3X2NsYXNzID0KICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgY2xfbmFtZSA9IGNvbXBsZXRlX25hbWUgOwogICAgICAgICAgICAgICAgICAg
ICBjbF9pbmZvID0gYXNzb2NfY29tIDsKICAgICAgICAgICAgICAgICAgICAgY2xfdHlwZSA9IE9k
b2NfZW52LnN1YnN0X2NsYXNzX3R5cGUgZW52IHNpZ19jbGFzc190eXBlIDsKICAgICAgICAgICAg
ICAgICAgICAgY2xfdHlwZV9wYXJhbWV0ZXJzID0gc2lnX2NsYXNzX2RlY2wuVHlwZXMuY3R5X3Bh
cmFtczsKICAgICAgICAgICAgICAgICAgICAgY2xfdmlydHVhbCA9IGNsYXNzX2Rlc2MuUGFyc2V0
cmVlLnBjaV92aXJ0ID0gQXN0dHlwZXMuVmlydHVhbCA7CiAgICAgICAgICAgICAgICAgICAgIGNs
X2tpbmQgPSBjbGFzc19raW5kIDsKICAgICAgICAgICAgICAgICAgICAgY2xfcGFyYW1ldGVycyA9
IHBhcmFtZXRlcnMgOwogICAgICAgICAgICAgICAgICAgICBjbF9sb2MgPSB7IGxvY19pbXBsID0g
Tm9uZSA7IGxvY19pbnRlciA9IFNvbWUgKCFmaWxlX25hbWUsIHBvc19zdGFydF9lbGUpIH0gOwog
ICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAg
IGxldCAobWF5YmVfbW9yZSwgaW5mb19hZnRlcl9vcHQpID0gCiAgICAgICAgICAgICAgICAgICBN
eV9pci5qdXN0X2FmdGVyX3NwZWNpYWwKICAgICAgICAgICAgICAgICAgICAgIWZpbGVfbmFtZQog
ICAgICAgICAgICAgICAgICAgICAoZ2V0X3N0cmluZ19vZl9maWxlIHBvc19lbmQgcG9zX2xpbWl0
MikKICAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAgIG5ld19jbGFzcy5jbF9pbmZv
IDwtIG1lcmdlX2luZm9zIG5ld19jbGFzcy5jbF9pbmZvIGluZm9fYWZ0ZXJfb3B0IDsKICAgICAg
ICAgICAgICAgICBPZG9jX2NsYXNzLmNsYXNzX3VwZGF0ZV9wYXJhbWV0ZXJzX3RleHQgbmV3X2Ns
YXNzIDsKICAgICAgICAgICAgICAgICBsZXQgKG5ld19tYXliZV9tb3JlLCBlbGVzKSA9IAogICAg
ICAgICAgICAgICAgICAgZiBtYXliZV9tb3JlIChwb3NfZW5kICsgbWF5YmVfbW9yZSkgcQogICAg
ICAgICAgICAgICAgIGluCiAgICAgICAgICAgICAgICAgKG5ld19tYXliZV9tb3JlLAogICAgICAg
ICAgICAgICAgICBlbGVfY29tbWVudHMgQCAoKCBFbGVtZW50X2NsYXNzIG5ld19jbGFzcyApIDo6
IGVsZXMpKQogICAgICAgICAgICBpbgogICAgICAgICAgICBsZXQgKG1heWJlX21vcmUsIGVsZXMp
ID0gCiAgICAgICAgICAgICAgZiB+Zmlyc3Q6IHRydWUgMCBwb3Nfc3RhcnRfZWxlIGNsYXNzX2Rl
c2NyaXB0aW9uX2xpc3QKICAgICAgICAgICAgaW4KICAgICAgICAgICAgKG1heWJlX21vcmUsIG5l
d19lbnYsIGVsZXMpCgogICAgICAgIHwgUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSBjbGFzc190
eXBlX2RlY2xhcmF0aW9uX2xpc3QgLT4KICAgICAgICAgICAgKCogd2Ugc3RhcnQgYnkgZXh0ZW5k
aW5nIHRoZSBlbnZpcm9ubWVudCAqKQogICAgICAgICAgICBsZXQgbmV3X2VudiA9CiAgICAgICAg
ICAgICAgTGlzdC5mb2xkX2xlZnQgCiAgICAgICAgICAgICAgICAoZnVuIGFjY19lbnYgLT4gZnVu
IGNsYXNzX3R5cGVfZGVjbCAtPgogICAgICAgICAgICAgICAgICBsZXQgY29tcGxldGVfbmFtZSA9
IE5hbWUuY29uY2F0IGN1cnJlbnRfbW9kdWxlX25hbWUgY2xhc3NfdHlwZV9kZWNsLlBhcnNldHJl
ZS5wY2lfbmFtZSBpbgogICAgICAgICAgICAgICAgICBPZG9jX2Vudi5hZGRfY2xhc3NfdHlwZSBh
Y2NfZW52IGNvbXBsZXRlX25hbWUKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIGVu
dgogICAgICAgICAgICAgICAgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0CiAgICAgICAgICAg
IGluCiAgICAgICAgICAgIGxldCByZWMgZiA/KGZpcnN0PWZhbHNlKSBhY2NfbWF5YmVfbW9yZSBs
YXN0X3BvcyBjbGFzc190eXBlX2Rlc2NyaXB0aW9uX2xpc3QgPQogICAgICAgICAgICAgIG1hdGNo
IGNsYXNzX3R5cGVfZGVzY3JpcHRpb25fbGlzdCB3aXRoCiAgICAgICAgICAgICAgICBbXSAtPgog
ICAgICAgICAgICAgICAgICAoYWNjX21heWJlX21vcmUsIFtdKQogICAgICAgICAgICAgIHwgY3Rf
ZGVjbCA6OiBxIC0+CiAgICAgICAgICAgICAgICAgIGxldCAoYXNzb2NfY29tLCBlbGVfY29tbWVu
dHMpID0KICAgICAgICAgICAgICAgICAgICBpZiBmaXJzdCB0aGVuCiAgICAgICAgICAgICAgICAg
ICAgICAoY29tbWVudF9vcHQsIFtdKQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgIGdldF9jb21tZW50c19pbl9tb2R1bGUKICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdF9wb3MKICAgICAgICAgICAgICAgICAgICAgICAgY3RfZGVjbC5QYXJzZXRyZWUucGNp
X2xvYy5Mb2NhdGlvbi5sb2Nfc3RhcnQuTGV4aW5nLnBvc19jbnVtCiAgICAgICAgICAgICAgICAg
IGluCiAgICAgICAgICAgICAgICAgIGxldCBwb3NfZW5kID0gY3RfZGVjbC5QYXJzZXRyZWUucGNp
X2xvYy5Mb2NhdGlvbi5sb2NfZW5kLkxleGluZy5wb3NfY251bSBpbgogICAgICAgICAgICAgICAg
ICBsZXQgcG9zX2xpbWl0MiA9CiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcSB3aXRoCiAgICAg
ICAgICAgICAgICAgICAgICBbXSAtPiBwb3NfbGltaXQKICAgICAgICAgICAgICAgICAgICB8IGN0
X2RlY2wyIDo6IF8gLT4gY3RfZGVjbDIuUGFyc2V0cmVlLnBjaV9sb2MuTG9jYXRpb24ubG9jX3N0
YXJ0LkxleGluZy5wb3NfY251bQogICAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAg
ICBsZXQgbmFtZSA9IGN0X2RlY2wuUGFyc2V0cmVlLnBjaV9uYW1lIGluCiAgICAgICAgICAgICAg
ICAgIGxldCBjb21wbGV0ZV9uYW1lID0gTmFtZS5jb25jYXQgY3VycmVudF9tb2R1bGVfbmFtZSBu
YW1lIGluCiAgICAgICAgICAgICAgICAgIGxldCBzaWdfY2x0eXBlX2RlY2wgPSAKICAgICAgICAg
ICAgICAgICAgICB0cnkgU2lnbmF0dXJlX3NlYXJjaC5zZWFyY2hfY2xhc3NfdHlwZSB0YWJsZSBu
YW1lCiAgICAgICAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4KICAgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIChGYWlsdXJlIChPZG9jX21lc3NhZ2VzLmNsYXNzX3R5cGVfbm90X2ZvdW5k
IGN1cnJlbnRfbW9kdWxlX25hbWUgbmFtZSkpCiAgICAgICAgICAgICAgICAgIGluCiAgICAgICAg
ICAgICAgICAgIGxldCBzaWdfY2xhc3NfdHlwZSA9IHNpZ19jbHR5cGVfZGVjbC5UeXBlcy5jbHR5
X3R5cGUgaW4KICAgICAgICAgICAgICAgICAgbGV0IGtpbmQgPSBhbmFseXNlX2NsYXNzX3R5cGVf
a2luZAogICAgICAgICAgICAgICAgICAgICAgbmV3X2VudgogICAgICAgICAgICAgICAgICAgICAg
Y29tcGxldGVfbmFtZSAKICAgICAgICAgICAgICAgICAgICAgIGN0X2RlY2wuUGFyc2V0cmVlLnBj
aV9sb2MuTG9jYXRpb24ubG9jX3N0YXJ0LkxleGluZy5wb3NfY251bQogICAgICAgICAgICAgICAg
ICAgICAgY3RfZGVjbC5QYXJzZXRyZWUucGNpX2V4cHIKICAgICAgICAgICAgICAgICAgICAgIHNp
Z19jbGFzc190eXBlCiAgICAgICAgICAgICAgICAgIGluCiAgICAgICAgICAgICAgICAgIGxldCBj
dCA9IAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgIGNsdF9uYW1l
ID0gY29tcGxldGVfbmFtZSA7CiAgICAgICAgICAgICAgICAgICAgICBjbHRfaW5mbyA9IGFzc29j
X2NvbSA7CiAgICAgICAgICAgICAgICAgICAgICBjbHRfdHlwZSA9IE9kb2NfZW52LnN1YnN0X2Ns
YXNzX3R5cGUgZW52IHNpZ19jbGFzc190eXBlIDsKICAgICAgICAgICAgICAgICAgICAgIGNsdF90
eXBlX3BhcmFtZXRlcnMgPSBzaWdfY2x0eXBlX2RlY2wuY2x0eV9wYXJhbXMgOwogICAgICAgICAg
ICAgICAgICAgICAgY2x0X3ZpcnR1YWwgPSBjdF9kZWNsLlBhcnNldHJlZS5wY2lfdmlydCA9IEFz
dHR5cGVzLlZpcnR1YWwgOwogICAgICAgICAgICAgICAgICAgICAgY2x0X2tpbmQgPSBraW5kIDsK
ICAgICAgICAgICAgICAgICAgICAgIGNsdF9sb2MgPSB7IGxvY19pbXBsID0gTm9uZSA7IGxvY19p
bnRlciA9IFNvbWUgKCFmaWxlX25hbWUsIHBvc19zdGFydF9lbGUpIH0gOwogICAgICAgICAgICAg
ICAgICAgIH0gCiAgICAgICAgICAgICAgICAgIGluCiAgICAgICAgICAgICAgICAgIGxldCAobWF5
YmVfbW9yZSwgaW5mb19hZnRlcl9vcHQpID0gCiAgICAgICAgICAgICAgICAgICAgTXlfaXIuanVz
dF9hZnRlcl9zcGVjaWFsCiAgICAgICAgICAgICAgICAgICAgICAhZmlsZV9uYW1lCiAgICAgICAg
ICAgICAgICAgICAgICAoZ2V0X3N0cmluZ19vZl9maWxlIHBvc19lbmQgcG9zX2xpbWl0MikKICAg
ICAgICAgICAgICAgICAgaW4KICAgICAgICAgICAgICAgICAgY3QuY2x0X2luZm8gPC0gbWVyZ2Vf
aW5mb3MgY3QuY2x0X2luZm8gaW5mb19hZnRlcl9vcHQgOwogICAgICAgICAgICAgICAgICBsZXQg
KG5ld19tYXliZV9tb3JlLCBlbGVzKSA9IAogICAgICAgICAgICAgICAgICAgIGYgbWF5YmVfbW9y
ZSAocG9zX2VuZCArIG1heWJlX21vcmUpIHEKICAgICAgICAgICAgICAgICAgaW4KICAgICAgICAg
ICAgICAgICAobmV3X21heWJlX21vcmUsCiAgICAgICAgICAgICAgICAgIGVsZV9jb21tZW50cyBA
ICgoIEVsZW1lbnRfY2xhc3NfdHlwZSBjdCkgOjogZWxlcykpCiAgICAgICAgICAgIGluCiAgICAg
ICAgICAgIGxldCAobWF5YmVfbW9yZSwgZWxlcykgPSAKICAgICAgICAgICAgICBmIH5maXJzdDog
dHJ1ZSAwIHBvc19zdGFydF9lbGUgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0CiAgICAgICAg
ICAgIGluCiAgICAgICAgICAgIChtYXliZV9tb3JlLCBuZXdfZW52LCBlbGVzKQoKICAgICgqKiBS
ZXR1cm4gYSBtb2R1bGVfdHlwZV9raW5kIGZyb20gYSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgYW5k
IGEgVHlwZXMubW9kdWxlX3R5cGUgKikKICAgIGFuZCBhbmFseXNlX21vZHVsZV90eXBlX2tpbmQg
ZW52IGN1cnJlbnRfbW9kdWxlX25hbWUgbW9kdWxlX3R5cGUgc2lnX21vZHVsZV90eXBlID0KICAg
ICAgbWF0Y2ggbW9kdWxlX3R5cGUuUGFyc2V0cmVlLnBtdHlfZGVzYyB3aXRoCiAgICAgICAgUGFy
c2V0cmVlLlBtdHlfaWRlbnQgbG9uZ2lkZW50IC0+CiAgICAgICAgICBsZXQgbmFtZSA9IAogICAg
ICAgICAgICBtYXRjaCBzaWdfbW9kdWxlX3R5cGUgd2l0aAogICAgICAgICAgICAgIFR5cGVzLlRt
dHlfaWRlbnQgcGF0aCAtPiBOYW1lLmZyb21fcGF0aCBwYXRoCiAgICAgICAgICAgIHwgXyAtPiBO
YW1lLmZyb21fbG9uZ2lkZW50IGxvbmdpZGVudCAKICAgICAgICAgICAgICAoKiBBIFZPSVIgY2Vs
YSBhcnJpdmUgcXVhbmQgb24gZmFpdCBtb2R1bGUgdHlwZSBGIDogZnVuY3RvciAuLi4gLT4gVG90
bywgVG90byBuJ2VzdCBwYXMgdW4gaWRlbnQgbWFpcyB1bmUgc3RydWN0dXJlICopCiAgICAgICAg
ICBpbgogICAgICAgICAgTW9kdWxlX3R5cGVfYWxpYXMgeyBtdGFfbmFtZSA9IE9kb2NfZW52LmZ1
bGxfbW9kdWxlX3R5cGVfbmFtZSBlbnYgbmFtZSA7IAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtdGFfbW9kdWxlID0gTm9uZSB9CgogICAgICB8IFBhcnNldHJlZS5QbXR5X3NpZ25hdHVy
ZSBhc3QgLT4KICAgICAgICAgICgKICAgICAgICAgICAoKiB3ZSBtdXN0IGhhdmUgYSBzaWduYXR1
cmUgaW4gdGhlIG1vZHVsZSB0eXBlICopCiAgICAgICAgICAgbWF0Y2ggc2lnX21vZHVsZV90eXBl
IHdpdGgKICAgICAgICAgICAgIFR5cGVzLlRtdHlfc2lnbmF0dXJlIHNpZ25hdCAtPgogICAgICAg
ICAgICAgICBsZXQgcG9zX3N0YXJ0ID0gbW9kdWxlX3R5cGUuUGFyc2V0cmVlLnBtdHlfbG9jLkxv
Y2F0aW9uLmxvY19zdGFydC5MZXhpbmcucG9zX2NudW0gaW4KICAgICAgICAgICAgICAgbGV0IHBv
c19lbmQgPSBtb2R1bGVfdHlwZS5QYXJzZXRyZWUucG10eV9sb2MuTG9jYXRpb24ubG9jX2VuZC5M
ZXhpbmcucG9zX2NudW0gaW4KICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gYW5hbHlzZV9w
YXJzZXRyZWUgZW52IHNpZ25hdCBjdXJyZW50X21vZHVsZV9uYW1lIHBvc19zdGFydCBwb3NfZW5k
IGFzdCBpbgogICAgICAgICAgICAgICBNb2R1bGVfdHlwZV9zdHJ1Y3QgZWxlbWVudHMKICAgICAg
ICAgICB8IF8gLT4KICAgICAgICAgICAgICAgcmFpc2UgKEZhaWx1cmUgIlBhcnNldHJlZS5QbXR5
X3NpZ25hdHVyZSBzaWduYXR1cmUgYnV0IG5vdCBUeXBlcy5UbXR5X3NpZ25hdHVyZSBzaWduYXQi
KQogICAgICAgICAgKQogICAgICAgICAgICAKICAgICAgfCBQYXJzZXRyZWUuUG10eV9mdW5jdG9y
IChfLF8sIG1vZHVsZV90eXBlMikgLT4KICAgICAgICAgICgKICAgICAgICAgICBtYXRjaCBzaWdf
bW9kdWxlX3R5cGUgd2l0aAogICAgICAgICAgICAgVHlwZXMuVG10eV9mdW5jdG9yIChpZGVudCwg
cGFyYW1fbW9kdWxlX3R5cGUsIGJvZHlfbW9kdWxlX3R5cGUpIC0+CiAgICAgICAgICAgICAgIGxl
dCBwYXJhbSA9IAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIG1wX25hbWUg
PSBOYW1lLmZyb21faWRlbnQgaWRlbnQgOwogICAgICAgICAgICAgICAgICAgbXBfdHlwZSA9IE9k
b2NfZW52LnN1YnN0X21vZHVsZV90eXBlIGVudiBwYXJhbV9tb2R1bGVfdHlwZSA7CiAgICAgICAg
ICAgICAgICAgfSAKICAgICAgICAgICAgICAgaW4KICAgICAgICAgICAgICAgKAogICAgICAgICAg
ICAgICAgbWF0Y2ggYW5hbHlzZV9tb2R1bGVfdHlwZV9raW5kIGVudiBjdXJyZW50X21vZHVsZV9u
YW1lIG1vZHVsZV90eXBlMiBib2R5X21vZHVsZV90eXBlIHdpdGgKICAgICAgICAgICAgICAgICAg
TW9kdWxlX3R5cGVfZnVuY3RvciAocGFyYW1zLCBrKSAtPgogICAgICAgICAgICAgICAgICAgIE1v
ZHVsZV90eXBlX2Z1bmN0b3IgKHBhcmFtIDo6IHBhcmFtcywgaykKICAgICAgICAgICAgICAgIHwg
ayAtPgogICAgICAgICAgICAgICAgICAgIE1vZHVsZV90eXBlX2Z1bmN0b3IgKFtwYXJhbV0sIGsp
CiAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgfCBfIC0+CiAgICAgICAgICAgICAgICgqIGlm
IHdlJ3JlIGhlcmUgc29tZXRoaW5nJ3Mgd3JvbmcgKikKICAgICAgICAgICAgICAgcmFpc2UgKEZh
aWx1cmUgIlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgXyBidXQgbm90IFR5cGVzLlRtdHlfZnVuY3Rv
ciBfIikKICAgICAgICAgICkKCiAgICAgIHwgUGFyc2V0cmVlLlBtdHlfd2l0aCAobW9kdWxlX3R5
cGUyLCBfKSAtPgogICAgICAgICAgKCogb2YgbW9kdWxlX3R5cGUgKiAoTG9uZ2lkZW50LnQgKiB3
aXRoX2NvbnN0cmFpbnQpIGxpc3QgKikKICAgICAgICAgICgKICAgICAgICAgICBsZXQgbG9jX3N0
YXJ0ID0gbW9kdWxlX3R5cGUyLlBhcnNldHJlZS5wbXR5X2xvYy5Mb2NhdGlvbi5sb2NfZW5kLkxl
eGluZy5wb3NfY251bSBpbgogICAgICAgICAgIGxldCBsb2NfZW5kID0gbW9kdWxlX3R5cGUuUGFy
c2V0cmVlLnBtdHlfbG9jLkxvY2F0aW9uLmxvY19lbmQuTGV4aW5nLnBvc19jbnVtIGluCiAgICAg
ICAgICAgbGV0IHMgPSBnZXRfc3RyaW5nX29mX2ZpbGUgbG9jX3N0YXJ0IGxvY19lbmQgaW4KICAg
ICAgICAgICBsZXQgayA9IGFuYWx5c2VfbW9kdWxlX3R5cGVfa2luZCBlbnYgY3VycmVudF9tb2R1
bGVfbmFtZSBtb2R1bGVfdHlwZTIgc2lnX21vZHVsZV90eXBlIGluCiAgICAgICAgICAgTW9kdWxl
X3R5cGVfd2l0aCAoaywgcykKICAgICAgICAgICkKCiAgICAoKiogQW5hbHlzZSBvZiBhIFBhcnNl
dHJlZS5tb2R1bGVfdHlwZSBhbmQgYSBUeXBlcy5tb2R1bGVfdHlwZS4qKQogICAgYW5kIGFuYWx5
c2VfbW9kdWxlX2tpbmQgZW52IGN1cnJlbnRfbW9kdWxlX25hbWUgbW9kdWxlX3R5cGUgc2lnX21v
ZHVsZV90eXBlID0KICAgICAgbWF0Y2ggbW9kdWxlX3R5cGUuUGFyc2V0cmVlLnBtdHlfZGVzYyB3
aXRoCiAgICAgICAgUGFyc2V0cmVlLlBtdHlfaWRlbnQgbG9uZ2lkZW50ICgqb2YgTG9uZ2lkZW50
LnQqKSAtPiAKICAgICAgICAgIGxldCBuYW1lID0gCiAgICAgICAgICAgIG1hdGNoIHNpZ19tb2R1
bGVfdHlwZSB3aXRoCiAgICAgICAgICAgICAgVHlwZXMuVG10eV9pZGVudCBwYXRoIC0+IE5hbWUu
ZnJvbV9wYXRoIHBhdGgKICAgICAgICAgICAgfCBfIC0+IAogICAgICAgICAgICAgICAgTmFtZS5m
cm9tX2xvbmdpZGVudCBsb25naWRlbnQgCiAgICAgICAgICBpbgogICAgICAgICAgTW9kdWxlX2Fs
aWFzIHsgbWFfbmFtZSA9IE9kb2NfZW52LmZ1bGxfbW9kdWxlX29yX21vZHVsZV90eXBlX25hbWUg
ZW52IG5hbWUgOyAKICAgICAgICAgICAgICAgICAgICAgICAgIG1hX21vZHVsZSA9IE5vbmUgfQoK
ICAgICAgfCBQYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgc2lnbmF0dXJlIC0+CiAgICAgICAgICAo
CiAgICAgICAgICAgbWF0Y2ggc2lnX21vZHVsZV90eXBlIHdpdGgKICAgICAgICAgICAgIFR5cGVz
LlRtdHlfc2lnbmF0dXJlIHNpZ25hdCAtPgogICAgICAgICAgICAgICBNb2R1bGVfc3RydWN0CiAg
ICAgICAgICAgICAgICAgKGFuYWx5c2VfcGFyc2V0cmVlIAogICAgICAgICAgICAgICAgICAgIGVu
dgogICAgICAgICAgICAgICAgICAgIHNpZ25hdAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRf
bW9kdWxlX25hbWUKICAgICAgICAgICAgICAgICAgICBtb2R1bGVfdHlwZS5QYXJzZXRyZWUucG10
eV9sb2MuTG9jYXRpb24ubG9jX3N0YXJ0LkxleGluZy5wb3NfY251bQogICAgICAgICAgICAgICAg
ICAgIG1vZHVsZV90eXBlLlBhcnNldHJlZS5wbXR5X2xvYy5Mb2NhdGlvbi5sb2NfZW5kLkxleGlu
Zy5wb3NfY251bQogICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZQogICAgICAgICAgICAgICAg
ICkKICAgICAgICAgICB8IF8gLT4KICAgICAgICAgICAgICAgKCogaWYgd2UncmUgaGVyZSBzb21l
dGhpbmcncyB3cm9uZyAqKQogICAgICAgICAgICAgICByYWlzZSAoRmFpbHVyZSAiUGFyc2V0cmVl
LlBtdHlfc2lnbmF0dXJlIHNpZ25hdHVyZSBidXQgbm90IFR5cGVzLlRtdHlfc2lnbmF0dXJlIHNp
Z25hdCIpCiAgICAgICAgICApCiAgICAgIHwgUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoXyxfLG1v
ZHVsZV90eXBlMikgKCogb2Ygc3RyaW5nICogbW9kdWxlX3R5cGUgKiBtb2R1bGVfdHlwZSAqKSAt
PgogICAgICAgICAgKAogICAgICAgICAgIG1hdGNoIHNpZ19tb2R1bGVfdHlwZSB3aXRoCiAgICAg
ICAgICAgICBUeXBlcy5UbXR5X2Z1bmN0b3IgKGlkZW50LCBwYXJhbV9tb2R1bGVfdHlwZSwgYm9k
eV9tb2R1bGVfdHlwZSkgLT4KICAgICAgICAgICAgICAgbGV0IHBhcmFtID0gCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgbXBfbmFtZSA9IE5hbWUuZnJvbV9pZGVudCBpZGVu
dCA7CiAgICAgICAgICAgICAgICAgICBtcF90eXBlID0gT2RvY19lbnYuc3Vic3RfbW9kdWxlX3R5
cGUgZW52IHBhcmFtX21vZHVsZV90eXBlIDsKICAgICAgICAgICAgICAgICB9IAogICAgICAgICAg
ICAgICBpbgogICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICBtYXRjaCBhbmFseXNlX21v
ZHVsZV9raW5kIGVudiBjdXJyZW50X21vZHVsZV9uYW1lIG1vZHVsZV90eXBlMiBib2R5X21vZHVs
ZV90eXBlIHdpdGgKICAgICAgICAgICAgICAgICAgTW9kdWxlX2Z1bmN0b3IgKHBhcmFtcywgaykg
LT4KICAgICAgICAgICAgICAgICAgICBNb2R1bGVfZnVuY3RvciAocGFyYW0gOjogcGFyYW1zLCBr
KQogICAgICAgICAgICAgICAgfCBrIC0+CiAgICAgICAgICAgICAgICAgICAgTW9kdWxlX2Z1bmN0
b3IgKFtwYXJhbV0sIGspCiAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgfCBfIC0+CiAgICAgICAgICAgICAgICgqIGlmIHdlJ3JlIGhlcmUgc29tZXRoaW5n
J3Mgd3JvbmcgKikKICAgICAgICAgICAgICAgcmFpc2UgKEZhaWx1cmUgIlBhcnNldHJlZS5QbXR5
X2Z1bmN0b3IgXyBidXQgbm90IFR5cGVzLlRtdHlfZnVuY3RvciBfIikKICAgICAgICAgICkKICAg
ICAgfCBQYXJzZXRyZWUuUG10eV93aXRoIChtb2R1bGVfdHlwZTIsIF8pIC0+CiAgICAgICAgICAo
Km9mIG1vZHVsZV90eXBlICogKExvbmdpZGVudC50ICogd2l0aF9jb25zdHJhaW50KSBsaXN0KikK
ICAgICAgICAgICgKICAgICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gbW9kdWxlX3R5cGUyLlBhcnNl
dHJlZS5wbXR5X2xvYy5Mb2NhdGlvbi5sb2NfZW5kLkxleGluZy5wb3NfY251bSBpbgogICAgICAg
ICAgIGxldCBsb2NfZW5kID0gbW9kdWxlX3R5cGUuUGFyc2V0cmVlLnBtdHlfbG9jLkxvY2F0aW9u
LmxvY19lbmQuTGV4aW5nLnBvc19jbnVtIGluCiAgICAgICAgICAgbGV0IHMgPSBnZXRfc3RyaW5n
X29mX2ZpbGUgbG9jX3N0YXJ0IGxvY19lbmQgaW4KICAgICAgICAgICBsZXQgayA9IGFuYWx5c2Vf
bW9kdWxlX3R5cGVfa2luZCBlbnYgY3VycmVudF9tb2R1bGVfbmFtZSBtb2R1bGVfdHlwZTIgc2ln
X21vZHVsZV90eXBlIGluCiAgICAgICAgICAgTW9kdWxlX3dpdGggKGssIHMpCiAgICAgICAgICAp
CgogICAgKCoqIEFuYWx5c2Ugb2YgYSBQYXJzZXRyZWUuY2xhc3NfdHlwZSBhbmQgYSBUeXBlcy5j
bGFzc190eXBlIHRvIHJldHVybiBhIGNvdXBsZQogICAgICAgKGNsYXNzIHBhcmFtZXRlcnMsIGNs
YXNzX2tpbmQpLiopCiAgICBhbmQgYW5hbHlzZV9jbGFzc19raW5kIGVudiBjdXJyZW50X2NsYXNz
X25hbWUgbGFzdF9wb3MgcGFyc2VfY2xhc3NfdHlwZSBzaWdfY2xhc3NfdHlwZSA9CiAgICAgIG1h
dGNoIHBhcnNlX2NsYXNzX3R5cGUuUGFyc2V0cmVlLnBjdHlfZGVzYywgc2lnX2NsYXNzX3R5cGUg
d2l0aAogICAgICAgIChQYXJzZXRyZWUuUGN0eV9jb25zdHIgKF8sIF8pICgqb2YgTG9uZ2lkZW50
LnQgKiBjb3JlX3R5cGUgbGlzdCAqKSwKICAgICAgICAgVHlwZXMuVGN0eV9jb25zdHIgKHAsIHR5
cF9saXN0LCBfKSAoKm9mIFBhdGgudCAqIHR5cGVfZXhwciBsaXN0ICogY2xhc3NfdHlwZSopKSAt
PgoKICAgICAgICAgICBsZXQgcGF0aF9uYW1lID0gTmFtZS5mcm9tX3BhdGggcCBpbgogICAgICAg
ICAgIGxldCBuYW1lID0gT2RvY19lbnYuZnVsbF9jbGFzc19vcl9jbGFzc190eXBlX25hbWUgZW52
IHBhdGhfbmFtZSBpbgogICAgICAgICAgIGxldCBrID0gCiAgICAgICAgICAgICBDbGFzc19jb25z
dHIgCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjY29fbmFtZSA9IG5hbWUgOwog
ICAgICAgICAgICAgICAgIGNjb19jbGFzcyA9IE5vbmUgOwogICAgICAgICAgICAgICAgIGNjb190
eXBlX3BhcmFtZXRlcnMgPSBMaXN0Lm1hcCAoT2RvY19lbnYuc3Vic3RfdHlwZSBlbnYpIHR5cF9s
aXN0CiAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgaW4KICAgICAgICAgICAoW10sIGspCgog
ICAgICB8IChQYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKF8sIGNsYXNzX3R5cGVfZmllbGRfbGlz
dCksIFR5cGVzLlRjdHlfc2lnbmF0dXJlIGNsYXNzX3NpZ25hdHVyZSkgLT4KCgoKCgogICAgICAg
ICAgKCogd2UgZ2V0IHRoZSBlbGVtZW50cyBvZiB0aGUgY2xhc3MgaW4gY2xhc3NfdHlwZV9maWVs
ZF9saXN0ICopCiAgICAgICAgICBsZXQgKGluaGVyX2wsIGVsZSkgPSBhbmFseXNlX2NsYXNzX2Vs
ZW1lbnRzIGVudiBjdXJyZW50X2NsYXNzX25hbWUgCiAgICAgICAgICAgICAgbGFzdF9wb3MKICAg
ICAgICAgICAgICBwYXJzZV9jbGFzc190eXBlLlBhcnNldHJlZS5wY3R5X2xvYy5Mb2NhdGlvbi5s
b2NfZW5kLkxleGluZy5wb3NfY251bQogICAgICAgICAgICAgIGNsYXNzX3R5cGVfZmllbGRfbGlz
dAogICAgICAgICAgICAgIGNsYXNzX3NpZ25hdHVyZQogICAgICAgICAgaW4KICAgICAgICAgIChb
XSwgQ2xhc3Nfc3RydWN0dXJlIChpbmhlcl9sLCBlbGUpKQoKICAgICAgfCAoUGFyc2V0cmVlLlBj
dHlfZnVuIChwYXJzZV9sYWJlbCwgXywgcGNsYXNzX3R5cGUpLCBUeXBlcy5UY3R5X2Z1biAobGFi
ZWwsIHR5cGVfZXhwciwgY2xhc3NfdHlwZSkpIC0+IAogICAgICAgICAgKCogbGFiZWwgPSBzdHJp
bmcuIERhbnMgbGVzIHNpZ25hdHVyZXMsIHBhcyBkZSBub20gZGUgcGFyYW3odHJlcyDgIGwnaW50
6XJpZXVyIGRlcyB0dXBsZXMgKikKICAgICAgICAgICgqIHNpIGxhYmVsID0gIiIsIHBhcyBkZSBs
YWJlbC4gaWNpIG9uIGEgbCdpbmZvcm1hdGlvbiBwb3VyIHNhdm9pciBzaSBvbiBhIHVuIGxhYmVs
IGV4cGxpY2l0ZS4gKikKICAgICAgICAgIGlmIHBhcnNlX2xhYmVsID0gbGFiZWwgdGhlbgogICAg
ICAgICAgICAoCiAgICAgICAgICAgICBsZXQgbmV3X3BhcmFtID0gU2ltcGxlX25hbWUgCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgc25fbmFtZSA9IEJ0eXBlLmxhYmVsX25h
bWUgbGFiZWwgOwogICAgICAgICAgICAgICAgICAgc25fdHlwZSA9IE9kb2NfZW52LnN1YnN0X3R5
cGUgZW52IHR5cGVfZXhwciA7CiAgICAgICAgICAgICAgICAgICBzbl90ZXh0ID0gTm9uZSA7ICgq
IHdpbGwgYmUgdXBkYXRlZCB3aGVuIHRoZSBjbGFzcyB3aWxsIGJlIGNyZWF0ZWQgKikKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpbgogICAgICAgICAgICAgbGV0IChsLCBrKSA9IGFu
YWx5c2VfY2xhc3Nfa2luZCBlbnYgY3VycmVudF9jbGFzc19uYW1lIGxhc3RfcG9zIHBjbGFzc190
eXBlIGNsYXNzX3R5cGUgaW4KICAgICAgICAgICAgICggKG5ld19wYXJhbSA6OiBsKSwgayApCiAg
ICAgICAgICAgICkKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgKAogICAgICAgICAgICAgcmFp
c2UgKEZhaWx1cmUgIlBhcnNldHJlZS5QY3R5X2Z1biAocGFyc2VfbGFiZWwsIF8sIHBjbGFzc190
eXBlKSwgbGFiZWxzIGRpZmbpcmVudHMiKQogICAgICAgICAgICApCiAgICAgICAgICAgCiAgICAg
IHwgXyAtPgogICAgICAgICAgcmFpc2UgKEZhaWx1cmUgImFuYWx5c2VfY2xhc3Nfa2luZCBwYXMg
ZGUgY29ycmVzcG9uZGFuY2UgZGFucyBsZSBtYXRjaCIpCgogICAgKCoqIEFuYWx5c2Ugb2YgYSBQ
YXJzZXRyZWUuY2xhc3NfdHlwZSBhbmQgYSBUeXBlcy5jbGFzc190eXBlIHRvIHJldHVybiBhIGNs
YXNzX3R5cGVfa2luZC4qKQogICAgYW5kIGFuYWx5c2VfY2xhc3NfdHlwZV9raW5kIGVudiBjdXJy
ZW50X2NsYXNzX25hbWUgbGFzdF9wb3MgcGFyc2VfY2xhc3NfdHlwZSBzaWdfY2xhc3NfdHlwZSA9
CiAgICAgIG1hdGNoIHBhcnNlX2NsYXNzX3R5cGUuUGFyc2V0cmVlLnBjdHlfZGVzYywgc2lnX2Ns
YXNzX3R5cGUgd2l0aAogICAgICAgIChQYXJzZXRyZWUuUGN0eV9jb25zdHIgKF8sIF8pICgqb2Yg
TG9uZ2lkZW50LnQgKiBjb3JlX3R5cGUgbGlzdCAqKSwKICAgICAgICAgVHlwZXMuVGN0eV9jb25z
dHIgKHAsIHR5cF9saXN0LCBfKSAoKm9mIFBhdGgudCAqIHR5cGVfZXhwciBsaXN0ICogY2xhc3Nf
dHlwZSopKSAtPgoKICAgICAgICAgICBsZXQgayA9IAogICAgICAgICAgICAgQ2xhc3NfdHlwZSAK
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGN0YV9uYW1lID0gT2RvY19lbnYuZnVs
bF9jbGFzc19vcl9jbGFzc190eXBlX25hbWUgZW52IChOYW1lLmZyb21fcGF0aCBwKSA7CiAgICAg
ICAgICAgICAgICAgY3RhX2NsYXNzID0gTm9uZSA7CiAgICAgICAgICAgICAgICAgY3RhX3R5cGVf
cGFyYW1ldGVycyA9IExpc3QubWFwIChPZG9jX2Vudi5zdWJzdF90eXBlIGVudikgdHlwX2xpc3QK
ICAgICAgICAgICAgICAgfSAKICAgICAgICAgICBpbgogICAgICAgICAgIGsKCiAgICAgIHwgKFBh
cnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoXywgY2xhc3NfdHlwZV9maWVsZF9saXN0KSwgVHlwZXMu
VGN0eV9zaWduYXR1cmUgY2xhc3Nfc2lnbmF0dXJlKSAtPgoKCgoKCiAgICAgICAgICAoKiB3ZSBn
ZXQgdGhlIGVsZW1lbnRzIG9mIHRoZSBjbGFzcyBpbiBjbGFzc190eXBlX2ZpZWxkX2xpc3QgKikK
ICAgICAgICAgIGxldCAoaW5oZXJfbCwgZWxlKSA9IGFuYWx5c2VfY2xhc3NfZWxlbWVudHMgZW52
IGN1cnJlbnRfY2xhc3NfbmFtZQogICAgICAgICAgICAgIGxhc3RfcG9zCiAgICAgICAgICAgICAg
cGFyc2VfY2xhc3NfdHlwZS5QYXJzZXRyZWUucGN0eV9sb2MuTG9jYXRpb24ubG9jX2VuZC5MZXhp
bmcucG9zX2NudW0KICAgICAgICAgICAgICBjbGFzc190eXBlX2ZpZWxkX2xpc3QKICAgICAgICAg
ICAgICBjbGFzc19zaWduYXR1cmUKICAgICAgICAgIGluCiAgICAgICAgICBDbGFzc19zaWduYXR1
cmUgKGluaGVyX2wsIGVsZSkKCiAgICAgIHwgKFBhcnNldHJlZS5QY3R5X2Z1biAocGFyc2VfbGFi
ZWwsIF8sIHBjbGFzc190eXBlKSwgVHlwZXMuVGN0eV9mdW4gKGxhYmVsLCB0eXBlX2V4cHIsIGNs
YXNzX3R5cGUpKSAtPiAKICAgICAgICAgIHJhaXNlIChGYWlsdXJlICJhbmFseXNlX2NsYXNzX3R5
cGVfa2luZCA6IFBhcnNldHJlZS5QY3R5X2Z1biAoLi4uKSB3aXRoIFR5cGVzLlRjdHlfZnVuICgu
Li4pIikKKCoKICAgICAgfCAoUGFyc2V0cmVlLlBjdHlfY29uc3RyIChsb25naWRlbnQsIF8pICgq
b2YgTG9uZ2lkZW50LnQgKiBjb3JlX3R5cGUgbGlzdCAqKSwKICAgICAgICAgVHlwZXMuVGN0eV9z
aWduYXR1cmUgY2xhc3Nfc2lnbmF0dXJlKSAtPgogICAgICAgICAgICgqIEEgVk9JUiA6IGMnZXN0
IHBvdXIgbGUgY2FzIGRlcyBjb250cmFpbnRlcyBkZSBjbGFzc2VzIDogCiAgICAgICAgICAgICAg
Y2xhc3MgdHlwZSBjb25zID0gb2JqZWN0CiAgICAgICAgICAgICAgICBtZXRob2QgbSA6IGludAog
ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIGNsYXNz
IFsnYV0gbWF4b3UgeCA9CiAgICAgICAgICAgICAgICAob2JqZWN0CiAgICAgICAgICAgICAgICAg
IHZhbCBhID0gKHggOiAnYSkKICAgICAgICAgICAgICAgICAgbWV0aG9kIG0gPSBhCiAgICAgICAg
ICAgICAgICBlbmQgOiBjb25zICkKICAgICAgICAgICAgICAgICAgICBeXl5eXl4KICAgICAgICAg
ICAqKQogICAgICAgICAgIGxldCBrID0gCiAgICAgICAgICAgICBDbGFzc190eXBlIAogICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgY3RhX25hbWUgPSBPZG9jX2Vudi5mdWxsX2NsYXNz
X25hbWUgZW52IChOYW1lLmZyb21fbG9uZ2lkZW50IGxvbmdpZGVudCkgOwogICAgICAgICAgICAg
ICAgIGN0YV9jbGFzcyA9IE5vbmUgOwogICAgICAgICAgICAgICAgIGN0YV90eXBlX3BhcmFtZXRl
cnMgPSBMaXN0Lm1hcCAoT2RvY19lbnYuc3Vic3RfdHlwZSBlbnYpIHR5cF9saXN0ICgqID8/ICop
CiAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgaW4KICAgICAgICAgICAoW10sIGspCiopCiAg
ICAgIHwgXyAtPgogICAgICAgICAgcmFpc2UgKEZhaWx1cmUgImFuYWx5c2VfY2xhc3NfdHlwZV9r
aW5kIHBhcyBkZSBjb3JyZXNwb25kYW5jZSBkYW5zIGxlIG1hdGNoIikKCiAgICBsZXQgYW5hbHlz
ZV9zaWduYXR1cmUgc291cmNlX2ZpbGUgaW5wdXRfZmlsZSAoYXN0IDogUGFyc2V0cmVlLnNpZ25h
dHVyZSkgKHNpZ25hdCA6IFR5cGVzLnNpZ25hdHVyZSkgPSAKICAgICAgbGV0IGNvbXBsZXRlX3Nv
dXJjZV9maWxlID0KICAgICAgICB0cnkKICAgICAgICAgIGxldCBjdXJkaXIgPSBTeXMuZ2V0Y3dk
ICgpIGluCiAgICAgICAgICBsZXQgKGRpcm5hbWUsIGJhc2VuYW1lKSA9IChGaWxlbmFtZS5kaXJu
YW1lIHNvdXJjZV9maWxlLCBGaWxlbmFtZS5iYXNlbmFtZSBzb3VyY2VfZmlsZSkgaW4KICAgICAg
ICAgIFN5cy5jaGRpciBkaXJuYW1lIDsKICAgICAgICAgIGxldCBjb21wbGV0ZSA9IEZpbGVuYW1l
LmNvbmNhdCAoU3lzLmdldGN3ZCAoKSkgYmFzZW5hbWUgaW4KICAgICAgICAgIFN5cy5jaGRpciBj
dXJkaXIgOwogICAgICAgICAgY29tcGxldGUKICAgICAgICB3aXRoCiAgICAgICAgICBTeXNfZXJy
b3IgcyAtPgogICAgICAgICAgICBwcmVycl9lbmRsaW5lIHMgOwogICAgICAgICAgICBpbmNyIE9k
b2NfZ2xvYmFsLmVycm9ycyA7CiAgICAgICAgICAgIHNvdXJjZV9maWxlCiAgICAgIGluCiAgICAg
IHByZXBhcmVfZmlsZSBjb21wbGV0ZV9zb3VyY2VfZmlsZSBpbnB1dF9maWxlOwogICAgICAoKiBX
ZSBjcmVhdGUgdGhlIHRfbW9kdWxlIGZvciB0aGlzIGZpbGUuICopCiAgICAgIGxldCBtb2RfbmFt
ZSA9IFN0cmluZy5jYXBpdGFsaXplCiAgICAgICAgICAoRmlsZW5hbWUuYmFzZW5hbWUgKHRyeSBG
aWxlbmFtZS5jaG9wX2V4dGVuc2lvbiBzb3VyY2VfZmlsZSB3aXRoIF8gLT4gc291cmNlX2ZpbGUp
KSAKICAgICAgaW4KICAgICAgbGV0IChsZW4saW5mb19vcHQpID0gTXlfaXIuZmlyc3Rfc3BlY2lh
bCAhZmlsZV9uYW1lICFmaWxlIGluCiAgICAgIGxldCBlbGVtZW50cyA9IGFuYWx5c2VfcGFyc2V0
cmVlIE9kb2NfZW52LmVtcHR5IHNpZ25hdCBtb2RfbmFtZSBsZW4gKFN0cmluZy5sZW5ndGggIWZp
bGUpIGFzdCBpbgogICAgICBsZXQgbSA9CiAgICAgICAgewogICAgICAgICAgbV9uYW1lID0gbW9k
X25hbWUgOwogICAgICAgICAgbV90eXBlID0gVHlwZXMuVG10eV9zaWduYXR1cmUgc2lnbmF0IDsK
ICAgICAgICAgIG1faW5mbyA9IGluZm9fb3B0IDsKICAgICAgICAgIG1faXNfaW50ZXJmYWNlID0g
dHJ1ZSA7CiAgICAgICAgICBtX2ZpbGUgPSAhZmlsZV9uYW1lIDsKICAgICAgICAgIG1fa2luZCA9
IE1vZHVsZV9zdHJ1Y3QgZWxlbWVudHMgOwogICAgICAgICAgbV9sb2MgPSB7IGxvY19pbXBsID0g
Tm9uZSA7IGxvY19pbnRlciA9IFNvbWUgKCFmaWxlX25hbWUsIDApIH0gOwogICAgICAgICAgbV90
b3BfZGVwcyA9IFtdIDsKICAgICAgICB9IAogICAgICBpbgogICAgICAK6W1lbnRzIGR1IG1vZHVs
ZToiOwogICAgICBsZXQgZiBlID0KICAgICAgICBsZXQgcyA9IAogICAgICAgICAgbWF0Y2ggZSB3
aXRoCiAgICAgICAgICAgIEVsZW1lbnRfbW9kdWxlIG0gLT4gIm1vZHVsZSAiXm0ubV9uYW1lCiAg
ICAgICAgICB8IEVsZW1lbnRfbW9kdWxlX3R5cGUgbXQgLT4gIm1vZHVsZSB0eXBlICJebXQubXRf
bmFtZQogICAgICAgICAgfCBFbGVtZW50X2luY2x1ZGVkX21vZHVsZSBpbSAtPiAiaW5jbHVkZWQg
bW9kdWxlICJeaW0uaW1fbmFtZQogICAgICAgICAgfCBFbGVtZW50X2NsYXNzIGMgLT4gImNsYXNz
ICJeYy5jbF9uYW1lCiAgICAgICAgICB8IEVsZW1lbnRfY2xhc3NfdHlwZSBjdCAtPiAiY2xhc3Mg
dHlwZSAiXmN0LmNsdF9uYW1lCiAgICAgICAgICB8IEVsZW1lbnRfdmFsdWUgdiAtPiAidmFsdWUg
Il52LnZhbF9uYW1lCiAgICAgICAgICB8IEVsZW1lbnRfZXhjZXB0aW9uIGUgLT4gImV4Y2VwdGlv
biAiXmUuZXhfbmFtZQogICAgICAgICAgfCBFbGVtZW50X3R5cGUgdCAtPiAidHlwZSAiXnQudHlf
bmFtZQogICAgICAgICAgfCBFbGVtZW50X21vZHVsZV9jb21tZW50IHQgLT4gT2RvY19taXNjLnN0
cmluZ19vZl90ZXh0IHQKICAgICAgICBpbgoKICAgICAgICAoKQogICAgICBpbgogICAgICBMaXN0
Lml0ZXIgZiBlbGVtZW50czsKCiAgICAgIG0KICAgICAgICAgIAogICAgZW5kCg==
</data>        

          </attachment>
    </bug>

</bugzilla>