From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22354 invoked by alias); 14 Feb 2002 17:06: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 22305 invoked by uid 71); 14 Feb 2002 17:06:00 -0000 Resent-Date: 14 Feb 2002 17:06:00 -0000 Resent-Message-ID: <20020214170600.22304.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, yosefk@cs.huji.ac.il Received:(qmail 8629 invoked by uid 61); 14 Feb 2002 16:58:46 -0000 Message-Id:<20020214165846.8628.qmail@sources.redhat.com> Date: Thu, 14 Feb 2002 09:06:00 -0000 From: yosefk@cs.huji.ac.il Reply-To: yosefk@cs.huji.ac.il To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/5692: g++ 2.96, ix86: (int)(x*y) result depends on statements near it like cout << endl X-SW-Source: 2002-02/txt/msg00341.txt.bz2 List-Id: >Number: 5692 >Category: c++ >Synopsis: g++ 2.96, ix86: (int)(x*y) result depends on statements near it like cout << endl >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Feb 14 09:06:00 PST 2002 >Closed-Date: >Last-Modified: >Originator: Yosef Kreinin >Release: gcc version 2.96 20000731 (Red Hat Linux 7.0) >Organization: >Environment: OS - Red Hat Linux 7.0 CPU - ix86 >Description: It's about (int)(x*y) for doubles x & y being undefined, inconsistent between different compilations and dependant on the way of computation and SURROUNDING STATEMENTS. IT'S NOT ABOUT PRECISE RESULTS, IT'S ABOUT CONSISTENT RESULTS! I URGE YOU NOT TO IGNORE THIS BUG AT ONCE JUST BECAUSE IT'S ABOUT DOUBLE COMPUTATIONS, WHICH ARE _ALWAYS_ INACCURATE, AS YOU SEEM TO PROMISE AT YOUR WEB SITE. THEY STILL MUST BE CONSISTENT AND NOT DEPENDANT ON THINGS LIKE cout << endl; IN THE CODE! The buggy code is in Bug1.cpp & Bug2.cpp, VERY SHORT and only uses iostreams & standard C++. The script RunBugs compiles the files with different options, and runs the executables. The 3 problems below (the third one is the most severe) occur in the following case: we have two doubles, x & y, the product x*y is very close to an integer (a common case when you get such pairs is x = double(z)/y, where z is an integer). Obviously, the result of (int)(x*y) is not defined well, but the following problems are worse then just (int)(x*y) != z: 1. Multiplying 2 doubles, then casting the result to int in 1 expression gives a DIFFERENT result then multiplying 2 doubles, storing the result in a temporary and then casting the temporary to int. 2. When using -O6, the result is IDENTICAL - so, -O6 is inconsistent with normal compilation. 3. When the second operand is obtained by using an accessor function of an object, and compiling with -O6, inserting a print statement CHANGES the result, so the result with -O6 and accessor function is UNPREDICTABLE. This seems to be hardware-dependant - for instance, no problems at all occur on solaris and gcc 2.95.2. But, how cout << endl; may change the result unless it's a compiler problem? THIS IS PRETTY SEVERE SINCE THE RESULT OF A SIMPLE OPERATION MAY NOT EVEN BE INSPECTED BY printing IT. >How-To-Repeat: Run the csh script RunBugs from the tar file. If you don't want to do it, run g++ like this: g++ -o Bug1 Bug1.cpp g++ -o Bug1O6 Bug1.cpp -O6 g++ -o Bug2O6 Bug2.cpp -O6 g++ -o Bug2O6PRINT Bug2.cpp -O6 -DPRINT Run the executables, and you'll see (just as with running RunBugs) the following: Bug1 and Bug1O6 show that the result of (int)(x*y) is different from double prod = x*y; (int)(prod) when NOT using -O6 and is the same when using -O6. Thus, the code knows how it was compiled and prints it to standard output. Bug2O6 and Bug2O6PRINT show that the result is dependant on inserting cout << endl between double prod = x*y and the casting, in a similar way. Read the source (Bug1.cpp & Bug2.cpp) - it's short, only uses , I don't think you need *.ii files, but those are in ii.tar.bz2 together with .out files - g++ output when invoked with the described options plus -v -save-temps. I spent about a day tracking this down and about 5 hours generating this bug report, it's hard to make standalone code showing such a strange problem. So please mail me back the status of this report... >Fix: A fix for the cases when you suppose the product to be near an integer is to add an epsilon (with the sign of the product) to the temporary holding the product, this seems to work. But I suppose in some application that is not good enough, and also noone would do so, the problem is the results are INCONSISTENT! Consistensy is more important an times then PRECISION, so one might use (int)(x*y) without concerning precision, but assuming it's consistent (on THE SAME processor!...) like any other computation. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-tar; name="BugReport.tar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="BugReport.tar" UkVBRE1FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTMx MAAwMDAxNzUwADAwMDAwMDAyMDYwADA3NDMyMjYyNTYxADAxMTQ1NAAgMAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHlvc2VmawAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAZGV2ZWxvcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU aGUgYnVnZ3kgY29kZSBpcyBpbiBCdWcxLmNwcCAmIEJ1ZzIuY3BwLCBWRVJZIFNIT1JUIAphbmQg b25seSB1c2VzIGlvc3RyZWFtcyAmIHN0YW5kYXJkIEMrKy4KVGhlIHNjcmlwdCBSdW5CdWdzIGNv bXBpbGVzIHRoZSBmaWxlcyB3aXRoIGRpZmZlcmVudCBvcHRpb25zLAphbmQgcnVzIHRoZSBleGVj dXRhYmxlcy4KClRoZSAzIHByb2JsZW1zIGJlbG93ICh0aGUgdGhpcmQgb25lIGlzIHRoZSBtb3N0 IHNldmVyZSkgb2NjdXIgaW4gdGhlCmZvbGxvd2luZyBjYXNlOiB3ZSBoYXZlIHR3byBkb3VibGVz LCB4ICYgeSwgdGhlIHByb2R1Y3QgeCp5IGlzIHZlcnkKY2xvc2UgdG8gYW4gaW50ZWdlciAoYSBj b21tb24gY2FzZSB3aGVuIHlvdSBnZXQgc3VjaCBwYWlycyBpcwp4ID0gZG91YmxlKHopL3ksIHdo ZXJlIHogaXMgYW4gaW50ZWdlcikuIE9idmlvdXNseSwKdGhlIHJlc3VsdCBvZiAoaW50KSh4Knkp IGlzIG5vdCBkZWZpbmVkIHdlbGwsIGJ1dCB0aGUgZm9sbG93aW5nIHByb2JsZW1zCmFyZSB3b3Jz ZSB0aGVuIGp1c3QgKGludCkoeCp5KSAhPSB6OgoKMS4gTXVsdGlwbHlpbmcgMiBkb3VibGVzLCB0 aGVuIGNhc3RpbmcgdGhlIHJlc3VsdCB0byBpbnQgaW4gMSBleHByZXNzaW9uIGdpdmVzIGEgRElG RkVSRU5UIHJlc3VsdAogICB0aGVuIG11bHRpcGx5aW5nIDIgZG91Ymxlcywgc3RvcmluZyB0aGUg cmVzdWx0IGluIGEgdGVtcG9yYXJ5IGFuZCB0aGVuIGNhc3RpbmcKICAgdGhlIHRlbXBvcmFyeSB0 byBpbnQuCgoyLiBXaGVuIHVzaW5nIC1PNiwgdGhlIHJlc3VsdCBpcyBJREVOVElDQUwgLSBzbywg LU82IGlzIGluY29uc2lzdGVudAogICB3aXRoIG5vcm1hbCBjb21waWxhdGlvbi4KCjMuIFdoZW4g dGhlIHNlY29uZCBvcGVyYW5kIGlzIG9idGFpbmVkIGJ5IHVzaW5nIGFuIGFjY2Vzc29yIGZ1bmN0 aW9uIG9mIGFuIG9iamVjdCwKICAgYW5kIGNvbXBpbGluZyB3aXRoIC1PNiwgaW5zZXJ0aW5nIGEg cHJpbnQgc3RhdGVtZW50IENIQU5HRVMgdGhlIHJlc3VsdCwKICAgc28gdGhlIHJlc3VsdCB3aXRo IC1PNiBhbmQgYWNjZXNzb3IgZnVuY3Rpb24gaXMgVU5QUkVESUNUQUJMRS4KAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSdW5C dWdzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDc3NwAwMDAxMzEwADAw MDE3NTAAMDAwMDAwMDEzNDIAMDc0MzI3NjUwMTEAMDEyMTEzACAwAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAeW9zZWZrAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAABkZXZlbG9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMhL2Jp bi9jc2gKZWNobyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZWNobyBC dWcgMSAtIGNvbXBpbGluZyB3aXRob3V0IG9wdGltaXphdGlvbnMKZWNobyBnKysgLW8gQnVnMSBC dWcxLmNwcApnKysgLW8gQnVnMSBCdWcxLmNwcAplY2hvIEJ1ZzEgCi4vQnVnMQoKZWNobyBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZWNobyBCdWcgMSAtIGNvbXBpbGlu ZyB3aXRoIC1PNiBhbmQgZ2V0dGluZyBkaWZmZXJlbnQgcmVzdWx0CmVjaG8gZysrIC1vIEJ1ZzFP NiBCdWcxLmNwcCAtTzYKZysrIC1vIEJ1ZzFPNiBCdWcxLmNwcCAtTzYKZWNobyBCdWcxTzYKLi9C dWcxTzYKCmVjaG8gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmVjaG8g QnVnIDIgLSBjb21waWxpbmcgd2l0aG91dCBwcmludCBhbmQgd2l0aCAtTzYKZWNobyBnKysgLW8g QnVnMk82IEJ1ZzIuY3BwIC1PNgpnKysgLW8gQnVnMk82IEJ1ZzIuY3BwIC1PNgplY2hvIEJ1ZzJP NgouL0J1ZzJPNgoKZWNobyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZWNobyBCdWcgMiAtIGNvbXBpbGluZyB3aXRoIHByaW50IGFuZCB3aXRoIC1PNgplY2hvIGcrKyAt byBCdWcyTzZQUklOVCBCdWcyLmNwcCAtTzYgLURQUklOVApnKysgLW8gQnVnMk82UFJJTlQgQnVn Mi5jcHAgLU82IC1EUFJJTlQKZWNobyBCdWcyTzZQUklOVAouL0J1ZzJPNlBSSU5UCgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCdWcxLmNw cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAxMzEwADAwMDE3 NTAAMDAwMDAwMDA2NDcAMDc0MzIyNTY3MTcAMDEyMTE1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAeW9zZWZrAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABkZXZlbG9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNpbmNsdWRl IDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgYnVnKGRvdWJsZSB5LGRvdWJs ZSB4KQp7CiAgZG91YmxlIG11bCA9IHkgKiB4OwogIGlmKCAoKGludCkobXVsKSkgIT0gKChpbnQp KHkgKiB4KSkgKSB7CiAgICBjb3V0IDw8ICJVbm9wdGltaXplZCBjb21waWxhdGlvbiwgYXJlIG5v dCBlcXVhbCIgPDwgZW5kbDsKICB9CiAgZWxzZSB7CiAgICBjb3V0IDw8ICItTzYsIGVxdWFsIiA8 PCBlbmRsOwogIH0KfQoKaW50IG1haW4oKQp7CiAgZG91YmxlIHkgPSAxNy4zOTIxOTM5NzQxMTYz MjQyODQyOTU4NDI1MTcxNjczMjk3ODgyMDgwMDc4MTI1OwogIGRvdWJsZSB4ID0gLTIuNzAyMzYx NzY0NzA1ODgxOTYzNTIxOTYwNjQyNTM4MDMzNDI1ODA3OTUyODgwODU5Mzc1OwogIGJ1Zyh5LHgp OwogIHJldHVybiAwOwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQnVnMi5jcHAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTMxMAAwMDAxNzUw ADAwMDAwMDAxMDU0ADA3NDMyMjU2MDYzADAxMjEwMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHlvc2VmawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAZGV2ZWxvcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjaW5jbHVkZSA8 aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgUwp7CiAgZG91YmxlIHg7CiAg ZG91YmxlIGdldFgoKSAKICB7IAogICAgcmV0dXJuIHg7IAogIH0KfSBzOwoKdm9pZCBidWcoZG91 YmxlIHkpCnsKICAgICAgZG91YmxlIG11bCA9IHkgKiBzLmdldFgoKTsKI2lmZGVmIFBSSU5UICAg ICAgCiAgICAgIGNvdXQgPDwgZW5kbDsKI2VuZGlmICAgICAgCiAgICAgIGlmKCAoKGludCkobXVs KSkgIT0gKChpbnQpKHkgKiBzLmdldFgoKSkpICkgewoJY291dCA8PCAiLU82LCBQUklOVElORyAt IG5vdCBlcXVhbCIgPDwgZW5kbDsJCiAgICAgIH0KICAgICAgZWxzZSB7Cgljb3V0IDw8ICItTzYs IE5PIFBSSU5UUywgZXF1YWwiIDw8IGVuZGw7CiAgICAgIH0KfQoKaW50IG1haW4oKQp7CiAgZG91 YmxlIHkgPSAxNy4zOTIxOTM5NzQxMTYzMjQyODQyOTU4NDI1MTcxNjczMjk3ODgyMDgwMDc4MTI1 OwogIHMueCA9IC0yLjcwMjM2MTc2NDcwNTg4MTk2MzUyMTk2MDY0MjUzODAzMzQyNTgwNzk1Mjg4 MDg1OTM3NTsKICBidWcoeSk7CiAgcmV0dXJuIDA7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaWkudGFyLmJ6MgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTMxMAAwMDAxNzUwADAw MDAwMDI1NzQyADA3NDMyNzY1NjQzADAxMjQyNgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAA=