From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31767 invoked by alias); 15 Jul 2010 17:42:56 -0000 Received: (qmail 31749 invoked by uid 22791); 15 Jul 2010 17:42:54 -0000 X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,NO_DNS_FOR_FROM,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mga01.intel.com (HELO mga01.intel.com) (192.55.52.88) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 15 Jul 2010 17:42:49 +0000 Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP; 15 Jul 2010 10:40:57 -0700 X-ExtLoop1: 1 Received: from gnu-6.sc.intel.com ([10.3.194.135]) by fmsmga001.fm.intel.com with ESMTP; 15 Jul 2010 10:42:39 -0700 Received: by gnu-6.sc.intel.com (Postfix, from userid 500) id 0CAF421313; Thu, 15 Jul 2010 10:42:47 -0700 (PDT) Date: Thu, 15 Jul 2010 17:42:00 -0000 From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Cc: Uros Bizjak Subject: RFC: Turn on -fomit-frame-pointer and -fasynchronous-unwind-tables for Linux/i386 Message-ID: <20100715174246.GA20583@intel.com> Reply-To: "H.J. Lu" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Dxnq1zWXvFF0Q93v" Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-12-10) 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: 2010-07/txt/msg01274.txt.bz2 --Dxnq1zWXvFF0Q93v Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 6344 Hi, This patch turns on -fomit-frame-pointer and -fasynchronous-unwind-tables for Linux/i386. Tested on Linux/ia32 and Linux/x86-64. I am also enclosing a spreadsheet of comparison of shared library segment sizes in gcc. Segment size differences range from -1% to 30%. The smaller the DSO size is, the bigger its size increases. Overall, the size difference is close to 0%. This comparison may not be typical since C++ and Java libraries have .eh_frame sections anyway. Any comments? Thanks. H.J. --- gcc/ 2010-07-14 H.J. Lu * config/i386/i386.c (override_options): Default flag_omit_frame_pointer and flag_asynchronous_unwind_tables to TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT and TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT. * config/i386/i386.h (TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT): New. (TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT): Likewise. * config/i386/linux.h (TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT): Likewise. (TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT): Likewise. * config/i386/linux64.h (TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT): Likewise. (TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT): Likewise. gcc/testsuite/ 2010-07-15 H.J. Lu * gcc.target/i386/frame-pointer-1.c: New. * gcc.target/i386/frame-pointer-2.c: Likewise. * gcc.target/i386/frame-pointer-3.c: Likewise. * gcc.target/i386/frame-pointer-4.c: Likewise. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 4fd2aab..fe30bfd 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2985,10 +2985,23 @@ override_options (bool main_args_p) { if (flag_zee == 2) flag_zee = 0; + /* Unwind info is not correct around the CFG unless either a + frame pointer is present or -maccumulate-outgoing-args is + set. When both -fasynchronous-unwind-tables and + -fomit-frame-pointer are turned on by default, turn off + both if -mno-accumulate-outgoing-args is used. */ if (flag_omit_frame_pointer == 2) - flag_omit_frame_pointer = 0; + flag_omit_frame_pointer + = (TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT + && (!TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT + || !(target_flags_explicit + & MASK_ACCUMULATE_OUTGOING_ARGS))); if (flag_asynchronous_unwind_tables == 2) - flag_asynchronous_unwind_tables = 0; + flag_asynchronous_unwind_tables + = (TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT + && (!TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT + || !(target_flags_explicit + & MASK_ACCUMULATE_OUTGOING_ARGS))); if (flag_pcc_struct_return == 2) flag_pcc_struct_return = DEFAULT_PCC_STRUCT_RETURN; } diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index eb3eb9f..c0ae95f 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -467,6 +467,8 @@ extern tree x86_mfence; /* Extra bits to force on w/ 32-bit mode. */ #define TARGET_SUBTARGET32_DEFAULT 0 #define TARGET_SUBTARGET32_ISA_DEFAULT 0 +#define TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT 0 +#define TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT 0 /* Extra bits to force on w/ 64-bit mode. */ #define TARGET_SUBTARGET64_DEFAULT 0 diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 81dfd1e..61d53b5 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -219,3 +219,10 @@ along with GCC; see the file COPYING3. If not see /* i386 glibc provides __stack_chk_guard in %gs:0x14. */ #define TARGET_THREAD_SSP_OFFSET 0x14 #endif + +/* Turn on -fomit-frame-pointer and -fasynchronous-unwind-tables by + default. */ +#undef TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT +#define TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT 1 +#undef TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT +#define TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT 1 diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h index 33b4dc9..5a02205 100644 --- a/gcc/config/i386/linux64.h +++ b/gcc/config/i386/linux64.h @@ -123,3 +123,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see x86_64 glibc provides it in %fs:0x28. */ #define TARGET_THREAD_SSP_OFFSET (TARGET_64BIT ? 0x28 : 0x14) #endif + +/* Turn on -fomit-frame-pointer and -fasynchronous-unwind-tables by + default. */ +#undef TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT +#define TARGET_SUBTARGET32_OMIT_FRAME_POINTER_DEFAULT 1 +#undef TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT +#define TARGET_SUBTARGET32_ASYNCHRONOUS_UNWIND_TABLES_DEFAULT 1 diff --git a/gcc/testsuite/gcc.target/i386/frame-pointer-1.c b/gcc/testsuite/gcc.target/i386/frame-pointer-1.c new file mode 100644 index 0000000..2495d09 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/frame-pointer-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mtune=i686" } */ +/* { dg-require-effective-target ilp32 } */ + +void bar (int); + +void +foo (void) +{ + bar (1); +} diff --git a/gcc/testsuite/gcc.target/i386/frame-pointer-2.c b/gcc/testsuite/gcc.target/i386/frame-pointer-2.c new file mode 100644 index 0000000..1478aba --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/frame-pointer-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mtune=i686 -mno-accumulate-outgoing-args" } */ +/* { dg-require-effective-target ilp32 } */ + +void bar (int); + +void +foo (void) +{ + bar (1); +} diff --git a/gcc/testsuite/gcc.target/i386/frame-pointer-3.c b/gcc/testsuite/gcc.target/i386/frame-pointer-3.c new file mode 100644 index 0000000..2ff965f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/frame-pointer-3.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mtune=i686 -mpush-args" } */ +/* { dg-require-effective-target ilp32 } */ + +void bar (int); + +void +foo (void) +{ + bar (1); +} diff --git a/gcc/testsuite/gcc.target/i386/frame-pointer-4.c b/gcc/testsuite/gcc.target/i386/frame-pointer-4.c new file mode 100644 index 0000000..2b1bf52 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/frame-pointer-4.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mtune=i686 -mpush-args -mno-accumulate-outgoing-args" } */ +/* { dg-require-effective-target ilp32 } */ + +void bar (int); + +void +foo (void) +{ + bar (1); +} --Dxnq1zWXvFF0Q93v Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Content-Disposition: attachment; filename="gcc frame pointer.xlsx" Content-Transfer-Encoding: base64 Content-length: 17357 UEsDBBQABgAIAAAAIQCqUB8GhQEAAIQFAAATANwBW0NvbnRlbnRfVHlwZXNd LnhtbCCi2AEooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArFRbT8IwFH438T8sfTWs 6IMxhsGDl0clAX9AaQ+soWubnqPCv/dsEyIGZ8h42bJLv1u/09FkU7nsAxLa 4AtxnQ9FBl4HY/2qEG/z58GdyJCUN8oFD4XYAorJ+PJiNN9GwIxXeyxESRTv pURdQqUwDxE8f1mGVCnix7SSUem1WoG8GQ5vpQ6ewNOAagwxHj3CUr07yp42 /LpVsrBeZA/tfzVVIVSMzmpFLFR+ePOLZBCWS6vBBP1eMXSOMYEyWAJQ5fKY LDOmGRCxMRRyPHpl08kayKYq0YuqmEFunCR2AO31OmcPvUQ0YFc1yt+ESFsH 2Jvq0G8LumM+Em8Ch6dZ+97AnFc2e4CljdjB0J1ddyafIa0XIazPnUrdhrxS 1u90HysBV2iaQkTJhestAOpGGzCDyJCQyMI+s2PcXMDae1NblM2tfwsPq7HH 78qAdWjl9EPJWfXO4JB/j/sPP5YqgZkRT+7q7OPxE7tLx74LOiQ4PYjdzNSr jzRANmfo+AsAAP//AwBQSwMEFAAGAAgAAAAhALVVMCP1AAAATAIAAAsAzgFf cmVscy8ucmVscyCiygEooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIySz07DMAzG70i8Q+T76m5ICKGlu0xI uyFUHsAk7h+1jaMkQPf2hAOCSmPb0fbnzz9b3u7maVQfHGIvTsO6KEGxM2J7 12p4rZ9WD6BiImdpFMcajhxhV93ebF94pJSbYtf7qLKLixq6lPwjYjQdTxQL 8exypZEwUcphaNGTGahl3JTlPYa/HlAtPNXBaggHeweqPvo8+bK3NE1veC/m fWKXToxAnhM7y3blQ2YLqc/bqJpCy0mDFfOc0xHJ+yJjA54m2lxP9P+2OHEi S4nQSODzPN+Kc0Dr64Eun2ip+L3OPOKnhOFNZPhhwcUPVF8AAAD//wMAUEsD BBQABgAIAAAAIQCSB5TsBAEAAD8DAAAaAAgBeGwvX3JlbHMvd29ya2Jvb2su eG1sLnJlbHMgogQBKKAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AACskstqxDAMRfeF/oPRvnEyfVCGcWbRUphtm36AcJQ4TGIHy33k72tSOsnA kG6yMVwJ33sktNt/d634JM+NswqyJAVBVruysbWC9+Ll5hEEB7Qlts6SgoEY 9vn11e6VWgzxE5umZxFdLCswIfRbKVkb6pAT15ONncr5DkOUvpY96iPWJDdp +iD93APyM09xKBX4Q3kLohj6mPy/t6uqRtOz0x8d2XAhQnIY2jiAKNDXFBT8 6iQygrwcv1kzPsS10JQ+Sjm+2RJDtibDl/NHNkRh4jiVWI6dRZj7NWE0tvrJ YGMnmFNpaSN3a0KwQU/lW/Dx5ue3MS//wcizs89/AAAA//8DAFBLAwQUAAYA CAAAACEAcLg96lYBAAAqAgAADwAAAHhsL3dvcmtib29rLnhtbIyRy27DIBBF 95X6D4h944ecNI2CI1V9ZVNlkSZrCuMYBYMFOE7+vmMi97HrapgZOHPvsFyd G01O4LyyhtFsklICRlipzIHRj+3L3ZwSH7iRXFsDjF7A01V5e7PsrTt+Wnsk CDCe0TqEdpEkXtTQcD+xLRjsVNY1PGDqDolvHXDpa4DQ6CRP01nScGXolbBw /2HYqlICnqzoGjDhCnGgeUD5vlatp+WyUhp2V0eEt+07b1D3WVOiuQ/PUgWQ jBaY2h7+FFzXPnZKD91pOqNJ+W1y4whSA7iNUycuLrgpSiRUvNNhi4bHeVjP izyPb4fl7BT0/gczpOS8V0bantG8QBGXMctSXH0fW3slQ42oYp59195AHerA 6DxNHwZlyS98XCmOiZGY6PdVCFJMZsN/xvIaXaFmt1B4cGuZRcj4UnAt0OMQ 4sV8ep9P443xm8svAAAA//8DAFBLAwQUAAYACAAAACEAxTHILL0BAAB0BQAA FAAAAHhsL3NoYXJlZFN0cmluZ3MueG1slJTBbpwwEIbvlfIOyNfI6222qqoI yCFSn2BzjowZwMgeU4+hydvXbFcCsXFELkjzz+d/0IzH+dObNdkEnrTDgn0/ HFkGqFytsS3Yy/k3/8UyChJraRxCwd6B2FN59y0nClk8i1SwLoThUQhSHVhJ BzcAxkzjvJUhhr4VNHiQNXUAwRrxcDz+FFZqZJlyI4aCnX6wbET9Z4Tnq3Bk ZU66zC9FHmmQKhaPLgR+AlZmWYC3kItQ5mLGPkWzWga5l80qot1sDWrDlo02 gNLCVj+IykFneavEweiKRPy0qm/VgdwtG5NNoxcyBimuVUqcHv7bqVdKYnEe wUtcPNurkjzh7LCiY5QiezlJoYykOKfQCZRBTyB61GLO8HgNusVolmblU7N1 i16rZI8uhdfsblMenDPJZm18db/Pt59sCrRj3Ri56udV+Cqf7pur+tXVmqOU dxzTMo4YJLlQq/t7Pp0E+ZU1XeTbQ/Nz8NGmfrSqJW+c1YE3Pq4KH5zGAH67 BrxBx/dgkt5Rdd6hG4mP+FdjzYOsDGw3OZaNlvvx8+0jU/p4u2829uyCNNv/ f3a20gj1oov4apb/AAAA//8DAFBLAwQUAAYACAAAACEAO20yS8EAAABCAQAA IwAAAHhsL3dvcmtzaGVldHMvX3JlbHMvc2hlZXQxLnhtbC5yZWxzhI/BisIw FEX3A/5DeHuT1oUMQ1M3IrhV5wNi+toG25eQ9xT9e7McZcDl5XDP5Tab+zyp G2YOkSzUugKF5GMXaLDwe9otv0GxOOrcFAktPJBh0y6+mgNOTkqJx5BYFQux hVEk/RjDfsTZsY4JqZA+5tlJiXkwyfmLG9Csqmpt8l8HtC9Ote8s5H1Xgzo9 Uln+7I59Hzxuo7/OSPLPhEk5kGA+okg5yEXt8oBiQet39p5rfQ4Epm3My/P2 CQAA//8DAFBLAwQUAAYACAAAACEA6aYluIIGAABTGwAAEwAAAHhsL3RoZW1l L3RoZW1lMS54bWzsWU9v2zYUvw/YdyB0b20nthsHdYrYsZutTRvEboceaZmW WFOiQNJJfRva44ABw7phlwG77TBsK9ACu3SfJluHrQP6FfZISrIYy0vSBhvW 1YdEIn98/9/jI3X12oOIoUMiJOVx26tdrnqIxD4f0zhoe3eG/UsbHpIKx2PM eEza3pxI79rW++9dxZsqJBFBsD6Wm7jthUolm5WK9GEYy8s8ITHMTbiIsIJX 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 /mDBKzkXFdNtwb4lR0ddKDk/qq01HtYcrGvjEZQ8N9QjmGFoG+MSatXTqgdL MWXofvPYliL7ZRAGnFL0JjkTiLEG23QYa98hJf0S0ys2AIRKsmFqjuXcO6/d tV6MBi4ujUPABMLCJeLOkQf8WW9Mon8QL+bEI8PEO+F8sza7zm9yntAHxPHW /LMP8evYdiYcWXivvrvwik/dLt4ZgtNEL5tq25gEFS/hpJ8b6pGHmfwQsm5M 2EN18vwtDPt/nh65Xizzgr9x7aeekufnrP8AAAD//wMAUEsBAi0AFAAGAAgA AAAhAKpQHwaFAQAAhAUAABMAAAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5 cGVzXS54bWxQSwECLQAUAAYACAAAACEAtVUwI/UAAABMAgAACwAAAAAAAAAA AAAAAACSAwAAX3JlbHMvLnJlbHNQSwECLQAUAAYACAAAACEAkgeU7AQBAAA/ AwAAGgAAAAAAAAAAAAAAAAB+BgAAeGwvX3JlbHMvd29ya2Jvb2sueG1sLnJl bHNQSwECLQAUAAYACAAAACEAcLg96lYBAAAqAgAADwAAAAAAAAAAAAAAAADC CAAAeGwvd29ya2Jvb2sueG1sUEsBAi0AFAAGAAgAAAAhAMUxyCy9AQAAdAUA ABQAAAAAAAAAAAAAAAAARQoAAHhsL3NoYXJlZFN0cmluZ3MueG1sUEsBAi0A FAAGAAgAAAAhADttMkvBAAAAQgEAACMAAAAAAAAAAAAAAAAANAwAAHhsL3dv cmtzaGVldHMvX3JlbHMvc2hlZXQxLnhtbC5yZWxzUEsBAi0AFAAGAAgAAAAh AOmmJbiCBgAAUxsAABMAAAAAAAAAAAAAAAAANg0AAHhsL3RoZW1lL3RoZW1l MS54bWxQSwECLQAUAAYACAAAACEAkcdhlvkBAAAnBQAADQAAAAAAAAAAAAAA AADpEwAAeGwvc3R5bGVzLnhtbFBLAQItABQABgAIAAAAIQDOlf56KQoAAJkk AAAYAAAAAAAAAAAAAAAAAA0WAAB4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWxQ SwECLQAUAAYACAAAACEAAcA7pPwAAACEAgAAEAAAAAAAAAAAAAAAAABsIAAA eGwvY2FsY0NoYWluLnhtbFBLAQItABQABgAIAAAAIQBnjn5tgwcAAJAeAAAn AAAAAAAAAAAAAAAAAJYhAAB4bC9wcmludGVyU2V0dGluZ3MvcHJpbnRlclNl dHRpbmdzMS5iaW5QSwECLQAUAAYACAAAACEAOp2ExzEBAAAqAgAAEQAAAAAA AAAAAAAAAABeKQAAZG9jUHJvcHMvY29yZS54bWxQSwECLQAUAAYACAAAACEA kB6vR40BAAAUAwAAEAAAAAAAAAAAAAAAAADGKwAAZG9jUHJvcHMvYXBwLnht bFBLBQYAAAAADQANAGQDAACJLgAAAAA= --Dxnq1zWXvFF0Q93v--