From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1ReOGJ-0005qp-1Y for garchives@archives.gentoo.org; Sat, 24 Dec 2011 09:51:36 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id F34EB21C0C9; Sat, 24 Dec 2011 09:51:01 +0000 (UTC) Received: from mail-vx0-f181.google.com (mail-vx0-f181.google.com [209.85.220.181]) by pigeon.gentoo.org (Postfix) with ESMTP id BA44921C037 for ; Sat, 24 Dec 2011 09:48:33 +0000 (UTC) Received: by vcbfk26 with SMTP id fk26so8071535vcb.40 for ; Sat, 24 Dec 2011 01:48:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=ndJtwEL11VpdILeX7IoyaZix06hJZ11S29YaN8NdrpE=; b=i8uqyG+Vo0FfjO+J4Vy6acEb67bIwHqV+ckz0TrfCcUYgj/dWMm7Br5fwhErLMDtUM K2FTb0ajfMmIdqJoBS2LyhD+KsWZOwJD+Yr5inezCWpBM+hipu3Vvr+N1OK26ryum9Gx r9NTGg1guhgdkr42Yy5k6dfMkuOfKv2s6f6VM= Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-user@lists.gentoo.org Reply-to: gentoo-user@lists.gentoo.org MIME-Version: 1.0 Received: by 10.52.28.15 with SMTP id x15mr9279669vdg.46.1324720112743; Sat, 24 Dec 2011 01:48:32 -0800 (PST) Received: by 10.52.170.110 with HTTP; Sat, 24 Dec 2011 01:48:32 -0800 (PST) Date: Sat, 24 Dec 2011 10:48:32 +0100 Message-ID: Subject: [gentoo-user] Error emerging ati-drivers-11.11 From: czernitko To: gentoo-user@lists.gentoo.org Content-Type: multipart/mixed; boundary=20cf307c9e08bf33ef04b4d36f93 X-Archives-Salt: b8b1b0f4-d669-4a68-9f60-06a9a3fbe6d1 X-Archives-Hash: 2026cd809de07f18ed2d665ab6798f14 --20cf307c9e08bf33ef04b4d36f93 Content-Type: multipart/alternative; boundary=20cf307c9e08bf33ea04b4d36f91 --20cf307c9e08bf33ea04b4d36f91 Content-Type: text/plain; charset=ISO-8859-1 Hello everyone! I've got a problem that makes me lose my hair for about two days already. Emerging ati-drivers results in ebuild error, but ati proprietary installer works just fine. Last version of ati-drivers that compiles just fine is 11.6. All following versions of the driver (11.7-11.12) fail to compile. I haven't found any appropriate bug, so I guess there is more probably some problem with my environment. I am using hardened profile, by the way, but without PaX or GrSecurity. Does anyone have any clue about a solution? Or should I fill a bug at bugs.gentoo.org as this seems not to be an upstream bug? Thanks for any advice! Peter gethexis ~ # emerge -pqv =x11-drivers/ati-drivers-11.11 [ebuild U] x11-drivers/ati-drivers-11.11 [11.6] USE="modules (multilib) qt4 -debug (-opencl)" gethexis ~ # emerge --info =x11-drivers/ati-drivers-11.11 Portage 2.1.10.41 (hardened/linux/amd64, gcc-4.5.3-hardenednopie, glibc-2.13-r4, 3.0.4-hardened-r1 x86_64) ================================================================= System Settings ================================================================= System uname: Linux-3.0.4-hardened-r1-x86_64-Intel-R-_Core-TM-_i7_CPU_Q_720_@ _1.60GHz-with-gentoo-2.0.3 Timestamp of tree: Sat, 24 Dec 2011 09:15:01 +0000 app-shells/bash: 4.1_p9 dev-java/java-config: 2.1.11-r3 dev-lang/python: 2.6.6-r2, 2.7.2-r3, 3.1.4-r3 dev-util/cmake: 2.8.6-r4 dev-util/pkgconfig: 0.26 sys-apps/baselayout: 2.0.3 sys-apps/openrc: 0.9.4 sys-apps/sandbox: 2.5 sys-devel/autoconf: 2.13, 2.68 sys-devel/automake: 1.9.6-r3, 1.10.3, 1.11.1 sys-devel/binutils: 2.21.1-r1 sys-devel/gcc: 4.5.3-r1 sys-devel/gcc-config: 1.4.1-r1 sys-devel/libtool: 2.4-r1 sys-devel/make: 3.82-r1 sys-kernel/linux-headers: 2.6.39 (virtual/os-headers) sys-libs/glibc: 2.13-r4 Repositories: gentoo x-portage ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="* -@EULA PUEL Oracle-BCLA-JavaSE" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe -march=core2" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.0/conf /usr/share/themes/oxygen-gtk/gtk-2.0 /var/lib/hsqldb" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.3/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-O2 -pipe -march=core2" DISTDIR="/usr/portage/distfiles" EMERGE_DEFAULT_OPTS="--autounmask=n --keep-going" FEATURES="assume-digests binpkg-logs distlocks ebuild-locks fixlafiles news parallel-fetch protect-owned sandbox sfperms splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" FFLAGS="-O2 -pipe -march=core2 -funroll-all-loops" GENTOO_MIRRORS="http://ftp.fi.muni.cz/pub/linux/gentoo/" LANG="cs_CZ.UTF-8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" LINGUAS="cs en" MAKEOPTS="-j9" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.cz.gentoo.org/gentoo-portage" USE="3dnow 3dnowext X aac acl acpi alsa amd64 amr aol apache2 autoipd avahi bash-completion berkdb bluetooth branding bugzilla bzip2 cdr clamav cli consolekit cracklib crypt cups cvs cxx dbus dhcp dirac directfb disk-partition dri dvd eap-tls embedded encode exif extensions extras ffmpeg firefox flac fontconfig fortran ftp fuse gcj gcrypt gd gdbm geolocation gif gimp git gnutls gpg gphoto2 gpm gpu graphviz groupwise handbook hardened hddtemp iconv icq icu imagemagick imap inifile innodb inotify ipv6 jabber java javascript jpeg jpeg2k justify kde kerberos kipi lame laptop latex lcms lensfun libnotify lm_sensors lzma lzo mad matroska matrox mercurial mhash mime mjpeg mmap mmx mmxext mng modplug modules mono mozilla mp3 mp4 mpeg mpi mplayer msn mudflap multilib mysql mysqli ncurses networkmanager nls nntp nocd nodrm nptl nptlonly nsplugin nspluginwrapper odbc ogg openal opengl openmp osc oscar pam pax_kernel pcntl pcre pdf perl php pic plasma png policykit posix pppd prediction private-headers pulseaudio python qq qt3support qt4 quicktime radius raw rdesktop readline recode redeyes reports rss samba sasl schroedinger scp sdl seamonkey semantic-desktop session sftp sharedext sharedmem silc skey skype slp smp snmp soap sockets socks5 source spell sql sqlite sqlite3 sse sse2 ssl ssse3 startup-notification static-libs subversion suid svg symlink synaptics sysfs syslog sysvipc taglib tcl tcpd threads thumbnail thumbnails tidy tiff truetype udev unicode upnp urandom usb v4l v4l2 vaapi vhosts video virtualbox vnc vorbis wavpack webkit wifi wmf x264 xattr xcb xcomposite xext xine xinerama xinetd xml xmp xorg xosd xpm xrandr xscreensaver xsl xulrunner xv xvid yahoo zephyr zeroconf zlib zsh-completion" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="cs en" PHP_TARGETS="php5-3" QEMU_SOFTMMU_TARGETS="arm i386 x86_64" QEMU_USER_TARGETS="arm i386 x86_64" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="fglrx radeon" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS --20cf307c9e08bf33ea04b4d36f91 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello everyone!
I've got a problem that makes me lose my hair for ab= out two days already. Emerging ati-drivers results in ebuild error, but ati= proprietary installer works just fine. Last version of ati-drivers that co= mpiles just fine is 11.6. All following versions of the driver (11.7-11.12)= fail to compile. I haven't found any appropriate bug, so I guess there= is more probably some problem with my environment. I am using hardened pro= file, by the way, but without PaX or GrSecurity. Does anyone have any clue = about a solution? Or should I fill a bug at bugs.gentoo.org as this seems not to be an upstream bug?

Thanks for any advice!
Peter

gethexis ~ # emerge -pqv =3Dx11-= drivers/ati-drivers-11.11
[ebuild=A0=A0=A0=A0 U] x11-drivers/ati-drivers= -11.11 [11.6] USE=3D"modules (multilib) qt4 -debug (-opencl)"
gethexis ~ # emerge --info =3Dx11-drivers/ati-drivers-11.11
Portage 2.1.10.41 (hardened/linux/amd64, gcc-4.5.3-hardenednopie, glibc-2.1= 3-r4, 3.0.4-hardened-r1 x86_64)
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0 System Settings
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
System uname: Linux-3.0.4-= hardened-r1-x86_64-Intel-R-_Core-TM-_i7_CPU_Q_720_@_1.60GHz-with-gentoo-2.0= .3
Timestamp of tree: Sat, 24 Dec 2011 09:15:01 +0000
app-shells/bash:=A0=A0=A0=A0=A0=A0=A0=A0=A0 4.1_p9
dev-java/java-config:= =A0=A0=A0=A0 2.1.11-r3
dev-lang/python:=A0=A0=A0=A0=A0=A0=A0=A0=A0 2.6.6= -r2, 2.7.2-r3, 3.1.4-r3
dev-util/cmake:=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 2.= 8.6-r4
dev-util/pkgconfig:=A0=A0=A0=A0=A0=A0 0.26
sys-apps/baselayout= :=A0=A0=A0=A0=A0 2.0.3
sys-apps/openrc:=A0=A0=A0=A0=A0=A0=A0=A0=A0 0.9.4
sys-apps/sandbox:=A0= =A0=A0=A0=A0=A0=A0=A0 2.5=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
sys-devel/autoconf:=A0=A0=A0=A0=A0=A0 2.13, 2.68=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
sys-dev= el/automake:=A0=A0=A0=A0=A0=A0 1.9.6-r3, 1.10.3, 1.11.1=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
sys-devel/binutils:=A0=A0=A0=A0=A0=A0 2.21.1-r1=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
sys-= devel/gcc:=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 4.5.3-r1=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
sys-devel/gcc-config:=A0=A0=A0=A0 1.4.1-r1=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
sys-dev= el/libtool:=A0=A0=A0=A0=A0=A0=A0 2.4-r1=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
sys-devel/make:=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 3.82-r1
sys-kernel/linux-h= eaders: 2.6.39 (virtual/os-headers)
sys-libs/glibc:=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0 2.13-r4
Repositories: gentoo x-portage
ACCEPT_KEYWORDS=3D&q= uot;amd64"
ACCEPT_LICENSE=3D"* -@EULA PUEL Oracle-BCLA-JavaSE&= quot;
CBUILD=3D"x86_64-pc-linux-gnu"
CFLAGS=3D"-O2 -pipe -march= =3Dcore2"
CHOST=3D"x86_64-pc-linux-gnu"
CONFIG_PROTECT= =3D"/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/m= aven-bin-3.0/conf /usr/share/themes/oxygen-gtk/gtk-2.0 /var/lib/hsqldb"= ;
CONFIG_PROTECT_MASK=3D"/etc/ca-certificates.conf /etc/env.d /etc/env.d= /java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache= 2-php5.3/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cli-php5.3/ex= t-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/langu= age.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c&qu= ot;
CXXFLAGS=3D"-O2 -pipe -march=3Dcore2"
DISTDIR=3D"/usr/por= tage/distfiles"
EMERGE_DEFAULT_OPTS=3D"--autounmask=3Dn --keep= -going"
FEATURES=3D"assume-digests binpkg-logs distlocks ebuil= d-locks fixlafiles news parallel-fetch protect-owned sandbox sfperms splitd= ebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch&qu= ot;
FFLAGS=3D"-O2 -pipe -march=3Dcore2 -funroll-all-loops"
GENTOO_= MIRRORS=3D"http://= ftp.fi.muni.cz/pub/linux/gentoo/"
LANG=3D"cs_CZ.UTF-8"= ;
LDFLAGS=3D"-Wl,-O1 -Wl,--as-needed"
LINGUAS=3D"cs en"
MAKEOPTS=3D"-j9"
PKGDIR=3D"= ;/usr/portage/packages"
PORTAGE_CONFIGROOT=3D"/"
PORTA= GE_RSYNC_OPTS=3D"--recursive --links --safe-links --perms --times --co= mpress --force --whole-file --delete --stats --timeout=3D180 --exclude=3D/d= istfiles --exclude=3D/local --exclude=3D/packages"
PORTAGE_TMPDIR=3D"/var/tmp"
PORTDIR=3D"/usr/portage"=
PORTDIR_OVERLAY=3D"/usr/local/portage"
SYNC=3D"rsync:= //rsync.cz.gentoo.org= /gentoo-portage"
USE=3D"3dnow 3dnowext X aac acl acpi alsa amd64 amr aol apache2 autoip= d avahi bash-completion berkdb bluetooth branding bugzilla bzip2 cdr clamav= cli consolekit cracklib crypt cups cvs cxx dbus dhcp dirac directfb disk-p= artition dri dvd eap-tls embedded encode exif extensions extras ffmpeg fire= fox flac fontconfig fortran ftp fuse gcj gcrypt gd gdbm geolocation gif gim= p git gnutls gpg gphoto2 gpm gpu graphviz groupwise handbook hardened hddte= mp iconv icq icu imagemagick imap inifile innodb inotify ipv6 jabber java j= avascript jpeg jpeg2k justify kde kerberos kipi lame laptop latex lcms lens= fun libnotify lm_sensors lzma lzo mad matroska matrox mercurial mhash mime = mjpeg mmap mmx mmxext mng modplug modules mono mozilla mp3 mp4 mpeg mpi mpl= ayer msn mudflap multilib mysql mysqli ncurses networkmanager nls nntp nocd= nodrm nptl nptlonly nsplugin nspluginwrapper odbc ogg openal opengl openmp= osc oscar pam pax_kernel pcntl pcre pdf perl php pic plasma png policykit = posix pppd prediction private-headers pulseaudio python qq qt3support qt4 q= uicktime radius raw rdesktop readline recode redeyes reports rss samba sasl= schroedinger scp sdl seamonkey semantic-desktop session sftp sharedext sha= redmem silc skey skype slp smp snmp soap sockets socks5 source spell sql sq= lite sqlite3 sse sse2 ssl ssse3 startup-notification static-libs subversion= suid svg symlink synaptics sysfs syslog sysvipc taglib tcl tcpd threads th= umbnail thumbnails tidy tiff truetype udev unicode upnp urandom usb v4l v4l= 2 vaapi vhosts video virtualbox vnc vorbis wavpack webkit wifi wmf x264 xat= tr xcb xcomposite xext xine xinerama xinetd xml xmp xorg xosd xpm xrandr xs= creensaver xsl xulrunner xv xvid yahoo zephyr zeroconf zlib zsh-completion&= quot; ALSA_CARDS=3D"ali5451 als4000 atiixp atiixp-modem bt87x ca0106 c= mipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel= 8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM= _PLUGINS=3D"adpcm alaw asym copy dmix dshare dsnoop empty extplug file= hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null = plug rate route share shm softvol" APACHE2_MODULES=3D"actions ali= as auth_basic authn_alias authn_anon authn_dbm authn_default authn_file aut= hz_dbm authz_default authz_groupfile authz_host authz_owner authz_user auto= index cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires= ext_filter file_cache filter headers include info log_config logio mem_cac= he mime mime_magic negotiation rewrite setenvif speling status unique_id us= erdir usertrack vhost_alias" CALLIGRA_FEATURES=3D"kexi words flow= plan stage tables krita karbon braindump" CAMERAS=3D"ptp2" = COLLECTD_PLUGINS=3D"df interface irq load memory rrdtool swap syslog&q= uot; ELIBC=3D"glibc" GPSD_PROTOCOLS=3D"ashtech aivdm earthma= te evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom = oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip= tripmate tnt ubx" INPUT_DEVICES=3D"keyboard mouse evdev" KE= RNEL=3D"linux" LCD_DEVICES=3D"bayrad cfontz cfontz633 glk hd= 44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS=3D"cs en" P= HP_TARGETS=3D"php5-3" QEMU_SOFTMMU_TARGETS=3D"arm i386 x86_6= 4" QEMU_USER_TARGETS=3D"arm i386 x86_64" RUBY_TARGETS=3D&quo= t;ruby18" USERLAND=3D"GNU" VIDEO_CARDS=3D"fglrx radeon&= quot; XTABLES_ADDONS=3D"quota2 psd pknock lscan length2 ipv4options ip= set ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark= ipmark dhcpmac delude chaos account"
Unset:=A0 CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND,= PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

=
--20cf307c9e08bf33ea04b4d36f91-- --20cf307c9e08bf33ef04b4d36f93 Content-Type: text/plain; name="build.log" Content-Disposition: attachment; filename="build.log" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gwkfxl8i0 G1szMjswMW0gKiAbWzM5OzQ5OzAwbVBhY2thZ2U6ICAgIHgxMS1kcml2ZXJzL2F0aS1kcml2ZXJz LTExLjExChtbMzI7MDFtICogG1szOTs0OTswMG1SZXBvc2l0b3J5OiBnZW50b28KG1szMjswMW0g KiAbWzM5OzQ5OzAwbU1haW50YWluZXI6IGx1X3plcm9AZ2VudG9vLm9yZyBlbnJpY28udGFnbGlh dmluaUBnbWFpbC5jb20seDExQGdlbnRvby5vcmcKG1szMjswMW0gKiAbWzM5OzQ5OzAwbVVTRTog ICAgICAgIGFtZDY0IGVsaWJjX2dsaWJjIGtlcm5lbF9saW51eCBtb2R1bGVzIG11bHRpbGliIHF0 NCB1c2VybGFuZF9HTlUKG1szMjswMW0gKiAbWzM5OzQ5OzAwbUZFQVRVUkVTOiAgIHNhbmRib3gg c3BsaXRkZWJ1ZwogG1szMjswMW0qG1swbSBEZXRlcm1pbmluZyB0aGUgbG9jYXRpb24gb2YgdGhl IGtlcm5lbCBzb3VyY2UgY29kZQogG1szMjswMW0qG1swbSBGb3VuZCBrZXJuZWwgc291cmNlIGRp cmVjdG9yeToKIBtbMzI7MDFtKhtbMG0gICAgIC91c3Ivc3JjL2xpbnV4CiAbWzMyOzAxbSobWzBt IEZvdW5kIGtlcm5lbCBvYmplY3QgZGlyZWN0b3J5OgogG1szMjswMW0qG1swbSAgICAgL2xpYi9t b2R1bGVzLzMuMC40LWhhcmRlbmVkLXIxL2J1aWxkCiAbWzMyOzAxbSobWzBtIEZvdW5kIHNvdXJj ZXMgZm9yIGtlcm5lbCB2ZXJzaW9uOgogG1szMjswMW0qG1swbSAgICAgMy4wLjQtaGFyZGVuZWQt cjEKIBtbMzI7MDFtKhtbMG0gCiAbWzMyOzAxbSobWzBtIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBk cml2ZXIgc3VwcG9ydHMgb25seSBncmFwaGljIGNhcmRzIGJhc2VkIG9uCiAbWzMyOzAxbSobWzBt IHI2MDAgY2hpcHNldCBhbmQgbmV3ZXIuCiAbWzMyOzAxbSobWzBtIFRoaXMgcmVwcmVzZW50IHRo ZSBBVEkgUmFkZW9uIEhEIHNlcmllcyBhdCB0aGlzIG1vbWVudC4KIBtbMzI7MDFtKhtbMG0gCiAb WzMyOzAxbSobWzBtIElmIHlvdXIgY2FyZCBpcyBvbGRlciB0aGVuIHVzZSB4MTEtZHJpdmVycy94 Zjg2LXZpZGVvLWF0aQogG1szMjswMW0qG1swbSBGb3IgbWlncmF0aW9uIGluZm9ybWF0aW9ucyBw bGVhc2UgcmVmZmVyIHRvOgogG1szMjswMW0qG1swbSBodHRwOi8vd3d3LmdlbnRvby5vcmcvcHJv ai9lbi9kZXNrdG9wL3gveDExL2F0aS1taWdyYXRpb24tZ3VpZGUueG1sCiAbWzMyOzAxbSobWzBt IAo+Pj4gVW5wYWNraW5nIHNvdXJjZS4uLgo+Pj4gU291cmNlIHVucGFja2VkIGluIC92YXIvdG1w L3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yawo+Pj4gUHJlcGFyaW5n IHNvdXJjZSBpbiAvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjEx L3dvcmsgLi4uCiAbWzMyOzAxbSobWzBtIEFwcGx5aW5nIGF0aS1wb3dlcm1vZGUtb3B0LXBhdGgt Mi5wYXRjaCAuLi4KG1tBG1s3MkMgG1szNDswMW1bIBtbMzI7MDFtb2sbWzM0OzAxbSBdG1swbQog G1szMjswMW0qG1swbSBDb252ZXJ0aW5nIDIuNi54L01ha2VmaWxlIHRvIHVzZSBNPSBpbnN0ZWFk IG9mIFNVQkRJUlM9IC4uLgobW0EbWzcyQyAbWzM0OzAxbVsgG1szMjswMW1vaxtbMzQ7MDFtIF0b WzBtCj4+PiBVbnBhY2tpbmcgLi8uLi9jb21tb24vdXNyL3NyYy9hdGkvZmdscnhfc2FtcGxlX3Nv dXJjZS50Z3ogdG8gL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4x MS93b3JrL2V4dHJhCj4+PiBTb3VyY2UgcHJlcGFyZWQuCj4+PiBDb25maWd1cmluZyBzb3VyY2Ug aW4gL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrIC4u Lgo+Pj4gU291cmNlIGNvbmZpZ3VyZWQuCj4+PiBDb21waWxpbmcgc291cmNlIGluIC92YXIvdG1w L3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yayAuLi4KIBtbMzI7MDFt KhtbMG0gUHJlcGFyaW5nIGZnbHJ4IG1vZHVsZQptYWtlIC1qOSBIT1NUQ0M9eDg2XzY0LXBjLWxp bnV4LWdudS1nY2MgQ1JPU1NfQ09NUElMRT14ODZfNjQtcGMtbGludXgtZ251LSAnTERGTEFHUz0t bSBlbGZfeDg2XzY0JyBHQ0NfVkVSX01BSj00IEtWRVI9My4wLjQtaGFyZGVuZWQtcjEgS0RJUj0v dXNyL3NyYy9saW51eCAnQ0ZMQUdTX01PRFVMRSs9LURNT0RVTEUgLURBVEkgLURGR0wnIENGTEFH U19NT0RVTEUrPS1EQ09NUEFUX0FMTE9DX1VTRVJfU1BBQ0U9YXJjaF9jb21wYXRfYWxsb2NfdXNl cl9zcGFjZSBrbW9kX2J1aWxkIAptYWtlIC1DIC91c3Ivc3JjL2xpbnV4IE09L3Zhci90bXAvcG9y dGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxl cy9mZ2xyeC9idWlsZF9tb2QvMi42LnggbW9kdWxlcwptYWtlWzFdOiBFbnRlcmluZyBkaXJlY3Rv cnkgYC91c3Ivc3JjL2xpbnV4LTMuMC40LWhhcmRlbmVkLXIxJwogIENDIFtNXSAgL3Zhci90bXAv cG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9k dWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42LngvZmlyZWdsX3B1YmxpYy5vCiAgQ0MgW01dICAvdmFy L3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xp Yi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfYWNwaS5vCiAgQ0MgW01dICAvdmFy L3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xp Yi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfYWdwLm8KICBDQyBbTV0gIC92YXIv dG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGli L21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9kZWJ1Zy5vCiAgQ0MgW01dICAvdmFy L3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xp Yi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfaW9jdGwubwogIENDIFtNXSAgL3Zh ci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9s aWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2lvLm8KICBDQyBbTV0gIC92YXIv dG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGli L21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9wY2kubwogIENDIFtNXSAgL3Zhci90 bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIv bW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2lvbW11Lm8KICBDQyBbTV0gIC92YXIv dG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGli L21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9zdHIubwpJbiBmaWxlIGluY2x1ZGVk IGZyb20gL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3Jr L2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2RlYnVnLmM6Mzk6 MDoKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2Nv bW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2RlYnVnLmg6MjAyOjU6 IHdhcm5pbmc6ICJfREVCVUciIGlzIG5vdCBkZWZpbmVkCi92YXIvdG1wL3BvcnRhZ2UveDExLWRy aXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVp bGRfbW9kLzIuNi54L2tjbF9kZWJ1Zy5jOjQ1OjE6IHdhcm5pbmc6IGZ1bmN0aW9uIGRlY2xhcmF0 aW9uIGlzbuKAmXQgYSBwcm90b3R5cGUKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGkt ZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42 Lngva2NsX2RlYnVnLmM6NjU6MTQ6IHdhcm5pbmc6IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGlzbuKA mXQgYSBwcm90b3R5cGUKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0x MS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2Rl YnVnLmM6IEluIGZ1bmN0aW9uIOKAmHBydkdldENwdUlk4oCZOgovdmFyL3RtcC9wb3J0YWdlL3gx MS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2ZnbHJ4 L2J1aWxkX21vZC8yLjYueC9rY2xfZGVidWcuYzo3MjoxODogd2FybmluZzogdW51c2VkIHZhcmlh YmxlIOKAmE1vZGXigJkKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0x MS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2Rl YnVnLmM6IEF0IHRvcCBsZXZlbDoKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJp dmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngv a2NsX2RlYnVnLmg6MTYyOjE2OiB3YXJuaW5nOiDigJhtb2R1bGVfbG9nX21hcOKAmSBkZWZpbmVk IGJ1dCBub3QgdXNlZAovdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTEx LjExL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfZGVi dWcuaDoxNzU6MTk6IHdhcm5pbmc6IOKAmG1vZHVsZV90eXBlX21hcOKAmSBkZWZpbmVkIGJ1dCBu b3QgdXNlZAogIENDIFtNXSAgL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVy cy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2Ns Lm8KICBDQyBbTV0gIC92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEu MTEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF93YWl0 Lm8KSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRp LWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIu Ni54L2tjbF9pb21tdS5jOjQ1OjA6Ci92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRy aXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54 L2tjbF9kZWJ1Zy5oOjIwMjo1OiB3YXJuaW5nOiAiX0RFQlVHIiBpcyBub3QgZGVmaW5lZAovdmFy L3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xp Yi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfZGVidWcuaDoxNjI6MTY6IHdhcm5p bmc6IOKAmG1vZHVsZV9sb2dfbWFw4oCZIGRlZmluZWQgYnV0IG5vdCB1c2VkCi92YXIvdG1wL3Bv cnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVs ZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9kZWJ1Zy5oOjE3NToxOTogd2FybmluZzog4oCY bW9kdWxlX3R5cGVfbWFw4oCZIGRlZmluZWQgYnV0IG5vdCB1c2VkCkluIGZpbGUgaW5jbHVkZWQg ZnJvbSAvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsv Y29tbW9uL2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfYWdwLmM6NDc6MDoK L3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1v bi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2RlYnVnLmg6MjAyOjU6IHdh cm5pbmc6ICJfREVCVUciIGlzIG5vdCBkZWZpbmVkCi92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZl cnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRf bW9kLzIuNi54L2tjbF9kZWJ1Zy5oOjE2MjoxNjogd2FybmluZzog4oCYbW9kdWxlX2xvZ19tYXDi gJkgZGVmaW5lZCBidXQgbm90IHVzZWQKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGkt ZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42 Lngva2NsX2RlYnVnLmg6MTc1OjE5OiB3YXJuaW5nOiDigJhtb2R1bGVfdHlwZV9tYXDigJkgZGVm aW5lZCBidXQgbm90IHVzZWQKSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC92YXIvdG1wL3BvcnRhZ2Uv eDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmds cngvYnVpbGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6MzM6MDoKL3Zhci90bXAvcG9ydGFnZS94MTEt ZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9i dWlsZF9tb2QvMi42Lngva2NsX2RlYnVnLmg6MjAyOjU6IHdhcm5pbmc6ICJfREVCVUciIGlzIG5v dCBkZWZpbmVkCi92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEv d29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6 IEluIGZ1bmN0aW9uIOKAmEtDTF9BQ1BJX0V2YWxPYmplY3TigJk6Ci92YXIvdG1wL3BvcnRhZ2Uv eDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmds cngvYnVpbGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6MjQ2OjU1OiBlcnJvcjogY2FsbGVkIG9iamVj dCDigJgy4oCZIGlzIG5vdCBhIGZ1bmN0aW9uCi92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMv YXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9k LzIuNi54L2tjbF9hY3BpLmM6IEF0IHRvcCBsZXZlbDoKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJp dmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWls ZF9tb2QvMi42Lngva2NsX2RlYnVnLmg6MTYyOjE2OiB3YXJuaW5nOiDigJhtb2R1bGVfbG9nX21h cOKAmSBkZWZpbmVkIGJ1dCBub3QgdXNlZAovdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0 aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8y LjYueC9rY2xfZGVidWcuaDoxNzU6MTk6IHdhcm5pbmc6IOKAmG1vZHVsZV90eXBlX21hcOKAmSBk ZWZpbmVkIGJ1dCBub3QgdXNlZAptYWtlWzJdOiAqKiogWy92YXIvdG1wL3BvcnRhZ2UveDExLWRy aXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVp bGRfbW9kLzIuNi54L2tjbF9hY3BpLm9dIEVycm9yIDEKbWFrZVsyXTogKioqIFdhaXRpbmcgZm9y IHVuZmluaXNoZWQgam9icy4uLi4KSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC92YXIvdG1wL3BvcnRh Z2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMv ZmdscngvYnVpbGRfbW9kLzIuNi54L2ZpcmVnbF9wdWJsaWMuYzoxOTE6MDoKL3Zhci90bXAvcG9y dGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxl cy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2RlYnVnLmg6MjAyOjU6IHdhcm5pbmc6ICJfREVC VUciIGlzIG5vdCBkZWZpbmVkCkluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdmFyL3RtcC9wb3J0YWdl L3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2Zn bHJ4L2J1aWxkX21vZC8yLjYueC9maXJlZ2xfcHVibGljLmM6NDU4OjA6Ci92YXIvdG1wL3BvcnRh Z2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMv ZmdscngvYnVpbGRfbW9kLzIuNi54L2RybV9wcm9jLmg6IEluIGZ1bmN0aW9uIOKAmEZHTERSTV9f dm1faW5mb+KAmToKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4x MS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42LngvZHJtX3Byb2Mu aDoyNDI6Mzogd2FybmluZzogY29tcGFyaXNvbiBvZiB1bnNpZ25lZCBleHByZXNzaW9uIDwgMCBp cyBhbHdheXMgZmFsc2UKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0x MS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42LngvZmlyZWds X3B1YmxpYy5jOiBJbiBmdW5jdGlvbiDigJhmaXJlZ2xfaW5pdF9tb2R1bGXigJk6Ci92YXIvdG1w L3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21v ZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2ZpcmVnbF9wdWJsaWMuYzoxMDMzOjIwOiBlcnJv cjogY2FsbGVkIG9iamVjdCDigJgy4oCZIGlzIG5vdCBhIGZ1bmN0aW9uCi92YXIvdG1wL3BvcnRh Z2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGliL21vZHVsZXMv ZmdscngvYnVpbGRfbW9kLzIuNi54L2ZpcmVnbF9wdWJsaWMuYzogSW4gZnVuY3Rpb24g4oCYS0NM X1NldFBhZ2VDYWNoZV9BcnJheeKAmToKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGkt ZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42 LngvZmlyZWdsX3B1YmxpYy5jOjEzMjk6MTc6IGVycm9yOiBjYWxsZWQgb2JqZWN0IOKAmDLigJkg aXMgbm90IGEgZnVuY3Rpb24KL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVy cy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42LngvZmly ZWdsX3B1YmxpYy5jOiBJbiBmdW5jdGlvbiDigJhLQ0xfTUVNX1NtYWxsQnVmZmVyQWxsb2PigJk6 Ci92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21t b24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2ZpcmVnbF9wdWJsaWMuYzoyMDE1 OjEyOiBlcnJvcjogY2FsbGVkIG9iamVjdCDigJgy4oCZIGlzIG5vdCBhIGZ1bmN0aW9uCi92YXIv dG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21tb24vbGli L21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2ZpcmVnbF9wdWJsaWMuYzogSW4gZnVuY3Rp b24g4oCYS0NMX01FTV9TbWFsbEJ1ZmZlckFsbG9jQXRvbWlj4oCZOgovdmFyL3RtcC9wb3J0YWdl L3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2Zn bHJ4L2J1aWxkX21vZC8yLjYueC9maXJlZ2xfcHVibGljLmM6MjAzMDoxMjogZXJyb3I6IGNhbGxl ZCBvYmplY3Qg4oCYMuKAmSBpcyBub3QgYSBmdW5jdGlvbgovdmFyL3RtcC9wb3J0YWdlL3gxMS1k cml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2ZnbHJ4L2J1 aWxkX21vZC8yLjYueC9maXJlZ2xfcHVibGljLmM6IEluIGZ1bmN0aW9uIOKAmEtDTF9NRU1fQWxs b2PigJk6Ci92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29y ay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2ZpcmVnbF9wdWJsaWMu YzoyMDQwOjEyOiBlcnJvcjogY2FsbGVkIG9iamVjdCDigJgy4oCZIGlzIG5vdCBhIGZ1bmN0aW9u Ci92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29yay9jb21t b24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2ZpcmVnbF9wdWJsaWMuYzogSW4g ZnVuY3Rpb24g4oCYS0NMX01FTV9BbGxvY0F0b21pY+KAmToKL3Zhci90bXAvcG9ydGFnZS94MTEt ZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9i dWlsZF9tb2QvMi42LngvZmlyZWdsX3B1YmxpYy5jOjIwNDU6MTI6IGVycm9yOiBjYWxsZWQgb2Jq ZWN0IOKAmDLigJkgaXMgbm90IGEgZnVuY3Rpb24KL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVy cy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9t b2QvMi42LngvZmlyZWdsX3B1YmxpYy5jOiBJbiBmdW5jdGlvbiDigJhLQ0xfbG9ja19pbml04oCZ OgovdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29t bW9uL2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9maXJlZ2xfcHVibGljLmM6NTcz ODoxMjogZXJyb3I6IGNhbGxlZCBvYmplY3Qg4oCYMuKAmSBpcyBub3QgYSBmdW5jdGlvbgovdmFy L3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9uL2xp Yi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9maXJlZ2xfcHVibGljLmM6IEF0IHRvcCBs ZXZlbDoKL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3Jr L2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2RlYnVnLmg6MTYy OjE2OiB3YXJuaW5nOiDigJhtb2R1bGVfbG9nX21hcOKAmSBkZWZpbmVkIGJ1dCBub3QgdXNlZAov dmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsvY29tbW9u L2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfZGVidWcuaDoxNzU6MTk6IHdh cm5pbmc6IOKAmG1vZHVsZV90eXBlX21hcOKAmSBkZWZpbmVkIGJ1dCBub3QgdXNlZAptYWtlWzJd OiAqKiogWy92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvd29y ay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2ZpcmVnbF9wdWJsaWMu b10gRXJyb3IgMQptYWtlWzFdOiAqKiogW19tb2R1bGVfL3Zhci90bXAvcG9ydGFnZS94MTEtZHJp dmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWls ZF9tb2QvMi42LnhdIEVycm9yIDIKbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYC91c3Ivc3Jj L2xpbnV4LTMuMC40LWhhcmRlbmVkLXIxJwptYWtlOiAqKiogW2ttb2RfYnVpbGRdIEVycm9yIDIK IBtbMzE7MDFtKhtbMG0gRVJST1I6IHgxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExIGZhaWxl ZCAoY29tcGlsZSBwaGFzZSk6CiAbWzMxOzAxbSobWzBtICAgZW1ha2UgZmFpbGVkCiAbWzMxOzAx bSobWzBtIAogG1szMTswMW0qG1swbSBJZiB5b3UgbmVlZCBzdXBwb3J0LCBwb3N0IHRoZSBvdXRw dXQgb2YgJ2VtZXJnZSAtLWluZm8gPXgxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExJywKIBtb MzE7MDFtKhtbMG0gdGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBhbmQgdGhlIG91dHB1dCBvZiAnZW1l cmdlIC1wcXYgPXgxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExJy4KIBtbMzE7MDFtKhtbMG0g VGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBpcyBsb2NhdGVkIGF0ICcvdmFyL3RtcC9wb3J0YWdlL3gx MS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3RlbXAvYnVpbGQubG9nJy4KIBtbMzE7MDFtKhtb MG0gVGhlIGVidWlsZCBlbnZpcm9ubWVudCBmaWxlIGlzIGxvY2F0ZWQgYXQgJy92YXIvdG1wL3Bv cnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTEuMTEvdGVtcC9lbnZpcm9ubWVudCcuCiAb WzMxOzAxbSobWzBtIFM6ICcvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJz LTExLjExL3dvcmsnCg== --20cf307c9e08bf33ef04b4d36f93 Content-Type: application/octet-stream; name=environment Content-Disposition: attachment; filename=environment Content-Transfer-Encoding: base64 X-Attachment-Id: f_gwkfxrdp1 ZGVjbGFyZSAteCBBQkk9ImFtZDY0IgpkZWNsYXJlIC14IEFMU0FfQ0FSRFM9IiIKZGVjbGFyZSAt eCBBTFNBX1BDTV9QTFVHSU5TPSJhZHBjbSBhbGF3IGFzeW0gY29weSBkbWl4IGRzaGFyZSBkc25v b3AgZW1wdHkgZXh0cGx1ZyBmaWxlIGhvb2tzIGllYzk1OCBpb3BsdWcgbGFkc3BhIGxmbG9hdCBs aW5lYXIgbWV0ZXIgbW1hcF9lbXVsIG11bGF3IG11bHRpIG51bGwgcGx1ZyByYXRlIHJvdXRlIHNo YXJlIHNobSBzb2Z0dm9sIgpkZWNsYXJlIC14IEFOVF9IT01FPSIvdXNyL3NoYXJlL2FudCIKZGVj bGFyZSAteCBBUEFDSEUyX01PRFVMRVM9ImFjdGlvbnMgYWxpYXMgYXV0aF9iYXNpYyBhdXRobl9h bGlhcyBhdXRobl9hbm9uIGF1dGhuX2RibSBhdXRobl9kZWZhdWx0IGF1dGhuX2ZpbGUgYXV0aHpf ZGJtIGF1dGh6X2RlZmF1bHQgYXV0aHpfZ3JvdXBmaWxlIGF1dGh6X2hvc3QgYXV0aHpfb3duZXIg YXV0aHpfdXNlciBhdXRvaW5kZXggY2FjaGUgY2dpIGNnaWQgZGF2IGRhdl9mcyBkYXZfbG9jayBk ZWZsYXRlIGRpciBkaXNrX2NhY2hlIGVudiBleHBpcmVzIGV4dF9maWx0ZXIgZmlsZV9jYWNoZSBm aWx0ZXIgaGVhZGVycyBpbmNsdWRlIGluZm8gbG9nX2NvbmZpZyBsb2dpbyBtZW1fY2FjaGUgbWlt ZSBtaW1lX21hZ2ljIG5lZ290aWF0aW9uIHJld3JpdGUgc2V0ZW52aWYgc3BlbGluZyBzdGF0dXMg dW5pcXVlX2lkIHVzZXJkaXIgdXNlcnRyYWNrIHZob3N0X2FsaWFzIgpkZWNsYXJlIC14IEFSQ0g9 ImFtZDY0IgpkZWNsYXJlIC0tIEFSQ0hfRElSPSIvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJz L2F0aS1kcml2ZXJzLTExLjExL3dvcmsvYXJjaC94ODZfNjQiCmRlY2xhcmUgLS0gQVRJX1VSTD0i aHR0cDovL3d3dzIuYXRpLmNvbS9kcml2ZXJzL2xpbnV4LyIKZGVjbGFyZSAtLSBCQVNFX0RJUj0i L3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL3hwaWMi CmRlY2xhcmUgLXggQk9PVFNUUkFQX1VTRT0iY3h4IHVuaWNvZGUgbXVsdGlsaWIgaGFyZGVuZWQg cGF4X2tlcm5lbCBwaWMgLWppdCIKZGVjbGFyZSAtLSBCVUlMRF9QQVJBTVM9IkdDQ19WRVJfTUFK PTQgS1ZFUj0zLjAuNC1oYXJkZW5lZC1yMSBLRElSPS91c3Ivc3JjL2xpbnV4IENGTEFHU19NT0RV TEUrPVwiLURNT0RVTEUgLURBVEkgLURGR0xcIiBDRkxBR1NfTU9EVUxFKz0tRENPTVBBVF9BTExP Q19VU0VSX1NQQUNFPWFyY2hfY29tcGF0X2FsbG9jX3VzZXJfc3BhY2UiCmRlY2xhcmUgLS0gQlVJ TERfVEFSR0VUUz0ia21vZF9idWlsZCIKZGVjbGFyZSAteCBDQUxMSUdSQV9GRUFUVVJFUz0ia2V4 aSB3b3JkcyBmbG93IHBsYW4gc3RhZ2UgdGFibGVzIGtyaXRhIGthcmJvbiBicmFpbmR1bXAiCmRl Y2xhcmUgLXggQ0FNRVJBUz0icHRwMiIKZGVjbGFyZSAteCBDQlVJTEQ9Ing4Nl82NC1wYy1saW51 eC1nbnUiCmRlY2xhcmUgLXggQ0ZMQUdTPSItTzIgLXBpcGUgLW1hcmNoPWNvcmUyIgpkZWNsYXJl IC14IENGTEFHU19hbWQ2ND0iLW02NCIKZGVjbGFyZSAteCBDRkxBR1NfZGVmYXVsdApkZWNsYXJl IC14IENGTEFHU194MzI9Ii1teDMyIgpkZWNsYXJlIC14IENGTEFHU194ODY9Ii1tMzIiCmRlY2xh cmUgLXggQ0hPU1Q9Ing4Nl82NC1wYy1saW51eC1nbnUiCmRlY2xhcmUgLXggQ0hPU1RfYW1kNjQ9 Ing4Nl82NC1wYy1saW51eC1nbnUiCmRlY2xhcmUgLXggQ0hPU1RfZGVmYXVsdD0ieDg2XzY0LXBj LWxpbnV4LWdudSIKZGVjbGFyZSAteCBDSE9TVF94MzI9Ing4Nl82NC1wYy1saW51eC1nbnUiCmRl Y2xhcmUgLXggQ0hPU1RfeDg2PSJpNjg2LXBjLWxpbnV4LWdudSIKZGVjbGFyZSAteCBDT0xMRUNU RF9QTFVHSU5TPSJkZiBpbnRlcmZhY2UgaXJxIGxvYWQgbWVtb3J5IHJyZHRvb2wgc3dhcCBzeXNs b2ciCmRlY2xhcmUgLXggQ09MT1JGR0JHPSIxNTswIgpkZWNsYXJlIC14IENPTFVNTlM9IjE5MiIK ZGVjbGFyZSAteCBDUk9TU0NPTVBJTEVfT1BUUz0iIgpkZWNsYXJlIC14IENUQVJHRVRfZGVmYXVs dD0ieDg2XzY0LXBjLWxpbnV4LWdudSIKZGVjbGFyZSAteCBDWFhGTEFHUz0iLU8yIC1waXBlIC1t YXJjaD1jb3JlMiIKZGVjbGFyZSAteCBEQlVTX1NFU1NJT05fQlVTX0FERFJFU1M9InVuaXg6YWJz dHJhY3Q9L3RtcC9kYnVzLTNiTjFvcGpybEIsZ3VpZD1iMmRmYTcxMDgzYThkYTM4OTFhMGFiZGIw MDAwMDA4YyIKZGVjbGFyZSAteCBERUZBVUxUX0FCST0iYW1kNjQiCmRlY2xhcmUgLXggREVGSU5F RF9QSEFTRVM9IiBjb21waWxlIGluc3RhbGwgcG9zdGluc3QgcG9zdHJtIHByZWluc3QgcHJlcGFy ZSBwcmVybSBwcmV0ZW5kIHNldHVwIHRlc3QgdW5wYWNrIgpkZWNsYXJlIERFUEVORD0iCgk8PXgx MS1iYXNlL3hvcmctc2VydmVyLTEuMTEuNDkKCT49YXBwLWFkbWluL2VzZWxlY3Qtb3BlbmdsLTEu MC43CglzeXMtcG93ZXIvYWNwaWQKCXgxMS1hcHBzL3hhdXRoCgl4MTEtbGlicy9saWJYMTEKCXgx MS1saWJzL2xpYlhleHQKCXgxMS1saWJzL2xpYlhpbmVyYW1hCgl4MTEtbGlicy9saWJYcmFuZHIK CXgxMS1saWJzL2xpYlhyZW5kZXIKCW11bHRpbGliPyAoCgkJCWFwcC1lbXVsYXRpb24vZW11bC1s aW51eC14ODYtb3BlbmdsCgkJCWFwcC1lbXVsYXRpb24vZW11bC1saW51eC14ODYteGxpYnMKCSkK CXF0ND8gKAoJCQl4MTEtbGlicy9saWJJQ0UKCQkJeDExLWxpYnMvbGliU00KCQkJeDExLWxpYnMv bGliWGN1cnNvcgoJCQl4MTEtbGlicy9saWJYZml4ZXMKCQkJeDExLWxpYnMvbGliWHhmODZ2bQoJ CQl4MTEtbGlicy9xdC1jb3JlCgkJCXgxMS1saWJzL3F0LWd1aQoJKQoJb3BlbmNsPyAoCgkJIT49 eDExLWRyaXZlcnMvbnZpZGlhLWRyaXZlcnMtMTk1CgkpCgoJeDExLXByb3RvL2lucHV0cHJvdG8K CXgxMS1wcm90by94Zjg2bWlzY3Byb3RvCgl4MTEtcHJvdG8veGY4NnZpZG1vZGVwcm90bwoJeDEx LXByb3RvL3hpbmVyYW1hcHJvdG8KCXgxMS1saWJzL2xpYlh0c3QKCXN5cy1hcHBzL2ZpbmR1dGls cwoJYXBwLW1pc2MvcGF4LXV0aWxzCiBrZXJuZWxfbGludXg/ICggc3lzLWFwcHMvbW9kdWxlLWlu aXQtdG9vbHMgKQoJc3lzLWFwcHMvc2VkCglrZXJuZWxfbGludXg/ICggdmlydHVhbC9saW51eC1z b3VyY2VzICkiCmRlY2xhcmUgREVTQ1JJUFRJT049IkF0aSBwcmVjb21waWxlZCBkcml2ZXJzIGZv ciByNjAwIChIRCBTZXJpZXMpIGFuZCBuZXdlciBjaGlwc2V0cyIKZGVjbGFyZSAteCBERVNLVE9Q X1NFU1NJT049ImRlZmF1bHQiCmRlY2xhcmUgLXggREVTVFRSRUU9Ii91c3IiCmRlY2xhcmUgLXgg RElST1BUSU9OUz0iLW0wNzU1IgpkZWNsYXJlIC14IERNX0NPTlRST0w9Ii92YXIvcnVuL3hkbWN0 bCIKZGVjbGFyZSAteCBFQVBJPSI0IgpkZWNsYXJlIC14IEVMSUJDPSJnbGliYyIKZGVjbGFyZSAt LSBFTVVMVElMSUJfUEtHPSJ0cnVlIgpkZWNsYXJlIC0tIEVQQVRDSF9FWENMVURFPSIiCmRlY2xh cmUgLS0gRVBBVENIX0ZPUkNFPSJubyIKZGVjbGFyZSAtLSBFUEFUQ0hfTVVMVElfTVNHPSJBcHBs eWluZyB2YXJpb3VzIHBhdGNoZXMgKGJ1Z2ZpeGVzL3VwZGF0ZXMpIC4uLiIKZGVjbGFyZSAtLSBF UEFUQ0hfT1BUUz0iLWcwIC1FIC0tbm8tYmFja3VwLWlmLW1pc21hdGNoIgpkZWNsYXJlIC0tIEVQ QVRDSF9TSU5HTEVfTVNHPSIiCmRlY2xhcmUgLS0gRVBBVENIX1NPVVJDRT0iL3Zhci90bXAvcG9y dGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xMS4xMS93b3JrL3BhdGNoIgpkZWNsYXJlIC0t IEVQQVRDSF9TVUZGSVg9InBhdGNoLmJ6MiIKZGVjbGFyZSAteCBFWEVPUFRJT05TPSItbTA3NTUi CmRlY2xhcmUgLXggRkNGTEFHUz0iIgpkZWNsYXJlIC14IEZFVENIQ09NTUFORF9TU0g9ImJhc2gg LWMgXCJ4PVxcXCR7MiNzc2g6Ly99IDsgaG9zdD1cXFwke3glJS8qfSA7IHBvcnQ9XFxcJHtob3N0 IyMqOn0gOyBob3N0PVxcXCR7aG9zdCU6Kn0gOyBbWyBcXFwke2hvc3R9ID0gXFxcJHtwb3J0fSBd XSAmJiBwb3J0PTIyIDsgZXhlYyByc3luYyAtLXJzaD1cXFwic3NoIC1wXFxcJHtwb3J0fVxcXCIg LWF2UCBcXFwiXFxcJHtob3N0fTovXFxcJHt4IyovfVxcXCIgXFxcIlxcXCQxXFxcIlwiIHJzeW5j IFwiXCR7RElTVERJUn0vXCR7RklMRX1cIiBcIlwke1VSSX1cIiIKZGVjbGFyZSAteCBGRkxBR1M9 Ii1PMiAtcGlwZSAtbWFyY2g9Y29yZTIgLWZ1bnJvbGwtYWxsLWxvb3BzIgpkZWNsYXJlIC0tIEZP TERFUl9QUkVGSVg9ImNvbW1vbi8iCmRlY2xhcmUgLXggR0NDX1NQRUNTPSIvdXNyL2xpYi9nY2Mv eDg2XzY0LXBjLWxpbnV4LWdudS80LjUuMy9oYXJkZW5lZG5vcGllLnNwZWNzIgpkZWNsYXJlIC14 IEdES19VU0VfWEZUPSIxIgpkZWNsYXJlIC14IEdQU0RfUFJPVE9DT0xTPSJhc2h0ZWNoIGFpdmRt IGVhcnRobWF0ZSBldmVybW9yZSBmdjE4IGdhcm1pbiBnYXJtaW50eHQgZ3BzY2xvY2sgaXRyYXgg bXRrMzMwMSBubWVhIG50cmlwIG5hdmNvbSBvY2VhbnNlcnZlciBvbGRzdHlsZSBvbmNvcmUgcnRj bTEwNHYyIHJ0Y20xMDR2MyBzaXJmIHN1cGVyc3RhcjIgdGltaW5nIHRzaXAgdHJpcG1hdGUgdG50 IHVieCIKZGVjbGFyZSAteCBHUlVCX1BMQVRGT1JNUz0iIgpkZWNsYXJlIC14IEdTRVRUSU5HU19C QUNLRU5EPSJnY29uZiIKZGVjbGFyZSAteCBHU19MSUI9Ii9ob21lL3BldGEvLmZvbnRzIgpkZWNs YXJlIC14IEdUSzJfUkNfRklMRVM9Ii9ldGMvZ3RrLTIuMC9ndGtyYzovaG9tZS9wZXRhLy5ndGty Yy0yLjA6L2hvbWUvcGV0YS8ua2RlNC9zaGFyZS9jb25maWcvZ3RrcmMtMi4wIgpkZWNsYXJlIC14 IEdUS19SQ19GSUxFUz0iL2V0Yy9ndGsvZ3RrcmM6L2hvbWUvcGV0YS8uZ3RrcmM6L2hvbWUvcGV0 YS8ua2RlNC9zaGFyZS9jb25maWcvZ3RrcmMiCmRlY2xhcmUgLXggSEc9Ii91c3IvYmluL2hnIgpk ZWNsYXJlIEhPTUVQQUdFPSJodHRwOi8vd3d3LmF0aS5jb20iCmRlY2xhcmUgLXggSU5IRVJJVEVE PSIgbXVsdGlsaWIgdG9vbGNoYWluLWZ1bmNzIHBvcnRhYmlsaXR5IHVzZXIgZXV0aWxzIHZlcnNp b25hdG9yIGxpbnV4LWluZm8gbGludXgtbW9kIgpkZWNsYXJlIC14IElOUFVUX0RFVklDRVM9Imtl eWJvYXJkIG1vdXNlIGV2ZGV2IgpkZWNsYXJlIC14IElOU0RFU1RUUkVFPSIiCmRlY2xhcmUgLXgg SU5TT1BUSU9OUz0iLW0wNjQ0IgpkZWNsYXJlIElVU0U9ImRlYnVnICttb2R1bGVzIG11bHRpbGli IG9wZW5jbCBxdDQga2VybmVsX2xpbnV4IgpkZWNsYXJlIC14IEpBVkFDPSIvZXRjL2phdmEtY29u ZmlnLTIvY3VycmVudC1zeXN0ZW0tdm0vYmluL2phdmFjIgpkZWNsYXJlIC14IEpBVkFDQ19IT01F PSIvdXNyL3NoYXJlL2phdmFjYy8iCmRlY2xhcmUgLXggSkFWQV9IT01FPSIvZXRjL2phdmEtY29u ZmlnLTIvY3VycmVudC1zeXN0ZW0tdm0iCmRlY2xhcmUgLXggSkRLX0hPTUU9Ii9ldGMvamF2YS1j b25maWctMi9jdXJyZW50LXN5c3RlbS12bSIKZGVjbGFyZSAteCBLREVfRlVMTF9TRVNTSU9OPSJ0 cnVlIgpkZWNsYXJlIC14IEtERV9NVUxUSUhFQUQ9ImZhbHNlIgpkZWNsYXJlIC14IEtERV9TRVNT SU9OX1VJRD0iMTAwMCIKZGVjbGFyZSAteCBLREVfU0VTU0lPTl9WRVJTSU9OPSI0IgpkZWNsYXJl IC14IEtFUk5FTD0ibGludXgiCmRlY2xhcmUgLXggS0VSTkVMX0FCST0iYW1kNjQiCmRlY2xhcmUg LS0gS0VSTkVMX0RJUj0iL3Vzci9zcmMvbGludXgiCmRlY2xhcmUgLS0gS0VSTkVMX01BS0VGSUxF PSIvdXNyL3NyYy9saW51eC9NYWtlZmlsZSIKZGVjbGFyZSAteCBLRVlXT1JEUz0iYW1kNjQgfng4 NiIKZGVjbGFyZSAteCBLT05TT0xFX0RCVVNfU0VSVklDRT0iOjEuMTAyIgpkZWNsYXJlIC14IEtP TlNPTEVfREJVU19TRVNTSU9OPSIvU2Vzc2lvbnMvMSIKZGVjbGFyZSAtLSBLVl9ESVI9Ii91c3Iv c3JjL2xpbnV4IgpkZWNsYXJlIC0tIEtWX0VYVFJBPSItaGFyZGVuZWQtcjEiCmRlY2xhcmUgLS0g S1ZfRlVMTD0iMy4wLjQtaGFyZGVuZWQtcjEiCmRlY2xhcmUgLS0gS1ZfTE9DQUw9IiIKZGVjbGFy ZSAtLSBLVl9NQUpPUj0iMyIKZGVjbGFyZSAtLSBLVl9NSU5PUj0iMCIKZGVjbGFyZSAtLSBLVl9P Qko9ImtvIgpkZWNsYXJlIC0tIEtWX09VVF9ESVI9Ii9saWIvbW9kdWxlcy8zLjAuNC1oYXJkZW5l ZC1yMS9idWlsZCIKZGVjbGFyZSAtLSBLVl9QQVRDSD0iNCIKZGVjbGFyZSAteCBMQU5HPSJjc19D Wi5VVEYtOCIKZGVjbGFyZSAteCBMQU5HVUFHRT0iIgpkZWNsYXJlIC14IExDRF9ERVZJQ0VTPSIi CmRlY2xhcmUgLXggTENfQ09MTEFURT0iQyIKZGVjbGFyZSAteCBMQ19DVFlQRT0iY3NfQ1ouVVRG LTgiCmRlY2xhcmUgLXggTERGTEFHUz0iLVdsLC1PMSAtV2wsLS1hcy1uZWVkZWQiCmRlY2xhcmUg LXggTERGTEFHU19hbWQ2ND0iLW0gZWxmX3g4Nl82NCIKZGVjbGFyZSAteCBMREZMQUdTX2RlZmF1 bHQKZGVjbGFyZSAteCBMREZMQUdTX3gzMj0iLW0gZWxmMzJfeDg2XzY0IgpkZWNsYXJlIC14IExE RkxBR1NfeDg2PSItbSBlbGZfaTM4NiIKZGVjbGFyZSAteCBMSUJESVJfYW1kNjQ9ImxpYjY0Igpk ZWNsYXJlIC14IExJQkRJUl9hbWQ2NF9mYnNkPSJsaWI2NCIKZGVjbGFyZSAteCBMSUJESVJfZGVm YXVsdD0ibGliIgpkZWNsYXJlIC14IExJQkRJUl9uMzI9ImxpYjMyIgpkZWNsYXJlIC14IExJQkRJ Ul9uNjQ9ImxpYjY0IgpkZWNsYXJlIC14IExJQkRJUl9vMzI9ImxpYiIKZGVjbGFyZSAteCBMSUJE SVJfcHBjPSJsaWIzMiIKZGVjbGFyZSAteCBMSUJESVJfcHBjNjQ9ImxpYjY0IgpkZWNsYXJlIC14 IExJQkRJUl9zMzkwPSJsaWIzMiIKZGVjbGFyZSAteCBMSUJESVJfczM5MHg9ImxpYjY0IgpkZWNs YXJlIC14IExJQkRJUl9zcGFyYzMyPSJsaWIzMiIKZGVjbGFyZSAteCBMSUJESVJfc3BhcmM2ND0i bGliNjQiCmRlY2xhcmUgLXggTElCRElSX3gzMj0ibGlieDMyIgpkZWNsYXJlIC14IExJQkRJUl94 ODY9ImxpYjMyIgpkZWNsYXJlIC14IExJQkRJUl94ODZfZmJzZD0ibGliMzIiCmRlY2xhcmUgLXgg TElCR0xfRFJJVkVSU19QQVRIPSIvdXNyL2xpYjY0L2RyaTovdXNyL2xpYjMyL2RyaTovdXNyL2xp YjMyL2RyaTovdXNyL2xpYjY0L2RyaSIKZGVjbGFyZSAteCBMSUJPUFRJT05TPSItbTA2NDQiCmRl Y2xhcmUgLXggTElDRU5TRT0iQU1EIEdQTC0yIFFQTC0xLjAgYXMtaXMiCmRlY2xhcmUgLXggTElO R1VBUz0iY3MgZW4iCmRlY2xhcmUgLXggTUFLRU9QVFM9Ii1qOSIKZGVjbGFyZSAtLSBNT0RVTEVf RElSPSIvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsv Y29tbW9uLy9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QiCmRlY2xhcmUgLS0gTU9EVUxFX05B TUVTPSJmZ2xyeCh2aWRlbzovdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJz LTExLjExL3dvcmsvY29tbW9uLy9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42LngpIgpk ZWNsYXJlIC14IE1VTFRJTElCX0FCSVM9ImFtZDY0IHg4NiIKZGVjbGFyZSAteCBNVUxUSUxJQl9T VFJJQ1RfREVOWT0iNjQtYml0LipzaGFyZWQgb2JqZWN0IgpkZWNsYXJlIC14IE1VTFRJTElCX1NU UklDVF9ESVJTPSIvbGliMzIgL2xpYiAvdXNyL2xpYjMyIC91c3IvbGliIC91c3Iva2RlLyovbGli MzIgL3Vzci9rZGUvKi9saWIgL3Vzci9xdC8qL2xpYjMyIC91c3IvcXQvKi9saWIgL3Vzci9YMTFS Ni9saWIzMiAvdXNyL1gxMVI2L2xpYiIKZGVjbGFyZSAteCBNVUxUSUxJQl9TVFJJQ1RfRVhFTVBU PSIocGVybDV8Z2NjfGdjYy1saWJ8YmludXRpbHN8ZWNsaXBzZS0zfGRlYnVnfHBvcnRhZ2V8dWRl dikiCmRlY2xhcmUgLS0gTVlfQkFTRV9ESVI9Ii92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMv YXRpLWRyaXZlcnMtMTEuMTEvd29yay94cGljXzY0YSIKZGVjbGFyZSAteCBORVRCRUFOUz0iYXBp c3VwcG9ydCBjbmQgZ3Jvb3Z5IGdzZiBoYXJuZXNzIGlkZSBpZGVudGl0eSBqMmVlIGphdmEgbW9i aWxpdHkgbmIgcGhwIHByb2ZpbGVyIHNvYSB2aXN1YWx3ZWIgd2ViY29tbW9uIHdlYnN2Y2NvbW1v biB4bWwiCmRlY2xhcmUgLXggT1BFTkdMX1BST0ZJTEU9ImF0aSIKZGVjbGFyZSAtLSBPVVRQVVRf RElSPSIvbGliL21vZHVsZXMvMy4wLjQtaGFyZGVuZWQtcjEvYnVpbGQiCmRlY2xhcmUgLXggUEFU SD0iL3Vzci9saWI2NC9wb3J0YWdlL2Jpbi9lYnVpbGQtaGVscGVycy80Oi91c3IvbGliNjQvcG9y dGFnZS9iaW4vZWJ1aWxkLWhlbHBlcnM6L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91 c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi9vcHQvYmluOi91c3IveDg2XzY0LXBjLWxpbnV4 LWdudS9hcm0tbm9uZS1saW51eC1nbnVlYWJpL2djYy1iaW4vNC41LjI6L3Vzci94ODZfNjQtcGMt bGludXgtZ251L2djYy1iaW4vNC41LjM6L3Vzci9saWI2NC9zdWJ2ZXJzaW9uL2JpbiIKZGVjbGFy ZSBQREVQRU5EPSIiCmRlY2xhcmUgLXggUEhQX1RBUkdFVFM9IiIKZGVjbGFyZSAteCBQS0dfQ09O RklHX1BBVEg9Ii91c3IvbGliNjQvcGtnY29uZmlnIgpkZWNsYXJlIC0tIFBLR19MSUJESVI9Imxp YjY0IgpkZWNsYXJlIC1hIFBPUlRBR0VfRE9DT01QUkVTUz0nKFswXT0iL3Vzci9zaGFyZS9kb2Mi IFsxXT0iL3Vzci9zaGFyZS9pbmZvIiBbMl09Ii91c3Ivc2hhcmUvbWFuIiknCmRlY2xhcmUgLWEg UE9SVEFHRV9ET0NPTVBSRVNTX1NLSVA9JyhbMF09Ii91c3Ivc2hhcmUvZG9jL2F0aS1kcml2ZXJz LTExLjExL2h0bWwiKScKZGVjbGFyZSAteCBQUkVMSU5LX1BBVEhfTUFTSz0iL29wdDovdXNyL2xp YjY0L2xpYmZyZWVibDMuc286L3Vzci9saWI2NC9saWJuc3NkYm0zLnNvOi91c3IvbGliNjQvbGli c29mdG9rbjMuc28iCmRlY2xhcmUgLXggUFJPRklMRUhPTUU9IiIKZGVjbGFyZSAteCBQUk9GSUxF X09OTFlfVkFSSUFCTEVTPSJBUkNIIEVMSUJDIEtFUk5FTCBVU0VSTEFORCIKZGVjbGFyZSAteCBQ Uk9QRVJUSUVTPSIiCmRlY2xhcmUgLXggUFJPVklERT0iIgpkZWNsYXJlIC14IFBZVEhPTkRPTlRX UklURUJZVEVDT0RFPSIxIgpkZWNsYXJlIC0tIFFBX0RUX0hBU0g9IgoJb3B0L2Jpbi9hbWRjY2Ns ZQoJb3B0L2Jpbi9hdGljb25maWcKCW9wdC9iaW4vYXRpb2RjbGkKCW9wdC9iaW4vYXRpb2RlCglv cHQvYmluL2NsaW5mbwoJb3B0L2Jpbi9mZ2xyeGluZm8KCW9wdC9zYmluL2F0aWV2ZW50c2QKCW9w dC9zYmluL2FtZG5vdGlmeXVpCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9saWJhdGljYWxjbC5z bwoJdXNyL2xpYlxcKDMyXFx8NjRcXClcXD8vbGliYXRpY2FscnQuc28KCXVzci9saWJcXCgzMlxc fDY0XFwpXFw/L2xpYmF0aXVraS5zby4xLjAKCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L2xpYmF0 aWFkbHh4LnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9saWJmZ2xyeF9kbS5zby4xLjAKCXVz ci9saWJcXCgzMlxcfDY0XFwpXFw/L2xpYlh2QkFXLnNvLjEuMAoJdXNyL2xpYlxcKDMyXFx8NjRc XClcXD8vbGliQU1EWHZCQS5zby4xLjAKCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L3hvcmcvbW9k dWxlcy9hbWR4bW0uc28KCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L3hvcmcvbW9kdWxlcy9nbGVz eC5zbwoJdXNyL2xpYlxcKDMyXFx8NjRcXClcXD8veG9yZy9tb2R1bGVzL2xpbnV4L2xpYmZnbHJ4 ZHJtLnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy94b3JnL21vZHVsZXMvZHJpdmVycy9mZ2xy eF9kcnYuc28KCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L2xpYmF0aWNhbGRkLnNvCgl1c3IvbGli XFwoMzJcXHw2NFxcKVxcPy9kcmkvZmdscnhfZHJpLnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxc Py9vcGVuZ2wvYXRpL2V4dGVuc2lvbnMvbGliZ2x4LnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxc Py9vcGVuZ2wvYXRpL2V4dGVuc2lvbnMvZmdscngtbGliZ2x4LnNvCgl1c3IvbGliXFwoMzJcXHw2 NFxcKVxcPy9vcGVuZ2wvYXRpL2xpYi9mZ2xyeC1saWJHTC5zby4xLjIKCXVzci9saWJcXCgzMlxc fDY0XFwpXFw/L29wZW5nbC9hdGkvbGliL2xpYkdMLnNvLjEuMgoJdXNyL2xpYlxcKDMyXFx8NjRc XClcXD8vbGliYW1kb2NsXFwoMzJcXHw2NFxcKVxcPy5zbwoJdXNyL2xpYlxcKDMyXFx8NjRcXClc XD8vbGliT3BlbkNMLnNvLjEKIgpkZWNsYXJlIC0tIFFBX0VYRUNTVEFDSz0iCglvcHQvYmluL2F0 aW9kZQoJb3B0L2Jpbi9hbWRjY2NsZQoJdXNyL2xpYiovb3BlbmdsL2F0aS9saWIvbGliR0wuc28u MS4yCgl1c3IvbGliKi9kcmkvZmdscnhfZHJpLnNvCiIKZGVjbGFyZSAteCBRQV9QUkVTVFJJUFBF RD0iCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9saWJYdkJBVy5zby4xLjAKCXVzci9saWJcXCgz MlxcfDY0XFwpXFw/L29wZW5nbC9hdGkvbGliL2xpYkdMLnNvLjEuMgoJdXNyL2xpYlxcKDMyXFx8 NjRcXClcXD8vb3BlbmdsL2F0aS9leHRlbnNpb25zL2xpYmdseC5zbwoJdXNyL2xpYlxcKDMyXFx8 NjRcXClcXD8veG9yZy9tb2R1bGVzL2dsZXN4LnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9s aWJBTURYdkJBLnNvLjEuMAoJdXNyL2xpYlxcKDMyXFx8NjRcXClcXD8vbGliYXRpY2FsZGQuc28K CXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L2RyaS9mZ2xyeF9kcmkuc28KIgpkZWNsYXJlIC0tIFFB X1NPTkFNRT0iCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9saWJhdGlhZGx4eC5zbwoJdXNyL2xp YlxcKDMyXFx8NjRcXClcXD8vbGliYXRpY2FsY2wuc28KCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/ L2xpYmF0aWNhbGRkLnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9saWJhdGljYWxydC5zbwoJ dXNyL2xpYlxcKDMyXFx8NjRcXClcXD8vbGliYW1kb2NsXFwoMzJcXHw2NFxcKVxcPy5zbwoiCmRl Y2xhcmUgLS0gUUFfVEVYVFJFTFM9IgoJdXNyL2xpYiovb3BlbmdsL2F0aS9saWIvbGliR0wuc28u MS4yCgl1c3IvbGliKi9saWJhdGlhZGx4eC5zbwoJdXNyL2xpYioveG9yZy9tb2R1bGVzL2dsZXN4 LnNvCgl1c3IvbGliKi9saWJhdGljYWxkZC5zbwoJdXNyL2xpYiovZHJpL2ZnbHJ4X2RyaS5zbwoi CmRlY2xhcmUgLS0gUUFfV1hfTE9BRD0iCgl1c3IvbGliKi9vcGVuZ2wvYXRpL2xpYi9saWJHTC5z by4xLjIKCXVzci9saWIqL2RyaS9mZ2xyeF9kcmkuc28KIgpkZWNsYXJlIC14IFFFTVVfU09GVE1N VV9UQVJHRVRTPSJhcm0gaTM4NiB4ODZfNjQiCmRlY2xhcmUgLXggUUVNVV9VU0VSX1RBUkdFVFM9 ImFybSBpMzg2IHg4Nl82NCIKZGVjbGFyZSAteCBRVF9QTFVHSU5fUEFUSD0iL3Vzci9saWI2NC9r ZGU0L3BsdWdpbnM6L2hvbWUvcGV0YS8ua2RlNC9saWI2NC9rZGU0L3BsdWdpbnMvOi91c3IvbGli NjQva2RlNC9wbHVnaW5zLyIKZGVjbGFyZSBSREVQRU5EPSIKCTw9eDExLWJhc2UveG9yZy1zZXJ2 ZXItMS4xMS40OQoJPj1hcHAtYWRtaW4vZXNlbGVjdC1vcGVuZ2wtMS4wLjcKCXN5cy1wb3dlci9h Y3BpZAoJeDExLWFwcHMveGF1dGgKCXgxMS1saWJzL2xpYlgxMQoJeDExLWxpYnMvbGliWGV4dAoJ eDExLWxpYnMvbGliWGluZXJhbWEKCXgxMS1saWJzL2xpYlhyYW5kcgoJeDExLWxpYnMvbGliWHJl bmRlcgoJbXVsdGlsaWI/ICgKCQkJYXBwLWVtdWxhdGlvbi9lbXVsLWxpbnV4LXg4Ni1vcGVuZ2wK CQkJYXBwLWVtdWxhdGlvbi9lbXVsLWxpbnV4LXg4Ni14bGlicwoJKQoJcXQ0PyAoCgkJCXgxMS1s aWJzL2xpYklDRQoJCQl4MTEtbGlicy9saWJTTQoJCQl4MTEtbGlicy9saWJYY3Vyc29yCgkJCXgx MS1saWJzL2xpYlhmaXhlcwoJCQl4MTEtbGlicy9saWJYeGY4NnZtCgkJCXgxMS1saWJzL3F0LWNv cmUKCQkJeDExLWxpYnMvcXQtZ3VpCgkpCglvcGVuY2w/ICgKCQkhPj14MTEtZHJpdmVycy9udmlk aWEtZHJpdmVycy0xOTUKCSkKIGtlcm5lbF9saW51eD8gKCBzeXMtYXBwcy9tb2R1bGUtaW5pdC10 b29scyApIgpkZWNsYXJlIFJFUVVJUkVEX1VTRT0iIgpkZWNsYXJlIC14IFJFU1RSSUNUPSIiCmRl Y2xhcmUgLXggUkVTVU1FQ09NTUFORF9TU0g9ImJhc2ggLWMgXCJ4PVxcXCR7MiNzc2g6Ly99IDsg aG9zdD1cXFwke3glJS8qfSA7IHBvcnQ9XFxcJHtob3N0IyMqOn0gOyBob3N0PVxcXCR7aG9zdCU6 Kn0gOyBbWyBcXFwke2hvc3R9ID0gXFxcJHtwb3J0fSBdXSAmJiBwb3J0PTIyIDsgZXhlYyByc3lu YyAtLXJzaD1cXFwic3NoIC1wXFxcJHtwb3J0fVxcXCIgLWF2UCBcXFwiXFxcJHtob3N0fTovXFxc JHt4IyovfVxcXCIgXFxcIlxcXCQxXFxcIlwiIHJzeW5jIFwiXCR7RElTVERJUn0vXCR7RklMRX1c IiBcIlwke1VSSX1cIiIKZGVjbGFyZSAteCBSVUJZX1RBUkdFVFM9IiIKZGVjbGFyZSAteCBSX0hP TUU9Ii91c3IvbGliNjQvUiIKZGVjbGFyZSAteCBTPSIvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2 ZXJzL2F0aS1kcml2ZXJzLTExLjExL3dvcmsiCmRlY2xhcmUgLXggU0FOREJPWF9ERUJVRz0iMCIK ZGVjbGFyZSAteCBTQU5EQk9YX0RFTlk9IiIKZGVjbGFyZSAteCBTQU5EQk9YX1BJRD0iMTI4Mzki CmRlY2xhcmUgLXggU0FOREJPWF9QUkVESUNUPSIvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJz L2F0aS1kcml2ZXJzLTExLjExL2hvbWVkaXI6L2Rldi9jcnlwdG86L3Zhci9jYWNoZS9mb250Y29u ZmlnIgpkZWNsYXJlIC14IFNBTkRCT1hfUkVBRD0iLzovdmFyL3RtcCIKZGVjbGFyZSAteCBTQU5E Qk9YX1ZFUkJPU0U9IjEiCmRlY2xhcmUgLXggU0FOREJPWF9XUklURT0iOi9kZXYvY29uc29sZTov ZGV2L2ZkOi9kZXYvZnVsbDovZGV2L251bGw6L2Rldi9wdHMvOi9kZXYvcHR5Oi9kZXYvc2htOi9k ZXYvdHRzOi9kZXYvdHR5Oi9kZXYvdmMvOi9kZXYvemVybzovcHJvYy9zZWxmL2ZkOi90bXAvOi91 c3IvbGliL2NmOi91c3IvbGliL2NvbmZ0ZXN0Oi91c3IvbGliMzIvY2Y6L3Vzci9saWIzMi9jb25m dGVzdDovdXNyL2xpYjY0L2NmOi91c3IvbGliNjQvY29uZnRlc3Q6L3Vzci90bXAvY2Y6L3Vzci90 bXAvY29uZnRlc3Q6L3Zhci90bXA6L3Zhci90bXAvOi92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZl cnMvYXRpLWRyaXZlcnMtMTEuMTEvaG9tZWRpci8uYmFzaF9oaXN0b3J5IgpkZWNsYXJlIC14IFNF U1NJT05fTUFOQUdFUj0ibG9jYWwvZ2V0aGV4aXM6QC90bXAvLklDRS11bml4LzQ1MjMsdW5peC9n ZXRoZXhpczovdG1wLy5JQ0UtdW5peC80NTIzIgpkZWNsYXJlIC14IFNIRUxMX1NFU1NJT05fSUQ9 ImZjZTUxZjliMTIxYzQwMDBhNmNjN2IwMzUxNzNhOGM5IgpkZWNsYXJlIC14IFNMT1Q9IjEiCmRl Y2xhcmUgU1JDX1VSST0iaHR0cDovL3d3dzIuYXRpLmNvbS9kcml2ZXJzL2xpbnV4Ly9hdGktZHJp dmVyLWluc3RhbGxlci0xMS0xMS14ODYueDg2XzY0LnJ1biIKZGVjbGFyZSAteCBTWU1MSU5LX0xJ Qj0ieWVzIgpkZWNsYXJlIC14IFVTRT0iYW1kNjQgZWxpYmNfZ2xpYmMga2VybmVsX2xpbnV4IG1v ZHVsZXMgbXVsdGlsaWIgcXQ0IHVzZXJsYW5kX0dOVSIKZGVjbGFyZSAteCBVU0VSTEFORD0iR05V IgpkZWNsYXJlIC14IFZCT1hfQVBQX0hPTUU9Ii91c3IvbGliNjQvdmlydHVhbGJveCIKZGVjbGFy ZSAteCBWSURFT19DQVJEUz0iIgpkZWNsYXJlIC14IFdJTkRPV0lEPSI5NjQ2OTMyNiIKZGVjbGFy ZSAteCBXSU5ET1dQQVRIPSI3IgpkZWNsYXJlIC14IFhDVVJTT1JfVEhFTUU9Ik94eWdlbl9XaGl0 ZSIKZGVjbGFyZSAteCBYREdfQ09ORklHX0RJUlM9Ii9ldGMveGRnIgpkZWNsYXJlIC14IFhER19E QVRBX0RJUlM9Ii91c3IvbG9jYWwvc2hhcmU6L3Vzci9zaGFyZSIKZGVjbGFyZSAteCBYREdfU0VT U0lPTl9DT09LSUU9IjIwZGE5MzRhZjMxMDNjZWQ3ZmYyNjg3YTAwMDAwMDEzLTEzMjQ3MTcyMTYu MjAxOTcyLTE0MTE5MTQyNTEiCmRlY2xhcmUgLXggWERNX01BTkFHRUQ9Im1ldGhvZD1jbGFzc2lj IgpkZWNsYXJlIC14IFhUQUJMRVNfQURET05TPSJxdW90YTIgcHNkIHBrbm9jayBsc2NhbiBsZW5n dGgyIGlwdjRvcHRpb25zIGlwc2V0IGlwcDJwIGlmYWNlIGdlb2lwIGZ1enp5IGNvbmRpdGlvbiB0 ZWUgdGFycGl0IHN5c3JxIHN0ZWFsIHJhd25hdCBsb2dtYXJrIGlwbWFyayBkaGNwbWFjIGRlbHVk ZSBjaGFvcyBhY2NvdW50IgpkZWNsYXJlIC14IF9FX0RPQ0RFU1RUUkVFXz0iIgpkZWNsYXJlIC14 IF9FX0VYRURFU1RUUkVFXz0iIgpkZWNsYXJlIC14IF9MSU5VWF9DT05GSUdfRVhJU1RTX0RPTkU9 IjEiCmRlY2xhcmUgLS0gX19fRUNMQVNTX09OQ0VfRVVUSUxTPSJyZWN1ciAtXyteK18tIHNwYW5r IgpkZWNsYXJlIC0tIF9fX0VDTEFTU19PTkNFX01VTFRJTElCPSJyZWN1ciAtXyteK18tIHNwYW5r IgpkZWNsYXJlIC0tIF9fX0VDTEFTU19PTkNFX1BPUlRBQklMSVRZPSJyZWN1ciAtXyteK18tIHNw YW5rIgpkZWNsYXJlIC0tIF9fX0VDTEFTU19PTkNFX1RPT0xDSEFJTl9GVU5DUz0icmVjdXIgLV8r XitfLSBzcGFuayIKZGVjbGFyZSAtLSBfX19FQ0xBU1NfT05DRV9VU0VSPSJyZWN1ciAtXyteK18t IHNwYW5rIgpkZWNsYXJlIC0tIF9fX0VDTEFTU19PTkNFX1ZFUlNJT05BVE9SPSJyZWN1ciAtXyte K18tIHNwYW5rIgpkZWNsYXJlIC0tIGdldF92ZXJzaW9uX3dhcm5pbmdfZG9uZT0iIgpkZWNsYXJl IC0tIHBoYXNlX2Z1bmMKX2Fzc2VydF9wa2dfZWJ1aWxkX3BoYXNlICgpIAp7IAogICAgY2FzZSAk e0VCVUlMRF9QSEFTRX0gaW4gCiAgICAgICAgc2V0dXAgfCBwcmVpbnN0IHwgcG9zdGluc3QpCgog ICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZWVycm9yICInJDEoKScgY2FsbGVkIGZy b20gJyR7RUJVSUxEX1BIQVNFfScgcGhhc2Ugd2hpY2ggaXMgbm90IE9LOiI7CiAgICAgICAgICAg IGVlcnJvciAiWW91IG1heSBvbmx5IGNhbGwgZnJvbSBwa2dfe3NldHVwLHByZWluc3QscG9zdGlu c3R9IGZ1bmN0aW9ucy4iOwogICAgICAgICAgICBlZXJyb3IgIlBhY2thZ2UgZmFpbHMgYXQgUUEg YW5kIGF0IGxpZmUuICBQbGVhc2UgZmlsZSBhIGJ1Zy4iOwogICAgICAgICAgICBkaWUgIkJhZCBw YWNrYWdlISAgJDEgaXMgb25seSBmb3IgdXNlIGluIHNvbWUgcGtnXyogZnVuY3Rpb25zISIKICAg ICAgICA7OwogICAgZXNhYwp9Cl9jZHJvbV9sb2NhdGVfZmlsZV9vbl9jZCAoKSAKeyAKICAgIGxv Y2FsIG1saW5lPSIiOwogICAgbG9jYWwgc2hvd2VkbXNnPTAgc2hvd2pvbGlldG1zZz0wOwogICAg d2hpbGUgW1sgLXogJHtDRFJPTV9ST09UfSBdXTsgZG8KICAgICAgICBsb2NhbCBpPTA7CiAgICAg ICAgbG9jYWwgLWEgY2RzZXQ9KCR7Ki8vOi8gfSk7CiAgICAgICAgaWYgW1sgLW4gJHtDRFJPTV9T RVR9IF1dOyB0aGVuCiAgICAgICAgICAgIGNkc2V0PSgke2Nkc2V0WyR7Q0RST01fU0VUfV19KTsK ICAgICAgICBmaTsKICAgICAgICB3aGlsZSBbWyAtbiAke2Nkc2V0WyR7aX1dfSBdXTsgZG8KICAg ICAgICAgICAgbG9jYWwgZGlyPSQoZGlybmFtZSAke2Nkc2V0WyR7aX1dfSk7CiAgICAgICAgICAg IGxvY2FsIGZpbGU9JChiYXNlbmFtZSAke2Nkc2V0WyR7aX1dfSk7CiAgICAgICAgICAgIGxvY2Fs IHBvaW50PSBub2RlPSBmcz0gZm9vPTsKICAgICAgICAgICAgd2hpbGUgcmVhZCBwb2ludCBub2Rl IGZzIGZvbzsgZG8KICAgICAgICAgICAgICAgIFtbICIgY2Q5NjYwIGlzbzk2NjAgdWRmICIgIT0g KiIgJHtmc30gIiogXV0gJiYgISBbWyAke2ZzfSA9PSAic3ViZnMiICYmICIsJHtvcHRzfSwiID09 ICoiLGZzPWNkZnNzLCIqIF1dICYmIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgcG9pbnQ9JHtw b2ludC8vXDA0MC8gfTsKICAgICAgICAgICAgICAgIFtbICEgLWQgJHtwb2ludH0vJHtkaXJ9IF1d ICYmIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgW1sgLXogJChmaW5kICIke3BvaW50fS8ke2Rp cn0iIC1tYXhkZXB0aCAxIC1pbmFtZSAiJHtmaWxlfSIpIF1dICYmIGNvbnRpbnVlOwogICAgICAg ICAgICAgICAgZXhwb3J0IENEUk9NX1JPT1Q9JHtwb2ludH07CiAgICAgICAgICAgICAgICBleHBv cnQgQ0RST01fU0VUPSR7aX07CiAgICAgICAgICAgICAgICBleHBvcnQgQ0RST01fTUFUQ0g9JHtj ZHNldFske2l9XX07CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGRvbmUgPDw8 ICIkKGdldF9tb3VudHMpIjsKICAgICAgICAgICAgKCgrK2kpKTsKICAgICAgICBkb25lOwogICAg ICAgIGVjaG87CiAgICAgICAgaWYgW1sgJHtzaG93ZWRtc2d9IC1lcSAwIF1dOyB0aGVuCiAgICAg ICAgICAgIGlmIFtbICR7Q0RST01fVE9UQUxfQ0RTfSAtZXEgMSBdXTsgdGhlbgogICAgICAgICAg ICAgICAgaWYgW1sgLXogJHtDRFJPTV9OQU1FfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAg IGVpbmZvICJQbGVhc2UgaW5zZXJ0K21vdW50IHRoZSBjZHJvbSBmb3IgJHtQTn0gbm93ICEiOwog ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGVpbmZvICJQbGVhc2UgaW5z ZXJ0K21vdW50IHRoZSAke0NEUk9NX05BTUV9IGNkcm9tIG5vdyAhIjsKICAgICAgICAgICAgICAg IGZpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBpZiBbWyAteiAke0NEUk9NX05B TUVfMX0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBlaW5mbyAiUGxlYXNlIGluc2VydCtt b3VudCBjZCAjJHtDRFJPTV9DVVJSRU5UX0NEfSBmb3IgJHtQTn0gbm93ICEiOwogICAgICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGxvY2FsIHZhcj0iQ0RST01fTkFNRV8ke0NE Uk9NX0NVUlJFTlRfQ0R9IjsKICAgICAgICAgICAgICAgICAgICBlaW5mbyAiUGxlYXNlIGluc2Vy dCttb3VudCB0aGUgJHshdmFyfSBjZHJvbSBub3cgISI7CiAgICAgICAgICAgICAgICBmaTsKICAg ICAgICAgICAgZmk7CiAgICAgICAgICAgIHNob3dlZG1zZz0xOwogICAgICAgIGZpOwogICAgICAg IGVpbmZvICJQcmVzcyByZXR1cm4gdG8gc2NhbiBmb3IgdGhlIGNkIGFnYWluIjsKICAgICAgICBl aW5mbyAib3IgaGl0IENUUkwrQyB0byBhYm9ydCB0aGUgZW1lcmdlLiI7CiAgICAgICAgZWNobzsK ICAgICAgICBpZiBbWyAke3Nob3dqb2xpZXRtc2d9IC1lcSAwIF1dOyB0aGVuCiAgICAgICAgICAg IHNob3dqb2xpZXRtc2c9MTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGV3YXJuICJJZiB5b3Ug YXJlIGhhdmluZyB0cm91YmxlIHdpdGggdGhlIGRldGVjdGlvbiI7CiAgICAgICAgICAgIGV3YXJu ICJvZiB5b3VyIENELCBpdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBkbyBub3QgaGF2ZSI7CiAgICAg ICAgICAgIGV3YXJuICJKb2xpZXQgc3VwcG9ydCBlbmFibGVkIGluIHlvdXIga2VybmVsLiAgUGxl YXNlIjsKICAgICAgICAgICAgZXdhcm4gImNoZWNrIHRoYXQgQ09ORklHX0pPTElFVCBpcyBlbmFi bGVkIGluIHlvdXIga2VybmVsLiI7CiAgICAgICAgICAgIGViZWVwIDU7CiAgICAgICAgZmk7CiAg ICAgICAgcmVhZCB8fCBkaWUgInNvbWV0aGluZyBpcyBzY3Jld2VkIHdpdGggeW91ciBzeXN0ZW0i OwogICAgZG9uZQp9Cl9jaGVja19rZXJuZWxfY29uZmlnICgpIAp7IAogICAgbG9jYWwgZmFpbGVk PTA7CiAgICBsb2NhbCBlcnJvcj0iIjsKICAgIGlmICEga2VybmVsX2lzIGdlIDIgNjsgdGhlbgog ICAgICAgIGVlcnJvciAiWW91IG5lZWQgYSAyLjYgbGludXgga2VybmVsIHRvIGNvbXBpbGUgYWdh aW5zdCEiOwogICAgICAgIGRpZSAiTm8gMi42IEtlcm5lbCBmb3VuZCI7CiAgICBmaTsKICAgIGlm ICEgbGludXhfY2hrY29uZmlnX3ByZXNlbnQgTVRSUjsgdGhlbgogICAgICAgIGV3YXJuICJZb3Ug ZG9uJ3QgaGF2ZSBNVFJSIHN1cHBvcnQgZW5hYmxlZCBpbiB0aGUga2VybmVsLiI7CiAgICAgICAg ZXdhcm4gIkRpcmVjdCByZW5kZXJpbmcgd2lsbCBub3Qgd29yay4iOwogICAgZmk7CiAgICBpZiBs aW51eF9jaGtjb25maWdfYnVpbHRpbiBEUk07IHRoZW4KICAgICAgICBld2FybiAiWW91IGhhdmUg RFJNIHN1cHBvcnQgYnVpbHQgaW4gdG8gdGhlIGtlcm5lbCI7CiAgICAgICAgZXdhcm4gIkRpcmVj dCByZW5kZXJpbmcgd2lsbCBub3Qgd29yay4iOwogICAgZmk7CiAgICBpZiAhIGxpbnV4X2Noa2Nv bmZpZ19wcmVzZW50IEFHUCAmJiAhIGxpbnV4X2Noa2NvbmZpZ19wcmVzZW50IFBDSUVQT1JUQlVT OyB0aGVuCiAgICAgICAgZXdhcm4gIllvdSBkb24ndCBoYXZlIEFHUCBhbmQvb3IgUENJZSBzdXBw b3J0IGVuYWJsZWQgaW4gdGhlIGtlcm5lbCI7CiAgICAgICAgZXdhcm4gIkRpcmVjdCByZW5kZXJp bmcgd2lsbCBub3Qgd29yay4iOwogICAgZmk7CiAgICBpZiAhIGxpbnV4X2Noa2NvbmZpZ19wcmVz ZW50IEFDUEk7IHRoZW4KICAgICAgICBlZXJyb3IgIiR7UH0gcmVxdWlyZXMgdGhlIEFDUEkgc3Vw cG9ydCBpbiB0aGUga2VybmVsIjsKICAgICAgICBlZXJyb3IgIlBsZWFzZSBlbmFibGUgaXQ6IjsK ICAgICAgICBlZXJyb3IgIiAgICBDT05GSUdfQUNQST15IjsKICAgICAgICBlZXJyb3IgImluIC91 c3Ivc3JjL2xpbnV4Ly5jb25maWcgb3IiOwogICAgICAgIGVlcnJvciAiICAgIFBvd2VyIG1hbmFn ZW1lbnQgYW5kIEFDUEkgb3B0aW9ucyAtLS0+IjsKICAgICAgICBlZXJyb3IgIiAgICAgICAgWypd IFBvd2VyIE1hbmFnZW1lbnQgc3VwcG9ydCI7CiAgICAgICAgZWVycm9yICJpbiB0aGUgJ21lbnVj b25maWcnIjsKICAgICAgICBlcnJvcis9IiBDT05GSUdfQUNQSSBkaXNhYmxlZDsiOwogICAgICAg IGZhaWxlZD0xOwogICAgZmk7CiAgICBpZiAhIGxpbnV4X2Noa2NvbmZpZ19wcmVzZW50IFBDSV9N U0k7IHRoZW4KICAgICAgICBlZXJyb3IgIiR7UH0gcmVxdWlyZXMgTVNJIGluIHRoZSBrZXJuZWwu IjsKICAgICAgICBlZXJyb3IgIlBsZWFzZSBlbmFibGUgaXQ6IjsKICAgICAgICBlZXJyb3IgIiAg ICBDT05GSUdfUENJX01TST15IjsKICAgICAgICBlZXJyb3IgImluIC91c3Ivc3JjL2xpbnV4Ly5j b25maWcgb3IiOwogICAgICAgIGVlcnJvciAiICAgIEJ1cyBvcHRpb25zIChQQ0kgZXRjLikgIC0t LT4iOwogICAgICAgIGVlcnJvciAiICAgICAgICBbKl0gTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1 cHRzIChNU0kgYW5kIE1TSS1YKSI7CiAgICAgICAgZWVycm9yICJpbiB0aGUga2VybmVsIGNvbmZp Zy4iOwogICAgICAgIGVycm9yKz0iIENPTkZJR19QQ0lfTVNJIGRpc2FibGVkOyI7CiAgICAgICAg ZmFpbGVkPTE7CiAgICBmaTsKICAgIGlmIGxpbnV4X2Noa2NvbmZpZ19wcmVzZW50IExPQ0tERVA7 IHRoZW4KICAgICAgICBlZXJyb3IgIllvdSd2ZSBlbmFibGVkIExPQ0tERVAgLS0gbG9jayB0cmFj a2luZyAtLSBpbiB0aGUga2VybmVsLiI7CiAgICAgICAgZWVycm9yICJVbmZvcnR1bmF0ZWx5LCB0 aGlzIG9wdGlvbiBleHBvcnRzIHRoZSBzeW1ib2wgbG9ja19hY3F1aXJlIGFzIEdQTC1vbmx5LiI7 CiAgICAgICAgZWVycm9yICJUaGlzIHByZXZlbnRzICR7UH0gZnJvbSBjb21waWxpbmcgd2l0aCBh biBlcnJvciBsaWtlIHRoaXM6IjsKICAgICAgICBlZXJyb3IgIkZBVEFMOiBtb2Rwb3N0OiBHUEwt aW5jb21wYXRpYmxlIG1vZHVsZSBmZ2xyeC5rbyB1c2VzIEdQTC1vbmx5IHN5bWJvbCAnbG9ja19h Y3F1aXJlJyI7CiAgICAgICAgZWVycm9yICJQbGVhc2UgbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcg b3B0aW9ucyBoYXZlIGJlZW4gdW5zZXQ6IjsKICAgICAgICBlZXJyb3IgIiAgICBLZXJuZWwgaGFj a2luZyAgLS0tPiI7CiAgICAgICAgZWVycm9yICIgICAgICAgIFsgXSBMb2NrIGRlYnVnZ2luZzog ZGV0ZWN0IGluY29ycmVjdCBmcmVlaW5nIG9mIGxpdmUgbG9ja3MiOwogICAgICAgIGVlcnJvciAi ICAgICAgICBbIF0gTG9jayBkZWJ1Z2dpbmc6IHByb3ZlIGxvY2tpbmcgY29ycmVjdG5lc3MiOwog ICAgICAgIGVlcnJvciAiICAgICAgICBbIF0gTG9jayB1c2FnZSBzdGF0aXN0aWNzIjsKICAgICAg ICBlZXJyb3IgImluICdtZW51Y29uZmlnJyI7CiAgICAgICAgZXJyb3IrPSIgTE9DS0RFUCBlbmFi bGVkOyI7CiAgICAgICAgZmFpbGVkPTE7CiAgICBmaTsKICAgIHVzZSBhbWQ2NCAmJiBpZiAhIGxp bnV4X2Noa2NvbmZpZ19wcmVzZW50IENPTVBBVDsgdGhlbgogICAgICAgIGVlcnJvciAiJHtQfSBy ZXF1aXJlcyBDT01QQVQuIjsKICAgICAgICBlZXJyb3IgIlBsZWFzZSBlbmFibGUgdGhlIDMyIGJp dCBlbXVsYXRpb246IjsKICAgICAgICBlZXJyb3IgIkV4ZWN1dGFibGUgZmlsZSBmb3JtYXRzIC8g RW11bGF0aW9ucyAgLS0tPiI7CiAgICAgICAgZWVycm9yICIgICAgWypdIElBMzIgRW11bGF0aW9u IjsKICAgICAgICBlZXJyb3IgImluIHRoZSBrZXJuZWwgY29uZmlnLiI7CiAgICAgICAgZWVycm9y ICJpZiB0aGlzIGRvZXNuJ3QgZW5hYmxlIENPTkZJR19DT01QQVQgYWRkIjsKICAgICAgICBlZXJy b3IgIiAgICBDT05GSUdfQ09NUEFUPXkiOwogICAgICAgIGVlcnJvciAiaW4gL3Vzci9zcmMvbGlu dXgvLmNvbmZpZyI7CiAgICAgICAgZXJyb3IrPSIgQ09NUEFUIGRpc2FibGVkOyI7CiAgICAgICAg ZmFpbGVkPTE7CiAgICBmaTsKICAgIGtlcm5lbF9pcyBnZSAyIDYgMzcgJiYga2VybmVsX2lzIGxl IDIgNiAzOCAmJiBpZiAhIGxpbnV4X2Noa2NvbmZpZ19wcmVzZW50IEJLTDsgdGhlbgogICAgICAg IGVlcnJvciAiJHtQfSByZXF1aXJlcyBCS0wuIjsKICAgICAgICBlZXJyb3IgIlBsZWFzZSBlbmFi bGUgdGhlIEJpZyBLZXJuZWwgTG9jazoiOwogICAgICAgIGVlcnJvciAiS2VybmVsIGhhY2tpbmcg IC0tLT4iOwogICAgICAgIGVlcnJvciAiICAgIFsqXSBCaWcgS2VybmVsIExvY2siOwogICAgICAg IGVlcnJvciAiaW4gdGhlIGtlcm5lbCBjb25maWcuIjsKICAgICAgICBlZXJyb3IgIm9yIGFkZCI7 CiAgICAgICAgZWVycm9yICIgICAgQ09ORklHX0JLTD15IjsKICAgICAgICBlZXJyb3IgImluIC91 c3Ivc3JjL2xpbnV4Ly5jb25maWciOwogICAgICAgIGVycm9yKz0iIEJLTCBkaXNhYmxlZDsiOwog ICAgICAgIGZhaWxlZD0xOwogICAgZmk7CiAgICBbWyAke2ZhaWxlZH0gLW5lIDAgXV0gJiYgZGll ICIke2Vycm9yfSIKfQpfZGVhZF9wb3J0YWJpbGl0eV91c2VyX2Z1bmNzICgpIAp7IAogICAgZGll ICJpZiB5b3UgcmVhbGx5IG5lZWQgdGhpcywgcGxlYXNlIGZpbGUgYSBidWcgZm9yIGJhc2Utc3lz dGVtQGdlbnRvby5vcmciCn0KX2VwYXRjaF9kcmF3X2xpbmUgKCkgCnsgCiAgICBbWyAteiAkMSBd XSAmJiBzZXQgIiQocHJpbnRmICIlNjVzIiAnJykiOwogICAgZWNobyAiJHsxLy8/Lz19Igp9Cl9n Y2MtaW5zdGFsbC1kaXIgKCkgCnsgCiAgICBlY2hvICIkKExDX0FMTD1DICQodGMtZ2V0Q0MpIC1w cmludC1zZWFyY2gtZGlycyAyPiAvZGV2L251bGwgfAkJYXdrICckMT09Imluc3RhbGw6IiB7cHJp bnQgJDJ9JykiCn0KX2djYy1zcGVjcy1kaXJlY3RpdmVfcmF3ICgpIAp7IAogICAgbG9jYWwgY2M9 JCh0Yy1nZXRDQyk7CiAgICBsb2NhbCBzcGVjZmlsZXM9JChMQ19BTEw9QyAke2NjfSAtdiAyPiYx IHwgYXdrICckMT09IlJlYWRpbmciIHtwcmludCAkTkZ9Jyk7CiAgICAke2NjfSAtZHVtcHNwZWNz IDI+IC9kZXYvbnVsbCB8IGNhdCAtICR7c3BlY2ZpbGVzfSB8IGF3ayAtdiBkaXJlY3RpdmU9JDEg J0JFR0lOCXsgcHNwZWM9IiI7IHNwZWM9IiI7IG91dHNpZGU9MSB9CiQxPT0iKiJkaXJlY3RpdmUi OiIgIHsgcHNwZWM9c3BlYzsgc3BlYz0iIjsgb3V0c2lkZT0wOyBuZXh0IH0KCW91dHNpZGUgfHwg TkY9PTAgfHwgKCBzdWJzdHIoJDEsMSwxKT09IioiICYmIHN1YnN0cigkMSxsZW5ndGgoJDEpLDEp PT0iOiIgKSB7IG91dHNpZGU9MTsgbmV4dCB9CglzcGVjPT0iIiAmJiBzdWJzdHIoJDAsMSwxKT09 IisiIHsgc3BlYz1wc3BlYyAiICIgc3Vic3RyKCQwLDIpOyBuZXh0IH0KCXsgc3BlYz1zcGVjICQw IH0KRU5ECXsgcHJpbnQgc3BlYyB9JzsKICAgIHJldHVybiAwCn0KX2djYy1zcGVjcy1leGlzdHMg KCkgCnsgCiAgICBbWyAtZiAkKF9nY2MtaW5zdGFsbC1kaXIpLyQxIF1dCn0KX2djY19mdWxsdmVy c2lvbiAoKSAKeyAKICAgIGxvY2FsIHZlcj0iJDEiOwogICAgc2hpZnQ7CiAgICBzZXQgLS0gYCQo dGMtZ2V0Q1BQICIkQCIpIC1FIC1QIC0gPDw8Il9fR05VQ19fIF9fR05VQ19NSU5PUl9fIF9fR05V Q19QQVRDSExFVkVMX18iYDsKICAgIGV2YWwgZWNobyAiJHZlciIKfQpfdGMtZ2V0UFJPRyAoKSAK eyAKICAgIGxvY2FsIHR1cGxlPSQxOwogICAgbG9jYWwgdiB2YXIgdmFycz0kMjsKICAgIGxvY2Fs IHByb2c9JDM7CiAgICB2YXI9JHt2YXJzJSUgKn07CiAgICBmb3IgdiBpbiAke3ZhcnN9OwogICAg ZG8KICAgICAgICBpZiBbWyAtbiAkeyF2fSBdXTsgdGhlbgogICAgICAgICAgICBleHBvcnQgJHt2 YXJ9PSIkeyF2fSI7CiAgICAgICAgICAgIGVjaG8gIiR7IXZ9IjsKICAgICAgICAgICAgcmV0dXJu IDA7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgbG9jYWwgc2VhcmNoPTsKICAgIFtbIC1uICQ0 IF1dICYmIHNlYXJjaD0kKHR5cGUgLXAgIiQ0LSR7cHJvZ30iKTsKICAgIFtbIC16ICR7c2VhcmNo fSAmJiAtbiAkeyF0dXBsZX0gXV0gJiYgc2VhcmNoPSQodHlwZSAtcCAiJHshdHVwbGV9LSR7cHJv Z30iKTsKICAgIFtbIC1uICR7c2VhcmNofSBdXSAmJiBwcm9nPSR7c2VhcmNoIyMqL307CiAgICBl eHBvcnQgJHt2YXJ9PSR7cHJvZ307CiAgICBlY2hvICIkeyF2YXJ9Igp9CmJ1aWx0X3dpdGhfdXNl ICgpIAp7IAogICAgbG9jYWwgaGlkZGVuPSJubyI7CiAgICBpZiBbWyAkMSA9PSAiLS1oaWRkZW4i IF1dOyB0aGVuCiAgICAgICAgaGlkZGVuPSJ5ZXMiOwogICAgICAgIHNoaWZ0OwogICAgZmk7CiAg ICBsb2NhbCBtaXNzaW5nX2FjdGlvbj0iZGllIjsKICAgIGlmIFtbICQxID09ICItLW1pc3Npbmci IF1dOyB0aGVuCiAgICAgICAgbWlzc2luZ19hY3Rpb249JDI7CiAgICAgICAgc2hpZnQ7CiAgICAg ICAgc2hpZnQ7CiAgICAgICAgY2FzZSAke21pc3NpbmdfYWN0aW9ufSBpbiAKICAgICAgICAgICAg dHJ1ZSB8IGZhbHNlIHwgZGllKQoKICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAg ICAgICAgICAgIGRpZSAidW5rbm93biBhY3Rpb24gJyR7bWlzc2luZ19hY3Rpb259JyIKICAgICAg ICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZmk7CiAgICBsb2NhbCBvcHQ9JDE7CiAgICBbWyAk e29wdDowOjF9ID0gIi0iIF1dICYmIHNoaWZ0IHx8IG9wdD0iLWEiOwogICAgbG9jYWwgUEtHPSQo YmVzdF92ZXJzaW9uICQxKTsKICAgIFtbIC16ICR7UEtHfSBdXSAmJiBkaWUgIlVuYWJsZSB0byBy ZXNvbHZlICQxIHRvIGFuIGluc3RhbGxlZCBwYWNrYWdlIjsKICAgIHNoaWZ0OwogICAgbG9jYWwg VVNFRklMRT0ke1JPT1R9L3Zhci9kYi9wa2cvJHtQS0d9L1VTRTsKICAgIGxvY2FsIElVU0VGSUxF PSR7Uk9PVH0vdmFyL2RiL3BrZy8ke1BLR30vSVVTRTsKICAgIGlmIFtbICEgLWUgJHtVU0VGSUxF fSBdXSB8fCBbWyAhIC1lICR7SVVTRUZJTEV9ICYmICR7aGlkZGVufSA9PSAibm8iIF1dOyB0aGVu CiAgICAgICAgY2FzZSAke21pc3NpbmdfYWN0aW9ufSBpbiAKICAgICAgICAgICAgdHJ1ZSkKICAg ICAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGZhbHNlKQog ICAgICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgICAgOzsKICAgICAgICAgICAgZGllKQog ICAgICAgICAgICAgICAgZGllICJVbmFibGUgdG8gZGV0ZXJtaW5lIHdoYXQgVVNFIGZsYWdzICRQ S0cgd2FzIGJ1aWx0IHdpdGgiCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGZpOwog ICAgaWYgW1sgJHtoaWRkZW59ID09ICJubyIgXV07IHRoZW4KICAgICAgICBsb2NhbCBJVVNFX0JV SUxUPSgkKDwiJHtJVVNFRklMRX0iKSk7CiAgICAgICAgbG9jYWwgZXhwYW5kOwogICAgICAgIGZv ciBleHBhbmQgaW4gJChlY2hvICR7VVNFX0VYUEFORH0gfCB0ciAnWzp1cHBlcjpdJyAnWzpsb3dl cjpdJyk7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sgJDEgPT0gJHtleHBhbmR9XyogXV07 IHRoZW4KICAgICAgICAgICAgICAgIGV4cGFuZD0iIjsKICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgICAgIGlmIFtbIC1uICR7ZXhwYW5kfSBd XTsgdGhlbgogICAgICAgICAgICBpZiAhIGhhcyAkMSAke0lVU0VfQlVJTFRbQF0jWy0rXX07IHRo ZW4KICAgICAgICAgICAgICAgIGNhc2UgJHttaXNzaW5nX2FjdGlvbn0gaW4gCiAgICAgICAgICAg ICAgICAgICAgdHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGZhbHNlKQogICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gMQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAg ICAgZGllKQogICAgICAgICAgICAgICAgICAgICAgICBkaWUgIiRQS0cgZG9lcyBub3QgYWN0dWFs bHkgc3VwcG9ydCB0aGUgJDEgVVNFIGZsYWchIgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICBlc2FjOwogICAgICAgICAgICBmaTsKICAgICAgICBmaTsKICAgIGZpOwogICAg bG9jYWwgVVNFX0JVSUxUPSQoPCR7VVNFRklMRX0pOwogICAgd2hpbGUgW1sgJCMgLWd0IDAgXV07 IGRvCiAgICAgICAgaWYgW1sgJHtvcHR9ID0gIi1vIiBdXTsgdGhlbgogICAgICAgICAgICBoYXMg JDEgJHtVU0VfQlVJTFR9ICYmIHJldHVybiAwOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaGFz ICQxICR7VVNFX0JVSUxUfSB8fCByZXR1cm4gMTsKICAgICAgICBmaTsKICAgICAgICBzaGlmdDsK ICAgIGRvbmU7CiAgICBbWyAke29wdH0gPSAiLWEiIF1dCn0KY2Ryb21fZ2V0X2NkcyAoKSAKeyAK ICAgIGxvY2FsIGNkY250PTA7CiAgICBsb2NhbCBmPTsKICAgIGZvciBmIGluICIkQCI7CiAgICBk bwogICAgICAgICgoKytjZGNudCkpOwogICAgICAgIGV4cG9ydCBDRFJPTV9DSEVDS18ke2NkY250 fT0iJGYiOwogICAgZG9uZTsKICAgIGV4cG9ydCBDRFJPTV9UT1RBTF9DRFM9JHtjZGNudH07CiAg ICBleHBvcnQgQ0RST01fQ1VSUkVOVF9DRD0xOwogICAgaWYgW1sgLW4gJHtDRF9ST09UfSR7Q0Rf Uk9PVF8xfSBdXTsgdGhlbgogICAgICAgIGxvY2FsIHZhcj07CiAgICAgICAgY2RjbnQ9MDsKICAg ICAgICB3aGlsZSBbWyAke2NkY250fSAtbHQgJHtDRFJPTV9UT1RBTF9DRFN9IF1dOyBkbwogICAg ICAgICAgICAoKCsrY2RjbnQpKTsKICAgICAgICAgICAgdmFyPSJDRF9ST09UXyR7Y2RjbnR9IjsK ICAgICAgICAgICAgW1sgLXogJHshdmFyfSBdXSAmJiB2YXI9IkNEX1JPT1QiOwogICAgICAgICAg ICBpZiBbWyAteiAkeyF2YXJ9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlZXJyb3IgIllvdSBt dXN0IGVpdGhlciB1c2UganVzdCB0aGUgQ0RfUk9PVCI7CiAgICAgICAgICAgICAgICBlZXJyb3Ig Im9yIHNwZWNpZnkgQUxMIHRoZSBDRF9ST09UX1ggdmFyaWFibGVzLiI7CiAgICAgICAgICAgICAg ICBlZXJyb3IgIkluIHRoaXMgY2FzZSwgeW91IHdpbGwgbmVlZCAke0NEUk9NX1RPVEFMX0NEU30g Q0RfUk9PVF9YIHZhcmlhYmxlcy4iOwogICAgICAgICAgICAgICAgZGllICJjb3VsZCBub3QgbG9j YXRlIENEX1JPT1RfJHtjZGNudH0iOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAg ICAgIGV4cG9ydCBDRFJPTV9ST09UPSR7Q0RfUk9PVF8xOi0ke0NEX1JPT1R9fTsKICAgICAgICBl aW5mbyAiRm91bmQgQ0QgIyR7Q0RST01fQ1VSUkVOVF9DRH0gcm9vdCBhdCAke0NEUk9NX1JPT1R9 IjsKICAgICAgICBleHBvcnQgQ0RST01fU0VUPS0xOwogICAgICAgIGZvciBmIGluICR7Q0RST01f Q0hFQ0tfMS8vOi8gfTsKICAgICAgICBkbwogICAgICAgICAgICAoKCsrQ0RST01fU0VUKSk7CiAg ICAgICAgICAgIFtbIC1lICR7Q0RST01fUk9PVH0vJHtmfSBdXSAmJiBicmVhazsKICAgICAgICBk b25lOwogICAgICAgIGV4cG9ydCBDRFJPTV9NQVRDSD0ke2Z9OwogICAgICAgIHJldHVybjsKICAg IGZpOwogICAgaWYgW1sgJHtDRFJPTV9UT1RBTF9DRFN9IC1lcSAxIF1dOyB0aGVuCiAgICAgICAg ZWluZm8gIlRoaXMgZWJ1aWxkIHdpbGwgbmVlZCB0aGUgJHtDRFJPTV9OQU1FOi1jZHJvbSBmb3Ig JHtQTn19IjsKICAgICAgICBlY2hvOwogICAgICAgIGVpbmZvICJJZiB5b3UgZG8gbm90IGhhdmUg dGhlIENELCBidXQgaGF2ZSB0aGUgZGF0YSBmaWxlcyI7CiAgICAgICAgZWluZm8gIm1vdW50ZWQg c29tZXdoZXJlIG9uIHlvdXIgZmlsZXN5c3RlbSwganVzdCBleHBvcnQiOwogICAgICAgIGVpbmZv ICJ0aGUgdmFyaWFibGUgQ0RfUk9PVCBzbyB0aGF0IGl0IHBvaW50cyB0byB0aGUiOwogICAgICAg IGVpbmZvICJkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZXMuIjsKICAgICAgICBlY2hvOwog ICAgICAgIGVpbmZvICJGb3IgZXhhbXBsZToiOwogICAgICAgIGVpbmZvICJleHBvcnQgQ0RfUk9P VD0vbW50L2Nkcm9tIjsKICAgICAgICBlY2hvOwogICAgZWxzZQogICAgICAgIGlmIFtbIC1uICR7 Q0RST01fTkFNRV9TRVR9IF1dOyB0aGVuCiAgICAgICAgICAgIGNkY250PTA7CiAgICAgICAgICAg IHdoaWxlIFtbICR7Y2RjbnR9IC1sdCAke0NEUk9NX1RPVEFMX0NEU30gXV07IGRvCiAgICAgICAg ICAgICAgICAoKCsrY2RjbnQpKTsKICAgICAgICAgICAgICAgIGV4cG9ydCBDRFJPTV9OQU1FXyR7 Y2RjbnR9PSIke0NEUk9NX05BTUVfU0VUWyQoKCR7Y2RjbnR9LTEpKV19IjsKICAgICAgICAgICAg ZG9uZTsKICAgICAgICBmaTsKICAgICAgICBlaW5mbyAiVGhpcyBwYWNrYWdlIHdpbGwgbmVlZCBh Y2Nlc3MgdG8gJHtDRFJPTV9UT1RBTF9DRFN9IGNkcy4iOwogICAgICAgIGNkY250PTA7CiAgICAg ICAgd2hpbGUgW1sgJHtjZGNudH0gLWx0ICR7Q0RST01fVE9UQUxfQ0RTfSBdXTsgZG8KICAgICAg ICAgICAgKCgrK2NkY250KSk7CiAgICAgICAgICAgIHZhcj0iQ0RST01fTkFNRV8ke2NkY250fSI7 CiAgICAgICAgICAgIFtbICEgLXogJHshdmFyfSBdXSAmJiBlaW5mbyAiIENEICR7Y2RjbnR9OiAk eyF2YXJ9IjsKICAgICAgICBkb25lOwogICAgICAgIGVjaG87CiAgICAgICAgZWluZm8gIklmIHlv dSBkbyBub3QgaGF2ZSB0aGUgQ0RzLCBidXQgaGF2ZSB0aGUgZGF0YSBmaWxlcyI7CiAgICAgICAg ZWluZm8gIm1vdW50ZWQgc29tZXdoZXJlIG9uIHlvdXIgZmlsZXN5c3RlbSwganVzdCBleHBvcnQi OwogICAgICAgIGVpbmZvICJ0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBzbyB0aGV5IHBvaW50IHRv IHRoZSByaWdodCBwbGFjZToiOwogICAgICAgIGVpbmZvbiAiIjsKICAgICAgICBjZGNudD0wOwog ICAgICAgIHdoaWxlIFtbICR7Y2RjbnR9IC1sdCAke0NEUk9NX1RPVEFMX0NEU30gXV07IGRvCiAg ICAgICAgICAgICgoKytjZGNudCkpOwogICAgICAgICAgICBlY2hvIC1uICIgQ0RfUk9PVF8ke2Nk Y250fSI7CiAgICAgICAgZG9uZTsKICAgICAgICBlY2hvOwogICAgICAgIGVpbmZvICJPciwgaWYg eW91IGhhdmUgYWxsIHRoZSBmaWxlcyBpbiB0aGUgc2FtZSBwbGFjZSwgb3IiOwogICAgICAgIGVp bmZvICJ5b3Ugb25seSBoYXZlIG9uZSBjZHJvbSwgeW91IGNhbiBleHBvcnQgQ0RfUk9PVCI7CiAg ICAgICAgZWluZm8gImFuZCB0aGF0IHBsYWNlIHdpbGwgYmUgdXNlZCBhcyB0aGUgc2FtZSBkYXRh IHNvdXJjZSI7CiAgICAgICAgZWluZm8gImZvciBhbGwgdGhlIENEcy4iOwogICAgICAgIGVjaG87 CiAgICAgICAgZWluZm8gIkZvciBleGFtcGxlOiI7CiAgICAgICAgZWluZm8gImV4cG9ydCBDRF9S T09UXzE9L21udC9jZHJvbSI7CiAgICAgICAgZWNobzsKICAgIGZpOwogICAgZXhwb3J0IENEUk9N X1NFVD0iIjsKICAgIGV4cG9ydCBDRFJPTV9DVVJSRU5UX0NEPTA7CiAgICBjZHJvbV9sb2FkX25l eHRfY2QKfQpjZHJvbV9sb2FkX25leHRfY2QgKCkgCnsgCiAgICBsb2NhbCB2YXI7CiAgICAoKCsr Q0RST01fQ1VSUkVOVF9DRCkpOwogICAgdW5zZXQgQ0RST01fUk9PVDsKICAgIHZhcj1DRF9ST09U XyR7Q0RST01fQ1VSUkVOVF9DRH07CiAgICBbWyAteiAkeyF2YXJ9IF1dICYmIHZhcj0iQ0RfUk9P VCI7CiAgICBpZiBbWyAteiAkeyF2YXJ9IF1dOyB0aGVuCiAgICAgICAgdmFyPSJDRFJPTV9DSEVD S18ke0NEUk9NX0NVUlJFTlRfQ0R9IjsKICAgICAgICBfY2Ryb21fbG9jYXRlX2ZpbGVfb25fY2Qg JHshdmFyfTsKICAgIGVsc2UKICAgICAgICBleHBvcnQgQ0RST01fUk9PVD0keyF2YXJ9OwogICAg Zmk7CiAgICBlaW5mbyAiRm91bmQgQ0QgIyR7Q0RST01fQ1VSUkVOVF9DRH0gcm9vdCBhdCAke0NE Uk9NX1JPT1R9Igp9CmNoZWNrX2V4dHJhX2NvbmZpZyAoKSAKeyAKICAgIGxvY2FsIGNvbmZpZyBu ZWdhdGUgZGllIGVycm9yIHJld29ya21vZHVsZW5hbWVzOwogICAgbG9jYWwgc29mdF9lcnJvcnNf Y291bnQ9MCBoYXJkX2Vycm9yc19jb3VudD0wIGNvbmZpZ19yZXF1aXJlZD0wOwogICAgbG9jYWwg b2xkX0xJTlVYX0NPTkZJR19FWElTVFNfRE9ORT0iJHtfTElOVVhfQ09ORklHX0VYSVNUU19ET05F fSI7CiAgICBsaW51eC1pbmZvX2dldF9hbnlfdmVyc2lvbjsKICAgIGZvciBjb25maWcgaW4gJHtD T05GSUdfQ0hFQ0t9OwogICAgZG8KICAgICAgICBpZiBbWyAiJHtjb25maWc6MDoxfSIgIT0gIn4i IF1dOyB0aGVuCiAgICAgICAgICAgIGNvbmZpZ19yZXF1aXJlZD0xOwogICAgICAgICAgICBicmVh azsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBpZiBbWyAke2NvbmZpZ19yZXF1aXJlZH0gPT0g MCBdXTsgdGhlbgogICAgICAgIGlmICEgbGludXhfY29uZmlnX2V4aXN0czsgdGhlbgogICAgICAg ICAgICBld2FybiAiVW5hYmxlIHRvIGNoZWNrIGZvciB0aGUgZm9sbG93aW5nIGtlcm5lbCBjb25m aWcgb3B0aW9ucyBkdWUiOwogICAgICAgICAgICBld2FybiAidG8gYWJzZW5jZSBvZiBhbnkgY29u ZmlndXJlZCBrZXJuZWwgc291cmNlcyBvciBjb21waWxlZCI7CiAgICAgICAgICAgIGV3YXJuICJj b25maWc6IjsKICAgICAgICAgICAgZm9yIGNvbmZpZyBpbiAke0NPTkZJR19DSEVDS307CiAgICAg ICAgICAgIGRvCiAgICAgICAgICAgICAgICBsb2NhbF9lcnJvcj0iRVJST1JfJHtjb25maWcjXH59 IjsKICAgICAgICAgICAgICAgIG1zZz0iJHshbG9jYWxfZXJyb3J9IjsKICAgICAgICAgICAgICAg IGlmIFtbICJ4JHttc2d9IiA9PSAieCIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBsb2Nh bF9lcnJvcj0iV0FSTklOR18ke2NvbmZpZyNcfn0iOwogICAgICAgICAgICAgICAgICAgIG1zZz0i JHshbG9jYWxfZXJyb3J9IjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgZXdh cm4gIiAtICR7Y29uZmlnI1x+fSR7bXNnOisgLSB9JHttc2d9IjsKICAgICAgICAgICAgZG9uZTsK ICAgICAgICAgICAgZXdhcm4gIllvdSdyZSBvbiB5b3VyIG93biB0byBtYWtlIHN1cmUgdGhleSBh cmUgc2V0IGlmIG5lZWRlZC4iOwogICAgICAgICAgICBleHBvcnQgTElOVVhfQ09ORklHX0VYSVNU U19ET05FPSIke29sZF9MSU5VWF9DT05GSUdfRVhJU1RTX0RPTkV9IjsKICAgICAgICAgICAgcmV0 dXJuIDA7CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgcmVxdWlyZV9jb25maWd1cmVkX2tl cm5lbDsKICAgIGZpOwogICAgZWluZm8gIkNoZWNraW5nIGZvciBzdWl0YWJsZSBrZXJuZWwgY29u ZmlndXJhdGlvbiBvcHRpb25zLi4uIjsKICAgIGZvciBjb25maWcgaW4gJHtDT05GSUdfQ0hFQ0t9 OwogICAgZG8KICAgICAgICBkaWU9MTsKICAgICAgICBlcnJvcj0wOwogICAgICAgIG5lZ2F0ZT0w OwogICAgICAgIHJld29ya21vZHVsZW5hbWVzPTA7CiAgICAgICAgaWYgW1sgJHtjb25maWc6MDox fSA9PSAifiIgXV07IHRoZW4KICAgICAgICAgICAgZGllPTA7CiAgICAgICAgICAgIGNvbmZpZz0k e2NvbmZpZzoxfTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtbICR7Y29uZmlnOjA6MX0g PT0gIkAiIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBkaWU9MDsKICAgICAgICAgICAgICAgIHJl d29ya21vZHVsZW5hbWVzPTE7CiAgICAgICAgICAgICAgICBjb25maWc9JHtjb25maWc6MX07CiAg ICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgICAgIGlmIFtbICR7Y29uZmlnOjA6MX0gPT0g IiEiIF1dOyB0aGVuCiAgICAgICAgICAgIG5lZ2F0ZT0xOwogICAgICAgICAgICBjb25maWc9JHtj b25maWc6MX07CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgJHtuZWdhdGV9ID09IDEgXV07IHRo ZW4KICAgICAgICAgICAgbGludXhfY2hrY29uZmlnX3ByZXNlbnQgJHtjb25maWd9ICYmIGVycm9y PTI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBpZiBbWyAke3Jld29ya21vZHVsZW5hbWVzfSA9 PSAxIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBsb2NhbCB0ZW1wX2NvbmZpZz0iJHtjb25maWcv Lyo6fSIgaSBuOwogICAgICAgICAgICAgICAgY29uZmlnPSIke2NvbmZpZy8vOip9IjsKICAgICAg ICAgICAgICAgIGlmIGxpbnV4X2Noa2NvbmZpZ19wcmVzZW50ICR7Y29uZmlnfTsgdGhlbgogICAg ICAgICAgICAgICAgICAgIGZvciBpIGluICR7TU9EVUxFX05BTUVTfTsKICAgICAgICAgICAgICAg ICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICBuPSIke2kvLyR7dGVtcF9jb25maWd9fSI7 CiAgICAgICAgICAgICAgICAgICAgICAgIFtbIC16ICR7bi8vXCgqfSBdXSAmJiBNT0RVTEVfSUdO T1JFPSIke01PRFVMRV9JR05PUkV9ICR7dGVtcF9jb25maWd9IjsKICAgICAgICAgICAgICAgICAg ICBkb25lOwogICAgICAgICAgICAgICAgICAgIGVycm9yPTI7CiAgICAgICAgICAgICAgICBmaTsK ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbGludXhfY2hrY29uZmlnX3ByZXNlbnQg JHtjb25maWd9IHx8IGVycm9yPTE7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgICAg IGlmIFtbICR7ZXJyb3J9ID4gMCBdXTsgdGhlbgogICAgICAgICAgICBsb2NhbCByZXBvcnRfZnVu Yz0iZWVycm9yIiBsb2NhbF9lcnJvcjsKICAgICAgICAgICAgbG9jYWxfZXJyb3I9IkVSUk9SXyR7 Y29uZmlnfSI7CiAgICAgICAgICAgIGxvY2FsX2Vycm9yPSIkeyFsb2NhbF9lcnJvcn0iOwogICAg ICAgICAgICBpZiBbWyAteiAiJHtsb2NhbF9lcnJvcn0iIF1dOyB0aGVuCiAgICAgICAgICAgICAg ICBsb2NhbF9lcnJvcj0iJHtjb25maWd9X0VSUk9SIjsKICAgICAgICAgICAgICAgIGxvY2FsX2Vy cm9yPSIkeyFsb2NhbF9lcnJvcn0iOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgaWYgW1sg JHtkaWV9ID09IDAgJiYgLXogIiR7bG9jYWxfZXJyb3J9IiBdXTsgdGhlbgogICAgICAgICAgICAg ICAgbG9jYWxfZXJyb3I9IldBUk5JTkdfJHtjb25maWd9IjsKICAgICAgICAgICAgICAgIGxvY2Fs X2Vycm9yPSIkeyFsb2NhbF9lcnJvcn0iOwogICAgICAgICAgICAgICAgaWYgW1sgLW4gIiR7bG9j YWxfZXJyb3J9IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIHJlcG9ydF9mdW5jPSJld2Fy biI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGlmIFtb IC16ICIke2xvY2FsX2Vycm9yfSIgXV07IHRoZW4KICAgICAgICAgICAgICAgIFtbICR7ZXJyb3J9 ID09IDEgXV0gJiYgbG9jYWxfZXJyb3I9ImlzIG5vdCBzZXQgd2hlbiBpdCBzaG91bGQgYmUuIiB8 fCBsb2NhbF9lcnJvcj0ic2hvdWxkIG5vdCBiZSBzZXQuIEJ1dCBpdCBpcy4iOwogICAgICAgICAg ICAgICAgbG9jYWxfZXJyb3I9IkNPTkZJR18ke2NvbmZpZ306XHQgJHtsb2NhbF9lcnJvcn0iOwog ICAgICAgICAgICBmaTsKICAgICAgICAgICAgaWYgW1sgJHtkaWV9ID09IDAgXV07IHRoZW4KICAg ICAgICAgICAgICAgICR7cmVwb3J0X2Z1bmN9ICIgICR7bG9jYWxfZXJyb3J9IjsKICAgICAgICAg ICAgICAgIHNvZnRfZXJyb3JzX2NvdW50PSRbc29mdF9lcnJvcnNfY291bnQgKyAxXTsKICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgJHtyZXBvcnRfZnVuY30gIiAgJHtsb2NhbF9lcnJv cn0iOwogICAgICAgICAgICAgICAgaGFyZF9lcnJvcnNfY291bnQ9JFtoYXJkX2Vycm9yc19jb3Vu dCArIDFdOwogICAgICAgICAgICBmaTsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBpZiBbWyAk e2hhcmRfZXJyb3JzX2NvdW50fSA+IDAgXV07IHRoZW4KICAgICAgICBlZXJyb3IgIlBsZWFzZSBj aGVjayB0byBtYWtlIHN1cmUgdGhlc2Ugb3B0aW9ucyBhcmUgc2V0IGNvcnJlY3RseS4iOwogICAg ICAgIGVlcnJvciAiRmFpbHVyZSB0byBkbyBzbyBtYXkgY2F1c2UgdW5leHBlY3RlZCBwcm9ibGVt cy4iOwogICAgICAgIGVlcnJvciAiT25jZSB5b3UgaGF2ZSBzYXRpc2ZpZWQgdGhlc2Ugb3B0aW9u cywgcGxlYXNlIHRyeSBtZXJnaW5nIjsKICAgICAgICBlZXJyb3IgInRoaXMgcGFja2FnZSBhZ2Fp bi4iOwogICAgICAgIGV4cG9ydCBMSU5VWF9DT05GSUdfRVhJU1RTX0RPTkU9IiR7b2xkX0xJTlVY X0NPTkZJR19FWElTVFNfRE9ORX0iOwogICAgICAgIGRpZSAiSW5jb3JyZWN0IGtlcm5lbCBjb25m aWd1cmF0aW9uIG9wdGlvbnMiOwogICAgZWxzZQogICAgICAgIGlmIFtbICR7c29mdF9lcnJvcnNf Y291bnR9ID4gMCBdXTsgdGhlbgogICAgICAgICAgICBld2FybiAiUGxlYXNlIGNoZWNrIHRvIG1h a2Ugc3VyZSB0aGVzZSBvcHRpb25zIGFyZSBzZXQgY29ycmVjdGx5LiI7CiAgICAgICAgICAgIGV3 YXJuICJGYWlsdXJlIHRvIGRvIHNvIG1heSBjYXVzZSB1bmV4cGVjdGVkIHByb2JsZW1zLiI7CiAg ICAgICAgZWxzZQogICAgICAgICAgICBlZW5kIDA7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIGV4 cG9ydCBMSU5VWF9DT05GSUdfRVhJU1RTX0RPTkU9IiR7b2xkX0xJTlVYX0NPTkZJR19FWElTVFNf RE9ORX0iCn0KY2hlY2tfa2VybmVsX2J1aWx0ICgpIAp7IAogICAgcmVxdWlyZV9jb25maWd1cmVk X2tlcm5lbDsKICAgIGdldF92ZXJzaW9uOwogICAgaWYgWyAhIC1mICIke0tWX09VVF9ESVJ9L2lu Y2x1ZGUvbGludXgvdmVyc2lvbi5oIiBdOyB0aGVuCiAgICAgICAgZWVycm9yICJUaGVzZSBzb3Vy Y2VzIGhhdmUgbm90IHlldCBiZWVuIHByZXBhcmVkLiI7CiAgICAgICAgZWVycm9yICJXZSBjYW5u b3QgYnVpbGQgYWdhaW5zdCBhbiB1bnByZXBhcmVkIHRyZWUuIjsKICAgICAgICBlZXJyb3IgIlRv IHJlc29sdmUgdGhpcywgcGxlYXNlIHR5cGUgdGhlIGZvbGxvd2luZzoiOwogICAgICAgIGVlcnJv cjsKICAgICAgICBlZXJyb3IgIiMgY2QgJHtLVl9ESVJ9IjsKICAgICAgICBlZXJyb3IgIiMgbWFr ZSBvbGRjb25maWciOwogICAgICAgIGVlcnJvciAiIyBtYWtlIG1vZHVsZXNfcHJlcGFyZSI7CiAg ICAgICAgZWVycm9yOwogICAgICAgIGVlcnJvciAiVGhlbiBwbGVhc2UgdHJ5IG1lcmdpbmcgdGhp cyBtb2R1bGUgYWdhaW4uIjsKICAgICAgICBkaWUgIktlcm5lbCBzb3VyY2VzIG5lZWQgY29tcGls aW5nIGZpcnN0IjsKICAgIGZpCn0KY2hlY2tfbGljZW5zZSAoKSAKeyAKICAgIGRpZSAieW91IG5v IGxvbmdlciBuZWVkIHRoaXMgYXMgcG9ydGFnZSBzdXBwb3J0cyBBQ0NFUFRfTElDRU5TRSBpdHNl bGYiCn0KY2hlY2tfbW9kdWxlc19zdXBwb3J0ZWQgKCkgCnsgCiAgICByZXF1aXJlX2NvbmZpZ3Vy ZWRfa2VybmVsOwogICAgZ2V0X3ZlcnNpb247CiAgICBpZiAhIGxpbnV4X2Noa2NvbmZpZ19idWls dGluICJNT0RVTEVTIjsgdGhlbgogICAgICAgIGVlcnJvciAiVGhlc2Ugc291cmNlcyBkbyBub3Qg c3VwcG9ydCBsb2FkaW5nIGV4dGVybmFsIG1vZHVsZXMuIjsKICAgICAgICBlZXJyb3IgInRvIGJl IGFibGUgdG8gdXNlIHRoaXMgbW9kdWxlIHBsZWFzZSBlbmFibGUgXCJMb2FkYWJsZSBtb2R1bGVz IHN1cHBvcnRcIiI7CiAgICAgICAgZWVycm9yICJpbiB5b3VyIGtlcm5lbCwgcmVjb21waWxlIGFu ZCB0aGVuIHRyeSBtZXJnaW5nIHRoaXMgbW9kdWxlIGFnYWluLiI7CiAgICAgICAgZGllICJObyBz dXBwb3J0IGZvciBleHRlcm5hbCBtb2R1bGVzIGluICR7S1ZfRlVMTH0gY29uZmlnIjsKICAgIGZp Cn0KY2hlY2tfdmVybWFnaWMgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNO QU1FfSAkKjsKICAgIGxvY2FsIGN1cnJfZ2NjX3Zlcj0kKGdjYyAtZHVtcHZlcnNpb24pOwogICAg bG9jYWwgdG1wZmlsZSBvbGRfY2hvc3Qgb2xkX2djY192ZXIgcmVzdWx0PTA7CiAgICB0bXBmaWxl PWBmaW5kICIke0tWX0RJUn0vIiAtaW5hbWUgIiouby5jbWQiIC1leGVjIGdyZXAgdXNyL2xpYi9n Y2Mge30gXDsgLXF1aXRgOwogICAgdG1wZmlsZT0ke3RtcGZpbGUvLyp1c3IvbGlifTsKICAgIHRt cGZpbGU9JHt0bXBmaWxlLy9cL2luY2x1ZGUqfTsKICAgIG9sZF9jaG9zdD0ke3RtcGZpbGUvLypn Y2NcL307CiAgICBvbGRfY2hvc3Q9JHtvbGRfY2hvc3QvL1wvKn07CiAgICBvbGRfZ2NjX3Zlcj0k e3RtcGZpbGUvLypcL307CiAgICBpZiBbWyAteiAke29sZF9nY2NfdmVyfSB8fCAteiAke29sZF9j aG9zdH0gXV07IHRoZW4KICAgICAgICBld2FybiAiIjsKICAgICAgICBld2FybiAiVW5hYmxlIHRv IGRldGVjdCB3aGF0IHZlcnNpb24gb2YgR0NDIHdhcyB1c2VkIHRvIGNvbXBpbGUiOwogICAgICAg IGV3YXJuICJ0aGUga2VybmVsLiBCdWlsZCB3aWxsIGNvbnRpbnVlLCBidXQgeW91IG1heSBleHBl cmllbmNlIHByb2JsZW1zLiI7CiAgICBlbHNlCiAgICAgICAgaWYgW1sgJHtjdXJyX2djY192ZXJ9 ICE9ICR7b2xkX2djY192ZXJ9IF1dOyB0aGVuCiAgICAgICAgICAgIGV3YXJuICIiOwogICAgICAg ICAgICBld2FybiAiVGhlIHZlcnNpb24gb2YgR0NDIHlvdSBhcmUgdXNpbmcgKCR7Y3Vycl9nY2Nf dmVyfSkgZG9lcyI7CiAgICAgICAgICAgIGV3YXJuICJub3QgbWF0Y2ggdGhlIHZlcnNpb24gb2Yg R0NDIHVzZWQgdG8gY29tcGlsZSB0aGUiOwogICAgICAgICAgICBld2FybiAia2VybmVsICgke29s ZF9nY2NfdmVyfSkuIjsKICAgICAgICAgICAgcmVzdWx0PTE7CiAgICAgICAgZWxzZQogICAgICAg ICAgICBpZiBbWyAke0NIT1NUfSAhPSAke29sZF9jaG9zdH0gXV07IHRoZW4KICAgICAgICAgICAg ICAgIGV3YXJuICIiOwogICAgICAgICAgICAgICAgZXdhcm4gIlRoZSBjdXJyZW50IENIT1NUICgk e0NIT1NUfSkgZG9lcyBub3QgbWF0Y2ggdGhlIGNob3N0IjsKICAgICAgICAgICAgICAgIGV3YXJu ICJ1c2VkIHdoZW4gY29tcGlsaW5nIHRoZSBrZXJuZWwgKCR7b2xkX2Nob3N0fSkuIjsKICAgICAg ICAgICAgICAgIHJlc3VsdD0xOwogICAgICAgICAgICBmaTsKICAgICAgICBmaTsKICAgIGZpOwog ICAgaWYgW1sgJHtyZXN1bHR9IC1ndCAwIF1dOyB0aGVuCiAgICAgICAgZXdhcm4gIiI7CiAgICAg ICAgZXdhcm4gIkJ1aWxkIHdpbGwgbm90IGNvbnRpbnVlLCBiZWNhdXNlIHlvdSB3aWxsIGV4cGVy aWVuY2UgcHJvYmxlbXMuIjsKICAgICAgICBld2FybiAiVG8gZml4IHRoaXMgZWl0aGVyIGNoYW5n ZSB0aGUgdmVyc2lvbiBvZiBHQ0MgeW91IHdpc2ggdG8gdXNlIjsKICAgICAgICBld2FybiAidG8g bWF0Y2ggdGhlIGtlcm5lbCwgb3IgcmVjb21waWxlIHRoZSBrZXJuZWwgZmlyc3QuIjsKICAgICAg ICBkaWUgIkdDQyBWZXJzaW9uIE1pc21hdGNoLiI7CiAgICBmaQp9CmNoZWNrX3psaWJpbmZsYXRl ICgpIAp7IAogICAgcmVxdWlyZV9jb25maWd1cmVkX2tlcm5lbDsKICAgIGdldF92ZXJzaW9uOwog ICAgbG9jYWwgSU5GTEFURTsKICAgIGxvY2FsIERFRkxBVEU7CiAgICBlaW5mbyAiRGV0ZXJtaW5p bmcgdGhlIHVzYWJpbGl0eSBvZiBaTElCX0lORkxBVEUgc3VwcG9ydCBpbiB5b3VyIGtlcm5lbCI7 CiAgICBlYmVnaW4gImNoZWNraW5nIFpMSUJfSU5GTEFURSI7CiAgICBsaW51eF9jaGtjb25maWdf YnVpbHRpbiBDT05GSUdfWkxJQl9JTkZMQVRFOwogICAgZWVuZCAkPzsKICAgIFsgIiQ/IiAhPSAw IF0gJiYgZGllOwogICAgZWJlZ2luICJjaGVja2luZyBaTElCX0RFRkxBVEUiOwogICAgbGludXhf Y2hrY29uZmlnX2J1aWx0aW4gQ09ORklHX1pMSUJfREVGTEFURTsKICAgIGVlbmQgJD87CiAgICBb ICIkPyIgIT0gMCBdICYmIGRpZTsKICAgIGxvY2FsIExJTkVOT19TVEFSVDsKICAgIGxvY2FsIExJ TkVOT19FTkQ7CiAgICBsb2NhbCBTWU1CT0xTOwogICAgbG9jYWwgeDsKICAgIExJTkVOT19FTkQ9 IiQoZ3JlcCAtbiAnQ09ORklHX1pMSUJfSU5GTEFURSB5JyAke0tWX0RJUn0vbGliL0NvbmZpZy5p biB8IGN1dCAtZCA6IC1mIDEpIjsKICAgIExJTkVOT19TVEFSVD0iJChoZWFkIC1uICRMSU5FTk9f RU5EICR7S1ZfRElSfS9saWIvQ29uZmlnLmluIHwgZ3JlcCAtbiAnaWYgXFsnIHwgdGFpbCAtbiAx IHwgY3V0IC1kIDogLWYgMSkiOwogICAgKCggTElORU5PX0FNT1VOVCA9ICRMSU5FTk9fRU5EIC0g JExJTkVOT19TVEFSVCApKTsKICAgICgoIExJTkVOT19FTkQgPSAkTElORU5PX0VORCAtIDEgKSk7 CiAgICBTWU1CT0xTPSIkKGhlYWQgLW4gJExJTkVOT19FTkQgJHtLVl9ESVJ9L2xpYi9Db25maWcu aW4gfCB0YWlsIC1uICRMSU5FTk9fQU1PVU5UIHwgc2VkIC1lICdzL14uKlwoQ09ORklHX1teXCIg XSpcKS4qL1wxL2c7JykiOwogICAgZm9yIHggaW4gJFNZTUJPTFM7CiAgICBkbwogICAgICAgIGlm IFsgIiR7IXh9IiA9ICJ5IiBdOyB0aGVuCiAgICAgICAgICAgIGVpbmZvICIke3h9IGVuc3VyZXMg emxpYiBpcyBsaW5rZWQgaW50byB5b3VyIGtlcm5lbCAtIGV4Y2VsbGVudCI7CiAgICAgICAgICAg IHJldHVybiAwOwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIGVlcnJvcjsKICAgIGVlcnJvciAi VGhpcyBrZXJuZWwgbW9kdWxlIHJlcXVpcmVzIFpMSUIgbGlicmFyeSBzdXBwb3J0LiI7CiAgICBl ZXJyb3IgIllvdSBoYXZlIGVuYWJsZWQgemxpYiBzdXBwb3J0IGluIHlvdXIga2VybmVsLCBidXQg aGF2ZW4ndCBlbmFibGVkIjsKICAgIGVlcnJvciAiZW5hYmxlZCBhbnkgb3B0aW9uIHRoYXQgd2ls bCBlbnN1cmUgdGhhdCB6bGliIGlzIGxpbmtlZCBpbnRvIHlvdXIiOwogICAgZWVycm9yICJrZXJu ZWwuIjsKICAgIGVlcnJvcjsKICAgIGVlcnJvciAiUGxlYXNlIGVuc3VyZSB0aGF0IHlvdSBlbmFi bGUgYXQgbGVhc3Qgb25lIG9mIHRoZXNlIG9wdGlvbnM6IjsKICAgIGVlcnJvcjsKICAgIGZvciB4 IGluICRTWU1CT0xTOwogICAgZG8KICAgICAgICBlZXJyb3IgIiAgKiAkeCI7CiAgICBkb25lOwog ICAgZWVycm9yOwogICAgZWVycm9yICJQbGVhc2UgcmVtZW1iZXIgdG8gcmVjb21waWxlIGFuZCBp bnN0YWxsIHlvdXIga2VybmVsLCBhbmQgcmVib290IjsKICAgIGVlcnJvciAiaW50byB5b3VyIG5l dyBrZXJuZWwgYmVmb3JlIGF0dGVtcHRpbmcgdG8gbG9hZCB0aGlzIGtlcm5lbCBtb2R1bGUuIjsK ICAgIGRpZSAiS2VybmVsIGRvZXNuJ3QgaW5jbHVkZSB6bGliIHN1cHBvcnQiCn0KY29udmVydF90 b19tICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBp ZiB1c2VfbTsgdGhlbgogICAgICAgIFsgISAtZiAiJHsxfSIgXSAmJiBkaWUgImNvbnZlcnRfdG9f bSgpIHJlcXVpcmVzIGEgZmlsZW5hbWUgYXMgYW4gYXJndW1lbnQiOwogICAgICAgIGViZWdpbiAi Q29udmVydGluZyAkezEvJHtXT1JLRElSfVwvL30gdG8gdXNlIE09IGluc3RlYWQgb2YgU1VCRElS Uz0iOwogICAgICAgIHNlZCAtaSAnczpTVUJESVJTPTpNPTpnJyAiJHsxfSI7CiAgICAgICAgZWVu ZCAkPzsKICAgIGZpCn0KZGVsZXRlX2FsbF92ZXJzaW9uX3NlcGFyYXRvcnMgKCkgCnsgCiAgICBy ZXBsYWNlX2FsbF92ZXJzaW9uX3NlcGFyYXRvcnMgIiIgIiR7MX0iCn0KZGVsZXRlX3ZlcnNpb25f c2VwYXJhdG9yICgpIAp7IAogICAgcmVwbGFjZV92ZXJzaW9uX3NlcGFyYXRvciAiJHsxfSIgIiIg IiR7Mn0iCn0KZGxvcGVuX2xpYiAoKSAKeyAKICAgIGNhc2UgIiR7Q0hPU1R9IiBpbiAKICAgICAg ICAqLWxpbnV4LWdudSogfCAqLWxpbnV4LXVjbGliYyB8ICotaW50ZXJpeCopCiAgICAgICAgICAg IGVjaG8gIi1sZGwiCiAgICAgICAgOzsKICAgIGVzYWMKfQpkb2ljb24gKCkgCnsgCiAgICAoIGxv Y2FsIGkgaiByZXQ7CiAgICBpbnNpbnRvIC91c3Ivc2hhcmUvcGl4bWFwczsKICAgIGZvciBpIGlu ICIkQCI7CiAgICBkbwogICAgICAgIGlmIFtbIC1mICR7aX0gXV07IHRoZW4KICAgICAgICAgICAg ZG9pbnMgIiR7aX0iOwogICAgICAgICAgICAoKHJldCs9JD8pKTsKICAgICAgICBlbHNlCiAgICAg ICAgICAgIGlmIFtbIC1kICR7aX0gXV07IHRoZW4KICAgICAgICAgICAgICAgIGZvciBqIGluICIk e2l9Ii8qLnBuZzsKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgZG9pbnMg IiR7an0iOwogICAgICAgICAgICAgICAgICAgICgocmV0Kz0kPykpOwogICAgICAgICAgICAgICAg ZG9uZTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgKCgrK3JldCkpOwogICAgICAg ICAgICBmaTsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBleGl0ICR7cmV0fSApCn0KZG9tZW51 ICgpIAp7IAogICAgKCBsb2NhbCBpIGogcmV0PTA7CiAgICBpbnNpbnRvIC91c3Ivc2hhcmUvYXBw bGljYXRpb25zOwogICAgZm9yIGkgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgaWYgW1sgLWYgJHtp fSBdXTsgdGhlbgogICAgICAgICAgICBkb2lucyAiJHtpfSI7CiAgICAgICAgICAgICgocmV0Kz0k PykpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgLWQgJHtpfSBdXTsgdGhlbgogICAg ICAgICAgICAgICAgZm9yIGogaW4gIiR7aX0iLyouZGVza3RvcDsKICAgICAgICAgICAgICAgIGRv CiAgICAgICAgICAgICAgICAgICAgZG9pbnMgIiR7an0iOwogICAgICAgICAgICAgICAgICAgICgo cmV0Kz0kPykpOwogICAgICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgKCgrK3JldCkpOwogICAgICAgICAgICBmaTsKICAgICAgICBmaTsKICAgIGRvbmU7 CiAgICBleGl0ICR7cmV0fSApCn0KZWJlZXAgKCkgCnsgCiAgICBld2FybiAiUUEgTm90aWNlOiBl YmVlcCBpcyBub3QgZGVmaW5lZCBpbiBFQVBJPSR7RUFQSX0sIHBsZWFzZSBmaWxlIGEgYnVnIGF0 IGh0dHA6Ly9idWdzLmdlbnRvby5vcmciCn0KZWNvbmZfYnVpbGQgKCkgCnsgCiAgICB0Yy1lbnZf YnVpbGQgZWNvbmYgLS1idWlsZD0ke0NCVUlMRDotJHtDSE9TVH19ICIkQCIKfQplY3ZzX2NsZWFu ICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgc2V0IC0tIC47CiAgICBmaW5kICIkQCIgLXR5cGUg ZCAtbmFtZSAnQ1ZTJyAtcHJ1bmUgLXByaW50MCB8IHhhcmdzIC0wIHJtIC1yZjsKICAgIGZpbmQg IiRAIiAtdHlwZSBmIC1uYW1lICcuY3ZzKicgLXByaW50MCB8IHhhcmdzIC0wIHJtIC1yZgp9CmVk b3MydW5peCAoKSAKeyAKICAgIFtbICQjIC1lcSAwIF1dICYmIHJldHVybiAwOwogICAgc2VkIC1p ICdzL1xyJC8vJyAtLSAiJEAiIHx8IGRpZQp9CmVnZXRlbnQgKCkgCnsgCiAgICBsb2NhbCBkYj0k MSBrZXk9JDI7CiAgICBbWyAkIyAtZ2UgMyBdXSAmJiBkaWUgInVzYWdlOiBlZ2V0ZW50IDxkYXRh YmFzZT4gPGtleT4iOwogICAgY2FzZSAke2RifSBpbiAKICAgICAgICBwYXNzd2QgfCBncm91cCkK CiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBkaWUgInNvcnJ5LCBkYXRhYmFzZSAn JHtkYn0nIG5vdCB5ZXQgc3VwcG9ydGVkOyBmaWxlIGEgYnVnIgogICAgICAgIDs7CiAgICBlc2Fj OwogICAgY2FzZSAke0NIT1NUfSBpbiAKICAgICAgICAqLWRhcndpbls2NzhdKQogICAgICAgICAg ICBjYXNlICR7a2V5fSBpbiAKICAgICAgICAgICAgICAgICpbITAtOV0qKQogICAgICAgICAgICAg ICAgICAgIG5pZHVtcCAke2RifSAuIHwgYXdrIC1GOiAiKFwkMSB+IC9eJHtrZXl9XCQvKSB7cHJp bnQ7ZXhpdDt9IgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICopCiAgICAgICAg ICAgICAgICAgICAgbmlkdW1wICR7ZGJ9IC4gfCBhd2sgLUY6ICIoXCQzID09ICR7a2V5fSkge3By aW50O2V4aXQ7fSIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGVzYWMKICAgICAgICA7 OwogICAgICAgICotZGFyd2luKikKICAgICAgICAgICAgbG9jYWwgbXlrZXk7CiAgICAgICAgICAg IGNhc2UgJHtkYn0gaW4gCiAgICAgICAgICAgICAgICBwYXNzd2QpCiAgICAgICAgICAgICAgICAg ICAgZGI9IlVzZXJzIiBteWtleT0iVW5pcXVlSUQiCiAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICAgICAgZ3JvdXApCiAgICAgICAgICAgICAgICAgICAgZGI9Ikdyb3VwcyIgbXlrZXk9IlBy aW1hcnlHcm91cElEIgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgZXNhYzsKICAgICAg ICAgICAgY2FzZSAke2tleX0gaW4gCiAgICAgICAgICAgICAgICAqWyEwLTldKikKICAgICAgICAg ICAgICAgICAgICBkc2NsIC4gLXJlYWQgLyR7ZGJ9LyR7a2V5fSAyPiAvZGV2L251bGwgfCBncmVw IFJlY29yZE5hbWUKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAqKQogICAgICAg ICAgICAgICAgICAgIGRzY2wgLiAtc2VhcmNoIC8ke2RifSAke215a2V5fSAke2tleX0gMj4gL2Rl di9udWxsCiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICBlc2FjCiAgICAgICAgOzsKICAg ICAgICAqLWZyZWVic2QqIHwgKi1kcmFnb25mbHkqKQogICAgICAgICAgICBjYXNlICR7ZGJ9IGlu IAogICAgICAgICAgICAgICAgcGFzc3dkKQogICAgICAgICAgICAgICAgICAgIGRiPSJ1c2VyIgog ICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICopCgogICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgbG9jYWwgb3B0czsKICAgICAgICAgICAgaWYg W1sgJHtrZXl9ID09IFtbOmRpZ2l0Ol1dKiBdXTsgdGhlbgogICAgICAgICAgICAgICAgW1sgJHtk Yn0gPT0gInVzZXIiIF1dICYmIG9wdHM9Ii11IiB8fCBvcHRzPSItZyI7CiAgICAgICAgICAgIGZp OwogICAgICAgICAgICBwdyBzaG93ICR7ZGJ9ICR7b3B0c30gIiR7a2V5fSIgLXEKICAgICAgICA7 OwogICAgICAgICotbmV0YnNkKiB8ICotb3BlbmJzZCopCiAgICAgICAgICAgIGdyZXAgIiR7a2V5 fTpcKjoiIC9ldGMvJHtkYn0KICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIG5zY2Qg LWkgIiR7ZGJ9IiAyPiAvZGV2L251bGw7CiAgICAgICAgICAgIGdldGVudCAiJHtkYn0iICIke2tl eX0iCiAgICAgICAgOzsKICAgIGVzYWMKfQplZ2V0aG9tZSAoKSAKeyAKICAgIGxvY2FsIHBvczsK ICAgIFtbICQjIC1lcSAxIF1dIHx8IGRpZSAidXNhZ2U6IGVnZXRob21lIDx1c2VyPiI7CiAgICBj YXNlICR7Q0hPU1R9IGluIAogICAgICAgICotZGFyd2luKiB8ICotZnJlZWJzZCogfCAqLWRyYWdv bmZseSopCiAgICAgICAgICAgIHBvcz05CiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAg ICBwb3M9NgogICAgICAgIDs7CiAgICBlc2FjOwogICAgZWdldGVudCBwYXNzd2QgIiQxIiB8IGN1 dCAtZDogLWYke3Bvc30KfQplZ2V0c2hlbGwgKCkgCnsgCiAgICBsb2NhbCBwb3M7CiAgICBbWyAk IyAtZXEgMSBdXSB8fCBkaWUgInVzYWdlOiBlZ2V0c2hlbGwgPHVzZXI+IjsKICAgIGNhc2UgJHtD SE9TVH0gaW4gCiAgICAgICAgKi1kYXJ3aW4qIHwgKi1mcmVlYnNkKiB8ICotZHJhZ29uZmx5KikK ICAgICAgICAgICAgcG9zPTEwCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBwb3M9 NwogICAgICAgIDs7CiAgICBlc2FjOwogICAgZWdldGVudCBwYXNzd2QgIiQxIiB8IGN1dCAtZDog LWYke3Bvc30KfQplbWt0ZW1wICgpIAp7IAogICAgbG9jYWwgZXhlPSJ0b3VjaCI7CiAgICBbWyAk MSA9PSAtZCBdXSAmJiBleGU9Im1rZGlyIiAmJiBzaGlmdDsKICAgIGxvY2FsIHRvcGRpcj0kMTsK ICAgIGlmIFtbIC16ICR7dG9wZGlyfSBdXTsgdGhlbgogICAgICAgIFtbIC16ICR7VH0gXV0gJiYg dG9wZGlyPSIvdG1wIiB8fCB0b3BkaXI9JHtUfTsKICAgIGZpOwogICAgaWYgISB0eXBlIC1QIG1r dGVtcCA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgIGxvY2FsIHRtcD0vOwogICAgICAgIHdoaWxl IFtbIC1lICR7dG1wfSBdXTsgZG8KICAgICAgICAgICAgdG1wPSR7dG9wZGlyfS90bXAuJHtSQU5E T019LiR7UkFORE9NfS4ke1JBTkRPTX07CiAgICAgICAgZG9uZTsKICAgICAgICAke2V4ZX0gIiR7 dG1wfSIgfHwgJHtleGV9IC1wICIke3RtcH0iOwogICAgICAgIGVjaG8gIiR7dG1wfSI7CiAgICBl bHNlCiAgICAgICAgaWYgW1sgJHtleGV9ID09ICJ0b3VjaCIgXV07IHRoZW4KICAgICAgICAgICAg VE1QRElSPSIke3RvcGRpcn0iIG1rdGVtcCAtdCB0bXAuWFhYWFhYWFhYWDsKICAgICAgICBlbHNl CiAgICAgICAgICAgIFRNUERJUj0iJHt0b3BkaXJ9IiBta3RlbXAgLWR0IHRtcC5YWFhYWFhYWFhY OwogICAgICAgIGZpOwogICAgZmkKfQplbmV3Z3JvdXAgKCkgCnsgCiAgICBfYXNzZXJ0X3BrZ19l YnVpbGRfcGhhc2UgJHtGVU5DTkFNRX07CiAgICBsb2NhbCBlZ3JvdXA9JDE7CiAgICBzaGlmdDsK ICAgIGlmIFtbIC16ICR7ZWdyb3VwfSBdXTsgdGhlbgogICAgICAgIGVlcnJvciAiTm8gZ3JvdXAg c3BlY2lmaWVkICEiOwogICAgICAgIGRpZSAiQ2Fubm90IGNhbGwgZW5ld2dyb3VwIHdpdGhvdXQg YSBncm91cCI7CiAgICBmaTsKICAgIGlmIFtbIC1uICQoZWdldGVudCBncm91cCAiJHtlZ3JvdXB9 IikgXV07IHRoZW4KICAgICAgICByZXR1cm4gMDsKICAgIGZpOwogICAgZWluZm8gIkFkZGluZyBn cm91cCAnJHtlZ3JvdXB9JyB0byB5b3VyIHN5c3RlbSAuLi4iOwogICAgbG9jYWwgZWdpZD0kMTsK ICAgIHNoaWZ0OwogICAgaWYgW1sgISAteiAke2VnaWR9IF1dOyB0aGVuCiAgICAgICAgaWYgW1sg JHtlZ2lkfSAtZ3QgMCBdXTsgdGhlbgogICAgICAgICAgICBpZiBbWyAtbiAkKGVnZXRlbnQgZ3Jv dXAgJHtlZ2lkfSkgXV07IHRoZW4KICAgICAgICAgICAgICAgIGVnaWQ9Im5leHQgYXZhaWxhYmxl OyByZXF1ZXN0ZWQgZ2lkIHRha2VuIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgZWxzZQogICAg ICAgICAgICBlZXJyb3IgIkdyb3VwaWQgZ2l2ZW4gYnV0IGlzIG5vdCBncmVhdGVyIHRoYW4gMCAh IjsKICAgICAgICAgICAgZGllICIke2VnaWR9IGlzIG5vdCBhIHZhbGlkIEdJRCI7CiAgICAgICAg Zmk7CiAgICBlbHNlCiAgICAgICAgZWdpZD0ibmV4dCBhdmFpbGFibGUiOwogICAgZmk7CiAgICBl aW5mbyAiIC0gR3JvdXBpZDogJHtlZ2lkfSI7CiAgICBpZiBbWyAkIyAtZ3QgMCBdXTsgdGhlbgog ICAgICAgIGRpZSAiZXh0cmEgYXJndW1lbnRzIG5vIGxvbmdlciBzdXBwb3J0ZWQ7IHBsZWFzZSBm aWxlIGEgYnVnIjsKICAgIGZpOwogICAgZnVuY3Rpb24gX2VuZXdncm91cF9uZXh0X2dpZCAoKSAK ICAgIHsgCiAgICAgICAgaWYgW1sgJHtlZ2lkfSA9PSAqWyEwLTldKiBdXTsgdGhlbgogICAgICAg ICAgICBmb3IgKChlZ2lkID0gMTAxOyBlZ2lkIDw9IDk5OTsgZWdpZCsrKSkKICAgICAgICAgICAg ZG8KICAgICAgICAgICAgICAgIFtbIC16ICQoZWdldGVudCBncm91cCAke2VnaWR9KSBdXSAmJiBi cmVhazsKICAgICAgICAgICAgZG9uZTsKICAgICAgICBmaQogICAgfTsKICAgIGNhc2UgJHtDSE9T VH0gaW4gCiAgICAgICAgKi1kYXJ3aW4qKQogICAgICAgICAgICBfZW5ld2dyb3VwX25leHRfZ2lk OwogICAgICAgICAgICBkc2NsIC4gY3JlYXRlICIvZ3JvdXBzLyR7ZWdyb3VwfSIgZ2lkICR7ZWdp ZH07CiAgICAgICAgICAgIGRzY2wgLiBjcmVhdGUgIi9ncm91cHMvJHtlZ3JvdXB9IiBwYXNzd2Qg JyonCiAgICAgICAgOzsKICAgICAgICAqLWZyZWVic2QqIHwgKi1kcmFnb25mbHkqKQogICAgICAg ICAgICBfZW5ld2dyb3VwX25leHRfZ2lkOwogICAgICAgICAgICBwdyBncm91cGFkZCAiJHtlZ3Jv dXB9IiAtZyAke2VnaWR9IHx8IGRpZQogICAgICAgIDs7CiAgICAgICAgKi1uZXRic2QqKQogICAg ICAgICAgICBfZW5ld2dyb3VwX25leHRfZ2lkOwogICAgICAgICAgICBncm91cGFkZCAtZyAke2Vn aWR9ICIke2Vncm91cH0iIHx8IGRpZQogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAg bG9jYWwgb3B0czsKICAgICAgICAgICAgaWYgW1sgJHtlZ2lkfSA9PSAqWyEwLTldKiBdXTsgdGhl bgogICAgICAgICAgICAgICAgb3B0cz0iIjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg ICAgb3B0cz0iLWcgJHtlZ2lkfSI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBncm91cGFk ZCAtciAke29wdHN9ICIke2Vncm91cH0iIHx8IGRpZQogICAgICAgIDs7CiAgICBlc2FjCn0KZW5l d3VzZXIgKCkgCnsgCiAgICBfYXNzZXJ0X3BrZ19lYnVpbGRfcGhhc2UgJHtGVU5DTkFNRX07CiAg ICBsb2NhbCBldXNlcj0kMTsKICAgIHNoaWZ0OwogICAgaWYgW1sgLXogJHtldXNlcn0gXV07IHRo ZW4KICAgICAgICBlZXJyb3IgIk5vIHVzZXJuYW1lIHNwZWNpZmllZCAhIjsKICAgICAgICBkaWUg IkNhbm5vdCBjYWxsIGVuZXd1c2VyIHdpdGhvdXQgYSB1c2VybmFtZSI7CiAgICBmaTsKICAgIGlm IFtbIC1uICQoZWdldGVudCBwYXNzd2QgIiR7ZXVzZXJ9IikgXV07IHRoZW4KICAgICAgICByZXR1 cm4gMDsKICAgIGZpOwogICAgZWluZm8gIkFkZGluZyB1c2VyICcke2V1c2VyfScgdG8geW91ciBz eXN0ZW0gLi4uIjsKICAgIGxvY2FsIG9wdHM9KCk7CiAgICBsb2NhbCBldWlkPSQxOwogICAgc2hp ZnQ7CiAgICBpZiBbWyAtbiAke2V1aWR9ICYmICR7ZXVpZH0gIT0gLTEgXV07IHRoZW4KICAgICAg ICBpZiBbWyAke2V1aWR9IC1ndCAwIF1dOyB0aGVuCiAgICAgICAgICAgIGlmIFtbIC1uICQoZWdl dGVudCBwYXNzd2QgJHtldWlkfSkgXV07IHRoZW4KICAgICAgICAgICAgICAgIGV1aWQ9Im5leHQi OwogICAgICAgICAgICBmaTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGVlcnJvciAiVXNlcmlk IGdpdmVuIGJ1dCBpcyBub3QgZ3JlYXRlciB0aGFuIDAgISI7CiAgICAgICAgICAgIGRpZSAiJHtl dWlkfSBpcyBub3QgYSB2YWxpZCBVSUQiOwogICAgICAgIGZpOwogICAgZWxzZQogICAgICAgIGV1 aWQ9Im5leHQiOwogICAgZmk7CiAgICBpZiBbWyAke2V1aWR9ID09ICJuZXh0IiBdXTsgdGhlbgog ICAgICAgIGZvciAoKGV1aWQgPSAxMDE7IGV1aWQgPD0gOTk5OyBldWlkKyspKQogICAgICAgIGRv CiAgICAgICAgICAgIFtbIC16ICQoZWdldGVudCBwYXNzd2QgJHtldWlkfSkgXV0gJiYgYnJlYWs7 CiAgICAgICAgZG9uZTsKICAgIGZpOwogICAgb3B0cys9KC11ICR7ZXVpZH0pOwogICAgZWluZm8g IiAtIFVzZXJpZDogJHtldWlkfSI7CiAgICBsb2NhbCBlc2hlbGw9JDE7CiAgICBzaGlmdDsKICAg IGlmIFtbICEgLXogJHtlc2hlbGx9IF1dICYmIFtbICR7ZXNoZWxsfSAhPSAiLTEiIF1dOyB0aGVu CiAgICAgICAgaWYgW1sgISAtZSAke1JPT1R9JHtlc2hlbGx9IF1dOyB0aGVuCiAgICAgICAgICAg IGVlcnJvciAiQSBzaGVsbCB3YXMgc3BlY2lmaWVkIGJ1dCBpdCBkb2VzIG5vdCBleGlzdCAhIjsK ICAgICAgICAgICAgZGllICIke2VzaGVsbH0gZG9lcyBub3QgZXhpc3QgaW4gJHtST09UfSI7CiAg ICAgICAgZmk7CiAgICAgICAgaWYgW1sgJHtlc2hlbGx9ID09ICovZmFsc2UgfHwgJHtlc2hlbGx9 ID09ICovbm9sb2dpbiBdXTsgdGhlbgogICAgICAgICAgICBlZXJyb3IgIkRvIG5vdCBzcGVjaWZ5 ICR7ZXNoZWxsfSB5b3Vyc2VsZiwgdXNlIC0xIjsKICAgICAgICAgICAgZGllICJQYXNzICctMScg YXMgdGhlIHNoZWxsIHBhcmFtZXRlciI7CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgZm9y IGVzaGVsbCBpbiAvc2Jpbi9ub2xvZ2luIC91c3Ivc2Jpbi9ub2xvZ2luIC9iaW4vZmFsc2UgL3Vz ci9iaW4vZmFsc2UgL2Rldi9udWxsOwogICAgICAgIGRvCiAgICAgICAgICAgIFtbIC14ICR7Uk9P VH0ke2VzaGVsbH0gXV0gJiYgYnJlYWs7CiAgICAgICAgZG9uZTsKICAgICAgICBpZiBbWyAke2Vz aGVsbH0gPT0gIi9kZXYvbnVsbCIgXV07IHRoZW4KICAgICAgICAgICAgZWVycm9yICJVbmFibGUg dG8gaWRlbnRpZnkgdGhlIHNoZWxsIHRvIHVzZSwgcHJvY2VlZGluZyB3aXRoIHVzZXJsYW5kIGRl ZmF1bHQuIjsKICAgICAgICAgICAgY2FzZSAke1VTRVJMQU5EfSBpbiAKICAgICAgICAgICAgICAg IEdOVSkKICAgICAgICAgICAgICAgICAgICBlc2hlbGw9Ii9iaW4vZmFsc2UiCiAgICAgICAgICAg ICAgICA7OwogICAgICAgICAgICAgICAgQlNEKQogICAgICAgICAgICAgICAgICAgIGVzaGVsbD0i L3NiaW4vbm9sb2dpbiIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICBEYXJ3aW4p CiAgICAgICAgICAgICAgICAgICAgZXNoZWxsPSIvdXNyL3NiaW4vbm9sb2dpbiIKICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgIGRpZSAiVW5h YmxlIHRvIGlkZW50aWZ5IHRoZSBkZWZhdWx0IHNoZWxsIGZvciB1c2VybGFuZCAke1VTRVJMQU5E fSIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGVzYWM7CiAgICAgICAgZmk7CiAgICBm aTsKICAgIGVpbmZvICIgLSBTaGVsbDogJHtlc2hlbGx9IjsKICAgIG9wdHMrPSgtcyAiJHtlc2hl bGx9Iik7CiAgICBsb2NhbCBlaG9tZT0kMTsKICAgIHNoaWZ0OwogICAgaWYgW1sgLXogJHtlaG9t ZX0gXV0gfHwgW1sgJHtlaG9tZX0gPT0gIi0xIiBdXTsgdGhlbgogICAgICAgIGVob21lPSIvZGV2 L251bGwiOwogICAgZmk7CiAgICBlaW5mbyAiIC0gSG9tZTogJHtlaG9tZX0iOwogICAgb3B0cys9 KC1kICIke2Vob21lfSIpOwogICAgbG9jYWwgZWdyb3Vwcz0kMTsKICAgIHNoaWZ0OwogICAgbG9j YWwgZyBlZ3JvdXBzX2FycjsKICAgIElGUz0iLCIgcmVhZCAtciAtYSBlZ3JvdXBzX2FyciA8PDwg IiR7ZWdyb3Vwc30iOwogICAgc2hpZnQ7CiAgICBpZiBbWyAkeyNlZ3JvdXBzX2FycltAXX0gLWd0 IDAgXV07IHRoZW4KICAgICAgICBsb2NhbCBkZWZncm91cCBleGdyb3VwczsKICAgICAgICBmb3Ig ZyBpbiAiJHtlZ3JvdXBzX2FycltAXX0iOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIFtbIC16 ICQoZWdldGVudCBncm91cCAiJHtnfSIpIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlZXJyb3Ig IllvdSBtdXN0IGFkZCBncm91cCAke2d9IHRvIHRoZSBzeXN0ZW0gZmlyc3QiOwogICAgICAgICAg ICAgICAgZGllICIke2d9IGlzIG5vdCBhIHZhbGlkIEdJRCI7CiAgICAgICAgICAgIGZpOwogICAg ICAgICAgICBpZiBbWyAteiAke2RlZmdyb3VwfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZGVm Z3JvdXA9JHtnfTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZXhncm91cHMrPSIs JHtnfSI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICAgICAgb3B0cys9KC1nICIk e2RlZmdyb3VwfSIpOwogICAgICAgIGlmIFtbICEgLXogJHtleGdyb3Vwc30gXV07IHRoZW4KICAg ICAgICAgICAgb3B0cys9KC1HICIke2V4Z3JvdXBzOjF9Iik7CiAgICAgICAgZmk7CiAgICBmaTsK ICAgIGVpbmZvICIgLSBHcm91cHM6ICR7ZWdyb3VwczotKG5vbmUpfSI7CiAgICBpZiBbWyAkIyAt Z3QgMCBdXTsgdGhlbgogICAgICAgIGRpZSAiZXh0cmEgYXJndW1lbnRzIG5vIGxvbmdlciBzdXBw b3J0ZWQ7IHBsZWFzZSBmaWxlIGEgYnVnIjsKICAgIGVsc2UKICAgICAgICBsb2NhbCBjb21tZW50 PSJhZGRlZCBieSBwb3J0YWdlIGZvciAke1BOfSI7CiAgICAgICAgb3B0cys9KC1jICIke2NvbW1l bnR9Iik7CiAgICAgICAgZWluZm8gIiAtIEdFQ09TOiAke2NvbW1lbnR9IjsKICAgIGZpOwogICAg Y2FzZSAke0NIT1NUfSBpbiAKICAgICAgICAqLWRhcndpbiopCiAgICAgICAgICAgIGRzY2wgLiBj cmVhdGUgIi91c2Vycy8ke2V1c2VyfSIgdWlkICR7ZXVpZH07CiAgICAgICAgICAgIGRzY2wgLiBj cmVhdGUgIi91c2Vycy8ke2V1c2VyfSIgc2hlbGwgIiR7ZXNoZWxsfSI7CiAgICAgICAgICAgIGRz Y2wgLiBjcmVhdGUgIi91c2Vycy8ke2V1c2VyfSIgaG9tZSAiJHtlaG9tZX0iOwogICAgICAgICAg ICBkc2NsIC4gY3JlYXRlICIvdXNlcnMvJHtldXNlcn0iIHJlYWxuYW1lICJhZGRlZCBieSBwb3J0 YWdlIGZvciAke1BOfSI7CiAgICAgICAgICAgIGZvciBnIGluICIke2Vncm91cHNfYXJyW0BdfSI7 CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBkc2NsIC4gbWVyZ2UgIi9ncm91cHMvJHtn fSIgdXNlcnMgIiR7ZXVzZXJ9IjsKICAgICAgICAgICAgZG9uZQogICAgICAgIDs7CiAgICAgICAg Ki1mcmVlYnNkKiB8ICotZHJhZ29uZmx5KikKICAgICAgICAgICAgcHcgdXNlcmFkZCAiJHtldXNl cn0iICIke29wdHNbQF19IiB8fCBkaWUKICAgICAgICA7OwogICAgICAgICotbmV0YnNkKikKICAg ICAgICAgICAgdXNlcmFkZCAiJHtvcHRzW0BdfSIgIiR7ZXVzZXJ9IiB8fCBkaWUKICAgICAgICA7 OwogICAgICAgICotb3BlbmJzZCopCiAgICAgICAgICAgIHVzZXJhZGQgLXUgJHtldWlkfSAtcyAi JHtlc2hlbGx9IiAtZCAiJHtlaG9tZX0iIC1nICIke2Vncm91cHN9IiAiJHtldXNlcn0iIHx8IGRp ZQogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgdXNlcmFkZCAtciAiJHtvcHRzW0Bd fSIgIiR7ZXVzZXJ9IiB8fCBkaWUKICAgICAgICA7OwogICAgZXNhYzsKICAgIGlmIFtbICEgLWUg JHtST09UfS8ke2Vob21lfSBdXTsgdGhlbgogICAgICAgIGVpbmZvICIgLSBDcmVhdGluZyAke2Vo b21lfSBpbiAke1JPT1R9IjsKICAgICAgICBta2RpciAtcCAiJHtST09UfS8ke2Vob21lfSI7CiAg ICAgICAgY2hvd24gIiR7ZXVzZXJ9IiAiJHtST09UfS8ke2Vob21lfSI7CiAgICAgICAgY2htb2Qg NzU1ICIke1JPT1R9LyR7ZWhvbWV9IjsKICAgIGZpCn0KZXBhdGNoICgpIAp7IAogICAgZnVuY3Rp b24gX2VwYXRjaF9kcmF3X2xpbmUgKCkgCiAgICB7IAogICAgICAgIFtbIC16ICQxIF1dICYmIHNl dCAiJChwcmludGYgIiU2NXMiICcnKSI7CiAgICAgICAgZWNobyAiJHsxLy8/Lz19IgogICAgfTsK ICAgIHVuc2V0IFA0Q09ORklHIFA0UE9SVCBQNFVTRVI7CiAgICBpZiBbWyAkIyAtZ3QgMSBdXTsg dGhlbgogICAgICAgIGxvY2FsIG07CiAgICAgICAgZm9yIG0gaW4gIiRAIjsKICAgICAgICBkbwog ICAgICAgICAgICBlcGF0Y2ggIiR7bX0iOwogICAgICAgIGRvbmU7CiAgICAgICAgcmV0dXJuIDA7 CiAgICBmaTsKICAgIGxvY2FsIFNJTkdMRV9QQVRDSD0ibm8iOwogICAgW1sgJCMgLWVxIDAgXV0g JiYgc2V0IC0tICIke0VQQVRDSF9TT1VSQ0V9IjsKICAgIGlmIFtbIC1mICQxIF1dOyB0aGVuCiAg ICAgICAgU0lOR0xFX1BBVENIPSJ5ZXMiOwogICAgICAgIHNldCAtLSAiJDEiOwogICAgICAgIGxv Y2FsIEVQQVRDSF9TVUZGSVg9JDE7CiAgICBlbHNlCiAgICAgICAgaWYgW1sgLWQgJDEgXV07IHRo ZW4KICAgICAgICAgICAgc2V0IC0tICIkMSIvKiR7RVBBVENIX1NVRkZJWDorLiIke0VQQVRDSF9T VUZGSVh9In07CiAgICAgICAgZWxzZQogICAgICAgICAgICBpZiBbWyAtZiAke0VQQVRDSF9TT1VS Q0V9LyQxIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlcGF0Y2ggIiR7RVBBVENIX1NPVVJDRX0v JDEiOwogICAgICAgICAgICAgICAgcmV0dXJuICQ/OwogICAgICAgICAgICBlbHNlCiAgICAgICAg ICAgICAgICBbWyAkIyAtbmUgMCBdXSAmJiBFUEFUQ0hfU09VUkNFPSQxOwogICAgICAgICAgICAg ICAgZWNobzsKICAgICAgICAgICAgICAgIGVlcnJvciAiQ2Fubm90IGZpbmQgXCRFUEFUQ0hfU09V UkNFISAgVmFsdWUgZm9yIFwkRVBBVENIX1NPVVJDRSBpczoiOwogICAgICAgICAgICAgICAgZWVy cm9yOwogICAgICAgICAgICAgICAgZWVycm9yICIgICR7RVBBVENIX1NPVVJDRX0iOwogICAgICAg ICAgICAgICAgZWVycm9yICIgICggJHtFUEFUQ0hfU09VUkNFIyMqL30gKSI7CiAgICAgICAgICAg ICAgICBlY2hvOwogICAgICAgICAgICAgICAgZGllICJDYW5ub3QgZmluZCBcJEVQQVRDSF9TT1VS Q0UhIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIGxvY2FsIFBJUEVf Q01EOwogICAgY2FzZSAke0VQQVRDSF9TVUZGSVgjIypcLn0gaW4gCiAgICAgICAgeHopCiAgICAg ICAgICAgIFBJUEVfQ01EPSJ4eiAtZGMiCiAgICAgICAgOzsKICAgICAgICBsem1hKQogICAgICAg ICAgICBQSVBFX0NNRD0ibHptYSAtZGMiCiAgICAgICAgOzsKICAgICAgICBiejIpCiAgICAgICAg ICAgIFBJUEVfQ01EPSJiemlwMiAtZGMiCiAgICAgICAgOzsKICAgICAgICBneiB8IFogfCB6KQog ICAgICAgICAgICBQSVBFX0NNRD0iZ3ppcCAtZGMiCiAgICAgICAgOzsKICAgICAgICBaSVAgfCB6 aXApCiAgICAgICAgICAgIFBJUEVfQ01EPSJ1bnppcCAtcCIKICAgICAgICA7OwogICAgICAgICop CgogICAgICAgIDs7CiAgICBlc2FjOwogICAgW1sgJHtTSU5HTEVfUEFUQ0h9ID09ICJubyIgXV0g JiYgZWluZm8gIiR7RVBBVENIX01VTFRJX01TR30iOwogICAgbG9jYWwgeDsKICAgIGZvciB4IGlu ICIkQCI7CiAgICBkbwogICAgICAgIFtbICEgLWYgJHt4fSBdXSAmJiBjb250aW51ZTsKICAgICAg ICBsb2NhbCBwYXRjaG5hbWU9JHt4IyMqL307CiAgICAgICAgbG9jYWwgYT0ke3BhdGNobmFtZSMq X307CiAgICAgICAgYT0ke2ElJV8qfTsKICAgICAgICBpZiAhIFtbICR7U0lOR0xFX1BBVENIfSA9 PSAieWVzIiB8fCAke0VQQVRDSF9GT1JDRX0gPT0gInllcyIgfHwgJHthfSA9PSBhbGwgfHwgJHth fSA9PSAke0FSQ0h9IF1dOyB0aGVuCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGZpOwog ICAgICAgIGlmIFtbIC1uICR7RVBBVENIX0VYQ0xVREV9IF1dOyB0aGVuCiAgICAgICAgICAgIGVz aG9wdHNfcHVzaCAtbyBub2dsb2I7CiAgICAgICAgICAgIGxvY2FsIGV4OwogICAgICAgICAgICBm b3IgZXggaW4gJHtFUEFUQ0hfRVhDTFVERX07CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAg ICBpZiBbWyAke3BhdGNobmFtZX0gPT0gJHtleH0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAg ICBlc2hvcHRzX3BvcDsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgICAg ICAgICAgZmk7CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIGVzaG9wdHNfcG9wOwogICAg ICAgIGZpOwogICAgICAgIGlmIFtbICR7U0lOR0xFX1BBVENIfSA9PSAieWVzIiBdXTsgdGhlbgog ICAgICAgICAgICBpZiBbWyAtbiAke0VQQVRDSF9TSU5HTEVfTVNHfSBdXTsgdGhlbgogICAgICAg ICAgICAgICAgZWluZm8gIiR7RVBBVENIX1NJTkdMRV9NU0d9IjsKICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgICAgZWluZm8gIkFwcGx5aW5nICR7cGF0Y2huYW1lfSAuLi4iOwogICAgICAg ICAgICBmaTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGVpbmZvICIgICR7cGF0Y2huYW1lfSAu Li4iOwogICAgICAgIGZpOwogICAgICAgIGxvY2FsIFNUREVSUl9UQVJHRVQ9IiR7VH0vJHtwYXRj aG5hbWV9Lm91dCI7CiAgICAgICAgaWYgW1sgLWUgJHtTVERFUlJfVEFSR0VUfSBdXTsgdGhlbgog ICAgICAgICAgICBTVERFUlJfVEFSR0VUPSIke1R9LyR7cGF0Y2huYW1lfS0kJC5vdXQiOwogICAg ICAgIGZpOwogICAgICAgIHByaW50ZiAiKioqKiogJXMgKioqKipcblBXRDogJXNcblxuIiAiJHtw YXRjaG5hbWV9IiAiJHtQV0R9IiA+ICIke1NUREVSUl9UQVJHRVR9IjsKICAgICAgICBsb2NhbCBj b3VudD0wOwogICAgICAgIGxvY2FsIFBBVENIX1RBUkdFVDsKICAgICAgICBpZiBbWyAtbiAke1BJ UEVfQ01EfSBdXTsgdGhlbgogICAgICAgICAgICBQQVRDSF9UQVJHRVQ9IiR7VH0vJCQucGF0Y2gi OwogICAgICAgICAgICBlY2hvICJQSVBFX0NPTU1BTkQ6ICAke1BJUEVfQ01EfSAke3h9ID4gJHtQ QVRDSF9UQVJHRVR9IiA+PiAiJHtTVERFUlJfVEFSR0VUfSI7CiAgICAgICAgICAgIGlmICEgKCAk e1BJUEVfQ01EfSAiJHt4fSIgPiAiJHtQQVRDSF9UQVJHRVR9IiApID4+ICIke1NUREVSUl9UQVJH RVR9IiAyPiYxOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAgZWVy cm9yICJDb3VsZCBub3QgZXh0cmFjdCBwYXRjaCEiOwogICAgICAgICAgICAgICAgY291bnQ9NTsK ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBmaTsKICAgICAgICBlbHNlCiAgICAg ICAgICAgIFBBVENIX1RBUkdFVD0ke3h9OwogICAgICAgIGZpOwogICAgICAgIGxvY2FsIGFic19w YXRocz0kKGVncmVwIC1uICdeWy0rXXszfSAvJyAiJHtQQVRDSF9UQVJHRVR9IiB8IGF3ayAnJDIg IT0gIi9kZXYvbnVsbCIgeyBwcmludCB9Jyk7CiAgICAgICAgaWYgW1sgLW4gJHthYnNfcGF0aHN9 IF1dOyB0aGVuCiAgICAgICAgICAgIGNvdW50PTE7CiAgICAgICAgICAgIHByaW50ZiAiTk9URTog c2tpcHBpbmcgLXAwIGR1ZSB0byBhYnNvbHV0ZSBwYXRocyBpbiBwYXRjaDpcbiVzXG4iICIke2Fi c19wYXRoc30iID4+ICIke1NUREVSUl9UQVJHRVR9IjsKICAgICAgICBmaTsKICAgICAgICBsb2Nh bCByZWxfcGF0aHM9JChlZ3JlcCAtbiAnXlstK117M30gW14JXSpbLl1bLl0vJyAiJHtQQVRDSF9U QVJHRVR9Iik7CiAgICAgICAgaWYgW1sgLW4gJHtyZWxfcGF0aHN9IF1dOyB0aGVuCiAgICAgICAg ICAgIGVxYXdhcm4gIlFBIE5vdGljZTogWW91ciBwYXRjaCB1c2VzIHJlbGF0aXZlIHBhdGhzICcu Li8nLiI7CiAgICAgICAgICAgIGVxYXdhcm4gIiBJbiB0aGUgZnV0dXJlIHRoaXMgd2lsbCBjYXVz ZSBhIGZhaWx1cmUuIjsKICAgICAgICAgICAgZXFhd2FybiAiJHtyZWxfcGF0aHN9IjsKICAgICAg ICBmaTsKICAgICAgICB3aGlsZSBbWyAke2NvdW50fSAtbHQgNSBdXTsgZG8KICAgICAgICAgICAg KCBfZXBhdGNoX2RyYXdfbGluZSAiKioqKiogJHtwYXRjaG5hbWV9ICoqKioqIjsKICAgICAgICAg ICAgZWNobzsKICAgICAgICAgICAgZWNobyAiUEFUQ0ggQ09NTUFORDogIHBhdGNoIC1wJHtjb3Vu dH0gJHtFUEFUQ0hfT1BUU30gPCAnJHtQQVRDSF9UQVJHRVR9JyI7CiAgICAgICAgICAgIGVjaG87 CiAgICAgICAgICAgIF9lcGF0Y2hfZHJhd19saW5lICIqKioqKiAke3BhdGNobmFtZX0gKioqKioi OwogICAgICAgICAgICBwYXRjaCAtcCR7Y291bnR9ICR7RVBBVENIX09QVFN9IC0tZHJ5LXJ1biAt ZiA8ICIke1BBVENIX1RBUkdFVH0iIDI+JjE7CiAgICAgICAgICAgIHJldD0kPzsKICAgICAgICAg ICAgZWNobzsKICAgICAgICAgICAgZWNobyAicGF0Y2ggcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0 dXMgJHtyZXR9IjsKICAgICAgICAgICAgZXhpdCAke3JldH0gKSA+PiAiJHtTVERFUlJfVEFSR0VU fSI7CiAgICAgICAgICAgIGlmIFsgJD8gLWVxIDAgXTsgdGhlbgogICAgICAgICAgICAgICAgKCBf ZXBhdGNoX2RyYXdfbGluZSAiKioqKiogJHtwYXRjaG5hbWV9ICoqKioqIjsKICAgICAgICAgICAg ICAgIGVjaG87CiAgICAgICAgICAgICAgICBlY2hvICJBQ1RVQUxMWSBBUFBMWUlORyAke3BhdGNo bmFtZX0gLi4uIjsKICAgICAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgICAgICBfZXBhdGNo X2RyYXdfbGluZSAiKioqKiogJHtwYXRjaG5hbWV9ICoqKioqIjsKICAgICAgICAgICAgICAgIHBh dGNoIC1wJHtjb3VudH0gJHtFUEFUQ0hfT1BUU30gPCAiJHtQQVRDSF9UQVJHRVR9IiAyPiYxOwog ICAgICAgICAgICAgICAgcmV0PSQ/OwogICAgICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAg ICAgIGVjaG8gInBhdGNoIHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICR7cmV0fSI7CiAgICAg ICAgICAgICAgICBleGl0ICR7cmV0fSApID4+ICIke1NUREVSUl9UQVJHRVR9IjsKICAgICAgICAg ICAgICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGVjaG87CiAg ICAgICAgICAgICAgICAgICAgZWVycm9yICJBIGRyeS1ydW4gb2YgcGF0Y2ggY29tbWFuZCBzdWNj ZWVkZWQsIGJ1dCBhY3R1YWxseSI7CiAgICAgICAgICAgICAgICAgICAgZWVycm9yICJhcHBseWlu ZyB0aGUgcGF0Y2ggZmFpbGVkISI7CiAgICAgICAgICAgICAgICAgICAgY291bnQ9NTsKICAgICAg ICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGZpOwogICAg ICAgICAgICA6ICQoKCBjb3VudCsrICkpOwogICAgICAgIGRvbmU7CiAgICAgICAgaWYgW1sgLW4g JHtQSVBFX0NNRH0gXV07IHRoZW4KICAgICAgICAgICAgcm0gLWYgIiR7UEFUQ0hfVEFSR0VUfSI7 CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgJHtjb3VudH0gLWdlIDUgXV07IHRoZW4KICAgICAg ICAgICAgZWNobzsKICAgICAgICAgICAgZWVycm9yICJGYWlsZWQgUGF0Y2g6ICR7cGF0Y2huYW1l fSAhIjsKICAgICAgICAgICAgZWVycm9yICIgKCAke1BBVENIX1RBUkdFVH0gKSI7CiAgICAgICAg ICAgIGVlcnJvcjsKICAgICAgICAgICAgZWVycm9yICJJbmNsdWRlIGluIHlvdXIgYnVncmVwb3J0 IHRoZSBjb250ZW50cyBvZjoiOwogICAgICAgICAgICBlZXJyb3I7CiAgICAgICAgICAgIGVlcnJv ciAiICAke1NUREVSUl9UQVJHRVR9IjsKICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgZGll ICJGYWlsZWQgUGF0Y2g6ICR7cGF0Y2huYW1lfSEiOwogICAgICAgIGZpOwogICAgICAgIHJtIC1m ICIke1NUREVSUl9UQVJHRVR9IjsKICAgICAgICBlZW5kIDA7CiAgICBkb25lOwogICAgW1sgJHtT SU5HTEVfUEFUQ0h9ID09ICJubyIgXV0gJiYgZWluZm8gIkRvbmUgd2l0aCBwYXRjaGluZyI7CiAg ICA6Cn0KZXBhdGNoX3VzZXIgKCkgCnsgCiAgICBbWyAkIyAtbmUgMCBdXSAmJiBkaWUgImVwYXRj aF91c2VyIHRha2VzIG5vIG9wdGlvbnMiOwogICAgbG9jYWwgYXBwbGllZD0iJHtUfS9lcGF0Y2hf dXNlci5hcHBsaWVkIjsKICAgIFtbIC1lICR7YXBwbGllZH0gXV0gJiYgcmV0dXJuIDI7CiAgICBs b2NhbCBFUEFUQ0hfU09VUkNFIGNoZWNrIGJhc2U9JHtQT1JUQUdFX0NPTkZJR1JPT1QlL30vZXRj L3BvcnRhZ2UvcGF0Y2hlczsKICAgIGZvciBjaGVjayBpbiB7JHtDQVRFR09SWX0vJHtQRn0sJHtD QVRFR09SWX0vJHtQfSwke0NBVEVHT1JZfS8ke1BOfX07CiAgICBkbwogICAgICAgIEVQQVRDSF9T T1VSQ0U9JHtiYXNlfS8ke0NUQVJHRVR9LyR7Y2hlY2t9OwogICAgICAgIFtbIC1yICR7RVBBVENI X1NPVVJDRX0gXV0gfHwgRVBBVENIX1NPVVJDRT0ke2Jhc2V9LyR7Q0hPU1R9LyR7Y2hlY2t9Owog ICAgICAgIFtbIC1yICR7RVBBVENIX1NPVVJDRX0gXV0gfHwgRVBBVENIX1NPVVJDRT0ke2Jhc2V9 LyR7Y2hlY2t9OwogICAgICAgIGlmIFtbIC1kICR7RVBBVENIX1NPVVJDRX0gXV07IHRoZW4KICAg ICAgICAgICAgRVBBVENIX1NPVVJDRT0ke0VQQVRDSF9TT1VSQ0V9IEVQQVRDSF9TVUZGSVg9InBh dGNoIiBFUEFUQ0hfRk9SQ0U9InllcyIgRVBBVENIX01VTFRJX01TRz0iQXBwbHlpbmcgdXNlciBw YXRjaGVzIGZyb20gJHtFUEFUQ0hfU09VUkNFfSAuLi4iIGVwYXRjaDsKICAgICAgICAgICAgZWNo byAiJHtFUEFUQ0hfU09VUkNFfSIgPiAiJHthcHBsaWVkfSI7CiAgICAgICAgICAgIHJldHVybiAw OwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIGVjaG8gIm5vbmUiID4gIiR7YXBwbGllZH0iOwog ICAgcmV0dXJuIDEKfQplcGF1c2UgKCkgCnsgCiAgICBld2FybiAiUUEgTm90aWNlOiBlcGF1c2Ug aXMgbm90IGRlZmluZWQgaW4gRUFQST0ke0VBUEl9LCBwbGVhc2UgZmlsZSBhIGJ1ZyBhdCBodHRw Oi8vYnVncy5nZW50b28ub3JnIgp9CmVwdW50X2N4eCAoKSAKeyAKICAgIGxvY2FsIGRpcj0kMTsK ICAgIFtbIC16ICR7ZGlyfSBdXSAmJiBkaXI9JHtTfTsKICAgIGViZWdpbiAiUmVtb3ZpbmcgdXNl bGVzcyBDKysgY2hlY2tzIjsKICAgIGxvY2FsIGY7CiAgICBmaW5kICIke2Rpcn0iIC1uYW1lIGNv bmZpZ3VyZSB8IHdoaWxlIHJlYWQgZjsgZG8KICAgICAgICBwYXRjaCAtLW5vLWJhY2t1cC1pZi1t aXNtYXRjaCAtcDAgIiR7Zn0iICIke1BPUlRESVJ9L2VjbGFzcy9FTFQtcGF0Y2hlcy9ub2N4eC9u b2N4eC5wYXRjaCIgPiAvZGV2L251bGw7CiAgICBkb25lOwogICAgZWVuZCAwCn0KZXNob3B0c19w b3AgKCkgCnsgCiAgICBsb2NhbCBzOwogICAgZXN0YWNrX3BvcCBlc2hvcHRzIHMgfHwgZGllICIk e0ZVTkNOQU1FfTogdW5iYWxhbmNlZCBwdXNoIjsKICAgIGlmIFtbICR7c30gPT0gInNob3B0IC0i KiBdXTsgdGhlbgogICAgICAgIGV2YWwgIiR7c30iIHx8IGRpZSAiJHtGVU5DTkFNRX06IHNhbml0 eTogaW52YWxpZCBzaG9wdCBvcHRpb25zOiAke3N9IjsKICAgIGVsc2UKICAgICAgICBzZXQgKyQt IHx8IGRpZSAiJHtGVU5DTkFNRX06IHNhbml0eTogaW52YWxpZCBzaGVsbCBzZXR0aW5nczogJC0i OwogICAgICAgIHNldCAtJHtzfSB8fCBkaWUgIiR7RlVOQ05BTUV9OiBzYW5pdHk6IHVuYWJsZSB0 byByZXN0b3JlIHNhdmVkIHNoZWxsIHNldHRpbmdzOiAke3N9IjsKICAgIGZpCn0KZXNob3B0c19w dXNoICgpIAp7IAogICAgaWYgW1sgJDEgPT0gLVtzdV0gXV07IHRoZW4KICAgICAgICBlc3RhY2tf cHVzaCBlc2hvcHRzICIkKHNob3B0IC1wKSI7CiAgICAgICAgW1sgJCMgLWVxIDAgXV0gJiYgcmV0 dXJuIDA7CiAgICAgICAgc2hvcHQgIiRAIiB8fCBkaWUgIiR7RlVOQ05BTUV9OiBiYWQgb3B0aW9u cyB0byBzaG9wdDogJCoiOwogICAgZWxzZQogICAgICAgIGVzdGFja19wdXNoIGVzaG9wdHMgJC07 CiAgICAgICAgW1sgJCMgLWVxIDAgXV0gJiYgcmV0dXJuIDA7CiAgICAgICAgc2V0ICIkQCIgfHwg ZGllICIke0ZVTkNOQU1FfTogYmFkIG9wdGlvbnMgdG8gc2V0OiAkKiI7CiAgICBmaQp9CmVzdGFj a19wb3AgKCkgCnsgCiAgICBbWyAkIyAtZXEgMCB8fCAkIyAtZ3QgMiBdXSAmJiBkaWUgImVzdGFj a19wb3A6IGluY29ycmVjdCAjIG9mIGFyZ3VtZW50cyI7CiAgICBsb2NhbCBfX2VzdGFja19uYW1l PSJfX0VTVEFDS18kMV9fIjsKICAgIHNoaWZ0OwogICAgbG9jYWwgX19lc3RhY2tfcmV0dmFyPSQx OwogICAgc2hpZnQ7CiAgICBldmFsIGxvY2FsIF9fZXN0YWNrX2k9XCR7IyR7X19lc3RhY2tfbmFt ZX1cW0BcXX07CiAgICBbWyAkKCggLS1fX2VzdGFja19pICkpIC1lcSAtMSBdXSAmJiByZXR1cm4g MTsKICAgIGlmIFtbIC1uICR7X19lc3RhY2tfcmV0dmFyfSBdXTsgdGhlbgogICAgICAgIGV2YWwg JHtfX2VzdGFja19yZXR2YXJ9PVwiXCR7JHtfX2VzdGFja19uYW1lfVxbJHtfX2VzdGFja19pfVxd fVwiOwogICAgZmk7CiAgICBldmFsIHVuc2V0ICR7X19lc3RhY2tfbmFtZX1cWyR7X19lc3RhY2tf aX1cXQp9CmVzdGFja19wdXNoICgpIAp7IAogICAgW1sgJCMgLWVxIDAgXV0gJiYgZGllICJlc3Rh Y2tfcHVzaDogaW5jb3JyZWN0ICMgb2YgYXJndW1lbnRzIjsKICAgIGxvY2FsIHN0YWNrX25hbWU9 Il9fRVNUQUNLXyQxX18iOwogICAgc2hpZnQ7CiAgICBldmFsICR7c3RhY2tfbmFtZX0rPVwoIFwi XCRAXCIgXCkKfQplc3ZuX2NsZWFuICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgc2V0IC0tIC47 CiAgICBmaW5kICIkQCIgLXR5cGUgZCAtbmFtZSAnLnN2bicgLXBydW5lIC1wcmludDAgfCB4YXJn cyAtMCBybSAtcmYKfQpldW1hc2tfcG9wICgpIAp7IAogICAgbG9jYWwgczsKICAgIGVzdGFja19w b3AgZXVtYXNrIHMgfHwgZGllICIke0ZVTkNOQU1FfTogdW5iYWxhbmNlZCBwdXNoIjsKICAgIHVt YXNrICR7c30gfHwgZGllICIke0ZVTkNOQU1FfTogc2FuaXR5OiBjb3VsZCBub3QgcmVzdG9yZSB1 bWFzazogJHtzfSIKfQpldW1hc2tfcHVzaCAoKSAKeyAKICAgIGVzdGFja19wdXNoIGV1bWFzayAi JCh1bWFzaykiOwogICAgdW1hc2sgIiRAIiB8fCBkaWUgIiR7RlVOQ05BTUV9OiBiYWQgb3B0aW9u cyB0byB1bWFzazogJCoiCn0KZmluZF9tb2R1bGVfcGFyYW1zICgpIAp7IAogICAgZGVidWctcHJp bnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBtYXRjaGVkX29mZnNldD0wIG1h dGNoZWRfb3B0cz0wIHRlc3Q9IiR7QH0iIHRlbXBfdmFyIHJlc3VsdDsKICAgIGxvY2FsIGk9MCB5 PTAgej0wOwogICAgZm9yICgoaT0wOyBpPD0keyN0ZXN0fTsgaSsrKSkKICAgIGRvCiAgICAgICAg Y2FzZSAke3Rlc3Q6JHtpfToxfSBpbiAKICAgICAgICAgICAgXCgpCiAgICAgICAgICAgICAgICBt YXRjaGVkX29mZnNldFswXT0ke2l9CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIFw6KQogICAg ICAgICAgICAgICAgbWF0Y2hlZF9vcHRzPSQoKCR7bWF0Y2hlZF9vcHRzfSArIDEpKTsKICAgICAg ICAgICAgICAgIG1hdGNoZWRfb2Zmc2V0WyR7bWF0Y2hlZF9vcHRzfV09IiR7aX0iCiAgICAgICAg ICAgIDs7CiAgICAgICAgICAgIFwpKQogICAgICAgICAgICAgICAgbWF0Y2hlZF9vcHRzPSQoKCR7 bWF0Y2hlZF9vcHRzfSArIDEpKTsKICAgICAgICAgICAgICAgIG1hdGNoZWRfb2Zmc2V0WyR7bWF0 Y2hlZF9vcHRzfV09IiR7aX0iCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGRvbmU7 CiAgICBmb3IgKChpPTA7IGk8PSR7bWF0Y2hlZF9vcHRzfTsgaSsrKSkKICAgIGRvCiAgICAgICAg Y2FzZSAke2l9IGluIAogICAgICAgICAgICAwKQogICAgICAgICAgICAgICAgdGVtcHZhcj0ke3Rl c3Q6MDoke21hdGNoZWRfb2Zmc2V0WzBdfX0KICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikK ICAgICAgICAgICAgICAgIHk9JCgoJHttYXRjaGVkX29mZnNldFskKCgke2l9IC0gMSkpXX0gKyAx KSk7CiAgICAgICAgICAgICAgICB6PSQoKCR7bWF0Y2hlZF9vZmZzZXRbJHtpfV19IC0gJHttYXRj aGVkX29mZnNldFskKCgke2l9IC0gMSkpXX0pKTsKICAgICAgICAgICAgICAgIHo9JCgoJHt6fSAt IDEpKTsKICAgICAgICAgICAgICAgIHRlbXB2YXI9JHt0ZXN0OiR7eX06JHt6fX0KICAgICAgICAg ICAgOzsKICAgICAgICBlc2FjOwogICAgICAgIGNhc2UgJHtpfSBpbiAKICAgICAgICAgICAgMCkK ICAgICAgICAgICAgICAgIHJlc3VsdD0iJHtyZXN1bHR9IG1vZHVsZW5hbWU6JHt0ZW1wdmFyfSIK ICAgICAgICAgICAgOzsKICAgICAgICAgICAgMSkKICAgICAgICAgICAgICAgIHJlc3VsdD0iJHty ZXN1bHR9IGxpYmRpcjoke3RlbXB2YXJ9IgogICAgICAgICAgICA7OwogICAgICAgICAgICAyKQog ICAgICAgICAgICAgICAgcmVzdWx0PSIke3Jlc3VsdH0gc3JjZGlyOiR7dGVtcHZhcn0iCiAgICAg ICAgICAgIDs7CiAgICAgICAgICAgIDMpCiAgICAgICAgICAgICAgICByZXN1bHQ9IiR7cmVzdWx0 fSBvYmpkaXI6JHt0ZW1wdmFyfSIKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZG9u ZTsKICAgIGVjaG8gJHtyZXN1bHR9Cn0KZmluZF91bnBhY2thYmxlX2ZpbGUgKCkgCnsgCiAgICBs b2NhbCBzcmM9JDE7CiAgICBpZiBbWyAteiAke3NyY30gXV07IHRoZW4KICAgICAgICBzcmM9JHtE SVNURElSfS8ke0F9OwogICAgZWxzZQogICAgICAgIGlmIFtbIC1lICR7RElTVERJUn0vJHtzcmN9 IF1dOyB0aGVuCiAgICAgICAgICAgIHNyYz0ke0RJU1RESVJ9LyR7c3JjfTsKICAgICAgICBlbHNl CiAgICAgICAgICAgIGlmIFtbIC1lICR7UFdEfS8ke3NyY30gXV07IHRoZW4KICAgICAgICAgICAg ICAgIHNyYz0ke1BXRH0vJHtzcmN9OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBp ZiBbWyAtZSAke3NyY30gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBzcmM9JHtzcmN9Owog ICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAg ICBbWyAhIC1lICR7c3JjfSBdXSAmJiByZXR1cm4gMTsKICAgIGVjaG8gIiR7c3JjfSIKfQpnY2Mt ZnVsbHZlcnNpb24gKCkgCnsgCiAgICBfZ2NjX2Z1bGx2ZXJzaW9uICckMS4kMi4kMycgIiRAIgp9 CmdjYy1tYWpvci12ZXJzaW9uICgpIAp7IAogICAgX2djY19mdWxsdmVyc2lvbiAnJDEnICIkQCIK fQpnY2MtbWljcm8tdmVyc2lvbiAoKSAKeyAKICAgIF9nY2NfZnVsbHZlcnNpb24gJyQzJyAiJEAi Cn0KZ2NjLW1pbm9yLXZlcnNpb24gKCkgCnsgCiAgICBfZ2NjX2Z1bGx2ZXJzaW9uICckMicgIiRA Igp9CmdjYy1zcGVjcy1kaXJlY3RpdmUgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmUgc3ViZG5h bWUgc3ViZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSIkKF9nY2Mtc3BlY3MtZGlyZWN0aXZlX3Jh dyAkMSkiOwogICAgd2hpbGUgW1sgJHtkaXJlY3RpdmV9ID09IColXCgqXCkqIF1dOyBkbwogICAg ICAgIHN1YmRuYW1lPSR7ZGlyZWN0aXZlLyolXCh9OwogICAgICAgIHN1YmRuYW1lPSR7c3ViZG5h bWUvXCkqfTsKICAgICAgICBzdWJkaXJlY3RpdmU9IiQoX2djYy1zcGVjcy1kaXJlY3RpdmVfcmF3 ICR7c3ViZG5hbWV9KSI7CiAgICAgICAgZGlyZWN0aXZlPSIke2RpcmVjdGl2ZS8vXCUoJHtzdWJk bmFtZX0pLyR7c3ViZGlyZWN0aXZlfX0iOwogICAgZG9uZTsKICAgIGVjaG8gIiR7ZGlyZWN0aXZl fSI7CiAgICByZXR1cm4gMAp9CmdjYy1zcGVjcy1ub3N0cmljdCAoKSAKeyAKICAgIGxvY2FsIGRp cmVjdGl2ZTsKICAgIGRpcmVjdGl2ZT0kKGdjYy1zcGVjcy1kaXJlY3RpdmUgY2MxKTsKICAgIHJl dHVybiAkKFtbICIke2RpcmVjdGl2ZS9ceyFmc3RyaWN0LW92ZXJmbG93On0iICE9ICIke2RpcmVj dGl2ZX0iIF1dKQp9CmdjYy1zcGVjcy1ub3cgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAg ICBkaXJlY3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGxpbmtfY29tbWFuZCk7CiAgICByZXR1 cm4gJChbWyAiJHtkaXJlY3RpdmUvXHshbm9ub3c6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0pCn0K Z2NjLXNwZWNzLXBpZSAoKSAKeyAKICAgIGxvY2FsIGRpcmVjdGl2ZTsKICAgIGRpcmVjdGl2ZT0k KGdjYy1zcGVjcy1kaXJlY3RpdmUgY2MxKTsKICAgIHJldHVybiAkKFtbICIke2RpcmVjdGl2ZS9c eyFub3BpZTp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXSkKfQpnY2Mtc3BlY3MtcmVscm8gKCkgCnsg CiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZl IGxpbmtfY29tbWFuZCk7CiAgICByZXR1cm4gJChbWyAiJHtkaXJlY3RpdmUvXHshbm9yZWxybzp9 IiAhPSAiJHtkaXJlY3RpdmV9IiBdXSkKfQpnY2Mtc3BlY3Mtc3NwICgpIAp7IAogICAgbG9jYWwg ZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSQoZ2NjLXNwZWNzLWRpcmVjdGl2ZSBjYzEpOwogICAg cmV0dXJuICQoW1sgIiR7ZGlyZWN0aXZlL1x7IWZuby1zdGFjay1wcm90ZWN0b3I6fSIgIT0gIiR7 ZGlyZWN0aXZlfSIgXV0pCn0KZ2NjLXNwZWNzLXNzcC10by1hbGwgKCkgCnsgCiAgICBsb2NhbCBk aXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGNjMSk7CiAgICBy ZXR1cm4gJChbWyAiJHtkaXJlY3RpdmUvXHshZm5vLXN0YWNrLXByb3RlY3Rvci1hbGw6fSIgIT0g IiR7ZGlyZWN0aXZlfSIgXV0pCn0KZ2NjLXZlcnNpb24gKCkgCnsgCiAgICBfZ2NjX2Z1bGx2ZXJz aW9uICckMS4kMicgIiRAIgp9Cmdlbl91c3JfbGRzY3JpcHQgKCkgCnsgCiAgICBsb2NhbCBsaWIg bGliZGlyPSQoZ2V0X2xpYmRpcikgb3V0cHV0X2Zvcm1hdD0iIiBhdXRvPWZhbHNlIHN1ZmZpeD0k KGdldF9saWJuYW1lKTsKICAgIFtbIC16ICR7RUQrc2V0fSBdXSAmJiBsb2NhbCBFRD0ke0QlL30k e0VQUkVGSVh9LzsKICAgIHRjLWlzLXN0YXRpYy1vbmx5ICYmIHJldHVybjsKICAgIGRvZGlyIC91 c3IvJHtsaWJkaXJ9OwogICAgaWYgW1sgJDEgPT0gIi1hIiBdXTsgdGhlbgogICAgICAgIGF1dG89 dHJ1ZTsKICAgICAgICBzaGlmdDsKICAgICAgICBkb2RpciAvJHtsaWJkaXJ9OwogICAgZmk7CiAg ICBvdXRwdXRfZm9ybWF0PSQoJCh0Yy1nZXRDQykgJHtDRkxBR1N9ICR7TERGTEFHU30gLVdsLC0t dmVyYm9zZSAyPiYxIHwgc2VkIC1uICdzL15PVVRQVVRfRk9STUFUKCJcKFteIl0qXCkiLC4qL1wx L3AnKTsKICAgIFtbIC1uICR7b3V0cHV0X2Zvcm1hdH0gXV0gJiYgb3V0cHV0X2Zvcm1hdD0iT1VU UFVUX0ZPUk1BVCAoICR7b3V0cHV0X2Zvcm1hdH0gKSI7CiAgICBmb3IgbGliIGluICIkQCI7CiAg ICBkbwogICAgICAgIGxvY2FsIHRsaWI7CiAgICAgICAgaWYgJHthdXRvfTsgdGhlbgogICAgICAg ICAgICBsaWI9ImxpYiR7bGlifSR7c3VmZml4fSI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBb WyAtciAke0VEfS8ke2xpYmRpcn0vJHtsaWJ9IF1dIHx8IGNvbnRpbnVlOwogICAgICAgIGZpOwog ICAgICAgIGNhc2UgJHtDVEFSR0VUOi0ke0NIT1NUfX0gaW4gCiAgICAgICAgICAgICotZGFyd2lu KikKICAgICAgICAgICAgICAgIGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAgICAgICAgICB0 bGliPSQoc2Nhbm1hY2hvIC1xRiclUyNGJyAiJHtFRH0iL3Vzci8ke2xpYmRpcn0vJHtsaWJ9KTsK ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB0bGliPSQoc2Nhbm1hY2hv IC1xRiclUyNGJyAiJHtFRH0iLyR7bGliZGlyfS8ke2xpYn0pOwogICAgICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgICAgICBbWyAteiAke3RsaWJ9IF1dICYmIGRpZSAidW5hYmxlIHRvIHJlYWQg aW5zdGFsbF9uYW1lIGZyb20gJHtsaWJ9IjsKICAgICAgICAgICAgICAgIHRsaWI9JHt0bGliIyMq L307CiAgICAgICAgICAgICAgICBpZiAke2F1dG99OyB0aGVuCiAgICAgICAgICAgICAgICAgICAg bXYgIiR7RUR9Ii91c3IvJHtsaWJkaXJ9LyR7bGliJSR7c3VmZml4fX0uKiR7c3VmZml4Iy59ICIk e0VEfSIvJHtsaWJkaXJ9LyB8fCBkaWU7CiAgICAgICAgICAgICAgICAgICAgaWYgW1sgJHt0bGli fSAhPSAke2xpYiUke3N1ZmZpeH19Lioke3N1ZmZpeCMufSBdXTsgdGhlbgogICAgICAgICAgICAg ICAgICAgICAgICBtdiAiJHtFRH0iL3Vzci8ke2xpYmRpcn0vJHt0bGliJSR7c3VmZml4fX0uKiR7 c3VmZml4Iy59ICIke0VEfSIvJHtsaWJkaXJ9LyB8fCBkaWU7CiAgICAgICAgICAgICAgICAgICAg Zmk7CiAgICAgICAgICAgICAgICAgICAgcm0gLWYgIiR7RUR9Ii8ke2xpYmRpcn0vJHtsaWJ9Owog ICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBpZiBbWyAhIC13ICIke0VEfS8ke2xp YmRpcn0vJHt0bGlifSIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBjaG1vZCB1K3cgIiR7 RUR9JHtsaWJkaXJ9LyR7dGxpYn0iOwogICAgICAgICAgICAgICAgICAgIGxvY2FsIG5vd3JpdGU9 eWVzOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBpbnN0YWxsX25hbWVfdG9v bCAtaWQgIiR7RVBSRUZJWH0iLyR7bGliZGlyfS8ke3RsaWJ9ICIke0VEfSIvJHtsaWJkaXJ9LyR7 dGxpYn0gfHwgZGllICJpbnN0YWxsX25hbWVfdG9vbCBmYWlsZWQiOwogICAgICAgICAgICAgICAg W1sgLW4gJHtub3dyaXRlfSBdXSAmJiBjaG1vZCB1LXcgIiR7RUR9JHtsaWJkaXJ9LyR7dGxpYn0i OwogICAgICAgICAgICAgICAgcHVzaGQgIiR7RUR9L3Vzci8ke2xpYmRpcn0iID4gL2Rldi9udWxs OwogICAgICAgICAgICAgICAgbG4gLXNuZiAiLi4vLi4vJHtsaWJkaXJ9LyR7dGxpYn0iICIke2xp Yn0iOwogICAgICAgICAgICAgICAgcG9wZCA+IC9kZXYvbnVsbAogICAgICAgICAgICA7OwogICAg ICAgICAgICAqLWFpeCogfCAqLWlyaXgqIHwgKjY0Ki1ocHV4KiB8ICotaW50ZXJpeCogfCAqLXdp bm50KikKICAgICAgICAgICAgICAgIGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAgICAgICAg ICBtdiAiJHtFRH0iL3Vzci8ke2xpYmRpcn0vJHtsaWJ9KiAiJHtFRH0iLyR7bGliZGlyfS8gfHwg ZGllOwogICAgICAgICAgICAgICAgICAgIHRsaWI9JChyZWFkbGluayAiJHtFRH0iLyR7bGliZGly fS8ke2xpYn0pOwogICAgICAgICAgICAgICAgICAgIHRsaWI9JHt0bGliIyMqL307CiAgICAgICAg ICAgICAgICAgICAgaWYgW1sgLXogJHt0bGlifSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAg ICAgICB0bGliPSR7bGlifTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg ICAgICAgICAgIHJtIC1mICIke0VEfSIvJHtsaWJkaXJ9LyR7bGlifTsKICAgICAgICAgICAgICAg ICAgICBmaTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB0bGliPSR7 bGlifTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgcHVzaGQgIiR7RUR9L3Vz ci8ke2xpYmRpcn0iID4gL2Rldi9udWxsOwogICAgICAgICAgICAgICAgbG4gLXNuZiAiLi4vLi4v JHtsaWJkaXJ9LyR7dGxpYn0iICIke2xpYn0iOwogICAgICAgICAgICAgICAgcG9wZCA+IC9kZXYv bnVsbAogICAgICAgICAgICA7OwogICAgICAgICAgICBocHBhKi1ocHV4KikKICAgICAgICAgICAg ICAgIGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAgICAgICAgICB0bGliPSQoY2hhdHIgIiR7 RUR9Ii91c3IvJHtsaWJkaXJ9LyR7bGlifSB8IHNlZCAtbiAnL2ludGVybmFsIG5hbWU6L3tuO3Mv XiAqLy87cDtxfScpOwogICAgICAgICAgICAgICAgICAgIFtbIC16ICR7dGxpYn0gXV0gJiYgdGxp Yj0ke2xpYn07CiAgICAgICAgICAgICAgICAgICAgdGxpYj0ke3RsaWIjIyovfTsKICAgICAgICAg ICAgICAgICAgICBtdiAiJHtFRH0iL3Vzci8ke2xpYmRpcn0vJHtsaWJ9KiAiJHtFRH0iLyR7bGli ZGlyfS8gfHwgZGllOwogICAgICAgICAgICAgICAgICAgIGlmIFtbICR7dGxpYn0gIT0gJHtsaWJ9 KiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBtdiAiJHtFRH0iL3Vzci8ke2xpYmRp cn0vJHt0bGlifSogIiR7RUR9Ii8ke2xpYmRpcn0vIHx8IGRpZTsKICAgICAgICAgICAgICAgICAg ICBmaTsKICAgICAgICAgICAgICAgICAgICBbWyAke3RsaWJ9ICE9ICR7bGlifSBdXSAmJiBybSAt ZiAiJHtFRH0iLyR7bGliZGlyfS8ke2xpYn07CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg ICAgICAgICAgICAgdGxpYj0kKGNoYXRyICIke0VEfSIvJHtsaWJkaXJ9LyR7bGlifSB8IHNlZCAt biAnL2ludGVybmFsIG5hbWU6L3tuO3MvXiAqLy87cDtxfScpOwogICAgICAgICAgICAgICAgICAg IFtbIC16ICR7dGxpYn0gXV0gJiYgdGxpYj0ke2xpYn07CiAgICAgICAgICAgICAgICAgICAgdGxp Yj0ke3RsaWIjIyovfTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgcHVzaGQg IiR7RUR9Ii91c3IvJHtsaWJkaXJ9ID4gL2Rldi9udWxsOwogICAgICAgICAgICAgICAgbG4gLXNu ZiAiLi4vLi4vJHtsaWJkaXJ9LyR7dGxpYn0iICIke2xpYn0iOwogICAgICAgICAgICAgICAgW1sg JHt0bGlifSAhPSAke2xpYn0gXV0gJiYgbG4gLXNuZiAiLi4vLi4vJHtsaWJkaXJ9LyR7dGxpYn0i ICIke3RsaWJ9IjsKICAgICAgICAgICAgICAgIHBvcGQgPiAvZGV2L251bGwKICAgICAgICAgICAg OzsKICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgIGlmICR7YXV0b307IHRoZW4KICAgICAg ICAgICAgICAgICAgICB0bGliPSQoc2NhbmVsZiAtcUYnJVMjRicgIiR7RUR9Ii91c3IvJHtsaWJk aXJ9LyR7bGlifSk7CiAgICAgICAgICAgICAgICAgICAgW1sgLXogJHt0bGlifSBdXSAmJiBkaWUg InVuYWJsZSB0byByZWFkIFNPTkFNRSBmcm9tICR7bGlifSI7CiAgICAgICAgICAgICAgICAgICAg bXYgIiR7RUR9Ii91c3IvJHtsaWJkaXJ9LyR7bGlifSogIiR7RUR9Ii8ke2xpYmRpcn0vIHx8IGRp ZTsKICAgICAgICAgICAgICAgICAgICBpZiBbWyAke3RsaWJ9ICE9ICR7bGlifSogXV07IHRoZW4K ICAgICAgICAgICAgICAgICAgICAgICAgbXYgIiR7RUR9Ii91c3IvJHtsaWJkaXJ9LyR7dGxpYn0q ICIke0VEfSIvJHtsaWJkaXJ9LyB8fCBkaWU7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAg ICAgICAgICAgICAgICAgcm0gLWYgIiR7RUR9Ii8ke2xpYmRpcn0vJHtsaWJ9OwogICAgICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHRsaWI9JHtsaWJ9OwogICAgICAgICAgICAg ICAgZmk7CiAgICAgICAgICAgICAgICBjYXQgPiAiJHtFRH0vdXNyLyR7bGliZGlyfS8ke2xpYn0i ICA8PC1FTkRfTERTQ1JJUFQKLyogR05VIGxkIHNjcmlwdAogICBTaW5jZSBHZW50b28gaGFzIGNy aXRpY2FsIGR5bmFtaWMgbGlicmFyaWVzIGluIC9saWIsIGFuZCB0aGUgc3RhdGljIHZlcnNpb25z CiAgIGluIC91c3IvbGliLCB3ZSBuZWVkIHRvIGhhdmUgYSAiZmFrZSIgZHluYW1pYyBsaWIgaW4g L3Vzci9saWIsIG90aGVyd2lzZSB3ZQogICBydW4gaW50byBsaW5raW5nIHByb2JsZW1zLiAgVGhp cyAiZmFrZSIgZHluYW1pYyBsaWIgaXMgYSBsaW5rZXIgc2NyaXB0IHRoYXQKICAgcmVkaXJlY3Rz IHRoZSBsaW5rZXIgdG8gdGhlIHJlYWwgbGliLiAgQW5kIHllcywgdGhpcyB3b3JrcyBpbiB0aGUg Y3Jvc3MtCiAgIGNvbXBpbGluZyBzY2VuYXJpbyBhcyB0aGUgc3lzcm9vdC1lZCBsaW5rZXIgd2ls bCBwcmVwZW5kIHRoZSByZWFsIHBhdGguCgogICBTZWUgYnVnIGh0dHA6Ly9idWdzLmdlbnRvby5v cmcvNDQxMSBmb3IgbW9yZSBpbmZvLgogKi8KJHtvdXRwdXRfZm9ybWF0fQpHUk9VUCAoICR7RVBS RUZJWH0vJHtsaWJkaXJ9LyR7dGxpYn0gKQpFTkRfTERTQ1JJUFQKCiAgICAgICAgICAgIDs7CiAg ICAgICAgZXNhYwogICAgICAgIGZwZXJtcyBhK3ggIi91c3IvJHtsaWJkaXJ9LyR7bGlifSIgfHwg ZGllICJjb3VsZCBub3QgY2hhbmdlIHBlcm1zIG9uICR7bGlifSI7CiAgICBkb25lCn0KZ2VuZXJh dGVfbW9kdWxlc2QgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAk KjsKICAgIGxvY2FsIGN1cnJtX3BhdGggY3Vycm0gY3Vycm1fdCB0IG15SUZTIG15VkFSOwogICAg bG9jYWwgbW9kdWxlX2RvY3MgbW9kdWxlX2VuYWJsZWQgbW9kdWxlX2FsaWFzZXMgbW9kdWxlX2Fk ZGl0aW9ucyBtb2R1bGVfZXhhbXBsZXMgbW9kdWxlX21vZGluZm8gbW9kdWxlX29wdHM7CiAgICBm b3IgY3Vycm1fcGF0aCBpbiAke0B9OwogICAgZG8KICAgICAgICBjdXJybT0ke2N1cnJtX3BhdGgv LypcL307CiAgICAgICAgY3Vycm09JChlY2hvICR7Y3Vycm19IHwgdHIgJ1s6bG93ZXI6XScgJ1s6 dXBwZXI6XScpOwogICAgICAgIGN1cnJtX3Q9JHtjdXJybX07CiAgICAgICAgd2hpbGUgW1sgLXog JHtjdXJybV90Ly8qLSp9IF1dOyBkbwogICAgICAgICAgICBjdXJybV90PSR7Y3Vycm1fdC8tL199 OwogICAgICAgIGRvbmU7CiAgICAgICAgbW9kdWxlX2RvY3M9IiQoZXZhbCBlY2hvIFwke01PRFVM RVNEXyR7Y3Vycm1fdH1fRE9DU30pIjsKICAgICAgICBtb2R1bGVfZW5hYmxlZD0iJChldmFsIGVj aG8gXCR7TU9EVUxFU0RfJHtjdXJybV90fV9FTkFCTEVEfSkiOwogICAgICAgIG1vZHVsZV9hbGlh c2VzPSIkKGV2YWwgZWNobyBcJHsjTU9EVUxFU0RfJHtjdXJybV90fV9BTElBU0VTWypdfSkiOwog ICAgICAgIG1vZHVsZV9hZGRpdGlvbnM9IiQoZXZhbCBlY2hvIFwkeyNNT0RVTEVTRF8ke2N1cnJt X3R9X0FERElUSU9OU1sqXX0pIjsKICAgICAgICBtb2R1bGVfZXhhbXBsZXM9IiQoZXZhbCBlY2hv IFwkeyNNT0RVTEVTRF8ke2N1cnJtX3R9X0VYQU1QTEVTWypdfSkiOwogICAgICAgIFtbICR7bW9k dWxlX2FsaWFzZXN9IC1lcSAwIF1dICYmIHVuc2V0IG1vZHVsZV9hbGlhc2VzOwogICAgICAgIFtb ICR7bW9kdWxlX2FkZGl0aW9uc30gLWVxIDAgXV0gJiYgdW5zZXQgbW9kdWxlX2FkZGl0aW9uczsK ICAgICAgICBbWyAke21vZHVsZV9leGFtcGxlc30gLWVxIDAgXV0gJiYgdW5zZXQgbW9kdWxlX2V4 YW1wbGVzOwogICAgICAgIFtbICR7bW9kdWxlX2VuYWJsZWR9ID09IG5vIF1dICYmIHJldHVybiAw OwogICAgICAgIGZvciB0IGluICR7IW1vZHVsZV8qfTsKICAgICAgICBkbwogICAgICAgICAgICBb WyAteiAkeyF0fSBdXSAmJiB1bnNldCAke3R9OwogICAgICAgIGRvbmU7CiAgICAgICAgW1sgLXog JHshbW9kdWxlXyp9IF1dICYmIHJldHVybiAwOwogICAgICAgIG1vZHVsZV9tb2RpbmZvPSIkKG1v ZGluZm8gLXAgJHtjdXJybV9wYXRofS4ke0tWX09CSn0pIjsKICAgICAgICBtb2R1bGVfY29uZmln PSIke1R9L21vZHVsZXNkLSR7Y3Vycm19IjsKICAgICAgICBlYmVnaW4gIlByZXBhcmluZyBmaWxl IGZvciBtb2R1bGVzLmQiOwogICAgICAgIGVjaG8gIiMgbW9kdWxlcy5kIGNvbmZpZ3VyYXRpb24g ZmlsZSBmb3IgJHtjdXJybX0iID4+ICIke21vZHVsZV9jb25maWd9IjsKICAgICAgICBbWyAtbiAk e21vZHVsZV9kb2NzfSBdXSAmJiBlY2hvICIjIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBy ZWFkOiIgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgIGZvciB0IGluICR7bW9kdWxlX2Rv Y3N9OwogICAgICAgIGRvCiAgICAgICAgICAgIGVjaG8gIiMgICAgJHt0Ly8qXC99IiA+PiAiJHtt b2R1bGVfY29uZmlnfSI7CiAgICAgICAgZG9uZTsKICAgICAgICBlY2hvID4+ICIke21vZHVsZV9j b25maWd9IjsKICAgICAgICBpZiBbWyAke21vZHVsZV9hbGlhc2VzfSAtZ3QgMCBdXTsgdGhlbgog ICAgICAgICAgICBlY2hvICIjIEludGVybmFsIEFsaWFzZXMgLSBEbyBub3QgZWRpdCIgPj4gIiR7 bW9kdWxlX2NvbmZpZ30iOwogICAgICAgICAgICBlY2hvICIjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSIgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgICAgICBmb3IgKCh0PTA7 IHQ8JHttb2R1bGVfYWxpYXNlc307IHQrKykpCiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAg ICBlY2hvICJhbGlhcyAkKGV2YWwgZWNobyBcJHtNT0RVTEVTRF8ke2N1cnJtfV9BTElBU0VTWyR0 XX0pIiA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAg IGVjaG8gJycgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgIGZpOwogICAgICAgIGlmIFtb IC1uICR7bW9kdWxlX21vZGluZm99IF1dOyB0aGVuCiAgICAgICAgICAgIGVjaG8gPj4gIiR7bW9k dWxlX2NvbmZpZ30iOwogICAgICAgICAgICBlY2hvICIjIENvbmZpZ3VyYWJsZSBtb2R1bGUgcGFy YW1ldGVycyIgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgICAgICBlY2hvICIjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAg ICAgICBteUlGUz0iJHtJRlN9IjsKICAgICAgICAgICAgSUZTPSIkKGVjaG8gLWVuICJcblxiIiki OwogICAgICAgICAgICBmb3IgdCBpbiAke21vZHVsZV9tb2RpbmZvfTsKICAgICAgICAgICAgZG8K ICAgICAgICAgICAgICAgIG15VkFSPSIkKGVjaG8gJHt0Iyo6fSB8IGdyZXAgLWUgIiBbMC05XVsg PV0iIHwgc2VkICJzOi4qXChbMDFdWz0gXVwpLio6XDE6IikiOwogICAgICAgICAgICAgICAgaWYg W1sgLW4gJHtteVZBUn0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBtb2R1bGVfb3B0cz0i JHttb2R1bGVfb3B0c30gJHt0JSU6Kn06JHtteVZBUn0iOwogICAgICAgICAgICAgICAgZmk7CiAg ICAgICAgICAgICAgICBlY2hvIC1lICIjICR7dCUlOip9Olx0JHt0Iyo6fSIgPj4gIiR7bW9kdWxl X2NvbmZpZ30iOwogICAgICAgICAgICBkb25lOwogICAgICAgICAgICBJRlM9IiR7bXlJRlN9IjsK ICAgICAgICAgICAgZWNobyAnJyA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAgICAgZmk7CiAg ICAgICAgaWYgW1sgJChldmFsIGVjaG8gXCR7TU9EVUxFU0RfJHtjdXJybX1fQUxJQVNFU1swXX0p ID09IGd1ZXNzIF1dOyB0aGVuCiAgICAgICAgICAgIGlmIFtbIC1uICR7bW9kdWxlX29wdHN9IF1d OyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICIjIEZvciBFeGFtcGxlLi4uIiA+PiAiJHttb2R1 bGVfY29uZmlnfSI7CiAgICAgICAgICAgICAgICBlY2hvICIjIC0tLS0tLS0tLS0tLS0tIiA+PiAi JHttb2R1bGVfY29uZmlnfSI7CiAgICAgICAgICAgICAgICBmb3IgdCBpbiAke21vZHVsZV9vcHRz fTsKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgZWNobyAiIyBvcHRpb25z ICR7Y3Vycm19ICR7dC8vOip9PSR7dC8vKjp9IiA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAg ICAgICAgICAgICBkb25lOwogICAgICAgICAgICAgICAgZWNobyAnJyA+PiAiJHttb2R1bGVfY29u ZmlnfSI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgJHtt b2R1bGVfZXhhbXBsZXN9IC1ndCAwIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICIjIEZv ciBFeGFtcGxlLi4uIiA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAgICAgICAgICAgICBlY2hv ICIjIC0tLS0tLS0tLS0tLS0tIiA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAgICAgICAgICAg ICBmb3IgKCh0PTA7IHQ8JHttb2R1bGVfZXhhbXBsZXN9OyB0KyspKQogICAgICAgICAgICAgICAg ZG8KICAgICAgICAgICAgICAgICAgICBlY2hvICJvcHRpb25zICQoZXZhbCBlY2hvIFwke01PRFVM RVNEXyR7Y3Vycm19X0VYQU1QTEVTWyR0XX0pIiA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAg ICAgICAgICAgICBkb25lOwogICAgICAgICAgICAgICAgZWNobyAnJyA+PiAiJHttb2R1bGVfY29u ZmlnfSI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgICAgIGlmIFtbICR7bW9kdWxl X2FkZGl0aW9uc30gLWd0IDAgXV07IHRoZW4KICAgICAgICAgICAgZm9yICgodD0wOyB0PCR7bW9k dWxlX2FkZGl0aW9uc307IHQrKykpCiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBlY2hv ICIkKGV2YWwgZWNobyBcJHtNT0RVTEVTRF8ke2N1cnJtfV9BRERJVElPTlNbJHRdfSkiID4+ICIk e21vZHVsZV9jb25maWd9IjsKICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAgZWNobyAnJyA+ PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAgICAgZmk7CiAgICAgICAgaWYga2VybmVsX2lzIGdl IDIgNjsgdGhlbgogICAgICAgICAgICBpbnNpbnRvIC9ldGMvbW9kcHJvYmUuZDsKICAgICAgICBl bHNlCiAgICAgICAgICAgIGluc2ludG8gL2V0Yy9tb2R1bGVzLmQ7CiAgICAgICAgZmk7CiAgICAg ICAgbmV3aW5zICIke21vZHVsZV9jb25maWd9IiAiJHtjdXJybV9wYXRoLy8qXC99LmNvbmYiOwog ICAgICAgIFtbIC1uICR7bW9kdWxlX2RvY3N9IF1dICYmIGRvZG9jICR7bW9kdWxlX2RvY3N9Owog ICAgZG9uZTsKICAgIGVlbmQgMDsKICAgIHJldHVybiAwCn0KZ2V0LUtFUk5FTF9DQyAoKSAKeyAK ICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgaWYgW1sgLW4gJHtL RVJORUxfQ0N9IF1dOyB0aGVuCiAgICAgICAgZWNobyAiJHtLRVJORUxfQ0N9IjsKICAgICAgICBy ZXR1cm47CiAgICBmaTsKICAgIGxvY2FsIGtlcm5lbF9jYzsKICAgIGlmIFsgLW4gIiR7S0VSTkVM X0FCSX0iIF07IHRoZW4KICAgICAgICBrZXJuZWxfY2M9IiQodGMtZ2V0Q0MgJChBQkk9JHtLRVJO RUxfQUJJfSBnZXRfYWJpX0NIT1NUKSkiOwogICAgZWxzZQogICAgICAgIGtlcm5lbF9jYz0kKHRj LWdldENDKTsKICAgIGZpOwogICAgZWNobyAiJHtrZXJuZWxfY2N9Igp9CmdldF9hYmlfQ0ZMQUdT ICgpIAp7IAogICAgZ2V0X2FiaV92YXIgQ0ZMQUdTICIkQCIKfQpnZXRfYWJpX0NIT1NUICgpIAp7 IAogICAgZ2V0X2FiaV92YXIgQ0hPU1QgIiRAIgp9CmdldF9hYmlfQ1RBUkdFVCAoKSAKeyAKICAg IGdldF9hYmlfdmFyIENUQVJHRVQgIiRAIgp9CmdldF9hYmlfRkFLRV9UQVJHRVRTICgpIAp7IAog ICAgZ2V0X2FiaV92YXIgRkFLRV9UQVJHRVRTICIkQCIKfQpnZXRfYWJpX0xERkxBR1MgKCkgCnsg CiAgICBnZXRfYWJpX3ZhciBMREZMQUdTICIkQCIKfQpnZXRfYWJpX0xJQkRJUiAoKSAKeyAKICAg IGdldF9hYmlfdmFyIExJQkRJUiAiJEAiCn0KZ2V0X2FiaV92YXIgKCkgCnsgCiAgICBsb2NhbCBm bGFnPSQxOwogICAgbG9jYWwgYWJpPSR7MjotJHtBQkk6LSR7REVGQVVMVF9BQkk6LWRlZmF1bHR9 fX07CiAgICBsb2NhbCB2YXI9IiR7ZmxhZ31fJHthYml9IjsKICAgIGVjaG8gJHshdmFyfQp9Cmdl dF9hZnRlcl9tYWpvcl92ZXJzaW9uICgpIAp7IAogICAgZWNobyAkKGdldF92ZXJzaW9uX2NvbXBv bmVudF9yYW5nZSAyLSAiJHsxOi0ke1BWfX0iKQp9CmdldF9hbGxfYWJpcyAoKSAKeyAKICAgIGxv Y2FsIG9yZGVyPSIiOwogICAgaWYgW1sgLXogJHtNVUxUSUxJQl9BQklTfSBdXTsgdGhlbgogICAg ICAgIGVjaG8gImRlZmF1bHQiOwogICAgICAgIHJldHVybiAwOwogICAgZmk7CiAgICBmb3IgeCBp biAke01VTFRJTElCX0FCSVN9OwogICAgZG8KICAgICAgICBpZiBbWyAke3h9ICE9ICR7REVGQVVM VF9BQkl9IF1dOyB0aGVuCiAgICAgICAgICAgIG9yZGVyPSIke29yZGVyOiske29yZGVyfSB9JHt4 fSI7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgb3JkZXI9IiR7b3JkZXI6KyR7b3JkZXJ9IH0k e0RFRkFVTFRfQUJJfSI7CiAgICBlY2hvICR7b3JkZXJ9OwogICAgcmV0dXJuIDAKfQpnZXRfYWxs X2xpYmRpcnMgKCkgCnsgCiAgICBsb2NhbCBsaWJkaXJzOwogICAgbG9jYWwgYWJpOwogICAgbG9j YWwgZGlyOwogICAgZm9yIGFiaSBpbiAke01VTFRJTElCX0FCSVN9OwogICAgZG8KICAgICAgICBs aWJkaXJzKz0iICQoZ2V0X2FiaV9MSUJESVIgJHthYml9KSI7CiAgICBkb25lOwogICAgW1sgIiAk e2xpYmRpcnN9ICIgIT0gKiIgbGliICIqIF1dICYmIGxpYmRpcnMrPSIgbGliIjsKICAgIGVjaG8g IiR7bGliZGlyc30iCn0KZ2V0X2FsbF92ZXJzaW9uX2NvbXBvbmVudHMgKCkgCnsgCiAgICBlc2hv cHRzX3B1c2ggLXMgZXh0Z2xvYjsKICAgIGxvY2FsIHZlcl9zdHI9JHsxOi0ke1BWfX0gcmVzdWx0 OwogICAgcmVzdWx0PSgpOwogICAgaWYgW1sgJHtWRVJTSU9OQVRPUl9DQUNIRV9WRVJfU1RSfSA9 PSAke3Zlcl9zdHJ9IF1dOyB0aGVuCiAgICAgICAgZWNobyAke1ZFUlNJT05BVE9SX0NBQ0hFX1JF U1VMVH07CiAgICAgICAgZXNob3B0c19wb3A7CiAgICAgICAgcmV0dXJuOwogICAgZmk7CiAgICBl eHBvcnQgVkVSU0lPTkFUT1JfQ0FDSEVfVkVSX1NUUj0ke3Zlcl9zdHJ9OwogICAgd2hpbGUgW1sg LW4gJHZlcl9zdHIgXV07IGRvCiAgICAgICAgY2FzZSAiJHt2ZXJfc3RyOjoxfSIgaW4gCiAgICAg ICAgICAgIFtbOmRpZ2l0Ol1dKQogICAgICAgICAgICAgICAgcmVzdWx0Kz0oIiR7dmVyX3N0ciUl W15bOmRpZ2l0Ol1dKn0iKTsKICAgICAgICAgICAgICAgIHZlcl9zdHI9JHt2ZXJfc3RyIyMrKFtb OmRpZ2l0Ol1dKX0KICAgICAgICAgICAgOzsKICAgICAgICAgICAgWy1fLl0pCiAgICAgICAgICAg ICAgICByZXN1bHQrPSgiJHt2ZXJfc3RyOjoxfSIpOwogICAgICAgICAgICAgICAgdmVyX3N0cj0k e3Zlcl9zdHI6MX0KICAgICAgICAgICAgOzsKICAgICAgICAgICAgW1s6YWxwaGE6XV0pCiAgICAg ICAgICAgICAgICBsb2NhbCBub3RfbWF0Y2g9JHt2ZXJfc3RyIyMrKFtbOmFscGhhOl1dKSooW1s6 ZGlnaXQ6XV0pfTsKICAgICAgICAgICAgICAgIHJlc3VsdCs9KCIke3Zlcl9zdHI6OiR7I3Zlcl9z dHJ9IC0gJHsjbm90X21hdGNofX0iKTsKICAgICAgICAgICAgICAgIHZlcl9zdHI9JHtub3RfbWF0 Y2h9CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICByZXN1bHQr PSgiJHt2ZXJfc3RyOjoxfSIpOwogICAgICAgICAgICAgICAgdmVyX3N0cj0ke3Zlcl9zdHI6MX0K ICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZG9uZTsKICAgIGV4cG9ydCBWRVJTSU9O QVRPUl9DQUNIRV9SRVNVTFQ9JHtyZXN1bHRbKl19OwogICAgZWNobyAke3Jlc3VsdFtAXX07CiAg ICBlc2hvcHRzX3BvcAp9CmdldF9ibWFrZSAoKSAKeyAKICAgIGlmIFtbICR7VVNFUkxBTkR9ID09 ICpCU0QgXV07IHRoZW4KICAgICAgICBlY2hvIG1ha2U7CiAgICBlbHNlCiAgICAgICAgaWYgW1sg JHtVU0VSTEFORH0gPT0gIkRhcndpbiIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyBic2RtYWtl OwogICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyBwbWFrZTsKICAgICAgICBmaTsKICAgIGZp Cn0KZ2V0X2luc3RhbGxfYWJpcyAoKSAKeyAKICAgIGxvY2FsIG9yZGVyPSIiOwogICAgaWYgW1sg LXogJHtNVUxUSUxJQl9BQklTfSBdXTsgdGhlbgogICAgICAgIGVjaG8gImRlZmF1bHQiOwogICAg ICAgIHJldHVybiAwOwogICAgZmk7CiAgICBpZiBbWyAke0VNVUxUSUxJQl9QS0d9ID09ICJ0cnVl IiBdXTsgdGhlbgogICAgICAgIGZvciB4IGluICR7TVVMVElMSUJfQUJJU307CiAgICAgICAgZG8K ICAgICAgICAgICAgaWYgW1sgJHt4fSAhPSAiJHtERUZBVUxUX0FCSX0iIF1dOyB0aGVuCiAgICAg ICAgICAgICAgICBoYXMgJHt4fSAke0FCSV9ERU5ZfSB8fCBvcmRlcj0iJHtvcmRlcn0gJHt4fSI7 CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICAgICAgaGFzICR7REVGQVVMVF9BQkl9 ICR7QUJJX0RFTll9IHx8IG9yZGVyPSIke29yZGVyfSAke0RFRkFVTFRfQUJJfSI7CiAgICAgICAg aWYgW1sgLW4gJHtBQklfQUxMT1d9IF1dOyB0aGVuCiAgICAgICAgICAgIGxvY2FsIG9yZGVyYT0i IjsKICAgICAgICAgICAgZm9yIHggaW4gJHtvcmRlcn07CiAgICAgICAgICAgIGRvCiAgICAgICAg ICAgICAgICBpZiBoYXMgJHt4fSAke0FCSV9BTExPV307IHRoZW4KICAgICAgICAgICAgICAgICAg ICBvcmRlcmE9IiR7b3JkZXJhfSAke3h9IjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAg ICBkb25lOwogICAgICAgICAgICBvcmRlcj0ke29yZGVyYX07CiAgICAgICAgZmk7CiAgICBlbHNl CiAgICAgICAgb3JkZXI9JHtERUZBVUxUX0FCSX07CiAgICBmaTsKICAgIGlmIFtbIC16ICR7b3Jk ZXJ9IF1dOyB0aGVuCiAgICAgICAgZGllICJUaGUgQUJJIGxpc3QgaXMgZW1wdHkuICBBcmUgeW91 IHVzaW5nIGEgcHJvcGVyIG11bHRpbGliIHByb2ZpbGU/ICBQZXJoYXBzIHlvdXIgVVNFIGZsYWdz IG9yIE1VTFRJTElCX0FCSVMgYXJlIHRvbyByZXN0cmljdGl2ZSBmb3IgdGhpcyBwYWNrYWdlLiI7 CiAgICBmaTsKICAgIGVjaG8gJHtvcmRlcn07CiAgICByZXR1cm4gMAp9CmdldF9sYXN0X3ZlcnNp b25fY29tcG9uZW50X2luZGV4ICgpIAp7IAogICAgZWNobyAkKCgkKGdldF92ZXJzaW9uX2NvbXBv bmVudF9jb3VudCAiJHsxOi0ke1BWfX0iICkgLSAxKSkKfQpnZXRfbGliZGlyICgpIAp7IAogICAg bG9jYWwgQ09ORl9MSUJESVI7CiAgICBpZiBbIC1uICIke0NPTkZfTElCRElSX09WRVJSSURFfSIg XTsgdGhlbgogICAgICAgIGVjaG8gJHtDT05GX0xJQkRJUl9PVkVSUklERX07CiAgICBlbHNlCiAg ICAgICAgZ2V0X2FiaV9MSUJESVI7CiAgICBmaQp9CmdldF9saWJuYW1lICgpIAp7IAogICAgbG9j YWwgbGlibmFtZTsKICAgIGxvY2FsIHZlcj0kMTsKICAgIGNhc2UgJHtDSE9TVH0gaW4gCiAgICAg ICAgKi1jeWd3aW4gfCBtaW5ndyogfCAqLW1pbmd3KikKICAgICAgICAgICAgbGlibmFtZT0iZGxs IgogICAgICAgIDs7CiAgICAgICAgKi1kYXJ3aW4qKQogICAgICAgICAgICBsaWJuYW1lPSJkeWxp YiIKICAgICAgICA7OwogICAgICAgICotbWludCopCiAgICAgICAgICAgIGxpYm5hbWU9ImlycmVs ZXZhbnQiCiAgICAgICAgOzsKICAgICAgICBocHBhKi1ocHV4KikKICAgICAgICAgICAgbGlibmFt ZT0ic2wiCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBsaWJuYW1lPSJzbyIKICAg ICAgICA7OwogICAgZXNhYzsKICAgIGlmIFtbIC16ICQqIF1dOyB0aGVuCiAgICAgICAgZWNobyAi LiR7bGlibmFtZX0iOwogICAgZWxzZQogICAgICAgIGZvciB2ZXIgaW4gIiRAIjsKICAgICAgICBk bwogICAgICAgICAgICBjYXNlICR7Q0hPU1R9IGluIAogICAgICAgICAgICAgICAgKi1kYXJ3aW4q KQogICAgICAgICAgICAgICAgICAgIGVjaG8gIi4ke3Zlcn0uJHtsaWJuYW1lfSIKICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICAqLW1pbnQqKQogICAgICAgICAgICAgICAgICAgIGVj aG8gIi4ke2xpYm5hbWV9IgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICopCiAg ICAgICAgICAgICAgICAgICAgZWNobyAiLiR7bGlibmFtZX0uJHt2ZXJ9IgogICAgICAgICAgICAg ICAgOzsKICAgICAgICAgICAgZXNhYzsKICAgICAgICBkb25lOwogICAgZmkKfQpnZXRfbG9jYWx2 ZXJzaW9uICgpIAp7IAogICAgbG9jYWwgbHZfbGlzdCBpIHg7CiAgICBmb3IgaSBpbiAkKGxzICR7 MX0vbG9jYWx2ZXJzaW9uKiAyPi9kZXYvbnVsbCk7CiAgICBkbwogICAgICAgIFtbIC1uICR7aS8v Kn4qfSBdXSAmJiBsdl9saXN0PSIke2x2X2xpc3R9ICR7aX0iOwogICAgZG9uZTsKICAgIGZvciBp IGluICR7bHZfbGlzdH07CiAgICBkbwogICAgICAgIHg9IiR7eH0kKDwke2l9KSI7CiAgICBkb25l OwogICAgeD0ke3gvIC99OwogICAgZWNobyAke3h9Cn0KZ2V0X21ham9yX3ZlcnNpb24gKCkgCnsg CiAgICBsb2NhbCBjPSgkKGdldF9hbGxfdmVyc2lvbl9jb21wb25lbnRzICIkezE6LSR7UFZ9fSIp KTsKICAgIGVjaG8gJHtjWzBdfQp9CmdldF9tYWtlZmlsZV9leHRyYWN0X2Z1bmN0aW9uICgpIAp7 IAogICAgbG9jYWwgYT0nJyBiPScnIG1rZnVuYz0nZ2V0ZmlsZXZhcic7CiAgICBhPSIkKGdldGZp bGV2YXIgVkVSU0lPTiAke0tFUk5FTF9NQUtFRklMRX0pIjsKICAgIGI9IiQoZ2V0ZmlsZXZhcl9u b2V4ZWMgVkVSU0lPTiAke0tFUk5FTF9NQUtFRklMRX0pIjsKICAgIFtbICIke2F9IiAhPSAiJHti fSIgXV0gJiYgbWtmdW5jPSdnZXRmaWxldmFyX25vZXhlYyc7CiAgICBlY2hvICIke21rZnVuY30i Cn0KZ2V0X21vZG5hbWUgKCkgCnsgCiAgICBsb2NhbCBtb2RuYW1lOwogICAgbG9jYWwgdmVyPSQx OwogICAgY2FzZSAke0NIT1NUfSBpbiAKICAgICAgICAqLWRhcndpbiopCiAgICAgICAgICAgIG1v ZG5hbWU9ImJ1bmRsZSIKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIG1vZG5hbWU9 InNvIgogICAgICAgIDs7CiAgICBlc2FjOwogICAgZWNobyAiLiR7bW9kbmFtZX0iCn0KZ2V0X21v dW50cyAoKSAKeyAKICAgIGxvY2FsIHBvaW50PSBub2RlPSBmcz0gb3B0cz0gZm9vPTsKICAgIGlm IFtbICQodW5hbWUgLXMpID09ICJMaW51eCIgXV07IHRoZW4KICAgICAgICB3aGlsZSByZWFkIG5v ZGUgcG9pbnQgZnMgb3B0cyBmb287IGRvCiAgICAgICAgICAgIGVjaG8gIiR7cG9pbnR9ICR7bm9k ZX0gJHtmc30gJHtvcHRzfSI7CiAgICAgICAgZG9uZSA8IC9wcm9jL21vdW50czsKICAgICAgICBy ZXR1cm47CiAgICBmaTsKICAgIGxvY2FsIElGUz0nCSc7CiAgICBMQ19BTEw9QyBtb3VudCAtcCB8 IHdoaWxlIHJlYWQgbm9kZSBwb2ludCBmcyBmb287IGRvCiAgICAgICAgb3B0cz0ke2ZzIyogfTsK ICAgICAgICBmcz0ke2ZzJSUgKn07CiAgICAgICAgZWNobyAiJHtwb2ludC8vIC9cMDQwfSAke25v ZGUvLyAvXDA0MH0gJHtmcyUlICp9ICR7b3B0cy8vIC9cMDQwfSI7CiAgICBkb25lCn0KZ2V0X3J1 bm5pbmdfdmVyc2lvbiAoKSAKeyAKICAgIEtWX0ZVTEw9JCh1bmFtZSAtcik7CiAgICBpZiBbWyAt ZiAke1JPT1R9L2xpYi9tb2R1bGVzLyR7S1ZfRlVMTH0vc291cmNlL01ha2VmaWxlICYmIC1mICR7 Uk9PVH0vbGliL21vZHVsZXMvJHtLVl9GVUxMfS9idWlsZC9NYWtlZmlsZSBdXTsgdGhlbgogICAg ICAgIEtFUk5FTF9ESVI9JChyZWFkbGluayAtZiAke1JPT1R9L2xpYi9tb2R1bGVzLyR7S1ZfRlVM TH0vc291cmNlKTsKICAgICAgICBLQlVJTERfT1VUUFVUPSQocmVhZGxpbmsgLWYgJHtST09UfS9s aWIvbW9kdWxlcy8ke0tWX0ZVTEx9L2J1aWxkKTsKICAgICAgICB1bnNldCBLVl9GVUxMOwogICAg ICAgIGdldF92ZXJzaW9uOwogICAgICAgIHJldHVybiAkPzsKICAgIGVsc2UKICAgICAgICBpZiBb WyAtZiAke1JPT1R9L2xpYi9tb2R1bGVzLyR7S1ZfRlVMTH0vc291cmNlL01ha2VmaWxlIF1dOyB0 aGVuCiAgICAgICAgICAgIEtFUk5FTF9ESVI9JChyZWFkbGluayAtZiAke1JPT1R9L2xpYi9tb2R1 bGVzLyR7S1ZfRlVMTH0vc291cmNlKTsKICAgICAgICAgICAgdW5zZXQgS1ZfRlVMTDsKICAgICAg ICAgICAgZ2V0X3ZlcnNpb247CiAgICAgICAgICAgIHJldHVybiAkPzsKICAgICAgICBlbHNlCiAg ICAgICAgICAgIGlmIFtbIC1mICR7Uk9PVH0vbGliL21vZHVsZXMvJHtLVl9GVUxMfS9idWlsZC9N YWtlZmlsZSBdXTsgdGhlbgogICAgICAgICAgICAgICAgS0VSTkVMX0RJUj0kKHJlYWRsaW5rIC1m ICR7Uk9PVH0vbGliL21vZHVsZXMvJHtLVl9GVUxMfS9idWlsZCk7CiAgICAgICAgICAgICAgICB1 bnNldCBLVl9GVUxMOwogICAgICAgICAgICAgICAgZ2V0X3ZlcnNpb247CiAgICAgICAgICAgICAg ICByZXR1cm4gJD87CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIEtWX01BSk9SPSQo Z2V0X3ZlcnNpb25fY29tcG9uZW50X3JhbmdlIDEgJHtLVl9GVUxMfSk7CiAgICAgICAgICAgICAg ICBLVl9NSU5PUj0kKGdldF92ZXJzaW9uX2NvbXBvbmVudF9yYW5nZSAyICR7S1ZfRlVMTH0pOwog ICAgICAgICAgICAgICAgS1ZfUEFUQ0g9JChnZXRfdmVyc2lvbl9jb21wb25lbnRfcmFuZ2UgMyAk e0tWX0ZVTEx9KTsKICAgICAgICAgICAgICAgIEtWX1BBVENIPSR7S1ZfUEFUQ0gvLy0qfTsKICAg ICAgICAgICAgICAgIEtWX0VYVFJBPSIke0tWX0ZVTEwjJHtLVl9NQUpPUn0uJHtLVl9NSU5PUn0u JHtLVl9QQVRDSH19IjsKICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIHJl dHVybiAwCn0KZ2V0X3ZlcnNpb24gKCkgCnsgCiAgICBsb2NhbCBrYnVpbGRfb3V0cHV0IG1rZnVu YyB0bXBsb2NhbDsKICAgIFsgLW4gIiR7S1ZfRlVMTH0iIF0gJiYgcmV0dXJuIDA7CiAgICB1bnNl dCBLVl9ESVI7CiAgICBbIC16ICIke2dldF92ZXJzaW9uX3dhcm5pbmdfZG9uZX0iIF0gJiYgcWVp bmZvICJEZXRlcm1pbmluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSI7 CiAgICBbIC1oICIke0tFUk5FTF9ESVJ9IiBdICYmIEtWX0RJUj0iJChyZWFkbGluayAtZiAke0tF Uk5FTF9ESVJ9KSI7CiAgICBbIC1kICIke0tFUk5FTF9ESVJ9IiBdICYmIEtWX0RJUj0iJHtLRVJO RUxfRElSfSI7CiAgICBpZiBbIC16ICIke0tWX0RJUn0iIF07IHRoZW4KICAgICAgICBpZiBbIC16 ICIke2dldF92ZXJzaW9uX3dhcm5pbmdfZG9uZX0iIF07IHRoZW4KICAgICAgICAgICAgZ2V0X3Zl cnNpb25fd2FybmluZ19kb25lPTE7CiAgICAgICAgICAgIHFlZXJyb3IgIlVuYWJsZSB0byBmaW5k IGtlcm5lbCBzb3VyY2VzIGF0ICR7S0VSTkVMX0RJUn0iOwogICAgICAgICAgICBpZiBbICIke0tF Uk5FTF9ESVJ9IiA9PSAiL3Vzci9zcmMvbGludXgiIF07IHRoZW4KICAgICAgICAgICAgICAgIHFl aW5mbyAiUGxlYXNlIG1ha2Ugc3VyZSB0aGF0ICR7S0VSTkVMX0RJUn0gcG9pbnRzIGF0IHlvdXIg cnVubmluZyBrZXJuZWwsICI7CiAgICAgICAgICAgICAgICBxZWluZm8gIihvciB0aGUga2VybmVs IHlvdSB3aXNoIHRvIGJ1aWxkIGFnYWluc3QpLiI7CiAgICAgICAgICAgICAgICBxZWluZm8gIkFs dGVybmF0aXZlbHksIHNldCB0aGUgS0VSTkVMX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0 aGUga2VybmVsIHNvdXJjZXMgbG9jYXRpb24iOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAg ICAgICBxZWluZm8gIlBsZWFzZSBlbnN1cmUgdGhhdCB0aGUgS0VSTkVMX0RJUiBlbnZpcm9ubWVu dCB2YXJpYWJsZSBwb2ludHMgYXQgZnVsbCBMaW51eCBzb3VyY2VzIG9mIHRoZSBrZXJuZWwgeW91 IHdpc2ggdG8gY29tcGlsZSBhZ2FpbnN0LiI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwog ICAgICAgIHJldHVybiAxOwogICAgZmk7CiAgICBpZiBbIC16ICIke2dldF92ZXJzaW9uX3dhcm5p bmdfZG9uZX0iIF07IHRoZW4KICAgICAgICBxZWluZm8gIkZvdW5kIGtlcm5lbCBzb3VyY2UgZGly ZWN0b3J5OiI7CiAgICAgICAgcWVpbmZvICIgICAgJHtLVl9ESVJ9IjsKICAgIGZpOwogICAgaWYg WyAhIC1zICIke0tWX0RJUn0vTWFrZWZpbGUiIF07IHRoZW4KICAgICAgICBpZiBbIC16ICIke2dl dF92ZXJzaW9uX3dhcm5pbmdfZG9uZX0iIF07IHRoZW4KICAgICAgICAgICAgZ2V0X3ZlcnNpb25f d2FybmluZ19kb25lPTE7CiAgICAgICAgICAgIHFlZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgTWFr ZWZpbGUgaW4gdGhlIGtlcm5lbCBzb3VyY2UgZGlyZWN0b3J5LiI7CiAgICAgICAgICAgIHFlZXJy b3IgIlBsZWFzZSBlbnN1cmUgdGhhdCAke0tFUk5FTF9ESVJ9IHBvaW50cyB0byBhIGNvbXBsZXRl IHNldCBvZiBMaW51eCBzb3VyY2VzIjsKICAgICAgICBmaTsKICAgICAgICByZXR1cm4gMTsKICAg IGZpOwogICAgT1VUUFVUX0RJUj0iJHtPVVRQVVRfRElSOi0ke0tCVUlMRF9PVVRQVVR9fSI7CiAg ICBLRVJORUxfTUFLRUZJTEU9IiR7S1ZfRElSfS9NYWtlZmlsZSI7CiAgICBta2Z1bmM9IiQoZ2V0 X21ha2VmaWxlX2V4dHJhY3RfZnVuY3Rpb24gIiR7S0VSTkVMX01BS0VGSUxFfSIpIjsKICAgIGti dWlsZF9vdXRwdXQ9IiQoJHtta2Z1bmN9IEtCVUlMRF9PVVRQVVQgJHtLRVJORUxfTUFLRUZJTEV9 KSI7CiAgICBPVVRQVVRfRElSPSIke09VVFBVVF9ESVI6LSR7a2J1aWxkX291dHB1dH19IjsKICAg IEtWX01BSk9SPSIkKCR7bWtmdW5jfSBWRVJTSU9OICR7S0VSTkVMX01BS0VGSUxFfSkiOwogICAg S1ZfTUlOT1I9IiQoJHtta2Z1bmN9IFBBVENITEVWRUwgJHtLRVJORUxfTUFLRUZJTEV9KSI7CiAg ICBLVl9QQVRDSD0iJCgke21rZnVuY30gU1VCTEVWRUwgJHtLRVJORUxfTUFLRUZJTEV9KSI7CiAg ICBLVl9FWFRSQT0iJCgke21rZnVuY30gRVhUUkFWRVJTSU9OICR7S0VSTkVMX01BS0VGSUxFfSki OwogICAgaWYgWyAteiAiJHtLVl9NQUpPUn0iIC1vIC16ICIke0tWX01JTk9SfSIgLW8gLXogIiR7 S1ZfUEFUQ0h9IiBdOyB0aGVuCiAgICAgICAgaWYgWyAteiAiJHtnZXRfdmVyc2lvbl93YXJuaW5n X2RvbmV9IiBdOyB0aGVuCiAgICAgICAgICAgIGdldF92ZXJzaW9uX3dhcm5pbmdfZG9uZT0xOwog ICAgICAgICAgICBxZWVycm9yICJDb3VsZCBub3QgZGV0ZWN0IGtlcm5lbCB2ZXJzaW9uLiI7CiAg ICAgICAgICAgIHFlZXJyb3IgIlBsZWFzZSBlbnN1cmUgdGhhdCAke0tFUk5FTF9ESVJ9IHBvaW50 cyB0byBhIGNvbXBsZXRlIHNldCBvZiBMaW51eCBzb3VyY2VzLiI7CiAgICAgICAgZmk7CiAgICAg ICAgcmV0dXJuIDE7CiAgICBmaTsKICAgIE9VVFBVVF9ESVI9IiR7T1VUUFVUX0RJUjotL2xpYi9t b2R1bGVzLyR7S1ZfTUFKT1J9LiR7S1ZfTUlOT1J9LiR7S1ZfUEFUQ0h9JHtLVl9FWFRSQX0vYnVp bGR9IjsKICAgIFsgLWggIiR7T1VUUFVUX0RJUn0iIF0gJiYgS1ZfT1VUX0RJUj0iJChyZWFkbGlu ayAtZiAke09VVFBVVF9ESVJ9KSI7CiAgICBbIC1kICIke09VVFBVVF9ESVJ9IiBdICYmIEtWX09V VF9ESVI9IiR7T1VUUFVUX0RJUn0iOwogICAgaWYgWyAtbiAiJHtLVl9PVVRfRElSfSIgXTsgdGhl bgogICAgICAgIHFlaW5mbyAiRm91bmQga2VybmVsIG9iamVjdCBkaXJlY3Rvcnk6IjsKICAgICAg ICBxZWluZm8gIiAgICAke0tWX09VVF9ESVJ9IjsKICAgIGZpOwogICAgS1ZfT1VUX0RJUj0iJHtL Vl9PVVRfRElSOi0ke0tWX0RJUn19IjsKICAgIGlmIFsgLXMgIiR7S1ZfT1VUX0RJUn0iL2luY2x1 ZGUvY29uZmlnL2tlcm5lbC5yZWxlYXNlIF07IHRoZW4KICAgICAgICBLVl9MT0NBTD0kKDwiJHtL Vl9PVVRfRElSfSIvaW5jbHVkZS9jb25maWcva2VybmVsLnJlbGVhc2UpOwogICAgZWxzZQogICAg ICAgIGlmIFsgLXMgIiR7S1ZfT1VUX0RJUn0iLy5rZXJuZWxyZWxlYXNlIF07IHRoZW4KICAgICAg ICAgICAgS1ZfTE9DQUw9JCg8IiR7S1ZfT1VUX0RJUn0iLy5rZXJuZWxyZWxlYXNlKTsKICAgICAg ICBlbHNlCiAgICAgICAgICAgIEtWX0xPQ0FMPTsKICAgICAgICBmaTsKICAgIGZpOwogICAgdG1w bG9jYWw9JHtLVl9MT0NBTCMke0tWX01BSk9SfS4ke0tWX01JTk9SfS4ke0tWX1BBVENIfSR7S1Zf RVhUUkF9fTsKICAgIGlmIFsgIiRLVl9MT0NBTCIgPSAiJHRtcGxvY2FsIiBdOyB0aGVuCiAgICAg ICAgS1ZfTE9DQUw9OwogICAgZWxzZQogICAgICAgIEtWX0xPQ0FMPSR0bXBsb2NhbDsKICAgIGZp OwogICAgS1ZfRlVMTD0iJHtLVl9NQUpPUn0uJHtLVl9NSU5PUn0uJHtLVl9QQVRDSH0ke0tWX0VY VFJBfSR7S1ZfTE9DQUx9IjsKICAgIHFlaW5mbyAiRm91bmQgc291cmNlcyBmb3Iga2VybmVsIHZl cnNpb246IjsKICAgIHFlaW5mbyAiICAgICR7S1ZfRlVMTH0iOwogICAgcmV0dXJuIDAKfQpnZXRf dmVyc2lvbl9jb21wb25lbnRfY291bnQgKCkgCnsgCiAgICBsb2NhbCBhPSgkKGdldF92ZXJzaW9u X2NvbXBvbmVudHMgIiR7MTotJHtQVn19IikpOwogICAgZWNobyAkeyNhW0BdfQp9CmdldF92ZXJz aW9uX2NvbXBvbmVudF9yYW5nZSAoKSAKeyAKICAgIGVzaG9wdHNfcHVzaCAtcyBleHRnbG9iOwog ICAgbG9jYWwgYyB2PSIkezI6LSR7UFZ9fSIgcmFuZ2U9IiR7MX0iIHJhbmdlX3N0YXJ0IHJhbmdl X2VuZDsKICAgIGxvY2FsIC1pIGk9LTEgaj0wOwogICAgYz0oJChnZXRfYWxsX3ZlcnNpb25fY29t cG9uZW50cyAiJHt2fSIpKTsKICAgIHJhbmdlX3N0YXJ0PSR7cmFuZ2UlLSp9OwogICAgcmFuZ2Vf c3RhcnQ9JHtyYW5nZV9zdGFydDotMX07CiAgICByYW5nZV9lbmQ9JHtyYW5nZSMqLX07CiAgICBy YW5nZV9lbmQ9JHtyYW5nZV9lbmQ6LSR7I2NbQF19fTsKICAgIHdoaWxlICgoaiA8IHJhbmdlX3N0 YXJ0KSk7IGRvCiAgICAgICAgaSs9MTsKICAgICAgICAoKGkgPiAkeyNjW0BdfSkpICYmIGVzaG9w dHNfcG9wICYmIHJldHVybjsKICAgICAgICBbWyAtbiAiJHtjW2ldLy9bLS5fXX0iIF1dICYmIGor PTE7CiAgICBkb25lOwogICAgd2hpbGUgKChqIDw9IHJhbmdlX2VuZCkpOyBkbwogICAgICAgIGVj aG8gLW4gJHtjW2ldfTsKICAgICAgICAoKGkgPiAkeyNjW0BdfSkpICYmIGVzaG9wdHNfcG9wICYm IHJldHVybjsKICAgICAgICBbWyAtbiAiJHtjW2ldLy9bLS5fXX0iIF1dICYmIGorPTE7CiAgICAg ICAgaSs9MTsKICAgIGRvbmU7CiAgICBlc2hvcHRzX3BvcAp9CmdldF92ZXJzaW9uX2NvbXBvbmVu dHMgKCkgCnsgCiAgICBsb2NhbCBjPSQoZ2V0X2FsbF92ZXJzaW9uX2NvbXBvbmVudHMgIiR7MTot JHtQVn19Iik7CiAgICBlY2hvICR7Yy8vWy0uX10vIH0KfQpnZXRmaWxldmFyICgpIAp7IAogICAg bG9jYWwgRVJST1IgYmFzZWZuYW1lIGJhc2VkbmFtZSBteUFSQ0g9IiR7QVJDSH0iOwogICAgRVJS T1I9MDsKICAgIFsgLXogIiR7MX0iIF0gJiYgRVJST1I9MTsKICAgIFsgISAtZiAiJHsyfSIgXSAm JiBFUlJPUj0xOwogICAgaWYgWyAiJHtFUlJPUn0iID0gMSBdOyB0aGVuCiAgICAgICAgZWNobyAt ZSAiXG4iOwogICAgICAgIGVlcnJvciAiZ2V0ZmlsZXZhciByZXF1aXJlcyAyIHZhcmlhYmxlcywg d2l0aCB0aGUgc2Vjb25kIGEgdmFsaWQgZmlsZS4iOwogICAgICAgIGVlcnJvciAiICAgZ2V0Zmls ZXZhciA8VkFSSUFCTEU+IDxDT05GSUdGSUxFPiI7CiAgICBlbHNlCiAgICAgICAgYmFzZWZuYW1l PSIkKGJhc2VuYW1lICR7Mn0pIjsKICAgICAgICBiYXNlZG5hbWU9IiQoZGlybmFtZSAkezJ9KSI7 CiAgICAgICAgdW5zZXQgQVJDSDsKICAgICAgICBlY2hvIC1lICJlOlxcblxcdEBlY2hvIFwkKCR7 MX0pXFxuaW5jbHVkZSAke2Jhc2VmbmFtZX0iIHwgbWFrZSAtQyAiJHtiYXNlZG5hbWV9IiBNPSIk e1N9IiAke0JVSUxEX0ZJWEVTfSAtcyAtZiAtIDI+IC9kZXYvbnVsbDsKICAgICAgICBBUkNIPSR7 bXlBUkNIfTsKICAgIGZpCn0KZ2V0ZmlsZXZhcl9ub2V4ZWMgKCkgCnsgCiAgICBsb2NhbCBFUlJP UiBiYXNlZm5hbWUgYmFzZWRuYW1lIG15Y2F0IG15QVJDSD0iJHtBUkNIfSI7CiAgICBFUlJPUj0w OwogICAgbXljYXQ9J2NhdCc7CiAgICBbIC16ICIkezF9IiBdICYmIEVSUk9SPTE7CiAgICBbICEg LWYgIiR7Mn0iIF0gJiYgRVJST1I9MTsKICAgIFsgIiR7MiUuZ3p9IiAhPSAiJHsyfSIgXSAmJiBt eWNhdD0nemNhdCc7CiAgICBpZiBbICIke0VSUk9SfSIgPSAxIF07IHRoZW4KICAgICAgICBlY2hv IC1lICJcbiI7CiAgICAgICAgZWVycm9yICJnZXRmaWxldmFyX25vZXhlYyByZXF1aXJlcyAyIHZh cmlhYmxlcywgd2l0aCB0aGUgc2Vjb25kIGEgdmFsaWQgZmlsZS4iOwogICAgICAgIGVlcnJvciAi ICAgZ2V0ZmlsZXZhcl9ub2V4ZWMgPFZBUklBQkxFPiA8Q09ORklHRklMRT4iOwogICAgZWxzZQog ICAgICAgICR7bXljYXR9ICIkezJ9IiB8IHNlZCAtbiAtZSAiL15bWzpzcGFjZTpdXSokezF9W1s6 c3BhY2U6XV0qOlxcPz1bWzpzcGFjZTpdXSpcKC4qXClcJC97CgkJCXMsXltePV0qW1s6c3BhY2U6 XV0qPVtbOnNwYWNlOl1dKiwsZyA7CgkJCXMsW1s6c3BhY2U6XV0qXCQsLGcgOwoJCQlwCgkJfSI7 CiAgICBmaQp9Cmhhc19tdWx0aWxpYl9wcm9maWxlICgpIAp7IAogICAgWyAtbiAiJHtNVUxUSUxJ Ql9BQklTfSIgLWEgIiR7TVVMVElMSUJfQUJJU30iICE9ICIke01VTFRJTElCX0FCSVMvIC99IiBd Cn0KaW5faXVzZSAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIk e0B9IjsKICAgIFtbICR7I30gLWVxIDEgXV0gfHwgZGllICJJbnZhbGlkIGFyZ3MgdG8gJHtGVU5D TkFNRX0oKSI7CiAgICBsb2NhbCBmbGFnPSR7MX07CiAgICBsb2NhbCBsaXVzZT0oJHtJVVNFfSk7 CiAgICBoYXMgIiR7ZmxhZ30iICIke2xpdXNlW0BdI1srLV19Igp9CmlzLWxvZ2luLWRpc2FibGVk ICgpIAp7IAogICAgX2RlYWRfcG9ydGFiaWxpdHlfdXNlcl9mdW5jcwp9CmlzX2ZpbmFsX2FiaSAo KSAKeyAKICAgIGhhc19tdWx0aWxpYl9wcm9maWxlIHx8IHJldHVybiAwOwogICAgc2V0IC0tICQo Z2V0X2luc3RhbGxfYWJpcyk7CiAgICBsb2NhbCBMQVNUX0FCST0kIzsKICAgIFtbICR7IUxBU1Rf QUJJfSA9PSAke0FCSX0gXV0KfQprZXJuZWxfaXMgKCkgCnsgCiAgICBsaW51eC1pbmZvX2dldF9h bnlfdmVyc2lvbjsKICAgIGxvY2FsIG9wZXJhdG9yIHRlc3QgdmFsdWU7CiAgICBjYXNlICR7MSMt fSBpbiAKICAgICAgICBsdCkKICAgICAgICAgICAgb3BlcmF0b3I9Ii1sdCI7CiAgICAgICAgICAg IHNoaWZ0CiAgICAgICAgOzsKICAgICAgICBndCkKICAgICAgICAgICAgb3BlcmF0b3I9Ii1ndCI7 CiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgOzsKICAgICAgICBsZSkKICAgICAgICAgICAgb3Bl cmF0b3I9Ii1sZSI7CiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgOzsKICAgICAgICBnZSkKICAg ICAgICAgICAgb3BlcmF0b3I9Ii1nZSI7CiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgOzsKICAg ICAgICBlcSkKICAgICAgICAgICAgb3BlcmF0b3I9Ii1lcSI7CiAgICAgICAgICAgIHNoaWZ0CiAg ICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBvcGVyYXRvcj0iLWVxIgogICAgICAgIDs7 CiAgICBlc2FjOwogICAgW1sgJCMgLWd0IDMgXV0gJiYgZGllICJFcnJvciBpbiBrZXJuZWwtMl9r ZXJuZWxfaXMoKTogdG9vIG1hbnkgcGFyYW1ldGVycyI7CiAgICA6ICQoKCB0ZXN0ID0gKEtWX01B Sk9SIDw8IDE2KSArIChLVl9NSU5PUiA8PCA4KSArIEtWX1BBVENIICkpOwogICAgOiAkKCggdmFs dWUgPSAoJHsxOi0ke0tWX01BSk9SfX0gPDwgMTYpICsgKCR7MjotJHtLVl9NSU5PUn19IDw8IDgp ICsgJHszOi0ke0tWX1BBVENIfX0gKSk7CiAgICBbICR7dGVzdH0gJHtvcGVyYXRvcn0gJHt2YWx1 ZX0gXQp9CmxpbnV4LWluZm9fZ2V0X2FueV92ZXJzaW9uICgpIAp7IAogICAgZ2V0X3ZlcnNpb247 CiAgICBpZiBbWyAkPyAtbmUgMCBdXTsgdGhlbgogICAgICAgIGV3YXJuICJVbmFibGUgdG8gY2Fs Y3VsYXRlIExpbnV4IEtlcm5lbCB2ZXJzaW9uIGZvciBidWlsZCwgYXR0ZW1wdGluZyB0byB1c2Ug cnVubmluZyB2ZXJzaW9uIjsKICAgICAgICBnZXRfcnVubmluZ192ZXJzaW9uOwogICAgZmkKfQps aW51eC1pbmZvX3BrZ19zZXR1cCAoKSAKeyAKICAgIGxpbnV4LWluZm9fZ2V0X2FueV92ZXJzaW9u OwogICAgaWYga2VybmVsX2lzIDIgNDsgdGhlbgogICAgICAgIGlmIFsgIiQoIGdjYy1tYWpvci12 ZXJzaW9uICkiIC1lcSAiNCIgXTsgdGhlbgogICAgICAgICAgICBlY2hvOwogICAgICAgICAgICBl d2FybiAiQmUgd2FybmVkICEhID49c3lzLWRldmVsL2djYy00LjAuMCBpc24ndCBzdXBwb3J0ZWQg d2l0aCI7CiAgICAgICAgICAgIGV3YXJuICJsaW51eC0yLjQgKG9yIG1vZHVsZXMgYnVpbGRpbmcg YWdhaW5zdCBhIGxpbnV4LTIuNCBrZXJuZWwpISI7CiAgICAgICAgICAgIGVjaG87CiAgICAgICAg ICAgIGV3YXJuICJFaXRoZXIgc3dpdGNoIHRvIGFub3RoZXIgZ2NjLXZlcnNpb24gKHZpYSBnY2Mt Y29uZmlnKSBvciB1c2UgYSI7CiAgICAgICAgICAgIGV3YXJuICJuZXdlciBrZXJuZWwgdGhhdCBz dXBwb3J0cyBnY2MtNC4iOwogICAgICAgICAgICBlY2hvOwogICAgICAgICAgICBld2FybiAiQWxz byBiZSBhd2FyZSB0aGF0IGJ1Z3JlcG9ydHMgYWJvdXQgZ2NjLTQgbm90IHdvcmtpbmciOwogICAg ICAgICAgICBld2FybiAid2l0aCBsaW51eC0yLjQgYmFzZWQgZWJ1aWxkcyB3aWxsIGJlIGNsb3Nl ZCBhcyBJTlZBTElEISI7CiAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgIGVwYXVzZSAxMDsK ICAgICAgICBmaTsKICAgIGZpOwogICAgWyAtbiAiJHtDT05GSUdfQ0hFQ0t9IiBdICYmIGNoZWNr X2V4dHJhX2NvbmZpZwp9CmxpbnV4LW1vZF9wa2dfcG9zdGluc3QgKCkgCnsgCiAgICBkZWJ1Zy1w cmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgICR7VVBEQVRFX0RFUE1PRH0gJiYgdXBk YXRlX2RlcG1vZDsKICAgICR7VVBEQVRFX01PRFVMRVN9ICYmIHVwZGF0ZV9tb2R1bGVzOwogICAg JHtVUERBVEVfTU9EVUxFREJ9ICYmIHVwZGF0ZV9tb2R1bGVkYgp9CmxpbnV4LW1vZF9wa2dfcG9z dHJtICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBy ZW1vdmVfbW9kdWxlZGIKfQpsaW51eC1tb2RfcGtnX3ByZWluc3QgKCkgCnsgCiAgICBkZWJ1Zy1w cmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIFsgLWQgIiR7RH1saWIvbW9kdWxlcyIg XSAmJiBVUERBVEVfREVQTU9EPXRydWUgfHwgVVBEQVRFX0RFUE1PRD1mYWxzZTsKICAgIFsgLWQg IiR7RH1ldGMvbW9kdWxlcy5kIiBdICYmIFVQREFURV9NT0RVTEVTPXRydWUgfHwgVVBEQVRFX01P RFVMRVM9ZmFsc2U7CiAgICBbIC1kICIke0R9bGliL21vZHVsZXMiIF0gJiYgVVBEQVRFX01PRFVM RURCPXRydWUgfHwgVVBEQVRFX01PRFVMRURCPWZhbHNlCn0KbGludXgtbW9kX3BrZ19zZXR1cCAo KSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgbG9jYWwg aXNfYmluPSIke01FUkdFX1RZUEV9IjsKICAgIGlmIGhhcyAke0VBUEl9IDAgMSAyIDM7IHRoZW4K ICAgICAgICBpc19iaW49JHtFTUVSR0VfRlJPTX07CiAgICBmaTsKICAgIGlmIFtbICR7aXNfYmlu fSA9PSBiaW5hcnkgXV07IHRoZW4KICAgICAgICBsaW51eC1tb2RfcGtnX3NldHVwX2JpbmFyeTsK ICAgICAgICByZXR1cm47CiAgICBmaTsKICAgIGxpbnV4LWluZm9fcGtnX3NldHVwOwogICAgcmVx dWlyZV9jb25maWd1cmVkX2tlcm5lbDsKICAgIGNoZWNrX2tlcm5lbF9idWlsdDsKICAgIHN0cmlw X21vZHVsZW5hbWVzOwogICAgW1sgLW4gJHtNT0RVTEVfTkFNRVN9IF1dICYmIGNoZWNrX21vZHVs ZXNfc3VwcG9ydGVkOwogICAgc2V0X2t2b2JqCn0KbGludXgtbW9kX3BrZ19zZXR1cF9iaW5hcnkg KCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGxvY2Fs IG5ld19DT05GSUdfQ0hFQ0s7CiAgICBmb3IgY29uZmlnIGluICRDT05GSUdfQ0hFQ0s7CiAgICBk bwogICAgICAgIG9wdGlvbmFsPSd+JzsKICAgICAgICBbWyAke2NvbmZpZzowOjF9ID09ICJ+IiBd XSAmJiBvcHRpb25hbD0nJzsKICAgICAgICBuZXdfQ09ORklHX0NIRUNLPSIke25ld19DT05GSUdf Q0hFQ0t9ICR7b3B0aW9uYWx9JHtjb25maWd9IjsKICAgIGRvbmU7CiAgICBleHBvcnQgQ09ORklH X0NIRUNLPSIke25ld19DT05GSUdfQ0hFQ0t9IjsKICAgIGxpbnV4LWluZm9fcGtnX3NldHVwCn0K bGludXgtbW9kX3NyY19jb21waWxlICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtG VU5DTkFNRX0gJCo7CiAgICBsb2NhbCBtb2R1bGVuYW1lIGxpYmRpciBzcmNkaXIgb2JqZGlyIGkg biBteUFCST0iJHtBQkl9IjsKICAgIHNldF9hcmNoX3RvX2tlcm5lbDsKICAgIEFCST0iJHtLRVJO RUxfQUJJfSI7CiAgICBCVUlMRF9UQVJHRVRTPSR7QlVJTERfVEFSR0VUUzotY2xlYW4gbW9kdWxl fTsKICAgIHN0cmlwX21vZHVsZW5hbWVzOwogICAgY2QgIiR7U30iOwogICAgdG91Y2ggTW9kdWxl LnN5bXZlcnM7CiAgICBmb3IgaSBpbiAke01PRFVMRV9OQU1FU307CiAgICBkbwogICAgICAgIHVu c2V0IGxpYmRpciBzcmNkaXIgb2JqZGlyOwogICAgICAgIGZvciBuIGluICQoZmluZF9tb2R1bGVf cGFyYW1zICR7aX0pOwogICAgICAgIGRvCiAgICAgICAgICAgIGV2YWwgJHtuLzoqfT0ke24vKjov fTsKICAgICAgICBkb25lOwogICAgICAgIGxpYmRpcj0ke2xpYmRpcjotbWlzY307CiAgICAgICAg c3JjZGlyPSR7c3JjZGlyOi0ke1N9fTsKICAgICAgICBvYmpkaXI9JHtvYmpkaXI6LSR7c3JjZGly fX07CiAgICAgICAgaWYgWyAhIC1mICIke3NyY2Rpcn0vLmJ1aWx0IiBdOyB0aGVuCiAgICAgICAg ICAgIGNkICIke3NyY2Rpcn0iOwogICAgICAgICAgICBsbiAtcyAiJHtTfSIvTW9kdWxlLnN5bXZl cnMgTW9kdWxlLnN5bXZlcnM7CiAgICAgICAgICAgIGVpbmZvICJQcmVwYXJpbmcgJHttb2R1bGVu YW1lfSBtb2R1bGUiOwogICAgICAgICAgICBpZiBbWyAtbiAke0VDT05GX1BBUkFNU30gXV07IHRo ZW4KICAgICAgICAgICAgICAgIGVjb25mICR7RUNPTkZfUEFSQU1TfSB8fCBkaWUgIlVuYWJsZSB0 byBydW4gZWNvbmYgJHtFQ09ORl9QQVJBTVN9IjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAg IGV2YWwgImVtYWtlIEhPU1RDQz1cIiQodGMtZ2V0QlVJTERfQ0MpXCIgCQkJCQkJQ1JPU1NfQ09N UElMRT0ke0NIT1NUfS0gCQkJCQkJTERGTEFHUz1cIiQoZ2V0X2FiaV9MREZMQUdTKVwiIAkJCQkJ CSR7QlVJTERfRklYRVN9IAkJCQkJCSR7QlVJTERfUEFSQU1TfSAJCQkJCQkke0JVSUxEX1RBUkdF VFN9ICIgfHwgZGllICJVbmFibGUgdG8gZW1ha2UgSE9TVENDPSIkKHRjLWdldEJVSUxEX0NDKSIg Q1JPU1NfQ09NUElMRT0ke0NIT1NUfS0gTERGTEFHUz0iJChnZXRfYWJpX0xERkxBR1MpIiAke0JV SUxEX0ZJWEVTfSAke0JVSUxEX1BBUkFNU30gJHtCVUlMRF9UQVJHRVRTfSI7CiAgICAgICAgICAg IGNkICIke09MRFBXRH0iOwogICAgICAgICAgICB0b3VjaCAiJHtzcmNkaXJ9Ii8uYnVpbHQ7CiAg ICAgICAgZmk7CiAgICBkb25lOwogICAgc2V0X2FyY2hfdG9fcG9ydGFnZTsKICAgIEFCST0iJHtt eUFCSX0iCn0KbGludXgtbW9kX3NyY19pbnN0YWxsICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVu Y3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBtb2R1bGVuYW1lIGxpYmRpciBzcmNkaXIg b2JqZGlyIGkgbjsKICAgIHN0cmlwX21vZHVsZW5hbWVzOwogICAgZm9yIGkgaW4gJHtNT0RVTEVf TkFNRVN9OwogICAgZG8KICAgICAgICB1bnNldCBsaWJkaXIgc3JjZGlyIG9iamRpcjsKICAgICAg ICBmb3IgbiBpbiAkKGZpbmRfbW9kdWxlX3BhcmFtcyAke2l9KTsKICAgICAgICBkbwogICAgICAg ICAgICBldmFsICR7bi86Kn09JHtuLyo6L307CiAgICAgICAgZG9uZTsKICAgICAgICBsaWJkaXI9 JHtsaWJkaXI6LW1pc2N9OwogICAgICAgIHNyY2Rpcj0ke3NyY2RpcjotJHtTfX07CiAgICAgICAg b2JqZGlyPSR7b2JqZGlyOi0ke3NyY2Rpcn19OwogICAgICAgIGVpbmZvICJJbnN0YWxsaW5nICR7 bW9kdWxlbmFtZX0gbW9kdWxlIjsKICAgICAgICBjZCAiJHtvYmpkaXJ9IiB8fCBkaWUgIiR7b2Jq ZGlyfSBkb2VzIG5vdCBleGlzdCI7CiAgICAgICAgaW5zaW50byAvbGliL21vZHVsZXMvJHtLVl9G VUxMfS8ke2xpYmRpcn07CiAgICAgICAgZG9pbnMgJHttb2R1bGVuYW1lfS4ke0tWX09CSn0gfHwg ZGllICJkb2lucyAke21vZHVsZW5hbWV9LiR7S1ZfT0JKfSBmYWlsZWQiOwogICAgICAgIGNkICIk e09MRFBXRH0iOwogICAgICAgIGdlbmVyYXRlX21vZHVsZXNkICIke29iamRpcn0vJHttb2R1bGVu YW1lfSI7CiAgICBkb25lCn0KbGludXhfY2hrY29uZmlnX2J1aWx0aW4gKCkgCnsgCiAgICBsaW51 eF9jb25maWdfcWFfY2hlY2sgbGludXhfY2hrY29uZmlnX2J1aWx0aW47CiAgICBsb2NhbCBSRVNV TFQ7CiAgICBsb2NhbCBjb25maWc7CiAgICBjb25maWc9IiR7S1ZfT1VUX0RJUn0vLmNvbmZpZyI7 CiAgICBbICEgLWYgIiR7Y29uZmlnfSIgXSAmJiBjb25maWc9Ii9wcm9jL2NvbmZpZy5neiI7CiAg ICBSRVNVTFQ9IiQoZ2V0ZmlsZXZhcl9ub2V4ZWMgQ09ORklHXyR7MX0gIiR7Y29uZmlnfSIpIjsK ICAgIFsgIiR7UkVTVUxUfSIgPSAieSIgXSAmJiByZXR1cm4gMCB8fCByZXR1cm4gMQp9CmxpbnV4 X2Noa2NvbmZpZ19tb2R1bGUgKCkgCnsgCiAgICBsaW51eF9jb25maWdfcWFfY2hlY2sgbGludXhf Y2hrY29uZmlnX21vZHVsZTsKICAgIGxvY2FsIFJFU1VMVDsKICAgIGxvY2FsIGNvbmZpZzsKICAg IGNvbmZpZz0iJHtLVl9PVVRfRElSfS8uY29uZmlnIjsKICAgIFsgISAtZiAiJHtjb25maWd9IiBd ICYmIGNvbmZpZz0iL3Byb2MvY29uZmlnLmd6IjsKICAgIFJFU1VMVD0iJChnZXRmaWxldmFyX25v ZXhlYyBDT05GSUdfJHsxfSAiJHtjb25maWd9IikiOwogICAgWyAiJHtSRVNVTFR9IiA9ICJtIiBd ICYmIHJldHVybiAwIHx8IHJldHVybiAxCn0KbGludXhfY2hrY29uZmlnX3ByZXNlbnQgKCkgCnsg CiAgICBsaW51eF9jb25maWdfcWFfY2hlY2sgbGludXhfY2hrY29uZmlnX3ByZXNlbnQ7CiAgICBs b2NhbCBSRVNVTFQ7CiAgICBsb2NhbCBjb25maWc7CiAgICBjb25maWc9IiR7S1ZfT1VUX0RJUn0v LmNvbmZpZyI7CiAgICBbICEgLWYgIiR7Y29uZmlnfSIgXSAmJiBjb25maWc9Ii9wcm9jL2NvbmZp Zy5neiI7CiAgICBSRVNVTFQ9IiQoZ2V0ZmlsZXZhcl9ub2V4ZWMgQ09ORklHXyR7MX0gIiR7Y29u ZmlnfSIpIjsKICAgIFsgIiR7UkVTVUxUfSIgPSAibSIgLW8gIiR7UkVTVUxUfSIgPSAieSIgXSAm JiByZXR1cm4gMCB8fCByZXR1cm4gMQp9CmxpbnV4X2Noa2NvbmZpZ19zdHJpbmcgKCkgCnsgCiAg ICBsaW51eF9jb25maWdfcWFfY2hlY2sgbGludXhfY2hrY29uZmlnX3N0cmluZzsKICAgIGxvY2Fs IGNvbmZpZzsKICAgIGNvbmZpZz0iJHtLVl9PVVRfRElSfS8uY29uZmlnIjsKICAgIFsgISAtZiAi JHtjb25maWd9IiBdICYmIGNvbmZpZz0iL3Byb2MvY29uZmlnLmd6IjsKICAgIGdldGZpbGV2YXJf bm9leGVjICJDT05GSUdfJHsxfSIgIiR7Y29uZmlnfSIKfQpsaW51eF9jb25maWdfYmluX2V4aXN0 cyAoKSAKeyAKICAgIGV4cG9ydCBfTElOVVhfQ09ORklHX0VYSVNUU19ET05FPTE7CiAgICBbIC1z ICIvcHJvYy9jb25maWcuZ3oiIF0KfQpsaW51eF9jb25maWdfZXhpc3RzICgpIAp7IAogICAgbGlu dXhfY29uZmlnX3NyY19leGlzdHMgfHwgbGludXhfY29uZmlnX2Jpbl9leGlzdHMKfQpsaW51eF9j b25maWdfcWFfY2hlY2sgKCkgCnsgCiAgICBsb2NhbCBmPSIkMSI7CiAgICBpZiBbIC16ICIke19M SU5VWF9DT05GSUdfRVhJU1RTX0RPTkV9IiBdOyB0aGVuCiAgICAgICAgZXdhcm4gIlFBOiBZb3Ug Y2FsbGVkICRmIGJlZm9yZSBhbnkgbGludXhfY29uZmlnX2V4aXN0cyEiOwogICAgICAgIGV3YXJu ICJRQTogVGhlIHJldHVybiB2YWx1ZSBvZiAkZiB3aWxsIE5PVCBndWFyYW50ZWVkIGxhdGVyISI7 CiAgICBmaQp9CmxpbnV4X2NvbmZpZ19zcmNfZXhpc3RzICgpIAp7IAogICAgZXhwb3J0IF9MSU5V WF9DT05GSUdfRVhJU1RTX0RPTkU9MTsKICAgIFsgLXMgIiR7S1ZfT1VUX0RJUn0vLmNvbmZpZyIg XQp9Cm1ha2VfZGVza3RvcF9lbnRyeSAoKSAKeyAKICAgIFtbIC16ICQxIF1dICYmIGRpZSAibWFr ZV9kZXNrdG9wX2VudHJ5OiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBleGVjdXRhYmxlIjsKICAgIGxv Y2FsIGV4ZWM9JHsxfTsKICAgIGxvY2FsIG5hbWU9JHsyOi0ke1BOfX07CiAgICBsb2NhbCBpY29u PSR7MzotJHtQTn19OwogICAgbG9jYWwgdHlwZT0kezR9OwogICAgbG9jYWwgZmllbGRzPSR7NX07 CiAgICBpZiBbWyAteiAke3R5cGV9IF1dOyB0aGVuCiAgICAgICAgbG9jYWwgY2F0bWFqPSR7Q0FU RUdPUlklJS0qfTsKICAgICAgICBsb2NhbCBjYXRtaW49JHtDQVRFR09SWSMjKi19OwogICAgICAg IGNhc2UgJHtjYXRtYWp9IGluIAogICAgICAgICAgICBhcHApCiAgICAgICAgICAgICAgICBjYXNl ICR7Y2F0bWlufSBpbiAKICAgICAgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5KQogICAgICAg ICAgICAgICAgICAgICAgICB0eXBlPUFjY2Vzc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgICAgIGFkbWluKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBl PVN5c3RlbQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgYW50aXZp cnVzKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVN5c3RlbQogICAgICAgICAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICAgICAgICAgYXJjaCkKICAgICAgICAgICAgICAgICAgICAgICAg dHlwZT1BcmNoaXZpbmcKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAg IGJhY2t1cCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1BcmNoaXZpbmcKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGNkcikKICAgICAgICAgICAgICAgICAg ICAgICAgdHlwZT1EaXNjQnVybmluZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAg ICAgICAgICAgZGljdHMpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RGljdGlvbmFyeQog ICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZG9jKQogICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPURvY3VtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICA7Owog ICAgICAgICAgICAgICAgICAgIGVkaXRvcnMpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 VGV4dEVkaXRvcgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZW1h Y3MpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9VGV4dEVkaXRvcgogICAgICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZW11bGF0aW9uKQogICAgICAgICAgICAgICAg ICAgICAgICB0eXBlPUVtdWxhdG9yCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAg ICAgICAgICBsYXB0b3ApCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9SGFyZHdhcmVTZXR0 aW5ncwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgb2ZmaWNlKQog ICAgICAgICAgICAgICAgICAgICAgICB0eXBlPU9mZmljZQogICAgICAgICAgICAgICAgICAgIDs7 CiAgICAgICAgICAgICAgICAgICAgcGRhKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVBE QQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgdmltKQogICAgICAg ICAgICAgICAgICAgICAgICB0eXBlPVRleHRFZGl0b3IKICAgICAgICAgICAgICAgICAgICA7Owog ICAgICAgICAgICAgICAgICAgIHhlbWFjcykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1U ZXh0RWRpdG9yCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWMKICAg ICAgICAgICAgOzsKICAgICAgICAgICAgZGV2KQogICAgICAgICAgICAgICAgdHlwZT0iRGV2ZWxv cG1lbnQiCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGdhbWVzKQogICAgICAgICAgICAgICAg Y2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uIHwgZnBzKQogICAg ICAgICAgICAgICAgICAgICAgICB0eXBlPUFjdGlvbkdhbWUKICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgICAgIGFyY2FkZSkKICAgICAgICAgICAgICAgICAgICAgICAgdHlw ZT1BcmNhZGVHYW1lCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBi b2FyZCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1Cb2FyZEdhbWUKICAgICAgICAgICAg ICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGVtdWxhdGlvbikKICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZT1FbXVsYXRvcgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAg ICAgICAgICAga2lkcykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1LaWRzR2FtZQogICAg ICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgcHV6emxlKQogICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPUxvZ2ljR2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICAgICAgcm9ndWVsaWtlKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVJv bGVQbGF5aW5nCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBycGcp CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Um9sZVBsYXlpbmcKICAgICAgICAgICAgICAg ICAgICA7OwogICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb24pCiAgICAgICAgICAgICAgICAg ICAgICAgIHR5cGU9U2ltdWxhdGlvbgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAg ICAgICAgICAgc3BvcnRzKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVNwb3J0c0dhbWUK ICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5KQogICAg ICAgICAgICAgICAgICAgICAgICB0eXBlPVN0cmF0ZWd5R2FtZQogICAgICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICBlc2FjOwogICAgICAgICAgICAgICAgdHlwZT0iR2FtZTske3R5 cGV9IgogICAgICAgICAgICA7OwogICAgICAgICAgICBnbm9tZSkKICAgICAgICAgICAgICAgIHR5 cGU9Ikdub21lO0dUSyIKICAgICAgICAgICAgOzsKICAgICAgICAgICAga2RlKQogICAgICAgICAg ICAgICAgdHlwZT0iS0RFO1F0IgogICAgICAgICAgICA7OwogICAgICAgICAgICBtYWlsKQogICAg ICAgICAgICAgICAgdHlwZT0iTmV0d29yaztFbWFpbCIKICAgICAgICAgICAgOzsKICAgICAgICAg ICAgbWVkaWEpCiAgICAgICAgICAgICAgICBjYXNlICR7Y2F0bWlufSBpbiAKICAgICAgICAgICAg ICAgICAgICBnZngpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9R3JhcGhpY3MKICAgICAg ICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICAg ICAgICAgIGNhc2UgJHtjYXRtaW59IGluIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFk aW8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1UdW5lcgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdW5kKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9QXVkaW8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVRWCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW8pCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZT1WaWRlbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgICAgICAgICAgdHlw ZT0iQXVkaW9WaWRlbzske3R5cGV9IgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAg ICAgICBlc2FjCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIG5ldCkKICAgICAgICAgICAgICAg IGNhc2UgJHtjYXRtaW59IGluIAogICAgICAgICAgICAgICAgICAgIGRpYWx1cCkKICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZT1EaWFsdXAKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICAgICAgICAgIGZ0cCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1GaWxlVHJhbnNm ZXIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGltKQogICAgICAg ICAgICAgICAgICAgICAgICB0eXBlPUluc3RhbnRNZXNzYWdpbmcKICAgICAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgICAgIGlyYykKICAgICAgICAgICAgICAgICAgICAgICAgdHlw ZT1JUkNDbGllbnQKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIG1h aWwpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RW1haWwKICAgICAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgICAgIG5ld3MpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGU9TmV3cwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgbm50cCkK ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1OZXdzCiAgICAgICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgICAgICAgICBwMnApCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Rmls ZVRyYW5zZmVyCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICB2b2lw KQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVRlbGVwaG9ueQogICAgICAgICAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICAgICBlc2FjOwogICAgICAgICAgICAgICAgdHlwZT0iTmV0d29y azske3R5cGV9IgogICAgICAgICAgICA7OwogICAgICAgICAgICBzY2kpCiAgICAgICAgICAgICAg ICBjYXNlICR7Y2F0bWlufSBpbiAKICAgICAgICAgICAgICAgICAgICBhc3RybyopCiAgICAgICAg ICAgICAgICAgICAgICAgIHR5cGU9QXN0cm9ub215CiAgICAgICAgICAgICAgICAgICAgOzsKICAg ICAgICAgICAgICAgICAgICBiaW8qKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUJpb2xv Z3kKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGNhbGMqKQogICAg ICAgICAgICAgICAgICAgICAgICB0eXBlPUNhbGN1bGF0b3IKICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgICAgIGNoZW0qKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBl PUNoZW1pc3RyeQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZWxl YyopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RWxlY3Ryb25pY3MKICAgICAgICAgICAg ICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGdlbyopCiAgICAgICAgICAgICAgICAgICAg ICAgIHR5cGU9R2VvbG9neQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAg ICAgbWF0aCopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9TWF0aAogICAgICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgcGh5c2ljcykKICAgICAgICAgICAgICAgICAg ICAgICAgdHlwZT1QaHlzaWNzCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg ICAgICB2aXN1YWwqKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPURhdGFWaXN1YWxpemF0 aW9uCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAgICAgICAg ICAgICAgICB0eXBlPSJFZHVjYXRpb247U2NpZW5jZTske3R5cGV9IgogICAgICAgICAgICA7Owog ICAgICAgICAgICBzeXMpCiAgICAgICAgICAgICAgICB0eXBlPSJTeXN0ZW0iCiAgICAgICAgICAg IDs7CiAgICAgICAgICAgIHd3dykKICAgICAgICAgICAgICAgIGNhc2UgJHtjYXRtaW59IGluIAog ICAgICAgICAgICAgICAgICAgIGNsaWVudCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1X ZWJCcm93c2VyCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAg ICAgICAgICAgICAgICB0eXBlPSJOZXR3b3JrOyR7dHlwZX0iCiAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICopCiAgICAgICAgICAgICAgICB0eXBlPQogICAgICAgICAgICA7OwogICAgICAgIGVz YWM7CiAgICBmaTsKICAgIGlmIFsgIiR7U0xPVH0iID09ICIwIiBdOyB0aGVuCiAgICAgICAgbG9j YWwgZGVza3RvcF9uYW1lPSIke1BOfSI7CiAgICBlbHNlCiAgICAgICAgbG9jYWwgZGVza3RvcF9u YW1lPSIke1BOfS0ke1NMT1R9IjsKICAgIGZpOwogICAgbG9jYWwgZGVza3RvcD0iJHtUfS8kKGVj aG8gJHtleGVjfSB8IHNlZCAnczpbWzpzcGFjZTpdLzpdOl86ZycpLSR7ZGVza3RvcF9uYW1lfS5k ZXNrdG9wIjsKICAgIHR5cGU9JHt0eXBlJTt9JHt0eXBlOis7fTsKICAgIGVzaG9wdHNfcHVzaCAt cyBleHRnbG9iOwogICAgaWYgW1sgLW4gJHtpY29ufSAmJiAke2ljb259ICE9IC8qIF1dICYmIFtb ICR7aWNvbn0gPT0gKi54cG0gfHwgJHtpY29ufSA9PSAqLnBuZyB8fCAke2ljb259ID09ICouc3Zn IF1dOyB0aGVuCiAgICAgICAgZXdhcm4gIkFzIGRlc2NyaWJlZCBpbiB0aGUgSWNvbiBUaGVtZSBT cGVjaWZpY2F0aW9uLCBpY29uIGZpbGUgZXh0ZW5zaW9ucyBhcmUgbm90IjsKICAgICAgICBld2Fy biAiYWxsb3dlZCBpbiAuZGVza3RvcCBmaWxlcyBpZiB0aGUgdmFsdWUgaXMgbm90IGFuIGFic29s dXRlIHBhdGguIjsKICAgICAgICBpY29uPSR7aWNvbiUuQCh4cG18cG5nfHN2Zyl9OwogICAgZmk7 CiAgICBlc2hvcHRzX3BvcDsKICAgIGNhdCA+ICIke2Rlc2t0b3B9IiAgPDwtRU9GCltEZXNrdG9w IEVudHJ5XQpOYW1lPSR7bmFtZX0KVHlwZT1BcHBsaWNhdGlvbgpDb21tZW50PSR7REVTQ1JJUFRJ T059CkV4ZWM9JHtleGVjfQpUcnlFeGVjPSR7ZXhlYyUlICp9Ckljb249JHtpY29ufQpDYXRlZ29y aWVzPSR7dHlwZX0KRU9GCgogICAgaWYgW1sgJHtmaWVsZHM6LT19ICE9ICo9KiBdXTsgdGhlbgog ICAgICAgIGV3YXJuICJtYWtlX2Rlc2t0b3BfZW50cnk6IHVwZGF0ZSB5b3VyIDV0aCBhcmcgdG8g cmVhZCBQYXRoPSR7ZmllbGRzfSI7CiAgICAgICAgZmllbGRzPSJQYXRoPSR7ZmllbGRzfSI7CiAg ICBmaTsKICAgIFtbIC1uICR7ZmllbGRzfSBdXSAmJiBwcmludGYgJyViXG4nICIke2ZpZWxkc30i ID4+ICIke2Rlc2t0b3B9IjsKICAgICggaW5zaW50byAvdXNyL3NoYXJlL2FwcGxpY2F0aW9uczsK ICAgIGRvaW5zICIke2Rlc2t0b3B9IiApIHx8IGRpZSAiaW5zdGFsbGluZyBkZXNrdG9wIGZpbGUg ZmFpbGVkIgp9Cm1ha2Vfc2Vzc2lvbl9kZXNrdG9wICgpIAp7IAogICAgW1sgLXogJDEgXV0gJiYg ZWVycm9yICIkMDogWW91IG11c3Qgc3BlY2lmeSB0aGUgdGl0bGUiICYmIHJldHVybiAxOwogICAg W1sgLXogJDIgXV0gJiYgZWVycm9yICIkMDogWW91IG11c3Qgc3BlY2lmeSB0aGUgY29tbWFuZCIg JiYgcmV0dXJuIDE7CiAgICBsb2NhbCB0aXRsZT0kMTsKICAgIGxvY2FsIGNvbW1hbmQ9JDI7CiAg ICBsb2NhbCBkZXNrdG9wPSR7VH0vJHt3bTotJHtQTn19LmRlc2t0b3A7CiAgICBzaGlmdCAyOwog ICAgY2F0ID4gIiR7ZGVza3RvcH0iICA8PC1FT0YKW0Rlc2t0b3AgRW50cnldCk5hbWU9JHt0aXRs ZX0KQ29tbWVudD1UaGlzIHNlc3Npb24gbG9ncyB5b3UgaW50byAke3RpdGxlfQpFeGVjPSR7Y29t bWFuZH0gJCoKVHJ5RXhlYz0ke2NvbW1hbmR9ClR5cGU9WFNlc3Npb24KRU9GCgogICAgKCBpbnNp bnRvIC91c3Ivc2hhcmUveHNlc3Npb25zOwogICAgZG9pbnMgIiR7ZGVza3RvcH0iICkKfQptYWtl X3dyYXBwZXIgKCkgCnsgCiAgICBsb2NhbCB3cmFwcGVyPSQxIGJpbj0kMiBjaGRpcj0kMyBsaWJk aXI9JDQgcGF0aD0kNTsKICAgIGxvY2FsIHRtcHdyYXBwZXI9JChlbWt0ZW1wKTsKICAgIGNhdCA+ ICIke3RtcHdyYXBwZXJ9IiAgPDxFT0YKIyEvYmluL3NoCmNkICIke2NoZGlyOi0ufSIKaWYgWyAt biAiJHtsaWJkaXJ9IiBdIDsgdGhlbgoJaWYgWyAiXCR7TERfTElCUkFSWV9QQVRIK3NldH0iID0g InNldCIgXSA7IHRoZW4KCQlleHBvcnQgTERfTElCUkFSWV9QQVRIPSJcJHtMRF9MSUJSQVJZX1BB VEh9OiR7bGliZGlyfSIKCWVsc2UKCQlleHBvcnQgTERfTElCUkFSWV9QQVRIPSIke2xpYmRpcn0i CglmaQpmaQpleGVjICR7YmlufSAiXCRAIgpFT0YKCiAgICBjaG1vZCBnbytyeCAiJHt0bXB3cmFw cGVyfSI7CiAgICBpZiBbWyAtbiAke3BhdGh9IF1dOyB0aGVuCiAgICAgICAgKCBleGVpbnRvICIk e3BhdGh9IjsKICAgICAgICBuZXdleGUgIiR7dG1wd3JhcHBlcn0iICIke3dyYXBwZXJ9IiApIHx8 IGRpZTsKICAgIGVsc2UKICAgICAgICBuZXdiaW4gIiR7dG1wd3JhcHBlcn0iICIke3dyYXBwZXJ9 IiB8fCBkaWU7CiAgICBmaQp9Cm1vdmVfb2xkX21vZHVsZWRiICgpIAp7IAogICAgZGVidWctcHJp bnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBPTERESVI9IiR7Uk9PVH0iL3Vz ci9zaGFyZS9tb2R1bGUtcmVidWlsZC87CiAgICBsb2NhbCBORVdESVI9IiR7Uk9PVH0iL3Zhci9s aWIvbW9kdWxlLXJlYnVpbGQvOwogICAgaWYgW1sgLWYgIiR7T0xERElSfSIvbW9kdWxlZGIgXV07 IHRoZW4KICAgICAgICBbWyAhIC1kICIke05FV0RJUn0iIF1dICYmIG1rZGlyIC1wICIke05FV0RJ Un0iOwogICAgICAgIFtbICEgLWYgIiR7TkVXRElSfSIvbW9kdWxlZGIgXV0gJiYgbXYgIiR7T0xE RElSfSIvbW9kdWxlZGIgIiR7TkVXRElSfSIvbW9kdWxlZGI7CiAgICAgICAgcm0gLWYgIiR7T0xE RElSfSIvKjsKICAgICAgICBybWRpciAiJHtPTERESVJ9IjsKICAgIGZpCn0KbXVsdGlsaWJfZW52 ICgpIAp7IAogICAgbG9jYWwgQ1RBUkdFVD0kezE6LSR7Q1RBUkdFVH19OwogICAgY2FzZSAke0NU QVJHRVR9IGluIAogICAgICAgIHg4Nl82NCopCiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfeDg2 PSR7Q0ZMQUdTX3g4Ni0tbTMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3g4Nj0ke0NUQVJH RVQveDg2XzY0L2k2ODZ9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF94ODY9JHtDSE9TVF94 ODZ9OwogICAgICAgICAgICBpZiBbWyAke1NZTUxJTktfTElCfSA9PSAieWVzIiBdXTsgdGhlbgog ICAgICAgICAgICAgICAgZXhwb3J0IExJQkRJUl94ODY9ImxpYjMyIjsKICAgICAgICAgICAgZWxz ZQogICAgICAgICAgICAgICAgZXhwb3J0IExJQkRJUl94ODY9ImxpYiI7CiAgICAgICAgICAgIGZp OwogICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX2FtZDY0PSR7Q0ZMQUdTX2FtZDY0LS1tNjR9Owog ICAgICAgICAgICBleHBvcnQgQ0hPU1RfYW1kNjQ9JHtDVEFSR0VUfTsKICAgICAgICAgICAgZXhw b3J0IENUQVJHRVRfYW1kNjQ9JHtDSE9TVF9hbWQ2NH07CiAgICAgICAgICAgIGV4cG9ydCBMSUJE SVJfYW1kNjQ9ImxpYjY0IjsKICAgICAgICAgICAgZXhwb3J0IENGTEFHU194MzI9JHtDRkxBR1Nf eDMyLS1teDMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3gzMj0ke0NUQVJHRVR9OwogICAg ICAgICAgICBleHBvcnQgQ1RBUkdFVF94MzI9JHtDSE9TVF94MzJ9OwogICAgICAgICAgICBleHBv cnQgTElCRElSX3gzMj0ibGlieDMyIjsKICAgICAgICAgICAgOiAke01VTFRJTElCX0FCSVM9YW1k NjQgeDg2fTsKICAgICAgICAgICAgOiAke0RFRkFVTFRfQUJJPWFtZDY0fQogICAgICAgIDs7CiAg ICAgICAgbWlwczY0KikKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19vMzI9JHtDRkxBR1NfbzMy LS1tYWJpPTMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX28zMj0ke0NUQVJHRVQvbWlwczY0 L21pcHN9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9vMzI9JHtDSE9TVF9vMzJ9OwogICAg ICAgICAgICBleHBvcnQgTElCRElSX28zMj0ibGliIjsKICAgICAgICAgICAgZXhwb3J0IENGTEFH U19uMzI9JHtDRkxBR1NfbjMyLS1tYWJpPW4zMn07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9u MzI9JHtDVEFSR0VUfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfbjMyPSR7Q0hPU1RfbjMy fTsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9uMzI9ImxpYjMyIjsKICAgICAgICAgICAgZXhw b3J0IENGTEFHU19uNjQ9JHtDRkxBR1NfbjY0LS1tYWJpPTY0fTsKICAgICAgICAgICAgZXhwb3J0 IENIT1NUX242ND0ke0NUQVJHRVR9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9uNjQ9JHtD SE9TVF9uNjR9OwogICAgICAgICAgICBleHBvcnQgTElCRElSX242ND0ibGliNjQiOwogICAgICAg ICAgICA6ICR7TVVMVElMSUJfQUJJUz1uNjQgbjMyIG8zMn07CiAgICAgICAgICAgIDogJHtERUZB VUxUX0FCST1uMzJ9CiAgICAgICAgOzsKICAgICAgICBwb3dlcnBjNjQqKQogICAgICAgICAgICBl eHBvcnQgQ0ZMQUdTX3BwYz0ke0NGTEFHU19wcGMtLW0zMn07CiAgICAgICAgICAgIGV4cG9ydCBD SE9TVF9wcGM9JHtDVEFSR0VUL3Bvd2VycGM2NC9wb3dlcnBjfTsKICAgICAgICAgICAgZXhwb3J0 IENUQVJHRVRfcHBjPSR7Q0hPU1RfcHBjfTsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9wcGM9 ImxpYiI7CiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfcHBjNjQ9JHtDRkxBR1NfcHBjNjQtLW02 NH07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9wcGM2ND0ke0NUQVJHRVR9OwogICAgICAgICAg ICBleHBvcnQgQ1RBUkdFVF9wcGM2ND0ke0NIT1NUX3BwYzY0fTsKICAgICAgICAgICAgZXhwb3J0 IExJQkRJUl9wcGM2ND0ibGliNjQiOwogICAgICAgICAgICA6ICR7TVVMVElMSUJfQUJJUz1wcGM2 NCBwcGN9OwogICAgICAgICAgICA6ICR7REVGQVVMVF9BQkk9cHBjNjR9CiAgICAgICAgOzsKICAg ICAgICBzMzkweCopCiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfczM5MD0ke0NGTEFHU19zMzkw LS1tMzF9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1RfczM5MD0ke0NUQVJHRVQvczM5MHgvczM5 MH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX3MzOTA9JHtDSE9TVF9zMzkwfTsKICAgICAg ICAgICAgZXhwb3J0IExJQkRJUl9zMzkwPSJsaWIiOwogICAgICAgICAgICBleHBvcnQgQ0ZMQUdT X3MzOTB4PSR7Q0ZMQUdTX3MzOTB4LS1tNjR9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1RfczM5 MHg9JHtDVEFSR0VUfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfczM5MHg9JHtDSE9TVF9z MzkweH07CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfczM5MHg9ImxpYjY0IjsKICAgICAgICAg ICAgOiAke01VTFRJTElCX0FCSVM9czM5MHggczM5MH07CiAgICAgICAgICAgIDogJHtERUZBVUxU X0FCST1zMzkweH0KICAgICAgICA7OwogICAgICAgIHNwYXJjKikKICAgICAgICAgICAgZXhwb3J0 IENGTEFHU19zcGFyYzMyPSR7Q0ZMQUdTX3NwYXJjMzItLW0zMn07CiAgICAgICAgICAgIGV4cG9y dCBDSE9TVF9zcGFyYzMyPSR7Q1RBUkdFVC9zcGFyYzY0L3NwYXJjfTsKICAgICAgICAgICAgZXhw b3J0IENUQVJHRVRfc3BhcmMzMj0ke0NIT1NUX3NwYXJjMzJ9OwogICAgICAgICAgICBleHBvcnQg TElCRElSX3NwYXJjMzI9ImxpYiI7CiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1Nfc3BhcmM2ND0k e0NGTEFHU19zcGFyYzY0LS1tNjR9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1Rfc3BhcmM2ND0k e0NUQVJHRVR9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9zcGFyYzY0PSR7Q0hPU1Rfc3Bh cmM2NH07CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfc3BhcmM2ND0ibGliNjQiOwogICAgICAg ICAgICA6ICR7TVVMVElMSUJfQUJJUz1zcGFyYzY0IHNwYXJjMzJ9OwogICAgICAgICAgICA6ICR7 REVGQVVMVF9BQkk9c3BhcmM2NH0KICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIDog JHtNVUxUSUxJQl9BQklTPWRlZmF1bHR9OwogICAgICAgICAgICA6ICR7REVGQVVMVF9BQkk9ZGVm YXVsdH0KICAgICAgICA7OwogICAgZXNhYzsKICAgIGV4cG9ydCBNVUxUSUxJQl9BQklTIERFRkFV TFRfQUJJCn0KbXVsdGlsaWJfdG9vbGNoYWluX3NldHVwICgpIAp7IAogICAgbG9jYWwgdiB2djsK ICAgIGV4cG9ydCBBQkk9JDE7CiAgICBpZiBbWyAke19fREVGQVVMVF9BQklfU0FWRUR9ID09ICJ0 cnVlIiBdXTsgdGhlbgogICAgICAgIGZvciB2IGluIENIT1NUIENCVUlMRCBBUyBDQyBDWFggTEQ7 CiAgICAgICAgZG8KICAgICAgICAgICAgdnY9Il9fYWJpX3NhdmVkXyR7dn0iOwogICAgICAgICAg ICBleHBvcnQgJHt2fT0iJHshdnZ9IjsKICAgICAgICAgICAgdW5zZXQgJHt2dn07CiAgICAgICAg ZG9uZTsKICAgICAgICB1bnNldCBfX0RFRkFVTFRfQUJJX1NBVkVEOwogICAgZmk7CiAgICBpZiBb WyAke0FCSX0gIT0gJHtERUZBVUxUX0FCSX0gXV07IHRoZW4KICAgICAgICBmb3IgdiBpbiBDSE9T VCBDQlVJTEQgQVMgQ0MgQ1hYIExEOwogICAgICAgIGRvCiAgICAgICAgICAgIGV4cG9ydCBfX2Fi aV9zYXZlZF8ke3Z9PSIkeyF2fSI7CiAgICAgICAgZG9uZTsKICAgICAgICBleHBvcnQgX19ERUZB VUxUX0FCSV9TQVZFRD0idHJ1ZSI7CiAgICAgICAgZXhwb3J0IENIT1NUPSQoZ2V0X2FiaV9DSE9T VCAke0RFRkFVTFRfQUJJfSk7CiAgICAgICAgZXhwb3J0IENDPSIkKHRjLWdldENDKSAkKGdldF9h YmlfQ0ZMQUdTKSI7CiAgICAgICAgZXhwb3J0IENYWD0iJCh0Yy1nZXRDWFgpICQoZ2V0X2FiaV9D RkxBR1MpIjsKICAgICAgICBleHBvcnQgTEQ9IiQodGMtZ2V0TEQpICQoZ2V0X2FiaV9MREZMQUdT KSI7CiAgICAgICAgZXhwb3J0IENIT1NUPSQoZ2V0X2FiaV9DSE9TVCAkMSk7CiAgICAgICAgZXhw b3J0IENCVUlMRD0kKGdldF9hYmlfQ0hPU1QgJDEpOwogICAgZmkKfQpuZXdpY29uICgpIAp7IAog ICAgKCBpbnNpbnRvIC91c3Ivc2hhcmUvcGl4bWFwczsKICAgIG5ld2lucyAiJEAiICkKfQpuZXdt ZW51ICgpIAp7IAogICAgKCBpbnNpbnRvIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zOwogICAgbmV3 aW5zICIkQCIgKQp9Cm51bWJlcl9hYmlzICgpIAp7IAogICAgc2V0IC0tIGBnZXRfaW5zdGFsbF9h YmlzYDsKICAgIGVjaG8gJCMKfQpwYXRoX2V4aXN0cyAoKSAKeyAKICAgIGxvY2FsIG9wdD0kMTsK ICAgIFtbICR7b3B0fSA9PSAtW2FvXSBdXSAmJiBzaGlmdCB8fCBvcHQ9Ii1hIjsKICAgIFtbICQj IC1lcSAwIF1dICYmIHJldHVybiAxOwogICAgbG9jYWwgcCByPTA7CiAgICBmb3IgcCBpbiAiJEAi OwogICAgZG8KICAgICAgICBbWyAtZSAke3B9IF1dOwogICAgICAgIDogJCgoIHIgKz0gJD8gKSk7 CiAgICBkb25lOwogICAgY2FzZSAke29wdH0gaW4gCiAgICAgICAgLWEpCiAgICAgICAgICAgIHJl dHVybiAkKCggciAhPSAwICkpCiAgICAgICAgOzsKICAgICAgICAtbykKICAgICAgICAgICAgcmV0 dXJuICQoKCByID09ICQjICkpCiAgICAgICAgOzsKICAgIGVzYWMKfQpwa2dfbm9mZXRjaCAoKSAK eyAKICAgIF9lYXBpMF9wa2dfbm9mZXRjaCAiJEAiCn0KcGtnX3Bvc3RpbnN0ICgpIAp7IAogICAg ZWxvZyAiVG8gc3dpdGNoIHRvIEFUSSBPcGVuR0wsIHJ1biBcImVzZWxlY3Qgb3BlbmdsIHNldCBh dGlcIiI7CiAgICBlbG9nICJUbyBjaGFuZ2UgeW91ciB4b3JnLmNvbmYgeW91IGNhbiB1c2UgdGhl IGJ1bmRsZWQgXCJhdGljb25maWdcIiI7CiAgICBlbG9nOwogICAgZWxvZyAiSWYgeW91IGV4cGVy aWVuY2UgdW5leHBsYWluZWQgc2VnbWVudGF0aW9uIGZhdWx0cyBhbmQga2VybmVsIGNyYXNoZXMi OwogICAgZWxvZyAid2l0aCB0aGlzIGRyaXZlciBhbmQgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRp b25zIHN1Y2ggYXMgd2luZSwiOwogICAgZWxvZyAic2V0IFVzZUZhc3RUTFMgaW4geG9yZy5jb25m IHRvIGVpdGhlciAwIG9yIDEsIGJ1dCBub3QgMi4iOwogICAgZWxvZzsKICAgIGVsb2cgIkZ1bGx5 IHJlYm9vdGluZyB0aGUgc3lzdGVtIGFmdGVyIGFuICR7UE59IHVwZGF0ZSBpcyByZWNvbW1lbmRl ZCI7CiAgICBlbG9nICJTdG9wcGluZyBYb3JnLCByZWxvYWRpbmcgZmdscngga2VybmVsIG1vZHVs ZSBhbmQgcmVzdGFydCBYb3JnIjsKICAgIGVsb2cgIm1pZ2h0IG5vdCB3b3JrIjsKICAgIGVsb2c7 CiAgICBlbG9nICJTb21lIGNhcmRzIG5lZWQgYWNwaWQgcnVubmluZyB0byBoYW5kbGUgZXZlbnRz IjsKICAgIGVsb2cgIlBsZWFzZSBhZGQgaXQgdG8gYm9vdCBydW5sZXZlbCB3aXRoIHJjLXVwZGF0 ZSBhZGQgYWNwaWQgYm9vdCI7CiAgICBlbG9nOwogICAgZXdhcm4gIlRoaXMgcmVsZWFzZSBvZiBh dGktZHJpdmVycyBoYXMgYSBjcmFzaGluZyBidWcgd2hlbiB1c2luZyBYdiB2aWRlby4iOwogICAg ZXdhcm4gIlRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgY29uZmlndXJlIHlvdXIgdmlkZW8gcGxheWJh Y2sgc29mdHdhcmUgZm9yIjsKICAgIGV3YXJuICJPcGVuR0wgb3V0cHV0LiBTZWUgaHR0cHM6Ly9i dWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTM5MTE5MyI7CiAgICB1c2UgbW9kdWxlcyAm JiBsaW51eC1tb2RfcGtnX3Bvc3RpbnN0OwogICAgIiR7Uk9PVH0iL3Vzci9iaW4vZXNlbGVjdCBv cGVuZ2wgc2V0IC0tdXNlLW9sZCBhdGkKfQpwa2dfcG9zdHJtICgpIAp7IAogICAgdXNlIG1vZHVs ZXMgJiYgbGludXgtbW9kX3BrZ19wb3N0cm07CiAgICAiJHtST09UfSIvdXNyL2Jpbi9lc2VsZWN0 IG9wZW5nbCBzZXQgLS11c2Utb2xkIHhvcmcteDExCn0KcGtnX3ByZWluc3QgKCkgCnsgCiAgICB1 c2UgbW9kdWxlcyAmJiBsaW51eC1tb2RfcGtnX3ByZWluc3QKfQpwa2dfcHJlcm0gKCkgCnsgCiAg ICAiJHtST09UfSIvdXNyL2Jpbi9lc2VsZWN0IG9wZW5nbCBzZXQgLS11c2Utb2xkIHhvcmcteDEx Cn0KcGtnX3ByZXRlbmQgKCkgCnsgCiAgICBpZiB1c2UgbW9kdWxlczsgdGhlbgogICAgICAgIGxp bnV4LWluZm9fcGtnX3NldHVwOwogICAgICAgIHJlcXVpcmVfY29uZmlndXJlZF9rZXJuZWw7CiAg ICAgICAgX2NoZWNrX2tlcm5lbF9jb25maWc7CiAgICBmaQp9CnBrZ19zZXR1cCAoKSAKeyAKICAg IGlmIHVzZSBtb2R1bGVzOyB0aGVuCiAgICAgICAgTU9EVUxFX05BTUVTPSJmZ2xyeCh2aWRlbzok e1N9LyR7Rk9MREVSX1BSRUZJWH0vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54KSI7 CiAgICAgICAgQlVJTERfVEFSR0VUUz0ia21vZF9idWlsZCI7CiAgICAgICAgbGludXgtbW9kX3Br Z19zZXR1cDsKICAgICAgICBCVUlMRF9QQVJBTVM9IkdDQ19WRVJfTUFKPSQoZ2NjLW1ham9yLXZl cnNpb24pIEtWRVI9JHtLVl9GVUxMfSBLRElSPSR7S1ZfRElSfSI7CiAgICAgICAgQlVJTERfUEFS QU1TPSIke0JVSUxEX1BBUkFNU30gQ0ZMQUdTX01PRFVMRSs9XCItRE1PRFVMRSAtREFUSSAtREZH TFwiIjsKICAgICAgICBpZiBncmVwIC1xIGFyY2hfY29tcGF0X2FsbG9jX3VzZXJfc3BhY2UgJHtL Vl9ESVJ9L2FyY2gveDg2L2luY2x1ZGUvYXNtL2NvbXBhdC5oOyB0aGVuCiAgICAgICAgICAgIEJV SUxEX1BBUkFNUz0iJHtCVUlMRF9QQVJBTVN9IENGTEFHU19NT0RVTEUrPS1EQ09NUEFUX0FMTE9D X1VTRVJfU1BBQ0U9YXJjaF9jb21wYXRfYWxsb2NfdXNlcl9zcGFjZSI7CiAgICAgICAgZWxzZQog ICAgICAgICAgICBCVUlMRF9QQVJBTVM9IiR7QlVJTERfUEFSQU1TfSBDRkxBR1NfTU9EVUxFKz0t RENPTVBBVF9BTExPQ19VU0VSX1NQQUNFPWNvbXBhdF9hbGxvY191c2VyX3NwYWNlIjsKICAgICAg ICBmaTsKICAgIGZpOwogICAgTU9EVUxFX0RJUj0iJHtTfS8ke0ZPTERFUl9QUkVGSVh9L2xpYi9t b2R1bGVzL2ZnbHJ4L2J1aWxkX21vZCI7CiAgICBCQVNFX0RJUj0iJHtTfS94cGljIjsKICAgIGlm IHVzZSBhbWQ2NDsgdGhlbgogICAgICAgIE1ZX0JBU0VfRElSPSIke0JBU0VfRElSfV82NGEiOwog ICAgICAgIFBLR19MSUJESVI9bGliNjQ7CiAgICAgICAgQVJDSF9ESVI9IiR7U30vYXJjaC94ODZf NjQiOwogICAgZWxzZQogICAgICAgIE1ZX0JBU0VfRElSPSIke0JBU0VfRElSfSI7CiAgICAgICAg UEtHX0xJQkRJUj1saWI7CiAgICAgICAgQVJDSF9ESVI9IiR7U30vYXJjaC94ODYiOwogICAgZmk7 CiAgICBlbG9nOwogICAgZWxvZyAiUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGRyaXZlciBzdXBwb3J0 cyBvbmx5IGdyYXBoaWMgY2FyZHMgYmFzZWQgb24iOwogICAgZWxvZyAicjYwMCBjaGlwc2V0IGFu ZCBuZXdlci4iOwogICAgZWxvZyAiVGhpcyByZXByZXNlbnQgdGhlIEFUSSBSYWRlb24gSEQgc2Vy aWVzIGF0IHRoaXMgbW9tZW50LiI7CiAgICBlbG9nOwogICAgZWxvZyAiSWYgeW91ciBjYXJkIGlz IG9sZGVyIHRoZW4gdXNlICR7Q0FURUdPUll9L3hmODYtdmlkZW8tYXRpIjsKICAgIGVsb2cgIkZv ciBtaWdyYXRpb24gaW5mb3JtYXRpb25zIHBsZWFzZSByZWZmZXIgdG86IjsKICAgIGVsb2cgImh0 dHA6Ly93d3cuZ2VudG9vLm9yZy9wcm9qL2VuL2Rlc2t0b3AveC94MTEvYXRpLW1pZ3JhdGlvbi1n dWlkZS54bWwiOwogICAgZWluZm8KfQpwcmVzZXJ2ZV9vbGRfbGliICgpIAp7IAogICAgaWYgW1sg JHtFQlVJTERfUEhBU0V9ICE9ICJwcmVpbnN0IiBdXTsgdGhlbgogICAgICAgIGVlcnJvciAicHJl c2VydmVfb2xkX2xpYigpIG11c3QgYmUgY2FsbGVkIGZyb20gcGtnX3ByZWluc3QoKSBvbmx5IjsK ICAgICAgICBkaWUgIkludmFsaWQgcHJlc2VydmVfb2xkX2xpYigpIHVzYWdlIjsKICAgIGZpOwog ICAgW1sgLXogJDEgXV0gJiYgZGllICJVc2FnZTogcHJlc2VydmVfb2xkX2xpYiA8bGlicmFyeSB0 byBwcmVzZXJ2ZT4gW21vcmUgbGlicmFyaWVzIHRvIHByZXNlcnZlXSI7CiAgICBoYXMgcHJlc2Vy dmUtbGlicyAke0ZFQVRVUkVTfSAmJiByZXR1cm4gMDsKICAgIGxvY2FsIGxpYiBkaXI7CiAgICBm b3IgbGliIGluICIkQCI7CiAgICBkbwogICAgICAgIFtbIC1lICR7Uk9PVH0vJHtsaWJ9IF1dIHx8 IGNvbnRpbnVlOwogICAgICAgIGRpcj0ke2xpYiUvKn07CiAgICAgICAgZG9kaXIgJHtkaXJ9IHx8 IGRpZSAiZG9kaXIgJHtkaXJ9IGZhaWxlZCI7CiAgICAgICAgY3AgIiR7Uk9PVH0iLyR7bGlifSAi JHtEfSIvJHtsaWJ9IHx8IGRpZSAiY3AgJHtsaWJ9IGZhaWxlZCI7CiAgICAgICAgdG91Y2ggIiR7 RH0iLyR7bGlifTsKICAgIGRvbmUKfQpwcmVzZXJ2ZV9vbGRfbGliX25vdGlmeSAoKSAKeyAKICAg IGlmIFtbICR7RUJVSUxEX1BIQVNFfSAhPSAicG9zdGluc3QiIF1dOyB0aGVuCiAgICAgICAgZWVy cm9yICJwcmVzZXJ2ZV9vbGRfbGliX25vdGlmeSgpIG11c3QgYmUgY2FsbGVkIGZyb20gcGtnX3Bv c3RpbnN0KCkgb25seSI7CiAgICAgICAgZGllICJJbnZhbGlkIHByZXNlcnZlX29sZF9saWJfbm90 aWZ5KCkgdXNhZ2UiOwogICAgZmk7CiAgICBoYXMgcHJlc2VydmUtbGlicyAke0ZFQVRVUkVTfSAm JiByZXR1cm4gMDsKICAgIGxvY2FsIGxpYiBub3RpY2U9MDsKICAgIGZvciBsaWIgaW4gIiRAIjsK ICAgIGRvCiAgICAgICAgW1sgLWUgJHtST09UfS8ke2xpYn0gXV0gfHwgY29udGludWU7CiAgICAg ICAgaWYgW1sgJHtub3RpY2V9IC1lcSAwIF1dOyB0aGVuCiAgICAgICAgICAgIG5vdGljZT0xOwog ICAgICAgICAgICBld2FybiAiT2xkIHZlcnNpb25zIG9mIGluc3RhbGxlZCBsaWJyYXJpZXMgd2Vy ZSBkZXRlY3RlZCBvbiB5b3VyIHN5c3RlbS4iOwogICAgICAgICAgICBld2FybiAiSW4gb3JkZXIg dG8gYXZvaWQgYnJlYWtpbmcgcGFja2FnZXMgdGhhdCBkZXBlbmQgb24gdGhlc2Ugb2xkIGxpYnMs IjsKICAgICAgICAgICAgZXdhcm4gInRoZSBsaWJyYXJpZXMgYXJlIG5vdCBiZWluZyByZW1vdmVk LiAgWW91IG5lZWQgdG8gcnVuIHJldmRlcC1yZWJ1aWxkIjsKICAgICAgICAgICAgZXdhcm4gImlu IG9yZGVyIHRvIHJlbW92ZSB0aGVzZSBvbGQgZGVwZW5kZW5jaWVzLiAgSWYgeW91IGRvIG5vdCBo YXZlIHRoaXMiOwogICAgICAgICAgICBld2FybiAiaGVscGVyIHByb2dyYW0sIHNpbXBseSBlbWVy Z2UgdGhlICdnZW50b29sa2l0JyBwYWNrYWdlLiI7CiAgICAgICAgICAgIGV3YXJuOwogICAgICAg IGZpOwogICAgICAgIFtbICR7UE59ID09ICJtcGZyIiBdXSAmJiBsaWI9JHtsaWIjIyovfTsKICAg ICAgICBld2FybiAiICAjIHJldmRlcC1yZWJ1aWxkIC0tbGlicmFyeSAnJHtsaWJ9JyI7CiAgICBk b25lOwogICAgaWYgW1sgJHtub3RpY2V9IC1lcSAxIF1dOyB0aGVuCiAgICAgICAgZXdhcm47CiAg ICAgICAgZXdhcm4gIk9uY2UgeW91J3ZlIGZpbmlzaGVkIHJ1bm5pbmcgcmV2ZGVwLXJlYnVpbGQs IGl0IHNob3VsZCBiZSBzYWZlIHRvIjsKICAgICAgICBld2FybiAiZGVsZXRlIHRoZSBvbGQgbGli cmFyaWVzLiAgSGVyZSBpcyBhIGNvcHkgJiBwYXN0ZSBmb3IgdGhlIGxhenk6IjsKICAgICAgICBm b3IgbGliIGluICIkQCI7CiAgICAgICAgZG8KICAgICAgICAgICAgZXdhcm4gIiAgIyBybSAnJHts aWJ9JyI7CiAgICAgICAgZG9uZTsKICAgIGZpCn0KcWVlcnJvciAoKSAKeyAKICAgIHFvdXQgZWVy cm9yICIke0B9Igp9CnFlaW5mbyAoKSAKeyAKICAgIHFvdXQgZWluZm8gIiR7QH0iCn0KcWV3YXJu ICgpIAp7IAogICAgcW91dCBld2FybiAiJHtAfSIKfQpxb3V0ICgpIAp7IAogICAgbG9jYWwgb3V0 cHV0bXNnIHR5cGU7CiAgICB0eXBlPSR7MX07CiAgICBzaGlmdDsKICAgIG91dHB1dG1zZz0iJHtA fSI7CiAgICBjYXNlICIke0VCVUlMRF9QSEFTRX0iIGluIAogICAgICAgIGRlcGVuZCkKICAgICAg ICAgICAgdW5zZXQgb3V0cHV0bXNnCiAgICAgICAgOzsKICAgICAgICBjbGVhbikKICAgICAgICAg ICAgdW5zZXQgb3V0cHV0bXNnCiAgICAgICAgOzsKICAgICAgICBwcmVpbnN0KQogICAgICAgICAg ICB1bnNldCBvdXRwdXRtc2cKICAgICAgICA7OwogICAgZXNhYzsKICAgIFsgLW4gIiR7b3V0cHV0 bXNnfSIgXSAmJiAke3R5cGV9ICIke291dHB1dG1zZ30iCn0KcmVtb3ZlX21vZHVsZWRiICgpIAp7 IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBNT0RV TEVEQl9ESVI9IiR7Uk9PVH0iL3Zhci9saWIvbW9kdWxlLXJlYnVpbGQvOwogICAgbW92ZV9vbGRf bW9kdWxlZGI7CiAgICBpZiBncmVwIC1xcyAke0NBVEVHT1JZfS8ke1BOfS0ke1BWUn0gIiR7TU9E VUxFREJfRElSfSIvbW9kdWxlZGI7IHRoZW4KICAgICAgICBlaW5mbyAiUmVtb3ZpbmcgJHtDQVRF R09SWX0vJHtQTn0tJHtQVlJ9IGZyb20gbW9kdWxlZGIuIjsKICAgICAgICBzZWQgLWkgLWUgIi8u KiR7Q0FURUdPUll9XC8ke1BOfS0ke1BWUn0uKi9kIiAiJHtNT0RVTEVEQl9ESVJ9Ii9tb2R1bGVk YjsKICAgIGZpCn0KcmVwbGFjZV9hbGxfdmVyc2lvbl9zZXBhcmF0b3JzICgpIAp7IAogICAgbG9j YWwgYz0oJChnZXRfYWxsX3ZlcnNpb25fY29tcG9uZW50cyAiJHsyOi0ke1BWfX0iKSk7CiAgICBj PSR7Y1tAXS8vWy0uX10vJDF9OwogICAgZWNobyAke2MvLyB9Cn0KcmVwbGFjZV92ZXJzaW9uX3Nl cGFyYXRvciAoKSAKeyAKICAgIGVzaG9wdHNfcHVzaCAtcyBleHRnbG9iOwogICAgbG9jYWwgdyBj IHY9IiR7MzotJHtQVn19IjsKICAgIGRlY2xhcmUgLWkgaSBmb3VuZD0wOwogICAgdz0kezE6LTF9 OwogICAgYz0oJChnZXRfYWxsX3ZlcnNpb25fY29tcG9uZW50cyAke3Z9KSk7CiAgICBpZiBbWyAk e3d9ICE9ICpbWzpkaWdpdDpdXSogXV07IHRoZW4KICAgICAgICBmb3IgKChpID0gMDsgaSA8ICR7 I2NbQF19OyBpKyspKQogICAgICAgIGRvCiAgICAgICAgICAgIGlmIFtbICR7Y1tpXX0gPT0gJHt3 fSBdXTsgdGhlbgogICAgICAgICAgICAgICAgY1tpXT0kezJ9OwogICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICBlbHNlCiAgICAgICAgZm9yICgo aSA9IDA7IGkgPCAkeyNjW0BdfTsgaSsrKSkKICAgICAgICBkbwogICAgICAgICAgICBpZiBbWyAt biAiJHtjW2ldLy9bXi0uX119IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgZm91bmQrPTE7CiAg ICAgICAgICAgICAgICBpZiAoKGZvdW5kID09IHcpKTsgdGhlbgogICAgICAgICAgICAgICAgICAg IGNbaV09JHsyfTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGZp OwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgZmk7CiAgICBjPSR7Y1sqXX07CiAg ICBlY2hvICR7Yy8vIH07CiAgICBlc2hvcHRzX3BvcAp9CnJlcXVpcmVfY29uZmlndXJlZF9rZXJu ZWwgKCkgCnsgCiAgICBpZiAhIGxpbnV4X2NvbmZpZ19zcmNfZXhpc3RzOyB0aGVuCiAgICAgICAg cWVlcnJvciAiQ291bGQgbm90IGZpbmQgYSB1c2FibGUgLmNvbmZpZyBpbiB0aGUga2VybmVsIHNv dXJjZSBkaXJlY3RvcnkuIjsKICAgICAgICBxZWVycm9yICJQbGVhc2UgZW5zdXJlIHRoYXQgJHtL RVJORUxfRElSfSBwb2ludHMgdG8gYSBjb25maWd1cmVkIHNldCBvZiBMaW51eCBzb3VyY2VzLiI7 CiAgICAgICAgcWVlcnJvciAiSWYgeW91IGFyZSB1c2luZyBLQlVJTERfT1VUUFVULCBwbGVhc2Ug c2V0IHRoZSBlbnZpcm9ubWVudCB2YXIgc28gdGhhdCI7CiAgICAgICAgcWVlcnJvciAiaXQgcG9p bnRzIHRvIHRoZSBuZWNlc3Nhcnkgb2JqZWN0IGRpcmVjdG9yeSBzbyB0aGF0IGl0IG1pZ2h0IGZp bmQgLmNvbmZpZy4iOwogICAgICAgIGRpZSAiS2VybmVsIG5vdCBjb25maWd1cmVkOyBubyAuY29u ZmlnIGZvdW5kIGluICR7S1ZfT1VUX0RJUn0iOwogICAgZmkKfQpzZXEgKCkgCnsgCiAgICBsb2Nh bCBwPSQodHlwZSAtUCBzZXEpOwogICAgaWYgW1sgLW4gJHtwfSBdXTsgdGhlbgogICAgICAgICIk e3B9IiAiJEAiOwogICAgICAgIHJldHVybiAkPzsKICAgIGZpOwogICAgY2FzZSAkIyBpbiAKICAg ICAgICAxKQogICAgICAgICAgICBtaW49MSBtYXg9JDEgc3RlcD0xCiAgICAgICAgOzsKICAgICAg ICAyKQogICAgICAgICAgICBtaW49JDEgbWF4PSQyIHN0ZXA9MQogICAgICAgIDs7CiAgICAgICAg MykKICAgICAgICAgICAgbWluPSQxIG1heD0kMyBzdGVwPSQyCiAgICAgICAgOzsKICAgICAgICAq KQogICAgICAgICAgICBkaWUgInNlcSBjYWxsZWQgd2l0aCB3cm9uZyBudW1iZXIgb2YgYXJndW1l bnRzIgogICAgICAgIDs7CiAgICBlc2FjOwogICAgcD0kKHR5cGUgLVAgam90KTsKICAgIGlmIFtb IC1uICR7cH0gXV07IHRoZW4KICAgICAgICBsb2NhbCByZXBzOwogICAgICAgIGlmIFtbICR7c3Rl cH0gIT0gMCBdXTsgdGhlbgogICAgICAgICAgICByZXBzPSQoKCAobWF4IC0gbWluKSAvIHN0ZXAg KyAxICkpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcmVwcz0wOwogICAgICAgIGZpOwogICAg ICAgIGpvdCAkcmVwcyAkbWluICRtYXggJHN0ZXA7CiAgICAgICAgcmV0dXJuICQ/OwogICAgZmk7 CiAgICB3aGlsZSA6OyBkbwogICAgICAgIFtbICRtYXggPCAkbWluICYmICRzdGVwID4gMCBdXSAm JiBicmVhazsKICAgICAgICBbWyAkbWluIDwgJG1heCAmJiAkc3RlcCA8IDAgXV0gJiYgYnJlYWs7 CiAgICAgICAgZWNobyAkbWluOwogICAgICAgIDogJCgoIG1pbiArPSBzdGVwICkpOwogICAgZG9u ZTsKICAgIHJldHVybiAwCn0Kc2V0X2FyY2hfdG9fa2VybmVsICgpIAp7IAogICAgZXhwb3J0IEFS Q0g9JCh0Yy1hcmNoLWtlcm5lbCkKfQpzZXRfYXJjaF90b19wb3J0YWdlICgpIAp7IAogICAgZXhw b3J0IEFSQ0g9JCh0Yy1hcmNoKQp9CnNldF9rdm9iaiAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1 bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgaWYga2VybmVsX2lzIGdlIDIgNjsgdGhlbgogICAg ICAgIEtWX09CSj0ia28iOwogICAgZWxzZQogICAgICAgIEtWX09CSj0ibyI7CiAgICBmaQp9CnNy Y19jb21waWxlICgpIAp7IAogICAgdXNlIG1vZHVsZXMgJiYgbGludXgtbW9kX3NyY19jb21waWxl OwogICAgZWJlZ2luICJCdWlsZGluZyBmZ2xfZ2x4Z2VhcnMiOwogICAgY2QgIiR7U30iL2V4dHJh L2ZnbF9nbHhnZWFyczsKICAgIGZ1bmN0aW9uIHNyY190ZXN0ICgpIAogICAgeyAKICAgICAgICA6 CiAgICB9OwogICAgIiQodGMtZ2V0Q0MpIiAtbyBmZ2xfZ2x4Z2VhcnMgJHtDRkxBR1N9ICR7TERG TEFHU30gLURVU0VfR0xVIC1JIiR7U30iLyR7Rk9MREVSX1BSRUZJWH11c3IvaW5jbHVkZSBmZ2xf Z2x4Z2VhcnMuYyAtbEdMIC1sR0xVIC1sWDExIC1sbSB8fCBkaWUgImZnbF9nbHhnZWFycyBidWls ZCBmYWlsZWQiOwogICAgZWVuZCAkPwp9CnNyY19jb25maWd1cmUgKCkgCnsgCiAgICBfZWFwaTJf c3JjX2NvbmZpZ3VyZSAiJEAiCn0Kc3JjX2luc3RhbGwgKCkgCnsgCiAgICB1c2UgbW9kdWxlcyAm JiBsaW51eC1tb2Rfc3JjX2luc3RhbGw7CiAgICBlY2hvICJDT0xPTl9TRVBBUkFURUQ9TElCR0xf RFJJVkVSU19QQVRIIiA+ICIke1R9LzAzYXRpLWNvbG9uLXNlcCI7CiAgICBkb2VudmQgIiR7VH0v MDNhdGktY29sb24tc2VwIiB8fCBkaWU7CiAgICBpZiBoYXNfbXVsdGlsaWJfcHJvZmlsZTsgdGhl bgogICAgICAgIGxvY2FsIE9BQkk9JHtBQkl9OwogICAgICAgIGZvciBBQkkgaW4gJChnZXRfaW5z dGFsbF9hYmlzKTsKICAgICAgICBkbwogICAgICAgICAgICBzcmNfaW5zdGFsbC1saWJzOwogICAg ICAgIGRvbmU7CiAgICAgICAgQUJJPSR7T0FCSX07CiAgICAgICAgdW5zZXQgT0FCSTsKICAgIGVs c2UKICAgICAgICBzcmNfaW5zdGFsbC1saWJzOwogICAgZmk7CiAgICBleGVpbnRvIC91c3IvJChn ZXRfbGliZGlyKS94b3JnL21vZHVsZXMvZHJpdmVyczsKICAgIGRvZXhlICIke01ZX0JBU0VfRElS fSIvdXNyL1gxMVI2LyR7UEtHX0xJQkRJUn0vbW9kdWxlcy9kcml2ZXJzL2ZnbHJ4X2Rydi5zbzsK ICAgIGV4ZWludG8gL3Vzci8kKGdldF9saWJkaXIpL3hvcmcvbW9kdWxlcy9saW51eDsKICAgIGRv ZXhlICIke01ZX0JBU0VfRElSfSIvdXNyL1gxMVI2LyR7UEtHX0xJQkRJUn0vbW9kdWxlcy9saW51 eC9saWJmZ2xyeGRybS5zbzsKICAgIGV4ZWludG8gL3Vzci8kKGdldF9saWJkaXIpL3hvcmcvbW9k dWxlczsKICAgIGRvZXhlICIke01ZX0JBU0VfRElSfSIvdXNyL1gxMVI2LyR7UEtHX0xJQkRJUn0v bW9kdWxlcy97Z2xlc3guc28sYW1keG1tLnNvfTsKICAgIGludG8gL29wdDsKICAgIGRvc2JpbiAi JHtBUkNIX0RJUn0iL3Vzci9zYmluL2F0aWV2ZW50c2Q7CiAgICB1c2UgcXQ0ICYmIGRvc2JpbiAi JHtBUkNIX0RJUn0iL3Vzci9zYmluL2FtZG5vdGlmeXVpOwogICAgdXNlIG9wZW5jbCAmJiBkb2Jp biAiJHtBUkNIX0RJUn0iL3Vzci9iaW4vY2xpbmZvOwogICAgZG9iaW4gIiR7QVJDSF9ESVJ9Ii91 c3IvWDExUjYvYmluLyo7CiAgICBpbnNpbnRvIC9ldGMvYXRpOwogICAgZXhlaW50byAvZXRjL2F0 aTsKICAgIGRvaW5zICR7Rk9MREVSX1BSRUZJWH1ldGMvYXRpL3tsb2dvKixjb250cm9sLGF0aW9n bC54bWwsc2lnbmF0dXJlLGFtZHBjc2RiLmRlZmF1bHR9OwogICAgZG9leGUgJHtGT0xERVJfUFJF RklYfWV0Yy9hdGkvYXV0aGF0aWV2ZW50c2Quc2g7CiAgICBpZiB1c2Ugb3BlbmNsOyB0aGVuCiAg ICAgICAgaW5zaW50byAvZXRjL09wZW5DTC92ZW5kb3JzLzsKICAgICAgICBpZiBbWyAiJHtBQkl9 IiA9PSAiYW1kNjQiIF1dOyB0aGVuCiAgICAgICAgICAgIGRvaW5zICIke0FSQ0hfRElSfSIvZXRj L09wZW5DTC92ZW5kb3JzL2FtZG9jbDY0LmljZCB8fCBkaWUgImRvaW5zIGZhaWxlZCI7CiAgICAg ICAgZWxzZQogICAgICAgICAgICBkb2lucyAiJHtBUkNIX0RJUn0iL2V0Yy9PcGVuQ0wvdmVuZG9y cy9hbWRvY2wzMi5pY2QgfHwgZGllICJkb2lucyBmYWlsZWQiOwogICAgICAgIGZpOwogICAgZmk7 CiAgICBpbnNpbnRvIC91c3I7CiAgICBkb2lucyAtciAke0ZPTERFUl9QUkVGSVh9dXNyL2luY2x1 ZGU7CiAgICBpbnNpbnRvIC91c3IvaW5jbHVkZS9YMTEvZXh0ZW5zaW9uczsKICAgIGludG8gL3Vz cjsKICAgIGRvc2JpbiAke0ZPTERFUl9QUkVGSVh9dXNyL3NiaW4vKjsKICAgIGlmIHVzZSBxdDQ7 IHRoZW4KICAgICAgICBpbnNpbnRvIC91c3Ivc2hhcmU7CiAgICAgICAgZG9pbnMgLXIgJHtGT0xE RVJfUFJFRklYfXVzci9zaGFyZS9hdGk7CiAgICAgICAgaW5zaW50byAvdXNyL3NoYXJlL3BpeG1h cHM7CiAgICAgICAgZG9pbnMgJHtGT0xERVJfUFJFRklYfXVzci9zaGFyZS9pY29ucy9jY2NfbGFy Z2UueHBtOwogICAgICAgIG1ha2VfZGVza3RvcF9lbnRyeSBhbWRjY2NsZSAnQVRJIENhdGFseXN0 IENvbnRyb2wgQ2VudGVyJyBjY2NfbGFyZ2UgU3lzdGVtOwogICAgZmk7CiAgICBkb2h0bWwgLXIg JHtGT0xERVJfUFJFRklYfXVzci9zaGFyZS9kb2MvZmdscng7CiAgICBkb21hbiAke0ZPTERFUl9Q UkVGSVh9dXNyL3NoYXJlL21hbi9tYW44L2F0aWV2ZW50c2QuODsKICAgIHB1c2hkICR7Rk9MREVS X1BSRUZJWH11c3Ivc2hhcmUvZG9jL2ZnbHJ4L2V4YW1wbGVzL2V0Yy9hY3BpID4gL2Rldi9udWxs OwogICAgZXhlaW50byAvZXRjL2FjcGk7CiAgICBkb2V4ZSBhdGktcG93ZXJtb2RlLnNoOwogICAg aW5zaW50byAvZXRjL2FjcGkvZXZlbnRzOwogICAgZG9pbnMgZXZlbnRzLyo7CiAgICBwb3BkID4g L2Rldi9udWxsOwogICAgZG9iaW4gZXh0cmEvZmdsX2dseGdlYXJzL2ZnbF9nbHhnZWFyczsKICAg IG5ld2RvYyBleHRyYS9mZ2xfZ2x4Z2VhcnMvUkVBRE1FIFJFQURNRS5mZ2xfZ2x4Z2VhcnM7CiAg ICBuZXdpbml0ZCAiJHtGSUxFU0RJUn0iL2F0aWV2ZW50c2QuaW5pdCBhdGlldmVudHNkOwogICAg ZWNobyAnQVRJRVZFTlRTRE9QVFM9IiInID4gIiR7VH0iL2F0aWV2ZW50c2QuY29uZjsKICAgIG5l d2NvbmZkICIke1R9Ii9hdGlldmVudHNkLmNvbmYgYXRpZXZlbnRzZDsKICAgIGV4ZWludG8gL3Vz ci8kKGdldF9saWJkaXIpL2ZnbHJ4OwogICAgZG9leGUgIiR7RklMRVNESVJ9Ii9zd2l0Y2hsaWJH TCB8fCBkaWUgImRvZXhlIHN3aXRjaGxpYkdMIGZhaWxlZCI7CiAgICBjcCAiJHtGSUxFU0RJUn0i L3N3aXRjaGxpYkdMICIke1R9Ii9zd2l0Y2hsaWJnbHg7CiAgICBkb2V4ZSAiJHtUfSIvc3dpdGNo bGliZ2x4IHx8IGRpZSAiZG9leGUgc3dpdGNobGliZ2x4IGZhaWxlZCIKfQpzcmNfaW5zdGFsbC1s aWJzICgpIAp7IAogICAgaWYgW1sgIiR7QUJJfSIgPT0gImFtZDY0IiBdXTsgdGhlbgogICAgICAg IGxvY2FsIEVYX0JBU0VfRElSPSIke0JBU0VfRElSfV82NGEiOwogICAgICAgIGxvY2FsIHBrZ2xp YmRpcj1saWI2NDsKICAgICAgICBsb2NhbCBNWV9BUkNIX0RJUj0iJHtTfS9hcmNoL3g4Nl82NCI7 CiAgICBlbHNlCiAgICAgICAgbG9jYWwgRVhfQkFTRV9ESVI9IiR7QkFTRV9ESVJ9IjsKICAgICAg ICBsb2NhbCBwa2dsaWJkaXI9bGliOwogICAgICAgIGxvY2FsIE1ZX0FSQ0hfRElSPSIke1N9L2Fy Y2gveDg2IjsKICAgIGZpOwogICAgZWluZm8gImF0aSB0cmVlICcke3BrZ2xpYmRpcn0nIC0+ICck KGdldF9saWJkaXIpJyBvbiBzeXN0ZW0iOwogICAgbG9jYWwgQVRJX1JPT1Q9L3Vzci8kKGdldF9s aWJkaXIpL29wZW5nbC9hdGk7CiAgICBsb2NhbCBsaWJtYWpvcj0xIGxpYm1pbm9yPTI7CiAgICBs b2NhbCBsaWJ2ZXI9JHtsaWJtYWpvcn0uJHtsaWJtaW5vcn07CiAgICBleGVpbnRvICR7QVRJX1JP T1R9L2xpYjsKICAgIG5ld2V4ZSAiJHtNWV9BUkNIX0RJUn0iL3Vzci9YMTFSNi8ke3BrZ2xpYmRp cn0vZmdscngvZmdscngtbGliR0wuc28uJHtsaWJ2ZXJ9IGxpYkdMLnNvLiR7bGlidmVyfTsKICAg IGRvc3ltIGxpYkdMLnNvLiR7bGlidmVyfSAke0FUSV9ST09UfS9saWIvbGliR0wuc28uJHtsaWJt YWpvcn07CiAgICBkb3N5bSBsaWJHTC5zby4ke2xpYnZlcn0gJHtBVElfUk9PVH0vbGliL2xpYkdM LnNvOwogICAgZXhlaW50byAke0FUSV9ST09UfS9leHRlbnNpb25zOwogICAgZG9leGUgIiR7RVhf QkFTRV9ESVJ9Ii91c3IvWDExUjYvJHtwa2dsaWJkaXJ9L21vZHVsZXMvZXh0ZW5zaW9ucy9mZ2xy eC9mZ2xyeC1saWJnbHguc287CiAgICBtdiAiJHtEfSIvJHtBVElfUk9PVH0vZXh0ZW5zaW9ucy97 ZmdscngtLH1saWJnbHguc287CiAgICBleGVpbnRvIC91c3IvJChnZXRfbGliZGlyKTsKICAgIGRv ZXhlICQoZmluZCAiJHtNWV9BUkNIX0RJUn0iL3Vzci9YMTFSNi8ke3BrZ2xpYmRpcn0gCQktbWF4 ZGVwdGggMSAtdHlwZSBmIC1uYW1lICcqLnNvKicgLW5vdCAtbmFtZSAnKmxpYkdMLnNvKicpOwog ICAgaW5zaW50byAvdXNyLyQoZ2V0X2xpYmRpcik7CiAgICBkb2lucyAkKGZpbmQgIiR7TVlfQVJD SF9ESVJ9Ii91c3IvWDExUjYvJHtwa2dsaWJkaXJ9IAkJLW1heGRlcHRoIDEgLXR5cGUgZiAtbm90 IC1uYW1lICcqLnNvKicpOwogICAgZXhlaW50byAvdXNyLyQoZ2V0X2xpYmRpcikvZHJpOwogICAg ZG9leGUgIiR7TVlfQVJDSF9ESVJ9Ii91c3IvWDExUjYvJHtwa2dsaWJkaXJ9L21vZHVsZXMvZHJp L2ZnbHJ4X2RyaS5zbzsKICAgIGV4ZWludG8gL3Vzci8kKGdldF9saWJkaXIpOwogICAgaWYgdXNl IG9wZW5jbDsgdGhlbgogICAgICAgIGRvZXhlICIke01ZX0FSQ0hfRElSfSIvdXNyLyR7cGtnbGli ZGlyfS9saWIqLnNvKjsKICAgIGVsc2UKICAgICAgICBkb2V4ZSAiJHtNWV9BUkNIX0RJUn0iL3Vz ci8ke3BrZ2xpYmRpcn0vbGliYXRpKi5zbyo7CiAgICBmaTsKICAgIGxvY2FsIGVudm5hbWU9IiR7 VH0iLzA0YXRpLWRyaS1wYXRoOwogICAgaWYgW1sgLW4gJHtBQkl9IF1dOyB0aGVuCiAgICAgICAg ZW52bmFtZT0iJHtlbnZuYW1lfS0ke0FCSX0iOwogICAgZmk7CiAgICBlY2hvICJMSUJHTF9EUklW RVJTX1BBVEg9L3Vzci8kKGdldF9saWJkaXIpL2RyaSIgPiAiJHtlbnZuYW1lfSI7CiAgICBkb2Vu dmQgIiR7ZW52bmFtZX0iOwogICAgZm9yIHNvIGluICQoZmluZCAiJHtEfSIvdXNyLyQoZ2V0X2xp YmRpcikgLW1heGRlcHRoIDEgLW5hbWUgKi5zby5bMC05XS5bMC05XSk7CiAgICBkbwogICAgICAg IGxvY2FsIHNvbmFtZT0ke3NvIyMqL307CiAgICAgICAgZG9zeW0gJHtzb25hbWV9IC91c3IvJChn ZXRfbGliZGlyKS8kKHNjYW5lbGYgLXFGICIjZiVTIiAke3NvfSk7CiAgICBkb25lCn0Kc3JjX3By ZXBhcmUgKCkgCnsgCiAgICBpZiB1c2UgbW9kdWxlczsgdGhlbgogICAgICAgIGlmIHVzZSBkZWJ1 ZzsgdGhlbgogICAgICAgICAgICBzZWQgLWkgJy9eI2RlZmluZSBEUk1fREVCVUdfQ09ERS9zLzAv MS8nICIke01PRFVMRV9ESVJ9L2ZpcmVnbF9wdWJsaWMuYyIgfHwgZGllICJGYWlsZWQgdG8gZW5h YmxlIGRlYnVnIG91dHB1dC4iOwogICAgICAgIGZpOwogICAgZmk7CiAgICBybSAiJHtBUkNIX0RJ Un0iL3Vzci9YMTFSNi9iaW4vZmdsX2dseGdlYXJzIHx8IGRpZSAiYmluIHJtIGZhaWxlZCI7CiAg ICB1c2UgcXQ0IHx8IHJtICIke0FSQ0hfRElSfSIvdXNyL1gxMVI2L2Jpbi9hbWRjY2NsZTsKICAg IHNlZCAtaSAtZSAiczovdmFyL2xpYi94ZG0vYXV0aGRpci9hdXRoZmlsZXMvOi92YXIvcnVuL3hh dXRoLzoiIC1lICJzOi92YXIvbGliL2dkbS86L3Zhci9nZG0vOiIgIiR7U30vJHtGT0xERVJfUFJF RklYfWV0Yy9hdGkvYXV0aGF0aWV2ZW50c2Quc2giIHx8IGRpZSAic2VkIGZhaWxlZC4iOwogICAg c2VkIC1pIC1lICdzOmZpbmdlcjp3aG86JyAiJHtTfS8ke0ZPTERFUl9QUkVGSVh9dXNyL3NoYXJl L2RvYy9mZ2xyeC9leGFtcGxlcy9ldGMvYWNwaS9hdGktcG93ZXJtb2RlLnNoIiB8fCBkaWUgIlJl cGxhY2luZyAnZmluZ2VyJyB3aXRoICd3aG8nIGZhaWxlZC4iOwogICAgZXBhdGNoICIke0ZJTEVT RElSfSIvYXRpLXBvd2VybW9kZS1vcHQtcGF0aC0yLnBhdGNoIHx8IGRpZSAiRmFpbGVkIHRvIGVw YXRjaCBwb3dlcm1vZGUtb3B0LXBhdGgtMi5wYXRjaCI7CiAgICBjZCAiJHtNT0RVTEVfRElSfSI7 CiAgICBjcCAke0FSQ0hfRElSfS9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvbGliZmdscnhf aXAuYSAyLjYueDsKICAgIGNvbnZlcnRfdG9fbSAyLjYueC9NYWtlZmlsZSB8fCBkaWUgImNvbnZl cnRfdG9fbSBmYWlsZWQiOwogICAgc2VkIC1pIC1lICdzL19fU01QX18vQ09ORklHX1NNUC8nICou YyAqaCB8fCBkaWUgIlNNUCBzZWQgZmFpbGVkIjsKICAgIHNlZCAtaSAtZSAncy9pZmRlZiBNT0RW RVJTSU9OUy9pZmRlZiBDT05GSUdfTU9EVkVSU0lPTlMvJyAqLmMgKi5oIHx8IGRpZSAiTU9EVkVS U0lPTlMgc2VkIGZhaWxlZCI7CiAgICBjZCAiJHtTfSI7CiAgICBta2RpciBleHRyYSB8fCBkaWUg Im1rZGlyIGZhaWxlZCI7CiAgICBjZCBleHRyYTsKICAgIHVucGFjayAuLy4uLyR7Rk9MREVSX1BS RUZJWH11c3Ivc3JjL2F0aS9mZ2xyeF9zYW1wbGVfc291cmNlLnRnegp9CnNyY190ZXN0ICgpIAp7 IAogICAgOgp9CnNyY191bnBhY2sgKCkgCnsgCiAgICBpZiBbWyAkKGdldF9tYWpvcl92ZXJzaW9u KSAtZ3QgOCBdXTsgdGhlbgogICAgICAgIGxvY2FsIHNyYz0iJHtESVNURElSfS8ke0F9IjsKICAg ICAgICBzaCAiJHtzcmN9IiAtLWV4dHJhY3QgIiR7U30iIDIgL2Rldi9udWxsICY+MTsKICAgIGVs c2UKICAgICAgICB1bnBhY2sgJHtBfTsKICAgIGZpCn0Kc3RyaXAtbGluZ3VhcyAoKSAKeyAKICAg IGxvY2FsIGxzIG5ld2xzIG5vbHM7CiAgICBpZiBbWyAkMSA9PSAiLWkiIF1dIHx8IFtbICQxID09 ICItdSIgXV07IHRoZW4KICAgICAgICBsb2NhbCBvcD0kMTsKICAgICAgICBzaGlmdDsKICAgICAg ICBscz0kKGZpbmQgIiQxIiAtbmFtZSAnKi5wbycgLWV4ZWMgYmFzZW5hbWUge30gLnBvICc7Jyk7 CiAgICAgICAgc2hpZnQ7CiAgICAgICAgbG9jYWwgZCBmOwogICAgICAgIGZvciBkIGluICIkQCI7 CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sgJHtvcH0gPT0gIi11IiBdXTsgdGhlbgogICAg ICAgICAgICAgICAgbmV3bHM9JHtsc307CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg IG5ld2xzPSIiOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgZm9yIGYgaW4gJChmaW5kICIk ZCIgLW5hbWUgJyoucG8nIC1leGVjIGJhc2VuYW1lIHt9IC5wbyAnOycpOwogICAgICAgICAgICBk bwogICAgICAgICAgICAgICAgaWYgW1sgJHtvcH0gPT0gIi1pIiBdXTsgdGhlbgogICAgICAgICAg ICAgICAgICAgIGhhcyAke2Z9ICR7bHN9ICYmIG5ld2xzPSIke25ld2xzfSAke2Z9IjsKICAgICAg ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBoYXMgJHtmfSAke2xzfSB8fCBuZXds cz0iJHtuZXdsc30gJHtmfSI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZG9uZTsK ICAgICAgICAgICAgbHM9JHtuZXdsc307CiAgICAgICAgZG9uZTsKICAgIGVsc2UKICAgICAgICBs cz0iJEAiOwogICAgZmk7CiAgICBub2xzPSIiOwogICAgbmV3bHM9IiI7CiAgICBmb3IgZiBpbiAk e0xJTkdVQVN9OwogICAgZG8KICAgICAgICBpZiBoYXMgJHtmfSAke2xzfTsgdGhlbgogICAgICAg ICAgICBuZXdscz0iJHtuZXdsc30gJHtmfSI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBub2xz PSIke25vbHN9ICR7Zn0iOwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIFtbIC1uICR7bm9sc30g XV0gJiYgZXdhcm4gIlNvcnJ5LCBidXQgJHtQTn0gZG9lcyBub3Qgc3VwcG9ydCB0aGUgTElOR1VB UzoiICR7bm9sc307CiAgICBleHBvcnQgTElOR1VBUz0ke25ld2xzOjF9Cn0Kc3RyaXBfbW9kdWxl bmFtZXMgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAg IGxvY2FsIGk7CiAgICBmb3IgaSBpbiAke01PRFVMRV9JR05PUkV9OwogICAgZG8KICAgICAgICBN T0RVTEVfTkFNRVM9JHtNT0RVTEVfTkFNRVMvLyR7aX0oKn07CiAgICBkb25lCn0KdGMtYXJjaCAo KSAKeyAKICAgIHRjLW5pbmphX21hZ2ljX3RvX2FyY2ggcG9ydGFnZSAiJEAiCn0KdGMtYXJjaC1r ZXJuZWwgKCkgCnsgCiAgICB0Yy1uaW5qYV9tYWdpY190b19hcmNoIGtlcm4gIiRAIgp9CnRjLWVu ZGlhbiAoKSAKeyAKICAgIGxvY2FsIGhvc3Q9JDE7CiAgICBbWyAteiAke2hvc3R9IF1dICYmIGhv c3Q9JHtDVEFSR0VUOi0ke0NIT1NUfX07CiAgICBob3N0PSR7aG9zdCUlLSp9OwogICAgY2FzZSAk e2hvc3R9IGluIAogICAgICAgIGFscGhhKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7 OwogICAgICAgIGFybSpiKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAg IGFybSopCiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAgICBjcmlzKikK ICAgICAgICAgICAgZWNobyBsaXR0bGUKICAgICAgICA7OwogICAgICAgIGhwcGEqKQogICAgICAg ICAgICBlY2hvIGJpZwogICAgICAgIDs7CiAgICAgICAgaT84NiopCiAgICAgICAgICAgIGVjaG8g bGl0dGxlCiAgICAgICAgOzsKICAgICAgICBpYTY0KikKICAgICAgICAgICAgZWNobyBsaXR0bGUK ICAgICAgICA7OwogICAgICAgIG02OCopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsK ICAgICAgICBtaXBzKmwqKQogICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAg ICAgbWlwcyopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAgICBwb3dlcnBj KikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAgIHMzOTAqKQogICAgICAg ICAgICBlY2hvIGJpZwogICAgICAgIDs7CiAgICAgICAgc2gqYiopCiAgICAgICAgICAgIGVjaG8g YmlnCiAgICAgICAgOzsKICAgICAgICBzaCopCiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAg ICAgOzsKICAgICAgICBzcGFyYyopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAg ICAgICB4ODZfNjQqKQogICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAg KikKICAgICAgICAgICAgZWNobyB3dGYKICAgICAgICA7OwogICAgZXNhYwp9CnRjLWVudl9idWls ZCAoKSAKeyAKICAgIENGTEFHUz0ke0JVSUxEX0NGTEFHUzotLU8xIC1waXBlfSBDWFhGTEFHUz0k e0JVSUxEX0NYWEZMQUdTOi0tTzEgLXBpcGV9IENQUEZMQUdTPSR7QlVJTERfQ1BQRkxBR1N9IExE RkxBR1M9JHtCVUlMRF9MREZMQUdTfSBBUj0kKHRjLWdldEJVSUxEX0FSKSBBUz0kKHRjLWdldEJV SUxEX0FTKSBDQz0kKHRjLWdldEJVSUxEX0NDKSBDUFA9JCh0Yy1nZXRCVUlMRF9DUFApIENYWD0k KHRjLWdldEJVSUxEX0NYWCkgTEQ9JCh0Yy1nZXRCVUlMRF9MRCkgTk09JCh0Yy1nZXRCVUlMRF9O TSkgUEtHX0NPTkZJRz0kKHRjLWdldEJVSUxEX1BLR19DT05GSUcpIFJBTkxJQj0kKHRjLWdldEJV SUxEX1JBTkxJQikgIiRAIgp9CnRjLWV4cG9ydCAoKSAKeyAKICAgIGxvY2FsIHZhcjsKICAgIGZv ciB2YXIgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgW1sgJCh0eXBlIC10IHRjLWdldCR7dmFyfSkg IT0gImZ1bmN0aW9uIiBdXSAmJiBkaWUgInRjLWV4cG9ydDogaW52YWxpZCBleHBvcnQgdmFyaWFi bGUgJyR7dmFyfSciOwogICAgICAgIGV2YWwgdGMtZ2V0JHt2YXJ9ID4gL2Rldi9udWxsOwogICAg ZG9uZQp9CnRjLWdldEFSICgpIAp7IAogICAgdGMtZ2V0UFJPRyBBUiBhciAiJEAiCn0KdGMtZ2V0 QVMgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIEFTIGFzICIkQCIKfQp0Yy1nZXRCVUlMRF9BUiAoKSAK eyAKICAgIHRjLWdldEJVSUxEX1BST0cgQVIgYXIgIiRAIgp9CnRjLWdldEJVSUxEX0FTICgpIAp7 IAogICAgdGMtZ2V0QlVJTERfUFJPRyBBUyBhcyAiJEAiCn0KdGMtZ2V0QlVJTERfQ0MgKCkgCnsg CiAgICB0Yy1nZXRCVUlMRF9QUk9HIENDIGdjYyAiJEAiCn0KdGMtZ2V0QlVJTERfQ1BQICgpIAp7 IAogICAgdGMtZ2V0QlVJTERfUFJPRyBDUFAgY3BwICIkQCIKfQp0Yy1nZXRCVUlMRF9DWFggKCkg CnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9HIENYWCBnKysgIiRAIgp9CnRjLWdldEJVSUxEX0xEICgp IAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBMRCBsZCAiJEAiCn0KdGMtZ2V0QlVJTERfTk0gKCkg CnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9HIE5NIG5tICIkQCIKfQp0Yy1nZXRCVUlMRF9PQkpDT1BZ ICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBPQkpDT1BZIG9iamNvcHkgIiRAIgp9CnRjLWdl dEJVSUxEX1BLR19DT05GSUcgKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9HIFBLR19DT05GSUcg cGtnLWNvbmZpZyAiJEAiCn0KdGMtZ2V0QlVJTERfUFJPRyAoKSAKeyAKICAgIF90Yy1nZXRQUk9H IENCVUlMRCAiQlVJTERfJDEgJDFfRk9SX0JVSUxEIEhPU1QkMSIgIiR7QDoyfSIKfQp0Yy1nZXRC VUlMRF9SQU5MSUIgKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9HIFJBTkxJQiByYW5saWIgIiRA Igp9CnRjLWdldEJVSUxEX1NUUklQICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBTVFJJUCBz dHJpcCAiJEAiCn0KdGMtZ2V0Q0MgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIENDIGdjYyAiJEAiCn0K dGMtZ2V0Q1BQICgpIAp7IAogICAgdGMtZ2V0UFJPRyBDUFAgY3BwICIkQCIKfQp0Yy1nZXRDWFgg KCkgCnsgCiAgICB0Yy1nZXRQUk9HIENYWCBnKysgIiRAIgp9CnRjLWdldERMTFdSQVAgKCkgCnsg CiAgICB0Yy1nZXRQUk9HIERMTFdSQVAgZGxsd3JhcCAiJEAiCn0KdGMtZ2V0Rjc3ICgpIAp7IAog ICAgdGMtZ2V0UFJPRyBGNzcgZ2ZvcnRyYW4gIiRAIgp9CnRjLWdldEZDICgpIAp7IAogICAgdGMt Z2V0UFJPRyBGQyBnZm9ydHJhbiAiJEAiCn0KdGMtZ2V0R0NKICgpIAp7IAogICAgdGMtZ2V0UFJP RyBHQ0ogZ2NqICIkQCIKfQp0Yy1nZXRMRCAoKSAKeyAKICAgIHRjLWdldFBST0cgTEQgbGQgIiRA Igp9CnRjLWdldE5NICgpIAp7IAogICAgdGMtZ2V0UFJPRyBOTSBubSAiJEAiCn0KdGMtZ2V0T0JK Q09QWSAoKSAKeyAKICAgIHRjLWdldFBST0cgT0JKQ09QWSBvYmpjb3B5ICIkQCIKfQp0Yy1nZXRQ S0dfQ09ORklHICgpIAp7IAogICAgdGMtZ2V0UFJPRyBQS0dfQ09ORklHIHBrZy1jb25maWcgIiRA Igp9CnRjLWdldFBST0cgKCkgCnsgCiAgICBfdGMtZ2V0UFJPRyBDSE9TVCAiJEAiCn0KdGMtZ2V0 UkFOTElCICgpIAp7IAogICAgdGMtZ2V0UFJPRyBSQU5MSUIgcmFubGliICIkQCIKfQp0Yy1nZXRS QyAoKSAKeyAKICAgIHRjLWdldFBST0cgUkMgd2luZHJlcyAiJEAiCn0KdGMtZ2V0U1RSSVAgKCkg CnsgCiAgICB0Yy1nZXRQUk9HIFNUUklQIHN0cmlwICIkQCIKfQp0Yy1oYXMtb3Blbm1wICgpIAp7 IAogICAgbG9jYWwgYmFzZT0iJHtUfS90ZXN0LXRjLW9wZW5tcCI7CiAgICBjYXQgPiAiJHtiYXNl fS5jIiAgPDwtRU9GCiNpbmNsdWRlIDxvbXAuaD4KaW50IG1haW4oKSB7CmludCBudGhyZWFkcywg dGlkLCByZXQgPSAwOwojcHJhZ21hIG9tcCBwYXJhbGxlbCBwcml2YXRlKG50aHJlYWRzLCB0aWQp CnsKdGlkID0gb21wX2dldF90aHJlYWRfbnVtKCk7Cm50aHJlYWRzID0gb21wX2dldF9udW1fdGhy ZWFkcygpOyByZXQgKz0gdGlkICsgbnRocmVhZHM7Cn0KcmV0dXJuIHJldDsKfQpFT0YKCiAgICAk KHRjLWdldENDICIkQCIpIC1mb3Blbm1wICIke2Jhc2V9LmMiIC1vICIke2Jhc2V9IiAmPi9kZXYv bnVsbDsKICAgIGxvY2FsIHJldD0kPzsKICAgIHJtIC1mICIke2Jhc2V9Iio7CiAgICByZXR1cm4g JHtyZXR9Cn0KdGMtaGFzLXRscyAoKSAKeyAKICAgIGxvY2FsIGJhc2U9IiR7VH0vdGVzdC10Yy10 bHMiOwogICAgY2F0ID4gIiR7YmFzZX0uYyIgIDw8LUVPRgppbnQgZm9vKGludCAqaSkgewpzdGF0 aWMgX190aHJlYWQgaW50IGogPSAwOwpyZXR1cm4gKmkgPyBqIDogKmk7Cn0KRU9GCgogICAgbG9j YWwgZmxhZ3M7CiAgICBjYXNlICQxIGluIAogICAgICAgIC1zKQogICAgICAgICAgICBmbGFncz0i LVMiCiAgICAgICAgOzsKICAgICAgICAtYykKICAgICAgICAgICAgZmxhZ3M9Ii1jIgogICAgICAg IDs7CiAgICAgICAgLWwpCgogICAgICAgIDs7CiAgICAgICAgLSopCiAgICAgICAgICAgIGRpZSAi VXNhZ2U6IHRjLWhhcy10bHMgWy1jfC1sXSBbdG9vbGNoYWluIHByZWZpeF0iCiAgICAgICAgOzsK ICAgIGVzYWM7CiAgICA6ICR7ZmxhZ3M6PS1mUElDIC1zaGFyZWQgLVdsLC16LGRlZnN9OwogICAg W1sgJDEgPT0gLSogXV0gJiYgc2hpZnQ7CiAgICAkKHRjLWdldENDICIkQCIpICR7ZmxhZ3N9ICIk e2Jhc2V9LmMiIC1vICIke2Jhc2V9IiAmPi9kZXYvbnVsbDsKICAgIGxvY2FsIHJldD0kPzsKICAg IHJtIC1mICIke2Jhc2V9Iio7CiAgICByZXR1cm4gJHtyZXR9Cn0KdGMtaXMtY3Jvc3MtY29tcGls ZXIgKCkgCnsgCiAgICByZXR1cm4gJChbWyAke0NCVUlMRDotJHtDSE9TVH19ICE9ICR7Q0hPU1R9 IF1dKQp9CnRjLWlzLWhhcmRmbG9hdCAoKSAKeyAKICAgIFtbICR7Q1RBUkdFVC8vXy8tfSA9PSAq LWhhcmRmbG9hdC0qIF1dICYmIGVjaG8gInllcyIgfHwgZWNobyAibm8iCn0KdGMtaXMtc29mdGZs b2F0ICgpIAp7IAogICAgY2FzZSAke0NUQVJHRVR9IGluIAogICAgICAgIGJmaW4qIHwgaDgzMDAq KQogICAgICAgICAgICBlY2hvICJvbmx5IgogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAg ICAgW1sgJHtDVEFSR0VULy9fLy19ID09ICotc29mdGZsb2F0LSogXV0gJiYgZWNobyAieWVzIiB8 fCBlY2hvICJubyIKICAgICAgICA7OwogICAgZXNhYwp9CnRjLWlzLXN0YXRpYy1vbmx5ICgpIAp7 IAogICAgbG9jYWwgaG9zdD0ke0NUQVJHRVQ6LSR7Q0hPU1R9fTsKICAgIHJldHVybiAkKFtbICR7 aG9zdH0gPT0gKi1taW50KiBdXSkKfQp0Yy1uaW5qYV9tYWdpY190b19hcmNoICgpIAp7IAogICAg ZnVuY3Rpb24gbmluaiAoKSAKICAgIHsgCiAgICAgICAgW1sgJHt0eXBlfSA9PSAia2VybiIgXV0g JiYgZWNobyAkMSB8fCBlY2hvICQyCiAgICB9OwogICAgbG9jYWwgdHlwZT0kMTsKICAgIGxvY2Fs IGhvc3Q9JDI7CiAgICBbWyAteiAke2hvc3R9IF1dICYmIGhvc3Q9JHtDVEFSR0VUOi0ke0NIT1NU fX07CiAgICBjYXNlICR7aG9zdH0gaW4gCiAgICAgICAgYWxwaGEqKQogICAgICAgICAgICBlY2hv IGFscGhhCiAgICAgICAgOzsKICAgICAgICBhcm0qKQogICAgICAgICAgICBlY2hvIGFybQogICAg ICAgIDs7CiAgICAgICAgYXZyKikKICAgICAgICAgICAgbmluaiBhdnIzMiBhdnIKICAgICAgICA7 OwogICAgICAgIGJmaW4qKQogICAgICAgICAgICBuaW5qIGJsYWNrZmluIGJmaW4KICAgICAgICA7 OwogICAgICAgIGNyaXMqKQogICAgICAgICAgICBlY2hvIGNyaXMKICAgICAgICA7OwogICAgICAg IGhwcGEqKQogICAgICAgICAgICBuaW5qIHBhcmlzYyBocHBhCiAgICAgICAgOzsKICAgICAgICBp Pzg2KikKICAgICAgICAgICAgaWYgW1sgJHt0eXBlfSA9PSAia2VybiIgXV0gJiYgW1sgJChLVl90 b19pbnQgJHtLVn0pIC1sdCAkKEtWX3RvX2ludCAyLjYuMjQpIHx8ICR7aG9zdH0gPT0gKmZyZWVi c2QqIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvIGkzODY7CiAgICAgICAgICAgIGVsc2UK ICAgICAgICAgICAgICAgIGVjaG8geDg2OwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICAg ICAgaWE2NCopCiAgICAgICAgICAgIGVjaG8gaWE2NAogICAgICAgIDs7CiAgICAgICAgbTY4KikK ICAgICAgICAgICAgZWNobyBtNjhrCiAgICAgICAgOzsKICAgICAgICBtaXBzKikKICAgICAgICAg ICAgZWNobyBtaXBzCiAgICAgICAgOzsKICAgICAgICBuaW9zMiopCiAgICAgICAgICAgIGVjaG8g bmlvczIKICAgICAgICA7OwogICAgICAgIG5pb3MqKQogICAgICAgICAgICBlY2hvIG5pb3MKICAg ICAgICA7OwogICAgICAgIHBvd2VycGMqKQogICAgICAgICAgICBpZiBbWyAke3R5cGV9ID09ICJr ZXJuIiBdXSAmJiBbWyAkKEtWX3RvX2ludCAke0tWfSkgLWdlICQoS1ZfdG9faW50IDIuNi4xNikg XV07IHRoZW4KICAgICAgICAgICAgICAgIGVjaG8gcG93ZXJwYzsKICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgICAgaWYgW1sgJHt0eXBlfSA9PSAia2VybiIgXV0gJiYgW1sgJChLVl90b19p bnQgJHtLVn0pIC1lcSAkKEtWX3RvX2ludCAyLjYuMTUpIF1dOyB0aGVuCiAgICAgICAgICAgICAg ICAgICAgaWYgW1sgJHtob3N0fSA9PSBwb3dlcnBjNjQqIF1dIHx8IFtbICR7UFJPRklMRV9BUkNI fSA9PSAicHBjNjQiIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gcG93ZXJw YzsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8g cHBjOwogICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgICAgIGlmIFtbICR7aG9zdH0gPT0gcG93ZXJwYzY0KiBdXTsgdGhlbgogICAgICAg ICAgICAgICAgICAgICAgICBlY2hvIHBwYzY0OwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAg ICAgICAgICAgICAgICAgICAgICAgaWYgW1sgJHtQUk9GSUxFX0FSQ0h9ID09ICJwcGM2NCIgXV07 IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbmogcHBjNjQgcHBjOwogICAgICAg ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBw YzsKICAgICAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAg ICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAgICAgIHMzOTAq KQogICAgICAgICAgICBlY2hvIHMzOTAKICAgICAgICA7OwogICAgICAgIHNoNjQqKQogICAgICAg ICAgICBuaW5qIHNoNjQgc2gKICAgICAgICA7OwogICAgICAgIHNoKikKICAgICAgICAgICAgZWNo byBzaAogICAgICAgIDs7CiAgICAgICAgc3BhcmM2NCopCiAgICAgICAgICAgIG5pbmogc3BhcmM2 NCBzcGFyYwogICAgICAgIDs7CiAgICAgICAgc3BhcmMqKQogICAgICAgICAgICBbWyAke1BST0ZJ TEVfQVJDSH0gPT0gInNwYXJjNjQiIF1dICYmIG5pbmogc3BhcmM2NCBzcGFyYyB8fCBlY2hvIHNw YXJjCiAgICAgICAgOzsKICAgICAgICB2YXgqKQogICAgICAgICAgICBlY2hvIHZheAogICAgICAg IDs7CiAgICAgICAgeDg2XzY0KmZyZWVic2QqKQogICAgICAgICAgICBlY2hvIGFtZDY0CiAgICAg ICAgOzsKICAgICAgICB4ODZfNjQqKQogICAgICAgICAgICBpZiBbWyAke3R5cGV9ID09ICJrZXJu IiBdXSAmJiBbWyAkKEtWX3RvX2ludCAke0tWfSkgLWdlICQoS1ZfdG9faW50IDIuNi4yNCkgXV07 IHRoZW4KICAgICAgICAgICAgICAgIGVjaG8geDg2OwogICAgICAgICAgICBlbHNlCiAgICAgICAg ICAgICAgICBuaW5qIHg4Nl82NCBhbWQ2NDsKICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAg ICAgICopCiAgICAgICAgICAgIGVjaG8gdW5rbm93bgogICAgICAgIDs7CiAgICBlc2FjCn0KdHJl ZWNvcHkgKCkgCnsgCiAgICBkZXN0PSR7ISN9OwogICAgZmlsZXNfY291bnQ9JCM7CiAgICB3aGls ZSAoKCAkIyA+IDEgKSk7IGRvCiAgICAgICAgZGlyc3RydWN0PSQoZGlybmFtZSAiJDEiKTsKICAg ICAgICBta2RpciAtcCAiJHtkZXN0fS8ke2RpcnN0cnVjdH0iOwogICAgICAgIGNwIC1wUFIgIiQx IiAiJHtkZXN0fS8ke2RpcnN0cnVjdH0iOwogICAgICAgIHNoaWZ0OwogICAgZG9uZQp9CnVucGFj a19tYWtlc2VsZiAoKSAKeyAKICAgIGxvY2FsIHNyY19pbnB1dD0kezE6LSR7QX19OwogICAgbG9j YWwgc3JjPSQoZmluZF91bnBhY2thYmxlX2ZpbGUgIiR7c3JjX2lucHV0fSIpOwogICAgbG9jYWwg c2tpcD0kMjsKICAgIGxvY2FsIGV4ZT0kMzsKICAgIFtbIC16ICR7c3JjfSBdXSAmJiBkaWUgIkNv dWxkIG5vdCBsb2NhdGUgc291cmNlIGZvciAnJHtzcmNfaW5wdXR9JyI7CiAgICBsb2NhbCBzaHJ0 c3JjPSQoYmFzZW5hbWUgIiR7c3JjfSIpOwogICAgZWNobyAiPj4+IFVucGFja2luZyAke3NocnRz cmN9IHRvICR7UFdEfSI7CiAgICBpZiBbWyAteiAke3NraXB9IF1dOyB0aGVuCiAgICAgICAgbG9j YWwgdmVyPSQoZ3JlcCAtbTEgLWEgJyMuKk1ha2VzZWxmJyAiJHtzcmN9IiB8IGF3ayAne3ByaW50 ICRORn0nKTsKICAgICAgICBsb2NhbCBza2lwPTA7CiAgICAgICAgZXhlPXRhaWw7CiAgICAgICAg Y2FzZSAke3Zlcn0gaW4gCiAgICAgICAgICAgIDEuNS4qIHwgMS42LjAtbnYpCiAgICAgICAgICAg ICAgICBza2lwPSQoZ3JlcCAtYSBec2tpcD0gIiR7c3JjfSIgfCBjdXQgLWQ9IC1mMikKICAgICAg ICAgICAgOzsKICAgICAgICAgICAgMi4wIHwgMi4wLjEpCiAgICAgICAgICAgICAgICBza2lwPSQo Z3JlcCAtYSBeJwkndGFpbCAiJHtzcmN9IiB8IGF3ayAne3ByaW50ICQyfScgfCBjdXQgLWIyLSkK ICAgICAgICAgICAgOzsKICAgICAgICAgICAgMi4xLjEpCiAgICAgICAgICAgICAgICBza2lwPSQo Z3JlcCAtYSBeb2Zmc2V0PSAiJHtzcmN9IiB8IGF3ayAne3ByaW50ICQyfScgfCBjdXQgLWIyLSk7 CiAgICAgICAgICAgICAgICAoKCBza2lwKysgKSkKICAgICAgICAgICAgOzsKICAgICAgICAgICAg Mi4xLjIpCiAgICAgICAgICAgICAgICBza2lwPSQoZ3JlcCAtYSBeb2Zmc2V0PSAiJHtzcmN9IiB8 IGF3ayAne3ByaW50ICQzfScgfCBoZWFkIC1uIDEpOwogICAgICAgICAgICAgICAgKCggc2tpcCsr ICkpCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIDIuMS4zKQogICAgICAgICAgICAgICAgc2tp cD1gZ3JlcCAtYSBeb2Zmc2V0PSAiJHtzcmN9IiB8IGF3ayAne3ByaW50ICQzfSdgOwogICAgICAg ICAgICAgICAgKCggc2tpcCsrICkpCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIDIuMS40IHwg Mi4xLjUpCiAgICAgICAgICAgICAgICBza2lwPSQoZ3JlcCAtYSBvZmZzZXQ9LipoZWFkLip3YyAi JHtzcmN9IiB8IGF3ayAne3ByaW50ICQzfScgfCBoZWFkIC1uIDEpOwogICAgICAgICAgICAgICAg c2tpcD0kKGhlYWQgLW4gJHtza2lwfSAiJHtzcmN9IiB8IHdjIC1jKTsKICAgICAgICAgICAgICAg IGV4ZT0iZGQiCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICBl ZXJyb3IgIkknbSBzb3JyeSwgYnV0IEkgd2FzIHVuYWJsZSB0byBzdXBwb3J0IHRoZSBNYWtlc2Vs ZiBmaWxlLiI7CiAgICAgICAgICAgICAgICBlZXJyb3IgIlRoZSB2ZXJzaW9uIEkgZGV0ZWN0ZWQg d2FzICcke3Zlcn0nLiI7CiAgICAgICAgICAgICAgICBlZXJyb3IgIlBsZWFzZSBmaWxlIGEgYnVn IGFib3V0IHRoZSBmaWxlICR7c2hydHNyY30gYXQiOwogICAgICAgICAgICAgICAgZWVycm9yICJo dHRwOi8vYnVncy5nZW50b28ub3JnLyBzbyB0aGF0IHN1cHBvcnQgY2FuIGJlIGFkZGVkLiI7CiAg ICAgICAgICAgICAgICBkaWUgIm1ha2VzZWxmIHZlcnNpb24gJyR7dmVyfScgbm90IHN1cHBvcnRl ZCIKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgICAgIGRlYnVnLXByaW50ICJEZXRl Y3RlZCBNYWtlc2VsZiB2ZXJzaW9uICR7dmVyfSAuLi4gdXNpbmcgJHtza2lwfSBhcyBvZmZzZXQi OwogICAgZmk7CiAgICBjYXNlICR7ZXhlfSBpbiAKICAgICAgICB0YWlsKQogICAgICAgICAgICBl eGU9InRhaWwgLW4gKyR7c2tpcH0gJyR7c3JjfSciCiAgICAgICAgOzsKICAgICAgICBkZCkKICAg ICAgICAgICAgZXhlPSJkZCBpYnM9JHtza2lwfSBza2lwPTEgaWY9JyR7c3JjfSciCiAgICAgICAg OzsKICAgICAgICAqKQogICAgICAgICAgICBkaWUgIm1ha2VzZWxmIGNhbnQgaGFuZGxlIGV4ZSAn JHtleGV9JyIKICAgICAgICA7OwogICAgZXNhYzsKICAgIGxvY2FsIGZpbGV0eXBlIHRtcGZpbGU9 JChlbWt0ZW1wKTsKICAgIGV2YWwgJHtleGV9IDI+IC9kZXYvbnVsbCB8IGhlYWQgLWMgNTEyID4g IiR7dG1wZmlsZX0iOwogICAgZmlsZXR5cGU9JChmaWxlIC1iICIke3RtcGZpbGV9IikgfHwgZGll OwogICAgY2FzZSAke2ZpbGV0eXBlfSBpbiAKICAgICAgICAqdGFyXCBhcmNoaXZlKikKICAgICAg ICAgICAgZXZhbCAke2V4ZX0gfCB0YXIgLS1uby1zYW1lLW93bmVyIC14ZiAtCiAgICAgICAgOzsK ICAgICAgICBiemlwMiopCiAgICAgICAgICAgIGV2YWwgJHtleGV9IHwgYnppcDIgLWRjIHwgdGFy IC0tbm8tc2FtZS1vd25lciAteGYgLQogICAgICAgIDs7CiAgICAgICAgZ3ppcCopCiAgICAgICAg ICAgIGV2YWwgJHtleGV9IHwgdGFyIC0tbm8tc2FtZS1vd25lciAteHpmIC0KICAgICAgICA7Owog ICAgICAgIGNvbXByZXNzKikKICAgICAgICAgICAgZXZhbCAke2V4ZX0gfCBndW56aXAgfCB0YXIg LS1uby1zYW1lLW93bmVyIC14ZiAtCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBl ZXJyb3IgIlVua25vd24gZmlsZXR5cGUgXCIke2ZpbGV0eXBlfVwiID8iOwogICAgICAgICAgICBm YWxzZQogICAgICAgIDs7CiAgICBlc2FjOwogICAgYXNzZXJ0ICJmYWlsdXJlIHVucGFja2luZyAo JHtmaWxldHlwZX0pIG1ha2VzZWxmICR7c2hydHNyY30gKCcke3Zlcn0nICske3NraXB9KSIKfQp1 bnBhY2tfcGR2ICgpIAp7IAogICAgbG9jYWwgc3JjPSQoZmluZF91bnBhY2thYmxlX2ZpbGUgIiQx Iik7CiAgICBsb2NhbCBzaXplb2ZmX3Q9JDI7CiAgICBbWyAteiAke3NyY30gXV0gJiYgZGllICJD b3VsZCBub3QgbG9jYXRlIHNvdXJjZSBmb3IgJyQxJyI7CiAgICBbWyAteiAke3NpemVvZmZfdH0g XV0gJiYgZGllICJObyBpZGVhIHdoYXQgb2ZmX3Qgc2l6ZSB3YXMgdXNlZCBmb3IgdGhpcyBwZHYg OigiOwogICAgbG9jYWwgc2hydHNyYz0kKGJhc2VuYW1lICIke3NyY30iKTsKICAgIGVjaG8gIj4+ PiBVbnBhY2tpbmcgJHtzaHJ0c3JjfSB0byAke1BXRH0iOwogICAgbG9jYWwgbWV0YXNraXA9JCh0 YWlsIC1jICR7c2l6ZW9mZl90fSAiJHtzcmN9IiB8IGhleGR1bXAgLWUgXCIlaVwiKTsKICAgIGxv Y2FsIHRhaWxza2lwPSQodGFpbCAtYyAkKCgke3NpemVvZmZfdH0qMikpICIke3NyY30iIHwgaGVh ZCAtYyAke3NpemVvZmZfdH0gfCBoZXhkdW1wIC1lIFwiJWlcIik7CiAgICBsb2NhbCBtZXRhZmls ZT0kKGVta3RlbXApOwogICAgdGFpbCAtYyArJCgoJHttZXRhc2tpcH0rMSkpICIke3NyY30iID4g IiR7bWV0YWZpbGV9IjsKICAgIGxvY2FsIGRhdGFmaWxlPSQodGFpbCAtYyArJCgoJHttZXRhc2tp cH0rMSkpICIke3NyY30iIHwgc3RyaW5ncyB8IGhlYWQgLW4gMSk7CiAgICBkYXRhZmlsZT0kKGJh c2VuYW1lICIke2RhdGFmaWxlfSIpOwogICAgbG9jYWwgdG1wZmlsZT0kKGVta3RlbXApOwogICAg dGFpbCAtYyArJCgoJHt0YWlsc2tpcH0rMSkpICR7c3JjfSAyPiAvZGV2L251bGwgfCBoZWFkIC1j IDUxMiA+ICR7dG1wZmlsZX07CiAgICBsb2NhbCBpc2NvbXByZXNzZWQ9JChmaWxlIC1iICIke3Rt cGZpbGV9Iik7CiAgICBpZiBbWyAke2lzY29tcHJlc3NlZDowOjh9ID09ICJjb21wcmVzcyIgXV07 IHRoZW4KICAgICAgICBpc2NvbXByZXNzZWQ9MTsKICAgICAgICBtdiAke3RtcGZpbGV9eywuWn07 CiAgICAgICAgZ3VuemlwICR7dG1wZmlsZX07CiAgICBlbHNlCiAgICAgICAgaXNjb21wcmVzc2Vk PTA7CiAgICBmaTsKICAgIGxvY2FsIGlzdGFyPSQoZmlsZSAtYiAiJHt0bXBmaWxlfSIpOwogICAg aWYgW1sgJHtpc3RhcjowOjl9ID09ICJQT1NJWCB0YXIiIF1dOyB0aGVuCiAgICAgICAgaXN0YXI9 MTsKICAgIGVsc2UKICAgICAgICBpc3Rhcj0wOwogICAgZmk7CiAgICBpZiBbICR7aXNjb21wcmVz c2VkfSAtZXEgMSBdOyB0aGVuCiAgICAgICAgaWYgWyAke2lzdGFyfSAtZXEgMSBdOyB0aGVuCiAg ICAgICAgICAgIHRhaWwgLWMgKyQoKCR7dGFpbHNraXB9KzEpKSAke3NyY30gMj4gL2Rldi9udWxs IHwgaGVhZCAtYyAkKCgke21ldGFza2lwfS0ke3RhaWxza2lwfSkpIHwgdGFyIC14emYgLTsKICAg ICAgICBlbHNlCiAgICAgICAgICAgIHRhaWwgLWMgKyQoKCR7dGFpbHNraXB9KzEpKSAke3NyY30g Mj4gL2Rldi9udWxsIHwgaGVhZCAtYyAkKCgke21ldGFza2lwfS0ke3RhaWxza2lwfSkpIHwgZ3pp cCAtZGMgPiAke2RhdGFmaWxlfTsKICAgICAgICBmaTsKICAgIGVsc2UKICAgICAgICBpZiBbICR7 aXN0YXJ9IC1lcSAxIF07IHRoZW4KICAgICAgICAgICAgdGFpbCAtYyArJCgoJHt0YWlsc2tpcH0r MSkpICR7c3JjfSAyPiAvZGV2L251bGwgfCBoZWFkIC1jICQoKCR7bWV0YXNraXB9LSR7dGFpbHNr aXB9KSkgfCB0YXIgLS1uby1zYW1lLW93bmVyIC14ZiAtOwogICAgICAgIGVsc2UKICAgICAgICAg ICAgdGFpbCAtYyArJCgoJHt0YWlsc2tpcH0rMSkpICR7c3JjfSAyPiAvZGV2L251bGwgfCBoZWFk IC1jICQoKCR7bWV0YXNraXB9LSR7dGFpbHNraXB9KSkgPiAke2RhdGFmaWxlfTsKICAgICAgICBm aTsKICAgIGZpOwogICAgdHJ1ZQp9CnVwZGF0ZV9kZXBtb2QgKCkgCnsgCiAgICBkZWJ1Zy1wcmlu dC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGdldF92ZXJzaW9uOwogICAgZWJlZ2luICJV cGRhdGluZyBtb2R1bGUgZGVwZW5kZW5jaWVzIGZvciAke0tWX0ZVTEx9IjsKICAgIGlmIFsgLXIg IiR7S1ZfT1VUX0RJUn0iL1N5c3RlbS5tYXAgXTsgdGhlbgogICAgICAgIGRlcG1vZCAtYWUgLUYg IiR7S1ZfT1VUX0RJUn0iL1N5c3RlbS5tYXAgLWIgIiR7Uk9PVH0iIC1yICR7S1ZfRlVMTH07CiAg ICAgICAgZWVuZCAkPzsKICAgIGVsc2UKICAgICAgICBld2FybjsKICAgICAgICBld2FybiAiJHtL Vl9PVVRfRElSfS9TeXN0ZW0ubWFwIG5vdCBmb3VuZC4iOwogICAgICAgIGV3YXJuICJZb3UgbXVz dCBtYW51YWxseSB1cGRhdGUgdGhlIGtlcm5lbCBtb2R1bGUgZGVwZW5kZW5jaWVzIHVzaW5nIGRl cG1vZC4iOwogICAgICAgIGVlbmQgMTsKICAgICAgICBld2FybjsKICAgIGZpCn0KdXBkYXRlX21v ZHVsZWRiICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAg ICBsb2NhbCBNT0RVTEVEQl9ESVI9IiR7Uk9PVH0iL3Zhci9saWIvbW9kdWxlLXJlYnVpbGQvOwog ICAgbW92ZV9vbGRfbW9kdWxlZGI7CiAgICBpZiBbWyAhIC1mICIke01PRFVMRURCX0RJUn0iL21v ZHVsZWRiIF1dOyB0aGVuCiAgICAgICAgW1sgISAtZCAiJHtNT0RVTEVEQl9ESVJ9IiBdXSAmJiBt a2RpciAtcCAiJHtNT0RVTEVEQl9ESVJ9IjsKICAgICAgICB0b3VjaCAiJHtNT0RVTEVEQl9ESVJ9 Ii9tb2R1bGVkYjsKICAgIGZpOwogICAgaWYgISBncmVwIC1xcyAke0NBVEVHT1JZfS8ke1BOfS0k e1BWUn0gIiR7TU9EVUxFREJfRElSfSIvbW9kdWxlZGI7IHRoZW4KICAgICAgICBlaW5mbyAiQWRk aW5nIG1vZHVsZSB0byBtb2R1bGVkYi4iOwogICAgICAgIGVjaG8gImE6MToke0NBVEVHT1JZfS8k e1BOfS0ke1BWUn0iID4+ICIke01PRFVMRURCX0RJUn0iL21vZHVsZWRiOwogICAgZmkKfQp1cGRh dGVfbW9kdWxlcyAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQq OwogICAgaWYgWyAteCAvc2Jpbi91cGRhdGUtbW9kdWxlcyBdICYmIGdyZXAgLXYgLWUgIl4jIiAt ZSAiXiQiICIke0R9Ii9ldGMvbW9kdWxlcy5kLyogPiAvZGV2L251bGwgMj4mMTsgdGhlbgogICAg ICAgIGViZWdpbiAiVXBkYXRpbmcgbW9kdWxlcy5jb25mIjsKICAgICAgICAvc2Jpbi91cGRhdGUt bW9kdWxlczsKICAgICAgICBlZW5kICQ/OwogICAgZWxzZQogICAgICAgIGlmIFsgLXggL3NiaW4v dXBkYXRlLW1vZHVsZXMgXSAmJiBncmVwIC12IC1lICJeIyIgLWUgIl4kIiAiJHtEfSIvZXRjL21v ZHVsZXMuZC8qID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICAgICAgZWJlZ2luICJVcGRh dGluZyBtb2R1bGVzLmNvbmYiOwogICAgICAgICAgICAvc2Jpbi91cGRhdGUtbW9kdWxlczsKICAg ICAgICAgICAgZWVuZCAkPzsKICAgICAgICBmaTsKICAgIGZpCn0KdXNlX2lmX2l1c2UgKCkgCnsg CiAgICBpbl9pdXNlICQxIHx8IHJldHVybiAxOwogICAgdXNlICQxCn0KdXNlX20gKCkgCnsgCiAg ICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGdldF92ZXJzaW9uOwog ICAgWyAke0tWX01BSk9SfSAtZXEgMyBdICYmIHJldHVybiAwOwogICAgWyAke0tWX01BSk9SfSAt ZXEgMiAtYSAke0tWX01JTk9SfSAtZ3QgNSAtYSAke0tWX1BBVENIfSAtZ3QgNSBdICYmIHJldHVy biAwIHx8IHJldHVybiAxCn0KdXNleCAoKSAKeyAKICAgIHVzZSAiJDEiICYmIGVjaG8gIiR7Mi15 ZXN9JDQiIHx8IGVjaG8gIiR7My1ub30kNSIKfQp2YWxpZGF0ZV9kZXNrdG9wX2VudHJpZXMgKCkg CnsgCiAgICBpZiBbWyAteCAvdXNyL2Jpbi9kZXNrdG9wLWZpbGUtdmFsaWRhdGUgXV07IHRoZW4K ICAgICAgICBlaW5mbyAiQ2hlY2tpbmcgZGVza3RvcCBlbnRyeSB2YWxpZGl0eSI7CiAgICAgICAg bG9jYWwgZGlyZWN0b3JpZXM9IiI7CiAgICAgICAgZm9yIGQgaW4gL3Vzci9zaGFyZS9hcHBsaWNh dGlvbnMgJEA7CiAgICAgICAgZG8KICAgICAgICAgICAgW1sgLWQgJHtEfSR7ZH0gXV0gJiYgZGly ZWN0b3JpZXM9IiR7ZGlyZWN0b3JpZXN9ICR7RH0ke2R9IjsKICAgICAgICBkb25lOwogICAgICAg IGlmIFtbIC1uICR7ZGlyZWN0b3JpZXN9IF1dOyB0aGVuCiAgICAgICAgICAgIGZvciBGSUxFIGlu ICQoZmluZCAke2RpcmVjdG9yaWVzfSAtbmFtZSAiKlwuZGVza3RvcCIgCQkJCQkJCS1ub3QgLXBh dGggJyouaGlkZGVuKicgfCBzb3J0IC11IDI+L2Rldi9udWxsKTsKICAgICAgICAgICAgZG8KICAg ICAgICAgICAgICAgIGxvY2FsIHRlbXA9JChkZXNrdG9wLWZpbGUtdmFsaWRhdGUgJHtGSUxFfSB8 IGdyZXAgLXYgIndhcm5pbmc6IiB8IAkJCQkJCQkJc2VkIC1lICJzfGVycm9yOiB8fCIgLWUgInN8 JHtGSUxFfTp8LS18ZyIgKTsKICAgICAgICAgICAgICAgIFtbIC1uICR0ZW1wIF1dICYmIGVsb2cg JHt0ZW1wLy0tLyR7RklMRS8ke0R9L306fTsKICAgICAgICAgICAgZG9uZTsKICAgICAgICBmaTsK ICAgICAgICBlY2hvICIiOwogICAgZWxzZQogICAgICAgIGVpbmZvICJQYXNzaW5nIGRlc2t0b3Ag ZW50cnkgdmFsaWRpdHkgY2hlY2suIEluc3RhbGwgZGV2LXV0aWwvZGVza3RvcC1maWxlLXV0aWxz LCBpZiB5b3Ugd2FudCB0byBoZWxwIHRvIGltcHJvdmUgR2VudG9vLiI7CiAgICBmaQp9CnZlcnNp b25fY29tcGFyZSAoKSAKeyAKICAgIGVzaG9wdHNfcHVzaCAtcyBleHRnbG9iOwogICAgbG9jYWwg dmVyX2E9JHsxfSB2ZXJfYj0kezJ9IHBhcnRzX2EgcGFydHNfYjsKICAgIGxvY2FsIGN1cl90b2tf YSBjdXJfdG9rX2IgbnVtX3BhcnRfYSBudW1fcGFydF9iOwogICAgbG9jYWwgLWkgY3VyX2lkeF9h PTAgY3VyX2lkeF9iPTAgcHJldl9pZHhfYSBwcmV2X2lkeF9iOwogICAgcGFydHNfYT0oJChnZXRf YWxsX3ZlcnNpb25fY29tcG9uZW50cyAiJHt2ZXJfYX0iICkpOwogICAgcGFydHNfYj0oJChnZXRf YWxsX3ZlcnNpb25fY29tcG9uZW50cyAiJHt2ZXJfYn0iICkpOwogICAgbG9jYWwgLWkgaW5mX2xv b3A9MDsKICAgIHdoaWxlIHRydWU7IGRvCiAgICAgICAgaW5mX2xvb3ArPTE7CiAgICAgICAgKChp bmZfbG9vcCA+IDIwKSkgJiYgZGllICJ2ZXJzaW9uYXRvciBjb21wYXJlIGJ1ZyBbbnVtYmVycywg JHt2ZXJfYX0sICR7dmVyX2J9XSI7CiAgICAgICAgcHJldl9pZHhfYT1jdXJfaWR4X2E7CiAgICAg ICAgcHJldl9pZHhfYj1jdXJfaWR4X2I7CiAgICAgICAgY3VyX3Rva19hPSR7cGFydHNfYVtjdXJf aWR4X2FdfTsKICAgICAgICBjdXJfdG9rX2I9JHtwYXJ0c19iW2N1cl9pZHhfYl19OwogICAgICAg IGlmIFtbIC1uICR7Y3VyX3Rva19hfSBdXSAmJiBbWyAteiAke2N1cl90b2tfYS8vW1s6ZGlnaXQ6 XV19IF1dOyB0aGVuCiAgICAgICAgICAgIGN1cl9pZHhfYSs9MTsKICAgICAgICAgICAgW1sgJHtw YXJ0c19hW2N1cl9pZHhfYV19ID09IC4gXV0gJiYgY3VyX2lkeF9hKz0xOwogICAgICAgIGVsc2UK ICAgICAgICAgICAgY3VyX3Rva19hPTsKICAgICAgICBmaTsKICAgICAgICBpZiBbWyAtbiAke2N1 cl90b2tfYn0gXV0gJiYgW1sgLXogJHtjdXJfdG9rX2IvL1tbOmRpZ2l0Ol1dfSBdXTsgdGhlbgog ICAgICAgICAgICBjdXJfaWR4X2IrPTE7CiAgICAgICAgICAgIFtbICR7cGFydHNfYltjdXJfaWR4 X2JdfSA9PSAuIF1dICYmIGN1cl9pZHhfYis9MTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGN1 cl90b2tfYj07CiAgICAgICAgZmk7CiAgICAgICAgW1sgLXogJHtjdXJfdG9rX2F9ICYmIC16ICR7 Y3VyX3Rva19ifSBdXSAmJiBicmVhazsKICAgICAgICBbWyAteiAke2N1cl90b2tfYX0gXV0gJiYg ZXNob3B0c19wb3AgJiYgcmV0dXJuIDE7CiAgICAgICAgW1sgLXogJHtjdXJfdG9rX2J9IF1dICYm IGVzaG9wdHNfcG9wICYmIHJldHVybiAzOwogICAgICAgIGlmICgoIHByZXZfaWR4X2EgIT0gMCAm JiBwcmV2X2lkeF9iICE9IDAgKSkgJiYgW1sgJHtjdXJfdG9rX2F9ID09IDAqIHx8ICR7Y3VyX3Rv a19ifSA9PSAwKiBdXTsgdGhlbgogICAgICAgICAgICBjdXJfdG9rX2E9JHtjdXJfdG9rX2ElJSso MCl9OwogICAgICAgICAgICBjdXJfdG9rX2I9JHtjdXJfdG9rX2IlJSsoMCl9OwogICAgICAgICAg ICBbWyAke2N1cl90b2tfYX0gPCAke2N1cl90b2tfYn0gXV0gJiYgZXNob3B0c19wb3AgJiYgcmV0 dXJuIDE7CiAgICAgICAgICAgIFtbICR7Y3VyX3Rva19hfSA+ICR7Y3VyX3Rva19ifSBdXSAmJiBl c2hvcHRzX3BvcCAmJiByZXR1cm4gMzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGN1cl90b2tf YT0ke2N1cl90b2tfYSMjKygwKX07CiAgICAgICAgICAgIGN1cl90b2tfYj0ke2N1cl90b2tfYiMj KygwKX07CiAgICAgICAgICAgIDogJHtjdXJfdG9rX2E6PTB9OwogICAgICAgICAgICA6ICR7Y3Vy X3Rva19iOj0wfTsKICAgICAgICAgICAgKChjdXJfdG9rX2EgPCBjdXJfdG9rX2IpKSAmJiBlc2hv cHRzX3BvcCAmJiByZXR1cm4gMTsKICAgICAgICAgICAgKChjdXJfdG9rX2EgPiBjdXJfdG9rX2Ip KSAmJiBlc2hvcHRzX3BvcCAmJiByZXR1cm4gMzsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBs b2NhbCBsZXR0ZXJfYT07CiAgICBsZXR0ZXJfYT0ke3BhcnRzX2FbY3VyX2lkeF9hXX07CiAgICBp ZiBbWyAkeyNsZXR0ZXJfYX0gLWVxIDEgJiYgLXogJHtsZXR0ZXJfYS9bYS16XX0gXV07IHRoZW4K ICAgICAgICBjdXJfaWR4X2ErPTE7CiAgICBlbHNlCiAgICAgICAgbGV0dGVyX2E9QDsKICAgIGZp OwogICAgbG9jYWwgbGV0dGVyX2I9OwogICAgbGV0dGVyX2I9JHtwYXJ0c19iW2N1cl9pZHhfYl19 OwogICAgaWYgW1sgJHsjbGV0dGVyX2J9IC1lcSAxICYmIC16ICR7bGV0dGVyX2IvW2Etel19IF1d OyB0aGVuCiAgICAgICAgY3VyX2lkeF9iKz0xOwogICAgZWxzZQogICAgICAgIGxldHRlcl9iPUA7 CiAgICBmaTsKICAgIFtbICR7bGV0dGVyX2F9IDwgJHtsZXR0ZXJfYn0gXV0gJiYgZXNob3B0c19w b3AgJiYgcmV0dXJuIDE7CiAgICBbWyAke2xldHRlcl9hfSA+ICR7bGV0dGVyX2J9IF1dICYmIGVz aG9wdHNfcG9wICYmIHJldHVybiAzOwogICAgaW5mX2xvb3A9MDsKICAgIHdoaWxlIHRydWU7IGRv CiAgICAgICAgaW5mX2xvb3ArPTE7CiAgICAgICAgKChpbmZfbG9vcCA+IDIwKSkgJiYgZGllICJ2 ZXJzaW9uYXRvciBjb21wYXJlIGJ1ZyBbbnVtYmVycywgJHt2ZXJfYX0sICR7dmVyX2J9XSI7CiAg ICAgICAgW1sgJHtwYXJ0c19hW2N1cl9pZHhfYV19ID09IF8gXV0gJiYgKChjdXJfaWR4X2ErKykp OwogICAgICAgIFtbICR7cGFydHNfYltjdXJfaWR4X2JdfSA9PSBfIF1dICYmICgoY3VyX2lkeF9i KyspKTsKICAgICAgICBjdXJfdG9rX2E9JHtwYXJ0c19hW2N1cl9pZHhfYV19OwogICAgICAgIGN1 cl90b2tfYj0ke3BhcnRzX2JbY3VyX2lkeF9iXX07CiAgICAgICAgbnVtX3BhcnRfYT0wOwogICAg ICAgIG51bV9wYXJ0X2I9MDsKICAgICAgICBpZiBoYXMgJHtjdXJfdG9rX2ElJSsoWzAtOV0pfSAi YWxwaGEiICJiZXRhIiAicHJlIiAicmMiICJwIjsgdGhlbgogICAgICAgICAgICBjdXJfaWR4X2Er PTE7CiAgICAgICAgICAgIG51bV9wYXJ0X2E9JHtjdXJfdG9rX2EjIysoW2Etel0pfTsKICAgICAg ICAgICAgbnVtX3BhcnRfYT0ke251bV9wYXJ0X2EjIysoMCl9OwogICAgICAgICAgICA6ICR7bnVt X3BhcnRfYTo9MH07CiAgICAgICAgICAgIGN1cl90b2tfYT0ke2N1cl90b2tfYSUlKyhbMC05XSl9 OwogICAgICAgIGVsc2UKICAgICAgICAgICAgY3VyX3Rva19hPTsKICAgICAgICBmaTsKICAgICAg ICBpZiBoYXMgJHtjdXJfdG9rX2IlJSsoWzAtOV0pfSBhbHBoYSBiZXRhIHByZSByYyBwOyB0aGVu CiAgICAgICAgICAgIGN1cl9pZHhfYis9MTsKICAgICAgICAgICAgbnVtX3BhcnRfYj0ke2N1cl90 b2tfYiMjKyhbYS16XSl9OwogICAgICAgICAgICBudW1fcGFydF9iPSR7bnVtX3BhcnRfYiMjKygw KX07CiAgICAgICAgICAgIDogJHtudW1fcGFydF9iOj0wfTsKICAgICAgICAgICAgY3VyX3Rva19i PSR7Y3VyX3Rva19iJSUrKFswLTldKX07CiAgICAgICAgZWxzZQogICAgICAgICAgICBjdXJfdG9r X2I9OwogICAgICAgIGZpOwogICAgICAgIGlmIFtbICR7Y3VyX3Rva19hfSAhPSAke2N1cl90b2tf Yn0gXV07IHRoZW4KICAgICAgICAgICAgbG9jYWwgc3VmZml4OwogICAgICAgICAgICBmb3Igc3Vm Zml4IGluIGFscGhhIGJldGEgcHJlIHJjICIiIHA7CiAgICAgICAgICAgIGRvCiAgICAgICAgICAg ICAgICBbWyAke2N1cl90b2tfYX0gPT0gJHtzdWZmaXh9IF1dICYmIGVzaG9wdHNfcG9wICYmIHJl dHVybiAxOwogICAgICAgICAgICAgICAgW1sgJHtjdXJfdG9rX2J9ID09ICR7c3VmZml4fSBdXSAm JiBlc2hvcHRzX3BvcCAmJiByZXR1cm4gMzsKICAgICAgICAgICAgZG9uZTsKICAgICAgICBlbHNl CiAgICAgICAgICAgIGlmIFtbIC16ICR7Y3VyX3Rva19hfSAmJiAteiAke2N1cl90b2tfYn0gXV07 IHRoZW4KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAg ICAgICAoKG51bV9wYXJ0X2EgPCBudW1fcGFydF9iKSkgJiYgZXNob3B0c19wb3AgJiYgcmV0dXJu IDE7CiAgICAgICAgICAgICAgICAoKG51bV9wYXJ0X2EgPiBudW1fcGFydF9iKSkgJiYgZXNob3B0 c19wb3AgJiYgcmV0dXJuIDM7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZG9uZTsK ICAgIFtbICR7cGFydHNfYVtjdXJfaWR4X2FdfSA9PSAtIF1dICYmICgoY3VyX2lkeF9hKyspKTsK ICAgIFtbICR7cGFydHNfYltjdXJfaWR4X2JdfSA9PSAtIF1dICYmICgoY3VyX2lkeF9iKyspKTsK ICAgIGlmIFtbIC1uICR7cGFydHNfYVtjdXJfaWR4X2FdL3IrKFswLTldKX0gfHwgLW4gJHtwYXJ0 c19iW2N1cl9pZHhfYl0vcisoWzAtOV0pfSBdXTsgdGhlbgogICAgICAgIGRpZSAidmVyc2lvbmF0 b3IgY29tcGFyZSBidWcgW3JldmlzaW9ucywgJHt2ZXJfYX0sICR7dmVyX2J9XSI7CiAgICBmaTsK ICAgIG51bV9wYXJ0X2E9JHtwYXJ0c19hW2N1cl9pZHhfYV0jcn07CiAgICBudW1fcGFydF9hPSR7 bnVtX3BhcnRfYSMjKygwKX07CiAgICA6ICR7bnVtX3BhcnRfYTo9MH07CiAgICBudW1fcGFydF9i PSR7cGFydHNfYltjdXJfaWR4X2JdI3J9OwogICAgbnVtX3BhcnRfYj0ke251bV9wYXJ0X2IjIyso MCl9OwogICAgOiAke251bV9wYXJ0X2I6PTB9OwogICAgKChudW1fcGFydF9hIDwgbnVtX3BhcnRf YikpICYmIGVzaG9wdHNfcG9wICYmIHJldHVybiAxOwogICAgKChudW1fcGFydF9hID4gbnVtX3Bh cnRfYikpICYmIGVzaG9wdHNfcG9wICYmIHJldHVybiAzOwogICAgZXNob3B0c19wb3A7CiAgICBy ZXR1cm4gMgp9CnZlcnNpb25fZm9ybWF0X3N0cmluZyAoKSAKeyAKICAgIGxvY2FsIGZzdHI9JDE7 CiAgICBzaGlmdDsKICAgIHNldCAtLSAkKGdldF92ZXJzaW9uX2NvbXBvbmVudHMgIiRAIik7CiAg ICBldmFsIGVjaG8gIiR7ZnN0cn0iCn0KdmVyc2lvbl9pc19hdF9sZWFzdCAoKSAKeyAKICAgIGxv Y2FsIHdhbnRfcz0iJDEiIGhhdmVfcz0iJHsyOi0ke1BWUn19IiByOwogICAgdmVyc2lvbl9jb21w YXJlICIke3dhbnRfc30iICIke2hhdmVfc30iOwogICAgcj0kPzsKICAgIGNhc2UgJHIgaW4gCiAg ICAgICAgMSB8IDIpCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgOzsKICAgICAgICAzKQog ICAgICAgICAgICByZXR1cm4gMQogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZGll ICJ2ZXJzaW9uYXRvciBjb21wYXJlIGJ1ZyBbYXRsZWFzdCwgJHt3YW50X3N9LCAke2hhdmVfc30s ICR7cn1dIgogICAgICAgIDs7CiAgICBlc2FjCn0KdmVyc2lvbl9zb3J0ICgpIAp7IAogICAgZXNo b3B0c19wdXNoIC1zIGV4dGdsb2I7CiAgICBsb2NhbCBpdGVtcz07CiAgICBsb2NhbCAtaSBsZWZ0 PTA7CiAgICBpdGVtcz0oIiRAIik7CiAgICB3aGlsZSAoKGxlZnQgPCAkeyNpdGVtc1tAXX0pKTsg ZG8KICAgICAgICBsb2NhbCAtaSBsb3dlc3RfaWR4PWxlZnQ7CiAgICAgICAgbG9jYWwgLWkgaWR4 PWxvd2VzdF9pZHgrMTsKICAgICAgICB3aGlsZSAoKGlkeCA8ICR7I2l0ZW1zW0BdfSkpOyBkbwog ICAgICAgICAgICB2ZXJzaW9uX2NvbXBhcmUgIiR7aXRlbXNbbG93ZXN0X2lkeF19IiAiJHtpdGVt c1tpZHhdfSI7CiAgICAgICAgICAgIFtbICQ/IC1lcSAzIF1dICYmIGxvd2VzdF9pZHg9aWR4Owog ICAgICAgICAgICBpZHgrPTE7CiAgICAgICAgZG9uZTsKICAgICAgICBsb2NhbCB0bXA9JHtpdGVt c1tsb3dlc3RfaWR4XX07CiAgICAgICAgaXRlbXNbbG93ZXN0X2lkeF09JHtpdGVtc1tsZWZ0XX07 CiAgICAgICAgaXRlbXNbbGVmdF09JHt0bXB9OwogICAgICAgIGxlZnQrPTE7CiAgICBkb25lOwog ICAgZWNobyAke2l0ZW1zW0BdfTsKICAgIGVzaG9wdHNfcG9wCn0K --20cf307c9e08bf33ef04b4d36f93--