From owner-freebsd-amd64@FreeBSD.ORG Tue Mar 30 23:23:18 2004 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0E23216A4CE; Tue, 30 Mar 2004 23:23:18 -0800 (PST) Received: from reineke.malepartus.de (reineke.malepartus.de [194.25.4.41]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6F2F143D1D; Tue, 30 Mar 2004 23:22:53 -0800 (PST) (envelope-from bm@reineke.malepartus.de) Received: from reineke.malepartus.de (localhost.malepartus.de [127.0.0.1]) i2V7MlKF063130; Wed, 31 Mar 2004 09:22:47 +0200 (CEST) (envelope-from bm@reineke.malepartus.de) Received: (from bm@localhost) by reineke.malepartus.de (8.12.11/8.12.11/Submit) id i2V7Ml25063129; Wed, 31 Mar 2004 09:22:47 +0200 (CEST) (envelope-from bm) Date: Wed, 31 Mar 2004 09:22:47 +0200 From: Burkard Meyendriesch To: Kris Kennaway Message-Id: <20040331092247.6de3b225.bm@malepartus.de> In-Reply-To: <20040321000001.GA40310@xor.obsecurity.org> References: <20040320141343.37a38cc2.bm@malepartus.de> <20040321000001.GA40310@xor.obsecurity.org> Organization: The Home of Reineke Fuchs X-Mailer: Sylpheed version 0.9.10 (GTK+ 1.2.10; amd64-portbld-freebsd5.2.1) X-Face: "[-; ]oI+8gP9>*J%knDN8d%DuhvJS2Lj4L\bRb7gz(pcT?2Zh6_Vam_6csAum3$<&lhAFd^ jt|!&Ut1C~Vg*E/q}+#cbFg-GU]c.bB8Ad,L'W$'9{^0y'AzM4#hS[C[F-1'|O; Kg3Vrq5q6dsU*TmJ@}+QPM\ b[^9Rhd,UoMpRpd5k[X=h.Dom*kbT`cNQ Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__31_Mar_2004_09_22_47_+0200_IVAWlh/MouLt7b_T" X-Malepartus-MailScanner-Information: Please contact the ISP for more information X-Malepartus-MailScanner: Found to be clean X-MailScanner-From: bm@reineke.malepartus.de X-Mailman-Approved-At: Wed, 31 Mar 2004 04:32:02 -0800 cc: freebsd-amd64@freebsd.org cc: freebsd-ports@freebsd.org Subject: amd64 -CURRENT: still problems with shared libraries X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Mar 2004 07:23:18 -0000 This is a multi-part message in MIME format. --Multipart=_Wed__31_Mar_2004_09_22_47_+0200_IVAWlh/MouLt7b_T Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi Kris, sorry to disturb you again with my shared libraries problem. I can not find the cause of the strange behaviour of the ports system (maybe the reason is that I don't fully understand the autoconf, configure, libtool mechanism). For example: If I try to compile and install libiconv: # cd /usr/ports/converters/libiconv # make clean # make # ls -l work/libiconv-1.9.1/lib/.libs -rw-r--r-- 1 root wheel 1052434 31 Mr 08:45 libiconv.a lrwxr-xr-x 1 root wheel 14 31 Mr 08:45 libiconv.la -> ../libiconv.la -rw-r--r-- 1 root wheel 619 31 Mr 08:45 libiconv.lai I only get the static version of the library. It seems that libtool decided not to build shared libraries: # grep ^build_libtool_libs= work/libiconv-1.9.1/libtool build_libtool_libs=no Even if I force the generation of the shared libs: # cd /usr/ports/converters/libiconv/work/libiconv-1.9.1 # make clean # ./configure --enable-shared # grep ^build_libtool_libs= libtool build_libtool_libs=no the system refuses to do so. (Find the complete config.status and libtool appended.) My environment: # uname -a FreeBSD Reineke.Malepartus.de 5.2-CURRENT FreeBSD 5.2-CURRENT #15: Mon Mar 22 19:28:17 CET 2004 bm@Reineke.Malepartus.de:/usr/obj/usr/src/sys/REINEKE amd64 An actual /usr/ports tree (31.03.2004 04:00 UTC), *no* options enabled in /etc/make.conf. Any help how to locate and fix the problem welcome :-) Burkard -- Burkard Meyendriesch Stevern 2 D-48301 Nottuln --Multipart=_Wed__31_Mar_2004_09_22_47_+0200_IVAWlh/MouLt7b_T Content-Type: application/octet-stream; name="config.status" Content-Disposition: attachment; filename="config.status" Content-Transfer-Encoding: base64 IyEgL2Jpbi9iYXNoCiMgR2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4KIyBSdW4gdGhpcyBmaWxlIHRv IHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCiMgQ29tcGlsZXIgb3V0cHV0IHBy b2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBkZWJ1Z2dpbmcKIyBjb25maWd1cmUsIGlz IGluIGNvbmZpZy5sb2cgaWYgaXQgZXhpc3RzLgoKZGVidWc9ZmFsc2UKYWNfY3NfcmVjaGVjaz1m YWxzZQphY19jc19zaWxlbnQ9ZmFsc2UKU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9iYXNofQoj IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgTTRzaCBJbml0aWFsaXphdGlvbi4gICMjCiMj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwoKIyBCZSBCb3VybmUgY29tcGF0aWJsZQppZiB0ZXN0 IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7 IHRoZW4KICBlbXVsYXRlIHNoCiAgTlVMTENNRD06CiAgIyBac2ggMy54IGFuZCA0LnggcGVyZm9y bXMgd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAogICMgaXMgY29udHJhcnkgdG8g b3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCiAgYWxpYXMgLWcgJyR7MSsiJEAifSc9 JyIkQCInCmVsaWYgdGVzdCAtbiAiJHtCQVNIX1ZFUlNJT04rc2V0fSIgJiYgKHNldCAtbyBwb3Np eCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgc2V0IC1vIHBvc2l4CmZpCgojIFN1cHBvcnQgdW5z ZXQgd2hlbiBwb3NzaWJsZS4KaWYgKEZPTz1GT087IHVuc2V0IEZPTykgPi9kZXYvbnVsbCAyPiYx OyB0aGVuCiAgYXNfdW5zZXQ9dW5zZXQKZWxzZQogIGFzX3Vuc2V0PWZhbHNlCmZpCgoKIyBXb3Jr IGFyb3VuZCBidWdzIGluIHByZS0zLjAgVVdJTiBrc2guCiRhc191bnNldCBFTlYgTUFJTCBNQUlM UEFUSApQUzE9JyQgJwpQUzI9Jz4gJwpQUzQ9JysgJwoKIyBOTFMgbnVpc2FuY2VzLgpmb3IgYXNf dmFyIGluIFwKICBMQU5HIExBTkdVQUdFIExDX0FERFJFU1MgTENfQUxMIExDX0NPTExBVEUgTENf Q1RZUEUgTENfSURFTlRJRklDQVRJT04gXAogIExDX01FQVNVUkVNRU5UIExDX01FU1NBR0VTIExD X01PTkVUQVJZIExDX05BTUUgTENfTlVNRVJJQyBMQ19QQVBFUiBcCiAgTENfVEVMRVBIT05FIExD X1RJTUUKZG8KICBpZiAoc2V0ICt4OyB0ZXN0IC1uICJgKGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQg JGFzX3ZhcikgMj4mMWAiKTsgdGhlbgogICAgZXZhbCAkYXNfdmFyPUM7IGV4cG9ydCAkYXNfdmFy CiAgZWxzZQogICAgJGFzX3Vuc2V0ICRhc192YXIKICBmaQpkb25lCgojIFJlcXVpcmVkIHRvIHVz ZSBiYXNlbmFtZS4KaWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICBh c19leHByPWV4cHIKZWxzZQogIGFzX2V4cHI9ZmFsc2UKZmkKCmlmIChiYXNlbmFtZSAvKSA+L2Rl di9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KICBh c19iYXNlbmFtZT1iYXNlbmFtZQplbHNlCiAgYXNfYmFzZW5hbWU9ZmFsc2UKZmkKCgojIE5hbWUg b2YgdGhlIGV4ZWN1dGFibGUuCmFzX21lPWAkYXNfYmFzZW5hbWUgIiQwIiB8fAokYXNfZXhwciBY LyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAoJIFgiJDAiIDogJ1hcKC8vXCkkJyBc fCBcCgkgWCIkMCIgOiAnWFwoL1wpJCcgXHwgXAoJIC4gICAgIDogJ1woLlwpJyAyPi9kZXYvbnVs bCB8fAplY2hvIFgvIiQwIiB8CiAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sgcy8v XDEvOyBxOyB9CiAgCSAgL15YXC9cKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KICAJICAvXlhcL1wo XC9cKS4qL3sgcy8vXDEvOyBxOyB9CiAgCSAgcy8uKi8uLzsgcSdgCgoKIyBQQVRIIG5lZWRzIENS LCBhbmQgTElORU5PIG5lZWRzIENSIGFuZCBQQVRILgojIEF2b2lkIGRlcGVuZGluZyB1cG9uIENo YXJhY3RlciBSYW5nZXMuCmFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6 Jwphc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKYXNfY3JfTGV0dGVy cz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCmFzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScK YXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCgojIFRoZSB1c2VyIGlzIGFs d2F5cyByaWdodC4KaWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4K ICBlY2hvICIjISAvYmluL3NoIiA+Y29uZiQkLnNoCiAgZWNobyAgImV4aXQgMCIgICA+PmNvbmYk JC5zaAogIGNobW9kICt4IGNvbmYkJC5zaAogIGlmIChQQVRIPSIvbm9uZXhpc3RlbnQ7LiI7IGNv bmYkJC5zaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICBQQVRIX1NFUEFSQVRPUj0nOycKICBl bHNlCiAgICBQQVRIX1NFUEFSQVRPUj06CiAgZmkKICBybSAtZiBjb25mJCQuc2gKZmkKCgogIGFz X2xpbmVub18xPSRMSU5FTk8KICBhc19saW5lbm9fMj0kTElORU5PCiAgYXNfbGluZW5vXzM9YChl eHByICRhc19saW5lbm9fMSArIDEpIDI+L2Rldi9udWxsYAogIHRlc3QgIngkYXNfbGluZW5vXzEi ICE9ICJ4JGFzX2xpbmVub18yIiAmJgogIHRlc3QgIngkYXNfbGluZW5vXzMiICA9ICJ4JGFzX2xp bmVub18yIiAgfHwgewogICMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3 ZSBjb250YWluIG5vIHBhdGggYXQgYWxsCiAgIyByZWxhdGl2ZSBvciBub3QuCiAgY2FzZSAkMCBp bgogICAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OwogICAgKikgYXNfc2F2ZV9JRlM9JElGUzsg SUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRhc19zYXZl X0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgdGVzdCAtciAiJGFzX2Rpci8k MCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsKZG9uZQoKICAgICAgIDs7CiAgZXNh YwogICMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1 biBhcyBgc2ggQ09NTUFORCcKICAjIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3Vu ZCBpbiB0aGUgcGF0aC4KICBpZiB0ZXN0ICJ4JGFzX215c2VsZiIgPSB4OyB0aGVuCiAgICBhc19t eXNlbGY9JDAKICBmaQogIGlmIHRlc3QgISAtZiAiJGFzX215c2VsZiI7IHRoZW4KICAgIHsgeyBl Y2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0 aCBhbiBhYnNvbHV0ZSBwYXRoIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQg bXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIHBhdGgiID4mMjt9CiAgIHsgKGV4aXQgMSk7 IGV4aXQgMTsgfTsgfQogIGZpCiAgY2FzZSAkQ09ORklHX1NIRUxMIGluCiAgJycpCiAgICBhc19z YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gL2JpbiRQQVRI X1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgKZG8KICBJRlM9JGFzX3NhdmVf SUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICBmb3IgYXNfYmFzZSBpbiBzaCBi YXNoIGtzaCBzaDU7IGRvCgkgY2FzZSAkYXNfZGlyIGluCgkgLyopCgkgICBpZiAoIiRhc19kaXIv JGFzX2Jhc2UiIC1jICcKICBhc19saW5lbm9fMT0kTElORU5PCiAgYXNfbGluZW5vXzI9JExJTkVO TwogIGFzX2xpbmVub18zPWAoZXhwciAkYXNfbGluZW5vXzEgKyAxKSAyPi9kZXYvbnVsbGAKICB0 ZXN0ICJ4JGFzX2xpbmVub18xIiAhPSAieCRhc19saW5lbm9fMiIgJiYKICB0ZXN0ICJ4JGFzX2xp bmVub18zIiAgPSAieCRhc19saW5lbm9fMiIgJykgMj4vZGV2L251bGw7IHRoZW4KCSAgICAgJGFz X3Vuc2V0IEJBU0hfRU5WIHx8IHRlc3QgIiR7QkFTSF9FTlYrc2V0fSIgIT0gc2V0IHx8IHsgQkFT SF9FTlY9OyBleHBvcnQgQkFTSF9FTlY7IH0KCSAgICAgJGFzX3Vuc2V0IEVOViB8fCB0ZXN0ICIk e0VOVitzZXR9IiAhPSBzZXQgfHwgeyBFTlY9OyBleHBvcnQgRU5WOyB9CgkgICAgIENPTkZJR19T SEVMTD0kYXNfZGlyLyRhc19iYXNlCgkgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKCSAgICAgZXhl YyAiJENPTkZJR19TSEVMTCIgIiQwIiAkezErIiRAIn0KCSAgIGZpOzsKCSBlc2FjCiAgICAgICBk b25lCmRvbmUKOzsKICBlc2FjCgogICMgQ3JlYXRlICRhc19tZS5saW5lbm8gYXMgYSBjb3B5IG9m ICRhc19teXNlbGYsIGJ1dCB3aXRoICRMSU5FTk8KICAjIHVuaWZvcm1seSByZXBsYWNlZCBieSB0 aGUgbGluZSBudW1iZXIuICBUaGUgZmlyc3QgJ3NlZCcgaW5zZXJ0cyBhCiAgIyBsaW5lLW51bWJl ciBsaW5lIGJlZm9yZSBlYWNoIGxpbmU7IHRoZSBzZWNvbmQgJ3NlZCcgZG9lcyB0aGUgcmVhbAog ICMgd29yay4gIFRoZSBzZWNvbmQgc2NyaXB0IHVzZXMgJ04nIHRvIHBhaXIgZWFjaCBsaW5lLW51 bWJlciBsaW5lCiAgIyB3aXRoIHRoZSBudW1iZXJlZCBsaW5lLCBhbmQgYXBwZW5kcyB0cmFpbGlu ZyAnLScgZHVyaW5nCiAgIyBzdWJzdGl0dXRpb24gc28gdGhhdCAkTElORU5PIGlzIG5vdCBhIHNw ZWNpYWwgY2FzZSBhdCBsaW5lIGVuZC4KICAjIChSYWphIFIgSGFyaW5hdGggc3VnZ2VzdGVkIHNl ZCAnPScsIGFuZCBQYXVsIEVnZ2VydCB3cm90ZSB0aGUKICAjIHNlY29uZCAnc2VkJyBzY3JpcHQu ICBCbGFtZSBMZWUgRS4gTWNNYWhvbiBmb3Igc2VkJ3Mgc3ludGF4LiAgOi0pCiAgc2VkICc9JyA8 JGFzX215c2VsZiB8CiAgICBzZWQgJwogICAgICBOCiAgICAgIHMsJCwtLAogICAgICA6IGxvb3AK ICAgICAgcyxeXChbJyRhc19jcl9kaWdpdHMnXSpcKVwoLipcKVskXUxJTkVOT1woW14nJGFzX2Ny X2FsbnVtJ19dXCksXDFcMlwxXDMsCiAgICAgIHQgbG9vcAogICAgICBzLC0kLCwKICAgICAgcyxe WyckYXNfY3JfZGlnaXRzJ10qXG4sLAogICAgJyA+JGFzX21lLmxpbmVubyAmJgogIGNobW9kICt4 ICRhc19tZS5saW5lbm8gfHwKICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNh bm5vdCBjcmVhdGUgJGFzX21lLmxpbmVubzsgcmVydW4gd2l0aCBhIFBPU0lYIHNoZWxsIiA+JjUK ZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNfbWUubGluZW5vOyByZXJ1biB3 aXRoIGEgUE9TSVggc2hlbGwiID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQoKICAj IERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBv ZiBwcm9ibGVtcwogICMgKHRoZSBkaXJuYW1lIG9mICRbMF0gaXMgbm90IHRoZSBwbGFjZSB3aGVy ZSB3ZSBtaWdodCBmaW5kIHRoZQogICMgb3JpZ2luYWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMg ZXNwZWNpYWxseSBzZW5zaWJsZSB0byB0aGlzKS4KICAuIC4vJGFzX21lLmxpbmVubwogICMgRXhp dCBzdGF0dXMgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21tYW5kLgogIGV4aXQKfQoKCmNhc2UgYGVj aG8gInRlc3RpbmdcYyI7IGVjaG8gMSwyLDNgLGBlY2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDNg IGluCiAgKmMqLC1uKikgRUNIT19OPSBFQ0hPX0M9JwonIEVDSE9fVD0nCScgOzsKICAqYyosKiAg KSBFQ0hPX049LW4gRUNIT19DPSBFQ0hPX1Q9IDs7CiAgKikgICAgICAgRUNIT19OPSBFQ0hPX0M9 J1xjJyBFQ0hPX1Q9IDs7CmVzYWMKCmlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYx OyB0aGVuCiAgYXNfZXhwcj1leHByCmVsc2UKICBhc19leHByPWZhbHNlCmZpCgpybSAtZiBjb25m JCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQplY2hvID5jb25mJCQuZmlsZQppZiBsbiAtcyBjb25m JCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KICAjIFdlIGNvdWxkIGp1c3QgY2hlY2sg Zm9yIERKR1BQOyBidXQgdGhpcyB0ZXN0IGEpIHdvcmtzIGIpIGlzIG1vcmUgZ2VuZXJpYwogICMg YW5kIGMpIHdpbGwgcmVtYWluIHZhbGlkIG9uY2UgREpHUFAgc3VwcG9ydHMgc3ltbGlua3MgKERK R1BQIDIuMDQpLgogIGlmIHRlc3QgLWYgY29uZiQkLmV4ZTsgdGhlbgogICAgIyBEb24ndCB1c2Ug bG4gYXQgYWxsOyB3ZSBkb24ndCBoYXZlIGFueSBsaW5rcwogICAgYXNfbG5fcz0nY3AgLXAnCiAg ZWxzZQogICAgYXNfbG5fcz0nbG4gLXMnCiAgZmkKZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQg Mj4vZGV2L251bGw7IHRoZW4KICBhc19sbl9zPWxuCmVsc2UKICBhc19sbl9zPSdjcCAtcCcKZmkK cm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKCmlmIG1rZGlyIC1wIC4gMj4vZGV2 L251bGw7IHRoZW4KICBhc19ta2Rpcl9wPToKZWxzZQogIGFzX21rZGlyX3A9ZmFsc2UKZmkKCmFz X2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKCiMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5n IG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KYXNfdHJfY3BwPSJzZWQgeSUqJGFzX2NyX2xldHRlcnMl UCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgoKIyBTZWQgZXhwcmVzc2lv biB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCmFzX3RyX3NoPSJz ZWQgeSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyIKCgojIElGUwojIFdlIG5lZWQgc3Bh Y2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLgphc19ubD0nCicK SUZTPSIgCSRhc19ubCIKCiMgQ0RQQVRILgokYXNfdW5zZXQgQ0RQQVRICgpleGVjIDY+JjEKCiMg T3BlbiB0aGUgbG9nIHJlYWwgc29vbiwgdG8ga2VlcCBcJFswXSBhbmQgc28gb24gbWVhbmluZ2Z1 bCwgYW5kIHRvCiMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0 Yy4gaW5zdGVhZCBvZiB0aGVpcgojIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLiAgTG9n Z2luZyAtLXZlcnNpb24gZXRjLiBpcyBPSy4KZXhlYyA1Pj5jb25maWcubG9nCnsKICBlY2hvCiAg c2VkICdoO3MvLi8tL2c7cy9eLi4uLyMjIC87cy8uLi4kLyAjIy87cDt4O3A7eCcgPDxfQVNCT1gK IyMgUnVubmluZyAkYXNfbWUuICMjCl9BU0JPWAp9ID4mNQpjYXQgPiY1IDw8X0NTRU9GCgpUaGlz IGZpbGUgd2FzIGV4dGVuZGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzCmdlbmVyYXRlZCBieSBHTlUg QXV0b2NvbmYgMi41Ny4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwoKICBDT05GSUdfRklM RVMgICAgPSAkQ09ORklHX0ZJTEVTCiAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFERVJT CiAgQ09ORklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUwogIENPTkZJR19DT01NQU5EUyA9ICRD T05GSUdfQ09NTUFORFMKICAkICQwICRACgpfQ1NFT0YKZWNobyAib24gYChob3N0bmFtZSB8fCB1 bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgIiA+JjUKZWNobyA+JjUKY29uZmlnX2ZpbGVz PSIgTWFrZWZpbGUgbGliL01ha2VmaWxlIHNyY2xpYi9NYWtlZmlsZSBzcmMvTWFrZWZpbGUgcG8v TWFrZWZpbGUuaW4gbWFuL01ha2VmaWxlIHRlc3RzL01ha2VmaWxlIGluY2x1ZGUvaWNvbnYuaCIK Y29uZmlnX2hlYWRlcnM9IiBjb25maWcuaCBsaWIvY29uZmlnLmgiCmNvbmZpZ19jb21tYW5kcz0i IGRlcGZpbGVzIGRlZmF1bHQtMSIKCmFjX2NzX3VzYWdlPSJcClxgJGFzX21lJyBpbnN0YW50aWF0 ZXMgZmlsZXMgZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRvIHRoZQpjdXJyZW50IGNvbmZpZ3Vy YXRpb24uCgpVc2FnZTogJDAgW09QVElPTlNdIFtGSUxFXS4uLgoKICAtaCwgLS1oZWxwICAgICAg IHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CiAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJz aW9uIG51bWJlciwgdGhlbiBleGl0CiAgLXEsIC0tcXVpZXQgICAgICBkbyBub3QgcHJpbnQgcHJv Z3Jlc3MgbWVzc2FnZXMKICAtZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3Jhcnkg ZmlsZXMKICAgICAgLS1yZWNoZWNrICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1cmluZyBp biB0aGUgc2FtZSBjb25kaXRpb25zCiAgLS1maWxlPUZJTEVbOlRFTVBMQVRFXQogICAgICAgICAg ICAgICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBGSUxFCiAgLS1oZWFk ZXI9RklMRVs6VEVNUExBVEVdCiAgICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29u ZmlndXJhdGlvbiBoZWFkZXIgRklMRQoKQ29uZmlndXJhdGlvbiBmaWxlczoKJGNvbmZpZ19maWxl cwoKQ29uZmlndXJhdGlvbiBoZWFkZXJzOgokY29uZmlnX2hlYWRlcnMKCkNvbmZpZ3VyYXRpb24g Y29tbWFuZHM6CiRjb25maWdfY29tbWFuZHMKClJlcG9ydCBidWdzIHRvIDxidWctYXV0b2NvbmZA Z251Lm9yZz4uIgphY19jc192ZXJzaW9uPSJcCmNvbmZpZy5zdGF0dXMKY29uZmlndXJlZCBieSAu L2NvbmZpZ3VyZSwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjU3LAogIHdpdGggb3B0aW9u cyBcIictLWVuYWJsZS1zaGFyZWQnXCIKCkNvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1 LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgpUaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24KZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwg ZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKc3JjZGlyPS4KSU5TVEFMTD0iL3Vzci9iaW4vaW5z dGFsbCAtYyIKIyBJZiBubyBmaWxlIGFyZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHRoZW4gd2Ug bmVlZCB0byBwcm92aWRlIGRlZmF1bHQKIyB2YWx1ZS4gIEJ5IHdlIG5lZWQgdG8ga25vdyBpZiBm aWxlcyB3ZXJlIHNwZWNpZmllZCBieSB0aGUgdXNlci4KYWNfbmVlZF9kZWZhdWx0cz06CndoaWxl IHRlc3QgJCMgIT0gMApkbwogIGNhc2UgJDEgaW4KICAtLSo9KikKICAgIGFjX29wdGlvbj1gZXhw ciAieCQxIiA6ICd4XChbXj1dKlwpPSdgCiAgICBhY19vcHRhcmc9YGV4cHIgIngkMSIgOiAneFte PV0qPVwoLipcKSdgCiAgICBhY19zaGlmdD06CiAgICA7OwogIC0qKQogICAgYWNfb3B0aW9uPSQx CiAgICBhY19vcHRhcmc9JDIKICAgIGFjX3NoaWZ0PXNoaWZ0CiAgICA7OwogICopICMgVGhpcyBp cyBub3QgYW4gb3B0aW9uLCBzbyB0aGUgdXNlciBoYXMgcHJvYmFibHkgZ2l2ZW4gZXhwbGljaXQK ICAgICAjIGFyZ3VtZW50cy4KICAgICBhY19vcHRpb249JDEKICAgICBhY19uZWVkX2RlZmF1bHRz PWZhbHNlOzsKICBlc2FjCgogIGNhc2UgJGFjX29wdGlvbiBpbgogICMgSGFuZGxpbmcgb2YgdGhl IG9wdGlvbnMuCiAgLXJlY2hlY2sgfCAtLXJlY2hlY2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAt LXJlY2ggfCAtLXJlYyB8IC0tcmUgfCAtLXIpCiAgICBhY19jc19yZWNoZWNrPTogOzsKICAtLXZl cnNpb24gfCAtLXZlcnMqIHwgLVYgKQogICAgZWNobyAiJGFjX2NzX3ZlcnNpb24iOyBleGl0IDAg OzsKICAtLWhlIHwgLS1oKQogICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFk ZXIKICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGFtYmlndW91cyBvcHRpb246 ICQxClRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjUKZWNobyAiJGFz X21lOiBlcnJvcjogYW1iaWd1b3VzIG9wdGlvbjogJDEKVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9y ZSBpbmZvcm1hdGlvbi4iID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfTs7CiAgLS1o ZWxwIHwgLS1oZWwgfCAtaCApCiAgICBlY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDAgOzsKICAt LWRlYnVnIHwgLS1kKiB8IC1kICkKICAgIGRlYnVnPTogOzsKICAtLWZpbGUgfCAtLWZpbCB8IC0t ZmkgfCAtLWYgKQogICAgJGFjX3NoaWZ0CiAgICBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMg JGFjX29wdGFyZyIKICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwogIC0taGVhZGVyIHwgLS1o ZWFkZSB8IC0taGVhZCB8IC0taGVhICkKICAgICRhY19zaGlmdAogICAgQ09ORklHX0hFQURFUlM9 IiRDT05GSUdfSEVBREVSUyAkYWNfb3B0YXJnIgogICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7 CiAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwK ICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCB8IC0tc2kg fCAtLXMpCiAgICBhY19jc19zaWxlbnQ9OiA7OwoKICAjIFRoaXMgaXMgYW4gZXJyb3IuCiAgLSop IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IHVucmVjb2duaXplZCBvcHRpb246ICQx ClRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjUKZWNobyAiJGFzX21l OiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJDEKVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9y ZSBpbmZvcm1hdGlvbi4iID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfSA7OwoKICAq KSBhY19jb25maWdfdGFyZ2V0cz0iJGFjX2NvbmZpZ190YXJnZXRzICQxIiA7OwoKICBlc2FjCiAg c2hpZnQKZG9uZQoKYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9CgppZiAkYWNfY3Nfc2lsZW50OyB0 aGVuCiAgZXhlYyA2Pi9kZXYvbnVsbAogIGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPSIkYWNfY29u ZmlndXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiCmZpCgppZiAkYWNfY3NfcmVjaGVjazsgdGhlbgog IGVjaG8gInJ1bm5pbmcgL2Jpbi9iYXNoIC4vY29uZmlndXJlICIgJy0tZW5hYmxlLXNoYXJlZCcg JGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzICIgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24iID4m NgogIGV4ZWMgL2Jpbi9iYXNoIC4vY29uZmlndXJlICctLWVuYWJsZS1zaGFyZWQnICRhY19jb25m aWd1cmVfZXh0cmFfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgpmaQoKIwojIElOSVQt Q09NTUFORFMgc2VjdGlvbi4KIwoKQU1ERVBfVFJVRT0iIiBhY19hdXhfZGlyPSJhdXRvY29uZiIK IyBDYXB0dXJlIHRoZSB2YWx1ZSBvZiBvYnNvbGV0ZSBBTExfTElOR1VBUyBiZWNhdXNlIHdlIG5l ZWQgaXQgdG8gY29tcHV0ZQogICAgIyBQT0ZJTEVTLCBHTU9GSUxFUywgVVBEQVRFUE9GSUxFUywg RFVNTVlQT0ZJTEVTLCBDQVRBTE9HUy4gQnV0IGhpZGUgaXQKICAgICMgZnJvbSBhdXRvbWFrZS4K ICAgIGV2YWwgJ09CU09MRVRFX0FMTF9MSU5HVUFTJyc9IiInCiAgICAjIENhcHR1cmUgdGhlIHZh bHVlIG9mIExJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUgQ0FUQUxPR1MuCiAg ICBMSU5HVUFTPSIlVU5TRVQlIgoKCmZvciBhY19jb25maWdfdGFyZ2V0IGluICRhY19jb25maWdf dGFyZ2V0cwpkbwogIGNhc2UgIiRhY19jb25maWdfdGFyZ2V0IiBpbgogICMgSGFuZGxpbmcgb2Yg YXJndW1lbnRzLgogICJNYWtlZmlsZSIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFr ZWZpbGUiIDs7CiAgImxpYi9NYWtlZmlsZSIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMg bGliL01ha2VmaWxlIiA7OwogICJzcmNsaWIvTWFrZWZpbGUiICkgQ09ORklHX0ZJTEVTPSIkQ09O RklHX0ZJTEVTIHNyY2xpYi9NYWtlZmlsZSIgOzsKICAic3JjL01ha2VmaWxlIiApIENPTkZJR19G SUxFUz0iJENPTkZJR19GSUxFUyBzcmMvTWFrZWZpbGUiIDs7CiAgInBvL01ha2VmaWxlLmluIiAp IENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwby9NYWtlZmlsZS5pbiIgOzsKICAibWFuL01h a2VmaWxlIiApIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBtYW4vTWFrZWZpbGUiIDs7CiAg IiR7VEVTVFNfTUFLRUZJTEV9IiApIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyAke1RFU1RT X01BS0VGSUxFfSIgOzsKICAiaW5jbHVkZS9pY29udi5oIiApIENPTkZJR19GSUxFUz0iJENPTkZJ R19GSUxFUyBpbmNsdWRlL2ljb252LmgiIDs7CiAgImRlcGZpbGVzIiApIENPTkZJR19DT01NQU5E Uz0iJENPTkZJR19DT01NQU5EUyBkZXBmaWxlcyIgOzsKICAiZGVmYXVsdC0xIiApIENPTkZJR19D T01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBkZWZhdWx0LTEiIDs7CiAgImNvbmZpZy5oIiApIENP TkZJR19IRUFERVJTPSIkQ09ORklHX0hFQURFUlMgY29uZmlnLmgiIDs7CiAgImxpYi9jb25maWcu aCIgKSBDT05GSUdfSEVBREVSUz0iJENPTkZJR19IRUFERVJTIGxpYi9jb25maWcuaCIgOzsKICAq KSB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBpbnZhbGlkIGFyZ3VtZW50OiAkYWNf Y29uZmlnX3RhcmdldCIgPiY1CmVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgYXJndW1lbnQ6 ICRhY19jb25maWdfdGFyZ2V0IiA+JjI7fQogICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07Owog IGVzYWMKZG9uZQoKIyBJZiB0aGUgdXNlciBkaWQgbm90IHVzZSB0aGUgYXJndW1lbnRzIHRvIHNw ZWNpZnkgdGhlIGl0ZW1zIHRvIGluc3RhbnRpYXRlLAojIHRoZW4gdGhlIGVudnZhciBpbnRlcmZh Y2UgaXMgdXNlZC4gIFNldCBvbmx5IHRob3NlIHRoYXQgYXJlIG5vdC4KIyBXZSB1c2UgdGhlIGxv bmcgZm9ybSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVs eQojIGJpemFycmUgYnVnIG9uIFN1bk9TIDQuMS4zLgppZiAkYWNfbmVlZF9kZWZhdWx0czsgdGhl bgogIHRlc3QgIiR7Q09ORklHX0ZJTEVTK3NldH0iID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29u ZmlnX2ZpbGVzCiAgdGVzdCAiJHtDT05GSUdfSEVBREVSUytzZXR9IiA9IHNldCB8fCBDT05GSUdf SEVBREVSUz0kY29uZmlnX2hlYWRlcnMKICB0ZXN0ICIke0NPTkZJR19DT01NQU5EUytzZXR9IiA9 IHNldCB8fCBDT05GSUdfQ09NTUFORFM9JGNvbmZpZ19jb21tYW5kcwpmaQoKIyBIYXZlIGEgdGVt cG9yYXJ5IGRpcmVjdG9yeSBmb3IgY29udmVuaWVuY2UuICBNYWtlIGl0IGluIHRoZSBidWlsZCB0 cmVlCiMgc2ltcGx5IGJlY2F1c2UgdGhlcmUgaXMgbm8gcmVhc29uIHRvIHB1dCBpdCBoZXJlLCBh bmQgaW4gYWRkaXRpb24sCiMgY3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9tIC90bXAgY2Fu IHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcy4KIyBDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5 LCBhbmQgaG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4KJGRlYnVnIHx8CnsK ICB0cmFwICdleGl0X3N0YXR1cz0kPzsgcm0gLXJmICR0bXAgJiYgZXhpdCAkZXhpdF9zdGF0dXMn IDAKICB0cmFwICd7IChleGl0IDEpOyBleGl0IDE7IH0nIDEgMiAxMyAxNQp9CgojIENyZWF0ZSBh IChzZWN1cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxlcy4KCnsKICB0bXA9YCh1bWFzayAw NzcgJiYgbWt0ZW1wIC1kIC1xICIuL2NvbmZzdGF0WFhYWFhYIikgMj4vZGV2L251bGxgICYmCiAg dGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIKfSAgfHwKewogIHRtcD0uL2NvbmZzdGF0 JCQtJFJBTkRPTQogICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkKfSB8fAp7CiAgIGVjaG8gIiRt ZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gLiIgPiYyCiAgIHsgKGV4 aXQgMSk7IGV4aXQgMTsgfQp9CgoKIwojIENPTkZJR19GSUxFUyBzZWN0aW9uLgojCgojIE5vIG5l ZWQgdG8gZ2VuZXJhdGUgdGhlIHNjcmlwdHMgaWYgdGhlcmUgYXJlIG5vIENPTkZJR19GSUxFUy4K IyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdoZW4gLi9jb25maWcuc3RhdHVzIGNvbmZpZy5o CmlmIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiOyB0aGVuCiAgIyBQcm90ZWN0IGFnYWluc3QgYmVp bmcgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYSBzZWQgc3Vic3QgaW4gY29uZmlnLnN0YXR1cy4KICBz ZWQgJ3MvLEAvQEAvOyBzL0AsL0BALzsgcy8sO3QgdCQvQDt0IHQvOyAvQDt0IHQkL3MvW1xcJixd L1xcJi9nOwogICBzL0BALyxALzsgcy9AQC9ALC87IHMvQDt0IHQkLyw7dCB0LycgPiR0bXAvc3Vi cy5zZWQgPDxcQ0VPRgpzLEBTSEVMTEAsL2Jpbi9iYXNoLDt0IHQKcyxAUEFUSF9TRVBBUkFUT1JA LDosO3QgdApzLEBQQUNLQUdFX05BTUVALCw7dCB0CnMsQFBBQ0tBR0VfVEFSTkFNRUAsLDt0IHQK cyxAUEFDS0FHRV9WRVJTSU9OQCwsO3QgdApzLEBQQUNLQUdFX1NUUklOR0AsLDt0IHQKcyxAUEFD S0FHRV9CVUdSRVBPUlRALCw7dCB0CnMsQGV4ZWNfcHJlZml4QCwke3ByZWZpeH0sO3QgdApzLEBw cmVmaXhALC91c3IvbG9jYWwsO3QgdApzLEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQCxzLHgseCws O3QgdApzLEBiaW5kaXJALCR7ZXhlY19wcmVmaXh9L2Jpbiw7dCB0CnMsQHNiaW5kaXJALCR7ZXhl Y19wcmVmaXh9L3NiaW4sO3QgdApzLEBsaWJleGVjZGlyQCwke2V4ZWNfcHJlZml4fS9saWJleGVj LDt0IHQKcyxAZGF0YWRpckAsJHtwcmVmaXh9L3NoYXJlLDt0IHQKcyxAc3lzY29uZmRpckAsJHtw cmVmaXh9L2V0Yyw7dCB0CnMsQHNoYXJlZHN0YXRlZGlyQCwke3ByZWZpeH0vY29tLDt0IHQKcyxA bG9jYWxzdGF0ZWRpckAsJHtwcmVmaXh9L3Zhciw7dCB0CnMsQGxpYmRpckAsJHtleGVjX3ByZWZp eH0vbGliLDt0IHQKcyxAaW5jbHVkZWRpckAsJHtwcmVmaXh9L2luY2x1ZGUsO3QgdApzLEBvbGRp bmNsdWRlZGlyQCwvdXNyL2luY2x1ZGUsO3QgdApzLEBpbmZvZGlyQCwke3ByZWZpeH0vaW5mbyw7 dCB0CnMsQG1hbmRpckAsJHtwcmVmaXh9L21hbiw7dCB0CnMsQGJ1aWxkX2FsaWFzQCwsO3QgdApz LEBob3N0X2FsaWFzQCwsO3QgdApzLEB0YXJnZXRfYWxpYXNALCw7dCB0CnMsQERFRlNALC1ESEFW RV9DT05GSUdfSCw7dCB0CnMsQEVDSE9fQ0AsLDt0IHQKcyxARUNIT19OQCwtbiw7dCB0CnMsQEVD SE9fVEAsLDt0IHQKcyxATElCU0AsLDt0IHQKcyxASU5TVEFMTF9QUk9HUkFNQCwke0lOU1RBTEx9 LDt0IHQKcyxASU5TVEFMTF9TQ1JJUFRALCR7SU5TVEFMTH0sO3QgdApzLEBJTlNUQUxMX0RBVEFA LCR7SU5TVEFMTH0gLW0gNjQ0LDt0IHQKcyxAQ1lHUEFUSF9XQCxlY2hvLDt0IHQKcyxAUEFDS0FH RUAsbGliaWNvbnYsO3QgdApzLEBWRVJTSU9OQCwxLjksO3QgdApzLEBBQ0xPQ0FMQCwke1NIRUxM fSAvdXNyL3BvcnRzL2NvbnZlcnRlcnMvbGliaWNvbnYvd29yay9saWJpY29udi0xLjkuMS9hdXRv Y29uZi9taXNzaW5nIC0tcnVuIGFjbG9jYWwtMS43LDt0IHQKcyxAQVVUT0NPTkZALCR7U0hFTEx9 IC91c3IvcG9ydHMvY29udmVydGVycy9saWJpY29udi93b3JrL2xpYmljb252LTEuOS4xL2F1dG9j b25mL21pc3NpbmcgLS1ydW4gYXV0b2NvbmYsO3QgdApzLEBBVVRPTUFLRUAsJHtTSEVMTH0gL3Vz ci9wb3J0cy9jb252ZXJ0ZXJzL2xpYmljb252L3dvcmsvbGliaWNvbnYtMS45LjEvYXV0b2NvbmYv bWlzc2luZyAtLXJ1biBhdXRvbWFrZS0xLjcsO3QgdApzLEBBVVRPSEVBREVSQCwke1NIRUxMfSAv dXNyL3BvcnRzL2NvbnZlcnRlcnMvbGliaWNvbnYvd29yay9saWJpY29udi0xLjkuMS9hdXRvY29u Zi9taXNzaW5nIC0tcnVuIGF1dG9oZWFkZXIsO3QgdApzLEBNQUtFSU5GT0AsJHtTSEVMTH0gL3Vz ci9wb3J0cy9jb252ZXJ0ZXJzL2xpYmljb252L3dvcmsvbGliaWNvbnYtMS45LjEvYXV0b2NvbmYv bWlzc2luZyAtLXJ1biBtYWtlaW5mbyw7dCB0CnMsQEFNVEFSQCwke1NIRUxMfSAvdXNyL3BvcnRz L2NvbnZlcnRlcnMvbGliaWNvbnYvd29yay9saWJpY29udi0xLjkuMS9hdXRvY29uZi9taXNzaW5n IC0tcnVuIHRhciw7dCB0CnMsQGluc3RhbGxfc2hALC91c3IvcG9ydHMvY29udmVydGVycy9saWJp Y29udi93b3JrL2xpYmljb252LTEuOS4xL2F1dG9jb25mL2luc3RhbGwtc2gsO3QgdApzLEBTVFJJ UEAsc3RyaXAsO3QgdApzLEBhY19jdF9TVFJJUEAsc3RyaXAsO3QgdApzLEBJTlNUQUxMX1NUUklQ X1BST0dSQU1ALCR7U0hFTEx9ICQoaW5zdGFsbF9zaCkgLWMgLXMsO3QgdApzLEBBV0tALG5hd2ss O3QgdApzLEBTRVRfTUFLRUAsLDt0IHQKcyxAYW1fX2xlYWRpbmdfZG90QCwuLDt0IHQKcyxAQ0NA LGdjYyw7dCB0CnMsQENGTEFHU0AsLWcgLU8yLDt0IHQKcyxATERGTEFHU0AsLDt0IHQKcyxAQ1BQ RkxBR1NALC1JL3Vzci9sb2NhbC9pbmNsdWRlLDt0IHQKcyxAYWNfY3RfQ0NALGdjYyw7dCB0CnMs QEVYRUVYVEAsLDt0IHQKcyxAT0JKRVhUQCxvLDt0IHQKcyxAREVQRElSQCwuZGVwcyw7dCB0CnMs QGFtX19pbmNsdWRlQCxpbmNsdWRlLDt0IHQKcyxAYW1fX3F1b3RlQCwsO3QgdApzLEBBTURFUF9U UlVFQCwsO3QgdApzLEBBTURFUF9GQUxTRUAsIyw7dCB0CnMsQEFNREVQQkFDS1NMQVNIQCxcLDt0 IHQKcyxAQ0NERVBNT0RFQCxkZXBtb2RlPW5vbmUsO3QgdApzLEBhbV9fZmFzdGRlcENDX1RSVUVA LCMsO3QgdApzLEBhbV9fZmFzdGRlcENDX0ZBTFNFQCwsO3QgdApzLEBDUFBALGdjYyAtRSw7dCB0 CnMsQEVHUkVQQCxncmVwIC1FLDt0IHQKcyxAYnVpbGRALGFtZDY0LXVua25vd24ta2ZyZWVic2Q1 LjItZ251LDt0IHQKcyxAYnVpbGRfY3B1QCxhbWQ2NCw7dCB0CnMsQGJ1aWxkX3ZlbmRvckAsdW5r bm93biw7dCB0CnMsQGJ1aWxkX29zQCxrZnJlZWJzZDUuMi1nbnUsO3QgdApzLEBob3N0QCxhbWQ2 NC11bmtub3duLWtmcmVlYnNkNS4yLWdudSw7dCB0CnMsQGhvc3RfY3B1QCxhbWQ2NCw7dCB0CnMs QGhvc3RfdmVuZG9yQCx1bmtub3duLDt0IHQKcyxAaG9zdF9vc0Asa2ZyZWVic2Q1LjItZ251LDt0 IHQKcyxAUkVMT0NBVEFCTEVALG5vLDt0IHQKcyxATElCT0JKU0AsIGNhbm9uaWNhbGl6ZSRVLm8s O3QgdApzLEBTRVRfUkVMT0NBVEFCTEVALCw7dCB0CnMsQFJFTE9DQVRBQkxFX1ZJQV9MRF9UUlVF QCwjLDt0IHQKcyxAUkVMT0NBVEFCTEVfVklBX0xEX0ZBTFNFQCwsO3QgdApzLEBVU0VfRVhUUkFf RU5DT0RJTkdTQCxubyw7dCB0CnMsQFJBTkxJQkAscmFubGliLDt0IHQKcyxAYWNfY3RfUkFOTElC QCxyYW5saWIsO3QgdApzLEBDUEAsY3AgLXAsO3QgdApzLEBMTkAsbG4sO3QgdApzLEBMTl9TQCxs biAtcyw7dCB0CnMsQEVDSE9ALGVjaG8sO3QgdApzLEBBUkAsYXIsO3QgdApzLEBhY19jdF9BUkAs YXIsO3QgdApzLEBETExUT09MQCxkbGx0b29sLDt0IHQKcyxAYWNfY3RfRExMVE9PTEAsLDt0IHQK cyxAQVNALGFzLDt0IHQKcyxAYWNfY3RfQVNALCw7dCB0CnMsQE9CSkRVTVBALG9iamR1bXAsO3Qg dApzLEBhY19jdF9PQkpEVU1QQCwsO3QgdApzLEBDWFhALGcrKyw7dCB0CnMsQENYWEZMQUdTQCwt ZyAtTzIsO3QgdApzLEBhY19jdF9DWFhALGcrKyw7dCB0CnMsQENYWERFUE1PREVALGRlcG1vZGU9 bm9uZSw7dCB0CnMsQGFtX19mYXN0ZGVwQ1hYX1RSVUVALCMsO3QgdApzLEBhbV9fZmFzdGRlcENY WF9GQUxTRUAsLDt0IHQKcyxAQ1hYQ1BQQCxnKysgLUUsO3QgdApzLEBGNzdALGY3Nyw7dCB0CnMs QEZGTEFHU0AsLWcgLU8yLDt0IHQKcyxAYWNfY3RfRjc3QCxmNzcsO3QgdApzLEBMSUJUT09MQCwk KFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCw7dCB0CnMsQExJQklDT05WQCwvdXNyL2xv Y2FsL2xpYi9saWJpY29udi5zbyAtV2wsLXJwYXRoIC1XbCwvdXNyL2xvY2FsL2xpYiw7dCB0CnMs QExUTElCSUNPTlZALC1ML3Vzci9sb2NhbC9saWIgLWxpY29udiAtUi91c3IvbG9jYWwvbGliLDt0 IHQKcyxATUtJTlNUQUxMRElSU0AsJCh0b3BfYnVpbGRkaXIpL2F1dG9jb25mL21raW5zdGFsbGRp cnMsO3QgdApzLEBVU0VfTkxTQCx5ZXMsO3QgdApzLEBNU0dGTVRALC91c3IvbG9jYWwvYmluL21z Z2ZtdCw7dCB0CnMsQEdNU0dGTVRALC91c3IvbG9jYWwvYmluL21zZ2ZtdCw7dCB0CnMsQFhHRVRU RVhUQCwvdXNyL2xvY2FsL2Jpbi94Z2V0dGV4dCw7dCB0CnMsQE1TR01FUkdFQCwvdXNyL2xvY2Fs L2Jpbi9tc2dtZXJnZSw7dCB0CnMsQElOVExMSUJTQCwvdXNyL2xvY2FsL2xpYi9saWJpbnRsLnNv IC1XbCwtcnBhdGggLVdsLC91c3IvbG9jYWwvbGliLDt0IHQKcyxATElCSU5UTEAsL3Vzci9sb2Nh bC9saWIvbGliaW50bC5zbyAtV2wsLXJwYXRoIC1XbCwvdXNyL2xvY2FsL2xpYiw7dCB0CnMsQExU TElCSU5UTEAsLUwvdXNyL2xvY2FsL2xpYiAtbGludGwgLVIvdXNyL2xvY2FsL2xpYiw7dCB0CnMs QFBPU1VCQCxwbyw7dCB0CnMsQElDT05WX0NPTlNUQCxjb25zdCw7dCB0CnMsQEVJTFNFUUAsLDt0 IHQKcyxAQUxMT0NBQCwsO3QgdApzLEBBTExPQ0FfSEAsYWxsb2NhLmgsO3QgdApzLEBIQVZFX19C T09MQCwsO3QgdApzLEBTVERCT09MX0hALCw7dCB0CnMsQE9TQCwsO3QgdApzLEBHQ0NALHllcyw7 dCB0CnMsQFBMVUdMSUJALCw7dCB0CnMsQHN1YmRpcnNALCBsaWJjaGFyc2V0LDt0IHQKcyxATFRM SUJPQkpTQCwgY2Fub25pY2FsaXplJFUubG8sO3QgdApDRU9GCgogICMgU3BsaXQgdGhlIHN1YnN0 aXR1dGlvbnMgaW50byBiaXRlLXNpemVkIHBpZWNlcyBmb3Igc2VkcyB3aXRoCiAgIyBzbWFsbCBj b21tYW5kIG51bWJlciBsaW1pdHMsIGxpa2Ugb24gRGlnaXRhbCBPU0YvMSBhbmQgSFAtVVguCiAg YWNfbWF4X3NlZF9saW5lcz00OAogIGFjX3NlZF9mcmFnPTEgIyBOdW1iZXIgb2YgY3VycmVudCBm aWxlLgogIGFjX2JlZz0xICMgRmlyc3QgbGluZSBmb3IgY3VycmVudCBmaWxlLgogIGFjX2VuZD0k YWNfbWF4X3NlZF9saW5lcyAjIExpbmUgYWZ0ZXIgbGFzdCBsaW5lIGZvciBjdXJyZW50IGZpbGUu CiAgYWNfbW9yZV9saW5lcz06CiAgYWNfc2VkX2NtZHM9CiAgd2hpbGUgJGFjX21vcmVfbGluZXM7 IGRvCiAgICBpZiB0ZXN0ICRhY19iZWcgLWd0IDE7IHRoZW4KICAgICAgc2VkICIxLCR7YWNfYmVn fWQ7ICR7YWNfZW5kfXEiICR0bXAvc3Vicy5zZWQgPiR0bXAvc3Vicy5mcmFnCiAgICBlbHNlCiAg ICAgIHNlZCAiJHthY19lbmR9cSIgJHRtcC9zdWJzLnNlZCA+JHRtcC9zdWJzLmZyYWcKICAgIGZp CiAgICBpZiB0ZXN0ICEgLXMgJHRtcC9zdWJzLmZyYWc7IHRoZW4KICAgICAgYWNfbW9yZV9saW5l cz1mYWxzZQogICAgZWxzZQogICAgICAjIFRoZSBwdXJwb3NlIG9mIHRoZSBsYWJlbCBhbmQgb2Yg dGhlIGJyYW5jaGluZyBjb25kaXRpb24gaXMgdG8KICAgICAgIyBzcGVlZCB1cCB0aGUgc2VkIHBy b2Nlc3NpbmcgKGlmIHRoZXJlIGFyZSBubyBgQCcgYXQgYWxsLCB0aGVyZQogICAgICAjIGlzIG5v IG5lZWQgdG8gYnJvd3NlIGFueSBvZiB0aGUgc3Vic3RpdHV0aW9ucykuCiAgICAgICMgVGhlc2Ug YXJlIHRoZSB0d28gZXh0cmEgc2VkIGNvbW1hbmRzIG1lbnRpb25lZCBhYm92ZS4KICAgICAgKGVj aG8gJzp0CiAgL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8hYicgJiYgY2F0ICR0bXAvc3Vicy5m cmFnKSA+JHRtcC9zdWJzLSRhY19zZWRfZnJhZy5zZWQKICAgICAgaWYgdGVzdCAteiAiJGFjX3Nl ZF9jbWRzIjsgdGhlbgogIAlhY19zZWRfY21kcz0ic2VkIC1mICR0bXAvc3Vicy0kYWNfc2VkX2Zy YWcuc2VkIgogICAgICBlbHNlCiAgCWFjX3NlZF9jbWRzPSIkYWNfc2VkX2NtZHMgfCBzZWQgLWYg JHRtcC9zdWJzLSRhY19zZWRfZnJhZy5zZWQiCiAgICAgIGZpCiAgICAgIGFjX3NlZF9mcmFnPWBl eHByICRhY19zZWRfZnJhZyArIDFgCiAgICAgIGFjX2JlZz0kYWNfZW5kCiAgICAgIGFjX2VuZD1g ZXhwciAkYWNfZW5kICsgJGFjX21heF9zZWRfbGluZXNgCiAgICBmaQogIGRvbmUKICBpZiB0ZXN0 IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuCiAgICBhY19zZWRfY21kcz1jYXQKICBmaQpmaSAjIHRl c3QgLW4gIiRDT05GSUdfRklMRVMiCgpmb3IgYWNfZmlsZSBpbiA6ICRDT05GSUdfRklMRVM7IGRv IHRlc3QgIngkYWNfZmlsZSIgPSB4OiAmJiBjb250aW51ZQogICMgU3VwcG9ydCAib3V0ZmlsZVs6 aW5maWxlWzppbmZpbGUuLi5dXSIsIGRlZmF1bHRpbmcgaW5maWxlPSJvdXRmaWxlLmluIi4KICBj YXNlICRhY19maWxlIGluCiAgLSB8ICo6LSB8ICo6LToqICkgIyBpbnB1dCBmcm9tIHN0ZGluCiAg ICAgICAgY2F0ID4kdG1wL3N0ZGluCiAgICAgICAgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUi IHwgc2VkICdzLFteOl0qOiwsJ2AKICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBz ZWQgJ3MsOi4qLCwnYCA7OwogICo6KiApIGFjX2ZpbGVfaW49YGVjaG8gIiRhY19maWxlIiB8IHNl ZCAncyxbXjpdKjosLCdgCiAgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdz LDouKiwsJ2AgOzsKICAqICkgICBhY19maWxlX2luPSRhY19maWxlLmluIDs7CiAgZXNhYwoKICAj IENvbXB1dGUgQHNyY2RpckAsIEB0b3Bfc3JjZGlyQCwgYW5kIEBJTlNUQUxMQCBmb3Igc3ViZGly ZWN0b3JpZXMuCiAgYWNfZGlyPWAoZGlybmFtZSAiJGFjX2ZpbGUiKSAyPi9kZXYvbnVsbCB8fAok YXNfZXhwciBYIiRhY19maWxlIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAog ICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXAogICAgICAgICBYIiRhY19m aWxlIiA6ICdYXCgvL1wpJCcgXHwgXAogICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvXCknIFx8 IFwKICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CmVjaG8gWCIkYWNfZmls ZSIgfAogICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sgcy8vXDEvOyBx OyB9CiAgCSAgL15YXChcL1wvXClbXi9dLioveyBzLy9cMS87IHE7IH0KICAJICAvXlhcKFwvXC9c KSQveyBzLy9cMS87IHE7IH0KICAJICAvXlhcKFwvXCkuKi97IHMvL1wxLzsgcTsgfQogIAkgIHMv LiovLi87IHEnYAogIHsgaWYgJGFzX21rZGlyX3A7IHRoZW4KICAgIG1rZGlyIC1wICIkYWNfZGly IgogIGVsc2UKICAgIGFzX2Rpcj0iJGFjX2RpciIKICAgIGFzX2RpcnM9CiAgICB3aGlsZSB0ZXN0 ICEgLWQgIiRhc19kaXIiOyBkbwogICAgICBhc19kaXJzPSIkYXNfZGlyICRhc19kaXJzIgogICAg ICBhc19kaXI9YChkaXJuYW1lICIkYXNfZGlyIikgMj4vZGV2L251bGwgfHwKJGFzX2V4cHIgWCIk YXNfZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAogICAgICAgICBYIiRh c19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCiAgICAgICAgIFgiJGFzX2RpciIgOiAnWFwoLy9c KSQnIFx8IFwKICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IFwKICAgICAgICAgLiAg ICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CmVjaG8gWCIkYXNfZGlyIiB8CiAgICBzZWQgJy9e WFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBzLy9cMS87IHE7IH0KICAJICAvXlhcKFwv XC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwoXC9cL1wpJC97IHMvL1wxLzsgcTsg fQogIAkgIC9eWFwoXC9cKS4qL3sgcy8vXDEvOyBxOyB9CiAgCSAgcy8uKi8uLzsgcSdgCiAgICBk b25lCiAgICB0ZXN0ICEgLW4gIiRhc19kaXJzIiB8fCBta2RpciAkYXNfZGlycwogIGZpIHx8IHsg eyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5IFwi JGFjX2RpclwiIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSBkaXJlY3Rv cnkgXCIkYWNfZGlyXCIiID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfTsgfQoKICBh Y19idWlsZGRpcj0uCgppZiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCiAgYWNfZGlyX3N1ZmZp eD0vYGVjaG8gIiRhY19kaXIiIHwgc2VkICdzLF5cLltcXC9dLCwnYAogICMgQSAiLi4vIiBmb3Ig ZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCiAgYWNfdG9wX2J1aWxkZGlyPWBlY2hv ICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3MsL1teXFwvXSosLi4vLGcnYAplbHNlCiAgYWNfZGly X3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyPQpmaQoKY2FzZSAkc3JjZGlyIGluCiAgLikgICMgTm8g LS1zcmNkaXIgb3B0aW9uLiAgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLgogICAgYWNfc3JjZGly PS4KICAgIGlmIHRlc3QgLXogIiRhY190b3BfYnVpbGRkaXIiOyB0aGVuCiAgICAgICBhY190b3Bf c3JjZGlyPS4KICAgIGVsc2UKICAgICAgIGFjX3RvcF9zcmNkaXI9YGVjaG8gJGFjX3RvcF9idWls ZGRpciB8IHNlZCAncywvJCwsJ2AKICAgIGZpIDs7CiAgW1xcL10qIHwgPzpbXFwvXSogKSAgIyBB YnNvbHV0ZSBwYXRoLgogICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKICAgIGFj X3RvcF9zcmNkaXI9JHNyY2RpciA7OwogICopICMgUmVsYXRpdmUgcGF0aC4KICAgIGFjX3NyY2Rp cj0kYWNfdG9wX2J1aWxkZGlyJHNyY2RpciRhY19kaXJfc3VmZml4CiAgICBhY190b3Bfc3JjZGly PSRhY190b3BfYnVpbGRkaXIkc3JjZGlyIDs7CmVzYWMKIyBEb24ndCBibGluZGx5IHBlcmZvcm0g YSBgY2QgIiRhY19kaXIiLyRhY19mb28gJiYgcHdkYCBzaW5jZSAkYWNfZm9vIGNhbiBiZQojIGFi c29sdXRlLgphY19hYnNfYnVpbGRkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfYnVpbGRkaXIg JiYgcHdkYAphY19hYnNfdG9wX2J1aWxkZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJHthY190b3Bf YnVpbGRkaXJ9LiAmJiBwd2RgCmFjX2Fic19zcmNkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNf c3JjZGlyICYmIHB3ZGAKYWNfYWJzX3RvcF9zcmNkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNf dG9wX3NyY2RpciAmJiBwd2RgCgoKICBjYXNlICRJTlNUQUxMIGluCiAgW1xcLyRdKiB8ID86W1xc L10qICkgYWNfSU5TVEFMTD0kSU5TVEFMTCA7OwogICopIGFjX0lOU1RBTEw9JGFjX3RvcF9idWls ZGRpciRJTlNUQUxMIDs7CiAgZXNhYwoKICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVu CiAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1CmVjaG8g IiRhc19tZTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9CiAgICBybSAtZiAiJGFjX2ZpbGUiCiAg ZmkKICAjIExldCdzIHN0aWxsIHByZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFu dGlhdGVzIChpLmUuLCBkb24ndAogICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJw cmlzZWQgdG8gcmVhZDoKICAjICAgIC8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZy5z dGF0dXMuICAqLwogIGlmIHRlc3QgeCIkYWNfZmlsZSIgPSB4LTsgdGhlbgogICAgY29uZmlndXJl X2lucHV0PQogIGVsc2UKICAgIGNvbmZpZ3VyZV9pbnB1dD0iJGFjX2ZpbGUuICAiCiAgZmkKICBj b25maWd1cmVfaW5wdXQ9JGNvbmZpZ3VyZV9pbnB1dCJHZW5lcmF0ZWQgZnJvbSBgZWNobyAkYWNf ZmlsZV9pbiB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWQgJ3MsLiov LCwnYCBieSBjb25maWd1cmUuIgoKICAjIEZpcnN0IGxvb2sgZm9yIHRoZSBpbnB1dCBmaWxlcyBp biB0aGUgYnVpbGQgdHJlZSwgb3RoZXJ3aXNlIGluIHRoZQogICMgc3JjIHRyZWUuCiAgYWNfZmls ZV9pbnB1dHM9YElGUz06CiAgICBmb3IgZiBpbiAkYWNfZmlsZV9pbjsgZG8KICAgICAgY2FzZSAk ZiBpbgogICAgICAtKSBlY2hvICR0bXAvc3RkaW4gOzsKICAgICAgW1xcLyRdKikKICAgICAgICAg IyBBYnNvbHV0ZSAoY2FuJ3QgYmUgRE9TLXN0eWxlLCBhcyBJRlM9OikKICAgICAgICAgdGVzdCAt ZiAiJGYiIHx8IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGlu cHV0IGZpbGU6ICRmIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQg ZmlsZTogJGYiID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogICAgICAgICBlY2hv ICRmOzsKICAgICAgKikgIyBSZWxhdGl2ZQogICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4K ICAgICAgICAgICAjIEJ1aWxkIHRyZWUKICAgICAgICAgICBlY2hvICRmCiAgICAgICAgIGVsaWYg dGVzdCAtZiAiJHNyY2Rpci8kZiI7IHRoZW4KICAgICAgICAgICAjIFNvdXJjZSB0cmVlCiAgICAg ICAgICAgZWNobyAkc3JjZGlyLyRmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAjIC9kZXYvbnVs bCB0cmVlCiAgICAgICAgICAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90 IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmlu ZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICAg ICAgIGZpOzsKICAgICAgZXNhYwogICAgZG9uZWAgfHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9CiAg c2VkICIvXlsgCV0qVlBBVEhbIAldKj0vewpzLzoqXCQoc3JjZGlyKToqLzovOwpzLzoqXCR7c3Jj ZGlyfToqLzovOwpzLzoqQHNyY2RpckA6Ki86LzsKcy9eXChbXj1dKj1bIAldKlwpOiovXDEvOwpz LzoqJC8vOwpzL15bXj1dKj1bIAldKiQvLzsKfQoKOnQKL0BbYS16QS1aX11bYS16QS1aXzAtOV0q QC8hYgpzLEBjb25maWd1cmVfaW5wdXRALCRjb25maWd1cmVfaW5wdXQsO3QgdApzLEBzcmNkaXJA LCRhY19zcmNkaXIsO3QgdApzLEBhYnNfc3JjZGlyQCwkYWNfYWJzX3NyY2Rpciw7dCB0CnMsQHRv cF9zcmNkaXJALCRhY190b3Bfc3JjZGlyLDt0IHQKcyxAYWJzX3RvcF9zcmNkaXJALCRhY19hYnNf dG9wX3NyY2Rpciw7dCB0CnMsQGJ1aWxkZGlyQCwkYWNfYnVpbGRkaXIsO3QgdApzLEBhYnNfYnVp bGRkaXJALCRhY19hYnNfYnVpbGRkaXIsO3QgdApzLEB0b3BfYnVpbGRkaXJALCRhY190b3BfYnVp bGRkaXIsO3QgdApzLEBhYnNfdG9wX2J1aWxkZGlyQCwkYWNfYWJzX3RvcF9idWlsZGRpciw7dCB0 CnMsQElOU1RBTExALCRhY19JTlNUQUxMLDt0IHQKIiAkYWNfZmlsZV9pbnB1dHMgfCAoZXZhbCAi JGFjX3NlZF9jbWRzIikgPiR0bXAvb3V0CiAgcm0gLWYgJHRtcC9zdGRpbgogIGlmIHRlc3QgeCIk YWNfZmlsZSIgIT0geC07IHRoZW4KICAgIG12ICR0bXAvb3V0ICRhY19maWxlCiAgZWxzZQogICAg Y2F0ICR0bXAvb3V0CiAgICBybSAtZiAkdG1wL291dAogIGZpCgpkb25lCgojCiMgQ09ORklHX0hF QURFUiBzZWN0aW9uLgojCgojIFRoZXNlIHNlZCBjb21tYW5kcyBhcmUgcGFzc2VkIHRvIHNlZCBh cyAiQSBOQU1FIEIgTkFNRSBDIFZBTFVFIEQiLCB3aGVyZQojIE5BTUUgaXMgdGhlIGNwcCBtYWNy byBiZWluZyBkZWZpbmVkIGFuZCBWQUxVRSBpcyB0aGUgdmFsdWUgaXQgaXMgYmVpbmcgZ2l2ZW4u CiMKIyBhY19kIHNldHMgdGhlIHZhbHVlIGluICIjZGVmaW5lIE5BTUUgVkFMVUUiIGxpbmVzLgph Y19kQT0ncyxeXChbIAldKlwpI1woWyAJXSpkZWZpbmVbIAldWyAJXSpcKScKYWNfZEI9J1sgCV0u KiQsXDEjXDInCmFjX2RDPScgJwphY19kRD0nLDt0JwojIGFjX3UgdHVybnMgIiN1bmRlZiBOQU1F IiB3aXRob3V0IHRyYWlsaW5nIGJsYW5rcyBpbnRvICIjZGVmaW5lIE5BTUUgVkFMVUUiLgphY191 QT0ncyxeXChbIAldKlwpI1woWyAJXSpcKXVuZGVmXChbIAldWyAJXSpcKScKYWNfdUI9JyQsXDEj XDJkZWZpbmVcMycKYWNfdUM9JyAnCmFjX3VEPScsO3QnCgpmb3IgYWNfZmlsZSBpbiA6ICRDT05G SUdfSEVBREVSUzsgZG8gdGVzdCAieCRhY19maWxlIiA9IHg6ICYmIGNvbnRpbnVlCiAgIyBTdXBw b3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIiwgZGVmYXVsdGluZyBpbmZpbGU9Im91 dGZpbGUuaW4iLgogIGNhc2UgJGFjX2ZpbGUgaW4KICAtIHwgKjotIHwgKjotOiogKSAjIGlucHV0 IGZyb20gc3RkaW4KICAgICAgICBjYXQgPiR0bXAvc3RkaW4KICAgICAgICBhY19maWxlX2luPWBl Y2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsW146XSo6LCwnYAogICAgICAgIGFjX2ZpbGU9YGVjaG8g IiRhY19maWxlIiB8IHNlZCAncyw6LiosLCdgIDs7CiAgKjoqICkgYWNfZmlsZV9pbj1gZWNobyAi JGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKICAgICAgICBhY19maWxlPWBlY2hvICIkYWNf ZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OwogICogKSAgIGFjX2ZpbGVfaW49JGFjX2ZpbGUuaW4g OzsKICBlc2FjCgogIHRlc3QgeCIkYWNfZmlsZSIgIT0geC0gJiYgeyBlY2hvICIkYXNfbWU6JExJ TkVOTzogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQplY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19m aWxlIiA+JjY7fQoKICAjIEZpcnN0IGxvb2sgZm9yIHRoZSBpbnB1dCBmaWxlcyBpbiB0aGUgYnVp bGQgdHJlZSwgb3RoZXJ3aXNlIGluIHRoZQogICMgc3JjIHRyZWUuCiAgYWNfZmlsZV9pbnB1dHM9 YElGUz06CiAgICBmb3IgZiBpbiAkYWNfZmlsZV9pbjsgZG8KICAgICAgY2FzZSAkZiBpbgogICAg ICAtKSBlY2hvICR0bXAvc3RkaW4gOzsKICAgICAgW1xcLyRdKikKICAgICAgICAgIyBBYnNvbHV0 ZSAoY2FuJ3QgYmUgRE9TLXN0eWxlLCBhcyBJRlM9OikKICAgICAgICAgdGVzdCAtZiAiJGYiIHx8 IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6 ICRmIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYi ID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogICAgICAgICBlY2hvICRmOzsKICAg ICAgKikgIyBSZWxhdGl2ZQogICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KICAgICAgICAg ICAjIEJ1aWxkIHRyZWUKICAgICAgICAgICBlY2hvICRmCiAgICAgICAgIGVsaWYgdGVzdCAtZiAi JHNyY2Rpci8kZiI7IHRoZW4KICAgICAgICAgICAjIFNvdXJjZSB0cmVlCiAgICAgICAgICAgZWNo byAkc3JjZGlyLyRmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAjIC9kZXYvbnVsbCB0cmVlCiAg ICAgICAgICAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGZpbmQgaW5w dXQgZmlsZTogJGYiID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBm aWxlOiAkZiIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICAgICAgIGZpOzsK ICAgICAgZXNhYwogICAgZG9uZWAgfHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9CiAgIyBSZW1vdmUg dGhlIHRyYWlsaW5nIHNwYWNlcy4KICBzZWQgJ3MvWyAJXSokLy8nICRhY19maWxlX2lucHV0cyA+ JHRtcC9pbgoKICAjIEhhbmRsZSBhbGwgdGhlICNkZWZpbmUgdGVtcGxhdGVzIG9ubHkgaWYgbmVj ZXNzYXJ5LgogIGlmIGdyZXAgIl5bIAldKiNbIAldKmRlZmluZSIgJHRtcC9pbiA+L2Rldi9udWxs OyB0aGVuCiAgIyBJZiB0aGVyZSBhcmUgbm8gZGVmaW5lcywgd2UgbWF5IGhhdmUgYW4gZW1wdHkg aWYvZmkKICA6CiAgY2F0ID4kdG1wL2RlZmluZXMuc2VkIDw8Q0VPRgovXlsgCV0qI1sgCV0qZGVm aW5lLyFiCnQgY2xyCjogY2xyCiR7YWNfZEF9UEFDS0FHRV9OQU1FJHthY19kQn1QQUNLQUdFX05B TUUke2FjX2RDfSIiJHthY19kRH0KJHthY19kQX1QQUNLQUdFX1RBUk5BTUUke2FjX2RCfVBBQ0tB R0VfVEFSTkFNRSR7YWNfZEN9IiIke2FjX2REfQoke2FjX2RBfVBBQ0tBR0VfVkVSU0lPTiR7YWNf ZEJ9UEFDS0FHRV9WRVJTSU9OJHthY19kQ30iIiR7YWNfZER9CiR7YWNfZEF9UEFDS0FHRV9TVFJJ Tkcke2FjX2RCfVBBQ0tBR0VfU1RSSU5HJHthY19kQ30iIiR7YWNfZER9CiR7YWNfZEF9UEFDS0FH RV9CVUdSRVBPUlQke2FjX2RCfVBBQ0tBR0VfQlVHUkVQT1JUJHthY19kQ30iIiR7YWNfZER9CiR7 YWNfZEF9UEFDS0FHRSR7YWNfZEJ9UEFDS0FHRSR7YWNfZEN9ImxpYmljb252IiR7YWNfZER9CiR7 YWNfZEF9VkVSU0lPTiR7YWNfZEJ9VkVSU0lPTiR7YWNfZEN9IjEuOSIke2FjX2REfQoke2FjX2RB fUlOU1RBTExQUkVGSVgke2FjX2RCfUlOU1RBTExQUkVGSVgke2FjX2RDfSIvdXNyL2xvY2FsIiR7 YWNfZER9CiR7YWNfZEF9X0dOVV9TT1VSQ0Uke2FjX2RCfV9HTlVfU09VUkNFJHthY19kQ30xJHth Y19kRH0KJHthY19kQX1TVERDX0hFQURFUlMke2FjX2RCfVNURENfSEVBREVSUyR7YWNfZEN9MSR7 YWNfZER9CiR7YWNfZEF9SEFWRV9TWVNfVFlQRVNfSCR7YWNfZEJ9SEFWRV9TWVNfVFlQRVNfSCR7 YWNfZEN9MSR7YWNfZER9CiR7YWNfZEF9SEFWRV9TWVNfU1RBVF9IJHthY19kQn1IQVZFX1NZU19T VEFUX0gke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVfU1RETElCX0gke2FjX2RCfUhBVkVf U1RETElCX0gke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVfU1RSSU5HX0gke2FjX2RCfUhB VkVfU1RSSU5HX0gke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVfTUVNT1JZX0gke2FjX2RC fUhBVkVfTUVNT1JZX0gke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVfU1RSSU5HU19IJHth Y19kQn1IQVZFX1NUUklOR1NfSCR7YWNfZEN9MSR7YWNfZER9CiR7YWNfZEF9SEFWRV9JTlRUWVBF U19IJHthY19kQn1IQVZFX0lOVFRZUEVTX0gke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVf U1RESU5UX0gke2FjX2RCfUhBVkVfU1RESU5UX0gke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhB VkVfVU5JU1REX0gke2FjX2RCfUhBVkVfVU5JU1REX0gke2FjX2RDfTEke2FjX2REfQoke2FjX2RB fUhBVkVfRExGQ05fSCR7YWNfZEJ9SEFWRV9ETEZDTl9IJHthY19kQ30xJHthY19kRH0KJHthY19k QX1IQVZFX0lDT05WJHthY19kQn1IQVZFX0lDT05WJHthY19kQ30xJHthY19kRH0KJHthY19kQX1J Q09OVl9DT05TVCR7YWNfZEJ9SUNPTlZfQ09OU1Qke2FjX2RDfWNvbnN0JHthY19kRH0KJHthY19k QX1IQVZFX0lDT05WJHthY19kQn1IQVZFX0lDT05WJHthY19kQ30xJHthY19kRH0KJHthY19kQX1F TkFCTEVfTkxTJHthY19kQn1FTkFCTEVfTkxTJHthY19kQ30xJHthY19kRH0KJHthY19kQX1IQVZF X0dFVFRFWFQke2FjX2RCfUhBVkVfR0VUVEVYVCR7YWNfZEN9MSR7YWNfZER9CiR7YWNfZEF9SEFW RV9EQ0dFVFRFWFQke2FjX2RCfUhBVkVfRENHRVRURVhUJHthY19kQ30xJHthY19kRH0KJHthY19k QX1TVERDX0hFQURFUlMke2FjX2RCfVNURENfSEVBREVSUyR7YWNfZEN9MSR7YWNfZER9CiR7YWNf ZEF9SEFWRV9MT0NBTEVfSCR7YWNfZEJ9SEFWRV9MT0NBTEVfSCR7YWNfZEN9MSR7YWNfZER9CiR7 YWNfZEF9SEFWRV9TVERERUZfSCR7YWNfZEJ9SEFWRV9TVERERUZfSCR7YWNfZEN9MSR7YWNfZER9 CiR7YWNfZEF9SEFWRV9TVERMSUJfSCR7YWNfZEJ9SEFWRV9TVERMSUJfSCR7YWNfZEN9MSR7YWNf ZER9CiR7YWNfZEF9SEFWRV9TVFJJTkdfSCR7YWNfZEJ9SEFWRV9TVFJJTkdfSCR7YWNfZEN9MSR7 YWNfZER9CiR7YWNfZEF9SEFWRV9TVERMSUJfSCR7YWNfZEJ9SEFWRV9TVERMSUJfSCR7YWNfZEN9 MSR7YWNfZER9CiR7YWNfZEF9SEFWRV9HRVRDX1VOTE9DS0VEJHthY19kQn1IQVZFX0dFVENfVU5M T0NLRUQke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVfTUJSVE9XQyR7YWNfZEJ9SEFWRV9N QlJUT1dDJHthY19kQ30xJHthY19kRH0KJHthY19kQX1IQVZFX1dDUlRPTUIke2FjX2RCfUhBVkVf V0NSVE9NQiR7YWNfZEN9MSR7YWNfZER9CiR7YWNfZEF9SEFWRV9NQlNJTklUJHthY19kQn1IQVZF X01CU0lOSVQke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVfU0VUTE9DQUxFJHthY19kQn1I QVZFX1NFVExPQ0FMRSR7YWNfZEN9MSR7YWNfZER9CiR7YWNfZEF9SEFWRV9NRU1NT1ZFJHthY19k Qn1IQVZFX01FTU1PVkUke2FjX2RDfTEke2FjX2REfQpDRU9GCiAgc2VkIC1mICR0bXAvZGVmaW5l cy5zZWQgJHRtcC9pbiA+JHRtcC9vdXQKICBybSAtZiAkdG1wL2luCiAgbXYgJHRtcC9vdXQgJHRt cC9pbgoKICBjYXQgPiR0bXAvZGVmaW5lcy5zZWQgPDxDRU9GCi9eWyAJXSojWyAJXSpkZWZpbmUv IWIKdCBjbHIKOiBjbHIKJHthY19kQX1IQVZFX0xBTkdJTkZPX0NPREVTRVQke2FjX2RCfUhBVkVf TEFOR0lORk9fQ09ERVNFVCR7YWNfZEN9MSR7YWNfZER9CiR7YWNfZEF9SEFWRV9XQ0hBUl9IJHth Y19kQn1IQVZFX1dDSEFSX0gke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfVdPUkRTX0xJVFRMRUVO RElBTiR7YWNfZEJ9V09SRFNfTElUVExFRU5ESUFOJHthY19kQ30xJHthY19kRH0KJHthY19kQX1I QVZFX0FMTE9DQSR7YWNfZEJ9SEFWRV9BTExPQ0Eke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhB VkVfU1RETElCX0gke2FjX2RCfUhBVkVfU1RETElCX0gke2FjX2RDfTEke2FjX2REfQoke2FjX2RB fUhBVkVfU1RSSU5HX0gke2FjX2RCfUhBVkVfU1RSSU5HX0gke2FjX2RDfTEke2FjX2REfQoke2Fj X2RBfUhBVkVfU1lTX1BBUkFNX0gke2FjX2RCfUhBVkVfU1lTX1BBUkFNX0gke2FjX2RDfTEke2Fj X2REfQoke2FjX2RBfUhBVkVfVU5JU1REX0gke2FjX2RCfUhBVkVfVU5JU1REX0gke2FjX2RDfTEk e2FjX2REfQoke2FjX2RBfXJlYWxwYXRoJHthY19kQn1yZWFscGF0aCR7YWNfZEN9cnBsX3JlYWxw YXRoJHthY19kRH0KJHthY19kQX1IQVZFX0dFVENXRCR7YWNfZEJ9SEFWRV9HRVRDV0Qke2FjX2RD fTEke2FjX2REfQoke2FjX2RBfUhBVkVfREVDTF9DTEVBUkVSUl9VTkxPQ0tFRCR7YWNfZEJ9SEFW RV9ERUNMX0NMRUFSRVJSX1VOTE9DS0VEJHthY19kQ30xJHthY19kRH0KJHthY19kQX1IQVZFX0RF Q0xfRkVPRl9VTkxPQ0tFRCR7YWNfZEJ9SEFWRV9ERUNMX0ZFT0ZfVU5MT0NLRUQke2FjX2RDfTEk e2FjX2REfQoke2FjX2RBfUhBVkVfREVDTF9GRVJST1JfVU5MT0NLRUQke2FjX2RCfUhBVkVfREVD TF9GRVJST1JfVU5MT0NLRUQke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVfREVDTF9GRkxV U0hfVU5MT0NLRUQke2FjX2RCfUhBVkVfREVDTF9GRkxVU0hfVU5MT0NLRUQke2FjX2RDfTAke2Fj X2REfQoke2FjX2RBfUhBVkVfREVDTF9GR0VUU19VTkxPQ0tFRCR7YWNfZEJ9SEFWRV9ERUNMX0ZH RVRTX1VOTE9DS0VEJHthY19kQ30wJHthY19kRH0KJHthY19kQX1IQVZFX0RFQ0xfRlBVVENfVU5M T0NLRUQke2FjX2RCfUhBVkVfREVDTF9GUFVUQ19VTkxPQ0tFRCR7YWNfZEN9MCR7YWNfZER9CiR7 YWNfZEF9SEFWRV9ERUNMX0ZQVVRTX1VOTE9DS0VEJHthY19kQn1IQVZFX0RFQ0xfRlBVVFNfVU5M T0NLRUQke2FjX2RDfTAke2FjX2REfQoke2FjX2RBfUhBVkVfREVDTF9GUkVBRF9VTkxPQ0tFRCR7 YWNfZEJ9SEFWRV9ERUNMX0ZSRUFEX1VOTE9DS0VEJHthY19kQ30wJHthY19kRH0KJHthY19kQX1I QVZFX0RFQ0xfRldSSVRFX1VOTE9DS0VEJHthY19kQn1IQVZFX0RFQ0xfRldSSVRFX1VOTE9DS0VE JHthY19kQ30wJHthY19kRH0KJHthY19kQX1IQVZFX0RFQ0xfR0VUQ19VTkxPQ0tFRCR7YWNfZEJ9 SEFWRV9ERUNMX0dFVENfVU5MT0NLRUQke2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVfREVD TF9HRVRDSEFSX1VOTE9DS0VEJHthY19kQn1IQVZFX0RFQ0xfR0VUQ0hBUl9VTkxPQ0tFRCR7YWNf ZEN9MSR7YWNfZER9CiR7YWNfZEF9SEFWRV9ERUNMX1BVVENfVU5MT0NLRUQke2FjX2RCfUhBVkVf REVDTF9QVVRDX1VOTE9DS0VEJHthY19kQ30xJHthY19kRH0KJHthY19kQX1IQVZFX0RFQ0xfUFVU Q0hBUl9VTkxPQ0tFRCR7YWNfZEJ9SEFWRV9ERUNMX1BVVENIQVJfVU5MT0NLRUQke2FjX2RDfTEk e2FjX2REfQoke2FjX2RBfUhBVkVfVlBSSU5URiR7YWNfZEJ9SEFWRV9WUFJJTlRGJHthY19kQ30x JHthY19kRH0KJHthY19kQX1IQVZFX1NUUkVSUk9SJHthY19kQn1IQVZFX1NUUkVSUk9SJHthY19k Q30xJHthY19kRH0KJHthY19kQX1IQVZFX0RFQ0xfU1RSRVJST1Ike2FjX2RCfUhBVkVfREVDTF9T VFJFUlJPUiR7YWNfZEN9MSR7YWNfZER9CiR7YWNfZEF9SEFWRV9ERUNMX1NUUkVSUk9SX1Ike2Fj X2RCfUhBVkVfREVDTF9TVFJFUlJPUl9SJHthY19kQ30xJHthY19kRH0KJHthY19kQX1IQVZFX1NU UkVSUk9SX1Ike2FjX2RCfUhBVkVfU1RSRVJST1JfUiR7YWNfZEN9MSR7YWNfZER9CiR7YWNfZEF9 SEFWRV9MSU1JVFNfSCR7YWNfZEJ9SEFWRV9MSU1JVFNfSCR7YWNfZEN9MSR7YWNfZER9CiR7YWNf ZEF9SEFWRV9TRVRFTlYke2FjX2RCfUhBVkVfU0VURU5WJHthY19kQ30xJHthY19kRH0KJHthY19k QX1IQVZFX1VOU0VURU5WJHthY19kQn1IQVZFX1VOU0VURU5WJHthY19kQ30xJHthY19kRH0KJHth Y19kQX1IQVZFX1NFQVJDSF9IJHthY19kQn1IQVZFX1NFQVJDSF9IJHthY19kQ30xJHthY19kRH0K JHthY19kQX1IQVZFX1NURExJQl9IJHthY19kQn1IQVZFX1NURExJQl9IJHthY19kQ30xJHthY19k RH0KJHthY19kQX1IQVZFX1NUUklOR19IJHthY19kQn1IQVZFX1NUUklOR19IJHthY19kQ30xJHth Y19kRH0KJHthY19kQX1IQVZFX1VOSVNURF9IJHthY19kQn1IQVZFX1VOSVNURF9IJHthY19kQ30x JHthY19kRH0KJHthY19kQX1IQVZFX1RTRUFSQ0gke2FjX2RCfUhBVkVfVFNFQVJDSCR7YWNfZEN9 MSR7YWNfZER9CiR7YWNfZEF9SEFWRV9FUlJOT19ERUNMJHthY19kQn1IQVZFX0VSUk5PX0RFQ0wk e2FjX2RDfTEke2FjX2REfQoke2FjX2RBfUhBVkVfU1REQk9PTF9IJHthY19kQn1IQVZFX1NUREJP T0xfSCR7YWNfZEN9MSR7YWNfZER9CkNFT0YKICBzZWQgLWYgJHRtcC9kZWZpbmVzLnNlZCAkdG1w L2luID4kdG1wL291dAogIHJtIC1mICR0bXAvaW4KICBtdiAkdG1wL291dCAkdG1wL2luCgogIGNh dCA+JHRtcC9kZWZpbmVzLnNlZCA8PENFT0YKL15bIAldKiNbIAldKmRlZmluZS8hYgp0IGNscgo6 IGNscgoke2FjX2RBfUhBVkVfU1RSRVJST1Ike2FjX2RCfUhBVkVfU1RSRVJST1Ike2FjX2RDfTEk e2FjX2REfQoke2FjX2RBfUhBVkVfU1lTX1RZUEVTX0gke2FjX2RCfUhBVkVfU1lTX1RZUEVTX0gk e2FjX2RDfTEke2FjX2REfQpDRU9GCiAgc2VkIC1mICR0bXAvZGVmaW5lcy5zZWQgJHRtcC9pbiA+ JHRtcC9vdXQKICBybSAtZiAkdG1wL2luCiAgbXYgJHRtcC9vdXQgJHRtcC9pbgoKICBmaSAjIGdy ZXAKCiAgIyBIYW5kbGUgYWxsIHRoZSAjdW5kZWYgdGVtcGxhdGVzCiAgY2F0ID4kdG1wL3VuZGVm cy5zZWQgPDxDRU9GCi9eWyAJXSojWyAJXSp1bmRlZi8hYgp0IGNscgo6IGNscgoke2FjX3VBfVBB Q0tBR0VfTkFNRSR7YWNfdUJ9UEFDS0FHRV9OQU1FJHthY191Q30iIiR7YWNfdUR9CiR7YWNfdUF9 UEFDS0FHRV9UQVJOQU1FJHthY191Qn1QQUNLQUdFX1RBUk5BTUUke2FjX3VDfSIiJHthY191RH0K JHthY191QX1QQUNLQUdFX1ZFUlNJT04ke2FjX3VCfVBBQ0tBR0VfVkVSU0lPTiR7YWNfdUN9IiIk e2FjX3VEfQoke2FjX3VBfVBBQ0tBR0VfU1RSSU5HJHthY191Qn1QQUNLQUdFX1NUUklORyR7YWNf dUN9IiIke2FjX3VEfQoke2FjX3VBfVBBQ0tBR0VfQlVHUkVQT1JUJHthY191Qn1QQUNLQUdFX0JV R1JFUE9SVCR7YWNfdUN9IiIke2FjX3VEfQoke2FjX3VBfVBBQ0tBR0Uke2FjX3VCfVBBQ0tBR0Uk e2FjX3VDfSJsaWJpY29udiIke2FjX3VEfQoke2FjX3VBfVZFUlNJT04ke2FjX3VCfVZFUlNJT04k e2FjX3VDfSIxLjkiJHthY191RH0KJHthY191QX1JTlNUQUxMUFJFRklYJHthY191Qn1JTlNUQUxM UFJFRklYJHthY191Q30iL3Vzci9sb2NhbCIke2FjX3VEfQoke2FjX3VBfV9HTlVfU09VUkNFJHth Y191Qn1fR05VX1NPVVJDRSR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9U1REQ19IRUFERVJTJHth Y191Qn1TVERDX0hFQURFUlMke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfU1lTX1RZUEVT X0gke2FjX3VCfUhBVkVfU1lTX1RZUEVTX0gke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVf U1lTX1NUQVRfSCR7YWNfdUJ9SEFWRV9TWVNfU1RBVF9IJHthY191Q30xJHthY191RH0KJHthY191 QX1IQVZFX1NURExJQl9IJHthY191Qn1IQVZFX1NURExJQl9IJHthY191Q30xJHthY191RH0KJHth Y191QX1IQVZFX1NUUklOR19IJHthY191Qn1IQVZFX1NUUklOR19IJHthY191Q30xJHthY191RH0K JHthY191QX1IQVZFX01FTU9SWV9IJHthY191Qn1IQVZFX01FTU9SWV9IJHthY191Q30xJHthY191 RH0KJHthY191QX1IQVZFX1NUUklOR1NfSCR7YWNfdUJ9SEFWRV9TVFJJTkdTX0gke2FjX3VDfTEk e2FjX3VEfQoke2FjX3VBfUhBVkVfSU5UVFlQRVNfSCR7YWNfdUJ9SEFWRV9JTlRUWVBFU19IJHth Y191Q30xJHthY191RH0KJHthY191QX1IQVZFX1NURElOVF9IJHthY191Qn1IQVZFX1NURElOVF9I JHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX1VOSVNURF9IJHthY191Qn1IQVZFX1VOSVNU RF9IJHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX0RMRkNOX0gke2FjX3VCfUhBVkVfRExG Q05fSCR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9JQ09OViR7YWNfdUJ9SEFWRV9JQ09O ViR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SUNPTlZfQ09OU1Qke2FjX3VCfUlDT05WX0NPTlNU JHthY191Q31jb25zdCR7YWNfdUR9CiR7YWNfdUF9SEFWRV9JQ09OViR7YWNfdUJ9SEFWRV9JQ09O ViR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9RU5BQkxFX05MUyR7YWNfdUJ9RU5BQkxFX05MUyR7 YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9HRVRURVhUJHthY191Qn1IQVZFX0dFVFRFWFQk e2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfRENHRVRURVhUJHthY191Qn1IQVZFX0RDR0VU VEVYVCR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9U1REQ19IRUFERVJTJHthY191Qn1TVERDX0hF QURFUlMke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfTE9DQUxFX0gke2FjX3VCfUhBVkVf TE9DQUxFX0gke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfU1REREVGX0gke2FjX3VCfUhB VkVfU1REREVGX0gke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfU1RETElCX0gke2FjX3VC fUhBVkVfU1RETElCX0gke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfU1RSSU5HX0gke2Fj X3VCfUhBVkVfU1RSSU5HX0gke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfU1RETElCX0gk e2FjX3VCfUhBVkVfU1RETElCX0gke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfR0VUQ19V TkxPQ0tFRCR7YWNfdUJ9SEFWRV9HRVRDX1VOTE9DS0VEJHthY191Q30xJHthY191RH0KJHthY191 QX1IQVZFX01CUlRPV0Mke2FjX3VCfUhBVkVfTUJSVE9XQyR7YWNfdUN9MSR7YWNfdUR9CiR7YWNf dUF9SEFWRV9XQ1JUT01CJHthY191Qn1IQVZFX1dDUlRPTUIke2FjX3VDfTEke2FjX3VEfQoke2Fj X3VBfUhBVkVfTUJTSU5JVCR7YWNfdUJ9SEFWRV9NQlNJTklUJHthY191Q30xJHthY191RH0KJHth Y191QX1IQVZFX1NFVExPQ0FMRSR7YWNfdUJ9SEFWRV9TRVRMT0NBTEUke2FjX3VDfTEke2FjX3VE fQoke2FjX3VBfUhBVkVfTUVNTU9WRSR7YWNfdUJ9SEFWRV9NRU1NT1ZFJHthY191Q30xJHthY191 RH0KQ0VPRgogIHNlZCAtZiAkdG1wL3VuZGVmcy5zZWQgJHRtcC9pbiA+JHRtcC9vdXQKICBybSAt ZiAkdG1wL2luCiAgbXYgJHRtcC9vdXQgJHRtcC9pbgoKICBjYXQgPiR0bXAvdW5kZWZzLnNlZCA8 PENFT0YKL15bIAldKiNbIAldKnVuZGVmLyFiCnQgY2xyCjogY2xyCiR7YWNfdUF9SEFWRV9MQU5H SU5GT19DT0RFU0VUJHthY191Qn1IQVZFX0xBTkdJTkZPX0NPREVTRVQke2FjX3VDfTEke2FjX3VE fQoke2FjX3VBfUhBVkVfV0NIQVJfSCR7YWNfdUJ9SEFWRV9XQ0hBUl9IJHthY191Q30xJHthY191 RH0KJHthY191QX1XT1JEU19MSVRUTEVFTkRJQU4ke2FjX3VCfVdPUkRTX0xJVFRMRUVORElBTiR7 YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9BTExPQ0Eke2FjX3VCfUhBVkVfQUxMT0NBJHth Y191Q30xJHthY191RH0KJHthY191QX1IQVZFX1NURExJQl9IJHthY191Qn1IQVZFX1NURExJQl9I JHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX1NUUklOR19IJHthY191Qn1IQVZFX1NUUklO R19IJHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX1NZU19QQVJBTV9IJHthY191Qn1IQVZF X1NZU19QQVJBTV9IJHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX1VOSVNURF9IJHthY191 Qn1IQVZFX1VOSVNURF9IJHthY191Q30xJHthY191RH0KJHthY191QX1yZWFscGF0aCR7YWNfdUJ9 cmVhbHBhdGgke2FjX3VDfXJwbF9yZWFscGF0aCR7YWNfdUR9CiR7YWNfdUF9SEFWRV9HRVRDV0Qk e2FjX3VCfUhBVkVfR0VUQ1dEJHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX0RFQ0xfQ0xF QVJFUlJfVU5MT0NLRUQke2FjX3VCfUhBVkVfREVDTF9DTEVBUkVSUl9VTkxPQ0tFRCR7YWNfdUN9 MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9ERUNMX0ZFT0ZfVU5MT0NLRUQke2FjX3VCfUhBVkVfREVD TF9GRU9GX1VOTE9DS0VEJHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX0RFQ0xfRkVSUk9S X1VOTE9DS0VEJHthY191Qn1IQVZFX0RFQ0xfRkVSUk9SX1VOTE9DS0VEJHthY191Q30xJHthY191 RH0KJHthY191QX1IQVZFX0RFQ0xfRkZMVVNIX1VOTE9DS0VEJHthY191Qn1IQVZFX0RFQ0xfRkZM VVNIX1VOTE9DS0VEJHthY191Q30wJHthY191RH0KJHthY191QX1IQVZFX0RFQ0xfRkdFVFNfVU5M T0NLRUQke2FjX3VCfUhBVkVfREVDTF9GR0VUU19VTkxPQ0tFRCR7YWNfdUN9MCR7YWNfdUR9CiR7 YWNfdUF9SEFWRV9ERUNMX0ZQVVRDX1VOTE9DS0VEJHthY191Qn1IQVZFX0RFQ0xfRlBVVENfVU5M T0NLRUQke2FjX3VDfTAke2FjX3VEfQoke2FjX3VBfUhBVkVfREVDTF9GUFVUU19VTkxPQ0tFRCR7 YWNfdUJ9SEFWRV9ERUNMX0ZQVVRTX1VOTE9DS0VEJHthY191Q30wJHthY191RH0KJHthY191QX1I QVZFX0RFQ0xfRlJFQURfVU5MT0NLRUQke2FjX3VCfUhBVkVfREVDTF9GUkVBRF9VTkxPQ0tFRCR7 YWNfdUN9MCR7YWNfdUR9CiR7YWNfdUF9SEFWRV9ERUNMX0ZXUklURV9VTkxPQ0tFRCR7YWNfdUJ9 SEFWRV9ERUNMX0ZXUklURV9VTkxPQ0tFRCR7YWNfdUN9MCR7YWNfdUR9CiR7YWNfdUF9SEFWRV9E RUNMX0dFVENfVU5MT0NLRUQke2FjX3VCfUhBVkVfREVDTF9HRVRDX1VOTE9DS0VEJHthY191Q30x JHthY191RH0KJHthY191QX1IQVZFX0RFQ0xfR0VUQ0hBUl9VTkxPQ0tFRCR7YWNfdUJ9SEFWRV9E RUNMX0dFVENIQVJfVU5MT0NLRUQke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfREVDTF9Q VVRDX1VOTE9DS0VEJHthY191Qn1IQVZFX0RFQ0xfUFVUQ19VTkxPQ0tFRCR7YWNfdUN9MSR7YWNf dUR9CiR7YWNfdUF9SEFWRV9ERUNMX1BVVENIQVJfVU5MT0NLRUQke2FjX3VCfUhBVkVfREVDTF9Q VVRDSEFSX1VOTE9DS0VEJHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX1ZQUklOVEYke2Fj X3VCfUhBVkVfVlBSSU5URiR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9TVFJFUlJPUiR7 YWNfdUJ9SEFWRV9TVFJFUlJPUiR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9ERUNMX1NU UkVSUk9SJHthY191Qn1IQVZFX0RFQ0xfU1RSRVJST1Ike2FjX3VDfTEke2FjX3VEfQoke2FjX3VB fUhBVkVfREVDTF9TVFJFUlJPUl9SJHthY191Qn1IQVZFX0RFQ0xfU1RSRVJST1JfUiR7YWNfdUN9 MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9TVFJFUlJPUl9SJHthY191Qn1IQVZFX1NUUkVSUk9SX1Ik e2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfTElNSVRTX0gke2FjX3VCfUhBVkVfTElNSVRT X0gke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfU0VURU5WJHthY191Qn1IQVZFX1NFVEVO ViR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9VTlNFVEVOViR7YWNfdUJ9SEFWRV9VTlNF VEVOViR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9TRUFSQ0hfSCR7YWNfdUJ9SEFWRV9T RUFSQ0hfSCR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9TVERMSUJfSCR7YWNfdUJ9SEFW RV9TVERMSUJfSCR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9TVFJJTkdfSCR7YWNfdUJ9 SEFWRV9TVFJJTkdfSCR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9VTklTVERfSCR7YWNf dUJ9SEFWRV9VTklTVERfSCR7YWNfdUN9MSR7YWNfdUR9CiR7YWNfdUF9SEFWRV9UU0VBUkNIJHth Y191Qn1IQVZFX1RTRUFSQ0gke2FjX3VDfTEke2FjX3VEfQoke2FjX3VBfUhBVkVfRVJSTk9fREVD TCR7YWNfdUJ9SEFWRV9FUlJOT19ERUNMJHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX1NU REJPT0xfSCR7YWNfdUJ9SEFWRV9TVERCT09MX0gke2FjX3VDfTEke2FjX3VEfQpDRU9GCiAgc2Vk IC1mICR0bXAvdW5kZWZzLnNlZCAkdG1wL2luID4kdG1wL291dAogIHJtIC1mICR0bXAvaW4KICBt diAkdG1wL291dCAkdG1wL2luCgogIGNhdCA+JHRtcC91bmRlZnMuc2VkIDw8Q0VPRgovXlsgCV0q I1sgCV0qdW5kZWYvIWIKdCBjbHIKOiBjbHIKJHthY191QX1IQVZFX1NUUkVSUk9SJHthY191Qn1I QVZFX1NUUkVSUk9SJHthY191Q30xJHthY191RH0KJHthY191QX1IQVZFX1NZU19UWVBFU19IJHth Y191Qn1IQVZFX1NZU19UWVBFU19IJHthY191Q30xJHthY191RH0KcyxeWyAJXSojWyAJXSp1bmRl ZlsgCV1bIAldKlthLXpBLVpfXVthLXpBLVpfMC05XSosLyogJiAqLywKQ0VPRgogIHNlZCAtZiAk dG1wL3VuZGVmcy5zZWQgJHRtcC9pbiA+JHRtcC9vdXQKICBybSAtZiAkdG1wL2luCiAgbXYgJHRt cC9vdXQgJHRtcC9pbgoKICAjIExldCdzIHN0aWxsIHByZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScg d2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndAogICMgdXNlICRhc19tZSksIHBlb3BsZSB3 b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKICAjICAgIC8qIGNvbmZpZy5oLiAgR2VuZXJhdGVk IGJ5IGNvbmZpZy5zdGF0dXMuICAqLwogIGlmIHRlc3QgeCIkYWNfZmlsZSIgPSB4LTsgdGhlbgog ICAgZWNobyAiLyogR2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gICovIiA+JHRtcC9jb25maWcuaAog IGVsc2UKICAgIGVjaG8gIi8qICRhY19maWxlLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gICov IiA+JHRtcC9jb25maWcuaAogIGZpCiAgY2F0ICR0bXAvaW4gPj4kdG1wL2NvbmZpZy5oCiAgcm0g LWYgJHRtcC9pbgogIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KICAgIGlmIGRpZmYg JGFjX2ZpbGUgJHRtcC9jb25maWcuaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgeyBlY2hv ICIkYXNfbWU6JExJTkVOTzogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjUKZWNobyAiJGFzX21l OiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4mNjt9CiAgICBlbHNlCiAgICAgIGFjX2Rpcj1gKGRp cm5hbWUgIiRhY19maWxlIikgMj4vZGV2L251bGwgfHwKJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAn WFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKICAgICAgICAgWCIkYWNfZmlsZSIgOiAn WFwoLy9cKVteL10nIFx8IFwKICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwK ICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoL1wpJyBcfCBcCiAgICAgICAgIC4gICAgIDogJ1wo LlwpJyAyPi9kZXYvbnVsbCB8fAplY2hvIFgiJGFjX2ZpbGUiIHwKICAgIHNlZCAnL15YXCguKlte L11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwoXC9cL1wpW14v XS4qL3sgcy8vXDEvOyBxOyB9CiAgCSAgL15YXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9CiAgCSAg L15YXChcL1wpLioveyBzLy9cMS87IHE7IH0KICAJICBzLy4qLy4vOyBxJ2AKICAgICAgeyBpZiAk YXNfbWtkaXJfcDsgdGhlbgogICAgbWtkaXIgLXAgIiRhY19kaXIiCiAgZWxzZQogICAgYXNfZGly PSIkYWNfZGlyIgogICAgYXNfZGlycz0KICAgIHdoaWxlIHRlc3QgISAtZCAiJGFzX2RpciI7IGRv CiAgICAgIGFzX2RpcnM9IiRhc19kaXIgJGFzX2RpcnMiCiAgICAgIGFzX2Rpcj1gKGRpcm5hbWUg IiRhc19kaXIiKSAyPi9kZXYvbnVsbCB8fAokYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14v XVwpLy8qW14vXVteL10qLyokJyBcfCBcCiAgICAgICAgIFgiJGFzX2RpciIgOiAnWFwoLy9cKVte L10nIFx8IFwKICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAogICAgICAgICBY IiRhc19kaXIiIDogJ1hcKC9cKScgXHwgXAogICAgICAgICAuICAgICA6ICdcKC5cKScgMj4vZGV2 L251bGwgfHwKZWNobyBYIiRhc19kaXIiIHwKICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14v XVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwoXC9cL1wpW14vXS4qL3sgcy8vXDEv OyBxOyB9CiAgCSAgL15YXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9CiAgCSAgL15YXChcL1wpLiov eyBzLy9cMS87IHE7IH0KICAJICBzLy4qLy4vOyBxJ2AKICAgIGRvbmUKICAgIHRlc3QgISAtbiAi JGFzX2RpcnMiIHx8IG1rZGlyICRhc19kaXJzCiAgZmkgfHwgeyB7IGVjaG8gIiRhc19tZTokTElO RU5POiBlcnJvcjogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIkYWNfZGlyXCIiID4mNQplY2hv ICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiRhY19kaXJcIiIgPiYy O30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OyB9CgogICAgICBybSAtZiAkYWNfZmlsZQog ICAgICBtdiAkdG1wL2NvbmZpZy5oICRhY19maWxlCiAgICBmaQogIGVsc2UKICAgIGNhdCAkdG1w L2NvbmZpZy5oCiAgICBybSAtZiAkdG1wL2NvbmZpZy5oCiAgZmkKIyBDb21wdXRlICRhY19maWxl J3MgaW5kZXggaW4gJGNvbmZpZ19oZWFkZXJzLgpfYW1fc3RhbXBfY291bnQ9MQpmb3IgX2FtX2hl YWRlciBpbiAkY29uZmlnX2hlYWRlcnMgOjsgZG8KICBjYXNlICRfYW1faGVhZGVyIGluCiAgICAk YWNfZmlsZSB8ICRhY19maWxlOiogKQogICAgICBicmVhayA7OwogICAgKiApCiAgICAgIF9hbV9z dGFtcF9jb3VudD1gZXhwciAkX2FtX3N0YW1wX2NvdW50ICsgMWAgOzsKICBlc2FjCmRvbmUKZWNo byAidGltZXN0YW1wIGZvciAkYWNfZmlsZSIgPmAoZGlybmFtZSAkYWNfZmlsZSkgMj4vZGV2L251 bGwgfHwKJGFzX2V4cHIgWCRhY19maWxlIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBc fCBcCiAgICAgICAgIFgkYWNfZmlsZSA6ICdYXCgvL1wpW14vXScgXHwgXAogICAgICAgICBYJGFj X2ZpbGUgOiAnWFwoLy9cKSQnIFx8IFwKICAgICAgICAgWCRhY19maWxlIDogJ1hcKC9cKScgXHwg XAogICAgICAgICAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKZWNobyBYJGFjX2ZpbGUg fAogICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sgcy8vXDEvOyBxOyB9 CiAgCSAgL15YXChcL1wvXClbXi9dLioveyBzLy9cMS87IHE7IH0KICAJICAvXlhcKFwvXC9cKSQv eyBzLy9cMS87IHE7IH0KICAJICAvXlhcKFwvXCkuKi97IHMvL1wxLzsgcTsgfQogIAkgIHMvLiov Li87IHEnYC9zdGFtcC1oJF9hbV9zdGFtcF9jb3VudApkb25lCgojCiMgQ09ORklHX0NPTU1BTkRT IHNlY3Rpb24uCiMKZm9yIGFjX2ZpbGUgaW4gOiAkQ09ORklHX0NPTU1BTkRTOyBkbyB0ZXN0ICJ4 JGFjX2ZpbGUiID0geDogJiYgY29udGludWUKICBhY19kZXN0PWBlY2hvICIkYWNfZmlsZSIgfCBz ZWQgJ3MsOi4qLCwnYAogIGFjX3NvdXJjZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0q OiwsJ2AKICBhY19kaXI9YChkaXJuYW1lICIkYWNfZGVzdCIpIDI+L2Rldi9udWxsIHx8CiRhc19l eHByIFgiJGFjX2Rlc3QiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCiAgICAg ICAgIFgiJGFjX2Rlc3QiIDogJ1hcKC8vXClbXi9dJyBcfCBcCiAgICAgICAgIFgiJGFjX2Rlc3Qi IDogJ1hcKC8vXCkkJyBcfCBcCiAgICAgICAgIFgiJGFjX2Rlc3QiIDogJ1hcKC9cKScgXHwgXAog ICAgICAgICAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKZWNobyBYIiRhY19kZXN0IiB8 CiAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBzLy9cMS87IHE7IH0K ICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwoXC9cL1wpJC97 IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwoXC9cKS4qL3sgcy8vXDEvOyBxOyB9CiAgCSAgcy8uKi8u LzsgcSdgCiAgYWNfYnVpbGRkaXI9LgoKaWYgdGVzdCAiJGFjX2RpciIgIT0gLjsgdGhlbgogIGFj X2Rpcl9zdWZmaXg9L2BlY2hvICIkYWNfZGlyIiB8IHNlZCAncyxeXC5bXFwvXSwsJ2AKICAjIEEg Ii4uLyIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgogIGFjX3RvcF9idWls ZGRpcj1gZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzLC9bXlxcL10qLC4uLyxnJ2AKZWxz ZQogIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcj0KZmkKCmNhc2UgJHNyY2RpciBpbgog IC4pICAjIE5vIC0tc3JjZGlyIG9wdGlvbi4gIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4KICAg IGFjX3NyY2Rpcj0uCiAgICBpZiB0ZXN0IC16ICIkYWNfdG9wX2J1aWxkZGlyIjsgdGhlbgogICAg ICAgYWNfdG9wX3NyY2Rpcj0uCiAgICBlbHNlCiAgICAgICBhY190b3Bfc3JjZGlyPWBlY2hvICRh Y190b3BfYnVpbGRkaXIgfCBzZWQgJ3MsLyQsLCdgCiAgICBmaSA7OwogIFtcXC9dKiB8ID86W1xc L10qICkgICMgQWJzb2x1dGUgcGF0aC4KICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZm aXg7CiAgICBhY190b3Bfc3JjZGlyPSRzcmNkaXIgOzsKICAqKSAjIFJlbGF0aXZlIHBhdGguCiAg ICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIkYWNfZGlyX3N1ZmZpeAogICAgYWNf dG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyJHNyY2RpciA7Owplc2FjCiMgRG9uJ3QgYmxpbmRs eSBwZXJmb3JtIGEgYGNkICIkYWNfZGlyIi8kYWNfZm9vICYmIHB3ZGAgc2luY2UgJGFjX2ZvbyBj YW4gYmUKIyBhYnNvbHV0ZS4KYWNfYWJzX2J1aWxkZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJGFj X2J1aWxkZGlyICYmIHB3ZGAKYWNfYWJzX3RvcF9idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNk ICR7YWNfdG9wX2J1aWxkZGlyfS4gJiYgcHdkYAphY19hYnNfc3JjZGlyPWBjZCAiJGFjX2RpciIg JiYgY2QgJGFjX3NyY2RpciAmJiBwd2RgCmFjX2Fic190b3Bfc3JjZGlyPWBjZCAiJGFjX2RpciIg JiYgY2QgJGFjX3RvcF9zcmNkaXIgJiYgcHdkYAoKCiAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzog ZXhlY3V0aW5nICRhY19kZXN0IGNvbW1hbmRzIiA+JjUKZWNobyAiJGFzX21lOiBleGVjdXRpbmcg JGFjX2Rlc3QgY29tbWFuZHMiID4mNjt9CiAgY2FzZSAkYWNfZGVzdCBpbgogICAgZGVwZmlsZXMg KSB0ZXN0IHgiJEFNREVQX1RSVUUiICE9IHgiIiB8fCBmb3IgbWYgaW4gJENPTkZJR19GSUxFUzsg ZG8KICAjIFN0cmlwIE1GIHNvIHdlIGVuZCB1cCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBmaWxlLgog IG1mPWBlY2hvICIkbWYiIHwgc2VkIC1lICdzLzouKiQvLydgCiAgIyBDaGVjayB3aGV0aGVyIHRo aXMgaXMgYW4gQXV0b21ha2UgZ2VuZXJhdGVkIE1ha2VmaWxlIG9yIG5vdC4KICAjIFdlIHVzZWQg dG8gbWF0Y2ggb25seSB0aGUgZmlsZXMgbmFtZWQgYE1ha2VmaWxlLmluJywgYnV0CiAgIyBzb21l IHBlb3BsZSByZW5hbWUgdGhlbTsgc28gaW5zdGVhZCB3ZSBsb29rIGF0IHRoZSBmaWxlIGNvbnRl bnQuCiAgIyBHcmVwJ2luZyB0aGUgZmlyc3QgbGluZSBpcyBub3QgZW5vdWdoOiBzb21lIHBlb3Bs ZSBwb3N0LXByb2Nlc3MKICAjIGVhY2ggTWFrZWZpbGUuaW4gYW5kIGFkZCBhIG5ldyBsaW5lIG9u IHRvcCBvZiBlYWNoIGZpbGUgdG8gc2F5IHNvLgogICMgU28gbGV0J3MgZ3JlcCB3aG9sZSBmaWxl LgogIGlmIGdyZXAgJ14jLipnZW5lcmF0ZWQgYnkgYXV0b21ha2UnICRtZiA+IC9kZXYvbnVsbCAy PiYxOyB0aGVuCiAgICBkaXJwYXJ0PWAoZGlybmFtZSAiJG1mIikgMj4vZGV2L251bGwgfHwKJGFz X2V4cHIgWCIkbWYiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCiAgICAgICAg IFgiJG1mIiA6ICdYXCgvL1wpW14vXScgXHwgXAogICAgICAgICBYIiRtZiIgOiAnWFwoLy9cKSQn IFx8IFwKICAgICAgICAgWCIkbWYiIDogJ1hcKC9cKScgXHwgXAogICAgICAgICAuICAgICA6ICdc KC5cKScgMj4vZGV2L251bGwgfHwKZWNobyBYIiRtZiIgfAogICAgc2VkICcvXlhcKC4qW14vXVwp XC9cLypbXi9dW14vXSpcLyokL3sgcy8vXDEvOyBxOyB9CiAgCSAgL15YXChcL1wvXClbXi9dLiov eyBzLy9cMS87IHE7IH0KICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KICAJICAvXlhc KFwvXCkuKi97IHMvL1wxLzsgcTsgfQogIAkgIHMvLiovLi87IHEnYAogIGVsc2UKICAgIGNvbnRp bnVlCiAgZmkKICBncmVwICdeREVQX0ZJTEVTICo9ICpbXiAjXScgPCAiJG1mIiA+IC9kZXYvbnVs bCB8fCBjb250aW51ZQogICMgRXh0cmFjdCB0aGUgZGVmaW5pdGlvbiBvZiBERVBfRklMRVMgZnJv bSB0aGUgTWFrZWZpbGUgd2l0aG91dAogICMgcnVubmluZyBgbWFrZScuCiAgREVQRElSPWBzZWQg LW4gLWUgJy9eREVQRElSID0gLyBzLy8vcCcgPCAiJG1mImAKICB0ZXN0IC16ICIkREVQRElSIiAm JiBjb250aW51ZQogICMgV2hlbiB1c2luZyBhbnNpMmtuciwgVSBtYXkgYmUgZW1wdHkgb3IgYW4g dW5kZXJzY29yZTsgZXhwYW5kIGl0CiAgVT1gc2VkIC1uIC1lICcvXlUgPSAvIHMvLy9wJyA8ICIk bWYiYAogIHRlc3QgLWQgIiRkaXJwYXJ0LyRERVBESVIiIHx8IG1rZGlyICIkZGlycGFydC8kREVQ RElSIgogICMgV2UgaW52b2tlIHNlZCB0d2ljZSBiZWNhdXNlIGl0IGlzIHRoZSBzaW1wbGVzdCBh cHByb2FjaCB0bwogICMgY2hhbmdpbmcgJChERVBESVIpIHRvIGl0cyBhY3R1YWwgdmFsdWUgaW4g dGhlIGV4cGFuc2lvbi4KICBmb3IgZmlsZSBpbiBgc2VkIC1uIC1lICcKICAgIC9eREVQX0ZJTEVT ID0gLipcXFxcJC8gewogICAgICBzL15ERVBfRklMRVMgPSAvLwogICAgICA6bG9vcAoJcy9cXFxc JC8vCglwCgluCgkvXFxcXCQvIGIgbG9vcAogICAgICBwCiAgICB9CiAgICAvXkRFUF9GSUxFUyA9 IC8gcy9eREVQX0ZJTEVTID0gLy9wJyA8ICIkbWYiIHwgXAogICAgICAgc2VkIC1lICdzL1wkKERF UERJUikvJyIkREVQRElSIicvZycgLWUgJ3MvXCRVLyciJFUiJy9nJ2A7IGRvCiAgICAjIE1ha2Ug c3VyZSB0aGUgZGlyZWN0b3J5IGV4aXN0cy4KICAgIHRlc3QgLWYgIiRkaXJwYXJ0LyRmaWxlIiAm JiBjb250aW51ZQogICAgZmRpcj1gKGRpcm5hbWUgIiRmaWxlIikgMj4vZGV2L251bGwgfHwKJGFz X2V4cHIgWCIkZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKICAgICAg ICAgWCIkZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwKICAgICAgICAgWCIkZmlsZSIgOiAnWFwo Ly9cKSQnIFx8IFwKICAgICAgICAgWCIkZmlsZSIgOiAnWFwoL1wpJyBcfCBcCiAgICAgICAgIC4g ICAgIDogJ1woLlwpJyAyPi9kZXYvbnVsbCB8fAplY2hvIFgiJGZpbGUiIHwKICAgIHNlZCAnL15Y XCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwoXC9c L1wpW14vXS4qL3sgcy8vXDEvOyBxOyB9CiAgCSAgL15YXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9 CiAgCSAgL15YXChcL1wpLioveyBzLy9cMS87IHE7IH0KICAJICBzLy4qLy4vOyBxJ2AKICAgIHsg aWYgJGFzX21rZGlyX3A7IHRoZW4KICAgIG1rZGlyIC1wICRkaXJwYXJ0LyRmZGlyCiAgZWxzZQog ICAgYXNfZGlyPSRkaXJwYXJ0LyRmZGlyCiAgICBhc19kaXJzPQogICAgd2hpbGUgdGVzdCAhIC1k ICIkYXNfZGlyIjsgZG8KICAgICAgYXNfZGlycz0iJGFzX2RpciAkYXNfZGlycyIKICAgICAgYXNf ZGlyPWAoZGlybmFtZSAiJGFzX2RpciIpIDI+L2Rldi9udWxsIHx8CiRhc19leHByIFgiJGFzX2Rp ciIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKICAgICAgICAgWCIkYXNfZGly IiA6ICdYXCgvL1wpW14vXScgXHwgXAogICAgICAgICBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBc fCBcCiAgICAgICAgIFgiJGFzX2RpciIgOiAnWFwoL1wpJyBcfCBcCiAgICAgICAgIC4gICAgIDog J1woLlwpJyAyPi9kZXYvbnVsbCB8fAplY2hvIFgiJGFzX2RpciIgfAogICAgc2VkICcvXlhcKC4q W14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sgcy8vXDEvOyBxOyB9CiAgCSAgL15YXChcL1wvXClb Xi9dLioveyBzLy9cMS87IHE7IH0KICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KICAJ ICAvXlhcKFwvXCkuKi97IHMvL1wxLzsgcTsgfQogIAkgIHMvLiovLi87IHEnYAogICAgZG9uZQog ICAgdGVzdCAhIC1uICIkYXNfZGlycyIgfHwgbWtkaXIgJGFzX2RpcnMKICBmaSB8fCB7IHsgZWNo byAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkZGlycGFy dC8kZmRpciIgPiY1CmVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5 ICRkaXJwYXJ0LyRmZGlyIiA+JjI7fQogICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07IH0KCiAg ICAjIGVjaG8gImNyZWF0aW5nICRkaXJwYXJ0LyRmaWxlIgogICAgZWNobyAnIyBkdW1teScgPiAi JGRpcnBhcnQvJGZpbGUiCiAgZG9uZQpkb25lCiA7OwogICAgZGVmYXVsdC0xICkKICAgIGZvciBh Y19maWxlIGluICRDT05GSUdfRklMRVM7IGRvCiAgICAgICMgU3VwcG9ydCAib3V0ZmlsZVs6aW5m aWxlWzppbmZpbGUuLi5dXSIKICAgICAgY2FzZSAiJGFjX2ZpbGUiIGluCiAgICAgICAgKjoqKSBh Y19maWxlPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJTouKiUlJ2AgOzsKICAgICAgZXNhYwogICAg ICAjIFBPIGRpcmVjdG9yaWVzIGhhdmUgYSBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgZnJvbSBNYWtl ZmlsZS5pbi5pbi4KICAgICAgY2FzZSAiJGFjX2ZpbGUiIGluICovTWFrZWZpbGUuaW4pCiAgICAg ICAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIuCiAgICAgICAgYWNfZGlyPWBlY2hvICIkYWNf ZmlsZSJ8c2VkICdzJS9bXi9dW14vXSokJSUnYAogICAgICAgIGFjX2Rpcl9zdWZmaXg9Ii9gZWNo byAiJGFjX2RpciJ8c2VkICdzJV5cLi8lJSdgIgogICAgICAgIGFjX2RvdHM9YGVjaG8gIiRhY19k aXJfc3VmZml4InxzZWQgJ3MlL1teL10qJS4uLyVnJ2AKICAgICAgICAjIEluIGF1dG9jb25mLTIu MTMgaXQgaXMgY2FsbGVkICRhY19naXZlbl9zcmNkaXIuCiAgICAgICAgIyBJbiBhdXRvY29uZi0y LjUwIGl0IGlzIGNhbGxlZCAkc3JjZGlyLgogICAgICAgIHRlc3QgLW4gIiRhY19naXZlbl9zcmNk aXIiIHx8IGFjX2dpdmVuX3NyY2Rpcj0iJHNyY2RpciIKICAgICAgICBjYXNlICIkYWNfZ2l2ZW5f c3JjZGlyIiBpbgogICAgICAgICAgLikgIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdz JS8kJSUnYCA7OwogICAgICAgICAgLyopIHRvcF9zcmNkaXI9IiRhY19naXZlbl9zcmNkaXIiIDs7 CiAgICAgICAgICAqKSAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7Owog ICAgICAgIGVzYWMKICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIv UE9URklMRVMuaW4iOyB0aGVuCiAgICAgICAgICBybSAtZiAiJGFjX2Rpci9QT1RGSUxFUyIKICAg ICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGly L1BPVEZJTEVTIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIgogICAgICAgICAg Y2F0ICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iIHwgc2VkIC1lICIvXiMv ZCIgLWUgIi9eWyAJXSpcJC9kIiAtZSAicywuKiwgICAgICR0b3Bfc3JjZGlyLyYgXFxcXCwiIHwg c2VkIC1lICJcJHMvXCguKlwpIFxcXFwvXDEvIiA+ICIkYWNfZGlyL1BPVEZJTEVTIgogICAgICAg ICAgUE9NQUtFRklMRURFUFM9IlBPVEZJTEVTLmluIgogICAgICAgICAgIyBBTExfTElOR1VBUywg UE9GSUxFUywgR01PRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUyBkZXBlbmQKICAg ICAgICAgICMgb24gJGFjX2RpciBidXQgZG9uJ3QgZGVwZW5kIG9uIHVzZXItc3BlY2lmaWVkIGNv bmZpZ3VyYXRpb24KICAgICAgICAgICMgcGFyYW1ldGVycy4KICAgICAgICAgIGlmIHRlc3QgLWYg IiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTIjsgdGhlbgogICAgICAgICAgICAjIFRo ZSBMSU5HVUFTIGZpbGUgY29udGFpbnMgdGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzLgog ICAgICAgICAgICBpZiB0ZXN0IC1uICIkT0JTT0xFVEVfQUxMX0xJTkdVQVMiOyB0aGVuCiAgICAg ICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IHNldHRpbmcgQUxMX0xJ TkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIiB8fCBlY2hvICJzZXR0aW5nIEFMTF9M SU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIKICAgICAgICAgICAgZmkKICAgICAg ICAgICAgQUxMX0xJTkdVQVNfPWBzZWQgLWUgIi9eIy9kIiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNf ZGlyL0xJTkdVQVMiYAogICAgICAgICAgICAjIEhpZGUgdGhlIEFMTF9MSU5HVUFTIGFzc2lnbWVu dCBmcm9tIGF1dG9tYWtlLgogICAgICAgICAgICBldmFsICdBTExfTElOR1VBUycnPSRBTExfTElO R1VBU18nCiAgICAgICAgICAgIFBPTUFLRUZJTEVERVBTPSIkUE9NQUtFRklMRURFUFMgTElOR1VB UyIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIyBUaGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5n dWFnZXMgd2FzIGdpdmVuIGluIGNvbmZpZ3VyZS5pbi4KICAgICAgICAgICAgZXZhbCAnQUxMX0xJ TkdVQVMnJz0kT0JTT0xFVEVfQUxMX0xJTkdVQVMnCiAgICAgICAgICBmaQogICAgICAgICAgY2Fz ZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KICAgICAgICAgICAgLikgc3JjZGlycHJlPSA7OwogICAg ICAgICAgICAqKSBzcmNkaXJwcmU9JyQoc3JjZGlyKS8nIDs7CiAgICAgICAgICBlc2FjCiAgICAg ICAgICBQT0ZJTEVTPQogICAgICAgICAgR01PRklMRVM9CiAgICAgICAgICBVUERBVEVQT0ZJTEVT PQogICAgICAgICAgRFVNTVlQT0ZJTEVTPQogICAgICAgICAgZm9yIGxhbmcgaW4gJEFMTF9MSU5H VUFTOyBkbwogICAgICAgICAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8i CiAgICAgICAgICAgIEdNT0ZJTEVTPSIkR01PRklMRVMgJHNyY2RpcnByZSRsYW5nLmdtbyIKICAg ICAgICAgICAgVVBEQVRFUE9GSUxFUz0iJFVQREFURVBPRklMRVMgJGxhbmcucG8tdXBkYXRlIgog ICAgICAgICAgICBEVU1NWVBPRklMRVM9IiREVU1NWVBPRklMRVMgJGxhbmcubm9wIgogICAgICAg ICAgZG9uZQogICAgICAgICAgIyBDQVRBTE9HUyBkZXBlbmRzIG9uIGJvdGggJGFjX2RpciBhbmQg dGhlIHVzZXIncyBMSU5HVUFTCiAgICAgICAgICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgogICAg ICAgICAgSU5TVF9MSU5HVUFTPQogICAgICAgICAgaWYgdGVzdCAtbiAiJEFMTF9MSU5HVUFTIjsg dGhlbgogICAgICAgICAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwogICAg ICAgICAgICAgIHVzZWl0PW5vCiAgICAgICAgICAgICAgaWYgdGVzdCAiJVVOU0VUJSIgIT0gIiRM SU5HVUFTIjsgdGhlbgogICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMi CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJEFM TF9MSU5HVUFTIgogICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgZm9yIGRlc2lyZWRsYW5n IGluICRkZXNpcmVkbGFuZ3VhZ2VzOyBkbwogICAgICAgICAgICAgICAgIyBVc2UgdGhlIHByZXNl bnRsYW5nIGNhdGFsb2cgaWYgZGVzaXJlZGxhbmcgaXMKICAgICAgICAgICAgICAgICMgICBhLiBl cXVhbCB0byBwcmVzZW50bGFuZywgb3IKICAgICAgICAgICAgICAgICMgICBiLiBhIHZhcmlhbnQg b2YgcHJlc2VudGxhbmcgKGJlY2F1c2UgaW4gdGhpcyBjYXNlLAogICAgICAgICAgICAgICAgIyAg ICAgIHByZXNlbnRsYW5nIGNhbiBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIG1lc3NhZ2VzCiAg ICAgICAgICAgICAgICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNp cmVkbGFuZyBjYXRhbG9nKS4KICAgICAgICAgICAgICAgIGNhc2UgIiRkZXNpcmVkbGFuZyIgaW4K ICAgICAgICAgICAgICAgICAgIiRwcmVzZW50bGFuZyIqKSB1c2VpdD15ZXM7OwogICAgICAgICAg ICAgICAgZXNhYwogICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgICBpZiB0ZXN0ICR1c2Vp dCA9IHllczsgdGhlbgogICAgICAgICAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFT ICRwcmVzZW50bGFuZyIKICAgICAgICAgICAgICBmaQogICAgICAgICAgICBkb25lCiAgICAgICAg ICBmaQogICAgICAgICAgQ0FUQUxPR1M9CiAgICAgICAgICBpZiB0ZXN0IC1uICIkSU5TVF9MSU5H VUFTIjsgdGhlbgogICAgICAgICAgICBmb3IgbGFuZyBpbiAkSU5TVF9MSU5HVUFTOyBkbwogICAg ICAgICAgICAgIENBVEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgogICAgICAgICAgICBkb25l CiAgICAgICAgICBmaQogICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6 IGNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiIHx8IGVjaG8gImNyZWF0aW5nICRhY19kaXIvTWFr ZWZpbGUiCiAgICAgICAgICBzZWQgLWUgIi9eUE9URklMRVMgPS9yICRhY19kaXIvUE9URklMRVMi IC1lICIvXiMgTWFrZXZhcnMvciAkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTWFrZXZhcnMiIC1l ICJzfEBQT0ZJTEVTQHwkUE9GSUxFU3xnIiAtZSAic3xAR01PRklMRVNAfCRHTU9GSUxFU3xnIiAt ZSAic3xAVVBEQVRFUE9GSUxFU0B8JFVQREFURVBPRklMRVN8ZyIgLWUgInN8QERVTU1ZUE9GSUxF U0B8JERVTU1ZUE9GSUxFU3xnIiAtZSAic3xAQ0FUQUxPR1NAfCRDQVRBTE9HU3xnIiAtZSAic3xA UE9NQUtFRklMRURFUFNAfCRQT01BS0VGSUxFREVQU3xnIiAiJGFjX2Rpci9NYWtlZmlsZS5pbiIg PiAiJGFjX2Rpci9NYWtlZmlsZSIKICAgICAgICAgIGZvciBmIGluICIkYWNfZ2l2ZW5fc3JjZGly LyRhY19kaXIiL1J1bGVzLSo7IGRvCiAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgog ICAgICAgICAgICAgIGNhc2UgIiRmIiBpbgogICAgICAgICAgICAgICAgKi5vcmlnIHwgKi5iYWsg fCAqfikgOzsKICAgICAgICAgICAgICAgICopIGNhdCAiJGYiID4+ICIkYWNfZGlyL01ha2VmaWxl IiA7OwogICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgZmkKICAgICAgICAgIGRvbmUKICAg ICAgICBmaQogICAgICAgIDs7CiAgICAgIGVzYWMKICAgIGRvbmUgOzsKICBlc2FjCmRvbmUKCnsg KGV4aXQgMCk7IGV4aXQgMDsgfQo= --Multipart=_Wed__31_Mar_2004_09_22_47_+0200_IVAWlh/MouLt7b_T Content-Type: application/octet-stream; name="libtool" Content-Disposition: attachment; filename="libtool" Content-Transfer-Encoding: base64 IyEgL2Jpbi9iYXNoCgojIGxpYnRvb2wgLSBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVp bGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBsdGNv bmZpZyAoR05VIGxpYnRvb2wgMS4zLjUtZnJlZWJzZC1wb3J0cyAoMS4zODUuMi4yMDYgMjAwMC8w NS8yNyAxMToxMjoyNykpCiMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJl IGxvc3Q6IGxvb2sgYXQgbHRjb25maWcgb3IgbHRtYWluLnNoLgojCiMgQ29weXJpZ2h0IChDKSAx OTk2LTE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMgT3JpZ2luYWxseSBieSBH b3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKIwojIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiMgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuCiMKIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSwgaWYgeW91CiMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHBy b2dyYW0gdGhhdCBjb250YWlucyBhCiMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5 IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKIyB0aGUgc2FtZSBkaXN0cmlidXRp b24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCgojIFNl ZCB0aGF0IGhlbHBzIHVzIGF2b2lkIGFjY2lkZW50YWxseSB0cmlnZ2VyaW5nIGVjaG8oMSkgb3B0 aW9ucyBsaWtlIC1uLgpYc2VkPSJzZWQgLWUgcy9eWC8vIgoKIyBUaGUgSFAtVVgga3NoIGFuZCBQ T1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKIyBpZiBDRFBB VEggaXMgc2V0LgppZiB0ZXN0ICJYJHtDRFBBVEgrc2V0fSIgPSBYc2V0OyB0aGVuIENEUEFUSD06 OyBleHBvcnQgQ0RQQVRIOyBmaQoKIyMjIEJFR0lOIExJQlRPT0wgQ09ORklHCiMgTGlidG9vbCB3 YXMgY29uZmlndXJlZCBhcyBmb2xsb3dzLCBvbiBob3N0IFJlaW5la2UuTWFsZXBhcnR1cy5kZToK IwojIENDPSIiIENGTEFHUz0iIiBDUFBGTEFHUz0iIiBcCiMgTEQ9IiIgTERGTEFHUz0iIiBMSUJT PSIiIFwKIyBOTT0iIiBSQU5MSUI9IiIgTE5fUz0iIiBcCiMgRExMVE9PTD0iIiBPQkpEVU1QPSIi IEFTPSIiIFwKIyAgIC91c3IvbG9jYWwvc2hhcmUvbGlidG9vbDEzL2x0Y29uZmlnMTMgLS1kaXNh YmxlLWx0bGlicyAvdXNyL2xvY2FsL3NoYXJlL2xpYnRvb2wxMy9sdG1haW4uc2gKIwojIENvbXBp bGVyIGFuZCBvdGhlciB0ZXN0IG91dHB1dCBwcm9kdWNlZCBieSBsdGNvbmZpZzEzLCB1c2VmdWwg Zm9yCiMgZGVidWdnaW5nIGx0Y29uZmlnMTMsIGlzIGluIC4vY29uZmlnLmxvZyBpZiBpdCBleGlz dHMuCgojIFRoZSB2ZXJzaW9uIG9mIGx0Y29uZmlnMTMgdGhhdCBnZW5lcmF0ZWQgdGhpcyBzY3Jp cHQuCkxUQ09ORklHX1ZFUlNJT049IjEuMy41LWZyZWVic2QtcG9ydHMiCgojIFNoZWxsIHRvIHVz ZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHMuClNIRUxMPSIvYmluL2Jhc2giCgojIFdoZXRo ZXIgdG8gd2FzdGUgZGlzayBzcGFjZS4KaW5zdGFsbF9sdGxpYnM9bm8gCgojIFdoYXQgdG8gZG8g d2l0aCAtcmVsZWFzZS4KIyAgeWVzIC0gb25seSBmb3Igc2hhcmVkIGFyY2hpdmUKIyAgbm8gIC0g aW5nbm9yZQojICBhbGwgLSBmb3IgYWxsIGFyY2hpdmVzCnJlbGVhc2Vfc3VmZml4PXllcwoKIyBX aGV0aGVyIG9yIG5vdCB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLgpidWlsZF9saWJ0b29sX2xp YnM9bm8KCiMgV2hldGhlciBvciBub3QgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllcy4KYnVpbGRf b2xkX2xpYnM9eWVzCgojIFdoZXRoZXIgb3Igbm90IHRvIG9wdGltaXplIGZvciBmYXN0IGluc3Rh bGxhdGlvbi4KZmFzdF9pbnN0YWxsPW5lZWRsZXNzCgojIFRoZSBob3N0IHN5c3RlbS4KaG9zdF9h bGlhcz1hbWQ2NC11bmtub3duLWtmcmVlYnNkNS4yLWdudQpob3N0PWFtZDY0LXVua25vd24ta2Zy ZWVic2Q1LjItZ251CgojIEFuIGVjaG8gcHJvZ3JhbSB0aGF0IGRvZXMgbm90IGludGVycHJldCBi YWNrc2xhc2hlcy4KZWNobz0iZWNobyIKCiMgVGhlIGFyY2hpdmVyLgpBUj0iYXIiCgojIFRoZSBk ZWZhdWx0IEMgY29tcGlsZXIuCkNDPSJnY2MiCgojIFRoZSBsaW5rZXIgdXNlZCB0byBidWlsZCBs aWJyYXJpZXMuCkxEPSIvdXNyL2Jpbi9sZCIKCiMgV2hldGhlciB3ZSBuZWVkIGhhcmQgb3Igc29m dCBsaW5rcy4KTE5fUz0ibG4gLXNmIgoKIyBBIEJTRC1jb21wYXRpYmxlIG5tIHByb2dyYW0uCk5N PSIvdXNyL2Jpbi9ubSAtQiIKCiMgVXNlZCBvbiBjeWd3aW46IERMTCBjcmVhdGlvbiBwcm9ncmFt LgpETExUT09MPSJkbGx0b29sIgoKIyBVc2VkIG9uIGN5Z3dpbjogb2JqZWN0IGR1bXBlci4KT0JK RFVNUD0ib2JqZHVtcCIKCiMgVXNlZCBvbiBjeWd3aW46IGFzc2VtYmxlci4KQVM9ImFzIgoKIyBU aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wg ZmlsZXMuCm9iamRpcj0ubGlicwoKIyBIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZp bGVzLgpyZWxvYWRfZmxhZz0iIC1yIgpyZWxvYWRfY21kcz0iXCRMRFwkcmVsb2FkX2ZsYWcgLW8g XCRvdXRwdXRcJHJlbG9hZF9vYmpzIgoKIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91 Z2ggdGhlIGNvbXBpbGVyLgp3bD0iLVdsLCIKCiMgT2JqZWN0IGZpbGUgc3VmZml4IChub3JtYWxs eSAibyIpLgpvYmpleHQ9Im8iCgojIE9sZCBhcmNoaXZlIHN1ZmZpeCAobm9ybWFsbHkgImEiKS4K bGliZXh0PSJhIgoKIyBFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIikuCmV4ZWV4 dD0iIgoKIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9i amVjdHMuCnBpY19mbGFnPSIgLWZQSUMiCgojIERvZXMgY29tcGlsZXIgc2ltdWx0YW5lb3VzbHkg c3VwcG9ydCAtYyBhbmQgLW8gb3B0aW9ucz8KY29tcGlsZXJfY19vPSJ5ZXMiCgojIENhbiB3ZSB3 cml0ZSBkaXJlY3RseSB0byBhIC5sbyA/CmNvbXBpbGVyX29fbG89InllcyIKCiMgTXVzdCB3ZSBs b2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24gPwpuZWVkX2xvY2tzPSJubyIKCiMgRG8g d2UgbmVlZCB0aGUgbGliIHByZWZpeCBmb3IgbW9kdWxlcz8KbmVlZF9saWJfcHJlZml4PXVua25v d24KCiMgRG8gd2UgbmVlZCBhIHZlcnNpb24gZm9yIGxpYnJhcmllcz8KbmVlZF92ZXJzaW9uPXVu a25vd24KCiMgV2hldGhlciBkbG9wZW4gaXMgc3VwcG9ydGVkLgpkbG9wZW49dW5rbm93bgoKIyBX aGV0aGVyIGRsb3BlbiBvZiBwcm9ncmFtcyBpcyBzdXBwb3J0ZWQuCmRsb3Blbl9zZWxmPXVua25v d24KCiMgV2hldGhlciBkbG9wZW4gb2Ygc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbXMgaXMgc3Vw cG9ydGVkLgpkbG9wZW5fc2VsZl9zdGF0aWM9dW5rbm93bgoKIyBDb21waWxlciBmbGFnIHRvIHBy ZXZlbnQgZHluYW1pYyBsaW5raW5nLgpsaW5rX3N0YXRpY19mbGFnPSItc3RhdGljIgoKIyBDb21w aWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgpub19idWlsdGluX2ZsYWc9 IiAtZm5vLWJ1aWx0aW4iCgojIENvbXBpbGVyIGZsYWcgdG8gYWxsb3cgcmVmbGV4aXZlIGRsb3Bl bnMuCmV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0iXCR7d2x9LS1leHBvcnQtZHluYW1pYyIKCiMg Q29tcGlsZXIgZmxhZyB0byBnZW5lcmF0ZSBzaGFyZWQgb2JqZWN0cyBkaXJlY3RseSBmcm9tIGFy Y2hpdmVzLgp3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0iXCR7d2x9LS13aG9sZS1hcmNoaXZlXCRj b252ZW5pZW5jZSBcJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUiCgojIENvbXBpbGVyIGZsYWcgdG8g Z2VuZXJhdGUgdGhyZWFkLXNhZmUgb2JqZWN0cy4KdGhyZWFkX3NhZmVfZmxhZ19zcGVjPSIiCgoj IExpYnJhcnkgdmVyc2lvbmluZyB0eXBlLgp2ZXJzaW9uX3R5cGU9bm9uZQoKIyBGb3JtYXQgb2Yg bGlicmFyeSBuYW1lIHByZWZpeC4KbGlibmFtZV9zcGVjPSJsaWJcJG5hbWUiCgojIExpc3Qgb2Yg YXJjaGl2ZSBuYW1lcy4gIEZpcnN0IG5hbWUgaXMgdGhlIHJlYWwgb25lLCB0aGUgcmVzdCBhcmUg bGlua3MuCiMgVGhlIGxhc3QgbmFtZSBpcyB0aGUgb25lIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3 aXRoIC1sTkFNRS4KbGlicmFyeV9uYW1lc19zcGVjPSIiCgojIFRoZSBjb2RlZCBuYW1lIG9mIHRo ZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lLgpzb25hbWVfc3BlYz0i IgoKIyBDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGFuZCBpbnN0YWxsIGFuIG9sZC1zdHlsZSBhcmNo aXZlLgpSQU5MSUI9InJhbmxpYiIKb2xkX2FyY2hpdmVfY21kcz0iXCRBUiBjcnUgXCRvbGRsaWJc JG9sZG9ianN+XCRSQU5MSUIgXCRvbGRsaWIiCm9sZF9wb3N0aW5zdGFsbF9jbWRzPSJcJFJBTkxJ QiBcJG9sZGxpYn5jaG1vZCA2NDQgXCRvbGRsaWIiCm9sZF9wb3N0dW5pbnN0YWxsX2NtZHM9IiIK CiMgQ3JlYXRlIGFuIG9sZC1zdHlsZSBhcmNoaXZlIGZyb20gYSBzaGFyZWQgYXJjaGl2ZS4Kb2xk X2FyY2hpdmVfZnJvbV9uZXdfY21kcz0iIgoKIyBDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGFuZCBp bnN0YWxsIGEgc2hhcmVkIGFyY2hpdmUuCmFyY2hpdmVfY21kcz0iXCRDQyAtc2hhcmVkIFwkY29t cGlsZV9ycGF0aCBcJGxpYm9ianMgXCRkZXBsaWJzIFwkbGlua29wdHMgXCR7d2x9LXNvbmFtZSBc JHdsXCRzb25hbWUgLW8gXCRsaWIiCmFyY2hpdmVfZXhwc3ltX2NtZHM9IlwkQ0MgLXNoYXJlZCBc JGNvbXBpbGVfcnBhdGggXCRsaWJvYmpzIFwkZGVwbGlicyBcJGxpbmtvcHRzIFwke3dsfS1zb25h bWUgXCR3bFwkc29uYW1lIFwke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlIFwkd2xcJGV4cG9ydF9z eW1ib2xzIC1vIFwkbGliIgpwb3N0aW5zdGFsbF9jbWRzPSIiCnBvc3R1bmluc3RhbGxfY21kcz0i IgoKIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFy ZWQgb2JqZWN0cy4KZGVwbGlic19jaGVja19tZXRob2Q9InVua25vd24iCgojIENvbW1hbmQgdG8g dXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gZmlsZV9tYWdpYy4KZmlsZV9tYWdpY19j bWQ9IiIKCiMgRmxhZyB0aGF0IGFsbG93cyBzaGFyZWQgbGlicmFyaWVzIHdpdGggdW5kZWZpbmVk IHN5bWJvbHMgdG8gYmUgYnVpbHQuCmFsbG93X3VuZGVmaW5lZF9mbGFnPSIiCgojIEZsYWcgdGhh dCBmb3JjZXMgbm8gdW5kZWZpbmVkIHN5bWJvbHMuCm5vX3VuZGVmaW5lZF9mbGFnPSIiCgojIENv bW1hbmRzIHVzZWQgdG8gZmluaXNoIGEgbGlidG9vbCBsaWJyYXJ5IGluc3RhbGxhdGlvbiBpbiBh IGRpcmVjdG9yeS4KZmluaXNoX2NtZHM9IiIKCiMgU2FtZSBhcyBhYm92ZSwgYnV0IGEgc2luZ2xl IHNjcmlwdCBmcmFnbWVudCB0byBiZSBldmFsZWQgYnV0IG5vdCBzaG93bi4KZmluaXNoX2V2YWw9 IiIKCiMgVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcg c3ltYm9scyBhbmQgQyBuYW1lcy4KZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4q WyAJXVxcKFtBQkNER0lTVFddXFwpWyAJXVsgCV0qXFwoXFwpXFwoW19BLVphLXpdW19BLVphLXow LTldKlxcKVwkL1xcMSBcXDJcXDMgXFwzL3AnIgoKIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBu bSBpbiBhIHByb3BlciBDIGRlY2xhcmF0aW9uCmdsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAt biAtZSAncy9eLiAuKiBcXCguKlxcKVwkL2V4dGVybiBjaGFyIFxcMTsvcCciCgojIFRoaXMgaXMg dGhlIHNoYXJlZCBsaWJyYXJ5IHJ1bnRpbWUgcGF0aCB2YXJpYWJsZS4KcnVucGF0aF92YXI9TERf UlVOX1BBVEgKCiMgVGhpcyBpcyB0aGUgc2hhcmVkIGxpYnJhcnkgcGF0aCB2YXJpYWJsZS4Kc2hs aWJwYXRoX3Zhcj0KCiMgSXMgc2hsaWJwYXRoIHNlYXJjaGVkIGJlZm9yZSB0aGUgaGFyZC1jb2Rl ZCBsaWJyYXJ5IHNlYXJjaCBwYXRoPwpzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9dW5rbm93 bgoKIyBIb3cgdG8gaGFyZGNvZGUgYSBzaGFyZWQgbGlicmFyeSBwYXRoIGludG8gYW4gZXhlY3V0 YWJsZS4KaGFyZGNvZGVfYWN0aW9uPWltbWVkaWF0ZQoKIyBGbGFnIHRvIGhhcmRjb2RlICRsaWJk aXIgaW50byBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4KIyBUaGlzIG11c3Qgd29yayBldmVuIGlm ICRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCmhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ilwke3ds fS0tcnBhdGggXCR7d2x9XCRsaWJkaXIiCgojIFdoZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAtcnBh dGggZmxhZyB3aXRoIGEgc2VwYXJhdGVkIGFyZ3VtZW50LgpoYXJkY29kZV9saWJkaXJfc2VwYXJh dG9yPSIiCgojIFNldCB0byB5ZXMgaWYgdXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtp bmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQojIHJlc3VsdGluZyBiaW5hcnkuCmhhcmRjb2RlX2Rp cmVjdD1ubwoKIyBTZXQgdG8geWVzIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBsaW5r aW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKIyByZXN1bHRpbmcgYmluYXJ5LgpoYXJkY29kZV9t aW51c19MPW5vCgojIFNldCB0byB5ZXMgaWYgdXNpbmcgU0hMSUJQQVRIX1ZBUj1ESVIgZHVyaW5n IGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvCiMgdGhlIHJlc3VsdGluZyBiaW5hcnkuCmhhcmRj b2RlX3NobGlicGF0aF92YXI9dW5zdXBwb3J0ZWQKCiMgQ29tcGlsZS10aW1lIHN5c3RlbSBzZWFy Y2ggcGF0aCBmb3IgbGlicmFyaWVzCnN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNy L2xpYiIKCiMgUnVuLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMKc3lzX2xp Yl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIiCgojIEZpeCB0aGUgc2hlbGwgdmFy aWFibGUgJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KZml4X3NyY2ZpbGVfcGF0aD0iIgoKIyBT ZXQgdG8geWVzIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgphbHdheXNfZXhwb3J0 X3N5bWJvbHM9bm8KCiMgVGhlIGNvbW1hbmRzIHRvIGxpc3QgZXhwb3J0ZWQgc3ltYm9scy4KZXhw b3J0X3N5bWJvbHNfY21kcz0iXCROTSBcJGxpYm9ianMgXCRjb252ZW5pZW5jZSB8IFwkZ2xvYmFs X3N5bWJvbF9waXBlIHwgc2VkICdzLy4qIC8vJyB8IHNvcnQgfCB1bmlxID4gXCRleHBvcnRfc3lt Ym9scyIKCiMgU3ltYm9scyB0aGF0IHNob3VsZCBub3QgYmUgbGlzdGVkIGluIHRoZSBwcmVsb2Fk ZWQgc3ltYm9scy4KZXhjbHVkZV9leHBzeW1zPSJfR0xPQkFMX09GRlNFVF9UQUJMRV8iCgojIFN5 bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZC4KaW5jbHVkZV9leHBzeW1zPSIiCgoj IyMgRU5EIExJQlRPT0wgQ09ORklHCgojIGx0bWFpbi5zaCAtIFByb3ZpZGUgZ2VuZXJhbGl6ZWQg bGlicmFyeS1idWlsZGluZyBzdXBwb3J0IHNlcnZpY2VzLgojIE5PVEU6IENoYW5naW5nIHRoaXMg ZmlsZSB3aWxsIG5vdCBhZmZlY3QgYW55dGhpbmcgdW50aWwgeW91IHJlcnVuIGx0Y29uZmlnLgoj CiMgQ29weXJpZ2h0IChDKSAxOTk2LTE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiMgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4s IDE5OTYKIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiMgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V CiMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiMKIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CiMgZGlzdHJpYnV0ZSB0aGlzIGZp bGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCiMgY29uZmlndXJhdGlvbiBz Y3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKIyB0 aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0 aGF0IHByb2dyYW0uCgpFWFBSX0NPTVBBVD0xCmV4cG9ydCBFWFBSX0NPTVBBVAoKIyBDaGVjayB0 aGF0IHdlIGhhdmUgYSB3b3JraW5nICRlY2hvLgppZiB0ZXN0ICJYJDEiID0gWC0tbm8tcmVleGVj OyB0aGVuCiAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCiAg c2hpZnQKZWxpZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgogICMgQXZvaWQg aW5saW5lIGRvY3VtZW50IGhlcmUsIGl0IG1heSBiZSBsZWZ0IG92ZXIKICA6CmVsaWYgdGVzdCAi WGAoJGVjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCiAgIyBZaXBwZWUsICRl Y2hvIHdvcmtzIQogIDoKZWxzZQogICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbCwg YW5kIHRoZW4gbWF5YmUgJGVjaG8gd2lsbCB3b3JrLgogIGV4ZWMgJFNIRUxMICIkMCIgLS1uby1y ZWV4ZWMgJHsxKyIkQCJ9CmZpCgppZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhl bgogICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCiAgc2hpZnQKICBjYXQgPDxFT0YKJCoKRU9GCiAg ZXhpdCAwCmZpCgojIFRoZSBuYW1lIG9mIHRoaXMgcHJvZ3JhbS4KcHJvZ25hbWU9YCRlY2hvICIk MCIgfCBzZWQgJ3MlXi4qLyUlJ2AKbW9kZW5hbWU9IiRwcm9nbmFtZSIKCiMgQ29uc3RhbnRzLgpQ Uk9HUkFNPWx0bWFpbi5zaApQQUNLQUdFPWxpYnRvb2wKVkVSU0lPTj0xLjMuNS1mcmVlYnNkLXBv cnRzClRJTUVTVEFNUD0iICgxLjM4NS4yLjIwNiAyMDAwLzA1LzI3IDExOjEyOjI3KSIKCmRlZmF1 bHRfbW9kZT0KaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRp b24uIgptYWdpYz0iJSUlTUFHSUMgdmFyaWFibGUlJSUiCm1rZGlyPSJta2RpciIKbXY9Im12IC1m IgpybT0icm0gLWYiCgojIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3Qg cXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCiMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3Rp bGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuClhzZWQ9J3NlZCAtZSAxcy9e WC8vJwpzZWRfcXVvdGVfc3Vic3Q9J3MvXChbXFxgXFwiJFxcXFxdXCkvXFxcMS9nJwpTUDJOTD0n dHIgXDA0MCBcMDEyJwpOTDJTUD0ndHIgXDAxNVwwMTIgXDA0MFwwNDAnCgojIE5MUyBudWlzYW5j ZXMuCiMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCiMgVGhl c2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVt cyB1bmRlcnN0YW5kCiMgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KIyBXZSBzYXZlIHRoZSBv bGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KaWYgdGVzdCAiJHtMQ19B TEwrc2V0fSIgPSBzZXQ7IHRoZW4KICBzYXZlX0xDX0FMTD0iJExDX0FMTCI7IExDX0FMTD1DOyBl eHBvcnQgTENfQUxMCmZpCmlmIHRlc3QgIiR7TEFORytzZXR9IiA9IHNldDsgdGhlbgogIHNhdmVf TEFORz0iJExBTkciOyBMQU5HPUM7IGV4cG9ydCBMQU5HCmZpCgppZiB0ZXN0ICIkTFRDT05GSUdf VkVSU0lPTiIgIT0gIiRWRVJTSU9OIjsgdGhlbgogIGVjaG8gIiRtb2RlbmFtZTogbHRjb25maWcg dmVyc2lvbiBcYCRMVENPTkZJR19WRVJTSU9OJyBkb2VzIG5vdCBtYXRjaCAkUFJPR1JBTSB2ZXJz aW9uIFxgJFZFUlNJT04nIiAxPiYyCiAgZWNobyAiRmF0YWwgY29uZmlndXJhdGlvbiBlcnJvci4g IFNlZSB0aGUgJFBBQ0tBR0UgZG9jcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDE+JjIKICBleGl0 IDEKZmkKCmlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVp bGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgogIGVjaG8gIiRtb2RlbmFtZTogbm90IGNvbmZpZ3Vy ZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIgMT4mMgogIGVjaG8gIkZhdGFsIGNvbmZp Z3VyYXRpb24gZXJyb3IuICBTZWUgdGhlICRQQUNLQUdFIGRvY3MgZm9yIG1vcmUgaW5mb3JtYXRp b24uIiAxPiYyCiAgZXhpdCAxCmZpCgojIEdsb2JhbCB2YXJpYWJsZXMuCm1vZGU9JGRlZmF1bHRf bW9kZQpub25vcHQ9CnByZXY9CnByZXZvcHQ9CnJ1bj0Kc2hvdz0iJGVjaG8iCnNob3dfaGVscD0K ZXhlY3V0ZV9kbGZpbGVzPQpsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCm8ybG89InMvXFwu JHtvYmpleHR9XCQvLmxvLyIKCiMgUGFyc2Ugb3VyIGNvbW1hbmQgbGluZSBvcHRpb25zIG9uY2Us IHRob3JvdWdobHkuCndoaWxlIHRlc3QgJCMgLWd0IDAKZG8KICBhcmc9IiQxIgogIHNoaWZ0Cgog IGNhc2UgIiRhcmciIGluCiAgLSo9Kikgb3B0YXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUg J3MvWy1fYS16QS1aMC05XSo9Ly8nYCA7OwogICopIG9wdGFyZz0gOzsKICBlc2FjCgogICMgSWYg dGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgogIGlmIHRl c3QgLW4gIiRwcmV2IjsgdGhlbgogICAgY2FzZSAiJHByZXYiIGluCiAgICBleGVjdXRlX2RsZmls ZXMpCiAgICAgIGV2YWwgIiRwcmV2PVwiXCQkcHJldiBcJGFyZ1wiIgogICAgICA7OwogICAgKikK ICAgICAgZXZhbCAiJHByZXY9XCRhcmciCiAgICAgIDs7CiAgICBlc2FjCgogICAgcHJldj0KICAg IHByZXZvcHQ9CiAgICBjb250aW51ZQogIGZpCgogICMgSGF2ZSB3ZSBzZWVuIGEgbm9uLW9wdGlv bmFsIGFyZ3VtZW50IHlldD8KICBjYXNlICIkYXJnIiBpbgogIC0taGVscCkKICAgIHNob3dfaGVs cD15ZXMKICAgIDs7CgogIC0tdmVyc2lvbikKICAgIGVjaG8gIiRQUk9HUkFNIChHTlUgJFBBQ0tB R0UpICRWRVJTSU9OJFRJTUVTVEFNUCIKICAgIGV4aXQgMAogICAgOzsKCiAgLS1jb25maWcpCiAg ICBzZWQgLWUgJzEsL14jIyMgQkVHSU4gTElCVE9PTCBDT05GSUcvZCcgLWUgJy9eIyMjIEVORCBM SUJUT09MIENPTkZJRy8sJGQnICQwCiAgICBleGl0IDAKICAgIDs7CgogIC0tZGVidWcpCiAgICBl Y2hvICIkcHJvZ25hbWU6IGVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCiAgICBzZXQgLXgKICAg IDs7CgogIC0tZHJ5LXJ1biB8IC1uKQogICAgcnVuPToKICAgIDs7CgogIC0tZmVhdHVyZXMpCiAg ICBlY2hvICJob3N0OiAkaG9zdCIKICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0g eWVzOyB0aGVuCiAgICAgIGVjaG8gImVuYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgZWxzZQog ICAgICBlY2hvICJkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMiCiAgICBmaQogICAgaWYgdGVzdCAi JGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgogICAgICBlY2hvICJlbmFibGUgc3RhdGljIGxp YnJhcmllcyIKICAgIGVsc2UKICAgICAgZWNobyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgog ICAgZmkKICAgIGV4aXQgMAogICAgOzsKCiAgLS1maW5pc2gpIG1vZGU9ImZpbmlzaCIgOzsKCiAg LS1tb2RlKSBwcmV2b3B0PSItLW1vZGUiIHByZXY9bW9kZSA7OwogIC0tbW9kZT0qKSBtb2RlPSIk b3B0YXJnIiA7OwoKICAtLXF1aWV0IHwgLS1zaWxlbnQpCiAgICBzaG93PToKICAgIDs7CgogIC1k bG9wZW4pCiAgICBwcmV2b3B0PSItZGxvcGVuIgogICAgcHJldj1leGVjdXRlX2RsZmlsZXMKICAg IDs7CgogIC0qKQogICAgJGVjaG8gIiRtb2RlbmFtZTogdW5yZWNvZ25pemVkIG9wdGlvbiBcYCRh cmcnIiAxPiYyCiAgICAkZWNobyAiJGhlbHAiIDE+JjIKICAgIGV4aXQgMQogICAgOzsKCiAgKikK ICAgIG5vbm9wdD0iJGFyZyIKICAgIGJyZWFrCiAgICA7OwogIGVzYWMKZG9uZQoKaWYgdGVzdCAt biAiJHByZXZvcHQiOyB0aGVuCiAgJGVjaG8gIiRtb2RlbmFtZTogb3B0aW9uIFxgJHByZXZvcHQn IHJlcXVpcmVzIGFuIGFyZ3VtZW50IiAxPiYyCiAgJGVjaG8gIiRoZWxwIiAxPiYyCiAgZXhpdCAx CmZpCgppZiB0ZXN0IC16ICIkc2hvd19oZWxwIjsgdGhlbgoKICAjIEluZmVyIHRoZSBvcGVyYXRp b24gbW9kZS4KICBpZiB0ZXN0IC16ICIkbW9kZSI7IHRoZW4KICAgIGNhc2UgIiRub25vcHQiIGlu CiAgICAqY2MgfCAqKysgfCBnY2MqIHwgKi1nY2MqKQogICAgICBtb2RlPWxpbmsKICAgICAgZm9y IGFyZwogICAgICBkbwoJY2FzZSAiJGFyZyIgaW4KCS1jKQoJICAgbW9kZT1jb21waWxlCgkgICBi cmVhawoJICAgOzsKCWVzYWMKICAgICAgZG9uZQogICAgICA7OwogICAgKmRiIHwgKmRieCB8ICpz dHJhY2UgfCAqdHJ1c3MpCiAgICAgIG1vZGU9ZXhlY3V0ZQogICAgICA7OwogICAgKmluc3RhbGwq fGNwfG12KQogICAgICBtb2RlPWluc3RhbGwKICAgICAgOzsKICAgICpybSkKICAgICAgbW9kZT11 bmluc3RhbGwKICAgICAgOzsKICAgICopCiAgICAgICMgSWYgd2UgaGF2ZSBubyBtb2RlLCBidXQg ZGxmaWxlcyB3ZXJlIHNwZWNpZmllZCwgdGhlbiBkbyBleGVjdXRlIG1vZGUuCiAgICAgIHRlc3Qg LW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIG1vZGU9ZXhlY3V0ZQoKICAgICAgIyBKdXN0IHVzZSB0 aGUgZGVmYXVsdCBvcGVyYXRpb24gbW9kZS4KICAgICAgaWYgdGVzdCAteiAiJG1vZGUiOyB0aGVu CglpZiB0ZXN0IC1uICIkbm9ub3B0IjsgdGhlbgoJICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5n OiBjYW5ub3QgaW5mZXIgb3BlcmF0aW9uIG1vZGUgZnJvbSBcYCRub25vcHQnIiAxPiYyCgllbHNl CgkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNhbm5vdCBpbmZlciBvcGVyYXRpb24gbW9k ZSB3aXRob3V0IE1PREUtQVJHUyIgMT4mMgoJZmkKICAgICAgZmkKICAgICAgOzsKICAgIGVzYWMK ICBmaQoKICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZs YWdzLgogIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBl eGVjdXRlOyB0aGVuCiAgICAkZWNobyAiJG1vZGVuYW1lOiB1bnJlY29nbml6ZWQgb3B0aW9uIFxg LWRsb3BlbiciIDE+JjIKICAgICRlY2hvICIkaGVscCIgMT4mMgogICAgZXhpdCAxCiAgZmkKCiAg IyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgogIGdlbmVy aWNfaGVscD0iJGhlbHAiCiAgaGVscD0iVHJ5IFxgJG1vZGVuYW1lIC0taGVscCAtLW1vZGU9JG1v ZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKCiAgIyBUaGVzZSBtb2RlcyBhcmUgaW4gb3JkZXIg b2YgZXhlY3V0aW9uIGZyZXF1ZW5jeSBzbyB0aGF0IHRoZXkgcnVuIHF1aWNrbHkuCiAgY2FzZSAi JG1vZGUiIGluCiAgIyBsaWJ0b29sIGNvbXBpbGUgbW9kZQogIGNvbXBpbGUpCiAgICBtb2RlbmFt ZT0iJG1vZGVuYW1lOiBjb21waWxlIgogICAgIyBHZXQgdGhlIGNvbXBpbGF0aW9uIGNvbW1hbmQg YW5kIHRoZSBzb3VyY2UgZmlsZS4KICAgIGJhc2VfY29tcGlsZT0KICAgIGxhc3Rhcmc9CiAgICBz cmNmaWxlPSIkbm9ub3B0IgogICAgc3VwcHJlc3Nfb3V0cHV0PQoKICAgIHVzZXJfdGFyZ2V0PW5v CiAgICBmb3IgYXJnCiAgICBkbwogICAgICAjIEFjY2VwdCBhbnkgY29tbWFuZC1saW5lIG9wdGlv bnMuCiAgICAgIGNhc2UgIiRhcmciIGluCiAgICAgIC1vKQoJaWYgdGVzdCAiJHVzZXJfdGFyZ2V0 IiAhPSAibm8iOyB0aGVuCgkgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBjYW5ub3Qgc3BlY2lmeSBc YC1vJyBtb3JlIHRoYW4gb25jZSIgMT4mMgoJICBleGl0IDEKCWZpCgl1c2VyX3RhcmdldD1uZXh0 Cgk7OwoKICAgICAgLXN0YXRpYykKCWJ1aWxkX29sZF9saWJzPXllcwoJY29udGludWUKCTs7CiAg ICAgIGVzYWMKCiAgICAgIGNhc2UgIiR1c2VyX3RhcmdldCIgaW4KICAgICAgbmV4dCkKCSMgVGhl IG5leHQgb25lIGlzIHRoZSAtbyB0YXJnZXQgbmFtZQoJdXNlcl90YXJnZXQ9eWVzCgljb250aW51 ZQoJOzsKICAgICAgeWVzKQoJIyBXZSBnb3QgdGhlIG91dHB1dCBmaWxlCgl1c2VyX3RhcmdldD1z ZXQKCWxpYm9iaj0iJGFyZyIKCWNvbnRpbnVlCgk7OwogICAgICBlc2FjCgogICAgICAjIEFjY2Vw dCB0aGUgY3VycmVudCBhcmd1bWVudCBhcyB0aGUgc291cmNlIGZpbGUuCiAgICAgIGxhc3Rhcmc9 IiRzcmNmaWxlIgogICAgICBzcmNmaWxlPSIkYXJnIgoKICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1 b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KCiAgICAgICMgQmFja3NsYXNoaWZ5IGFueSBiYWNr c2xhc2hlcywgZG91YmxlIHF1b3RlcywgYW5kIGRvbGxhciBzaWducy4KICAgICAgIyBUaGVzZSBh cmUgdGhlIG9ubHkgY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBzcGVjaWFsbHkKICAgICAgIyBp bnRlcnByZXRlZCBpbnNpZGUgb2YgZG91YmxlLXF1b3RlZCBzY3JpbmdzLgogICAgICBsYXN0YXJn PWAkZWNobyAiWCRsYXN0YXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKCiAgICAg ICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBvdGhlciBzaGVsbCBtZXRhY2hhcmFjdGVy cy4KICAgICAgIyBNYW55IEJvdXJuZSBzaGVsbHMgY2Fubm90IGhhbmRsZSBjbG9zZSBicmFja2V0 cyBjb3JyZWN0bHkgaW4gc2NhbgogICAgICAjIHNldHMsIHNvIHdlIHNwZWNpZnkgaXQgc2VwYXJh dGVseS4KICAgICAgY2FzZSAiJGxhc3RhcmciIGluCiAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7 XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qKQoJbGFzdGFyZz0iXCIkbGFzdGFyZ1wiIgoJOzsKICAg ICAgZXNhYwoKICAgICAgIyBBZGQgdGhlIHByZXZpb3VzIGFyZ3VtZW50IHRvIGJhc2VfY29tcGls ZS4KICAgICAgaWYgdGVzdCAteiAiJGJhc2VfY29tcGlsZSI7IHRoZW4KCWJhc2VfY29tcGlsZT0i JGxhc3RhcmciCiAgICAgIGVsc2UKCWJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFy ZyIKICAgICAgZmkKICAgIGRvbmUKCiAgICBjYXNlICIkdXNlcl90YXJnZXQiIGluCiAgICBzZXQp CiAgICAgIDs7CiAgICBubykKICAgICAgIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgb2Jq ZWN0LgogICAgICBsaWJvYmo9YCRlY2hvICJYJHNyY2ZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUl J2AKICAgICAgOzsKICAgICopCiAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNp ZnkgYSB0YXJnZXQgd2l0aCBcYC1vJyIgMT4mMgogICAgICBleGl0IDEKICAgICAgOzsKICAgIGVz YWMKCiAgICAjIFJlY29nbml6ZSBzZXZlcmFsIGRpZmZlcmVudCBmaWxlIHN1ZmZpeGVzLgogICAg IyBJZiB0aGUgdXNlciBzcGVjaWZpZXMgLW8gZmlsZS5vLCBpdCBpcyByZXBsYWNlZCB3aXRoIGZp bGUubG8KICAgIHhmb3JtPSdbY0NGU2Ztc29dJwogICAgY2FzZSAiJGxpYm9iaiIgaW4KICAgICou YWRhKSB4Zm9ybT1hZGEgOzsKICAgICouYWRiKSB4Zm9ybT1hZGIgOzsKICAgICouYWRzKSB4Zm9y bT1hZHMgOzsKICAgICouYXNtKSB4Zm9ybT1hc20gOzsKICAgICouYysrKSB4Zm9ybT1jKysgOzsK ICAgICouY2MpIHhmb3JtPWNjIDs7CiAgICAqLmNwcCkgeGZvcm09Y3BwIDs7CiAgICAqLmN4eCkg eGZvcm09Y3h4IDs7CiAgICAqLmY5MCkgeGZvcm09ZjkwIDs7CiAgICAqLmZvcikgeGZvcm09Zm9y IDs7CiAgICBlc2FjCgogICAgbGlib2JqPWAkZWNobyAiWCRsaWJvYmoiIHwgJFhzZWQgLWUgInMv XC4keGZvcm0kLy5sby8iYAoKICAgIGNhc2UgIiRsaWJvYmoiIGluCiAgICAqLmxvKSBvYmo9YCRl Y2hvICJYJGxpYm9iaiIgfCAkWHNlZCAtZSAiJGxvMm8iYCA7OwogICAgKikKICAgICAgJGVjaG8g IiRtb2RlbmFtZTogY2Fubm90IGRldGVybWluZSBuYW1lIG9mIGxpYnJhcnkgb2JqZWN0IGZyb20g XGAkbGlib2JqJyIgMT4mMgogICAgICBleGl0IDEKICAgICAgOzsKICAgIGVzYWMKCiAgICBpZiB0 ZXN0IC16ICIkYmFzZV9jb21waWxlIjsgdGhlbgogICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3Ug bXVzdCBzcGVjaWZ5IGEgY29tcGlsYXRpb24gY29tbWFuZCIgMT4mMgogICAgICAkZWNobyAiJGhl bHAiIDE+JjIKICAgICAgZXhpdCAxCiAgICBmaQoKICAgICMgRGVsZXRlIGFueSBsZWZ0b3ZlciBs aWJyYXJ5IG9iamVjdHMuCiAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVu CiAgICAgIHJlbW92ZWxpc3Q9IiRvYmogJGxpYm9iaiIKICAgIGVsc2UKICAgICAgcmVtb3ZlbGlz dD0iJGxpYm9iaiIKICAgIGZpCgogICAgJHJ1biAkcm0gJHJlbW92ZWxpc3QKICAgIHRyYXAgIiRy dW4gJHJtICRyZW1vdmVsaXN0OyBleGl0IDEiIDEgMiAxNQoKICAgICMgQ2FsY3VsYXRlIHRoZSBm aWxlbmFtZSBvZiB0aGUgb3V0cHV0IG9iamVjdCBpZiBjb21waWxlciBkb2VzCiAgICAjIG5vdCBz dXBwb3J0IC1vIHdpdGggLWMKICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0gbm87IHRoZW4K ICAgICAgb3V0cHV0X29iaj1gJGVjaG8gIlgkc3JjZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUn IC1lICdzJVwuLiokJSUnYC4ke29iamV4dH0KICAgICAgbG9ja2ZpbGU9IiRvdXRwdXRfb2JqLmxv Y2siCiAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRvdXRwdXRfb2JqICRsb2NrZmlsZSIK ICAgICAgdHJhcCAiJHJ1biAkcm0gJHJlbW92ZWxpc3Q7IGV4aXQgMSIgMSAyIDE1CiAgICBlbHNl CiAgICAgIG5lZWRfbG9ja3M9bm8KICAgICAgbG9ja2ZpbGU9CiAgICBmaQoKICAgICMgTG9jayB0 aGlzIGNyaXRpY2FsIHNlY3Rpb24gaWYgaXQgaXMgbmVlZGVkCiAgICAjIFdlIHVzZSB0aGlzIHNj cmlwdCBmaWxlIHRvIG1ha2UgdGhlIGxpbmssIGl0IGF2b2lkcyBjcmVhdGluZyBhIG5ldyBmaWxl CiAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgPSB5ZXM7IHRoZW4KICAgICAgdW50aWwgbG4gIiQw IiAiJGxvY2tmaWxlIiAyPi9kZXYvbnVsbDsgZG8KCSRzaG93ICJXYWl0aW5nIGZvciAkbG9ja2Zp bGUgdG8gYmUgcmVtb3ZlZCIKCXNsZWVwIDIKICAgICAgZG9uZQogICAgZWxpZiB0ZXN0ICIkbmVl ZF9sb2NrcyIgPSB3YXJuOyB0aGVuCiAgICAgIGlmIHRlc3QgLWYgIiRsb2NrZmlsZSI7IHRoZW4K CWVjaG8gIlwKKioqIEVSUk9SLCAkbG9ja2ZpbGUgZXhpc3RzIGFuZCBjb250YWluczoKYGNhdCAk bG9ja2ZpbGUgMj4vZGV2L251bGxgCgpUaGlzIGluZGljYXRlcyB0aGF0IGFub3RoZXIgcHJvY2Vz cyBpcyB0cnlpbmcgdG8gdXNlIHRoZSBzYW1lCnRlbXBvcmFyeSBvYmplY3QgZmlsZSwgYW5kIGxp YnRvb2wgY291bGQgbm90IHdvcmsgYXJvdW5kIGl0IGJlY2F1c2UKeW91ciBjb21waWxlciBkb2Vz IG5vdCBzdXBwb3J0IFxgLWMnIGFuZCBcYC1vJyB0b2dldGhlci4gIElmIHlvdQpyZXBlYXQgdGhp cyBjb21waWxhdGlvbiwgaXQgbWF5IHN1Y2NlZWQsIGJ5IGNoYW5jZSwgYnV0IHlvdSBoYWQgYmV0 dGVyCmF2b2lkIHBhcmFsbGVsIGJ1aWxkcyAobWFrZSAtaikgaW4gdGhpcyBwbGF0Zm9ybSwgb3Ig Z2V0IGEgYmV0dGVyCmNvbXBpbGVyLiIKCgkkcnVuICRybSAkcmVtb3ZlbGlzdAoJZXhpdCAxCiAg ICAgIGZpCiAgICAgIGVjaG8gJHNyY2ZpbGUgPiAiJGxvY2tmaWxlIgogICAgZmkKCiAgICBpZiB0 ZXN0IC1uICIkZml4X3NyY2ZpbGVfcGF0aCI7IHRoZW4KICAgICAgZXZhbCBzcmNmaWxlPVwiJGZp eF9zcmNmaWxlX3BhdGhcIgogICAgZmkKCiAgICAjIE9ubHkgYnVpbGQgYSBQSUMgb2JqZWN0IGlm IHdlIGFyZSBidWlsZGluZyBsaWJ0b29sIGxpYnJhcmllcy4KICAgIGlmIHRlc3QgIiRidWlsZF9s aWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCiAgICAgICMgV2l0aG91dCB0aGlzIGFzc2lnbm1lbnQs IGJhc2VfY29tcGlsZSBnZXRzIGVtcHRpZWQuCiAgICAgIGZic2RfaGlkZW91c19zaF9idWc9JGJh c2VfY29tcGlsZQoKICAgICAgIyBBbGwgcGxhdGZvcm1zIHVzZSAtRFBJQywgdG8gbm90aWZ5IHBy ZXByb2Nlc3NlZCBhc3NlbWJsZXIgY29kZS4KICAgICAgY29tbWFuZD0iJGJhc2VfY29tcGlsZSAk c3JjZmlsZSAkcGljX2ZsYWcgLURQSUMiCiAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIg PSB5ZXM7IHRoZW4KCWxvX2xpYm9iaj0iJGxpYm9iaiIKCWRpcj1gJGVjaG8gIlgkbGlib2JqIiB8 ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCglpZiB0ZXN0ICJYJGRpciIgPSAiWCRsaWJvYmoiOyB0 aGVuCgkgIGRpcj0iJG9iamRpciIKCWVsc2UKCSAgZGlyPSIkZGlyLyRvYmpkaXIiCglmaQoJbGli b2JqPSIkZGlyLyJgJGVjaG8gIlgkbGlib2JqIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCgoJaWYg dGVzdCAtZCAiJGRpciI7IHRoZW4KCSAgJHNob3cgIiRybSAkbGlib2JqIgoJICAkcnVuICRybSAk bGlib2JqCgllbHNlCgkgICRzaG93ICIkbWtkaXIgJGRpciIKCSAgJHJ1biAkbWtkaXIgJGRpcgoJ ICBzdGF0dXM9JD8KCSAgaWYgdGVzdCAkc3RhdHVzIC1uZSAwICYmIHRlc3QgISAtZCAkZGlyOyB0 aGVuCgkgICAgZXhpdCAkc3RhdHVzCgkgIGZpCglmaQogICAgICBmaQogICAgICBpZiB0ZXN0ICIk Y29tcGlsZXJfb19sbyIgPSB5ZXM7IHRoZW4KCW91dHB1dF9vYmo9IiRsaWJvYmoiCgljb21tYW5k PSIkY29tbWFuZCAtbyAkb3V0cHV0X29iaiIKICAgICAgZWxpZiB0ZXN0ICIkY29tcGlsZXJfY19v IiA9IHllczsgdGhlbgoJb3V0cHV0X29iaj0iJG9iaiIKCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRv dXRwdXRfb2JqIgogICAgICBmaQoKICAgICAgJHJ1biAkcm0gIiRvdXRwdXRfb2JqIgogICAgICAk c2hvdyAiJGNvbW1hbmQiCiAgICAgIGlmICRydW4gZXZhbCAiJGNvbW1hbmQiOyB0aGVuIDoKICAg ICAgZWxzZQoJdGVzdCAtbiAiJG91dHB1dF9vYmoiICYmICRydW4gJHJtICRyZW1vdmVsaXN0Cgll eGl0IDEKICAgICAgZmkKCiAgICAgIGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHdhcm4gJiYKCSB0 ZXN0IHgiYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgIiAhPSB4IiRzcmNmaWxlIjsgdGhlbgoJ ZWNobyAiXAoqKiogRVJST1IsICRsb2NrZmlsZSBjb250YWluczoKYGNhdCAkbG9ja2ZpbGUgMj4v ZGV2L251bGxgCgpidXQgaXQgc2hvdWxkIGNvbnRhaW46CiRzcmNmaWxlCgpUaGlzIGluZGljYXRl cyB0aGF0IGFub3RoZXIgcHJvY2VzcyBpcyB0cnlpbmcgdG8gdXNlIHRoZSBzYW1lCnRlbXBvcmFy eSBvYmplY3QgZmlsZSwgYW5kIGxpYnRvb2wgY291bGQgbm90IHdvcmsgYXJvdW5kIGl0IGJlY2F1 c2UKeW91ciBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IFxgLWMnIGFuZCBcYC1vJyB0b2dldGhl ci4gIElmIHlvdQpyZXBlYXQgdGhpcyBjb21waWxhdGlvbiwgaXQgbWF5IHN1Y2NlZWQsIGJ5IGNo YW5jZSwgYnV0IHlvdSBoYWQgYmV0dGVyCmF2b2lkIHBhcmFsbGVsIGJ1aWxkcyAobWFrZSAtaikg aW4gdGhpcyBwbGF0Zm9ybSwgb3IgZ2V0IGEgYmV0dGVyCmNvbXBpbGVyLiIKCgkkcnVuICRybSAk cmVtb3ZlbGlzdAoJZXhpdCAxCiAgICAgIGZpCgogICAgICAjIEp1c3QgbW92ZSB0aGUgb2JqZWN0 IGlmIG5lZWRlZCwgdGhlbiBnbyBvbiB0byBjb21waWxlIHRoZSBuZXh0IG9uZQogICAgICBpZiB0 ZXN0IHgiJG91dHB1dF9vYmoiICE9IHgiJGxpYm9iaiI7IHRoZW4KCSRzaG93ICIkbXYgJG91dHB1 dF9vYmogJGxpYm9iaiIKCWlmICRydW4gJG12ICRvdXRwdXRfb2JqICRsaWJvYmo7IHRoZW4gOgoJ ZWxzZQoJICBlcnJvcj0kPwoJICAkcnVuICRybSAkcmVtb3ZlbGlzdAoJICBleGl0ICRlcnJvcgoJ ZmkKICAgICAgZmkKCiAgICAgICMgSWYgd2UgaGF2ZSBubyBwaWNfZmxhZywgdGhlbiBjb3B5IHRo ZSBvYmplY3QgaW50byBwbGFjZSBhbmQgZmluaXNoLgogICAgICBpZiB0ZXN0IC16ICIkcGljX2Zs YWciICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KCSMgUmVuYW1lIHRoZSAu bG8gZnJvbSB3aXRoaW4gb2JqZGlyIHRvIG9iagoJaWYgdGVzdCAtZiAkb2JqOyB0aGVuCgkgICRz aG93ICRybSAkb2JqCgkgICRydW4gJHJtICRvYmoKCWZpCgoJJHNob3cgIiRtdiAkbGlib2JqICRv YmoiCglpZiAkcnVuICRtdiAkbGlib2JqICRvYmo7IHRoZW4gOgoJZWxzZQoJICBlcnJvcj0kPwoJ ICAkcnVuICRybSAkcmVtb3ZlbGlzdAoJICBleGl0ICRlcnJvcgoJZmkKCgl4ZGlyPWAkZWNobyAi WCRvYmoiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKCWlmIHRlc3QgIlgkeGRpciIgPSAiWCRv YmoiOyB0aGVuCgkgIHhkaXI9Ii4iCgllbHNlCgkgIHhkaXI9IiR4ZGlyIgoJZmkKCWJhc2VvYmo9 YCRlY2hvICJYJG9iaiIgfCAkWHNlZCAtZSAicyUuKi8lJSJgCglsaWJvYmo9YCRlY2hvICJYJGJh c2VvYmoiIHwgJFhzZWQgLWUgIiRvMmxvImAKCSMgTm93IGFycmFuZ2UgdGhhdCBvYmogYW5kIGxv X2xpYm9iaiBiZWNvbWUgdGhlIHNhbWUgZmlsZQoJJHNob3cgIihjZCAkeGRpciAmJiAkTE5fUyAk YmFzZW9iaiAkbGlib2JqKSIKCWlmICRydW4gZXZhbCAnKGNkICR4ZGlyICYmICRMTl9TICRiYXNl b2JqICRsaWJvYmopJzsgdGhlbgoJICBleGl0IDAKCWVsc2UKCSAgZXJyb3I9JD8KCSAgJHJ1biAk cm0gJHJlbW92ZWxpc3QKCSAgZXhpdCAkZXJyb3IKCWZpCiAgICAgIGZpCgogICAgICAjIEFsbG93 IGVycm9yIG1lc3NhZ2VzIG9ubHkgZnJvbSB0aGUgZmlyc3QgY29tcGlsYXRpb24uCiAgICAgIHN1 cHByZXNzX291dHB1dD0nID4vZGV2L251bGwgMj4mMScKICAgIGZpCgogICAgIyBPbmx5IGJ1aWxk IGEgcG9zaXRpb24tZGVwZW5kZW50IG9iamVjdCBpZiB3ZSBidWlsZCBvbGQgbGlicmFyaWVzLgog ICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgogICAgICBjb21tYW5kPSIk YmFzZV9jb21waWxlICRzcmNmaWxlIgogICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHll czsgdGhlbgoJY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKCW91dHB1dF9vYmo9IiRvYmoiCiAg ICAgIGZpCgogICAgICAjIFN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBpZiB3ZSBhbHJlYWR5IGRp ZCBhIFBJQyBjb21waWxhdGlvbi4KICAgICAgY29tbWFuZD0iJGNvbW1hbmQkc3VwcHJlc3Nfb3V0 cHV0IgogICAgICAkcnVuICRybSAiJG91dHB1dF9vYmoiCiAgICAgICRzaG93ICIkY29tbWFuZCIK ICAgICAgaWYgJHJ1biBldmFsICIkY29tbWFuZCI7IHRoZW4gOgogICAgICBlbHNlCgkkcnVuICRy bSAkcmVtb3ZlbGlzdAoJZXhpdCAxCiAgICAgIGZpCgogICAgICBpZiB0ZXN0ICIkbmVlZF9sb2Nr cyIgPSB3YXJuICYmCgkgdGVzdCB4ImBjYXQgJGxvY2tmaWxlIDI+L2Rldi9udWxsYCIgIT0geCIk c3JjZmlsZSI7IHRoZW4KCWVjaG8gIlwKKioqIEVSUk9SLCAkbG9ja2ZpbGUgY29udGFpbnM6CmBj YXQgJGxvY2tmaWxlIDI+L2Rldi9udWxsYAoKYnV0IGl0IHNob3VsZCBjb250YWluOgokc3JjZmls ZQoKVGhpcyBpbmRpY2F0ZXMgdGhhdCBhbm90aGVyIHByb2Nlc3MgaXMgdHJ5aW5nIHRvIHVzZSB0 aGUgc2FtZQp0ZW1wb3Jhcnkgb2JqZWN0IGZpbGUsIGFuZCBsaWJ0b29sIGNvdWxkIG5vdCB3b3Jr IGFyb3VuZCBpdCBiZWNhdXNlCnlvdXIgY29tcGlsZXIgZG9lcyBub3Qgc3VwcG9ydCBcYC1jJyBh bmQgXGAtbycgdG9nZXRoZXIuICBJZiB5b3UKcmVwZWF0IHRoaXMgY29tcGlsYXRpb24sIGl0IG1h eSBzdWNjZWVkLCBieSBjaGFuY2UsIGJ1dCB5b3UgaGFkIGJldHRlcgphdm9pZCBwYXJhbGxlbCBi dWlsZHMgKG1ha2UgLWopIGluIHRoaXMgcGxhdGZvcm0sIG9yIGdldCBhIGJldHRlcgpjb21waWxl ci4iCgoJJHJ1biAkcm0gJHJlbW92ZWxpc3QKCWV4aXQgMQogICAgICBmaQoKICAgICAgIyBKdXN0 IG1vdmUgdGhlIG9iamVjdCBpZiBuZWVkZWQKICAgICAgaWYgdGVzdCB4IiRvdXRwdXRfb2JqIiAh PSB4IiRvYmoiOyB0aGVuCgkkc2hvdyAiJG12ICRvdXRwdXRfb2JqICRvYmoiCglpZiAkcnVuICRt diAkb3V0cHV0X29iaiAkb2JqOyB0aGVuIDoKCWVsc2UKCSAgZXJyb3I9JD8KCSAgJHJ1biAkcm0g JHJlbW92ZWxpc3QKCSAgZXhpdCAkZXJyb3IKCWZpCiAgICAgIGZpCgogICAgICAjIENyZWF0ZSBh biBpbnZhbGlkIGxpYnRvb2wgb2JqZWN0IGlmIG5vIFBJQywgc28gdGhhdCB3ZSBkbyBub3QKICAg ICAgIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KICAgICAgaWYgdGVzdCAi JGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCgkkc2hvdyAiZWNobyB0aW1lc3RhbXAg PiAkbGlib2JqIgoJJHJ1biBldmFsICJlY2hvIHRpbWVzdGFtcCA+IFwkbGlib2JqIiB8fCBleGl0 ICQ/CiAgICAgIGVsc2UKCSMgTW92ZSB0aGUgLmxvIGZyb20gd2l0aGluIG9iamRpcgoJJHNob3cg IiRtdiAkbGlib2JqICRsb19saWJvYmoiCglpZiAkcnVuICRtdiAkbGlib2JqICRsb19saWJvYmo7 IHRoZW4gOgoJZWxzZQoJICBlcnJvcj0kPwoJICAkcnVuICRybSAkcmVtb3ZlbGlzdAoJICBleGl0 ICRlcnJvcgoJZmkKICAgICAgZmkKICAgIGZpCgogICAgIyBVbmxvY2sgdGhlIGNyaXRpY2FsIHNl Y3Rpb24gaWYgaXQgd2FzIGxvY2tlZAogICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiICE9IG5vOyB0 aGVuCiAgICAgICRybSAiJGxvY2tmaWxlIgogICAgZmkKCiAgICBleGl0IDAKICAgIDs7CgogICMg bGlidG9vbCBsaW5rIG1vZGUKICBsaW5rKQogICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogbGluayIK ICAgIGNhc2UgIiRob3N0IiBpbgogICAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLW9z MiopCiAgICAgICMgSXQgaXMgaW1wb3NzaWJsZSB0byBsaW5rIGEgZGxsIHdpdGhvdXQgdGhpcyBz ZXR0aW5nLCBhbmQKICAgICAgIyB3ZSBzaG91bGRuJ3QgZm9yY2UgdGhlIG1ha2VmaWxlIG1haW50 YWluZXIgdG8gZmlndXJlIG91dAogICAgICAjIHdoaWNoIHN5c3RlbSB3ZSBhcmUgY29tcGlsaW5n IGZvciBpbiBvcmRlciB0byBwYXNzIGFuIGV4dHJhCiAgICAgICMgZmxhZyBmb3IgZXZlcnkgbGli dG9vbCBpbnZva2F0aW9uLgogICAgICAjIGFsbG93X3VuZGVmaW5lZD1ubwoKICAgICAgIyBGSVhN RTogVW5mb3J0dW5hdGVseSwgdGhlcmUgYXJlIHByb2JsZW1zIHdpdGggdGhlIGFib3ZlIHdoZW4g dHJ5aW5nCiAgICAgICMgdG8gbWFrZSBhIGRsbCB3aGljaCBoYXMgdW5kZWZpbmVkIHN5bWJvbHMs IGluIHdoaWNoIGNhc2Ugbm90CiAgICAgICMgZXZlbiBhIHN0YXRpYyBsaWJyYXJ5IGlzIGJ1aWx0 LiAgRm9yIG5vdywgd2UgbmVlZCB0byBzcGVjaWZ5CiAgICAgICMgLW5vLXVuZGVmaW5lZCBvbiB0 aGUgbGlidG9vbCBsaW5rIGxpbmUgd2hlbiB3ZSBjYW4gYmUgY2VydGFpbgogICAgICAjIHRoYXQg YWxsIHN5bWJvbHMgYXJlIHNhdGlzZmllZCwgb3RoZXJ3aXNlIHdlIGdldCBhIHN0YXRpYyBsaWJy YXJ5LgogICAgICBhbGxvd191bmRlZmluZWQ9eWVzCgogICAgICAjIFRoaXMgaXMgYSBzb3VyY2Ug cHJvZ3JhbSB0aGF0IGlzIHVzZWQgdG8gY3JlYXRlIGRsbHMgb24gV2luZG93cwogICAgICAjIERv bid0IHJlbW92ZSBub3IgbW9kaWZ5IHRoZSBzdGFydGluZyBhbmQgY2xvc2luZyBjb21tZW50cwoj IC8qIGx0ZGxsLmMgc3RhcnRzIGhlcmUgKi8KIyAjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4K IyAjaW5jbHVkZSA8d2luZG93cy5oPgojICN1bmRlZiBXSU4zMl9MRUFOX0FORF9NRUFOCiMgI2lu Y2x1ZGUgPHN0ZGlvLmg+CiMKIyAjaWZuZGVmIF9fQ1lHV0lOX18KIyAjICBpZmRlZiBfX0NZR1dJ TjMyX18KIyAjICAgIGRlZmluZSBfX0NZR1dJTl9fIF9fQ1lHV0lOMzJfXwojICMgIGVuZGlmCiMg I2VuZGlmCiMKIyAjaWZkZWYgX19jcGx1c3BsdXMKIyBleHRlcm4gIkMiIHsKIyAjZW5kaWYKIyBC T09MIEFQSUVOVFJZIERsbE1haW4gKEhJTlNUQU5DRSBoSW5zdCwgRFdPUkQgcmVhc29uLCBMUFZP SUQgcmVzZXJ2ZWQpOwojICNpZmRlZiBfX2NwbHVzcGx1cwojIH0KIyAjZW5kaWYKIwojICNpZmRl ZiBfX0NZR1dJTl9fCiMgI2luY2x1ZGUgPGN5Z3dpbi9jeWd3aW5fZGxsLmg+CiMgREVDTEFSRV9D WUdXSU5fRExMKCBEbGxNYWluICk7CiMgI2VuZGlmCiMgSElOU1RBTkNFIF9faERsbEluc3RhbmNl X2Jhc2U7CiMKIyBCT09MIEFQSUVOVFJZCiMgRGxsTWFpbiAoSElOU1RBTkNFIGhJbnN0LCBEV09S RCByZWFzb24sIExQVk9JRCByZXNlcnZlZCkKIyB7CiMgICBfX2hEbGxJbnN0YW5jZV9iYXNlID0g aEluc3Q7CiMgICByZXR1cm4gVFJVRTsKIyB9CiMgLyogbHRkbGwuYyBlbmRzIGhlcmUgKi8KICAg ICAgIyBUaGlzIGlzIGEgc291cmNlIHByb2dyYW0gdGhhdCBpcyB1c2VkIHRvIGNyZWF0ZSBpbXBv cnQgbGlicmFyaWVzCiAgICAgICMgb24gV2luZG93cyBmb3IgZGxscyB3aGljaCBsYWNrIHRoZW0u IERvbid0IHJlbW92ZSBub3IgbW9kaWZ5IHRoZQogICAgICAjIHN0YXJ0aW5nIGFuZCBjbG9zaW5n IGNvbW1lbnRzCiMgLyogaW1wZ2VuLmMgc3RhcnRzIGhlcmUgKi8KIyAvKiAgIENvcHlyaWdodCAo QykgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIyAKIyAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR05VIGxpYnRvb2wuCiMgCiMgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCiMgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgCiMgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAojICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgojICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCiMgCiMgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiMg ICovCiMgCiMgICNpbmNsdWRlIDxzdGRpby5oPgkJLyogZm9yIHByaW50ZigpICovCiMgICNpbmNs dWRlIDx1bmlzdGQuaD4JCS8qIGZvciBvcGVuKCksIGxzZWVrKCksIHJlYWQoKSAqLwojICAjaW5j bHVkZSA8ZmNudGwuaD4JCS8qIGZvciBPX1JET05MWSwgT19CSU5BUlkgKi8KIyAgI2luY2x1ZGUg PHN0cmluZy5oPgkJLyogZm9yIHN0cmR1cCgpICovCiMgCiMgIHN0YXRpYyB1bnNpZ25lZCBpbnQK IyAgcGVfZ2V0MTYgKGZkLCBvZmZzZXQpCiMgICAgICAgaW50IGZkOwojICAgICAgIGludCBvZmZz ZXQ7CiMgIHsKIyAgICB1bnNpZ25lZCBjaGFyIGJbMl07CiMgICAgbHNlZWsgKGZkLCBvZmZzZXQs IFNFRUtfU0VUKTsKIyAgICByZWFkIChmZCwgYiwgMik7CiMgICAgcmV0dXJuIGJbMF0gKyAoYlsx XTw8OCk7CiMgIH0KIyAKIyAgc3RhdGljIHVuc2lnbmVkIGludAojICBwZV9nZXQzMiAoZmQsIG9m ZnNldCkKIyAgICAgIGludCBmZDsKIyAgICAgIGludCBvZmZzZXQ7CiMgIHsKIyAgICB1bnNpZ25l ZCBjaGFyIGJbNF07CiMgICAgbHNlZWsgKGZkLCBvZmZzZXQsIFNFRUtfU0VUKTsKIyAgICByZWFk IChmZCwgYiwgNCk7CiMgICAgcmV0dXJuIGJbMF0gKyAoYlsxXTw8OCkgKyAoYlsyXTw8MTYpICsg KGJbM108PDI0KTsKIyAgfQojIAojICBzdGF0aWMgdW5zaWduZWQgaW50CiMgIHBlX2FzMzIgKHB0 cikKIyAgICAgICB2b2lkICpwdHI7CiMgIHsKIyAgICB1bnNpZ25lZCBjaGFyICpiID0gcHRyOwoj ICAgIHJldHVybiBiWzBdICsgKGJbMV08PDgpICsgKGJbMl08PDE2KSArIChiWzNdPDwyNCk7CiMg IH0KIyAKIyAgaW50CiMgIG1haW4gKGFyZ2MsIGFyZ3YpCiMgICAgICBpbnQgYXJnYzsKIyAgICAg IGNoYXIgKmFyZ3ZbXTsKIyAgewojICAgICAgaW50IGRsbDsKIyAgICAgIHVuc2lnbmVkIGxvbmcg cGVfaGVhZGVyX29mZnNldCwgb3B0aGRyX29mcywgbnVtX2VudHJpZXMsIGk7CiMgICAgICB1bnNp Z25lZCBsb25nIGV4cG9ydF9ydmEsIGV4cG9ydF9zaXplLCBuc2VjdGlvbnMsIHNlY3B0ciwgZXhw cHRyOwojICAgICAgdW5zaWduZWQgbG9uZyBuYW1lX3J2YXMsIG5leHA7CiMgICAgICB1bnNpZ25l ZCBjaGFyICpleHBkYXRhLCAqZXJ2YTsKIyAgICAgIGNoYXIgKmZpbGVuYW1lLCAqZGxsX25hbWU7 CiMgCiMgICAgICBmaWxlbmFtZSA9IGFyZ3ZbMV07CiMgCiMgICAgICBkbGwgPSBvcGVuKGZpbGVu YW1lLCBPX1JET05MWXxPX0JJTkFSWSk7CiMgICAgICBpZiAoIWRsbCkKIyAgCXJldHVybiAxOwoj IAojICAgICAgZGxsX25hbWUgPSBmaWxlbmFtZTsKIyAgICAKIyAgICAgIGZvciAoaT0wOyBmaWxl bmFtZVtpXTsgaSsrKQojICAJaWYgKGZpbGVuYW1lW2ldID09ICcvJyB8fCBmaWxlbmFtZVtpXSA9 PSAnXFwnICB8fCBmaWxlbmFtZVtpXSA9PSAnOicpCiMgIAkgICAgZGxsX25hbWUgPSBmaWxlbmFt ZSArIGkgKzE7CiMgCiMgICAgICBwZV9oZWFkZXJfb2Zmc2V0ID0gcGVfZ2V0MzIgKGRsbCwgMHgz Yyk7CiMgICAgICBvcHRoZHJfb2ZzID0gcGVfaGVhZGVyX29mZnNldCArIDQgKyAyMDsKIyAgICAg IG51bV9lbnRyaWVzID0gcGVfZ2V0MzIgKGRsbCwgb3B0aGRyX29mcyArIDkyKTsKIyAKIyAgICAg IGlmIChudW1fZW50cmllcyA8IDEpIC8qIG5vIGV4cG9ydHMgKi8KIyAgCXJldHVybiAxOwojIAoj ICAgICAgZXhwb3J0X3J2YSA9IHBlX2dldDMyIChkbGwsIG9wdGhkcl9vZnMgKyA5Nik7CiMgICAg ICBleHBvcnRfc2l6ZSA9IHBlX2dldDMyIChkbGwsIG9wdGhkcl9vZnMgKyAxMDApOwojICAgICAg bnNlY3Rpb25zID0gcGVfZ2V0MTYgKGRsbCwgcGVfaGVhZGVyX29mZnNldCArIDQgKzIpOwojICAg ICAgc2VjcHRyID0gKHBlX2hlYWRlcl9vZmZzZXQgKyA0ICsgMjAgKwojICAJICAgICAgcGVfZ2V0 MTYgKGRsbCwgcGVfaGVhZGVyX29mZnNldCArIDQgKyAxNikpOwojIAojICAgICAgZXhwcHRyID0g MDsKIyAgICAgIGZvciAoaSA9IDA7IGkgPCBuc2VjdGlvbnM7IGkrKykKIyAgICAgIHsKIyAgCWNo YXIgc25hbWVbOF07CiMgIAl1bnNpZ25lZCBsb25nIHNlY3B0cjEgPSBzZWNwdHIgKyA0MCAqIGk7 CiMgIAl1bnNpZ25lZCBsb25nIHZhZGRyID0gcGVfZ2V0MzIgKGRsbCwgc2VjcHRyMSArIDEyKTsK IyAgCXVuc2lnbmVkIGxvbmcgdnNpemUgPSBwZV9nZXQzMiAoZGxsLCBzZWNwdHIxICsgMTYpOwoj ICAJdW5zaWduZWQgbG9uZyBmcHRyID0gcGVfZ2V0MzIgKGRsbCwgc2VjcHRyMSArIDIwKTsKIyAg CWxzZWVrKGRsbCwgc2VjcHRyMSwgU0VFS19TRVQpOwojICAJcmVhZChkbGwsIHNuYW1lLCA4KTsK IyAgCWlmICh2YWRkciA8PSBleHBvcnRfcnZhICYmIHZhZGRyK3ZzaXplID4gZXhwb3J0X3J2YSkK IyAgCXsKIyAgCSAgICBleHBwdHIgPSBmcHRyICsgKGV4cG9ydF9ydmEgLSB2YWRkcik7CiMgIAkg ICAgaWYgKGV4cG9ydF9ydmEgKyBleHBvcnRfc2l6ZSA+IHZhZGRyICsgdnNpemUpCiMgIAkJZXhw b3J0X3NpemUgPSB2c2l6ZSAtIChleHBvcnRfcnZhIC0gdmFkZHIpOwojICAJICAgIGJyZWFrOwoj ICAJfQojICAgICAgfQojIAojICAgICAgZXhwZGF0YSA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2Mo ZXhwb3J0X3NpemUpOwojICAgICAgbHNlZWsgKGRsbCwgZXhwcHRyLCBTRUVLX1NFVCk7CiMgICAg ICByZWFkIChkbGwsIGV4cGRhdGEsIGV4cG9ydF9zaXplKTsKIyAgICAgIGVydmEgPSBleHBkYXRh IC0gZXhwb3J0X3J2YTsKIyAKIyAgICAgIG5leHAgPSBwZV9hczMyIChleHBkYXRhKzI0KTsKIyAg ICAgIG5hbWVfcnZhcyA9IHBlX2FzMzIgKGV4cGRhdGErMzIpOwojIAojICAgICAgcHJpbnRmICgi RVhQT1JUU1xuIik7CiMgICAgICBmb3IgKGkgPSAwOyBpPG5leHA7IGkrKykKIyAgICAgIHsKIyAg CXVuc2lnbmVkIGxvbmcgbmFtZV9ydmEgPSBwZV9hczMyIChlcnZhK25hbWVfcnZhcytpKjQpOwoj ICAJcHJpbnRmICgiXHQlcyBAICVsZCA7XG4iLCBlcnZhK25hbWVfcnZhLCAxKyBpKTsKIyAgICAg IH0KIyAKIyAgICAgIHJldHVybiAwOwojICB9CiMgLyogaW1wZ2VuLmMgZW5kcyBoZXJlICovCiAg ICAgIDs7CiAgICAqKQogICAgICBhbGxvd191bmRlZmluZWQ9eWVzCiAgICAgIDs7CiAgICBlc2Fj CiAgICBjb21waWxlX2NvbW1hbmQ9IiRub25vcHQiCiAgICBmaW5hbGl6ZV9jb21tYW5kPSIkbm9u b3B0IgoKICAgIGNvbXBpbGVfcnBhdGg9CiAgICBmaW5hbGl6ZV9ycGF0aD0KICAgIGNvbXBpbGVf c2hsaWJwYXRoPQogICAgZmluYWxpemVfc2hsaWJwYXRoPQogICAgY29udmVuaWVuY2U9CiAgICBv bGRfY29udmVuaWVuY2U9CiAgICBkZXBsaWJzPQogICAgbGlua29wdHM9CgogICAgaWYgdGVzdCAt biAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAgICAgICMgZ2V0IHRoZSBkaXJlY3RvcmllcyBsaXN0 ZWQgaW4gJHNobGlicGF0aF92YXIKICAgICAgZXZhbCBsaWJfc2VhcmNoX3BhdGg9XGBcJGVjaG8g XCJYIFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCiAgICBl bHNlCiAgICAgIGxpYl9zZWFyY2hfcGF0aD0KICAgIGZpCiAgICAjIG5vdyBwcmVwZW5kIHRoZSBz eXN0ZW0tc3BlY2lmaWMgb25lcwogICAgZXZhbCBsaWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9z ZWFyY2hfcGF0aF9zcGVjXCRsaWJfc2VhcmNoX3BhdGhcIgogICAgZXZhbCBzeXNfbGliX2Rsc2Vh cmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIgogICAgCiAgICBhdm9pZF92 ZXJzaW9uPW5vCiAgICBkbGZpbGVzPQogICAgZGxwcmVmaWxlcz0KICAgIGRsc2VsZj1ubwogICAg ZXhwb3J0X2R5bmFtaWM9bm8KICAgIGV4cG9ydF9zeW1ib2xzPQogICAgZXhwb3J0X3N5bWJvbHNf cmVnZXg9CiAgICBnZW5lcmF0ZWQ9CiAgICBsaWJvYmpzPQogICAgbGlua19hZ2FpbnN0X2xpYnRv b2xfbGlicz0KICAgIGx0bGlicz0KICAgIG1vZHVsZT1ubwogICAgb2Jqcz0KICAgIHByZWZlcl9z dGF0aWNfbGlicz1ubwogICAgcHJlbG9hZD1ubwogICAgcHJldj0KICAgIHByZXZhcmc9CiAgICBy ZWxlYXNlPQogICAgcnBhdGg9CiAgICB4cnBhdGg9CiAgICBwZXJtX3JwYXRoPQogICAgdGVtcF9y cGF0aD0KICAgIHRocmVhZF9zYWZlPW5vCiAgICB2aW5mbz0KCiAgICAjIFdlIG5lZWQgdG8ga25v dyAtc3RhdGljLCB0byBnZXQgdGhlIHJpZ2h0IG91dHB1dCBmaWxlbmFtZXMuCiAgICBmb3IgYXJn CiAgICBkbwogICAgICBjYXNlICIkYXJnIiBpbgogICAgICAtYWxsLXN0YXRpYyB8IC1zdGF0aWMp CglpZiB0ZXN0ICJYJGFyZyIgPSAiWC1hbGwtc3RhdGljIjsgdGhlbgoJICBpZiB0ZXN0ICIkYnVp bGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0IC16ICIkbGlua19zdGF0aWNfZmxhZyI7IHRo ZW4KCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBjb21wbGV0ZSBzdGF0aWMgbGlua2lu ZyBpcyBpbXBvc3NpYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbiIgMT4mMgoJICBmaQoJICBpZiB0 ZXN0IC1uICIkbGlua19zdGF0aWNfZmxhZyI7IHRoZW4KCSAgICBkbG9wZW5fc2VsZj0kZGxvcGVu X3NlbGZfc3RhdGljCgkgIGZpCgllbHNlCgkgIGlmIHRlc3QgLXogIiRwaWNfZmxhZyIgJiYgdGVz dCAtbiAiJGxpbmtfc3RhdGljX2ZsYWciOyB0aGVuCgkgICAgZGxvcGVuX3NlbGY9JGRsb3Blbl9z ZWxmX3N0YXRpYwoJICBmaQoJZmkKCWJ1aWxkX2xpYnRvb2xfbGlicz1ubwoJYnVpbGRfb2xkX2xp YnM9eWVzCglwcmVmZXJfc3RhdGljX2xpYnM9eWVzCglicmVhawoJOzsKICAgICAgZXNhYwogICAg ZG9uZQoKICAgICMgU2VlIGlmIG91ciBzaGFyZWQgYXJjaGl2ZXMgZGVwZW5kIG9uIHN0YXRpYyBh cmNoaXZlcy4KICAgIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzIiAmJiBidWls ZF9vbGRfbGlicz15ZXMKCiAgICAjIEdvIHRocm91Z2ggdGhlIGFyZ3VtZW50cywgdHJhbnNmb3Jt aW5nIHRoZW0gb24gdGhlIHdheS4KICAgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCiAgICAgIGFy Zz0iJDEiCiAgICAgIHNoaWZ0CgogICAgICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMg YW4gYXJndW1lbnQsIGFzc2lnbiBpdC4KICAgICAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCglj YXNlICIkcHJldiIgaW4KCW91dHB1dCkKCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21t YW5kIEBPVVRQVVRAIgoJICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCBAT1VU UFVUQCIKCSAgOzsKCWVzYWMKCgljYXNlICIkcHJldiIgaW4KCWRsZmlsZXN8ZGxwcmVmaWxlcykK CSAgaWYgdGVzdCAiJHByZWxvYWQiID0gbm87IHRoZW4KCSAgICAjIEFkZCB0aGUgc3ltYm9sIG9i amVjdCBpbnRvIHRoZSBsaW5raW5nIGNvbW1hbmRzLgoJICAgIGNvbXBpbGVfY29tbWFuZD0iJGNv bXBpbGVfY29tbWFuZCBAU1lNRklMRUAiCgkgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXpl X2NvbW1hbmQgQFNZTUZJTEVAIgoJICAgIHByZWxvYWQ9eWVzCgkgIGZpCgkgIGNhc2UgIiRhcmci IGluCgkgICoubGEgfCAqLmxvKSA7OyAgIyBXZSBoYW5kbGUgdGhlc2UgY2FzZXMgYmVsb3cuCgkg IGZvcmNlKQoJICAgIGlmIHRlc3QgIiRkbHNlbGYiID0gbm87IHRoZW4KCSAgICAgIGRsc2VsZj1u ZWVkbGVzcwoJICAgICAgZXhwb3J0X2R5bmFtaWM9eWVzCgkgICAgZmkKCSAgICBwcmV2PQoJICAg IGNvbnRpbnVlCgkgICAgOzsKCSAgc2VsZikKCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZp bGVzOyB0aGVuCgkgICAgICBkbHNlbGY9eWVzCgkgICAgZWxpZiB0ZXN0ICIkcHJldiIgPSBkbGZp bGVzICYmIHRlc3QgIiRkbG9wZW5fc2VsZiIgIT0geWVzOyB0aGVuCgkgICAgICBkbHNlbGY9eWVz CgkgICAgZWxzZQoJICAgICAgZGxzZWxmPW5lZWRsZXNzCgkgICAgICBleHBvcnRfZHluYW1pYz15 ZXMKCSAgICBmaQoJICAgIHByZXY9CgkgICAgY29udGludWUKCSAgICA7OwoJICAqKQoJICAgIGlm IHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRh cmciCgkgICAgZWxzZQoJICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKCSAgICBm aQoJICAgIHByZXY9CgkgICAgOzsKCSAgZXNhYwoJICA7OwoJZXhwc3ltcykKCSAgZXhwb3J0X3N5 bWJvbHM9IiRhcmciCgkgIGlmIHRlc3QgISAtZiAiJGFyZyI7IHRoZW4KCSAgICAkZWNobyAiJG1v ZGVuYW1lOiBzeW1ib2wgZmlsZSBcYCRhcmcnIGRvZXMgbm90IGV4aXN0IgoJICAgIGV4aXQgMQoJ ICBmaQoJICBwcmV2PQoJICBjb250aW51ZQoJICA7OwoJZXhwc3ltc19yZWdleCkKCSAgZXhwb3J0 X3N5bWJvbHNfcmVnZXg9IiRhcmciCgkgIHByZXY9CgkgIGNvbnRpbnVlCgkgIDs7CglyZWxlYXNl KQoJICBpZiB0ZXN0ICIkcmVsZWFzZV9zdWZmaXgiID0gYWxsOyB0aGVuCgkgICAgcmVsZWFzZT0i JGFyZyIKCSAgZWxpZiB0ZXN0ICIkcmVsZWFzZV9zdWZmaXgiID0geWVzOyB0aGVuCgkgIHJlbGVh c2U9Ii0kYXJnIgoJICBmaQoJICBwcmV2PQoJICBjb250aW51ZQoJICA7OwoJcnBhdGggfCB4cnBh dGgpCgkgICMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgoJICBjYXNlICIkYXJnIiBpbgoJICBb XFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CgkgICopCgkgICAgJGVjaG8gIiRtb2RlbmFtZTog b25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiIDE+JjIKCSAgICBleGl0IDEKCSAg ICA7OwoJICBlc2FjCgkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCgkgICAgY2FzZSAi JHJwYXRoICIgaW4KCSAgICAqIiAkYXJnICIqKSA7OwoJICAgICopIHJwYXRoPSIkcnBhdGggJGFy ZyIgOzsKCSAgICBlc2FjCgkgIGVsc2UKCSAgICBjYXNlICIkeHJwYXRoICIgaW4KCSAgICAqIiAk YXJnICIqKSA7OwoJICAgICopIHhycGF0aD0iJHhycGF0aCAkYXJnIiA7OwoJICAgIGVzYWMKCSAg ZmkKCSAgcHJldj0KCSAgY29udGludWUKCSAgOzsKCSopCgkgIGV2YWwgIiRwcmV2PVwiXCRhcmdc IiIKCSAgcHJldj0KCSAgY29udGludWUKCSAgOzsKCWVzYWMKICAgICAgZmkKCiAgICAgIHByZXZh cmc9IiRhcmciCgogICAgICBjYXNlICIkYXJnIiBpbgogICAgICAtYWxsLXN0YXRpYykKCWlmIHRl c3QgLW4gIiRsaW5rX3N0YXRpY19mbGFnIjsgdGhlbgoJICBjb21waWxlX2NvbW1hbmQ9IiRjb21w aWxlX2NvbW1hbmQgJGxpbmtfc3RhdGljX2ZsYWciCgkgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5h bGl6ZV9jb21tYW5kICRsaW5rX3N0YXRpY19mbGFnIgoJZmkKCWNvbnRpbnVlCgk7OwoKICAgICAg LWFsbG93LXVuZGVmaW5lZCkKCSMgRklYTUU6IHJlbW92ZSB0aGlzIGZsYWcgc29tZXRpbWUgaW4g dGhlIGZ1dHVyZS4KCSRlY2hvICIkbW9kZW5hbWU6IFxgLWFsbG93LXVuZGVmaW5lZCcgaXMgZGVw cmVjYXRlZCBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IiAxPiYyCgljb250aW51ZQoJOzsKCiAg ICAgIC1hdm9pZC12ZXJzaW9uKQoJYnVpbGRfb2xkX2xpYnM9bm8KCWF2b2lkX3ZlcnNpb249eWVz Cgljb250aW51ZQoJOzsKCiAgICAgIC1kbG9wZW4pCglwcmV2PWRsZmlsZXMKCWNvbnRpbnVlCgk7 OwoKICAgICAgLWRscHJlb3BlbikKCXByZXY9ZGxwcmVmaWxlcwoJY29udGludWUKCTs7CgogICAg ICAtZXhwb3J0LWR5bmFtaWMpCglleHBvcnRfZHluYW1pYz15ZXMKCWNvbnRpbnVlCgk7OwoKICAg ICAgLWV4cG9ydC1zeW1ib2xzIHwgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4KQoJaWYgdGVzdCAtbiAi JGV4cG9ydF9zeW1ib2xzIiB8fCB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVu CgkgICRlY2hvICIkbW9kZW5hbWU6IG5vdCBtb3JlIHRoYW4gb25lIC1leHBvcnRlZC1zeW1ib2xz IGFyZ3VtZW50IGFsbG93ZWQiCgkgIGV4aXQgMQoJZmkKCWlmIHRlc3QgIlgkYXJnIiA9ICJYLWV4 cG9ydC1zeW1ib2xzIjsgdGhlbgoJICBwcmV2PWV4cHN5bXMKCWVsc2UKCSAgcHJldj1leHBzeW1z X3JlZ2V4CglmaQoJY29udGludWUKCTs7CgogICAgICAtTCopCglkaXI9YCRlY2hvICJYJGFyZyIg fCAkWHNlZCAtZSAncy9eLUwvLydgCgkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KCWNhc2Ug IiRkaXIiIGluCglbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CgkqKQoJICBhYnNkaXI9YGNk ICIkZGlyIiAmJiBwd2RgCgkgIGlmIHRlc3QgLXogIiRhYnNkaXIiOyB0aGVuCgkgICAgJGVjaG8g IiRtb2RlbmFtZTogd2FybmluZzogY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3Rvcnkg bmFtZSBvZiBcYCRkaXInIiAxPiYyCgkgICAgJGVjaG8gIiRtb2RlbmFtZTogcGFzc2luZyBpdCBs aXRlcmFsbHkgdG8gdGhlIGxpbmtlciwgYWx0aG91Z2ggaXQgbWlnaHQgZmFpbCIgMT4mMgoJICAg IGFic2Rpcj0iJGRpciIKCSAgZmkKCSAgZGlyPSIkYWJzZGlyIgoJICA7OwoJZXNhYwoJY2FzZSAi ICRkZXBsaWJzICIgaW4KCSoiICRhcmcgIiopIDs7CgkqKSBkZXBsaWJzPSIkZGVwbGlicyAkYXJn Ijs7Cgllc2FjCgljYXNlICIgJGxpYl9zZWFyY2hfcGF0aCAiIGluCgkqIiAkZGlyICIqKSA7OwoJ KikgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiOzsKCWVzYWMKCWNhc2Ug IiRob3N0IiBpbgoJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLW9zMiopCgkgIGRsbHNl YXJjaGRpcj1gY2QgIiRkaXIiICYmIHB3ZCB8fCBlY2hvICIkZGlyImAKCSAgY2FzZSAiOiRkbGxz ZWFyY2hwYXRoOiIgaW4KCSAgOjopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hkaXIiOzsKCSAg KiI6JGRsbHNlYXJjaGRpcjoiKikgOzsKCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBh dGg6JGRsbHNlYXJjaGRpciI7OwoJICBlc2FjCgkgIDs7Cgllc2FjCgk7OwoKICAgICAgLWwqKQoJ aWYgdGVzdCAiJGFyZyIgPSAiLWxjIjsgdGhlbgoJICBjYXNlICIkaG9zdCIgaW4KCSAgKi0qLWN5 Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLW9zMiogfCAqLSotYmVvcyopCgkgICAgIyBUaGVzZSBz eXN0ZW1zIGRvbid0IGFjdHVhbGx5IGhhdmUgYyBsaWJyYXJ5IChhcyBzdWNoKQoJICAgIGNvbnRp bnVlCgkgICAgOzsKCSAgZXNhYwoJZWxpZiB0ZXN0ICIkYXJnIiA9ICItbG0iOyB0aGVuCgkgIGNh c2UgIiRob3N0IiBpbgoJICAqLSotY3lnd2luKiB8ICotKi1iZW9zKikKCSAgICAjIFRoZXNlIHN5 c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBtYXRoIGxpYnJhcnkgKGFzIHN1Y2gpCgkgICAgY29u dGludWUKCSAgICA7OwoJICBlc2FjCglmaQoJZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKCTs7Cgog ICAgICAtP3RocmVhZCkKCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCgk7OwoKICAgICAgLW1vZHVs ZSkKCW1vZHVsZT15ZXMKCWNvbnRpbnVlCgk7OwoKICAgICAgLW5vLXVuZGVmaW5lZCkKCWFsbG93 X3VuZGVmaW5lZD1ubwoJY29udGludWUKCTs7CgogICAgICAtbykgcHJldj1vdXRwdXQgOzsKCiAg ICAgIC1yZWxlYXNlKQoJcHJldj1yZWxlYXNlCgljb250aW51ZQoJOzsKCiAgICAgIC1ycGF0aCkK CXByZXY9cnBhdGgKCWNvbnRpbnVlCgk7OwoKICAgICAgLVIpCglwcmV2PXhycGF0aAoJY29udGlu dWUKCTs7CgogICAgICAtUiopCglkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncy9eLVIv LydgCgkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KCWNhc2UgIiRkaXIiIGluCglbXFwvXSog fCBbQS1aYS16XTpbXFwvXSopIDs7CgkqKQoJICAkZWNobyAiJG1vZGVuYW1lOiBvbmx5IGFic29s dXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIgMT4mMgoJICBleGl0IDEKCSAgOzsKCWVzYWMKCWNh c2UgIiR4cnBhdGggIiBpbgoJKiIgJGRpciAiKikgOzsKCSopIHhycGF0aD0iJHhycGF0aCAkZGly IiA7OwoJZXNhYwoJY29udGludWUKCTs7CgogICAgICAtc3RhdGljKQoJIyBJZiB3ZSBoYXZlIG5v IHBpY19mbGFnLCB0aGVuIHRoaXMgaXMgdGhlIHNhbWUgYXMgLWFsbC1zdGF0aWMuCglpZiB0ZXN0 IC16ICIkcGljX2ZsYWciICYmIHRlc3QgLW4gIiRsaW5rX3N0YXRpY19mbGFnIjsgdGhlbgoJICBj b21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGxpbmtfc3RhdGljX2ZsYWciCgkgIGZp bmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRsaW5rX3N0YXRpY19mbGFnIgoJZmkK CWNvbnRpbnVlCgk7OwoKICAgICAgLXRocmVhZC1zYWZlKQoJdGhyZWFkX3NhZmU9eWVzCgljb250 aW51ZQoJOzsKCiAgICAgIC12ZXJzaW9uLWluZm8pCglwcmV2PXZpbmZvCgljb250aW51ZQoJOzsK CiAgICAgICMgU29tZSBvdGhlciBjb21waWxlciBmbGFnLgogICAgICAtKiB8ICsqKQoJIyBVbmtu b3duIGFyZ3VtZW50cyBpbiBib3RoIGZpbmFsaXplX2NvbW1hbmQgYW5kIGNvbXBpbGVfY29tbWFu ZCBuZWVkCgkjIHRvIGJlIGFlc3RoZXRpY2FsbHkgcXVvdGVkIGJlY2F1c2UgdGhleSBhcmUgZXZh bGVkIGxhdGVyLgoJYXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vi c3QiYAoJY2FzZSAiJGFyZyIgaW4KCSpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdc IFwJXSp8Kl0qKQoJICBhcmc9IlwiJGFyZ1wiIgoJICA7OwoJZXNhYwoJOzsKCiAgICAgICoubyB8 ICoub2JqIHwgKi5hIHwgKi5saWIpCgkjIEEgc3RhbmRhcmQgb2JqZWN0LgoJbGlib2Jqcz0iJGxp Ym9ianMgJGFyZyIKCTs7CgogICAgICAqLmxvKQoJIyBBIGxpYnJhcnkgb2JqZWN0LgoJaWYgdGVz dCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgoJICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgoJICBp ZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuIiA9IHll czsgdGhlbgoJICAgIHByZXY9CgkgICAgY29udGludWUKCSAgZWxzZQoJICAgICMgSWYgbGlidG9v bCBvYmplY3RzIGFyZSB1bnN1cHBvcnRlZCwgdGhlbiB3ZSBuZWVkIHRvIHByZWxvYWQuCgkgICAg cHJldj1kbHByZWZpbGVzCgkgIGZpCglmaQoKCWlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7 IHRoZW4KCSAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgoJICBkbHByZWZpbGVzPSIk ZGxwcmVmaWxlcyAiYCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJGxvMm8iYAoJICBwcmV2PQoJ ZmkKCWxpYm9ianM9IiRsaWJvYmpzICRhcmciCgk7OwoKICAgICAgKi5sYSkKCSMgQSBsaWJ0b29s LWNvbnRyb2xsZWQgbGlicmFyeS4KCglkbG5hbWU9CglsaWJkaXI9CglsaWJyYXJ5X25hbWVzPQoJ b2xkX2xpYnJhcnk9CgoJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRv b2wgYXJjaGl2ZS4KCWlmIChzZWQgLWUgJzJxJyAkYXJnIHwgZWdyZXAgIl4jIEdlbmVyYXRlZCBi eSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKCWVsc2UKCSAgJGVjaG8gIiRt b2RlbmFtZTogXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiIDE+JjIKCSAg ZXhpdCAxCglmaQoKCSMgSWYgdGhlIGxpYnJhcnkgd2FzIGluc3RhbGxlZCB3aXRoIGFuIG9sZCBy ZWxlYXNlIG9mIGxpYnRvb2wsCgkjIGl0IHdpbGwgbm90IHJlZGVmaW5lIHZhcmlhYmxlIGluc3Rh bGxlZC4KCWluc3RhbGxlZD15ZXMKCgkjIFJlYWQgdGhlIC5sYSBmaWxlCgkjIElmIHRoZXJlIGlz IG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KCWNhc2UgIiRhcmciIGluCgkq LyogfCAqXFwqKSAuICRhcmcgOzsKCSopIC4gLi8kYXJnIDs7Cgllc2FjCgoJIyBHZXQgdGhlIG5h bWUgb2YgdGhlIGxpYnJhcnkgd2UgbGluayBhZ2FpbnN0LgoJbGlua2xpYj0KCWZvciBsIGluICRv bGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KCSAgbGlua2xpYj0iJGwiCglkb25lCgoJaWYg dGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCgkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5k IG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRhcmcnIiAxPiYyCgkgIGV4aXQgMQoJZmkKCgkj IEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KCW5h bWU9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncyVeLiovJSUnIC1lICdzL1wubGEkLy8nIC1l ICdzL15saWIvLydgCgoJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgoJICBkaXI9 IiRsaWJkaXIiCgllbHNlCgkgIGRpcj1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICdzJS9bXi9d KiQlJSdgCgkgIGlmIHRlc3QgIlgkZGlyIiA9ICJYJGFyZyI7IHRoZW4KCSAgICBkaXI9IiRvYmpk aXIiCgkgIGVsc2UKCSAgICBkaXI9IiRkaXIvJG9iamRpciIKCSAgZmkKCWZpCgoJaWYgdGVzdCAt biAiJGRlcGVuZGVuY3lfbGlicyI7IHRoZW4KCSAgIyBFeHRyYWN0IC1SIGFuZCAtTCBmcm9tIGRl cGVuZGVuY3lfbGlicwoJICB0ZW1wX2RlcGxpYnM9CgkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVu Y3lfbGliczsgZG8KCSAgICBjYXNlICIkZGVwbGliIiBpbgoJICAgIC1SKikgdGVtcF94cnBhdGg9 YCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLVIvLydgCgkJIGNhc2UgIiAkcnBhdGgg JHhycGF0aCAiIGluCgkJICoiICR0ZW1wX3hycGF0aCAiKikgOzsKCQkgKikgeHJwYXRoPSIkeHJw YXRoICR0ZW1wX3hycGF0aCI7OwoJCSBlc2FjOzsKCSAgICAtTCopIGNhc2UgIiRjb21waWxlX2Nv bW1hbmQgJHRlbXBfZGVwbGlicyAiIGluCgkJICoiICRkZXBsaWIgIiopIDs7CgkJICopIHRlbXBf ZGVwbGlicz0iJHRlbXBfZGVwbGlicyAkZGVwbGliIjs7CgkJIGVzYWMKCQkgdGVtcF9kaXI9YCRl Y2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLUwvLydgCgkJIGNhc2UgIiAkbGliX3NlYXJj aF9wYXRoICIgaW4KCQkgKiIgJHRlbXBfZGlyICIqKSA7OwoJCSAqKSBsaWJfc2VhcmNoX3BhdGg9 IiRsaWJfc2VhcmNoX3BhdGggJHRlbXBfZGlyIjs7CgkJIGVzYWMKCQkgOzsKCSAgICAqKSB0ZW1w X2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGRlcGxpYiI7OwoJICAgIGVzYWMKCSAgZG9uZQoJICBk ZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCglmaQoKCWlmIHRlc3QgLXogIiRsaWJkaXIi OyB0aGVuCgkgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBp biBpdHMgb2JqZWN0cy4KCSAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkZGlyLyRvbGRfbGli cmFyeSIKCSAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRkaXIvJG9sZF9saWJy YXJ5IgoJICBkZXBsaWJzPSIkZGVwbGlicyRkZXBlbmRlbmN5X2xpYnMiCgkgIGNvbXBpbGVfY29t bWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkZGlyLyRvbGRfbGlicmFyeSRkZXBlbmRlbmN5X2xpYnMi CgkgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRkaXIvJG9sZF9saWJyYXJ5 JGRlcGVuZGVuY3lfbGlicyIKCSAgY29udGludWUKCWZpCgoJIyBUaGlzIGxpYnJhcnkgd2FzIHNw ZWNpZmllZCB3aXRoIC1kbG9wZW4uCglpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCgkg IGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCgkgIGlmIHRlc3QgLXogIiRkbG5hbWUiIHx8IHRlc3Qg IiRkbG9wZW4iICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG5vOyB0aGVu CgkgICAgIyBJZiB0aGVyZSBpcyBubyBkbG5hbWUsIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3Jl IGxpbmtpbmcgc3RhdGljYWxseSwKCSAgICAjIHdlIG5lZWQgdG8gcHJlbG9hZC4KCSAgICBwcmV2 PWRscHJlZmlsZXMKCSAgZWxzZQoJICAgICMgV2Ugc2hvdWxkIG5vdCBjcmVhdGUgYSBkZXBlbmRl bmN5IG9uIHRoaXMgbGlicmFyeSwgYnV0IHdlCgkgICAgIyBtYXkgbmVlZCBhbnkgbGlicmFyaWVz IGl0IHJlcXVpcmVzLgoJICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCRkZXBl bmRlbmN5X2xpYnMiCgkgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQkZGVw ZW5kZW5jeV9saWJzIgoJICAgIHByZXY9CgkgICAgY29udGludWUKCSAgZmkKCWZpCgoJIyBUaGUg bGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KCWlmIHRlc3QgIiRwcmV2IiA9 IGRscHJlZmlsZXM7IHRoZW4KCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28g dGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCgkgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmsp LgoJICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCgkgICAgZGxwcmVmaWxlcz0iJGRs cHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCgkgIGVsc2UKCSAgICBkbHByZWZpbGVzPSIkZGxw cmVmaWxlcyAkZGlyLyRsaW5rbGliIgoJICBmaQoJICBwcmV2PQoJZmkKCglpZiB0ZXN0IC1uICIk bGlicmFyeV9uYW1lcyIgJiYKCSAgIHsgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicyIgPSBubyB8 fCB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB9OyB0aGVuCgkgIGxpbmtfYWdhaW5zdF9saWJ0b29s X2xpYnM9IiRsaW5rX2FnYWluc3RfbGlidG9vbF9saWJzICRhcmciCgkgIGlmIHRlc3QgLW4gIiRz aGxpYnBhdGhfdmFyIjsgdGhlbgoJICAgICMgTWFrZSBzdXJlIHRoZSBycGF0aCBjb250YWlucyBv bmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KCSAgICBjYXNlICIkdGVtcF9ycGF0aCAiIGluCgkgICAg KiIgJGRpciAiKikgOzsKCSAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCAkZGlyIiA7OwoJ ICAgIGVzYWMKCSAgZmkKCgkgICMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgoJICBjYXNlICIk ZGlyIiBpbgoJICBbXFwvXSB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OwoJICAq KQoJICAgIGFic2Rpcj1gY2QgIiRkaXIiICYmIHB3ZGAKCSAgICBpZiB0ZXN0IC16ICIkYWJzZGly IjsgdGhlbgoJICAgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogY2Fubm90IGRldGVybWlu ZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiBcYCRkaXInIiAxPiYyCgkgICAgICAkZWNobyAi JG1vZGVuYW1lOiBwYXNzaW5nIGl0IGxpdGVyYWxseSB0byB0aGUgbGlua2VyLCBhbHRob3VnaCBp dCBtaWdodCBmYWlsIiAxPiYyCgkgICAgICBhYnNkaXI9IiRkaXIiCgkgICAgZmkKCSAgICA7OwoJ ICBlc2FjCgkgIAoJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCgkgICMgU2tp cCBkaXJlY3RvcmllcyB0aGF0IGFyZSBpbiB0aGUgc3lzdGVtIGRlZmF1bHQgcnVuLXRpbWUKCSAg IyBzZWFyY2ggcGF0aCwgdW5sZXNzIHRoZXkgaGF2ZSBiZWVuIHJlcXVlc3RlZCB3aXRoIC1SLgoJ ICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCgkgICoiICRhYnNkaXIgIiopIDs7 CgkgICopCgkgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgoJICAgICoiICRhYnNkaXIgIiop IDs7CgkgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIgCgkgICAg ZXNhYwoJICAgIDs7CgkgIGVzYWMKCgkgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIg aW4KCSAgKiIgJGxpYmRpciAiKikgOzsKCSAgKikKCSAgICBjYXNlICIkZmluYWxpemVfcnBhdGgg IiBpbgoJICAgICoiICRsaWJkaXIgIiopIDs7CgkgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5h bGl6ZV9ycGF0aCAkbGliZGlyIgoJICAgIGVzYWMKCSAgICA7OwoJICBlc2FjCgoJICBsaWJfbGlu a2VkPXllcwoJICBjYXNlICIkaGFyZGNvZGVfYWN0aW9uIiBpbgoJICBpbW1lZGlhdGUgfCB1bnN1 cHBvcnRlZCkKCSAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IG5vOyB0aGVuCgkgICAg ICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGRpci8kbGlua2xpYiIKCSAgICAg IGRlcGxpYnM9IiRkZXBsaWJzICRkaXIvJGxpbmtsaWIiCgkgICAgICBjYXNlICIkaG9zdCIgaW4K CSAgICAgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1vczIqKQoJCWRsbHNlYXJjaGRp cj1gY2QgIiRkaXIiICYmIHB3ZCB8fCBlY2hvICIkZGlyImAKCQlpZiB0ZXN0IC1uICIkZGxsc2Vh cmNocGF0aCI7IHRoZW4KCQkgIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRkbGxzZWFy Y2hkaXIiCgkJZWxzZQoJCSAgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaGRpciIKCQlmaQoJCTs7 CgkgICAgICBlc2FjCgkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSBubzsgdGhl bgoJICAgICAgY2FzZSAiJGhvc3QiIGluCgkgICAgICAqLSotc3Vub3MqKQoJCWNvbXBpbGVfc2hs aWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkZGlyOiIKCQk7OwoJICAgICAgZXNhYwoJICAgICAg Y2FzZSAiJGNvbXBpbGVfY29tbWFuZCAiIGluCgkgICAgICAqIiAtTCRkaXIgIiopIDs7CgkgICAg ICAqKSBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgLUwkZGlyIjs7CgkgICAgICBl c2FjCgkgICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgLWwkbmFtZSIKCSAg ICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1MJGRpciAtbCRuYW1lIgoJICAgIGVsaWYgdGVzdCAiJGhh cmRjb2RlX3NobGlicGF0aF92YXIiID0gbm87IHRoZW4KCSAgICAgIGNhc2UgIjokY29tcGlsZV9z aGxpYnBhdGg6IiBpbgoJICAgICAgKiI6JGRpcjoiKikgOzsKCSAgICAgICopIGNvbXBpbGVfc2hs aWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkZGlyOiI7OwoJICAgICAgZXNhYwoJICAgICAgY29t cGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIC1sJG5hbWUiCgkgICAgICBkZXBsaWJzPSIk ZGVwbGlicyAtbCRuYW1lIgoJICAgIGVsc2UKCSAgICAgIGxpYl9saW5rZWQ9bm8KCSAgICBmaQoJ ICAgIDs7CgoJICByZWxpbmspCgkgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSB5ZXM7 IHRoZW4KCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkYWJzZGlyLyRs aW5rbGliIgoJICAgICAgZGVwbGlicz0iJGRlcGxpYnMgJGFic2Rpci8kbGlua2xpYiIKCSAgICBl bGlmIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiA9IHllczsgdGhlbgoJICAgICAgY2FzZSAiJGNv bXBpbGVfY29tbWFuZCAiIGluCgkgICAgICAqIiAtTCRhYnNkaXIgIiopIDs7CgkgICAgICAqKSBj b21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgLUwkYWJzZGlyIjs7CgkgICAgICBlc2Fj CgkgICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgLWwkbmFtZSIKCSAgICAg IGRlcGxpYnM9IiRkZXBsaWJzIC1MJGFic2RpciAtbCRuYW1lIgoJICAgIGVsaWYgdGVzdCAiJGhh cmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCgkgICAgICBjYXNlICI6JGNvbXBpbGVf c2hsaWJwYXRoOiIgaW4KCSAgICAgICoiOiRhYnNkaXI6IiopIDs7CgkgICAgICAqKSBjb21waWxl X3NobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJGFic2RpcjoiOzsKCSAgICAgIGVzYWMKCSAg ICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAtbCRuYW1lIgoJICAgICAgZGVw bGlicz0iJGRlcGxpYnMgLWwkbmFtZSIKCSAgICBlbHNlCgkgICAgICBsaWJfbGlua2VkPW5vCgkg ICAgZmkKCSAgICA7OwoKCSAgKikKCSAgICBsaWJfbGlua2VkPW5vCgkgICAgOzsKCSAgZXNhYwoK CSAgaWYgdGVzdCAiJGxpYl9saW5rZWQiICE9IHllczsgdGhlbgoJICAgICRlY2hvICIkbW9kZW5h bWU6IGNvbmZpZ3VyYXRpb24gZXJyb3I6IHVuc3VwcG9ydGVkIGhhcmRjb2RlIHByb3BlcnRpZXMi CgkgICAgZXhpdCAxCgkgIGZpCgoJICAjIEZpbmFsaXplIGNvbW1hbmQgZm9yIGJvdGggaXMgc2lt cGxlOiBqdXN0IGhhcmRjb2RlIGl0LgoJICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHll czsgdGhlbgoJICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRsaWJkaXIv JGxpbmtsaWIiCgkgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0geWVzOyB0aGVuCgkg ICAgY2FzZSAiJGZpbmFsaXplX2NvbW1hbmQgIiBpbgoJICAgICoiIC1MJGxpYmRpciAiKikgOzsK CSAgICAqKSBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAtTCRsaWJkaXIiOzsK CSAgICBlc2FjCgkgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgLWwkbmFt ZSIKCSAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KCSAg ICBjYXNlICI6JGZpbmFsaXplX3NobGlicGF0aDoiIGluCgkgICAgKiI6JGxpYmRpcjoiKikgOzsK CSAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiI7 OwoJICAgIGVzYWMKCSAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAtbCRu YW1lIgoJICBlbHNlCgkgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mg d2UnbGwgZmFrZSBpdC4KCSAgICBjYXNlICIkZmluYWxpemVfY29tbWFuZCAiIGluCgkgICAgKiIg LUwkZGlyICIqKSA7OwoJICAgICopIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5k IC1MJGxpYmRpciI7OwoJICAgIGVzYWMKCSAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVf Y29tbWFuZCAtbCRuYW1lIgoJICBmaQoJZWxzZQoJICAjIFRyYW5zZm9ybSBkaXJlY3RseSB0byBv bGQgYXJjaGl2ZXMgaWYgd2UgZG9uJ3QgYnVpbGQgbmV3IGxpYnJhcmllcy4KCSAgaWYgdGVzdCAt biAiJHBpY19mbGFnIiAmJiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB0aGVuCgkgICAgJGVjaG8g IiRtb2RlbmFtZTogY2Fubm90IGZpbmQgc3RhdGljIGxpYnJhcnkgZm9yIFxgJGFyZyciIDE+JjIK CSAgICBleGl0IDEKCSAgZmkKCgkgICMgSGVyZSB3ZSBhc3N1bWUgdGhhdCBvbmUgb2YgaGFyZGNv ZGVfZGlyZWN0IG9yIGhhcmRjb2RlX21pbnVzX0wKCSAgIyBpcyBub3QgdW5zdXBwb3J0ZWQuICBU aGlzIGlzIHZhbGlkIG9uIGFsbCBrbm93biBzdGF0aWMgYW5kCgkgICMgc2hhcmVkIHBsYXRmb3Jt cy4KCSAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgIT0gdW5zdXBwb3J0ZWQ7IHRoZW4KCSAg ICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGxpbmtsaWI9IiRvbGRfbGlicmFyeSIKCSAgICBj b21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGRpci8kbGlua2xpYiIKCSAgICBmaW5h bGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkZGlyLyRsaW5rbGliIgoJICBlbHNlCgkg ICAgY2FzZSAiJGNvbXBpbGVfY29tbWFuZCAiIGluCgkgICAgKiIgLUwkZGlyICIqKSA7OwoJICAg ICopIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAtTCRkaXIiOzsKCSAgICBlc2Fj CgkgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIC1sJG5hbWUiCgkgICAgY2Fz ZSAiJGZpbmFsaXplX2NvbW1hbmQgIiBpbgoJICAgICoiIC1MJGRpciAiKikgOzsKCSAgICAqKSBm aW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAtTCRkaXIiOzsKCSAgICBlc2FjCgkg ICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgLWwkbmFtZSIKCSAgZmkKCWZp CgoJIyBBZGQgaW4gYW55IGxpYnJhcmllcyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgdXBvbi4KCWNv bXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCRkZXBlbmRlbmN5X2xpYnMiCglmaW5hbGl6 ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCRkZXBlbmRlbmN5X2xpYnMiCgljb250aW51ZQoJ OzsKCiAgICAgICMgU29tZSBvdGhlciBjb21waWxlciBhcmd1bWVudC4KICAgICAgKikKCSMgVW5r bm93biBhcmd1bWVudHMgaW4gYm90aCBmaW5hbGl6ZV9jb21tYW5kIGFuZCBjb21waWxlX2NvbW1h bmQgbmVlZAoJIyB0byBiZSBhZXN0aGV0aWNhbGx5IHF1b3RlZCBiZWNhdXNlIHRoZXkgYXJlIGV2 YWxlZCBsYXRlci4KCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1 YnN0ImAKCWNhc2UgIiRhcmciIGluCgkqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wn XCBcCV0qfCpdKikKCSAgYXJnPSJcIiRhcmdcIiIKCSAgOzsKCWVzYWMKCTs7CiAgICAgIGVzYWMK CiAgICAgICMgTm93IGFjdHVhbGx5IHN1YnN0aXR1dGUgdGhlIGFyZ3VtZW50IGludG8gdGhlIGNv bW1hbmRzLgogICAgICBpZiB0ZXN0IC1uICIkYXJnIjsgdGhlbgoJY29tcGlsZV9jb21tYW5kPSIk Y29tcGlsZV9jb21tYW5kICRhcmciCglmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFu ZCAkYXJnIgogICAgICBmaQogICAgZG9uZQoKICAgIGlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgog ICAgICAkZWNobyAiJG1vZGVuYW1lOiB0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFu IGFyZ3VtZW50IiAxPiYyCiAgICAgICRlY2hvICIkaGVscCIgMT4mMgogICAgICBleGl0IDEKICAg IGZpCgogICAgaWYgdGVzdCAiJGV4cG9ydF9keW5hbWljIiA9IHllcyAmJiB0ZXN0IC1uICIkZXhw b3J0X2R5bmFtaWNfZmxhZ19zcGVjIjsgdGhlbgogICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHlu YW1pY19mbGFnX3NwZWNcIgogICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQg JGFyZyIKICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKICAg IGZpCgogICAgb2xkbGlicz0KICAgICMgY2FsY3VsYXRlIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB3 aXRob3V0IGl0cyBkaXJlY3RvcnkKICAgIG91dHB1dG5hbWU9YCRlY2hvICJYJG91dHB1dCIgfCAk WHNlZCAtZSAncyVeLiovJSUnYAogICAgbGlib2Jqc19zYXZlPSIkbGlib2JqcyIKCiAgICBjYXNl ICIkb3V0cHV0IiBpbgogICAgIiIpCiAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNw ZWNpZnkgYW4gb3V0cHV0IGZpbGUiIDE+JjIKICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCiAgICAg IGV4aXQgMQogICAgICA7OwoKICAgICouYSB8ICoubGliKQogICAgICBpZiB0ZXN0IC1uICIkbGlu a19hZ2FpbnN0X2xpYnRvb2xfbGlicyI7IHRoZW4KCSRlY2hvICIkbW9kZW5hbWU6IGVycm9yOiBj YW5ub3QgbGluayBsaWJ0b29sIGxpYnJhcmllcyBpbnRvIGFyY2hpdmVzIiAxPiYyCglleGl0IDEK ICAgICAgZmkKCiAgICAgIGlmIHRlc3QgLW4gIiRkZXBsaWJzIjsgdGhlbgoJJGVjaG8gIiRtb2Rl bmFtZTogd2FybmluZzogXGAtbCcgYW5kIFxgLUwnIGFyZSBpZ25vcmVkIGZvciBhcmNoaXZlcyIg MT4mMgogICAgICBmaQoKICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwg dGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxg LWRsb3BlbicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKICAgICAgZmkKCiAgICAgIGlm IHRlc3QgLW4gIiRycGF0aCI7IHRoZW4KCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXJw YXRoJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIgMT4mMgogICAgICBmaQoKICAgICAgaWYgdGVz dCAtbiAiJHhycGF0aCI7IHRoZW4KCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLVInIGlz IGlnbm9yZWQgZm9yIGFyY2hpdmVzIiAxPiYyCiAgICAgIGZpCgogICAgICBpZiB0ZXN0IC1uICIk dmluZm8iOyB0aGVuCgkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC12ZXJzaW9uLWluZm8n IGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIiAxPiYyCiAgICAgIGZpCgogICAgICBpZiB0ZXN0IC1u ICIkcmVsZWFzZSI7IHRoZW4KCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXJlbGVhc2Un IGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIiAxPiYyCiAgICAgIGZpCgogICAgICBpZiB0ZXN0IC1u ICIkZXhwb3J0X3N5bWJvbHMiIHx8IHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRo ZW4KCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWV4cG9ydC1zeW1ib2xzJyBpcyBpZ25v cmVkIGZvciBhcmNoaXZlcyIgMT4mMgogICAgICBmaQoKICAgICAgIyBOb3cgc2V0IHRoZSB2YXJp YWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgIGJ1aWxkX2xpYnRvb2xfbGli cz1ubwogICAgICBvbGRsaWJzPSIkb3V0cHV0IgogICAgICA7OwoKICAgICoubGEpCiAgICAgICMg TWFrZSBzdXJlIHdlIG9ubHkgZ2VuZXJhdGUgbGlicmFyaWVzIG9mIHRoZSBmb3JtIGBsaWJOQU1F LmxhJy4KICAgICAgY2FzZSAiJG91dHB1dG5hbWUiIGluCiAgICAgIGxpYiopCgluYW1lPWAkZWNo byAiWCRvdXRwdXRuYW1lIiB8ICRYc2VkIC1lICdzL1wubGEkLy8nIC1lICdzL15saWIvLydgCgll dmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKCTs7CiAgICAgICopCglpZiB0ZXN0ICIkbW9k dWxlIiA9IG5vOyB0aGVuCgkgICRlY2hvICIkbW9kZW5hbWU6IGxpYnRvb2wgbGlicmFyeSBcYCRv dXRwdXQnIG11c3QgYmVnaW4gd2l0aCBcYGxpYiciIDE+JjIKCSAgJGVjaG8gIiRoZWxwIiAxPiYy CgkgIGV4aXQgMQoJZmkKCWlmIHRlc3QgIiRuZWVkX2xpYl9wcmVmaXgiICE9IG5vOyB0aGVuCgkg ICMgQWRkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXMgaWYgcmVxdWlyZWQKCSAgbmFtZT1g JGVjaG8gIlgkb3V0cHV0bmFtZSIgfCAkWHNlZCAtZSAncy9cLmxhJC8vJ2AKCSAgZXZhbCBsaWJu YW1lPVwiJGxpYm5hbWVfc3BlY1wiCgllbHNlCgkgIGxpYm5hbWU9YCRlY2hvICJYJG91dHB1dG5h bWUiIHwgJFhzZWQgLWUgJ3MvXC5sYSQvLydgCglmaQoJOzsKICAgICAgZXNhYwoKICAgICAgb3V0 cHV0X29iamRpcj1gJGVjaG8gIlgkb3V0cHV0IiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCiAg ICAgIGlmIHRlc3QgIlgkb3V0cHV0X29iamRpciIgPSAiWCRvdXRwdXQiOyB0aGVuCglvdXRwdXRf b2JqZGlyPSIkb2JqZGlyIgogICAgICBlbHNlCglvdXRwdXRfb2JqZGlyPSIkb3V0cHV0X29iamRp ci8kb2JqZGlyIgogICAgICBmaQoKICAgICAgaWYgdGVzdCAtbiAiJG9ianMiOyB0aGVuCgkkZWNo byAiJG1vZGVuYW1lOiBjYW5ub3QgYnVpbGQgbGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgZnJv bSBub24tbGlidG9vbCBvYmplY3RzOiRvYmpzIiAyPiYxCglleGl0IDEKICAgICAgZmkKCiAgICAg IGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5v OyB0aGVuCgkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1kbG9wZW4nIGlzIGlnbm9yZWQg Zm9yIGxpYnRvb2wgbGlicmFyaWVzIiAxPiYyCiAgICAgIGZpCgogICAgICBzZXQgZHVtbXkgJHJw YXRoCiAgICAgIGlmIHRlc3QgJCMgLWd0IDI7IHRoZW4KCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5p bmc6IGlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IiAx PiYyCiAgICAgIGZpCiAgICAgIGluc3RhbGxfbGliZGlyPSIkMiIKCiAgICAgIG9sZGxpYnM9CiAg ICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KCWlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xp YnMiID0geWVzOyB0aGVuCgkgICMgQnVpbGRpbmcgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJh cnkuCgkgIGxpYmV4dD1hbAoJICBvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGli ZXh0ICRvbGRsaWJzIgoJICBidWlsZF9saWJ0b29sX2xpYnM9Y29udmVuaWVuY2UKCSAgYnVpbGRf b2xkX2xpYnM9eWVzCglmaQoJZGVwZW5kZW5jeV9saWJzPSIkZGVwbGlicyIKCglpZiB0ZXN0IC1u ICIkdmluZm8iOyB0aGVuCgkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXZlcnNpb24t aW5mbycgaXMgaWdub3JlZCBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzIiAxPiYyCglmaQoKCWlm IHRlc3QgLW4gIiRyZWxlYXNlIjsgdGhlbgoJICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBc YC1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMiIDE+JjIKCWZp CiAgICAgIGVsc2UKCgkjIFBhcnNlIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFyZ3VtZW50LgoJ SUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0iJElGUyI7IElGUz0nOicKCXNldCBkdW1teSAkdmlu Zm8gMCAwIDAKCUlGUz0iJHNhdmVfaWZzIgoKCWlmIHRlc3QgLW4gIiQ4IjsgdGhlbgoJICAkZWNo byAiJG1vZGVuYW1lOiB0b28gbWFueSBwYXJhbWV0ZXJzIHRvIFxgLXZlcnNpb24taW5mbyciIDE+ JjIKCSAgJGVjaG8gIiRoZWxwIiAxPiYyCgkgIGV4aXQgMQoJZmkKCgljdXJyZW50PSIkMiIKCXJl dmlzaW9uPSIkMyIKCWFnZT0iJDQiCgoJIyBDaGVjayB0aGF0IGVhY2ggb2YgdGhlIHRoaW5ncyBh cmUgdmFsaWQgbnVtYmVycy4KCWNhc2UgIiRjdXJyZW50IiBpbgoJMCB8IFsxLTldIHwgWzEtOV1b MC05XSopIDs7CgkqKQoJICAkZWNobyAiJG1vZGVuYW1lOiBDVVJSRU5UIFxgJGN1cnJlbnQnIGlz IG5vdCBhIG5vbm5lZ2F0aXZlIGludGVnZXIiIDE+JjIKCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAk dmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIiAxPiYyCgkgIGV4aXQgMQoJ ICA7OwoJZXNhYwoKCWNhc2UgIiRyZXZpc2lvbiIgaW4KCTAgfCBbMS05XSB8IFsxLTldWzAtOV0q KSA7OwoJKikKCSAgJGVjaG8gIiRtb2RlbmFtZTogUkVWSVNJT04gXGAkcmV2aXNpb24nIGlzIG5v dCBhIG5vbm5lZ2F0aXZlIGludGVnZXIiIDE+JjIKCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkdmlu Zm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIiAxPiYyCgkgIGV4aXQgMQoJICA7 OwoJZXNhYwoKCWNhc2UgIiRhZ2UiIGluCgkwIHwgWzEtOV0gfCBbMS05XVswLTldKikgOzsKCSop CgkgICRlY2hvICIkbW9kZW5hbWU6IEFHRSBcYCRhZ2UnIGlzIG5vdCBhIG5vbm5lZ2F0aXZlIGlu dGVnZXIiIDE+JjIKCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2 ZXJzaW9uIGluZm9ybWF0aW9uIiAxPiYyCgkgIGV4aXQgMQoJICA7OwoJZXNhYwoKCWlmIHRlc3Qg JGFnZSAtZ3QgJGN1cnJlbnQ7IHRoZW4KCSAgJGVjaG8gIiRtb2RlbmFtZTogQUdFIFxgJGFnZScg aXMgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGludGVyZmFjZSBudW1iZXIgXGAkY3VycmVudCci IDE+JjIKCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9u IGluZm9ybWF0aW9uIiAxPiYyCgkgIGV4aXQgMQoJZmkKCgkjIENhbGN1bGF0ZSB0aGUgdmVyc2lv biB2YXJpYWJsZXMuCgltYWpvcj0KCXZlcnN1ZmZpeD0KCXZlcnN0cmluZz0KCWNhc2UgIiR2ZXJz aW9uX3R5cGUiIGluCglub25lKSA7OwoKCWlyaXgpCgkgIG1ham9yPWBleHByICRjdXJyZW50IC0g JGFnZSArIDFgCgkgIHZlcnN1ZmZpeD0iJG1ham9yLiRyZXZpc2lvbiIKCSAgdmVyc3RyaW5nPSJz Z2kkbWFqb3IuJHJldmlzaW9uIgoKCSAgIyBBZGQgaW4gYWxsIHRoZSBpbnRlcmZhY2VzIHRoYXQg d2UgYXJlIGNvbXBhdGlibGUgd2l0aC4KCSAgbG9vcD0kcmV2aXNpb24KCSAgd2hpbGUgdGVzdCAk bG9vcCAhPSAwOyBkbwoJICAgIGlmYWNlPWBleHByICRyZXZpc2lvbiAtICRsb29wYAoJICAgIGxv b3A9YGV4cHIgJGxvb3AgLSAxYAoJICAgIHZlcnN0cmluZz0ic2dpJG1ham9yLiRpZmFjZTokdmVy c3RyaW5nIgoJICBkb25lCgkgIDs7CgoJbGludXgpCgkgIG1ham9yPS5gZXhwciAkY3VycmVudCAt ICRhZ2VgCgkgIHZlcnN1ZmZpeD0iJG1ham9yLiRhZ2UuJHJldmlzaW9uIgoJICA7OwoKCW9zZikK CSAgbWFqb3I9YGV4cHIgJGN1cnJlbnQgLSAkYWdlYAoJICB2ZXJzdWZmaXg9Ii4kY3VycmVudC4k YWdlLiRyZXZpc2lvbiIKCSAgdmVyc3RyaW5nPSIkY3VycmVudC4kYWdlLiRyZXZpc2lvbiIKCgkg ICMgQWRkIGluIGFsbCB0aGUgaW50ZXJmYWNlcyB0aGF0IHdlIGFyZSBjb21wYXRpYmxlIHdpdGgu CgkgIGxvb3A9JGFnZQoJICB3aGlsZSB0ZXN0ICRsb29wICE9IDA7IGRvCgkgICAgaWZhY2U9YGV4 cHIgJGN1cnJlbnQgLSAkbG9vcGAKCSAgICBsb29wPWBleHByICRsb29wIC0gMWAKCSAgICB2ZXJz dHJpbmc9IiR2ZXJzdHJpbmc6JHtpZmFjZX0uMCIKCSAgZG9uZQoKCSAgIyBNYWtlIGV4ZWN1dGFi bGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgoJICB2ZXJzdHJpbmc9IiR2ZXJzdHJp bmc6JHtjdXJyZW50fS4wIgoJICA7OwoKCXN1bm9zKQoJICBtYWpvcj0iLiRjdXJyZW50IgoJICB2 ZXJzdWZmaXg9Ii4kY3VycmVudC4kcmV2aXNpb24iCgkgIDs7CgoJZnJlZWJzZC1hb3V0KQoJICBt YWpvcj0iLiRjdXJyZW50IgoJICB2ZXJzdWZmaXg9Ii4kY3VycmVudC4kcmV2aXNpb24iOwoJICA7 OwoKCWZyZWVic2QtZWxmKQoJICBtYWpvcj0iLiRjdXJyZW50IgoJICB2ZXJzdWZmaXg9Ii4kY3Vy cmVudCI7CgkgIDs7CgoJd2luZG93cykKCSAgIyBMaWtlIExpbnV4LCBidXQgd2l0aCAnLScgcmF0 aGVyIHRoYW4gJy4nLCBzaW5jZSB3ZSBvbmx5CgkgICMgd2FudCBvbmUgZXh0ZW5zaW9uIG9uIFdp bmRvd3MgOTUuCgkgIG1ham9yPWBleHByICRjdXJyZW50IC0gJGFnZWAKCSAgdmVyc3VmZml4PSIt JG1ham9yLSRhZ2UtJHJldmlzaW9uIgoJICA7OwoKCSopCgkgICRlY2hvICIkbW9kZW5hbWU6IHVu a25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgXGAkdmVyc2lvbl90eXBlJyIgMT4mMgoJICBlY2hv ICJGYXRhbCBjb25maWd1cmF0aW9uIGVycm9yLiAgU2VlIHRoZSAkUEFDS0FHRSBkb2NzIGZvciBt b3JlIGluZm9ybWF0aW9uLiIgMT4mMgoJICBleGl0IDEKCSAgOzsKCWVzYWMKCgkjIENsZWFyIHRo ZSB2ZXJzaW9uIGluZm8gaWYgd2UgZGVmYXVsdGVkLCBhbmQgdGhleSBzcGVjaWZpZWQgYSByZWxl YXNlLgoJaWYgdGVzdCAteiAiJHZpbmZvIiAmJiB0ZXN0IC1uICIkcmVsZWFzZSI7IHRoZW4KCSAg bWFqb3I9CgkgIHZlcnN0cmluZz0iMC4wIgoJICBpZiB0ZXN0ICIkbmVlZF92ZXJzaW9uIiA9IG5v OyB0aGVuCgkgICAgdmVyc3VmZml4PQoJICBlbHNlCgkgICAgdmVyc3VmZml4PSIuMC4wIgoJICBm aQoJZmkKCgkjIFJlbW92ZSB2ZXJzaW9uIGluZm8gZnJvbSBuYW1lIGlmIHZlcnNpb25pbmcgc2hv dWxkIGJlIGF2b2lkZWQKCWlmIHRlc3QgIiRhdm9pZF92ZXJzaW9uIiA9IHllcyAmJiB0ZXN0ICIk bmVlZF92ZXJzaW9uIiA9IG5vOyB0aGVuCgkgIG1ham9yPQoJICB2ZXJzdWZmaXg9CgkgIHZlcnN0 cmluZz0iIgoJZmkKCQoJIyBDaGVjayB0byBzZWUgaWYgdGhlIGFyY2hpdmUgd2lsbCBoYXZlIHVu ZGVmaW5lZCBzeW1ib2xzLgoJaWYgdGVzdCAiJGFsbG93X3VuZGVmaW5lZCIgPSB5ZXM7IHRoZW4K CSAgaWYgdGVzdCAiJGFsbG93X3VuZGVmaW5lZF9mbGFnIiA9IHVuc3VwcG9ydGVkOyB0aGVuCgkg ICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogdW5kZWZpbmVkIHN5bWJvbHMgbm90IGFsbG93 ZWQgaW4gJGhvc3Qgc2hhcmVkIGxpYnJhcmllcyIgMT4mMgoJICAgIGJ1aWxkX2xpYnRvb2xfbGli cz1ubwoJICAgIGJ1aWxkX29sZF9saWJzPXllcwoJICBmaQoJZWxzZQoJICAjIERvbid0IGFsbG93 IHVuZGVmaW5lZCBzeW1ib2xzLgoJICBhbGxvd191bmRlZmluZWRfZmxhZz0iJG5vX3VuZGVmaW5l ZF9mbGFnIgoJZmkKCglkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWJzIgoJY2FzZSAiJGhvc3QiIGlu CgkqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotb3MyKiB8ICotKi1iZW9zKikKCSAgIyB0 aGVzZSBzeXN0ZW1zIGRvbid0IGFjdHVhbGx5IGhhdmUgYSBjIGxpYnJhcnkgKGFzIHN1Y2gpIQoJ ICA7OwogICAgICAgICotKi1yaGFwc29keSopCgkgICMgcmhhcHNvZHkgaXMgYSBsaXR0bGUgb2Rk Li4uCgkgIGRlcGxpYnM9IiRkZXBsaWJzIC1mcmFtZXdvcmsgU3lzdGVtIgoJICA7OwoJKi0qLWZy ZWVic2QqKQoJICAjIEZyZWVCU0QgZG9lc24ndCBuZWVkIHRoaXMuLi4KCSAgOzsKCSopCgkgICMg QWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcy4KCSAgZGVwbGlicz0iJGRl cGxpYnMgLWxjIgoJICA7OwoJZXNhYwogICAgICBmaQoKICAgICAgaWYgdGVzdCAtbiAiJHJwYXRo JHhycGF0aCI7IHRoZW4KCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywg dGhlbiBhZGQgdGhlbS4KCWZvciBsaWJkaXIgaW4gJHJwYXRoICR4cnBhdGg7IGRvCgkgICMgVGhp cyBpcyB0aGUgbWFnaWMgdG8gdXNlIC1ycGF0aC4KCSAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBp bgoJICAqIiAkbGliZGlyICIqKSA7OwoJICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0 aCAkbGliZGlyIiA7OwoJICBlc2FjCgkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCgkgICoi ICRsaWJkaXIgIiopIDs7CgkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxp YmRpciIgOzsKCSAgZXNhYwoJZG9uZQogICAgICBmaQoKICAgICAgIyBOb3cgaGFyZGNvZGUgdGhl IGxpYnJhcnkgcGF0aHMKICAgICAgcnBhdGg9CiAgICAgIGhhcmRjb2RlX2xpYmRpcnM9CiAgICAg IGZvciBsaWJkaXIgaW4gJGNvbXBpbGVfcnBhdGg7IGRvCglpZiB0ZXN0IC1uICIkaGFyZGNvZGVf bGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9z ZXBhcmF0b3IiOyB0aGVuCgkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVu CgkgICAgICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgoJICAgIGVsc2UKCSAgICAgICMgSnVz dCBhY2N1bXVsYXRlIHRoZSB1bmlxdWUgbGliZGlycy4KCSAgICAgIGNhc2UgIiRoYXJkY29kZV9s aWJkaXJfc2VwYXJhdG9yJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRv ciIgaW4KCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2Rl X2xpYmRpcl9zZXBhcmF0b3IiKikKCQk7OwoJICAgICAgKikKCQloYXJkY29kZV9saWJkaXJzPSIk aGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKCQk7OwoJ ICAgICAgZXNhYwoJICAgIGZpCgkgIGVsc2UKCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGli ZGlyX2ZsYWdfc3BlY1wiCgkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKCSAgZmkKCWVsaWYgdGVz dCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgoJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCgkgICoi ICRsaWJkaXIgIiopIDs7CgkgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7 CgkgIGVzYWMKCWZpCiAgICAgIGRvbmUKICAgICAgIyBTdWJzdGl0dXRlIHRoZSBoYXJkY29kZWQg bGliZGlycyBpbnRvIHRoZSBycGF0aC4KICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRp cl9zZXBhcmF0b3IiICYmCgkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCglsaWJk aXI9IiRoYXJkY29kZV9saWJkaXJzIgoJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2Zs YWdfc3BlY1wiCiAgICAgIGZpCiAgICAgIGNvbXBpbGVfcnBhdGg9IiRycGF0aCIKCiAgICAgIHJw YXRoPQogICAgICBoYXJkY29kZV9saWJkaXJzPQogICAgICBmb3IgbGliZGlyIGluICRmaW5hbGl6 ZV9ycGF0aDsgZG8KCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhl bgoJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KCSAgICBp ZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KCSAgICAgIGhhcmRjb2RlX2xpYmRp cnM9IiRsaWJkaXIiCgkgICAgZWxzZQoJICAgICAgIyBKdXN0IGFjY3VtdWxhdGUgdGhlIHVuaXF1 ZSBsaWJkaXJzLgoJICAgICAgY2FzZSAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkaGFyZGNv ZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiBpbgoJICAgICAgKiIkaGFyZGNv ZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQoJ CTs7CgkgICAgICAqKQoJCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRj b2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgoJCTs7CgkgICAgICBlc2FjCgkgICAgZmkKCSAg ZWxzZQoJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKCSAgICBy cGF0aD0iJHJwYXRoICRmbGFnIgoJICBmaQoJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0 aGVuCgkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KCSAgKiIgJGxpYmRpciAiKikg OzsKCSAgKikgZmluYWxpemVfcGVybV9ycGF0aD0iJGZpbmFsaXplX3Blcm1fcnBhdGggJGxpYmRp ciIgOzsKCSAgZXNhYwoJZmkKICAgICAgZG9uZQogICAgICAjIFN1YnN0aXR1dGUgdGhlIGhhcmRj b2RlZCBsaWJkaXJzIGludG8gdGhlIHJwYXRoLgogICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVf bGliZGlyX3NlcGFyYXRvciIgJiYKCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4K CWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCglldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJk aXJfZmxhZ19zcGVjXCIKICAgICAgZmkKICAgICAgZmluYWxpemVfcnBhdGg9IiRycGF0aCIKCiAg ICAgICMgQ3JlYXRlIHRoZSBvdXRwdXQgZGlyZWN0b3J5LCBvciByZW1vdmUgb3VyIG91dHB1dHMg aWYgd2UgbmVlZCB0by4KICAgICAgaWYgdGVzdCAtZCAkb3V0cHV0X29iamRpcjsgdGhlbgoJJHNo b3cgIiR7cm19ciAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSAkb3V0cHV0X29iamRpci8kbGli bmFtZS4qICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0ke3JlbGVhc2V9LioiCgkkcnVuICR7cm19 ciAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSAkb3V0cHV0X29iamRpci8kbGlibmFtZS4qICRv dXRwdXRfb2JqZGlyLyR7bGlibmFtZX0ke3JlbGVhc2V9LioKICAgICAgZWxzZQoJJHNob3cgIiRt a2RpciAkb3V0cHV0X29iamRpciIKCSRydW4gJG1rZGlyICRvdXRwdXRfb2JqZGlyCglzdGF0dXM9 JD8KCWlmIHRlc3QgJHN0YXR1cyAtbmUgMCAmJiB0ZXN0ICEgLWQgJG91dHB1dF9vYmpkaXI7IHRo ZW4KCSAgZXhpdCAkc3RhdHVzCglmaQogICAgICBmaQoKICAgICAgIyBOb3cgc2V0IHRoZSB2YXJp YWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgIGlmIHRlc3QgIiRidWlsZF9v bGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVu Y2UgOyB0aGVuCglpZiB0ZXN0ICIkcmVsZWFzZV9zdWZmaXgiID0gYWxsOyB0aGVuCgkgb2xkbGli cz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS4kbGliZXh0IgoJZWxz ZQoJb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKCWZp CgoJIyBUcmFuc2Zvcm0gLmxvIGZpbGVzIHRvIC5vIGZpbGVzLgoJb2xkb2Jqcz0iJG9ianMgImAk ZWNobyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JyQvZCcg LWUgIiRsbzJvIiB8ICROTDJTUGAKICAgICAgZmkKCiAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0 b29sX2xpYnMiID0geWVzOyB0aGVuCgkjIFRyYW5zZm9ybSBkZXBsaWJzIGludG8gb25seSBkZXBs aWJzIHRoYXQgY2FuIGJlIGxpbmtlZCBpbiBzaGFyZWQuCgluYW1lX3NhdmU9JG5hbWUKCWxpYm5h bWVfc2F2ZT0kbGlibmFtZQoJcmVsZWFzZV9zYXZlPSRyZWxlYXNlCgl2ZXJzdWZmaXhfc2F2ZT0k dmVyc3VmZml4CgltYWpvcl9zYXZlPSRtYWpvcgoJIyBJJ20gbm90IHN1cmUgaWYgSSdtIHRyZWF0 aW5nIHRoZSByZWxlYXNlIGNvcnJlY3RseS4gIEkgdGhpbmsKCSMgcmVsZWFzZSBzaG91bGQgc2hv dyB1cCBpbiB0aGUgLWwgKGllIC1sZ21wNSkgc28gd2UgZG9uJ3Qgd2FudCB0bwoJIyBhZGQgaXQg aW4gdHdpY2UuICBJcyB0aGF0IGNvcnJlY3Q/CglyZWxlYXNlPSIiCgl2ZXJzdWZmaXg9IiIKCW1h am9yPSIiCgluZXdkZXBsaWJzPQoJZHJvcHBlZGRlcHM9bm8KCWNhc2UgIiRkZXBsaWJzX2NoZWNr X21ldGhvZCIgaW4KCXBhc3NfYWxsKQoJICAjIERvbid0IGNoZWNrIGZvciBzaGFyZWQvc3RhdGlj LiAgRXZlcnl0aGluZyB3b3Jrcy4KCSAgIyBUaGlzIG1pZ2h0IGJlIGEgbGl0dGxlIG5haXZlLiAg V2UgbWlnaHQgd2FudCB0byBjaGVjawoJICAjIHdoZXRoZXIgdGhlIGxpYnJhcnkgZXhpc3RzIG9y IG5vdC4gIEJ1dCB0aGlzIGlzIG9uCgkgICMgb3NmMyAmIG9zZjQgYW5kIEknbSBub3QgcmVhbGx5 IHN1cmUuLi4gSnVzdAoJICAjIGltcGxlbWVudGluZyB3aGF0IHdhcyBhbHJlYWR5IHRoZSBiZWhh dmlvdXIuCgkgIG5ld2RlcGxpYnM9JGRlcGxpYnMKCSAgOzsKCXRlc3RfY29tcGlsZSkKCSAgIyBU aGlzIGNvZGUgc3RyZXNzZXMgdGhlICJsaWJyYXJpZXMgYXJlIHByb2dyYW1zIiBwYXJhZGlnbSB0 byBpdHMKCSAgIyBsaW1pdHMuIE1heWJlIGV2ZW4gYnJlYWtzIGl0LiAgV2UgY29tcGlsZSBhIHBy b2dyYW0sIGxpbmtpbmcgaXQKCSAgIyBhZ2FpbnN0IHRoZSBkZXBsaWJzIGFzIGEgcHJveHkgZm9y IHRoZSBsaWJyYXJ5LiAgVGhlbiB3ZSBjYW4gY2hlY2sKCSAgIyB3aGV0aGVyIHRoZXkgbGlua2Vk IGluIHN0YXRpY2FsbHkgb3IgZHluYW1pY2FsbHkgd2l0aCBsZGQuCgkgICRybSBjb25mdGVzdC5j CgkgIGNhdCA+IGNvbmZ0ZXN0LmMgPDxFT0YKCSAgaW50IG1haW4oKSB7IHJldHVybiAwOyB9CkVP RgoJICAkcm0gY29uZnRlc3QKCSAgJENDIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgJGRlcGxpYnMK CSAgaWYgdGVzdCAkPyAtZXEgMCA7IHRoZW4KCSAgICBsZGRfb3V0cHV0PWBsZGQgY29uZnRlc3Rg CgkgICAgZm9yIGkgaW4gJGRlcGxpYnM7IGRvCgkgICAgICBuYW1lPSJgZXhwciAkaSA6ICctbFwo LipcKSdgIgoJICAgICAgIyBJZiAkbmFtZSBpcyBlbXB0eSB3ZSBhcmUgb3BlcmF0aW5nIG9uIGEg LUwgYXJndW1lbnQuCgkgICAgICBpZiB0ZXN0ICIkbmFtZSIgIT0gIiIgOyB0aGVuCgkJbGlibmFt ZT1gZXZhbCBcXCRlY2hvIFwiJGxpYm5hbWVfc3BlY1wiYAoJCWRlcGxpYl9tYXRjaGVzPWBldmFs IFxcJGVjaG8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCJgCgkJc2V0IGR1bW15ICRkZXBsaWJfbWF0 Y2hlcwoJCWRlcGxpYl9tYXRjaD0kMgoJCWlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIu KiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJz ICRpIgoJCWVsc2UKCQkgIGRyb3BwZWRkZXBzPXllcwoJCSAgZWNobwoJCSAgZWNobyAiKioqIFdh cm5pbmc6IFRoaXMgbGlicmFyeSBuZWVkcyBzb21lIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkg JGkuIgoJCSAgZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGli cmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKCQkgIGVjaG8gIioqKiB5b3UgbGluayB0 byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCgkJ ICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBu b3QgYXBwZWFyIHRvIGhhdmUuIgoJCWZpCgkgICAgICBlbHNlCgkJbmV3ZGVwbGlicz0iJG5ld2Rl cGxpYnMgJGkiCgkgICAgICBmaQoJICAgIGRvbmUKCSAgZWxzZQoJICAgICMgRXJyb3Igb2NjdXJl ZCBpbiB0aGUgZmlyc3QgY29tcGlsZS4gIExldCdzIHRyeSB0byBzYWx2YWdlIHRoZSBzaXR1YXRp b246CgkgICAgIyBDb21waWxlIGEgc2VwZXJhdGUgcHJvZ3JhbSBmb3IgZWFjaCBsaWJyYXJ5LgoJ ICAgIGZvciBpIGluICRkZXBsaWJzOyBkbwoJICAgICAgbmFtZT0iYGV4cHIgJGkgOiAnLWxcKC4q XCknYCIKCSAgICAgIyBJZiAkbmFtZSBpcyBlbXB0eSB3ZSBhcmUgb3BlcmF0aW5nIG9uIGEgLUwg YXJndW1lbnQuCgkgICAgICBpZiB0ZXN0ICIkbmFtZSIgIT0gIiIgOyB0aGVuCgkJJHJtIGNvbmZ0 ZXN0CgkJJENDIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgJGkKCQkjIERpZCBpdCB3b3JrPwoJCWlm IHRlc3QgJD8gLWVxIDAgOyB0aGVuCgkJICBsZGRfb3V0cHV0PWBsZGQgY29uZnRlc3RgCgkJICBs aWJuYW1lPWBldmFsIFxcJGVjaG8gXCIkbGlibmFtZV9zcGVjXCJgCgkJICBkZXBsaWJfbWF0Y2hl cz1gZXZhbCBcXCRlY2hvIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiYAoJCSAgc2V0IGR1bW15ICRk ZXBsaWJfbWF0Y2hlcwoJCSAgZGVwbGliX21hdGNoPSQyCgkJICBpZiB0ZXN0IGBleHByICIkbGRk X291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCgkJICAgIG5ld2RlcGxp YnM9IiRuZXdkZXBsaWJzICRpIgoJCSAgZWxzZQoJCSAgICBkcm9wcGVkZGVwcz15ZXMKCQkgICAg ZWNobwoJCSAgICBlY2hvICIqKiogV2FybmluZzogVGhpcyBsaWJyYXJ5IG5lZWRzIHNvbWUgZnVu Y3Rpb25hbGl0eSBwcm92aWRlZCBieSAkaS4iCgkJICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNh cGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4i CgkJICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25s eSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCgkJICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBv ZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCgkJICBmaQoJ CWVsc2UKCQkgIGRyb3BwZWRkZXBzPXllcwoJCSAgZWNobwoJCSAgZWNobyAiKioqIFdhcm5pbmch ICBMaWJyYXJ5ICRpIGlzIG5lZWRlZCBieSB0aGlzIGxpYnJhcnkgYnV0IEkgd2FzIG5vdCBhYmxl IHRvIgoJCSAgZWNobyAiKioqICBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBu ZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKCQkgIGVjaG8gIioqKiBsaWJyYXJ5IHRoYXQgaXQg ZGVwZW5kcyBvbiBiZWZvcmUgdGhpcyBsaWJyYXJ5IHdpbGwgYmUgZnVsbHkiCgkJICBlY2hvICIq KiogZnVuY3Rpb25hbC4gIEluc3RhbGxpbmcgaXQgYmVmb3JlIGNvbnRpbnVpbmcgd291bGQgYmUg ZXZlbiBiZXR0ZXIuIgoJCWZpCgkgICAgICBlbHNlCgkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMg JGkiCgkgICAgICBmaQoJICAgIGRvbmUKCSAgZmkKCSAgOzsKCWZpbGVfbWFnaWMqKQoJICBzZXQg ZHVtbXkgJGRlcGxpYnNfY2hlY2tfbWV0aG9kCgkgIGZpbGVfbWFnaWNfcmVnZXg9ImBleHByIFwi JGRlcGxpYnNfY2hlY2tfbWV0aG9kXCIgOiBcIiQyIFwoLipcKVwiYCIKCSAgZm9yIGFfZGVwbGli IGluICRkZXBsaWJzOyBkbwoJICAgIG5hbWU9ImBleHByICRhX2RlcGxpYiA6ICctbFwoLipcKSdg IgoJICAgICMgSWYgJG5hbWUgaXMgZW1wdHkgd2UgYXJlIG9wZXJhdGluZyBvbiBhIC1MIGFyZ3Vt ZW50LgoJICAgIGlmIHRlc3QgIiRuYW1lIiAhPSAiIiA7IHRoZW4KCSAgICAgIGxpYm5hbWU9YGV2 YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKCSAgICAgIGZvciBpIGluICRsaWJfc2VhcmNo X3BhdGg7IGRvCgkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rl di9udWxsYAoJCSAgICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCgkJICAg ICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KCQkgICAgICBpZiBscyAtbExkICIkcG90ZW50X2xpYiIg Mj4vZGV2L251bGwgXAoJCQkgfCBncmVwICIgLT4gIiA+L2Rldi9udWxsOyB0aGVuCgkJCWNvbnRp bnVlIAoJCSAgICAgIGZpCgkJICAgICAgIyBUaGUgc3RhdGVtZW50IGFib3ZlIHRyaWVzIHRvIGF2 b2lkIGVudGVyaW5nIGFuCgkJICAgICAgIyBlbmRsZXNzIGxvb3AgYmVsb3csIGluIGNhc2Ugb2Yg Y3ljbGljIGxpbmtzLgoJCSAgICAgICMgV2UgbWlnaHQgc3RpbGwgZW50ZXIgYW4gZW5kbGVzcyBs b29wLCBzaW5jZSBhIGxpbmsKCQkgICAgICAjIGxvb3AgY2FuIGJlIGNsb3NlZCB3aGlsZSB3ZSBm b2xsb3cgbGlua3MsCgkJICAgICAgIyBidXQgc28gd2hhdD8KCQkgICAgICBwb3RsaWI9IiRwb3Rl bnRfbGliIgoJCSAgICAgIHdoaWxlIHRlc3QgLWggIiRwb3RsaWIiIDI+L2Rldi9udWxsOyBkbwoJ CQlwb3RsaWJsaW5rPWBscyAtbGQgJHBvdGxpYiB8IHNlZCAncy8uKiAtPiAvLydgCgkJCWNhc2Ug IiRwb3RsaWJsaW5rIiBpbgoJCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHBvdGxpYj0iJHBv dGxpYmxpbmsiOzsKCQkJKikgcG90bGliPWAkZWNobyAiWCRwb3RsaWIiIHwgJFhzZWQgLWUgJ3Ms W14vXSokLCwnYCIkcG90bGlibGluayI7OwoJCQllc2FjCgkJICAgICAgZG9uZQoJCSAgICAgIGlm IGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiAyPi9kZXYvbnVsbCBcCgkJCSB8IHNl ZCAxMHEgXAoJCQkgfCBlZ3JlcCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVu CgkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKCQkJYV9kZXBsaWI9IiIKCQkJ YnJlYWsgMgoJCSAgICAgIGZpCgkJICAgIGRvbmUKCSAgICAgIGRvbmUKCSAgICAgIGlmIHRlc3Qg LW4gIiRhX2RlcGxpYiIgOyB0aGVuCgkJZHJvcHBlZGRlcHM9eWVzCgkJZWNobwoJCWVjaG8gIioq KiBXYXJuaW5nOiBUaGlzIGxpYnJhcnkgbmVlZHMgc29tZSBmdW5jdGlvbmFsaXR5IHByb3ZpZGVk IGJ5ICRhX2RlcGxpYi4iCgkJZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtl IHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKCQllY2hvICIqKiogeW91 IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2 ZSBhIgoJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91 IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCgkgICAgICBmaQoJICAgIGVsc2UKCSAgICAgICMgQWRk IGEgLUwgYXJndW1lbnQuCgkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIi CgkgICAgZmkKCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KCSAgOzsKCW5vbmUg fCB1bmtub3duIHwgKikKCSAgbmV3ZGVwbGlicz0iIgoJICBpZiAkZWNobyAiWCAkZGVwbGlicyIg fCAkWHNlZCAtZSAncy8gLWxjJC8vJyBcCgkgICAgICAgLWUgJ3MvIC1bTFJdW14gXSovL2cnIC1l ICdzL1sgCV0vL2cnIHwKCSAgICAgZ3JlcCAuID4vZGV2L251bGw7IHRoZW4KCSAgICBlY2hvCgkg ICAgaWYgdGVzdCAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSAiWG5vbmUiOyB0aGVuCgkgICAg ICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBz dXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCgkgICAgZWxzZQoJICAgICAgZWNobyAiKioqIFdh cm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3Vw cG9ydGVkLiIKCSAgICBmaQoJICAgIGVjaG8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFy eSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgoJICAgIGRyb3BwZWRkZXBzPXllcwoJ ICBmaQoJICA7OwoJZXNhYwoJdmVyc3VmZml4PSR2ZXJzdWZmaXhfc2F2ZQoJbWFqb3I9JG1ham9y X3NhdmUKCXJlbGVhc2U9JHJlbGVhc2Vfc2F2ZQoJbGlibmFtZT0kbGlibmFtZV9zYXZlCgluYW1l PSRuYW1lX3NhdmUKCglpZiB0ZXN0ICIkZHJvcHBlZGRlcHMiID0geWVzOyB0aGVuCgkgIGlmIHRl c3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCgkgICAgZWNobwoJICAgIGVjaG8gIioqKiBXYXJuaW5n OiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgoJ ICAgIGVjaG8gIioqKiBkZXBlbmRlbmNpZXMgb2YgbW9kdWxlICRsaWJuYW1lLiAgVGhlcmVmb3Jl LCBsaWJ0b29sIHdpbGwgY3JlYXRlIgoJICAgIGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRo YXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIgoJICAgIGVjaG8gIioqKiBh cHBsaWNhdGlvbiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnLiIKCSAgICBpZiB0ZXN0 IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgoJICAgICAgZWNobwoJICAgICAgZWNobyAi KioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8g ZXh0cmFjdCBzeW1ib2wiCgkgICAgICBlY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVz aW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgoJICAgICAgZWNobyAi KioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5 IHVzZWxlc3MuIgoJICAgICAgZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBh IGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCgkgICAgZmkKCSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xk X2xpYnMiID0gbm87IHRoZW4KCSAgICAgIGlmIHRlc3QgIiRyZWxlYXNlX3N1ZmZpeCIgPSBhbGw7 IHRoZW4KCSAgICAgICAgb2xkbGlicz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS4k bGliZXh0IgoJICAgICAgZWxzZQoJICAgICAgb2xkbGlicz0iJG91dHB1dF9vYmpkaXIvJGxpYm5h bWUuJGxpYmV4dCIKCSAgICAgIGZpCgkgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCgkg ICAgICBidWlsZF9vbGRfbGlicz15ZXMKCSAgICBlbHNlCgkgICAgICBidWlsZF9saWJ0b29sX2xp YnM9bm8KCSAgICBmaQoJICBlbHNlCgkgICAgZWNobyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRl cGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKCSAgICBlY2hv ICIqKiogYXV0b21hdGljYWxseSBhZGRlZCB3aGVuZXZlciBhIHByb2dyYW0gaXMgbGlua2VkIHdp dGggdGhpcyBsaWJyYXJ5IgoJICAgIGVjaG8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVu IGl0LiIKCSAgZmkKCWZpCgkjIERvbmUgY2hlY2tpbmcgZGVwbGlicyEKCWRlcGxpYnM9JG5ld2Rl cGxpYnMKICAgICAgZmkKCiAgICAgICMgQWxsIHRoZSBsaWJyYXJ5LXNwZWNpZmljIHZhcmlhYmxl cyAoaW5zdGFsbF9saWJkaXIgaXMgc2V0IGFib3ZlKS4KICAgICAgbGlicmFyeV9uYW1lcz0KICAg ICAgb2xkX2xpYnJhcnk9CiAgICAgIGRsbmFtZT0KICAgICAgCiAgICAgICMgVGVzdCBhZ2Fpbiwg d2UgbWF5IGhhdmUgZGVjaWRlZCBub3QgdG8gYnVpbGQgaXQgYW55IG1vcmUKICAgICAgaWYgdGVz dCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KCSMgR2V0IHRoZSByZWFsIGFuZCBs aW5rIG5hbWVzIG9mIHRoZSBsaWJyYXJ5LgoJZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlf bmFtZXNfc3BlY1wiCglzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKCXJlYWxuYW1lPSIkMiIKCXNo aWZ0OyBzaGlmdAoKCWlmIHRlc3QgLW4gIiRzb25hbWVfc3BlYyI7IHRoZW4KCSAgZXZhbCBzb25h bWU9XCIkc29uYW1lX3NwZWNcIgoJZWxzZQoJICBzb25hbWU9IiRyZWFsbmFtZSIKCWZpCgoJbGli PSIkb3V0cHV0X29iamRpci8kcmVhbG5hbWUiCglmb3IgbGluawoJZG8KCSAgbGlua25hbWVzPSIk bGlua25hbWVzICRsaW5rIgoJZG9uZQoKCSMgRW5zdXJlIHRoYXQgd2UgaGF2ZSAubyBvYmplY3Rz IGZvciBsaW5rZXJzIHdoaWNoIGRpc2xpa2UgLmxvCgkjIChlLmcuIGFpeCkgaW4gY2FzZSB3ZSBh cmUgcnVubmluZyAtLWRpc2FibGUtc3RhdGljCglmb3Igb2JqIGluICRsaWJvYmpzOyBkbwoJICB4 ZGlyPWAkZWNobyAiWCRvYmoiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKCSAgaWYgdGVzdCAi WCR4ZGlyIiA9ICJYJG9iaiI7IHRoZW4KCSAgICB4ZGlyPSIuIgoJICBlbHNlCgkgICAgeGRpcj0i JHhkaXIiCgkgIGZpCgkgIGJhc2VvYmo9YCRlY2hvICJYJG9iaiIgfCAkWHNlZCAtZSAncyVeLiov JSUnYAoJICBvbGRvYmo9YCRlY2hvICJYJGJhc2VvYmoiIHwgJFhzZWQgLWUgIiRsbzJvImAKCSAg aWYgdGVzdCAhIC1mICR4ZGlyLyRvbGRvYmo7IHRoZW4KCSAgICAkc2hvdyAiKGNkICR4ZGlyICYm ICR7TE5fU30gJGJhc2VvYmogJG9sZG9iaikiCgkgICAgJHJ1biBldmFsICcoY2QgJHhkaXIgJiYg JHtMTl9TfSAkYmFzZW9iaiAkb2xkb2JqKScgfHwgZXhpdCAkPwoJICBmaQoJZG9uZQoKCSMgVXNl IHN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgcGljCgl0ZXN0IC16ICIkcGljX2ZsYWciICYm IGxpYm9ianM9YCRlY2hvICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8 ICROTDJTUGAKCgkjIFByZXBhcmUgdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scwoJaWYgdGVz dCAteiAiJGV4cG9ydF9zeW1ib2xzIjsgdGhlbgoJICBpZiB0ZXN0ICIkYWx3YXlzX2V4cG9ydF9z eW1ib2xzIiA9IHllcyB8fCB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCgkg ICAgJHNob3cgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgoJICAg IGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAiCgkgICAgJHJ1biAk cm0gJGV4cG9ydF9zeW1ib2xzCgkgICAgZXZhbCBjbWRzPVwiJGV4cG9ydF9zeW1ib2xzX2NtZHNc IgoJICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCgkgICAgZm9y IGNtZCBpbiAkY21kczsgZG8KCSAgICAgIElGUz0iJHNhdmVfaWZzIgoJICAgICAgJHNob3cgIiRj bWQiCgkgICAgICAkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KCSAgICBkb25lCgkgICAgSUZT PSIkc2F2ZV9pZnMiCgkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhl bgoJICAgICAgJHNob3cgImVncmVwIC1lIFwiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4XCIgXCIkZXhw b3J0X3N5bWJvbHNcIiA+IFwiJHtleHBvcnRfc3ltYm9sc31UXCIiCgkgICAgICAkcnVuIGV2YWwg J2VncmVwIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkZXhwb3J0X3N5bWJvbHMiID4gIiR7 ZXhwb3J0X3N5bWJvbHN9VCInCgkgICAgICAkc2hvdyAiJG12IFwiJHtleHBvcnRfc3ltYm9sc31U XCIgXCIkZXhwb3J0X3N5bWJvbHNcIiIKCSAgICAgICRydW4gZXZhbCAnJG12ICIke2V4cG9ydF9z eW1ib2xzfVQiICIkZXhwb3J0X3N5bWJvbHMiJwoJICAgIGZpCgkgIGZpCglmaQoKCWlmIHRlc3Qg LW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4K CSAgJHJ1biBldmFsICckZWNobyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkZXhw b3J0X3N5bWJvbHMiJwoJZmkKCglpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCgkgIGlm IHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KCSAgICBldmFsIGxpYm9i anM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKCSAgZWxzZQoJICAgIGdl bnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCgkgICAgJHNob3cgIiR7cm19ciAk Z2VudG9wIgoJICAgICRydW4gJHtybX1yICIkZ2VudG9wIgoJICAgICRzaG93ICJta2RpciAkZ2Vu dG9wIgoJICAgICRydW4gbWtkaXIgIiRnZW50b3AiCgkgICAgc3RhdHVzPSQ/CgkgICAgaWYgdGVz dCAkc3RhdHVzIC1uZSAwICYmIHRlc3QgISAtZCAiJGdlbnRvcCI7IHRoZW4KCSAgICAgIGV4aXQg JHN0YXR1cwoJICAgIGZpCgkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCgoJICAg IGZvciB4bGliIGluICRjb252ZW5pZW5jZTsgZG8KCSAgICAgICMgRXh0cmFjdCB0aGUgb2JqZWN0 cy4KCSAgICAgIGNhc2UgIiR4bGliIiBpbgoJICAgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10q KSB4YWJzPSIkeGxpYiIgOzsKCSAgICAgICopIHhhYnM9YHB3ZGAiLyR4bGliIiA7OwoJICAgICAg ZXNhYwoJICAgICAgeGxpYj1gJGVjaG8gIlgkeGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAoJ ICAgICAgeGRpcj0iJGdlbnRvcC8keGxpYiIKCgkgICAgICAkc2hvdyAiJHtybX1yICR4ZGlyIgoJ ICAgICAgJHJ1biAke3JtfXIgIiR4ZGlyIgoJICAgICAgJHNob3cgIm1rZGlyICR4ZGlyIgoJICAg ICAgJHJ1biBta2RpciAiJHhkaXIiCgkgICAgICBzdGF0dXM9JD8KCSAgICAgIGlmIHRlc3QgJHN0 YXR1cyAtbmUgMCAmJiB0ZXN0ICEgLWQgIiR4ZGlyIjsgdGhlbgoJCWV4aXQgJHN0YXR1cwoJICAg ICAgZmkKCSAgICAgICRzaG93ICIoY2QgJHhkaXIgJiYgJEFSIHggJHhhYnMpIgoJICAgICAgJHJ1 biBldmFsICIoY2QgXCR4ZGlyICYmICRBUiB4IFwkeGFicykiIHx8IGV4aXQgJD8KCgkgICAgICBs aWJvYmpzPSIkbGlib2JqcyAiYGZpbmQgJHhkaXIgLW5hbWUgXCoubyAtcHJpbnQgLW8gLW5hbWUg XCoubG8gLXByaW50IHwgJE5MMlNQYAoJICAgIGRvbmUKCSAgZmkKCWZpCgoJaWYgdGVzdCAiJHRo cmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhl bgoJICBldmFsIGZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIKCSAgbGlua29wdHM9IiRs aW5rb3B0cyAkZmxhZyIKCWZpCgoJIyBEbyBlYWNoIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgoJ aWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkYXJjaGl2ZV9leHBzeW1f Y21kcyI7IHRoZW4KCSAgZXZhbCBjbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIgoJZWxzZQoJ ICBldmFsIGNtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKCWZpCglJRlM9IiR7SUZTPSAJfSI7IHNhdmVf aWZzPSIkSUZTIjsgSUZTPSd+JwoJZm9yIGNtZCBpbiAkY21kczsgZG8KCSAgSUZTPSIkc2F2ZV9p ZnMiCgkgICRzaG93ICIkY21kIgoJICAkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KCWRvbmUK CUlGUz0iJHNhdmVfaWZzIgoKCSMgQ3JlYXRlIGxpbmtzIHRvIHRoZSByZWFsIGxpYnJhcnkuCglm b3IgbGlua25hbWUgaW4gJGxpbmtuYW1lczsgZG8KCSAgaWYgdGVzdCAiJHJlYWxuYW1lIiAhPSAi JGxpbmtuYW1lIjsgdGhlbgoJICAgICRzaG93ICIoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICRs aW5rbmFtZSAmJiAkTE5fUyAkcmVhbG5hbWUgJGxpbmtuYW1lKSIKCSAgICAkcnVuIGV2YWwgJyhj ZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJGxpbmtuYW1lICYmICRMTl9TICRyZWFsbmFtZSAkbGlu a25hbWUpJyB8fCBleGl0ICQ/CgkgIGZpCglkb25lCgoJIyBJZiAtbW9kdWxlIG9yIC1leHBvcnQt ZHluYW1pYyB3YXMgc3BlY2lmaWVkLCBzZXQgdGhlIGRsbmFtZS4KCWlmIHRlc3QgIiRtb2R1bGUi ID0geWVzIHx8IHRlc3QgIiRleHBvcnRfZHluYW1pYyIgPSB5ZXM7IHRoZW4KCSAgIyBPbiBhbGwg a25vd24gb3BlcmF0aW5nIHN5c3RlbXMsIHRoZXNlIGFyZSBpZGVudGljYWwuCgkgIGRsbmFtZT0i JHNvbmFtZSIKCWZpCiAgICAgIGZpCiAgICAgIDs7CgogICAgKi5sbyB8ICoubyB8ICoub2JqKQog ICAgICBpZiB0ZXN0IC1uICIkbGlua19hZ2FpbnN0X2xpYnRvb2xfbGlicyI7IHRoZW4KCSRlY2hv ICIkbW9kZW5hbWU6IGVycm9yOiBjYW5ub3QgbGluayBsaWJ0b29sIGxpYnJhcmllcyBpbnRvIG9i amVjdHMiIDE+JjIKCWV4aXQgMQogICAgICBmaQoKICAgICAgaWYgdGVzdCAtbiAiJGRlcGxpYnMi OyB0aGVuCgkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1sJyBhbmQgXGAtTCcgYXJlIGln bm9yZWQgZm9yIG9iamVjdHMiIDE+JjIKICAgICAgZmkKCiAgICAgIGlmIHRlc3QgLW4gIiRkbGZp bGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCgkkZWNobyAiJG1v ZGVuYW1lOiB3YXJuaW5nOiBcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIK ICAgICAgZmkKCiAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCI7IHRoZW4KCSRlY2hvICIkbW9kZW5h bWU6IHdhcm5pbmc6IFxgLXJwYXRoJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIiAxPiYyCiAgICAg IGZpCgogICAgICBpZiB0ZXN0IC1uICIkeHJwYXRoIjsgdGhlbgoJJGVjaG8gIiRtb2RlbmFtZTog d2FybmluZzogXGAtUicgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgogICAgICBmaQoKICAg ICAgaWYgdGVzdCAtbiAiJHZpbmZvIjsgdGhlbgoJJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzog XGAtdmVyc2lvbi1pbmZvJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIiAxPiYyCiAgICAgIGZpCgog ICAgICBpZiB0ZXN0IC1uICIkcmVsZWFzZSI7IHRoZW4KCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5p bmc6IFxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIKICAgICAgZmkKCiAg ICAgIGNhc2UgIiRvdXRwdXQiIGluCiAgICAgICoubG8pCglpZiB0ZXN0IC1uICIkb2JqcyI7IHRo ZW4KCSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGJ1aWxkIGxpYnJhcnkgb2JqZWN0IFxgJG91 dHB1dCcgZnJvbSBub24tbGlidG9vbCBvYmplY3RzIiAxPiYyCgkgIGV4aXQgMQoJZmkKCWxpYm9i aj0iJG91dHB1dCIKCW9iaj1gJGVjaG8gIlgkb3V0cHV0IiB8ICRYc2VkIC1lICIkbG8ybyJgCgk7 OwogICAgICAqKQoJbGlib2JqPQoJb2JqPSIkb3V0cHV0IgoJOzsKICAgICAgZXNhYwoKICAgICAg IyBEZWxldGUgdGhlIG9sZCBvYmplY3RzLgogICAgICAkcnVuICRybSAkb2JqICRsaWJvYmoKCiAg ICAgICMgT2JqZWN0cyBmcm9tIGNvbnZlbmllbmNlIGxpYnJhcmllcy4gIFRoaXMgYXNzdW1lcwog ICAgICAjIHNpbmdsZS12ZXJzaW9uIGNvbnZlbmllbmNlIGxpYnJhcmllcy4gIFdoZW5ldmVyIHdl IGNyZWF0ZQogICAgICAjIGRpZmZlcmVudCBvbmVzIGZvciBQSUMvbm9uLVBJQywgdGhpcyB3ZSds bCBoYXZlIHRvIGR1cGxpY2F0ZQogICAgICAjIHRoZSBleHRyYWN0aW9uLgogICAgICByZWxvYWRf Y29udl9vYmpzPQogICAgICBnZW50b3A9CiAgICAgICMgcmVsb2FkX2NtZHMgcnVucyAkTEQgZGly ZWN0bHksIHNvIGxldCB1cyBnZXQgcmlkIG9mCiAgICAgICMgLVdsIGZyb20gd2hvbGVfYXJjaGl2 ZV9mbGFnX3NwZWMKICAgICAgd2w9IAoKICAgICAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsg dGhlbgoJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgoJICBldmFs IHJlbG9hZF9jb252X29ianM9XCJcJHJlbG9hZF9vYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3Bl Y1wiCgllbHNlCgkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKCSAgJHNob3cgIiR7 cm19ciAkZ2VudG9wIgoJICAkcnVuICR7cm19ciAiJGdlbnRvcCIKCSAgJHNob3cgIm1rZGlyICRn ZW50b3AiCgkgICRydW4gbWtkaXIgIiRnZW50b3AiCgkgIHN0YXR1cz0kPwoJICBpZiB0ZXN0ICRz dGF0dXMgLW5lIDAgJiYgdGVzdCAhIC1kICIkZ2VudG9wIjsgdGhlbgoJICAgIGV4aXQgJHN0YXR1 cwoJICBmaQoJICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKCgkgIGZvciB4bGliIGlu ICRjb252ZW5pZW5jZTsgZG8KCSAgICAjIEV4dHJhY3QgdGhlIG9iamVjdHMuCgkgICAgY2FzZSAi JHhsaWIiIGluCgkgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSB4YWJzPSIkeGxpYiIgOzsK CSAgICAqKSB4YWJzPWBwd2RgIi8keGxpYiIgOzsKCSAgICBlc2FjCgkgICAgeGxpYj1gJGVjaG8g IlgkeGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAoJICAgIHhkaXI9IiRnZW50b3AvJHhsaWIi CgoJICAgICRzaG93ICIke3JtfXIgJHhkaXIiCgkgICAgJHJ1biAke3JtfXIgIiR4ZGlyIgoJICAg ICRzaG93ICJta2RpciAkeGRpciIKCSAgICAkcnVuIG1rZGlyICIkeGRpciIKCSAgICBzdGF0dXM9 JD8KCSAgICBpZiB0ZXN0ICRzdGF0dXMgLW5lIDAgJiYgdGVzdCAhIC1kICIkeGRpciI7IHRoZW4K CSAgICAgIGV4aXQgJHN0YXR1cwoJICAgIGZpCgkgICAgJHNob3cgIihjZCAkeGRpciAmJiAkQVIg eCAkeGFicykiCgkgICAgJHJ1biBldmFsICIoY2QgXCR4ZGlyICYmICRBUiB4IFwkeGFicykiIHx8 IGV4aXQgJD8KCgkgICAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICJgZmluZCAkeGRp ciAtbmFtZSBcKi5vIC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkTkwyU1BgCgkgIGRv bmUKCWZpCiAgICAgIGZpCgogICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KICAg ICAgcmVsb2FkX29ianM9IiRvYmpzICJgJGVjaG8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNl ZCAtZSAnL1wuJyR7bGliZXh0fSQnL2QnIC1lICcvXC5saWIkL2QnIC1lICIkbG8ybyIgfCAkTkwy U1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIKCiAgICAgIG91dHB1dD0iJG9iaiIKICAgICAgZXZhbCBj bWRzPVwiJHJlbG9hZF9jbWRzXCIKICAgICAgSUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0iJElG UyI7IElGUz0nficKICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KCUlGUz0iJHNhdmVfaWZzIgoJ JHNob3cgIiRjbWQiCgkkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KICAgICAgZG9uZQogICAg ICBJRlM9IiRzYXZlX2lmcyIKCiAgICAgICMgRXhpdCBpZiB3ZSBhcmVuJ3QgZG9pbmcgYSBsaWJy YXJ5IG9iamVjdCBmaWxlLgogICAgICBpZiB0ZXN0IC16ICIkbGlib2JqIjsgdGhlbgoJaWYgdGVz dCAtbiAiJGdlbnRvcCI7IHRoZW4KCSAgJHNob3cgIiR7cm19ciAkZ2VudG9wIgoJICAkcnVuICR7 cm19ciAkZ2VudG9wCglmaQoKCWV4aXQgMAogICAgICBmaQoKICAgICAgaWYgdGVzdCAiJGJ1aWxk X2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCglpZiB0ZXN0IC1uICIkZ2VudG9wIjsgdGhlbgoJ ICAkc2hvdyAiJHtybX1yICRnZW50b3AiCgkgICRydW4gJHtybX1yICRnZW50b3AKCWZpCgoJIyBD cmVhdGUgYW4gaW52YWxpZCBsaWJ0b29sIG9iamVjdCBpZiBubyBQSUMsIHNvIHRoYXQgd2UgZG9u J3QKCSMgYWNjaWRlbnRhbGx5IGxpbmsgaXQgaW50byBhIHByb2dyYW0uCgkkc2hvdyAiZWNobyB0 aW1lc3RhbXAgPiAkbGlib2JqIgoJJHJ1biBldmFsICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoi IHx8IGV4aXQgJD8KCWV4aXQgMAogICAgICBmaQoKICAgICAgaWYgdGVzdCAtbiAiJHBpY19mbGFn IjsgdGhlbgoJIyBPbmx5IGRvIGNvbW1hbmRzIGlmIHdlIHJlYWxseSBoYXZlIGRpZmZlcmVudCBQ SUMgb2JqZWN0cy4KCXJlbG9hZF9vYmpzPSIkbGlib2JqcyAkcmVsb2FkX2NvbnZfb2JqcyIKCW91 dHB1dD0iJGxpYm9iaiIKCWV2YWwgY21kcz1cIiRyZWxvYWRfY21kc1wiCglJRlM9IiR7SUZTPSAJ fSI7IHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwoJZm9yIGNtZCBpbiAkY21kczsgZG8KCSAgSUZT PSIkc2F2ZV9pZnMiCgkgICRzaG93ICIkY21kIgoJICAkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQg JD8KCWRvbmUKCUlGUz0iJHNhdmVfaWZzIgogICAgICBlbHNlCgkjIEp1c3QgY3JlYXRlIGEgc3lt bGluay4KCSRzaG93ICRybSAkbGlib2JqCgkkcnVuICRybSAkbGlib2JqCgl4ZGlyPWAkZWNobyAi WCRsaWJvYmoiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKCWlmIHRlc3QgIlgkeGRpciIgPSAi WCRsaWJvYmoiOyB0aGVuCgkgIHhkaXI9Ii4iCgllbHNlCgkgIHhkaXI9IiR4ZGlyIgoJZmkKCWJh c2VvYmo9YCRlY2hvICJYJGxpYm9iaiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAoJb2xkb2JqPWAk ZWNobyAiWCRiYXNlb2JqIiB8ICRYc2VkIC1lICIkbG8ybyJgCgkkc2hvdyAiKGNkICR4ZGlyICYm ICRMTl9TICRvbGRvYmogJGJhc2VvYmopIgoJJHJ1biBldmFsICcoY2QgJHhkaXIgJiYgJExOX1Mg JG9sZG9iaiAkYmFzZW9iaiknIHx8IGV4aXQgJD8KICAgICAgZmkKCiAgICAgIGlmIHRlc3QgLW4g IiRnZW50b3AiOyB0aGVuCgkkc2hvdyAiJHtybX1yICRnZW50b3AiCgkkcnVuICR7cm19ciAkZ2Vu dG9wCiAgICAgIGZpCgogICAgICBleGl0IDAKICAgICAgOzsKCiAgICAjIEFueXRoaW5nIGVsc2Ug c2hvdWxkIGJlIGEgcHJvZ3JhbS4KICAgICopCiAgICAgIGlmIHRlc3QgLW4gIiR2aW5mbyI7IHRo ZW4KCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXZlcnNpb24taW5mbycgaXMgaWdub3Jl ZCBmb3IgcHJvZ3JhbXMiIDE+JjIKICAgICAgZmkKCiAgICAgIGlmIHRlc3QgLW4gIiRyZWxlYXNl IjsgdGhlbgoJJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcmVsZWFzZScgaXMgaWdub3Jl ZCBmb3IgcHJvZ3JhbXMiIDE+JjIKICAgICAgZmkKCiAgICAgIGlmIHRlc3QgIiRwcmVsb2FkIiA9 IHllczsgdGhlbgoJaWYgdGVzdCAiJGRsb3BlbiIgPSB1bmtub3duICYmIHRlc3QgIiRkbG9wZW5f c2VsZiIgPSB1bmtub3duICYmCgkgICB0ZXN0ICIkZGxvcGVuX3NlbGZfc3RhdGljIiA9IHVua25v d247IHRoZW4KCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGBBQ19MSUJUT09MX0RMT1BF Ticgbm90IHVzZWQuIEFzc3VtaW5nIG5vIGRsb3BlbiBzdXBwb3J0LiIKCWZpIAogICAgICBmaQog ICAgCiAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCgkjIElmIHRoZSB1c2Vy IHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCglmb3IgbGliZGlyIGlu ICRycGF0aCAkeHJwYXRoOyBkbwoJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGgu CgkgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KCSAgKiIgJGxpYmRpciAiKikgOzsKCSAgKikg Y29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGxpYmRpciIgOzsKCSAgZXNhYwoJICBjYXNl ICIkZmluYWxpemVfcnBhdGggIiBpbgoJICAqIiAkbGliZGlyICIqKSA7OwoJICAqKSBmaW5hbGl6 ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CgkgIGVzYWMKCWRvbmUKICAgICAg ZmkKCiAgICAgICMgTm93IGhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGhzCiAgICAgIHJwYXRoPQog ICAgICBoYXJkY29kZV9saWJkaXJzPQogICAgICBmb3IgbGliZGlyIGluICRjb21waWxlX3JwYXRo ICRmaW5hbGl6ZV9ycGF0aDsgZG8KCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19z cGVjIjsgdGhlbgoJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRo ZW4KCSAgICBpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KCSAgICAgIGhhcmRj b2RlX2xpYmRpcnM9IiRsaWJkaXIiCgkgICAgZWxzZQoJICAgICAgIyBKdXN0IGFjY3VtdWxhdGUg dGhlIHVuaXF1ZSBsaWJkaXJzLgoJICAgICAgY2FzZSAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0 b3IkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiBpbgoJICAgICAg KiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFy YXRvciIqKQoJCTs7CgkgICAgICAqKQoJCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJk aXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgoJCTs7CgkgICAgICBlc2FjCgkg ICAgZmkKCSAgZWxzZQoJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVj XCIKCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgoJICBmaQoJZWxpZiB0ZXN0IC1uICIkcnVucGF0 aF92YXIiOyB0aGVuCgkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KCSAgKiIgJGxpYmRpciAiKikg OzsKCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKCSAgZXNhYwoJZmkK ICAgICAgZG9uZQogICAgICAjIFN1YnN0aXR1dGUgdGhlIGhhcmRjb2RlZCBsaWJkaXJzIGludG8g dGhlIHJwYXRoLgogICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIg JiYKCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KCWxpYmRpcj0iJGhhcmRjb2Rl X2xpYmRpcnMiCglldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKICAg ICAgZmkKICAgICAgY29tcGlsZV9ycGF0aD0iJHJwYXRoIgoKICAgICAgcnBhdGg9CiAgICAgIGhh cmRjb2RlX2xpYmRpcnM9CiAgICAgIGZvciBsaWJkaXIgaW4gJGZpbmFsaXplX3JwYXRoOyBkbwoJ aWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCgkgIGlmIHRlc3Qg LW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgoJICAgIGlmIHRlc3QgLXogIiRo YXJkY29kZV9saWJkaXJzIjsgdGhlbgoJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIK CSAgICBlbHNlCgkgICAgICAjIEp1c3QgYWNjdW11bGF0ZSB0aGUgdW5pcXVlIGxpYmRpcnMuCgkg ICAgICBjYXNlICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRoYXJkY29kZV9saWJkaXJzJGhh cmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiIGluCgkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2Vw YXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCgkJOzsKCSAgICAgICop CgkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3Nl cGFyYXRvciRsaWJkaXIiCgkJOzsKCSAgICAgIGVzYWMKCSAgICBmaQoJICBlbHNlCgkgICAgZXZh bCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgoJICAgIHJwYXRoPSIkcnBhdGgg JGZsYWciCgkgIGZpCgllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KCSAgY2FzZSAi JGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgoJICAqIiAkbGliZGlyICIqKSA7OwoJICAqKSBmaW5h bGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OwoJICBlc2Fj CglmaQogICAgICBkb25lCiAgICAgICMgU3Vic3RpdHV0ZSB0aGUgaGFyZGNvZGVkIGxpYmRpcnMg aW50byB0aGUgcnBhdGguCiAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJh dG9yIiAmJgoJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgoJbGliZGlyPSIkaGFy ZGNvZGVfbGliZGlycyIKCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNc IgogICAgICBmaQogICAgICBmaW5hbGl6ZV9ycGF0aD0iJHJwYXRoIgoKICAgICAgb3V0cHV0X29i amRpcj1gJGVjaG8gIlgkb3V0cHV0IiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCiAgICAgIGlm IHRlc3QgIlgkb3V0cHV0X29iamRpciIgPSAiWCRvdXRwdXQiOyB0aGVuCglvdXRwdXRfb2JqZGly PSIkb2JqZGlyIgogICAgICBlbHNlCglvdXRwdXRfb2JqZGlyPSIkb3V0cHV0X29iamRpci8kb2Jq ZGlyIgogICAgICBmaQoKICAgICAgIyBDcmVhdGUgdGhlIGJpbmFyeSBpbiB0aGUgb2JqZWN0IGRp cmVjdG9yeSwgdGhlbiB3cmFwIGl0LgogICAgICBpZiB0ZXN0ICEgLWQgJG91dHB1dF9vYmpkaXI7 IHRoZW4KCSRzaG93ICIkbWtkaXIgJG91dHB1dF9vYmpkaXIiCgkkcnVuICRta2RpciAkb3V0cHV0 X29iamRpcgoJc3RhdHVzPSQ/CglpZiB0ZXN0ICRzdGF0dXMgLW5lIDAgJiYgdGVzdCAhIC1kICRv dXRwdXRfb2JqZGlyOyB0aGVuCgkgIGV4aXQgJHN0YXR1cwoJZmkKICAgICAgZmkKCiAgICAgIGlm IHRlc3QgLW4gIiRsaWJvYmpzIiAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVu CgkjIFRyYW5zZm9ybSBhbGwgdGhlIGxpYnJhcnkgb2JqZWN0cyBpbnRvIHN0YW5kYXJkIG9iamVj dHMuCgljb21waWxlX2NvbW1hbmQ9YCRlY2hvICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwg fCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAoJZmluYWxpemVfY29tbWFuZD1gJGVjaG8gIlgk ZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAog ICAgICBmaQoKICAgICAgZGxzeW1zPQogICAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZp bGVzIiB8fCB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgoJaWYgdGVzdCAtbiAiJE5NIiAmJiB0 ZXN0IC1uICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgoJICBkbHN5bXM9IiR7b3V0cHV0bmFt ZX1TLmMiCgllbHNlCgkgICRlY2hvICIkbW9kZW5hbWU6IG5vdCBjb25maWd1cmVkIHRvIGV4dHJh Y3QgZ2xvYmFsIHN5bWJvbHMgZnJvbSBkbHByZW9wZW5lZCBmaWxlcyIgMT4mMgoJZmkKICAgICAg ZmkKCiAgICAgIGlmIHRlc3QgLW4gIiRkbHN5bXMiOyB0aGVuCgljYXNlICIkZGxzeW1zIiBpbgoJ IiIpIDs7CgkqLmMpCgkgICMgRGlzY292ZXIgdGhlIG5saXN0IG9mIGVhY2ggb2YgdGhlIGRsZmls ZXMuCgkgIG5saXN0PSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Lm5tIgoKCSAgJHNob3cg IiRybSAkbmxpc3QgJHtubGlzdH1TICR7bmxpc3R9VCIKCSAgJHJ1biAkcm0gIiRubGlzdCIgIiR7 bmxpc3R9UyIgIiR7bmxpc3R9VCIKCgkgICMgUGFyc2UgdGhlIG5hbWUgbGlzdCBpbnRvIGEgc291 cmNlIGZpbGUuCgkgICRzaG93ICJjcmVhdGluZyAkb3V0cHV0X29iamRpci8kZGxzeW1zIgoKCSAg dGVzdCAteiAiJHJ1biIgJiYgJGVjaG8gPiAiJG91dHB1dF9vYmpkaXIvJGRsc3ltcyIgIlwKLyog JGRsc3ltcyAtIHN5bWJvbCByZXNvbHV0aW9uIHRhYmxlIGZvciBcYCRvdXRwdXRuYW1lJyBkbHN5 bSBlbXVsYXRpb24uICovCi8qIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAtIEdOVSAkUEFDS0FHRSAk VkVSU0lPTiRUSU1FU1RBTVAgKi8KCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gXCJDXCIgewoj ZW5kaWYKCi8qIFByZXZlbnQgdGhlIG9ubHkga2luZCBvZiBkZWNsYXJhdGlvbiBjb25mbGljdHMg d2UgY2FuIG1ha2UuICovCiNkZWZpbmUgbHRfcHJlbG9hZGVkX3N5bWJvbHMgc29tZV9vdGhlcl9z eW1ib2wKCi8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4g Ki9cCiIKCgkgIGlmIHRlc3QgIiRkbHNlbGYiID0geWVzOyB0aGVuCgkgICAgJHNob3cgImdlbmVy YXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJG91dHB1dCciCgoJICAgIHRlc3QgLXogIiRydW4iICYm ICRlY2hvICc6IEBQUk9HUkFNQCAnID4gIiRubGlzdCIKCgkgICAgIyBBZGQgb3VyIG93biBwcm9n cmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgoJICAgIHByb2dmaWxlcz1gJGVjaG8gIlgk b2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAoJICAgIGZvciBhcmcg aW4gJHByb2dmaWxlczsgZG8KCSAgICAgICRzaG93ICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJv bHMgZnJvbSBcYCRhcmcnIgoJICAgICAgJHJ1biBldmFsICIkTk0gJGFyZyB8ICRnbG9iYWxfc3lt Ym9sX3BpcGUgPj4gJyRubGlzdCciCgkgICAgZG9uZQoKCSAgICBpZiB0ZXN0IC1uICIkZXhjbHVk ZV9leHBzeW1zIjsgdGhlbgoJICAgICAgJHJ1biBldmFsICdlZ3JlcCAtdiAiICgkZXhjbHVkZV9l eHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJwoJICAgICAgJHJ1biBldmFsICckbXYgIiRu bGlzdCJUICIkbmxpc3QiJwoJICAgIGZpCgkgICAgCgkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9z eW1ib2xzX3JlZ2V4IjsgdGhlbgoJICAgICAgJHJ1biBldmFsICdlZ3JlcCAtZSAiJGV4cG9ydF9z eW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKCSAgICAgICRydW4gZXZhbCAnJG12 ICIkbmxpc3QiVCAiJG5saXN0IicKCSAgICBmaQoKCSAgICAjIFByZXBhcmUgdGhlIGxpc3Qgb2Yg ZXhwb3J0ZWQgc3ltYm9scwoJICAgIGlmIHRlc3QgLXogIiRleHBvcnRfc3ltYm9scyI7IHRoZW4K CSAgICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kb3V0cHV0LmV4cCIKCSAgICAg ICRydW4gJHJtICRleHBvcnRfc3ltYm9scwoJICAgICAgJHJ1biBldmFsICJzZWQgLW4gLWUgJy9e OiBAUFJPR1JBTUAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIk ZXhwb3J0X3N5bWJvbHMiJwoJICAgIGVsc2UKCSAgICAgICRydW4gZXZhbCAic2VkIC1lICdzL1wo W11bLipeJF1cKS9cXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIicgPCAiJGV4cG9ydF9z eW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0LmV4cCInCgkgICAgICAkcnVuIGV2YWwg J2dyZXAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXQuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlz dCJUJwoJICAgICAgJHJ1biBldmFsICdtdiAiJG5saXN0IlQgIiRubGlzdCInCgkgICAgZmkKCSAg ZmkKCgkgIGZvciBhcmcgaW4gJGRscHJlZmlsZXM7IGRvCgkgICAgJHNob3cgImV4dHJhY3Rpbmcg Z2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGFyZyciCgkgICAgbmFtZT1gZWNobyAiJGFyZyIgfCBz ZWQgLWUgJ3MlXi4qLyUlJ2AKCSAgICAkcnVuIGV2YWwgJ2VjaG8gIjogJG5hbWUgIiA+PiAiJG5s aXN0IicKCSAgICAkcnVuIGV2YWwgIiROTSAkYXJnIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAn JG5saXN0JyIKCSAgZG9uZQoKCSAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KCSAgICAjIE1ha2Ug c3VyZSB3ZSBoYXZlIGF0IGxlYXN0IGFuIGVtcHR5IGZpbGUuCgkgICAgdGVzdCAtZiAiJG5saXN0 IiB8fCA6ID4gIiRubGlzdCIKCgkgICAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRo ZW4KCSAgICAgIGVncmVwIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5s aXN0IlQKCSAgICAgICRtdiAiJG5saXN0IlQgIiRubGlzdCIKCSAgICBmaQoKCSAgICAjIFRyeSBz b3J0aW5nIGFuZCB1bmlxdWlmeWluZyB0aGUgb3V0cHV0LgoJICAgIGlmIGdyZXAgLXYgIl46ICIg PCAiJG5saXN0IiB8IHNvcnQgKzIgfCB1bmlxID4gIiRubGlzdCJTOyB0aGVuCgkgICAgICA6Cgkg ICAgZWxzZQoJICAgICAgZ3JlcCAtdiAiXjogIiA8ICIkbmxpc3QiID4gIiRubGlzdCJTCgkgICAg ZmkKCgkgICAgaWYgdGVzdCAtZiAiJG5saXN0IlM7IHRoZW4KCSAgICAgIGV2YWwgIiRnbG9iYWxf c3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IlMgPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMi JwoJICAgIGVsc2UKCSAgICAgIGVjaG8gJy8qIE5PTkUgKi8nID4+ICIkb3V0cHV0X29iamRpci8k ZGxzeW1zIgoJICAgIGZpCgoJICAgICRlY2hvID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAi XAoKI3VuZGVmIGx0X3ByZWxvYWRlZF9zeW1ib2xzCgojaWYgZGVmaW5lZCAoX19TVERDX18pICYm IF9fU1REQ19fCiMgZGVmaW5lIGx0X3B0cl90IHZvaWQgKgojZWxzZQojIGRlZmluZSBsdF9wdHJf dCBjaGFyICoKIyBkZWZpbmUgY29uc3QKI2VuZGlmCgovKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5 bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gKi8KY29uc3Qgc3RydWN0IHsKICBjb25zdCBjaGFyICpu YW1lOwogIGx0X3B0cl90IGFkZHJlc3M7Cn0KbHRfcHJlbG9hZGVkX3N5bWJvbHNbXSA9CntcCiIK CgkgICAgc2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1wiXDFcIiwgKGx0X3B0cl90KSAw fSwvcCcgXAoJCS1lICdzL14uIFwoW14gXSpcKSBcKFteIF0qXCkkLyAgeyJcMiIsIChsdF9wdHJf dCkgXCZcMn0sL3AnIFwKCQkgIDwgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMi CgoJICAgICRlY2hvID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAogIHswLCAobHRfcHRy X3QpIDB9Cn07CgovKiBUaGlzIHdvcmtzIGFyb3VuZCBhIHByb2JsZW0gaW4gRnJlZUJTRCBsaW5r ZXIgKi8KI2lmZGVmIEZSRUVCU0RfV09SS0FST1VORApzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJl bG9hZGVkX3NldHVwKCkgewogIHJldHVybiBsdF9wcmVsb2FkZWRfc3ltYm9sczsKfQojZW5kaWYK CiNpZmRlZiBfX2NwbHVzcGx1cwp9CiNlbmRpZlwKIgoJICBmaQoKCSAgcGljX2ZsYWdfZm9yX3N5 bXRhYmxlPQoJICBjYXNlICIkaG9zdCIgaW4KCSAgIyBjb21waWxpbmcgdGhlIHN5bWJvbCB0YWJs ZSBmaWxlIHdpdGggcGljX2ZsYWcgd29ya3MgYXJvdW5kCgkgICMgYSBGcmVlQlNEIGJ1ZyB0aGF0 IGNhdXNlcyBwcm9ncmFtcyB0byBjcmFzaCB3aGVuIC1sbSBpcwoJICAjIGxpbmtlZCBiZWZvcmUg YW55IG90aGVyIFBJQyBvYmplY3QuICBCdXQgd2UgbXVzdCBub3QgdXNlCgkgICMgcGljX2ZsYWcg d2hlbiBsaW5raW5nIHdpdGggLXN0YXRpYy4gIFRoZSBwcm9ibGVtIGV4aXN0cyBpbgoJICAjIEZy ZWVCU0QgMi4yLjYgYW5kIGlzIGZpeGVkIGluIEZyZWVCU0QgMy4xLgoJICAqLSotZnJlZWJzZDIq fCotKi1mcmVlYnNkMy4wKnwqLSotZnJlZWJzZGVsZjMuMCopDQoJICAgIGNhc2UgIiRjb21waWxl X2NvbW1hbmQgIiBpbgoJICAgICoiIC1zdGF0aWMgIiopIDs7CgkgICAgKikgcGljX2ZsYWdfZm9y X3N5bXRhYmxlPSIgJHBpY19mbGFnIC1EUElDIC1ERlJFRUJTRF9XT1JLQVJPVU5EIjs7CgkgICAg ZXNhYzs7CgkgICotKi1ocHV4KikKCSAgICBjYXNlICIkY29tcGlsZV9jb21tYW5kICIgaW4KCSAg ICAqIiAtc3RhdGljICIqKSA7OwoJICAgICopIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNf ZmxhZyAtRFBJQyI7OwoJICAgIGVzYWMKCSAgZXNhYwoKCSAgIyBOb3cgY29tcGlsZSB0aGUgZHlu YW1pYyBzeW1ib2wgZmlsZS4KCSAgJHNob3cgIihjZCAkb3V0cHV0X29iamRpciAmJiAkQ0MgLWMk bm9fYnVpbHRpbl9mbGFnJHBpY19mbGFnX2Zvcl9zeW10YWJsZSBcIiRkbHN5bXNcIikiCgkgICRy dW4gZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRDQyAtYyRub19idWlsdGluX2ZsYWckcGlj X2ZsYWdfZm9yX3N5bXRhYmxlICIkZGxzeW1zIiknIHx8IGV4aXQgJD8KCgkgICMgQ2xlYW4gdXAg dGhlIGdlbmVyYXRlZCBmaWxlcy4KCSAgJHNob3cgIiRybSAkb3V0cHV0X29iamRpci8kZGxzeW1z ICRubGlzdCAke25saXN0fVMgJHtubGlzdH1UIgoJICAkcnVuICRybSAiJG91dHB1dF9vYmpkaXIv JGRsc3ltcyIgIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCIKCgkgICMgVHJhbnNmb3Jt IHRoZSBzeW1ib2wgZmlsZSBpbnRvIHRoZSBjb3JyZWN0IG5hbWUuCgkgIGNvbXBpbGVfY29tbWFu ZD1gJGVjaG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0 cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0lImAKCSAgZmluYWxpemVfY29tbWFu ZD1gJGVjaG8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91 dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9JSJgCgkgIDs7CgkqKQoJICAkZWNo byAiJG1vZGVuYW1lOiB1bmtub3duIHN1ZmZpeCBmb3IgXGAkZGxzeW1zJyIgMT4mMgoJICBleGl0 IDEKCSAgOzsKCWVzYWMKICAgICAgZWxzZQoJIyBXZSBrZWVwIGdvaW5nIGp1c3QgaW4gY2FzZSB0 aGUgdXNlciBkaWRuJ3QgcmVmZXIgdG8KCSMgbHRfcHJlbG9hZGVkX3N5bWJvbHMuICBUaGUgbGlu a2VyIHdpbGwgZmFpbCBpZiBnbG9iYWxfc3ltYm9sX3BpcGUKCSMgcmVhbGx5IHdhcyByZXF1aXJl ZC4KCgkjIE51bGxpZnkgdGhlIHN5bWJvbCBmaWxlLgoJY29tcGlsZV9jb21tYW5kPWAkZWNobyAi WCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKCWZpbmFsaXpl X2NvbW1hbmQ9YCRlY2hvICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1G SUxFQCUlImAKICAgICAgZmkKCiAgICAgIGlmIHRlc3QgLXogIiRsaW5rX2FnYWluc3RfbGlidG9v bF9saWJzIiB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KCSMgUmVw bGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KCWNvbXBpbGVfY29tbWFuZD1gJGVj aG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCIn JWcnYAoJbGlua19jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCgoJIyBX ZSBoYXZlIG5vIHVuaW5zdGFsbGVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzLCBzbyBmaW5hbGl6ZSBy aWdodCBub3cuCgkkc2hvdyAiJGxpbmtfY29tbWFuZCIKCSRydW4gZXZhbCAiJGxpbmtfY29tbWFu ZCIKCXN0YXR1cz0kPwoJCgkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgoJaWYgdGVzdCAt biAiJGRsc3ltcyI7IHRoZW4KCSAgJHNob3cgIiRybSAkb3V0cHV0X29iamRpci8ke291dHB1dG5h bWV9Uy4ke29iamV4dH0iCgkgICRydW4gJHJtICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9 Uy4ke29iamV4dH0iCglmaQoKCWV4aXQgJHN0YXR1cwogICAgICBmaQoKICAgICAgaWYgdGVzdCAt biAiJHNobGlicGF0aF92YXIiOyB0aGVuCgkjIFdlIHNob3VsZCBzZXQgdGhlIHNobGlicGF0aF92 YXIKCXJwYXRoPQoJZm9yIGRpciBpbiAkdGVtcF9ycGF0aDsgZG8KCSAgY2FzZSAiJGRpciIgaW4K CSAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKQoJICAgICMgQWJzb2x1dGUgcGF0aC4KCSAgICBy cGF0aD0iJHJwYXRoJGRpcjoiCgkgICAgOzsKCSAgKikKCSAgICAjIFJlbGF0aXZlIHBhdGg6IGFk ZCBhIHRoaXNkaXIgZW50cnkuCgkgICAgcnBhdGg9IiRycGF0aFwkdGhpc2Rpci8kZGlyOiIKCSAg ICA7OwoJICBlc2FjCglkb25lCgl0ZW1wX3JwYXRoPSIkcnBhdGgiCiAgICAgIGZpCgogICAgICBp ZiB0ZXN0IC1uICIkY29tcGlsZV9zaGxpYnBhdGgkZmluYWxpemVfc2hsaWJwYXRoIjsgdGhlbgoJ Y29tcGlsZV9jb21tYW5kPSIkc2hsaWJwYXRoX3Zhcj1cIiRjb21waWxlX3NobGlicGF0aCRmaW5h bGl6ZV9zaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyXCIgJGNvbXBpbGVfY29tbWFuZCIKICAgICAg ZmkKICAgICAgaWYgdGVzdCAtbiAiJGZpbmFsaXplX3NobGlicGF0aCI7IHRoZW4KCWZpbmFsaXpl X2NvbW1hbmQ9IiRzaGxpYnBhdGhfdmFyPVwiJGZpbmFsaXplX3NobGlicGF0aFwkJHNobGlicGF0 aF92YXJcIiAkZmluYWxpemVfY29tbWFuZCIKICAgICAgZmkKCiAgICAgIGNvbXBpbGVfdmFyPQog ICAgICBmaW5hbGl6ZV92YXI9CiAgICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4K CWlmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgoJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1 bnBhdGhfdmFyLgoJICBycGF0aD0KCSAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KCSAgICBy cGF0aD0iJHJwYXRoJGRpcjoiCgkgIGRvbmUKCSAgY29tcGlsZV92YXI9IiRydW5wYXRoX3Zhcj1c IiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgoJZmkKCWlmIHRlc3QgLW4gIiRmaW5hbGl6ZV9wZXJt X3JwYXRoIjsgdGhlbgoJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgoJICBycGF0 aD0KCSAgZm9yIGRpciBpbiAkZmluYWxpemVfcGVybV9ycGF0aDsgZG8KCSAgICBycGF0aD0iJHJw YXRoJGRpcjoiCgkgIGRvbmUKCSAgZmluYWxpemVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhc JCRydW5wYXRoX3ZhclwiICIKCWZpCiAgICAgIGZpCgogICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVf YWN0aW9uIiA9IHJlbGluazsgdGhlbgoJIyBGYXN0IGluc3RhbGxhdGlvbiBpcyBub3Qgc3VwcG9y dGVkCglsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9y cGF0aCIKCXJlbGlua19jb21tYW5kPSIkZmluYWxpemVfdmFyJGZpbmFsaXplX2NvbW1hbmQkZmlu YWxpemVfcnBhdGgiCgkKCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHRoaXMgcGxhdGZvcm0g ZG9lcyBub3QgbGlrZSB1bmluc3RhbGxlZCBzaGFyZWQgbGlicmFyaWVzIiAxPiYyCgkkZWNobyAi JG1vZGVuYW1lOiBcYCRvdXRwdXQnIHdpbGwgYmUgcmVsaW5rZWQgZHVyaW5nIGluc3RhbGxhdGlv biIgMT4mMgogICAgICBlbHNlCglpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiAhPSBubzsgdGhlbgoJ ICBsaW5rX2NvbW1hbmQ9IiRmaW5hbGl6ZV92YXIkY29tcGlsZV9jb21tYW5kJGZpbmFsaXplX3Jw YXRoIgoJICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllczsgdGhlbgoJICAgIHJlbGlua19j b21tYW5kPWAkZWNobyAiWCRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0 aCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnYAoJICBlbHNlCgkg ICAgIyBmYXN0X2luc3RhbGwgaXMgc2V0IHRvIG5lZWRsZXNzCgkgICAgcmVsaW5rX2NvbW1hbmQ9 CgkgIGZpCgllbHNlCgkgIGxpbmtfY29tbWFuZD0iJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFu ZCRjb21waWxlX3JwYXRoIgoJICByZWxpbmtfY29tbWFuZD0iJGZpbmFsaXplX3ZhciRmaW5hbGl6 ZV9jb21tYW5kJGZpbmFsaXplX3JwYXRoIgoJZmkKICAgICAgZmkKCiAgICAgICMgUmVwbGFjZSB0 aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KICAgICAgbGlua19jb21tYW5kPWAkZWNobyAi WCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8k b3V0cHV0bmFtZSInJWcnYAogICAgICAKICAgICAgIyBEZWxldGUgdGhlIG9sZCBvdXRwdXQgZmls ZXMuCiAgICAgICRydW4gJHJtICRvdXRwdXQgJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUgJG91 dHB1dF9vYmpkaXIvbHQtJG91dHB1dG5hbWUKCiAgICAgICRzaG93ICIkbGlua19jb21tYW5kIgog ICAgICAkcnVuIGV2YWwgIiRsaW5rX2NvbW1hbmQiIHx8IGV4aXQgJD8KCiAgICAgICMgTm93IGNy ZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCiAgICAgICRzaG93ICJjcmVhdGluZyAkb3V0cHV0IgoK ICAgICAgIyBRdW90ZSB0aGUgcmVsaW5rIGNvbW1hbmQgZm9yIHNoaXBwaW5nLgogICAgICBpZiB0 ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCglyZWxpbmtfY29tbWFuZD1gJGVjaG8gIlgk cmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICBmaQoK ICAgICAgIyBRdW90ZSAkZWNobyBmb3Igc2hpcHBpbmcuCiAgICAgIGlmIHRlc3QgIlgkZWNobyIg PSAiWCRTSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCgljYXNlICIkMCIgaW4KCVtcXC9d KiB8IFtBLVphLXpdOltcXC9dKikgcWVjaG89IiRTSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8iOzsK CSopIHFlY2hvPSIkU0hFTEwgYHB3ZGAvJDAgLS1mYWxsYmFjay1lY2hvIjs7Cgllc2FjCglxZWNo bz1gJGVjaG8gIlgkcWVjaG8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICBl bHNlCglxZWNobz1gJGVjaG8gIlgkZWNobyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJg CiAgICAgIGZpCgogICAgICAjIE9ubHkgYWN0dWFsbHkgZG8gdGhpbmdzIGlmIG91ciBydW4gY29t bWFuZCBpcyBub24tbnVsbC4KICAgICAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KCSMgd2luMzIg d2lsbCB0aGluayB0aGUgc2NyaXB0IGlzIGEgYmluYXJ5IGlmIGl0IGhhcwoJIyBhIC5leGUgc3Vm Zml4LCBzbyB3ZSBzdHJpcCBpdCBvZmYgaGVyZS4KCWNhc2UgJG91dHB1dCBpbgoJICAqLmV4ZSkg b3V0cHV0PWBlY2hvICRvdXRwdXR8c2VkICdzLC5leGUkLCwnYCA7OwoJZXNhYwoJJHJtICRvdXRw dXQKCXRyYXAgIiRybSAkb3V0cHV0OyBleGl0IDEiIDEgMiAxNQoKCSRlY2hvID4gJG91dHB1dCAi XAojISAkU0hFTEwKCiMgJG91dHB1dCAtIHRlbXBvcmFyeSB3cmFwcGVyIHNjcmlwdCBmb3IgJG9i amRpci8kb3V0cHV0bmFtZQojIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAtIEdOVSAkUEFDS0FHRSAk VkVSU0lPTiRUSU1FU1RBTVAKIwojIFRoZSAkb3V0cHV0IHByb2dyYW0gY2Fubm90IGJlIGRpcmVj dGx5IGV4ZWN1dGVkIHVudGlsIGFsbCB0aGUgbGlidG9vbAojIGxpYnJhcmllcyB0aGF0IGl0IGRl cGVuZHMgb24gYXJlIGluc3RhbGxlZC4KIwojIFRoaXMgd3JhcHBlciBzY3JpcHQgc2hvdWxkIG5l dmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgojIElmIGl0IGlzLCBpdCB3 aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KCiMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBz IHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKIyBtZXRhY2hhcmFjdGVy cyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KWHNl ZD0nc2VkIC1lIDFzL15YLy8nCnNlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKCiMg VGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3Rvcnkg dG8gc3Rkb3V0CiMgaWYgQ0RQQVRIIGlzIHNldC4KaWYgdGVzdCBcIlwke0NEUEFUSCtzZXR9XCIg PSBzZXQ7IHRoZW4gQ0RQQVRIPTo7IGV4cG9ydCBDRFBBVEg7IGZpCgpyZWxpbmtfY29tbWFuZD1c IiRyZWxpbmtfY29tbWFuZFwiCgojIFRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgZGV0ZXJtaW5l cyBvdXIgb3BlcmF0aW9uIG1vZGUuCmlmIHRlc3QgXCJcJGxpYnRvb2xfaW5zdGFsbF9tYWdpY1wi ID0gXCIkbWFnaWNcIjsgdGhlbgogICMgaW5zdGFsbCBtb2RlIG5lZWRzIHRoZSBmb2xsb3dpbmcg dmFyaWFibGU6CiAgbGlua19hZ2FpbnN0X2xpYnRvb2xfbGlicz0nJGxpbmtfYWdhaW5zdF9saWJ0 b29sX2xpYnMnCmVsc2UKICAjIFdoZW4gd2UgYXJlIHNvdXJjZWQgaW4gZXhlY3V0ZSBtb2RlLCBc JGZpbGUgYW5kIFwkZWNobyBhcmUgYWxyZWFkeSBzZXQuCiAgaWYgdGVzdCBcIlwkbGlidG9vbF9l eGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgogICAgZWNobz1cIiRxZWNob1wiCiAg ICBmaWxlPVwiXCQwXCIKICAgICMgTWFrZSBzdXJlIGVjaG8gd29ya3MuCiAgICBpZiB0ZXN0IFwi WFwkMVwiID0gWC0tbm8tcmVleGVjOyB0aGVuCiAgICAgICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4 ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgogICAgICBzaGlmdAogICAgZWxpZiB0ZXN0IFwiWFxgKFwk ZWNobyAnXHQnKSAyPi9kZXYvbnVsbFxgXCIgPSAnWFx0JzsgdGhlbgogICAgICAjIFlpcHBlZSwg XCRlY2hvIHdvcmtzIQogICAgICA6CiAgICBlbHNlCiAgICAgICMgUmVzdGFydCB1bmRlciB0aGUg Y29ycmVjdCBzaGVsbCwgYW5kIHRoZW4gbWF5YmUgXCRlY2hvIHdpbGwgd29yay4KICAgICAgZXhl YyAkU0hFTEwgXCJcJDBcIiAtLW5vLXJlZXhlYyBcJHsxK1wiXCRAXCJ9CiAgICBmaQogIGZpXAoi CgkkZWNobyA+PiAkb3V0cHV0ICJcCgogICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBz Y3JpcHQgbGl2ZXMgaW4uCiAgdGhpc2Rpcj1cYFwkZWNobyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAt ZSAncyUvW14vXSokJSUnXGAKICB0ZXN0IFwieFwkdGhpc2RpclwiID0gXCJ4XCRmaWxlXCIgJiYg dGhpc2Rpcj0uCgogICMgRm9sbG93IHN5bWJvbGljIGxpbmtzIHVudGlsIHdlIGdldCB0byB0aGUg cmVhbCB0aGlzZGlyLgogIGZpbGU9XGBscyAtbGQgXCJcJGZpbGVcIiB8IHNlZCAtbiAncy8uKi0+ IC8vcCdcYAogIHdoaWxlIHRlc3QgLW4gXCJcJGZpbGVcIjsgZG8KICAgIGRlc3RkaXI9XGBcJGVj aG8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qXCQlJSdcYAoKICAgICMgSWYgdGhl cmUgd2FzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBjaGFuZ2UgdGhpc2Rpci4KICAgIGlm IHRlc3QgXCJ4XCRkZXN0ZGlyXCIgIT0gXCJ4XCRmaWxlXCI7IHRoZW4KICAgICAgY2FzZSBcIlwk ZGVzdGRpclwiIGluCiAgICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgdGhpc2Rpcj1cIlwk ZGVzdGRpclwiIDs7CiAgICAgICopIHRoaXNkaXI9XCJcJHRoaXNkaXIvXCRkZXN0ZGlyXCIgOzsK ICAgICAgZXNhYwogICAgZmkKCiAgICBmaWxlPVxgXCRlY2hvIFwiWFwkZmlsZVwiIHwgXCRYc2Vk IC1lICdzJV4uKi8lJSdcYAogICAgZmlsZT1cYGxzIC1sZCBcIlwkdGhpc2Rpci9cJGZpbGVcIiB8 IHNlZCAtbiAncy8uKi0+IC8vcCdcYAogIGRvbmUKCiAgIyBUcnkgdG8gZ2V0IHRoZSBhYnNvbHV0 ZSBkaXJlY3RvcnkgbmFtZS4KICBhYnNkaXI9XGBjZCBcIlwkdGhpc2RpclwiICYmIHB3ZFxgCiAg dGVzdCAtbiBcIlwkYWJzZGlyXCIgJiYgdGhpc2Rpcj1cIlwkYWJzZGlyXCIKIgoKCWlmIHRlc3Qg IiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCgkgIGVjaG8gPj4gJG91dHB1dCAiXAogIHByb2dy YW09bHQtJyRvdXRwdXRuYW1lJwogIHByb2dkaXI9XCJcJHRoaXNkaXIvJG9iamRpclwiCiAgCiAg aWYgdGVzdCAhIC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIHx8IFxcCiAgICAgeyBmaWxlPVxg bHMgLTFkdCBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcIlwkcHJvZ2Rpci8uLi9cJHByb2dyYW1c IiAyPi9kZXYvbnVsbCB8IHNlZCAxcVxgOyBcXAogICAgICAgdGVzdCBcIlhcJGZpbGVcIiAhPSBc IlhcJHByb2dkaXIvXCRwcm9ncmFtXCI7IH07IHRoZW4KCiAgICBmaWxlPVwiXCRcJC1cJHByb2dy YW1cIgoKICAgIGlmIHRlc3QgISAtZCBcIlwkcHJvZ2RpclwiOyB0aGVuCiAgICAgICRta2RpciBc IlwkcHJvZ2RpclwiCiAgICBlbHNlCiAgICAgICRybSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgogICAg ZmkiCgoJICBlY2hvID4+ICRvdXRwdXQgIlwKCiAgICAjIHJlbGluayBleGVjdXRhYmxlIGlmIG5l Y2Vzc2FyeQogICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgogICAgICBp ZiAoY2QgXCJcJHRoaXNkaXJcIiAmJiBldmFsIFwkcmVsaW5rX2NvbW1hbmQpOyB0aGVuIDoKICAg ICAgZWxzZQoJJHJtIFwiXCRwcm9nZGlyL1wkZmlsZVwiCglleGl0IDEKICAgICAgZmkKICAgIGZp CgogICAgJG12IFwiXCRwcm9nZGlyL1wkZmlsZVwiIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDI+ L2Rldi9udWxsIHx8CiAgICB7ICRybSBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsKICAgICAgJG12 IFwiXCRwcm9nZGlyL1wkZmlsZVwiIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB9CiAgICAkcm0g XCJcJHByb2dkaXIvXCRmaWxlXCIKICBmaSIKCWVsc2UKCSAgZWNobyA+PiAkb3V0cHV0ICJcCiAg cHJvZ3JhbT0nJG91dHB1dG5hbWUnCiAgcHJvZ2Rpcj1cIlwkdGhpc2Rpci8kb2JqZGlyXCIKIgoJ ZmkKCgllY2hvID4+ICRvdXRwdXQgIlwKCiAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dy YW1cIjsgdGhlbiIKCgkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4K CWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4g IiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KCSAgJGVjaG8g Pj4gJG91dHB1dCAiXAogICAgIyBBZGQgb3VyIG93biBsaWJyYXJ5IHBhdGggdG8gJHNobGlicGF0 aF92YXIKICAgICRzaGxpYnBhdGhfdmFyPVwiJHRlbXBfcnBhdGhcJCRzaGxpYnBhdGhfdmFyXCIK CiAgICAjIFNvbWUgc3lzdGVtcyBjYW5ub3QgY29wZSB3aXRoIGNvbG9uLXRlcm1pbmF0ZWQgJHNo bGlicGF0aF92YXIKICAgICMgVGhlIHNlY29uZCBjb2xvbiBpcyBhIHdvcmthcm91bmQgZm9yIGEg YnVnIGluIEJlT1MgUjQgc2VkCiAgICAkc2hsaWJwYXRoX3Zhcj1cYFwkZWNobyBcIlhcJCRzaGxp YnBhdGhfdmFyXCIgfCBcJFhzZWQgLWUgJ3MvOjoqXCQvLydcYAoKICAgIGV4cG9ydCAkc2hsaWJw YXRoX3ZhcgoiCglmaQoKCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8u CglpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KCSAgJGVjaG8gPj4gJG91dHB1dCAi XAogICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRh YmxlIFBBVEgKICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICiIKCWZpCgoJJGVjaG8gPj4g JG91dHB1dCAiXAogICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIk bWFnaWNcIjsgdGhlbgogICAgICAjIFJ1biB0aGUgYWN0dWFsIHByb2dyYW0gd2l0aCBvdXIgYXJn dW1lbnRzLgoiCgljYXNlICRob3N0IGluCgkgICMgd2luMzIgc3lzdGVtcyBuZWVkIHRvIHVzZSB0 aGUgcHJvZyBwYXRoIGZvciBkbGwKCSAgIyBsb29rdXAgdG8gd29yawoJKi0qLWN5Z3dpbiopCgkg ICRlY2hvID4+ICRvdXRwdXQgIlwKICAgICAgZXhlYyBcJHByb2dkaXIvXCRwcm9ncmFtIFwkezEr XCJcJEBcIn0KIgoJICA7OwoKCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24g cGxhaW4gd2luZG93cwoJKi0qLW1pbmd3IHwgKi0qLW9zMiopCgkgICRlY2hvID4+ICRvdXRwdXQg IlwKICAgICAgZXhlYyBcJHByb2dkaXJcXFxcXCRwcm9ncmFtIFwkezErXCJcJEBcIn0KIgoJICA7 OwoKCSopCgkgICRlY2hvID4+ICRvdXRwdXQgIlwKICAgICAgIyBFeHBvcnQgdGhlIHBhdGggdG8g dGhlIHByb2dyYW0uCiAgICAgIFBBVEg9XCJcJHByb2dkaXI6XCRQQVRIXCIKICAgICAgZXhwb3J0 IFBBVEgKCiAgICAgIGV4ZWMgXCRwcm9ncmFtIFwkezErXCJcJEBcIn0KIgoJICA7OwoJZXNhYwoJ JGVjaG8gPj4gJG91dHB1dCAiXAogICAgICBcJGVjaG8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJv Z3JhbSBcJHsxK1wiXCRAXCJ9XCIKICAgICAgZXhpdCAxCiAgICBmaQogIGVsc2UKICAgICMgVGhl IHByb2dyYW0gZG9lc24ndCBleGlzdC4KICAgIFwkZWNobyBcIlwkMDogZXJyb3I6IFwkcHJvZ2Rp ci9cJHByb2dyYW0gZG9lcyBub3QgZXhpc3RcIiAxPiYyCiAgICBcJGVjaG8gXCJUaGlzIHNjcmlw dCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKICAgIGVjaG8gXCJTZWUg dGhlICRQQUNLQUdFIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIgMT4mMgog ICAgZXhpdCAxCiAgZmkKZmlcCiIKCWNobW9kICt4ICRvdXRwdXQKICAgICAgZmkKICAgICAgZXhp dCAwCiAgICAgIDs7CiAgICBlc2FjCgogICAgIyBTZWUgaWYgd2UgbmVlZCB0byBidWlsZCBhbiBv bGQtZmFzaGlvbmVkIGFyY2hpdmUuCiAgICBmb3Igb2xkbGliIGluICRvbGRsaWJzOyBkbwoKICAg ICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBjb252ZW5pZW5jZTsgdGhlbgoJb2xk b2Jqcz0iJGxpYm9ianNfc2F2ZSIKCWFkZGxpYnM9IiRjb252ZW5pZW5jZSIKCWJ1aWxkX2xpYnRv b2xfbGlicz1ubwogICAgICBlbHNlCglpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG1v ZHVsZTsgdGhlbgoJICBvbGRvYmpzPSIkbGlib2Jqc19zYXZlIgoJICBidWlsZF9saWJ0b29sX2xp YnM9bm8KCWVsc2UKCSAgb2xkb2Jqcz0iJG9ianMgImAkZWNobyAiWCRsaWJvYmpzX3NhdmUiIHwg JFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0nJC9kJyAtZSAnL1wubGliJC9kJyAtZSAi JGxvMm8iIHwgJE5MMlNQYAoJZmkKCWFkZGxpYnM9IiRvbGRfY29udmVuaWVuY2UiCiAgICAgIGZp CgogICAgICBpZiB0ZXN0IC1uICIkYWRkbGlicyI7IHRoZW4KCWdlbnRvcD0iJG91dHB1dF9vYmpk aXIvJHtvdXRwdXRuYW1lfXgiCgkkc2hvdyAiJHtybX1yICRnZW50b3AiCgkkcnVuICR7cm19ciAi JGdlbnRvcCIKCSRzaG93ICJta2RpciAkZ2VudG9wIgoJJHJ1biBta2RpciAiJGdlbnRvcCIKCXN0 YXR1cz0kPwoJaWYgdGVzdCAkc3RhdHVzIC1uZSAwICYmIHRlc3QgISAtZCAiJGdlbnRvcCI7IHRo ZW4KCSAgZXhpdCAkc3RhdHVzCglmaQoJZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCgkg IAoJIyBBZGQgaW4gbWVtYmVycyBmcm9tIGNvbnZlbmllbmNlIGFyY2hpdmVzLgoJZm9yIHhsaWIg aW4gJGFkZGxpYnM7IGRvCgkgICMgRXh0cmFjdCB0aGUgb2JqZWN0cy4KCSAgY2FzZSAiJHhsaWIi IGluCgkgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgeGFicz0iJHhsaWIiIDs7CgkgICopIHhh YnM9YHB3ZGAiLyR4bGliIiA7OwoJICBlc2FjCgkgIHhsaWI9YCRlY2hvICJYJHhsaWIiIHwgJFhz ZWQgLWUgJ3MlXi4qLyUlJ2AKCSAgeGRpcj0iJGdlbnRvcC8keGxpYiIKCgkgICRzaG93ICIke3Jt fXIgJHhkaXIiCgkgICRydW4gJHtybX1yICIkeGRpciIKCSAgJHNob3cgIm1rZGlyICR4ZGlyIgoJ ICAkcnVuIG1rZGlyICIkeGRpciIKCSAgc3RhdHVzPSQ/CgkgIGlmIHRlc3QgJHN0YXR1cyAtbmUg MCAmJiB0ZXN0ICEgLWQgIiR4ZGlyIjsgdGhlbgoJICAgIGV4aXQgJHN0YXR1cwoJICBmaQoJICAk c2hvdyAiKGNkICR4ZGlyICYmICRBUiB4ICR4YWJzKSIKCSAgJHJ1biBldmFsICIoY2QgXCR4ZGly ICYmICRBUiB4IFwkeGFicykiIHx8IGV4aXQgJD8KCgkgIG9sZG9ianM9IiRvbGRvYmpzICJgZmlu ZCAkeGRpciAtbmFtZSBcKi4ke29iamV4dH0gLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8 ICROTDJTUGAKCWRvbmUKICAgICAgZmkKCiAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBh cmNoaXZlIGNvbW1hbmRzLgogICAgICBpZiB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9uZXdf Y21kcyIgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KCWV2YWwgY21k cz1cIiRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzXCIKICAgICAgZWxzZQoJIyBFbnN1cmUgdGhh dCB3ZSBoYXZlIC5vIG9iamVjdHMgaW4gcGxhY2UgaW4gY2FzZSB3ZSBkZWNpZGVkCgkjIG5vdCB0 byBidWlsZCBhIHNoYXJlZCBsaWJyYXJ5LCBhbmQgaGF2ZSBmYWxsZW4gYmFjayB0byBidWlsZGlu ZwoJIyBzdGF0aWMgbGlicyBldmVuIHRob3VnaCAtLWRpc2FibGUtc3RhdGljIHdhcyBwYXNzZWQh Cglmb3Igb2xkb2JqIGluICRvbGRvYmpzOyBkbwoJICBpZiB0ZXN0ICEgLWYgJG9sZG9iajsgdGhl bgoJICAgIHhkaXI9YCRlY2hvICJYJG9sZG9iaiIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAoJ ICAgIGlmIHRlc3QgIlgkeGRpciIgPSAiWCRvbGRvYmoiOyB0aGVuCgkgICAgICB4ZGlyPSIuIgoJ ICAgIGVsc2UKCSAgICAgIHhkaXI9IiR4ZGlyIgoJICAgIGZpCgkgICAgYmFzZW9iaj1gJGVjaG8g Ilgkb2xkb2JqIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCgkgICAgb2JqPWAkZWNobyAiWCRiYXNl b2JqIiB8ICRYc2VkIC1lICIkbzJsbyJgCgkgICAgJHNob3cgIihjZCAkeGRpciAmJiAke0xOX1N9 ICRvYmogJGJhc2VvYmopIgoJICAgICRydW4gZXZhbCAnKGNkICR4ZGlyICYmICR7TE5fU30gJG9i aiAkYmFzZW9iaiknIHx8IGV4aXQgJD8KCSAgZmkKCWRvbmUKCglldmFsIGNtZHM9XCIkb2xkX2Fy Y2hpdmVfY21kc1wiCiAgICAgIGZpCiAgICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJ RlMiOyBJRlM9J34nCiAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCglJRlM9IiRzYXZlX2lmcyIK CSRzaG93ICIkY21kIgoJJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/CiAgICAgIGRvbmUKICAg ICAgSUZTPSIkc2F2ZV9pZnMiCiAgICBkb25lCgogICAgaWYgdGVzdCAtbiAiJGdlbmVyYXRlZCI7 IHRoZW4KICAgICAgJHNob3cgIiR7cm19ciRnZW5lcmF0ZWQiCiAgICAgICRydW4gJHtybX1yJGdl bmVyYXRlZAogICAgZmkKCiAgICAjIE5vdyBjcmVhdGUgdGhlIGxpYnRvb2wgYXJjaGl2ZS4KICAg IGNhc2UgIiRvdXRwdXQiIGluCiAgICAqLmxhKQogICAgICBvbGRfbGlicmFyeT0KICAgICAgaWYg dGVzdCAiJHJlbGVhc2Vfc3VmZml4IiA9IGFsbDsgdGhlbgogICAgICAgIHRlc3QgIiRidWlsZF9v bGRfbGlicyIgPSB5ZXMgJiYgb2xkX2xpYnJhcnk9IiRsaWJuYW1lJHJlbGVhc2UuJGxpYmV4dCIK ICAgICAgZWxzZQogICAgICB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIG9sZF9saWJy YXJ5PSIkbGlibmFtZS4kbGliZXh0IgogICAgICBmaQogICAgICAkc2hvdyAiY3JlYXRpbmcgJG91 dHB1dCIKCiAgICAgIGlmIHRlc3QgLW4gIiR4cnBhdGgiOyB0aGVuCgl0ZW1wX3hycGF0aD0KCWZv ciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KCSAgdGVtcF94cnBhdGg9IiR0ZW1wX3hycGF0aCAtUiRs aWJkaXIiCglkb25lCglkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX3hycGF0aCAkZGVwZW5kZW5jeV9s aWJzIgogICAgICBmaQoKICAgICAgIyBPbmx5IGNyZWF0ZSB0aGUgb3V0cHV0IGlmIG5vdCBhIGRy eSBydW4uCiAgICAgIGlmIHRlc3QgLXogIiRydW4iOyB0aGVuCglmb3IgaW5zdGFsbGVkIGluIG5v IHllczsgZG8KCSAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSB5ZXM7IHRoZW4KCSAgICBpZiB0ZXN0 IC16ICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCgkgICAgICBicmVhawoJICAgIGZpCgkgICAgb3V0 cHV0PSIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSJpCgkgIGZpCgkgICRybSAkb3V0cHV0Cgkg ICRlY2hvID4gJG91dHB1dCAiXAojICRvdXRwdXRuYW1lIC0gYSBsaWJ0b29sIGxpYnJhcnkgZmls ZQojIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAtIEdOVSAkUEFDS0FHRSAkVkVSU0lPTiRUSU1FU1RB TVAKIwojIFBsZWFzZSBETyBOT1QgZGVsZXRlIHRoaXMgZmlsZSEKIyBJdCBpcyBuZWNlc3Nhcnkg Zm9yIGxpbmtpbmcgdGhlIGxpYnJhcnkuCgojIFRoZSBuYW1lIHRoYXQgd2UgY2FuIGRsb3Blbigz KS4KZGxuYW1lPSckZGxuYW1lJwoKIyBOYW1lcyBvZiB0aGlzIGxpYnJhcnkuCmxpYnJhcnlfbmFt ZXM9JyRsaWJyYXJ5X25hbWVzJwoKIyBUaGUgbmFtZSBvZiB0aGUgc3RhdGljIGFyY2hpdmUuCm9s ZF9saWJyYXJ5PSckb2xkX2xpYnJhcnknCgojIExpYnJhcmllcyB0aGF0IHRoaXMgb25lIGRlcGVu ZHMgdXBvbi4KZGVwZW5kZW5jeV9saWJzPSckZGVwZW5kZW5jeV9saWJzJwoKIyBWZXJzaW9uIGlu Zm9ybWF0aW9uIGZvciAkbGlibmFtZS4KY3VycmVudD0kY3VycmVudAphZ2U9JGFnZQpyZXZpc2lv bj0kcmV2aXNpb24KCiMgSXMgdGhpcyBhbiBhbHJlYWR5IGluc3RhbGxlZCBsaWJyYXJ5PwppbnN0 YWxsZWQ9JGluc3RhbGxlZAoKIyBEaXJlY3RvcnkgdGhhdCB0aGlzIGxpYnJhcnkgbmVlZHMgdG8g YmUgaW5zdGFsbGVkIGluOgpsaWJkaXI9JyRpbnN0YWxsX2xpYmRpcidcCiIKCWRvbmUKICAgICAg ZmkKCiAgICAgICMgRG8gYSBzeW1ib2xpYyBsaW5rIHNvIHRoYXQgdGhlIGxpYnRvb2wgYXJjaGl2 ZSBjYW4gYmUgZm91bmQgaW4KICAgICAgIyBMRF9MSUJSQVJZX1BBVEggYmVmb3JlIHRoZSBwcm9n cmFtIGlzIGluc3RhbGxlZC4KICAgICAgJHNob3cgIihjZCAkb3V0cHV0X29iamRpciAmJiAkcm0g JG91dHB1dG5hbWUgJiYgJExOX1MgLi4vJG91dHB1dG5hbWUgJG91dHB1dG5hbWUpIgogICAgICAk cnVuIGV2YWwgIihjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJG91dHB1dG5hbWUgJiYgJExOX1Mg Li4vJG91dHB1dG5hbWUgJG91dHB1dG5hbWUpIiB8fCBleGl0ICQ/CiAgICAgIDs7CiAgICBlc2Fj CiAgICBleGl0IDAKICAgIDs7CgogICMgbGlidG9vbCBpbnN0YWxsIG1vZGUKICBpbnN0YWxsKQog ICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogaW5zdGFsbCIKCiAgICAjIFRoZXJlIG1heSBiZSBhbiBv cHRpb25hbCBzaCgxKSBhcmd1bWVudCBhdCB0aGUgYmVnaW5uaW5nIG9mCiAgICAjIGluc3RhbGxf cHJvZyAoZXNwZWNpYWxseSBvbiBXaW5kb3dzIE5UKS4KICAgIGlmIHRlc3QgIiRub25vcHQiID0g IiRTSEVMTCIgfHwgdGVzdCAiJG5vbm9wdCIgPSAvYmluL3NoOyB0aGVuCiAgICAgICMgQWVzdGhl dGljYWxseSBxdW90ZSBpdC4KICAgICAgYXJnPWAkZWNobyAiWCRub25vcHQiIHwgJFhzZWQgLWUg IiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICBjYXNlICIkYXJnIiBpbgogICAgICAqW1xbXH5cI1xe XCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKikKCWFyZz0iXCIkYXJnXCIiCgk7Owog ICAgICBlc2FjCiAgICAgIGluc3RhbGxfcHJvZz0iJGFyZyAiCiAgICAgIGFyZz0iJDEiCiAgICAg IHNoaWZ0CiAgICBlbHNlCiAgICAgIGluc3RhbGxfcHJvZz0KICAgICAgYXJnPSIkbm9ub3B0Igog ICAgZmkKCiAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBv ZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCiAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQu CiAgICBhcmc9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCiAg ICBjYXNlICIkYXJnIiBpbgogICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wg XAldKnwqXSopCiAgICAgIGFyZz0iXCIkYXJnXCIiCiAgICAgIDs7CiAgICBlc2FjCiAgICBpbnN0 YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckYXJnIgoKICAgICMgV2UgbmVlZCB0byBhY2NlcHQgYXQg bGVhc3QgYWxsIHRoZSBCU0QgaW5zdGFsbCBmbGFncy4KICAgIGRlc3Q9CiAgICBmaWxlcz0KICAg IG9wdHM9CiAgICBwcmV2PQogICAgaW5zdGFsbF90eXBlPQogICAgaXNkaXI9bm8KICAgIHN0cmlw bWU9CiAgICBmb3IgYXJnCiAgICBkbwogICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KCWZp bGVzPSIkZmlsZXMgJGRlc3QiCglkZXN0PSIkYXJnIgoJY29udGludWUKICAgICAgZmkKCiAgICAg IGNhc2UgIiRhcmciIGluCiAgICAgIC1kKSBpc2Rpcj15ZXMgOzsKICAgICAgLWYpIHByZXY9Ii1m IiA7OwogICAgICAtZykgcHJldj0iLWciIDs7CiAgICAgIC1tKSBwcmV2PSItbSIgOzsKICAgICAg LW8pIHByZXY9Ii1vIiA7OwogICAgICAtcykKCXN0cmlwbWU9IiAtcyIKCWNvbnRpbnVlCgk7Owog ICAgICAtKikgOzsKCiAgICAgICopCgkjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZGVkIGFu IGFyZ3VtZW50LCB0aGVuIHNraXAgaXQuCglpZiB0ZXN0IC1uICIkcHJldiI7IHRoZW4KCSAgcHJl dj0KCWVsc2UKCSAgZGVzdD0iJGFyZyIKCSAgY29udGludWUKCWZpCgk7OwogICAgICBlc2FjCgog ICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgogICAgICBhcmc9YCRlY2hv ICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCiAgICAgIGNhc2UgIiRhcmci IGluCiAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qKQoJ YXJnPSJcIiRhcmdcIiIKCTs7CiAgICAgIGVzYWMKICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFs bF9wcm9nICRhcmciCiAgICBkb25lCgogICAgaWYgdGVzdCAteiAiJGluc3RhbGxfcHJvZyI7IHRo ZW4KICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhbiBpbnN0YWxsIHBy b2dyYW0iIDE+JjIKICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCiAgICAgIGV4aXQgMQogICAgZmkK CiAgICBpZiB0ZXN0IC1uICIkcHJldiI7IHRoZW4KICAgICAgJGVjaG8gIiRtb2RlbmFtZTogdGhl IFxgJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIgMT4mMgogICAgICAkZWNobyAi JGhlbHAiIDE+JjIKICAgICAgZXhpdCAxCiAgICBmaQoKICAgIGlmIHRlc3QgLXogIiRmaWxlcyI7 IHRoZW4KICAgICAgaWYgdGVzdCAteiAiJGRlc3QiOyB0aGVuCgkkZWNobyAiJG1vZGVuYW1lOiBu byBmaWxlIG9yIGRlc3RpbmF0aW9uIHNwZWNpZmllZCIgMT4mMgogICAgICBlbHNlCgkkZWNobyAi JG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgZGVzdGluYXRpb24iIDE+JjIKICAgICAgZmkK ICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCiAgICAgIGV4aXQgMQogICAgZmkKCiAgICAjIFN0cmlw IGFueSB0cmFpbGluZyBzbGFzaCBmcm9tIHRoZSBkZXN0aW5hdGlvbi4KICAgIGRlc3Q9YCRlY2hv ICJYJGRlc3QiIHwgJFhzZWQgLWUgJ3MlLyQlJSdgCgogICAgIyBDaGVjayB0byBzZWUgdGhhdCB0 aGUgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnkuCiAgICB0ZXN0IC1kICIkZGVzdCIgJiYgaXNk aXI9eWVzCiAgICBpZiB0ZXN0ICIkaXNkaXIiID0geWVzOyB0aGVuCiAgICAgIGRlc3RkaXI9IiRk ZXN0IgogICAgICBkZXN0bmFtZT0KICAgIGVsc2UKICAgICAgZGVzdGRpcj1gJGVjaG8gIlgkZGVz dCIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAogICAgICB0ZXN0ICJYJGRlc3RkaXIiID0gIlgk ZGVzdCIgJiYgZGVzdGRpcj0uCiAgICAgIGRlc3RuYW1lPWAkZWNobyAiWCRkZXN0IiB8ICRYc2Vk IC1lICdzJV4uKi8lJSdgCgogICAgICAjIE5vdCBhIGRpcmVjdG9yeSwgc28gY2hlY2sgdG8gc2Vl IHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZmlsZSBzcGVjaWZpZWQuCiAgICAgIHNldCBkdW1teSAk ZmlsZXMKICAgICAgaWYgdGVzdCAkIyAtZ3QgMjsgdGhlbgoJJGVjaG8gIiRtb2RlbmFtZTogXGAk ZGVzdCcgaXMgbm90IGEgZGlyZWN0b3J5IiAxPiYyCgkkZWNobyAiJGhlbHAiIDE+JjIKCWV4aXQg MQogICAgICBmaQogICAgZmkKICAgIGNhc2UgIiRkZXN0ZGlyIiBpbgogICAgW1xcL10qIHwgW0Et WmEtel06W1xcL10qKSA7OwogICAgKikKICAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwoJY2Fz ZSAiJGZpbGUiIGluCgkqLmxvKSA7OwoJKikKCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkZGVzdGRp cicgbXVzdCBiZSBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSIgMT4mMgoJICAkZWNobyAiJGhl bHAiIDE+JjIKCSAgZXhpdCAxCgkgIDs7Cgllc2FjCiAgICAgIGRvbmUKICAgICAgOzsKICAgIGVz YWMKCiAgICAjIFRoaXMgdmFyaWFibGUgdGVsbHMgd3JhcHBlciBzY3JpcHRzIGp1c3QgdG8gc2V0 IHZhcmlhYmxlcyByYXRoZXIKICAgICMgdGhhbiBydW5uaW5nIHRoZWlyIHByb2dyYW1zLgogICAg bGlidG9vbF9pbnN0YWxsX21hZ2ljPSIkbWFnaWMiCgogICAgc3RhdGljbGlicz0KICAgIGZ1dHVy ZV9saWJkaXJzPQogICAgY3VycmVudF9saWJkaXJzPQogICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBk bwoKICAgICAgIyBEbyBlYWNoIGluc3RhbGxhdGlvbi4KICAgICAgY2FzZSAiJGZpbGUiIGluCiAg ICAgICouYSB8ICoubGliKQoJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KCXN0YXRp Y2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgoJOzsKCiAgICAgICoubGEpCgkjIENoZWNrIHRvIHNl ZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgoJaWYgKHNlZCAtZSAnMnEn ICRmaWxlIHwgZWdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAy PiYxOyB0aGVuIDoKCWVsc2UKCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkZmlsZScgaXMgbm90IGEg dmFsaWQgbGlidG9vbCBhcmNoaXZlIiAxPiYyCgkgICRlY2hvICIkaGVscCIgMT4mMgoJICBleGl0 IDEKCWZpCgoJbGlicmFyeV9uYW1lcz0KCW9sZF9saWJyYXJ5PQoJIyBJZiB0aGVyZSBpcyBubyBk aXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGFkZCBvbmUuCgljYXNlICIkZmlsZSIgaW4KCSovKiB8 ICpcXCopIC4gJGZpbGUgOzsKCSopIC4gLi8kZmlsZSA7OwoJZXNhYwoKCSMgQWRkIHRoZSBsaWJk aXIgdG8gY3VycmVudF9saWJkaXJzIGlmIGl0IGlzIHRoZSBkZXN0aW5hdGlvbi4KCWlmIHRlc3Qg IlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCgkgIGNhc2UgIiRjdXJyZW50X2xpYmRpcnMg IiBpbgoJICAqIiAkbGliZGlyICIqKSA7OwoJICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50 X2xpYmRpcnMgJGxpYmRpciIgOzsKCSAgZXNhYwoJZWxzZQoJICAjIE5vdGUgdGhlIGxpYmRpciBh cyBhIGZ1dHVyZSBsaWJkaXIuCgkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCgkgICoiICRs aWJkaXIgIiopIDs7CgkgICopIGZ1dHVyZV9saWJkaXJzPSIkZnV0dXJlX2xpYmRpcnMgJGxpYmRp ciIgOzsKCSAgZXNhYwoJZmkKCglkaXI9ImAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJS9b Xi9dKiQlJSdgLyIKCXRlc3QgIlgkZGlyIiA9ICJYJGZpbGUvIiAmJiBkaXI9CglkaXI9IiRkaXIk b2JqZGlyIgoKCSMgU2VlIHRoZSBuYW1lcyBvZiB0aGUgc2hhcmVkIGxpYnJhcnkuCglzZXQgZHVt bXkgJGxpYnJhcnlfbmFtZXMKCWlmIHRlc3QgLW4gIiQyIjsgdGhlbgoJICByZWFsbmFtZT0iJDIi CgkgIHNoaWZ0CgkgIHNoaWZ0CgoJICAjIEluc3RhbGwgdGhlIHNoYXJlZCBsaWJyYXJ5IGFuZCBi dWlsZCB0aGUgc3ltbGlua3MuCgkgICRzaG93ICIkaW5zdGFsbF9wcm9nICRkaXIvJHJlYWxuYW1l ICRkZXN0ZGlyLyRyZWFsbmFtZSIKCSAgJHJ1biBldmFsICIkaW5zdGFsbF9wcm9nICRkaXIvJHJl YWxuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgfHwgZXhpdCAkPwoKCSAgaWYgdGVzdCAkIyAtZ3Qg MDsgdGhlbgoJICAgICMgRGVsZXRlIHRoZSBvbGQgc3ltbGlua3MsIGFuZCBjcmVhdGUgbmV3IG9u ZXMuCgkgICAgZm9yIGxpbmtuYW1lCgkgICAgZG8KCSAgICAgIGlmIHRlc3QgIiRsaW5rbmFtZSIg IT0gIiRyZWFsbmFtZSI7IHRoZW4KCQkkc2hvdyAiKGNkICRkZXN0ZGlyICYmICRybSAkbGlua25h bWUgJiYgJExOX1MgJHJlYWxuYW1lICRsaW5rbmFtZSkiCgkJJHJ1biBldmFsICIoY2QgJGRlc3Rk aXIgJiYgJHJtICRsaW5rbmFtZSAmJiAkTE5fUyAkcmVhbG5hbWUgJGxpbmtuYW1lKSIKCSAgICAg IGZpCgkgICAgZG9uZQoJICBmaQoKCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0 YWxsIGNvbW1hbmRzLgoJICBsaWI9IiRkZXN0ZGlyLyRyZWFsbmFtZSIKCSAgZXZhbCBjbWRzPVwi JHBvc3RpbnN0YWxsX2NtZHNcIgoJICBJRlM9IiR7SUZTPSAJfSI7IHNhdmVfaWZzPSIkSUZTIjsg SUZTPSd+JwoJICBmb3IgY21kIGluICRjbWRzOyBkbwoJICAgIElGUz0iJHNhdmVfaWZzIgoJICAg ICRzaG93ICIkY21kIgoJICAgICRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwoJICBkb25lCgkg IElGUz0iJHNhdmVfaWZzIgoJZmkKCgkjIEluc3RhbGwgdGhlIHBzZXVkby1saWJyYXJ5IGZvciBp bmZvcm1hdGlvbiBwdXJwb3Nlcy4KCWlmIHRlc3QgIiRpbnN0YWxsX2x0bGlicyIgPSB5ZXM7IHRo ZW4KCW5hbWU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKCWluc3RuYW1l PSIkZGlyLyRuYW1lImkKCSRzaG93ICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8k bmFtZSIKCSRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUi IHx8IGV4aXQgJD8KCWZpCgoJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9v LgoJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGly LyRvbGRfbGlicmFyeSIKCTs7CgogICAgICAqLmxvKQoJIyBJbnN0YWxsIChpLmUuIGNvcHkpIGEg bGlidG9vbCBvYmplY3QuCgoJIyBGaWd1cmUgb3V0IGRlc3RpbmF0aW9uIGZpbGUgbmFtZSwgaWYg aXQgd2Fzbid0IGFscmVhZHkgc3BlY2lmaWVkLgoJaWYgdGVzdCAtbiAiJGRlc3RuYW1lIjsgdGhl bgoJICBkZXN0ZmlsZT0iJGRlc3RkaXIvJGRlc3RuYW1lIgoJZWxzZQoJICBkZXN0ZmlsZT1gJGVj aG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAoJICBkZXN0ZmlsZT0iJGRlc3RkaXIv JGRlc3RmaWxlIgoJZmkKCgkjIERlZHVjZSB0aGUgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gb2xk LXN0eWxlIG9iamVjdCBmaWxlLgoJY2FzZSAiJGRlc3RmaWxlIiBpbgoJKi5sbykKCSAgc3RhdGlj ZGVzdD1gJGVjaG8gIlgkZGVzdGZpbGUiIHwgJFhzZWQgLWUgIiRsbzJvImAKCSAgOzsKCSoubyB8 ICoub2JqKQoJICBzdGF0aWNkZXN0PSIkZGVzdGZpbGUiCgkgIGRlc3RmaWxlPQoJICA7OwoJKikK CSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGNvcHkgYSBsaWJ0b29sIG9iamVjdCB0byBcYCRk ZXN0ZmlsZSciIDE+JjIKCSAgJGVjaG8gIiRoZWxwIiAxPiYyCgkgIGV4aXQgMQoJICA7OwoJZXNh YwoKCSMgSW5zdGFsbCB0aGUgbGlidG9vbCBvYmplY3QgaWYgcmVxdWVzdGVkLgoJaWYgdGVzdCAt biAiJGRlc3RmaWxlIjsgdGhlbgoJICAkc2hvdyAiJGluc3RhbGxfcHJvZyAkZmlsZSAkZGVzdGZp bGUiCgkgICRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyAkZmlsZSAkZGVzdGZpbGUiIHx8IGV4aXQg JD8KCWZpCgoJIyBJbnN0YWxsIHRoZSBvbGQgb2JqZWN0IGlmIGVuYWJsZWQuCglpZiB0ZXN0ICIk YnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCgkgICMgRGVkdWNlIHRoZSBuYW1lIG9mIHRoZSBv bGQtc3R5bGUgb2JqZWN0IGZpbGUuCgkgIHN0YXRpY29iaj1gJGVjaG8gIlgkZmlsZSIgfCAkWHNl ZCAtZSAiJGxvMm8iYAoKCSAgJHNob3cgIiRpbnN0YWxsX3Byb2cgJHN0YXRpY29iaiAkc3RhdGlj ZGVzdCIKCSAgJHJ1biBldmFsICIkaW5zdGFsbF9wcm9nIFwkc3RhdGljb2JqIFwkc3RhdGljZGVz dCIgfHwgZXhpdCAkPwoJZmkKCWV4aXQgMAoJOzsKCiAgICAgICopCgkjIEZpZ3VyZSBvdXQgZGVz dGluYXRpb24gZmlsZSBuYW1lLCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBzcGVjaWZpZWQuCglpZiB0 ZXN0IC1uICIkZGVzdG5hbWUiOyB0aGVuCgkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdG5hbWUi CgllbHNlCgkgIGRlc3RmaWxlPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdg CgkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdGZpbGUiCglmaQoKCSMgRG8gYSB0ZXN0IHRvIHNl ZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KCWlmIChzZWQgLWUgJzRxJyAk ZmlsZSB8IGVncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4m MTsgdGhlbgoJICBsaW5rX2FnYWluc3RfbGlidG9vbF9saWJzPQoJICByZWxpbmtfY29tbWFuZD0K CgkgICMgSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBhZGQgb25lLgoJ ICBjYXNlICIkZmlsZSIgaW4KCSAgKi8qIHwgKlxcKikgLiAkZmlsZSA7OwoJICAqKSAuIC4vJGZp bGUgOzsKCSAgZXNhYwoKCSAgIyBDaGVjayB0aGUgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGhhdmUg YmVlbiBzZXQuCgkgIGlmIHRlc3QgLXogIiRsaW5rX2FnYWluc3RfbGlidG9vbF9saWJzIjsgdGhl bgoJICAgICRlY2hvICIkbW9kZW5hbWU6IGludmFsaWQgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBc YCRmaWxlJyIgMT4mMgoJICAgIGV4aXQgMQoJICBmaQoKCSAgZmluYWxpemU9eWVzCgkgIGZvciBs aWIgaW4gJGxpbmtfYWdhaW5zdF9saWJ0b29sX2xpYnM7IGRvCgkgICAgIyBDaGVjayB0byBzZWUg dGhhdCBlYWNoIGxpYnJhcnkgaXMgaW5zdGFsbGVkLgoJICAgIGxpYmRpcj0KCSAgICBpZiB0ZXN0 IC1mICIkbGliIjsgdGhlbgoJICAgICAgIyBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgY29tcG9u ZW50LCB0aGVuIGFkZCBvbmUuCgkgICAgICBjYXNlICIkbGliIiBpbgoJICAgICAgKi8qIHwgKlxc KikgLiAkbGliIDs7CgkgICAgICAqKSAuIC4vJGxpYiA7OwoJICAgICAgZXNhYwoJICAgIGZpCgkg ICAgbGliZmlsZT0iJGxpYmRpci9gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJWcn YCIKCSAgICBpZiB0ZXN0IC1uICIkbGliZGlyIiAmJiB0ZXN0ICEgLWYgIiRsaWJmaWxlIjsgdGhl bgoJICAgICAgZmluYWxpemU9bm8KCSAgICBmaQoJICBkb25lCgoJICBvdXRwdXRuYW1lPQoJICBp ZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IG5vICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7 IHRoZW4KCSAgICBpZiB0ZXN0ICIkZmluYWxpemUiID0geWVzICYmIHRlc3QgLXogIiRydW4iOyB0 aGVuCgkgICAgICB0bXBkaXI9Ii90bXAiCgkgICAgICB0ZXN0IC1uICIkVE1QRElSIiAmJiB0bXBk aXI9IiRUTVBESVIiCgkgICAgICB0bXBkaXI9IiR0bXBkaXIvbGlidG9vbC0kJCIKCSAgICAgIHNh dmVfdW1hc2s9YHVtYXNrYAoJICAgICAgdW1hc2sgMDA3NwoJICAgICAgaWYgJG1rZGlyICIkdG1w ZGlyIjsgdGhlbgoJCXVtYXNrICRzYXZlX3VtYXNrCgkgICAgICBlbHNlCgkJdW1hc2sgJHNhdmVf dW1hc2sKCQkkZWNobyAiJG1vZGVuYW1lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSB0ZW1wb3Jhcnkg ZGlyZWN0b3J5IFxgJHRtcGRpciciIDE+JjIKCQljb250aW51ZQoJICAgICAgZmkKCSAgICAgIG91 dHB1dG5hbWU9IiR0bXBkaXIvJGZpbGUiCgkgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxl IHNwZWNpZmljYXRpb24uCgkgICAgICByZWxpbmtfY29tbWFuZD1gJGVjaG8gIlgkcmVsaW5rX2Nv bW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0bmFtZSInJWcnYAoKCSAgICAg ICRzaG93ICIkcmVsaW5rX2NvbW1hbmQiCgkgICAgICBpZiAkcnVuIGV2YWwgIiRyZWxpbmtfY29t bWFuZCI7IHRoZW4gOgoJICAgICAgZWxzZQoJCSRlY2hvICIkbW9kZW5hbWU6IGVycm9yOiByZWxp bmsgXGAkZmlsZScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdCIg MT4mMgoJCSR7cm19ciAiJHRtcGRpciIKCQljb250aW51ZQoJICAgICAgZmkKCSAgICAgIGZpbGU9 IiRvdXRwdXRuYW1lIgoJICAgIGVsc2UKCSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6 IGNhbm5vdCByZWxpbmsgXGAkZmlsZSciIDE+JjIKCSAgICBmaQoJICBlbHNlCgkgICAgIyBJbnN0 YWxsIHRoZSBiaW5hcnkgdGhhdCB3ZSBjb21waWxlZCBlYXJsaWVyLgoJICAgIGZpbGU9YCRlY2hv ICJYJGZpbGUiIHwgJFhzZWQgLWUgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCgkgIGZpCglm aQoKCSRzaG93ICIkaW5zdGFsbF9wcm9nJHN0cmlwbWUgJGZpbGUgJGRlc3RmaWxlIgoJJHJ1biBl dmFsICIkaW5zdGFsbF9wcm9nXCRzdHJpcG1lIFwkZmlsZSBcJGRlc3RmaWxlIiB8fCBleGl0ICQ/ Cgl0ZXN0IC1uICIkb3V0cHV0bmFtZSIgJiYgJHtybX1yICIkdG1wZGlyIgoJOzsKICAgICAgZXNh YwogICAgZG9uZQoKICAgIGZvciBmaWxlIGluICRzdGF0aWNsaWJzOyBkbwogICAgICBuYW1lPWAk ZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCgogICAgICAjIFNldCB1cCB0aGUg cmFubGliIHBhcmFtZXRlcnMuCiAgICAgIG9sZGxpYj0iJGRlc3RkaXIvJG5hbWUiCgogICAgICAk c2hvdyAiJGluc3RhbGxfcHJvZyAkZmlsZSAkb2xkbGliIgogICAgICAkcnVuIGV2YWwgIiRpbnN0 YWxsX3Byb2cgXCRmaWxlIFwkb2xkbGliIiB8fCBleGl0ICQ/CgogICAgICAjIERvIGVhY2ggY29t bWFuZCBpbiB0aGUgcG9zdGluc3RhbGwgY29tbWFuZHMuCiAgICAgIGV2YWwgY21kcz1cIiRvbGRf cG9zdGluc3RhbGxfY21kc1wiCiAgICAgIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJRlMi OyBJRlM9J34nCiAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCglJRlM9IiRzYXZlX2lmcyIKCSRz aG93ICIkY21kIgoJJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/CiAgICAgIGRvbmUKICAgICAg SUZTPSIkc2F2ZV9pZnMiCiAgICBkb25lCgogICAgaWYgdGVzdCAtbiAiJGZ1dHVyZV9saWJkaXJz IjsgdGhlbgogICAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiByZW1lbWJlciB0byBydW4g XGAkcHJvZ25hbWUgLS1maW5pc2gkZnV0dXJlX2xpYmRpcnMnIiAxPiYyCiAgICBmaQoKICAgIGlm IHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiOyB0aGVuCiAgICAgICMgTWF5YmUganVzdCBkbyBh IGRyeSBydW4uCiAgICAgIHRlc3QgLW4gIiRydW4iICYmIGN1cnJlbnRfbGliZGlycz0iIC1uJGN1 cnJlbnRfbGliZGlycyIKICAgICAgZXhlYyAkU0hFTEwgJDAgLS1maW5pc2gkY3VycmVudF9saWJk aXJzCiAgICAgIGV4aXQgMQogICAgZmkKCiAgICBleGl0IDAKICAgIDs7CgogICMgbGlidG9vbCBm aW5pc2ggbW9kZQogIGZpbmlzaCkKICAgIG1vZGVuYW1lPSIkbW9kZW5hbWU6IGZpbmlzaCIKICAg IGxpYmRpcnM9IiRub25vcHQiCiAgICBhZG1pbmNtZHM9CgogICAgaWYgdGVzdCAtbiAiJGZpbmlz aF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KICAgICAgZm9y IGRpcgogICAgICBkbwoJbGliZGlycz0iJGxpYmRpcnMgJGRpciIKICAgICAgZG9uZQoKICAgICAg Zm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRo ZW4KCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KCSAgZXZhbCBj bWRzPVwiJGZpbmlzaF9jbWRzXCIKCSAgSUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0iJElGUyI7 IElGUz0nficKCSAgZm9yIGNtZCBpbiAkY21kczsgZG8KCSAgICBJRlM9IiRzYXZlX2lmcyIKCSAg ICAkc2hvdyAiJGNtZCIKCSAgICAkcnVuIGV2YWwgIiRjbWQiIHx8IGFkbWluY21kcz0iJGFkbWlu Y21kcwogICAgICAgJGNtZCIKCSAgZG9uZQoJICBJRlM9IiRzYXZlX2lmcyIKCWZpCglpZiB0ZXN0 IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCgkgICMgRG8gdGhlIHNpbmdsZSBmaW5pc2hfZXZhbC4K CSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKCSAgJHJ1biBldmFsICIkY21kcyIgfHwgYWRt aW5jbWRzPSIkYWRtaW5jbWRzCiAgICAgICAkY21kcyIKCWZpCiAgICAgIGRvbmUKICAgIGZpCgog ICAgIyBFeGl0IGhlcmUgaWYgdGhleSB3YW50ZWQgc2lsZW50IG1vZGUuCiAgICB0ZXN0ICIkc2hv dyIgPSA6ICYmIGV4aXQgMAoKICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCiAgICBlY2hvICJMaWJy YXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCiAgICBmb3IgbGliZGlyIGluICRsaWJkaXJz OyBkbwogICAgICBlY2hvICIgICAkbGliZGlyIgogICAgZG9uZQogICAgZWNobwogICAgZWNobyAi SWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJy YXJpZXMiCiAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBl aXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5h bWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSBcYC1MTElCRElSJyIKICAgIGVjaG8gImZsYWcgZHVy aW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKICAgIGlm IHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgogICAgICBlY2hvICIgICAtIGFkZCBMSUJE SVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgogICAgICBl Y2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCiAgICBmaQogICAgaWYgdGVzdCAtbiAiJHJ1bnBh dGhfdmFyIjsgdGhlbgogICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBh dGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKICAgICAgZWNobyAiICAgICBkdXJpbmcgbGlu a2luZyIKICAgIGZpCiAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7 IHRoZW4KICAgICAgbGliZGlyPUxJQkRJUgogICAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGli ZGlyX2ZsYWdfc3BlY1wiCgogICAgICBlY2hvICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2Vy IGZsYWciCiAgICBmaQogICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KICAgICAgZWNo byAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRz OiRhZG1pbmNtZHMiCiAgICBmaQogICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4K ICAgICAgZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJ UiB0byBcYC9ldGMvbGQuc28uY29uZiciCiAgICBmaQogICAgZWNobwogICAgZWNobyAiU2VlIGFu eSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBm b3IiCiAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQu c28oOCkgbWFudWFsIHBhZ2VzLiIKICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCiAgICBleGl0IDAK ICAgIDs7CgogICMgbGlidG9vbCBleGVjdXRlIG1vZGUKICBleGVjdXRlKQogICAgbW9kZW5hbWU9 IiRtb2RlbmFtZTogZXhlY3V0ZSIKCiAgICAjIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY29t bWFuZCBuYW1lLgogICAgY21kPSIkbm9ub3B0IgogICAgaWYgdGVzdCAteiAiJGNtZCI7IHRoZW4K ICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiIDE+JjIK ICAgICAgJGVjaG8gIiRoZWxwIgogICAgICBleGl0IDEKICAgIGZpCgogICAgIyBIYW5kbGUgLWRs b3BlbiBmbGFncyBpbW1lZGlhdGVseS4KICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7 IGRvCiAgICAgIGlmIHRlc3QgISAtZiAiJGZpbGUiOyB0aGVuCgkkZWNobyAiJG1vZGVuYW1lOiBc YCRmaWxlJyBpcyBub3QgYSBmaWxlIiAxPiYyCgkkZWNobyAiJGhlbHAiIDE+JjIKCWV4aXQgMQog ICAgICBmaQoKICAgICAgZGlyPQogICAgICBjYXNlICIkZmlsZSIgaW4KICAgICAgKi5sYSkKCSMg Q2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCglpZiAo c2VkIC1lICcycScgJGZpbGUgfCBlZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+ L2Rldi9udWxsIDI+JjE7IHRoZW4gOgoJZWxzZQoJICAkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWIn IGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgoJICAkZWNobyAiJGhlbHAiIDE+ JjIKCSAgZXhpdCAxCglmaQoKCSMgUmVhZCB0aGUgbGlidG9vbCBsaWJyYXJ5LgoJZGxuYW1lPQoJ bGlicmFyeV9uYW1lcz0KCgkjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRo ZW4gYWRkIG9uZS4KCWNhc2UgIiRmaWxlIiBpbgoJKi8qIHwgKlxcKikgLiAkZmlsZSA7OwoJKikg LiAuLyRmaWxlIDs7Cgllc2FjCgoJIyBTa2lwIHRoaXMgbGlicmFyeSBpZiBpdCBjYW5ub3QgYmUg ZGxvcGVuZWQuCglpZiB0ZXN0IC16ICIkZGxuYW1lIjsgdGhlbgoJICAjIFdhcm4gaWYgaXQgd2Fz IGEgc2hhcmVkIGxpYnJhcnkuCgkgIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIiAmJiAkZWNobyAi JG1vZGVuYW1lOiB3YXJuaW5nOiBcYCRmaWxlJyB3YXMgbm90IGxpbmtlZCB3aXRoIFxgLWV4cG9y dC1keW5hbWljJyIKCSAgY29udGludWUKCWZpCgoJZGlyPWAkZWNobyAiWCRmaWxlIiB8ICRYc2Vk IC1lICdzJS9bXi9dKiQlJSdgCgl0ZXN0ICJYJGRpciIgPSAiWCRmaWxlIiAmJiBkaXI9LgoKCWlm IHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgoJICBkaXI9IiRkaXIvJG9iamRp ciIKCWVsc2UKCSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBc YCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIgMT4mMgoJICBleGl0IDEKCWZpCgk7OwoKICAgICAg Ki5sbykKCSMgSnVzdCBhZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSAubG8gZmlsZS4K CWRpcj1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAoJdGVzdCAiWCRk aXIiID0gIlgkZmlsZSIgJiYgZGlyPS4KCTs7CgogICAgICAqKQoJJGVjaG8gIiRtb2RlbmFtZTog d2FybmluZyBcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIG5vbi1saWJ0b29sIGxpYnJhcmllcyBh bmQgb2JqZWN0cyIgMT4mMgoJY29udGludWUKCTs7CiAgICAgIGVzYWMKCiAgICAgICMgR2V0IHRo ZSBhYnNvbHV0ZSBwYXRobmFtZS4KICAgICAgYWJzZGlyPWBjZCAiJGRpciIgJiYgcHdkYAogICAg ICB0ZXN0IC1uICIkYWJzZGlyIiAmJiBkaXI9IiRhYnNkaXIiCgogICAgICAjIE5vdyBhZGQgdGhl IGRpcmVjdG9yeSB0byBzaGxpYnBhdGhfdmFyLgogICAgICBpZiBldmFsICJ0ZXN0IC16IFwiXCQk c2hsaWJwYXRoX3ZhclwiIjsgdGhlbgoJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpclwiIgog ICAgICBlbHNlCglldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyOlwkJHNobGlicGF0aF92YXJc IiIKICAgICAgZmkKICAgIGRvbmUKCiAgICAjIFRoaXMgdmFyaWFibGUgdGVsbHMgd3JhcHBlciBz Y3JpcHRzIGp1c3QgdG8gc2V0IHNobGlicGF0aF92YXIKICAgICMgcmF0aGVyIHRoYW4gcnVubmlu ZyB0aGVpciBwcm9ncmFtcy4KICAgIGxpYnRvb2xfZXhlY3V0ZV9tYWdpYz0iJG1hZ2ljIgoKICAg ICMgQ2hlY2sgaWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgYSB3cmFwcGVyIHNjcmlwdC4KICAg IGFyZ3M9CiAgICBmb3IgZmlsZQogICAgZG8KICAgICAgY2FzZSAiJGZpbGUiIGluCiAgICAgIC0q KSA7OwogICAgICAqKQoJIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgcmVhbGx5IGEgbGli dG9vbCBwcm9ncmFtLgoJaWYgKHNlZCAtZSAnNHEnICRmaWxlIHwgZWdyZXAgIl4jIEdlbmVyYXRl ZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCgkgICMgSWYgdGhlcmUgaXMg bm8gZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBhZGQgb25lLgoJICBjYXNlICIkZmlsZSIgaW4K CSAgKi8qIHwgKlxcKikgLiAkZmlsZSA7OwoJICAqKSAuIC4vJGZpbGUgOzsKCSAgZXNhYwoKCSAg IyBUcmFuc2Zvcm0gYXJnIHRvIHdyYXBwZWQgbmFtZS4KCSAgZmlsZT0iJHByb2dkaXIvJHByb2dy YW0iCglmaQoJOzsKICAgICAgZXNhYwogICAgICAjIFF1b3RlIGFyZ3VtZW50cyAodG8gcHJlc2Vy dmUgc2hlbGwgbWV0YWNoYXJhY3RlcnMpLgogICAgICBmaWxlPWAkZWNobyAiWCRmaWxlIiB8ICRY c2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgYXJncz0iJGFyZ3MgXCIkZmlsZVwiIgog ICAgZG9uZQoKICAgIGlmIHRlc3QgLXogIiRydW4iOyB0aGVuCiAgICAgIGlmIHRlc3QgLW4gIiRz aGxpYnBhdGhfdmFyIjsgdGhlbgogICAgICAgICMgRXhwb3J0IHRoZSBzaGxpYnBhdGhfdmFyLgog ICAgICAgIGV2YWwgImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKICAgICAgZmkKCiAgICAgICMgUmVz dG9yZSBzYXZlZCBlbnZpcm9tZW50IHZhcmlhYmxlcwogICAgICBpZiB0ZXN0ICIke3NhdmVfTENf QUxMK3NldH0iID0gc2V0OyB0aGVuCglMQ19BTEw9IiRzYXZlX0xDX0FMTCI7IGV4cG9ydCBMQ19B TEwKICAgICAgZmkKICAgICAgaWYgdGVzdCAiJHtzYXZlX0xBTkcrc2V0fSIgPSBzZXQ7IHRoZW4K CUxBTkc9IiRzYXZlX0xBTkciOyBleHBvcnQgTEFORwogICAgICBmaQoKICAgICAgIyBOb3cgYWN0 dWFsbHkgZXhlYyB0aGUgY29tbWFuZC4KICAgICAgZXZhbCAiZXhlYyBcJGNtZCRhcmdzIgoKICAg ICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGV4ZWMgXCRjbWQkYXJncyIKICAgICAgZXhpdCAx CiAgICBlbHNlCiAgICAgICMgRGlzcGxheSB3aGF0IHdvdWxkIGJlIGRvbmUuCiAgICAgIGlmIHRl c3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgogICAgICAgIGV2YWwgIlwkZWNobyBcIlwkc2hs aWJwYXRoX3Zhcj1cJCRzaGxpYnBhdGhfdmFyXCIiCiAgICAgICAgJGVjaG8gImV4cG9ydCAkc2hs aWJwYXRoX3ZhciIKICAgICAgZmkKICAgICAgJGVjaG8gIiRjbWQkYXJncyIKICAgICAgZXhpdCAw CiAgICBmaQogICAgOzsKCiAgIyBsaWJ0b29sIHVuaW5zdGFsbCBtb2RlCiAgdW5pbnN0YWxsKQog ICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogdW5pbnN0YWxsIgogICAgcm09IiRub25vcHQiCiAgICBm aWxlcz0KCiAgICBmb3IgYXJnCiAgICBkbwogICAgICBjYXNlICIkYXJnIiBpbgogICAgICAtKikg cm09IiRybSAkYXJnIiA7OwogICAgICAqKSBmaWxlcz0iJGZpbGVzICRhcmciIDs7CiAgICAgIGVz YWMKICAgIGRvbmUKCiAgICBpZiB0ZXN0IC16ICIkcm0iOyB0aGVuCiAgICAgICRlY2hvICIkbW9k ZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYW4gUk0gcHJvZ3JhbSIgMT4mMgogICAgICAkZWNobyAi JGhlbHAiIDE+JjIKICAgICAgZXhpdCAxCiAgICBmaQoKICAgIGZvciBmaWxlIGluICRmaWxlczsg ZG8KICAgICAgZGlyPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCiAg ICAgIHRlc3QgIlgkZGlyIiA9ICJYJGZpbGUiICYmIGRpcj0uCiAgICAgIG5hbWU9YCRlY2hvICJY JGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKCiAgICAgIHJtZmlsZXM9IiRmaWxlIgoKICAg ICAgY2FzZSAiJG5hbWUiIGluCiAgICAgICoubGEpCgkjIFBvc3NpYmx5IGEgbGlidG9vbCBhcmNo aXZlLCBzbyB2ZXJpZnkgaXQuCglpZiAoc2VkIC1lICcycScgJGZpbGUgfCBlZ3JlcCAiXiMgR2Vu ZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KCSAgLiAkZGlyLyRu YW1lCgoJICAjIERlbGV0ZSB0aGUgbGlidG9vbCBsaWJyYXJpZXMgYW5kIHN5bWxpbmtzLgoJICBm b3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRu IgoJICBkb25lCgkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgcm1maWxlcz0iJHJtZmlsZXMg JGRpci8kb2xkX2xpYnJhcnkiCgoJICAkc2hvdyAiJHJtICRybWZpbGVzIgoJICAkcnVuICRybSAk cm1maWxlcwoKCSAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCgkgICAgIyBEbyBl YWNoIGNvbW1hbmQgaW4gdGhlIHBvc3R1bmluc3RhbGwgY29tbWFuZHMuCgkgICAgZXZhbCBjbWRz PVwiJHBvc3R1bmluc3RhbGxfY21kc1wiCgkgICAgSUZTPSIke0lGUz0gCX0iOyBzYXZlX2lmcz0i JElGUyI7IElGUz0nficKCSAgICBmb3IgY21kIGluICRjbWRzOyBkbwoJICAgICAgSUZTPSIkc2F2 ZV9pZnMiCgkgICAgICAkc2hvdyAiJGNtZCIKCSAgICAgICRydW4gZXZhbCAiJGNtZCIKCSAgICBk b25lCgkgICAgSUZTPSIkc2F2ZV9pZnMiCgkgIGZpCgoJICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJh cnkiOyB0aGVuCgkgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIG9sZF9wb3N0dW5pbnN0YWxs IGNvbW1hbmRzLgoJICAgIGV2YWwgY21kcz1cIiRvbGRfcG9zdHVuaW5zdGFsbF9jbWRzXCIKCSAg ICBJRlM9IiR7SUZTPSAJfSI7IHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwoJICAgIGZvciBjbWQg aW4gJGNtZHM7IGRvCgkgICAgICBJRlM9IiRzYXZlX2lmcyIKCSAgICAgICRzaG93ICIkY21kIgoJ ICAgICAgJHJ1biBldmFsICIkY21kIgoJICAgIGRvbmUKCSAgICBJRlM9IiRzYXZlX2lmcyIKCSAg ZmkKCgkgICMgRklYTUU6IHNob3VsZCByZWluc3RhbGwgdGhlIGJlc3QgcmVtYWluaW5nIHNoYXJl ZCBsaWJyYXJ5LgoJZmkKCTs7CgogICAgICAqLmxvKQoJaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJz IiA9IHllczsgdGhlbgoJICBvbGRvYmo9YCRlY2hvICJYJG5hbWUiIHwgJFhzZWQgLWUgIiRsbzJv ImAKCSAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kb2xkb2JqIgoJZmkKCSRzaG93ICIkcm0gJHJt ZmlsZXMiCgkkcnVuICRybSAkcm1maWxlcwoJOzsKCiAgICAgICopCgkkc2hvdyAiJHJtICRybWZp bGVzIgoJJHJ1biAkcm0gJHJtZmlsZXMKCTs7CiAgICAgIGVzYWMKICAgIGRvbmUKICAgIGV4aXQg MAogICAgOzsKCiAgIiIpCiAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEg TU9ERSIgMT4mMgogICAgJGVjaG8gIiRnZW5lcmljX2hlbHAiIDE+JjIKICAgIGV4aXQgMQogICAg OzsKICBlc2FjCgogICRlY2hvICIkbW9kZW5hbWU6IGludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAk bW9kZSciIDE+JjIKICAkZWNobyAiJGdlbmVyaWNfaGVscCIgMT4mMgogIGV4aXQgMQpmaSAjIHRl c3QgLXogIiRzaG93X2hlbHAiCgojIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9m IHRoZSBtb2Rlcy4KY2FzZSAiJG1vZGUiIGluCiIiKSAkZWNobyBcCiJVc2FnZTogJG1vZGVuYW1l IFtPUFRJT05dLi4uIFtNT0RFLUFSR10uLi4KClByb3ZpZGUgZ2VuZXJhbGl6ZWQgbGlicmFyeS1i dWlsZGluZyBzdXBwb3J0IHNlcnZpY2VzLgoKICAgIC0tY29uZmlnICAgICAgICAgIHNob3cgYWxs IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCiAgICAtLWRlYnVnICAgICAgICAgICBlbmFibGUgdmVy Ym9zZSBzaGVsbCB0cmFjaW5nCi1uLCAtLWRyeS1ydW4gICAgICAgICBkaXNwbGF5IGNvbW1hbmRz IHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcwogICAgLS1mZWF0dXJlcyAgICAgICAgZGlzcGxh eSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CiAgICAtLWZpbmlzaCAg ICAgICAgICBzYW1lIGFzIFxgLS1tb2RlPWZpbmlzaCcKICAgIC0taGVscCAgICAgICAgICAgIGRp c3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKICAgIC0tbW9kZT1NT0RFICAgICAgIHVz ZSBvcGVyYXRpb24gbW9kZSBNT0RFIFtkZWZhdWx0PWluZmVycmVkIGZyb20gTU9ERS1BUkdTXQog ICAgLS1xdWlldCAgICAgICAgICAgc2FtZSBhcyBcYC0tc2lsZW50JwogICAgLS1zaWxlbnQgICAg ICAgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcwogICAgLS12ZXJzaW9uICAg ICAgICAgcHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgoKTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUg Zm9sbG93aW5nOgoKICAgICAgY29tcGlsZSAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBp bnRvIGEgbGlidG9vbCBvYmplY3QKICAgICAgZXhlY3V0ZSAgICAgICAgIGF1dG9tYXRpY2FsbHkg c2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtCiAgICAgIGZpbmlzaCAgICAgICAg ICBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzCiAgICAgIGlu c3RhbGwgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcwogICAgICBsaW5r ICAgICAgICAgICAgY3JlYXRlIGEgbGlicmFyeSBvciBhbiBleGVjdXRhYmxlCiAgICAgIHVuaW5z dGFsbCAgICAgICByZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGVkIGRpcmVjdG9yeQoK TU9ERS1BUkdTIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBNT0RFLiAgVHJ5IFxgJG1vZGVuYW1lIC0t aGVscCAtLW1vZGU9TU9ERScgZm9yCmEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBNT0RF LiIKICBleGl0IDAKICA7OwoKY29tcGlsZSkKICAkZWNobyBcCiJVc2FnZTogJG1vZGVuYW1lIFtP UFRJT05dLi4uIC0tbW9kZT1jb21waWxlIENPTVBJTEUtQ09NTUFORC4uLiBTT1VSQ0VGSUxFCgpD b21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgbGlicmFyeSBvYmplY3QuCgpUaGlz IG1vZGUgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9uczoKCiAgLW8gT1VU UFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCiAgLXN0 YXRpYyAgICAgICAgICAgYWx3YXlzIGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3Rh dGljIGxpbmtpbmcKCkNPTVBJTEUtQ09NTUFORCBpcyBhIGNvbW1hbmQgdG8gYmUgdXNlZCBpbiBj cmVhdGluZyBhIFxgc3RhbmRhcmQnIG9iamVjdCBmaWxlCmZyb20gdGhlIGdpdmVuIFNPVVJDRUZJ TEUuCgpUaGUgb3V0cHV0IGZpbGUgbmFtZSBpcyBkZXRlcm1pbmVkIGJ5IHJlbW92aW5nIHRoZSBk aXJlY3RvcnkgY29tcG9uZW50IGZyb20KU09VUkNFRklMRSwgdGhlbiBzdWJzdGl0dXRpbmcgdGhl IEMgc291cmNlIGNvZGUgc3VmZml4IFxgLmMnIHdpdGggdGhlCmxpYnJhcnkgb2JqZWN0IHN1ZmZp eCwgXGAubG8nLiIKICA7OwoKZXhlY3V0ZSkKICAkZWNobyBcCiJVc2FnZTogJG1vZGVuYW1lIFtP UFRJT05dLi4uIC0tbW9kZT1leGVjdXRlIENPTU1BTkQgW0FSR1NdLi4uCgpBdXRvbWF0aWNhbGx5 IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbS4KClRoaXMgbW9kZSBhY2NlcHRz IHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgoKICAtZGxvcGVuIEZJTEUgICAgICBh ZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIEZJTEUgdG8gdGhlIGxpYnJhcnkgcGF0aAoKVGhp cyBtb2RlIHNldHMgdGhlIGxpYnJhcnkgcGF0aCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhY2NvcmRp bmcgdG8gXGAtZGxvcGVuJwpmbGFncy4KCklmIGFueSBvZiB0aGUgQVJHUyBhcmUgbGlidG9vbCBl eGVjdXRhYmxlIHdyYXBwZXJzLCB0aGVuIHRoZXkgYXJlIHRyYW5zbGF0ZWQKaW50byB0aGVpciBj b3JyZXNwb25kaW5nIHVuaW5zdGFsbGVkIGJpbmFyeSwgYW5kIGFueSBvZiB0aGVpciByZXF1aXJl ZCBsaWJyYXJ5CmRpcmVjdG9yaWVzIGFyZSBhZGRlZCB0byB0aGUgbGlicmFyeSBwYXRoLgoKVGhl biwgQ09NTUFORCBpcyBleGVjdXRlZCwgd2l0aCBBUkdTIGFzIGFyZ3VtZW50cy4iCiAgOzsKCmZp bmlzaCkKICAkZWNobyBcCiJVc2FnZTogJG1vZGVuYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1maW5p c2ggW0xJQkRJUl0uLi4KCkNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJy YXJpZXMuCgpFYWNoIExJQkRJUiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGxpYnRvb2wg bGlicmFyaWVzLgoKVGhlIGNvbW1hbmRzIHRoYXQgdGhpcyBtb2RlIGV4ZWN1dGVzIG1heSByZXF1 aXJlIHN1cGVydXNlciBwcml2aWxlZ2VzLiAgVXNlCnRoZSBcYC0tZHJ5LXJ1bicgb3B0aW9uIGlm IHlvdSBqdXN0IHdhbnQgdG8gc2VlIHdoYXQgd291bGQgYmUgZXhlY3V0ZWQuIgogIDs7CgppbnN0 YWxsKQogICRlY2hvIFwKIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWluc3Rh bGwgSU5TVEFMTC1DT01NQU5ELi4uCgpJbnN0YWxsIGV4ZWN1dGFibGVzIG9yIGxpYnJhcmllcy4K CklOU1RBTEwtQ09NTUFORCBpcyB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmQuICBUaGUgZmlyc3Qg Y29tcG9uZW50IHNob3VsZCBiZQplaXRoZXIgdGhlIFxgaW5zdGFsbCcgb3IgXGBjcCcgcHJvZ3Jh bS4KClRoZSByZXN0IG9mIHRoZSBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBhcmd1bWVu dHMgdG8gdGhhdCBjb21tYW5kIChvbmx5CkJTRC1jb21wYXRpYmxlIGluc3RhbGwgb3B0aW9ucyBh cmUgcmVjb2duaXplZCkuIgogIDs7CgpsaW5rKQogICRlY2hvIFwKIlVzYWdlOiAkbW9kZW5hbWUg W09QVElPTl0uLi4gLS1tb2RlPWxpbmsgTElOSy1DT01NQU5ELi4uCgpMaW5rIG9iamVjdCBmaWxl cyBvciBsaWJyYXJpZXMgdG9nZXRoZXIgdG8gZm9ybSBhbm90aGVyIGxpYnJhcnksIG9yIHRvCmNy ZWF0ZSBhbiBleGVjdXRhYmxlIHByb2dyYW0uCgpMSU5LLUNPTU1BTkQgaXMgYSBjb21tYW5kIHVz aW5nIHRoZSBDIGNvbXBpbGVyIHRoYXQgeW91IHdvdWxkIHVzZSB0byBjcmVhdGUKYSBwcm9ncmFt IGZyb20gc2V2ZXJhbCBvYmplY3QgZmlsZXMuCgpUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2Yg TElOSy1DT01NQU5EIGFyZSB0cmVhdGVkIHNwZWNpYWxseToKCiAgLWFsbC1zdGF0aWMgICAgICAg ZG8gbm90IGRvIGFueSBkeW5hbWljIGxpbmtpbmcgYXQgYWxsCiAgLWF2b2lkLXZlcnNpb24gICAg ZG8gbm90IGFkZCBhIHZlcnNpb24gc3VmZml4IGlmIHBvc3NpYmxlCiAgLWRsb3BlbiBGSUxFICAg ICAgXGAtZGxwcmVvcGVuJyBGSUxFIGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZCBhdCBydW50aW1l CiAgLWRscHJlb3BlbiBGSUxFICAgbGluayBpbiBGSUxFIGFuZCBhZGQgaXRzIHN5bWJvbHMgdG8g bHRfcHJlbG9hZGVkX3N5bWJvbHMKICAtZXhwb3J0LWR5bmFtaWMgICBhbGxvdyBzeW1ib2xzIGZy b20gT1VUUFVULUZJTEUgdG8gYmUgcmVzb2x2ZWQgd2l0aCBkbHN5bSgzKQogIC1leHBvcnQtc3lt Ym9scyBTWU1GSUxFCgkJICAgIHRyeSB0byBleHBvcnQgb25seSB0aGUgc3ltYm9scyBsaXN0ZWQg aW4gU1lNRklMRQogIC1leHBvcnQtc3ltYm9scy1yZWdleCBSRUdFWAoJCSAgICB0cnkgdG8gZXhw b3J0IG9ubHkgdGhlIHN5bWJvbHMgbWF0Y2hpbmcgUkVHRVgKICAtTExJQkRJUiAgICAgICAgICBz ZWFyY2ggTElCRElSIGZvciByZXF1aXJlZCBpbnN0YWxsZWQgbGlicmFyaWVzCiAgLWxOQU1FICAg ICAgICAgICAgT1VUUFVULUZJTEUgcmVxdWlyZXMgdGhlIGluc3RhbGxlZCBsaWJyYXJ5IGxpYk5B TUUKICAtbW9kdWxlICAgICAgICAgICBidWlsZCBhIGxpYnJhcnkgdGhhdCBjYW4gZGxvcGVuZWQK ICAtbm8tdW5kZWZpbmVkICAgICBkZWNsYXJlIHRoYXQgYSBsaWJyYXJ5IGRvZXMgbm90IHJlZmVy IHRvIGV4dGVybmFsIHN5bWJvbHMKICAtbyBPVVRQVVQtRklMRSAgICBjcmVhdGUgT1VUUFVULUZJ TEUgZnJvbSB0aGUgc3BlY2lmaWVkIG9iamVjdHMKICAtcmVsZWFzZSBSRUxFQVNFICBzcGVjaWZ5 IHBhY2thZ2UgcmVsZWFzZSBpbmZvcm1hdGlvbgogIC1ycGF0aCBMSUJESVIgICAgIHRoZSBjcmVh dGVkIGxpYnJhcnkgd2lsbCBldmVudHVhbGx5IGJlIGluc3RhbGxlZCBpbiBMSUJESVIKICAtUlsg XUxJQkRJUiAgICAgICBhZGQgTElCRElSIHRvIHRoZSBydW50aW1lIHBhdGggb2YgcHJvZ3JhbXMg YW5kIGxpYnJhcmllcwogIC1zdGF0aWMgICAgICAgICAgIGRvIG5vdCBkbyBhbnkgZHluYW1pYyBs aW5raW5nIG9mIGxpYnRvb2wgbGlicmFyaWVzCiAgLXZlcnNpb24taW5mbyBDVVJSRU5UWzpSRVZJ U0lPTls6QUdFXV0KCQkgICAgc3BlY2lmeSBsaWJyYXJ5IHZlcnNpb24gaW5mbyBbZWFjaCB2YXJp YWJsZSBkZWZhdWx0cyB0byAwXQoKQWxsIG90aGVyIG9wdGlvbnMgKGFyZ3VtZW50cyBiZWdpbm5p bmcgd2l0aCBcYC0nKSBhcmUgaWdub3JlZC4KCkV2ZXJ5IG90aGVyIGFyZ3VtZW50IGlzIHRyZWF0 ZWQgYXMgYSBmaWxlbmFtZS4gIEZpbGVzIGVuZGluZyBpbiBcYC5sYScgYXJlCnRyZWF0ZWQgYXMg dW5pbnN0YWxsZWQgbGlidG9vbCBsaWJyYXJpZXMsIG90aGVyIGZpbGVzIGFyZSBzdGFuZGFyZCBv ciBsaWJyYXJ5Cm9iamVjdCBmaWxlcy4KCklmIHRoZSBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmxh JywgdGhlbiBhIGxpYnRvb2wgbGlicmFyeSBpcyBjcmVhdGVkLApvbmx5IGxpYnJhcnkgb2JqZWN0 cyAoXGAubG8nIGZpbGVzKSBtYXkgYmUgc3BlY2lmaWVkLCBhbmQgXGAtcnBhdGgnIGlzCnJlcXVp cmVkLCBleGNlcHQgd2hlbiBjcmVhdGluZyBhIGNvbnZlbmllbmNlIGxpYnJhcnkuCgpJZiBPVVRQ VVQtRklMRSBlbmRzIGluIFxgLmEnIG9yIFxgLmxpYicsIHRoZW4gYSBzdGFuZGFyZCBsaWJyYXJ5 IGlzIGNyZWF0ZWQKdXNpbmcgXGBhcicgYW5kIFxgcmFubGliJywgb3Igb24gV2luZG93cyB1c2lu ZyBcYGxpYicuCgpJZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmxvJyBvciBcYC4ke29iamV4dH0n LCB0aGVuIGEgcmVsb2FkYWJsZSBvYmplY3QgZmlsZQppcyBjcmVhdGVkLCBvdGhlcndpc2UgYW4g ZXhlY3V0YWJsZSBwcm9ncmFtIGlzIGNyZWF0ZWQuIgogIDs7Cgp1bmluc3RhbGwpCiAgJGVjaG8g XAoiVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9dW5pbnN0YWxsIFJNIFtSTS1P UFRJT05dLi4uIEZJTEUuLi4KClJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsYXRpb24g ZGlyZWN0b3J5LgoKUk0gaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gdXNlIHRvIGRlbGV0 ZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBGSUxFCih0eXBpY2FsbHkgXGAvYmluL3JtJyku ICBSTS1PUFRJT05TIGFyZSBvcHRpb25zIChzdWNoIGFzIFxgLWYnKSB0byBiZSBwYXNzZWQKdG8g Uk0uCgpJZiBGSUxFIGlzIGEgbGlidG9vbCBsaWJyYXJ5LCBhbGwgdGhlIGZpbGVzIGFzc29jaWF0 ZWQgd2l0aCBpdCBhcmUgZGVsZXRlZC4KT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRl bGV0ZWQgdXNpbmcgUk0uIgogIDs7CgoqKQogICRlY2hvICIkbW9kZW5hbWU6IGludmFsaWQgb3Bl cmF0aW9uIG1vZGUgXGAkbW9kZSciIDE+JjIKICAkZWNobyAiJGhlbHAiIDE+JjIKICBleGl0IDEK ICA7Owplc2FjCgplY2hvCiRlY2hvICJUcnkgXGAkbW9kZW5hbWUgLS1oZWxwJyBmb3IgbW9yZSBp bmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy4iCgpleGl0IDAKCiMgTG9jYWwgVmFyaWFibGVz OgojIG1vZGU6c2hlbGwtc2NyaXB0CiMgc2gtaW5kZW50YXRpb246MgojIEVuZDoK --Multipart=_Wed__31_Mar_2004_09_22_47_+0200_IVAWlh/MouLt7b_T--