From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7987 invoked by alias); 24 Jul 2002 23:26:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 7965 invoked by uid 71); 24 Jul 2002 23:26:01 -0000 Resent-Date: 24 Jul 2002 23:26:01 -0000 Resent-Message-ID: <20020724232601.7964.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, t6@pobox.com Received: (qmail 4041 invoked by uid 61); 24 Jul 2002 23:16:03 -0000 Message-Id: <20020724231603.4040.qmail@sources.redhat.com> Date: Wed, 24 Jul 2002 16:26:00 -0000 From: t6@pobox.com Reply-To: t6@pobox.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/7400: dynamic_cast segfaults with -shared option X-SW-Source: 2002-07/txt/msg00665.txt.bz2 List-Id: >Number: 7400 >Category: c++ >Synopsis: dynamic_cast segfaults with -shared option >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Jul 24 16:26:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: t6@pobox.com >Release: 3.0.4 >Organization: >Environment: Redhat 7.3 >Description: The following source generates code that causes a segfault at run-time (in dynamic_cast I believe). class A { public: virtual ~A() {} }; class B : public A {}; class C : public B {}; int main() { C* c(new C()); A* a(c); // dynamic_cast segfaults when compiled with -shared B* b = dynamic_cast(a); } Environment is Redhat 7.3 with gcc3 installed from an .rpm file from redhat's site (distributed with Redhat 7.2): gcc version 3.0.4 (Red Hat Linux 7.2 3.0.4-1) Output from g++3 -v -save-temps -shared source.cpp: Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/specs Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --host=i386-redhat-linux --with-system-zlib Thread model: posix gcc version 3.0.4 (Red Hat Linux 7.2 3.0.4-1) /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/cpp0 -lang-c++ -D__GNUG__=3 -D__GXX_DEPRECATED -D__EXCEPTIONS -D__GXX_ABI_VERSION=100 -v -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=4 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__ source.cpp source.ii GNU CPP version 3.0.4 (Red Hat Linux 7.2 3.0.4-1) (cpplib) (i386 Linux/ELF) ignoring nonexistent directory "/usr/i386-redhat-linux/include" #include "..." search starts here: #include <...> search starts here: /usr/include/g++-v3 /usr/include/g++-v3/i386-redhat-linux /usr/include/g++-v3/backward /usr/local/include /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/include /usr/include End of search list. /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/cc1plus -fpreprocessed source.ii -quiet -dumpbase source.cpp -version -o source.s GNU CPP version 3.0.4 (Red Hat Linux 7.2 3.0.4-1) (cpplib) (i386 Linux/ELF) GNU C++ version 3.0.4 (Red Hat Linux 7.2 3.0.4-1) (i386-redhat-linux) compiled by GNU C version 3.0.4 (Red Hat Linux 7.2 3.0.4-1). as -V -Qy -o source.o source.s GNU assembler version 2.11.93.0.2 (i386-redhat-linux) using BFD version 2.11.93.0.2 20020207 /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/collect2 -m elf_i386 -shared /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/../../../crti.o /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/crtbeginS.o -L/usr/lib/gcc-lib/i386-redhat-linux/3.0.4 -L/usr/lib/gcc-lib/i386-redhat-linux/3.0.4/../../.. source.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/crtendS.o /usr/lib/gcc-lib/i386-redhat-linux/3.0.4/../../../crtn.o ---------------------- >How-To-Repeat: Compile above source with g++3 -shared source.cpp and run ./a.out Segmentation fault results. (NB: Although this generates the a.out in a single step, my application generates similar code to a .o which is then linked into a .so and finally into an executable with main(). In tat case the gdb debugger reports the file and line containing the dynamic_cast. In the code snippet above the gdb debugger doesn't seem to know anything about the stack (??!) ) >Fix: Doesn't happen if -shared is not used. I don't know of any way to generate shared .so library files without using -shared option. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="source.s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="source.s" CS5maWxlCSJzb3VyY2UuaWkiCgkudGV4dAoJLmFsaWduIDQKLmdsb2JsIG1haW4KCS50eXBlCW1h aW4sQGZ1bmN0aW9uCm1haW46Ci5MRkIxOgoJcHVzaGwJJWVicAouTENGSTA6Cgltb3ZsCSVlc3As ICVlYnAKLkxDRkkxOgoJc3VibAkkNDAsICVlc3AKLkxDRkkyOgoJYW5kbAkkLTE2LCAlZXNwCglz dWJsCSQxMiwgJWVzcAoJcHVzaGwJJDQKLkxDRkkzOgoJY2FsbAlfWm53agoJYWRkbAkkMTYsICVl c3AKCW1vdmwJJWVheCwgLTIwKCVlYnApCglzdWJsCSQxMiwgJWVzcAoJcHVzaGwJLTIwKCVlYnAp CgljYWxsCV9aTjFDQzFFdgoJYWRkbAkkMTYsICVlc3AKCW1vdmwJLTIwKCVlYnApLCAlZWF4Cglt b3ZsCSVlYXgsIC00KCVlYnApCgltb3ZiCSQwLCAlYWwKCXRlc3RiCSVhbCwgJWFsCglqZQkuTDkK CXN1YmwJJDEyLCAlZXNwCglwdXNobAktMjAoJWVicCkKCWNhbGwJX1pkbFB2CglhZGRsCSQxNiwg JWVzcAouTDk6Cgltb3ZsCS00KCVlYnApLCAlZWF4Cgltb3ZsCSVlYXgsIC04KCVlYnApCgltb3Zs CS04KCVlYnApLCAlZWF4Cgltb3ZsCSVlYXgsIC0yOCglZWJwKQoJY21wbAkkMCwgLTI4KCVlYnAp CglqbmUJLkwxMAoJbW92bAkkMCwgLTI0KCVlYnApCglqbXAJLkwxMQoJLnAyYWxpZ24gMgouTDEw OgoJcHVzaGwJJDAKCXB1c2hsCSRfWlRJMUIKCXB1c2hsCSRfWlRJMUEKCXB1c2hsCS0yOCglZWJw KQoJY2FsbAlfX2R5bmFtaWNfY2FzdAoJYWRkbAkkMTYsICVlc3AKCW1vdmwJJWVheCwgLTI0KCVl YnApCi5MMTE6Cgltb3ZsCS0yNCglZWJwKSwgJWVheAoJbW92bAklZWF4LCAtMTIoJWVicCkKCW1v dmwJJDAsICVlYXgKCWxlYXZlCglyZXQKLkxGRTE6Ci5MZmUxOgoJLnNpemUJbWFpbiwuTGZlMS1t YWluCgkud2VhawlfWlRTMUIKCS5zZWN0aW9uCS5nbnUubGlua29uY2Uuci5fWlRTMUIsImEiLEBw cm9nYml0cwoJLnR5cGUJX1pUUzFCLEBvYmplY3QKCS5zaXplCV9aVFMxQiwzCl9aVFMxQjoKCS5z dHJpbmcJIjFCIgoJLndlYWsJX1pUSTFCCgkuc2VjdGlvbgkuZ251LmxpbmtvbmNlLmQuX1pUSTFC LCJhdyIsQHByb2diaXRzCgkuYWxpZ24gNAoJLnR5cGUJX1pUSTFCLEBvYmplY3QKCS5zaXplCV9a VEkxQiwxMgpfWlRJMUI6CgkubG9uZwlfWlRWTjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBl X2luZm9FKzgKCS5sb25nCV9aVFMxQgoJLmxvbmcJX1pUSTFBCgkud2VhawlfWlRTMUEKCS5zZWN0 aW9uCS5nbnUubGlua29uY2Uuci5fWlRTMUEsImEiLEBwcm9nYml0cwoJLnR5cGUJX1pUUzFBLEBv YmplY3QKCS5zaXplCV9aVFMxQSwzCl9aVFMxQToKCS5zdHJpbmcJIjFBIgoJLndlYWsJX1pUSTFB Cgkuc2VjdGlvbgkuZ251LmxpbmtvbmNlLmQuX1pUSTFBLCJhdyIsQHByb2diaXRzCgkuYWxpZ24g NAoJLnR5cGUJX1pUSTFBLEBvYmplY3QKCS5zaXplCV9aVEkxQSw4Cl9aVEkxQToKCS5sb25nCV9a VFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UrOAoJLmxvbmcJX1pUUzFBCgkuc2Vj dGlvbgkuZ251LmxpbmtvbmNlLnQuX1pOMUNDMUV2LCJheCIsQHByb2diaXRzCgkuYWxpZ24gNAoJ LndlYWsJX1pOMUNDMUV2CgkudHlwZQlfWk4xQ0MxRXYsQGZ1bmN0aW9uCl9aTjFDQzFFdjoKLkxG QjI6CglwdXNobAklZWJwCi5MQ0ZJNDoKCW1vdmwJJWVzcCwgJWVicAouTENGSTU6CglwdXNobAkl ZWJ4Ci5MQ0ZJNjoKCXN1YmwJJDQsICVlc3AKLkxDRkk3OgoJbW92bAk4KCVlYnApLCAlZWJ4Cglz dWJsCSQxMiwgJWVzcAoJcHVzaGwJJWVieAouTENGSTg6CgljYWxsCV9aTjFCQzJFdgoJYWRkbAkk MTYsICVlc3AKCW1vdmwJJF9aVFYxQywgJWVheAoJYWRkbAkkOCwgJWVheAoJbW92bAklZWF4LCAo JWVieCkKCW1vdmwJLTQoJWVicCksICVlYngKCWxlYXZlCglyZXQKLkxGRTI6Ci5MZmUyOgoJLnNp emUJX1pOMUNDMUV2LC5MZmUyLV9aTjFDQzFFdgoJLndlYWsJX1pUVjFDCgkuc2VjdGlvbgkuZ251 LmxpbmtvbmNlLmQuX1pUVjFDLCJhdyIsQHByb2diaXRzCgkuYWxpZ24gOAoJLnR5cGUJX1pUVjFD LEBvYmplY3QKCS5zaXplCV9aVFYxQywxNgpfWlRWMUM6CgkubG9uZwkwCgkubG9uZwlfWlRJMUMK CS5sb25nCV9aTjFDRDFFdgoJLmxvbmcJX1pOMUNEMEV2Cgkud2VhawlfWlRTMUMKCS5zZWN0aW9u CS5nbnUubGlua29uY2Uuci5fWlRTMUMsImEiLEBwcm9nYml0cwoJLnR5cGUJX1pUUzFDLEBvYmpl Y3QKCS5zaXplCV9aVFMxQywzCl9aVFMxQzoKCS5zdHJpbmcJIjFDIgoJLndlYWsJX1pUSTFDCgku c2VjdGlvbgkuZ251LmxpbmtvbmNlLmQuX1pUSTFDLCJhdyIsQHByb2diaXRzCgkuYWxpZ24gNAoJ LnR5cGUJX1pUSTFDLEBvYmplY3QKCS5zaXplCV9aVEkxQywxMgpfWlRJMUM6CgkubG9uZwlfWlRW TjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FKzgKCS5sb25nCV9aVFMxQwoJLmxv bmcJX1pUSTFCCgkuc2VjdGlvbgkuZ251LmxpbmtvbmNlLnQuX1pOMUNEMUV2LCJheCIsQHByb2di aXRzCgkuYWxpZ24gNAoJLndlYWsJX1pOMUNEMUV2CgkudHlwZQlfWk4xQ0QxRXYsQGZ1bmN0aW9u Cl9aTjFDRDFFdjoKLkxGQjM6CglwdXNobAklZWJwCi5MQ0ZJOToKCW1vdmwJJWVzcCwgJWVicAou TENGSTEwOgoJc3VibAkkOCwgJWVzcAouTENGSTExOgoJbW92bAkkX1pUVjFDLCAlZWF4CglhZGRs CSQ4LCAlZWF4Cgltb3ZsCTgoJWVicCksICVlZHgKCW1vdmwJJWVheCwgKCVlZHgpCglzdWJsCSQx MiwgJWVzcAoJcHVzaGwJOCglZWJwKQouTENGSTEyOgoJY2FsbAlfWk4xQkQyRXYKCWFkZGwJJDE2 LCAlZXNwCgltb3ZsCSQxLCAlZWF4CglhbmRsCSQyLCAlZWF4Cgl0ZXN0YgklYWwsICVhbAoJamUJ LkwyMAoJc3VibAkkMTIsICVlc3AKCXB1c2hsCTgoJWVicCkKCWNhbGwJX1pkbFB2CglhZGRsCSQx NiwgJWVzcAouTDIwOgoJbGVhdmUKCXJldAouTEZFMzoKLkxmZTM6Cgkuc2l6ZQlfWk4xQ0QxRXYs LkxmZTMtX1pOMUNEMUV2Cgkuc2VjdGlvbgkuZ251LmxpbmtvbmNlLnQuX1pOMUNEMEV2LCJheCIs QHByb2diaXRzCgkuYWxpZ24gNAoJLndlYWsJX1pOMUNEMEV2CgkudHlwZQlfWk4xQ0QwRXYsQGZ1 bmN0aW9uCl9aTjFDRDBFdjoKLkxGQjQ6CglwdXNobAklZWJwCi5MQ0ZJMTM6Cgltb3ZsCSVlc3As ICVlYnAKLkxDRkkxNDoKCXN1YmwJJDgsICVlc3AKLkxDRkkxNToKCW1vdmwJJF9aVFYxQywgJWVh eAoJYWRkbAkkOCwgJWVheAoJbW92bAk4KCVlYnApLCAlZWR4Cgltb3ZsCSVlYXgsICglZWR4KQoJ c3VibAkkMTIsICVlc3AKCXB1c2hsCTgoJWVicCkKLkxDRkkxNjoKCWNhbGwJX1pOMUJEMkV2Cglh ZGRsCSQxNiwgJWVzcAoJbW92bAkkMSwgJWVheAoJYW5kbAkkMywgJWVheAoJdGVzdGIJJWFsLCAl YWwKCWplCS5MMjQKCXN1YmwJJDEyLCAlZXNwCglwdXNobAk4KCVlYnApCgljYWxsCV9aZGxQdgoJ YWRkbAkkMTYsICVlc3AKLkwyNDoKCWxlYXZlCglyZXQKLkxGRTQ6Ci5MZmU0OgoJLnNpemUJX1pO MUNEMEV2LC5MZmU0LV9aTjFDRDBFdgoJLnNlY3Rpb24JLmdudS5saW5rb25jZS50Ll9aTjFCQzJF diwiYXgiLEBwcm9nYml0cwoJLmFsaWduIDQKCS53ZWFrCV9aTjFCQzJFdgoJLnR5cGUJX1pOMUJD MkV2LEBmdW5jdGlvbgpfWk4xQkMyRXY6Ci5MRkI1OgoJcHVzaGwJJWVicAouTENGSTE3OgoJbW92 bAklZXNwLCAlZWJwCi5MQ0ZJMTg6CglwdXNobAklZWJ4Ci5MQ0ZJMTk6CglzdWJsCSQ0LCAlZXNw Ci5MQ0ZJMjA6Cgltb3ZsCTgoJWVicCksICVlYngKCXN1YmwJJDEyLCAlZXNwCglwdXNobAklZWJ4 Ci5MQ0ZJMjE6CgljYWxsCV9aTjFBQzJFdgoJYWRkbAkkMTYsICVlc3AKCW1vdmwJJF9aVFYxQiwg JWVheAoJYWRkbAkkOCwgJWVheAoJbW92bAklZWF4LCAoJWVieCkKCW1vdmwJLTQoJWVicCksICVl YngKCWxlYXZlCglyZXQKLkxGRTU6Ci5MZmU1OgoJLnNpemUJX1pOMUJDMkV2LC5MZmU1LV9aTjFC QzJFdgoJLnNlY3Rpb24JLmdudS5saW5rb25jZS50Ll9aTjFCRDJFdiwiYXgiLEBwcm9nYml0cwoJ LmFsaWduIDQKCS53ZWFrCV9aTjFCRDJFdgoJLnR5cGUJX1pOMUJEMkV2LEBmdW5jdGlvbgpfWk4x QkQyRXY6Ci5MRkI2OgoJcHVzaGwJJWVicAouTENGSTIyOgoJbW92bAklZXNwLCAlZWJwCi5MQ0ZJ MjM6CglzdWJsCSQ4LCAlZXNwCi5MQ0ZJMjQ6Cgltb3ZsCSRfWlRWMUIsICVlYXgKCWFkZGwJJDgs ICVlYXgKCW1vdmwJOCglZWJwKSwgJWVkeAoJbW92bAklZWF4LCAoJWVkeCkKCXN1YmwJJDEyLCAl ZXNwCglwdXNobAk4KCVlYnApCi5MQ0ZJMjU6CgljYWxsCV9aTjFBRDJFdgoJYWRkbAkkMTYsICVl c3AKCW1vdmwJJDEsICVlYXgKCWFuZGwJJDAsICVlYXgKCXRlc3RiCSVhbCwgJWFsCglqZQkuTDM1 CglzdWJsCSQxMiwgJWVzcAoJcHVzaGwJOCglZWJwKQoJY2FsbAlfWmRsUHYKCWFkZGwJJDE2LCAl ZXNwCi5MMzU6CglsZWF2ZQoJcmV0Ci5MRkU2OgouTGZlNjoKCS5zaXplCV9aTjFCRDJFdiwuTGZl Ni1fWk4xQkQyRXYKCS53ZWFrCV9aVFYxQgoJLnNlY3Rpb24JLmdudS5saW5rb25jZS5kLl9aVFYx QiwiYXciLEBwcm9nYml0cwoJLmFsaWduIDgKCS50eXBlCV9aVFYxQixAb2JqZWN0Cgkuc2l6ZQlf WlRWMUIsMTYKX1pUVjFCOgoJLmxvbmcJMAoJLmxvbmcJX1pUSTFCCgkubG9uZwlfWk4xQkQxRXYK CS5sb25nCV9aTjFCRDBFdgoJLnNlY3Rpb24JLmdudS5saW5rb25jZS50Ll9aTjFBQzJFdiwiYXgi LEBwcm9nYml0cwoJLmFsaWduIDQKCS53ZWFrCV9aTjFBQzJFdgoJLnR5cGUJX1pOMUFDMkV2LEBm dW5jdGlvbgpfWk4xQUMyRXY6Ci5MRkI3OgoJcHVzaGwJJWVicAouTENGSTI2OgoJbW92bAklZXNw LCAlZWJwCi5MQ0ZJMjc6CglzdWJsCSQ4LCAlZXNwCi5MQ0ZJMjg6Cgltb3ZsCSRfWlRWMUEsICVl YXgKCWxlYWwJOCglZWF4KSwgJWVkeAoJbW92bAk4KCVlYnApLCAlZWF4Cgltb3ZsCSVlZHgsICgl ZWF4KQoJbGVhdmUKCXJldAouTEZFNzoKLkxmZTc6Cgkuc2l6ZQlfWk4xQUMyRXYsLkxmZTctX1pO MUFDMkV2Cgkuc2VjdGlvbgkuZ251LmxpbmtvbmNlLnQuX1pOMUFEMkV2LCJheCIsQHByb2diaXRz CgkuYWxpZ24gNAoJLndlYWsJX1pOMUFEMkV2CgkudHlwZQlfWk4xQUQyRXYsQGZ1bmN0aW9uCl9a TjFBRDJFdjoKLkxGQjg6CglwdXNobAklZWJwCi5MQ0ZJMjk6Cgltb3ZsCSVlc3AsICVlYnAKLkxD RkkzMDoKCXN1YmwJJDgsICVlc3AKLkxDRkkzMToKCW1vdmwJJF9aVFYxQSwgJWVheAoJYWRkbAkk OCwgJWVheAoJbW92bAk4KCVlYnApLCAlZWR4Cgltb3ZsCSVlYXgsICglZWR4KQoJbW92bAkkMSwg JWVheAoJYW5kbAkkMCwgJWVheAoJdGVzdGIJJWFsLCAlYWwKCWplCS5MNDIKCXN1YmwJJDEyLCAl ZXNwCglwdXNobAk4KCVlYnApCi5MQ0ZJMzI6CgljYWxsCV9aZGxQdgoJYWRkbAkkMTYsICVlc3AK Lkw0MjoKCWxlYXZlCglyZXQKLkxGRTg6Ci5MZmU4OgoJLnNpemUJX1pOMUFEMkV2LC5MZmU4LV9a TjFBRDJFdgoJLnNlY3Rpb24JLmdudS5saW5rb25jZS50Ll9aTjFCRDBFdiwiYXgiLEBwcm9nYml0 cwoJLmFsaWduIDQKCS53ZWFrCV9aTjFCRDBFdgoJLnR5cGUJX1pOMUJEMEV2LEBmdW5jdGlvbgpf Wk4xQkQwRXY6Ci5MRkI5OgoJcHVzaGwJJWVicAouTENGSTMzOgoJbW92bAklZXNwLCAlZWJwCi5M Q0ZJMzQ6CglzdWJsCSQ4LCAlZXNwCi5MQ0ZJMzU6Cgltb3ZsCSRfWlRWMUIsICVlYXgKCWFkZGwJ JDgsICVlYXgKCW1vdmwJOCglZWJwKSwgJWVkeAoJbW92bAklZWF4LCAoJWVkeCkKCXN1YmwJJDEy LCAlZXNwCglwdXNobAk4KCVlYnApCi5MQ0ZJMzY6CgljYWxsCV9aTjFBRDJFdgoJYWRkbAkkMTYs ICVlc3AKCW1vdmwJJDEsICVlYXgKCWFuZGwJJDMsICVlYXgKCXRlc3RiCSVhbCwgJWFsCglqZQku TDQ2CglzdWJsCSQxMiwgJWVzcAoJcHVzaGwJOCglZWJwKQoJY2FsbAlfWmRsUHYKCWFkZGwJJDE2 LCAlZXNwCi5MNDY6CglsZWF2ZQoJcmV0Ci5MRkU5OgouTGZlOToKCS5zaXplCV9aTjFCRDBFdiwu TGZlOS1fWk4xQkQwRXYKCS5zZWN0aW9uCS5nbnUubGlua29uY2UudC5fWk4xQkQxRXYsImF4IixA cHJvZ2JpdHMKCS5hbGlnbiA0Cgkud2VhawlfWk4xQkQxRXYKCS50eXBlCV9aTjFCRDFFdixAZnVu Y3Rpb24KX1pOMUJEMUV2OgouTEZCMTA6CglwdXNobAklZWJwCi5MQ0ZJMzc6Cgltb3ZsCSVlc3As ICVlYnAKLkxDRkkzODoKCXN1YmwJJDgsICVlc3AKLkxDRkkzOToKCW1vdmwJJF9aVFYxQiwgJWVh eAoJYWRkbAkkOCwgJWVheAoJbW92bAk4KCVlYnApLCAlZWR4Cgltb3ZsCSVlYXgsICglZWR4KQoJ c3VibAkkMTIsICVlc3AKCXB1c2hsCTgoJWVicCkKLkxDRkk0MDoKCWNhbGwJX1pOMUFEMkV2Cglh ZGRsCSQxNiwgJWVzcAoJbW92bAkkMSwgJWVheAoJYW5kbAkkMiwgJWVheAoJdGVzdGIJJWFsLCAl YWwKCWplCS5MNTAKCXN1YmwJJDEyLCAlZXNwCglwdXNobAk4KCVlYnApCgljYWxsCV9aZGxQdgoJ YWRkbAkkMTYsICVlc3AKLkw1MDoKCWxlYXZlCglyZXQKLkxGRTEwOgouTGZlMTA6Cgkuc2l6ZQlf Wk4xQkQxRXYsLkxmZTEwLV9aTjFCRDFFdgoJLndlYWsJX1pUVjFBCgkuc2VjdGlvbgkuZ251Lmxp bmtvbmNlLmQuX1pUVjFBLCJhdyIsQHByb2diaXRzCgkuYWxpZ24gOAoJLnR5cGUJX1pUVjFBLEBv YmplY3QKCS5zaXplCV9aVFYxQSwxNgpfWlRWMUE6CgkubG9uZwkwCgkubG9uZwlfWlRJMUEKCS5s b25nCV9aTjFBRDFFdgoJLmxvbmcJX1pOMUFEMEV2Cgkuc2VjdGlvbgkuZ251LmxpbmtvbmNlLnQu X1pOMUFEMUV2LCJheCIsQHByb2diaXRzCgkuYWxpZ24gNAoJLndlYWsJX1pOMUFEMUV2CgkudHlw ZQlfWk4xQUQxRXYsQGZ1bmN0aW9uCl9aTjFBRDFFdjoKLkxGQjExOgoJcHVzaGwJJWVicAouTENG STQxOgoJbW92bAklZXNwLCAlZWJwCi5MQ0ZJNDI6CglzdWJsCSQ4LCAlZXNwCi5MQ0ZJNDM6Cglt b3ZsCSRfWlRWMUEsICVlYXgKCWFkZGwJJDgsICVlYXgKCW1vdmwJOCglZWJwKSwgJWVkeAoJbW92 bAklZWF4LCAoJWVkeCkKCW1vdmwJJDEsICVlYXgKCWFuZGwJJDIsICVlYXgKCXRlc3RiCSVhbCwg JWFsCglqZQkuTDU0CglzdWJsCSQxMiwgJWVzcAoJcHVzaGwJOCglZWJwKQouTENGSTQ0OgoJY2Fs bAlfWmRsUHYKCWFkZGwJJDE2LCAlZXNwCi5MNTQ6CglsZWF2ZQoJcmV0Ci5MRkUxMToKLkxmZTEx OgoJLnNpemUJX1pOMUFEMUV2LC5MZmUxMS1fWk4xQUQxRXYKCS5zZWN0aW9uCS5nbnUubGlua29u Y2UudC5fWk4xQUQwRXYsImF4IixAcHJvZ2JpdHMKCS5hbGlnbiA0Cgkud2VhawlfWk4xQUQwRXYK CS50eXBlCV9aTjFBRDBFdixAZnVuY3Rpb24KX1pOMUFEMEV2OgouTEZCMTI6CglwdXNobAklZWJw Ci5MQ0ZJNDU6Cgltb3ZsCSVlc3AsICVlYnAKLkxDRkk0NjoKCXN1YmwJJDgsICVlc3AKLkxDRkk0 NzoKCW1vdmwJJF9aVFYxQSwgJWVheAoJYWRkbAkkOCwgJWVheAoJbW92bAk4KCVlYnApLCAlZWR4 Cgltb3ZsCSVlYXgsICglZWR4KQoJbW92bAkkMSwgJWVheAoJYW5kbAkkMywgJWVheAoJdGVzdGIJ JWFsLCAlYWwKCWplCS5MNTgKCXN1YmwJJDEyLCAlZXNwCglwdXNobAk4KCVlYnApCi5MQ0ZJNDg6 CgljYWxsCV9aZGxQdgoJYWRkbAkkMTYsICVlc3AKLkw1ODoKCWxlYXZlCglyZXQKLkxGRTEyOgou TGZlMTI6Cgkuc2l6ZQlfWk4xQUQwRXYsLkxmZTEyLV9aTjFBRDBFdgoJLnNlY3Rpb24JLmVoX2Zy YW1lLCJhdyIsQHByb2diaXRzCi5MZnJhbWUxOgoJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCi5MU0NJ RTE6CgkubG9uZwkweDAKCS5ieXRlCTB4MQoJLnN0cmluZwkielAiCgkudWxlYjEyOCAweDEKCS5z bGViMTI4IC00CgkuYnl0ZQkweDgKCS51bGViMTI4IDB4NQoJLmJ5dGUJMHgwCgkubG9uZwlfX2d4 eF9wZXJzb25hbGl0eV92MAoJLmJ5dGUJMHhjCgkudWxlYjEyOCAweDQKCS51bGViMTI4IDB4NAoJ LmJ5dGUJMHg4OAoJLnVsZWIxMjggMHgxCgkuYWxpZ24gNAouTEVDSUUxOgouTFNGREUxOgoJLmxv bmcJLkxFRkRFMS0uTEFTRkRFMQouTEFTRkRFMToKCS5sb25nCS5MQVNGREUxLS5MZnJhbWUxCgku bG9uZwkuTEZCMQoJLmxvbmcJLkxGRTEtLkxGQjEKCS51bGViMTI4IDB4MAoJLmJ5dGUJMHg0Cgku bG9uZwkuTENGSTAtLkxGQjEKCS5ieXRlCTB4ZQoJLnVsZWIxMjggMHg4CgkuYnl0ZQkweDg1Cgku dWxlYjEyOCAweDIKCS5ieXRlCTB4NAoJLmxvbmcJLkxDRkkxLS5MQ0ZJMAoJLmJ5dGUJMHhkCgku dWxlYjEyOCAweDUKCS5ieXRlCTB4NAoJLmxvbmcJLkxDRkkzLS5MQ0ZJMQoJLmJ5dGUJMHgyZQoJ LnVsZWIxMjggMHgxMAoJLmFsaWduIDQKLkxFRkRFMToKLkxTRkRFNToKCS5sb25nCS5MRUZERTUt LkxBU0ZERTUKLkxBU0ZERTU6CgkubG9uZwkuTEFTRkRFNS0uTGZyYW1lMQoJLmxvbmcJLkxGQjMK CS5sb25nCS5MRkUzLS5MRkIzCgkudWxlYjEyOCAweDAKCS5ieXRlCTB4NAoJLmxvbmcJLkxDRkk5 LS5MRkIzCgkuYnl0ZQkweGUKCS51bGViMTI4IDB4OAoJLmJ5dGUJMHg4NQoJLnVsZWIxMjggMHgy CgkuYnl0ZQkweDQKCS5sb25nCS5MQ0ZJMTAtLkxDRkk5CgkuYnl0ZQkweGQKCS51bGViMTI4IDB4 NQoJLmJ5dGUJMHg0CgkubG9uZwkuTENGSTEyLS5MQ0ZJMTAKCS5ieXRlCTB4MmUKCS51bGViMTI4 IDB4MTAKCS5hbGlnbiA0Ci5MRUZERTU6Ci5MU0ZERTc6CgkubG9uZwkuTEVGREU3LS5MQVNGREU3 Ci5MQVNGREU3OgoJLmxvbmcJLkxBU0ZERTctLkxmcmFtZTEKCS5sb25nCS5MRkI0CgkubG9uZwku TEZFNC0uTEZCNAoJLnVsZWIxMjggMHgwCgkuYnl0ZQkweDQKCS5sb25nCS5MQ0ZJMTMtLkxGQjQK CS5ieXRlCTB4ZQoJLnVsZWIxMjggMHg4CgkuYnl0ZQkweDg1CgkudWxlYjEyOCAweDIKCS5ieXRl CTB4NAoJLmxvbmcJLkxDRkkxNC0uTENGSTEzCgkuYnl0ZQkweGQKCS51bGViMTI4IDB4NQoJLmJ5 dGUJMHg0CgkubG9uZwkuTENGSTE2LS5MQ0ZJMTQKCS5ieXRlCTB4MmUKCS51bGViMTI4IDB4MTAK CS5hbGlnbiA0Ci5MRUZERTc6Ci5MU0ZERTExOgoJLmxvbmcJLkxFRkRFMTEtLkxBU0ZERTExCi5M QVNGREUxMToKCS5sb25nCS5MQVNGREUxMS0uTGZyYW1lMQoJLmxvbmcJLkxGQjYKCS5sb25nCS5M RkU2LS5MRkI2CgkudWxlYjEyOCAweDAKCS5ieXRlCTB4NAoJLmxvbmcJLkxDRkkyMi0uTEZCNgoJ LmJ5dGUJMHhlCgkudWxlYjEyOCAweDgKCS5ieXRlCTB4ODUKCS51bGViMTI4IDB4MgoJLmJ5dGUJ MHg0CgkubG9uZwkuTENGSTIzLS5MQ0ZJMjIKCS5ieXRlCTB4ZAoJLnVsZWIxMjggMHg1CgkuYnl0 ZQkweDQKCS5sb25nCS5MQ0ZJMjUtLkxDRkkyMwoJLmJ5dGUJMHgyZQoJLnVsZWIxMjggMHgxMAoJ LmFsaWduIDQKLkxFRkRFMTE6CgkuaWRlbnQJIkdDQzogKEdOVSkgMy4wLjQgKFJlZCBIYXQgTGlu dXggNy4yIDMuMC40LTEpIgo=