From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19829 invoked by alias); 5 Jul 2011 17:54:49 -0000 Received: (qmail 19818 invoked by uid 22791); 5 Jul 2011 17:54:46 -0000 X-SWARE-Spam-Status: No, hits=-0.2 required=5.0 tests=AWL,BAYES_80,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_AV,TW_CX,TW_GM,TW_PM,TW_ZJ X-Spam-Check-By: sourceware.org Received: from mail-qw0-f47.google.com (HELO mail-qw0-f47.google.com) (209.85.216.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 05 Jul 2011 17:54:27 +0000 Received: by qwh5 with SMTP id 5so3516795qwh.20 for ; Tue, 05 Jul 2011 10:54:26 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.79.196 with SMTP id q4mr5729573qck.132.1309888465999; Tue, 05 Jul 2011 10:54:25 -0700 (PDT) Received: by 10.229.214.83 with HTTP; Tue, 5 Jul 2011 10:54:25 -0700 (PDT) In-Reply-To: References: <20110605195441.GA1225@intel.com> <20110705143920.GA25294@intel.com> Date: Tue, 05 Jul 2011 17:59:00 -0000 Message-ID: Subject: Re: PATCH [1/n] X32: Add initial -x32 support From: "H.J. Lu" To: Uros Bizjak Cc: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary=001636426b41b6181504a7562c5e X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-07/txt/msg00292.txt.bz2 --001636426b41b6181504a7562c5e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 5202 On Tue, Jul 5, 2011 at 8:16 AM, Uros Bizjak wrote: > On Tue, Jul 5, 2011 at 4:39 PM, H.J. Lu wrote: > >> I'd like to start submitting a series of patches to enable x32: >> >> https://sites.google.com/site/x32abi/ >> >> The GCC x32 branch is very stable. There are no unexpected failures in >> C, C++, Fortran and Objective C testsuites. =A0SPEC CPU 2K/2006 compile >> and run correctly at -O2 and -O3. >> >> More than 90% of changes are in x86 backend. =A0I have submitted non-x86 >> backend patches. =A0Most of them have been reviewed and checked in. =A0O= nly >> 4 patches are pending for review/approval. >> >> This is the first x86 backend patch to support x32. =A0By default, x32 is >> disabled and x32 run-time support isn't required. =A0OK for trunk? > > Please strip out --enable-ia32 stuff, it complicates things ATM. =A0I > assume that --enable-x32 applies only to 64bit targets, so this part Done. >> @@ -1232,7 +1232,17 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu = | i[34567]86-*-knetbsd*-gnu | i >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if test x$enable_targets =3D xall; then >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0tm_file=3D"${tm_file} i38= 6/x86-64.h i386/gnu-user64.h i386/linux64.h" >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0tm_defines=3D"${tm_define= s} TARGET_BI_ARCH=3D1" >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 tmake_file=3D"${tmake_file= } i386/t-linux64" >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 case x${enable_x32}${enabl= e_ia32} in >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 xyesyes) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 tmake_file= =3D"${tmake_file} i386/t-linux-x32" >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ;; >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 xyesno) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 tmake_file= =3D"${tmake_file} i386/t-linux64-x32" >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ;; >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 *) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 tmake_file= =3D"${tmake_file} i386/t-linux64" >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ;; >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 esac > > should be simplified to something: > > if (enable_x32) > =A0tmake_file =3D "... i386/t-linux64-x32" > else > =A0tmake_file =3D "... i386/t-linux64" Done. > > >> diff --git a/gcc/config/i386/gnu-user64.h b/gcc/config/i386/gnu-user64.h >> index b069975..954f3b2 100644 >> --- a/gcc/config/i386/gnu-user64.h >> +++ b/gcc/config/i386/gnu-user64.h >> @@ -58,25 +58,31 @@ see the files COPYING3 and COPYING.RUNTIME respectiv= ely. =A0If not, see >> >> =A0#if TARGET_64BIT_DEFAULT >> =A0#define SPEC_32 "m32" >> -#define SPEC_64 "!m32" >> +#define SPEC_64 "m32|mx32:;" >> +#define SPEC_X32 "mx32" >> =A0#else >> -#define SPEC_32 "!m64" >> +#define SPEC_32 "m64|mx32:;" >> =A0#define SPEC_64 "m64" >> +#define SPEC_X32 "mx32" >> =A0#endif >> >> =A0#undef ASM_SPEC >> -#define ASM_SPEC "%{" SPEC_32 ":--32} %{" SPEC_64 ":--64} \ >> +#define ASM_SPEC "%{" SPEC_32 ":--32} \ >> + %{" SPEC_64 ":--64} \ >> + %{" SPEC_X32 ":--x32} \ >> =A0%{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" > > Are you sure that above is correct? AFAICS, you are enabling SPEC_64 > for m32 in case of TARGET_64BIT_DEFAULT. I have #define SPEC_64 "m32|mx32:;" There are ":;". This is similar to "if then else". SPEC_64 will be false if -m32 or -mx32 is used. >> =A0/* SSE4.1 defines round instructions */ >> =A0#define =A0 =A0 =A0 =A0OPTION_MASK_ISA_ROUND =A0 OPTION_MASK_ISA_SSE4= _1 >> @@ -517,8 +519,8 @@ extern const char *host_detect_local_cpu (int argc, = const char **argv); >> =A0#define OPT_ARCH64 "!m32" >> =A0#define OPT_ARCH32 "m32" >> =A0#else >> -#define OPT_ARCH64 "m64" >> -#define OPT_ARCH32 "!m64" >> +#define OPT_ARCH64 "m64|mx32" >> +#define OPT_ARCH32 "m64|mx32:;" >> =A0#endif > > Same here. > See above. Here is the updated patch. OK for trunk? Thanks. --=20 H.J. --- 2011-07-05 H.J. Lu * config.gcc: Support --enable-x32 for x86 Linux targets. * configure.ac: Support --enable-x32. * configure: Regenerated. * config/i386/gnu-user64.h (SPEC_64): Support x32. (SPEC_32): Likewise. (ASM_SPEC): Likewise. (LINK_SPEC): Likewise. (TARGET_THREAD_SSP_OFFSET): Likewise. (TARGET_THREAD_SPLIT_STACK_OFFSET): Likewise. (SPEC_X32): New. * config/i386/i386.h (TARGET_X32): New. (TARGET_LP64): New. (LONG_TYPE_SIZE): Likewise. (POINTER_SIZE): Likewise. (POINTERS_EXTEND_UNSIGNED): Likewise. (OPT_ARCH64): Support x32. (OPT_ARCH32): Likewise. * config/i386/i386.opt (mx32): New. * config/i386/kfreebsd-gnu64.h (GNU_USER_LINK_EMULATIONX32): New. (GLIBC_DYNAMIC_LINKERX32): Likewise. * config/i386/linux64.h (GNU_USER_LINK_EMULATIONX32): Likewise. (GLIBC_DYNAMIC_LINKERX32): Likewise. * config/i386/t-linux-x32: New. * config/linux.h (UCLIBC_DYNAMIC_LINKERX32): New. (BIONIC_DYNAMIC_LINKERX32): Likewise. (GNU_USER_DYNAMIC_LINKERX32): Likewise. * doc/install.texi: Document --enable-x32. * doc/invoke.texi: Document -mx32. --001636426b41b6181504a7562c5e Content-Type: text/plain; charset=US-ASCII; name="gcc-x32-3.patch" Content-Disposition: attachment; filename="gcc-x32-3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gpr5lbo70 Content-length: 19809 MjAxMS0wNy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoK CSogY29uZmlnLmdjYzogU3VwcG9ydCAtLWVuYWJsZS14MzIgZm9yIHg4NiBM aW51eAoJdGFyZ2V0cy4KCgkqIGNvbmZpZ3VyZS5hYzogU3VwcG9ydCAtLWVu YWJsZS14MzIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBjb25m aWcvaTM4Ni9nbnUtdXNlcjY0LmggKFNQRUNfNjQpOiBTdXBwb3J0IHgzMi4K CShTUEVDXzMyKTogTGlrZXdpc2UuCgkoQVNNX1NQRUMpOiBMaWtld2lzZS4K CShMSU5LX1NQRUMpOiBMaWtld2lzZS4KCShUQVJHRVRfVEhSRUFEX1NTUF9P RkZTRVQpOiBMaWtld2lzZS4KCShUQVJHRVRfVEhSRUFEX1NQTElUX1NUQUNL X09GRlNFVCk6IExpa2V3aXNlLgoJKFNQRUNfWDMyKTogTmV3LgoKCSogY29u ZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfWDMyKTogTmV3LgoJKFRBUkdFVF9M UDY0KTogTmV3LgoJKExPTkdfVFlQRV9TSVpFKTogTGlrZXdpc2UuCgkoUE9J TlRFUl9TSVpFKTogTGlrZXdpc2UuCgkoUE9JTlRFUlNfRVhURU5EX1VOU0lH TkVEKTogTGlrZXdpc2UuCgkoT1BUX0FSQ0g2NCk6IFN1cHBvcnQgeDMyLgoJ KE9QVF9BUkNIMzIpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYu b3B0IChteDMyKTogTmV3LgoKCSogY29uZmlnL2kzODYva2ZyZWVic2QtZ251 NjQuaCAoR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIpOiBOZXcuCgkoR0xJ QkNfRFlOQU1JQ19MSU5LRVJYMzIpOiBMaWtld2lzZS4KCSogY29uZmlnL2kz ODYvbGludXg2NC5oIChHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMik6IExp a2V3aXNlLgoJKEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyKTogTGlrZXdpc2Uu CgoJKiBjb25maWcvaTM4Ni90LWxpbnV4LXgzMjogTmV3LgoKCSogY29uZmln L2xpbnV4LmggKFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMik6IE5ldy4KCShC SU9OSUNfRFlOQU1JQ19MSU5LRVJYMzIpOiBMaWtld2lzZS4KCShHTlVfVVNF Ul9EWU5BTUlDX0xJTktFUlgzMik6IExpa2V3aXNlLgoKCSogZG9jL2luc3Rh bGwudGV4aTogRG9jdW1lbnQgLS1lbmFibGUteDMyLgoKCSogZG9jL2ludm9r ZS50ZXhpOiBEb2N1bWVudCAtbXgzMi4KCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCmluZGV4IGM3N2Y0MGIuLjQ3ODdk NmIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcuZ2NjCisrKyBiL2djYy9jb25m aWcuZ2NjCkBAIC0xMjc5LDcgKzEyNzksMTEgQEAgaVszNDU2N104Ni0qLWxp bnV4KiB8IGlbMzQ1NjddODYtKi1rZnJlZWJzZCotZ251IHwgaVszNDU2N104 Ni0qLWtuZXRic2QqLWdudSB8IGkKIAkJaWYgdGVzdCB4JGVuYWJsZV90YXJn ZXRzID0geGFsbDsgdGhlbgogCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBpMzg2 L3g4Ni02NC5oIGkzODYvZ251LXVzZXI2NC5oIGkzODYvbGludXg2NC5oIgog CQkJdG1fZGVmaW5lcz0iJHt0bV9kZWZpbmVzfSBUQVJHRVRfQklfQVJDSD0x IgotCQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBpMzg2L3QtbGludXg2 NCIKKwkJCWlmIHRlc3QgeCR7ZW5hYmxlX3gzMn0gPSB4eWVzOyB0aGVuCisJ CQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBpMzg2L3QtbGludXgteDMy IgorCQkJZWxzZQorCQkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gaTM4 Ni90LWxpbnV4NjQiCisJCQlmaQogCQkJbmVlZF82NGJpdF9od2ludD15ZXMK IAkJCW5lZWRfNjRiaXRfaXNhPXllcwogCQkJY2FzZSBYIiR7d2l0aF9jcHV9 IiBpbgpAQCAtMTMxNyw3ICsxMzIxLDEyIEBAIHg4Nl82NC0qLWxpbnV4KiB8 IHg4Nl82NC0qLWtmcmVlYnNkKi1nbnUgfCB4ODZfNjQtKi1rbmV0YnNkKi1n bnUpCiAJeDg2XzY0LSota2ZyZWVic2QqLWdudSkgdG1fZmlsZT0iJHt0bV9m aWxlfSBrZnJlZWJzZC1nbnUuaCBpMzg2L2tmcmVlYnNkLWdudTY0LmgiIDs7 CiAJeDg2XzY0LSota25ldGJzZCotZ251KSB0bV9maWxlPSIke3RtX2ZpbGV9 IGtuZXRic2QtZ251LmgiIDs7CiAJZXNhYwotCXRtYWtlX2ZpbGU9IiR7dG1h a2VfZmlsZX0gaTM4Ni90LWxpbnV4NjQgaTM4Ni90LWNydHN0dWZmIGkzODYv dC1jcnRwYyBpMzg2L3QtY3J0Zm0gdC1kZnBydWxlcyIKKwlpZiB0ZXN0IHgk e2VuYWJsZV94MzJ9ID0geHllczsgdGhlbgorCQl0bWFrZV9maWxlPSIke3Rt YWtlX2ZpbGV9IGkzODYvdC1saW51eC14MzIiCisJZWxzZQorCQl0bWFrZV9m aWxlPSIke3RtYWtlX2ZpbGV9IGkzODYvdC1saW51eDY0IgorCWZpCisJdG1h a2VfZmlsZT0iJHt0bWFrZV9maWxlfSBpMzg2L3QtY3J0c3R1ZmYgaTM4Ni90 LWNydHBjIGkzODYvdC1jcnRmbSB0LWRmcHJ1bGVzIgogCTs7CiBpWzM0NTY3 XTg2LXBjLW1zZG9zZGpncHAqKQogCXhtX2ZpbGU9aTM4Ni94bS1kamdwcC5o CkBAIC0yNjMxLDYgKzI2NDAsNyBAQCBlc2FjCiBjYXNlICR7dGFyZ2V0fSBp bgogaVszNDU2N104Ni0qLWxpbnV4KiB8IHg4Nl82NC0qLWxpbnV4KikKIAl0 bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IGkzODYvdC1wbW1fbWFsbG9jIGkz ODYvdC1pMzg2IgorCWxpYmdjY190bV9maWxlPSIke2xpYmdjY190bV9maWxl fSBpMzg2L3ZhbHVlLXVud2luZC5oIgogCTs7CiBpWzM0NTY3XTg2LSotKiB8 IHg4Nl82NC0qLSopCiAJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBpMzg2 L3QtZ21tX21hbGxvYyBpMzg2L3QtaTM4NiIKZGlmZiAtLWdpdCBhL2djYy9j b25maWcvaTM4Ni9nbnUtdXNlcjY0LmggYi9nY2MvY29uZmlnL2kzODYvZ251 LXVzZXI2NC5oCmluZGV4IGIwNjk5NzUuLjk1NGYzYjIgMTAwNjQ0Ci0tLSBh L2djYy9jb25maWcvaTM4Ni9nbnUtdXNlcjY0LmgKKysrIGIvZ2NjL2NvbmZp Zy9pMzg2L2dudS11c2VyNjQuaApAQCAtNTgsMjUgKzU4LDMxIEBAIHNlZSB0 aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0 aXZlbHkuICBJZiBub3QsIHNlZQogCiAjaWYgVEFSR0VUXzY0QklUX0RFRkFV TFQKICNkZWZpbmUgU1BFQ18zMiAibTMyIgotI2RlZmluZSBTUEVDXzY0ICIh bTMyIgorI2RlZmluZSBTUEVDXzY0ICJtMzJ8bXgzMjo7IgorI2RlZmluZSBT UEVDX1gzMiAibXgzMiIKICNlbHNlCi0jZGVmaW5lIFNQRUNfMzIgIiFtNjQi CisjZGVmaW5lIFNQRUNfMzIgIm02NHxteDMyOjsiCiAjZGVmaW5lIFNQRUNf NjQgIm02NCIKKyNkZWZpbmUgU1BFQ19YMzIgIm14MzIiCiAjZW5kaWYKIAog I3VuZGVmIEFTTV9TUEVDCi0jZGVmaW5lIEFTTV9TUEVDICIleyIgU1BFQ18z MiAiOi0tMzJ9ICV7IiBTUEVDXzY0ICI6LS02NH0gXAorI2RlZmluZSBBU01f U1BFQyAiJXsiIFNQRUNfMzIgIjotLTMyfSBcCisgJXsiIFNQRUNfNjQgIjot LTY0fSBcCisgJXsiIFNQRUNfWDMyICI6LS14MzJ9IFwKICAleyFtbm8tc3Nl MmF2eDole21hdng6LW1zc2UyYXZ4fX0gJXttc3NlMmF2eDoleyFtYXZ4Oi1t c3NlMmF2eH19IgogCiAjdW5kZWYJTElOS19TUEVDCiAjZGVmaW5lIExJTktf U1BFQyAiJXsiIFNQRUNfNjQgIjotbSAiIEdOVV9VU0VSX0xJTktfRU1VTEFU SU9ONjQgIn0gXAogICAgICAgICAgICAgICAgICAgICV7IiBTUEVDXzMyICI6 LW0gIiBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjMyICJ9IFwKKyAgICAgICAg ICAgICAgICAgICAleyIgU1BFQ19YMzIgIjotbSAiIEdOVV9VU0VSX0xJTktf RU1VTEFUSU9OWDMyICJ9IFwKICAgJXtzaGFyZWQ6LXNoYXJlZH0gXAogICAl eyFzaGFyZWQ6IFwKICAgICAleyFzdGF0aWM6IFwKICAgICAgICV7cmR5bmFt aWM6LWV4cG9ydC1keW5hbWljfSBcCiAgICAgICAleyIgU1BFQ18zMiAiOi1k eW5hbWljLWxpbmtlciAiIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSMzIgIn0g XAotICAgICAgJXsiIFNQRUNfNjQgIjotZHluYW1pYy1saW5rZXIgIiBHTlVf VVNFUl9EWU5BTUlDX0xJTktFUjY0ICJ9fSBcCisgICAgICAleyIgU1BFQ182 NCAiOi1keW5hbWljLWxpbmtlciAiIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VS NjQgIn0gXAorICAgICAgJXsiIFNQRUNfWDMyICI6LWR5bmFtaWMtbGlua2Vy ICIgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVJYMzIgIn19IFwKICAgICAle3N0 YXRpYzotc3RhdGljfX0iCiAKIC8qIFNpbWlsYXIgdG8gc3RhbmRhcmQgR05V IHVzZXJzcGFjZSwgYnV0IGFkZGluZyAtZmZhc3QtbWF0aCBzdXBwb3J0LiAg Ki8KQEAgLTExMCwxMCArMTE2LDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlO RzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3Qs IHNlZQogCiAjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCiAvKiBp Mzg2IGdsaWJjIHByb3ZpZGVzIF9fc3RhY2tfY2hrX2d1YXJkIGluICVnczow eDE0LAorICAgeDMyIGdsaWJjIHByb3ZpZGVzIGl0IGluICVmczoweDE4LiAK ICAgIHg4Nl82NCBnbGliYyBwcm92aWRlcyBpdCBpbiAlZnM6MHgyOC4gICov Ci0jZGVmaW5lIFRBUkdFVF9USFJFQURfU1NQX09GRlNFVAkoVEFSR0VUXzY0 QklUID8gMHgyOCA6IDB4MTQpCisjZGVmaW5lIFRBUkdFVF9USFJFQURfU1NQ X09GRlNFVCBcCisgIChUQVJHRVRfNjRCSVQgPyAoVEFSR0VUX1gzMiA/IDB4 MTggOiAweDI4KSA6IDB4MTQpCiAKIC8qIFdlIHN0ZWFsIHRoZSBsYXN0IHRy YW5zYWN0aW9uYWwgbWVtb3J5IHdvcmQuICAqLwogI2RlZmluZSBUQVJHRVRf Q0FOX1NQTElUX1NUQUNLCi0jZGVmaW5lIFRBUkdFVF9USFJFQURfU1BMSVRf U1RBQ0tfT0ZGU0VUIChUQVJHRVRfNjRCSVQgPyAweDcwIDogMHgzMCkKKyNk ZWZpbmUgVEFSR0VUX1RIUkVBRF9TUExJVF9TVEFDS19PRkZTRVQgXAorICAo VEFSR0VUXzY0QklUID8gKFRBUkdFVF9YMzIgPyAweDQwIDogMHg3MCkgOiAw eDMwKQogI2VuZGlmCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4 Ni5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAppbmRleCBhMWFjNmI2Li44 Y2VmNGU3IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCisr KyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKQEAgLTQyLDYgKzQyLDcgQEAg c2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJl c3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCiAvKiBSZWRlZmluZXMgZm9yIG9w dGlvbiBtYWNyb3MuICAqLwogCiAjZGVmaW5lIFRBUkdFVF82NEJJVAlPUFRJ T05fSVNBXzY0QklUCisjZGVmaW5lIFRBUkdFVF9YMzIJT1BUSU9OX0lTQV9Y MzIKICNkZWZpbmUgVEFSR0VUX01NWAlPUFRJT05fSVNBX01NWAogI2RlZmlu ZSBUQVJHRVRfM0ROT1cJT1BUSU9OX0lTQV8zRE5PVwogI2RlZmluZSBUQVJH RVRfM0ROT1dfQQlPUFRJT05fSVNBXzNETk9XX0EKQEAgLTcyLDYgKzczLDcg QEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1F IHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCiAjZGVmaW5lIFRBUkdFVF9S RFJORAlPUFRJT05fSVNBX1JEUk5ECiAjZGVmaW5lIFRBUkdFVF9GMTZDCU9Q VElPTl9JU0FfRjE2QwogCisjZGVmaW5lIFRBUkdFVF9MUDY0CShUQVJHRVRf NjRCSVQgJiYgIVRBUkdFVF9YMzIpCiAKIC8qIFNTRTQuMSBkZWZpbmVzIHJv dW5kIGluc3RydWN0aW9ucyAqLwogI2RlZmluZQlPUFRJT05fTUFTS19JU0Ff Uk9VTkQJT1BUSU9OX01BU0tfSVNBX1NTRTRfMQpAQCAtNTE2LDggKzUxOCw4 IEBAIGV4dGVybiBjb25zdCBjaGFyICpob3N0X2RldGVjdF9sb2NhbF9jcHUg KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndik7CiAjZGVmaW5lIE9QVF9B UkNINjQgIiFtMzIiCiAjZGVmaW5lIE9QVF9BUkNIMzIgIm0zMiIKICNlbHNl Ci0jZGVmaW5lIE9QVF9BUkNINjQgIm02NCIKLSNkZWZpbmUgT1BUX0FSQ0gz MiAiIW02NCIKKyNkZWZpbmUgT1BUX0FSQ0g2NCAibTY0fG14MzIiCisjZGVm aW5lIE9QVF9BUkNIMzIgIm02NHxteDMyOjsiCiAjZW5kaWYKIAogLyogU3Vw cG9ydCBmb3IgY29uZmlndXJlLXRpbWUgZGVmYXVsdHMgb2Ygc29tZSBjb21t YW5kIGxpbmUgb3B0aW9ucy4KQEAgLTYzNyw2ICs2MzksOCBAQCBlbnVtIHRh cmdldF9jcHVfZGVmYXVsdAogCiAjZGVmaW5lIFNIT1JUX1RZUEVfU0laRSAx NgogI2RlZmluZSBJTlRfVFlQRV9TSVpFIDMyCisjZGVmaW5lIExPTkdfVFlQ RV9TSVpFIChUQVJHRVRfWDMyID8gMzIgOiBCSVRTX1BFUl9XT1JEKQorI2Rl ZmluZSBQT0lOVEVSX1NJWkUgKFRBUkdFVF9YMzIgPyAzMiA6IEJJVFNfUEVS X1dPUkQpCiAjZGVmaW5lIExPTkdfTE9OR19UWVBFX1NJWkUgNjQKICNkZWZp bmUgRkxPQVRfVFlQRV9TSVpFIDMyCiAjZGVmaW5lIERPVUJMRV9UWVBFX1NJ WkUgNjQKQEAgLTE3NDIsNiArMTc0NiwxMyBAQCBkbyB7CQkJCQkJCVwKICAg IGJldHdlZW4gcG9pbnRlcnMgYW5kIGFueSBvdGhlciBvYmplY3RzIG9mIHRo aXMgbWFjaGluZSBtb2RlLiAgKi8KICNkZWZpbmUgUG1vZGUgKFRBUkdFVF82 NEJJVCA/IERJbW9kZSA6IFNJbW9kZSkKIAorLyogQSBDIGV4cHJlc3Npb24g d2hvc2UgdmFsdWUgaXMgemVybyBpZiBwb2ludGVycyB0aGF0IG5lZWQgdG8g YmUgZXh0ZW5kZWQKKyAgIGZyb20gYmVpbmcgYFBPSU5URVJfU0laRScgYml0 cyB3aWRlIHRvIGBQbW9kZScgYXJlIHNpZ24tZXh0ZW5kZWQgYW5kCisgICBn cmVhdGVyIHRoZW4gemVybyBpZiB0aGV5IGFyZSB6ZXJvLWV4dGVuZGVkIGFu ZCBsZXNzIHRoZW4gemVybyBpZiB0aGUKKyAgIHB0cl9leHRlbmQgaW5zdHJ1 Y3Rpb24gc2hvdWxkIGJlIHVzZWQuICAqLworCisjZGVmaW5lIFBPSU5URVJT X0VYVEVORF9VTlNJR05FRCAxCisKIC8qIEEgZnVuY3Rpb24gYWRkcmVzcyBp biBhIGNhbGwgaW5zdHJ1Y3Rpb24KICAgIGlzIGEgYnl0ZSBhZGRyZXNzIChm b3IgaW5kZXhpbmcgcHVycG9zZXMpCiAgICBzbyBnaXZlIHRoZSBNRU0gcnR4 IGEgYnl0ZSdzIG1vZGUuICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9p Mzg2L2kzODYub3B0IGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0CmluZGV4 IDk4ODZiN2IuLjhkZWE5M2UgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4 Ni9pMzg2Lm9wdAorKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKQEAg LTM5OCw5ICszOTgsMTMgQEAgVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIE5lZ2F0 aXZlKG02NCkgUmVwb3J0IEludmVyc2VNYXNrKElTQV82NEJJVCkgVmFyKGl4 ODZfaXNhX2YKIEdlbmVyYXRlIDMyYml0IGkzODYgY29kZQogCiBtNjQKLVRh cmdldCBSZWplY3ROZWdhdGl2ZSBOZWdhdGl2ZShtMzIpIFJlcG9ydCBNYXNr KElTQV82NEJJVCkgVmFyKGl4ODZfaXNhX2ZsYWdzKSBTYXZlCitUYXJnZXQg UmVqZWN0TmVnYXRpdmUgTmVnYXRpdmUobXgzMikgUmVwb3J0IE1hc2soSVNB XzY0QklUKSBWYXIoaXg4Nl9pc2FfZmxhZ3MpIFNhdmUKIEdlbmVyYXRlIDY0 Yml0IHg4Ni02NCBjb2RlCiAKK214MzIKK1RhcmdldCBSZWplY3ROZWdhdGl2 ZSBOZWdhdGl2ZShtMzIpIFJlcG9ydCBNYXNrKElTQV9YMzIpIFZhcihpeDg2 X2lzYV9mbGFncykgU2F2ZQorR2VuZXJhdGUgMzJiaXQgeDg2LTY0IGNvZGUK KwogbW1teAogVGFyZ2V0IFJlcG9ydCBNYXNrKElTQV9NTVgpIFZhcihpeDg2 X2lzYV9mbGFncykgU2F2ZQogU3VwcG9ydCBNTVggYnVpbHQtaW4gZnVuY3Rp b25zCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYva2ZyZWVic2QtZ251 NjQuaCBiL2djYy9jb25maWcvaTM4Ni9rZnJlZWJzZC1nbnU2NC5oCmluZGV4 IGMzNzk4YTUuLjIwODVjYTUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4 Ni9rZnJlZWJzZC1nbnU2NC5oCisrKyBiL2djYy9jb25maWcvaTM4Ni9rZnJl ZWJzZC1nbnU2NC5oCkBAIC0yMSw2ICsyMSw4IEBAIGFsb25nIHdpdGggR0ND OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAKICNkZWZp bmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04zMiAiZWxmX2kzODZfZmJzZCIK ICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT042NCAiZWxmX3g4Nl82 NF9mYnNkIgorI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMiAi ZWxmMzJfeDg2XzY0X2Zic2QiCiAKICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19M SU5LRVIzMiAiL2xpYi9sZC5zby4xIgogI2RlZmluZSBHTElCQ19EWU5BTUlD X0xJTktFUjY0ICIvbGliL2xkLWtmcmVlYnNkLXg4Ni02NC5zby4xIgorI2Rl ZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZC1rZnJlZWJz ZC14MzIuc28uMSIKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51 eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCmluZGV4IDVkMzMy MjQuLjViMGEyMTIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51 eDY0LmgKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaApAQCAtMjYs NiArMjYsOCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5H LlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKIAogI2RlZmlu ZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjMyICJlbGZfaTM4NiIKICNkZWZp bmUgR05VX1VTRVJfTElOS19FTVVMQVRJT042NCAiZWxmX3g4Nl82NCIKKyNk ZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82 NCIKIAogI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xk LWxpbnV4LnNvLjIiCiAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQg Ii9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKKyNkZWZpbmUgR0xJQkNf RFlOQU1JQ19MSU5LRVJYMzIgIi9saWJ4MzIvbGQtbGludXgteDMyLnNvLjIi CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvdC1saW51eC14MzIgYi9n Y2MvY29uZmlnL2kzODYvdC1saW51eC14MzIKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uOTJhY2Y5MQotLS0gL2Rldi9udWxsCisrKyBi L2djYy9jb25maWcvaTM4Ni90LWxpbnV4LXgzMgpAQCAtMCwwICsxLDQyIEBA CisjIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorIwor IyBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9u LgorIworIyBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor IyBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYg bm90IHNlZQorIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisK KyMgT24gRGViaWFuLCBVYnVudHUgYW5kIG90aGVyIGRlcml2YXRpdmUgZGlz dHJpYnV0aW9ucywgdGhlIDMyYml0IGxpYnJhcmllcworIyBhcmUgZm91bmQg aW4gL2xpYjMyIGFuZCAvdXNyL2xpYjMyLCAvbGliNjQgYW5kIC91c3IvbGli NjQgYXJlIHN5bWxpbmtzIHRvCisjIC9saWIgYW5kIC91c3IvbGliLCB3aGls ZSBvdGhlciBkaXN0cmlidXRpb25zIGluc3RhbGwgbGlicmFyaWVzIGludG8g L2xpYjY0CisjIGFuZCAvdXNyL2xpYjY0LiAgVGhlIExTQiBkb2VzIG5vdCBl bmZvcmNlIHRoZSB1c2Ugb2YgL2xpYjY0IGFuZCAvdXNyL2xpYjY0LAorIyBp dCBkb2Vzbid0IHRlbGwgYW55dGhpbmcgYWJvdXQgdGhlIDMyYml0IGxpYnJh cmllcyBvbiB0aG9zZSBzeXN0ZW1zLiAgU2V0CisjIE1VTFRJTElCX09TRElS TkFNRVMgYWNjb3JkaW5nIHRvIHdoYXQgaXMgZm91bmQgb24gdGhlIHRhcmdl dC4KKworIyBUbyBzdXBwb3J0IGkzODYsIHg4Ni02NCBhbmQgeDMyIGxpYnJh cmllcywgdGhlIGRpcmVjdG9yeSBzdHJ1Y3RydWUKKyMgc2hvdWxkIGJlOgor IworIyAJL2xpYiBoYXMgaTM4NiBsaWJyYXJpZXMuCisjIAkvbGliNjQgaGFz IHg4Ni02NCBsaWJyYXJpZXMuCisjIAkvbGlieDMyIGhhcyB4MzIgbGlicmFy aWVzLgorIworTVVMVElMSUJfT1BUSU9OUyA9IG02NC9tMzIvbXgzMgorTVVM VElMSUJfRElSTkFNRVMgPSA2NCAzMiB4MzIKK01VTFRJTElCX09TRElSTkFN RVMgPSAuLi9saWI2NCAkKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQo U1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMy LC4uL2xpYikgLi4vbGlieDMyCisKK0xJQkdDQyA9IHN0bXAtbXVsdGlsaWIK K0lOU1RBTExfTElCR0NDID0gaW5zdGFsbC1tdWx0aWxpYgorCitFWFRSQV9N VUxUSUxJQl9QQVJUUz1jcnRiZWdpbi5vIGNydGVuZC5vIGNydGJlZ2luUy5v IGNydGVuZFMubyBcCisJCSAgICAgY3J0YmVnaW5ULm8gY3J0cHJlYzMyLm8g Y3J0cHJlYzY0Lm8gY3J0cHJlYzgwLm8gXAorCQkgICAgIGNydGZhc3RtYXRo Lm8KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25m aWcvbGludXguaAppbmRleCBmYzg5N2IxLi5kYmJlZWE1IDEwMDY0NAotLS0g YS9nY2MvY29uZmlnL2xpbnV4LmgKKysrIGIvZ2NjL2NvbmZpZy9saW51eC5o CkBAIC03Nyw5ICs3NywxMSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFu ZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUK ICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGli Yy5zby4wIgogI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xp Yi9sZC11Q2xpYmMuc28uMCIKICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElO S0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKKyNkZWZpbmUgVUNMSUJD X0RZTkFNSUNfTElOS0VSWDMyICIvbGliL2xkeDMyLXVDbGliYy5zby4wIgog I2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xp bmtlciIKICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSMzIgIi9zeXN0 ZW0vYmluL2xpbmtlciIKICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VS NjQgIi9zeXN0ZW0vYmluL2xpbmtlcjY0IgorI2RlZmluZSBCSU9OSUNfRFlO QU1JQ19MSU5LRVJYMzIgIi9zeXN0ZW0vYmluL2xpbmtlcngzMiIKIAogI2Rl ZmluZSBHTlVfVVNFUl9EWU5BTUlDX0xJTktFUgkJCQkJCVwKICAgQ0hPT1NF X0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUiwgVUNMSUJD X0RZTkFNSUNfTElOS0VSLAlcCkBAIC05MCw2ICs5Miw5IEBAIHNlZSB0aGUg ZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZl bHkuICBJZiBub3QsIHNlZQogI2RlZmluZSBHTlVfVVNFUl9EWU5BTUlDX0xJ TktFUjY0CQkJCQlcCiAgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNf RFlOQU1JQ19MSU5LRVI2NCwgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQsIFwK IAkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCkKKyNkZWZpbmUgR05VX1VT RVJfRFlOQU1JQ19MSU5LRVJYMzIJCQkJCVwKKyAgQ0hPT1NFX0RZTkFNSUNf TElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUlgzMiwgVUNMSUJDX0RZTkFN SUNfTElOS0VSWDMyLCBcCisJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSWDMy KQogCiAvKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgZW50aXJlIGM5OSBydW50 aW1lCiAgICBpcyBwcmVzZW50IGluIHRoZSBydW50aW1lIGxpYnJhcnkuICAq LwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1 cmUuYWMKaW5kZXggNWYzNjQxYi4uYmRkYWJlYiAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZ3VyZS5hYworKysgYi9nY2MvY29uZmlndXJlLmFjCkBAIC02MTEs NiArNjExLDExIEBAIEFDX0FSR19FTkFCTEUobXVsdGlsaWIsCiBbXSwgW2Vu YWJsZV9tdWx0aWxpYj15ZXNdKQogQUNfU1VCU1QoZW5hYmxlX211bHRpbGli KQogCisjIFdpdGggeDMyIHN1cHBvcnQKK0FDX0FSR19FTkFCTEUoeDMyLAor WyAgLS1lbmFibGUteDMyICAgICAgICAgICAgZW5hYmxlIHgzMiBsaWJyYXJ5 IHN1cHBvcnQgZm9yIG11bHRpcGxlIEFCSXNdLAorW10sIFtlbmFibGVfeDMy PW5vXSkKKwogIyBFbmFibGUgX19jeGFfYXRleGl0IGZvciBDKysuCiBBQ19B UkdfRU5BQkxFKF9fY3hhX2F0ZXhpdCwKIFtBU19IRUxQX1NUUklORyhbLS1l bmFibGUtX19jeGFfYXRleGl0XSwgW2VuYWJsZSBfX2N4YV9hdGV4aXQgZm9y IEMrK10pXSwKZGlmZiAtLWdpdCBhL2djYy9kb2MvaW5zdGFsbC50ZXhpIGIv Z2NjL2RvYy9pbnN0YWxsLnRleGkKaW5kZXggNDlhYWM5NS4uZTg5YzM5NiAx MDA2NDQKLS0tIGEvZ2NjL2RvYy9pbnN0YWxsLnRleGkKKysrIGIvZ2NjL2Rv Yy9pbnN0YWxsLnRleGkKQEAgLTExNjEsNiArMTE2MSwxMSBAQCBhc3N1bXB0 aW9ucyBtYWRlIGJ5IHRoZSBjb25maWd1cmUgdGVzdCBhcmUgaW5jb3JyZWN0 LgogU3BlY2lmeSB0aGF0IHRoZSB0YXJnZXQgZG9lcyBub3Qgc3VwcG9ydCBU TFMuCiBUaGlzIGlzIGFuIGFsaWFzIGZvciBAb3B0aW9uey0tZW5hYmxlLXRs cz1ub30uCiAKK0BpdGVtIC0tZW5hYmxlLXgzMgorVGhpcyBvcHRpb24gZW5h YmxlcyB4MzIgbGlicmFyeSBzdXBwb3J0IGZvciBtdWx0aXBsZSBBQklzLiBC eQorZGVmYXVsdCwgeDMyIGxpYnJhcnkgc3VwcG9ydCBpcyBkaXNhYmxlZC4g IEl0IGlzIG9ubHkgc3VwcG9ydGVkIGZvcgoreDg2LTY0LgorCiBAaXRlbSAt LXdpdGgtY3B1PUB2YXJ7Y3B1fQogQGl0ZW14IC0td2l0aC1jcHUtMzI9QHZh cntjcHV9CiBAaXRlbXggLS13aXRoLWNwdS02ND1AdmFye2NwdX0KZGlmZiAt LWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50 ZXhpCmluZGV4IDFmYzQwMzguLmZkNjcxMWMgMTAwNjQ0Ci0tLSBhL2djYy9k b2MvaW52b2tlLnRleGkKKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQpAQCAt NjEwLDcgKzYxMCw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysr IERpYWxlY3RzfS4KIC1tcGMzMiAtbXBjNjQgLW1wYzgwIC1tc3RhY2tyZWFs aWduIEBnb2wKIC1tb21pdC1sZWFmLWZyYW1lLXBvaW50ZXIgIC1tbm8tcmVk LXpvbmUgLW1uby10bHMtZGlyZWN0LXNlZy1yZWZzIEBnb2wKIC1tY21vZGVs PUB2YXJ7Y29kZS1tb2RlbH0gLW1hYmk9QHZhcntuYW1lfSBAZ29sCi0tbTMy ICAtbTY0IC1tbGFyZ2UtZGF0YS10aHJlc2hvbGQ9QHZhcntudW19IEBnb2wK Ky1tMzIgLW02NCAtbXgzMiAtbWxhcmdlLWRhdGEtdGhyZXNob2xkPUB2YXJ7 bnVtfSBAZ29sCiAtbXNzZTJhdnggLW1mZW50cnkgLW04Yml0LWlkaXYgQGdv bAogLW1hdngyNTYtc3BsaXQtdW5hbGlnbmVkLWxvYWQgLW1hdngyNTYtc3Bs aXQtdW5hbGlnbmVkLXN0b3JlfQogCkBAIC0xMjg1MSwxNSArMTI4NTEsMTkg QEAgb24gQU1EIHg4Ni02NCBwcm9jZXNzb3JzIGluIDY0LWJpdCBlbnZpcm9u bWVudHMuCiBAdGFibGUgQGdjY3RhYm9wdAogQGl0ZW0gLW0zMgogQGl0ZW14 IC1tNjQKK0BpdGVteCAtbXgzMgogQG9waW5kZXggbTMyCiBAb3BpbmRleCBt NjQKK0BvcGluZGV4IG14MzIKIEdlbmVyYXRlIGNvZGUgZm9yIGEgMzItYml0 IG9yIDY0LWJpdCBlbnZpcm9ubWVudC4KLVRoZSAzMi1iaXQgZW52aXJvbm1l bnQgc2V0cyBpbnQsIGxvbmcgYW5kIHBvaW50ZXIgdG8gMzIgYml0cyBhbmQK K1RoZSBAb3B0aW9uey1tMzJ9IG9wdGlvbiBzZXRzIGludCwgbG9uZyBhbmQg cG9pbnRlciB0byAzMiBiaXRzIGFuZAogZ2VuZXJhdGVzIGNvZGUgdGhhdCBy dW5zIG9uIGFueSBpMzg2IHN5c3RlbS4KLVRoZSA2NC1iaXQgZW52aXJvbm1l bnQgc2V0cyBpbnQgdG8gMzIgYml0cyBhbmQgbG9uZyBhbmQgcG9pbnRlcgot dG8gNjQgYml0cyBhbmQgZ2VuZXJhdGVzIGNvZGUgZm9yIEFNRCdzIHg4Ni02 NCBhcmNoaXRlY3R1cmUuIEZvcgotZGFyd2luIG9ubHkgdGhlIC1tNjQgb3B0 aW9uIHR1cm5zIG9mZiB0aGUgQG9wdGlvbnstZm5vLXBpY30gYW5kCi1Ab3B0 aW9uey1tZHluYW1pYy1uby1waWN9IG9wdGlvbnMuCitUaGUgQG9wdGlvbnst bTY0fSBvcHRpb24gc2V0cyBpbnQgdG8gMzIgYml0cyBhbmQgbG9uZyBhbmQg cG9pbnRlcgordG8gNjQgYml0cyBhbmQgZ2VuZXJhdGVzIGNvZGUgZm9yIEFN RCdzIHg4Ni02NCBhcmNoaXRlY3R1cmUuCitUaGUgQG9wdGlvbnstbXgzMn0g b3B0aW9uIHNldHMgaW50LCBsb25nIGFuZCBwb2ludGVyIHRvIDMyIGJpdHMg YW5kCitnZW5lcmF0ZXMgY29kZSBmb3IgQU1EJ3MgeDg2LTY0IGFyY2hpdGVj dHVyZS4KK0ZvciBkYXJ3aW4gb25seSB0aGUgQG9wdGlvbnstbTY0fSBvcHRp b24gdHVybnMgb2ZmIHRoZSBAb3B0aW9uey1mbm8tcGljfQorYW5kIEBvcHRp b257LW1keW5hbWljLW5vLXBpY30gb3B0aW9ucy4KIAogQGl0ZW0gLW1uby1y ZWQtem9uZQogQG9waW5kZXggbW5vLXJlZC16b25lCg== --001636426b41b6181504a7562c5e--