From vakatov@ncbi.nlm.nih.gov Sun Jan 2 16:57:00 2000 From: vakatov@ncbi.nlm.nih.gov (vakatov@ncbi.nlm.nih.gov) Date: Sun, 02 Jan 2000 16:57:00 -0000 Subject: libstdc++/20: basic_[io]stringstream::str() - extra "return" in void func? Message-ID: <20000103005438.12507.qmail@sourceware.cygnus.com> >Number: 20 >Category: libstdc++ >Synopsis: basic_[io]stringstream::str() - extra "return" in void func? >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun Jan 02 16:57:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: vakatov@ncbi.nlm.nih.gov >Release: libstdc++-2.90.7.tar.gz >Organization: >Environment: >Description: basic_[io]stringstream::str() - extra "return" in void func std_sstream.h, line 232, 284, 338: void str(const __string_type& __s) { return rdbuf()->str(__s); } ^^^^^^ >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From dirk_aust@gmx.de Thu Jan 6 08:47:00 2000 From: dirk_aust@gmx.de (dirk_aust@gmx.de) Date: Thu, 06 Jan 2000 08:47:00 -0000 Subject: libstdc++/21: libstdc++ Message-ID: <20000106164403.19808.qmail@sourceware.cygnus.com> >Number: 21 >Category: libstdc++ >Synopsis: libstdc++ >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Jan 06 08:47:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: dirk_aust@gmx.de >Release: 2.90.7 >Organization: >Environment: i686-linux-pc >Description: 'make install' stops with the message: make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/usr/src/packages/libstdc++-2.90.7/src' make[1]: *** No rule to make target `bits/ctype_base.h', needed by `/usr/include/g++-v3/bits/ctype_base.h'. Stop. make[1]: Leaving directory `/usr/src/packages/libstdc++-2.90.7/src' make: *** [install-recursive] Error 1 >How-To-Repeat: at every 'make install' >Fix: don't know >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Thu Jan 6 19:37:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Thu, 06 Jan 2000 19:37:00 -0000 Subject: libstdc++/20: basic_[io]stringstream::str() - extra "return" invoid func? Message-ID: <20000107033700.26087.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/20; it has been noted by GNATS. From: Benjamin Kosnik To: vakatov@ncbi.nlm.nih.gov Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/20: basic_[io]stringstream::str() - extra "return" in void func? Date: Thu, 6 Jan 2000 19:29:47 -0800 (PST) fixed. thanks for taking the time to report bugs like this. best, benjamin > basic_[io]stringstream::str() - extra "return" in void func > > std_sstream.h, line 232, 284, 338: > > void > str(const __string_type& __s) > { return rdbuf()->str(__s); } > ^^^^^^ From cshihpin@dso.org.sg Fri Jan 7 06:57:00 2000 From: cshihpin@dso.org.sg (cshihpin@dso.org.sg) Date: Fri, 07 Jan 2000 06:57:00 -0000 Subject: libstdc++/22: g++ cannot compile std::ostream_iterator > Message-ID: <20000107145333.10156.qmail@sourceware.cygnus.com> >Number: 22 >Category: libstdc++ >Synopsis: g++ cannot compile std::ostream_iterator > >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jan 07 06:57:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Richard Chan >Release: unknown-1.0 >Organization: >Environment: Linux RedHat 6.1, kernel 2.2.14 gcc-2.95.2/libgcc.a and libstdc++-2.90.7 compiled with -fhonor-std and --enable-namespaces >Description: With -fhonor-std and --enable-namespaces g++ cannot compile a operator<< function using ostream_iterator. 1. Define an overloaded function std::ostream& operator<<(std::ostream&, const std::pair&) 2. Try printing pairs - works! std::pair p(12,34); std::cout << p; //this is OK; compiles and runs correctly 3. Try printing pair using std::ostream_iterator std::ostream_iterator > out(std::cout, "\n"); *out = p; //this does not compile!! Compiler cannot find // operator<< function // library is built with --enable-namespaces // using -fhonor-std >How-To-Repeat: c++ -fhonor-std -c bugfile.cc does not compile >Fix: No fix >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bugfile.cc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bugfile.cc" I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPGl0ZXJhdG9y PgoKc3RkOjpvc3RyZWFtJgpvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIHN0ZDo6cGFpcjxp bnQsIGludD4gcCkKewoJcmV0dXJuIG9zIDw8IHAuZmlyc3QgPDwgJyAnIDw8IHAuc2Vjb25kOwp9 CgptYWluKCkKewoJc3RkOjpwYWlyPGludCwgaW50PiBwKDEyLDM0KTsKCXN0ZDo6b3N0cmVhbV9p dGVyYXRvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+ID4gb3V0KHN0ZDo6Y291dCwgIlxuIik7CgoJc3Rk Ojpjb3V0IDw8IHAgPDwgc3RkOjplbmRsOwoJKm91dCA9IHA7IC8vIHRoaXMgZG9lcyBub3QgY29t cGlsZSEKfQoJCg== From mooney@dogbert.cc.ndsu.nodak.edu Mon Jan 10 13:27:00 2000 From: mooney@dogbert.cc.ndsu.nodak.edu (mooney@dogbert.cc.ndsu.nodak.edu) Date: Mon, 10 Jan 2000 13:27:00 -0000 Subject: libstdc++/23: alpha-dec-osf4.0f: math/mycabsf.c "hard register" compile failure Message-ID: <20000110212032.10660.qmail@sourceware.cygnus.com> >Number: 23 >Category: libstdc++ >Synopsis: alpha-dec-osf4.0f: math/mycabsf.c "hard register" compile failure >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jan 10 13:27:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: mooney@dogbert.cc.ndsu.nodak.edu >Release: 2.90.7 >Organization: >Environment: alphaev56-dec-osf4.0f, with all relevant patches applied. Using gcc 2.95.2, compiled on this machine. >Description: While attempting to compile libstdc++ 2.90.7, the build failed in the math subdirectory with the following error: gcc -DHAVE_CONFIG_H -I. -I. -I.. -O2 -g -Wall -c -DPIC mycabsf.c -o .libs/mycabsf.lo mycabsf.c: In function `__mycabsf': mycabsf.c:36: Unable to access imaginary part of complex value in a hard register on this target >How-To-Repeat: a simple ./configure make on an alpha-dec-osf4.x or 5.x box should reproduce the problem. >Fix: Unknown >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Mon Jan 10 13:47:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Mon, 10 Jan 2000 13:47:00 -0000 Subject: libstdc++/23: alpha-dec-osf4.0f: math/mycabsf.c "hard register"compile failure (fwd) Message-ID: <20000110214700.18208.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/23; it has been noted by GNATS. From: Benjamin Kosnik To: libstdc++-gnats@sourceware.cygnus.com Cc: Subject: Re: libstdc++/23: alpha-dec-osf4.0f: math/mycabsf.c "hard register" compile failure (fwd) Date: Mon, 10 Jan 2000 13:45:56 -0800 (PST) ---------- Forwarded message ---------- Date: Mon, 10 Jan 2000 13:37:35 -0800 From: Richard Henderson To: Benjamin Kosnik Subject: Re: libstdc++/23: alpha-dec-osf4.0f: math/mycabsf.c "hard register" compile failure (fwd) On Mon, Jan 10, 2000 at 01:33:19PM -0800, Benjamin Kosnik wrote: > Hey man. This is the complex stuff I was talking about. You had said (if i > remember correctly) that this is now a hard failure, whereas before it was > just silently failing. . . is there an ETA for complex to work on alpha, > and/or a specific compiler release to use?? (v3 requires >= 2.95.1) Some of this functions in current cvs. Dunno about this specific case. In no compiler do we properly follow the Alpha ABI wrt complex numbers. There is no ETA for this either. r~ From Gabriel.Dos-Reis@cmla.ens-cachan.fr Tue Jan 11 04:07:00 2000 From: Gabriel.Dos-Reis@cmla.ens-cachan.fr (Gabriel Dos Reis) Date: Tue, 11 Jan 2000 04:07:00 -0000 Subject: libstdc++/23: alpha-dec-osf4.0f: math/mycabsf.c "hard register" compile failure Message-ID: <20000111120700.15196.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/23; it has been noted by GNATS. From: Gabriel Dos Reis To: mooney@dogbert.cc.ndsu.nodak.edu Cc: libstdc++-gnats@sourceware.cygnus.com, libstdc++-prs@sourceware.cygnus.com Subject: Re: libstdc++/23: alpha-dec-osf4.0f: math/mycabsf.c "hard register" compile failure Date: 11 Jan 2000 12:59:33 +0100 mooney@dogbert.cc.ndsu.nodak.edu writes: | >Number: 23 | >Category: libstdc++ | >Synopsis: alpha-dec-osf4.0f: math/mycabsf.c "hard register" compile failure | >Confidential: no | >Severity: serious | >Priority: medium | >Responsible: unassigned | >State: open | >Class: sw-bug | >Submitter-Id: net | >Arrival-Date: Mon Jan 10 13:27:00 PST 2000 | >Closed-Date: | >Last-Modified: | >Originator: mooney@dogbert.cc.ndsu.nodak.edu | >Release: 2.90.7 | >Organization: | >Environment: | alphaev56-dec-osf4.0f, with all relevant patches applied. | Using gcc 2.95.2, compiled on this machine. | >Description: | While attempting to compile libstdc++ 2.90.7, the build | failed in the math subdirectory with the following error: | | gcc -DHAVE_CONFIG_H -I. -I. -I.. -O2 -g -Wall -c -DPIC mycabsf.c -o .libs/mycabsf.lo | mycabsf.c: In function `__mycabsf': | mycabsf.c:36: Unable to access imaginary part of complex value in a hard register on this target Thanks, this is a known problem in the compiler. I thought it was fixed, but apparantely I dreamt. Please feel free to report this to gcc-bugs@gcc.gnu.org -- Gaby From Nicholas.Walker@desy.de Wed Jan 12 03:27:00 2000 From: Nicholas.Walker@desy.de (Nicholas.Walker@desy.de) Date: Wed, 12 Jan 2000 03:27:00 -0000 Subject: libstdc++/25: all (istream) input causes segmentation fault Message-ID: <20000112112523.28965.qmail@sourceware.cygnus.com> >Number: 25 >Category: libstdc++ >Synopsis: all (istream) input causes segmentation fault >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Jan 12 03:27:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Nick Walker >Release: stdlibc++-2.90.7 >Organization: >Environment: solaris (SunOS vs 5.5.1) >Description: Attempting to read anything from an istream causes a segmentation fault. I have traced the problem to line 326 in file locale_facets.h: bool is(mask __m, char __c) const throw() -> { return _M_table[(unsigned char)(__c)] & __m; } It appears that _M_table = 0x0. I am using a local installed version of stdlibc++-2.90.7, compiled with gcc 2.95.2. The test code (see How-To-Repeat) was compiled and linked using the -static flag. Both debug (-g) and optimised (-O3) compilation show the same bug. As a side note, compiling the same code with 2.90.6 runs fine - but 2.90.6 float/double output doesn't work, and so I need 2.90.7. >How-To-Repeat: #include #include int main() { int n; // replace with your favorite type cin>>n; // boom! ifstream is("test.dat"); is>>n; // still boom! return 0; } >Fix: Badly need one!! >Release-Note: >Audit-Trail: >Unformatted: From jaten@accessone.com Mon Jan 17 20:07:00 2000 From: jaten@accessone.com (jaten@accessone.com) Date: Mon, 17 Jan 2000 20:07:00 -0000 Subject: libstdc++/26: red black tree crashes after 128 inserts Message-ID: <20000118040121.19392.qmail@sourceware.cygnus.com> >Number: 26 >Category: libstdc++ >Synopsis: red black tree crashes after 128 inserts >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jan 17 20:07:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Jason Aten (jaten@accessone.com) >Release: libstdc++.so.2.9.0 >Organization: >Environment: >Description: on line 232 of stl_tree.h x->left = y->right; y can be 0x0 and so asking fro ->right gives us: Program received signal SIGSEGV, Segmentation fault. 0x7f220 in __rb_tree_rotate_right__FP19__rb_tree_node_baseRP19__rb_tree_node_base (x=0x1bc8e0, root=@0xcbcc4) at /home/jaten/local/include/g++/stl_tree.h:232 (gdb) bt #0 0x7f220 in __rb_tree_rotate_right__FP19__rb_tree_node_baseRP19__rb_tree_node_base (x=0x1bc8e0, root=@0xcbcc4) at /home/jaten/local/include/g++/stl_tree.h:232 #1 0x7f128 in __rb_tree_rebalance__FP19__rb_tree_node_baseRP19__rb_tree_node_base (x=0x1bc910, root=@0xcbcc4) at /home/jaten/local/include/g++/stl_tree.h:267 #2 0x77298 in __insert__t7rb_tree5ZdZdZt8identity1ZdZt4less1ZdZt24__default_alloc_template2b0i0P19__rb_tree_node_baseT1RCd ( this=0xeeb055c0, x_=0x0, y_=0x1bcaf0, v=@0x239ce0) at /home/jaten/local/include/g++/stl_tree.h:703 #3 0x77578 in rb_tree, less, __default_alloc_template >::insert_unique ( this=0xeeb055c0, v=@0x239ce0) at /home/jaten/local/include/g++/stl_tree.h:741 #4 0x7d374 in set, __default_alloc_template >::insert (this=0xeeb055c0, x=@0x239ce0) at /home/jaten/local/include/g++/stl_set.h:116 #5 0x24618 in coreng_impl::correlateGene (this=0xbbcf0, geneID=12529, warehouseID=1, pValueThreshold=0.01, thePValueOperator=org_rosetta_compute_coreng_intersectionOp, targetGeneIDs=@0xeeb059a0, refineExperimentIDs=@0xeeb05990, excludedPairs=@0xeeb05978, maxPositivelyCorrelatedPointCount=30, maxNegativelyCorrelatedPointCount=0, theProgressListener=0xbf038, options=0xb9000 "") at coreng_impl.cpp:1991 #6 0x3bc30 in org_rosetta_compute_coreng_CorrelationEngine_skel::_OB_op_correlateGene (this=0xbbe80, _ob_buf=@0xbeca8, _ob_sw=false, _ob_offIn=60, _ob_offOut=24) at combo_skel.cpp:1236 #7 0x3ce54 in org_rosetta_compute_coreng_CorrelationEngine_skel::_OB_dispatch (this=0xbbe80, _ob_op=0xb6b78 "correlateGene", _ob_buf=@0xbeca8, _ob_sw=false, _ob_offIn=60, _ob_offOut=24) at combo_skel.cpp:1424 #8 0xef5e402c in CORBA_BOA::_OB_dispatch (this=0xba988, key=@0xeeb05bd4, op=0xb6b78 "correlateGene", buf=@0xbeca8, sw=false, offIn=60, offOut=24) at BOA.cpp:716 #9 0xef632aac in OBGIOPServerWorker::dispatchRequest (this=0xbc870, buf=@0xbeca8, swap=false) at GIOPServerWorker.cpp:418 #10 0xef67ba48 in OBGIOPServerWorkerThreaded::Dispatcher::run () from /home/jaten/local/lib/libOB.so #11 0xef3c0c6c in JTCThread::_JTC_startThreadHook (this=0xbeb78) at Thread.cpp:1234 #12 0xef3bc458 in threadStart (arg=0xbeb78) at Thread.cpp:196 (gdb) up 5 #5 0x24618 in coreng_impl::correlateGene (this=0xbbcf0, geneID=12529, warehouseID=1, pValueThreshold=0.01, thePValueOperator=org_rosetta_compute_coreng_intersectionOp, targetGeneIDs=@0xeeb059a0, refineExperimentIDs=@0xeeb05990, excludedPairs=@0xeeb05978, maxPositivelyCorrelatedPointCount=30, maxNegativelyCorrelatedPointCount=0, theProgressListener=0xbf038, options=0xb9000 "") at coreng_impl.cpp:1991 (gdb) p i $1 = 128 (gdb) down #4 0x7d374 in set, __default_alloc_template >::insert (this=0xeeb055c0, x=@0x239ce0) at /home/jaten/local/include/g++/stl_set.h:116 (gdb) p x $2 = (org_rosetta_compute_warehouse_EGID &) @0x239ce0: 10086 (gdb) down 5 #0 0x7f220 in __rb_tree_rotate_right__FP19__rb_tree_node_baseRP19__rb_tree_node_base (x=0x1bc8e0, root=@0xcbcc4) at /home/jaten/local/include/g++/stl_tree.h:232 (gdb) p x $3 = (__rb_tree_node_base *) 0x1bc8e0 (gdb) p y $4 = (__rb_tree_node_base *) 0x0 (gdb) up #1 0x7f128 in __rb_tree_rebalance__FP19__rb_tree_node_baseRP19__rb_tree_node_base (x=0x1bc910, root=@0xcbcc4) at /home/jaten/local/include/g++/stl_tree.h:267 (gdb) p root $5 = (__rb_tree_node_base *&) @0xcbcc4: 0xcc248 (gdb) p x->parent $6 = (__rb_tree_node_base *) 0xd05a0 (gdb) p x->parent->parent $7 = (__rb_tree_node_base *) 0xd0570 (gdb) down #0 0x7f220 in __rb_tree_rotate_right__FP19__rb_tree_node_baseRP19__rb_tree_node_base (x=0x1bc8e0, root=@0xcbcc4) at /home/jaten/local/include/g++/stl_tree.h:232 (gdb) p x $8 = (__rb_tree_node_base *) 0x1bc8e0 (gdb) p root $9 = (__rb_tree_node_base *&) @0xcbcc4: 0xcc248 (gdb) p x->left $10 = (__rb_tree_node_base *) 0x0 (gdb) up 5 #5 0x24618 in coreng_impl::correlateGene (this=0xbbcf0, geneID=12529, warehouseID=1, pValueThreshold=0.01, thePValueOperator=org_rosetta_compute_coreng_intersectionOp, targetGeneIDs=@0xeeb059a0, refineExperimentIDs=@0xeeb05990, excludedPairs=@0xeeb05978, maxPositivelyCorrelatedPointCount=30, maxNegativelyCorrelatedPointCount=0, theProgressListener=0xbf038, options=0xb9000 "") at coreng_impl.cpp:1991 (gdb) p i $11 = 128 (gdb) list 1986 // ============================================== 1987 egid_set geneSet; 1988 1989 for (i = 0; i < num_allgenes; i++) 1990 { 1991 geneSet.insert((*p_allgenes)[i]); 1992 } 1993 1994 // ============================================ 1995 // Now locate our query (gdb) >How-To-Repeat: intermittant problem, hard to reproduce. >Fix: >Release-Note: >Audit-Trail: >Unformatted: From arysin@yahoo.com Fri Jan 21 16:37:00 2000 From: arysin@yahoo.com (arysin@yahoo.com) Date: Fri, 21 Jan 2000 16:37:00 -0000 Subject: libstdc++/27: 'mode' argument in fstream/ofstream constructor Message-ID: <20000122002901.4913.qmail@sourceware.cygnus.com> >Number: 27 >Category: libstdc++ >Synopsis: 'mode' argument in fstream/ofstream constructor >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jan 21 16:37:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: arysin@yahoo.com >Release: 7 >Organization: >Environment: any >Description: When using 'mode' argument in ofstream e.g. ofstream f("tm", ios::bin); mode bit 'ios::out' gets cleaned so you have to type ofstream f("tm", ios::out|ios::bin); The same problem with ifstream. >How-To-Repeat: >Fix: place 'mode |= ios::in;' in ifstream::ifstream(...) and 'mode |= ios::out;' in ofstream::ofstream(...) >Release-Note: >Audit-Trail: >Unformatted: From whall@primextrading.com Fri Jan 21 18:47:00 2000 From: whall@primextrading.com (whall@primextrading.com) Date: Fri, 21 Jan 2000 18:47:00 -0000 Subject: libstdc++/28: solaris/bits/ctype_base.h incompatible with /usr/include/ctype.h, Solaris 7, SC5.0 Message-ID: <20000122023842.25040.qmail@sourceware.cygnus.com> >Number: 28 >Category: libstdc++ >Synopsis: solaris/bits/ctype_base.h incompatible with /usr/include/ctype.h, Solaris 7, SC5.0 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jan 21 18:47:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: cygnus >Release: libstdc++-2.90.7 >Organization: >Environment: Solaris 7, Sun SC5.0 compiler >Description: Upon standard install, during the "make && make install" phase, compilation of locale.cc resulted in an illegal conversion error within ctype.cc given the following: libstdc++-2.90.7/config/solaris/bits/ctype_base.h: typedef long* __to_type; libstdc++-2.90.7/config/solaris/ctype.cc: ctype_base::__to_type const& ctype::_S_toupper = __trans_upper; /usr/include/ctype.h: extern int* __trans_upper; >How-To-Repeat: mkdir bld-libstdc++ cd bld-libstdc++ ../libstdc++-2.90.7/configure --prefix=/usr/local/gnu-new-libstdc++ --enable-namespaces make && make install >Fix: In libstdc++-2.90.7/config/solaris/bits/ctype_base.h, replace this: typedef long* __to_type; with this: typedef int* __to_type; >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Mon Jan 24 10:27:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Mon, 24 Jan 2000 10:27:00 -0000 Subject: libstdc++/27: 'mode' argument in fstream/ofstream Message-ID: <20000124182700.4006.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/27; it has been noted by GNATS. From: Benjamin Kosnik To: libstdc++-gnats@sourceware.cygnus.com Cc: Subject: Re: libstdc++/27: 'mode' argument in fstream/ofstream Date: Mon, 24 Jan 2000 10:19:30 -0800 (PST) Fixed, before you submitted it :) I suggest checking out the CVS branch, it would have set you straight a lot sooner than I eventually did. (I was gone last week) -benjamin 2000-01-11 Benjamin Kosnik * bits/sstream.tcc (seekoff): Set based on end of written buffer, not buffer size. * testsuite/27_io/stringbuf.cc: Add tests for seekoff(end). * bits/std_fstream.h (ifstream::open): Add ios_base::in to openmode. (ofstream::open): Add ios_base::out to openmode. From rbsmithz@prodigy.net Sat Jan 29 15:07:00 2000 From: rbsmithz@prodigy.net (rbsmithz@prodigy.net) Date: Sat, 29 Jan 2000 15:07:00 -0000 Subject: libstdc++/29: seg fault in global basic_string construction Message-ID: <20000129230620.30181.qmail@sourceware.cygnus.com> >Number: 29 >Category: libstdc++ >Synopsis: seg fault in global basic_string construction >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Jan 29 15:07:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Randall B. Smith >Release: libstdc++ 2.95.2-3 >Organization: >Environment: RedHat 6.1, gcc-c++ 2.95.2, libstdc++-3-libc6.1-2-2.10.0.so >Description: A segmentation fault occurs during global object construction of basic_string objects. This was traced to the std/bastring.h file which #included the std/bastring.cc file. >How-To-Repeat: This problem is quite intermittant at compile/link time. Changes in unrelated areas of my code would may the problem go away or reappear, e.g., just commenting a statement or changing the length of a char * constant. I can provide code if necessary, but it seems odd that bastring.h includes bastring.cc, so I'll assume this is an oversight. >Fix: Comment-out or remove line at the bottom of /usr/include/g++-3/std/bastring.h: //#include >Release-Note: >Audit-Trail: >Unformatted: From michael.reed@ft.com Mon Jan 31 07:47:00 2000 From: michael.reed@ft.com (michael.reed@ft.com) Date: Mon, 31 Jan 2000 07:47:00 -0000 Subject: libstdc++/30: SUN 32bit apps using 64bit file offsets Message-ID: <20000131154527.19663.qmail@sourceware.cygnus.com> >Number: 30 >Category: libstdc++ >Synopsis: SUN 32bit apps using 64bit file offsets >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jan 31 07:47:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Mike Reed >Release: with gcc-2.95.2 >Organization: >Environment: SunOS gp003dev 5.7 Generic_106541-07 sun4u sparc SUNW,Ultra-Enterprise >Description: When compiling a 32 bit app to use 64 bit file offsets (largefiles) one defines _FILE_OFFSET_BITS=64 before including system headers. This causes, I believe, 'open' to be redifined to 'open64' so that one picks up the correct library function. However, if one happens to include streambuf.h from the STL this undefs 'open' and stops this working. This doesn't happen with the Sun compiler since they use some #pragma mechanism instead. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From stevemw@place.org Mon Jan 31 22:17:00 2000 From: stevemw@place.org (stevemw@place.org) Date: Mon, 31 Jan 2000 22:17:00 -0000 Subject: libstdc++/31: deallocates unowned memory within .pop_back() Message-ID: <20000201060801.27564.qmail@sourceware.cygnus.com> >Number: 31 >Category: libstdc++ >Synopsis: deallocates unowned memory within .pop_back() >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jan 31 22:17:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Stephen M Wynne >Release: libstdc++-2.9.0-24 >Organization: >Environment: Intel RedHat 6.1 >Description: Coredumps occur after doing a D.pop_back() on an empty object (declared by deque D;). After quickly reading it, I can only surmize that stl_deque.h's class deque's pop_back() mutator properly doesn't check to see if the object is empty. (I didn't fully understand pop_back_aux(), but it may be pointless to go into that function if we're empty.) Note: I did a search for pop on libstdc++ and didn't see a report for this bug. I think it's a major one, so I hope we can fix it soon. Thanks for the work! >How-To-Repeat: int main() { deque v; v.pop_back(); v.push_back(1); return 0; } >Fix: Add a check inside push_back() (before it does anything else) as follows: if (finish == start) return; >Release-Note: >Audit-Trail: >Unformatted: From steffend@lamar.colostate.edu Wed Feb 2 16:07:00 2000 From: steffend@lamar.colostate.edu (steffend@lamar.colostate.edu) Date: Wed, 02 Feb 2000 16:07:00 -0000 Subject: libstdc++/32: Install of libstdc++-2.90.7 fails; no header files copied Message-ID: <20000203000518.31551.qmail@sourceware.cygnus.com> >Number: 32 >Category: libstdc++ >Synopsis: Install of libstdc++-2.90.7 fails; no header files copied >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Feb 02 16:07:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: steffend@lamar.colostate.edu >Release: 2.90.7 >Organization: >Environment: Mandrake Linux (6.0), dual-processor PII; gcc 2.95.2 with a pretty standard install. >Description: Configure and make proceed happily. "make install" hops along until we get this: ---------------------------------------------------------------------- Libraries have been installed in: /home/steffend/lib/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/home/steffend/C++/libstdc++-2.90.7/src' make[1]: *** No rule to make target `bits/ctype_base.h', needed by `/home/steffend/lib/include/g++-v3/bits/ctype_base.h'. Stop. make[1]: Leaving directory `/home/steffend/C++/libstdc++-2.90.7/src' make: *** [install-recursive] Error 1 The .../lib directory seems to have been created, but I have no .../include directory tree. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From jeremy.day@perth.wni.com Wed Feb 2 18:07:00 2000 From: jeremy.day@perth.wni.com (jeremy.day@perth.wni.com) Date: Wed, 02 Feb 2000 18:07:00 -0000 Subject: libstdc++/33: Is supported in particular stringstream? Message-ID: <20000203015945.11336.qmail@sourceware.cygnus.com> >Number: 33 >Category: libstdc++ >Synopsis: Is supported in particular stringstream? >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Feb 02 18:07:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: jeremy.day@perth.wni.com >Release: unknown-1.0 >Organization: >Environment: SOLARIS >Description: g++ compilation can't find include file >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From jsk29@cornell.edu Sat Feb 5 13:07:00 2000 From: jsk29@cornell.edu (jsk29@cornell.edu) Date: Sat, 05 Feb 2000 13:07:00 -0000 Subject: libstdc++/34: Segmentation fault when resizing a valarry. Message-ID: <20000205210227.20112.qmail@sourceware.cygnus.com> >Number: 34 >Category: libstdc++ >Synopsis: Segmentation fault when resizing a valarry. >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Feb 05 13:07:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: John Karcz >Release: gcc version 2.95.2 19991024 (release) >Organization: >Environment: Redhat 6.1 on a Pentium 200, gcc 2.95.2 in /usr/local. >Description: First, I hope this is the correct place to report an STL in gcc 2.95.2. If not, please let me know who to contact. Resizing a valarray of valarrays can cause a segmentation fault under certain circumstances. I am very new to using the STL, and to C++ in general. This is the first large program I have written using the STL, so this could well be a feature and not a bug. :) However, it looks like a bug to me, and I can't figure out a reason why it would occur othersize, so I'm reporting it to the list. Let me know if you need more information, or if I should redirect this report to someone else. >How-To-Repeat: A test program is included, which should reproduce the crash. I've also included tha Makefile, so you can see the (simple) command line switches I used, and a backtrace, in case that is helpful. To reproduce the core dump: 1. Define a valarray>. (I believe it also works with types other than double, but I haven't thoroughly tested any other types.) 2. Resize the valarray to some size, say 10. 3. Resize any of the elements of valarray to another size. (element 5 is resized to size 2 here, but any valarray element to any size seems to work.) 4. Resize the valarray again, to the _same_ size as previously. (10 in the case of this example.) The core dump should occur at this point. The second resizing of the main valarray must be to the same size as it was originally set to... if it is set with resize(9) or resize(11) in this case, rather than resize(10), no crash occurs. -------- test.cc: -------- #include int main(int argc, char * argv[]) { valarray< valarray > a; // The outer valarray refers to a.resize(10); a[5].resize(2); a.resize(10); } --------- Makefile: --------- all: test test: test.cc g++ -pedantic -Wall -g test.cc -o test clean: rm -f test *.o *.so ---------- Backtrace: ---------- #0 0x40095117 in memcpy (dstpp=0x8050500, srcpp=0x0, len=16) at ../sysdeps/generic/memcpy.c:55 #1 0x804d014 in void __valarray_copy (__a=0x0, __n=2, __b=0x8050500) at /usr/local/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/../../../../include/g++-3/std/valarray_array.h:69 #2 0x804cfdd in valarray::operator= (this=0x80504d4, __v=@0xbffffc08) at /usr/local/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/../../../../include/g++-3/std/std_valarray.h:342 #3 0x804cf7d in void __valarray_fill > (__a=0x80504ac, __n=10, __t=@0xbffffc08) at /usr/local/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/../../../../include/g++-3/std/valarray_array.h:48 #4 0x804cd96 in valarray >::resize (this=0xbffffc10, __n=10, __c={_M_size = 3221224456, _M_data = 0x0}) at /usr/local/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/../../../../include/g++-3/std/std_valarray.h:535 #5 0x8049370 in main (argc=1, argv=0xbffffc64) at test.cc:9 Current language: auto; currently c >Fix: >Release-Note: >Audit-Trail: >Unformatted: From Gabriel.Dos-Reis@cmla.ens-cachan.fr Sat Feb 5 15:27:00 2000 From: Gabriel.Dos-Reis@cmla.ens-cachan.fr (Gabriel Dos Reis) Date: Sat, 05 Feb 2000 15:27:00 -0000 Subject: libstdc++/34: Segmentation fault when resizing a valarry. Message-ID: <20000205232700.2081.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/34; it has been noted by GNATS. From: Gabriel Dos Reis To: jsk29@cornell.edu Cc: libstdc++-gnats@sourceware.cygnus.com, libstdc++@sourceware.cygnus.com Subject: Re: libstdc++/34: Segmentation fault when resizing a valarry. Date: 06 Feb 2000 00:26:46 +0100 jsk29@cornell.edu writes: | >Number: 34 | >Category: libstdc++ | >Synopsis: Segmentation fault when resizing a valarry. | >Confidential: no | >Severity: serious | >Priority: medium | >Responsible: unassigned | >State: open | >Class: sw-bug | >Submitter-Id: net | >Arrival-Date: Sat Feb 05 13:07:00 PST 2000 | >Closed-Date: | >Last-Modified: | >Originator: John Karcz | >Release: gcc version 2.95.2 19991024 (release) | >Organization: | >Environment: | Redhat 6.1 on a Pentium 200, gcc 2.95.2 in /usr/local. | >Description: | First, I hope this is the correct place to report an STL | in gcc 2.95.2. If not, please let me know who to contact. | | Resizing a valarray of valarrays can cause a segmentation | fault under certain circumstances. | | I am very new to using the STL, and to C++ in general. This | is the first large program I have written using the STL, so | this could well be a feature and not a bug. :) However, it | looks like a bug to me, and I can't figure out a reason why | it would occur othersize, so I'm reporting it to the list. Thank you very much for your bug report. | Let me know if you need more information, or if I should | redirect this report to someone else. | >How-To-Repeat: | A test program is included, which should reproduce the | crash. I've also included tha Makefile, so you can see the | (simple) command line switches I used, and a backtrace, in | case that is helpful. | | To reproduce the core dump: | | 1. Define a valarray>. (I believe it | also works with types other than double, but I haven't | thoroughly tested any other types.) valarray > is not expected to work in general, because: 26.1/1 The complex and valarray components are parameterized by the type of information they contain and manipulate. A C++ program shall instantiate these components only with a type T that satisfies the following requirements [...] -- If T is a class, its assignment operator, copy and default constructors, and destructor shall correspond to each other in the following sense: Initialization of raw storage using the default constructor, followed by assignment, is semantically equivalent to initialization of raw storage using the copy constructor. [...] valarrays do not meet this requirement. If you want to build a two dimensional array out of valarray, please consider using gslice and gslice_array in conjunction with a plain valarray. [...] | #4 0x804cd96 in valarray >::resize (this=0xbffffc10, __n=10, | __c={_M_size = 3221224456, _M_data = 0x0}) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ I'm wondering how this can be possible, given: template inline valarray<_Tp>::valarray () : _M_size (0), _M_data (0) {} Thanks a lot. -- Gaby From amc@to.gd-es.com Mon Feb 7 18:27:00 2000 From: amc@to.gd-es.com (amc@to.gd-es.com) Date: Mon, 07 Feb 2000 18:27:00 -0000 Subject: libstdc++/35: make error for Digital Unix 4.0D Message-ID: <20000208022055.6623.qmail@sourceware.cygnus.com> >Number: 35 >Category: libstdc++ >Synopsis: make error for Digital Unix 4.0D >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Feb 07 18:27:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Allen M. Cohen >Release: 2.90.7 >Organization: >Environment: >Description: FATAL ERROR from make gcc version is: 2.95.2 Using GNU make too. # ./configure # make mycabsf.c:36 in funct __mycabsf: unable to access imag part of complex value in a hard reg on this target >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From ori@extent.com Fri Feb 18 06:07:00 2000 From: ori@extent.com (ori@extent.com) Date: Fri, 18 Feb 2000 06:07:00 -0000 Subject: libstdc++/36: A bug in STRING Message-ID: <20000218140248.22082.qmail@sourceware.cygnus.com> >Number: 36 >Category: libstdc++ >Synopsis: A bug in STRING >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Feb 18 06:07:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Ori Etkovitz >Release: unknown-1.0 >Organization: >Environment: SunOS >Description: A bug using STL library in MultiThreading. The std::string is not ReEnterant ! In Release 2.95.1 It cause many Segmentation calls in our programs. I replaced the STL header files with the ones from SGI, and the problem was fixed. >How-To-Repeat: >Fix: I replaced the STL header files with the ones from SGI, and the problem was fixed. >Release-Note: >Audit-Trail: >Unformatted: From rparnall@v-wave.com Fri Feb 25 10:17:00 2000 From: rparnall@v-wave.com (rparnall@v-wave.com) Date: Fri, 25 Feb 2000 10:17:00 -0000 Subject: libstdc++/37: Both reverse_iterators in multiset are typedef'ed to const_reverse_iterator Message-ID: <20000225181651.22846.qmail@sourceware.cygnus.com> >Number: 37 >Category: libstdc++ >Synopsis: Both reverse_iterators in multiset are typedef'ed to const_reverse_iterator >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Feb 25 10:16:59 PST 2000 >Closed-Date: >Last-Modified: >Originator: rparnall@v-wave.com >Release: unknown-1.0 >Organization: >Environment: gcc version 2.95.2 19991024 (release) >Description: from stl_multiset.h: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; stl_set.h is the same. I believe the first one of the pair should be _Rep_type::reverse_iterator. >How-To-Repeat: #include class X { public: int x; int GetX(); }; typedef multiset XSet; typedef XSet::reverse_iterator XIterator; int main() { XSet a; XIterator b; for (b = a.rbegin(); b != a.rend(); b++) { cout << b->GetX(); } } results in passing `const X' as `this' argument of `int X::GetX()' discards qualifiers >Fix: >Release-Note: >Audit-Trail: >Unformatted: From rparnall@v-wave.com Fri Feb 25 16:47:00 2000 From: rparnall@v-wave.com (Ruth Parnall) Date: Fri, 25 Feb 2000 16:47:00 -0000 Subject: libstdc++/37: Both reverse_iterators in multiset are typedef'ed to const_reverse_iterator Message-ID: <20000226004701.16090.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/37; it has been noted by GNATS. From: Ruth Parnall To: libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/37: Both reverse_iterators in multiset are typedef'ed to const_reverse_iterator Date: Fri, 25 Feb 2000 17:40:37 -0700 Can I remove this one? About fifteen minutes after I sent it, the light dawned, and then I found some documentation about it. (Blush). libstdc++-gnats@sourceware.cygnus.com wrote: > > Thank you very much for your problem report. > It has the internal identification `libstdc++/37'. > The individual assigned to look at your > report is: unassigned. > > >Category: libstdc++ > >Responsible: unassigned > >Synopsis: Both reverse_iterators in multiset are typedef'ed to const_reverse_iterator > >Arrival-Date: Fri Feb 25 10:16:59 PST 2000 From badger@prtr-13.ucsc.edu Sun Feb 27 09:47:00 2000 From: badger@prtr-13.ucsc.edu (badger@prtr-13.ucsc.edu) Date: Sun, 27 Feb 2000 09:47:00 -0000 Subject: libstdc++/38: Bug in global map variables Message-ID: <20000227174555.8857.qmail@sourceware.cygnus.com> >Number: 38 >Category: libstdc++ >Synopsis: Bug in global map variables >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun Feb 27 09:47:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: badger@prtr-13.ucsc.edu >Release: libstdc++-2.90.7 (And libstdc++v2 included with egcs) >Organization: >Environment: Redhat linux-5.2 + kernel2.2 & sparc-sun-solaris2.5.1 >Description: I am generating two related errors concerning a global variable that instantiates the map template class. When attempting to access the variable from a function, I am able to access and change keys that were generated in the calling function as I expect. However, the calling function is not able to access keys created in the called function. When attempting to access the variable from code in a second file none of the keys belonging to the map variable are available to me. None of the keys generated in this file are available in the calling function in the main file. >How-To-Repeat: The files I am attaching contain a short code snippet to repeat the error. (If the file does not get to you, please get it from http://www.tiki-lounge.com/~toshio/map-test.tgz ) Files: map-test.cpp: The file containing the main function. map-test.h: Contains an extern definition for the global map variable. map-extern.cpp:Contains another function that attempts to use the global map variable. t: Contains output from the program run. Compile, link, and run to regenerate the error. >Fix: Unknown. If this is just my misunderstanding of the spec or if this is an error in gcc/egcs rather than libstdc++, please let me know. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-compressed; name="map-test.tgz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="map-test.tgz" H4sIAGBfuTgAA+1YbWvbMBDOZ/0NCuFBacva+t2rkxY22GCfNti+taW4tpIYEjnYTlcY/e87+UWR 3+IGZrcbui+JHkmn85303Elrb3NGnlIS03N/s5kMIpqq2qaJJxjrmmqzX6yZVvbLRDNMB2NHtWzd cgxbA0S3VXOC1WHMqco2Sb0Y40kaJcsw2jeOxMkYBo0r6F1I/dU2IHgWRkkaE299LWBrbyM0FWie pSRJz5cNCkKPURigfO94q/v5lvppGNHjE/wbIexH2xTPZsonsggpDekCN0beUmXKB2LlYxDEJElw NMdhStauAuAR+we9hAYrcSyDb26Vb5TcKneugsuhNwxS7mDdHKxgHUp+/orqSgBqKCkxsJqrKnqW MYEFrgyOfIm2MQAmBzILruAciOt/psEhTjl6w17pUsI801CTu6uuqEQ7VDGX1jXlbq4p4qAQqGf0 2sfszQ0KP9GDsX8v/5u6aZT8b5maxfhft3TJ/2PIxSn+HkeL2FvjNMJsJ+CllyzvYV9gDwhqsYoe vBV+9OLQe1iR5Bzh0wv0kqzRlTagMfMjDQoL+Uvw/On7kKbX2eGdoiKdYJZamtx4fDLNsw6GKW1Z p5l0WDKpj3Uzji3HtqSdjF5yBuHjGuxaDBO5dTZrYdYuYuXzd7Razq+Qajen7jQIjMp1VPm0k065 EoFMSx1tVIqKrvCRZTRrWrR/hE/QtMsmz3dqifAkmWGokgTbgiRjdFiMOlRAmGoqssBVVRRQuw0K iGxVQxbqioISqWRcBCHFay8sjmZlX/BNwZx4pQuLfqXZnH8k+pWD0UpXu0JuDr0d5d7b/9AXb/MD LWhu8R4FqIX5G17+78lkaC/308iBDQoaJNIX5pikW6gDVFm7Dyy70my4NXrqf7gBWFn9b9mGA+UB 9GowXtb/Y0hZce+tyl/bSCmDSTrCGn3vv45j8fdfS2fvv6quafL8jyFFwY3qVZH6NJ9f2h/Euh0w TdUCw3c1sX4vYMt3dYT2PPcesMSD76otSwQMRq3PpqjxULpXO+zILv2Vq1nRMfddo7z4ZvetHCea 75oIdZT2f8mlbfYI40V7crzn8WM4s4ix81/FTRaPW5tFBxqktoZun03GbkrTLPENClzgju9a4rNG AV/6rl0Ge9yPqE1phFzoEr6j1iV8DQrveW3ykSJFihQpUqRIkSJFyqjyB5mXb3oAKAAA From jbednar@cs.utexas.edu Thu Mar 2 22:07:00 2000 From: jbednar@cs.utexas.edu (jbednar@cs.utexas.edu) Date: Thu, 02 Mar 2000 22:07:00 -0000 Subject: libstdc++/39: allocator::address declared twice Message-ID: <20000303060304.23903.qmail@sourceware.cygnus.com> >Number: 39 >Category: libstdc++ >Synopsis: allocator::address declared twice >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Mar 02 22:07:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: James A. Bednar >Release: GCC 2.95.1, libstdc++-v3 >Organization: >Environment: i686-pc-linux-gnu >Description: The trivial file: #include class c { typedef int (c::* fp) ( ); vector v; c() { }; }; generates a bizarre and seemingly meaningless error: .../include/g++-3/stl_alloc.h:750: `allocator::address(int (c::* &)()) const' has already been declared in `allocator' >How-To-Repeat: g++ -c bug2.c >Fix: I've no idea. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bug2.ii" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bug2.ii" IyAxICJidWcyLmMiCiMgMSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251 LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3ZlY3Rvci5oIiAxIDMKIAoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1s aW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxnb2Jhc2UuaCIgMSAz CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL2x1c3IvZ251L2xpYi9nY2MtbGli L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3BhaXIu aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi9sdXNyL2dudS9saWIv Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKyst My9zdGxfY29uZmlnLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAog CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCiAKCiAK IAogCiAKIAogCiAKCgoKCgoKCgojIDE0OCAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMt bGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9jb25maWcuaCIg MwoKCgojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiAKCgoKCgogCgojIDEgIi9s dXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9nbnUv dHlwZXMuaCIgMSAzCiAKCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwogCgoKCgoK CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgogCgoKCgoKCgogCiMgMTE3ICIvdXNy L2luY2x1ZGUvZmVhdHVyZXMuaCIgMwoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgog CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK CgojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiMg MjIyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwoKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy9j ZGVmcy5oIiAyIDMKCgogCgoKCgoKCgojIDU0ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMK CgogCgoKCgoKCgogCgoKCiMgODYgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCgogCgoK CgoKCgoKIAoKCgoKCgoKIyAyMDUgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKCgoKIAoK IAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIAoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKIyAyMTkgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKCgoK CiMgMyAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNs dWRlL2dudS90eXBlcy5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2dudS90eXBlcy5oIiAxIDMK IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7 CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBf X3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7Cgp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90 OwojIDQxICIvdXNyL2luY2x1ZGUvZ251L3R5cGVzLmgiIDMKCnR5cGVkZWYgX19xdWFkX3QgKl9f cWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90OwkJIAp0eXBlZGVmIF9fdV9pbnQg X191aWRfdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CQkgCnR5cGVkZWYgX191X2xvbmcg X19pbm9fdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90OwkJIAp0eXBlZGVmIF9fdV9pbnQg X19ubGlua190OyAJCSAKdHlwZWRlZiBsb25nIGludCBfX29mZl90OwkJIAp0eXBlZGVmIF9fcXVh ZF90IF9fbG9mZl90OwkJIAp0eXBlZGVmIGludCBfX3BpZF90OwkJCSAKdHlwZWRlZiBpbnQgX19z c2l6ZV90OwkJCSAKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19m c2lkX3Q7CQkJCSAKCiAKdHlwZWRlZiBpbnQgX19kYWRkcl90OwkJCSAKdHlwZWRlZiBjaGFyICpf X2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19z d2Jsa190OwkJIAoMCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKIAp0eXBlZGVmIHVuc2ln bmVkIGxvbmcgaW50IF9fZmRfbWFzazsKCiAKCgogCgoKCgogCnR5cGVkZWYgc3RydWN0CiAgewog ICAgIAogICAgX19mZF9tYXNrIGZkc19iaXRzWzEwMjQgIC8gKDggKiBzaXplb2YgKF9fZmRfbWFz aykpIF07CiAgfSBfX2ZkX3NldDsKCgp0eXBlZGVmIGludCBfX2tleV90OwoKdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKIyA0ICIvbHVzci9nbnUvbGliL2djYy1saWIv aTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvZ251L3R5cGVzLmgiIDIgMwoKCiMgMTYg Ii9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9n bnUvdHlwZXMuaCIgMwoKCgoKIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKCgoK IyAxICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1 ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2 ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoK IAoKCiMgNjEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEv aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog CgogCgojIDEzMSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu MS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK IAoKCgoKIAoKIyAyNzEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y Ljk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCAg d2ludF90OwoKCgoKIAoKIAoKIyAzMTcgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp bnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK CgoKCgojIDEzICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKCgoKCgoKCgoKCgoKCgoK CnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18p KSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJ X18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChf X21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0 dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCiAK CgoKCgoKCgoKCgoKCgojIDE1MSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt Z251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9jb25maWcuaCIgMiAzCgoK CgoKCgoKCgoKCgoKCgoKCiAgICAgIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKIyAyMzQgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1 LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgojIDI0OCAiL2x1 c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9p bmNsdWRlL2crKy0zL3N0bF9jb25maWcuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiMgMzE2ICIvbHVzci9nbnUvbGli L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr LTMvc3RsX2NvbmZpZy5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK IAogCiAKIyAzMSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu MS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3BhaXIuaCIgMiAzCgoKCiMgMSAiL2x1c3IvZ251 L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRl L2crKy0zL3N0bF9yZWxvcHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK CgoKIAoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBf VHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIHsKICByZXR1cm4gIShfX3ggPT0gX195KTsKfQoKdGVt cGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IF9UcCYgX194LCBj b25zdCBfVHAmIF9feSkgewogIHJldHVybiBfX3kgPCBfX3g7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf VHA+CmlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195 KSB7CiAgcmV0dXJuICEoX195IDwgX194KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5l IGJvb2wgb3BlcmF0b3I+PShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIHsKICByZXR1 cm4gIShfX3ggPCBfX3kpOwp9CgogCgoKCiAKIAogCiMgMzQgIi9sdXNyL2dudS9saWIvZ2NjLWxp Yi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9wYWly LmgiIDIgMwoKCgojIDEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y Ljk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfcGFpci5oIiAxIDMKIAoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBf VDI+CnN0cnVjdCBwYWlyIHsKICB0eXBlZGVmIF9UMSBmaXJzdF90eXBlOwogIHR5cGVkZWYgX1Qy IHNlY29uZF90eXBlOwoKICBfVDEgZmlyc3Q7CiAgX1QyIHNlY29uZDsKICBwYWlyKCkgOiBmaXJz dChfVDEoKSksIHNlY29uZChfVDIoKSkge30KICBwYWlyKGNvbnN0IF9UMSYgX19hLCBjb25zdCBf VDImIF9fYikgOiBmaXJzdChfX2EpLCBzZWNvbmQoX19iKSB7fQoKCiAgdGVtcGxhdGUgPGNsYXNz IF9VMSwgY2xhc3MgX1UyPgogIHBhaXIoY29uc3QgcGFpcjxfVTEsIF9VMj4mIF9fcCkgOiBmaXJz dChfX3AuZmlyc3QpLCBzZWNvbmQoX19wLnNlY29uZCkge30KCn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg X1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcGFpcjxfVDEsIF9U Mj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkKeyAKICByZXR1cm4gX194LmZpcnN0 ID09IF9feS5maXJzdCAmJiBfX3guc2Vjb25kID09IF9feS5zZWNvbmQ7IAp9Cgp0ZW1wbGF0ZSA8 Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBwYWlyPF9U MSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KQp7IAogIHJldHVybiBfX3gu Zmlyc3QgPCBfX3kuZmlyc3QgfHwgCiAgICAgICAgICghKF9feS5maXJzdCA8IF9feC5maXJzdCkg JiYgX194LnNlY29uZCA8IF9feS5zZWNvbmQpOyAKfQoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xh c3MgX1QyPgppbmxpbmUgcGFpcjxfVDEsIF9UMj4gbWFrZV9wYWlyKGNvbnN0IF9UMSYgX194LCBj b25zdCBfVDImIF9feSkKewogIHJldHVybiBwYWlyPF9UMSwgX1QyPihfX3gsIF9feSk7Cn0KCiAK CgoKIAogCiAKIyAzNyAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu OTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3BhaXIuaCIgMiAzCgoKCgoKCgoKCgoKCiAK IAogCiMgMzAgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEv Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9hbGdvYmFzZS5oIiAyIDMKCgoKIyAxICIvbHVzci9n bnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1 ZGUvZysrLTMvaXRlcmF0b3IuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj IDEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4v Li4vLi4vaW5jbHVkZS9nKystMy9mdW5jdGlvbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKIyAxICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n bnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKCgoKCgogCgogCgoKCgog CgoKIAoKCgoKCiAKCgojIDYxICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n bnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK CgogCgoKCgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBwdHJkaWZmX3Q7 CgoKCgoKCgoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYt cGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL2x1c3IvZ251L2xpYi9nY2Mt bGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoK CgoKCgoKCgoKCgogCgoKCgoKCgojIDM2ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1s aW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvZnVuY3Rpb24uaCIgMiAz CgoKIyAxICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4u Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2Z1bmN0aW9uLmgiIDEgMwogCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfQXJnLCBjbGFzcyBfUmVz dWx0PgpzdHJ1Y3QgdW5hcnlfZnVuY3Rpb24gewogIHR5cGVkZWYgX0FyZyBhcmd1bWVudF90eXBl OwogIHR5cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJn MSwgY2xhc3MgX0FyZzIsIGNsYXNzIF9SZXN1bHQ+CnN0cnVjdCBiaW5hcnlfZnVuY3Rpb24gewog IHR5cGVkZWYgX0FyZzEgZmlyc3RfYXJndW1lbnRfdHlwZTsKICB0eXBlZGVmIF9BcmcyIHNlY29u ZF9hcmd1bWVudF90eXBlOwogIHR5cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsKfTsgICAgICAK CnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBwbHVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlv bjxfVHAsX1RwLF9UcD4gewogIF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBf VHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ICsgX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg X1RwPgpzdHJ1Y3QgbWludXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsX1RwPiB7 CiAgX1RwIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7 IHJldHVybiBfX3ggLSBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBtdWx0 aXBsaWVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gewogIF9UcCBvcGVy YXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194 ICogX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZGl2aWRlcyA6IHB1Ymxp YyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxfVHA+IHsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBf VHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAvIF9feTsgfQp9OwoK IAoKdGVtcGxhdGUgPGNsYXNzIF9UcD4gaW5saW5lIF9UcCBpZGVudGl0eV9lbGVtZW50KHBsdXM8 X1RwPikgewogIHJldHVybiBfVHAoMCk7Cn0KdGVtcGxhdGUgPGNsYXNzIF9UcD4gaW5saW5lIF9U cCBpZGVudGl0eV9lbGVtZW50KG11bHRpcGxpZXM8X1RwPikgewogIHJldHVybiBfVHAoMSk7Cn0K CnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBtb2R1bHVzIDogcHVibGljIGJpbmFyeV9mdW5j dGlvbjxfVHAsX1RwLF9UcD4gCnsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29u c3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAlIF9feTsgfQp9OwoKdGVtcGxhdGUgPGNs YXNzIF9UcD4Kc3RydWN0IG5lZ2F0ZSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsX1RwPiAK ewogIF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25zdCB7IHJldHVybiAtX194OyB9 Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZXF1YWxfdG8gOiBwdWJsaWMgYmluYXJ5 X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4gCnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBf X3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggPT0gX195OyB9Cn07Cgp0ZW1w bGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3Qgbm90X2VxdWFsX3RvIDogcHVibGljIGJpbmFyeV9mdW5j dGlvbjxfVHAsX1RwLGJvb2w+IAp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBj b25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ICE9IF9feTsgfQp9OwoKdGVtcGxhdGUg PGNsYXNzIF9UcD4Kc3RydWN0IGdyZWF0ZXIgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxf VHAsYm9vbD4gCnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYg X195KSBjb25zdCB7IHJldHVybiBfX3ggPiBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+ CnN0cnVjdCBsZXNzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+IAp7CiAg Ym9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyBy ZXR1cm4gX194IDwgX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZ3JlYXRl cl9lcXVhbCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPgp7CiAgYm9vbCBv cGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4g X194ID49IF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGxlc3NfZXF1YWwg OiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4gCnsKICBib29sIG9wZXJhdG9y KCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggPD0g X195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbG9naWNhbF9hbmQgOiBwdWJs aWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4KewogIGJvb2wgb3BlcmF0b3IoKShjb25z dCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAmJiBfX3k7IH0K fTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBsb2dpY2FsX29yIDogcHVibGljIGJpbmFy eV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBf X3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggfHwgX195OyB9Cn07Cgp0ZW1w bGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbG9naWNhbF9ub3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rp b248X1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0IHsg cmV0dXJuICFfX3g7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUHJlZGljYXRlPgpjbGFzcyB1bmFy eV9uZWdhdGUKICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfUHJlZGljYXRlOjph cmd1bWVudF90eXBlLCBib29sPiB7CnByb3RlY3RlZDoKICBfUHJlZGljYXRlIF9NX3ByZWQ7CnB1 YmxpYzoKICBleHBsaWNpdCB1bmFyeV9uZWdhdGUoY29uc3QgX1ByZWRpY2F0ZSYgX194KSA6IF9N X3ByZWQoX194KSB7fQogIGJvb2wgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRl Ojphcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiAhX01fcHJlZChfX3gpOwog IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgdW5hcnlfbmVnYXRlPF9Q cmVkaWNhdGU+IApub3QxKGNvbnN0IF9QcmVkaWNhdGUmIF9fcHJlZCkKewogIHJldHVybiB1bmFy eV9uZWdhdGU8X1ByZWRpY2F0ZT4oX19wcmVkKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9QcmVkaWNh dGU+IApjbGFzcyBiaW5hcnlfbmVnYXRlIAogIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjx0eXBl bmFtZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICB0eXBlbmFtZSBfUHJlZGljYXRlOjpzZWNvbmRfYXJndW1lbnRfdHlwZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbD4gewpwcm90ZWN0ZWQ6CiAgX1ByZWRpY2F0ZSBfTV9w cmVkOwpwdWJsaWM6CiAgZXhwbGljaXQgYmluYXJ5X25lZ2F0ZShjb25zdCBfUHJlZGljYXRlJiBf X3gpIDogX01fcHJlZChfX3gpIHt9CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9Q cmVkaWNhdGU6OmZpcnN0X2FyZ3VtZW50X3R5cGUmIF9feCwgCiAgICAgICAgICAgICAgICAgIGNv bnN0IHR5cGVuYW1lIF9QcmVkaWNhdGU6OnNlY29uZF9hcmd1bWVudF90eXBlJiBfX3kpIGNvbnN0 CiAgewogICAgcmV0dXJuICFfTV9wcmVkKF9feCwgX195KTsgCiAgfQp9OwoKdGVtcGxhdGUgPGNs YXNzIF9QcmVkaWNhdGU+CmlubGluZSBiaW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+IApub3QyKGNv bnN0IF9QcmVkaWNhdGUmIF9fcHJlZCkKewogIHJldHVybiBiaW5hcnlfbmVnYXRlPF9QcmVkaWNh dGU+KF9fcHJlZCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uPiAKY2xhc3MgYmluZGVy MXN0CiAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25k X2FyZ3VtZW50X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJh dGlvbjo6cmVzdWx0X3R5cGU+IHsKcHJvdGVjdGVkOgogIF9PcGVyYXRpb24gb3A7CiAgdHlwZW5h bWUgX09wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSB2YWx1ZTsKcHVibGljOgogIGJpbmRl cjFzdChjb25zdCBfT3BlcmF0aW9uJiBfX3gsCiAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIF9P cGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUmIF9feSkKICAgICAgOiBvcChfX3gpLCB2YWx1 ZShfX3kpIHt9CiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICBvcGVyYXRvcigp KGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlJiBfX3gpIGNv bnN0IHsKICAgIHJldHVybiBvcCh2YWx1ZSwgX194KTsgCiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNz IF9PcGVyYXRpb24sIGNsYXNzIF9UcD4KaW5saW5lIGJpbmRlcjFzdDxfT3BlcmF0aW9uPiAKYmlu ZDFzdChjb25zdCBfT3BlcmF0aW9uJiBfX29wZXIsIGNvbnN0IF9UcCYgX194KSAKewogIHR5cGVk ZWYgdHlwZW5hbWUgX09wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSBfQXJnMV90eXBlOwog IHJldHVybiBiaW5kZXIxc3Q8X09wZXJhdGlvbj4oX19vcGVyLCBfQXJnMV90eXBlKF9feCkpOwp9 Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbj4gCmNsYXNzIGJpbmRlcjJuZAogIDogcHVibGlj IHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5 cGU+IHsKcHJvdGVjdGVkOgogIF9PcGVyYXRpb24gb3A7CiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6 c2Vjb25kX2FyZ3VtZW50X3R5cGUgdmFsdWU7CnB1YmxpYzoKICBiaW5kZXIybmQoY29uc3QgX09w ZXJhdGlvbiYgX194LAogICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNv bmRfYXJndW1lbnRfdHlwZSYgX195KSAKICAgICAgOiBvcChfX3gpLCB2YWx1ZShfX3kpIHt9CiAg dHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICBvcGVyYXRvcigpKGNvbnN0IHR5cGVu YW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0 dXJuIG9wKF9feCwgdmFsdWUpOyAKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbiwg Y2xhc3MgX1RwPgppbmxpbmUgYmluZGVyMm5kPF9PcGVyYXRpb24+IApiaW5kMm5kKGNvbnN0IF9P cGVyYXRpb24mIF9fb3BlciwgY29uc3QgX1RwJiBfX3gpIAp7CiAgdHlwZWRlZiB0eXBlbmFtZSBf T3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSBfQXJnMl90eXBlOwogIHJldHVybiBiaW5k ZXIybmQ8X09wZXJhdGlvbj4oX19vcGVyLCBfQXJnMl90eXBlKF9feCkpOwp9CgogCgp0ZW1wbGF0 ZSA8Y2xhc3MgX09wZXJhdGlvbjEsIGNsYXNzIF9PcGVyYXRpb24yPgpjbGFzcyB1bmFyeV9jb21w b3NlCiAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgX09wZXJhdGlvbjI6OmFyZ3Vt ZW50X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjE6 OnJlc3VsdF90eXBlPiAKewpwcm90ZWN0ZWQ6CiAgX09wZXJhdGlvbjEgX19vcDE7CiAgX09wZXJh dGlvbjIgX19vcDI7CnB1YmxpYzoKICB1bmFyeV9jb21wb3NlKGNvbnN0IF9PcGVyYXRpb24xJiBf X3gsIGNvbnN0IF9PcGVyYXRpb24yJiBfX3kpIAogICAgOiBfX29wMShfX3gpLCBfX29wMihfX3kp IHt9CiAgdHlwZW5hbWUgX09wZXJhdGlvbjE6OnJlc3VsdF90eXBlCiAgb3BlcmF0b3IoKShjb25z dCB0eXBlbmFtZSBfT3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZSYgX194KSBjb25zdCB7CiAgICBy ZXR1cm4gX19vcDEoX19vcDIoX194KSk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRp b24xLCBjbGFzcyBfT3BlcmF0aW9uMj4KaW5saW5lIHVuYXJ5X2NvbXBvc2U8X09wZXJhdGlvbjEs X09wZXJhdGlvbjI+IApjb21wb3NlMShjb25zdCBfT3BlcmF0aW9uMSYgX19vcDEsIGNvbnN0IF9P cGVyYXRpb24yJiBfX29wMikKewogIHJldHVybiB1bmFyeV9jb21wb3NlPF9PcGVyYXRpb24xLF9P cGVyYXRpb24yPihfX29wMSwgX19vcDIpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbjEs IGNsYXNzIF9PcGVyYXRpb24yLCBjbGFzcyBfT3BlcmF0aW9uMz4KY2xhc3MgYmluYXJ5X2NvbXBv c2UKICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9uMjo6YXJndW1l bnRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBfT3BlcmF0aW9uMTo6 cmVzdWx0X3R5cGU+IHsKcHJvdGVjdGVkOgogIF9PcGVyYXRpb24xIF9NX29wMTsKICBfT3BlcmF0 aW9uMiBfTV9vcDI7CiAgX09wZXJhdGlvbjMgX01fb3AzOwpwdWJsaWM6CiAgYmluYXJ5X2NvbXBv c2UoY29uc3QgX09wZXJhdGlvbjEmIF9feCwgY29uc3QgX09wZXJhdGlvbjImIF9feSwgCiAgICAg ICAgICAgICAgICAgY29uc3QgX09wZXJhdGlvbjMmIF9feikgCiAgICA6IF9NX29wMShfX3gpLCBf TV9vcDIoX195KSwgX01fb3AzKF9feikgeyB9CiAgdHlwZW5hbWUgX09wZXJhdGlvbjE6OnJlc3Vs dF90eXBlCiAgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uMjo6YXJndW1lbnRf dHlwZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX01fb3AxKF9NX29wMihfX3gpLCBfTV9vcDMo X194KSk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24xLCBjbGFzcyBfT3BlcmF0 aW9uMiwgY2xhc3MgX09wZXJhdGlvbjM+CmlubGluZSBiaW5hcnlfY29tcG9zZTxfT3BlcmF0aW9u MSwgX09wZXJhdGlvbjIsIF9PcGVyYXRpb24zPiAKY29tcG9zZTIoY29uc3QgX09wZXJhdGlvbjEm IF9fb3AxLCBjb25zdCBfT3BlcmF0aW9uMiYgX19vcDIsIAogICAgICAgICBjb25zdCBfT3BlcmF0 aW9uMyYgX19vcDMpCnsKICByZXR1cm4gYmluYXJ5X2NvbXBvc2U8X09wZXJhdGlvbjEsX09wZXJh dGlvbjIsX09wZXJhdGlvbjM+CiAgICAoX19vcDEsIF9fb3AyLCBfX29wMyk7Cn0KCnRlbXBsYXRl IDxjbGFzcyBfQXJnLCBjbGFzcyBfUmVzdWx0PgpjbGFzcyBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0 aW9uIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9SZXN1bHQ+IHsKcHJvdGVjdGVkOgog IF9SZXN1bHQgKCpfTV9wdHIpKF9BcmcpOwpwdWJsaWM6CiAgcG9pbnRlcl90b191bmFyeV9mdW5j dGlvbigpIHt9CiAgZXhwbGljaXQgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbihfUmVzdWx0ICgq X194KShfQXJnKSkgOiBfTV9wdHIoX194KSB7fQogIF9SZXN1bHQgb3BlcmF0b3IoKShfQXJnIF9f eCkgY29uc3QgeyByZXR1cm4gX01fcHRyKF9feCk7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJn LCBjbGFzcyBfUmVzdWx0PgppbmxpbmUgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxfQXJnLCBf UmVzdWx0PiBwdHJfZnVuKF9SZXN1bHQgKCpfX3gpKF9BcmcpKQp7CiAgcmV0dXJuIHBvaW50ZXJf dG9fdW5hcnlfZnVuY3Rpb248X0FyZywgX1Jlc3VsdD4oX194KTsKfQoKdGVtcGxhdGUgPGNsYXNz IF9BcmcxLCBjbGFzcyBfQXJnMiwgY2xhc3MgX1Jlc3VsdD4KY2xhc3MgcG9pbnRlcl90b19iaW5h cnlfZnVuY3Rpb24gOiAKICBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLF9BcmcyLF9SZXN1 bHQ+IHsKcHJvdGVjdGVkOgogICAgX1Jlc3VsdCAoKl9NX3B0cikoX0FyZzEsIF9BcmcyKTsKcHVi bGljOgogICAgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24oKSB7fQogICAgZXhwbGljaXQgcG9p bnRlcl90b19iaW5hcnlfZnVuY3Rpb24oX1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9BcmcyKSkgCiAg ICAgIDogX01fcHRyKF9feCkge30KICAgIF9SZXN1bHQgb3BlcmF0b3IoKShfQXJnMSBfX3gsIF9B cmcyIF9feSkgY29uc3QgewogICAgICByZXR1cm4gX01fcHRyKF9feCwgX195KTsKICAgIH0KfTsK CnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0FyZzIsIGNsYXNzIF9SZXN1bHQ+CmlubGlu ZSBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbjxfQXJnMSxfQXJnMixfUmVzdWx0PiAKcHRyX2Z1 bihfUmVzdWx0ICgqX194KShfQXJnMSwgX0FyZzIpKSB7CiAgcmV0dXJuIHBvaW50ZXJfdG9fYmlu YXJ5X2Z1bmN0aW9uPF9BcmcxLF9BcmcyLF9SZXN1bHQ+KF9feCk7Cn0KCiAKdGVtcGxhdGUgPGNs YXNzIF9UcD4Kc3RydWN0IF9JZGVudGl0eSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsX1Rw PiB7CiAgY29uc3QgX1RwJiBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25zdCB7IHJldHVy biBfX3g7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IHN0cnVjdCBpZGVudGl0eSA6IHB1Ymxp YyBfSWRlbnRpdHk8X1RwPiB7fTsKCiAKdGVtcGxhdGUgPGNsYXNzIF9QYWlyPgpzdHJ1Y3QgX1Nl bGVjdDFzdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfUGFpciwgdHlwZW5hbWUgX1BhaXI6OmZp cnN0X3R5cGU+IHsKICBjb25zdCB0eXBlbmFtZSBfUGFpcjo6Zmlyc3RfdHlwZSYgb3BlcmF0b3Io KShjb25zdCBfUGFpciYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX194LmZpcnN0OwogIH0KfTsK CnRlbXBsYXRlIDxjbGFzcyBfUGFpcj4Kc3RydWN0IF9TZWxlY3QybmQgOiBwdWJsaWMgdW5hcnlf ZnVuY3Rpb248X1BhaXIsIHR5cGVuYW1lIF9QYWlyOjpzZWNvbmRfdHlwZT4KewogIGNvbnN0IHR5 cGVuYW1lIF9QYWlyOjpzZWNvbmRfdHlwZSYgb3BlcmF0b3IoKShjb25zdCBfUGFpciYgX194KSBj b25zdCB7CiAgICByZXR1cm4gX194LnNlY29uZDsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Bh aXI+IHN0cnVjdCBzZWxlY3Qxc3QgOiBwdWJsaWMgX1NlbGVjdDFzdDxfUGFpcj4ge307CnRlbXBs YXRlIDxjbGFzcyBfUGFpcj4gc3RydWN0IHNlbGVjdDJuZCA6IHB1YmxpYyBfU2VsZWN0Mm5kPF9Q YWlyPiB7fTsKCiAKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMj4Kc3RydWN0IF9Q cm9qZWN0MXN0IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIsIF9BcmcxPiB7 CiAgX0FyZzEgb3BlcmF0b3IoKShjb25zdCBfQXJnMSYgX194LCBjb25zdCBfQXJnMiYpIGNvbnN0 IHsgcmV0dXJuIF9feDsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMj4K c3RydWN0IF9Qcm9qZWN0Mm5kIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIs IF9BcmcyPiB7CiAgX0FyZzIgb3BlcmF0b3IoKShjb25zdCBfQXJnMSYsIGNvbnN0IF9BcmcyJiBf X3kpIGNvbnN0IHsgcmV0dXJuIF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFz cyBfQXJnMj4gCnN0cnVjdCBwcm9qZWN0MXN0IDogcHVibGljIF9Qcm9qZWN0MXN0PF9BcmcxLCBf QXJnMj4ge307Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZzEsIGNsYXNzIF9BcmcyPgpzdHJ1Y3QgcHJv amVjdDJuZCA6IHB1YmxpYyBfUHJvamVjdDJuZDxfQXJnMSwgX0FyZzI+IHt9OwoKIAogCiAKdGVt cGxhdGUgPGNsYXNzIF9SZXN1bHQ+CnN0cnVjdCBjb25zdGFudF92b2lkX2Z1bgp7CiAgdHlwZWRl ZiBfUmVzdWx0IHJlc3VsdF90eXBlOwogIHJlc3VsdF90eXBlIF9fdmFsOwogIGNvbnN0YW50X3Zv aWRfZnVuKGNvbnN0IHJlc3VsdF90eXBlJiBfX3YpIDogX192YWwoX192KSB7fQogIGNvbnN0IHJl c3VsdF90eXBlJiBvcGVyYXRvcigpKCkgY29uc3QgeyByZXR1cm4gX192YWw7IH0KfTsgIAoKCnRl bXBsYXRlIDxjbGFzcyBfUmVzdWx0LCBjbGFzcyBfQXJndW1lbnQgPSBfUmVzdWx0PgoKCgpzdHJ1 Y3QgY29uc3RhbnRfdW5hcnlfZnVuIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9Bcmd1bWVudCwg X1Jlc3VsdD4gewogIF9SZXN1bHQgX01fdmFsOwogIGNvbnN0YW50X3VuYXJ5X2Z1bihjb25zdCBf UmVzdWx0JiBfX3YpIDogX01fdmFsKF9fdikge30KICBjb25zdCBfUmVzdWx0JiBvcGVyYXRvcigp KGNvbnN0IF9Bcmd1bWVudCYpIGNvbnN0IHsgcmV0dXJuIF9NX3ZhbDsgfQp9OwoKCnRlbXBsYXRl IDxjbGFzcyBfUmVzdWx0LCBjbGFzcyBfQXJnMSA9IF9SZXN1bHQsIGNsYXNzIF9BcmcyID0gX0Fy ZzE+CgoKCnN0cnVjdCBjb25zdGFudF9iaW5hcnlfZnVuIDogcHVibGljIGJpbmFyeV9mdW5jdGlv bjxfQXJnMSwgX0FyZzIsIF9SZXN1bHQ+IHsKICBfUmVzdWx0IF9NX3ZhbDsKICBjb25zdGFudF9i aW5hcnlfZnVuKGNvbnN0IF9SZXN1bHQmIF9fdikgOiBfTV92YWwoX192KSB7fQogIGNvbnN0IF9S ZXN1bHQmIG9wZXJhdG9yKCkoY29uc3QgX0FyZzEmLCBjb25zdCBfQXJnMiYpIGNvbnN0IHsKICAg IHJldHVybiBfTV92YWw7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXN1bHQ+CmlubGluZSBj b25zdGFudF92b2lkX2Z1bjxfUmVzdWx0PiBjb25zdGFudDAoY29uc3QgX1Jlc3VsdCYgX192YWwp CnsKICByZXR1cm4gY29uc3RhbnRfdm9pZF9mdW48X1Jlc3VsdD4oX192YWwpOwp9Cgp0ZW1wbGF0 ZSA8Y2xhc3MgX1Jlc3VsdD4KaW5saW5lIGNvbnN0YW50X3VuYXJ5X2Z1bjxfUmVzdWx0LF9SZXN1 bHQ+IGNvbnN0YW50MShjb25zdCBfUmVzdWx0JiBfX3ZhbCkKewogIHJldHVybiBjb25zdGFudF91 bmFyeV9mdW48X1Jlc3VsdCxfUmVzdWx0PihfX3ZhbCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmVz dWx0PgppbmxpbmUgY29uc3RhbnRfYmluYXJ5X2Z1bjxfUmVzdWx0LF9SZXN1bHQsX1Jlc3VsdD4g CmNvbnN0YW50Mihjb25zdCBfUmVzdWx0JiBfX3ZhbCkKewogIHJldHVybiBjb25zdGFudF9iaW5h cnlfZnVuPF9SZXN1bHQsX1Jlc3VsdCxfUmVzdWx0PihfX3ZhbCk7Cn0KCiAKIApjbGFzcyBzdWJ0 cmFjdGl2ZV9ybmcgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dW5zaWduZWQgaW50LCB1bnNpZ25l ZCBpbnQ+IHsKcHJpdmF0ZToKICB1bnNpZ25lZCBpbnQgX01fdGFibGVbNTVdOwogIHNpemVfdCBf TV9pbmRleDE7CiAgc2l6ZV90IF9NX2luZGV4MjsKcHVibGljOgogIHVuc2lnbmVkIGludCBvcGVy YXRvcigpKHVuc2lnbmVkIGludCBfX2xpbWl0KSB7CiAgICBfTV9pbmRleDEgPSAoX01faW5kZXgx ICsgMSkgJSA1NTsKICAgIF9NX2luZGV4MiA9IChfTV9pbmRleDIgKyAxKSAlIDU1OwogICAgX01f dGFibGVbX01faW5kZXgxXSA9IF9NX3RhYmxlW19NX2luZGV4MV0gLSBfTV90YWJsZVtfTV9pbmRl eDJdOwogICAgcmV0dXJuIF9NX3RhYmxlW19NX2luZGV4MV0gJSBfX2xpbWl0OwogIH0KCiAgdm9p ZCBfTV9pbml0aWFsaXplKHVuc2lnbmVkIGludCBfX3NlZWQpCiAgewogICAgdW5zaWduZWQgaW50 IF9fayA9IDE7CiAgICBfTV90YWJsZVs1NF0gPSBfX3NlZWQ7CiAgICBzaXplX3QgX19pOwogICAg Zm9yIChfX2kgPSAwOyBfX2kgPCA1NDsgX19pKyspIHsKICAgICAgICBzaXplX3QgX19paSA9ICgy MSAqIChfX2kgKyAxKSAlIDU1KSAtIDE7CiAgICAgICAgX01fdGFibGVbX19paV0gPSBfX2s7CiAg ICAgICAgX19rID0gX19zZWVkIC0gX19rOwogICAgICAgIF9fc2VlZCA9IF9NX3RhYmxlW19faWld OwogICAgfQogICAgZm9yIChpbnQgX19sb29wID0gMDsgX19sb29wIDwgNDsgX19sb29wKyspIHsK ICAgICAgICBmb3IgKF9faSA9IDA7IF9faSA8IDU1OyBfX2krKykKICAgICAgICAgICAgX01fdGFi bGVbX19pXSA9IF9NX3RhYmxlW19faV0gLSBfTV90YWJsZVsoMSArIF9faSArIDMwKSAlIDU1XTsK ICAgIH0KICAgIF9NX2luZGV4MSA9IDA7CiAgICBfTV9pbmRleDIgPSAzMTsKICB9CgogIHN1YnRy YWN0aXZlX3JuZyh1bnNpZ25lZCBpbnQgX19zZWVkKSB7IF9NX2luaXRpYWxpemUoX19zZWVkKTsg fQogIHN1YnRyYWN0aXZlX3JuZygpIHsgX01faW5pdGlhbGl6ZSgxNjE4MDMzOTh1KTsgfQp9OwoK CiAKCiAKIAogCiAKIAogCiAKCiAKIAogCiAKIAoKIAogCiAKIAogCgoKdGVtcGxhdGUgPGNsYXNz IF9SZXQsIGNsYXNzIF9UcD4KY2xhc3MgbWVtX2Z1bl90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9u PF9UcCosX1JldD4gewpwdWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bl90KF9SZXQgKF9UcDo6Kl9f cGYpKCkpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShfVHAqIF9fcCkgY29uc3Qg eyByZXR1cm4gKF9fcC0+Kl9NX2YpKCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKSgp Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KY2xhc3MgY29uc3RfbWVtX2Z1 bl90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPGNvbnN0IF9UcCosX1JldD4gewpwdWJsaWM6CiAg ZXhwbGljaXQgY29uc3RfbWVtX2Z1bl90KF9SZXQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01f ZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCkgY29uc3QgeyByZXR1 cm4gKF9fcC0+Kl9NX2YpKCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKSgpIGNvbnN0 Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIG1lbV9mdW5fcmVm X3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0 IG1lbV9mdW5fcmVmX3QoX1JldCAoX1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgX1Jl dCBvcGVyYXRvcigpKF9UcCYgX19yKSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKSgpOyB9CnBy aXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBj bGFzcyBfVHA+CmNsYXNzIGNvbnN0X21lbV9mdW5fcmVmX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rp b248X1RwLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5fcmVmX3QoX1Jl dCAoX1RwOjoqX19wZikoKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRvcigp KGNvbnN0IF9UcCYgX19yKSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKSgpOyB9CnByaXZhdGU6 CiAgX1JldCAoX1RwOjoqX01fZikoKSBjb25zdDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBj bGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3QgOiBwdWJsaWMgYmluYXJ5X2Z1 bmN0aW9uPF9UcCosX0FyZyxfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuMV90KF9S ZXQgKF9UcDo6Kl9fcGYpKF9BcmcpKSA6IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCko X1RwKiBfX3AsIF9BcmcgX194KSBjb25zdCB7IHJldHVybiAoX19wLT4qX01fZikoX194KTsgfQpw cml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9S ZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgY29uc3RfbWVtX2Z1bjFfdCA6IHB1Ymxp YyBiaW5hcnlfZnVuY3Rpb248Y29uc3QgX1RwKixfQXJnLF9SZXQ+IHsKcHVibGljOgogIGV4cGxp Y2l0IGNvbnN0X21lbV9mdW4xX3QoX1JldCAoX1RwOjoqX19wZikoX0FyZykgY29uc3QpIDogX01f ZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCwgX0FyZyBfX3gpIGNv bnN0CiAgICB7IHJldHVybiAoX19wLT4qX01fZikoX194KTsgfQpwcml2YXRlOgogIF9SZXQgKF9U cDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9U cCwgY2xhc3MgX0FyZz4KY2xhc3MgbWVtX2Z1bjFfcmVmX3QgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0 aW9uPF9UcCxfQXJnLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW4xX3JlZl90KF9S ZXQgKF9UcDo6Kl9fcGYpKF9BcmcpKSA6IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCko X1RwJiBfX3IsIF9BcmcgX194KSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKShfX3gpOyB9CnBy aXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoX0FyZyk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jl dCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBjb25zdF9tZW1fZnVuMV9yZWZfdCA6IHB1 YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9BcmcsX1JldD4gewpwdWJsaWM6CiAgZXhwbGljaXQg Y29uc3RfbWVtX2Z1bjFfcmVmX3QoX1JldCAoX1RwOjoqX19wZikoX0FyZykgY29uc3QpIDogX01f ZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9fciwgX0FyZyBfX3gpIGNv bnN0IHsgcmV0dXJuIChfX3IuKl9NX2YpKF9feCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6Oipf TV9mKShfQXJnKSBjb25zdDsKfTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xhc3MgbWVtX2Z1 bl90PHZvaWQsIF9UcD4gOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwKix2b2lkPiB7CnB1Ymxp YzoKICBleHBsaWNpdCBtZW1fZnVuX3Qodm9pZCAoX1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYp IHt9CiAgdm9pZCBvcGVyYXRvcigpKF9UcCogX19wKSBjb25zdCB7IChfX3AtPipfTV9mKSgpOyB9 CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+ CmNsYXNzIGNvbnN0X21lbV9mdW5fdDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9u PGNvbnN0IF9UcCosdm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bl90KHZv aWQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3Io KShjb25zdCBfVHAqIF9fcCkgY29uc3QgeyAoX19wLT4qX01fZikoKTsgfQpwcml2YXRlOgogIHZv aWQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpjbGFzcyBt ZW1fZnVuX3JlZl90PHZvaWQsIF9UcD4gOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLHZvaWQ+ IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW5fcmVmX3Qodm9pZCAoX1RwOjoqX19wZikoKSkg OiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigpKF9UcCYgX19yKSBjb25zdCB7IChfX3Iu Kl9NX2YpKCk7IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9mKSgpOwp9OwoKdGVtcGxhdGUg PGNsYXNzIF9UcD4KY2xhc3MgY29uc3RfbWVtX2Z1bl9yZWZfdDx2b2lkLCBfVHA+IDogcHVibGlj IHVuYXJ5X2Z1bmN0aW9uPF9UcCx2b2lkPiB7CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1f ZnVuX3JlZl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQogIHZv aWQgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9fcikgY29uc3QgeyAoX19yLipfTV9mKSgpOyB9CnBy aXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoKSBjb25zdDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBf VHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3Q8dm9pZCwgX1RwLCBfQXJnPiA6IHB1Ymxp YyBiaW5hcnlfZnVuY3Rpb248X1RwKixfQXJnLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1l bV9mdW4xX3Qodm9pZCAoX1RwOjoqX19wZikoX0FyZykpIDogX01fZihfX3BmKSB7fQogIHZvaWQg b3BlcmF0b3IoKShfVHAqIF9fcCwgX0FyZyBfX3gpIGNvbnN0IHsgKF9fcC0+Kl9NX2YpKF9feCk7 IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9mKShfQXJnKTsKfTsKCnRlbXBsYXRlIDxjbGFz cyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0X21lbV9mdW4xX3Q8dm9pZCwgX1RwLCBfQXJn PiAKICA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248Y29uc3QgX1RwKixfQXJnLHZvaWQ+IHsKcHVi bGljOgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3Qodm9pZCAoX1RwOjoqX19wZikoX0FyZykg Y29uc3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCwg X0FyZyBfX3gpIGNvbnN0IHsgKF9fcC0+Kl9NX2YpKF9feCk7IH0KcHJpdmF0ZToKICB2b2lkIChf VHA6OipfTV9mKShfQXJnKSBjb25zdDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9B cmc+CmNsYXNzIG1lbV9mdW4xX3JlZl90PHZvaWQsIF9UcCwgX0FyZz4KICA6IHB1YmxpYyBiaW5h cnlfZnVuY3Rpb248X1RwLF9Bcmcsdm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bjFf cmVmX3Qodm9pZCAoX1RwOjoqX19wZikoX0FyZykpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3Bl cmF0b3IoKShfVHAmIF9fciwgX0FyZyBfX3gpIGNvbnN0IHsgKF9fci4qX01fZikoX194KTsgfQpw cml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKF9BcmcpOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9U cCwgY2xhc3MgX0FyZz4KY2xhc3MgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8dm9pZCwgX1RwLCBfQXJn PgogIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX0FyZyx2b2lkPiB7CnB1YmxpYzoKICBl eHBsaWNpdCBjb25zdF9tZW1fZnVuMV9yZWZfdCh2b2lkIChfVHA6OipfX3BmKShfQXJnKSBjb25z dCkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19yLCBfQXJn IF9feCkgY29uc3QgeyAoX19yLipfTV9mKShfX3gpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoq X01fZikoX0FyZykgY29uc3Q7Cn07CgoKCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBj bGFzcyBfVHA+CmlubGluZSBtZW1fZnVuX3Q8X1JldCxfVHA+IG1lbV9mdW4oX1JldCAoX1RwOjoq X19mKSgpKQogIHsgcmV0dXJuIG1lbV9mdW5fdDxfUmV0LF9UcD4oX19mKTsgfQoKdGVtcGxhdGUg PGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0X21lbV9mdW5fdDxfUmV0LF9UcD4g bWVtX2Z1bihfUmV0IChfVHA6OipfX2YpKCkgY29uc3QpCiAgeyByZXR1cm4gY29uc3RfbWVtX2Z1 bl90PF9SZXQsX1RwPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwPgpp bmxpbmUgbWVtX2Z1bl9yZWZfdDxfUmV0LF9UcD4gbWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19m KSgpKSAKICB7IHJldHVybiBtZW1fZnVuX3JlZl90PF9SZXQsX1RwPihfX2YpOyB9Cgp0ZW1wbGF0 ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwPgppbmxpbmUgY29uc3RfbWVtX2Z1bl9yZWZfdDxfUmV0 LF9UcD4gbWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKSgpIGNvbnN0KQogIHsgcmV0dXJuIGNv bnN0X21lbV9mdW5fcmVmX3Q8X1JldCxfVHA+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0 LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBtZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+ IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKShfQXJnKSkKICB7IHJldHVybiBtZW1fZnVuMV90PF9S ZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNs YXNzIF9Bcmc+CmlubGluZSBjb25zdF9tZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+IG1lbV9mdW4o X1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICB7IHJldHVybiBjb25zdF9tZW1fZnVuMV90 PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAs IGNsYXNzIF9Bcmc+CmlubGluZSBtZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPiBtZW1fZnVu X3JlZihfUmV0IChfVHA6OipfX2YpKF9BcmcpKQogIHsgcmV0dXJuIG1lbV9mdW4xX3JlZl90PF9S ZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNs YXNzIF9Bcmc+CmlubGluZSBjb25zdF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPgptZW1f ZnVuX3JlZihfUmV0IChfVHA6OipfX2YpKF9BcmcpIGNvbnN0KQogIHsgcmV0dXJuIGNvbnN0X21l bV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0 LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBtZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+ IG1lbV9mdW4xKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykpCiAgeyByZXR1cm4gbWVtX2Z1bjFfdDxf UmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBj bGFzcyBfQXJnPgppbmxpbmUgY29uc3RfbWVtX2Z1bjFfdDxfUmV0LF9UcCxfQXJnPiBtZW1fZnVu MShfUmV0IChfVHA6OipfX2YpKF9BcmcpIGNvbnN0KQogIHsgcmV0dXJuIGNvbnN0X21lbV9mdW4x X3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9U cCwgY2xhc3MgX0FyZz4KaW5saW5lIG1lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+IG1lbV9m dW4xX3JlZihfUmV0IChfVHA6OipfX2YpKF9BcmcpKQogIHsgcmV0dXJuIG1lbV9mdW4xX3JlZl90 PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAs IGNsYXNzIF9Bcmc+CmlubGluZSBjb25zdF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPgpt ZW1fZnVuMV9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICB7IHJldHVybiBjb25z dF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9CgogCgoKCiAKIAogCiMgMzgg Ii9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4v Li4vaW5jbHVkZS9nKystMy9mdW5jdGlvbi5oIiAyIDMKCgoKIyA0OSAiL2x1c3IvZ251L2xpYi9n Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z L2Z1bmN0aW9uLmgiIDMKCgojIDExMiAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2Z1bmN0aW9uLmgiIDMKCgoK CiAKIAogCiMgMzEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1 LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9pdGVyYXRvci5oIiAyIDMKCgojIDEgIi9sdXNy L2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYu aCIgMSAzCiMgMzQyICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45 NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgMzMgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2 LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9pdGVyYXRvci5o IiAyIDMKCiMgMSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu MS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2lvc3RyZWFtLmgiIDEgMwogCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgojcHJhZ21hIGludGVyZmFjZQoKCgojIDEgIi9sdXNyL2dudS9saWIvZ2Nj LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z dHJlYW1idWYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGludGVy ZmFjZQoKCiAgIAoKCgpleHRlcm4gIkMiIHsKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAz CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgogCgojIDEgIi9s dXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRh cmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsK CgoKIAoKIyAxMjIgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1 LjEvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjA5ICIvbHVzci9n bnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkYXJnLmgi IDMKCgoKCiMgNDcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoKCiMgNjQgIi91c3Iv aW5jbHVkZS9saWJpby5oIiAzCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgOTggIi91c3IvaW5j bHVkZS9saWJpby5oIiAzCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK CgoKCgoKCgoKCgoKCgoKCgpzdHJ1Y3QgX0lPX2p1bXBfdDsgIHN0cnVjdCBfSU9fRklMRTsKCiAK CgoKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCiAKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBz dHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKICAgCgog ICAKICBpbnQgX3BvczsKIyAxODIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgp9OwoKc3RydWN0 IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdzOwkJIAoKCiAgIAogICAKICBjaGFyKiBfSU9fcmVhZF9w dHI7CSAKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CSAKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwkgCiAg Y2hhciogX0lPX3dyaXRlX2Jhc2U7CSAKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwkgCiAgY2hhciog X0lPX3dyaXRlX2VuZDsJIAogIGNoYXIqIF9JT19idWZfYmFzZTsJIAogIGNoYXIqIF9JT19idWZf ZW5kOwkgCiAgIAogIGNoYXIgKl9JT19zYXZlX2Jhc2U7ICAKICBjaGFyICpfSU9fYmFja3VwX2Jh c2U7ICAgCiAgY2hhciAqX0lPX3NhdmVfZW5kOyAgCgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFy a2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBf Ymxrc2l6ZTsKICBfX29mZl90ICAgX29mZnNldDsKCgogICAKICB1bnNpZ25lZCBzaG9ydCBfY3Vy X2NvbHVtbjsKICBjaGFyIF91bnVzZWQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgogICAKCiAgX0lP X2xvY2tfdCAqX2xvY2s7Cn07CgoKCgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CmV4dGVybiBzdHJ1 Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fc3RkaW5fLCBfSU9fc3Rkb3V0XywgX0lPX3N0ZGVycl87CgoK CgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgX19zc2l6ZV90ICAgKCpyZWFkKSAgKHN0cnVjdCBfSU9f RklMRSAqLCB2b2lkICosIF9fc3NpemVfdCAgKSAgOwogIF9fc3NpemVfdCAgICgqd3JpdGUpICAo c3RydWN0IF9JT19GSUxFICosIGNvbnN0IHZvaWQgKiwgX19zc2l6ZV90ICApICA7CiAgX19vZmZf dCAgICgqc2VlaykgIChzdHJ1Y3QgX0lPX0ZJTEUgKiwgX19vZmZfdCAgLCBpbnQpICA7CiAgaW50 ICgqY2xvc2UpICAoc3RydWN0IF9JT19GSUxFICopICA7Cn0gX0lPX2Nvb2tpZV9pb19mdW5jdGlv bnNfdDsKCiAKc3RydWN0IF9JT19jb29raWVfZmlsZSB7CiAgc3RydWN0IF9JT19GSUxFIGZpbGU7 CiAgY29uc3Qgdm9pZCAqdnRhYmxlOwogIHZvaWQgKmNvb2tpZTsKICBfSU9fY29va2llX2lvX2Z1 bmN0aW9uc190IGlvX2Z1bmN0aW9uczsKfTsKCgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBf X3VuZGVyZmxvdyAgKF9JT19GSUxFKikgIDsKZXh0ZXJuIGludCBfX3VmbG93ICAoX0lPX0ZJTEUq KSAgOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgIChfSU9fRklMRSosIGludCkgIDsKCgoKCgoKCgoK CgoKCgoKCgpleHRlcm4gaW50IF9JT19nZXRjICAoX0lPX0ZJTEUgKl9fZnApICA7CmV4dGVybiBp bnQgX0lPX3B1dGMgIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgIDsKZXh0ZXJuIGludCBfSU9f ZmVvZiAgKF9JT19GSUxFICpfX2ZwKSAgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgIChfSU9fRklM RSAqX19mcCkgIDsKCmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAgKF9JT19GSUxFICpfX2Zw KSAgOwoKIAoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIDsKZXh0 ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIDsKZXh0ZXJuIGludCBfSU9f ZnRyeWxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIDsKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK ZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAgKF9JT19GSUxFKiwgY29uc3QgY2hhciosIF9fZ251Y192 YV9saXN0ICwgaW50KikgIDsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgIChfSU9fRklMRSosIGNv bnN0IGNoYXIqLCBfX2dudWNfdmFfbGlzdCApICA7CmV4dGVybiBfX3NzaXplX3QgICBfSU9fcGFk biAgKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90ICApICA7CmV4dGVybiBzaXplX3QgICBfSU9f c2dldG4gIChfSU9fRklMRSAqLCB2b2lkKiwgc2l6ZV90ICApICA7CgpleHRlcm4gX19vZmZfdCAg IF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUqLCBfX29mZl90ICAsIGludCwgaW50KSAgOwpleHRlcm4g X19vZmZfdCAgIF9JT19zZWVrcG9zICAoX0lPX0ZJTEUqLCBfX29mZl90ICAsIGludCkgIDsKCmV4 dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhICAoX0lPX0ZJTEUqKSAgOwoKCn0KCgoKIyAz NiAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8u Li8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAyIDMKCn0KIAoKIyAxICIvbHVzci9nbnUv bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkYXJnLmgiIDEg MwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgp2b2lkIHZhX2Vu ZCAoX19nbnVjX3ZhX2xpc3QpOwkJIAoKCiAKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKIAogCgoKCgoKCgoKCgoKCgojIDE3NSAiL2x1c3IvZ251L2xpYi9nY2MtbGli L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKIAoKCgoKIAoK IAoKIAoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgojIDQwICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4x Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDIgMwoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKZXh0ZXJuICJDKysiIHsKY2xhc3MgaXN0cmVhbTsgIApjbGFzcyBvc3RyZWFt OyBjbGFzcyBzdHJlYW1idWY7CgogCgoKCgoKCgp0eXBlZGVmIF9fb2ZmX3QgICBzdHJlYW1vZmY7 CnR5cGVkZWYgX19vZmZfdCAgIHN0cmVhbXBvczsKCnR5cGVkZWYgX19zc2l6ZV90ICAgc3RyZWFt c2l6ZTsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX2ZtdGZsYWdzOwp0eXBlZGVmIHVuc2lnbmVk IGNoYXIgX19pb3N0YXRlOwoKc3RydWN0IF9pb3NfZmllbGRzCnsgIAogICAgc3RyZWFtYnVmICpf c3RyYnVmOwogICAgb3N0cmVhbSogX3RpZTsKICAgIGludCBfd2lkdGg7CiAgICBfX2ZtdGZsYWdz IF9mbGFnczsKICAgIHNob3J0ICBfZmlsbDsKICAgIF9faW9zdGF0ZSBfc3RhdGU7CiAgICBfX2lv c3RhdGUgX2V4Y2VwdGlvbnM7CiAgICBpbnQgX3ByZWNpc2lvbjsKCiAgICB2b2lkICpfYXJyYXlz OyAgCn07CgoKCgoKCgoKCgoKCgoKCiMgMTI0ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1w Yy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgi IDMKCgpjbGFzcyBpb3MgOiBwdWJsaWMgX2lvc19maWVsZHMgewogIGlvcyYgb3BlcmF0b3I9KGlv cyYpOyAgIAogIGlvcyAoY29uc3QgaW9zJik7ICAKICBwdWJsaWM6CiAgICB0eXBlZGVmIF9fZm10 ZmxhZ3MgZm10ZmxhZ3M7CiAgICB0eXBlZGVmIGludCBpb3N0YXRlOwogICAgdHlwZWRlZiBpbnQg b3Blbm1vZGU7CiAgICB0eXBlZGVmIF9fc3NpemVfdCAgIHN0cmVhbXNpemU7CiAgICBlbnVtIGlv X3N0YXRlIHsKCWdvb2RiaXQgPSAwICwKCWVvZmJpdCA9IDEgLAoJZmFpbGJpdCA9IDIgLAoJYmFk Yml0ID0gNCAgfTsKICAgIGVudW0gb3Blbl9tb2RlIHsKCWluID0gMSAsCglvdXQgPSAyICwKCWF0 ZSA9IDQgLAoJYXBwID0gOCAsCgl0cnVuYyA9IDE2ICwKCW5vY3JlYXRlID0gMzIgLAoJbm9yZXBs YWNlID0gNjQgLAoJYmluID0gMTI4ICwgIAoJYmluYXJ5ID0gMTI4ICB9OwogICAgZW51bSBzZWVr X2RpciB7IGJlZywgY3VyLCBlbmR9OwogICAgdHlwZWRlZiBlbnVtIHNlZWtfZGlyIHNlZWtkaXI7 CiAgICAgCiAgICBlbnVtIHsgc2tpcHdzPSAwMSAsCgkgICBsZWZ0PSAwMiAsIHJpZ2h0PSAwNCAs IGludGVybmFsPSAwMTAgLAoJICAgZGVjPSAwMjAgLCBvY3Q9IDA0MCAsIGhleD0gMDEwMCAsCgkg ICBzaG93YmFzZT0gMDIwMCAsIHNob3dwb2ludD0gMDQwMCAsCgkgICB1cHBlcmNhc2U9IDAxMDAw ICwgc2hvd3Bvcz0gMDIwMDAgLAoJICAgc2NpZW50aWZpYz0gMDQwMDAgLCBmaXhlZD0gMDEwMDAw ICwKCSAgIHVuaXRidWY9IDAyMDAwMCAsIHN0ZGlvPSAwNDAwMDAgCgoKCgkgICB9OwogICAgZW51 bSB7ICAKCWJhc2VmaWVsZD1kZWMrb2N0K2hleCwKCWZsb2F0ZmllbGQgPSBzY2llbnRpZmljK2Zp eGVkLAoJYWRqdXN0ZmllbGQgPSBsZWZ0K3JpZ2h0K2ludGVybmFsCiAgICB9OwoKIyAxNzcgIi9s dXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4v aW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIgMwoKCiAgICBvc3RyZWFtKiB0aWUoKSBjb25zdCB7 IHJldHVybiBfdGllOyB9CiAgICBvc3RyZWFtKiB0aWUob3N0cmVhbSogdmFsKSB7IG9zdHJlYW0q IHNhdmU9X3RpZTsgX3RpZT12YWw7IHJldHVybiBzYXZlOyB9CgogICAgIAogICAgc2hvcnQgIGZp bGwoKSBjb25zdCB7IHJldHVybiBfZmlsbDsgfQogICAgc2hvcnQgIGZpbGwoc2hvcnQgIG5ld2Yp Cgl7c2hvcnQgIG9sZGYgPSBfZmlsbDsgX2ZpbGwgPSBuZXdmOyByZXR1cm4gb2xkZjt9CiAgICBm bXRmbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIF9mbGFnczsgfQogICAgZm10ZmxhZ3MgZmxh Z3MoZm10ZmxhZ3MgbmV3X3ZhbCkgewoJZm10ZmxhZ3Mgb2xkX3ZhbCA9IF9mbGFnczsgX2ZsYWdz ID0gbmV3X3ZhbDsgcmV0dXJuIG9sZF92YWw7IH0KICAgIGludCBwcmVjaXNpb24oKSBjb25zdCB7 IHJldHVybiBfcHJlY2lzaW9uOyB9CiAgICBpbnQgcHJlY2lzaW9uKGludCBuZXdwKSB7Cgl1bnNp Z25lZCBzaG9ydCBvbGRwID0gX3ByZWNpc2lvbjsgX3ByZWNpc2lvbiA9ICh1bnNpZ25lZCBzaG9y dCluZXdwOwoJcmV0dXJuIG9sZHA7IH0KICAgIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFsKSB7 CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdzIHw9IHZhbDsgcmV0dXJuIG9sZGJp dHM7IH0KICAgIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFsLCBmbXRmbGFncyBtYXNrKSB7Cglm bXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdzID0gKF9mbGFncyAmIH5tYXNrKSB8ICh2 YWwgJiBtYXNrKTsgcmV0dXJuIG9sZGJpdHM7IH0KICAgIGZtdGZsYWdzIHVuc2V0ZihmbXRmbGFn cyBtYXNrKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdzICY9IH5tYXNrOyBy ZXR1cm4gb2xkYml0czsgfQogICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gX3dpZHRoOyB9 CiAgICBpbnQgd2lkdGgoaW50IHZhbCkgeyBpbnQgc2F2ZSA9IF93aWR0aDsgX3dpZHRoID0gdmFs OyByZXR1cm4gc2F2ZTsgfQoKCgoKICAgIHZvaWQgX3Rocm93X2ZhaWx1cmUoKSBjb25zdCB7IH0K CiAgICB2b2lkIGNsZWFyKGlvc3RhdGUgc3RhdGUgPSAwKSB7Cglfc3RhdGUgPSBfc3RyYnVmID8g c3RhdGUgOiBzdGF0ZXxiYWRiaXQ7CglpZiAoX3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19m YWlsdXJlKCk7IH0KICAgIHZvaWQgc2V0KGlvc3RhdGUgZmxhZykgeyBfc3RhdGUgfD0gZmxhZzsK CWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBz ZXRzdGF0ZShpb3N0YXRlIGZsYWcpIHsgX3N0YXRlIHw9IGZsYWc7ICAKCWlmIChfc3RhdGUgJiBf ZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgaW50IGdvb2QoKSBjb25zdCB7IHJl dHVybiBfc3RhdGUgPT0gMDsgfQogICAgaW50IGVvZigpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAm IGlvczo6ZW9mYml0OyB9CiAgICBpbnQgZmFpbCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIChp b3M6OmJhZGJpdHxpb3M6OmZhaWxiaXQpOyB9CiAgICBpbnQgYmFkKCkgY29uc3QgeyByZXR1cm4g X3N0YXRlICYgaW9zOjpiYWRiaXQ7IH0KICAgIGlvc3RhdGUgcmRzdGF0ZSgpIGNvbnN0IHsgcmV0 dXJuIF9zdGF0ZTsgfQogICAgb3BlcmF0b3Igdm9pZCooKSBjb25zdCB7IHJldHVybiBmYWlsKCkg PyAodm9pZCopMCA6ICh2b2lkKikoLTEpOyB9CiAgICBpbnQgb3BlcmF0b3IhKCkgY29uc3QgeyBy ZXR1cm4gZmFpbCgpOyB9CiAgICBpb3N0YXRlIGV4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBf ZXhjZXB0aW9uczsgfQogICAgdm9pZCBleGNlcHRpb25zKGlvc3RhdGUgZW5hYmxlKSB7CglfZXhj ZXB0aW9ucyA9IGVuYWJsZTsKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1 cmUoKTsgfQoKICAgIHN0cmVhbWJ1ZiogcmRidWYoKSBjb25zdCB7IHJldHVybiBfc3RyYnVmOyB9 CiAgICBzdHJlYW1idWYqIHJkYnVmKHN0cmVhbWJ1ZiAqX3MpIHsKICAgICAgc3RyZWFtYnVmICpf b2xkID0gX3N0cmJ1ZjsgX3N0cmJ1ZiA9IF9zOyBjbGVhciAoKTsgcmV0dXJuIF9vbGQ7IH0KCiAg ICBzdGF0aWMgaW50IHN5bmNfd2l0aF9zdGRpbyhpbnQgb24pOwogICAgc3RhdGljIHZvaWQgc3lu Y193aXRoX3N0ZGlvKCkgeyBzeW5jX3dpdGhfc3RkaW8oMSk7IH0KICAgIHN0YXRpYyBmbXRmbGFn cyBiaXRhbGxvYygpOwogICAgc3RhdGljIGludCB4YWxsb2MoKTsKICAgIHZvaWQqJiBwd29yZChp bnQpOwogICAgdm9pZCogcHdvcmQoaW50KSBjb25zdDsKICAgIGxvbmcmIGl3b3JkKGludCk7CiAg ICBsb25nIGl3b3JkKGludCkgY29uc3Q7CgoKCgoKCgoKCiAgICAgCiAgICBjbGFzcyBJbml0IHsK ICAgIHB1YmxpYzoKICAgICAgSW5pdCAoKSB7IH0KICAgIH07CgogIHByb3RlY3RlZDoKICAgIGlu bGluZSBpb3Moc3RyZWFtYnVmKiBzYiA9IDAsIG9zdHJlYW0qIHRpZV90byA9IDApOwogICAgaW5s aW5lIHZpcnR1YWwgfmlvcygpOwogICAgaW5saW5lIHZvaWQgaW5pdChzdHJlYW1idWYqIHNiLCBv c3RyZWFtKiB0aWUgPSAwKTsKfTsKCgoKCnR5cGVkZWYgaW9zOjpzZWVrX2RpciBfc2Vla19kaXI7 CgoKIAogCiAKIAogCgogCiAKY2xhc3Mgc3RyZWFtbWFya2VyIDogcHJpdmF0ZSBfSU9fbWFya2Vy IHsKICAgIGZyaWVuZCBjbGFzcyBzdHJlYW1idWY7CiAgICB2b2lkIHNldF9vZmZzZXQoaW50IG9m ZnNldCkgeyBfcG9zID0gb2Zmc2V0OyB9CiAgcHVibGljOgogICAgc3RyZWFtbWFya2VyKHN0cmVh bWJ1ZiAqc2IpOwogICAgfnN0cmVhbW1hcmtlcigpOwogICAgaW50IHNhdmluZygpIHsgcmV0dXJu ICAxOyB9CiAgICBpbnQgZGVsdGEoc3RyZWFtbWFya2VyJik7CiAgICBpbnQgZGVsdGEoKTsKfTsK CnN0cnVjdCBzdHJlYW1idWYgOiBwdWJsaWMgX0lPX0ZJTEUgeyAgCiAgICBmcmllbmQgY2xhc3Mg aW9zOwogICAgZnJpZW5kIGNsYXNzIGlzdHJlYW07CiAgICBmcmllbmQgY2xhc3Mgb3N0cmVhbTsK ICAgIGZyaWVuZCBjbGFzcyBzdHJlYW1tYXJrZXI7CiAgICBjb25zdCB2b2lkIComX3Z0YWJsZSgp IHsgcmV0dXJuICooY29uc3Qgdm9pZCoqKSgoX0lPX0ZJTEUqKXRoaXMgKyAxKTsgfQogIHByb3Rl Y3RlZDoKICAgIHN0YXRpYyBzdHJlYW1idWYqIF9saXN0X2FsbDsgIAogICAgX0lPX0ZJTEUqJiB4 Y2hhaW4oKSB7IHJldHVybiBfY2hhaW47IH0KICAgIHZvaWQgX3VuX2xpbmsoKTsKICAgIHZvaWQg X2xpbmtfaW4oKTsKICAgIGNoYXIqIGdwdHIoKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3Mg ICYgMHgxMDAgID8gX0lPX3NhdmVfYmFzZSA6IF9JT19yZWFkX3B0cjsgfQogICAgY2hhciogcHB0 cigpIGNvbnN0IHsgcmV0dXJuIF9JT193cml0ZV9wdHI7IH0KICAgIGNoYXIqIGVncHRyKCkgY29u c3QKICAgICAgeyByZXR1cm4gX2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2VuZCA6IF9JT19y ZWFkX2VuZDsgfQogICAgY2hhciogZXBwdHIoKSBjb25zdCB7IHJldHVybiBfSU9fd3JpdGVfZW5k OyB9CiAgICBjaGFyKiBwYmFzZSgpIGNvbnN0IHsgcmV0dXJuIF9JT193cml0ZV9iYXNlOyB9CiAg ICBjaGFyKiBlYmFjaygpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBf SU9fc2F2ZV9iYXNlIDogX0lPX3JlYWRfYmFzZTt9CiAgICBjaGFyKiBiYXNlKCkgY29uc3QgeyBy ZXR1cm4gX0lPX2J1Zl9iYXNlOyB9CiAgICBjaGFyKiBlYnVmKCkgY29uc3QgeyByZXR1cm4gX0lP X2J1Zl9lbmQ7IH0KICAgIGludCBibGVuKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQgLSBf SU9fYnVmX2Jhc2U7IH0KICAgIHZvaWQgeHB1dF9jaGFyKGNoYXIgYykgeyAqX0lPX3dyaXRlX3B0 cisrID0gYzsgfQogICAgaW50IHhmbGFncygpIHsgcmV0dXJuIF9mbGFncyA7IH0KICAgIGludCB4 ZmxhZ3MoaW50IGYpIHtpbnQgZmwgPSBfZmxhZ3MgOyBfZmxhZ3MgID0gZjsgcmV0dXJuIGZsO30K ICAgIHZvaWQgeHNldGZsYWdzKGludCBmKSB7IF9mbGFncyAgfD0gZjsgfQogICAgdm9pZCB4c2V0 ZmxhZ3MoaW50IGYsIGludCBtYXNrKQogICAgICB7IF9mbGFncyAgPSAoX2ZsYWdzICAmIH5tYXNr KSB8IChmICYgbWFzayk7IH0KICAgIHZvaWQgZ2J1bXAoaW50IG4pCiAgICAgIHsgX2ZsYWdzICAm IDB4MTAwICA/IChfSU9fc2F2ZV9iYXNlKz1uKTooX0lPX3JlYWRfcHRyKz1uKTt9CiAgICB2b2lk IHBidW1wKGludCBuKSB7IF9JT193cml0ZV9wdHIgKz0gbjsgfQogICAgdm9pZCBzZXRiKGNoYXIq IGIsIGNoYXIqIGViLCBpbnQgYT0wKTsKICAgIHZvaWQgc2V0cChjaGFyKiBwLCBjaGFyKiBlcCkK ICAgICAgeyBfSU9fd3JpdGVfYmFzZT1fSU9fd3JpdGVfcHRyPXA7IF9JT193cml0ZV9lbmQ9ZXA7 IH0KICAgIHZvaWQgc2V0ZyhjaGFyKiBlYiwgY2hhciogZywgY2hhciAqZWcpIHsKICAgICAgaWYg KF9mbGFncyAgJiAweDEwMCApIF9JT19mcmVlX2JhY2t1cF9hcmVhKHRoaXMpOyAKICAgICAgX0lP X3JlYWRfYmFzZSA9IGViOyBfSU9fcmVhZF9wdHIgPSBnOyBfSU9fcmVhZF9lbmQgPSBlZzsgfQog ICAgY2hhciAqc2hvcnRidWYoKSB7IHJldHVybiBfc2hvcnRidWY7IH0KCiAgICBpbnQgaW5fYmFj a3VwKCkgeyByZXR1cm4gX2ZsYWdzICYgMHgxMDAgOyB9CiAgICAgCiAgICBjaGFyICpHYmFzZSgp IHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3NhdmVfYmFzZSA6IF9JT19yZWFkX2Jhc2U7IH0K ICAgICAKICAgIGNoYXIgKmVHcHRyKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9l bmQgOiBfSU9fcmVhZF9lbmQ7IH0KICAgICAKICAgIGNoYXIgKkJiYXNlKCkgeyByZXR1cm4gaW5f YmFja3VwKCkgPyBfSU9fcmVhZF9iYXNlIDogX0lPX3NhdmVfYmFzZTsgfQogICAgY2hhciAqQnB0 cigpIHsgcmV0dXJuIF9JT19iYWNrdXBfYmFzZTsgfQogICAgIAogICAgY2hhciAqZUJwdHIoKSB7 IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19yZWFkX2VuZCA6IF9JT19zYXZlX2VuZDsgfQogICAg Y2hhciAqTmJhc2UoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlOyB9CiAgICBjaGFyICplTnB0cigp IHsgcmV0dXJuIF9JT19zYXZlX2VuZDsgfQogICAgaW50IGhhdmVfYmFja3VwKCkgeyByZXR1cm4g X0lPX3NhdmVfYmFzZSAhPSBfX251bGwgOyB9CiAgICBpbnQgaGF2ZV9tYXJrZXJzKCkgeyByZXR1 cm4gX21hcmtlcnMgIT0gX19udWxsIDsgfQogICAgdm9pZCBmcmVlX2JhY2t1cF9hcmVhKCk7CiAg ICB2b2lkIHVuc2F2ZV9tYXJrZXJzKCk7ICAKICAgIGludCBwdXRfbW9kZSgpIHsgcmV0dXJuIF9m bGFncyAmIDB4ODAwIDsgfQogICAgaW50IHN3aXRjaF90b19nZXRfbW9kZSgpOwogICAgCiAgICBz dHJlYW1idWYoaW50IGZsYWdzPTApOwogIHB1YmxpYzoKICAgIHN0YXRpYyBpbnQgZmx1c2hfYWxs KCk7CiAgICBzdGF0aWMgdm9pZCBmbHVzaF9hbGxfbGluZWJ1ZmZlcmVkKCk7ICAKICAgIHZpcnR1 YWwgfnN0cmVhbWJ1ZigpOwogICAgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7 ICAKICAgIHZpcnR1YWwgaW50IHVuZGVyZmxvdygpOyAgCiAgICB2aXJ0dWFsIGludCB1Zmxvdygp OyAgCiAgICB2aXJ0dWFsIGludCBwYmFja2ZhaWwoaW50IGMpOwogCiAgICB2aXJ0dWFsIHN0cmVh bXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0 cmVhbXNpemUgeHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVh bXBvcyBzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6 b3V0KTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1v ZGUgPSBpb3M6OmlufGlvczo6b3V0KTsKCiAgICBzdHJlYW1wb3MgcHVic2Vla29mZihzdHJlYW1v ZmYgbywgX3NlZWtfZGlyIGQsIGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0 dXJuIF9JT19zZWVrb2ZmICh0aGlzLCBvLCBkLCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHB1YnNl ZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBpb3M6OmlufGlvczo6b3V0KQogICAgICB7 IHJldHVybiBfSU9fc2Vla3BvcyAodGhpcywgcG9zLCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHNz ZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsK ICAgIHN0cmVhbXBvcyBzc2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58 aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVu KTsKICAgIHZpcnR1YWwgaW50IHN5bmMoKTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsK CiAgICBpbnQgc2Vla21hcmsoc3RyZWFtbWFya2VyJiBtYXJrLCBpbnQgZGVsdGEgPSAwKTsKICAg IGludCBzcHV0YmFja2MoY2hhciBjKTsKICAgIGludCBzdW5nZXRjKCk7CiAgICBpbnQgdW5idWZm ZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDIgID8gMSA6IDA7IH0KICAgIGludCBsaW5lYnVmZmVy ZWQoKSB7IHJldHVybiBfZmxhZ3MgJiAweDIwMCAgPyAxIDogMDsgfQogICAgdm9pZCB1bmJ1ZmZl cmVkKGludCBpKQoJeyBpZiAoaSkgX2ZsYWdzIHw9IDIgOyBlbHNlIF9mbGFncyAmPSB+MiA7IH0K ICAgIHZvaWQgbGluZWJ1ZmZlcmVkKGludCBpKQoJeyBpZiAoaSkgX2ZsYWdzIHw9IDB4MjAwIDsg ZWxzZSBfZmxhZ3MgJj0gfjB4MjAwIDsgfQogICAgaW50IGFsbG9jYXRlKCkgeyAgCglpZiAoYmFz ZSgpIHx8IHVuYnVmZmVyZWQoKSkgcmV0dXJuIDA7CgllbHNlIHJldHVybiBkb2FsbG9jYXRlKCk7 IH0KICAgICAKICAgIHZvaWQgYWxsb2NidWYoKSB7IGlmIChiYXNlKCkgPT0gX19udWxsICkgZG9h bGxvY2J1ZigpOyB9CiAgICB2b2lkIGRvYWxsb2NidWYoKTsKICAgIGludCBpbl9hdmFpbCgpIHsg cmV0dXJuIF9JT19yZWFkX2VuZCAtIF9JT19yZWFkX3B0cjsgfQogICAgaW50IG91dF93YWl0aW5n KCkgeyByZXR1cm4gX0lPX3dyaXRlX3B0ciAtIF9JT193cml0ZV9iYXNlOyB9CiAgICBzdHJlYW1z aXplIHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4geHNwdXRuKHMs IG4pOyB9CiAgICBzdHJlYW1zaXplIHBhZG4oY2hhciBwYWQsIHN0cmVhbXNpemUgbikgeyByZXR1 cm4gX0lPX3BhZG4odGhpcywgcGFkLCBuKTsgfQogICAgc3RyZWFtc2l6ZSBzZ2V0bihjaGFyKiBz LCBzdHJlYW1zaXplIG4pIHsgcmV0dXJuIF9JT19zZ2V0bih0aGlzLCBzLCBuKTsgfQogICAgaW50 IGlnbm9yZShpbnQpOwogICAgaW50IGdldF9jb2x1bW4oKTsKICAgIGludCBzZXRfY29sdW1uKGlu dCk7CiAgICBsb25nIHNnZXRsaW5lKGNoYXIqIGJ1Ziwgc2l6ZV90ICAgbiwgY2hhciBkZWxpbSwg aW50IHB1dGJhY2tfZGVsaW0pOwogICAgaW50IHNwdXRjKGludCBjKSB7IHJldHVybiBfSU9fcHV0 YyAoIGMgLCAgIHRoaXMgKSA7IH0KICAgIGludCBzYnVtcGMoKSB7IHJldHVybiBfSU9fZ2V0YyAo IHRoaXMgKSA7IH0KICAgIGludCBzZ2V0YygpIHsgcmV0dXJuIF9JT19wZWVrY19sb2NrZWQgKCB0 aGlzICkgOyB9CiAgICBpbnQgc25leHRjKCkgewoJaWYgKF9JT19yZWFkX3B0ciA+PSBfSU9fcmVh ZF9lbmQgJiYgX191bmRlcmZsb3codGhpcykgPT0gKC0xKSApCgkgIHJldHVybiAoLTEpIDsKCWVs c2UgcmV0dXJuIF9JT19yZWFkX3B0cisrLCBzZ2V0YygpOyB9CiAgICB2b2lkIHN0b3NzYygpIHsg aWYgKF9JT19yZWFkX3B0ciA8IF9JT19yZWFkX2VuZCkgX0lPX3JlYWRfcHRyKys7IH0KICAgIGlu dCB2c2NhbihjaGFyIGNvbnN0ICpmbXQwLCBfX2dudWNfdmFfbGlzdCAgYXAsIGlvcyogc3RyZWFt ID0gX19udWxsICk7CiAgICBpbnQgc2NhbihjaGFyIGNvbnN0ICpmbXQwIC4uLik7CiAgICBpbnQg dmZvcm0oY2hhciBjb25zdCAqZm10MCwgX19nbnVjX3ZhX2xpc3QgIGFwKTsKICAgIGludCBmb3Jt KGNoYXIgY29uc3QgKmZtdDAgLi4uKTsKCgoKCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3Jl YWQoY2hhciogYnVmLCBzdHJlYW1zaXplIHNpemUpOwogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5 c193cml0ZShjb25zdCBjaGFyKiwgc3RyZWFtc2l6ZSk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBz eXNfc2VlayhzdHJlYW1vZmYsIF9zZWVrX2Rpcik7CiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2Uo KTsKICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZvaWQqKTsgIAoKCgoKfTsKCiAKIAoKY2xhc3Mg ZmlsZWJ1ZiA6IHB1YmxpYyBzdHJlYW1idWYgewogIHByb3RlY3RlZDoKICAgIHZvaWQgaW5pdCgp OwogIHB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBpbnQgb3BlbnByb3Q7ICAKICAgIGZpbGVidWYo KTsKICAgIGZpbGVidWYoaW50IGZkKTsKICAgIGZpbGVidWYoaW50IGZkLCBjaGFyKiBwLCBpbnQg bGVuKTsKCgoKICAgIH5maWxlYnVmKCk7CiAgICBmaWxlYnVmKiBhdHRhY2goaW50IGZkKTsKICAg IGZpbGVidWYqIG9wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpOwog ICAgZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgaW9zOjpvcGVubW9kZSBtb2Rl LCBpbnQgcHJvdCA9IDA2NjQpOwogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93KCk7CiAgICB2aXJ0 dWFsIGludCBvdmVyZmxvdyhpbnQgYyA9ICgtMSkgKTsKICAgIGludCBpc19vcGVuKCkgY29uc3Qg eyByZXR1cm4gX2ZpbGVubyA+PSAwOyB9CiAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBpc19v cGVuKCkgPyBfZmlsZW5vIDogKC0xKSA7IH0KICAgIGZpbGVidWYqIGNsb3NlKCk7CiAgICB2aXJ0 dWFsIGludCBkb2FsbG9jYXRlKCk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0cmVh bW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHZpcnR1YWwg c3RyZWFtYnVmKiBzZXRidWYoY2hhciogcCwgaW50IGxlbik7CiAgICBzdHJlYW1zaXplIHhzcHV0 bihjb25zdCBjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgc3RyZWFtc2l6ZSB4c2dldG4oY2hh ciogcywgc3RyZWFtc2l6ZSBuKTsKICAgIHZpcnR1YWwgaW50IHN5bmMoKTsKICBwcm90ZWN0ZWQ6 ICAKIAogICAgaW50IGlzX3JlYWRpbmcoKSB7IHJldHVybiBlYmFjaygpICE9IGVncHRyKCk7IH0K ICAgIGNoYXIqIGN1cl9wdHIoKSB7IHJldHVybiBpc19yZWFkaW5nKCkgPyAgZ3B0cigpIDogcHB0 cigpOyB9CiAgICAgCiAgICBjaGFyKiBmaWxlX3B0cigpIHsgcmV0dXJuIGVHcHRyKCk7IH0KICAg ICAKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfcmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUg c2l6ZSk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzeXNfc2VlayhzdHJlYW1vZmYsIF9zZWVrX2Rp cik7CiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1z aXplKTsKICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZvaWQqKTsgIAogICAgdmlydHVhbCBpbnQg c3lzX2Nsb3NlKCk7CgoKCgp9OwoKaW5saW5lIHZvaWQgaW9zOjppbml0KHN0cmVhbWJ1Ziogc2Is IG9zdHJlYW0qIHRpZV90bykgewoJCV9zdGF0ZSA9IHNiID8gaW9zOjpnb29kYml0IDogaW9zOjpi YWRiaXQ7IF9leGNlcHRpb25zPTA7CgkJX3N0cmJ1Zj1zYjsgX3RpZSA9IHRpZV90bzsgX3dpZHRo PTA7IF9maWxsPScgJzsKCgkJX2ZsYWdzPWlvczo6c2tpcHdzfGlvczo6ZGVjOwoKCgoJCV9wcmVj aXNpb249NjsgX2FycmF5cyA9IDA7IH0KCmlubGluZSBpb3M6OmlvcyhzdHJlYW1idWYqIHNiLCBv c3RyZWFtKiB0aWVfdG8pIHsgaW5pdChzYiwgdGllX3RvKTsgfQoKaW5saW5lIGlvczo6fmlvcygp IHsKCgoKICAgICAKICAgICAKICAgIG9wZXJhdG9yIGRlbGV0ZVtdIChfYXJyYXlzKTsKfQp9ICAK CiMgMzEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4v Li4vLi4vLi4vaW5jbHVkZS9nKystMy9pb3N0cmVhbS5oIiAyIDMKCgpleHRlcm4gIkMrKyIgewpj bGFzcyBpc3RyZWFtOyBjbGFzcyBvc3RyZWFtOwp0eXBlZGVmIGlvcyYgKCpfX21hbmlwKShpb3Mm KTsKdHlwZWRlZiBpc3RyZWFtJiAoKl9faW1hbmlwKShpc3RyZWFtJik7CnR5cGVkZWYgb3N0cmVh bSYgKCpfX29tYW5pcCkob3N0cmVhbSYpOwoKZXh0ZXJuIGlzdHJlYW0mIHdzKGlzdHJlYW0mIGlu cyk7CmV4dGVybiBvc3RyZWFtJiBmbHVzaChvc3RyZWFtJiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0m IGVuZGwob3N0cmVhbSYgb3V0cyk7CmV4dGVybiBvc3RyZWFtJiBlbmRzKG9zdHJlYW0mIG91dHMp OwoKY2xhc3Mgb3N0cmVhbSA6IHZpcnR1YWwgcHVibGljIGlvcwp7CiAgICAgCiAgICB2b2lkIGRv X29zZngoKTsKICBwdWJsaWM6CiAgICBvc3RyZWFtKCkgeyB9CiAgICBvc3RyZWFtKHN0cmVhbWJ1 Ziogc2IsIG9zdHJlYW0qIHRpZWQ9IF9fbnVsbCApOwogICAgaW50IG9wZngoKSB7CglpZiAoIWdv b2QoKSkgcmV0dXJuIDA7CgllbHNlIHsgaWYgKF90aWUpIF90aWUtPmZsdXNoKCk7ICA7IHJldHVy biAxO30gfQogICAgdm9pZCBvc2Z4KCkgeyAgOwoJCSAgaWYgKGZsYWdzKCkgJiAoaW9zOjp1bml0 YnVmfGlvczo6c3RkaW8pKQoJCSAgICAgIGRvX29zZngoKTsgfQogICAgb3N0cmVhbSYgZmx1c2go KTsKICAgIG9zdHJlYW0mIHB1dChjaGFyIGMpIHsgX3N0cmJ1Zi0+c3B1dGMoYyk7IHJldHVybiAq dGhpczsgfQoKCgoKCiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCBjaGFyICpzLCBzdHJlYW1zaXpl IG4pOwogICAgb3N0cmVhbSYgd3JpdGUoY29uc3QgdW5zaWduZWQgY2hhciAqcywgc3RyZWFtc2l6 ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciopcywgbik7fQogICAgb3N0cmVh bSYgd3JpdGUoY29uc3Qgc2lnbmVkIGNoYXIgKnMsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1 cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMsIG4pO30KICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IHZv aWQgKnMsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMs IG4pO30KICAgIG9zdHJlYW0mIHNlZWtwKHN0cmVhbXBvcyk7CiAgICBvc3RyZWFtJiBzZWVrcChz dHJlYW1vZmYsIF9zZWVrX2Rpcik7CiAgICBzdHJlYW1wb3MgdGVsbHAoKTsKICAgIG9zdHJlYW0m IGZvcm0oY29uc3QgY2hhciAqZm9ybWF0IC4uLik7CiAgICBvc3RyZWFtJiB2Zm9ybShjb25zdCBj aGFyICpmb3JtYXQsIF9fZ251Y192YV9saXN0ICBhcmdzKTsKCiAgICBvc3RyZWFtJiBvcGVyYXRv cjw8KGNoYXIgYyk7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGNoYXIgYykgeyBy ZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHNpZ25l ZCBjaGFyIGMpIHsgcmV0dXJuICgqdGhpcykgPDwgKGNoYXIpYzsgfQogICAgb3N0cmVhbSYgb3Bl cmF0b3I8PChjb25zdCBjaGFyICpzKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgdW5z aWduZWQgY2hhciAqcykKCXsgcmV0dXJuICgqdGhpcykgPDwgKGNvbnN0IGNoYXIqKXM7IH0KICAg IG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgc2lnbmVkIGNoYXIgKnMpCgl7IHJldHVybiAoKnRo aXMpIDw8IChjb25zdCBjaGFyKilzOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHZv aWQgKnApOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChpbnQgbik7CiAgICBvc3RyZWFtJiBvcGVy YXRvcjw8KHVuc2lnbmVkIGludCBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBuKTsK ICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBuKTsKCiAgICBfX2V4dGVuc2lv bl9fIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBsb25nIG4pOwogICAgX19leHRlbnNpb25fXyBv c3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyBuKTsKCiAgICBvc3RyZWFtJiBv cGVyYXRvcjw8KHNob3J0IG4pIHtyZXR1cm4gb3BlcmF0b3I8PCgoaW50KW4pO30KICAgIG9zdHJl YW0mIG9wZXJhdG9yPDwodW5zaWduZWQgc2hvcnQgbikge3JldHVybiBvcGVyYXRvcjw8KCh1bnNp Z25lZCBpbnQpbik7fQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoYm9vbCBiKSB7IHJldHVybiBv cGVyYXRvcjw8KChpbnQpYik7IH0KCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGRvdWJsZSBuKTsK ICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoZmxvYXQgbikgeyByZXR1cm4gb3BlcmF0b3I8PCgoZG91 YmxlKW4pOyB9CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIGRvdWJsZSBuKTsKCgoKICAg IG9zdHJlYW0mIG9wZXJhdG9yPDwoX19vbWFuaXAgZnVuYykgeyByZXR1cm4gKCpmdW5jKSgqdGhp cyk7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoX19tYW5pcCBmdW5jKSB7KCpmdW5jKSgqdGhp cyk7IHJldHVybiAqdGhpczt9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHN0cmVhbWJ1ZiopOwoK Cgp9OwoKY2xhc3MgaXN0cmVhbSA6IHZpcnR1YWwgcHVibGljIGlvcwp7CiAgICAgCnByb3RlY3Rl ZDoKICAgIHNpemVfdCAgIF9nY291bnQ7CgogICAgaW50IF9za2lwX3dzKCk7CiAgcHVibGljOgog ICAgaXN0cmVhbSgpOiBfZ2NvdW50ICgwKSB7IH0KICAgIGlzdHJlYW0oc3RyZWFtYnVmKiBzYiwg b3N0cmVhbSp0aWVkPSBfX251bGwgKTsKICAgIGlzdHJlYW0mIGdldChjaGFyKiBwdHIsIGludCBs ZW4sIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGlzdHJlYW0mIGdldCh1bnNpZ25lZCBjaGFyKiBw dHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0KChjaGFyKilwdHIs IGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiBnZXQoY2hhciYgYyk7CiAgICBpc3RyZWFtJiBn ZXQodW5zaWduZWQgY2hhciYgYykgeyByZXR1cm4gZ2V0KChjaGFyJiljKTsgfQogICAgaXN0cmVh bSYgZ2V0bGluZShjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGlz dHJlYW0mIGdldGxpbmUodW5zaWduZWQgY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0g J1xuJykKCXsgcmV0dXJuIGdldGxpbmUoKGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlz dHJlYW0mIGdldChzaWduZWQgY2hhciYgYykgIHsgcmV0dXJuIGdldCgoY2hhciYpYyk7IH0KICAg IGlzdHJlYW0mIGdldChzaWduZWQgY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xu JykKCXsgcmV0dXJuIGdldCgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYg Z2V0bGluZShzaWduZWQgY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJykKCXsg cmV0dXJuIGdldGxpbmUoKGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlzdHJlYW0mIHJl YWQoY2hhciAqcHRyLCBzdHJlYW1zaXplIG4pOwogICAgaXN0cmVhbSYgcmVhZCh1bnNpZ25lZCBj aGFyICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBu KTsgfQogICAgaXN0cmVhbSYgcmVhZChzaWduZWQgY2hhciAqcHRyLCBzdHJlYW1zaXplIG4pCiAg ICAgIHsgcmV0dXJuIHJlYWQoKGNoYXIqKXB0ciwgbik7IH0KICAgIGlzdHJlYW0mIHJlYWQodm9p ZCAqcHRyLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHJlYWQoKGNoYXIqKXB0ciwgbik7 IH0KICAgIGlzdHJlYW0mIGdldChzdHJlYW1idWYmIHNiLCBjaGFyIGRlbGltID0gJ1xuJyk7CiAg ICBpc3RyZWFtJiBnZXRzKGNoYXIgKipzLCBjaGFyIGRlbGltID0gJ1xuJyk7CiAgICBpbnQgaXBm eChpbnQgbmVlZCA9IDApIHsKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxiaXQpOyByZXR1 cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGllICYmIChuZWVkID09IDAgfHwgcmRidWYo KS0+aW5fYXZhaWwoKSA8IG5lZWQpKSBfdGllLT5mbHVzaCgpOwoJICBpZiAoIW5lZWQgJiYgKGZs YWdzKCkgJiBpb3M6OnNraXB3cykpIHJldHVybiBfc2tpcF93cygpOwoJICBlbHNlIHJldHVybiAx OwoJfQogICAgfQogICAgaW50IGlwZngwKCkgeyAgCglpZiAoIWdvb2QoKSkgeyBzZXQoaW9zOjpm YWlsYml0KTsgcmV0dXJuIDA7IH0KCWVsc2UgewoJICAgOwoJICBpZiAoX3RpZSkgX3RpZS0+Zmx1 c2goKTsKCSAgaWYgKGZsYWdzKCkgJiBpb3M6OnNraXB3cykgcmV0dXJuIF9za2lwX3dzKCk7Cgkg IGVsc2UgcmV0dXJuIDE7Cgl9CiAgICB9CiAgICBpbnQgaXBmeDEoKSB7ICAKCWlmICghZ29vZCgp KSB7IHNldChpb3M6OmZhaWxiaXQpOyByZXR1cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChf dGllICYmIHJkYnVmKCktPmluX2F2YWlsKCkgPT0gMCkgX3RpZS0+Zmx1c2goKTsKCSAgcmV0dXJu IDE7Cgl9CiAgICB9CiAgICB2b2lkIGlzZngoKSB7ICA7IH0KICAgIGludCBnZXQoKSB7IGlmICgh aXBmeDEoKSkgcmV0dXJuICgtMSkgOwoJCWVsc2UgeyBpbnQgY2ggPSBfc3RyYnVmLT5zYnVtcGMo KTsKCQkgICAgICAgaWYgKGNoID09ICgtMSkgKSBzZXQoaW9zOjplb2ZiaXQpOwoJCSAgICAgICBp c2Z4KCk7CgkJICAgICAgIHJldHVybiBjaDsKCQkgICAgIH0gfQogICAgaW50IHBlZWsoKTsKICAg IHNpemVfdCAgIGdjb3VudCgpIHsgcmV0dXJuIF9nY291bnQ7IH0KICAgIGlzdHJlYW0mIGlnbm9y ZShpbnQgbj0xLCBpbnQgZGVsaW0gPSAoLTEpICk7CiAgICBpbnQgc3luYyAoKTsKICAgIGlzdHJl YW0mIHNlZWtnKHN0cmVhbXBvcyk7CiAgICBpc3RyZWFtJiBzZWVrZyhzdHJlYW1vZmYsIF9zZWVr X2Rpcik7CiAgICBzdHJlYW1wb3MgdGVsbGcoKTsKICAgIGlzdHJlYW0mIHB1dGJhY2soY2hhciBj aCkgewoJaWYgKGdvb2QoKSAmJiBfc3RyYnVmLT5zcHV0YmFja2MoY2gpID09ICgtMSkgKSBjbGVh cihpb3M6OmJhZGJpdCk7CglyZXR1cm4gKnRoaXM7fQogICAgaXN0cmVhbSYgdW5nZXQoKSB7Cglp ZiAoZ29vZCgpICYmIF9zdHJidWYtPnN1bmdldGMoKSA9PSAoLTEpICkgY2xlYXIoaW9zOjpiYWRi aXQpOwoJcmV0dXJuICp0aGlzO30KICAgIGlzdHJlYW0mIHNjYW4oY29uc3QgY2hhciAqZm9ybWF0 IC4uLik7CiAgICBpc3RyZWFtJiB2c2Nhbihjb25zdCBjaGFyICpmb3JtYXQsIF9fZ251Y192YV9s aXN0ICBhcmdzKTsKCgoKCgoKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oY2hhciopOwogICAgaXN0 cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBjaGFyKiBwKSB7IHJldHVybiBvcGVyYXRvcj4+KChj aGFyKilwKTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzaWduZWQgY2hhcipwKSB7IHJldHVy biBvcGVyYXRvcj4+KChjaGFyKilwKTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyJiBj KTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgY2hhciYgYykge3JldHVybiBvcGVy YXRvcj4+KChjaGFyJiljKTt9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFyJiBj KSB7cmV0dXJuIG9wZXJhdG9yPj4oKGNoYXImKWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4o aW50Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGxvbmcmKTsKCiAgICBfX2V4dGVuc2lvbl9f IGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyBsb25nJik7CiAgICBfX2V4dGVuc2lvbl9fIGlzdHJl YW0mIG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyBsb25nJik7CgogICAgaXN0cmVhbSYgb3BlcmF0 b3I+PihzaG9ydCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBpbnQmKTsKICAg IGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyYpOwogICAgaXN0cmVhbSYgb3BlcmF0 b3I+Pih1bnNpZ25lZCBzaG9ydCYpOwoKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oYm9vbCYpOwoK ICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oZmxvYXQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4o ZG91YmxlJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGxvbmcgZG91YmxlJik7CiAgICBpc3Ry ZWFtJiBvcGVyYXRvcj4+KCBfX21hbmlwIGZ1bmMpIHsoKmZ1bmMpKCp0aGlzKTsgcmV0dXJuICp0 aGlzO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oX19pbWFuaXAgZnVuYykgeyByZXR1cm4gKCpm dW5jKSgqdGhpcyk7IH0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc3RyZWFtYnVmKik7Cn07Cgpj bGFzcyBpb3N0cmVhbSA6IHB1YmxpYyBpc3RyZWFtLCBwdWJsaWMgb3N0cmVhbQp7CiAgcHVibGlj OgogICAgaW9zdHJlYW0oKSB7IH0KICAgIGlvc3RyZWFtKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0q dGllZD0gX19udWxsICk7Cn07CgpjbGFzcyBfSU9faXN0cmVhbV93aXRoYXNzaWduIDogcHVibGlj IGlzdHJlYW0gewpwdWJsaWM6CiAgX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KGlz dHJlYW0mKTsKICBfSU9faXN0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oX0lPX2lzdHJlYW1f d2l0aGFzc2lnbiYgcmhzKQogICAgeyByZXR1cm4gb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxpc3Ry ZWFtJj4gKHJocykpOyB9Cn07CgpjbGFzcyBfSU9fb3N0cmVhbV93aXRoYXNzaWduIDogcHVibGlj IG9zdHJlYW0gewpwdWJsaWM6CiAgX0lPX29zdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KG9z dHJlYW0mKTsKICBfSU9fb3N0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oX0lPX29zdHJlYW1f d2l0aGFzc2lnbiYgcmhzKQogICAgeyByZXR1cm4gb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxvc3Ry ZWFtJj4gKHJocykpOyB9Cn07CgpleHRlcm4gX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiBjaW47CiAK ZXh0ZXJuIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gY291dCwgY2VycjsKCmV4dGVybiBfSU9fb3N0 cmVhbV93aXRoYXNzaWduIGNsb2cKCgoKOwoKZXh0ZXJuIGlzdHJlYW0mIGxvY2soaXN0cmVhbSYg aW5zKTsKZXh0ZXJuIGlzdHJlYW0mIHVubG9jayhpc3RyZWFtJiBpbnMpOwpleHRlcm4gb3N0cmVh bSYgbG9jayhvc3RyZWFtJiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIHVubG9jayhvc3RyZWFtJiBv dXRzKTsKCnN0cnVjdCBJb3N0cmVhbV9pbml0IHsgfSA7ICAgCgppbmxpbmUgaW9zJiBkZWMoaW9z JiBpKQp7IGkuc2V0Zihpb3M6OmRlYywgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1 cm4gaTsgfQppbmxpbmUgaW9zJiBoZXgoaW9zJiBpKQp7IGkuc2V0Zihpb3M6OmhleCwgaW9zOjpk ZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQppbmxpbmUgaW9zJiBvY3QoaW9zJiBp KQp7IGkuc2V0Zihpb3M6Om9jdCwgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4g aTsgfQp9ICAKCgojIDM0ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv Mi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaXRlcmF0b3IuaCIgMiAzCgoKIyAxICIv bHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4u L2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgogCgoKCgoKCiAKCnN0cnVjdCBpbnB1dF9pdGVyYXRvcl90YWcge307CnN0cnVjdCBvdXRw dXRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3QgZm9yd2FyZF9pdGVyYXRvcl90YWcgOiBwdWJsaWMg aW5wdXRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcg OiBwdWJsaWMgZm9yd2FyZF9pdGVyYXRvcl90YWcge307CnN0cnVjdCByYW5kb21fYWNjZXNzX2l0 ZXJhdG9yX3RhZyA6IHB1YmxpYyBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB7fTsKCiAKIAog CiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gc3RydWN0IGlucHV0X2l0 ZXJhdG9yIHsKICB0eXBlZGVmIGlucHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsK ICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3Rh bmNlICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgICAgICAg ICBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnN0 cnVjdCBvdXRwdXRfaXRlcmF0b3IgewogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVy YXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsK ICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYg dm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAg ICByZWZlcmVuY2U7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0 cnVjdCBmb3J3YXJkX2l0ZXJhdG9yIHsKICB0eXBlZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIGl0 ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwICAgICAgICAgICAgICAgICAgdmFsdWVfdHlw ZTsKICB0eXBlZGVmIF9EaXN0YW5jZSAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBl ZGVmIF9UcCogICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBfVHAmICAgICAgICAg ICAgICAgICByZWZlcmVuY2U7Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3Rh bmNlPiBzdHJ1Y3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRvciB7CiAgdHlwZWRlZiBiaWRpcmVjdGlv bmFsX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgICAgICAgICAg ICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAgICAgICAgICAgICAgICAg ICAgICBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJl bmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3QgcmFu ZG9tX2FjY2Vzc19pdGVyYXRvciB7CiAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh ZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgICAgICAgICAgICAgICAgICBkaWZmZXJl bmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwog IHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKIyA5OCAi L2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8u Li9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0 ZXJhdG9yPgpzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzIHsKICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVy YXRvcjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB0eXBl bmFtZSBfSXRlcmF0b3I6OnZhbHVlX3R5cGUgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB0 eXBlbmFtZSBfSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSAgIGRpZmZlcmVuY2VfdHlwZTsKICB0 eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cG9pbnRlciAgICAgICAgICAgcG9pbnRlcjsKICB0 eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cmVmZXJlbmNlICAgICAgICAgcmVmZXJlbmNlOwp9 OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPiB7CiAg dHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0 eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYg cHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9U cCogICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAgICAg ICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVj dCBpdGVyYXRvcl90cmFpdHM8Y29uc3QgX1RwKj4gewogIHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19p dGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAgICAgICAgICAg ICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCAgICAgICAgICAgICAg ICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBjb25zdCBfVHAqICAgICAgICAgICAgICAg ICAgcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IF9UcCYgICAgICAgICAgICAgICAgICByZWZlcmVu Y2U7Cn07CgogCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFt ZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeQpfX2l0ZXJhdG9yX2Nh dGVnb3J5KGNvbnN0IF9JdGVyJikKewogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRz PF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0NhdGVnb3J5OwogIHJldHVybiBfQ2F0ZWdvcnko KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJh aXRzPF9JdGVyPjo6ZGlmZmVyZW5jZV90eXBlKgpfX2Rpc3RhbmNlX3R5cGUoY29uc3QgX0l0ZXIm KQp7CiAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46 OmRpZmZlcmVuY2VfdHlwZSo+KDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0 eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+Ojp2YWx1ZV90eXBlKgpfX3ZhbHVlX3R5cGUo Y29uc3QgX0l0ZXImKQp7CiAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIGl0ZXJhdG9yX3Ry YWl0czxfSXRlcj46OnZhbHVlX3R5cGUqPigwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgpp bmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkK aXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0ZXImIF9faSkgeyByZXR1cm4gX19pdGVyYXRvcl9j YXRlZ29yeShfX2kpOyB9CgoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5hbWUg aXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6ZGlmZmVyZW5jZV90eXBlKgpkaXN0YW5jZV90eXBlKGNv bnN0IF9JdGVyJiBfX2kpIHsgcmV0dXJuIF9fZGlzdGFuY2VfdHlwZShfX2kpOyB9Cgp0ZW1wbGF0 ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+Ojp2 YWx1ZV90eXBlKgp2YWx1ZV90eXBlKGNvbnN0IF9JdGVyJiBfX2kpIHsgcmV0dXJuIF9fdmFsdWVf dHlwZShfX2kpOyB9CgoKCgoKIyAyNTkgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp bnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIg MwoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxp bmUgdm9pZCBfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9y IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UmIF9fbiwgaW5wdXRfaXRl cmF0b3JfdGFnKQp7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7ICsrX19maXJzdDsgKytf X247IH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rp c3RhbmNlPgppbmxpbmUgdm9pZCBfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp cnN0LCAKICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0 LCAKICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UmIF9fbiwgcmFuZG9tX2FjY2Vzc19p dGVyYXRvcl90YWcpCnsKICBfX24gKz0gX19sYXN0IC0gX19maXJzdDsKfQoKdGVtcGxhdGUgPGNs YXNzIF9JbnB1dEl0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIGRpc3RhbmNl KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVy YXRvciBfX2xhc3QsIF9EaXN0YW5jZSYgX19uKQp7CiAgX19kaXN0YW5jZShfX2ZpcnN0LCBfX2xh c3QsIF9fbiwgaXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFz cyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJ dGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmly c3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgdHlwZW5h bWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiA9 IDA7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICArK19fZmlyc3Q7ICsrX19uOwog IH0KICByZXR1cm4gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y PgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46 OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0 LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgIHJhbmRvbV9hY2Nlc3Nf aXRlcmF0b3JfdGFnKSB7CiAgcmV0dXJuIF9fbGFzdCAtIF9fZmlyc3Q7Cn0KCnRlbXBsYXRlIDxj bGFzcyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5w dXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpkaXN0YW5jZShfSW5wdXRJdGVyYXRvciBfX2Zp cnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y X3RyYWl0czxfSW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IAogICAgX0NhdGVnb3J5 OwogIHJldHVybiBfX2Rpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX0NhdGVnb3J5KCkpOwp9CgoK CnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lk IF9fYWR2YW5jZShfSW5wdXRJdGVyJiBfX2ksIF9EaXN0YW5jZSBfX24sIGlucHV0X2l0ZXJhdG9y X3RhZykgewogIHdoaWxlIChfX24tLSkgKytfX2k7Cn0KCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Jp ZGlyZWN0aW9uYWxJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBfX2FkdmFu Y2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uLCAKICAgICAgICAg ICAgICAgICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKSB7CiAgaWYgKF9fbiA+PSAw KQogICAgd2hpbGUgKF9fbi0tKSArK19faTsKICBlbHNlCiAgICB3aGlsZSAoX19uKyspIC0tX19p Owp9CgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rp c3RhbmNlPgppbmxpbmUgdm9pZCBfX2FkdmFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yJiBfX2ks IF9EaXN0YW5jZSBfX24sIAogICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVy YXRvcl90YWcpIHsKICBfX2kgKz0gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0 b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgYWR2YW5jZShfSW5wdXRJdGVyYXRvciYg X19pLCBfRGlzdGFuY2UgX19uKSB7CiAgX19hZHZhbmNlKF9faSwgX19uLCBpdGVyYXRvcl9jYXRl Z29yeShfX2kpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmNsYXNzIGJhY2tfaW5z ZXJ0X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWluZXIqIGNvbnRhaW5lcjsKcHVibGlj OgogIHR5cGVkZWYgX0NvbnRhaW5lciAgICAgICAgICBjb250YWluZXJfdHlwZTsKICB0eXBlZGVm IG91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAg ICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIGRp ZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0 eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwoKICBleHBsaWNpdCBiYWNrX2lu c2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gpIDogY29udGFpbmVyKCZfX3gpIHt9CiAgYmFj a19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mCiAgb3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1l IF9Db250YWluZXI6OnZhbHVlX3R5cGUmIF9fdmFsdWUpIHsgCiAgICBjb250YWluZXItPnB1c2hf YmFjayhfX3ZhbHVlKTsKICAgIHJldHVybiAqdGhpczsKICB9CiAgYmFja19pbnNlcnRfaXRlcmF0 b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAgYmFja19pbnNl cnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQog IGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvcisrKGludCkgeyByZXR1 cm4gKnRoaXM7IH0KfTsKCiMgMzc4ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51 eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMK Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KaW5saW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9y PF9Db250YWluZXI+IGJhY2tfaW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194KSB7CiAgcmV0dXJuIGJh Y2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9feCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf Q29udGFpbmVyPgpjbGFzcyBmcm9udF9pbnNlcnRfaXRlcmF0b3Igewpwcm90ZWN0ZWQ6CiAgX0Nv bnRhaW5lciogY29udGFpbmVyOwpwdWJsaWM6CiAgdHlwZWRlZiBfQ29udGFpbmVyICAgICAgICAg IGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9j YXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBl ZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCAg ICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICByZWZl cmVuY2U7CgogIGV4cGxpY2l0IGZyb250X2luc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gp IDogY29udGFpbmVyKCZfX3gpIHt9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+ JgogIG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiBfX3Zh bHVlKSB7IAogICAgY29udGFpbmVyLT5wdXNoX2Zyb250KF9fdmFsdWUpOwogICAgcmV0dXJuICp0 aGlzOwogIH0KICBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKigp IHsgcmV0dXJuICp0aGlzOyB9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBv cGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KICBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0Nv bnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoKIyA0MTcgIi9s dXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4v aW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIgMwoKCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFp bmVyPgppbmxpbmUgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+IGZyb250X2luc2Vy dGVyKF9Db250YWluZXImIF9feCkgewogIHJldHVybiBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0Nv bnRhaW5lcj4oX194KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmNsYXNzIGluc2Vy dF9pdGVyYXRvciB7CnByb3RlY3RlZDoKICBfQ29udGFpbmVyKiBjb250YWluZXI7CiAgdHlwZW5h bWUgX0NvbnRhaW5lcjo6aXRlcmF0b3IgaXRlcjsKcHVibGljOgogIHR5cGVkZWYgX0NvbnRhaW5l ciAgICAgICAgICBjb250YWluZXJfdHlwZTsKICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90YWcg aXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHZhbHVlX3R5 cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBl ZGVmIHZvaWQgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgICAg ICAgICAgcmVmZXJlbmNlOwoKICBpbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194LCB0eXBl bmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBfX2kpIAogICAgOiBjb250YWluZXIoJl9feCksIGl0 ZXIoX19pKSB7fQogIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYKICBvcGVyYXRvcj0oY29u c3QgdHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYgX192YWx1ZSkgeyAKICAgIGl0ZXIg PSBjb250YWluZXItPmluc2VydChpdGVyLCBfX3ZhbHVlKTsKICAgICsraXRlcjsKICAgIHJldHVy biAqdGhpczsKICB9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvciooKSB7 IHJldHVybiAqdGhpczsgfQogIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0b3Ir KygpIHsgcmV0dXJuICp0aGlzOyB9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVy YXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKCiMgNDU5ICIvbHVzci9nbnUvbGliL2dj Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMv c3RsX2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lciwgY2xhc3MgX0l0 ZXJhdG9yPgppbmxpbmUgCmluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiBpbnNlcnRlcihfQ29u dGFpbmVyJiBfX3gsIF9JdGVyYXRvciBfX2kpCnsKICB0eXBlZGVmIHR5cGVuYW1lIF9Db250YWlu ZXI6Oml0ZXJhdG9yIF9faXRlcjsKICByZXR1cm4gaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+ KF9feCwgX19pdGVyKF9faSkpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRl cmF0b3IsIGNsYXNzIF9UcCwgY2xhc3MgX1JlZmVyZW5jZSA9IF9UcCYsIAogICAgICAgICAgY2xh c3MgX0Rpc3RhbmNlID0gcHRyZGlmZl90PiAKCgoKCmNsYXNzIHJldmVyc2VfYmlkaXJlY3Rpb25h bF9pdGVyYXRvciB7CiAgdHlwZWRlZiByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0Jp ZGlyZWN0aW9uYWxJdGVyYXRvciwgX1RwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBfUmVmZXJlbmNlLCBfRGlzdGFuY2U+ICBfU2VsZjsKcHJvdGVjdGVkOgogIF9C aWRpcmVjdGlvbmFsSXRlcmF0b3IgY3VycmVudDsKcHVibGljOgogIHR5cGVkZWYgYmlkaXJlY3Rp b25hbF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAgICAg ICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3RhbmNlICAgICAgICAg ICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAgICAgICAgICAg ICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIF9SZWZlcmVuY2UgICAgICAgICAgICAgICAgIHJlZmVy ZW5jZTsKCiAgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yKCkge30KICBleHBsaWNpdCBy ZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3IoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX3gp CiAgICA6IGN1cnJlbnQoX194KSB7fQogIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgYmFzZSgpIGNv bnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0KICBfUmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsK ICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX190bXAgPSBjdXJyZW50OwogICAgcmV0dXJuICot LV9fdG1wOwogIH0KCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVy YXRvciooKSk7IH0KCiAgX1NlbGYmIG9wZXJhdG9yKysoKSB7CiAgICAtLWN1cnJlbnQ7CiAgICBy ZXR1cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJhdG9yKysoaW50KSB7CiAgICBfU2VsZiBfX3Rt cCA9ICp0aGlzOwogICAgLS1jdXJyZW50OwogICAgcmV0dXJuIF9fdG1wOwogIH0KICBfU2VsZiYg b3BlcmF0b3ItLSgpIHsKICAgICsrY3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1Nl bGYgb3BlcmF0b3ItLShpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICArK2N1cnJl bnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQp9OwoKIyA1NTAgIi9sdXNyL2dudS9saWIvZ2NjLWxp Yi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxf aXRlcmF0b3IuaCIgMwoKCnRlbXBsYXRlIDxjbGFzcyBfQmlJdGVyLCBjbGFzcyBfVHAsIGNsYXNz IF9SZWYsCiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBib29sIG9wZXJhdG9yPT0o CiAgICBjb25zdCByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0JpSXRlciwgX1RwLCBf UmVmLCBfRGlzdGFuY2U+JiBfX3gsIAogICAgY29uc3QgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0 ZXJhdG9yPF9CaUl0ZXIsIF9UcCwgX1JlZiwgX0Rpc3RhbmNlPiYgX195KQp7CiAgcmV0dXJuIF9f eC5iYXNlKCkgPT0gX195LmJhc2UoKTsKfQoKCgogCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBf SXRlcmF0b3I+CmNsYXNzIHJldmVyc2VfaXRlcmF0b3IgCnsKcHJvdGVjdGVkOgogIF9JdGVyYXRv ciBjdXJyZW50OwpwdWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0 ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnkKICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5Owog IHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnZhbHVlX3R5cGUK ICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8 X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAg dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cG9pbnRlcgogICAg ICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0 b3I+OjpyZWZlcmVuY2UKICAgICAgICAgIHJlZmVyZW5jZTsKCiAgdHlwZWRlZiBfSXRlcmF0b3Ig aXRlcmF0b3JfdHlwZTsKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiBfU2Vs ZjsKCnB1YmxpYzoKICByZXZlcnNlX2l0ZXJhdG9yKCkge30KICBleHBsaWNpdCByZXZlcnNlX2l0 ZXJhdG9yKGl0ZXJhdG9yX3R5cGUgX194KSA6IGN1cnJlbnQoX194KSB7fQoKICByZXZlcnNlX2l0 ZXJhdG9yKGNvbnN0IF9TZWxmJiBfX3gpIDogY3VycmVudChfX3guY3VycmVudCkge30KCiAgdGVt cGxhdGUgPGNsYXNzIF9JdGVyPgogIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2ZXJzZV9pdGVy YXRvcjxfSXRlcj4mIF9feCkKICAgIDogY3VycmVudChfX3guYmFzZSgpKSB7fQoKICAgIAogIGl0 ZXJhdG9yX3R5cGUgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0KICByZWZlcmVuY2Ug b3BlcmF0b3IqKCkgY29uc3QgewogICAgX0l0ZXJhdG9yIF9fdG1wID0gY3VycmVudDsKICAgIHJl dHVybiAqLS1fX3RtcDsKICB9CgogIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJu ICYob3BlcmF0b3IqKCkpOyB9CgoKICBfU2VsZiYgb3BlcmF0b3IrKygpIHsKICAgIC0tY3VycmVu dDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpIHsKICAgIF9T ZWxmIF9fdG1wID0gKnRoaXM7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQog IF9TZWxmJiBvcGVyYXRvci0tKCkgewogICAgKytjdXJyZW50OwogICAgcmV0dXJuICp0aGlzOwog IH0KICBfU2VsZiBvcGVyYXRvci0tKGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhpczsKICAg ICsrY3VycmVudDsKICAgIHJldHVybiBfX3RtcDsKICB9CgogIF9TZWxmIG9wZXJhdG9yKyhkaWZm ZXJlbmNlX3R5cGUgX19uKSBjb25zdCB7CiAgICByZXR1cm4gX1NlbGYoY3VycmVudCAtIF9fbik7 CiAgfQogIF9TZWxmJiBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBfX24pIHsKICAgIGN1cnJl bnQgLT0gX19uOwogICAgcmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0oZGlmZmVy ZW5jZV90eXBlIF9fbikgY29uc3QgewogICAgcmV0dXJuIF9TZWxmKGN1cnJlbnQgKyBfX24pOwog IH0KICBfU2VsZiYgb3BlcmF0b3ItPShkaWZmZXJlbmNlX3R5cGUgX19uKSB7CiAgICBjdXJyZW50 ICs9IF9fbjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgcmVmZXJlbmNlIG9wZXJhdG9yW10oZGlm ZmVyZW5jZV90eXBlIF9fbikgY29uc3QgeyByZXR1cm4gKigqdGhpcyArIF9fbik7IH0gIAp9OyAK IAp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0 IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LCAKICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJldHVybiBfX3gu YmFzZSgpID09IF9feS5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmlubGlu ZSBib29sIG9wZXJhdG9yPChjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwg CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4m IF9feSkgewogIHJldHVybiBfX3kuYmFzZSgpIDwgX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNs YXNzIF9JdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9y Pjo6ZGlmZmVyZW5jZV90eXBlCm9wZXJhdG9yLShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVy YXRvcj4mIF9feCwgCiAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4m IF9feSkgewogIHJldHVybiBfX3kuYmFzZSgpIC0gX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNs YXNzIF9JdGVyYXRvcj4KaW5saW5lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiAKb3BlcmF0 b3IrKHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBl IF9fbiwKICAgICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194KSB7 CiAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPihfX3guYmFzZSgpIC0gX19uKTsK fQoKIyA4MDUgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEv Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIgMwoKCiAKIAoKdGVtcGxh dGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3QgPSBwdHJkaWZmX3Q+IApjbGFzcyBpc3RyZWFtX2l0 ZXJhdG9yIHsKICBmcmllbmQgYm9vbCBvcGVyYXRvcj09IDw+ICAoY29uc3QgaXN0cmVhbV9pdGVy YXRvciYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgaXN0cmVhbV9pdGVyYXRvciYpOwpwcm90ZWN0ZWQ6CiAgaXN0cmVhbSogX01fc3RyZWFtOwog IF9UcCBfTV92YWx1ZTsKICBib29sIF9NX2VuZF9tYXJrZXI7CiAgdm9pZCBfTV9yZWFkKCkgewog ICAgX01fZW5kX21hcmtlciA9ICgqX01fc3RyZWFtKSA/IHRydWUgOiBmYWxzZTsKICAgIGlmIChf TV9lbmRfbWFya2VyKSAqX01fc3RyZWFtID4+IF9NX3ZhbHVlOwogICAgX01fZW5kX21hcmtlciA9 ICgqX01fc3RyZWFtKSA/IHRydWUgOiBmYWxzZTsKICB9CnB1YmxpYzoKICB0eXBlZGVmIGlucHV0 X2l0ZXJhdG9yX3RhZyAgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAgICAgICAg ICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdCAgICAgICAgICAgICAgIGRpZmZlcmVu Y2VfdHlwZTsKICB0eXBlZGVmIGNvbnN0IF9UcCogICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVm IGNvbnN0IF9UcCYgICAgICAgICAgcmVmZXJlbmNlOwoKICBpc3RyZWFtX2l0ZXJhdG9yKCkgOiBf TV9zdHJlYW0oJmNpbiksIF9NX2VuZF9tYXJrZXIoZmFsc2UpIHt9CiAgaXN0cmVhbV9pdGVyYXRv cihpc3RyZWFtJiBfX3MpIDogX01fc3RyZWFtKCZfX3MpIHsgX01fcmVhZCgpOyB9CiAgcmVmZXJl bmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIF9NX3ZhbHVlOyB9CgogIHBvaW50ZXIgb3Bl cmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYob3BlcmF0b3IqKCkpOyB9CgogIGlzdHJlYW1faXRl cmF0b3I8X1RwLCBfRGlzdD4mIG9wZXJhdG9yKysoKSB7IAogICAgX01fcmVhZCgpOyAKICAgIHJl dHVybiAqdGhpczsKICB9CiAgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0PiBvcGVyYXRvcisr KGludCkgIHsKICAgIGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfRGlzdD4gX190bXAgPSAqdGhpczsK ICAgIF9NX3JlYWQoKTsKICAgIHJldHVybiBfX3RtcDsKICB9Cn07CgojIDg2NCAiL2x1c3IvZ251 L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRl L2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rp c3RhbmNlPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1Rw LCBfRGlzdGFuY2U+JiBfX3gsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXN0cmVhbV9p dGVyYXRvcjxfVHAsIF9EaXN0YW5jZT4mIF9feSkgewogIHJldHVybiAoX194Ll9NX3N0cmVhbSA9 PSBfX3kuX01fc3RyZWFtICYmCiAgICAgICAgICBfX3guX01fZW5kX21hcmtlciA9PSBfX3kuX01f ZW5kX21hcmtlcikgfHwKICAgICAgICAgX194Ll9NX2VuZF9tYXJrZXIgPT0gZmFsc2UgJiYgX195 Ll9NX2VuZF9tYXJrZXIgPT0gZmFsc2U7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNsYXNzIG9z dHJlYW1faXRlcmF0b3Igewpwcm90ZWN0ZWQ6CiAgb3N0cmVhbSogX01fc3RyZWFtOwogIGNvbnN0 IGNoYXIqIF9NX3N0cmluZzsKcHVibGljOgogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBp dGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlw ZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVk ZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAg ICAgICByZWZlcmVuY2U7CgogIG9zdHJlYW1faXRlcmF0b3Iob3N0cmVhbSYgX19zKSA6IF9NX3N0 cmVhbSgmX19zKSwgX01fc3RyaW5nKDApIHt9CiAgb3N0cmVhbV9pdGVyYXRvcihvc3RyZWFtJiBf X3MsIGNvbnN0IGNoYXIqIF9fYykgCiAgICA6IF9NX3N0cmVhbSgmX19zKSwgX01fc3RyaW5nKF9f YykgIHt9CiAgb3N0cmVhbV9pdGVyYXRvcjxfVHA+JiBvcGVyYXRvcj0oY29uc3QgX1RwJiBfX3Zh bHVlKSB7IAogICAgKl9NX3N0cmVhbSA8PCBfX3ZhbHVlOwogICAgaWYgKF9NX3N0cmluZykgKl9N X3N0cmVhbSA8PCBfTV9zdHJpbmc7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIG9zdHJlYW1faXRl cmF0b3I8X1RwPiYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KICBvc3RyZWFtX2l0ZXJh dG9yPF9UcD4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfSAKICBvc3RyZWFtX2l0ZXJh dG9yPF9UcD4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfSAKfTsKCiMgOTA3ICIv bHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4u L2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMKCgogCgoKCiAKIAogCiMgMzYgIi9sdXNy L2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5j bHVkZS9nKystMy9pdGVyYXRvci5oIiAyIDMKCgoKIyAxICIvbHVzci9nbnUvbGliL2djYy1saWIv aTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvdHlwZV90 cmFpdHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKc3RydWN0IF9fdHJ1ZV90eXBlIHsKfTsKCnN0cnVjdCBfX2ZhbHNlX3R5cGUg ewp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9fdHlwZV90cmFpdHMgeyAKICAgdHlw ZWRlZiBfX3RydWVfdHlwZSAgICAgdGhpc19kdW1teV9tZW1iZXJfbXVzdF9iZV9maXJzdDsKICAg ICAgICAgICAgICAgICAgICAKCgoKCgogICAgCgoKCgoKCgoKIAoKICAgdHlwZWRlZiBfX2ZhbHNl X3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2Zh bHNlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2Zh bHNlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBf X2ZhbHNlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNl X3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07CgoKCiAKIAogCgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBf X3R5cGVfdHJhaXRzPGJvb2w+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlh bF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2 aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZp YWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJp dmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9 OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxjaGFyPiB7CiAgIHR5cGVkZWYg X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRl ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVk ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry dWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJh aXRzPHNpZ25lZCBjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf ZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlh bF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFs X2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZp YWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsK CnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2lnbmVkIGNoYXI+IHsKICAgdHlw ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0 eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5 cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAg dHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVm IF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190 eXBlX3RyYWl0czx3Y2hhcl90PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZp YWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJp dmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2 aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3Ry aXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsK fTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8c2hvcnQ+IHsKICAgdHlwZWRl ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBl ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVk ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlw ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9f dHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90 cmFpdHM8dW5zaWduZWQgc2hvcnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJp dmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190 cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3Ry aXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNf dHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBl Owp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8aW50PiB7CiAgIHR5cGVkZWYg X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRl ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVk ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry dWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJh aXRzPHVuc2lnbmVkIGludD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFs X2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZp YWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlh bF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2 aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07 Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxsb25nPiB7CiAgIHR5cGVkZWYgX190 cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBf X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9f dHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYg X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf dHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRz PHVuc2lnbmVkIGxvbmc+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9k ZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFs X2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf YXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlh bF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoK Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxsb25nIGxvbmc+IHsKICAgdHlwZWRl ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBl ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVk ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlw ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9f dHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90 cmFpdHM8dW5zaWduZWQgbG9uZyBsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFz X3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBo YXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhh c190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAg aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0Rf dHlwZTsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8ZmxvYXQ+IHsKICAg dHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwog ICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAg IHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsK ICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBl ZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9f dHlwZV90cmFpdHM8ZG91YmxlPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZp YWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJp dmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2 aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3Ry aXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsK fTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGxvbmcgZG91YmxlPiB7CiAgIHR5 cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAg dHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0 eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAg IHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRl ZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4K c3RydWN0IF9fdHlwZV90cmFpdHM8X1RwKj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhh c190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAg aGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBo YXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAg IGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9E X3R5cGU7Cn07CgojIDI5NSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251 LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3R5cGVfdHJhaXRzLmgiIDMKCgoKIAog Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPiBzdHJ1Y3QgX0lzX2ludGVnZXIgewogIHR5cGVkZWYgX19m YWxzZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2Vy PGJvb2w+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8 PiAgc3RydWN0IF9Jc19pbnRlZ2VyPGNoYXI+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRl Z3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxzaWduZWQgY2hhcj4gewog IHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9J c19pbnRlZ2VyPHVuc2lnbmVkIGNoYXI+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3Jh bDsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHdjaGFyX3Q+IHsKICB0eXBl ZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19p bnRlZ2VyPHNob3J0PiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1w bGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgc2hvcnQ+IHsKICB0eXBlZGVmIF9f dHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxp bnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0 cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25lZCBpbnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9J bnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxsb25nPiB7CiAgdHlw ZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2lu dGVnZXI8dW5zaWduZWQgbG9uZz4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9 OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8bG9uZyBsb25nPiB7CiAgdHlwZWRl ZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVn ZXI8dW5zaWduZWQgbG9uZyBsb25nPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7 Cn07CgoKCgoKIAogCiAKIyAzOSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt Z251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2l0ZXJhdG9yLmgiIDIgMwoKCgoj IDEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4v Li4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uc3RydWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgogCgoKCgoKCiMgMSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzIuOTUuMS9pbmNsdWRlL25ldy5oIiAxIDMKIAoKCgoKIyAxICIvbHVzci9nbnUvbGli L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvbmV3IiAxIDMKIAogCgoK CgojcHJhZ21hIGludGVyZmFjZSAibmV3IgojIDEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2 LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvbHVzci9n bnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgi IDMKCiMgOCAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9p bmNsdWRlL25ldyIgMiAzCgojIDEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4 LWdudS8yLjk1LjEvaW5jbHVkZS9leGNlcHRpb24iIDEgMwogCiAKCgoKCiNwcmFnbWEgaW50ZXJm YWNlICJleGNlcHRpb24iCgpleHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZCB7CgpjbGFzcyBl eGNlcHRpb24gewpwdWJsaWM6CiAgZXhjZXB0aW9uICgpIHsgfQogIHZpcnR1YWwgfmV4Y2VwdGlv biAoKSB7IH0KICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQgKCkgY29uc3Q7Cn07CgpjbGFzcyBi YWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbiB7CnB1YmxpYzoKICBiYWRfZXhjZXB0aW9u ICgpIHsgfQogIHZpcnR1YWwgfmJhZF9leGNlcHRpb24gKCkgeyB9Cn07Cgp0eXBlZGVmIHZvaWQg KCp0ZXJtaW5hdGVfaGFuZGxlcikgKCk7CnR5cGVkZWYgdm9pZCAoKnVuZXhwZWN0ZWRfaGFuZGxl cikgKCk7Cgp0ZXJtaW5hdGVfaGFuZGxlciBzZXRfdGVybWluYXRlICh0ZXJtaW5hdGVfaGFuZGxl cik7CnZvaWQgdGVybWluYXRlICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKdW5l eHBlY3RlZF9oYW5kbGVyIHNldF91bmV4cGVjdGVkICh1bmV4cGVjdGVkX2hhbmRsZXIpOwp2b2lk IHVuZXhwZWN0ZWQgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwpib29sIHVuY2F1 Z2h0X2V4Y2VwdGlvbiAoKTsKCn0gIAoKfSAgCgoKIyA5ICIvbHVzci9nbnUvbGliL2djYy1saWIv aTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvbmV3IiAyIDMKCgpleHRlcm4gIkMrKyIg ewoKbmFtZXNwYWNlIHN0ZCB7CgogIGNsYXNzIGJhZF9hbGxvYyA6IHB1YmxpYyBleGNlcHRpb24g ewogIHB1YmxpYzoKICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCkg eyByZXR1cm4gImJhZF9hbGxvYyI7IH0KICB9OwoKICBzdHJ1Y3Qgbm90aHJvd190IHt9OwogIGV4 dGVybiBjb25zdCBub3Rocm93X3Qgbm90aHJvdzsKICB0eXBlZGVmIHZvaWQgKCpuZXdfaGFuZGxl cikoKTsKICBuZXdfaGFuZGxlciBzZXRfbmV3X2hhbmRsZXIgKG5ld19oYW5kbGVyKTsKCn0gIAoK IAp2b2lkICpvcGVyYXRvciBuZXcgKHNpemVfdCkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKTsKdm9p ZCAqb3BlcmF0b3IgbmV3W10gKHNpemVfdCkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKTsKdm9pZCBv cGVyYXRvciBkZWxldGUgKHZvaWQgKikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSAo dm9pZCAqKSB0aHJvdygpOwp2b2lkICpvcGVyYXRvciBuZXcgKHNpemVfdCwgY29uc3Qgc3RkOjpu b3Rocm93X3QmKSB0aHJvdygpOwp2b2lkICpvcGVyYXRvciBuZXdbXSAoc2l6ZV90LCBjb25zdCBz dGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlICh2b2lkICosIGNv bnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSAodm9p ZCAqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7CgogCmlubGluZSB2b2lkICpvcGVy YXRvciBuZXcoc2l6ZV90LCB2b2lkICpwbGFjZSkgdGhyb3coKSB7IHJldHVybiBwbGFjZTsgfQpp bmxpbmUgdm9pZCAqb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkICpwbGFjZSkgdGhyb3coKSB7 IHJldHVybiBwbGFjZTsgfQp9ICAKCgojIDYgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBj LWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9uZXcuaCIgMiAzCgoKdXNpbmcgc3RkOjpuZXdfaGFu ZGxlcjsKdXNpbmcgc3RkOjpzZXRfbmV3X2hhbmRsZXI7CgoKIyAzNCAiL2x1c3IvZ251L2xpYi9n Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z L3N0bF9jb25zdHJ1Y3QuaCIgMiAzCgoKIAoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxp bmUgdm9pZCBkZXN0cm95KF9UcCogX19wb2ludGVyKSB7CiAgX19wb2ludGVyLT5+X1RwKCk7Cn0K CnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIHZvaWQgY29uc3RydWN0KF9U MSogX19wLCBjb25zdCBfVDImIF9fdmFsdWUpIHsKICBuZXcgKF9fcCkgX1QxKF9fdmFsdWUpOwp9 Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxPgppbmxpbmUgdm9pZCBjb25zdHJ1Y3QoX1QxKiBfX3ApIHsK ICBuZXcgKF9fcCkgX1QxKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yPgpp bmxpbmUgdm9pZApfX2Rlc3Ryb3lfYXV4KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zvcndh cmRJdGVyYXRvciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkKewogIGZvciAoIDsgX19maXJzdCAhPSBf X2xhc3Q7ICsrX19maXJzdCkKICAgIGRlc3Ryb3koJipfX2ZpcnN0KTsKfQoKdGVtcGxhdGUgPGNs YXNzIF9Gb3J3YXJkSXRlcmF0b3I+CmlubGluZSB2b2lkIF9fZGVzdHJveV9hdXgoX0ZvcndhcmRJ dGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvciwgX190cnVlX3R5cGUpIHt9Cgp0ZW1wbGF0ZSA8Y2xh c3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZApfX2Rlc3Ryb3koX0Zv cndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwgX1RwKikKewog IHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHA+OjpoYXNfdHJpdmlhbF9kZXN0cnVj dG9yCiAgICAgICAgICBfVHJpdmlhbF9kZXN0cnVjdG9yOwogIF9fZGVzdHJveV9hdXgoX19maXJz dCwgX19sYXN0LCBfVHJpdmlhbF9kZXN0cnVjdG9yKCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zv cndhcmRJdGVyYXRvcj4KaW5saW5lIHZvaWQgZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmly c3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KSB7CiAgX19kZXN0cm95KF9fZmlyc3QsIF9fbGFz dCwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKaW5saW5lIHZvaWQgZGVzdHJveShjaGFy KiwgY2hhciopIHt9CmlubGluZSB2b2lkIGRlc3Ryb3kod2NoYXJfdCosIHdjaGFyX3QqKSB7fQoK IAoKCgogCiAKIAojIDQyICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv Mi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaXRlcmF0b3IuaCIgMiAzCgoKCiMgMSAi L2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8u Li9pbmNsdWRlL2crKy0zL3N0bF9yYXdfc3RvcmFnZV9pdGVyLmgiIDEgMwogCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9y LCBjbGFzcyBfVHA+CmNsYXNzIHJhd19zdG9yYWdlX2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9G b3J3YXJkSXRlcmF0b3IgX01faXRlcjsKcHVibGljOgogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9y X3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFs dWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwog IHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAg ICAgICAgICAgICByZWZlcmVuY2U7CgogIGV4cGxpY2l0IHJhd19zdG9yYWdlX2l0ZXJhdG9yKF9G b3J3YXJkSXRlcmF0b3IgX194KSA6IF9NX2l0ZXIoX194KSB7fQogIHJhd19zdG9yYWdlX2l0ZXJh dG9yJiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQogIHJhd19zdG9yYWdlX2l0ZXJhdG9y JiBvcGVyYXRvcj0oY29uc3QgX1RwJiBfX2VsZW1lbnQpIHsKICAgIGNvbnN0cnVjdCgmKl9NX2l0 ZXIsIF9fZWxlbWVudCk7CiAgICByZXR1cm4gKnRoaXM7CiAgfSAgICAgICAgCiAgcmF3X3N0b3Jh Z2VfaXRlcmF0b3I8X0ZvcndhcmRJdGVyYXRvciwgX1RwPiYgb3BlcmF0b3IrKygpIHsKICAgICsr X01faXRlcjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgcmF3X3N0b3JhZ2VfaXRlcmF0b3I8X0Zv cndhcmRJdGVyYXRvciwgX1RwPiBvcGVyYXRvcisrKGludCkgewogICAgcmF3X3N0b3JhZ2VfaXRl cmF0b3I8X0ZvcndhcmRJdGVyYXRvciwgX1RwPiBfX3RtcCA9ICp0aGlzOwogICAgKytfTV9pdGVy OwogICAgcmV0dXJuIF9fdG1wOwogIH0KfTsKCiMgNzMgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9p Njg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfcmF3 X3N0b3JhZ2VfaXRlci5oIiAzCgoKIAoKCgogCiAKIAojIDQ1ICIvbHVzci9nbnUvbGliL2djYy1s aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaXRl cmF0b3IuaCIgMiAzCgoKCiMgOTggIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4 LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9pdGVyYXRvci5oIiAzCgoKCgog CiAKIAojIDMzICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4x Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAiL2x1c3Iv Z251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNs dWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK IAoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIAoK CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgogCgoKIyAxICIvbHVzci9n bnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgi IDEgMwoKCgoKCgogCgoKIyAxOSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt Z251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi9s dXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRk ZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYg Ii9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9z dGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2 ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoK CiMgMjY5ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2lu Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvbHVzci9nbnUv bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMK CgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIg MiAzCgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtY3B5ICAodm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qg dm9pZCAqICBfX3NyYywKCQkJICAgIHNpemVfdCBfX24pICA7CiAKCmV4dGVybiB2b2lkICogIG1l bW1vdmUgICh2b2lkICogIF9fZGVzdCwgX19jb25zdCB2b2lkICogIF9fc3JjLAoJCQkgICAgIHNp emVfdCBfX24pICA7CgogCgoKZXh0ZXJuIHZvaWQgKiAgX19tZW1jY3B5ICAodm9pZCAqICBfX2Rl c3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICAgIGludCBfX2MsIHNpemVfdCBfX24p ICA7CgpleHRlcm4gdm9pZCAqICBtZW1jY3B5ICAodm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9p ZCAqICBfX3NyYywKCQkJICAgICBpbnQgX19jLCBzaXplX3QgX19uKSAgOwoKCgogCmV4dGVybiB2 b2lkICogIG1lbXNldCAgKHZvaWQgKiAgX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSAgOwoKIApl eHRlcm4gaW50IG1lbWNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAg X19zMiwKCQkJc2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtY2hyICAoX19jb25z dCB2b2lkICogIF9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgIDsKCgogCmV4dGVybiBjaGFyICpz dHJjcHkgIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMpICA7CiAKZXh0ZXJuIGNo YXIgKnN0cm5jcHkgIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMsIHNpemVfdCBf X24pICA7CgogCmV4dGVybiBjaGFyICpzdHJjYXQgIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hh ciAqX19zcmMpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgIChjaGFyICpfX2Rlc3QsIF9fY29u c3QgY2hhciAqX19zcmMsIHNpemVfdCBfX24pICA7CgogCmV4dGVybiBpbnQgc3RyY21wICAoX19j b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICA7CiAKZXh0ZXJuIGludCBzdHJu Y21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24p ICA7CgogCmV4dGVybiBpbnQgc3RyY29sbCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj aGFyICpfX3MyKSAgOwogCmV4dGVybiBzaXplX3Qgc3RyeGZybSAgKGNoYXIgKl9fZGVzdCwgX19j b25zdCBjaGFyICpfX3NyYywgc2l6ZV90IF9fbikgIDsKCgogCmV4dGVybiBjaGFyICpfX3N0cmR1 cCAgKF9fY29uc3QgY2hhciAqX19zKSAgOwpleHRlcm4gY2hhciAqc3RyZHVwICAoX19jb25zdCBj aGFyICpfX3MpICA7CgoKIAoKCmV4dGVybiBjaGFyICpfX3N0cm5kdXAgIChfX2NvbnN0IGNoYXIg Kl9fc3RyaW5nLCBzaXplX3QgX19uKSAgOwoKCgoKIyAxMjEgIi91c3IvaW5jbHVkZS9zdHJpbmcu aCIgMwoKCiAKZXh0ZXJuIGNoYXIgKnN0cmNociAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19j KSAgOwogCmV4dGVybiBjaGFyICpzdHJyY2hyICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp ICA7CgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25z dCBjaGFyICpfX3JlamVjdCkgIDsKIAoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gIChfX2NvbnN0IGNo YXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkgIDsKIApleHRlcm4gY2hhciAqc3RycGJy ayAgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KSAgOwogCmV4dGVy biBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAq X19uZWVkbGUpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cnRvayAgKGNoYXIgKl9fcywgX19jb25zdCBj aGFyICpfX2RlbGltKSAgOwoKCiAKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAgKGNoYXIgKl9fcywg X19jb25zdCBjaGFyICpfX2RlbGltLAoJCQkgICAgY2hhciAqKl9fc2F2ZV9wdHIpICA7CgoKCgoK CgoKCgoKIApleHRlcm4gc2l6ZV90IHN0cmxlbiAgKF9fY29uc3QgY2hhciAqX19zKSAgOwoKIyAx NzMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCmV4dGVybiBjaGFyICpzdHJlcnJvciAg KGludCBfX2Vycm51bSkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3IgIChpbnQgX19l cnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICA7CmV4dGVybiBjaGFyICpzdHJl cnJvcl9yICAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSAgOwoK CgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICogIF9fc3JjLCB2b2lkICogIF9f ZGVzdCwgc2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIHZvaWQgYnplcm8gICh2b2lkICogIF9fcywg c2l6ZV90IF9fbikgIDsKCiAKZXh0ZXJuIGludCBiY21wICAoX19jb25zdCB2b2lkICogIF9fczEs IF9fY29uc3Qgdm9pZCAqICBfX3MyLCBzaXplX3QgX19uKSAgOwoKIApleHRlcm4gY2hhciAqaW5k ZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIDsKCiAKZXh0ZXJuIGNoYXIgKnJpbmRl eCAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSAgOwoKIAoKZXh0ZXJuIGludCBmZnMgIChp bnQgX19pKSAgOwoKIApleHRlcm4gaW50IF9fc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19z MSwgX19jb25zdCBjaGFyICpfX3MyKSAgOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgIChfX2NvbnN0 IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIDsKCiAKZXh0ZXJuIGludCBfX3N0cm5j YXNlY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCSAgICAg ICBzaXplX3QgX19uKSAgOwpleHRlcm4gaW50IHN0cm5jYXNlY21wICAoX19jb25zdCBjaGFyICpf X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCSAgICAgc2l6ZV90IF9fbikgIDsKCgoKIAoKZXh0 ZXJuIGNoYXIgKl9fc3Ryc2VwICAoY2hhciAqKl9fc3RyaW5ncCwgX19jb25zdCBjaGFyICpfX2Rl bGltKSAgOwpleHRlcm4gY2hhciAqc3Ryc2VwICAoY2hhciAqKl9fc3RyaW5ncCwgX19jb25zdCBj aGFyICpfX2RlbGltKSAgOwoKCiMgMjQxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKIApl eHRlcm4gY2hhciAqYmFzZW5hbWUgIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpICA7CgoKfSAK CgojIDQ4ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4u Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKIyAxICIvbHVzci9n bnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvbGltaXRzLmgi IDEgMwogCgoKIAoKCgoKCiAKIyAxICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51 eC1nbnUvMi45NS4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMwogCgoKCgoKIyAxICIvbHVzci9n bnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvbGltaXRzLmgi IDEgMwogCgoKIAoKIyAxMTQgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu dS8yLjk1LjEvaW5jbHVkZS9saW1pdHMuaCIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9saW1pdHMu aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvcG9z aXgxX2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgogCgoKIAoKCiAK CgogCgoKIAoKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoK IAoKCiAKCgogCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvbG9jYWxfbGltLmgiIDEgMwogCgoKCgoK CgoKCgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwoKCgoK CgoKCgoKCgoKCgoKCiMgMjEgIi91c3IvaW5jbHVkZS9sb2NhbF9saW0uaCIgMiAzCgoKIAoKIAoK CiAKCiAKCgogCgogCgojIDkyICIvdXNyL2luY2x1ZGUvcG9zaXgxX2xpbS5oIiAyIDMKCgoKCgoK CgogCgoKCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoKIyAxICIvdXNy L2luY2x1ZGUvcG9zaXgyX2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAK CgogCgoKIAoKCiAKCgoKCiAKCgoKCiAKCgoKIAoKCiAKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoK CgoKCgoKCgoKICAKIAogCiAKIAojIDUzICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMKCgojIDEy OSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCgojIDExNyAiL2x1c3IvZ251L2xpYi9nY2MtbGli L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMgNyAi L2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N5 c2xpbWl0cy5oIiAyIDMKCgojIDExICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51 eC1nbnUvMi45NS4xL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoKCiAKCgoKIAoKCgogCgoKCgog CgoKCgoKIAoKCgogCgoKCgoKCgoKCgoKCiAKCiAKCgoKCiAKCgoKIAoKCgoKCgoKCiAKCgoKIAoK CgoKCgoKCgoKCgoKIAoKCgojIDEwNyAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzIuOTUuMS9pbmNsdWRlL2xpbWl0cy5oIiAzCgoKCgogCgoKCgoKCgoKCiMgNDkgIi9s dXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4v aW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9zdGRs aWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgojIDEgIi9sdXNyL2du dS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYuaCIg MSAzCgoKCgoKCiAKCgojIDE5ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n bnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL2x1 c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRl Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAi L2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0 ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4 Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoK IyAyNjkgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5j bHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi9sdXNyL2dudS9s aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoK CgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIyAzMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy IDMKCgpleHRlcm4gIkMiIHsgCgogCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CQkJ IAogICAgaW50IHJlbTsJCQkgCiAgfSBkaXZfdDsKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBs b25nIGludCBxdW90OwkJIAogICAgbG9uZyBpbnQgcmVtOwkJIAogIH0gbGRpdl90OwoKCgoKCgoK CgoKCiAKCgoKIAoKCgoKCiAKCmV4dGVybiBpbnQgX19jdHlwZV9nZXRfbWJfY3VyX21heCAgKHZv aWQpICA7CgoKIApleHRlcm4gZG91YmxlIGF0b2YgIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIDsK IApleHRlcm4gaW50IGF0b2kgIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIDsKIApleHRlcm4gbG9u ZyBpbnQgYXRvbCAgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgOwoKCiAKZXh0ZXJuIGxvbmcgbG9u ZyBpbnQgYXRvbGwgIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIDsKCgogCmV4dGVybiBkb3VibGUg c3RydG9kICAoX19jb25zdCBjaGFyICpfX25wdHIsIGNoYXIgKipfX2VuZHB0cikgIDsKCgoKCgoK CiAKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAgKF9fY29uc3QgY2hhciAqX19ucHRyLCBjaGFyICoq X19lbmRwdHIsCgkJCSAgICAgaW50IF9fYmFzZSkgIDsKIApleHRlcm4gdW5zaWduZWQgbG9uZyBp bnQgc3RydG91bCAgKF9fY29uc3QgY2hhciAqX19ucHRyLAoJCQkJICAgICAgIGNoYXIgKipfX2Vu ZHB0ciwgaW50IF9fYmFzZSkgIDsKCgogCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAgKF9f Y29uc3QgY2hhciAqX19ucHRyLCBjaGFyICoqX19lbmRwdHIsCgkJCQkgIGludCBfX2Jhc2UpICA7 CiAKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAgKF9fY29uc3QgY2hhciAq X19ucHRyLAoJCQkJCSAgICBjaGFyICoqX19lbmRwdHIsIGludCBfX2Jhc2UpICA7CgoKCiAKCiAK ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAgKF9fY29uc3QgY2hhciAqX19ucHRyLCBjaGFy ICoqX19lbmRwdHIsCgkJCQkgICBpbnQgX19iYXNlKSAgOwogCmV4dGVybiB1bnNpZ25lZCBsb25n IGxvbmcgaW50IHN0cnRvdWxsICAoX19jb25zdCBjaGFyICpfX25wdHIsCgkJCQkJICAgICBjaGFy ICoqX19lbmRwdHIsIGludCBfX2Jhc2UpICA7CgoKCgogCgoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRv ZF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqX19ucHRyLAoJCQkJICAgICAgY2hhciAqKl9fZW5k cHRyLCBpbnQgX19ncm91cCkgIDsKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsICAoX19j b25zdCBjaGFyICpfX25wdHIsIGNoYXIgKipfX2VuZHB0ciwKCQkJCSAgICAgaW50IF9fZ3JvdXAp ICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVybmFsICAoX19jb25zdCBjaGFy ICpfX25wdHIsCgkJCQkJCWNoYXIgKipfX2VuZHB0ciwgaW50IF9fZ3JvdXApICA7CmV4dGVybiBs b25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqX19ucHRyLCBjaGFyICoq X19lbmRwdHIsCgkJCQkJaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApICA7CmV4dGVybiB1bnNpZ25l ZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKl9fbnB0ciwKCQkJ CQkJICBjaGFyICoqX19lbmRwdHIsIGludCBfX2Jhc2UsCgkJCQkJCSAgaW50IF9fZ3JvdXApICA7 CgpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvcV9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAq X19ucHRyLAoJCQkJCSAgICAgY2hhciAqKl9fZW5kcHRyLCBpbnQgX19iYXNlLAoJCQkJCSAgICAg aW50IF9fZ3JvdXApICA7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91cV9p bnRlcm5hbCAgKF9fY29uc3QgY2hhciAqX19ucHRyLAoJCQkJCQkgICAgICAgY2hhciAqKl9fZW5k cHRyLAoJCQkJCQkgICAgICAgaW50IF9fYmFzZSwKCQkJCQkJICAgICAgIGludCBfX2dyb3VwKSAg OwoKCiMgMTk3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKCiAKCgpleHRlcm4gY2hhciAq bDY0YSAgKGxvbmcgaW50IF9fbikgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGE2NGwgIChfX2NvbnN0 IGNoYXIgKl9fcykgIDsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiAKCgoK CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKZXh0ZXJuICJDIiB7IAoKCgoKdHlwZWRlZiBfX3VfY2hh ciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2lu dDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBl ZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCnR5cGVk ZWYgX19kZXZfdCBkZXZfdDsKdHlwZWRlZiBfX2dpZF90IGdpZF90Owp0eXBlZGVmIF9faW5vX3Qg aW5vX3Q7CnR5cGVkZWYgX19tb2RlX3QgbW9kZV90Owp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190 Owp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90Owp0eXBlZGVm IF9fcGlkX3QgcGlkX3Q7CnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgp0eXBlZGVmIF9fc3NpemVf dCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRy X3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBfX2tleV90IGtleV90OwoKCgojIDEgIi91c3IvaW5jbHVk ZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CiMgNTYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA2OCAiL3Vzci9pbmNsdWRlL3RpbWUu aCIgMwoKCgoKCgoKCgogCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCgoKCiMgOTcgIi91c3Iv aW5jbHVkZS90aW1lLmgiIDMKCgoKCgojIDEyNSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoj IDI4MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDY3ICIvdXNyL2luY2x1ZGUvc3lzL3R5 cGVzLmgiIDIgMwoKCgojIDEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu dS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvbHVzci9nbnUv bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMK CgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMt bGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4 ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUv c3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9p Njg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoK CgoKIAoKIAoKIyAzMTcgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y Ljk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIyA3 MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxv bmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYg dW5zaWduZWQgaW50IHVpbnQ7CgoKIAoKIyA5NSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAz CgoKIAoKCgoKCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAg X19RSV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18g KChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0 ZV9fICgoX19tb2RlX18gKCAgX19ISV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50 MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9fICkpKSA7CnR5cGVkZWYgaW50 IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lfXyApKSkgOwp0eXBlZGVm IHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lf XyApKSkgOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBf X0RJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18g KChfX21vZGVfXyAoICBfX0RJX18gKSkpIDsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRy aWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKCgogCgoKCgoKCiAKIyAxICIvdXNyL2lu Y2x1ZGUvZW5kaWFuLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoj IDEgIi91c3IvaW5jbHVkZS9ieXRlc2V4LmgiIDEgMwogCgoKIyAzNCAiL3Vzci9pbmNsdWRlL2Vu ZGlhbi5oIiAyIDMKCgoKCgoKCgoKCiMgMTIzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg MwoKCiAKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK CgoKCgogCgoKCgoKCiAKCgogCiMgMSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu dXgtZ251LzIuOTUuMS9pbmNsdWRlL3NlbGVjdGJpdHMuaCIgMSAzCiAKCgojIDEgIi91c3IvaW5j bHVkZS9zZWxlY3RiaXRzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgojIDUwICIvdXNyL2luY2x1ZGUvc2VsZWN0Yml0cy5oIiAzCgojIDY1ICIvdXNyL2lu Y2x1ZGUvc2VsZWN0Yml0cy5oIiAzCgoKCiMgNCAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYt cGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3NlbGVjdGJpdHMuaCIgMiAzCgoKCgoKIyAxOCAi L2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3Nl bGVjdGJpdHMuaCIgMwoKCgoKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoK IAoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgojIDU2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgNjgg Ii91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA4MCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoK CgoKCgoKCgogCgpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CQkgCiAg ICBsb25nIGludCB0dl9uc2VjOwkJIAogIH07CgoKCgoKCiMgMTI1ICIvdXNyL2luY2x1ZGUvdGlt ZS5oIiAzCgoKCiMgMjgxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgMzUgIi91c3IvaW5j bHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKCgoKc3RydWN0IHRpbWV2 YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKIAp0eXBlZGVmIF9fZmRfc2V0IGZkX3Nl dDsKCiAKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgpleHRlcm4gaW50IF9fc2VsZWN0ICAoaW50IF9f bmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJICBfX2ZkX3NldCAqX193cml0ZWZkcywgX19m ZF9zZXQgKl9fZXhjZXB0ZmRzLAoJCQkgIHN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQpICA7CmV4 dGVybiBpbnQgc2VsZWN0ICAoaW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJX19m ZF9zZXQgKl9fd3JpdGVmZHMsIF9fZmRfc2V0ICpfX2V4Y2VwdGZkcywKCQkJc3RydWN0IHRpbWV2 YWwgKl9fdGltZW91dCkgIDsKCiAKCgpleHRlcm4gaW50IF9fcHNlbGVjdCAgKGludCBfX25mZHMs IF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCSAgIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3Nl dCAqX19leGNlcHRmZHMsCgkJCSAgIHN0cnVjdCB0aW1lc3BlYyAqX190aW1lb3V0KSAgOwpleHRl cm4gaW50IHBzZWxlY3QgIChpbnQgX19uZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLAoJCQkgX19m ZF9zZXQgKl9fd3JpdGVmZHMsIF9fZmRfc2V0ICpfX2V4Y2VwdGZkcywKCQkJIHN0cnVjdCB0aW1l c3BlYyAqX190aW1lb3V0KSAgOwoKCn0gCgoKIyAxMjYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu aCIgMiAzCgoKCgp9IAoKCiMgMjEwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCiAKCgoK IApleHRlcm4gaW50MzJfdCBfX3JhbmRvbSAgKHZvaWQpICA7CmV4dGVybiBpbnQzMl90IHJhbmRv bSAgKHZvaWQpICA7CgogCmV4dGVybiB2b2lkIF9fc3JhbmRvbSAgKHVuc2lnbmVkIGludCBfX3Nl ZWQpICA7CmV4dGVybiB2b2lkIHNyYW5kb20gICh1bnNpZ25lZCBpbnQgX19zZWVkKSAgOwoKIAoK CgpleHRlcm4gdm9pZCAqICBfX2luaXRzdGF0ZSAgKHVuc2lnbmVkIGludCBfX3NlZWQsIHZvaWQg KiAgX19zdGF0ZWJ1ZiwKCQkJCSBzaXplX3QgX19zdGF0ZWxlbikgIDsKZXh0ZXJuIHZvaWQgKiAg aW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqICBfX3N0YXRlYnVmLAoJCQkg ICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICA7CgogCgpleHRlcm4gdm9pZCAqICBfX3NldHN0YXRl ICAodm9pZCAqICBfX3N0YXRlYnVmKSAgOwpleHRlcm4gdm9pZCAqICBzZXRzdGF0ZSAgKHZvaWQg KiAgX19zdGF0ZWJ1ZikgIDsKCgoKIAoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQz Ml90ICpmcHRyOwkJIAogICAgaW50MzJfdCAqcnB0cjsJCSAKICAgIGludDMyX3QgKnN0YXRlOwkJ IAogICAgaW50IHJhbmRfdHlwZTsJCSAKICAgIGludCByYW5kX2RlZzsJCSAKICAgIGludCByYW5k X3NlcDsJCSAKICAgIGludDMyX3QgKmVuZF9wdHI7CQkgCiAgfTsKCmV4dGVybiBpbnQgX19yYW5k b21fciAgKHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYsIGludDMyX3QgKl9fcmVzdWx0KSAgOwpl eHRlcm4gaW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZiwgaW50MzJfdCAq X19yZXN1bHQpICA7CgpleHRlcm4gaW50IF9fc3JhbmRvbV9yICAodW5zaWduZWQgaW50IF9fc2Vl ZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgIDsKZXh0ZXJuIGludCBzcmFuZG9tX3IgICh1 bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSAgOwoKZXh0ZXJu IGludCBfX2luaXRzdGF0ZV9yICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqICBfX3N0YXRl YnVmLAoJCQkgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sIHN0cnVjdCByYW5kb21fZGF0YSAqX19i dWYpICA7CmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgICh1bnNpZ25lZCBpbnQgX19zZWVkLCB2b2lk ICogIF9fc3RhdGVidWYsCgkJCSAgICAgc2l6ZV90IF9fc3RhdGVsZW4sIHN0cnVjdCByYW5kb21f ZGF0YSAqX19idWYpICA7CgpleHRlcm4gaW50IF9fc2V0c3RhdGVfciAgKHZvaWQgKiAgX19zdGF0 ZWJ1Ziwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgIDsKZXh0ZXJuIGludCBzZXRzdGF0ZV9y ICAodm9pZCAqICBfX3N0YXRlYnVmLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSAgOwoKCgoK IApleHRlcm4gaW50IHJhbmQgICh2b2lkKSAgOwogCmV4dGVybiB2b2lkIHNyYW5kICAodW5zaWdu ZWQgaW50IF9fc2VlZCkgIDsKCgogCmV4dGVybiBpbnQgX19yYW5kX3IgICh1bnNpZ25lZCBpbnQg Kl9fc2VlZCkgIDsKZXh0ZXJuIGludCByYW5kX3IgICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgIDsK CgoKCiAKCiAKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICAodm9pZCkgIDsKZXh0ZXJuIGRvdWJsZSBl cmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICA7CgogCmV4dGVybiBsb25n IGxyYW5kNDggICh2b2lkKSAgOwpleHRlcm4gbG9uZyBucmFuZDQ4ICAodW5zaWduZWQgc2hvcnQg aW50IF9feHN1YmlbM10pICA7CgogCmV4dGVybiBsb25nIG1yYW5kNDggICh2b2lkKSAgOwpleHRl cm4gbG9uZyBqcmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICA7CgogCmV4 dGVybiB2b2lkIHNyYW5kNDggIChsb25nIF9fc2VlZHZhbCkgIDsKZXh0ZXJuIHVuc2lnbmVkIHNo b3J0IGludCAqc2VlZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgIDsKZXh0 ZXJuIHZvaWQgbGNvbmc0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSAgOwoKIApz dHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAKICAg IHVuc2lnbmVkIHNob3J0IGludCBhWzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJIAog ICAgdW5zaWduZWQgc2hvcnQgaW50IG9sZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAgfTsK CgogCmV4dGVybiBpbnQgZHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIs IGRvdWJsZSAqX19yZXN1bHQpICA7CmV4dGVybiBpbnQgZXJhbmQ0OF9yICAodW5zaWduZWQgc2hv cnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyLCBk b3VibGUgKl9fcmVzdWx0KSAgOwoKIApleHRlcm4gaW50IGxyYW5kNDhfciAgKHN0cnVjdCBkcmFu ZDQ4X2RhdGEgKl9fYnVmZmVyLCBsb25nICpfX3Jlc3VsdCkgIDsKZXh0ZXJuIGludCBucmFuZDQ4 X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0IGRyYW5kNDhf ZGF0YSAqX19idWZmZXIsIGxvbmcgKl9fcmVzdWx0KSAgOwoKIApleHRlcm4gaW50IG1yYW5kNDhf ciAgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyLCBsb25nICpfX3Jlc3VsdCkgIDsKZXh0 ZXJuIGludCBqcmFuZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAg c3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIsIGxvbmcgKl9fcmVzdWx0KSAgOwoKIApleHRl cm4gaW50IHNyYW5kNDhfciAgKGxvbmcgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf X2J1ZmZlcikgIDsKZXh0ZXJuIGludCBzZWVkNDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3Nl ZWQxNnZbM10sCgkJCSAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpICA7CmV4dGVybiBp bnQgbGNvbmc0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCgkJCSAgIHN0cnVj dCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgOwoKCiAKZXh0ZXJuIGludCBfX2RyYW5kNDhfaXRl cmF0ZSAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAoJCQkJICAgc3RydWN0IGRyYW5k NDhfZGF0YSAqX19idWZmZXIpICA7CgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWFsbG9jICAoc2l6ZV90 IF9fc2l6ZSkgIDsKIAoKZXh0ZXJuIHZvaWQgKiAgcmVhbGxvYyAgKHZvaWQgKiAgX19wdHIsIHNp emVfdCBfX3NpemUpICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAoc2l6ZV90IF9fbm1lbWIs IHNpemVfdCBfX3NpemUpICA7CiAKZXh0ZXJuIHZvaWQgZnJlZSAgKHZvaWQgKiAgX19wdHIpICA7 CgoKIApleHRlcm4gdm9pZCBjZnJlZSAgKHZvaWQgKiAgX19wdHIpICA7CgoKCiMgMSAiL3Vzci9p bmNsdWRlL2FsbG9jYS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL2x1c3Iv Z251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5o IiAxIDMKCgoKCgoKIAoKCiMgMTkgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4 LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv bHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3Rk ZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2 ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUv c3RkZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9p Njg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAK CgojIDI2OSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9p bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL2x1c3IvZ251 L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAz CgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojIDI1ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgi IDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKCgoKIApleHRlcm4gdm9pZCAqICBfX2FsbG9jYSAgKHNp emVfdCBfX3NpemUpICA7CmV4dGVybiB2b2lkICogIGFsbG9jYSAgKHNpemVfdCBfX3NpemUpICA7 CgoKCgoKCn0gCgoKIyAzNjAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgogCmV4dGVy biB2b2lkICogIHZhbGxvYyAgKHNpemVfdCBfX3NpemUpICA7CgoKCiAKZXh0ZXJuIHZvaWQgYWJv cnQgICh2b2lkKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogCmV4dGVybiBp bnQgYXRleGl0ICAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSAgOwoKCiAKCmV4dGVybiBpbnQgX19v bl9leGl0ICAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqICBfX2FyZyksCgkJ CSAgIHZvaWQgKiAgX19hcmcpICA7CmV4dGVybiBpbnQgb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMp IChpbnQgX19zdGF0dXMsIHZvaWQgKiAgX19hcmcpLAoJCQkgdm9pZCAqICBfX2FyZykgIDsKCgog CgoKZXh0ZXJuIHZvaWQgZXhpdCAgKGludCBfX3N0YXR1cykgICBfX2F0dHJpYnV0ZV9fICgoX19u b3JldHVybl9fKSk7CgoKIApleHRlcm4gY2hhciAqZ2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25h bWUpICA7CgogCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52ICAoX19jb25zdCBjaGFyICpf X25hbWUpICA7CgoKIAogCgpleHRlcm4gaW50IHB1dGVudiAgKF9fY29uc3QgY2hhciAqX19zdHJp bmcpICA7CgoKCiAKCmV4dGVybiBpbnQgc2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUsIF9f Y29uc3QgY2hhciAqX192YWx1ZSwKCQkJaW50IF9fcmVwbGFjZSkgIDsKCiAKZXh0ZXJuIHZvaWQg dW5zZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIDsKCgoKIAoKCmV4dGVybiBpbnQgX19j bGVhcmVudiAgKHZvaWQpICA7CmV4dGVybiBpbnQgY2xlYXJlbnYgICh2b2lkKSAgOwoKCgoKIAoK CgpleHRlcm4gY2hhciAqbWt0ZW1wICAoY2hhciAqX190ZW1wbGF0ZSkgIDsKCiAKCgoKCmV4dGVy biBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxhdGUpICA7CgoKCiAKZXh0ZXJuIGludCBzeXN0 ZW0gIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgIDsKCgoKCgoKCgoKCiAKCgoKCgpleHRlcm4g Y2hhciAqcmVhbHBhdGggIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgY2hhciAqX19yZXNvbHZlZCkg IDsKCgoKIAoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgIChfX2NvbnN0IHZvaWQgKiAs IF9fY29uc3Qgdm9pZCAqICkgIDsKCgoKCgoKIAoKZXh0ZXJuIHZvaWQgKiAgYnNlYXJjaCAgKF9f Y29uc3Qgdm9pZCAqICBfX2tleSwgX19jb25zdCB2b2lkICogIF9fYmFzZSwKCQkJICAgICBzaXpl X3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKCQkJICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFy KSAgOwoKIAoKZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6ZV90IF9fbm1l bWIsIHNpemVfdCBfX3NpemUsCgkJCV9fY29tcGFyX2ZuX3QgX19jb21wYXIpICA7CgoKIApleHRl cm4gaW50IGFicyAgKGludCBfX3gpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRl cm4gbG9uZyBpbnQgbGFicyAgKGxvbmcgaW50IF9feCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7CgoKCgoKIAoKIApleHRlcm4gZGl2X3QgZGl2ICAoaW50IF9fbnVtZXIsIGludCBfX2Rl bm9tKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBsZGl2ICAo bG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkgICBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7CgoKCgoKCiAKCgogCgoKZXh0ZXJuIGNoYXIgKmVjdnQgIChkb3VibGUgX192YWx1 ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fZGVjcHQsCgkJCWludCAqX19zaWduKSAgOwoKIAoKCmV4 dGVybiBjaGFyICpmY3Z0ICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX2Rl Y3B0LAoJCQlpbnQgKl9fc2lnbikgIDsKCiAKCgpleHRlcm4gY2hhciAqZ2N2dCAgKGRvdWJsZSBf X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgOwoKIApleHRlcm4gY2hhciAqcWVj dnQgIChsb25nIGRvdWJsZSAgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fZGVjcHQsCgkJ CSBpbnQgKl9fc2lnbikgIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFs dWUsIGludCBfX25kaWdpdCwgaW50ICpfX2RlY3B0LAoJCQkgaW50ICpfX3NpZ24pICA7CmV4dGVy biBjaGFyICpxZ2N2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIg Kl9fYnVmKSAgOwoKCgogCgpleHRlcm4gaW50IGVjdnRfciAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQg X19uZGlnaXQsIGludCAqX19kZWNwdCwKCQkJaW50ICpfX3NpZ24sIGNoYXIgKl9fYnVmLCBzaXpl X3QgX19sZW4pICA7CmV4dGVybiBpbnQgZmN2dF9yICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k aWdpdCwgaW50ICpfX2RlY3B0LAoJCQlpbnQgKl9fc2lnbiwgY2hhciAqX19idWYsIHNpemVfdCBf X2xlbikgIDsKCmV4dGVybiBpbnQgcWVjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQg X19uZGlnaXQsIGludCAqX19kZWNwdCwKCQkJIGludCAqX19zaWduLCBjaGFyICpfX2J1Ziwgc2l6 ZV90IF9fbGVuKSAgOwpleHRlcm4gaW50IHFmY3Z0X3IgIChsb25nIGRvdWJsZSAgX192YWx1ZSwg aW50IF9fbmRpZ2l0LCBpbnQgKl9fZGVjcHQsCgkJCSBpbnQgKl9fc2lnbiwgY2hhciAqX19idWYs IHNpemVfdCBfX2xlbikgIDsKCgoKCiAKCmV4dGVybiBpbnQgbWJsZW4gIChfX2NvbnN0IGNoYXIg Kl9fcywgc2l6ZV90IF9fbikgIDsKIAoKZXh0ZXJuIGludCBtYnRvd2MgICh3Y2hhcl90ICpfX3B3 YywgX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pICA7CiAKCmV4dGVybiBpbnQgd2N0b21i ICAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpICA7CgoKIApleHRlcm4gc2l6ZV90IG1ic3Rv d2NzICAod2NoYXJfdCAqX19wd2NzLCBfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgIDsK IApleHRlcm4gc2l6ZV90IHdjc3RvbWJzICAoY2hhciAqX19zLCBfX2NvbnN0IHdjaGFyX3QgKl9f cHdjcywgc2l6ZV90IF9fbikgIDsKCgoKIAoKCgpleHRlcm4gaW50IHJwbWF0Y2ggIChfX2NvbnN0 IGNoYXIgKl9fcmVzcG9uc2UpICA7CgoKCiMgNTgyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK CgoKCgoKCgoKCn0gCgoKIyA1MCAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt Z251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAyIDMK CiMgMSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNs dWRlL3N0ZGRlZi5oIiAxIDMKIyAzNDIgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp bnV4LWdudS8yLjk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoKIyA1MSAiL2x1c3IvZ251L2xpYi9n Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z L3N0bF9hbGdvYmFzZS5oIiAyIDMKCgoKCgoKCgogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zvcndh cmRJdGVyMSwgY2xhc3MgX0ZvcndhcmRJdGVyMiwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZCBfX2l0 ZXJfc3dhcChfRm9yd2FyZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVyMiBfX2IsIF9UcCopIHsKICBf VHAgX190bXAgPSAqX19hOwogICpfX2EgPSAqX19iOwogICpfX2IgPSBfX3RtcDsKfQoKdGVtcGxh dGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJkSXRlcjI+CmlubGluZSB2b2lk IGl0ZXJfc3dhcChfRm9yd2FyZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVyMiBfX2IpIHsKICBfX2l0 ZXJfc3dhcChfX2EsIF9fYiwgX192YWx1ZV90eXBlKCBfX2EgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xh c3MgX1RwPgppbmxpbmUgdm9pZCBzd2FwKF9UcCYgX19hLCBfVHAmIF9fYikgewogIF9UcCBfX3Rt cCA9IF9fYTsKICBfX2EgPSBfX2I7CiAgX19iID0gX190bXA7Cn0KCiAKIAoKCgoKCgp0ZW1wbGF0 ZSA8Y2xhc3MgX1RwPgppbmxpbmUgY29uc3QgX1RwJiBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0 IF9UcCYgX19iKSB7CiAgcmV0dXJuIF9fYiA8IF9fYSA/IF9fYiA6IF9fYTsKfQoKdGVtcGxhdGUg PGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0IF9UcCYgbWF4KGNvbnN0IF9UcCYgX19hLCBjb25zdCBf VHAmIF9fYikgewogIHJldHVybiAgX19hIDwgX19iID8gX19iIDogX19hOwp9CgoKCnRlbXBsYXRl IDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgY29uc3QgX1RwJiBtaW4oY29uc3Qg X1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBfQ29tcGFyZSBfX2NvbXApIHsKICByZXR1cm4gX19j b21wKF9fYiwgX19hKSA/IF9fYiA6IF9fYTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg X0NvbXBhcmU+CmlubGluZSBjb25zdCBfVHAmIG1heChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1Rw JiBfX2IsIF9Db21wYXJlIF9fY29tcCkgewogIHJldHVybiBfX2NvbXAoX19hLCBfX2IpID8gX19i IDogX19hOwp9CgogCiAKCiAKIAogCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVy LCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgX091dHB1dEl0ZXIg X19jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnLCBfRGlzdGFuY2UqKQp7CiAgZm9yICggOyBfX2ZpcnN0 ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0KQogICAgKl9fcmVzdWx0ID0gKl9fZmly c3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0 ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBfT3V0cHV0SXRl cgpfX2NvcHkoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19s YXN0LAogICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3Jf dGFnLCBfRGlzdGFuY2UqKQp7CiAgZm9yIChfRGlzdGFuY2UgX19uID0gX19sYXN0IC0gX19maXJz dDsgX19uID4gMDsgLS1fX24pIHsKICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgKytfX2Zp cnN0OwogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8 Y2xhc3MgX1RwPgppbmxpbmUgX1RwKgpfX2NvcHlfdHJpdmlhbChjb25zdCBfVHAqIF9fZmlyc3Qs IGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgbWVtbW92ZShfX3Jlc3VsdCwg X19maXJzdCwgc2l6ZW9mKF9UcCkgKiAoX19sYXN0IC0gX19maXJzdCkpOwogIHJldHVybiBfX3Jl c3VsdCArIChfX2xhc3QgLSBfX2ZpcnN0KTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl ciwgY2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9Cb29sVHlwZT4Kc3RydWN0IF9fY29weV9kaXNw YXRjaCB7CiAgc3RhdGljIF9PdXRwdXRJdGVyIGNvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5w dXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jl c3VsdCkgewogICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcj46 Oml0ZXJhdG9yX2NhdGVnb3J5IF9DYXRlZ29yeTsKICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0 b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlOwogICAgcmV0 dXJuIF9fY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfQ2F0ZWdvcnkoKSwgKF9EaXN0 YW5jZSopIDApOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX2NvcHlfZGlz cGF0Y2g8X1RwKiwgX1RwKiwgX190cnVlX3R5cGU+CnsKICBzdGF0aWMgX1RwKiBjb3B5KGNvbnN0 IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19yZXN1bHQpIHsKICAgIHJl dHVybiBfX2NvcHlfdHJpdmlhbChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKICB9Cn07Cgp0 ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX19jb3B5X2Rpc3BhdGNoPGNvbnN0IF9UcCosIF9U cCosIF9fdHJ1ZV90eXBlPgp7CiAgc3RhdGljIF9UcCogY29weShjb25zdCBfVHAqIF9fZmlyc3Qs IGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgICByZXR1cm4gX19jb3B5X3Ry aXZpYWwoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNz IF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyPgppbmxpbmUgX091dHB1dEl0ZXIgY29weShf SW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAg ICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCkgewogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf dHJhaXRzPF9JbnB1dEl0ZXI+Ojp2YWx1ZV90eXBlIF9UcDsKICB0eXBlZGVmIHR5cGVuYW1lIF9f dHlwZV90cmFpdHM8X1RwPjo6aGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcgogICAgICAg ICAgX1RyaXZpYWw7CiAgcmV0dXJuIF9fY29weV9kaXNwYXRjaDxfSW5wdXRJdGVyLCBfT3V0cHV0 SXRlciwgX1RyaXZpYWw+CiAgICA6OmNvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7Cn0K CiMgMjEzICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4u Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDMKCgogCiAKCnRlbXBsYXRl IDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIyLCAK ICAgICAgICAgIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19j b3B5X2JhY2t3YXJkKF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJzdCwgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fbGFzdCwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25h bEl0ZXIyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfRGlzdGFuY2UqKQp7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0 KQogICAgKi0tX19yZXN1bHQgPSAqLS1fX2xhc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1w bGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwg Y2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgX0JpZGlyZWN0aW9uYWxJdGVyIF9fY29weV9iYWNrd2Fy ZChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fcmVzdWx0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0 ZXJhdG9yX3RhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rp c3RhbmNlKikKewogIGZvciAoX0Rpc3RhbmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+ IDA7IC0tX19uKQogICAgKi0tX19yZXN1bHQgPSAqLS1fX2xhc3Q7CiAgcmV0dXJuIF9fcmVzdWx0 Owp9CgoKCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBjbGFz cyBfQmlkaXJlY3Rpb25hbEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0Jvb2xUeXBlPgpzdHJ1Y3Qg X19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoCnsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry YWl0czxfQmlkaXJlY3Rpb25hbEl0ZXIxPjo6aXRlcmF0b3JfY2F0ZWdvcnkgCiAgICAgICAgICBf Q2F0OwogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CaWRpcmVjdGlvbmFsSXRl cjE+OjpkaWZmZXJlbmNlX3R5cGUKICAgICAgICAgIF9EaXN0YW5jZTsKCiAgc3RhdGljIF9CaWRp cmVjdGlvbmFsSXRlcjIgY29weShfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QsIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX3Jl c3VsdCkgewogICAgcmV0dXJuIF9fY29weV9iYWNrd2FyZChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVz dWx0LCBfQ2F0KCksIChfRGlzdGFuY2UqKSAwKTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Rw PgpzdHJ1Y3QgX19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoPF9UcCosIF9UcCosIF9fdHJ1ZV90eXBl Pgp7CiAgc3RhdGljIF9UcCogY29weShjb25zdCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19s YXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgICBjb25zdCBwdHJkaWZmX3QgX051bSA9IF9fbGFzdCAt IF9fZmlyc3Q7CiAgICBtZW1tb3ZlKF9fcmVzdWx0IC0gX051bSwgX19maXJzdCwgc2l6ZW9mKF9U cCkgKiBfTnVtKTsKICAgIHJldHVybiBfX3Jlc3VsdCAtIF9OdW07CiAgfQp9OwoKdGVtcGxhdGUg PGNsYXNzIF9UcD4Kc3RydWN0IF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaDxjb25zdCBfVHAqLCBf VHAqLCBfX3RydWVfdHlwZT4KewogIHN0YXRpYyBfVHAqIGNvcHkoY29uc3QgX1RwKiBfX2ZpcnN0 LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBfX3Jlc3VsdCkgewogICAgcmV0dXJuICBfX2NvcHlf YmFja3dhcmRfZGlzcGF0Y2g8X1RwKiwgX1RwKiwgX190cnVlX3R5cGU+CiAgICAgIDo6Y29weShf X2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JJMSwg Y2xhc3MgX0JJMj4KaW5saW5lIF9CSTIgY29weV9iYWNrd2FyZChfQkkxIF9fZmlyc3QsIF9CSTEg X19sYXN0LCBfQkkyIF9fcmVzdWx0KSB7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRz PHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQkkyPjo6dmFsdWVfdHlwZT4KICAgICAgICAgICAg ICAgICAgICAgICAgOjpoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yCiAgICAgICAgICBf VHJpdmlhbDsKICByZXR1cm4gX19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoPF9CSTEsIF9CSTIsIF9U cml2aWFsPgogICAgICAgICAgICAgIDo6Y29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsK fQoKIyAzMDMgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEv Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMwoKCiAKIAoKdGVtcGxh dGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfT3V0cHV0SXRlcj4KcGFp cjxfSW5wdXRJdGVyLCBfT3V0cHV0SXRlcj4gX19jb3B5X24oX0lucHV0SXRlciBfX2ZpcnN0LCBf U2l6ZSBfX2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0 cHV0SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5wdXRfaXRlcmF0b3JfdGFnKSB7CiAgZm9yICggOyBfX2NvdW50ID4gMDsgLS1fX2NvdW50KSB7 CiAgICAqX19yZXN1bHQgPSAqX19maXJzdDsKICAgICsrX19maXJzdDsKICAgICsrX19yZXN1bHQ7 CiAgfQogIHJldHVybiBwYWlyPF9JbnB1dEl0ZXIsIF9PdXRwdXRJdGVyPihfX2ZpcnN0LCBfX3Jl c3VsdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUkFJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX091 dHB1dEl0ZXI+CmlubGluZSBwYWlyPF9SQUl0ZXIsIF9PdXRwdXRJdGVyPgpfX2NvcHlfbihfUkFJ dGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsCiAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0 LAogICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykgewogIF9SQUl0ZXIgX19sYXN0 ID0gX19maXJzdCArIF9fY291bnQ7CiAgcmV0dXJuIHBhaXI8X1JBSXRlciwgX091dHB1dEl0ZXI+ KF9fbGFzdCwgY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KSk7Cn0KCnRlbXBsYXRlIDxj bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGluZSBw YWlyPF9JbnB1dEl0ZXIsIF9PdXRwdXRJdGVyPgpfX2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3Qs IF9TaXplIF9fY291bnQsIF9PdXRwdXRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0dXJuIF9fY29weV9u KF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9y X2NhdGVnb3J5KCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNs YXNzIF9TaXplLCBjbGFzcyBfT3V0cHV0SXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRlciwgX091 dHB1dEl0ZXI+CmNvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsIF9PdXRw dXRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0dXJuIF9fY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9f cmVzdWx0KTsKfQoKIAogCgoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1Rw Pgp2b2lkIGZpbGwoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNv bnN0IF9UcCYgX192YWx1ZSkgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJz dCkKICAgICpfX2ZpcnN0ID0gX192YWx1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9PdXRwdXRJdGVy LCBjbGFzcyBfU2l6ZSwgY2xhc3MgX1RwPgpfT3V0cHV0SXRlciBmaWxsX24oX091dHB1dEl0ZXIg X19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAmIF9fdmFsdWUpIHsKICBmb3IgKCA7IF9fbiA+ IDA7IC0tX19uLCArK19fZmlyc3QpCiAgICAqX19maXJzdCA9IF9fdmFsdWU7CiAgcmV0dXJuIF9f Zmlyc3Q7Cn0KCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJ dGVyMj4KcGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRlcjI+IG1pc21hdGNoKF9JbnB1dEl0ZXIx IF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0 SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9J bnB1dEl0ZXIyIF9fZmlyc3QyKSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgKl9f Zmlyc3QxID09ICpfX2ZpcnN0MikgewogICAgKytfX2ZpcnN0MTsKICAgICsrX19maXJzdDI7CiAg fQogIHJldHVybiBwYWlyPF9JbnB1dEl0ZXIxLCBfSW5wdXRJdGVyMj4oX19maXJzdDEsIF9fZmly c3QyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwg Y2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KcGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRlcjI+IG1p c21hdGNoKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKSB7CiAg d2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19iaW5hcnlfcHJlZCgqX19maXJzdDEsICpf X2ZpcnN0MikpIHsKICAgICsrX19maXJzdDE7CiAgICArK19fZmlyc3QyOwogIH0KICByZXR1cm4g cGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRlcjI+KF9fZmlyc3QxLCBfX2ZpcnN0Mik7Cn0KCnRl bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjI+CmlubGluZSBib29s IGVxdWFsKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAg ICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MikgewogIGZvciAoIDsgX19maXJzdDEgIT0g X19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKICAgIGlmICgqX19maXJzdDEgIT0gKl9f Zmlyc3QyKQogICAgICByZXR1cm4gZmFsc2U7CiAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxj bGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9CaW5hcnlQcmVkaWNh dGU+CmlubGluZSBib29sIGVxdWFsKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBf X2xhc3QxLAogICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0JpbmFyeVBy ZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKSB7CiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyAr K19fZmlyc3QxLCArK19fZmlyc3QyKQogICAgaWYgKCFfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0MSwg Kl9fZmlyc3QyKSkKICAgICAgcmV0dXJuIGZhbHNlOwogIHJldHVybiB0cnVlOwp9CgogCiAKIAoK dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KYm9vbCBsZXhp Y29ncmFwaGljYWxfY29tcGFyZShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19s YXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0Miwg X0lucHV0SXRlcjIgX19sYXN0MikgewogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MSAmJiBf X2ZpcnN0MiAhPSBfX2xhc3QyCiAgICAgICAgOyArK19fZmlyc3QxLCArK19fZmlyc3QyKSB7CiAg ICBpZiAoKl9fZmlyc3QxIDwgKl9fZmlyc3QyKQogICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmICgq X19maXJzdDIgPCAqX19maXJzdDEpCiAgICAgIHJldHVybiBmYWxzZTsKICB9CiAgcmV0dXJuIF9f Zmlyc3QxID09IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MjsKfQoKdGVtcGxhdGUgPGNs YXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX0NvbXBhcmU+CmJvb2wg bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIx IF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJz dDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Nv bXBhcmUgX19jb21wKSB7CiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3Qy ICE9IF9fbGFzdDIKICAgICAgICA7ICsrX19maXJzdDEsICsrX19maXJzdDIpIHsKICAgIGlmIChf X2NvbXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmIChf X2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAgICByZXR1cm4gZmFsc2U7CiAgfQogIHJl dHVybiBfX2ZpcnN0MSA9PSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDI7Cn0KCmlubGlu ZSBib29sIApsZXhpY29ncmFwaGljYWxfY29tcGFyZShjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2Zp cnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0 MSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19maXJzdDIs CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDIpCnsK ICBjb25zdCBzaXplX3QgX19sZW4xID0gX19sYXN0MSAtIF9fZmlyc3QxOwogIGNvbnN0IHNpemVf dCBfX2xlbjIgPSBfX2xhc3QyIC0gX19maXJzdDI7CiAgY29uc3QgaW50IF9fcmVzdWx0ID0gbWVt Y21wKF9fZmlyc3QxLCBfX2ZpcnN0MiwgbWluKF9fbGVuMSwgX19sZW4yKSk7CiAgcmV0dXJuIF9f cmVzdWx0ICE9IDAgPyBfX3Jlc3VsdCA8IDAgOiBfX2xlbjEgPCBfX2xlbjI7Cn0KCmlubGluZSBi b29sIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKGNvbnN0IGNoYXIqIF9fZmlyc3QxLCBjb25zdCBj aGFyKiBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyKiBfX2ZpcnN0MiwgY29uc3QgY2hhciogX19sYXN0MikKewoKICByZXR1cm4gbGV4aWNvZ3Jh cGhpY2FsX2NvbXBhcmUoKGNvbnN0IHNpZ25lZCBjaGFyKikgX19maXJzdDEsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fbGFzdDEsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fZmlyc3Qy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBf X2xhc3QyKTsKCgoKCgoKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5w dXRJdGVyMj4KaW50IF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheShfSW5wdXRJdGVyMSBf X2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MikKewogIHdo aWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsKICAgIGlm ICgqX19maXJzdDEgPCAqX19maXJzdDIpCiAgICAgIHJldHVybiAtMTsKICAgIGlmICgqX19maXJz dDIgPCAqX19maXJzdDEpCiAgICAgIHJldHVybiAxOwogICAgKytfX2ZpcnN0MTsKICAgICsrX19m aXJzdDI7CiAgfQogIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKSB7CiAgICByZXR1cm4gIShfX2Zp cnN0MSA9PSBfX2xhc3QxKTsKICB9CiAgZWxzZSB7CiAgICByZXR1cm4gLTE7CiAgfQp9Cgppbmxp bmUgaW50Cl9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheShjb25zdCB1bnNpZ25lZCBjaGFy KiBfX2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIqIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp Z25lZCBjaGFyKiBfX2ZpcnN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDIpCnsKICBjb25zdCBwdHJkaWZmX3QgX19sZW4xID0gX19s YXN0MSAtIF9fZmlyc3QxOwogIGNvbnN0IHB0cmRpZmZfdCBfX2xlbjIgPSBfX2xhc3QyIC0gX19m aXJzdDI7CiAgY29uc3QgaW50IF9fcmVzdWx0ID0gbWVtY21wKF9fZmlyc3QxLCBfX2ZpcnN0Miwg bWluKF9fbGVuMSwgX19sZW4yKSk7CiAgcmV0dXJuIF9fcmVzdWx0ICE9IDAgPyBfX3Jlc3VsdCAK ICAgICAgICAgICAgICAgICAgICAgICA6IChfX2xlbjEgPT0gX19sZW4yID8gMCA6IChfX2xlbjEg PCBfX2xlbjIgPyAtMSA6IDEpKTsKfQoKaW5saW5lIGludCAKX19sZXhpY29ncmFwaGljYWxfY29t cGFyZV8zd2F5KGNvbnN0IGNoYXIqIF9fZmlyc3QxLCBjb25zdCBjaGFyKiBfX2xhc3QxLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogX19maXJzdDIsIGNvbnN0IGNo YXIqIF9fbGFzdDIpCnsKCiAgcmV0dXJuIF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheSgK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2Zp cnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIq KSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQg Y2hhciopIF9fZmlyc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBz aWduZWQgY2hhciopIF9fbGFzdDIpOwoKCgoKCgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl cjEsIGNsYXNzIF9JbnB1dEl0ZXIyPgppbnQgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheShf SW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFz dDIpCnsKICByZXR1cm4gX19sZXhpY29ncmFwaGljYWxfY29tcGFyZV8zd2F5KF9fZmlyc3QxLCBf X2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0Mik7Cn0KCiAKCgoKIAogCiAKIyAzNiAiL2x1c3IvZ251 L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRl L2crKy0zL2FsZ29iYXNlLmgiIDIgMwoKCgojIDEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2 LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfdW5pbml0 aWFsaXplZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgogCgog CiAKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5l IF9Gb3J3YXJkSXRlciAKX191bmluaXRpYWxpemVkX2NvcHlfYXV4KF9JbnB1dEl0ZXIgX19maXJz dCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0 ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3RydWVfdHlwZSkKewogIHJl dHVybiBjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg X0lucHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJdGVyPgpfRm9yd2FyZEl0ZXIgCl9fdW5pbml0aWFs aXplZF9jb3B5X2F1eChfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAg ICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAg ICAgICAgICAgICAgX19mYWxzZV90eXBlKQp7CiAgX0ZvcndhcmRJdGVyIF9fY3VyID0gX19yZXN1 bHQ7CiAgdHJ5ICB7CiAgICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QsICsr X19jdXIpCiAgICAgIGNvbnN0cnVjdCgmKl9fY3VyLCAqX19maXJzdCk7CiAgICByZXR1cm4gX19j dXI7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX3Jlc3VsdCwgX19jdXIpIDsgdGhyb3c7 IH0gOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlciwg Y2xhc3MgX1RwPgppbmxpbmUgX0ZvcndhcmRJdGVyCl9fdW5pbml0aWFsaXplZF9jb3B5KF9JbnB1 dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIF9G b3J3YXJkSXRlciBfX3Jlc3VsdCwgX1RwKikKewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3Ry YWl0czxfVHA+Ojppc19QT0RfdHlwZSBfSXNfUE9EOwogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRf Y29weV9hdXgoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX0lzX1BPRCgpKTsKfQoKdGVtcGxh dGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIF9Gb3J3YXJk SXRlcgogIHVuaW5pdGlhbGl6ZWRfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIg X19sYXN0LAogICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQpCnsKICBy ZXR1cm4gX191bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBlKCBfX3Jlc3VsdCApICk7Cn0K CmlubGluZSBjaGFyKiB1bmluaXRpYWxpemVkX2NvcHkoY29uc3QgY2hhciogX19maXJzdCwgY29u c3QgY2hhciogX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIF9f cmVzdWx0KSB7CiAgbWVtbW92ZShfX3Jlc3VsdCwgX19maXJzdCwgX19sYXN0IC0gX19maXJzdCk7 CiAgcmV0dXJuIF9fcmVzdWx0ICsgKF9fbGFzdCAtIF9fZmlyc3QpOwp9CgppbmxpbmUgd2NoYXJf dCogCnVuaW5pdGlhbGl6ZWRfY29weShjb25zdCB3Y2hhcl90KiBfX2ZpcnN0LCBjb25zdCB3Y2hh cl90KiBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICB3Y2hhcl90KiBfX3Jlc3VsdCkKewogIG1l bW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIHNpemVvZih3Y2hhcl90KSAqIChfX2xhc3QgLSBfX2Zp cnN0KSk7CiAgcmV0dXJuIF9fcmVzdWx0ICsgKF9fbGFzdCAtIF9fZmlyc3QpOwp9CgogCgp0ZW1w bGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9Gb3J3YXJkSXRlcj4K cGFpcjxfSW5wdXRJdGVyLCBfRm9yd2FyZEl0ZXI+Cl9fdW5pbml0aWFsaXplZF9jb3B5X24oX0lu cHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgIF9G b3J3YXJkSXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRv cl90YWcpCnsKICBfRm9yd2FyZEl0ZXIgX19jdXIgPSBfX3Jlc3VsdDsKICB0cnkgIHsKICAgIGZv ciAoIDsgX19jb3VudCA+IDAgOyAtLV9fY291bnQsICsrX19maXJzdCwgKytfX2N1cikgCiAgICAg IGNvbnN0cnVjdCgmKl9fY3VyLCAqX19maXJzdCk7CiAgICByZXR1cm4gcGFpcjxfSW5wdXRJdGVy LCBfRm9yd2FyZEl0ZXI+KF9fZmlyc3QsIF9fY3VyKTsKICB9CiAgY2F0Y2goLi4uKSB7ICBkZXN0 cm95KF9fcmVzdWx0LCBfX2N1cikgOyB0aHJvdzsgfSA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFu ZG9tQWNjZXNzSXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIHBh aXI8X1JhbmRvbUFjY2Vzc0l0ZXIsIF9Gb3J3YXJkSXRlcj4KX191bmluaXRpYWxpemVkX2NvcHlf bihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfU2l6ZSBfX2NvdW50LAogICAgICAgICAgICAg ICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICBy YW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykgewogIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCA9 IF9fZmlyc3QgKyBfX2NvdW50OwogIHJldHVybiBwYWlyPF9SYW5kb21BY2Nlc3NJdGVyLCBfRm9y d2FyZEl0ZXI+KAogICAgICAgICAgICAgICAgIF9fbGFzdCwKICAgICAgICAgICAgICAgICB1bmlu aXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCkpOwp9Cgp0ZW1wbGF0ZSA8 Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5l IHBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPgpfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9J bnB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAgICAgICAgICAgICAgX0Zv cndhcmRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0dXJuIF9fdW5pbml0aWFsaXplZF9jb3B5X24oX19m aXJzdCwgX19jb3VudCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg X19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5w dXRJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX0ZvcndhcmRJdGVyPgppbmxpbmUgcGFpcjxfSW5w dXRJdGVyLCBfRm9yd2FyZEl0ZXI+CnVuaW5pdGlhbGl6ZWRfY29weV9uKF9JbnB1dEl0ZXIgX19m aXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9f cmVzdWx0KSB7CiAgcmV0dXJuIF9fdW5pbml0aWFsaXplZF9jb3B5X24oX19maXJzdCwgX19jb3Vu dCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9j YXRlZ29yeSggX19maXJzdCApICk7Cn0KCiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVy LCBjbGFzcyBfVHA+CmlubGluZSB2b2lkCl9fdW5pbml0aWFsaXplZF9maWxsX2F1eChfRm9yd2Fy ZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBfVHAmIF9feCwgX190cnVlX3R5cGUpCnsKICBmaWxsKF9fZmlyc3QsIF9fbGFz dCwgX194KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgp2b2lk Cl9fdW5pbml0aWFsaXplZF9maWxsX2F1eChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJ dGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwgX19m YWxzZV90eXBlKQp7CiAgX0ZvcndhcmRJdGVyIF9fY3VyID0gX19maXJzdDsKICB0cnkgIHsKICAg IGZvciAoIDsgX19jdXIgIT0gX19sYXN0OyArK19fY3VyKQogICAgICBjb25zdHJ1Y3QoJipfX2N1 ciwgX194KTsKICB9CiAgY2F0Y2goLi4uKSB7ICBkZXN0cm95KF9fZmlyc3QsIF9fY3VyKSA7IHRo cm93OyB9IDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFz cyBfVHAxPgppbmxpbmUgdm9pZCBfX3VuaW5pdGlhbGl6ZWRfZmlsbChfRm9yd2FyZEl0ZXIgX19m aXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xh c3QsIGNvbnN0IF9UcCYgX194LCBfVHAxKikKewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3Ry YWl0czxfVHAxPjo6aXNfUE9EX3R5cGUgX0lzX1BPRDsKICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9h dXgoX19maXJzdCwgX19sYXN0LCBfX3gsIF9Jc19QT0QoKSk7CiAgICAgICAgICAgICAgICAgICAK fQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZCB1 bmluaXRpYWxpemVkX2ZpbGwoX0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IF9UcCYgX194KQp7CiAgX191bmluaXRpYWxpemVkX2ZpbGwoX19maXJz dCwgX19sYXN0LCBfX3gsIF9fdmFsdWVfdHlwZSggX19maXJzdCApICk7Cn0KCiAKIAp0ZW1wbGF0 ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX1RwPgppbmxpbmUgX0Zv cndhcmRJdGVyCl9fdW5pbml0aWFsaXplZF9maWxsX25fYXV4KF9Gb3J3YXJkSXRlciBfX2ZpcnN0 LCBfU2l6ZSBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX194LCBf X3RydWVfdHlwZSkKewogIHJldHVybiBmaWxsX24oX19maXJzdCwgX19uLCBfX3gpOwp9Cgp0ZW1w bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX1RwPgpfRm9yd2Fy ZEl0ZXIKX191bmluaXRpYWxpemVkX2ZpbGxfbl9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9T aXplIF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gsIF9fZmFs c2VfdHlwZSkKewogIF9Gb3J3YXJkSXRlciBfX2N1ciA9IF9fZmlyc3Q7CiAgdHJ5ICB7CiAgICBm b3IgKCA7IF9fbiA+IDA7IC0tX19uLCArK19fY3VyKQogICAgICBjb25zdHJ1Y3QoJipfX2N1ciwg X194KTsKICAgIHJldHVybiBfX2N1cjsKICB9CiAgY2F0Y2goLi4uKSB7ICBkZXN0cm95KF9fZmly c3QsIF9fY3VyKSA7IHRocm93OyB9IDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwg Y2xhc3MgX1NpemUsIGNsYXNzIF9UcCwgY2xhc3MgX1RwMT4KaW5saW5lIF9Gb3J3YXJkSXRlciAK X191bmluaXRpYWxpemVkX2ZpbGxfbihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLCBj b25zdCBfVHAmIF9feCwgX1RwMSopCnsKICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8 X1RwMT46OmlzX1BPRF90eXBlIF9Jc19QT0Q7CiAgcmV0dXJuIF9fdW5pbml0aWFsaXplZF9maWxs X25fYXV4KF9fZmlyc3QsIF9fbiwgX194LCBfSXNfUE9EKCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg X0ZvcndhcmRJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX1RwPgppbmxpbmUgX0ZvcndhcmRJdGVy IAp1bmluaXRpYWxpemVkX2ZpbGxfbihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLCBj b25zdCBfVHAmIF9feCkKewogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uKF9fZmlyc3Qs IF9fbiwgX194LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9CgogCiAKCiAKIAogCiAKCnRl bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9Gb3J3 YXJkSXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRlcgpfX3VuaW5pdGlhbGl6ZWRfY29weV9jb3B5KF9J bnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAg ICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAg ICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCkKewogIF9Gb3J3YXJk SXRlciBfX21pZCA9IHVuaW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1 bHQpOwogIHRyeSAgewogICAgcmV0dXJuIHVuaW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0MiwgX19s YXN0MiwgX19taWQpOwogIH0KICBjYXRjaCguLi4pIHsgIGRlc3Ryb3koX19yZXN1bHQsIF9fbWlk KSA7IHRocm93OyB9IDsKfQoKIAogCiAKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xh c3MgX1RwLCBjbGFzcyBfSW5wdXRJdGVyPgppbmxpbmUgX0ZvcndhcmRJdGVyIApfX3VuaW5pdGlh bGl6ZWRfZmlsbF9jb3B5KF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCwgX0ZvcndhcmRJdGVyIF9fbWlk LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX194LAogICAgICAgICAgICAg ICAgICAgICAgICAgIF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QpCnsKICB1 bmluaXRpYWxpemVkX2ZpbGwoX19yZXN1bHQsIF9fbWlkLCBfX3gpOwogIHRyeSAgewogICAgcmV0 dXJuIHVuaW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fbWlkKTsKICB9CiAgY2F0 Y2goLi4uKSB7ICBkZXN0cm95KF9fcmVzdWx0LCBfX21pZCkgOyB0aHJvdzsgfSA7Cn0KCiAKIAog CnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9U cD4KaW5saW5lIHZvaWQKX191bmluaXRpYWxpemVkX2NvcHlfZmlsbChfSW5wdXRJdGVyIF9fZmly c3QxLCBfSW5wdXRJdGVyIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0Zvcndh cmRJdGVyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBfVHAmIF9feCkKewogIF9Gb3J3YXJkSXRlciBfX21pZDIgPSB1bmluaXRp YWxpemVkX2NvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyKTsKICB0cnkgIHsKICAgIHVu aW5pdGlhbGl6ZWRfZmlsbChfX21pZDIsIF9fbGFzdDIsIF9feCk7CiAgfQogIGNhdGNoKC4uLikg eyAgZGVzdHJveShfX2ZpcnN0MiwgX19taWQyKSA7IHRocm93OyB9IDsKfQoKIAoKCgogCiAKIAoj IDM5ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4u Ly4uLy4uL2luY2x1ZGUvZysrLTMvYWxnb2Jhc2UuaCIgMiAzCgoKCiMgNjUgIi9sdXNyL2dudS9s aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9n KystMy9hbGdvYmFzZS5oIiAzCgoKCgogCiAKIAojIDMwICIvbHVzci9nbnUvbGliL2djYy1saWIv aTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvdmVjdG9y LmgiIDIgMwoKIyAxICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45 NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxsb2MuaCIgMSAzCiAKCgoKCgoKCgoKCgoK CgoKCgoKCiMgMSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu MS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAxIDMKIAoKCgoKCgoKCgoK CgogCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKCgoKCgoKCgoKCgoKIyAxICIvbHVz ci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkZGVm LmgiIDEgMwojIDM0MiAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu OTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgojIDUzICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4 Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9j LmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzCiAKCgoKCgoKCgoKCgoK CgoKCgogCgoKCiMgMzIgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCgoKCiAKCgoKCiMgNTYg Ii91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCmV4dGVybiAiQyIgeyAKCiAKZXh0ZXJuIHZvaWQg X19hc3NlcnRfZmFpbCAgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24sCgkJCQlfX2NvbnN0IGNo YXIgKl9fZmlsZSwKCQkJCXVuc2lnbmVkIGludCBfX2xpbmUsCgkJCQlfX2NvbnN0IGNoYXIgKl9f ZnVuY3Rpb24pICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgogCmV4dGVy biB2b2lkIF9fYXNzZXJ0X3BlcnJvcl9mYWlsICAoaW50IF9fZXJybnVtLAoJCQkJICAgICAgIF9f Y29uc3QgY2hhciAqX19maWxlLAoJCQkJICAgICAgIHVuc2lnbmVkIGludCBfX2xpbmUsCgkJCQkg ICAgICAgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm9yZXR1cm5fXykpOwoKfSAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDU2ICIvbHVzci9n bnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1 ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDIgMwoKCgoKCgoKCgoKCgogICAgIAogICAgIAogICAgIAoj IDEgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDEgMwogCiAKIAogCiAKIAogCiAKIAogCiAKIAog CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK IAoKCgoKCiAKCgoKCgoKZXh0ZXJuICJDIiB7IAoKIAoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm9z LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9saW51eC9l cnJuby5oIiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgojIDQgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyIDMKCgojIDE0ICIv dXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMwoKCgojIDI0ICIvdXNyL2luY2x1ZGUvZXJybm9z LmgiIDIgMwoKCgogCmV4dGVybiBpbnQgZXJybm87CgogCmV4dGVybiBpbnQgKl9fZXJybm9fbG9j YXRpb24gICh2b2lkKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiMgNDQgIi91c3Iv aW5jbHVkZS9lcnJub3MuaCIgMwoKCgogCgoKCgoKCgoKCgoKCiMgMzYgIi91c3IvaW5jbHVkZS9l cnJuby5oIiAyIDMKCgoKCgogCgoKCgoKCgoKIyA2MyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMK CgoKfSAKCgojIDIwICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCiMgMSAiL2x1c3IvZ251 L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL2xpbWl0cy5oIiAx IDMKIAoKCiAKCiMgMTE0ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv Mi45NS4xL2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKCgoKCiMgMjEgIi91c3IvaW5jbHVkZS9wdGhy ZWFkLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgogCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoK CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA1NiAiL3Vzci9pbmNsdWRlL3RpbWUu aCIgMwoKCgojIDY4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgODAgIi91c3IvaW5jbHVk ZS90aW1lLmgiIDMKCgoKCiMgOTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgojIDEyNSAi L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDI4MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoK CgojIDI5ICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9z Y2hlZGJpdHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIApzdHJ1Y3Qg c2NoZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAgfTsKCiAKCgoKCgoKCgog CmV4dGVybiBpbnQgX19jbG9uZSAgKGludCAoKl9fZm4pICh2b2lkICpfX2FyZyksIHZvaWQgKl9f Y2hpbGRfc3RhY2ssCgkJCSBpbnQgX19mbGFncywgdm9pZCAqX19hcmcpICA7CgpleHRlcm4gaW50 IGNsb25lICAoaW50ICgqX19mbikgKHZvaWQgKl9fYXJnKSwgdm9pZCAqX19jaGlsZF9zdGFjaywK CQkgICAgICAgaW50IF9fZmxhZ3MsIHZvaWQgKl9fYXJnKSAgOwoKCgoKIyAzMiAiL3Vzci9pbmNs dWRlL3NjaGVkLmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKZXh0ZXJuIGludCBfX3NjaGVkX3Nl dHBhcmFtICAoX19waWRfdCBfX3BpZCwKCQkJCSAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0g Kl9fcGFyYW0pICA7CmV4dGVybiBpbnQgc2NoZWRfc2V0cGFyYW0gIChfX3BpZF90IF9fcGlkLAoJ CQkJX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICA7CgogCmV4dGVybiBpbnQg X19zY2hlZF9nZXRwYXJhbSAgKF9fcGlkX3QgX19waWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19w YXJhbSkgIDsKZXh0ZXJuIGludCBzY2hlZF9nZXRwYXJhbSAgKF9fcGlkX3QgX19waWQsIHN0cnVj dCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX3NldHNjaGVk dWxlciAgKF9fcGlkX3QgX19waWQsIGludCBfX3BvbGljeSwKCQkJCSAgICAgIF9fY29uc3Qgc3Ry dWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgOwpleHRlcm4gaW50IHNjaGVkX3NldHNjaGVkdWxl ciAgKF9fcGlkX3QgX19waWQsIGludCBfX3BvbGljeSwKCQkJCSAgICBfX2NvbnN0IHN0cnVjdCBz Y2hlZF9wYXJhbSAqX19wYXJhbSkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX2dldHNjaGVkdWxl ciAgKF9fcGlkX3QgX19waWQpICA7CmV4dGVybiBpbnQgc2NoZWRfZ2V0c2NoZWR1bGVyICAoX19w aWRfdCBfX3BpZCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX3lpZWxkICAodm9pZCkgIDsKZXh0 ZXJuIGludCBzY2hlZF95aWVsZCAgKHZvaWQpICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9nZXRf cHJpb3JpdHlfbWF4ICAoaW50IF9fYWxnb3JpdGhtKSAgOwpleHRlcm4gaW50IHNjaGVkX2dldF9w cmlvcml0eV9tYXggIChpbnQgX19hbGdvcml0aG0pICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9n ZXRfcHJpb3JpdHlfbWluICAoaW50IF9fYWxnb3JpdGhtKSAgOwpleHRlcm4gaW50IHNjaGVkX2dl dF9wcmlvcml0eV9taW4gIChpbnQgX19hbGdvcml0aG0pICA7CgogCmV4dGVybiBpbnQgX19zY2hl ZF9ycl9nZXRfaW50ZXJ2YWwgIChfX3BpZF90IF9fcGlkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdCkg IDsKZXh0ZXJuIGludCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwgIChfX3BpZF90IF9fcGlkLCBzdHJ1 Y3QgdGltZXNwZWMgKl9fdCkgIDsKCn0gCgoKIyAyMiAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIg MiAzCgojIDEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgog CgoKCgoKCgoKZXh0ZXJuICJDIiB7IAoKIAoKCiAKCgoKIAoKCgoKIAoKCgogCgoKCiAKCgoKIAoK CgogCgoKIAoKCiAKCgoKCiAKCgogCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3Bvc2l4X29w dC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgog CgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKIAoKCiMg MTM3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgogCgoKCgoKIAoKCgoKCgoKCgoKIyAx ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUv c3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYt cGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoK CiMgNjEgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5j bHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgog CgoKIyAxMjYgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEv aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL2x1c3IvZ251L2xpYi9n Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoK IAoKCgoKIAoKCiMgMjY5ICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv Mi45NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIv bHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3Rk ZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMTU3ICIvdXNyL2luY2x1ZGUv dW5pc3RkLmgiIDIgMwoKCgogCgoKCgoKCiAKZXh0ZXJuIGludCBfX2FjY2VzcyAgKF9fY29uc3Qg Y2hhciAqX19uYW1lLCBpbnQgX190eXBlKSAgOwpleHRlcm4gaW50IGFjY2VzcyAgKF9fY29uc3Qg Y2hhciAqX19uYW1lLCBpbnQgX190eXBlKSAgOwoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCiAK CgoKCmV4dGVybiBfX29mZl90IF9fbHNlZWsgIChpbnQgX19mZCwgX19vZmZfdCBfX29mZnNldCwg aW50IF9fd2hlbmNlKSAgOwpleHRlcm4gX19vZmZfdCBsc2VlayAgKGludCBfX2ZkLCBfX29mZl90 IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpICA7CgogCmV4dGVybiBpbnQgX19jbG9zZSAgKGludCBf X2ZkKSAgOwpleHRlcm4gaW50IGNsb3NlICAoaW50IF9fZmQpICA7CgogCgpleHRlcm4gc3NpemVf dCAgX19yZWFkICAoaW50IF9fZmQsIHZvaWQgKiAgX19idWYsIHNpemVfdCBfX25ieXRlcykgIDsK ZXh0ZXJuIHNzaXplX3QgIHJlYWQgIChpbnQgX19mZCwgdm9pZCAqICBfX2J1Ziwgc2l6ZV90IF9f bmJ5dGVzKSAgOwoKIApleHRlcm4gc3NpemVfdCAgX193cml0ZSAgKGludCBfX2ZkLCBfX2NvbnN0 IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24pICA7CmV4dGVybiBzc2l6ZV90ICB3cml0ZSAgKGlu dCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24pICA7CgoKIAoKCgpleHRl cm4gaW50IF9fcGlwZSAgKGludCBfX3BpcGVkZXNbMl0pICA7CmV4dGVybiBpbnQgcGlwZSAgKGlu dCBfX3BpcGVkZXNbMl0pICA7CgogCgoKCgoKCmV4dGVybiB1bnNpZ25lZCBpbnQgYWxhcm0gICh1 bnNpZ25lZCBpbnQgX19zZWNvbmRzKSAgOwoKIAoKCgoKCgpleHRlcm4gdW5zaWduZWQgaW50IHNs ZWVwICAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgIDsKCgogCgoKCmV4dGVybiB1bnNpZ25lZCBp bnQgdWFsYXJtICAodW5zaWduZWQgaW50IF9fdmFsdWUsCgkJCQkgdW5zaWduZWQgaW50IF9faW50 ZXJ2YWwpICA7CgogCgpleHRlcm4gdm9pZCB1c2xlZXAgICh1bnNpZ25lZCBpbnQgX191c2Vjb25k cykgIDsKCgoKIAoKZXh0ZXJuIGludCBwYXVzZSAgKHZvaWQpICA7CgoKIApleHRlcm4gaW50IF9f Y2hvd24gIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwKCQkJIF9fdWlkX3QgX19vd25lciwgX19naWRf dCBfX2dyb3VwKSAgOwpleHRlcm4gaW50IGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsCgkJ ICAgICAgIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSAgOwoKCiAKZXh0ZXJuIGlu dCBfX2ZjaG93biAgKGludCBfX2ZkLAoJCQkgIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dy b3VwKSAgOwpleHRlcm4gaW50IGZjaG93biAgKGludCBfX2ZkLAoJCQlfX3VpZF90IF9fb3duZXIs IF9fZ2lkX3QgX19ncm91cCkgIDsKCgogCgpleHRlcm4gaW50IF9fbGNob3duICAoX19jb25zdCBj aGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwKCQkJICBfX2dpZF90IF9fZ3JvdXApICA7CmV4 dGVybiBpbnQgbGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwK CQkJX19naWRfdCBfX2dyb3VwKSAgOwoKCgogCmV4dGVybiBpbnQgX19jaGRpciAgKF9fY29uc3Qg Y2hhciAqX19wYXRoKSAgOwpleHRlcm4gaW50IGNoZGlyICAoX19jb25zdCBjaGFyICpfX3BhdGgp ICA7CgoKIApleHRlcm4gaW50IGZjaGRpciAgKGludCBfX2ZkKSAgOwoKCiAKCgoKCgoKZXh0ZXJu IGNoYXIgKl9fZ2V0Y3dkICAoY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUpICA7CmV4dGVybiBj aGFyICpnZXRjd2QgIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgIDsKCiMgMzE3ICIvdXNy L2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKIAoKCmV4dGVybiBjaGFyICpnZXR3ZCAgKGNoYXIgKl9f YnVmKSAgOwoKCgogCmV4dGVybiBpbnQgX19kdXAgIChpbnQgX19mZCkgIDsKZXh0ZXJuIGludCBk dXAgIChpbnQgX19mZCkgIDsKCiAKZXh0ZXJuIGludCBfX2R1cDIgIChpbnQgX19mZCwgaW50IF9f ZmQyKSAgOwpleHRlcm4gaW50IGR1cDIgIChpbnQgX19mZCwgaW50IF9fZmQyKSAgOwoKIApleHRl cm4gY2hhciAqKl9fZW52aXJvbjsKCgoKCgogCgpleHRlcm4gaW50IF9fZXhlY3ZlICAoX19jb25z dCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCgkJCSAgY2hhciAqX19jb25z dCBfX2VudnBbXSkgIDsKZXh0ZXJuIGludCBleGVjdmUgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwg Y2hhciAqX19jb25zdCBfX2FyZ3ZbXSwKCQkJY2hhciAqX19jb25zdCBfX2VudnBbXSkgIDsKCgoK CgoKCgoKCiAKZXh0ZXJuIGludCBleGVjdiAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpf X2NvbnN0IF9fYXJndltdKSAgOwoKIAoKZXh0ZXJuIGludCBleGVjbGUgIChfX2NvbnN0IGNoYXIg Kl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSAgOwoKIAoKZXh0ZXJuIGludCBleGVj bCAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pICA7Cgog CgpleHRlcm4gaW50IGV4ZWN2cCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0 IF9fYXJndltdKSAgOwoKIAoKCmV4dGVybiBpbnQgZXhlY2xwICAoX19jb25zdCBjaGFyICpfX2Zp bGUsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgIDsKCgoKIApleHRlcm4gaW50IG5pY2UgIChp bnQgX19pbmMpICA7CgoKCiAKZXh0ZXJuIHZvaWQgX2V4aXQgIChpbnQgX19zdGF0dXMpICAgX19h dHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAKCgojIDEgIi91c3IvaW5jbHVkZS9jb25m bmFtZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCmVudW0KICB7CiAgICBfUENfTElOS19N QVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19OQU1F X01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19DSE9X Tl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgogICAg X1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAgIF9Q Q19TT0NLX01BWEJVRgoKICB9OwoKIAplbnVtCiAgewogICAgX1NDX0FSR19NQVgsCgogICAgX1ND X0NISUxEX01BWCwKCiAgICBfU0NfQ0xLX1RDSywKCiAgICBfU0NfTkdST1VQU19NQVgsCgogICAg X1NDX09QRU5fTUFYLAoKICAgIF9TQ19TVFJFQU1fTUFYLAoKICAgIF9TQ19UWk5BTUVfTUFYLAoK ICAgIF9TQ19KT0JfQ09OVFJPTCwKCiAgICBfU0NfU0FWRURfSURTLAoKICAgIF9TQ19SRUFMVElN RV9TSUdOQUxTLAoKICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9TQ19USU1FUlMs CgogICAgX1NDX0FTWU5DSFJPTk9VU19JTywKCiAgICBfU0NfUFJJT1JJVElaRURfSU8sCgogICAg X1NDX1NZTkNIUk9OSVpFRF9JTywKCiAgICBfU0NfRlNZTkMsCgogICAgX1NDX01BUFBFRF9GSUxF UywKCiAgICBfU0NfTUVNTE9DSywKCiAgICBfU0NfTUVNTE9DS19SQU5HRSwKCiAgICBfU0NfTUVN T1JZX1BST1RFQ1RJT04sCgogICAgX1NDX01FU1NBR0VfUEFTU0lORywKCiAgICBfU0NfU0VNQVBI T1JFUywKCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19BSU9fTElTVElP X01BWCwKCiAgICBfU0NfQUlPX01BWCwKCiAgICBfU0NfQUlPX1BSSU9fREVMVEFfTUFYLAoKICAg IF9TQ19ERUxBWVRJTUVSX01BWCwKCiAgICBfU0NfTVFfT1BFTl9NQVgsCgogICAgX1NDX01RX1BS SU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoKICAgIF9TQ19QQUdFU0laRSwKCgogICAgX1NDX1JU U0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1TX01BWCwKCiAgICBfU0NfU0VNX1ZBTFVFX01BWCwK CiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAgIF9TQ19USU1FUl9NQVgsCgoKICAgICAKCiAgICBf U0NfQkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1NDQUxFX01B WCwKCiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKCiAg ICBfU0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAgIF9TQ19M SU5FX01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFY LAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0NfMl9DX0RF ViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBfU0NfMl9T V19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAgIF9TQ19QSUlf WFRJLAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJORVQsCgogICAgX1ND X1BJSV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwKCiAgICBfU0NfVUlPX01B WElPViwKCiAgICBfU0NfUElJX0lOVEVSTkVUX1NUUkVBTSwKCiAgICBfU0NfUElJX0lOVEVSTkVU X0RHUkFNLAoKICAgIF9TQ19QSUlfT1NJX0NPVFMsCgogICAgX1NDX1BJSV9PU0lfQ0xUUywKCiAg ICBfU0NfUElJX09TSV9NLAoKICAgIF9TQ19UX0lPVl9NQVgsCgoKICAgICAKICAgIF9TQ19USFJF QURTLAoKICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0la RV9NQVgsCgogICAgX1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFY LAoKICAgIF9TQ19UVFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJB VElPTlMsCgogICAgX1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01J TiwKCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFD S0FERFIsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BS SU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1ND X1RIUkVBRF9QUklPX1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgog ICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAg X1NDX1BIWVNfUEFHRVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01B WCwKCiAgICBfU0NfUEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19Y T1BFTl9YQ1VfVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZ UFQsCgogICAgX1NDX1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9T Q18yX0NIQVJfVEVSTSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAg ICBfU0NfWE9QRU5fWFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBH NCwKCgogICAgX1NDX0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9N SU4sCgogICAgX1NDX0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklU LAoKICAgIF9TQ19XT1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8s CgogICAgX1NDX1NTSVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9N SU4sCgogICAgX1NDX1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJf TUFYLAoKICAgIF9TQ19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hS VF9NQVgsCgoKICAgIF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1ND X05MX01TR01BWCwKCiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9T Q19OTF9URVhUTUFYCgogIH07CgoKIAplbnVtCiAgewogICAgX0NTX1BBVEgJCQkgCgogIH07Cgoj IDM5MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgogCmV4dGVybiBsb25nIGludCBfX3Bh dGhjb25mICAoX19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpICA7CmV4dGVybiBsb25n IGludCBwYXRoY29uZiAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19uYW1lKSAgOwoKIApl eHRlcm4gbG9uZyBpbnQgX19mcGF0aGNvbmYgIChpbnQgX19mZCwgaW50IF9fbmFtZSkgIDsKZXh0 ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAgKGludCBfX2ZkLCBpbnQgX19uYW1lKSAgOwoKIApleHRl cm4gbG9uZyBpbnQgX19zeXNjb25mICAoaW50IF9fbmFtZSkgIDsKZXh0ZXJuIGxvbmcgaW50IHN5 c2NvbmYgIChpbnQgX19uYW1lKSAgOwoKCiAKZXh0ZXJuIHNpemVfdCBjb25mc3RyICAoaW50IF9f bmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgIDsKCgoKIApleHRlcm4gX19waWRfdCBf X2dldHBpZCAgKHZvaWQpICA7CmV4dGVybiBfX3BpZF90IGdldHBpZCAgKHZvaWQpICA7CgogCmV4 dGVybiBfX3BpZF90IF9fZ2V0cHBpZCAgKHZvaWQpICA7CmV4dGVybiBfX3BpZF90IGdldHBwaWQg ICh2b2lkKSAgOwoKIApleHRlcm4gX19waWRfdCBnZXRwZ3JwICAodm9pZCkgIDsKCiAKCgpleHRl cm4gaW50IHNldHBnaWQgIChfX3BpZF90IF9fcGlkLCBfX3BpZF90IF9fcGdpZCkgIDsKCiAKZXh0 ZXJuIF9fcGlkX3QgX19nZXRwZ2lkICAoX19waWRfdCBfX3BpZCkgIDsKCgoKCgogCgoKCgoKCgoK CgoKIAoKZXh0ZXJuIGludCBzZXRwZ3JwICAodm9pZCkgIDsKCgoKCgoKCgoKIAoKCmV4dGVybiBf X3BpZF90IF9fc2V0c2lkICAodm9pZCkgIDsKZXh0ZXJuIF9fcGlkX3Qgc2V0c2lkICAodm9pZCkg IDsKCgoKCgoKIApleHRlcm4gX191aWRfdCBfX2dldHVpZCAgKHZvaWQpICA7CmV4dGVybiBfX3Vp ZF90IGdldHVpZCAgKHZvaWQpICA7CgogCmV4dGVybiBfX3VpZF90IF9fZ2V0ZXVpZCAgKHZvaWQp ICA7CmV4dGVybiBfX3VpZF90IGdldGV1aWQgICh2b2lkKSAgOwoKIApleHRlcm4gX19naWRfdCBf X2dldGdpZCAgKHZvaWQpICA7CmV4dGVybiBfX2dpZF90IGdldGdpZCAgKHZvaWQpICA7CgogCmV4 dGVybiBfX2dpZF90IF9fZ2V0ZWdpZCAgKHZvaWQpICA7CmV4dGVybiBfX2dpZF90IGdldGVnaWQg ICh2b2lkKSAgOwoKIAoKCmV4dGVybiBpbnQgX19nZXRncm91cHMgIChpbnQgX19zaXplLCBfX2dp ZF90IF9fbGlzdFtdKSAgOwpleHRlcm4gaW50IGdldGdyb3VwcyAgKGludCBfX3NpemUsIF9fZ2lk X3QgX19saXN0W10pICA7CgoKCgoKCgogCgoKCmV4dGVybiBpbnQgX19zZXR1aWQgIChfX3VpZF90 IF9fdWlkKSAgOwpleHRlcm4gaW50IHNldHVpZCAgKF9fdWlkX3QgX191aWQpICA7CgoKIAoKZXh0 ZXJuIGludCBfX3NldHJldWlkICAoX191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSAgOwpl eHRlcm4gaW50IHNldHJldWlkICAoX191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSAgOwoK CgogCmV4dGVybiBpbnQgc2V0ZXVpZCAgKF9fdWlkX3QgX191aWQpICA7CgoKIAoKCgpleHRlcm4g aW50IF9fc2V0Z2lkICAoX19naWRfdCBfX2dpZCkgIDsKZXh0ZXJuIGludCBzZXRnaWQgIChfX2dp ZF90IF9fZ2lkKSAgOwoKCiAKCmV4dGVybiBpbnQgX19zZXRyZWdpZCAgKF9fZ2lkX3QgX19yZ2lk LCBfX2dpZF90IF9fZWdpZCkgIDsKZXh0ZXJuIGludCBzZXRyZWdpZCAgKF9fZ2lkX3QgX19yZ2lk LCBfX2dpZF90IF9fZWdpZCkgIDsKCgoKIApleHRlcm4gaW50IHNldGVnaWQgIChfX2dpZF90IF9f Z2lkKSAgOwoKCgogCgoKZXh0ZXJuIF9fcGlkX3QgX19mb3JrICAodm9pZCkgIDsKZXh0ZXJuIF9f cGlkX3QgZm9yayAgKHZvaWQpICA7CgoKIAoKCgpleHRlcm4gX19waWRfdCBfX3Zmb3JrICAodm9p ZCkgIDsKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgICh2b2lkKSAgOwoKCgogCgpleHRlcm4gY2hhciAq dHR5bmFtZSAgKGludCBfX2ZkKSAgOwoKIAoKZXh0ZXJuIGludCBfX3R0eW5hbWVfciAgKGludCBf X2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSAgOwpleHRlcm4gaW50IHR0eW5hbWVf ciAgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSAgOwoKIAoKZXh0ZXJu IGludCBfX2lzYXR0eSAgKGludCBfX2ZkKSAgOwpleHRlcm4gaW50IGlzYXR0eSAgKGludCBfX2Zk KSAgOwoKCiAKCmV4dGVybiBpbnQgdHR5c2xvdCAgKHZvaWQpICA7CgoKCiAKZXh0ZXJuIGludCBf X2xpbmsgIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAgOwpleHRl cm4gaW50IGxpbmsgIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAg OwoKCiAKZXh0ZXJuIGludCBfX3N5bWxpbmsgIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25z dCBjaGFyICpfX3RvKSAgOwpleHRlcm4gaW50IHN5bWxpbmsgIChfX2NvbnN0IGNoYXIgKl9fZnJv bSwgX19jb25zdCBjaGFyICpfX3RvKSAgOwoKIAoKCmV4dGVybiBpbnQgX19yZWFkbGluayAgKF9f Y29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgOwpleHRlcm4g aW50IHJlYWRsaW5rICAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fYnVmLCBzaXplX3Qg X19sZW4pICA7CgoKIApleHRlcm4gaW50IF9fdW5saW5rICAoX19jb25zdCBjaGFyICpfX25hbWUp ICA7CmV4dGVybiBpbnQgdW5saW5rICAoX19jb25zdCBjaGFyICpfX25hbWUpICA7CgogCmV4dGVy biBpbnQgX19ybWRpciAgKF9fY29uc3QgY2hhciAqX19wYXRoKSAgOwpleHRlcm4gaW50IHJtZGly ICAoX19jb25zdCBjaGFyICpfX3BhdGgpICA7CgoKIApleHRlcm4gX19waWRfdCB0Y2dldHBncnAg IChpbnQgX19mZCkgIDsKCiAKZXh0ZXJuIGludCB0Y3NldHBncnAgIChpbnQgX19mZCwgX19waWRf dCBfX3BncnBfaWQpICA7CgoKIApleHRlcm4gY2hhciAqZ2V0bG9naW4gICh2b2lkKSAgOwoKCgoK CgoKCiAKZXh0ZXJuIGludCBzZXRsb2dpbiAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgOwoKCgoK IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gaW50IGdldG9wdCAgKGludCBfX2FyZ2Ms IGNoYXIgKl9fY29uc3QgKiBfX2FyZ3YsCgkJCV9fY29uc3QgY2hhciAqX19vcHRzKSAgOwpleHRl cm4gaW50IG9wdGVycjsKZXh0ZXJuIGludCBvcHRpbmQ7CmV4dGVybiBpbnQgb3B0b3B0OwpleHRl cm4gY2hhciAqb3B0YXJnOwoKCgoKCiAKCgpleHRlcm4gaW50IF9fZ2V0aG9zdG5hbWUgIChjaGFy ICpfX25hbWUsIHNpemVfdCBfX2xlbikgIDsKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAgKGNoYXIg Kl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgOwoKIAoKZXh0ZXJuIGludCBzZXRob3N0bmFtZSAgKF9f Y29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pICA7CgogCgpleHRlcm4gaW50IHNldGhv c3RpZCAgKGxvbmcgaW50IF9faWQpICA7CgoKIAoKCmV4dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAg KGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgOwpleHRlcm4gaW50IHNldGRvbWFpbm5hbWUg IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgOwoKCiAKZXh0ZXJuIGludCBm c3luYyAgKGludCBfX2ZkKSAgOwoKCiAKCgpleHRlcm4gaW50IHZoYW5ndXAgICh2b2lkKSAgOwoK IApleHRlcm4gaW50IHJldm9rZSAgKF9fY29uc3QgY2hhciAqX19maWxlKSAgOwoKCiAKCgoKCmV4 dGVybiBpbnQgcHJvZmlsICAodW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNp emVfdCBfX3NpemUsCgkJCXNpemVfdCBfX29mZnNldCwgdW5zaWduZWQgaW50IF9fc2NhbGUpICA7 CgoKIAoKCmV4dGVybiBpbnQgYWNjdCAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgOwoKIAoKZXh0 ZXJuIGludCBjaHJvb3QgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgIDsKCgogCmV4dGVybiBjaGFy ICpnZXR1c2Vyc2hlbGwgICh2b2lkKSAgOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgICh2b2lk KSAgOyAgCmV4dGVybiB2b2lkIHNldHVzZXJzaGVsbCAgKHZvaWQpICA7ICAKCgogCgpleHRlcm4g Y2hhciAqZ2V0cGFzcyAgKF9fY29uc3QgY2hhciAqX19wcm9tcHQpICA7CgogCgoKZXh0ZXJuIGlu dCBkYWVtb24gIChpbnQgX19ub2NoZGlyLCBpbnQgX19ub2Nsb3NlKSAgOwoKCgoKCgogCmV4dGVy biBsb25nIGludCBnZXRob3N0aWQgICh2b2lkKSAgOwoKIApleHRlcm4gaW50IHN5bmMgICh2b2lk KSAgOwoKCiAKCmV4dGVybiBpbnQgX19nZXRwYWdlc2l6ZSAgKHZvaWQpICA7CmV4dGVybiBpbnQg Z2V0cGFnZXNpemUgICh2b2lkKSAgOwoKCiAKZXh0ZXJuIGludCB0cnVuY2F0ZSAgKF9fY29uc3Qg Y2hhciAqX19maWxlLCBfX29mZl90IF9fbGVuZ3RoKSAgOwoKIApleHRlcm4gaW50IGZ0cnVuY2F0 ZSAgKGludCBfX2ZkLCBfX29mZl90IF9fbGVuZ3RoKSAgOwoKCiAKCmV4dGVybiBpbnQgX19nZXRk dGFibGVzaXplICAodm9pZCkgIDsKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICAodm9pZCkgIDsK CgoKCgoKIAoKZXh0ZXJuIGludCBfX2JyayAgKHZvaWQgKiAgX19hZGRyKSAgOwpleHRlcm4gaW50 IGJyayAgKHZvaWQgKiAgX19hZGRyKSAgOwoKCiMgMSAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2 ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMg MTkgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvaW5jbHVk ZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvbHVzci9nbnUvbGliL2djYy1s aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoK IAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvbHVzci9nbnUvbGliL2dj Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK CgogCgogCgoKIyAxODggIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y Ljk1LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL2x1c3IvZ251 L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAz CgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYt cGMtbGludXgtZ251LzIuOTUuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoK CgogCgoKCgoKCgojIDc2OCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgogCgoKCmV4dGVy biB2b2lkICogIF9fc2JyayAgKHB0cmRpZmZfdCBfX2RlbHRhKSAgOwpleHRlcm4gdm9pZCAqICBz YnJrICAocHRyZGlmZl90IF9fZGVsdGEpICA7CgoKCgogCgoKCgoKCgoKCmV4dGVybiBsb25nIGlu dCBzeXNjYWxsICAobG9uZyBpbnQgX19zeXNubywgLi4uKSAgOwoKCgoKCgogCgoKCiAKCgoKCgoK CgpleHRlcm4gaW50IGxvY2tmICAoaW50IF9fZmQsIGludCBfX2NtZCwgX19vZmZfdCBfX2xlbikg IDsKCgoKIyA4MzMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCgogCgpleHRlcm4gaW50IGZk YXRhc3luYyAgKGludCBfX2ZpbGRlcykgIDsKCgoKIAoKIyA4NjEgIi91c3IvaW5jbHVkZS91bmlz dGQuaCIgMwoKCn0gCgoKIyAyMyAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMiAzCgoKCiMgMSAi L3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK CmV4dGVybiAiQyIgeyAKCgojIDEgIi91c3IvaW5jbHVkZS9zaWdzZXQuaCIgMSAzCiAKCgoKCgoK CgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgogCgoKdHlwZWRlZiBz dHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9m ICh1bnNpZ25lZCBsb25nIGludCkpKSBdOwogIH0gX19zaWdzZXRfdDsKCgoKCiAKCgoKCgojIDEy MyAiL3Vzci9pbmNsdWRlL3NpZ3NldC5oIiAzCgojIDMzICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgi IDIgMwoKCgoKCgoKCgoKIyAxNTggIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMwoKCgoKCnR5cGVk ZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgoKIyAyMjkgIi91c3IvaW5jbHVkZS9zaWduYWwu aCIgMwoKCgoKIyAyNzQgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMwoKCgojIDI5OCAiL3Vzci9p bmNsdWRlL3NpZ25hbC5oIiAzCgoKfSAKCgojIDI2ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAy IDMKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA2 OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDgwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz CgoKCgojIDk3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKIyAxMjUgIi91c3IvaW5jbHVk ZS90aW1lLmgiIDMKCgoKIyAyODEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAyOCAiL3Vz ci9pbmNsdWRlL3B0aHJlYWQuaCIgMiAzCgoKIAoKCgoKCmV4dGVybiAiQyIgeyAKCiAKCiAKdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CgogCnR5cGVkZWYgc3RydWN0IF9wdGhy ZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7CgogCnN0cnVjdCBfcHRocmVhZF9xdWV1 ZQp7CiAgX3B0aHJlYWRfZGVzY3IgaGVhZDsJCSAKICBfcHRocmVhZF9kZXNjciB0YWlsOwkJIAp9 OwoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IG1fc3BpbmxvY2s7CQkgCiAgaW50IG1fY291bnQ7 CQkJIAogIF9wdGhyZWFkX2Rlc2NyIG1fb3duZXI7CSAKICBpbnQgbV9raW5kOwkJCSAKICBzdHJ1 Y3QgX3B0aHJlYWRfcXVldWUgbV93YWl0aW5nOyAgCn0gcHRocmVhZF9tdXRleF90OwoKCgoKCgog CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgY19zcGlubG9jazsgICAgICAgICAgICAgICAgICAgCiAg c3RydWN0IF9wdGhyZWFkX3F1ZXVlIGNfd2FpdGluZzsgIAp9IHB0aHJlYWRfY29uZF90OwoKCgog CgplbnVtCnsKICBQVEhSRUFEX0NSRUFURV9KT0lOQUJMRSwKICBQVEhSRUFEX0NSRUFURV9ERVRB Q0hFRAp9OwoKZW51bQp7CiAgUFRIUkVBRF9JTkhFUklUX1NDSEVELAogIFBUSFJFQURfRVhQTElD SVRfU0NIRUQKfTsKCmVudW0KewogIFBUSFJFQURfU0NPUEVfU1lTVEVNLAogIFBUSFJFQURfU0NP UEVfUFJPQ0VTUwp9OwoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBkZXRhY2hzdGF0ZTsKICBpbnQg c2NoZWRwb2xpY3k7CiAgc3RydWN0IHNjaGVkX3BhcmFtIHNjaGVkcGFyYW07CiAgaW50IGluaGVy aXRzY2hlZDsKICBpbnQgc2NvcGU7Cn0gcHRocmVhZF9hdHRyX3Q7CgplbnVtCnsKICBQVEhSRUFE X01VVEVYX0ZBU1RfTlAsCiAgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAsCiAgUFRIUkVBRF9N VVRFWF9FUlJPUkNIRUNLX05QCn07Cgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IG11dGV4a2luZDsK fSBwdGhyZWFkX211dGV4YXR0cl90OwoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBkdW1teTsKfSBw dGhyZWFkX2NvbmRhdHRyX3Q7CgoKIAoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlf dDsKCiAKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoKCgogCgpzdHJ1Y3QgX3B0aHJlYWRf Y2xlYW51cF9idWZmZXIKewogIHZvaWQgKCpyb3V0aW5lKSAgKHZvaWQgKikgIDsJIAogIHZvaWQg KmFyZzsJCQkJIAogIGludCBjYW5jZWx0eXBlOwkJCSAKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51 cF9idWZmZXIgKnByZXY7CSAKfTsKCiAKCmVudW0geyBQVEhSRUFEX0NBTkNFTF9FTkFCTEUsIFBU SFJFQURfQ0FOQ0VMX0RJU0FCTEUgfTsKZW51bSB7IFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVELCBQ VEhSRUFEX0NBTkNFTF9BU1lOQ0hST05PVVMgfTsKCgoKIAoKIAoKCmV4dGVybiBpbnQgcHRocmVh ZF9jcmVhdGUgIChwdGhyZWFkX3QgKl9fdGhyZWFkLAoJCQkJX19jb25zdCBwdGhyZWFkX2F0dHJf dCAqX19hdHRyLAoJCQkJdm9pZCAqKCpfX3N0YXJ0X3JvdXRpbmUpICh2b2lkICopLAoJCQkJdm9p ZCAqX19hcmcpICA7CgogCmV4dGVybiBwdGhyZWFkX3QgcHRocmVhZF9zZWxmICAodm9pZCkgIDsK CiAKZXh0ZXJuIGludCBwdGhyZWFkX2VxdWFsICAocHRocmVhZF90IF9fdGhyZWFkMSwgcHRocmVh ZF90IF9fdGhyZWFkMikgIDsKCiAKZXh0ZXJuIHZvaWQgcHRocmVhZF9leGl0ICAodm9pZCAqX19y ZXR2YWwpICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKIAoKCmV4dGVybiBpbnQg cHRocmVhZF9qb2luICAocHRocmVhZF90IF9fdGgsIHZvaWQgKipfX3RocmVhZF9yZXR1cm4pICA7 CgogCgoKCmV4dGVybiBpbnQgcHRocmVhZF9kZXRhY2ggIChwdGhyZWFkX3QgX190aCkgIDsKCgog CgogCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9pbml0ICAocHRocmVhZF9hdHRyX3QgKl9fYXR0 cikgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZGVzdHJveSAgKHB0aHJlYWRfYXR0cl90 ICpfX2F0dHIpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlICAo cHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgIGludCBfX2RldGFjaHN0YXRlKSAgOwoK IApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRkZXRhY2hzdGF0ZSAgKF9fY29uc3QgcHRocmVh ZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgIGludCAqX19kZXRhY2hzdGF0ZSkgIDsKCiAKZXh0 ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwYXJhbSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0 dHIsCgkJCQkgICAgICAgIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgOwoK IApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBhcmFtICAoX19jb25zdCBwdGhyZWFk X2F0dHJfdCAqX19hdHRyLAoJCQkJCSAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICA7 CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNjaGVkcG9saWN5ICAocHRocmVhZF9hdHRy X3QgKl9fYXR0ciwKCQkJCQkgICAgIGludCBfX3BvbGljeSkgIDsKCiAKZXh0ZXJuIGludCBwdGhy ZWFkX2F0dHJfZ2V0c2NoZWRwb2xpY3kgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIs CgkJCQkJICAgICBpbnQgKl9fcG9saWN5KSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9z ZXRpbmhlcml0c2NoZWQgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJCSAgICAgIGludCBf X2luaGVyaXQpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldGluaGVyaXRzY2hlZCAg KF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgICBpbnQgKl9faW5oZXJp dCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NvcGUgIChwdGhyZWFkX2F0dHJf dCAqX19hdHRyLCBpbnQgX19zY29wZSkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0 c2NvcGUgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkgICAgICAgaW50ICpf X3Njb3BlKSAgOwoKIAoKIAoKZXh0ZXJuIGludCBwdGhyZWFkX3NldHNjaGVkcGFyYW0gIChwdGhy ZWFkX3QgX190YXJnZXRfdGhyZWFkLCBpbnQgX19wb2xpY3ksCgkJCQkgICAgICAgX19jb25zdCBz dHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9nZXRz Y2hlZHBhcmFtICAocHRocmVhZF90IF9fdGFyZ2V0X3RocmVhZCwKCQkJCSAgICAgICBpbnQgKl9f cG9saWN5LAoJCQkJICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIDsKCgogCgog CgpleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF9pbml0ICAocHRocmVhZF9tdXRleF90ICpfX211 dGV4LAoJCQkJICAgX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpfX211dGV4X2F0dHIpICA7 CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9pbml0ICAocHRocmVhZF9tdXRleF90ICpfX211dGV4 LAoJCQkJICAgX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpfX211dGV4X2F0dHIpICA7Cgog CmV4dGVybiBpbnQgX19wdGhyZWFkX211dGV4X2Rlc3Ryb3kgIChwdGhyZWFkX211dGV4X3QgKl9f bXV0ZXgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9kZXN0cm95ICAocHRocmVhZF9tdXRl eF90ICpfX211dGV4KSAgOwoKIApleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF90cnlsb2NrICAo cHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfdHJ5 bG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJl YWRfbXV0ZXhfbG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIDsKZXh0ZXJuIGludCBw dGhyZWFkX211dGV4X2xvY2sgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICA7CgogCmV4dGVy biBpbnQgX19wdGhyZWFkX211dGV4X3VubG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkg IDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X3VubG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19t dXRleCkgIDsKCgogCgogCgpleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleGF0dHJfaW5pdCAgKHB0 aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0 cl9pbml0ICAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyKSAgOwoKIApleHRlcm4gaW50IF9f cHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikg IDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95ICAocHRocmVhZF9tdXRleGF0 dHJfdCAqX19hdHRyKSAgOwoKIAoKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhhdHRyX3NldGtp bmRfbnAgIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCgkJCQkJCWludCBfX2tpbmQpICA7 CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0a2luZF9ucCAgKHB0aHJlYWRfbXV0ZXhh dHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgICBpbnQgX19raW5kKSAgOwogCmV4dGVybiBpbnQgcHRo cmVhZF9tdXRleGF0dHJfZ2V0a2luZF9ucCAgKF9fY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAq X19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ICpfX2tpbmQpICA7CgoKIAoKIAoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfaW5pdCAgKHB0aHJl YWRfY29uZF90ICpfX2NvbmQsCgkJCQkgICBfX2NvbnN0IHB0aHJlYWRfY29uZGF0dHJfdCAqX19j b25kX2F0dHIpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Rlc3Ryb3kgIChwdGhyZWFk X2NvbmRfdCAqX19jb25kKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfY29uZF9zaWduYWwgIChw dGhyZWFkX2NvbmRfdCAqX19jb25kKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfY29uZF9icm9h ZGNhc3QgIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSAgOwoKIAoKZXh0ZXJuIGludCBwdGhyZWFk X2NvbmRfd2FpdCAgKHB0aHJlYWRfY29uZF90ICpfX2NvbmQsCgkJCQkgICBwdGhyZWFkX211dGV4 X3QgKl9fbXV0ZXgpICA7CgogCgoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX3RpbWVkd2FpdCAg KHB0aHJlYWRfY29uZF90ICpfX2NvbmQsCgkJCQkJcHRocmVhZF9tdXRleF90ICpfX211dGV4LAoJ CQkJCV9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX2Fic3RpbWUpICA7CgogCgogCmV4dGVybiBp bnQgcHRocmVhZF9jb25kYXR0cl9pbml0ICAocHRocmVhZF9jb25kYXR0cl90ICpfX2F0dHIpICA7 CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95ICAocHRocmVhZF9jb25kYXR0 cl90ICpfX2F0dHIpICA7CgoKIAoKIAoKCgoKCmV4dGVybiBpbnQgX19wdGhyZWFkX2tleV9jcmVh dGUgIChwdGhyZWFkX2tleV90ICpfX2tleSwKCQkJCSAgICAgIHZvaWQgKCpfX2Rlc3RyX2Z1bmN0 aW9uKSAodm9pZCAqKSkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX2tleV9jcmVhdGUgIChwdGhyZWFk X2tleV90ICpfX2tleSwKCQkJCSAgICB2b2lkICgqX19kZXN0cl9mdW5jdGlvbikgKHZvaWQgKikp ICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9rZXlfZGVsZXRlICAocHRocmVhZF9rZXlfdCBfX2tl eSkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRfc2V0c3BlY2lmaWMgIChwdGhyZWFkX2tleV90 IF9fa2V5LAoJCQkJICAgICAgIF9fY29uc3Qgdm9pZCAqX19wb2ludGVyKSAgOwpleHRlcm4gaW50 IHB0aHJlYWRfc2V0c3BlY2lmaWMgIChwdGhyZWFkX2tleV90IF9fa2V5LAoJCQkJICAgICBfX2Nv bnN0IHZvaWQgKl9fcG9pbnRlcikgIDsKCiAKZXh0ZXJuIHZvaWQgKl9fcHRocmVhZF9nZXRzcGVj aWZpYyAgKHB0aHJlYWRfa2V5X3QgX19rZXkpICA7CmV4dGVybiB2b2lkICpwdGhyZWFkX2dldHNw ZWNpZmljICAocHRocmVhZF9rZXlfdCBfX2tleSkgIDsKCgogCgogCgoKCmV4dGVybiBpbnQgX19w dGhyZWFkX29uY2UgIChwdGhyZWFkX29uY2VfdCAqX19vbmNlX2NvbnRyb2wsCgkJCQl2b2lkICgq X19pbml0X3JvdXRpbmUpICh2b2lkKSkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX29uY2UgIChwdGhy ZWFkX29uY2VfdCAqX19vbmNlX2NvbnRyb2wsCgkJCSAgICAgIHZvaWQgKCpfX2luaXRfcm91dGlu ZSkgKHZvaWQpKSAgOwoKCiAKCiAKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWxzdGF0ZSAg KGludCBfX3N0YXRlLCBpbnQgKl9fb2xkc3RhdGUpICA7CgogCgpleHRlcm4gaW50IF9fcHRocmVh ZF9zZXRjYW5jZWx0eXBlICAoaW50IF9fdHlwZSwgaW50ICpfX29sZHR5cGUpICA7CmV4dGVybiBp bnQgcHRocmVhZF9zZXRjYW5jZWx0eXBlICAoaW50IF9fdHlwZSwgaW50ICpfX29sZHR5cGUpICA7 CgogCmV4dGVybiBpbnQgcHRocmVhZF9jYW5jZWwgIChwdGhyZWFkX3QgX190aHJlYWQpICA7Cgog CgoKZXh0ZXJuIHZvaWQgcHRocmVhZF90ZXN0Y2FuY2VsICAodm9pZCkgIDsKCgogCgoKCgoKCgoK CgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3B1c2ggIChzdHJ1Y3QgX3B0aHJlYWRfY2xl YW51cF9idWZmZXIgKl9fYnVmZmVyLAoJCQkJCXZvaWQgKCpfX3JvdXRpbmUpICh2b2lkICopLAoJ CQkJCXZvaWQgKl9fYXJnKSAgOwoKIAoKCgoKCmV4dGVybiB2b2lkIF9wdGhyZWFkX2NsZWFudXBf cG9wICAoc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpfX2J1ZmZlciwKCQkJCSAgICAg ICBpbnQgX19leGVjdXRlKSAgOwoKIAoKCgoKCgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVw X3B1c2hfZGVmZXIgIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fYnVmZmVyLAoJ CQkJCSAgICAgIHZvaWQgKCpfX3JvdXRpbmUpICh2b2lkICopLAoJCQkJCSAgICAgIHZvaWQgKl9f YXJnKSAgOwoKIAoKCgoKCgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3BvcF9yZXN0b3Jl ICAoc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpfX2J1ZmZlciwKCQkJCQkgICAgICAg aW50IF9fZXhlY3V0ZSkgIDsKCiAKCiAKCgpleHRlcm4gaW50IHB0aHJlYWRfc2lnbWFzayAgKGlu dCBfX2hvdywgX19jb25zdCBzaWdzZXRfdCAqX19uZXdtYXNrLAoJCQkJIHNpZ3NldF90ICpfX29s ZG1hc2spICA7CgogCgpleHRlcm4gaW50IHB0aHJlYWRfa2lsbCAgKHB0aHJlYWRfdCBfX3RocmVh ZCwgaW50IF9fc2lnbm8pICA7CgoKIAoKIAoKCgoKCgoKCgoKZXh0ZXJuIGludCBfX3B0aHJlYWRf YXRmb3JrICAodm9pZCAoKl9fcHJlcGFyZSkgKHZvaWQpLAoJCQkJICB2b2lkICgqX19wYXJlbnQp ICh2b2lkKSwKCQkJCSAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgIDsKZXh0ZXJuIGludCBwdGhy ZWFkX2F0Zm9yayAgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKCQkJCXZvaWQgKCpfX3BhcmVu dCkgKHZvaWQpLAoJCQkJdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgIDsKCiAKCgpleHRlcm4gdm9p ZCBfX3B0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wICAodm9pZCkgIDsKZXh0ZXJuIHZvaWQg cHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAgICh2b2lkKSAgOwoKCiAKZXh0ZXJuIHZvaWQg X19wdGhyZWFkX2luaXRpYWxpemUgICh2b2lkKSAgOwoKfSAKCgojIDcxICIvbHVzci9nbnUvbGli L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr LTMvc3RsX2FsbG9jLmgiIDIgMwoKCgoKCgoKCiMgODcgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9p Njg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxs b2MuaCIgMwoKIyA5NyAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu OTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAzCgojIDExNSAiL2x1 c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9p bmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAzCgoKCgoKCgoKCiAKCgoKCgogCiAKCgoKCgoKCgoK dGVtcGxhdGUgPGludCBfX2luc3Q+CmNsYXNzIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlIHsKCnBy aXZhdGU6CgogIHN0YXRpYyB2b2lkKiBfU19vb21fbWFsbG9jKHNpemVfdCk7CiAgc3RhdGljIHZv aWQqIF9TX29vbV9yZWFsbG9jKHZvaWQqLCBzaXplX3QpOwoKCiAgc3RhdGljIHZvaWQgKCogX19t YWxsb2NfYWxsb2Nfb29tX2hhbmRsZXIpKCk7CgoKcHVibGljOgoKICBzdGF0aWMgdm9pZCogYWxs b2NhdGUoc2l6ZV90IF9fbikKICB7CiAgICB2b2lkKiBfX3Jlc3VsdCA9IG1hbGxvYyhfX24pOwog ICAgaWYgKDAgPT0gX19yZXN1bHQpIF9fcmVzdWx0ID0gX1Nfb29tX21hbGxvYyhfX24pOwogICAg cmV0dXJuIF9fcmVzdWx0OwogIH0KCiAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZSh2b2lkKiBfX3As IHNpemVfdCAgKQogIHsKICAgIGZyZWUoX19wKTsKICB9CgogIHN0YXRpYyB2b2lkKiByZWFsbG9j YXRlKHZvaWQqIF9fcCwgc2l6ZV90ICAsIHNpemVfdCBfX25ld19zeikKICB7CiAgICB2b2lkKiBf X3Jlc3VsdCA9IHJlYWxsb2MoX19wLCBfX25ld19zeik7CiAgICBpZiAoMCA9PSBfX3Jlc3VsdCkg X19yZXN1bHQgPSBfU19vb21fcmVhbGxvYyhfX3AsIF9fbmV3X3N6KTsKICAgIHJldHVybiBfX3Jl c3VsdDsKICB9CgogIHN0YXRpYyB2b2lkICgqIF9fc2V0X21hbGxvY19oYW5kbGVyKHZvaWQgKCpf X2YpKCkpKSgpCiAgewogICAgdm9pZCAoKiBfX29sZCkoKSA9IF9fbWFsbG9jX2FsbG9jX29vbV9o YW5kbGVyOwogICAgX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRsZXIgPSBfX2Y7CiAgICByZXR1cm4o X19vbGQpOwogIH0KCn07CgogCgoKdGVtcGxhdGUgPGludCBfX2luc3Q+CnZvaWQgKCogX19tYWxs b2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0Pjo6X19tYWxsb2NfYWxsb2Nfb29tX2hhbmRsZXIpKCkg PSAwOwoKCnRlbXBsYXRlIDxpbnQgX19pbnN0Pgp2b2lkKgpfX21hbGxvY19hbGxvY190ZW1wbGF0 ZTxfX2luc3Q+OjpfU19vb21fbWFsbG9jKHNpemVfdCBfX24pCnsKICAgIHZvaWQgKCogX19teV9t YWxsb2NfaGFuZGxlcikoKTsKICAgIHZvaWQqIF9fcmVzdWx0OwoKICAgIGZvciAoOzspIHsKICAg ICAgICBfX215X21hbGxvY19oYW5kbGVyID0gX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRsZXI7CiAg ICAgICAgaWYgKDAgPT0gX19teV9tYWxsb2NfaGFuZGxlcikgeyBjZXJyIDw8ICJvdXQgb2YgbWVt b3J5IiA8PCBlbmRsOyBleGl0KDEpIDsgfQogICAgICAgICgqX19teV9tYWxsb2NfaGFuZGxlciko KTsKICAgICAgICBfX3Jlc3VsdCA9IG1hbGxvYyhfX24pOwogICAgICAgIGlmIChfX3Jlc3VsdCkg cmV0dXJuKF9fcmVzdWx0KTsKICAgIH0KfQoKdGVtcGxhdGUgPGludCBfX2luc3Q+CnZvaWQqIF9f bWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9faW5zdD46Ol9TX29vbV9yZWFsbG9jKHZvaWQqIF9fcCwg c2l6ZV90IF9fbikKewogICAgdm9pZCAoKiBfX215X21hbGxvY19oYW5kbGVyKSgpOwogICAgdm9p ZCogX19yZXN1bHQ7CgogICAgZm9yICg7OykgewogICAgICAgIF9fbXlfbWFsbG9jX2hhbmRsZXIg PSBfX21hbGxvY19hbGxvY19vb21faGFuZGxlcjsKICAgICAgICBpZiAoMCA9PSBfX215X21hbGxv Y19oYW5kbGVyKSB7IGNlcnIgPDwgIm91dCBvZiBtZW1vcnkiIDw8IGVuZGw7IGV4aXQoMSkgOyB9 CiAgICAgICAgKCpfX215X21hbGxvY19oYW5kbGVyKSgpOwogICAgICAgIF9fcmVzdWx0ID0gcmVh bGxvYyhfX3AsIF9fbik7CiAgICAgICAgaWYgKF9fcmVzdWx0KSByZXR1cm4oX19yZXN1bHQpOwog ICAgfQp9Cgp0eXBlZGVmIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPDA+IG1hbGxvY19hbGxvYzsK CnRlbXBsYXRlPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpjbGFzcyBzaW1wbGVfYWxsb2MgewoK cHVibGljOgogICAgc3RhdGljIF9UcCogYWxsb2NhdGUoc2l6ZV90IF9fbikKICAgICAgeyByZXR1 cm4gMCA9PSBfX24gPyAwIDogKF9UcCopIF9BbGxvYzo6YWxsb2NhdGUoX19uICogc2l6ZW9mIChf VHApKTsgfQogICAgc3RhdGljIF9UcCogYWxsb2NhdGUodm9pZCkKICAgICAgeyByZXR1cm4gKF9U cCopIF9BbGxvYzo6YWxsb2NhdGUoc2l6ZW9mIChfVHApKTsgfQogICAgc3RhdGljIHZvaWQgZGVh bGxvY2F0ZShfVHAqIF9fcCwgc2l6ZV90IF9fbikKICAgICAgeyBpZiAoMCAhPSBfX24pIF9BbGxv Yzo6ZGVhbGxvY2F0ZShfX3AsIF9fbiAqIHNpemVvZiAoX1RwKSk7IH0KICAgIHN0YXRpYyB2b2lk IGRlYWxsb2NhdGUoX1RwKiBfX3ApCiAgICAgIHsgX0FsbG9jOjpkZWFsbG9jYXRlKF9fcCwgc2l6 ZW9mIChfVHApKTsgfQp9OwoKIAogCiAKIAogCnRlbXBsYXRlIDxjbGFzcyBfQWxsb2M+CmNsYXNz IGRlYnVnX2FsbG9jIHsKCnByaXZhdGU6CgogIGVudW0ge19TX2V4dHJhID0gOH07ICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIAoKcHVibGljOgoK ICBzdGF0aWMgdm9pZCogYWxsb2NhdGUoc2l6ZV90IF9fbikKICB7CiAgICBjaGFyKiBfX3Jlc3Vs dCA9IChjaGFyKilfQWxsb2M6OmFsbG9jYXRlKF9fbiArIF9TX2V4dHJhKTsKICAgICooc2l6ZV90 KilfX3Jlc3VsdCA9IF9fbjsKICAgIHJldHVybiBfX3Jlc3VsdCArIF9TX2V4dHJhOwogIH0KCiAg c3RhdGljIHZvaWQgZGVhbGxvY2F0ZSh2b2lkKiBfX3AsIHNpemVfdCBfX24pCiAgewogICAgY2hh ciogX19yZWFsX3AgPSAoY2hhciopX19wIC0gX1NfZXh0cmE7CiAgICAoKHZvaWQpICgoICooc2l6 ZV90KilfX3JlYWxfcCA9PSBfX24gKSA/IDAgOgkoX19hc3NlcnRfZmFpbCAoIiooc2l6ZV90Kilf X3JlYWxfcCA9PSBfX24iICwJIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu dS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIsIDI2MywgX19Q UkVUVFlfRlVOQ1RJT05fXyApLCAwKSkpIDsKICAgIF9BbGxvYzo6ZGVhbGxvY2F0ZShfX3JlYWxf cCwgX19uICsgX1NfZXh0cmEpOwogIH0KCiAgc3RhdGljIHZvaWQqIHJlYWxsb2NhdGUodm9pZCog X19wLCBzaXplX3QgX19vbGRfc3osIHNpemVfdCBfX25ld19zeikKICB7CiAgICBjaGFyKiBfX3Jl YWxfcCA9IChjaGFyKilfX3AgLSBfU19leHRyYTsKICAgICgodm9pZCkgKCggKihzaXplX3QqKV9f cmVhbF9wID09IF9fb2xkX3N6ICkgPyAwIDoJKF9fYXNzZXJ0X2ZhaWwgKCIqKHNpemVfdCopX19y ZWFsX3AgPT0gX19vbGRfc3oiICwJIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4 LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIsIDI3MCwg X19QUkVUVFlfRlVOQ1RJT05fXyApLCAwKSkpIDsKICAgIGNoYXIqIF9fcmVzdWx0ID0gKGNoYXIq KQogICAgICBfQWxsb2M6OnJlYWxsb2NhdGUoX19yZWFsX3AsIF9fb2xkX3N6ICsgX1NfZXh0cmEs IF9fbmV3X3N6ICsgX1NfZXh0cmEpOwogICAgKihzaXplX3QqKV9fcmVzdWx0ID0gX19uZXdfc3o7 CiAgICByZXR1cm4gX19yZXN1bHQgKyBfU19leHRyYTsKICB9Cgp9OwoKCgoKCgoKCgoKIAogCiAK IAogCiAKIAogCiAKIAogCiAKIAogCgogCiAKIAogCiAKIAogCiAKIAoKCgoKCgoKdGVtcGxhdGUg PGJvb2wgdGhyZWFkcywgaW50IGluc3Q+CmNsYXNzIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZSB7 Cgpwcml2YXRlOgogICAKICAgCgogICAgZW51bSB7X0FMSUdOID0gOH07CiAgICBlbnVtIHtfTUFY X0JZVEVTID0gMTI4fTsKICAgIGVudW0ge19ORlJFRUxJU1RTID0gX01BWF9CWVRFUy9fQUxJR059 OwoKICBzdGF0aWMgc2l6ZV90CiAgX1Nfcm91bmRfdXAoc2l6ZV90IF9fYnl0ZXMpCiAgICB7IHJl dHVybiAoKChfX2J5dGVzKSArIF9BTElHTi0xKSAmIH4oX0FMSUdOIC0gMSkpOyB9Cgpwcml2YXRl IDoKICB1bmlvbiBfT2JqIHsKICAgICAgICB1bmlvbiBfT2JqKiBfTV9mcmVlX2xpc3RfbGluazsK ICAgICAgICBjaGFyIF9NX2NsaWVudF9kYXRhWzFdOyAgICAgCiAgfTsKcHJpdmF0ZToKCgoKCiAg ICBzdGF0aWMgX09iaiogdm9sYXRpbGUgIF9TX2ZyZWVfbGlzdFtfTkZSRUVMSVNUU107CgogIHN0 YXRpYyAgc2l6ZV90IF9TX2ZyZWVsaXN0X2luZGV4KHNpemVfdCBfX2J5dGVzKSB7CiAgICAgICAg cmV0dXJuICgoKF9fYnl0ZXMpICsgX0FMSUdOLTEpL19BTElHTiAtIDEpOwogIH0KCiAgIAogIHN0 YXRpYyB2b2lkKiBfU19yZWZpbGwoc2l6ZV90IF9fbik7CiAgIAogICAKICBzdGF0aWMgY2hhciog X1NfY2h1bmtfYWxsb2Moc2l6ZV90IF9fc2l6ZSwgaW50JiBfX25vYmpzKTsKCiAgIAogIHN0YXRp YyBjaGFyKiBfU19zdGFydF9mcmVlOwogIHN0YXRpYyBjaGFyKiBfU19lbmRfZnJlZTsKICBzdGF0 aWMgc2l6ZV90IF9TX2hlYXBfc2l6ZTsKCgoKCgoKCgogICAgc3RhdGljIHB0aHJlYWRfbXV0ZXhf dCBfU19ub2RlX2FsbG9jYXRvcl9sb2NrOwoKCgoKCgojIDM4OSAiL2x1c3IvZ251L2xpYi9nY2Mt bGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0 bF9hbGxvYy5oIiAzCgoKICAgIGNsYXNzIF9Mb2NrIHsKICAgICAgICBwdWJsaWM6CiAgICAgICAg ICAgIF9Mb2NrKCkgeyBpZiAodGhyZWFkcykgcHRocmVhZF9tdXRleF9sb2NrKCZfU19ub2RlX2Fs bG9jYXRvcl9sb2NrKSA7IH0KICAgICAgICAgICAgfl9Mb2NrKCkgeyBpZiAodGhyZWFkcykgcHRo cmVhZF9tdXRleF91bmxvY2soJl9TX25vZGVfYWxsb2NhdG9yX2xvY2spIDsgfQogICAgfTsKICAg IGZyaWVuZCBjbGFzcyBfTG9jazsKCnB1YmxpYzoKCiAgIAogIHN0YXRpYyB2b2lkKiBhbGxvY2F0 ZShzaXplX3QgX19uKQogIHsKICAgIF9PYmoqIHZvbGF0aWxlICogX19teV9mcmVlX2xpc3Q7CiAg ICBfT2JqKiAgIF9fcmVzdWx0OwoKICAgIGlmIChfX24gPiAoc2l6ZV90KSBfTUFYX0JZVEVTKSB7 CiAgICAgICAgcmV0dXJuKG1hbGxvY19hbGxvYzo6YWxsb2NhdGUoX19uKSk7CiAgICB9CiAgICBf X215X2ZyZWVfbGlzdCA9IF9TX2ZyZWVfbGlzdCArIF9TX2ZyZWVsaXN0X2luZGV4KF9fbik7CiAg ICAgCiAgICAgCiAgICAgCgogICAgICAgICAKICAgICAgICBfTG9jayBfX2xvY2tfaW5zdGFuY2U7 CgogICAgX19yZXN1bHQgPSAqX19teV9mcmVlX2xpc3Q7CiAgICBpZiAoX19yZXN1bHQgPT0gMCkg ewogICAgICAgIHZvaWQqIF9fciA9IF9TX3JlZmlsbChfU19yb3VuZF91cChfX24pKTsKICAgICAg ICByZXR1cm4gX19yOwogICAgfQogICAgKl9fbXlfZnJlZV9saXN0ID0gX19yZXN1bHQgLT4gX01f ZnJlZV9saXN0X2xpbms7CiAgICByZXR1cm4gKF9fcmVzdWx0KTsKICB9OwoKICAgCiAgc3RhdGlj IHZvaWQgZGVhbGxvY2F0ZSh2b2lkKiBfX3AsIHNpemVfdCBfX24pCiAgewogICAgX09iaiogX19x ID0gKF9PYmoqKV9fcDsKICAgIF9PYmoqIHZvbGF0aWxlICogX19teV9mcmVlX2xpc3Q7CgogICAg aWYgKF9fbiA+IChzaXplX3QpIF9NQVhfQllURVMpIHsKICAgICAgICBtYWxsb2NfYWxsb2M6OmRl YWxsb2NhdGUoX19wLCBfX24pOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIF9fbXlfZnJlZV9s aXN0ID0gX1NfZnJlZV9saXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgoX19uKTsKICAgICAKCiAgICAg ICAgIAogICAgICAgIF9Mb2NrIF9fbG9ja19pbnN0YW5jZTsKCiAgICBfX3EgLT4gX01fZnJlZV9s aXN0X2xpbmsgPSAqX19teV9mcmVlX2xpc3Q7CiAgICAqX19teV9mcmVlX2xpc3QgPSBfX3E7CiAg ICAgCiAgfQoKICBzdGF0aWMgdm9pZCogcmVhbGxvY2F0ZSh2b2lkKiBfX3AsIHNpemVfdCBfX29s ZF9zeiwgc2l6ZV90IF9fbmV3X3N6KTsKCn0gOwoKdHlwZWRlZiBfX2RlZmF1bHRfYWxsb2NfdGVt cGxhdGU8IHRydWUgLCAwPiBhbGxvYzsKdHlwZWRlZiBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8 ZmFsc2UsIDA+IHNpbmdsZV9jbGllbnRfYWxsb2M7CgoKCiAKIAogCiAKdGVtcGxhdGUgPGJvb2wg X190aHJlYWRzLCBpbnQgX19pbnN0PgpjaGFyKgpfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190 aHJlYWRzLCBfX2luc3Q+OjpfU19jaHVua19hbGxvYyhzaXplX3QgX19zaXplLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIF9f bm9ianMpCnsKICAgIGNoYXIqIF9fcmVzdWx0OwogICAgc2l6ZV90IF9fdG90YWxfYnl0ZXMgPSBf X3NpemUgKiBfX25vYmpzOwogICAgc2l6ZV90IF9fYnl0ZXNfbGVmdCA9IF9TX2VuZF9mcmVlIC0g X1Nfc3RhcnRfZnJlZTsKCiAgICBpZiAoX19ieXRlc19sZWZ0ID49IF9fdG90YWxfYnl0ZXMpIHsK ICAgICAgICBfX3Jlc3VsdCA9IF9TX3N0YXJ0X2ZyZWU7CiAgICAgICAgX1Nfc3RhcnRfZnJlZSAr PSBfX3RvdGFsX2J5dGVzOwogICAgICAgIHJldHVybihfX3Jlc3VsdCk7CiAgICB9IGVsc2UgaWYg KF9fYnl0ZXNfbGVmdCA+PSBfX3NpemUpIHsKICAgICAgICBfX25vYmpzID0gKGludCkoX19ieXRl c19sZWZ0L19fc2l6ZSk7CiAgICAgICAgX190b3RhbF9ieXRlcyA9IF9fc2l6ZSAqIF9fbm9ianM7 CiAgICAgICAgX19yZXN1bHQgPSBfU19zdGFydF9mcmVlOwogICAgICAgIF9TX3N0YXJ0X2ZyZWUg Kz0gX190b3RhbF9ieXRlczsKICAgICAgICByZXR1cm4oX19yZXN1bHQpOwogICAgfSBlbHNlIHsK ICAgICAgICBzaXplX3QgX19ieXRlc190b19nZXQgPQoJICAyICogX190b3RhbF9ieXRlcyArIF9T X3JvdW5kX3VwKF9TX2hlYXBfc2l6ZSA+PiA0KTsKICAgICAgICAgCiAgICAgICAgaWYgKF9fYnl0 ZXNfbGVmdCA+IDApIHsKICAgICAgICAgICAgX09iaiogdm9sYXRpbGUgKiBfX215X2ZyZWVfbGlz dCA9CiAgICAgICAgICAgICAgICAgICAgICAgIF9TX2ZyZWVfbGlzdCArIF9TX2ZyZWVsaXN0X2lu ZGV4KF9fYnl0ZXNfbGVmdCk7CgogICAgICAgICAgICAoKF9PYmoqKV9TX3N0YXJ0X2ZyZWUpIC0+ IF9NX2ZyZWVfbGlzdF9saW5rID0gKl9fbXlfZnJlZV9saXN0OwogICAgICAgICAgICAqX19teV9m cmVlX2xpc3QgPSAoX09iaiopX1Nfc3RhcnRfZnJlZTsKICAgICAgICB9CiAgICAgICAgX1Nfc3Rh cnRfZnJlZSA9IChjaGFyKiltYWxsb2MoX19ieXRlc190b19nZXQpOwogICAgICAgIGlmICgwID09 IF9TX3N0YXJ0X2ZyZWUpIHsKICAgICAgICAgICAgc2l6ZV90IF9faTsKICAgICAgICAgICAgX09i aiogdm9sYXRpbGUgKiBfX215X2ZyZWVfbGlzdDsKCSAgICBfT2JqKiBfX3A7CiAgICAgICAgICAg ICAKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAoX19pID0gX19z aXplOyBfX2kgPD0gX01BWF9CWVRFUzsgX19pICs9IF9BTElHTikgewogICAgICAgICAgICAgICAg X19teV9mcmVlX2xpc3QgPSBfU19mcmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChfX2kpOwog ICAgICAgICAgICAgICAgX19wID0gKl9fbXlfZnJlZV9saXN0OwogICAgICAgICAgICAgICAgaWYg KDAgIT0gX19wKSB7CiAgICAgICAgICAgICAgICAgICAgKl9fbXlfZnJlZV9saXN0ID0gX19wIC0+ IF9NX2ZyZWVfbGlzdF9saW5rOwogICAgICAgICAgICAgICAgICAgIF9TX3N0YXJ0X2ZyZWUgPSAo Y2hhciopX19wOwogICAgICAgICAgICAgICAgICAgIF9TX2VuZF9mcmVlID0gX1Nfc3RhcnRfZnJl ZSArIF9faTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4oX1NfY2h1bmtfYWxsb2MoX19zaXpl LCBfX25vYmpzKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoJICAgIF9TX2VuZF9mcmVlID0gMDsJIAog ICAgICAgICAgICBfU19zdGFydF9mcmVlID0gKGNoYXIqKW1hbGxvY19hbGxvYzo6YWxsb2NhdGUo X19ieXRlc190b19nZXQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICAgICAg IAogICAgICAgIH0KICAgICAgICBfU19oZWFwX3NpemUgKz0gX19ieXRlc190b19nZXQ7CiAgICAg ICAgX1NfZW5kX2ZyZWUgPSBfU19zdGFydF9mcmVlICsgX19ieXRlc190b19nZXQ7CiAgICAgICAg cmV0dXJuKF9TX2NodW5rX2FsbG9jKF9fc2l6ZSwgX19ub2JqcykpOwogICAgfQp9CgoKIAogCiAK dGVtcGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0Pgp2b2lkKgpfX2RlZmF1bHRfYWxs b2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19yZWZpbGwoc2l6ZV90IF9fbikKewog ICAgaW50IF9fbm9ianMgPSAyMDsKICAgIGNoYXIqIF9fY2h1bmsgPSBfU19jaHVua19hbGxvYyhf X24sIF9fbm9ianMpOwogICAgX09iaiogdm9sYXRpbGUgKiBfX215X2ZyZWVfbGlzdDsKICAgIF9P YmoqIF9fcmVzdWx0OwogICAgX09iaiogX19jdXJyZW50X29iajsKICAgIF9PYmoqIF9fbmV4dF9v Ymo7CiAgICBpbnQgX19pOwoKICAgIGlmICgxID09IF9fbm9ianMpIHJldHVybihfX2NodW5rKTsK ICAgIF9fbXlfZnJlZV9saXN0ID0gX1NfZnJlZV9saXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgoX19u KTsKCiAgICAgCiAgICAgIF9fcmVzdWx0ID0gKF9PYmoqKV9fY2h1bms7CiAgICAgICpfX215X2Zy ZWVfbGlzdCA9IF9fbmV4dF9vYmogPSAoX09iaiopKF9fY2h1bmsgKyBfX24pOwogICAgICBmb3Ig KF9faSA9IDE7IDsgX19pKyspIHsKICAgICAgICBfX2N1cnJlbnRfb2JqID0gX19uZXh0X29iajsK ICAgICAgICBfX25leHRfb2JqID0gKF9PYmoqKSgoY2hhciopX19uZXh0X29iaiArIF9fbik7CiAg ICAgICAgaWYgKF9fbm9ianMgLSAxID09IF9faSkgewogICAgICAgICAgICBfX2N1cnJlbnRfb2Jq IC0+IF9NX2ZyZWVfbGlzdF9saW5rID0gMDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfSBl bHNlIHsKICAgICAgICAgICAgX19jdXJyZW50X29iaiAtPiBfTV9mcmVlX2xpc3RfbGluayA9IF9f bmV4dF9vYmo7CiAgICAgICAgfQogICAgICB9CiAgICByZXR1cm4oX19yZXN1bHQpOwp9Cgp0ZW1w bGF0ZSA8Ym9vbCB0aHJlYWRzLCBpbnQgaW5zdD4Kdm9pZCoKX19kZWZhdWx0X2FsbG9jX3RlbXBs YXRlPHRocmVhZHMsIGluc3Q+OjpyZWFsbG9jYXRlKHZvaWQqIF9fcCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX29sZF9zeiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf X25ld19zeikKewogICAgdm9pZCogX19yZXN1bHQ7CiAgICBzaXplX3QgX19jb3B5X3N6OwoKICAg IGlmIChfX29sZF9zeiA+IChzaXplX3QpIF9NQVhfQllURVMgJiYgX19uZXdfc3ogPiAoc2l6ZV90 KSBfTUFYX0JZVEVTKSB7CiAgICAgICAgcmV0dXJuKHJlYWxsb2MoX19wLCBfX25ld19zeikpOwog ICAgfQogICAgaWYgKF9TX3JvdW5kX3VwKF9fb2xkX3N6KSA9PSBfU19yb3VuZF91cChfX25ld19z eikpIHJldHVybihfX3ApOwogICAgX19yZXN1bHQgPSBhbGxvY2F0ZShfX25ld19zeik7CiAgICBf X2NvcHlfc3ogPSBfX25ld19zeiA+IF9fb2xkX3N6PyBfX29sZF9zeiA6IF9fbmV3X3N6OwogICAg bWVtY3B5KF9fcmVzdWx0LCBfX3AsIF9fY29weV9zeik7CiAgICBkZWFsbG9jYXRlKF9fcCwgX19v bGRfc3opOwogICAgcmV0dXJuKF9fcmVzdWx0KTsKfQoKCiAgICB0ZW1wbGF0ZSA8Ym9vbCBfX3Ro cmVhZHMsIGludCBfX2luc3Q+CiAgICBwdGhyZWFkX211dGV4X3QKICAgIF9fZGVmYXVsdF9hbGxv Y190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX25vZGVfYWxsb2NhdG9yX2xvY2sKICAg ICAgICA9IHswLCAwLCAwLCBQVEhSRUFEX01VVEVYX0ZBU1RfTlAsIHswLCAwfX0gOwoKCgoKCgoK CgojIDYwMiAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMS8u Li8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAzCgoKIyA2ODkgIi9sdXNyL2du dS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVk ZS9nKystMy9zdGxfYWxsb2MuaCIgMwoKCnRlbXBsYXRlIDxib29sIF9fdGhyZWFkcywgaW50IF9f aW5zdD4KY2hhciogX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6 X1Nfc3RhcnRfZnJlZSA9IDA7Cgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+ CmNoYXIqIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX2Vu ZF9mcmVlID0gMDsKCnRlbXBsYXRlIDxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4Kc2l6ZV90 IF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX2hlYXBfc2l6 ZSA9IDA7Cgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+Cl9fZGVmYXVsdF9h bGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9PYmoqIHZvbGF0aWxlIApfX2RlZmF1 bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+IDo6X1NfZnJlZV9saXN0WwogICAg X05GUkVFTElTVFMKXSA9IHswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw LCAwLCAwLCB9OwogCiAKIAoKCgoKCgoKCgoKIAogCiAKIAogCiAKIAoKCgp0ZW1wbGF0ZSA8Y2xh c3MgX1RwPgpjbGFzcyBhbGxvY2F0b3IgewogIHR5cGVkZWYgYWxsb2MgX0FsbG9jOyAgICAgICAg ICAgCnB1YmxpYzoKICB0eXBlZGVmIHNpemVfdCAgICAgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRy ZGlmZl90ICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAgICAgIHBvaW50ZXI7CiAg dHlwZWRlZiBjb25zdCBfVHAqIGNvbnN0X3BvaW50ZXI7CiAgdHlwZWRlZiBfVHAmICAgICAgIHJl ZmVyZW5jZTsKICB0eXBlZGVmIGNvbnN0IF9UcCYgY29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYg X1RwICAgICAgICB2YWx1ZV90eXBlOwoKICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4gc3RydWN0IHJl YmluZCB7CiAgICB0eXBlZGVmIGFsbG9jYXRvcjxfVHAxPiBvdGhlcjsKICB9OwoKICBhbGxvY2F0 b3IoKSB0aHJvdygpICB7fQogIGFsbG9jYXRvcihjb25zdCBhbGxvY2F0b3ImKSB0aHJvdygpICB7 fQogIHRlbXBsYXRlIDxjbGFzcyBfVHAxPiBhbGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yPF9UcDE+ JikgdGhyb3coKSAge30KICB+YWxsb2NhdG9yKCkgdGhyb3coKSAge30KCiAgcG9pbnRlciBhZGRy ZXNzKHJlZmVyZW5jZSBfX3gpIGNvbnN0IHsgcmV0dXJuICZfX3g7IH0KICBjb25zdF9wb2ludGVy IGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIF9feCkgY29uc3QgeyByZXR1cm4gJl9feDsgfQoKICAg CiAgIAogIF9UcCogYWxsb2NhdGUoc2l6ZV90eXBlIF9fbiwgY29uc3Qgdm9pZCogPSAwKSB7CiAg ICByZXR1cm4gX19uICE9IDAgPyBzdGF0aWNfY2FzdDxfVHAqPihfQWxsb2M6OmFsbG9jYXRlKF9f biAqIHNpemVvZihfVHApKSkKICAgICAgICAgICAgICAgICAgICA6IDA7CiAgfQoKICAgCiAgdm9p ZCBkZWFsbG9jYXRlKHBvaW50ZXIgX19wLCBzaXplX3R5cGUgX19uKQogICAgeyBfQWxsb2M6OmRl YWxsb2NhdGUoX19wLCBfX24gKiBzaXplb2YoX1RwKSk7IH0KCiAgc2l6ZV90eXBlIG1heF9zaXpl KCkgY29uc3QgdGhyb3coKSAKICAgIHsgcmV0dXJuIHNpemVfdCgtMSkgLyBzaXplb2YoX1RwKTsg fQoKICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIF9fcCwgY29uc3QgX1RwJiBfX3ZhbCkgeyBuZXco X19wKSBfVHAoX192YWwpOyB9CiAgdm9pZCBkZXN0cm95KHBvaW50ZXIgX19wKSB7IF9fcC0+fl9U cCgpOyB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIGFsbG9jYXRvcjx2b2lkPiB7CiAgdHlwZWRlZiBz aXplX3QgICAgICBzaXplX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgICBkaWZmZXJlbmNlX3R5 cGU7CiAgdHlwZWRlZiB2b2lkKiAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgY29uc3Qgdm9pZCog Y29uc3RfcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgIHZhbHVlX3R5cGU7CgogIHRlbXBs YXRlIDxjbGFzcyBfVHAxPiBzdHJ1Y3QgcmViaW5kIHsKICAgIHR5cGVkZWYgYWxsb2NhdG9yPF9U cDE+IG90aGVyOwogIH07Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxp bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGFsbG9jYXRvcjxfVDE+JiwgY29uc3QgYWxsb2NhdG9y PF9UMj4mKQp7CiAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9U Mj4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBhbGxvY2F0b3I8X1QxPiYsIGNvbnN0IGFs bG9jYXRvcjxfVDI+JikKewogIHJldHVybiBmYWxzZTsKfQoKIAogCiAKIAogCiAKCnRlbXBsYXRl IDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4Kc3RydWN0IF9fYWxsb2NhdG9yIHsKICBfQWxsb2Mg X191bmRlcmx5aW5nX2FsbG9jOwoKICB0eXBlZGVmIHNpemVfdCAgICBzaXplX3R5cGU7CiAgdHlw ZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICBwb2lu dGVyOwogIHR5cGVkZWYgY29uc3QgX1RwKiBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgX1RwJiAg ICAgICByZWZlcmVuY2U7CiAgdHlwZWRlZiBjb25zdCBfVHAmIGNvbnN0X3JlZmVyZW5jZTsKICB0 eXBlZGVmIF9UcCAgICAgICAgdmFsdWVfdHlwZTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+IHN0 cnVjdCByZWJpbmQgewogICAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAxLCBfQWxsb2M+IG90aGVy OwogIH07CgogIF9fYWxsb2NhdG9yKCkgdGhyb3coKSAge30KICBfX2FsbG9jYXRvcihjb25zdCBf X2FsbG9jYXRvciYgX19hKSB0aHJvdygpIAogICAgOiBfX3VuZGVybHlpbmdfYWxsb2MoX19hLl9f dW5kZXJseWluZ19hbGxvYykge30KICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4KICBfX2FsbG9jYXRv cihjb25zdCBfX2FsbG9jYXRvcjxfVHAxLCBfQWxsb2M+JiBfX2EpIHRocm93KCkgCiAgICA6IF9f dW5kZXJseWluZ19hbGxvYyhfX2EuX191bmRlcmx5aW5nX2FsbG9jKSB7fQogIH5fX2FsbG9jYXRv cigpIHRocm93KCkgIHt9CgogIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgX194KSBjb25zdCB7 IHJldHVybiAmX194OyB9CiAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSBf X3gpIGNvbnN0IHsgcmV0dXJuICZfX3g7IH0KCiAgIAogIF9UcCogYWxsb2NhdGUoc2l6ZV90eXBl IF9fbiwgY29uc3Qgdm9pZCogPSAwKSB7CiAgICByZXR1cm4gX19uICE9IDAKICAgICAgICA/IHN0 YXRpY19jYXN0PF9UcCo+KF9fdW5kZXJseWluZ19hbGxvYy5hbGxvY2F0ZShfX24gKiBzaXplb2Yo X1RwKSkpCiAgICAgICAgOiAwOwogIH0KCiAgIAogIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIF9f cCwgc2l6ZV90eXBlIF9fbikKICAgIHsgX191bmRlcmx5aW5nX2FsbG9jLmRlYWxsb2NhdGUoX19w LCBfX24gKiBzaXplb2YoX1RwKSk7IH0KCiAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgdGhy b3coKSAKICAgIHsgcmV0dXJuIHNpemVfdCgtMSkgLyBzaXplb2YoX1RwKTsgfQoKICB2b2lkIGNv bnN0cnVjdChwb2ludGVyIF9fcCwgY29uc3QgX1RwJiBfX3ZhbCkgeyBuZXcoX19wKSBfVHAoX192 YWwpOyB9CiAgdm9pZCBkZXN0cm95KHBvaW50ZXIgX19wKSB7IF9fcC0+fl9UcCgpOyB9Cn07Cgp0 ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPgpjbGFzcyBfX2FsbG9jYXRvcjx2b2lkLCBfQWxsb2M+IHsK ICB0eXBlZGVmIHNpemVfdCAgICAgIHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCAgIGRp ZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQqICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBj b25zdCB2b2lkKiBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgdmFsdWVfdHlw ZTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+IHN0cnVjdCByZWJpbmQgewogICAgdHlwZWRlZiBf X2FsbG9jYXRvcjxfVHAxLCBfQWxsb2M+IG90aGVyOwogIH07Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg X1RwLCBjbGFzcyBfQWxsb2M+CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgX19hbGxvY2F0 b3I8X1RwLCBfQWxsb2M+JiBfX2ExLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fYWxs b2NhdG9yPF9UcCwgX0FsbG9jPiYgX19hMikKewogIHJldHVybiBfX2ExLl9fdW5kZXJseWluZ19h bGxvYyA9PSBfX2EyLl9fdW5kZXJseWluZ19hbGxvYzsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVHAs IGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBfX2FsbG9jYXRvcjxf VHAsIF9BbGxvYz4mIF9fYTEsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX19hbGxvY2F0 b3I8X1RwLCBfQWxsb2M+JiBfX2EyKQp7CiAgcmV0dXJuIF9fYTEuX191bmRlcmx5aW5nX2FsbG9j ICE9IF9fYTIuX191bmRlcmx5aW5nX2FsbG9jOwp9CgoKIAogCiAKCnRlbXBsYXRlIDxpbnQgaW5z dD4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxp bnN0PiYsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxh dGU8aW5zdD4mKQp7CiAgcmV0dXJuIHRydWU7Cn0KCgp0ZW1wbGF0ZSA8aW50IF9faW5zdD4KaW5s aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ JiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxf X2luc3Q+JikKewogIHJldHVybiBmYWxzZTsKfQoKCgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMs IGludCBfX2luc3Q+CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgX19kZWZhdWx0X2FsbG9j X3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiYsCiAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiYpCnsKICByZXR1 cm4gdHJ1ZTsKfQoKCnRlbXBsYXRlIDxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4KaW5saW5l IGJvb2wgb3BlcmF0b3IhPShjb25zdCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRz LCBfX2luc3Q+JiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX2RlZmF1bHRfYWxsb2Nf dGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+JikKewogIHJldHVybiBmYWxzZTsKfQoKCgp0ZW1w bGF0ZSA8Y2xhc3MgX0FsbG9jPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGRlYnVnX2Fs bG9jPF9BbGxvYz4mLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlYnVnX2FsbG9jPF9B bGxvYz4mKSB7CiAgcmV0dXJuIHRydWU7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPgppbmxp bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGRlYnVnX2FsbG9jPF9BbGxvYz4mLAogICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGRlYnVnX2FsbG9jPF9BbGxvYz4mKSB7CiAgcmV0dXJuIGZhbHNl Owp9CgoKIAogCiAKIAogCiAKCiAKIAogCiAKIAogCgogCiAKIAogCiAKIAogCiAKIAogCiAKCiAK CnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvY2F0b3I+CnN0cnVjdCBfQWxsb2NfdHJh aXRzCnsKICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSBmYWxzZTsKICB0eXBl ZGVmIHR5cGVuYW1lIF9BbGxvY2F0b3I6OiAgIHJlYmluZDxfVHA+OjpvdGhlcgogICAgICAgICAg YWxsb2NhdG9yX3R5cGU7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2NhdG9y Pgpjb25zdCBib29sIF9BbGxvY190cmFpdHM8X1RwLCBfQWxsb2NhdG9yPjo6X1NfaW5zdGFuY2Vs ZXNzOwoKIAoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX1RwMT4Kc3RydWN0IF9BbGxvY190 cmFpdHM8X1RwLCBhbGxvY2F0b3I8X1RwMT4gPgp7CiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5z dGFuY2VsZXNzID0gdHJ1ZTsKICB0eXBlZGVmIHNpbXBsZV9hbGxvYzxfVHAsIGFsbG9jPiBfQWxs b2NfdHlwZTsKICB0eXBlZGVmIGFsbG9jYXRvcjxfVHA+IGFsbG9jYXRvcl90eXBlOwp9OwoKIAoK dGVtcGxhdGUgPGNsYXNzIF9UcCwgaW50IF9faW5zdD4Kc3RydWN0IF9BbGxvY190cmFpdHM8X1Rw LCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4KewogIHN0YXRpYyBjb25zdCBib29s IF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBfX21h bGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gX0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBfX2Fs bG9jYXRvcjxfVHAsIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9faW5zdD4gPiBhbGxvY2F0b3Jf dHlwZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBib29sIF9fdGhyZWFkcywgaW50IF9faW5z dD4Kc3RydWN0IF9BbGxvY190cmFpdHM8X1RwLCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190 aHJlYWRzLCBfX2luc3Q+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9 IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxh dGU8X190aHJlYWRzLCBfX2luc3Q+ID4KICAgICAgICAgIF9BbGxvY190eXBlOwogIHR5cGVkZWYg X19hbGxvY2F0b3I8X1RwLCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2lu c3Q+ID4KICAgICAgICAgIGFsbG9jYXRvcl90eXBlOwp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVHAs IGNsYXNzIF9BbGxvYz4Kc3RydWN0IF9BbGxvY190cmFpdHM8X1RwLCBkZWJ1Z19hbGxvYzxfQWxs b2M+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAgdHlw ZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBkZWJ1Z19hbGxvYzxfQWxsb2M+ID4gX0FsbG9jX3R5cGU7 CiAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAsIGRlYnVnX2FsbG9jPF9BbGxvYz4gPiBhbGxvY2F0 b3JfdHlwZTsKfTsKCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX1RwMSwgaW50IF9f aW5zdD4Kc3RydWN0IF9BbGxvY190cmFpdHM8X1RwLAogICAgICAgICAgICAgICAgICAgICBfX2Fs bG9jYXRvcjxfVHAxLCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gPgp7CiAgc3Rh dGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsKICB0eXBlZGVmIHNpbXBsZV9h bGxvYzxfVHAsIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9faW5zdD4gPiBfQWxsb2NfdHlwZTsK ICB0eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0 PiA+IGFsbG9jYXRvcl90eXBlOwp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9UcDEs IGJvb2wgX190aHIsIGludCBfX2luc3Q+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwKICAgICAg ICAgICAgICAgICAgICAgIF9fYWxsb2NhdG9yPF9UcDEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHIsIF9faW5zdD4gPiA+CnsK ICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogIHR5cGVkZWYgc2lt cGxlX2FsbG9jPF9UcCwgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyLF9faW5zdD4gPgog ICAgICAgICAgX0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAsIF9fZGVmYXVs dF9hbGxvY190ZW1wbGF0ZTxfX3RocixfX2luc3Q+ID4KICAgICAgICAgIGFsbG9jYXRvcl90eXBl Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9UcDEsIGNsYXNzIF9BbGxvYz4Kc3Ry dWN0IF9BbGxvY190cmFpdHM8X1RwLCBfX2FsbG9jYXRvcjxfVHAxLCBkZWJ1Z19hbGxvYzxfQWxs b2M+ID4gPgp7CiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsKICB0 eXBlZGVmIHNpbXBsZV9hbGxvYzxfVHAsIGRlYnVnX2FsbG9jPF9BbGxvYz4gPiBfQWxsb2NfdHlw ZTsKICB0eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwgZGVidWdfYWxsb2M8X0FsbG9jPiA+IGFsbG9j YXRvcl90eXBlOwp9OwoKCgoKCgoKCiAKCgoKCgogCiAKIAojIDIxICIvbHVzci9nbnUvbGliL2dj Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMv YWxsb2MuaCIgMiAzCgoKCiMgNDAgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4 LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9hbGxvYy5oIiAzCgoKCgogCiAK IAojIDMxICIvbHVzci9nbnUvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4u Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvdmVjdG9yLmgiIDIgMwoKIyAxICIvbHVzci9nbnUvbGli L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4xLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr LTMvc3RsX3ZlY3Rvci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgog IAoKCgoKCgogCiAKIAogCiAKCgoKIAp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2Nh dG9yLCBib29sIF9Jc1N0YXRpYz4KY2xhc3MgX1ZlY3Rvcl9hbGxvY19iYXNlIHsKcHVibGljOgog IHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvY2F0b3I+OjphbGxvY2F0 b3JfdHlwZQogICAgICAgICAgYWxsb2NhdG9yX3R5cGU7CiAgYWxsb2NhdG9yX3R5cGUgZ2V0X2Fs bG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIF9NX2RhdGFfYWxsb2NhdG9yOyB9CgogIF9WZWN0b3Jf YWxsb2NfYmFzZShjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKQogICAgOiBfTV9kYXRhX2FsbG9j YXRvcihfX2EpLCBfTV9zdGFydCgwKSwgX01fZmluaXNoKDApLCBfTV9lbmRfb2Zfc3RvcmFnZSgw KSAKICB7fQogIApwcm90ZWN0ZWQ6CiAgYWxsb2NhdG9yX3R5cGUgX01fZGF0YV9hbGxvY2F0b3I7 CiAgX1RwKiBfTV9zdGFydDsKICBfVHAqIF9NX2ZpbmlzaDsKICBfVHAqIF9NX2VuZF9vZl9zdG9y YWdlOwoKICBfVHAqIF9NX2FsbG9jYXRlKHNpemVfdCBfX24pCiAgICB7IHJldHVybiBfTV9kYXRh X2FsbG9jYXRvci5hbGxvY2F0ZShfX24pOyB9CiAgdm9pZCBfTV9kZWFsbG9jYXRlKF9UcCogX19w LCBzaXplX3QgX19uKQogICAgeyBpZiAoX19wKSBfTV9kYXRhX2FsbG9jYXRvci5kZWFsbG9jYXRl KF9fcCwgX19uKTsgfQp9OwoKIAogCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvY2F0 b3I+CmNsYXNzIF9WZWN0b3JfYWxsb2NfYmFzZTxfVHAsIF9BbGxvY2F0b3IsIHRydWU+IHsKcHVi bGljOgogIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvY2F0b3I+Ojph bGxvY2F0b3JfdHlwZQogICAgICAgICAgYWxsb2NhdG9yX3R5cGU7CiAgYWxsb2NhdG9yX3R5cGUg Z2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIGFsbG9jYXRvcl90eXBlKCk7IH0KCiAgX1Zl Y3Rvcl9hbGxvY19iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJikKICAgIDogX01fc3RhcnQoMCks IF9NX2ZpbmlzaCgwKSwgX01fZW5kX29mX3N0b3JhZ2UoMCkgCiAge30KICAKcHJvdGVjdGVkOgog IF9UcCogX01fc3RhcnQ7CiAgX1RwKiBfTV9maW5pc2g7CiAgX1RwKiBfTV9lbmRfb2Zfc3RvcmFn ZTsKCiAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzPF9UcCwgX0FsbG9jYXRvcj46Ol9B bGxvY190eXBlIF9BbGxvY190eXBlOwogIF9UcCogX01fYWxsb2NhdGUoc2l6ZV90IF9fbikKICAg IHsgcmV0dXJuIF9BbGxvY190eXBlOjphbGxvY2F0ZShfX24pOyB9CiAgdm9pZCBfTV9kZWFsbG9j YXRlKF9UcCogX19wLCBzaXplX3QgX19uKQogICAgeyBfQWxsb2NfdHlwZTo6ZGVhbGxvY2F0ZShf X3AsIF9fbik7fQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpzdHJ1Y3Qg X1ZlY3Rvcl9iYXNlCiAgOiBwdWJsaWMgX1ZlY3Rvcl9hbGxvY19iYXNlPF9UcCwgX0FsbG9jLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQWxsb2NfdHJhaXRzPF9UcCwgX0FsbG9jPjo6 X1NfaW5zdGFuY2VsZXNzPgp7CiAgdHlwZWRlZiBfVmVjdG9yX2FsbG9jX2Jhc2U8X1RwLCBfQWxs b2MsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9BbGxvY190cmFpdHM8X1RwLCBfQWxs b2M+OjpfU19pbnN0YW5jZWxlc3M+CiAgICAgICAgICBfQmFzZTsKICB0eXBlZGVmIHR5cGVuYW1l IF9CYXNlOjphbGxvY2F0b3JfdHlwZSBhbGxvY2F0b3JfdHlwZTsKCiAgX1ZlY3Rvcl9iYXNlKGNv bnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpIDogX0Jhc2UoX19hKSB7fQogIF9WZWN0b3JfYmFzZShz aXplX3QgX19uLCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKSA6IF9CYXNlKF9fYSkgewogICAg X01fc3RhcnQgPSBfTV9hbGxvY2F0ZShfX24pOwogICAgX01fZmluaXNoID0gX01fc3RhcnQ7CiAg ICBfTV9lbmRfb2Zfc3RvcmFnZSA9IF9NX3N0YXJ0ICsgX19uOwogIH0KCiAgfl9WZWN0b3JfYmFz ZSgpIHsgX01fZGVhbGxvY2F0ZShfTV9zdGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFy dCk7IH0KfTsgICAgCgojIDE1MCAiL2x1c3IvZ251L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt Z251LzIuOTUuMS8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF92ZWN0b3IuaCIgMwoKCnRl bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYyA9IGFsbG9jYXRvcjwgX1RwID4gID4KY2xh c3MgdmVjdG9yIDogcHJvdGVjdGVkIF9WZWN0b3JfYmFzZTxfVHAsIF9BbGxvYz4gCnsKcHJpdmF0 ZToKICB0eXBlZGVmIF9WZWN0b3JfYmFzZTxfVHAsIF9BbGxvYz4gX0Jhc2U7CnB1YmxpYzoKICB0 eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdmFsdWVfdHlwZSogcG9pbnRlcjsKICB0 eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGNvbnN0X3BvaW50ZXI7CiAgdHlwZWRlZiB2YWx1ZV90 eXBlKiBpdGVyYXRvcjsKICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGNvbnN0X2l0ZXJhdG9y OwogIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwogIHR5cGVkZWYgY29uc3QgdmFsdWVf dHlwZSYgY29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICB0eXBl ZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CgogIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6 OmFsbG9jYXRvcl90eXBlIGFsbG9jYXRvcl90eXBlOwogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxv Y2F0b3IoKSBjb25zdCB7IHJldHVybiBfQmFzZTo6Z2V0X2FsbG9jYXRvcigpOyB9CgoKICB0eXBl ZGVmIHJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0 b3I7CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9y OwoKCgoKCgoKcHJvdGVjdGVkOgoKICB1c2luZyBfQmFzZTo6X01fYWxsb2NhdGU7CiAgdXNpbmcg X0Jhc2U6Ol9NX2RlYWxsb2NhdGU7CiAgdXNpbmcgX0Jhc2U6Ol9NX3N0YXJ0OwogIHVzaW5nIF9C YXNlOjpfTV9maW5pc2g7CiAgdXNpbmcgX0Jhc2U6Ol9NX2VuZF9vZl9zdG9yYWdlOwoKCnByb3Rl Y3RlZDoKICB2b2lkIF9NX2luc2VydF9hdXgoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgX1Rw JiBfX3gpOwogIHZvaWQgX01faW5zZXJ0X2F1eChpdGVyYXRvciBfX3Bvc2l0aW9uKTsKCnB1Ymxp YzoKICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIF9NX3N0YXJ0OyB9CiAgY29uc3RfaXRlcmF0 b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBfTV9zdGFydDsgfQogIGl0ZXJhdG9yIGVuZCgpIHsg cmV0dXJuIF9NX2ZpbmlzaDsgfQogIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu IF9NX2ZpbmlzaDsgfQoKICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpCiAgICB7IHJldHVybiBy ZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQogIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2lu KCkgY29uc3QKICAgIHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAg cmV2ZXJzZV9pdGVyYXRvciByZW5kKCkKICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVn aW4oKSk7IH0KICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdAogICAgeyByZXR1 cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQoKICBzaXplX3R5cGUgc2l6ZSgp IGNvbnN0CiAgICB7IHJldHVybiBzaXplX3R5cGUoZW5kKCkgLSBiZWdpbigpKTsgfQogIHNpemVf dHlwZSBtYXhfc2l6ZSgpIGNvbnN0CiAgICB7IHJldHVybiBzaXplX3R5cGUoLTEpIC8gc2l6ZW9m KF9UcCk7IH0KICBzaXplX3R5cGUgY2FwYWNpdHkoKSBjb25zdAogICAgeyByZXR1cm4gc2l6ZV90 eXBlKF9NX2VuZF9vZl9zdG9yYWdlIC0gYmVnaW4oKSk7IH0KICBib29sIGVtcHR5KCkgY29uc3QK ICAgIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KCiAgcmVmZXJlbmNlIG9wZXJhdG9yW10o c2l6ZV90eXBlIF9fbikgeyByZXR1cm4gKihiZWdpbigpICsgX19uKTsgfQogIGNvbnN0X3JlZmVy ZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBfX24pIGNvbnN0IHsgcmV0dXJuICooYmVnaW4oKSAr IF9fbik7IH0KCiAgZXhwbGljaXQgdmVjdG9yKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBh bGxvY2F0b3JfdHlwZSgpKQogICAgOiBfQmFzZShfX2EpIHt9CgogIHZlY3RvcihzaXplX3R5cGUg X19uLCBjb25zdCBfVHAmIF9fdmFsdWUsCiAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBf X2EgPSBhbGxvY2F0b3JfdHlwZSgpKSAKICAgIDogX0Jhc2UoX19uLCBfX2EpCiAgICB7IF9NX2Zp bmlzaCA9IHVuaW5pdGlhbGl6ZWRfZmlsbF9uKF9NX3N0YXJ0LCBfX24sIF9fdmFsdWUpOyB9Cgog IGV4cGxpY2l0IHZlY3RvcihzaXplX3R5cGUgX19uKQogICAgOiBfQmFzZShfX24sIGFsbG9jYXRv cl90eXBlKCkpCiAgICB7IF9NX2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfZmlsbF9uKF9NX3N0YXJ0 LCBfX24sIF9UcCgpKTsgfQoKICB2ZWN0b3IoY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX194 KSAKICAgIDogX0Jhc2UoX194LnNpemUoKSwgX194LmdldF9hbGxvY2F0b3IoKSkKICAgIHsgX01f ZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KF9feC5iZWdpbigpLCBfX3guZW5kKCksIF9NX3N0 YXJ0KTsgfQoKCiAgIAogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2ZWN0b3Io X0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICBj b25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkgOiBfQmFzZShfX2Ep IHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50 ZWdyYWwgX0ludGVncmFsOwogICAgX01faW5pdGlhbGl6ZV9hdXgoX19maXJzdCwgX19sYXN0LCBf SW50ZWdyYWwoKSk7CiAgfQoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiAgdm9pZCBfTV9p bml0aWFsaXplX2F1eChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9fdmFsdWUsIF9fdHJ1ZV90eXBl KSB7CiAgICBfTV9zdGFydCA9IF9NX2FsbG9jYXRlKF9fbik7CiAgICBfTV9lbmRfb2Zfc3RvcmFn ZSA9IF9NX3N0YXJ0ICsgX19uOyAKICAgIF9NX2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfZmlsbF9u KF9NX3N0YXJ0LCBfX24sIF9fdmFsdWUpOwogIH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0 ZXJhdG9yPgogIHZvaWQgX01faW5pdGlhbGl6ZV9hdXgoX0lucHV0SXRlcmF0b3IgX19maXJzdCwg X0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90 eXBlKSB7CiAgICBfTV9yYW5nZV9pbml0aWFsaXplKF9fZmlyc3QsIF9fbGFzdCwgX19pdGVyYXRv cl9jYXRlZ29yeSggX19maXJzdCApICk7CiAgfQoKCgoKCgoKCiAgfnZlY3RvcigpIHsgZGVzdHJv eShfTV9zdGFydCwgX01fZmluaXNoKTsgfQoKICB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBvcGVyYXRv cj0oY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX194KTsKICB2b2lkIHJlc2VydmUoc2l6ZV90 eXBlIF9fbikgewogICAgaWYgKGNhcGFjaXR5KCkgPCBfX24pIHsKICAgICAgY29uc3Qgc2l6ZV90 eXBlIF9fb2xkX3NpemUgPSBzaXplKCk7CiAgICAgIGl0ZXJhdG9yIF9fdG1wID0gX01fYWxsb2Nh dGVfYW5kX2NvcHkoX19uLCBfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgZGVzdHJveShfTV9z dGFydCwgX01fZmluaXNoKTsKICAgICAgX01fZGVhbGxvY2F0ZShfTV9zdGFydCwgX01fZW5kX29m X3N0b3JhZ2UgLSBfTV9zdGFydCk7CiAgICAgIF9NX3N0YXJ0ID0gX190bXA7CiAgICAgIF9NX2Zp bmlzaCA9IF9fdG1wICsgX19vbGRfc2l6ZTsKICAgICAgX01fZW5kX29mX3N0b3JhZ2UgPSBfTV9z dGFydCArIF9fbjsKICAgIH0KICB9CgogICAKICAgCiAgIAogICAKCiAgdm9pZCBhc3NpZ24oc2l6 ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3ZhbCk7CgoKICAKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lu cHV0SXRlcmF0b3I+CiAgdm9pZCBhc3NpZ24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0 SXRlcmF0b3IgX19sYXN0KSB7CiAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1 dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsKICAgIF9NX2Fzc2lnbl9kaXNwYXRjaChf X2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKICB9CgogIHRlbXBsYXRlIDxjbGFzcyBfSW50 ZWdlcj4KICB2b2lkIF9NX2Fzc2lnbl9kaXNwYXRjaChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9f dmFsLCBfX3RydWVfdHlwZSkKICAgIHsgYXNzaWduKChzaXplX3R5cGUpIF9fbiwgKF9UcCkgX192 YWwpOyB9CgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyPgogIHZvaWQgX01fYXNzaWduX2Rp c3BhdGNoKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIF9fZmFsc2VfdHlw ZSkKICAgIHsgX01fYXNzaWduX2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9faXRlcmF0b3JfY2F0ZWdv cnkoIF9fZmlyc3QgKSApOyB9CgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2 b2lkIF9NX2Fzc2lnbl9hdXgoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3Ig X19sYXN0LAogICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpOwoKICB0ZW1w bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KICB2b2lkIF9NX2Fzc2lnbl9hdXgoX0Zvcndh cmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAg ICAgICAgICAgZm9yd2FyZF9pdGVyYXRvcl90YWcpOyAKCgoKICByZWZlcmVuY2UgZnJvbnQoKSB7 IHJldHVybiAqYmVnaW4oKTsgfQogIGNvbnN0X3JlZmVyZW5jZSBmcm9udCgpIGNvbnN0IHsgcmV0 dXJuICpiZWdpbigpOyB9CiAgcmVmZXJlbmNlIGJhY2soKSB7IHJldHVybiAqKGVuZCgpIC0gMSk7 IH0KICBjb25zdF9yZWZlcmVuY2UgYmFjaygpIGNvbnN0IHsgcmV0dXJuICooZW5kKCkgLSAxKTsg fQoKICB2b2lkIHB1c2hfYmFjayhjb25zdCBfVHAmIF9feCkgewogICAgaWYgKF9NX2ZpbmlzaCAh PSBfTV9lbmRfb2Zfc3RvcmFnZSkgewogICAgICBjb25zdHJ1Y3QoX01fZmluaXNoLCBfX3gpOwog ICAgICArK19NX2ZpbmlzaDsKICAgIH0KICAgIGVsc2UKICAgICAgX01faW5zZXJ0X2F1eChlbmQo KSwgX194KTsKICB9CiAgdm9pZCBwdXNoX2JhY2soKSB7CiAgICBpZiAoX01fZmluaXNoICE9IF9N X2VuZF9vZl9zdG9yYWdlKSB7CiAgICAgIGNvbnN0cnVjdChfTV9maW5pc2gpOwogICAgICArK19N X2ZpbmlzaDsKICAgIH0KICAgIGVsc2UKICAgICAgX01faW5zZXJ0X2F1eChlbmQoKSk7CiAgfQog IHZvaWQgc3dhcCh2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3gpIHsKICAgICA6OnN3YXAoX01fc3Rh cnQsIF9feC5fTV9zdGFydCk7CiAgICAgOjpzd2FwKF9NX2ZpbmlzaCwgX194Ll9NX2ZpbmlzaCk7 CiAgICAgOjpzd2FwKF9NX2VuZF9vZl9zdG9yYWdlLCBfX3guX01fZW5kX29mX3N0b3JhZ2UpOwog IH0KCiAgaXRlcmF0b3IgaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IF9UcCYgX194 KSB7CiAgICBzaXplX3R5cGUgX19uID0gX19wb3NpdGlvbiAtIGJlZ2luKCk7CiAgICBpZiAoX01f ZmluaXNoICE9IF9NX2VuZF9vZl9zdG9yYWdlICYmIF9fcG9zaXRpb24gPT0gZW5kKCkpIHsKICAg ICAgY29uc3RydWN0KF9NX2ZpbmlzaCwgX194KTsKICAgICAgKytfTV9maW5pc2g7CiAgICB9CiAg ICBlbHNlCiAgICAgIF9NX2luc2VydF9hdXgoX19wb3NpdGlvbiwgX194KTsKICAgIHJldHVybiBi ZWdpbigpICsgX19uOwogIH0KICBpdGVyYXRvciBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbikg ewogICAgc2l6ZV90eXBlIF9fbiA9IF9fcG9zaXRpb24gLSBiZWdpbigpOwogICAgaWYgKF9NX2Zp bmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFnZSAmJiBfX3Bvc2l0aW9uID09IGVuZCgpKSB7CiAgICAg IGNvbnN0cnVjdChfTV9maW5pc2gpOwogICAgICArK19NX2ZpbmlzaDsKICAgIH0KICAgIGVsc2UK ICAgICAgX01faW5zZXJ0X2F1eChfX3Bvc2l0aW9uKTsKICAgIHJldHVybiBiZWdpbigpICsgX19u OwogIH0KCiAgIAogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIGluc2Vy dChpdGVyYXRvciBfX3BvcywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3Ig X19sYXN0KSB7CiAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9y Pjo6X0ludGVncmFsIF9JbnRlZ3JhbDsKICAgIF9NX2luc2VydF9kaXNwYXRjaChfX3BvcywgX19m aXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiAgfQoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVn ZXI+CiAgdm9pZCBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19wb3MsIF9JbnRlZ2VyIF9f biwgX0ludGVnZXIgX192YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX190cnVlX3R5cGUp IHsKICAgIGluc2VydChfX3BvcywgKHNpemVfdHlwZSkgX19uLCAoX1RwKSBfX3ZhbCk7CiAgfQoK ICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgdm9pZCBfTV9pbnNlcnRfZGlzcGF0 Y2goaXRlcmF0b3IgX19wb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcmF0 b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg ICAgIF9fZmFsc2VfdHlwZSkgewogICAgX01fcmFuZ2VfaW5zZXJ0KF9fcG9zLCBfX2ZpcnN0LCBf X2xhc3QsIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QgKSApOwogIH0KCgoKCgogIHZvaWQg aW5zZXJ0IChpdGVyYXRvciBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3gpOwoK ICB2b2lkIHBvcF9iYWNrKCkgewogICAgLS1fTV9maW5pc2g7CiAgICBkZXN0cm95KF9NX2Zpbmlz aCk7CiAgfQogIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIF9fcG9zaXRpb24pIHsKICAgIGlmIChf X3Bvc2l0aW9uICsgMSAhPSBlbmQoKSkKICAgICAgY29weShfX3Bvc2l0aW9uICsgMSwgX01fZmlu aXNoLCBfX3Bvc2l0aW9uKTsKICAgIC0tX01fZmluaXNoOwogICAgZGVzdHJveShfTV9maW5pc2gp OwogICAgcmV0dXJuIF9fcG9zaXRpb247CiAgfQogIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIF9f Zmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCkgewogICAgaXRlcmF0b3IgX19pID0gY29weShfX2xhc3Qs IF9NX2ZpbmlzaCwgX19maXJzdCk7CiAgICBkZXN0cm95KF9faSwgX01fZmluaXNoKTsKICAgIF9N X2ZpbmlzaCA9IF9NX2ZpbmlzaCAtIChfX2xhc3QgLSBfX2ZpcnN0KTsKICAgIHJldHVybiBfX2Zp cnN0OwogIH0KCiAgdm9pZCByZXNpemUoc2l6ZV90eXBlIF9fbmV3X3NpemUsIGNvbnN0IF9UcCYg X194KSB7CiAgICBpZiAoX19uZXdfc2l6ZSA8IHNpemUoKSkgCiAgICAgIGVyYXNlKGJlZ2luKCkg KyBfX25ld19zaXplLCBlbmQoKSk7CiAgICBlbHNlCiAgICAgIGluc2VydChlbmQoKSwgX19uZXdf c2l6ZSAtIHNpemUoKSwgX194KTsKICB9CiAgdm9pZCByZXNpemUoc2l6ZV90eXBlIF9fbmV3X3Np emUpIHsgcmVzaXplKF9fbmV3X3NpemUsIF9UcCgpKTsgfQogIHZvaWQgY2xlYXIoKSB7IGVyYXNl KGJlZ2luKCksIGVuZCgpKTsgfQoKcHJvdGVjdGVkOgoKCiAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3 YXJkSXRlcmF0b3I+CiAgaXRlcmF0b3IgX01fYWxsb2NhdGVfYW5kX2NvcHkoc2l6ZV90eXBlIF9f biwgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCkKewogICAgaXRlcmF0 b3IgX19yZXN1bHQgPSBfTV9hbGxvY2F0ZShfX24pOwogICAgdHJ5ICB7CiAgICAgIHVuaW5pdGlh bGl6ZWRfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKICAgICAgcmV0dXJuIF9fcmVz dWx0OwogICAgfQogICAgY2F0Y2goLi4uKSB7ICBfTV9kZWFsbG9jYXRlKF9fcmVzdWx0LCBfX24p IDsgdGhyb3c7IH0gOwogIH0KIyA0NDAgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp bnV4LWdudS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfdmVjdG9yLmgiIDMK CgoKCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgX01fcmFuZ2VfaW5p dGlhbGl6ZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgaW5wdXRfaXRlcmF0b3JfdGFnKQogIHsKICAgIGZv ciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICAgcHVzaF9iYWNrKCpfX2Zp cnN0KTsKICB9CgogICAKICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KICB2b2lk IF9NX3JhbmdlX2luaXRpYWxpemUoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAg ICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwgZm9yd2FyZF9pdGVyYXRv cl90YWcpCiAgewogICAgc2l6ZV90eXBlIF9fbiA9IDA7CiAgICBkaXN0YW5jZShfX2ZpcnN0LCBf X2xhc3QsIF9fbik7CiAgICBfTV9zdGFydCA9IF9NX2FsbG9jYXRlKF9fbik7CiAgICBfTV9lbmRf b2Zfc3RvcmFnZSA9IF9NX3N0YXJ0ICsgX19uOwogICAgX01fZmluaXNoID0gdW5pbml0aWFsaXpl ZF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX01fc3RhcnQpOwogIH0KCiAgdGVtcGxhdGUgPGNsYXNz IF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgX01fcmFuZ2VfaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zLAog ICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJh dG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpOwoK ICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KICB2b2lkIF9NX3JhbmdlX2luc2Vy dChpdGVyYXRvciBfX3BvcywKICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXJhdG9y IF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg IGZvcndhcmRfaXRlcmF0b3JfdGFnKTsKCgp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg X0FsbG9jPgppbmxpbmUgYm9vbCAKb3BlcmF0b3I9PShjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+ JiBfX3gsIGNvbnN0IHZlY3RvcjxfVHAsIF9BbGxvYz4mIF9feSkKewogIHJldHVybiBfX3guc2l6 ZSgpID09IF9feS5zaXplKCkgJiYKICAgICAgICAgZXF1YWwoX194LmJlZ2luKCksIF9feC5lbmQo KSwgX195LmJlZ2luKCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+Cmlu bGluZSBib29sIApvcGVyYXRvcjwoY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX194LCBjb25z dCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kpCnsKICByZXR1cm4gbGV4aWNvZ3JhcGhpY2FsX2Nv bXBhcmUoX194LmJlZ2luKCksIF9feC5lbmQoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9feS5iZWdpbigpLCBfX3kuZW5kKCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAs IGNsYXNzIF9BbGxvYz4KaW5saW5lIHZvaWQgc3dhcCh2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3gs IHZlY3RvcjxfVHAsIF9BbGxvYz4mIF9feSkKewogIF9feC5zd2FwKF9feSk7Cn0KCgoKdGVtcGxh dGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2ZWN0b3I8X1RwLF9BbGxvYz4mIAp2ZWN0b3I8 X1RwLF9BbGxvYz46Om9wZXJhdG9yPShjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3gpCnsK ICBpZiAoJl9feCAhPSB0aGlzKSB7CiAgICBjb25zdCBzaXplX3R5cGUgX194bGVuID0gX194LnNp emUoKTsKICAgIGlmIChfX3hsZW4gPiBjYXBhY2l0eSgpKSB7CiAgICAgIGl0ZXJhdG9yIF9fdG1w ID0gX01fYWxsb2NhdGVfYW5kX2NvcHkoX194bGVuLCBfX3guYmVnaW4oKSwgX194LmVuZCgpKTsK ICAgICAgZGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgX01fZGVhbGxvY2F0ZShf TV9zdGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFydCk7CiAgICAgIF9NX3N0YXJ0ID0g X190bXA7CiAgICAgIF9NX2VuZF9vZl9zdG9yYWdlID0gX01fc3RhcnQgKyBfX3hsZW47CiAgICB9 CiAgICBlbHNlIGlmIChzaXplKCkgPj0gX194bGVuKSB7CiAgICAgIGl0ZXJhdG9yIF9faSA9IGNv cHkoX194LmJlZ2luKCksIF9feC5lbmQoKSwgYmVnaW4oKSk7CiAgICAgIGRlc3Ryb3koX19pLCBf TV9maW5pc2gpOwogICAgfQogICAgZWxzZSB7CiAgICAgIGNvcHkoX194LmJlZ2luKCksIF9feC5i ZWdpbigpICsgc2l6ZSgpLCBfTV9zdGFydCk7CiAgICAgIHVuaW5pdGlhbGl6ZWRfY29weShfX3gu YmVnaW4oKSArIHNpemUoKSwgX194LmVuZCgpLCBfTV9maW5pc2gpOwogICAgfQogICAgX01fZmlu aXNoID0gX01fc3RhcnQgKyBfX3hsZW47CiAgfQogIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUg PGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lkIHZlY3RvcjxfVHAsIF9BbGxvYz46OmFzc2ln bihzaXplX3QgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3ZhbCkgewogIGlmIChfX24gPiBjYXBh Y2l0eSgpKSB7CiAgICB2ZWN0b3I8X1RwLCBfQWxsb2M+IF9fdG1wKF9fbiwgX192YWwsIGdldF9h bGxvY2F0b3IoKSk7CiAgICBfX3RtcC5zd2FwKCp0aGlzKTsKICB9CiAgZWxzZSBpZiAoX19uID4g c2l6ZSgpKSB7CiAgICBmaWxsKGJlZ2luKCksIGVuZCgpLCBfX3ZhbCk7CiAgICBfTV9maW5pc2gg PSB1bmluaXRpYWxpemVkX2ZpbGxfbihfTV9maW5pc2gsIF9fbiAtIHNpemUoKSwgX192YWwpOwog IH0KICBlbHNlCiAgICBlcmFzZShmaWxsX24oYmVnaW4oKSwgX19uLCBfX3ZhbCksIGVuZCgpKTsK fQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBf SW5wdXRJdGVyPgp2b2lkIHZlY3RvcjxfVHAsIF9BbGxvYz46Ol9NX2Fzc2lnbl9hdXgoX0lucHV0 SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZykgewogIGl0ZXJhdG9yIF9fY3VyID0g YmVnaW4oKTsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0ICYmIF9fY3VyICE9IGVuZCgpOyAr K19fY3VyLCArK19fZmlyc3QpCiAgICAqX19jdXIgPSAqX19maXJzdDsKICBpZiAoX19maXJzdCA9 PSBfX2xhc3QpCiAgICBlcmFzZShfX2N1ciwgZW5kKCkpOwogIGVsc2UKICAgIGluc2VydChlbmQo KSwgX19maXJzdCwgX19sYXN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9j PiB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyPgp2b2lkCnZlY3RvcjxfVHAsIF9BbGxvYz46 Ol9NX2Fzc2lnbl9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3Qs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZF9pdGVyYXRvcl90YWcp IHsKICBzaXplX3R5cGUgX19sZW4gPSAwOwogIGRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX19s ZW4pOwoKICBpZiAoX19sZW4gPiBjYXBhY2l0eSgpKSB7CiAgICBpdGVyYXRvciBfX3RtcCA9IF9N X2FsbG9jYXRlX2FuZF9jb3B5KF9fbGVuLCBfX2ZpcnN0LCBfX2xhc3QpOwogICAgZGVzdHJveShf TV9zdGFydCwgX01fZmluaXNoKTsKICAgIF9NX2RlYWxsb2NhdGUoX01fc3RhcnQsIF9NX2VuZF9v Zl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgX01fc3RhcnQgPSBfX3RtcDsKICAgIF9NX2VuZF9v Zl9zdG9yYWdlID0gX01fZmluaXNoID0gX01fc3RhcnQgKyBfX2xlbjsKICB9CiAgZWxzZSBpZiAo c2l6ZSgpID49IF9fbGVuKSB7CiAgICBpdGVyYXRvciBfX25ld19maW5pc2ggPSBjb3B5KF9fZmly c3QsIF9fbGFzdCwgX01fc3RhcnQpOwogICAgZGVzdHJveShfX25ld19maW5pc2gsIF9NX2Zpbmlz aCk7CiAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAgfQogIGVsc2UgewogICAgX0Zvcndh cmRJdGVyIF9fbWlkID0gX19maXJzdDsKICAgIGFkdmFuY2UoX19taWQsIHNpemUoKSk7CiAgICBj b3B5KF9fZmlyc3QsIF9fbWlkLCBfTV9zdGFydCk7CiAgICBfTV9maW5pc2ggPSB1bmluaXRpYWxp emVkX2NvcHkoX19taWQsIF9fbGFzdCwgX01fZmluaXNoKTsKICB9Cn0KCgoKdGVtcGxhdGUgPGNs YXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lkIAp2ZWN0b3I8X1RwLCBfQWxsb2M+OjpfTV9pbnNl cnRfYXV4KGl0ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IF9UcCYgX194KQp7CiAgaWYgKF9NX2Zp bmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFnZSkgewogICAgY29uc3RydWN0KF9NX2ZpbmlzaCwgKihf TV9maW5pc2ggLSAxKSk7CiAgICArK19NX2ZpbmlzaDsKICAgIF9UcCBfX3hfY29weSA9IF9feDsK ICAgIGNvcHlfYmFja3dhcmQoX19wb3NpdGlvbiwgX01fZmluaXNoIC0gMiwgX01fZmluaXNoIC0g MSk7CiAgICAqX19wb3NpdGlvbiA9IF9feF9jb3B5OwogIH0KICBlbHNlIHsKICAgIGNvbnN0IHNp emVfdHlwZSBfX29sZF9zaXplID0gc2l6ZSgpOwogICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0g X19vbGRfc2l6ZSAhPSAwID8gMiAqIF9fb2xkX3NpemUgOiAxOwogICAgaXRlcmF0b3IgX19uZXdf c3RhcnQgPSBfTV9hbGxvY2F0ZShfX2xlbik7CiAgICBpdGVyYXRvciBfX25ld19maW5pc2ggPSBf X25ld19zdGFydDsKICAgIHRyeSAgewogICAgICBfX25ld19maW5pc2ggPSB1bmluaXRpYWxpemVk X2NvcHkoX01fc3RhcnQsIF9fcG9zaXRpb24sIF9fbmV3X3N0YXJ0KTsKICAgICAgY29uc3RydWN0 KF9fbmV3X2ZpbmlzaCwgX194KTsKICAgICAgKytfX25ld19maW5pc2g7CiAgICAgIF9fbmV3X2Zp bmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShfX3Bvc2l0aW9uLCBfTV9maW5pc2gsIF9fbmV3X2Zp bmlzaCk7CiAgICB9CiAgICBjYXRjaCguLi4pIHsgIChkZXN0cm95KF9fbmV3X3N0YXJ0LF9fbmV3 X2ZpbmlzaCksIAogICAgICAgICAgICAgICAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LF9f bGVuKSkgOyB0aHJvdzsgfSA7CiAgICBkZXN0cm95KGJlZ2luKCksIGVuZCgpKTsKICAgIF9NX2Rl YWxsb2NhdGUoX01fc3RhcnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgX01f c3RhcnQgPSBfX25ld19zdGFydDsKICAgIF9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaDsKICAgIF9N X2VuZF9vZl9zdG9yYWdlID0gX19uZXdfc3RhcnQgKyBfX2xlbjsKICB9Cn0KCnRlbXBsYXRlIDxj bGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4Kdm9pZCAKdmVjdG9yPF9UcCwgX0FsbG9jPjo6X01faW5z ZXJ0X2F1eChpdGVyYXRvciBfX3Bvc2l0aW9uKQp7CiAgaWYgKF9NX2ZpbmlzaCAhPSBfTV9lbmRf b2Zfc3RvcmFnZSkgewogICAgY29uc3RydWN0KF9NX2ZpbmlzaCwgKihfTV9maW5pc2ggLSAxKSk7 CiAgICArK19NX2ZpbmlzaDsKICAgIGNvcHlfYmFja3dhcmQoX19wb3NpdGlvbiwgX01fZmluaXNo IC0gMiwgX01fZmluaXNoIC0gMSk7CiAgICAqX19wb3NpdGlvbiA9IF9UcCgpOwogIH0KICBlbHNl IHsKICAgIGNvbnN0IHNpemVfdHlwZSBfX29sZF9zaXplID0gc2l6ZSgpOwogICAgY29uc3Qgc2l6 ZV90eXBlIF9fbGVuID0gX19vbGRfc2l6ZSAhPSAwID8gMiAqIF9fb2xkX3NpemUgOiAxOwogICAg aXRlcmF0b3IgX19uZXdfc3RhcnQgPSBfTV9hbGxvY2F0ZShfX2xlbik7CiAgICBpdGVyYXRvciBf X25ld19maW5pc2ggPSBfX25ld19zdGFydDsKICAgIHRyeSAgewogICAgICBfX25ld19maW5pc2gg PSB1bmluaXRpYWxpemVkX2NvcHkoX01fc3RhcnQsIF9fcG9zaXRpb24sIF9fbmV3X3N0YXJ0KTsK ICAgICAgY29uc3RydWN0KF9fbmV3X2ZpbmlzaCk7CiAgICAgICsrX19uZXdfZmluaXNoOwogICAg ICBfX25ld19maW5pc2ggPSB1bmluaXRpYWxpemVkX2NvcHkoX19wb3NpdGlvbiwgX01fZmluaXNo LCBfX25ld19maW5pc2gpOwogICAgfQogICAgY2F0Y2goLi4uKSB7ICAoZGVzdHJveShfX25ld19z dGFydCxfX25ld19maW5pc2gpLCAKICAgICAgICAgICAgICAgICAgX01fZGVhbGxvY2F0ZShfX25l d19zdGFydCxfX2xlbikpIDsgdGhyb3c7IH0gOwogICAgZGVzdHJveShiZWdpbigpLCBlbmQoKSk7 CiAgICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0 KTsKICAgIF9NX3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiAgICBfTV9maW5pc2ggPSBfX25ld19maW5p c2g7CiAgICBfTV9lbmRfb2Zfc3RvcmFnZSA9IF9fbmV3X3N0YXJ0ICsgX19sZW47CiAgfQp9Cgp0 ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CnZvaWQgdmVjdG9yPF9UcCwgX0FsbG9j Pjo6aW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24sIHNpemVfdHlwZSBfX24sIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCkKewogIGlmIChfX24gIT0gMCkg ewogICAgaWYgKHNpemVfdHlwZShfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX2ZpbmlzaCkgPj0gX19u KSB7CiAgICAgIF9UcCBfX3hfY29weSA9IF9feDsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fZWxl bXNfYWZ0ZXIgPSBfTV9maW5pc2ggLSBfX3Bvc2l0aW9uOwogICAgICBpdGVyYXRvciBfX29sZF9m aW5pc2ggPSBfTV9maW5pc2g7CiAgICAgIGlmIChfX2VsZW1zX2FmdGVyID4gX19uKSB7CiAgICAg ICAgdW5pbml0aWFsaXplZF9jb3B5KF9NX2ZpbmlzaCAtIF9fbiwgX01fZmluaXNoLCBfTV9maW5p c2gpOwogICAgICAgIF9NX2ZpbmlzaCArPSBfX247CiAgICAgICAgY29weV9iYWNrd2FyZChfX3Bv c2l0aW9uLCBfX29sZF9maW5pc2ggLSBfX24sIF9fb2xkX2ZpbmlzaCk7CiAgICAgICAgZmlsbChf X3Bvc2l0aW9uLCBfX3Bvc2l0aW9uICsgX19uLCBfX3hfY29weSk7CiAgICAgIH0KICAgICAgZWxz ZSB7CiAgICAgICAgdW5pbml0aWFsaXplZF9maWxsX24oX01fZmluaXNoLCBfX24gLSBfX2VsZW1z X2FmdGVyLCBfX3hfY29weSk7CiAgICAgICAgX01fZmluaXNoICs9IF9fbiAtIF9fZWxlbXNfYWZ0 ZXI7CiAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5KF9fcG9zaXRpb24sIF9fb2xkX2ZpbmlzaCwg X01fZmluaXNoKTsKICAgICAgICBfTV9maW5pc2ggKz0gX19lbGVtc19hZnRlcjsKICAgICAgICBm aWxsKF9fcG9zaXRpb24sIF9fb2xkX2ZpbmlzaCwgX194X2NvcHkpOwogICAgICB9CiAgICB9CiAg ICBlbHNlIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fb2xkX3NpemUgPSBzaXplKCk7ICAgICAg ICAKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gX19vbGRfc2l6ZSArIG1heChfX29sZF9z aXplLCBfX24pOwogICAgICBpdGVyYXRvciBfX25ld19zdGFydCA9IF9NX2FsbG9jYXRlKF9fbGVu KTsKICAgICAgaXRlcmF0b3IgX19uZXdfZmluaXNoID0gX19uZXdfc3RhcnQ7CiAgICAgIHRyeSAg ewogICAgICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShfTV9zdGFydCwgX19w b3NpdGlvbiwgX19uZXdfc3RhcnQpOwogICAgICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlhbGl6 ZWRfZmlsbF9uKF9fbmV3X2ZpbmlzaCwgX19uLCBfX3gpOwogICAgICAgIF9fbmV3X2ZpbmlzaAog ICAgICAgICAgPSB1bmluaXRpYWxpemVkX2NvcHkoX19wb3NpdGlvbiwgX01fZmluaXNoLCBfX25l d19maW5pc2gpOwogICAgICB9CiAgICAgIGNhdGNoKC4uLikgeyAgKGRlc3Ryb3koX19uZXdfc3Rh cnQsX19uZXdfZmluaXNoKSwgCiAgICAgICAgICAgICAgICAgICAgX01fZGVhbGxvY2F0ZShfX25l d19zdGFydCxfX2xlbikpIDsgdGhyb3c7IH0gOwogICAgICBkZXN0cm95KF9NX3N0YXJ0LCBfTV9m aW5pc2gpOwogICAgICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAt IF9NX3N0YXJ0KTsKICAgICAgX01fc3RhcnQgPSBfX25ld19zdGFydDsKICAgICAgX01fZmluaXNo ID0gX19uZXdfZmluaXNoOwogICAgICBfTV9lbmRfb2Zfc3RvcmFnZSA9IF9fbmV3X3N0YXJ0ICsg X19sZW47CiAgICB9CiAgfQp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4g dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgp2b2lkIAp2ZWN0b3I8X1RwLCBfQWxsb2M+ OjpfTV9yYW5nZV9pbnNlcnQoaXRlcmF0b3IgX19wb3MsIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpCnsKICBmb3IgKCA7IF9f Zmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpIHsKICAgIF9fcG9zID0gaW5zZXJ0KF9fcG9zLCAq X19maXJzdCk7CiAgICArK19fcG9zOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg X0FsbG9jPiB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4Kdm9pZCAKdmVjdG9yPF9U cCwgX0FsbG9jPjo6X01fcmFuZ2VfaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFz dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3Jf dGFnKQp7CiAgaWYgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICBzaXplX3R5cGUgX19uID0gMDsK ICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX19uKTsKICAgIGlmIChzaXplX3R5cGUoX01f ZW5kX29mX3N0b3JhZ2UgLSBfTV9maW5pc2gpID49IF9fbikgewogICAgICBjb25zdCBzaXplX3R5 cGUgX19lbGVtc19hZnRlciA9IF9NX2ZpbmlzaCAtIF9fcG9zaXRpb247CiAgICAgIGl0ZXJhdG9y IF9fb2xkX2ZpbmlzaCA9IF9NX2ZpbmlzaDsKICAgICAgaWYgKF9fZWxlbXNfYWZ0ZXIgPiBfX24p IHsKICAgICAgICB1bmluaXRpYWxpemVkX2NvcHkoX01fZmluaXNoIC0gX19uLCBfTV9maW5pc2gs IF9NX2ZpbmlzaCk7CiAgICAgICAgX01fZmluaXNoICs9IF9fbjsKICAgICAgICBjb3B5X2JhY2t3 YXJkKF9fcG9zaXRpb24sIF9fb2xkX2ZpbmlzaCAtIF9fbiwgX19vbGRfZmluaXNoKTsKICAgICAg ICBjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19wb3NpdGlvbik7CiAgICAgIH0KICAgICAgZWxzZSB7 CiAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZCA9IF9fZmlyc3Q7CiAgICAgICAgYWR2YW5j ZShfX21pZCwgX19lbGVtc19hZnRlcik7CiAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5KF9fbWlk LCBfX2xhc3QsIF9NX2ZpbmlzaCk7CiAgICAgICAgX01fZmluaXNoICs9IF9fbiAtIF9fZWxlbXNf YWZ0ZXI7CiAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5KF9fcG9zaXRpb24sIF9fb2xkX2Zpbmlz aCwgX01fZmluaXNoKTsKICAgICAgICBfTV9maW5pc2ggKz0gX19lbGVtc19hZnRlcjsKICAgICAg ICBjb3B5KF9fZmlyc3QsIF9fbWlkLCBfX3Bvc2l0aW9uKTsKICAgICAgfQogICAgfQogICAgZWxz ZSB7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX29sZF9zaXplID0gc2l6ZSgpOwogICAgICBjb25z dCBzaXplX3R5cGUgX19sZW4gPSBfX29sZF9zaXplICsgbWF4KF9fb2xkX3NpemUsIF9fbik7CiAg ICAgIGl0ZXJhdG9yIF9fbmV3X3N0YXJ0ID0gX01fYWxsb2NhdGUoX19sZW4pOwogICAgICBpdGVy YXRvciBfX25ld19maW5pc2ggPSBfX25ld19zdGFydDsKICAgICAgdHJ5ICB7CiAgICAgICAgX19u ZXdfZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KF9NX3N0YXJ0LCBfX3Bvc2l0aW9uLCBfX25l d19zdGFydCk7CiAgICAgICAgX19uZXdfZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KF9fZmly c3QsIF9fbGFzdCwgX19uZXdfZmluaXNoKTsKICAgICAgICBfX25ld19maW5pc2gKICAgICAgICAg ID0gdW5pbml0aWFsaXplZF9jb3B5KF9fcG9zaXRpb24sIF9NX2ZpbmlzaCwgX19uZXdfZmluaXNo KTsKICAgICAgfQogICAgICBjYXRjaCguLi4pIHsgIChkZXN0cm95KF9fbmV3X3N0YXJ0LF9fbmV3 X2ZpbmlzaCksIAogICAgICAgICAgICAgICAgICAgIF9NX2RlYWxsb2NhdGUoX19uZXdfc3RhcnQs X19sZW4pKSA7IHRocm93OyB9IDsKICAgICAgZGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsK ICAgICAgX01fZGVhbGxvY2F0ZShfTV9zdGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFy dCk7CiAgICAgIF9NX3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiAgICAgIF9NX2ZpbmlzaCA9IF9fbmV3 X2ZpbmlzaDsKICAgICAgX01fZW5kX29mX3N0b3JhZ2UgPSBfX25ld19zdGFydCArIF9fbGVuOwog ICAgfQogIH0KfQoKIyA4MTAgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu dS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfdmVjdG9yLmgiIDMKCgoKCgoK CiAgCgoKCiAKIAogCiMgMzIgIi9sdXNyL2dudS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu dS8yLjk1LjEvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy92ZWN0b3IuaCIgMiAzCgoKCgoKCgoK IAogCiAKIyAxICJidWcyLmMiIDIKCgpjbGFzcyBjIHsKICB0eXBlZGVmIGludCAoYzo6KiBmcCkg KCApOwogIHZlY3RvcjxmcD4gdjsKICBjKCkgeyB9Owp9Owo= From anders@ieee.org Thu Mar 9 20:57:00 2000 From: anders@ieee.org (anders@ieee.org) Date: Thu, 09 Mar 2000 20:57:00 -0000 Subject: libstdc++/40: bitset::operator<<= and >>= incorrect for multiples of 32 Message-ID: <20000310045438.17716.qmail@sourceware.cygnus.com> >Number: 40 >Category: libstdc++ >Synopsis: bitset::operator<<= and >>= incorrect for multiples of 32 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Mar 09 20:57:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Anders Johnson >Release: libstdc++-2.90.7 >Organization: >Environment: SunOS thresher 5.6 Generic_105181-05 sun4u sparc SUMW,Ultra-60 >Description: The implementation of bitset relies on the behavior of _WordT >> __BITS_PER_WORDT(_WordT), which is not defined according to the C standard, and is equivalent to _WordT >> 0 on the Sparc. This occurs whenever the shift amount is a multiple of __BITS_PER_WORDT(_WordT). >How-To-Repeat: >Fix: The expressions on lines 201 and 220 of stl/bits/std_bitset.h should read (__offset ? ... : static_cast<_WordT>(0)) instead. >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Fri Mar 10 11:27:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Fri, 10 Mar 2000 11:27:00 -0000 Subject: libstdc++/40: bitset::operator<<= and >>= incorrect for multiplesof 32 Message-ID: <20000310192700.14858.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/40; it has been noted by GNATS. From: Benjamin Kosnik To: anders@ieee.org Cc: libstdc++-gnats@sourceware.cygnus.com, libstdc++-prs@sourceware.cygnus.com Subject: Re: libstdc++/40: bitset::operator<<= and >>= incorrect for multiples of 32 Date: Fri, 10 Mar 2000 11:17:48 -0800 (PST) can you please send me a patch and change log entry? thanks, benjamin On 10 Mar 2000 anders@ieee.org wrote: > > >Number: 40 > >Category: libstdc++ > >Synopsis: bitset::operator<<= and >>= incorrect for multiples of 32 > >Confidential: no > >Severity: serious > >Priority: medium > >Responsible: unassigned > >State: open > >Class: sw-bug > >Submitter-Id: net > >Arrival-Date: Thu Mar 09 20:57:00 PST 2000 > >Closed-Date: > >Last-Modified: > >Originator: Anders Johnson > >Release: libstdc++-2.90.7 > >Organization: > >Environment: > SunOS thresher 5.6 Generic_105181-05 sun4u sparc SUMW,Ultra-60 > >Description: > The implementation of bitset relies on the behavior > of _WordT >> __BITS_PER_WORDT(_WordT), which is not > defined according to the C standard, and is equivalent > to _WordT >> 0 on the Sparc. This occurs whenever the > shift amount is a multiple of __BITS_PER_WORDT(_WordT). > >How-To-Repeat: > > >Fix: > The expressions on lines 201 and 220 of stl/bits/std_bitset.h > should read (__offset ? ... : static_cast<_WordT>(0)) instead. > >Release-Note: > >Audit-Trail: > >Unformatted: > From george@moberg.com Fri Mar 10 13:57:00 2000 From: george@moberg.com (george@moberg.com) Date: Fri, 10 Mar 2000 13:57:00 -0000 Subject: libstdc++/41: -fcheck-memory-usage cannot be used with basic_string<> Message-ID: <20000310214844.14302.qmail@sourceware.cygnus.com> >Number: 41 >Category: libstdc++ >Synopsis: -fcheck-memory-usage cannot be used with basic_string<> >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Mar 10 13:57:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: george@moberg.com >Release: The version that's included with gcc 2.95.2. >Organization: >Environment: Linux Mandrake 7.0 on an Intel Pentium II. >Description: The basic_string<> class uses asm() in its release() method for the Rep structure. This causes a compilation error when compiling with the GCC -fcheck-memory-usage option. >How-To-Repeat: Compile the above program with the option -fcheck-memory-usage. >Fix: I could discover no easy workaround. I would assume that it would be possible to move the asm() statement in this function to another file and mark that with __attribute__ ((no_check_memory_usage)), but I don't know anything about x86 assembly language. iostream.h and stl_alloc.h also have assembly language in them. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="str.cc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="str.cc" I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKewoJc3RyaW5nCXRoZXJlKCJ0aGVyZSEiKTsKCgljb3V0IDw8ICJIZWxs byAiIDw8IHRoZXJlIDw8IGVuZGw7CgoJcmV0dXJuIDA7Cn0K From mikes@nilenet.com Wed Mar 15 14:47:00 2000 From: mikes@nilenet.com (mikes@nilenet.com) Date: Wed, 15 Mar 2000 14:47:00 -0000 Subject: libstdc++/42: vector<>::at() doesn't throw out_of_range Message-ID: <20000315224607.17867.qmail@sourceware.cygnus.com> >Number: 42 >Category: libstdc++ >Synopsis: vector<>::at() doesn't throw out_of_range >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Mar 15 14:47:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: mikes@nilenet.com >Release: 2.90.x >Organization: >Environment: i686-linux slackware, gcc compiled with namespace >Description: if you give vector<>::at() an out of range value, it doesn't throw out_of_range like it should >How-To-Repeat: try this simple program: #include #include #include int main()try { std::vector myvec(2); std::cout << myvec.at(2) << std::endl; } catch(std::out_of_range) { std::cerr << "out of range" << std::endl; } >Fix: >Release-Note: >Audit-Trail: >Unformatted: From kmcwhirter@magellan.com Sat Mar 18 09:37:00 2000 From: kmcwhirter@magellan.com (kmcwhirter@magellan.com) Date: Sat, 18 Mar 2000 09:37:00 -0000 Subject: libstdc++/43: Sun compile error on line 446 of locale.cc (includes ctype.cc) Message-ID: <20000318173641.15005.qmail@sourceware.cygnus.com> >Number: 43 >Category: libstdc++ >Synopsis: Sun compile error on line 446 of locale.cc (includes ctype.cc) >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Mar 18 09:37:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Kevin L McWhirter >Release: libstdc++-2.90.7 >Organization: >Environment: Sun Solaris 7, Sparc, gcc 2.95.2 >Description: Output from gnu c++ attached as file. >How-To-Repeat: Type make after ./configure on Solaris 7 for Sparc. >Fix: Would like one (or work around). >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/plain; name="libstdc++-err.txt" Content-Disposition: inline; filename="libstdc++-err.txt" # make /bin/sh ../libtool --mode=compile c++ -DHAVE_CONFIG_H -I. -I. -I.. -nostdinc++ -I../config/solaris -I.. -I../stl -I../libio -D_GNU_SOURCE -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -Werror -g -fhonor-std -c locale.cc rm -f .libs/locale.lo c++ -DHAVE_CONFIG_H -I. -I. -I.. -nostdinc++ -I../config/solaris -I.. -I../stl -I../libio -D_GNU_SOURCE -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -Werror -g -fhonor-std -c -fPIC -DPIC locale.cc -o .libs/locale.lo In file included from locale.cc:446: ../config/solaris/ctype.cc:36: converting to `long int *' from `int *' ../config/solaris/ctype.cc:37: converting to `long int *' from `int *' ../config/solaris/ctype.cc:41: converting to `long int *' from `int *' ../config/solaris/ctype.cc:42: converting to `long int *' from `int *' make: *** [locale.lo] Error 1 From bkoz@cygnus.com Sun Mar 19 19:07:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Sun, 19 Mar 2000 19:07:00 -0000 Subject: libstdc++/43: Sun compile error on line 446 of locale.cc (includes ctype.cc) Message-ID: <20000320030700.24582.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/43; it has been noted by GNATS. From: Benjamin Kosnik To: kmcwhirter@magellan.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/43: Sun compile error on line 446 of locale.cc (includes ctype.cc) Date: Sun, 19 Mar 2000 18:57:31 -0800 (PST) this was fixed shortly after the 2.90.7 release. As we are within a week of a new release, I suggest you check out the candidates for the next shapshot: ftp://sourceware.cygnus.com/pub/libstdc++/libstdc++-2.90.8pre2.tar.gz From bkoz@cygnus.com Mon Mar 20 11:57:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 11:57:00 -0000 Subject: libstdc++/43 Message-ID: <20000320195701.12735.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/43; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, kmcwhirter@magellan.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/43 Date: 20 Mar 2000 19:48:45 -0000 Synopsis: Sun compile error on line 446 of locale.cc (includes ctype.cc) Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 11:48:45 2000 Responsible-Changed-Why: replied to it State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Mon Mar 20 11:48:45 2000 State-Changed-Why: Fixed after release, fixed in new snapshots. http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=43&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:17:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:17:00 -0000 Subject: libstdc++/42 Message-ID: <20000320201700.20597.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/42; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, mikes@nilenet.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/42 Date: 20 Mar 2000 20:11:49 -0000 Synopsis: vector<>::at() doesn't throw out_of_range Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:11:48 2000 Responsible-Changed-Why: bkoz State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:11:48 2000 State-Changed-Why: This is fixed in the upcoming 2.90.8 series. Please try ftp://sourceware.cygnus.com/pub/libstdc++/libstdc++-2.90.8pre2.tar.gz http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=42&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:17:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:17:00 -0000 Subject: libstdc++/18 Message-ID: <20000320201701.20604.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/18; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com, vladimir.kondratiev@intel.com Cc: Subject: Re: libstdc++/18 Date: 20 Mar 2000 20:16:42 -0000 Synopsis: 2.90.7 release announced but not uploaded to FTP server Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:16:42 2000 Responsible-Changed-Why: fixed State-Changed-From-To: open->closed State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:16:42 2000 State-Changed-Why: It's up now. http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=18&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:27:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:27:00 -0000 Subject: libstdc++/34 Message-ID: <20000320202701.25579.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/34; it has been noted by GNATS. From: bkoz@cygnus.com To: Gabriel@sourceware.cygnus.com, dot@sourceware.cygnus.com, Dos-Reis@cmla.ens-cachan.fr, jsk29@cornell.edu, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/34 Date: 20 Mar 2000 20:19:21 -0000 Synopsis: Segmentation fault when resizing a valarry. Responsible-Changed-From-To: unassigned->gdr Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:19:21 2000 Responsible-Changed-Why: 26_numerics State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:19:21 2000 State-Changed-Why: this no longer seems to be a bug in the 2.0.8.x series. http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=34&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:27:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:27:00 -0000 Subject: libstdc++/28 Message-ID: <20000320202701.25587.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/28; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com, whall@primextrading.com Cc: Subject: Re: libstdc++/28 Date: 20 Mar 2000 20:21:32 -0000 Synopsis: solaris/bits/ctype_base.h incompatible with /usr/include/ctype.h, Solaris 7, SC5.0 Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:21:32 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:21:32 2000 State-Changed-Why: Have you tried the post-2.90.7 releases, specifically the 2.90.8.pre2 release? I believe this problem is fixed, and that this bug report can be closed. http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=28&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:37:00 -0000 Subject: libstdc++/2 Message-ID: <20000320203700.28740.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/2; it has been noted by GNATS. From: bkoz@cygnus.com To: Gabriel@sourceware.cygnus.com, dot@sourceware.cygnus.com, Dos-Reis@cmla.ens-cachan.fr, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com, rob@geonexuscorp.com Cc: Subject: Re: libstdc++/2 Date: 20 Mar 2000 20:29:46 -0000 Synopsis: valarray assignment operators don't resize Responsible-Changed-From-To: unassigned->gdr Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:29:46 2000 Responsible-Changed-Why: 26_numerics. State-Changed-From-To: open->closed State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:29:46 2000 State-Changed-Why: See log http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=2&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:37:00 -0000 Subject: libstdc++/10 Message-ID: <20000320203700.28735.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/10; it has been noted by GNATS. From: bkoz@cygnus.com To: Gabriel@sourceware.cygnus.com, dot@sourceware.cygnus.com, Dos-Reis@cmla.ens-cachan.fr, Roman.Kagan@itep.ru, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/10 Date: 20 Mar 2000 20:28:32 -0000 Synopsis: _Expr<>.sum() in bits/valarray_meta.h doesn't compile Responsible-Changed-From-To: unassigned->gdr Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:28:32 2000 Responsible-Changed-Why: 26_numerics http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=10&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:37:00 -0000 Subject: libstdc++/16 Message-ID: <20000320203700.28732.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/16; it has been noted by GNATS. From: bkoz@cygnus.com To: Chad_Gibbons@bmc.com, bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/16 Date: 20 Mar 2000 20:27:26 -0000 Synopsis: ios initialization bug Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:27:26 2000 Responsible-Changed-Why: have been dealing with this State-Changed-From-To: open->analyzed State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:27:26 2000 State-Changed-Why: Chad, what is the status with this bug and the current CVS snapshots, in particular the 2.90.8.pre2 series? http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=16&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:37:00 -0000 Subject: libstdc++/9 Message-ID: <20000320203701.28761.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/9; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, mjollnir@citysearch.com Cc: Subject: Re: libstdc++/9 Date: 20 Mar 2000 20:31:31 -0000 Synopsis: libstdc++.2.9.0.6 does NOT build on Solaris2.6 with gcc2.95 or native CC State-Changed-From-To: feedback->closed State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:31:31 2000 State-Changed-Why: Fixed with upcoming 2.90.8 series. No feedback http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=9&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:37:00 -0000 Subject: libstdc++/7 Message-ID: <20000320203701.28809.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/7; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com, tphillips@iee.org Cc: Subject: Re: libstdc++/7 Date: 20 Mar 2000 20:35:31 -0000 Synopsis: Build fails on Intel/Solaris 2.7 Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:35:31 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:35:31 2000 State-Changed-Why: Can you test this with the 2.90.8pre2 tarball up on sourceware please? I do not have access to a an intel/solarix box thanks, benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=7&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:37:00 -0000 Subject: libstdc++/3 Message-ID: <20000320203701.28831.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/3; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, bmosher@csc.com, libstdc++-gnats@sourceware.cygnus.com Cc: Subject: Re: libstdc++/3 Date: 20 Mar 2000 20:36:59 -0000 Synopsis: Segmentation Faults in substr() and string() State-Changed-From-To: feedback->closed State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:36:59 2000 State-Changed-Why: Did not get feedback. In addition, gcc-2.95 is a prerequisite. Please try the 2.90.8.pre2 release on sourceware and see if this is still a bug http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=3&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:37:00 -0000 Subject: libstdc++/35 Message-ID: <20000320203701.28777.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/35; it has been noted by GNATS. From: bkoz@cygnus.com To: amc@to.gd-es.com, bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/35 Date: 20 Mar 2000 20:34:03 -0000 Synopsis: make error for Digital Unix 4.0D Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:34:03 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:34:03 2000 State-Changed-Why: I don't have access to any digital unix systems. Can you test with the 2.90.8.pre2.tar.gz file up on the libstdc++ site and see if this is still a bug? thanks, benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=35&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:47:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:47:00 -0000 Subject: libstdc++/13 Message-ID: <20000320204701.1794.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/13; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, michaelv@edifecs.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/13 Date: 20 Mar 2000 20:44:07 -0000 Synopsis: make install does not work on Solaris 2.6 Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:44:07 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:44:07 2000 State-Changed-Why: Are you able to reproduce this problem with the 2.90.8 release candidates? benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=13&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:47:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:47:00 -0000 Subject: libstdc++/12 Message-ID: <20000320204701.1766.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/12; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, michaelv@edifecs.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/12 Date: 20 Mar 2000 20:43:11 -0000 Synopsis: libstdc++ 2.90.6 doesn't build on FreeBSD 3.1 Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:43:11 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:43:11 2000 State-Changed-Why: Can you please try the pre-2.90.8 releases? thanks, benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=12&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:47:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:47:00 -0000 Subject: libstdc++/11 Message-ID: <20000320204700.1756.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/11; it has been noted by GNATS. From: bkoz@cygnus.com To: aschmidt@lynet.de, bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/11 Date: 20 Mar 2000 20:41:59 -0000 Synopsis: invalid type for default argument Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Mon Mar 20 12:41:59 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:41:59 2000 State-Changed-Why: Awaiting feedback. Also, please use current sources when giving more info about this bug. The current sources can be found on sourceware.cygnus.com/pub/libstdc++ thanks, benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=11&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:47:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:47:00 -0000 Subject: libstdc++/5 Message-ID: <20000320204700.1733.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/5; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, hob@scali.com, libstdc++-gnats@sourceware.cygnus.com Cc: Subject: Re: libstdc++/5 Date: 20 Mar 2000 20:38:46 -0000 Synopsis: libstdc++ is not transparent to -malign-double egcs switch State-Changed-From-To: feedback->closed State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:38:46 2000 State-Changed-Why: No response http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=5&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:47:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:47:00 -0000 Subject: libstdc++/4 Message-ID: <20000320204700.1726.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/4; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, jihem@math.ucdavis.edu, libstdc++-gnats@sourceware.cygnus.com Cc: Subject: Re: libstdc++/4 Date: 20 Mar 2000 20:37:44 -0000 Synopsis: Floats in std_cmath.h State-Changed-From-To: feedback->closed State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:37:44 2000 State-Changed-Why: Fixed http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=4&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 12:47:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Mon, 20 Mar 2000 12:47:00 -0000 Subject: libstdc++/8 Message-ID: <20000320204700.1740.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/8; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, dek@cgl.ucsf.edu, libstdc++-gnats@sourceware.cygnus.com Cc: Subject: Re: libstdc++/8 Date: 20 Mar 2000 20:39:40 -0000 Synopsis: writing large strings to an ofstream causes stream to go bad State-Changed-From-To: feedback->closed State-Changed-By: bkoz State-Changed-When: Mon Mar 20 12:39:40 2000 State-Changed-Why: Fixed http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=8&database=libstdc++ From bkoz@cygnus.com Mon Mar 20 13:07:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Mon, 20 Mar 2000 13:07:00 -0000 Subject: libstdc++/16 Message-ID: <20000320210700.9935.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/16; it has been noted by GNATS. From: Benjamin Kosnik To: "Gibbons, Chad" Cc: libstdc++-gnats@sourceware.cygnus.com Subject: RE: libstdc++/16 Date: Mon, 20 Mar 2000 12:57:48 -0800 (PST) I guess you have not convinced me that it is a bug, unless I can reproduce it. Furthermore, I believe keeping that initializer in the header is necessary to conform to c++ static initializer rules. I have, however, run across some weird solaris initializer problems when I was fixing other parts of the library. First off, you need to use GNU ld. Second, it looks like g++ on solaris is putting stuff into .bss instead of .data: http://gcc.gnu.org/ml/gcc-bugs/2000-03/msg00274.html Unfortunately, you'll need to come up with a testcase before this can go much further. -benjamin > A quick look at today's CVS archives shows the code with the bug hasn't been > modified. > > The problem only manifests itself in very large projects, so it's difficult > to reproduce. I have a patch available, but I don't think anyone was > comfortable with the change unless there is a small test case to reproduce > it. From bkoz@cygnus.com Mon Mar 20 16:17:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Mon, 20 Mar 2000 16:17:00 -0000 Subject: libstdc++/16 Message-ID: <20000321001700.24778.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/16; it has been noted by GNATS. From: Benjamin Kosnik To: "Gibbons, Chad" Cc: libstdc++-gnats@sourceware.cygnus.com Subject: RE: libstdc++/16 Date: Mon, 20 Mar 2000 16:16:48 -0800 (PST) > Yes, I agree a testcase would be extremely useful on this one. :) Yep. I'll close it in a bit if I don't have something to reproduce it with. > The only thing I can really say without producing a test case is to look at > what *can* happen: > 1) some code includes iostream.h, which causes the ios_base::Init __ioinit > object to be created in that module. That object initializes the file > buffers used by all the standard I/O objects. Yes. Due to c++ static init rules, objects are initialized in a first-seen first-initialized order. Therefore, iostream should be included before user-code that also has static initializers. > 2) because order of initialization isn't guaranteed, that code's module is > initialized by the linker before the creation of cout, cerr, etc. ? look at ios_base::Init::Init in src/ios.cc: you'll see that elaborate steps are taken to only initialize once. > 3) when cout, cerr, etc. actually do initialize, they reset the buffers > created in step 1) and the streams are fubared. seems unlikely. > I'll make sure this happens on a non-Solaris platform to make sure it wasn't > a Solaris specific gcc/ld problem. Beyond that, though, I'm not sure I can > do too much. I'd probably then just file this as "something to keep an eye > out for." I'll keep in the back of my head going forward. Thanks, benjamin From bkoz@spitfire.cygnus.com Mon Mar 20 20:07:00 2000 From: bkoz@spitfire.cygnus.com (Benjamin Kosnik) Date: Mon, 20 Mar 2000 20:07:00 -0000 Subject: libstdc++/8 Message-ID: <20000321040701.4249.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/8; it has been noted by GNATS. From: Benjamin Kosnik To: David Konerding Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/8 Date: Mon, 20 Mar 2000 20:00:25 -0800 (PST) > Got a question for ya- we are trying to compile libstdc++ cvs on our > Alpha (Tru64/Digital Unix 5.0). There is a problem with complex math, > since the cygnus libstdc++ does not put complex math headers in the > std namespace. This is interfering with the complex math stuff > in math.h. I never had any problems under Linux, we've only noticed > this on the Alpha. Any ideas on what we woudl need to do (other than making > sure complex math went into namespace std?) David. Have you tried a new snapshot (2.90.8.pre2) and --enable-namespaces? Please read the install/configure docs on the web: they now explain how to enable namespaces. (bits/std_complex.h does put complex into std::) namespace std { // Forward declarations template class complex; template<> class complex; template<> class complex; template<> class complex; --benjamin From bkoz@cygnus.com Tue Mar 21 00:07:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:07:00 -0000 Subject: libstdc++/14 Message-ID: <20000321080700.12051.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/14; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, michaelv@edifecs.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/14 Date: 21 Mar 2000 08:04:07 -0000 Synopsis: Cannot link if std::stringstream is used Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:04:07 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->closed State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:04:07 2000 State-Changed-Why: per request http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=14&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:17:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:17:00 -0000 Subject: libstdc++/23 Message-ID: <20000321081700.13400.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/23; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, mooney@dogbert.cc.ndsu.nodak.edu, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/23 Date: 21 Mar 2000 08:12:50 -0000 Synopsis: alpha-dec-osf4.0f: math/mycabsf.c "hard register" compile failure Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:12:50 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:12:50 2000 State-Changed-Why: I too had been seeing this with 2.95.2. This has nothing to do with the library, but instead has to do with the particular backend's support for complex numbers. Richard Henderson has fixed the alpha backend in the CVS gcc sources. I suggest you try that. -benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=23&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:17:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:17:00 -0000 Subject: libstdc++/21 Message-ID: <20000321081700.13413.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/21; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, dirk_aust@gmx.de, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/21 Date: 21 Mar 2000 08:15:28 -0000 Synopsis: libstdc++ Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:15:28 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:15:28 2000 State-Changed-Why: Hi Dirk. Have you been able to reproduce this problem with the CVS sources or the 2.90.8pre2 tarball up on sourceware? If so, can you send me detailed information as to how you configure and set up the source/build directories? thanks, benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=21&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:17:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:17:00 -0000 Subject: libstdc++/25 Message-ID: <20000321081700.13394.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/25; it has been noted by GNATS. From: bkoz@cygnus.com To: Nicholas.Walker@desy.de, bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/25 Date: 21 Mar 2000 08:10:29 -0000 Synopsis: all (istream) input causes segmentation fault Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:10:29 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:10:29 2000 State-Changed-Why: This is fixed in the upcoming release. If you'd like to try it, please try 2.90.8.pre2 on sourceware's libstdc++ ftp site. thanks, benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=25&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:17:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:17:00 -0000 Subject: libstdc++/27 Message-ID: <20000321081700.13391.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/27; it has been noted by GNATS. From: bkoz@cygnus.com To: arysin@yahoo.com, bkoz@cygnus.com, bothner@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/27 Date: 21 Mar 2000 08:07:39 -0000 Synopsis: 'mode' argument in fstream/ofstream constructor Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:07:39 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->closed State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:07:39 2000 State-Changed-Why: Fixed, see 2.90.8.pre2 http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=27&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:17:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:17:00 -0000 Subject: libstdc++/20 Message-ID: <20000321081701.13425.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/20; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com, vakatov@ncbi.nlm.nih.gov Cc: Subject: Re: libstdc++/20 Date: 21 Mar 2000 08:16:09 -0000 Synopsis: basic_[io]stringstream::str() - extra "return" in void func? Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:16:09 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->closed State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:16:09 2000 State-Changed-Why: fixed http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=20&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:27:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:27:00 -0000 Subject: libstdc++/36 Message-ID: <20000321082701.14520.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/36; it has been noted by GNATS. From: bkoz@cygnus.com To: libstdc++-gnats@sourceware.cygnus.com, ncm@zembu.com, nobody@sourceware.cygnus.com, ori@extent.com, yl@extent.com Cc: Subject: Re: libstdc++/36 Date: 21 Mar 2000 08:24:29 -0000 Synopsis: A bug in STRING Responsible-Changed-From-To: unassigned->ncm Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:24:29 2000 Responsible-Changed-Why: strings are for you... State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:24:29 2000 State-Changed-Why: The libstdc++-v3 string implementation is now re-entrant. If you use 2.90.8.pre2 and later, you will find a MT safe solution. http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=36&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:27:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:27:00 -0000 Subject: libstdc++/17 Message-ID: <20000321082700.14487.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/17; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com, pbd@op.net Cc: Subject: Re: libstdc++/17 Date: 21 Mar 2000 08:17:48 -0000 Synopsis: cout is not a real ostream; dynamic_cast SEGV's as a result Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:17:48 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:17:48 2000 State-Changed-Why: Please try to use libstdc++-v3. You can find more information about it here: sourceware.cygnus.com/libstdc++ http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=17&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:27:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:27:00 -0000 Subject: libstdc++/19 Message-ID: <20000321082700.14490.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/19; it has been noted by GNATS. From: bkoz@cygnus.com To: Gabriel@sourceware.cygnus.com, dot@sourceware.cygnus.com, Dos-Reis@cmla.ens-cachan.fr, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com, tomoaki@biol.s.u-tokyo.ac.jp Cc: Subject: Re: libstdc++/19 Date: 21 Mar 2000 08:21:10 -0000 Synopsis: _T name colision to ctype.h in FreeBSD Responsible-Changed-From-To: unassigned->gdr Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:21:10 2000 Responsible-Changed-Why: Looks like this is still a bug. It's pretty harmless to make this change, so we might as well.. http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=19&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:27:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:27:00 -0000 Subject: libstdc++/33 Message-ID: <20000321082700.14506.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/33; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, jeremy.day@perth.wni.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/33 Date: 21 Mar 2000 08:22:44 -0000 Synopsis: Is supported in particular stringstream? Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:22:44 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:22:44 2000 State-Changed-Why: Please use libstdc++-v3, which does include See sourceware.cygnus.com/libstdc++ for more info http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=33&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:37:00 -0000 Subject: libstdc++/32 Message-ID: <20000321083700.17289.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/32; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com, steffend@lamar.colostate.edu Cc: Subject: Re: libstdc++/32 Date: 21 Mar 2000 08:31:23 -0000 Synopsis: Install of libstdc++-2.90.7 fails; no header files copied Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:31:23 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->analyzed State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:31:23 2000 State-Changed-Why: Hi. I've not seen anything like this: can you try using the pre-release snapshot, 2.90.8.pre2? In particular, can you let me know what pathnames you are using for the builddir, sourcedir, and installdir, as per the libstdc++ installation guide? thanks, benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=32&database=libstdc++ From bkoz@cygnus.com Tue Mar 21 00:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Tue, 21 Mar 2000 00:37:00 -0000 Subject: libstdc++/29 Message-ID: <20000321083700.17272.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/29; it has been noted by GNATS. From: bkoz@cygnus.com To: libstdc++-gnats@sourceware.cygnus.com, ncm@zembu.com, nobody@sourceware.cygnus.com, rbsmithz@prodigy.net Cc: Subject: Re: libstdc++/29 Date: 21 Mar 2000 08:27:20 -0000 Synopsis: seg fault in global basic_string construction Responsible-Changed-From-To: unassigned->ncm Responsible-Changed-By: bkoz Responsible-Changed-When: Tue Mar 21 00:27:20 2000 Responsible-Changed-Why: strings State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Tue Mar 21 00:27:20 2000 State-Changed-Why: This bug tracking database is for the libstdc++-v3 project: you are using libstdc++-v2. If you'd like to use libstdc++-v3, please see sourceware.cygnus.com/libstdc++ thanks, benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=29&database=libstdc++ From Gabriel.Dos-Reis@cmla.ens-cachan.fr Tue Mar 21 00:37:00 2000 From: Gabriel.Dos-Reis@cmla.ens-cachan.fr (Gabriel Dos Reis) Date: Tue, 21 Mar 2000 00:37:00 -0000 Subject: libstdc++/34 Message-ID: <20000321083700.17278.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/34; it has been noted by GNATS. From: Gabriel Dos Reis To: bkoz@cygnus.com Cc: gdr@sourceware.cygnus.com, libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/34 Date: 21 Mar 2000 09:20:26 +0100 [ Oops, this bounced ] Hi Benjamin, I saw you're doing a great job the the bug reports. Thanks a lot. bkoz@cygnus.com writes: | The following reply was made to PR libstdc++/34; it has been noted by GNATS. | | From: bkoz@cygnus.com | To: Gabriel@sourceware.cygnus.com, dot@sourceware.cygnus.com, | Dos-Reis@cmla.ens-cachan.fr, jsk29@cornell.edu, | libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com | Cc: | Subject: Re: libstdc++/34 | Date: 20 Mar 2000 20:19:21 -0000 | | Synopsis: Segmentation fault when resizing a valarry. | | Responsible-Changed-From-To: unassigned->gdr | Responsible-Changed-By: bkoz | Responsible-Changed-When: Mon Mar 20 12:19:21 2000 | Responsible-Changed-Why: | 26_numerics | State-Changed-From-To: open->feedback | State-Changed-By: bkoz | State-Changed-When: Mon Mar 20 12:19:21 2000 | State-Changed-Why: | this no longer seems to be a bug in the 2.0.8.x series. Yes, the recent changes in valarray were designed specifically to allow reasonable behaviour when resizing valarrays on some types. I know testsuites arre missing though. Thanks, -- Gaby From bkoz@cygnus.com Tue Mar 21 00:47:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Tue, 21 Mar 2000 00:47:00 -0000 Subject: libstdc++/34 Message-ID: <20000321084700.19028.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/34; it has been noted by GNATS. From: Benjamin Kosnik To: Gabriel Dos Reis Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/34 Date: Tue, 21 Mar 2000 00:38:48 -0800 (PST) hey gaby! yeah, most of the bugs are crusty and don't apply. I think you have 3 numerics ones assigned, but only one that is still applicable. (that woud be changing _T to _Tp in slice-array.h) -benjamin From Gabriel.Dos-Reis@cmla.ens-cachan.fr Tue Mar 21 01:07:00 2000 From: Gabriel.Dos-Reis@cmla.ens-cachan.fr (Gabriel Dos Reis) Date: Tue, 21 Mar 2000 01:07:00 -0000 Subject: libstdc++/34 Message-ID: <20000321090700.25982.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/34; it has been noted by GNATS. From: Gabriel Dos Reis To: Benjamin Kosnik Cc: Gabriel Dos Reis , libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/34 Date: 21 Mar 2000 10:01:41 +0100 Benjamin Kosnik writes: | hey gaby! | | yeah, most of the bugs are crusty and don't apply. I think you have 3 | numerics ones assigned, but only one that is still applicable. (that woud | be changing _T to _Tp in slice-array.h) Thank you. I went through the *_array.h files and discovered, the same change was needed in mask_array.h as well. Fixed with this 2000-03-21 Gabriel Dos Reis * bits/slice_array.h: Rename generic type template parameter name '_T' to '_Tp'. * bits/mask_array.h: Ditto -- Gaby From bkoz@cygnus.com Wed Mar 22 00:17:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Wed, 22 Mar 2000 00:17:00 -0000 Subject: libstdc++/39 Message-ID: <20000322081700.30676.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/39; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, jbednar@cs.utexas.edu, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/39 Date: 22 Mar 2000 08:13:08 -0000 Synopsis: allocator::address declared twice Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Wed Mar 22 00:13:08 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Wed Mar 22 00:13:08 2000 State-Changed-Why: You're not using the v-3 headers, instead you are picking up the v-2 headers from your compiler install. You can tell this from your include path: include/g++-3 instead of include/g++-v3 go horns! benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=39&database=libstdc++ From bkoz@cygnus.com Wed Mar 22 00:27:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Wed, 22 Mar 2000 00:27:00 -0000 Subject: libstdc++/38 Message-ID: <20000322082700.31650.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/38; it has been noted by GNATS. From: bkoz@cygnus.com To: badger@prtr-13.ucsc.edu, bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/38 Date: 22 Mar 2000 08:22:30 -0000 Synopsis: Bug in global map variables Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Wed Mar 22 00:22:29 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->analyzed State-Changed-By: bkoz State-Changed-When: Wed Mar 22 00:22:29 2000 State-Changed-Why: This example program is pretty huge. Can you please narrow this down to a short short, small, mini, tiny example that will fit into one file, and provide relevant comments in your bug report as to what output you are expecting, what output you are getting, etc? thanks, benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=38&database=libstdc++ From bkoz@cygnus.com Wed Mar 22 00:27:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Wed, 22 Mar 2000 00:27:00 -0000 Subject: libstdc++/19 Message-ID: <20000322082700.31655.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/19; it has been noted by GNATS. From: bkoz@cygnus.com To: Gabriel@sourceware.cygnus.com, dot@sourceware.cygnus.com, Dos-Reis@cmla.ens-cachan.fr, libstdc++-gnats@sourceware.cygnus.com, tomoaki@biol.s.u-tokyo.ac.jp Cc: Subject: Re: libstdc++/19 Date: 22 Mar 2000 08:23:16 -0000 Synopsis: _T name colision to ctype.h in FreeBSD State-Changed-From-To: open->closed State-Changed-By: bkoz State-Changed-When: Wed Mar 22 00:23:16 2000 State-Changed-Why: Gaby fixed this yesterday http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=19&database=libstdc++ From bkoz@cygnus.com Wed Mar 22 00:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Wed, 22 Mar 2000 00:37:00 -0000 Subject: libstdc++/30 Message-ID: <20000322083700.32638.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/30; it has been noted by GNATS. From: bkoz@cygnus.com To: bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, michael.reed@ft.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/30 Date: 22 Mar 2000 08:32:23 -0000 Synopsis: SUN 32bit apps using 64bit file offsets Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Wed Mar 22 00:32:23 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->feedback State-Changed-By: bkoz State-Changed-When: Wed Mar 22 00:32:23 2000 State-Changed-Why: Michael: Are you using libstdc++-v3? Or is this in reference to libstdc++-v2, which comes with gcc-2.95.2... ?? benjamin http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=30&database=libstdc++ From bkoz@cygnus.com Wed Mar 22 00:37:00 2000 From: bkoz@cygnus.com (bkoz@cygnus.com) Date: Wed, 22 Mar 2000 00:37:00 -0000 Subject: libstdc++/40 Message-ID: <20000322083700.32633.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/40; it has been noted by GNATS. From: bkoz@cygnus.com To: anders@ieee.org, bkoz@cygnus.com, libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/40 Date: 22 Mar 2000 08:30:10 -0000 Synopsis: bitset::operator<<= and >>= incorrect for multiples of 32 Responsible-Changed-From-To: unassigned->bkoz Responsible-Changed-By: bkoz Responsible-Changed-When: Wed Mar 22 00:30:10 2000 Responsible-Changed-Why: mine State-Changed-From-To: open->analyzed State-Changed-By: bkoz State-Changed-When: Wed Mar 22 00:30:10 2000 State-Changed-Why: Can you please send in a patch for this? http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=40&database=libstdc++ From jbednar@cs.utexas.edu Wed Mar 22 10:57:00 2000 From: jbednar@cs.utexas.edu (James A. Bednar) Date: Wed, 22 Mar 2000 10:57:00 -0000 Subject: libstdc++/39 Message-ID: <20000322185700.17159.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/39; it has been noted by GNATS. From: "James A. Bednar" To: bkoz@cygnus.com Cc: libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Subject: Re: libstdc++/39 Date: Wed, 22 Mar 2000 12:50:11 -0600 (CST) | Date: 22 Mar 2000 08:13:08 -0000 | From: bkoz@cygnus.com | | Synopsis: allocator::address declared twice | | Responsible-Changed-From-To: unassigned->bkoz | Responsible-Changed-By: bkoz | Responsible-Changed-When: Wed Mar 22 00:13:08 2000 | Responsible-Changed-Why: mine | State-Changed-From-To: open->feedback | State-Changed-By: bkoz | State-Changed-When: Wed Mar 22 00:13:08 2000 | State-Changed-Why: | You're not using the v-3 headers, instead you are picking up the v-2 headers from your compiler install. | | You can tell this from your include path: | | include/g++-3 | | instead of | | include/g++-v3 | | go horns! :-) | benjamin I'm not sure what you mean. The v3 headers were indeed located in /usr/include/g++-3: pale:~> rpm -qlp /p/arc/gcc-c++-2.95.1-3.i386.rpm | grep vector /usr/include/g++-3/bvector.h /usr/include/g++-3/stl_bvector.h /usr/include/g++-3/stl_vector.h /usr/include/g++-3/vector /usr/include/g++-3/vector.h On some of my systems there are v-2 headers are in /usr/include/g++-2 or /usr/include/g++, depending on the compiler version, but none have an include/g++-v3 directory. | http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=39&database=libstdc++ By the way, this link didn't work properly in my copy of Netscape 4.7. After typing password and user "guest" as suggested, it says "hold on...redirecting" and then just spits me back to the password prompt. The database wasn't automatically selected, either, even though I can see it in the URL. I was eventually able to get to the page by logging in, failing, then going directly to the address http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl by hand. Thanks, Jim From bkoz@cygnus.com Wed Mar 22 11:07:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Wed, 22 Mar 2000 11:07:00 -0000 Subject: libstdc++/40 Message-ID: <20000322190700.20134.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/40; it has been noted by GNATS. From: Benjamin Kosnik To: Anders Johnson Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/40 Date: Wed, 22 Mar 2000 11:05:11 -0800 (PST) No, I did not get your patch. Can you please resend, and cc libstdc++-gnats? That way it gets logged in the database. thanks, benjamin From anders@broadcom.com Wed Mar 22 11:17:00 2000 From: anders@broadcom.com (Anders Johnson) Date: Wed, 22 Mar 2000 11:17:00 -0000 Subject: libstdc++/40 Message-ID: <20000322191700.22663.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/40; it has been noted by GNATS. From: anders@broadcom.com (Anders Johnson) To: bkoz@cygnus.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/40 Date: Wed, 22 Mar 2000 11:13:14 -0800 ----- Begin Included Message ----- From anders Fri Mar 10 16:23:54 2000 To: bkoz@cygnus.com Subject: Re: libstdc++/40: bitset::operator<<= and >>= incorrect for multiples of 32 > can you please send me a patch and change log entry? I'm new at this, so please bear with me. The problem was actually observed on gcc/2.95.2/5.6/include/g++-3, because I can't build libstdc++-2.90.7 on my system because "wmemcmp.c" doesn't compile because 'wint_t' is not defined in either "string.h" or "stddef.h". However, the code in libstdc++-2.90.7 looks the same. Here is the patch: ----- Begin Included File ----- diff -c3pr libstdc++-2.90.7-1/stl/bits/std_bitset.h libstdc++-2.90.7/stl/bits/std_bitset.h *** libstdc++-2.90.7/stl/bits/std_bitset.h Tue Dec 21 21:07:58 1999 --- NEW/stl/bits/std_bitset.h Fri Mar 10 14:50:36 2000 *************** void _Base_bitset<_Nw, _WordT>::_M_do_le *** 196,204 **** const size_t __offset = __shift % __BITS_PER_WORDT(_WordT); const size_t __sub_offset = __BITS_PER_WORDT(_WordT) - __offset; size_t __n = _Nw - 1; ! for ( ; __n > __wshift; --__n) ! _M_w[__n] = (_M_w[__n - __wshift] << __offset) | ! (_M_w[__n - __wshift - 1] >> __sub_offset); if (__n == __wshift) _M_w[__n] = _M_w[0] << __offset; for (size_t __n1 = 0; __n1 < __n; ++__n1) --- 196,206 ---- const size_t __offset = __shift % __BITS_PER_WORDT(_WordT); const size_t __sub_offset = __BITS_PER_WORDT(_WordT) - __offset; size_t __n = _Nw - 1; ! for ( ; __n > __wshift; --__n) { ! _M_w[__n] = (_M_w[__n - __wshift] << __offset); ! if(__offset) ! _M_w[__n] |= _M_w[__n - __wshift - 1] >> __sub_offset; ! } if (__n == __wshift) _M_w[__n] = _M_w[0] << __offset; for (size_t __n1 = 0; __n1 < __n; ++__n1) *************** void _Base_bitset<_Nw, _WordT>::_M_do_ri *** 215,223 **** const size_t __sub_offset = __BITS_PER_WORDT(_WordT) - __offset; const size_t __limit = _Nw - __wshift - 1; size_t __n = 0; ! for ( ; __n < __limit; ++__n) ! _M_w[__n] = (_M_w[__n + __wshift] >> __offset) | ! (_M_w[__n + __wshift + 1] << __sub_offset); _M_w[__limit] = _M_w[_Nw-1] >> __offset; for (size_t __n1 = __limit + 1; __n1 < _Nw; ++__n1) _M_w[__n1] = static_cast<_WordT>(0); --- 217,227 ---- const size_t __sub_offset = __BITS_PER_WORDT(_WordT) - __offset; const size_t __limit = _Nw - __wshift - 1; size_t __n = 0; ! for ( ; __n < __limit; ++__n) { ! _M_w[__n] = (_M_w[__n + __wshift] >> __offset); ! if(__offset) ! _M_w[__n] |= _M_w[__n + __wshift + 1] << __sub_offset; ! } _M_w[__limit] = _M_w[_Nw-1] >> __offset; for (size_t __n1 = __limit + 1; __n1 < _Nw; ++__n1) _M_w[__n1] = static_cast<_WordT>(0); ----- End Included File ----- Here is a ChangeLog entry (not sure about the format): ----- Begin Included File ----- - Fri Mar 10 16:12:00 PST 2000 stl/bits/std_bitset.h: Modified _M_do_left_shift and _M_do_right_shift not to rely on the behavior of _WordT << __BITS_PER_WORDT(_WordT), which is undefined according to the C standard, and does the wrong thing on Sparc. ----- End Included File ----- Here is a test case: ----- Begin Included File ----- #include #include #include #include int main() { bitset<66> b(1); cout << b << endl; b<<=32; cout << b << endl; b |= bitset<66>(1)<<65; cout << b << endl; b>>=32; cout << b << endl; return 0; } ----- End Included File ----- The expected output is: 000000000000000000000000000000000000000000000000000000000000000001 000000000000000000000000000000000100000000000000000000000000000000 100000000000000000000000000000000100000000000000000000000000000000 000000000000000000000000000000001000000000000000000000000000000001 The actual output on SunOS 5.5.1 sun4u sparc is: 000000000000000000000000000000000000000000000000000000000000000001 010000000000000000000000000000000100000000000000000000000000000000 110000000000000000000000000000000100000000000000000000000000000000 000000000000000000000000000000001100000000000000000000000000000011 Please let me know if you need anything else. Thanks, -- n _ _ _ Anders Johnson ``The ultimate test of all X /_)|' (_` Broadcom Corporation knowledge is experiment.'' (_X\_,| ._) anders(at)ieee(dot)org -- Richard Feynman ----- End Included Message ----- From bkoz@cygnus.com Wed Mar 22 11:17:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Wed, 22 Mar 2000 11:17:00 -0000 Subject: libstdc++/39 Message-ID: <20000322191700.22658.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/39; it has been noted by GNATS. From: Benjamin Kosnik To: "James A. Bednar" Cc: libstdc++-gnats@sourceware.cygnus.com, pme@sourceware.cygnus.com Subject: Re: libstdc++/39 Date: Wed, 22 Mar 2000 11:09:51 -0800 (PST) Phil, it looks like other people are running into the same bug: any word from the GNATS people? > | You're not using the v-3 headers, instead you are picking up the v-2 headers from your compiler install. > | > | You can tell this from your include path: > | > | include/g++-3 > | > | instead of > | > | include/g++-v3 > | > | go horns! > > :-) > > | benjamin > > I'm not sure what you mean. The v3 headers were indeed located in > /usr/include/g++-3: No. libstdc++-v3 is a separate package than gcc-2.95.2. Please see: http://sourceware.cygnus.com/libstdc++ > pale:~> rpm -qlp /p/arc/gcc-c++-2.95.1-3.i386.rpm | grep vector Please try using the tarball, I have no idea what this rpm is up to. > /usr/include/g++-3/bvector.h > /usr/include/g++-3/stl_bvector.h > /usr/include/g++-3/stl_vector.h > /usr/include/g++-3/vector > /usr/include/g++-3/vector.h libstdc++-v2, which comes with gcc-2.95.x, puts the c++ includes in include/g++-3 libstdc++-v3, which you will have to build yourself, puts the c++ includes in include/g++-v3 confusing, I know, but I didn't make these decisions > By the way, this link didn't work properly in my copy of Netscape 4.7. > After typing password and user "guest" as suggested, it says "hold > on...redirecting" and then just spits me back to the password prompt. > The database wasn't automatically selected, either, even though I can > see it in the URL. I was eventually able to get to the page by > logging in, failing, then going directly to the address > http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl by hand. Phil is working on this -benjamin From bkoz@cygnus.com Wed Mar 22 11:27:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Wed, 22 Mar 2000 11:27:00 -0000 Subject: libstdc++/39 Message-ID: <20000322192700.24316.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/39; it has been noted by GNATS. From: Benjamin Kosnik To: "James A. Bednar" Cc: pme@sourceware.cygnus.comm, libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/39 Date: Wed, 22 Mar 2000 11:23:24 -0800 (PST) > That's very strange; I assumed that when GCC suddenly started putting > things in g++-3 instead of g++-2 it signified a change from version 2 > to version 3, but I suppose that was silly of me :-). All it means, > though, is that the bug is in the version 2 includes and not the > version 3 ones. And that as a result I need to report it to gcc-bugs > instead? (Or I can just give up on it :-). Yeah. I know, the numerology makes no sense. I strongly suggest using the 2.90.8 release. You'll be able to DL it on friday from sourceware.cygnus.com/libstdc++ best, -benjamin From pedwards@jaj.com Wed Mar 22 12:17:00 2000 From: pedwards@jaj.com (Phil Edwards) Date: Wed, 22 Mar 2000 12:17:00 -0000 Subject: libstdc++/39 Message-ID: <20000322201701.1788.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/39; it has been noted by GNATS. From: Phil Edwards To: bkoz@cygnus.com, jbednar@cs.utexas.edu Cc: libstdc++-gnats@sourceware.cygnus.com, pme@sourceware.cygnus.com Subject: Re: libstdc++/39 Date: Wed, 22 Mar 2000 15:27:45 -0500 > Phil, it looks like other people are running into the same bug: any word > from the GNATS people? [snip] > > > By the way, this link didn't work properly in my copy of Netscape 4.7. > > After typing password and user "guest" as suggested, it says "hold > > on...redirecting" and then just spits me back to the password prompt. > > The database wasn't automatically selected, either, even though I can > > see it in the URL. I was eventually able to get to the page by > > logging in, failing, then going directly to the address > > http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl by hand. Apparently the version of gnatsweb being used is slightly buggy. There is a report that the beta release of the next version does not have this problem. That's all I've been able to gather so far. Hopefully I'll have something more by tomorrow. Phil P.S.- Will responding to a -prs or -gnats list message enter something into the database? From bkoz@cygnus.com Wed Mar 22 12:27:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Wed, 22 Mar 2000 12:27:00 -0000 Subject: libstdc++/39 Message-ID: <20000322202701.3372.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/39; it has been noted by GNATS. From: Benjamin Kosnik To: Phil Edwards Cc: jbednar@cs.utexas.edu, libstdc++-gnats@sourceware.cygnus.com, pme@sourceware.cygnus.com Subject: Re: libstdc++/39 Date: Wed, 22 Mar 2000 12:18:19 -0800 (PST) > Apparently the version of gnatsweb being used is slightly buggy. > There is a report that the beta release of the next version does > not have this problem. That's all I've been able to gather so far. > Hopefully I'll have something more by tomorrow. cool... thanks for looking into it. > P.S.- Will responding to a -prs or -gnats list message enter something > into the database? ccing libstdc++-gnats will make things be entered auto-magically. From loreti@pd.infn.it Thu Mar 23 01:17:00 2000 From: loreti@pd.infn.it (loreti@pd.infn.it) Date: Thu, 23 Mar 2000 01:17:00 -0000 Subject: libstdc++/44: Couldn't compile libstdc++ 2.90.8pre2 with gcc-2.95.2 Message-ID: <20000323091426.5775.qmail@sourceware.cygnus.com> >Number: 44 >Category: libstdc++ >Synopsis: Couldn't compile libstdc++ 2.90.8pre2 with gcc-2.95.2 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Mar 23 01:17:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: loreti@pd.infn.it >Release: 2.90.8pre2 >Organization: >Environment: gcc 2.95.2 linux 2.2.10-20 (RedHat 6.1) >Description: Unpacked gcc distribution, removed libio and libstdc++; unpacked 2.90.8pre2, name changed to libstdc++. make bootstrap successfully built the compilers (3 stages). When compiling libstdc++ I had a fatal error (see attached log file). >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="make.log" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="make.log" bWFrZVszXTogRW50ZXJpbmcgZGlyZWN0b3J5IGAvaG9tZS9sb3JldGkvd29yay9vYmpkaXIvaTY4 Ni1wYy1saW51eC1nbnUvbGlic3RkYysrL3NyYycKL2Jpbi9zaCAuLi9saWJ0b29sIC0tbW9kZT1j b21waWxlIC9ob21lL2xvcmV0aS93b3JrL29iamRpci9nY2MveGdjYyAtQi9ob21lL2xvcmV0aS93 b3JrL29iamRpci9nY2MvIC1CL3Vzci9sb2NhbC9nY2MvaTY4Ni1wYy1saW51eC1nbnUvYmluLyAt REhBVkVfQ09ORklHX0ggLUkuIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3Jj IC1JLi4gLW5vc3RkaW5jKysgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKyAtSS4u Ly4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3N0bCAtSS4uLy4uLy4uLy4uL2djYy0yLjk1 LjIvbGlic3RkYysrL2xpYmlvICAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2Nv bmZpZy9jcHUvaTM4NiAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2NvbmZpZy9n bnUtbGludXggLUkvdXNyL2xvY2FsL2djYy9pbmNsdWRlCSAgIC1EX0dOVV9TT1VSQ0UgLWZuby1p bXBsaWNpdC10ZW1wbGF0ZXMgLVdhbGwgLVduby1mb3JtYXQgLVcgLVd3cml0ZS1zdHJpbmdzIC1X aW5saW5lIC1XZXJyb3IgLWcgLWZob25vci1zdGQgIC1nIC1PMiAtZnZ0YWJsZS10aHVua3MgLURf R05VX1NPVVJDRSAtYyAuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9zcmMvc3RyaW5n TUFJTi5jYwpybSAtZiAubGlicy9zdHJpbmdNQUlOLmxvCi9ob21lL2xvcmV0aS93b3JrL29iamRp ci9nY2MveGdjYyAtQi9ob21lL2xvcmV0aS93b3JrL29iamRpci9nY2MvIC1CL3Vzci9sb2NhbC9n Y2MvaTY4Ni1wYy1saW51eC1nbnUvYmluLyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4vLi4vLi4v Li4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3JjIC1JLi4gLW5vc3RkaW5jKysgLUkuLi8uLi8uLi8u Li9nY2MtMi45NS4yL2xpYnN0ZGMrKyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysr L3N0bCAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2xpYmlvIC1JLi4vLi4vLi4v Li4vZ2NjLTIuOTUuMi9saWJzdGRjKysvY29uZmlnL2NwdS9pMzg2IC1JLi4vLi4vLi4vLi4vZ2Nj LTIuOTUuMi9saWJzdGRjKysvY29uZmlnL2dudS1saW51eCAtSS91c3IvbG9jYWwvZ2NjL2luY2x1 ZGUgLURfR05VX1NPVVJDRSAtZm5vLWltcGxpY2l0LXRlbXBsYXRlcyAtV2FsbCAtV25vLWZvcm1h dCAtVyAtV3dyaXRlLXN0cmluZ3MgLVdpbmxpbmUgLVdlcnJvciAtZyAtZmhvbm9yLXN0ZCAtZyAt TzIgLWZ2dGFibGUtdGh1bmtzIC1EX0dOVV9TT1VSQ0UgLWMgIC1mUElDIC1EUElDIC4uLy4uLy4u Ly4uL2djYy0yLjk1LjIvbGlic3RkYysrL3NyYy9zdHJpbmdNQUlOLmNjIC1vIC5saWJzL3N0cmlu Z01BSU4ubG8KY2MxcGx1czogd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLi4vLi4v Li4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvYml0cy9zdHJpbmcudGNjOiBJbiBtZXRob2QgYHN0 ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRv cjxjaGFyPiA+OjpiYXNpY19zdHJpbmcoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6 OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gJiwgdW5zaWduZWQgaW50 LCB1bnNpZ25lZCBpbnQgPSBzdGQ6OmJhc2ljX3N0cmluZzxfQ2hhclQsX1RyYWl0cyxfQWxsb2M+ OjpucG9zKSc6Ci4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3NyYy9zdHJpbmctaW5z dC5jYzo2NDogICBpbnN0YW50aWF0ZWQgZnJvbSBoZXJlCi4uLy4uLy4uLy4uL2djYy0yLjk1LjIv bGlic3RkYysrL2JpdHMvYmFzaWNfc3RyaW5nLmg6NzEyOiB3YXJuaW5nOiBjYW4ndCBpbmxpbmUg Y2FsbCB0byBgc3RhdGljIGNoYXIgKiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90 cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4gPjo6X1NfY29uc3RydWN0PHN0ZDo6X19u b3JtYWxfaXRlcmF0b3I8Y2hhciAqLHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3Ry YWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4gPihzdGQ6Ol9fbm9ybWFsX2l0ZXJh dG9yPGNoYXIgKixzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4s c3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBzdGQ6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNoYXIgKixz dGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0 b3I8Y2hhcj4gPiA+LCBjb25zdCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiAmKScKLi4vLi4vLi4vLi4v Z2NjLTIuOTUuMi9saWJzdGRjKysvYml0cy9zdHJpbmcudGNjOjE4NDogd2FybmluZzogY2FsbGVk IGZyb20gaGVyZQouLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9iaXRzL2Jhc2ljX3N0 cmluZy5oOiBJbiBtZXRob2QgYGNsYXNzIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFy X3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ICYgc3RkOjpiYXNpY19zdHJpbmc8 Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID46OmFwcGVu ZChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3Rk OjphbGxvY2F0b3I8Y2hhcj4gPiAmKSc6Ci4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysr L2JpdHMvYmFzaWNfc3RyaW5nLmg6NDUxOiAgIGluc3RhbnRpYXRlZCBmcm9tIGBzdGQ6OmJhc2lj X3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4g Pjo6b3BlcmF0b3IgKz0oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJh aXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gJiknCi4uLy4uLy4uLy4uL2djYy0yLjk1 LjIvbGlic3RkYysrL3NyYy9zdHJpbmctaW5zdC5jYzo2NDogICBpbnN0YW50aWF0ZWQgZnJvbSBo ZXJlCi4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2JpdHMvYmFzaWNfc3RyaW5nLmg6 Njc1OiB3YXJuaW5nOiBjYW4ndCBpbmxpbmUgY2FsbCB0byBgY2xhc3Mgc3RkOjpiYXNpY19zdHJp bmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gJiBz dGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0 b3I8Y2hhcj4gPjo6cmVwbGFjZTxzdGQ6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNoYXIgKixzdGQ6OmJh c2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hh cj4gPiA+ID4oc3RkOjpfX25vcm1hbF9pdGVyYXRvcjxjaGFyICosc3RkOjpiYXNpY19zdHJpbmc8 Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgc3Rk OjpfX25vcm1hbF9pdGVyYXRvcjxjaGFyICosc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNo YXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgc3RkOjpfX25vcm1hbF9p dGVyYXRvcjxjaGFyICosc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNo YXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gPiwgc3RkOjpfX25vcm1hbF9pdGVyYXRvcjxjaGFy ICosc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxs b2NhdG9yPGNoYXI+ID4gPiknCi4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2JpdHMv YmFzaWNfc3RyaW5nLmg6NDcwOiB3YXJuaW5nOiBjYWxsZWQgZnJvbSBoZXJlCi4uLy4uLy4uLy4u L2djYy0yLjk1LjIvbGlic3RkYysrL2JpdHMvYmFzaWNfc3RyaW5nLmg6IEluIG1ldGhvZCBgY2xh c3Mgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxs b2NhdG9yPGNoYXI+ID4gJiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8 Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4gPjo6YXNzaWduKGNvbnN0IHN0ZDo6YmFzaWNfc3Ry aW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ICYs IHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KSc6Ci4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGli c3RkYysrL3NyYy9zdHJpbmctaW5zdC5jYzo2NDogICBpbnN0YW50aWF0ZWQgZnJvbSBoZXJlCi4u Ly4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2JpdHMvYmFzaWNfc3RyaW5nLmg6NTQxOiB3 YXJuaW5nOiBjYW4ndCBpbmxpbmUgY2FsbCB0byBgY2xhc3Mgc3RkOjpiYXNpY19zdHJpbmc8Y2hh cixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4gJiBzdGQ6OmJh c2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hh cj4gPjo6YXNzaWduPHN0ZDo6X19ub3JtYWxfaXRlcmF0b3I8Y2hhciAqLHN0ZDo6YmFzaWNfc3Ry aW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ID4g PihzdGQ6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNoYXIgKixzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0 ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+LCBzdGQ6Ol9fbm9y bWFsX2l0ZXJhdG9yPGNoYXIgKixzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFp dHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiA+KScKLi4vLi4vLi4vLi4vZ2NjLTIuOTUu Mi9saWJzdGRjKysvYml0cy9iYXNpY19zdHJpbmcuaDo1MjM6IHdhcm5pbmc6IGNhbGxlZCBmcm9t IGhlcmUKbWFrZVszXTogKioqIFtzdHJpbmdNQUlOLmxvXSBFcnJvciAxCm1ha2VbM106IExlYXZp bmcgZGlyZWN0b3J5IGAvaG9tZS9sb3JldGkvd29yay9vYmpkaXIvaTY4Ni1wYy1saW51eC1nbnUv bGlic3RkYysrL3NyYycKbWFrZVsyXTogKioqIFthbGwtcmVjdXJzaXZlXSBFcnJvciAxCm1ha2Vb Ml06IExlYXZpbmcgZGlyZWN0b3J5IGAvaG9tZS9sb3JldGkvd29yay9vYmpkaXIvaTY4Ni1wYy1s aW51eC1nbnUvbGlic3RkYysrJwptYWtlWzFdOiAqKiogW2FsbC1yZWN1cnNpdmUtYW1dIEVycm9y IDIKbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21lL2xvcmV0aS93b3JrL29iamRpci9p Njg2LXBjLWxpbnV4LWdudS9saWJzdGRjKysnCm1ha2U6ICoqKiBbYWxsLXRhcmdldC1saWJzdGRj KytdIEVycm9yIDIK From ehmann@cs.unc.edu Fri Mar 24 12:57:00 2000 From: ehmann@cs.unc.edu (ehmann@cs.unc.edu) Date: Fri, 24 Mar 2000 12:57:00 -0000 Subject: libstdc++/45: building libstdc++ along with gcc-2.95.2 fails while compiling libstdc++ because of warnings Message-ID: <20000324205211.20242.qmail@sourceware.cygnus.com> >Number: 45 >Category: libstdc++ >Synopsis: building libstdc++ along with gcc-2.95.2 fails while compiling libstdc++ because of warnings >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Mar 24 12:57:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: stephen ehmann >Release: 2.90.8 >Organization: >Environment: Mandrake Linux PIII 450 96 Mb mem. gcc-2.95.2 already installed >Description: Compiling libstdc++ fails when compiling with gcc from scratch. /usr/local/gcc-build/gcc/xgcc -B/usr/local/gcc-build/gcc/ -B/usr/local/gcc/i686-pc-linux-gnu/bin/ -DHAVE_CONFIG_H -I. -I/usr/local/gcc-2.95.2/libstdc++/src -I.. -nostdinc++ -I/usr/local/gcc-2.95.2/libstdc++ -I/usr/local/gcc-2.95.2/libstdc++/stl -I/usr/local/gcc-2.95.2/libstdc++/libio -I/usr/local/gcc-2.95.2/libstdc++/config/cpu/i386 -I/usr/local/gcc-2.95.2/libstdc++/config/gnu-linux -I/usr/local/gcc/include -D_GNU_SOURCE -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -Werror -g -fhonor-std -g -O2 -fvtable-thunks -D_GNU_SOURCE -c -fPIC -DPIC /usr/local/gcc-2.95.2/libstdc++/src/stringMAIN.cc -o .libs/stringMAIN.lo cc1plus: warnings being treated as errors /usr/local/gcc-2.95.2/libstdc++/bits/string.tcc: In method `std::basic_string,std::allocator >::basic_string(const std::basic_string,std::allocator > &, unsigned int, unsigned int = std::basic_string<_CharT,_Traits,_Alloc>::npos)': /usr/local/gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:712: warning: can't inline call to `static char * std::basic_string,std::allocator >::_S_construct,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, const std::allocator &)' /usr/local/gcc-2.95.2/libstdc++/bits/string.tcc:184: warning: called from here /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h: In method `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::append(const std::basic_string,std::allocator > &)': /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:451: instantiated from `std::basic_string,std::allocator >::operator +=(const std::basic_string,std::allocator > &)' /usr/local/gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:675: warning: can't inline call to `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::replace,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >)' /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:470: warning: called from here /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h: In method `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::assign(const std::basic_string,std::allocator > &, unsigned int, unsigned int)': /usr/local/gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:541: warning: can't inline call to `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::assign,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >)' /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:523: warning: called from here make[4]: *** [stringMAIN.lo] Error 1 make[4]: Leaving directory `/usr/local/gcc-build/i686-pc-linux-gnu/libstdc++/src' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/usr/local/gcc-build/i686-pc-linux-gnu/libstdc++' make[2]: *** [all-recursive-am] Error 2 make[2]: Leaving directory `/usr/local/gcc-build/i686-pc-linux-gnu/libstdc++' make[1]: *** [all-target-libstdc++] Error 2 make[1]: Leaving directory `/usr/local/gcc-build' make: *** [bootstrap] Error 2 >How-To-Repeat: copy the libstdc++ source to the gcc directory as specified in the docs configure make bootstrap >Fix: Comment out WERROR in the Makefile in buildir/i686-pc-linux-gnu/libstdc++/src >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Fri Mar 24 13:37:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Fri, 24 Mar 2000 13:37:00 -0000 Subject: libstdc++/45: building libstdc++ along with gcc-2.95.2 failswhile compiling libstdc++ because of warnings Message-ID: <20000324213700.4007.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/45; it has been noted by GNATS. From: Benjamin Kosnik To: ehmann@cs.unc.edu Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/45: building libstdc++ along with gcc-2.95.2 fails while compiling libstdc++ because of warnings Date: Fri, 24 Mar 2000 13:27:53 -0800 (PST) > Compiling libstdc++ fails when compiling with gcc from scratch. > > /usr/local/gcc-build/gcc/xgcc -B/usr/local/gcc-build/gcc/ -B/usr/local/gcc/i686-pc-linux-gnu/bin/ -DHAVE_CONFIG_H -I. -I/usr/local/gcc-2.95.2/libstdc++/src -I.. -nostdinc++ -I/usr/local/gcc-2.95.2/libstdc++ -I/usr/local/gcc-2.95.2/libstdc++/stl -I/usr/local/gcc-2.95.2/libstdc++/libio -I/usr/local/gcc-2.95.2/libstdc++/config/cpu/i386 -I/usr/local/gcc-2.95.2/libstdc++/config/gnu-linux -I/usr/local/gcc/include -D_GNU_SOURCE -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -Werror -g -fh onor-std -g -O2 -fvtable-thunks -D_GNU_SOURCE -c -fPIC -DPIC /usr/local/gcc-2.95.2/libstdc++/src/stringMAIN.cc -o .libs/stringMAIN.lo > cc1plus: warnings being treated as errors > /usr/local/gcc-2.95.2/libstdc++/bits/string.tcc: In method `std::basic_string,std::allocator >::basic_string(const std::basic_string,std::allocator > &, unsigned int, unsigned int = std::basic_string<_CharT,_Traits,_Alloc>::npos)': > /usr/local/gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here > /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:712: warning: can't inline call to `static char * std::basic_string,std::allocator >::_S_construct,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, const std::alloca tor &)' > /usr/local/gcc-2.95.2/libstdc++/bits/string.tcc:184: warning: called from here > /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h: In method `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::append(const std::basic_string,std::allocator > &)': > /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:451: instantiated from `std::basic_string,std::allocator >::operator +=(const std::basic_string,std::allocator > &)' > /usr/local/gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here > /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:675: warning: can't inline call to `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::replace,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >)' > /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:470: warning: called from here > /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h: In method `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::assign(const std::basic_string,std::allocator > &, unsigned int, unsigned int)': > /usr/local/gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here > /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:541: warning: can't inline call to `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::assign,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >)' > /usr/local/gcc-2.95.2/libstdc++/bits/basic_string.h:523: warning: called from here You need to remove either -Werror or -O2 when compiling with gcc-2.95.2 this is covered here: http://sourceware.cygnus.com/ml/libstdc++/2000-q1/msg00406.html From harinath@cs.umn.edu Sat Mar 25 15:47:00 2000 From: harinath@cs.umn.edu (Raja R Harinath) Date: Sat, 25 Mar 2000 15:47:00 -0000 Subject: libstdc++/46: bad c++config.h in CVS Message-ID: <20000325233940.32063.qmail@sourceware.cygnus.com> >Number: 46 >Category: libstdc++ >Synopsis: bad c++config.h in CVS >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Mar 25 15:47:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Raja R Harinath >Release: unknown-1.0 >Organization: >Environment: >Description: Hi, The file `bits/c++config.h' in the CVS repostory is broken. It probably should be removed, anyway, since it is generated during the configure process. - Hari >How-To-Repeat: >Fix: Remove bits/c++config.h from the CVS repository. >Release-Note: >Audit-Trail: >Unformatted: From anthony_w.geo@yahoo.com Tue Mar 28 03:27:00 2000 From: anthony_w.geo@yahoo.com (anthony_w.geo@yahoo.com) Date: Tue, 28 Mar 2000 03:27:00 -0000 Subject: libstdc++/47: Build of testsuite fails to compile bits/ios_base.h - exception not declared Message-ID: <20000328112503.16880.qmail@sourceware.cygnus.com> >Number: 47 >Category: libstdc++ >Synopsis: Build of testsuite fails to compile bits/ios_base.h - exception not declared >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue Mar 28 03:27:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Anthony Williams >Release: 2.90.8 >Organization: >Environment: Sparc-solaris-2.7 gcc-2.95.2 >Description: I have tried building a new copy of gcc 2.95.2 with libstdc++ from the 2.90.8 snapshot, using gcc-2.95.2 It configures and builds OK, but when I run make check I get compilation erros on lots of the modules, huge reams of errors and warnings, starting with: In file included from ../../../gcc-2.95.2/libstdc++/bits/std_ios.h:43, from ../../../gcc-2.95.2/libstdc++/bits/std_istream.h:37, from ../../../gcc-2.95.2/libstdc++/bits/std_fstream.h:37, from ../../../gcc-2.95.2/libstdc++/std/fstream:2, from ../../../gcc-2.95.2/libstdc++/testsuite/17_intro/header_fstream.cc:23: ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:144: parse error before `{' ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:152: destructor `failure' must match class name `ios_base' ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:226: parse error before `protected' ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:239: syntax error before `;' ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:243: parse error before `,' ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:245: missing ';' before right brace I checked bits/ios_base.h, and it uses namespace std, whilst std_exception uses __STL_BEGIN_NAMESPACE There are many headers that use each - shouldn't this be consistent across the source? However, it appears the cause is the __GNUG__ macro - in std_exception.h we do #include if __GNUG__ is defined, otherwise we declare the exception class. Fine, except that just does #include - circular reference, and exception never gets declared. It doesn't make any difference whether or not I specify --enable-namespaces or --disable-namespaces on the configure line >How-To-Repeat: Build + install binutils + gcc2.95.2 (normal) on sparc-solaris-2.7 rebuild gcc using libstdc++-2.90.8 as drop-in replacement for v2 libraries make check >Fix: Remove the #ifdef __GNUG__ from bits/std_exception.h ? >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Tue Mar 28 15:47:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Tue, 28 Mar 2000 15:47:00 -0000 Subject: libstdc++/47: Build of testsuite fails to compile bits/ios_base.h - exception not declared Message-ID: <20000328234700.7507.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/47; it has been noted by GNATS. From: Benjamin Kosnik To: anthony_w.geo@yahoo.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/47: Build of testsuite fails to compile bits/ios_base.h - exception not declared Date: Tue, 28 Mar 2000 15:38:17 -0800 (PST) this is from "mkcheck" including the new headers twice. Here's some mail on the subject: http://sourceware.cygnus.com/ml/libstdc++/2000-q1/msg00452.html > I have tried building a new copy of gcc 2.95.2 with libstdc++ from the 2.90.8 snapshot, using gcc-2.95.2 > > It configures and builds OK, but when I run > > make check > > I get compilation erros on lots of the modules, huge reams of errors and warnings, starting with: > > In file included from ../../../gcc-2.95.2/libstdc++/bits/std_ios.h:43, > from ../../../gcc-2.95.2/libstdc++/bits/std_istream.h:37, > from ../../../gcc-2.95.2/libstdc++/bits/std_fstream.h:37, > from ../../../gcc-2.95.2/libstdc++/std/fstream:2, > from ../../../gcc-2.95.2/libstdc++/testsuite/17_intro/header_fstream.cc:23: > ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:144: parse error before `{' > ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:152: destructor `failure' must match class name `ios_base' > ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:226: parse error before `protected' > ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:239: syntax error before `;' > ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:243: parse error before `,' > ../../../gcc-2.95.2/libstdc++/bits/ios_base.h:245: missing ';' before right brace > > I checked bits/ios_base.h, and it uses namespace std, whilst std_exception uses __STL_BEGIN_NAMESPACE > > There are many headers that use each - shouldn't this be consistent across the source? > > However, it appears the cause is the __GNUG__ macro - in std_exception.h we do #include if __GNUG__ is defined, otherwise we declare the exception class. > > Fine, except that just does #include - circular reference, and exception never gets declared. > > It doesn't make any difference whether or not I specify --enable-namespaces or --disable-namespaces on the configure line > >How-To-Repeat: > Build + install binutils + gcc2.95.2 (normal) on sparc-solaris-2.7 > > rebuild gcc using libstdc++-2.90.8 as drop-in replacement for v2 libraries > > make check > >Fix: > Remove the #ifdef __GNUG__ from bits/std_exception.h > ? > >Release-Note: > >Audit-Trail: > >Unformatted: > From allmaier@caramail.com Wed Mar 29 01:27:00 2000 From: allmaier@caramail.com (allmaier@caramail.com) Date: Wed, 29 Mar 2000 01:27:00 -0000 Subject: libstdc++/48: the 9th snapshot doesn't compile! Message-ID: <20000329092218.16977.qmail@sourceware.cygnus.com> >Number: 48 >Category: libstdc++ >Synopsis: the 9th snapshot doesn't compile! >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: mistaken >Submitter-Id: net >Arrival-Date: Wed Mar 29 01:27:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: - >Release: libstdc++ latest release (9th) >Organization: >Environment: -- >Description: Didn't you realize that in the latest package files are missing and that the configure script is pointing to the subdirectory instead of the source directory? for example: sources in /sources/libstdc++/ the script searches for install.sh and other not existing files in /sources ! >How-To-Repeat: get the package and ran configure, man! >Fix: -------- >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Wed Mar 29 01:47:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Wed, 29 Mar 2000 01:47:00 -0000 Subject: libstdc++/48: the 9th snapshot doesn't compile! Message-ID: <20000329094700.20377.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/48; it has been noted by GNATS. From: Benjamin Kosnik To: allmaier@caramail.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/48: the 9th snapshot doesn't compile! Date: Wed, 29 Mar 2000 01:44:00 -0800 (PST) read the install docs, man http://sourceware.cygnus.com/libstdc++/documentation.html and in particular: http://sourceware.cygnus.com/libstdc++/install.html -benjamin > Didn't you realize that in the latest package files are missing > and that the configure script is pointing to the subdirectory > instead of the source directory? > > for example: > sources in > /sources/libstdc++/ > the script searches for install.sh and other not existing files > in > /sources ! > >How-To-Repeat: > get the package and ran configure, man! From anthony_w.geo@yahoo.com Wed Mar 29 05:37:00 2000 From: anthony_w.geo@yahoo.com (anthony_w.geo@yahoo.com) Date: Wed, 29 Mar 2000 05:37:00 -0000 Subject: libstdc++/49: Test suite does not use std:: everywhere it should Message-ID: <20000329133316.24775.qmail@sourceware.cygnus.com> >Number: 49 >Category: libstdc++ >Synopsis: Test suite does not use std:: everywhere it should >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Mar 29 05:37:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Anthony Williams >Release: unknown-1.0 >Organization: >Environment: libstdc++-2.90.8 gcc 2.95.2 sparc-solaris-2.7 >Description: In many places the testsuite programs fail to compile due to "unknown symbol" errors, since std:: is not used >How-To-Repeat: make check or make check-install when configured with --enable-namespaces >Fix: Use std:: where appropriate (I can provide fixed source files if required) >Release-Note: >Audit-Trail: >Unformatted: From bennett@oneworld.com Wed Mar 29 11:47:00 2000 From: bennett@oneworld.com (bennett@oneworld.com) Date: Wed, 29 Mar 2000 11:47:00 -0000 Subject: libstdc++/50: won't configure Message-ID: <20000329193935.20268.qmail@sourceware.cygnus.com> >Number: 50 >Category: libstdc++ >Synopsis: won't configure >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Mar 29 11:47:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: bennett@oneworld.com >Release: 2.90.8 >Organization: >Environment: Solaris 7 (SPARC) >Description: It looks like many of the auto conf files were left out of the distribution. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From pedwards@jaj.com Wed Mar 29 12:07:00 2000 From: pedwards@jaj.com (Phil Edwards) Date: Wed, 29 Mar 2000 12:07:00 -0000 Subject: libstdc++/50: won't configure Message-ID: <20000329200701.31511.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/50; it has been noted by GNATS. From: Phil Edwards To: bennett@oneworld.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/50: won't configure Date: Wed, 29 Mar 2000 15:15:19 -0500 The library will no longer configure on its own. It must be placed inside the compiler. Please see and in particular: Luck++; Phil From rj45@comset.net Wed Mar 29 13:37:00 2000 From: rj45@comset.net (rj45@comset.net) Date: Wed, 29 Mar 2000 13:37:00 -0000 Subject: libstdc++/51: build problem Message-ID: <20000329212704.23162.qmail@sourceware.cygnus.com> >Number: 51 >Category: libstdc++ >Synopsis: build problem >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Mar 29 13:37:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: rj45@comset.net >Release: libstdc++-2.90.8 >Organization: >Environment: >Description: does not build >How-To-Repeat: try running configure (I mean the package which is placed on your ftp) >Fix: sorry, do not have one ... :( >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Wed Mar 29 13:57:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Wed, 29 Mar 2000 13:57:00 -0000 Subject: libstdc++/51: build problem Message-ID: <20000329215701.29325.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/51; it has been noted by GNATS. From: Benjamin Kosnik To: rj45@comset.net Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/51: build problem Date: Wed, 29 Mar 2000 13:47:15 -0800 (PST) > try running configure (I mean the package which is placed > on your ftp) ummmm. Can you please provide details on your host machine? uname -a output would be sufficient. Did you read the build/configure/install docs? They've changed for this snapshot: http://sourceware.cygnus.com/libstdc++/install.html -benjamin From bkoz@cygnus.com Wed Mar 29 19:47:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Wed, 29 Mar 2000 19:47:00 -0000 Subject: libstdc++/49: Test suite does not use std:: everywhere it should Message-ID: <20000330034700.32345.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/49; it has been noted by GNATS. From: Benjamin Kosnik To: anthony_w.geo@yahoo.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/49: Test suite does not use std:: everywhere it should Date: Wed, 29 Mar 2000 19:40:02 -0800 (PST) this was fixed shortly after the release. See this patch in the CVS repository: 2000-03-27 Russell Davidson * testsuite/23_containers/multiset.cc (main): Clean up for namespaces. * testsuite/22_locale/ctype_char_members.cc: And here. * testsuite/27_io/streambuf.cc (streambuf): And here. * testsuite/27_io/ostream_inserter_char.cc (test06): And here. * testsuite/27_io/istream_unformatted.cc (test05): And here. * testsuite/27_io/istream_extractor_arith.cc: And here. * testsuite/27_io/ios_manip_basefield.cc (test02): And here. * testsuite/27_io/ios_base_members_static.cc: And here. * bits/std_climits.h (_CPP_CLIMITS): Fix typo. On 29 Mar 2000 anthony_w.geo@yahoo.com wrote: > > >Number: 49 > >Category: libstdc++ > >Synopsis: Test suite does not use std:: everywhere it should > >Confidential: no > >Severity: serious > >Priority: medium > >Responsible: unassigned > >State: open > >Class: sw-bug > >Submitter-Id: net > >Arrival-Date: Wed Mar 29 05:37:00 PST 2000 > >Closed-Date: > >Last-Modified: > >Originator: Anthony Williams > >Release: unknown-1.0 > >Organization: > >Environment: > libstdc++-2.90.8 > gcc 2.95.2 > sparc-solaris-2.7 > >Description: > In many places the testsuite programs fail to compile due to "unknown symbol" errors, since std:: is not used > >How-To-Repeat: > make check > or > make check-install > > when configured with --enable-namespaces > >Fix: > Use std:: where appropriate (I can provide fixed source files if required) > >Release-Note: > >Audit-Trail: > >Unformatted: > From ben@valinux.com Thu Mar 30 12:27:00 2000 From: ben@valinux.com (ben@valinux.com) Date: Thu, 30 Mar 2000 12:27:00 -0000 Subject: libstdc++/52: can't call c_str() from a basic_string Message-ID: <20000330202615.27684.qmail@sourceware.cygnus.com> >Number: 52 >Category: libstdc++ >Synopsis: can't call c_str() from a basic_string >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Mar 30 12:27:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: debian frozen >Release: ibstdc++2.10-dev 2.95.2-8 >Organization: >Environment: debian frozen >Description: The problem is that "" is a signed char * and so when it is assigned to charT* there is no problem as long as charT* is a signed char. The problem is if instantiate a basic string with an unsigned char rather than a char this doesn't work. I don't know how this will behave with multibyte characters. >How-To-Repeat: >Fix: RCS file: RCS/bastring.h,v retrieving revision 1.1 diff -u -r1.1 bastring.h --- bastring.h 2000/03/30 00:44:05 1.1 +++ bastring.h 2000/03/30 00:46:05 @@ -335,7 +335,7 @@ public: const charT* c_str () const - { const charT* null_str = ""; + { const charT* null_str = reinterpret_cast(""); if (length () == 0) return null_str; terminate (); return data (); } void resize (size_type n, charT c); void resize (size_type n) >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Fri Mar 31 11:47:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Fri, 31 Mar 2000 11:47:00 -0000 Subject: libstdc++/52: can't call c_str() from a basic_string (fwd) Message-ID: <20000331194701.26593.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/52; it has been noted by GNATS. From: Benjamin Kosnik To: libstdc++-gnats@sourceware.cygnus.com Cc: Subject: Re: libstdc++/52: can't call c_str() from a basic_string (fwd) Date: Fri, 31 Mar 2000 11:39:43 -0800 (PST) ---------- Forwarded message ---------- Date: Thu, 30 Mar 2000 14:35:27 -0800 From: ncm@zembu.com To: bkoz@cygnus.com Subject: Re: libstdc++/52: can't call c_str() from a basic_string > >Number: 52 > >Category: libstdc++ > >Synopsis: can't call c_str() from a basic_string > >Confidential: no > >Severity: serious > >Priority: medium > >Responsible: unassigned > >State: open > >Class: sw-bug > >Submitter-Id: net > >Arrival-Date: Thu Mar 30 12:27:00 PST 2000 > >Closed-Date: > >Last-Modified: > >Originator: debian frozen > >Release: ibstdc++2.10-dev 2.95.2-8 > >Organization: > >Environment: > debian frozen > >Description: > The problem is that "" is a signed char * and so when it is > assigned to charT* there is no problem as long as charT* > is a signed char. The problem is if instantiate a basic > string with an unsigned char rather than a char this doesn't > work. I don't know how this will behave with multibyte > characters. > >How-To-Repeat: > > >Fix: > RCS file: RCS/bastring.h,v > retrieving revision 1.1 > diff -u -r1.1 bastring.h > --- bastring.h 2000/03/30 00:44:05 1.1 > +++ bastring.h 2000/03/30 00:46:05 > @@ -335,7 +335,7 @@ > > public: > const charT* c_str () const > - { const charT* null_str = ""; > + { const charT* null_str = reinterpret_cast(""); > if (length () == 0) return null_str; terminate (); return data (); } > void resize (size_type n, charT c); > void resize (size_type n) I don't agree with this change. A better fix would be: > + { static const charT null_str[] = { charT() }; Of course, since this is the old, dead libstdc++, I don't care what happens there. Nathan ncm From peter.guarino@gs.com Thu Apr 6 06:57:00 2000 From: peter.guarino@gs.com (peter.guarino@gs.com) Date: Thu, 06 Apr 2000 06:57:00 -0000 Subject: libstdc++/54: Failed to rebuild Message-ID: <20000406135415.19140.qmail@sourceware.cygnus.com> >Number: 54 >Category: libstdc++ >Synopsis: Failed to rebuild >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Apr 06 06:57:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: peter.guarino@gs.com >Release: libstdc++-2.90.8 >Organization: >Environment: 1) SunOS 5.6 Generic_105181-14 sun4u sparc SUNW,Ultra-2 2) gcc version 2.95.2 3) GNU Make version 3.78.1, by Richard Stallman and Roland McGrath. Built for sparc-sun-solaris2.6 >Description: Attempting to do a full rebuild of gcc with libstdc++ v3. I configured the build as given in the "licstdc++-v3 Install" document on your website. The build process fails when entering the library source tree: make[2]: Leaving directory `/export/home2/guarip/build_gcc/build/sparc-sun-solaris2.6/libiberty' make[1]: Leaving directory `/export/home2/guarip/build_gcc/build/sparc-sun-solaris2.6/libiberty' make[1]: Entering directory `/export/home2/guarip/build_gcc/build/sparc-sun-solaris2.6/libstdc++' make all-recursive make[2]: Entering directory `/export/home2/guarip/build_gcc/build/sparc-sun-solaris2.6/libstdc++' Making all in math make[3]: Entering directory `/export/home2/guarip/build_gcc/build/sparc-sun-solaris2.6/libstdc++/math' /bin/sh ../libtool --mode=compile (CC_FOR_TARGET) -DHAVE_CONFIG_H -I. -I/home/guarip/build_gcc/gcc-2.95.2/libstdc++/math -I.. (CFLAGS_FOR_TARGET) -c /home/guarip/build_gcc/gcc-2.95.2/libstdc++/math/signbit.c /bin/sh: syntax error at line 1: `(' unexpected make[3]: *** [signbit.lo] Error 2 make[3]: Leaving directory `/export/home2/guarip/build_gcc/build/sparc-sun-solaris2.6/libstdc++/math' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/export/home2/guarip/build_gcc/build/sparc-sun-solaris2.6/libstdc++' make[1]: *** [all-recursive-am] Error 2 make[1]: Leaving directory `/export/home2/guarip/build_gcc/build/sparc-sun-solaris2.6/libstdc++' make: *** [all-target-libstdc++] Error 2 >How-To-Repeat: Run make. >Fix: >Release-Note: >Audit-Trail: >Unformatted: From anthony_w.geo@yahoo.com Mon Apr 10 06:07:00 2000 From: anthony_w.geo@yahoo.com (anthony_w.geo@yahoo.com) Date: Mon, 10 Apr 2000 06:07:00 -0000 Subject: libstdc++/55: libstdc++ not initialised when linked as shared library on sparc-solaris-2.7 Message-ID: <20000410125935.20266.qmail@sourceware.cygnus.com> >Number: 55 >Category: libstdc++ >Synopsis: libstdc++ not initialised when linked as shared library on sparc-solaris-2.7 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Apr 10 06:07:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Anthony Williams >Release: unknown-1.0 >Organization: >Environment: sparc-solaris-2.7 libstdc++ 2.90.8 snapshot gcc 2.95.2 >Description: cout and cerr are not initialised properly when libstdc++ is linked as a shared library - the following sample produces a core dump: #include int main() { std::cout<<"hello"<How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From dda_dream@mail.ru Tue May 2 13:47:00 2000 From: dda_dream@mail.ru (dda_dream@mail.ru) Date: Tue, 02 May 2000 13:47:00 -0000 Subject: libstdc++/56: it is not compiling on SUSE 6.3 Message-ID: <20000502204434.20643.qmail@sourceware.cygnus.com> >Number: 56 >Category: libstdc++ >Synopsis: it is not compiling on SUSE 6.3 >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue May 02 13:47:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: dmitry >Release: libstdc++-2.90.* >Organization: >Environment: Suse 6.3 >Description: this library not completed compiling on my system. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From pedwards@jaj.com Tue May 2 14:07:00 2000 From: pedwards@jaj.com (Phil Edwards) Date: Tue, 02 May 2000 14:07:00 -0000 Subject: libstdc++/56: it is not compiling on SUSE 6.3 Message-ID: <20000502210701.29186.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/56; it has been noted by GNATS. From: Phil Edwards To: dda_dream@mail.ru Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/56: it is not compiling on SUSE 6.3 Date: Tue, 2 May 2000 17:16:07 -0400 > >Description: > this library not completed compiling on my system. This doesn't give us much information to go on. Could you paste in the error messages you get when you try to compile it? Phil From pedwards@jaj.com Tue May 2 14:27:00 2000 From: pedwards@jaj.com (Phil Edwards) Date: Tue, 02 May 2000 14:27:00 -0000 Subject: libstdc++/56: it is not compiling on SUSE 6.3 Message-ID: <20000502212700.395.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/56; it has been noted by GNATS. From: Phil Edwards To: dda_dream@mail.ru Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/56: it is not compiling on SUSE 6.3 Date: Tue, 2 May 2000 17:37:56 -0400 Your bug report says > >Release: libstdc++-2.90.* but the errors you mailed to me say make[2]: *** [misc-inst.lo] Error 1 make[2]: Leaving directory `/soft/libstdc++-2.90.6.1/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/soft/libstdc++-2.90.6.1' ^^^^^^^^ That's hardly the same as 2.90.*... The .6 snapshot is now nine months out-of-date and two revisions behind. Please try compiling with the latest snapshot. Note that you will need the latest compiler (gcc 2.95.2), as well as source for that compiler; see the instructions pages. Phil From albert@ravel.mpg.uni-rostock.de Mon May 8 15:07:00 2000 From: albert@ravel.mpg.uni-rostock.de (albert@ravel.mpg.uni-rostock.de) Date: Mon, 08 May 2000 15:07:00 -0000 Subject: libstdc++/57: can't build last gcc snapshot on alphaev5-unknown-linux-gnu Message-ID: <20000508220121.10041.qmail@sourceware.cygnus.com> >Number: 57 >Category: libstdc++ >Synopsis: can't build last gcc snapshot on alphaev5-unknown-linux-gnu >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon May 08 15:07:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: libstdc++-v3/src/complex_io.cc >Release: egcs-20000501 >Organization: >Environment: Alpha 21164, RedHat Linux 5.1 (kernel 2.0.34), gcc-2.95.2 >Description: All was as usually: 1. cd /tmp/egcs-build 2. ../egcs-20000501/configure --prefix=/home/albert/local --enable-libstdc++-v3 3. make bootstrap-lean ... and building was broken at this point: /tmp/egcs-build/gcc/g++ -B/tmp/egcs-build/gcc/ -B/home/albert/local/alphaev5-unknown-linux-gnu/bin/ -DHAVE_CONFIG_H -I. -I../../../../egcs-20000501/libstdc++-v3/src -I.. -nostdinc++ -I../../../../egcs-20000501/libstdc++-v3 -I../../../../egcs-20000501/libstdc++-v3/libio -I../../../../egcs-20000501/libstdc++-v3/config/cpu/alpha -I../../../../egcs-20000501/libstdc++-v3/config/gnu-linux -I/home/albert/local/include -g -O2 -fvtable-thunks -D_GNU_SOURCE -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -Werror -g -c -fPIC -DPIC ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc -o .libs/complex_io.lo ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: In function 'std::basic_istream < _CharT, ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: _Traits > & std::operator ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: ( std::basic_istream < _CharT, _Traits > & , ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: std::complex < _Tp > & ) [with _Tp = float, ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: _CharT = char, _Traits = ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc: std::char_traits < char > ]': ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:97: instantiated from here ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: Internal compiler error. ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: Please submit a full bug report. ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: See ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: < URL: http://www.gnu.org/software/gcc/bugs.html > ../../../../egcs-20000501/libstdc++-v3/src/complex_io.cc:76: for instructions. make[4]: *** [complex_io.lo] Error 1 make[4]: Leaving directory '/tmp/egcs-build/alphaev5-unknown-linux-gnu/libstdc++-v3/src' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory '/tmp/egcs-build/alphaev5-unknown-linux-gnu/libstdc++-v3' make[2]: *** [all-recursive-am] Error 2 make[2]: Leaving directory '/tmp/egcs-build/alphaev5-unknown-linux-gnu/libstdc++-v3' make[1]: *** [all-target-libstdc++-v3] Error 2 make[1]: Leaving directory '/tmp/egcs-build' make: *** [bootstrap-lean] Error 2 Attachment is config.log from /tmp/egcs-build/alphaev5-unknown-linux-gnu/libstdc++-v3 Regards, Albert Zhykhar >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="config.log" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.log" VGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hp bGUKcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2Vz IGEgbWlzdGFrZS4KCmNvbmZpZ3VyZTo2MDQ6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUKY29u ZmlndXJlOjYyNTogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlCmNvbmZpZ3VyZTo2NDM6IGNo ZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlCmNvbmZpZ3VyZTo2OTI6IGNoZWNraW5nIGZvciBhIEJT RCBjb21wYXRpYmxlIGluc3RhbGwKY29uZmlndXJlOjc0NTogY2hlY2tpbmcgd2hldGhlciBidWls ZCBlbnZpcm9ubWVudCBpcyBzYW5lCmNvbmZpZ3VyZTo4MDI6IGNoZWNraW5nIHdoZXRoZXIgbWFr ZSBzZXRzICR7TUFLRX0KY29uZmlndXJlOjgzNTogY2hlY2tpbmcgZm9yIEN5Z3dpbiBlbnZpcm9u bWVudApjb25maWd1cmU6ODUxOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3Mt YnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdu dS9iaW4vIC1jIC1nIC1PMiAgY29uZnRlc3QuYyAxPiY1CmNvbmZpZ3VyZTogSW4gZnVuY3Rpb24g YG1haW4nOgpjb25maWd1cmU6ODQ3OiBgX19DWUdXSU4zMl9fJyB1bmRlY2xhcmVkIChmaXJzdCB1 c2UgaW4gdGhpcyBmdW5jdGlvbikKY29uZmlndXJlOjg0NzogKEVhY2ggdW5kZWNsYXJlZCBpZGVu dGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZQpjb25maWd1cmU6ODQ3OiBmb3IgZWFjaCBmdW5j dGlvbiBpdCBhcHBlYXJzIGluLikKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5l IDg0MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKCmludCBtYWluKCkgewoKI2lm bmRlZiBfX0NZR1dJTl9fCiNkZWZpbmUgX19DWUdXSU5fXyBfX0NZR1dJTjMyX18KI2VuZGlmCnJl dHVybiBfX0NZR1dJTl9fOwo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTo4Njg6IGNoZWNraW5nIGZv ciBtaW5ndzMyIGVudmlyb25tZW50CmNvbmZpZ3VyZTo4ODA6IC90bXAvZWdjcy1idWlsZC9nY2Mv eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1 LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmln dXJlOiBJbiBmdW5jdGlvbiBgbWFpbic6CmNvbmZpZ3VyZTo4NzY6IGBfX01JTkdXMzJfXycgdW5k ZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCmNvbmZpZ3VyZTo4NzY6IChFYWNo IHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UKY29uZmlndXJlOjg3 NjogZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbi4pCmNvbmZpZ3VyZTogZmFpbGVkIHBy b2dyYW0gd2FzOgojbGluZSA4NzMgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCgpp bnQgbWFpbigpIHsKcmV0dXJuIF9fTUlOR1czMl9fOwo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTo5 Mjc6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUKY29uZmlndXJlOjk2ODogY2hlY2tpbmcgZm9y IHdvcmtpbmcgYWNsb2NhbApjb25maWd1cmU6OTgxOiBjaGVja2luZyBmb3Igd29ya2luZyBhdXRv Y29uZgpjb25maWd1cmU6OTk0OiBjaGVja2luZyBmb3Igd29ya2luZyBhdXRvbWFrZQpjb25maWd1 cmU6MTAwNzogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYXV0b2hlYWRlcgpjb25maWd1cmU6MTAyMDog Y2hlY2tpbmcgZm9yIHdvcmtpbmcgbWFrZWluZm8KY29uZmlndXJlOjEwNDY6IGNoZWNraW5nIGZv ciBnY2MKY29uZmlndXJlOjExMjU6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBD CmNvbmZpZ3VyZToxMTM0OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVp bGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9i aW4vIC1FIGNvbmZ0ZXN0LmMKY29uZmlndXJlOjExNDk6IGNoZWNraW5nIHdoZXRoZXIgL3RtcC9l Z2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQv bG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyBhY2NlcHRzIC1nCmNvbmZpZ3Vy ZToxMTg2OiBjaGVja2luZyBmb3IgYysrCmNvbmZpZ3VyZToxMjE5OiBjaGVja2luZyB3aGV0aGVy IHdlIGFyZSB1c2luZyBHTlUgQysrCmNvbmZpZ3VyZToxMjI4OiAvdG1wL2VnY3MtYnVpbGQvZ2Nj L2crKyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1 LXVua25vd24tbGludXgtZ251L2Jpbi8gLUUgY29uZnRlc3QuQwpjb25maWd1cmU6MTI0MzogY2hl Y2tpbmcgd2hldGhlciAvdG1wL2VnY3MtYnVpbGQvZ2NjL2crKyAtQi90bXAvZWdjcy1idWlsZC9n Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g YWNjZXB0cyAtZwpjb25maWd1cmU6MTI3NjogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUKY29u ZmlndXJlOjEyOTc6IGNoZWNraW5nIGZvciBhcwpjb25maWd1cmU6MTMyOTogY2hlY2tpbmcgZm9y IGFyCmNvbmZpZ3VyZToxMzYxOiBjaGVja2luZyBmb3IgcmFubGliCmNvbmZpZ3VyZToxNDM4OiBj aGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsCmNvbmZpZ3VyZToxNDkyOiBjaGVj a2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1h a2VmaWxlcwpjb25maWd1cmU6MTY1MDogY2hlY2tpbmcgZm9yIHJhbmxpYgpjb25maWd1cmU6MTY4 OTogY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgR0NDCmNvbmZpZ3VyZToxNzUxOiBjaGVja2luZyBp ZiB0aGUgbGlua2VyIChsZCkgaXMgR05VIGxkCkdOVSBsZCB2ZXJzaW9uIDIuOS41ICh3aXRoIEJG RCAyLjkuNS4wLjMyKQpjb25maWd1cmU6MTc2NzogY2hlY2tpbmcgZm9yIEJTRC1jb21wYXRpYmxl IG5tCmNvbmZpZ3VyZToxODAzOiBjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzCmx0Y29uZmln OjU4NjogY2hlY2tpbmcgZm9yIG9iamVjdCBzdWZmaXgKbHRjb25maWc6NTg3OiAvdG1wL2VnY3Mt YnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2Nh bC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAgY29uZnRlc3QuYyAx PiY1Cmx0Y29uZmlnOjcxNzogY2hlY2tpbmcgaWYgL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIFBJ QyBmbGFnIC1mUElDIHdvcmtzCmx0Y29uZmlnOjcxODogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2Nj IC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5r bm93bi1saW51eC1nbnUvYmluLyAtYyAtZyAtTzIgLWZQSUMgLURQSUMgIGNvbmZ0ZXN0LmMgMT4m NQpsdGNvbmZpZzo3NjA6IGNoZWNraW5nIGlmIC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyBzdXBw b3J0cyAtYyAtbyBmaWxlLm8KbHRjb25maWc6NzYxOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu b3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAtYyAtbyBjb25mdGVzdDIubyAgY29uZnRlc3Qu YyAxPiY1Cmx0Y29uZmlnOjc4ODogY2hlY2tpbmcgaWYgL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2Nj IHN1cHBvcnRzIC1jIC1vIGZpbGUubG8KbHRjb25maWc6Nzg5OiAvdG1wL2VnY3MtYnVpbGQvZ2Nj L3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2 NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAtYyAtbyBjb25mdGVzdC5sbyAgY29u ZnRlc3QuYyAxPiY1Cmx0Y29uZmlnOjg0MDogY2hlY2tpbmcgaWYgL3RtcC9lZ2NzLWJ1aWxkL2dj Yy94Z2NjIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMKbHRjb25maWc6ODQxOiAv dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAtZm5v LXJ0dGkgLWZuby1leGNlcHRpb25zIC1jIGNvbmZ0ZXN0LmMgIGNvbmZ0ZXN0LmMgMT4mNQpsdGNv bmZpZzo4ODQ6IGNoZWNraW5nIGlmIC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyBzdGF0aWMgZmxh ZyAtc3RhdGljIHdvcmtzCmx0Y29uZmlnOjg4NTogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1C L3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93 bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICAtc3RhdGljIGNvbmZ0ZXN0LmMg IDE+JjUKR05VIGxkIHZlcnNpb24gMi45LjUgKHdpdGggQkZEIDIuOS41LjAuMzIpCmx0Y29uZmln OjE0NDc6IGNoZWNraW5nIGlmIGdsb2JhbF9zeW1ib2xfcGlwZSB3b3JrcwpsdGNvbmZpZzoxNDQ4 OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21l L2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAg Y29uZnRlc3QuYyAxPiY1Cmx0Y29uZmlnOjE0NTE6IGV2YWwgIm5tIGNvbmZ0ZXN0Lm8gfCBzZWQg LW4gLWUgJ3MvXi4qWyAJXVwoW0FCQ0RHSVNUV11cKVsgCV1bIAldKlwoXClcKFtfQS1aYS16XVtf QS1aYS16MC05XSpcKSQvXDEgXDJcMyBcMy9wJyA+IGNvbmZ0ZXN0Lm5tIgpsdGNvbmZpZzoxNTAz OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21l L2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0 IC1nIC1PMiAtZm5vLWJ1aWx0aW4gLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9ucyAgIGNvbmZ0ZXN0 LmMgY29uZnRlc3RtLm8gMT4mNQpsdGNvbmZpZzoxOTc3OiBjaGVja2luZyBmb3IgZGxvcGVuCmx0 Y29uZmlnOjIwMDQ6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g LW8gY29uZnRlc3QgLWcgLU8yIC1mbm8tYnVpbHRpbiAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25z ICAgY29uZnRlc3QuYyAgMT4mNQovdG1wL2NjdXlEczZpLm86IEluIGZ1bmN0aW9uIGBtYWluJzoK L3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9s dGNvbmZpZzoxOTk4OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBkbG9wZW4nCi90bXAvZWdjcy1i dWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvbHRjb25maWc6MTk5 ODogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZGxvcGVuJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQg MSBleGl0IHN0YXR1cwpsdGNvbmZpZzogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAxOTgyICJs dGNvbmZpZyIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9w ZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBk bG9wZW4oKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBn Y2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBj aGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAg IGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBs eS4gICovCmNoYXIgZGxvcGVuKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5 IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFs d2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVk CiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFu IGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9kbG9wZW4pIHx8IGRlZmluZWQgKF9fc3R1 Yl9fX2Rsb3BlbikKY2hva2UgbWUKI2Vsc2UKZGxvcGVuKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsg fQpsdGNvbmZpZzoyMDIyOiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwKbHRjb25maWc6MjA0 MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9t ZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVz dCAtZyAtTzIgLWZuby1idWlsdGluIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMgICBjb25mdGVz dC5jIC1sZGwgICAxPiY1Cmx0Y29uZmlnOjIyMTA6IGNoZWNraW5nIGZvciBkbGZjbi5oCmx0Y29u ZmlnOjIyMjA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2Mv IC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMg LWcgLU8yIC1mbm8tYnVpbHRpbiAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zICBjb25mdGVzdC5j IDE+JjUgY29uZnRlc3QuYyA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0Cmx0Y29uZmlnOjIyNDg6 IGNoZWNraW5nIHdoZXRoZXIgYSBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmCmx0Y29uZmlnOjIz MDI6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hv bWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRl c3QgLWcgLU8yIC1mbm8tYnVpbHRpbiAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zICAtREhBVkVf RExGQ05fSCAgLVdsLC0tZXhwb3J0LWR5bmFtaWMgY29uZnRlc3QuYyAtbGRsICAxPiY1Cmx0Y29u ZmlnOjIzMjE6IGNoZWNraW5nIHdoZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNh biBkbG9wZW4gaXRzZWxmCmx0Y29uZmlnOjIzNzU6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v d24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yIC1mbm8tYnVpbHRpbiAtZm5vLXJ0 dGkgLWZuby1leGNlcHRpb25zICAtREhBVkVfRExGQ05fSCAgLVdsLC0tZXhwb3J0LWR5bmFtaWMg LXN0YXRpYyBjb25mdGVzdC5jIC1sZGwgIDE+JjUKbHRjb25maWc6IGZhaWxlZCBwcm9ncmFtIHdh czoKI2xpbmUgMjMyOSAibHRjb25maWciCgojaWYgSEFWRV9ETEZDTl9ICiNpbmNsdWRlIDxkbGZj bi5oPgojZW5kaWYKCiNpbmNsdWRlIDxzdGRpby5oPgoKI2lmZGVmIFJUTERfR0xPQkFMCiMgZGVm aW5lIExURExfR0xPQkFMCVJUTERfR0xPQkFMCiNlbHNlCiMgaWZkZWYgRExfR0xPQkFMCiMgIGRl ZmluZSBMVERMX0dMT0JBTAlETF9HTE9CQUwKIyBlbHNlCiMgIGRlZmluZSBMVERMX0dMT0JBTAkw CiMgZW5kaWYKI2VuZGlmCgovKiBXZSBtYXkgaGF2ZSB0byBkZWZpbmUgTFRETF9MQVpZX09SX05P VyBpbiB0aGUgY29tbWFuZCBsaW5lIGlmIHdlCiAgIGZpbmQgb3V0IGl0IGRvZXMgbm90IHdvcmsg aW4gc29tZSBwbGF0Zm9ybS4gKi8KI2lmbmRlZiBMVERMX0xBWllfT1JfTk9XCiMgaWZkZWYgUlRM RF9MQVpZCiMgIGRlZmluZSBMVERMX0xBWllfT1JfTk9XCVJUTERfTEFaWQojIGVsc2UKIyAgaWZk ZWYgRExfTEFaWQojICAgZGVmaW5lIExURExfTEFaWV9PUl9OT1cJRExfTEFaWQojICBlbHNlCiMg ICBpZmRlZiBSVExEX05PVwojICAgIGRlZmluZSBMVERMX0xBWllfT1JfTk9XCVJUTERfTk9XCiMg ICBlbHNlCiMgICAgaWZkZWYgRExfTk9XCiMgICAgIGRlZmluZSBMVERMX0xBWllfT1JfTk9XCURM X05PVwojICAgIGVsc2UKIyAgICAgZGVmaW5lIExURExfTEFaWV9PUl9OT1cJMAojICAgIGVuZGlm CiMgICBlbmRpZgojICBlbmRpZgojIGVuZGlmCiNlbmRpZgoKZm5vcmQoKSB7IGludCBpPTQyO30K bWFpbigpIHsgdm9pZCAqc2VsZiwgKnB0cjEsICpwdHIyOyBzZWxmPWRsb3BlbigwLExURExfR0xP QkFMfExURExfTEFaWV9PUl9OT1cpOwogICAgaWYoc2VsZikgeyBwdHIxPWRsc3ltKHNlbGYsImZu b3JkIik7IHB0cjI9ZGxzeW0oc2VsZiwiX2Zub3JkIik7CiAgICBpZihwdHIxIHx8IHB0cjIpIGV4 aXQoMCk7IH0gZXhpdCgxKTsgfSAKCmNvbmZpZ3VyZToxOTkzOiBjaGVja2luZyBob3cgdG8gcnVu IHRoZSBDIHByZXByb2Nlc3Nvcgpjb25maWd1cmU6MjAxNDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94 Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUt dW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3QuYyA+L2Rldi9udWxsIDI+Y29uZnRl c3Qub3V0CmNvbmZpZ3VyZToyMDc0OiBjaGVja2luZyBmb3IgZysrIHRoYXQgd2lsbCBzdWNjZXNz ZnVsbGx5IGNvbXBpbGUgdGhpcyBjb2RlCmNvbmZpZ3VyZToyMDk3OiBjaGVja2luZyBmb3IgZysr IHRoYXQgc3VwcG9ydHMgbmV3IGlubGluaW5nIG1lY2hhbmlzbQpjb25maWd1cmU6MjEzMTogY2hl Y2tpbmcgZm9yIGNwdSBwcmltaXRpdmVzIGRpcmVjdG9yeQpjb25maWd1cmU6MjE5MDogY2hlY2tp bmcgZm9yIGNzdGRpbyB0byB1c2UKY29uZmlndXJlOjIyMTQ6IGNoZWNraW5nIGZvciBsaWJpby5o CmNvbmZpZ3VyZToyMjI0OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVp bGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9i aW4vIC1FICBjb25mdGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQKY29uZmlndXJlOjIy NTk6IGNoZWNraW5nIGZvciBfR19jb25maWcuaApjb25maWd1cmU6MjI2OTogL3RtcC9lZ2NzLWJ1 aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwv YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3QuYyA+L2Rldi9udWxs IDI+Y29uZnRlc3Qub3V0CmNvbmZpZ3VyZToyMzQ4OiBjaGVja2luZyBmb3IgdGhyZWFkcyBwYWNr YWdlIHRvIHVzZQpjb25maWd1cmU6MjU4NTogY2hlY2tpbmcgZm9yIG5hbi5oCmNvbmZpZ3VyZToy NTk1OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9o b21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1FICBjb25m dGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQKY29uZmlndXJlOjI1ODU6IGNoZWNraW5n IGZvciBpZWVlZnAuaApjb25maWd1cmU6MjU5NTogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1C L3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93 bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3QuYyA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0 CmNvbmZpZ3VyZToyNTkxOjE5OiBpZWVlZnAuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpj b25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJlIgojaW5j bHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPGllZWVmcC5oPgpjb25maWd1cmU6MjU4NTogY2hl Y2tpbmcgZm9yIGVuZGlhbi5oCmNvbmZpZ3VyZToyNTk1OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11 bmtub3duLWxpbnV4LWdudS9iaW4vIC1FICBjb25mdGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVz dC5vdXQKY29uZmlndXJlOjI1ODU6IGNoZWNraW5nIGZvciBzeXMvaXNhX2RlZnMuaApjb25maWd1 cmU6MjU5NTogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8g LUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAg Y29uZnRlc3QuYyA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0CmNvbmZpZ3VyZToyNTkxOjI1OiBz eXMvaXNhX2RlZnMuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpjb25maWd1cmU6IGZhaWxl ZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMu aCIKI2luY2x1ZGUgPHN5cy9pc2FfZGVmcy5oPgpjb25maWd1cmU6MjU4NTogY2hlY2tpbmcgZm9y IG1hY2hpbmUvZW5kaWFuLmgKY29uZmlndXJlOjI1OTU6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu a25vd24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0 Lm91dApjb25maWd1cmU6MjU5MToyNzogbWFjaGluZS9lbmRpYW4uaDogTm8gc3VjaCBmaWxlIG9y IGRpcmVjdG9yeQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29u ZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPG1hY2hpbmUvZW5kaWFuLmg+ CmNvbmZpZ3VyZToyNTg1OiBjaGVja2luZyBmb3IgbWFjaGluZS9wYXJhbS5oCmNvbmZpZ3VyZToy NTk1OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9o b21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1FICBjb25m dGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQKY29uZmlndXJlOjI1OTE6MjY6IG1hY2hp bmUvcGFyYW0uaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpjb25maWd1cmU6IGZhaWxlZCBw cm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIK I2luY2x1ZGUgPG1hY2hpbmUvcGFyYW0uaD4KY29uZmlndXJlOjI1ODU6IGNoZWNraW5nIGZvciBz eXMvbWFjaGluZS5oCmNvbmZpZ3VyZToyNTk1OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIv dG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3du LWxpbnV4LWdudS9iaW4vIC1FICBjb25mdGVzdC5jID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQK Y29uZmlndXJlOjI1OTE6MjQ6IHN5cy9tYWNoaW5lLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rv cnkKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI1OTAgImNvbmZpZ3VyZSIK I2luY2x1ZGUgImNvbmZkZWZzLmgiCiNpbmNsdWRlIDxzeXMvbWFjaGluZS5oPgpjb25maWd1cmU6 MjU4NTogY2hlY2tpbmcgZm9yIGZwLmgKY29uZmlndXJlOjI1OTU6IC90bXAvZWdjcy1idWlsZC9n Y2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhh ZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNv bmZ0ZXN0Lm91dApjb25maWd1cmU6MjU5MToxNTogZnAuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVj dG9yeQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJl IgojaW5jbHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPGZwLmg+CmNvbmZpZ3VyZToyNTg1OiBj aGVja2luZyBmb3IgbG9jYWxlLmgKY29uZmlndXJlOjI1OTU6IC90bXAvZWdjcy1idWlsZC9nY2Mv eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1 LXVua25vd24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0 ZXN0Lm91dApjb25maWd1cmU6MjU4NTogY2hlY2tpbmcgZm9yIGZsb2F0LmgKY29uZmlndXJlOjI1 OTU6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hv bWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0 ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dApjb25maWd1cmU6MjU4NTogY2hlY2tpbmcg Zm9yIGludHR5cGVzLmgKY29uZmlndXJlOjI1OTU6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v d24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91 dApjb25maWd1cmU6MjU5MToyMTogaW50dHlwZXMuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9y eQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjU5MCAiY29uZmlndXJlIgoj aW5jbHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPGludHR5cGVzLmg+CmNvbmZpZ3VyZToyNjI1 OiBjaGVja2luZyBmb3IgR05VIEMrKyBfX2NvbXBsZXhfXyBzdXBwb3J0CmNvbmZpZ3VyZToyNjQ4 OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL2crKyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUv YWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yIC1m dnRhYmxlLXRodW5rcyAtRF9HTlVfU09VUkNFICBjb25mdGVzdC5DIDE+JjUKY29uZmlndXJlOjI2 ODA6IGNoZWNraW5nIGZvciBHTlUgQysrIF9fY29tcGxleF9fIGZsb2F0IHN1cHBvcnQKY29uZmln dXJlOjI3MjA6IC90bXAvZWdjcy1idWlsZC9nY2MvZysrIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8g LUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtYyAt ZyAtTzIgLWZ2dGFibGUtdGh1bmtzIC1EX0dOVV9TT1VSQ0UgIGNvbmZ0ZXN0LkMgMT4mNQpjb25m aWd1cmU6Mjc1MTogY2hlY2tpbmcgZm9yIF9fYnVpbHRpbl9zaW5mCmNvbmZpZ3VyZToyNzYwOiAv dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1jIC1nIC1PMiAgY29u ZnRlc3QuYyAxPiY1CmNvbmZpZ3VyZToyNzc5OiBjaGVja2luZyBmb3IgX19idWlsdGluX2Nvc2YK Y29uZmlndXJlOjI3ODg6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp bi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmlndXJlOjI4MDc6IGNoZWNraW5nIGZv ciBfX2J1aWx0aW5fZmFic2YKY29uZmlndXJlOjI4MTY6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu a25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmlndXJl OjI4MzU6IGNoZWNraW5nIGZvciBfX2J1aWx0aW5fc3FydGYKY29uZmlndXJlOjI4NDQ6IC90bXAv ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0 L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVz dC5jIDE+JjUKY29uZmlndXJlOjI4NjQ6IGNoZWNraW5nIGZvciBzaW4gaW4gLWxtCmNvbmZpZ3Vy ZToyODgzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAt Qi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNv bmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgLWxtICAgMT4mNQpjb25maWd1cmU6Mjg3Njogd2Fy bmluZzogY29uZmxpY3RpbmcgdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uIGBzaW4nCmNvbmZp Z3VyZToyOTEwOiBjaGVja2luZyBmb3IgY29tcGxleC5oCmNvbmZpZ3VyZToyOTIwOiAvdG1wL2Vn Y3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9s b2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1FICBjb25mdGVzdC5jID4vZGV2 L251bGwgMj5jb25mdGVzdC5vdXQKY29uZmlndXJlOjI5MTY6MjA6IGNvbXBsZXguaDogTm8gc3Vj aCBmaWxlIG9yIGRpcmVjdG9yeQpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUg MjkxNSAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKI2luY2x1ZGUgPGNvbXBsZXgu aD4KY29uZmlndXJlOjI5NTI6IGNoZWNraW5nIGZvciBjY29zCmNvbmZpZ3VyZToyOTgwOiAvdG1w L2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVy dC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1P MiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2M2a0k4T08ubzogSW4gZnVuY3Rpb24gYG1h aW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysr LXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjY29zJwovdG1wL2Vn Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy ZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjY29zJwpjb2xsZWN0MjogbGQgcmV0dXJu ZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1 NyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBk ZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hp Y2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBjY29zKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFz c2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQg YW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUg cmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBw cm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGNjb3MoKTsKCmludCBtYWluKCkg ewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2gg aXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0 aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFu ZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2Nj b3MpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2Njb3MpCmNob2tlIG1lCiNlbHNlCmNjb3MoKTsKI2Vu ZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY2Nvc2YKY29u ZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g LW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY3dCUU15ci5v OiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxp bnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2Ug dG8gYGNjb3NmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGli c3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjY29zZicK Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv Z3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY2Nvc2YoKTsgYmVs b3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFs IHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2Ug aW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5k IHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIg Y2Nvc2YoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlz IGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0 aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGlu ZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwoj aWYgZGVmaW5lZCAoX19zdHViX2Njb3NmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jY29zZikKY2hv a2UgbWUKI2Vsc2UKY2Nvc2YoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUy OiBjaGVja2luZyBmb3IgY2Nvc2gKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2Mv eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1 LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAg LWxtIDE+JjUKL3RtcC9jY1lNMzlnNC5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1i dWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5 NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNjb3NoJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFl djUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmlu ZWQgcmVmZXJlbmNlIHRvIGBjY29zaCcKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0 dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIK I2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBt YWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGlj dCB3aXRoIGNoYXIgY2Nvc2goKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92 ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICov Ci8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv ZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3Vs ZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY2Nvc2goKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdO VSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50 cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0 dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFs IG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2Njb3NoKSB8fCBkZWZp bmVkIChfX3N0dWJfX19jY29zaCkKY2hva2UgbWUKI2Vsc2UKY2Nvc2goKTsKI2VuZGlmCgo7IHJl dHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY2Nvc2hmCmNvbmZpZ3VyZToy OTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9o b21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0 ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NnNU01MEcubzogSW4gZnVu Y3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv bGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjY29z aGYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNjb3NoZicKY29sbGVj dDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3 YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3Rl bSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90 eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY2Nvc2hmKCk7IGJlbG93LiAg Ki8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90 b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBt aWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVu IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGNjb3No ZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9y IGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVO T1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0 YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBk ZWZpbmVkIChfX3N0dWJfY2Nvc2hmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jY29zaGYpCmNob2tl IG1lCiNlbHNlCmNjb3NoZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6 IGNoZWNraW5nIGZvciBjZXhwCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11 bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1s bSAxPiY1Ci90bXAvY2NrOGxaT2oubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVp bGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0 OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjZXhwJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUt dW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQg cmVmZXJlbmNlIHRvIGBjZXhwJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpj b25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1NyAiY29uZmlndXJlIgojaW5j bHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3Jv cyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdp dGggY2hhciBjZXhwKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlk ZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBX ZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBn Y2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp bGwgYXBwbHkuICAqLwpjaGFyIGNleHAoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxp YnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAg dG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkg bmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUg aXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2NleHApIHx8IGRlZmluZWQgKF9f c3R1Yl9fX2NleHApCmNob2tlIG1lCiNlbHNlCmNleHAoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9 CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY2V4cGYKY29uZmlndXJlOjI5ODA6IC90bXAv ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0 L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8y ICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY3o2THVTdC5vOiBJbiBmdW5jdGlvbiBgbWFp bic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNleHBmJwovdG1wL2Vn Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy ZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjZXhwZicKY29sbGVjdDI6IGxkIHJldHVy bmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5 NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8g ZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdo aWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY2V4cGYoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8 YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9p ZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRo ZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50 IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY2V4cGYoKTsKCmludCBtYWlu KCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hp Y2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1 bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9f IGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHVi X2NleHBmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jZXhwZikKY2hva2UgbWUKI2Vsc2UKY2V4cGYo KTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY19s b2cKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1i dWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251 L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY3Bt S0RyNi5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtu b3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZl cmVuY2UgdG8gYGNfbG9nJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1n bnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBj X2xvZycKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWls ZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZz LmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxs eSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY19sb2co KTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGlu dGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJl Y2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0 aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICov CmNoYXIgY19sb2coKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5l cyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZh aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNv bWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMu ICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2NfbG9nKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jX2xv ZykKY2hva2UgbWUKI2Vsc2UKY19sb2coKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3Vy ZToyOTUyOiBjaGVja2luZyBmb3IgY19sb2dmCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVp bGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9h bHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0 ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NkWkNwTkoubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1w L2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZp Z3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjX2xvZ2YnCi90bXAvZWdjcy1idWls ZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6 IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNfbG9nZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEg ZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNv bmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5l IF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNh biBjb25mbGljdCB3aXRoIGNoYXIgY19sb2dmKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2Vy dC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4g ZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0 dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90 b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGNfbG9nZigpOwoKaW50IG1haW4oKSB7 CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBp dCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rp b25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5k IHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfY19s b2dmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jX2xvZ2YpCmNob2tlIG1lCiNlbHNlCmNfbG9nZigp OwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6IGNoZWNraW5nIGZvciBjbG9n MTAKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1i dWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251 L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY3pY TE0yai5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtu b3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZl cmVuY2UgdG8gYGNsb2cxMCcKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgt Z251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBg Y2xvZzEwJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZh aWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1NyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRl ZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1 bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBjbG9n MTAoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2My IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFy IGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1 aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4g ICovCmNoYXIgY2xvZzEwKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRl ZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5 cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAg ICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFs aWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9jbG9nMTApIHx8IGRlZmluZWQgKF9fc3R1Yl9f X2Nsb2cxMCkKY2hva2UgbWUKI2Vsc2UKY2xvZzEwKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpj b25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9yIGNsb2cxMGYKY29uZmlndXJlOjI5ODA6IC90bXAv ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0 L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8y ICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jYzFPWmcxVy5vOiBJbiBmdW5jdGlvbiBgbWFp bic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNsb2cxMGYnCi90bXAv ZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmln dXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNsb2cxMGYnCmNvbGxlY3QyOiBsZCBy ZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGlu ZSAyOTU3ICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVy IHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAg ICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGNsb2cxMGYoKTsgYmVsb3cuICAqLwojaW5j bHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0 byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1h dGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFy Z3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY2xvZzEwZigpOwoK aW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0 aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4g IFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5n IHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVk IChfX3N0dWJfY2xvZzEwZikgfHwgZGVmaW5lZCAoX19zdHViX19fY2xvZzEwZikKY2hva2UgbWUK I2Vsc2UKY2xvZzEwZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6IGNo ZWNraW5nIGZvciBjcG93CmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu b3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAx PiY1Ci90bXAvY2NRbVJaQXEubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQv YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1 bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjcG93JwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5r bm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVm ZXJlbmNlIHRvIGBjcG93Jwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25m aWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1NyAiY29uZmlndXJlIgojaW5jbHVk ZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBh bmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGgg Y2hhciBjcG93KCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBh bnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1 c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2My CiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwg YXBwbHkuICAqLwpjaGFyIGNwb3coKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJh cnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8g YWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFt ZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMg YW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2Nwb3cpIHx8IGRlZmluZWQgKF9fc3R1 Yl9fX2Nwb3cpCmNob2tlIG1lCiNlbHNlCmNwb3coKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNv bmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3Bvd2YKY29uZmlndXJlOjI5ODA6IC90bXAvZWdj cy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xv Y2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAg Y29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY2lYTFdVSi5vOiBJbiBmdW5jdGlvbiBgbWFpbic6 Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMv Y29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNwb3dmJwovdG1wL2VnY3Mt YnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToy OTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjcG93ZicKY29sbGVjdDI6IGxkIHJldHVybmVk IDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcg ImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNo IGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3Bvd2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNz ZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBh biBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy ZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHBy b3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY3Bvd2YoKTsKCmludCBtYWluKCkg ewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2gg aXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0 aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFu ZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2Nw b3dmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jcG93ZikKY2hva2UgbWUKI2Vsc2UKY3Bvd2YoKTsK I2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3Npbgpj b25maWd1cmU6Mjk4MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxk L2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmlu LyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjRUp1WFpt Lm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24t bGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJlZmVyZW5j ZSB0byBgY3NpbicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xp YnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY3NpbicK Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv Z3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3NpbigpOyBiZWxv dy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwg cHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBp bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQg dGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBj c2luKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBm b3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGgg RU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcg c3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lm IGRlZmluZWQgKF9fc3R1Yl9jc2luKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jc2luKQpjaG9rZSBt ZQojZWxzZQpjc2luKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6Mjk1MjogY2hl Y2tpbmcgZm9yIGNzaW5mCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu b3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAx PiY1Ci90bXAvY2NNaVViSVoubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQv YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1 bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjc2luZicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVu a25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJl ZmVyZW5jZSB0byBgY3NpbmYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNv bmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAyOTU3ICJjb25maWd1cmUiCiNpbmNs dWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9z IGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0 aCBjaGFyIGNzaW5mKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlk ZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBX ZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBn Y2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp bGwgYXBwbHkuICAqLwpjaGFyIGNzaW5mKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBs aWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAg IHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5 IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1l IGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9jc2luZikgfHwgZGVmaW5lZCAo X19zdHViX19fY3NpbmYpCmNob2tlIG1lCiNlbHNlCmNzaW5mKCk7CiNlbmRpZgoKOyByZXR1cm4g MDsgfQpjb25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9yIGNzaW5oCmNvbmZpZ3VyZToyOTgwOiAv dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1n IC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NjMUpkamYubzogSW4gZnVuY3Rpb24g YG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3Rk YysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjc2luaCcKL3Rt cC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25m aWd1cmU6Mjk3NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY3NpbmgnCmNvbGxlY3QyOiBsZCBy ZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGlu ZSAyOTU3ICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVy IHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAg ICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGNzaW5oKCk7IGJlbG93LiAgKi8KI2luY2x1 ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8g YXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRj aCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1 bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGNzaW5oKCk7CgppbnQg bWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25z IHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29t ZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0 aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9f c3R1Yl9jc2luaCkgfHwgZGVmaW5lZCAoX19zdHViX19fY3NpbmgpCmNob2tlIG1lCiNlbHNlCmNz aW5oKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9y IGNzaW5oZgpjb25maWd1cmU6Mjk4MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9l Z2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51 eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1w L2NjbnQ1YUNILm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1 LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6Mjk3NDogdW5kZWZpbmVk IHJlZmVyZW5jZSB0byBgY3NpbmhmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1s aW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNl IHRvIGBjc2luaGYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3Vy ZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAyOTU3ICJjb25maWd1cmUiCiNpbmNsdWRlICJj b25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBo b3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFy IGNzaW5oZigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55 IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNl IGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgog ICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFw cGx5LiAgKi8KY2hhciBjc2luaGYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJh cnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8g YWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFt ZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMg YW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2NzaW5oZikgfHwgZGVmaW5lZCAoX19z dHViX19fY3NpbmhmKQpjaG9rZSBtZQojZWxzZQpjc2luaGYoKTsKI2VuZGlmCgo7IHJldHVybiAw OyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3NxcnQKY29uZmlndXJlOjI5ODA6IC90 bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxi ZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcg LU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY1hJT3Yzai5vOiBJbiBmdW5jdGlvbiBg bWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRj KystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNzcXJ0JwovdG1w L2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZp Z3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjc3FydCcKY29sbGVjdDI6IGxkIHJl dHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5l IDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIg dG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAg IHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3NxcnQoKTsgYmVsb3cuICAqLwojaW5jbHVk ZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBh dm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNo IHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3Vt ZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY3NxcnQoKTsKCmludCBt YWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMg d2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21l IGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRo IF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19z dHViX2NzcXJ0KSB8fCBkZWZpbmVkIChfX3N0dWJfX19jc3FydCkKY2hva2UgbWUKI2Vsc2UKY3Nx cnQoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3Ig Y3NxcnRmCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2Vn Y3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4 LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAv Y2NYOXU5WVcubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUt dW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQg cmVmZXJlbmNlIHRvIGBjc3FydGYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxp bnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2Ug dG8gYGNzcXJ0ZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJl OiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNv bmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhv cGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIg Y3NxcnRmKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkg Z2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2Ug Y2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAg ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw bHkuICAqLwpjaGFyIGNzcXJ0ZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFy eSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBh bHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1l ZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBh biBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfY3NxcnRmKSB8fCBkZWZpbmVkIChfX3N0 dWJfX19jc3FydGYpCmNob2tlIG1lCiNlbHNlCmNzcXJ0ZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7 IH0KY29uZmlndXJlOjI5NTI6IGNoZWNraW5nIGZvciBjdGFuCmNvbmZpZ3VyZToyOTgwOiAvdG1w L2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVy dC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1P MiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2MzSHBYdXoubzogSW4gZnVuY3Rpb24gYG1h aW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysr LXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdGFuJwovdG1wL2Vn Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy ZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdGFuJwpjb2xsZWN0MjogbGQgcmV0dXJu ZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1 NyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBk ZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hp Y2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBjdGFuKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFz c2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQg YW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUg cmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBw cm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGN0YW4oKTsKCmludCBtYWluKCkg ewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2gg aXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0 aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFu ZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2N0 YW4pIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2N0YW4pCmNob2tlIG1lCiNlbHNlCmN0YW4oKTsKI2Vu ZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3RhbmYKY29u ZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g LW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY2hnMjA0Yi5v OiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxp bnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2Ug dG8gYGN0YW5mJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGli c3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdGFuZicK Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv Z3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3RhbmYoKTsgYmVs b3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFs IHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2Ug aW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5k IHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIg Y3RhbmYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlz IGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0 aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGlu ZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwoj aWYgZGVmaW5lZCAoX19zdHViX2N0YW5mKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jdGFuZikKY2hv a2UgbWUKI2Vsc2UKY3RhbmYoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUy OiBjaGVja2luZyBmb3IgY3RhbmgKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2Mv eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1 LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAg LWxtIDE+JjUKL3RtcC9jY2VOOVlPbC5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1i dWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjI5 NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGN0YW5oJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFl djUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmlu ZWQgcmVmZXJlbmNlIHRvIGBjdGFuaCcKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0 dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIK I2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBt YWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGlj dCB3aXRoIGNoYXIgY3RhbmgoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92 ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICov Ci8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv ZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3Vs ZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY3RhbmgoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdO VSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50 cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0 dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFs IG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2N0YW5oKSB8fCBkZWZp bmVkIChfX3N0dWJfX19jdGFuaCkKY2hva2UgbWUKI2Vsc2UKY3RhbmgoKTsKI2VuZGlmCgo7IHJl dHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY3RhbmhmCmNvbmZpZ3VyZToy OTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9o b21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0 ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NrbDRNa1kubzogSW4gZnVu Y3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv bGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdGFu aGYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGN0YW5oZicKY29sbGVj dDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3 YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3Rl bSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90 eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY3RhbmhmKCk7IGJlbG93LiAg Ki8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90 b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBt aWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVu IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGN0YW5o ZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9y IGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVO T1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0 YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBk ZWZpbmVkIChfX3N0dWJfY3RhbmhmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jdGFuaGYpCmNob2tl IG1lCiNlbHNlCmN0YW5oZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6 IGNoZWNraW5nIGZvciBjYXJnCmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11 bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1s bSAxPiY1Ci90bXAvY2N3UzZOZUIubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVp bGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0 OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjYXJnJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUt dW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQg cmVmZXJlbmNlIHRvIGBjYXJnJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpj b25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMjk1NyAiY29uZmlndXJlIgojaW5j bHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3Jv cyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdp dGggY2hhciBjYXJnKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlk ZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBX ZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBn Y2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp bGwgYXBwbHkuICAqLwpjaGFyIGNhcmcoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxp YnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAg dG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkg bmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUg aXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2NhcmcpIHx8IGRlZmluZWQgKF9f c3R1Yl9fX2NhcmcpCmNob2tlIG1lCiNlbHNlCmNhcmcoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9 CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgY2FyZ2YKY29uZmlndXJlOjI5ODA6IC90bXAv ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0 L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8y ICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY21jUUpZZC5vOiBJbiBmdW5jdGlvbiBgbWFp bic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst djMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNhcmdmJwovdG1wL2Vn Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy ZToyOTc0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjYXJnZicKY29sbGVjdDI6IGxkIHJldHVy bmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDI5 NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8g ZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdo aWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgY2FyZ2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8 YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9p ZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRo ZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50 IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY2FyZ2YoKTsKCmludCBtYWlu KCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hp Y2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1 bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9f IGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHVi X2NhcmdmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19jYXJnZikKY2hva2UgbWUKI2Vsc2UKY2FyZ2Yo KTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToyOTUyOiBjaGVja2luZyBmb3IgbmFu CmNvbmZpZ3VyZToyOTgwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVp bGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9i aW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NzbVFZ MVEubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93 bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToyOTc0OiB1bmRlZmluZWQgcmVmZXJl bmNlIHRvIGBuYW4nCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9s aWJzdGRjKystdjMvY29uZmlndXJlOjI5NzQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG5hbicK Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv Z3JhbSB3YXM6CiNsaW5lIDI5NTcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgbmFuKCk7IGJlbG93 LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBw cm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGlu dCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0 aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIG5h bigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9y IGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVO T1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0 YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBk ZWZpbmVkIChfX3N0dWJfbmFuKSB8fCBkZWZpbmVkIChfX3N0dWJfX19uYW4pCmNob2tlIG1lCiNl bHNlCm5hbigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjI5NTI6IGNoZWNraW5n IGZvciBoeXBvdApjb25maWd1cmU6Mjk4MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3Rt cC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1s aW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpj b25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9yIGh5cG90Zgpjb25maWd1cmU6Mjk4MDogL3RtcC9l Z2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQv bG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIg ICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6Mjk1MjogY2hlY2tpbmcgZm9yIGF0YW4y Zgpjb25maWd1cmU6Mjk4MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1 aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv YmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6 Mjk1MjogY2hlY2tpbmcgZm9yIGV4cGYKY29uZmlndXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9n Y2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhh ZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3Qu YyAgLWxtIDE+JjUKY29uZmlndXJlOjI5NTI6IGNoZWNraW5nIGZvciBjb3B5c2lnbmYKY29uZmln dXJlOjI5ODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2Mv IC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8g Y29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKY29uZmlndXJlOjMwMDk6IGNo ZWNraW5nIGZvciBjb3B5c2lnbmwKY29uZmlndXJlOjMwMzc6IC90bXAvZWdjcy1idWlsZC9nY2Mv eGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1 LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAg LWxtIDE+JjUKL3RtcC9jY09RbFpPai5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1i dWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMw MzE6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNvcHlzaWdubCcKL3RtcC9lZ2NzLWJ1aWxkL2Fs cGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzAzMTogdW5k ZWZpbmVkIHJlZmVyZW5jZSB0byBgY29weXNpZ25sJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBl eGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzAxNCAiY29u ZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUg X19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2Fu IGNvbmZsaWN0IHdpdGggY2hhciBjb3B5c2lnbmwoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNz ZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBh biBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy ZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHBy b3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgY29weXNpZ25sKCk7CgppbnQgbWFp bigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdo aWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBm dW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBf XyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1 Yl9jb3B5c2lnbmwpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX2NvcHlzaWdubCkKY2hva2UgbWUKI2Vs c2UKY29weXNpZ25sKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzEyMjogY2hl Y2tpbmcgZm9yIG1vZGYKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v d24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+ JjUKY29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBpc25hbgpjb25maWd1cmU6MzE1MDogL3Rt cC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJl cnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAt TzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIGlz bmFuZgpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2Nz LWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1n bnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1 cmU6MzEyMjogY2hlY2tpbmcgZm9yIGlzbmFubApjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1 aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwv YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25m dGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIGlzaW5mCmNvbmZp Z3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2Nj LyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1v IGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBj aGVja2luZyBmb3IgaXNpbmZmCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11 bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1s bSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgaXNpbmZsCmNvbmZpZ3VyZTozMTUw OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21l L2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0 IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBm b3IgY29weXNpZ24KY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90 bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24t bGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUK Y29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBjb3B5c2lnbmwKY29uZmlndXJlOjMxMjI6IGNo ZWNraW5nIGZvciBjb3NmCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu b3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAx PiY1CmNvbmZpZ3VyZTozMTM0OiB3YXJuaW5nOiBjb25mbGljdGluZyB0eXBlcyBmb3IgYnVpbHQt aW4gZnVuY3Rpb24gYGNvc2YnCmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgY29zaGYKY29u ZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g LW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKY29uZmlndXJlOjMxMjI6 IGNoZWNraW5nIGZvciBsb2dmCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hn Y2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11 bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1s bSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgbG9nMTBmCmNvbmZpZ3VyZTozMTUw OiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21l L2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0 IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBm b3IgcG93Zgpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9l Z2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51 eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25m aWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIHNpbmYKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1i dWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2Fs L2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29u ZnRlc3QuYyAgLWxtIDE+JjUKY29uZmlndXJlOjMxMzQ6IHdhcm5pbmc6IGNvbmZsaWN0aW5nIHR5 cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbiBgc2luZicKY29uZmlndXJlOjMxMjI6IGNoZWNraW5n IGZvciBzaW5oZgpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3Rt cC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1s aW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpj b25maWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIHNxcnRmCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2Vn Y3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9s b2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAg IGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTM0OiB3YXJuaW5nOiBjb25mbGljdGlu ZyB0eXBlcyBmb3IgYnVpbHQtaW4gZnVuY3Rpb24gYHNxcnRmJwpjb25maWd1cmU6MzEyMjogY2hl Y2tpbmcgZm9yIHRhbmYKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v d24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+ JjUKY29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciB0YW5oZgpjb25maWd1cmU6MzE1MDogL3Rt cC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJl cnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAt TzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcgZm9yIHN0 cnRvZgpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2Nz LWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1n bnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1 cmU6MzEyMjogY2hlY2tpbmcgZm9yIHN0cnRvbGQKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1i dWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2Fs L2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29u ZnRlc3QuYyAgLWxtIDE+JjUKY29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBmYWJzZgpjb25m aWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2dj Yy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAt byBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQpjb25maWd1cmU6MzEzNDog d2FybmluZzogY29uZmxpY3RpbmcgdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uIGBmYWJzZicK Y29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBzaW5jb3MKY29uZmlndXJlOjMxNTA6IC90bXAv ZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0 L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8y ICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY2FxUUNCMS5vOiBJbiBmdW5jdGlvbiBgbWFp bic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst djMvY29uZmlndXJlOjMxNDQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNpbmNvcycKL3RtcC9l Z2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1 cmU6MzE0NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2luY29zJwpjb2xsZWN0MjogbGQgcmV0 dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUg MzEyNyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0 byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAg d2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBzaW5jb3MoKTsgYmVsb3cuICAqLwojaW5jbHVk ZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBh dm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNo IHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3Vt ZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgc2luY29zKCk7CgppbnQg bWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25z IHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29t ZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0 aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9f c3R1Yl9zaW5jb3MpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX3NpbmNvcykKY2hva2UgbWUKI2Vsc2UK c2luY29zKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcg Zm9yIHNpbmNvc2YKY29uZmlndXJlOjMxNTA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90 bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24t bGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUK L3RtcC9jY1NyRkpNRS5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBo YWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMxNDQ6IHVuZGVm aW5lZCByZWZlcmVuY2UgdG8gYHNpbmNvc2YnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtu b3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMxNDQ6IHVuZGVmaW5lZCByZWZl cmVuY2UgdG8gYHNpbmNvc2YnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNv bmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTI3ICJjb25maWd1cmUiCiNpbmNs dWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9z IGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0 aCBjaGFyIHNpbmNvc2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJy aWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8q IFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBh IGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBz dGlsbCBhcHBseS4gICovCmNoYXIgc2luY29zZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05V IEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRz CiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1 YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwg bmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfc2luY29zZikgfHwgZGVm aW5lZCAoX19zdHViX19fc2luY29zZikKY2hva2UgbWUKI2Vsc2UKc2luY29zZigpOwojZW5kaWYK CjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxMjI6IGNoZWNraW5nIGZvciBzaW5jb3NsCmNvbmZp Z3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2Nj LyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1v IGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NzajdKbGgubzog SW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51 eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMTQ0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRv IGBzaW5jb3NsJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGli c3RkYysrLXYzL2NvbmZpZ3VyZTozMTQ0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzaW5jb3Ns Jwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBw cm9ncmFtIHdhczoKI2xpbmUgMzEyNyAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIK LyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZl dyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBzaW5jb3NsKCk7 IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRl cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNh dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGlu IGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpj aGFyIHNpbmNvc2woKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5l cyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZh aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNv bWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMu ICAqLwojaWYgZGVmaW5lZCAoX19zdHViX3NpbmNvc2wpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX3Np bmNvc2wpCmNob2tlIG1lCiNlbHNlCnNpbmNvc2woKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNv bmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgZmluaXRlCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2Vn Y3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9s b2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAg IGNvbmZ0ZXN0LmMgIC1sbSAxPiY1CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgZmluaXRl CmNvbmZpZ3VyZTozMTIyOiBjaGVja2luZyBmb3IgZnFmaW5pdGUKY29uZmlndXJlOjMxNTA6IC90 bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxi ZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcg LU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY0hiTUd6bS5vOiBJbiBmdW5jdGlvbiBg bWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRj KystdjMvY29uZmlndXJlOjMxNDQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGZxZmluaXRlJwov dG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2Nv bmZpZ3VyZTozMTQ0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBmcWZpbml0ZScKY29sbGVjdDI6 IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 CiNsaW5lIDMxMjcgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBo ZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBl cywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgZnFmaW5pdGUoKTsgYmVsb3cuICAq LwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3Rv dHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1p Z2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4g aXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgZnFmaW5p dGUoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZv ciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBF Tk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBz dGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYg ZGVmaW5lZCAoX19zdHViX2ZxZmluaXRlKSB8fCBkZWZpbmVkIChfX3N0dWJfX19mcWZpbml0ZSkK Y2hva2UgbWUKI2Vsc2UKZnFmaW5pdGUoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3Vy ZTozMTIyOiBjaGVja2luZyBmb3IgZnBjbGFzcwpjb25maWd1cmU6MzE1MDogL3RtcC9lZ2NzLWJ1 aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwv YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25m dGVzdC5jICAtbG0gMT4mNQovdG1wL2NjNnNKQ09TLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3Rt cC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25m aWd1cmU6MzE0NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZnBjbGFzcycKL3RtcC9lZ2NzLWJ1 aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzE0 NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZnBjbGFzcycKY29sbGVjdDI6IGxkIHJldHVybmVk IDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxMjcg ImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNo IGNhbiBjb25mbGljdCB3aXRoIGNoYXIgZnBjbGFzcygpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxh c3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lk IGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhl IHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBmcGNsYXNzKCk7CgppbnQgbWFp bigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdo aWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBm dW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBf XyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1 Yl9mcGNsYXNzKSB8fCBkZWZpbmVkIChfX3N0dWJfX19mcGNsYXNzKQpjaG9rZSBtZQojZWxzZQpm cGNsYXNzKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzEyMjogY2hlY2tpbmcg Zm9yIHFmcGNsYXNzCmNvbmZpZ3VyZTozMTUwOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIv dG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3du LWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1 Ci90bXAvY2NvYlE1ZXYubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxw aGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMTQ0OiB1bmRl ZmluZWQgcmVmZXJlbmNlIHRvIGBxZnBjbGFzcycKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVu a25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzE0NDogdW5kZWZpbmVkIHJl ZmVyZW5jZSB0byBgcWZwY2xhc3MnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVz CmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTI3ICJjb25maWd1cmUiCiNp bmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFj cm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qg d2l0aCBjaGFyIHFmcGNsYXNzKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBP dmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAq LwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg b2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291 bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIHFmcGNsYXNzKCk7CgppbnQgbWFpbigpIHsKCi8qIFRo ZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxl bWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJl IGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5v cm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9xZnBjbGFzcykg fHwgZGVmaW5lZCAoX19zdHViX19fcWZwY2xhc3MpCmNob2tlIG1lCiNlbHNlCnFmcGNsYXNzKCk7 CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9tb2Rm CmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVp bGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9i aW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NFS2Ft RzcubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93 bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJl bmNlIHRvIGBfbW9kZicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251 L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX21v ZGYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVk IHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5o IgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkg ZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9tb2RmKCk7 IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRl cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNh dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGlu IGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpj aGFyIF9tb2RmKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMg dGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWls IHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21l dGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAg Ki8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fbW9kZikgfHwgZGVmaW5lZCAoX19zdHViX19fX21vZGYp CmNob2tlIG1lCiNlbHNlCl9tb2RmKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6 MzE4NTogY2hlY2tpbmcgZm9yIF9pc25hbgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxk L2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxw aGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVz dC5jICAtbG0gMT4mNQovdG1wL2NjOE1zQllKLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9l Z2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1 cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX2lzbmFuJwovdG1wL2VnY3MtYnVpbGQv YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1 bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfaXNuYW4nCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4 aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25m aWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBf X3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4g Y29uZmxpY3Qgd2l0aCBjaGFyIF9pc25hbigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQu aD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVy cm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVy biB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90 eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfaXNuYW4oKTsKCmludCBtYWluKCkgewoK LyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQg aW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9u cyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0 aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19pc25h bikgfHwgZGVmaW5lZCAoX19zdHViX19fX2lzbmFuKQpjaG9rZSBtZQojZWxzZQpfaXNuYW4oKTsK I2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX2lzbmFu Zgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1 aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv YmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjS1Ix eHRtLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25v d24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVy ZW5jZSB0byBgX2lzbmFuZicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgt Z251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBg X2lzbmFuZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBm YWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZk ZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVm dWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX2lz bmFuZigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdj YzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNo YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAg YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5 LiAgKi8KY2hhciBfaXNuYW5mKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5 IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFs d2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVk CiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFu IGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9faXNuYW5mKSB8fCBkZWZpbmVkIChfX3N0 dWJfX19faXNuYW5mKQpjaG9rZSBtZQojZWxzZQpfaXNuYW5mKCk7CiNlbmRpZgoKOyByZXR1cm4g MDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9pc25hbmwKY29uZmlndXJlOjMyMTM6 IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUv YWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3Qg LWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY1Ywa2phdy5vOiBJbiBmdW5jdGlv biBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJz dGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9pc25hbmwn Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMv Y29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9pc25hbmwnCmNvbGxlY3Qy OiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2Fz OgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0g aGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlw ZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9pc25hbmwoKTsgYmVsb3cuICAq LwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3Rv dHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1p Z2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4g aXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX2lzbmFu bCgpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9y IGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVO T1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0 YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBk ZWZpbmVkIChfX3N0dWJfX2lzbmFubCkgfHwgZGVmaW5lZCAoX19zdHViX19fX2lzbmFubCkKY2hv a2UgbWUKI2Vsc2UKX2lzbmFubCgpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMx ODU6IGNoZWNraW5nIGZvciBfaXNpbmYKY29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9n Y2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhh ZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3Qu YyAgLWxtIDE+JjUKL3RtcC9jYzFNT2RHYS5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdj cy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJl OjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9pc2luZicKL3RtcC9lZ2NzLWJ1aWxkL2Fs cGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5k ZWZpbmVkIHJlZmVyZW5jZSB0byBgX2lzaW5mJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0 IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmln dXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19z dHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNv bmZsaWN0IHdpdGggY2hhciBfaXNpbmYoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+ Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv ci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4g dHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlw ZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX2lzaW5mKCk7CgppbnQgbWFpbigpIHsKCi8q IFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGlt cGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMg YXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhl IG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9faXNpbmYp IHx8IGRlZmluZWQgKF9fc3R1Yl9fX19pc2luZikKY2hva2UgbWUKI2Vsc2UKX2lzaW5mKCk7CiNl bmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9pc2luZmYK Y29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp bi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY1Rsem1h UC5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3du LWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVu Y2UgdG8gYF9pc2luZmYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdu dS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9p c2luZmYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFp bGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVm cy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVs bHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9pc2lu ZmYoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2My IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFy IGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1 aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4g ICovCmNoYXIgX2lzaW5mZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBk ZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdh eXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAog ICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBh bGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfX2lzaW5mZikgfHwgZGVmaW5lZCAoX19zdHVi X19fX2lzaW5mZikKY2hva2UgbWUKI2Vsc2UKX2lzaW5mZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7 IH0KY29uZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfaXNpbmZsCmNvbmZpZ3VyZTozMjEzOiAv dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1n IC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NaRHRZQXIubzogSW4gZnVuY3Rpb24g YG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3Rk YysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfaXNpbmZsJwov dG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2Nv bmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfaXNpbmZsJwpjb2xsZWN0Mjog bGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoK I2xpbmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhl YWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVz LAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfaXNpbmZsKCk7IGJlbG93LiAgKi8K I2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5 cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdo dCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0 cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9pc2luZmwo KTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBm dW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9T WVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFy dGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVm aW5lZCAoX19zdHViX19pc2luZmwpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19pc2luZmwpCmNob2tl IG1lCiNlbHNlCl9pc2luZmwoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTozMTg1 OiBjaGVja2luZyBmb3IgX2NvcHlzaWduCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQv Z2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBo YWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0 LmMgIC1sbSAxPiY1Ci90bXAvY2NsMjhnVXcubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2Vn Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy ZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfY29weXNpZ24nCi90bXAvZWdjcy1idWls ZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6 IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9jb3B5c2lnbicKY29sbGVjdDI6IGxkIHJldHVybmVk IDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAg ImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNo IGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX2NvcHlzaWduKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUg PGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZv aWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0 aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVu dCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9jb3B5c2lnbigpOwoKaW50 IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9u cyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNv bWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdp dGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChf X3N0dWJfX2NvcHlzaWduKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fY29weXNpZ24pCmNob2tlIG1l CiNlbHNlCl9jb3B5c2lnbigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxODU6 IGNoZWNraW5nIGZvciBfY29weXNpZ25sCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQv Z2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBo YWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0 LmMgIC1sbSAxPiY1Ci90bXAvY2NXUTNITEcubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2Vn Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy ZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfY29weXNpZ25sJwovdG1wL2VnY3MtYnVp bGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3 OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfY29weXNpZ25sJwpjb2xsZWN0MjogbGQgcmV0dXJu ZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5 MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBk ZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hp Y2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfY29weXNpZ25sKCk7IGJlbG93LiAgKi8KI2luY2x1 ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8g YXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRj aCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1 bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9jb3B5c2lnbmwoKTsK CmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5j dGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMu ICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGlu ZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5l ZCAoX19zdHViX19jb3B5c2lnbmwpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19jb3B5c2lnbmwpCmNo b2tlIG1lCiNlbHNlCl9jb3B5c2lnbmwoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3Vy ZTozMTg1OiBjaGVja2luZyBmb3IgX2Nvc2YKY29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWls ZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2Fs cGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRl c3QuYyAgLWxtIDE+JjUKL3RtcC9jY0lhNU1Fai5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAv ZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmln dXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9jb3NmJwovdG1wL2VnY3MtYnVpbGQv YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1 bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfY29zZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhp dCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZp Z3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9f c3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBj b25mbGljdCB3aXRoIGNoYXIgX2Nvc2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+ Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv ci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4g dHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlw ZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX2Nvc2YoKTsKCmludCBtYWluKCkgewoKLyog VGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1w bGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBh cmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUg bm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19jb3NmKSB8 fCBkZWZpbmVkIChfX3N0dWJfX19fY29zZikKY2hva2UgbWUKI2Vsc2UKX2Nvc2YoKTsKI2VuZGlm Cgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX2Nvc2hmCmNvbmZp Z3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2Nj LyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1v IGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NJelpsU1Yubzog SW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51 eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRv IGBfY29zaGYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJz dGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9jb3NoZicK Y29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJv Z3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8q IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX2Nvc2hmKCk7IGJl bG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5h bCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNl IGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFu ZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFy IF9jb3NoZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRo aXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3 aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRo aW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICov CiNpZiBkZWZpbmVkIChfX3N0dWJfX2Nvc2hmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fY29zaGYp CmNob2tlIG1lCiNlbHNlCl9jb3NoZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJl OjMxODU6IGNoZWNraW5nIGZvciBfbG9nZgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxk L2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxw aGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVz dC5jICAtbG0gMT4mNQovdG1wL2NjUVM0SE55Lm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9l Z2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1 cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX2xvZ2YnCi90bXAvZWdjcy1idWlsZC9h bHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVu ZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9sb2dmJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0 IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmln dXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19z dHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNv bmZsaWN0IHdpdGggY2hhciBfbG9nZigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4K LyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9y LiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0 eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBl IHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfbG9nZigpOwoKaW50IG1haW4oKSB7CgovKiBU aGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBs ZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFy ZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBu b3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfX2xvZ2YpIHx8 IGRlZmluZWQgKF9fc3R1Yl9fX19sb2dmKQpjaG9rZSBtZQojZWxzZQpfbG9nZigpOwojZW5kaWYK CjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfbG9nMTBmCmNvbmZp Z3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2Nj LyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1v IGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NTYTl4amQubzog SW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51 eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRv IGBfbG9nMTBmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGli c3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfbG9nMTBm Jwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBw cm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIK LyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZl dyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfbG9nMTBmKCk7 IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRl cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNh dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGlu IGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpj aGFyIF9sb2cxMGYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5l cyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZh aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNv bWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMu ICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19sb2cxMGYpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19s b2cxMGYpCmNob2tlIG1lCiNlbHNlCl9sb2cxMGYoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNv bmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX3Bvd2YKY29uZmlndXJlOjMyMTM6IC90bXAvZWdj cy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xv Y2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAg Y29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY05wOGxkcC5vOiBJbiBmdW5jdGlvbiBgbWFpbic6 Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMv Y29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9wb3dmJwovdG1wL2VnY3Mt YnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToz MjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfcG93ZicKY29sbGVjdDI6IGxkIHJldHVybmVk IDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAg ImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNo IGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX3Bvd2YoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNz ZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBh biBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSBy ZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHBy b3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX3Bvd2YoKTsKCmludCBtYWluKCkg ewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2gg aXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0 aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFu ZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19w b3dmKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fcG93ZikKY2hva2UgbWUKI2Vsc2UKX3Bvd2YoKTsK I2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX3NpbmYK Y29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp bi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jYzUxdW8x MS5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3du LWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVu Y2UgdG8gYF9zaW5mJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv bGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfc2lu ZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQg cHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgi Ci8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBm ZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX3NpbmYoKTsg YmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVy bmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1 c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4g YW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNo YXIgX3NpbmYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0 aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwg d2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0 aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAq LwojaWYgZGVmaW5lZCAoX19zdHViX19zaW5mKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fc2luZikK Y2hva2UgbWUKI2Vsc2UKX3NpbmYoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZpZ3VyZToz MTg1OiBjaGVja2luZyBmb3IgX3NpbmhmCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQv Z2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBo YWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0 LmMgIC1sbSAxPiY1Ci90bXAvY2NKUGYyeUUubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2Vn Y3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3Vy ZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfc2luaGYnCi90bXAvZWdjcy1idWlsZC9h bHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVu ZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9zaW5oZicKY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhp dCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMxOTAgImNvbmZp Z3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9f c3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBj b25mbGljdCB3aXRoIGNoYXIgX3NpbmhmKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5o PgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJy b3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJu IHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5 cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9zaW5oZigpOwoKaW50IG1haW4oKSB7Cgov KiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBp bXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25z IGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRo ZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfX3Npbmhm KSB8fCBkZWZpbmVkIChfX3N0dWJfX19fc2luaGYpCmNob2tlIG1lCiNlbHNlCl9zaW5oZigpOwoj ZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfc3FydGYK Y29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp bi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY0haZVo0 Zy5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3du LWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVu Y2UgdG8gYF9zcXJ0ZicKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251 L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3Nx cnRmJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxl ZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMu aCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5 IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfc3FydGYo KTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGlu dGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJl Y2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0 aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICov CmNoYXIgX3NxcnRmKCk7CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmlu ZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBm YWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBz b21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFz LiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fc3FydGYpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19z cXJ0ZikKY2hva2UgbWUKI2Vsc2UKX3NxcnRmKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25m aWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF90YW5mCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3Mt YnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2Nh bC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNv bmZ0ZXN0LmMgIC1sbSAxPiY1Ci90bXAvY2NselcwVlQubzogSW4gZnVuY3Rpb24gYG1haW4nOgov dG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2Nv bmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfdGFuZicKL3RtcC9lZ2NzLWJ1 aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIw NzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3RhbmYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAx IGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJj b25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmlu ZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBj YW4gY29uZmxpY3Qgd2l0aCBjaGFyIF90YW5mKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2Vy dC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4g ZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0 dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90 b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF90YW5mKCk7CgppbnQgbWFpbigpIHsK Ci8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0 IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlv bnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQg dGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fdGFu ZikgfHwgZGVmaW5lZCAoX19zdHViX19fX3RhbmYpCmNob2tlIG1lCiNlbHNlCl90YW5mKCk7CiNl bmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF90YW5oZgpj b25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxk L2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmlu LyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjTjg0bmZ3 Lm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24t bGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5j ZSB0byBgX3RhbmhmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUv bGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfdGFu aGYnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVk IHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5o IgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkg ZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF90YW5oZigp OyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50 ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVj YXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRp biBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8K Y2hhciBfdGFuaGYoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5l cyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZh aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNv bWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMu ICAqLwojaWYgZGVmaW5lZCAoX19zdHViX190YW5oZikgfHwgZGVmaW5lZCAoX19zdHViX19fX3Rh bmhmKQpjaG9rZSBtZQojZWxzZQpfdGFuaGYoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9CmNvbmZp Z3VyZTozMTg1OiBjaGVja2luZyBmb3IgX3N0cnRvZgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2Nz LWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9j YWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBj b25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjOFlxdWlJLm86IEluIGZ1bmN0aW9uIGBtYWluJzoK L3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9j b25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3N0cnRvZicKL3RtcC9lZ2Nz LWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6 MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3N0cnRvZicKY29sbGVjdDI6IGxkIHJldHVy bmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNsaW5lIDMx OTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFkZXIgdG8g ZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdo aWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX3N0cnRvZigpOyBiZWxvdy4gICovCiNpbmNsdWRl IDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2 b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2gg dGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1l bnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfc3RydG9mKCk7CgppbnQg bWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25z IHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29t ZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0 aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9f c3R1Yl9fc3RydG9mKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fc3RydG9mKQpjaG9rZSBtZQojZWxz ZQpfc3RydG9mKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tp bmcgZm9yIF9zdHJ0b2xkCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2Mg LUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtu b3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAx PiY1Ci90bXAvY2M2SW5xRmsubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQv YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1 bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfc3RydG9sZCcKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1 LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVk IHJlZmVyZW5jZSB0byBgX3N0cnRvbGQnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3Rh dHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUi CiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIg bWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxp Y3Qgd2l0aCBjaGFyIF9zdHJ0b2xkKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgov KiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3Iu ICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5 cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUg d291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9zdHJ0b2xkKCk7CgppbnQgbWFpbigpIHsKCi8q IFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGlt cGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMg YXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhl IG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fc3RydG9s ZCkgfHwgZGVmaW5lZCAoX19zdHViX19fX3N0cnRvbGQpCmNob2tlIG1lCiNlbHNlCl9zdHJ0b2xk KCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9m YWJzZgpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2Nz LWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1n bnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2Nj Y1BuYWtYLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVu a25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJl ZmVyZW5jZSB0byBgX2ZhYnNmJwovdG1wL2VnY3MtYnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51 eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRv IGBfZmFic2YnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTog ZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25m ZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3Bl ZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9m YWJzZigpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdj YzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNo YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAg YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5 LiAgKi8KY2hhciBfZmFic2YoKTsKCmludCBtYWluKCkgewoKLyogVGhlIEdOVSBDIGxpYnJhcnkg ZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3 YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQK ICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4g YWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX19mYWJzZikgfHwgZGVmaW5lZCAoX19zdHVi X19fX2ZhYnNmKQpjaG9rZSBtZQojZWxzZQpfZmFic2YoKTsKI2VuZGlmCgo7IHJldHVybiAwOyB9 CmNvbmZpZ3VyZTozMTg1OiBjaGVja2luZyBmb3IgX3NpbmNvcwpjb25maWd1cmU6MzIxMzogL3Rt cC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJl cnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAt TzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2Nja1VrcXp6Lm86IEluIGZ1bmN0aW9uIGBt YWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMr Ky12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3NpbmNvcycKL3Rt cC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25m aWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3NpbmNvcycKY29sbGVjdDI6IGxk IHJldHVybmVkIDEgZXhpdCBzdGF0dXMKY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CiNs aW5lIDMxOTAgImNvbmZpZ3VyZSIKI2luY2x1ZGUgImNvbmZkZWZzLmgiCi8qIFN5c3RlbSBoZWFk ZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywK ICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgX3NpbmNvcygpOyBiZWxvdy4gICovCiNp bmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBl IHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQg bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMg YXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfc2luY29zKCk7 CgppbnQgbWFpbigpIHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVu Y3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lT LiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRp bmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmlu ZWQgKF9fc3R1Yl9fc2luY29zKSB8fCBkZWZpbmVkIChfX3N0dWJfX19fc2luY29zKQpjaG9rZSBt ZQojZWxzZQpfc2luY29zKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTog Y2hlY2tpbmcgZm9yIF9zaW5jb3NmCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2Nj L3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2 NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMg IC1sbSAxPiY1Ci90bXAvY2NtYU5aaWMubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3Mt YnVpbGQvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZToz MjA3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfc2luY29zZicKL3RtcC9lZ2NzLWJ1aWxkL2Fs cGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5k ZWZpbmVkIHJlZmVyZW5jZSB0byBgX3NpbmNvc2YnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4 aXQgc3RhdHVzCmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25m aWd1cmUiCiNpbmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBf X3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4g Y29uZmxpY3Qgd2l0aCBjaGFyIF9zaW5jb3NmKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2Vy dC5oPgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4g ZXJyb3IuICAqLwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0 dXJuIHR5cGUgb2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90 b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9zaW5jb3NmKCk7CgppbnQgbWFpbigp IHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNo IGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5j dGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBh bmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9f c2luY29zZikgfHwgZGVmaW5lZCAoX19zdHViX19fX3NpbmNvc2YpCmNob2tlIG1lCiNlbHNlCl9z aW5jb3NmKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcg Zm9yIF9zaW5jb3NsCmNvbmZpZ3VyZTozMjEzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIv dG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3du LWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIC1sbSAxPiY1 Ci90bXAvY2NmOE8xVGwubzogSW4gZnVuY3Rpb24gYG1haW4nOgovdG1wL2VnY3MtYnVpbGQvYWxw aGFldjUtdW5rbm93bi1saW51eC1nbnUvbGlic3RkYysrLXYzL2NvbmZpZ3VyZTozMjA3OiB1bmRl ZmluZWQgcmVmZXJlbmNlIHRvIGBfc2luY29zbCcKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVu a25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJl ZmVyZW5jZSB0byBgX3NpbmNvc2wnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVz CmNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNp bmNsdWRlICJjb25mZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFj cm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qg d2l0aCBjaGFyIF9zaW5jb3NsKCk7IGJlbG93LiAgKi8KI2luY2x1ZGUgPGFzc2VydC5oPgovKiBP dmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAq LwovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg b2YgYSBnY2MyCiAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291 bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIF9zaW5jb3NsKCk7CgppbnQgbWFpbigpIHsKCi8qIFRo ZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxl bWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJl IGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5v cm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9fc2luY29zbCkg fHwgZGVmaW5lZCAoX19zdHViX19fX3NpbmNvc2wpCmNob2tlIG1lCiNlbHNlCl9zaW5jb3NsKCk7 CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzE4NTogY2hlY2tpbmcgZm9yIF9maW5p dGUKY29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1i dWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251 L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxtIDE+JjUKL3RtcC9jY2RZ b1pLWS5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtu b3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZl cmVuY2UgdG8gYF9maW5pdGUnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4 LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8g YF9maW5pdGUnCmNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCmNvbmZpZ3VyZTog ZmFpbGVkIHByb2dyYW0gd2FzOgojbGluZSAzMTkwICJjb25maWd1cmUiCiNpbmNsdWRlICJjb25m ZGVmcy5oIgovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3Bl ZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIF9m aW5pdGUoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0Lmg+Ci8qIE92ZXJyaWRlIGFueSBn Y2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi8qIFdlIHVzZSBj aGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAg IGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBs eS4gICovCmNoYXIgX2Zpbml0ZSgpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFy eSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBh bHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1l ZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBh biBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfX2Zpbml0ZSkgfHwgZGVmaW5lZCAoX19z dHViX19fX2Zpbml0ZSkKY2hva2UgbWUKI2Vsc2UKX2Zpbml0ZSgpOwojZW5kaWYKCjsgcmV0dXJu IDA7IH0KY29uZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfZmluaXRlZgpjb25maWd1cmU6MzIx MzogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9t ZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVz dCAtZyAtTzIgICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjOWVKRXBCLm86IEluIGZ1bmN0 aW9uIGBtYWluJzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xp YnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX2Zpbml0 ZWYnCi90bXAvZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKyst djMvY29uZmlndXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9maW5pdGVmJwpjb2xs ZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFt IHdhczoKI2xpbmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lz dGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90 b3R5cGVzLAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfZmluaXRlZigpOyBiZWxv dy4gICovCiNpbmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwg cHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBp bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQg dGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBf ZmluaXRlZigpOwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRo aXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3 aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRo aW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICov CiNpZiBkZWZpbmVkIChfX3N0dWJfX2Zpbml0ZWYpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19maW5p dGVmKQpjaG9rZSBtZQojZWxzZQpfZmluaXRlZigpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29u ZmlndXJlOjMxODU6IGNoZWNraW5nIGZvciBfcWZpbml0ZQpjb25maWd1cmU6MzIxMzogL3RtcC9l Z2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQv bG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIg ICBjb25mdGVzdC5jICAtbG0gMT4mNQovdG1wL2NjUFJ1TEhkLm86IEluIGZ1bmN0aW9uIGBtYWlu JzoKL3RtcC9lZ2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12 My9jb25maWd1cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX3FmaW5pdGUnCi90bXAv ZWdjcy1idWlsZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmln dXJlOjMyMDc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9xZmluaXRlJwpjb2xsZWN0MjogbGQg cmV0dXJuZWQgMSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xp bmUgMzE5MCAiY29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRl ciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAog ICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBfcWZpbml0ZSgpOyBiZWxvdy4gICovCiNp bmNsdWRlIDxhc3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBl IHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQg bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMg YXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfcWZpbml0ZSgp OwoKaW50IG1haW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1 bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZ Uy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0 aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZp bmVkIChfX3N0dWJfX3FmaW5pdGUpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19xZmluaXRlKQpjaG9r ZSBtZQojZWxzZQpfcWZpbml0ZSgpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMx ODU6IGNoZWNraW5nIGZvciBfZnBjbGFzcwpjb25maWd1cmU6MzIxMzogL3RtcC9lZ2NzLWJ1aWxk L2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxw aGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVz dC5jICAtbG0gMT4mNQovdG1wL2NjWjVweXZTLm86IEluIGZ1bmN0aW9uIGBtYWluJzoKL3RtcC9l Z2NzLWJ1aWxkL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1 cmU6MzIwNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX2ZwY2xhc3MnCi90bXAvZWdjcy1idWls ZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6 IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9mcGNsYXNzJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQg MSBleGl0IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAi Y29uZmlndXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZp bmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2gg Y2FuIGNvbmZsaWN0IHdpdGggY2hhciBfZnBjbGFzcygpOyBiZWxvdy4gICovCiNpbmNsdWRlIDxh c3NlcnQuaD4KLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lk IGFuIGVycm9yLiAgKi8KLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhl IHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBfZnBjbGFzcygpOwoKaW50IG1h aW4oKSB7CgovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3 aGljaCBpdCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUg ZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGgg X18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0 dWJfX2ZwY2xhc3MpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19mcGNsYXNzKQpjaG9rZSBtZQojZWxz ZQpfZnBjbGFzcygpOwojZW5kaWYKCjsgcmV0dXJuIDA7IH0KY29uZmlndXJlOjMxODU6IGNoZWNr aW5nIGZvciBfcWZwY2xhc3MKY29uZmlndXJlOjMyMTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu a25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgLWxt IDE+JjUKL3RtcC9jY2J4SGN6dy5vOiBJbiBmdW5jdGlvbiBgbWFpbic6Ci90bXAvZWdjcy1idWls ZC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9saWJzdGRjKystdjMvY29uZmlndXJlOjMyMDc6 IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9xZnBjbGFzcycKL3RtcC9lZ2NzLWJ1aWxkL2FscGhh ZXY1LXVua25vd24tbGludXgtZ251L2xpYnN0ZGMrKy12My9jb25maWd1cmU6MzIwNzogdW5kZWZp bmVkIHJlZmVyZW5jZSB0byBgX3FmcGNsYXNzJwpjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0 IHN0YXR1cwpjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoKI2xpbmUgMzE5MCAiY29uZmln dXJlIgojaW5jbHVkZSAiY29uZmRlZnMuaCIKLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19z dHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAogICAgd2hpY2ggY2FuIGNv bmZsaWN0IHdpdGggY2hhciBfcWZwY2xhc3MoKTsgYmVsb3cuICAqLwojaW5jbHVkZSA8YXNzZXJ0 Lmg+Ci8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBl cnJvci4gICovCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1 cm4gdHlwZSBvZiBhIGdjYzIKICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3Rv dHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgX3FmcGNsYXNzKCk7CgppbnQgbWFpbigp IHsKCi8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNo IGl0IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5j dGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBh bmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9f cWZwY2xhc3MpIHx8IGRlZmluZWQgKF9fc3R1Yl9fX19xZnBjbGFzcykKY2hva2UgbWUKI2Vsc2UK X3FmcGNsYXNzKCk7CiNlbmRpZgoKOyByZXR1cm4gMDsgfQpjb25maWd1cmU6MzI0MzogY2hlY2tp bmcgZm9yIHdjaGFyLmgKY29uZmlndXJlOjMyNTM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAt Qi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25v d24tbGludXgtZ251L2Jpbi8gLUUgIGNvbmZ0ZXN0LmMgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91 dApjb25maWd1cmU6MzI3MTogY2hlY2tpbmcgZm9yIG5hdGl2ZSBtYnN0YXRlX3QKY29uZmlndXJl OjMyODA6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1C L2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcg LU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmlndXJlOjMyOTk6IGNoZWNraW5nIGZvciBXQ0hBUl9N SU4gYW5kIFdDSEFSX01BWApjb25maWd1cmU6MzMwODogL3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2Nj IC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxwaGFldjUtdW5r bm93bi1saW51eC1nbnUvYmluLyAtYyAtZyAtTzIgIGNvbmZ0ZXN0LmMgMT4mNQpjb25maWd1cmU6 MzMyOTogY2hlY2tpbmcgZm9yIFdFT0YKY29uZmlndXJlOjMzNDA6IC90bXAvZWdjcy1idWlsZC9n Y2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhh ZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29u ZmlndXJlOjMzNTU6IGNoZWNraW5nIGZvciB3Y3NsZW4KY29uZmlndXJlOjMzODM6IC90bXAvZWdj cy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xv Y2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAg Y29uZnRlc3QuYyAgMT4mNQpjb25maWd1cmU6MzM1NTogY2hlY2tpbmcgZm9yIHdtZW1jaHIKY29u ZmlndXJlOjMzODM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9n Y2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8g LW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgMT4mNQpjb25maWd1cmU6MzM1NTogY2hl Y2tpbmcgZm9yIHdtZW1jbXAKY29uZmlndXJlOjMzODM6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu a25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgMT4m NQpjb25maWd1cmU6MzM1NTogY2hlY2tpbmcgZm9yIHdtZW1jcHkKY29uZmlndXJlOjMzODM6IC90 bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxi ZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jpbi8gLW8gY29uZnRlc3QgLWcg LU8yICAgY29uZnRlc3QuYyAgMT4mNQpjb25maWd1cmU6MzM1NTogY2hlY2tpbmcgZm9yIHdtZW1t b3ZlCmNvbmZpZ3VyZTozMzgzOiAvdG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3Mt YnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdu dS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0LmMgIDE+JjUKY29uZmlndXJlOjMz NTU6IGNoZWNraW5nIGZvciB3bWVtc2V0CmNvbmZpZ3VyZTozMzgzOiAvdG1wL2VnY3MtYnVpbGQv Z2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2FsYmVydC9sb2NhbC9hbHBo YWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1nIC1PMiAgIGNvbmZ0ZXN0 LmMgIDE+JjUKY29uZmlndXJlOjM0MTI6IGNoZWNraW5nIGZvciB3aWRlIGNoYXJhY3RlciBzdXBw b3J0CmNvbmZpZ3VyZTozNDQwOiBjaGVja2luZyBmb3IgY3R5cGUuaApjb25maWd1cmU6MzQ1MDog L3RtcC9lZ2NzLWJ1aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9h bGJlcnQvbG9jYWwvYWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3Qu YyA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0CmNvbmZpZ3VyZTozNDcxOiBjaGVja2luZyBmb3Ig Z251LWxpbnV4IDxjdHlwZT4KY29uZmlndXJlOjM0ODQ6IC90bXAvZWdjcy1idWlsZC9nY2MveGdj YyAtQi90bXAvZWdjcy1idWlsZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVu a25vd24tbGludXgtZ251L2Jpbi8gLWMgLWcgLU8yICBjb25mdGVzdC5jIDE+JjUKY29uZmlndXJl OjM2OTA6IGNoZWNraW5nIGZvciB1bmlzdGQuaApjb25maWd1cmU6MzcwMDogL3RtcC9lZ2NzLWJ1 aWxkL2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwv YWxwaGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtRSAgY29uZnRlc3QuYyA+L2Rldi9udWxs IDI+Y29uZnRlc3Qub3V0CmNvbmZpZ3VyZTozNzI5OiBjaGVja2luZyBmb3IgZ2V0cGFnZXNpemUK Y29uZmlndXJlOjM3NTc6IC90bXAvZWdjcy1idWlsZC9nY2MveGdjYyAtQi90bXAvZWdjcy1idWls ZC9nY2MvIC1CL2hvbWUvYWxiZXJ0L2xvY2FsL2FscGhhZXY1LXVua25vd24tbGludXgtZ251L2Jp bi8gLW8gY29uZnRlc3QgLWcgLU8yICAgY29uZnRlc3QuYyAgMT4mNQpjb25maWd1cmU6Mzc4Mjog Y2hlY2tpbmcgZm9yIHdvcmtpbmcgbW1hcApjb25maWd1cmU6MzkzMDogL3RtcC9lZ2NzLWJ1aWxk L2djYy94Z2NjIC1CL3RtcC9lZ2NzLWJ1aWxkL2djYy8gLUIvaG9tZS9hbGJlcnQvbG9jYWwvYWxw aGFldjUtdW5rbm93bi1saW51eC1nbnUvYmluLyAtbyBjb25mdGVzdCAtZyAtTzIgICBjb25mdGVz dC5jICAxPiY1CmNvbmZpZ3VyZTogSW4gZnVuY3Rpb24gYG1haW4nOgpjb25maWd1cmU6MzkwMDog d2FybmluZzogY2FzdCBmcm9tIHBvaW50ZXIgdG8gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZQpj b25maWd1cmU6Mzk5MzogY2hlY2tpbmcgZm9yIExDX01FU1NBR0VTCmNvbmZpZ3VyZTo0MDA1OiAv dG1wL2VnY3MtYnVpbGQvZ2NjL3hnY2MgLUIvdG1wL2VnY3MtYnVpbGQvZ2NjLyAtQi9ob21lL2Fs YmVydC9sb2NhbC9hbHBoYWV2NS11bmtub3duLWxpbnV4LWdudS9iaW4vIC1vIGNvbmZ0ZXN0IC1n IC1PMiAgIGNvbmZ0ZXN0LmMgIDE+JjUK From bkoz@cygnus.com Mon May 8 19:17:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Mon, 08 May 2000 19:17:00 -0000 Subject: libstdc++/57: can't build last gcc snapshot on alphaev5-unknown-linux-gnu Message-ID: <20000509021702.22985.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/57; it has been noted by GNATS. From: Benjamin Kosnik To: albert@ravel.mpg.uni-rostock.de Cc: libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com, libstdc++-prs@sourceware.cygnus.com Subject: Re: libstdc++/57: can't build last gcc snapshot on alphaev5-unknown-linux-gnu Date: Mon, 8 May 2000 18:21:17 -0700 (PDT) > >Synopsis: can't build last gcc snapshot on alphaev5-unknown-linux-gnu > >Confidential: no > >Severity: critical > >Priority: medium > Alpha 21164, RedHat Linux 5.1 (kernel 2.0.34), gcc-2.95.2 > 2. ../egcs-20000501/configure --prefix=/home/albert/local --enable-libstdc++-v3 > 3. make bootstrap-lean this looks fine. I just bootstrapped and ran the libstdc++-v3 testsuite on the following: alphaev6-unknown-linux-gnu Perhaps this is an ev5-specific bug, but for the compilers not the library. Moreover, I don't really have an ev5 machine around here anyway. You should probably submit this to gcc-bugs@gcc.gnu.org, not on the libstdc++ bug database. -benjamin From ericb@computer.org Thu May 11 22:47:00 2000 From: ericb@computer.org (ericb@computer.org) Date: Thu, 11 May 2000 22:47:00 -0000 Subject: libstdc++/59: compile trouble with 20000420 snapshot w/2.95.2 Message-ID: <20000512054246.25071.qmail@sourceware.cygnus.com> >Number: 59 >Category: libstdc++ >Synopsis: compile trouble with 20000420 snapshot w/2.95.2 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu May 11 22:47:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: ericb@computer.org >Release: 20000420 >Organization: >Environment: i686-linux-gnu (RH 6.2) >Description: A full build of gcc 2.95.2 with the latest snapshot of libstdc++ swapped in for the one shipped with gcc fails to compile. I have no trouble compiling 2.90.8, it's 20000420 which fails at the link phase in stage 2: stringCTORDUPAL.lo: In function `messages_base type_info function': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: multiple definition of `basic_string, allocator >::basic_string(unsigned int, char, allocator const &)' stringCTORNC.lo:/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: first defined here stringREPIIPP2.lo: In function `messages_base type_info function': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: multiple definition of `basic_string, allocator > & basic_string, allocator >::_M_replace(__normal_iterator, allocator > >, __normal_iterator, allocator > >, char *, char *, forward_iterator_tag)' stringREPIIPP.lo:/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: first defined here stringCONPPF2.lo: In function `messages_base type_info function': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: multiple definition of `char * basic_string, allocator >::_S_construct(char *, char *, allocator const &, forward_iterator_tag)' stringCONPPF.lo:/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: first defined here stringCOMPARE2.lo: In function `messages_base type_info function': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: multiple definition of `basic_string, allocator >::compare(unsigned int, unsigned int, basic_string, allocator > const &) const' stringCOMPARE.lo:/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: first defined here stringCOMPAREP2.lo: In function `basic_string, allocator >::compare(char const *) const': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc(.text+0x0): multiple definition of `basic_string, allocator >::compare(char const *) const' stringCOMPAREP.lo(.text+0x0):/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc: first defined here wstringCTORDUPAL.lo: In function `messages_base type_info function': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: multiple definition of `basic_string, allocator >::basic_string(unsigned int, wchar_t, allocator const &)' wstringCTORNC.lo:/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: first defined here wstringREPIIPP2.lo: In function `messages_base type_info function': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: multiple definition of `basic_string, allocator > & basic_string, allocator >::_M_replace(__normal_iterator, allocator > >, __normal_iterator, allocator > >, wchar_t *, wchar_t *, forward_iterator_tag)' wstringREPIIPP.lo:/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: first defined here wstringCONPPF2.lo: In function `messages_base type_info function': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: multiple definition of `wchar_t * basic_string, allocator >::_S_construct(wchar_t *, wchar_t *, allocator const &, forward_iterator_tag)' wstringCONPPF.lo:/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: first defined here wstringCOMPARE2.lo: In function `messages_base type_info function': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: multiple definition of `basic_string, allocator >::compare(unsigned int, unsigned int, basic_string, allocator > const &) const' wstringCOMPARE.lo:/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc:54: first defined here wstringCOMPAREP2.lo: In function `basic_string, allocator >::compare(wchar_t const *) const': /home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc(.text+0x0): multiple definition of `basic_string, allocator >::compare(wchar_t const *) const' wstringCOMPAREP.lo(.text+0x0):/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src/../../../../gcc-2.95.2/libstdc++/bits/string.tcc: first defined here collect2: ld returned 1 exit status make[4]: *** [libstdc++.la] Error 1 make[4]: Leaving directory `/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++/src' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++' make[2]: *** [all-recursive-am] Error 2 make[2]: Leaving directory `/home/ericb/tmp/gcc-bin/i686-pc-linux-gnu/libstdc++' make[1]: *** [all-target-libstdc++] Error 2 make[1]: Leaving directory `/home/ericb/tmp/gcc-bin' make: *** [bootstrap] Error 2 >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From niltsiar@neo.rr.com Mon May 15 20:07:00 2000 From: niltsiar@neo.rr.com (niltsiar@neo.rr.com) Date: Mon, 15 May 2000 20:07:00 -0000 Subject: libstdc++/60: undefined references when linking a simple program Message-ID: <20000516030000.14484.qmail@sourceware.cygnus.com> >Number: 60 >Category: libstdc++ >Synopsis: undefined references when linking a simple program >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon May 15 20:07:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: niltsiar@neo.rr.com >Release: 5/15/2000 snapshot >Organization: >Environment: linux 2.2.15 gcc 2.95.2 libstdc++-v3 5/15/2000 >Description: Using gcc 2.95.2 with the current cvs snapshot of libstdc-v3 (from the gcc CVS tree), when trying to compile a simple program(statically), I get the following error messages: :~/tmp$ c++ -static -g -Wall -o link link.cc /usr/lib/libstdc++.a(locale.o): In function `collate type_info function': /home/tsiar/src/cygnus/gcc/build/i686-pc-linux-gnu/libstdc++/src/../../../../libstdc++/src/locale.cc(.text+0x48): undefined reference to `__ne__H3ZPPQ26locale5facetZPPQ26locale5facetZt6vector2ZPQ26locale5facetZt9allocator1ZPQ26locale5facet_RCt17__normal_iterator2ZX01ZX21RCt17__normal_iterator2ZX11ZX21_b' /usr/lib/libstdc++.a(locale.o): In function `locale::_Impl::_Impl(locale::_Impl const &, unsigned int)': /home/tsiar/src/cygnus/gcc/build/i686-pc-linux-gnu/libstdc++/src/../../../../libstdc++/src/locale.cc:87: undefined reference to `__ne__H3ZPPQ26locale5facetZPPQ26locale5facetZt6vector2ZPQ26locale5facetZt9allocator1ZPQ26locale5facet_RCt17__normal_iterator2ZX01ZX21RCt17__normal_iterator2ZX11ZX21_b' /usr/lib/libstdc++.a(localename.o): In function `locale::_Impl::_Impl(locale::_Impl const &, basic_string, allocator > const &, int, unsigned int)': /home/tsiar/src/cygnus/gcc/build/i686-pc-linux-gnu/libstdc++/src/../../../../libstdc++/src/localename.cc:85: undefined reference to `__ne__H3ZPPQ26locale5facetZPPQ26locale5facetZt6vector2ZPQ26locale5facetZt9allocator1ZPQ26locale5facet_RCt17__normal_iterator2ZX01ZX21RCt17__normal_iterator2ZX11ZX21_b' /home/tsiar/src/cygnus/gcc/build/i686-pc-linux-gnu/libstdc++/src/../../../../libstdc++/src/localename.cc:106: undefined reference to `__ne__H3ZPPQ26locale5facetZPPQ26locale5facetZt6vector2ZPQ26locale5facetZt9allocator1ZPQ26locale5facet_RCt17__normal_iterator2ZX01ZX21RCt17__normal_iterator2ZX11ZX21_b' collect2: ld returned 1 exit status If I attempt to compile against the shared library, I get the following: :~/tmp$ c++ -g -Wall -o link link.cc /usr/lib/libstdc++.so: undefined reference to `__ne__H3ZPPQ26locale5facetZPPQ26locale5facetZt6vector2ZPQ26locale5facetZt9allocator1ZPQ26locale5facet_RCt17__normal_iterator2ZX01ZX21RCt17__normal_iterator2ZX11ZX21_b' collect2: ld returned 1 exit status >How-To-Repeat: the simple program I use is: -- #include int main(int argc, char** argv) { return 0; } -- >Fix: >Release-Note: >Audit-Trail: >Unformatted: From dmeranda@medplus.com Thu May 18 08:37:00 2000 From: dmeranda@medplus.com (dmeranda@medplus.com) Date: Thu, 18 May 2000 08:37:00 -0000 Subject: libstdc++/61: Conflicting types for nan() during installation Message-ID: <20000518153126.11361.qmail@sourceware.cygnus.com> >Number: 61 >Category: libstdc++ >Synopsis: Conflicting types for nan() during installation >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu May 18 08:37:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Deron Meranda >Release: 2.90.8 >Organization: >Environment: HP-UX 11.0, gcc 2.95.2 >Description: Trying to build/install libstdc++ fails under HP-UX 11.0. During the compile of the file libstdc++/math/signbit.c, the following error is output: In file included from /opt2/src/gcc-2.95.2/libstdc++/math/mathconf.h:230, from /opt2/src/gcc-2.95.2/libstdc++/math/signbit.c:32: /opt2/src/gcc-2.95.2/libstdc++/math/complex-stub.h:85: conflicting types for `nan' /opt2/src/gcc-build2/gcc/include/math.h:231: previous declaration of `nan' The HP-UX 11.0 operating system declares the following prototype for function nan() in /usr/include/math.h, extern double nan(const char*) whereas libstdc++ 2.90.8 declares it as double nan(void) >How-To-Repeat: Install gcc 2.95.2 with libstdc++ 2.90.8 placed in the libstdc++ subdirectory. Using the HP-UX bundled cc compiler. Configured with options, configure --prefix=/opt/gnu/gcc --with-gnu-as --with-as=/opt/gnu/bin/gas --enable-haifa --enable-threads=posix --enable-namespaces --enable-languages=c,c++,java hppa1.0-hp-hpux11.00 >Fix: Changing the following files seems to appease the compiler, but I'm not sure what the real solution should be or what matches the language standard... libstdc++-2.90.8/math/complex-stub.h libstdc++-2.90.8/math/mathconf.h libstdc++-2.90.8/math/nan.c I modified the nan() function to take a const char* argument to make it match the HP-UX declaration. The macro NAN was defined to be (nan("")). And the nan() function was rewritten as, double nan (const char *n) { if (n==NULL || ! n[0]) return strtod ("nan", NULL); else return strtod (n, NULL); } >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Thu May 18 10:17:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Thu, 18 May 2000 10:17:00 -0000 Subject: libstdc++/61: Conflicting types for nan() during installation Message-ID: <20000518171701.25002.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/61; it has been noted by GNATS. From: Benjamin Kosnik To: dmeranda@medplus.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/61: Conflicting types for nan() during installation Date: Thu, 18 May 2000 10:07:51 -0700 (PDT) i just did work on CVS libstdc++ specifically for HPUX11. 2000-05-10 Benjamin Kosnik * bits/std_cmath.h: Tweaks. * math/mathconf.h: Tweaks and fixes for HP-UX 11. (sqrtf): Define away iff !builtin and !in . (sinf): Same. (cosf): Same. (fabsf): Same. At some point this directory should be converted to c++, the autoconf tests should be run by the c++ compiler (not c), and should be used instead of math.h. Move declaration of nan() here. * math/complex-stub.h (cabsl): Remove nan() declaration. You'll need to use CVS libstdc++. FYI HPUX11 support is still "not there" due to problems with weak linking and the native ld. I'll post to the list when I've got things working. -benjamin On 18 May 2000 dmeranda@medplus.com wrote: > > >Number: 61 > >Category: libstdc++ > >Synopsis: Conflicting types for nan() during installation > >Confidential: no > >Severity: serious > >Priority: high > >Responsible: unassigned > >State: open > >Class: sw-bug > >Submitter-Id: net > >Arrival-Date: Thu May 18 08:37:00 PDT 2000 > >Closed-Date: > >Last-Modified: > >Originator: Deron Meranda > >Release: 2.90.8 > >Organization: > >Environment: > HP-UX 11.0, gcc 2.95.2 > >Description: > Trying to build/install libstdc++ fails under HP-UX 11.0. > During the compile of the file libstdc++/math/signbit.c, > the following error is output: > > In file included from /opt2/src/gcc-2.95.2/libstdc++/math/mathconf.h:230, > from /opt2/src/gcc-2.95.2/libstdc++/math/signbit.c:32: > /opt2/src/gcc-2.95.2/libstdc++/math/complex-stub.h:85: conflicting types for `nan' > /opt2/src/gcc-build2/gcc/include/math.h:231: previous declaration of `nan' > > The HP-UX 11.0 operating system declares the following > prototype for function nan() in /usr/include/math.h, > > extern double nan(const char*) > > whereas libstdc++ 2.90.8 declares it as > > double nan(void) > >How-To-Repeat: > Install gcc 2.95.2 with libstdc++ 2.90.8 placed in the > libstdc++ subdirectory. Using the HP-UX bundled cc > compiler. Configured with options, > > configure --prefix=/opt/gnu/gcc --with-gnu-as > --with-as=/opt/gnu/bin/gas --enable-haifa > --enable-threads=posix --enable-namespaces > --enable-languages=c,c++,java > hppa1.0-hp-hpux11.00 > >Fix: > Changing the following files seems to appease the > compiler, but I'm not sure what the real solution > should be or what matches the language standard... > > libstdc++-2.90.8/math/complex-stub.h > libstdc++-2.90.8/math/mathconf.h > libstdc++-2.90.8/math/nan.c > > I modified the nan() function to take a const char* > argument to make it match the HP-UX declaration. > The macro NAN was defined to be (nan("")). And the > nan() function was rewritten as, > > double > nan (const char *n) > { > if (n==NULL || ! n[0]) > return strtod ("nan", NULL); > else > return strtod (n, NULL); > } > >Release-Note: > >Audit-Trail: > >Unformatted: > From pbd@op.net Tue May 30 10:17:00 2000 From: pbd@op.net (pbd@op.net) Date: Tue, 30 May 2000 10:17:00 -0000 Subject: libstdc++/62: stl_rope.h has many mis-ordered initializers Message-ID: <20000530171644.18002.qmail@sourceware.cygnus.com> >Number: 62 >Category: libstdc++ >Synopsis: stl_rope.h has many mis-ordered initializers >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue May 30 10:17:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Paul Barton-Davis >Release: unknown-1.0 >Organization: >Environment: irrelevant >Description: stl_rope.h is full of mis-ordered initializers. I include a patch as a "file attachment" that fixes all of the mis-orderings that I have come across to date. BTW, the prescence of these problems suggests to me that the libstdc++ developers do not compile with -Wall. It would be a good idea, I think. >How-To-Repeat: Run gcc with -Wall on a file that includes stl_rope.h >Fix: apply the patch enclosed. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="stl_patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="stl_patch" LS0tIHN0bF9yb3BlLmgJV2VkIFNlcCAgMiAxMzoyNTowNSAxOTk4CisrKyAvdXNyL2xvY2FsL2lu Y2x1ZGUvZysrLTMvc3RsX3JvcGUuaAlUdWUgTWF5IDMwIDEyOjA3OjI0IDIwMDAKQEAgLTM4Niw4 ICszODYsOSBAQAogICAgIHR5cGVkZWYgX1JvcGVfcmVwX2Jhc2U8X0NoYXJULF9BbGxvYz46OmFs bG9jYXRvcl90eXBlIGFsbG9jYXRvcl90eXBlOwogICAgIF9Sb3BlX1JvcGVSZXAoX1RhZyBfX3Qs IGludCBfX2QsIGJvb2wgX19iLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgYWxs b2NhdG9yX3R5cGUgX19hKQotICAgICAgICA6IF9NX3RhZyhfX3QpLCBfTV9kZXB0aChfX2QpLCBf TV9pc19iYWxhbmNlZChfX2IpLCBfTV9jX3N0cmluZygwKSwKLSAgICAgICAgICBfUm9wZV9yZXBf YmFzZTxfQ2hhclQsX0FsbG9jPihfX3NpemUsIF9fYSkKKyAgICAgICAgOiBfUm9wZV9yZXBfYmFz ZTxfQ2hhclQsX0FsbG9jPihfX3NpemUsIF9fYSksCisJICBfTV90YWcoX190KSwgX01faXNfYmFs YW5jZWQoX19iKSwgX01fZGVwdGgoX19kKSwgX01fY19zdHJpbmcoMCkKKyAgICAgICAgICAKICAg ICB7CiAjICAgICAgIGlmbmRlZiBfX0dDCiAgICAgICAgICAgICBfTV9yZWZjb3VudCA9IDE7CkBA IC01NjIsOCArNTYzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9l c24ndCBtYXR0ZXIuICAgICAgICAgICAgICAgKi8KICAgICB0eXBlZGVmIF9Sb3BlX3JlcF9iYXNl PF9DaGFyVCxfQWxsb2M+OjphbGxvY2F0b3JfdHlwZSBhbGxvY2F0b3JfdHlwZTsKICAgICBfUm9w ZV9Sb3BlTGVhZihfX0dDX0NPTlNUIF9DaGFyVCogX19kLCBzaXplX3QgX19zaXplLCBhbGxvY2F0 b3JfdHlwZSBfX2EpCi0gICAgICAgIDogX01fZGF0YShfX2QpCi0gICAgICAgICwgX1JvcGVfUm9w ZVJlcDxfQ2hhclQsX0FsbG9jPihfU19sZWFmLCAwLCB0cnVlLCBfX3NpemUsIF9fYSkKKyAgICAg ICAgOiBfUm9wZV9Sb3BlUmVwPF9DaGFyVCxfQWxsb2M+KF9TX2xlYWYsIDAsIHRydWUsIF9fc2l6 ZSwgX19hKSwKKwkgIF9NX2RhdGEoX19kKQogICAgICAgICB7CiAgICAgICAgIF9fc3RsX2Fzc2Vy dChfX3NpemUgPiAwKTsKICAgICAgICAgaWYgKF9TX2lzX2Jhc2ljX2NoYXJfdHlwZSgoX0NoYXJU ICopMCkpIHsKQEAgLTU5MywxMCArNTk0LDEwIEBACiAgICAgX1JvcGVfUm9wZUNvbmNhdGVuYXRp b24oX1JvcGVfUm9wZVJlcDxfQ2hhclQsX0FsbG9jPiogX19sLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBfUm9wZV9Sb3BlUmVwPF9DaGFyVCxfQWxsb2M+KiBfX3IsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlIF9fYSkKLSAgICAgIDogX01fbGVmdChf X2wpLCBfTV9yaWdodChfX3IpCi0gICAgICAsIF9Sb3BlX1JvcGVSZXA8X0NoYXJULF9BbGxvYz4o CisgICAgICA6IF9Sb3BlX1JvcGVSZXA8X0NoYXJULF9BbGxvYz4oCiAgICAgICAgICAgX1NfY29u Y2F0LCBtYXgoX19sLT5fTV9kZXB0aCwgX19yLT5fTV9kZXB0aCkgKyAxLCBmYWxzZSwKLSAgICAg ICAgICBfX2wtPl9NX3NpemUgKyBfX3ItPl9NX3NpemUsIF9fYSkKKyAgICAgICAgICBfX2wtPl9N X3NpemUgKyBfX3ItPl9NX3NpemUsIF9fYSksCisgICAgICAgICBfTV9sZWZ0KF9fbCksIF9NX3Jp Z2h0KF9fcikKICAgICAgIHt9CiAjIGlmbmRlZiBfX0dDCiAgICAgfl9Sb3BlX1JvcGVDb25jYXRl bmF0aW9uKCkgewpAQCAtNjI5LDExICs2MzAsMTIgQEAKICAgICB0eXBlZGVmIF9Sb3BlX3JlcF9i YXNlPF9DaGFyVCxfQWxsb2M+OjphbGxvY2F0b3JfdHlwZSBhbGxvY2F0b3JfdHlwZTsKICAgICBf Um9wZV9Sb3BlRnVuY3Rpb24oY2hhcl9wcm9kdWNlcjxfQ2hhclQ+KiBfX2YsIHNpemVfdCBfX3Np emUsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIF9fZCwgYWxsb2NhdG9yX3R5cGUgX19h KQotICAgICAgOiBfTV9mbihfX2YpCisgICAgICA6IF9Sb3BlX1JvcGVSZXA8X0NoYXJULF9BbGxv Yz4oX1NfZnVuY3Rpb24sIDAsIHRydWUsIF9fc2l6ZSwgX19hKSwKKwlfTV9mbihfX2YpCiAjICAg ICAgIGlmbmRlZiBfX0dDCiAgICAgICAsIF9NX2RlbGV0ZV93aGVuX2RvbmUoX19kKQogIyAgICAg ICBlbmRpZgotICAgICAgLCBfUm9wZV9Sb3BlUmVwPF9DaGFyVCxfQWxsb2M+KF9TX2Z1bmN0aW9u LCAwLCB0cnVlLCBfX3NpemUsIF9fYSkgeworICAgIHsgICAgCiAgICAgICAgIF9fc3RsX2Fzc2Vy dChfX3NpemUgPiAwKTsKICMgICAgICAgaWZkZWYgX19HQwogICAgICAgICAgICAgaWYgKF9fZCkg ewpAQCAtNjkzLDkgKzY5NSw5IEBACiAgICAgdHlwZWRlZiBfUm9wZV9yZXBfYmFzZTxfQ2hhclQs X0FsbG9jPjo6YWxsb2NhdG9yX3R5cGUgYWxsb2NhdG9yX3R5cGU7CiAgICAgX1JvcGVfUm9wZVN1 YnN0cmluZyhfUm9wZV9Sb3BlUmVwPF9DaGFyVCxfQWxsb2M+KiBfX2IsIHNpemVfdCBfX3MsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2wsIGFsbG9jYXRvcl90eXBlIF9fYSkK LSAgICAgIDogX01fYmFzZShfX2IpCisgICAgICA6IF9Sb3BlX1JvcGVGdW5jdGlvbjxfQ2hhclQs X0FsbG9jPih0aGlzLCBfX2wsIGZhbHNlLCBfX2EpIAorICAgICAgLAlfTV9iYXNlKF9fYikKICAg ICAgICwgX01fc3RhcnQoX19zKQotICAgICAgLCBfUm9wZV9Sb3BlRnVuY3Rpb248X0NoYXJULF9B bGxvYz4odGhpcywgX19sLCBmYWxzZSwgX19hKSAKICAgICB7CiAgICAgICAgIF9fc3RsX2Fzc2Vy dChfX2wgPiAwKTsKICAgICAgICAgX19zdGxfYXNzZXJ0KF9fcyArIF9fbCA8PSBfX2ItPl9NX3Np emUpOwpAQCAtNzY2LDE2ICs3NjgsMTYgQEAKICAgICBfTXlfcm9wZSogX01fcm9vdDsgICAgIC8v IFRoZSB3aG9sZSByb3BlLgogICBwdWJsaWM6CiAgICAgX1JvcGVfY2hhcl9yZWZfcHJveHkoX015 X3JvcGUqIF9fciwgc2l6ZV90IF9fcCkgOgotICAgICAgICBfTV9wb3MoX19wKSwgX01fcm9vdChf X3IpLCBfTV9jdXJyZW50X3ZhbGlkKGZhbHNlKSB7fQorICAgICAgICBfTV9wb3MoX19wKSwgX01f Y3VycmVudF92YWxpZChmYWxzZSksIF9NX3Jvb3QoX19yKSB7fQogICAgIF9Sb3BlX2NoYXJfcmVm X3Byb3h5KGNvbnN0IF9Sb3BlX2NoYXJfcmVmX3Byb3h5JiBfX3gpIDoKLSAgICAgICAgX01fcG9z KF9feC5fTV9wb3MpLCBfTV9yb290KF9feC5fTV9yb290KSwgX01fY3VycmVudF92YWxpZChmYWxz ZSkge30KKyAgICAgICAgX01fcG9zKF9feC5fTV9wb3MpLCAgX01fY3VycmVudF92YWxpZChmYWxz ZSksIF9NX3Jvb3QoX194Ll9NX3Jvb3QpIHt9CiAgICAgICAgIC8vIERvbid0IHByZXNlcnZlIGNh Y2hlIGlmIHRoZSByZWZlcmVuY2UgY2FuIG91dGxpdmUgdGhlCiAgICAgICAgIC8vIGV4cHJlc3Np b24uICBXZSBjbGFpbSB0aGF0J3Mgbm90IHBvc3NpYmxlIHdpdGhvdXQgY2FsbGluZwogICAgICAg ICAvLyBhIGNvcHkgY29uc3RydWN0b3Igb3IgZ2VuZXJhdGluZyByZWZlcmVuY2UgdG8gYSBwcm94 eQogICAgICAgICAvLyByZWZlcmVuY2UuICBXZSBkZWNsYXJlIHRoZSBsYXR0ZXIgdG8gaGF2ZSB1 bmRlZmluZWQgc2VtYW50aWNzLgogICAgIF9Sb3BlX2NoYXJfcmVmX3Byb3h5KF9NeV9yb3BlKiBf X3IsIHNpemVfdCBfX3AsCiAgICAgICAgICAgICAgICAgICAgIF9DaGFyVCBfX2MpIDoKLSAgICAg ICAgX01fcG9zKF9fcCksIF9NX3Jvb3QoX19yKSwgX01fY3VycmVudChfX2MpLCBfTV9jdXJyZW50 X3ZhbGlkKHRydWUpIHt9CisgICAgICAgIF9NX3BvcyhfX3ApLCBfTV9jdXJyZW50KF9fYyksIF9N X2N1cnJlbnRfdmFsaWQodHJ1ZSksIF9NX3Jvb3QoX19yKSB7fQogICAgIGlubGluZSBvcGVyYXRv ciBfQ2hhclQgKCkgY29uc3Q7CiAgICAgX1JvcGVfY2hhcl9yZWZfcHJveHkmIG9wZXJhdG9yPSAo X0NoYXJUIF9fYyk7CiAgICAgX1JvcGVfY2hhcl9wdHJfcHJveHk8X0NoYXJULF9BbGxvYz4gb3Bl cmF0b3ImICgpIGNvbnN0OwpAQCAtOTA4LDcgKzkxMCw3IEBACiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gY2FjaGUgaXMgdmFsaWQgZm9yIHByZXZpb3VzIHBvc24u CiAgICAgX1JvcGVfaXRlcmF0b3JfYmFzZSgpIHt9CiAgICAgX1JvcGVfaXRlcmF0b3JfYmFzZShf Um9wZVJlcCogX19yb290LCBzaXplX3QgX19wb3MpCi0gICAgICA6IF9NX3Jvb3QoX19yb290KSwg X01fY3VycmVudF9wb3MoX19wb3MpLCBfTV9idWZfcHRyKDApIHt9CisgICAgICA6IF9NX2N1cnJl bnRfcG9zKF9fcG9zKSwgX01fcm9vdChfX3Jvb3QpLCBfTV9idWZfcHRyKDApIHt9CiAgICAgdm9p ZCBfTV9pbmNyKHNpemVfdCBfX24pOwogICAgIHZvaWQgX01fZGVjcihzaXplX3QgX19uKTsKICAg cHVibGljOgo= From jdao@dtinetworks.com Wed Jun 14 10:27:00 2000 From: jdao@dtinetworks.com (jdao@dtinetworks.com) Date: Wed, 14 Jun 2000 10:27:00 -0000 Subject: libstdc++/63: missing "install.sh" or "install-sh" in libstdc++-2.90.8.tar.gz Message-ID: <20000614172136.3547.qmail@sourceware.cygnus.com> >Number: 63 >Category: libstdc++ >Synopsis: missing "install.sh" or "install-sh" in libstdc++-2.90.8.tar.gz >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Jun 14 10:27:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Jack Dao >Release: libstdc++-2.90.8 >Organization: >Environment: Solaris-7 with GCC-2.95.2 >Description: tsp3dev:root:/tmp/bld-libstdc++/> /tmp/libstdc++-2.90.8/configure --prefix=/usr/local/lib loading cache ./config.cache configure: error: can not find install-sh or install.sh in .. /tmp/libstdc++-2.90.8/.. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From bkoz@cygnus.com Wed Jun 14 10:57:00 2000 From: bkoz@cygnus.com (Benjamin Kosnik) Date: Wed, 14 Jun 2000 10:57:00 -0000 Subject: libstdc++/63: missing "install.sh" or "install-sh" inlibstdc++-2.90.8.tar.gz Message-ID: <20000614175701.17414.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/63; it has been noted by GNATS. From: Benjamin Kosnik To: jdao@dtinetworks.com Cc: libstdc++-gnats@sourceware.cygnus.com, libstdc++-prs@sourceware.cygnus.com Subject: Re: libstdc++/63: missing "install.sh" or "install-sh" in libstdc++-2.90.8.tar.gz Date: Wed, 14 Jun 2000 10:47:49 -0700 (PDT) please read the install/configure pages. They are listed under the documentation part of the libstdc++ website. On 14 Jun 2000 jdao@dtinetworks.com wrote: > > >Number: 63 > >Category: libstdc++ > >Synopsis: missing "install.sh" or "install-sh" in libstdc++-2.90.8.tar.gz > >Confidential: no > >Severity: critical > >Priority: high > >Responsible: unassigned > >State: open > >Class: sw-bug > >Submitter-Id: net > >Arrival-Date: Wed Jun 14 10:27:00 PDT 2000 > >Closed-Date: > >Last-Modified: > >Originator: Jack Dao > >Release: libstdc++-2.90.8 > >Organization: > >Environment: > Solaris-7 with GCC-2.95.2 > >Description: > tsp3dev:root:/tmp/bld-libstdc++/> /tmp/libstdc++-2.90.8/configure --prefix=/usr/local/lib > loading cache ./config.cache > configure: error: can not find install-sh or install.sh in .. /tmp/libstdc++-2.90.8/.. > >How-To-Repeat: > > >Fix: > > >Release-Note: > >Audit-Trail: > >Unformatted: > From yxu@platform.com Tue Jun 20 13:27:00 2000 From: yxu@platform.com (yxu@platform.com) Date: Tue, 20 Jun 2000 13:27:00 -0000 Subject: libstdc++/64: CreateFile call failed with Error # 80 on Win2K; Message-ID: <20000620202046.4747.qmail@sourceware.cygnus.com> >Number: 64 >Category: libstdc++ >Synopsis: CreateFile call failed with Error # 80 on Win2K; >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: support >Submitter-Id: net >Arrival-Date: Tue Jun 20 13:27:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: yxu@platform.com >Release: 6.1 >Organization: >Environment: WINNT4.0 as PDC, WIN2K Server without AD, and samba/RH6.1 >Description: I tried to run a testing problem to create a file on the samba shared from the a WIN2K machine. >From the log. file, I found the lib/utile.c:unix_clean_name(609) unix_clean_name[]. Then smbd/open.c:open_file(508) Error opening file . (File exists) (flags=194) And the WIN2K side is using UNC path \\\path\..\filename. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From bkoz@redhat.com Fri Jun 23 11:07:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Fri, 23 Jun 2000 11:07:00 -0000 Subject: libstdc++/64: CreateFile call failed with Error # 80 on Win2K; Message-ID: <20000623180700.763.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/64; it has been noted by GNATS. From: Benjamin Kosnik To: yxu@platform.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/64: CreateFile call failed with Error # 80 on Win2K; Date: Fri, 23 Jun 2000 11:01:14 -0700 (PDT) and how is this a libstdc++ bug? I suggest you look for help with the samba folks... From benoit.sibaud@rd.francetelecom.fr Wed Jun 28 03:27:00 2000 From: benoit.sibaud@rd.francetelecom.fr (benoit.sibaud@rd.francetelecom.fr) Date: Wed, 28 Jun 2000 03:27:00 -0000 Subject: libstdc++/66: Uninitialized Memory Errors (UMR) with Purify [Ascii log] Message-ID: <20000628102221.9821.qmail@sourceware.cygnus.com> >Number: 66 >Category: libstdc++ >Synopsis: Uninitialized Memory Errors (UMR) with Purify [Ascii log] >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Jun 28 03:27:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: benoit.sibaud@rd.francetelecom.fr >Release: unknown-1.0 >Organization: >Environment: SunOS XXXX 5.6 Generic_105181-17 sun4u sparc SUNW,Ultra-4 Reading specs from /opt/gnu/gcc-2.95.2/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/specs gcc version 2.95.2 19991024 (release) libstdc++ 2.90.8 (full recompilation of gcc) purify-4.5.1-solaris2 >Description: I've got many UMR with Purify. I suspect it's due to libstdc++ 2.90.8, so I send to you the Purify report. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="Test_equDebugPure.plog" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Test_equDebugPure.plog" KioqKiAgUHVyaWZ5IGluc3RydW1lbnRlZCAuL1Rlc3RfZXF1RGVidWdQdXJlIChwaWQgMjI2NTAg YXQgV2VkIEp1biAyOCAxMTozMDozNSAyMDAwKQogICogUHVyaWZ5IDQuNS4xIFNvbGFyaXMgMiwg Q29weXJpZ2h0IChDKSAxOTkyLTE5OTkgUmF0aW9uYWwgU29mdHdhcmUgQ29ycC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4gCiAgKiBGb3IgY29udGFjdCBpbmZvcm1hdGlvbiB0eXBlOiAicHVyaWZ5IC1o ZWxwIgogICogRm9yIFRUWSBvdXRwdXQsIHVzZSB0aGUgb3B0aW9uICItd2luZG93cz1ubyIKICAq IENvbW1hbmQtbGluZTogLi9UZXN0X2VxdURlYnVnUHVyZSAuLi8uLi8uLi9kYXRhL2VxdS9UZXN0 X2VxdV9vay50eHQgCiAgKiBPcHRpb25zIHNldHRpbmdzOiAtY2FjaGUtZGlyPS90bXAvcHVyaWZ5 IC1nKys9eWVzIC1wdXJpZnkgLWNhY2hlLWRpcj0vdG1wIFwKICAgIC1wdXJpZnktaG9tZT0vb3B0 L3B1cmlmeS9wdXJpZnktNC41LjEtc29sYXJpczIgCgoqKioqICBQdXJpZnkgaW5zdHJ1bWVudGVk IC4vVGVzdF9lcXVEZWJ1Z1B1cmUgKHBpZCAyMjY1MCkgICoqKioKVU1SOiBVbmluaXRpYWxpemVk IG1lbW9yeSByZWFkICgxMyB0aW1lcyk6CiAgKiBUaGlzIGlzIG9jY3VycmluZyB3aGlsZSBpbjoK CWdldGxpbmVfX0gzWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3Ix WmNfM3N0ZFJRMjNzdGR0MTNiYXNpY19pc3RyZWFtMlpYMDFaWDExUlEyM3N0ZHQxMmJhc2ljX3N0 cmluZzNaWDAxWlgxMVpYMjFYMDFfUlEyM3N0ZHQxM2Jhc2ljX2lzdHJlYW0yWlgwMVpYMTEgW2Jh c2ljX3N0cmluZy5oOjY3Nl0KCWdldGxpbmVfX0gzWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNa UTIzc3RkdDlhbGxvY2F0b3IxWmNfM3N0ZFJRMjNzdGR0MTNiYXNpY19pc3RyZWFtMlpYMDFaWDEx UlEyM3N0ZHQxMmJhc2ljX3N0cmluZzNaWDAxWlgxMVpYMjFfUlEyM3N0ZHQxM2Jhc2ljX2lzdHJl YW0yWlgwMVpYMTEgW2lzdHJlYW0udGNjOjExOTZdCglJbzo6SW9FcXVEcml2ZXI6OmdldChzdGQ6 OmJhc2ljX2lmc3RyZWFtPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPj4mLElvOjpJb0Jhc2VS ZWFkZXIqKSBbSW9FcXVEcml2ZXIuY3BwOjM4XQoJSW86OklvUmVhZGVyPFRlc3RSZWNvcmQ+Ojpn ZXQoKSBbSW9SZWFkZXIuaDo0Ml0KCXRlc3RfcmVjb3JkX19GR1EyM3N0ZHQxMmJhc2ljX3N0cmlu ZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaYyBbVGVzdF9l cXUuY3BwOjg1XQoJbWFpbiAgICAgICAgICAgW1Rlc3RfZXF1LmNwcDoxNDZdCiAgKiBSZWFkaW5n IDQgYnl0ZXMgZnJvbSAweGVmZmZmNDgwIG9uIHRoZSBzdGFjay4KICAqIEFkZHJlc3MgMHhlZmZm ZjQ4MCBpcyAgICAgIDMxNiBieXRlcyBwYXN0IHN0YXJ0IG9mIGxvY2FsIHZhcmlhYmxlICJfX2Nl cmIiIGluIGZ1bmN0aW9uIGdldGxpbmVfX0gzWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIz c3RkdDlhbGxvY2F0b3IxWmNfM3N0ZFJRMjNzdGR0MTNiYXNpY19pc3RyZWFtMlpYMDFaWDExUlEy M3N0ZHQxMmJhc2ljX3N0cmluZzNaWDAxWlgxMVpYMjFYMDFfUlEyM3N0ZHQxM2Jhc2ljX2lzdHJl YW0yWlgwMVpYMTEuCgoqKioqICBQdXJpZnkgaW5zdHJ1bWVudGVkIC4vVGVzdF9lcXVEZWJ1Z1B1 cmUgKHBpZCAyMjY1MCkgICoqKioKVU1SOiBVbmluaXRpYWxpemVkIG1lbW9yeSByZWFkICgxMiB0 aW1lcyk6CiAgKiBUaGlzIGlzIG9jY3VycmluZyB3aGlsZSBpbjoKCV9TX2NvbnN0cnVjdF9fSDFa UTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBjWlEyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pR MjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY19RMjNzdGR0MTJiYXNp Y19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNY MDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjR1EyM3N0ZDIwZm9yd2FyZF9pdGVyYXRvcl90YWdf UGMgW3N0cmluZy50Y2M6MTI1XQoJX1NfY29uc3RydWN0X19IMVpRMjNzdGR0MTdfX25vcm1hbF9p dGVyYXRvcjJaUGNaUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRz MVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjX1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0 MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgwMFJDUTIzc3RkdDlhbGxv Y2F0b3IxWmNfUGMgW2Jhc2ljX3N0cmluZy5oOjY5N10KCV9fSDFaUTIzc3RkdDE3X19ub3JtYWxf aXRlcmF0b3IyWlBjWlEyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0 czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY19RMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3Rk dDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNYMDBYMDBSQ1EyM3N0ZHQ5YWxs b2NhdG9yMVpjIFtzdHJpbmcudGNjOjIxOF0KCUlvOjpJb0VxdURyaXZlcjo6Z2V0KHN0ZDo6YmFz aWNfaWZzdHJlYW08Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+PiYsSW86OklvQmFzZVJlYWRl ciopIFtJb0VxdURyaXZlci5jcHA6MzldCglJbzo6SW9SZWFkZXI8VGVzdFJlY29yZD46OmdldCgp IFtJb1JlYWRlci5oOjQyXQoJdGVzdF9yZWNvcmRfX0ZHUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pj WlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjIFtUZXN0X2VxdS5j cHA6ODVdCiAgKiBSZWFkaW5nIDQgYnl0ZXMgZnJvbSAweGVmZmZmNDY4IG9uIHRoZSBzdGFjayAo MSBieXRlIGF0IDB4ZWZmZmY0NjggdW5pbml0KS4KICAqIEFkZHJlc3MgMHhlZmZmZjQ2OCBpcyAg ICAgIC00OCBieXRlcyBwYXN0IHN0YXJ0IG9mIGxvY2FsIHZhcmlhYmxlICJfVGFnIiBpbiBmdW5j dGlvbiBfU19jb25zdHJ1Y3RfX0gxWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQY1pRMjNz dGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxv Y2F0b3IxWmNfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpj WlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY19QYy4KCioq KiogIFB1cmlmeSBpbnN0cnVtZW50ZWQgLi9UZXN0X2VxdURlYnVnUHVyZSAocGlkIDIyNjUwKSAg KioqKgpVTVI6IFVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgKDEwIHRpbWVzKToKICAqIFRoaXMg aXMgb2NjdXJyaW5nIHdoaWxlIGluOgoJZ2V0bGluZV9fSDNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0 czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY18zc3RkUlEyM3N0ZHQxM2Jhc2ljX2lzdHJlYW0yWlgw MVpYMTFSUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pYMDFaWDExWlgyMVgwMV9SUTIzc3RkdDEzYmFz aWNfaXN0cmVhbTJaWDAxWlgxMSBbYmFzaWNfc3RyaW5nLmg6Njc2XQoJSW86OklvRXF1RHJpdmVy OjpwYXJzZUxpbmUoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRz PGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiYpIFtJb0VxdURyaXZlci5jcHA6NzddCglJbzo6 SW9FcXVEcml2ZXI6OmdldChzdGQ6OmJhc2ljX2lmc3RyZWFtPGNoYXIsc3RkOjpjaGFyX3RyYWl0 czxjaGFyPj4mLElvOjpJb0Jhc2VSZWFkZXIqKSBbSW9FcXVEcml2ZXIuY3BwOjQzXQoJSW86Oklv UmVhZGVyPFRlc3RSZWNvcmQ+OjpnZXQoKSBbSW9SZWFkZXIuaDo0Ml0KCXRlc3RfcmVjb3JkX19G R1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0 OWFsbG9jYXRvcjFaYyBbVGVzdF9lcXUuY3BwOjg1XQoJbWFpbiAgICAgICAgICAgW1Rlc3RfZXF1 LmNwcDoxNDZdCiAgKiBSZWFkaW5nIDQgYnl0ZXMgZnJvbSAweGVmZmZmMzYwIG9uIHRoZSBzdGFj ay4KICAqIEFkZHJlc3MgMHhlZmZmZjM2MCBpcyAgICAgIDMxNiBieXRlcyBwYXN0IHN0YXJ0IG9m IGxvY2FsIHZhcmlhYmxlICJfX2NlcmIiIGluIGZ1bmN0aW9uIGdldGxpbmVfX0gzWmNaUTIzc3Rk dDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNfM3N0ZFJRMjNzdGR0MTNiYXNp Y19pc3RyZWFtMlpYMDFaWDExUlEyM3N0ZHQxMmJhc2ljX3N0cmluZzNaWDAxWlgxMVpYMjFYMDFf UlEyM3N0ZHQxM2Jhc2ljX2lzdHJlYW0yWlgwMVpYMTEuCgoqKioqICBQdXJpZnkgaW5zdHJ1bWVu dGVkIC4vVGVzdF9lcXVEZWJ1Z1B1cmUgKHBpZCAyMjY1MCkgICoqKioKVU1SOiBVbmluaXRpYWxp emVkIG1lbW9yeSByZWFkICgxMCB0aW1lcyk6CiAgKiBUaGlzIGlzIG9jY3VycmluZyB3aGlsZSBp bjoKCV9TX2NvbnN0cnVjdF9fSDFaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBjWlEyM3N0 ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9j YXRvcjFaY19RMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNa UTIzc3RkdDlhbGxvY2F0b3IxWmNYMDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjR1EyM3N0ZDIw Zm9yd2FyZF9pdGVyYXRvcl90YWdfUGMgW3N0cmluZy50Y2M6MTI1XQoJX1NfY29uc3RydWN0X19I MVpRMjNzdGR0MTdfX25vcm1hbF9pdGVyYXRvcjJaUGNaUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pj WlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjX1EyM3N0ZHQxMmJh c2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFa Y1gwMFgwMFJDUTIzc3RkdDlhbGxvY2F0b3IxWmNfUGMgW2Jhc2ljX3N0cmluZy5oOjY5N10KCV9f SDFaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBjWlEyM3N0ZHQxMmJhc2ljX3N0cmluZzNa Y1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY19RMjNzdGR0MTJi YXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3Ix WmNYMDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjIFtzdHJpbmcudGNjOjIxOF0KCUlvOjpJb0Vx dURyaXZlcjo6cGFyc2VMaW5lKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFy X3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj4mKSBbSW9FcXVEcml2ZXIuY3BwOjgy XQoJSW86OklvRXF1RHJpdmVyOjpnZXQoc3RkOjpiYXNpY19pZnN0cmVhbTxjaGFyLHN0ZDo6Y2hh cl90cmFpdHM8Y2hhcj4+JixJbzo6SW9CYXNlUmVhZGVyKikgW0lvRXF1RHJpdmVyLmNwcDo0M10K CUlvOjpJb1JlYWRlcjxUZXN0UmVjb3JkPjo6Z2V0KCkgW0lvUmVhZGVyLmg6NDJdCiAgKiBSZWFk aW5nIDQgYnl0ZXMgZnJvbSAweGVmZmZmMmQ4IG9uIHRoZSBzdGFjayAoMSBieXRlIGF0IDB4ZWZm ZmYyZDggdW5pbml0KS4KICAqIEFkZHJlc3MgMHhlZmZmZjJkOCBpcyAgICAgIC00OCBieXRlcyBw YXN0IHN0YXJ0IG9mIGxvY2FsIHZhcmlhYmxlICJfVGFnIiBpbiBmdW5jdGlvbiBfU19jb25zdHJ1 Y3RfX0gxWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQY1pRMjNzdGR0MTJiYXNpY19zdHJp bmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNfUTIzc3Rk dDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2Nh dG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY19QYy4KCioqKiogIFB1cmlmeSBpbnN0 cnVtZW50ZWQgLi9UZXN0X2VxdURlYnVnUHVyZSAocGlkIDIyNjUwKSAgKioqKgpVTVI6IFVuaW5p dGlhbGl6ZWQgbWVtb3J5IHJlYWQgKDEwIHRpbWVzKToKICAqIFRoaXMgaXMgb2NjdXJyaW5nIHdo aWxlIGluOgoJZ2V0bGluZV9fSDNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFs bG9jYXRvcjFaY18zc3RkUlEyM3N0ZHQxM2Jhc2ljX2lzdHJlYW0yWlgwMVpYMTFSUTIzc3RkdDEy YmFzaWNfc3RyaW5nM1pYMDFaWDExWlgyMVgwMV9SUTIzc3RkdDEzYmFzaWNfaXN0cmVhbTJaWDAx WlgxMSBbYmFzaWNfc3RyaW5nLmg6Njc2XQoJSW86OklvRXF1RHJpdmVyOjpwYXJzZUxpbmUoY29u c3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxs b2NhdG9yPGNoYXI+PiYpIFtJb0VxdURyaXZlci5jcHA6ODldCglJbzo6SW9FcXVEcml2ZXI6Omdl dChzdGQ6OmJhc2ljX2lmc3RyZWFtPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPj4mLElvOjpJ b0Jhc2VSZWFkZXIqKSBbSW9FcXVEcml2ZXIuY3BwOjQzXQoJSW86OklvUmVhZGVyPFRlc3RSZWNv cmQ+OjpnZXQoKSBbSW9SZWFkZXIuaDo0Ml0KCXRlc3RfcmVjb3JkX19GR1EyM3N0ZHQxMmJhc2lj X3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaYyBb VGVzdF9lcXUuY3BwOjg1XQoJbWFpbiAgICAgICAgICAgW1Rlc3RfZXF1LmNwcDoxNDZdCiAgKiBS ZWFkaW5nIDQgYnl0ZXMgZnJvbSAweGVmZmZmMzYwIG9uIHRoZSBzdGFjay4KICAqIEFkZHJlc3Mg MHhlZmZmZjM2MCBpcyAgICAgIDMxNiBieXRlcyBwYXN0IHN0YXJ0IG9mIGxvY2FsIHZhcmlhYmxl ICJfX2NlcmIiIGluIGZ1bmN0aW9uIGdldGxpbmVfX0gzWmNaUTIzc3RkdDExY2hhcl90cmFpdHMx WmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNfM3N0ZFJRMjNzdGR0MTNiYXNpY19pc3RyZWFtMlpYMDFa WDExUlEyM3N0ZHQxMmJhc2ljX3N0cmluZzNaWDAxWlgxMVpYMjFYMDFfUlEyM3N0ZHQxM2Jhc2lj X2lzdHJlYW0yWlgwMVpYMTEuCgoqKioqICBQdXJpZnkgaW5zdHJ1bWVudGVkIC4vVGVzdF9lcXVE ZWJ1Z1B1cmUgKHBpZCAyMjY1MCkgICoqKioKVU1SOiBVbmluaXRpYWxpemVkIG1lbW9yeSByZWFk ICgxMCB0aW1lcyk6CiAgKiBUaGlzIGlzIG9jY3VycmluZyB3aGlsZSBpbjoKCV9TX2NvbnN0cnVj dF9fSDFaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBjWlEyM3N0ZHQxMmJhc2ljX3N0cmlu ZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY19RMjNzdGR0 MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0 b3IxWmNYMDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjR1EyM3N0ZDIwZm9yd2FyZF9pdGVyYXRv cl90YWdfUGMgW3N0cmluZy50Y2M6MTI1XQoJX1NfY29uc3RydWN0X19IMVpRMjNzdGR0MTdfX25v cm1hbF9pdGVyYXRvcjJaUGNaUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJf dHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjX1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pR MjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgwMFJDUTIzc3Rk dDlhbGxvY2F0b3IxWmNfUGMgW2Jhc2ljX3N0cmluZy5oOjY5N10KCXN0ZDo6YmFzaWNfc3RyaW5n PGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46OnN0ZDo6 YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxj aGFyPj4oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+ LHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiYsdW5zaWduZWQgaW50LHVuc2lnbmVkIGludCkgW3N0cmlu Zy50Y2M6MTg0XQoJc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+ LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pjo6c3Vic3RyKHVuc2lnbmVkIGludCx1bnNpZ25lZCBpbnQp Y29uc3QgW2Jhc2ljX3N0cmluZy5oOjg0OF0KCUlvOjpJb0VxdURyaXZlcjo6cGFyc2VMaW5lKGNv bnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFs bG9jYXRvcjxjaGFyPj4mKSBbSW9FcXVEcml2ZXIuY3BwOjEwOF0KCUlvOjpJb0VxdURyaXZlcjo6 Z2V0KHN0ZDo6YmFzaWNfaWZzdHJlYW08Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+PiYsSW86 OklvQmFzZVJlYWRlciopIFtJb0VxdURyaXZlci5jcHA6NDNdCiAgKiBSZWFkaW5nIDQgYnl0ZXMg ZnJvbSAweGVmZmZmMjM4IG9uIHRoZSBzdGFjay4KICAqIEFkZHJlc3MgMHhlZmZmZjIzOCBpcyAg ICAgIC00OCBieXRlcyBwYXN0IHN0YXJ0IG9mIGxvY2FsIHZhcmlhYmxlICJfVGFnIiBpbiBmdW5j dGlvbiBfU19jb25zdHJ1Y3RfX0gxWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQY1pRMjNz dGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxv Y2F0b3IxWmNfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpj WlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY19QYy4KCioq KiogIFB1cmlmeSBpbnN0cnVtZW50ZWQgLi9UZXN0X2VxdURlYnVnUHVyZSAocGlkIDIyNjUwKSAg KioqKgpVTVI6IFVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgKDQ4IHRpbWVzKToKICAqIFRoaXMg aXMgb2NjdXJyaW5nIHdoaWxlIGluOgoJX1NfY29uc3RydWN0X19IMVpRMjNzdGR0MTdfX25vcm1h bF9pdGVyYXRvcjJaUGNaUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJh aXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjX1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNz dGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgwMFJDUTIzc3RkdDlh bGxvY2F0b3IxWmNHUTIzc3RkMjBmb3J3YXJkX2l0ZXJhdG9yX3RhZ19QYyBbc3RyaW5nLnRjYzox MjVdCglfU19jb25zdHJ1Y3RfX0gxWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQY1pRMjNz dGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxv Y2F0b3IxWmNfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpj WlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY19QYyBbYmFz aWNfc3RyaW5nLmg6Njk3XQoJX19IMVpRMjNzdGR0MTdfX25vcm1hbF9pdGVyYXRvcjJaUGNaUTIz c3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxs b2NhdG9yMVpjX1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFa Y1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgwMFJDUTIzc3RkdDlhbGxvY2F0b3IxWmMgW3N0cmlu Zy50Y2M6MjE4XQoJSW86OklvRXF1RHJpdmVyOjpwYXJzZUxpbmUoY29uc3Qgc3RkOjpiYXNpY19z dHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiYp IFtJb0VxdURyaXZlci5jcHA6MTMzXQoJSW86OklvRXF1RHJpdmVyOjpnZXQoc3RkOjpiYXNpY19p ZnN0cmVhbTxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4+JixJbzo6SW9CYXNlUmVhZGVyKikg W0lvRXF1RHJpdmVyLmNwcDo0M10KCUlvOjpJb1JlYWRlcjxUZXN0UmVjb3JkPjo6Z2V0KCkgW0lv UmVhZGVyLmg6NDJdCiAgKiBSZWFkaW5nIDQgYnl0ZXMgZnJvbSAweGVmZmZmMmQ4IG9uIHRoZSBz dGFjayAoMSBieXRlIGF0IDB4ZWZmZmYyZDggdW5pbml0KS4KICAqIEFkZHJlc3MgMHhlZmZmZjJk OCBpcyAgICAgIC00OCBieXRlcyBwYXN0IHN0YXJ0IG9mIGxvY2FsIHZhcmlhYmxlICJfVGFnIiBp biBmdW5jdGlvbiBfU19jb25zdHJ1Y3RfX0gxWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQ Y1pRMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3Rk dDlhbGxvY2F0b3IxWmNfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJh aXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY19Q Yy4KCioqKiogIFB1cmlmeSBpbnN0cnVtZW50ZWQgLi9UZXN0X2VxdURlYnVnUHVyZSAocGlkIDIy NjUwKSAgKioqKgpVTVI6IFVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgKDM4IHRpbWVzKToKICAq IFRoaXMgaXMgb2NjdXJyaW5nIHdoaWxlIGluOgoJZ2V0bGluZV9fSDNaY1pRMjNzdGR0MTFjaGFy X3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY18zc3RkUlEyM3N0ZHQxM2Jhc2ljX2lzdHJl YW0yWlgwMVpYMTFSUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pYMDFaWDExWlgyMVgwMV9SUTIzc3Rk dDEzYmFzaWNfaXN0cmVhbTJaWDAxWlgxMSBbYmFzaWNfc3RyaW5nLmg6Njc2XQoJSW86OklvRXF1 RHJpdmVyOjpwYXJzZUxpbmUoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJf dHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiYpIFtJb0VxdURyaXZlci5jcHA6MTM3 XQoJSW86OklvRXF1RHJpdmVyOjpnZXQoc3RkOjpiYXNpY19pZnN0cmVhbTxjaGFyLHN0ZDo6Y2hh cl90cmFpdHM8Y2hhcj4+JixJbzo6SW9CYXNlUmVhZGVyKikgW0lvRXF1RHJpdmVyLmNwcDo0M10K CUlvOjpJb1JlYWRlcjxUZXN0UmVjb3JkPjo6Z2V0KCkgW0lvUmVhZGVyLmg6NDJdCgl0ZXN0X3Jl Y29yZF9fRkdRMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNa UTIzc3RkdDlhbGxvY2F0b3IxWmMgW1Rlc3RfZXF1LmNwcDo4NV0KCW1haW4gICAgICAgICAgIFtU ZXN0X2VxdS5jcHA6MTQ2XQogICogUmVhZGluZyA0IGJ5dGVzIGZyb20gMHhlZmZmZjM2MCBvbiB0 aGUgc3RhY2suCiAgKiBBZGRyZXNzIDB4ZWZmZmYzNjAgaXMgICAgICAzMTYgYnl0ZXMgcGFzdCBz dGFydCBvZiBsb2NhbCB2YXJpYWJsZSAiX19jZXJiIiBpbiBmdW5jdGlvbiBnZXRsaW5lX19IM1pj WlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjXzNzdGRSUTIzc3Rk dDEzYmFzaWNfaXN0cmVhbTJaWDAxWlgxMVJRMjNzdGR0MTJiYXNpY19zdHJpbmczWlgwMVpYMTFa WDIxWDAxX1JRMjNzdGR0MTNiYXNpY19pc3RyZWFtMlpYMDFaWDExLgoKKioqKiAgUHVyaWZ5IGlu c3RydW1lbnRlZCAuL1Rlc3RfZXF1RGVidWdQdXJlIChwaWQgMjI2NTApICAqKioqClVNUjogVW5p bml0aWFsaXplZCBtZW1vcnkgcmVhZCAoMzggdGltZXMpOgogICogVGhpcyBpcyBvY2N1cnJpbmcg d2hpbGUgaW46CglfU19jb25zdHJ1Y3RfX0gxWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQ Y1pRMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3Rk dDlhbGxvY2F0b3IxWmNfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJh aXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY0dR MjNzdGQyMGZvcndhcmRfaXRlcmF0b3JfdGFnX1BjIFtzdHJpbmcudGNjOjEyNV0KCV9TX2NvbnN0 cnVjdF9fSDFaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBjWlEyM3N0ZHQxMmJhc2ljX3N0 cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY19RMjNz dGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxv Y2F0b3IxWmNYMDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjX1BjIFtiYXNpY19zdHJpbmcuaDo2 OTddCglzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjph bGxvY2F0b3I8Y2hhcj4+OjpzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8 Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIs c3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj4mLHVuc2lnbmVkIGlu dCx1bnNpZ25lZCBpbnQpIFtzdHJpbmcudGNjOjE4NF0KCXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIs c3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46OnN1YnN0cih1bnNp Z25lZCBpbnQsdW5zaWduZWQgaW50KWNvbnN0IFtiYXNpY19zdHJpbmcuaDo4NDhdCglJbzo6SW9F cXVEcml2ZXI6OnBhcnNlTGluZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hh cl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+JikgW0lvRXF1RHJpdmVyLmNwcDox MjBdCglJbzo6SW9FcXVEcml2ZXI6OmdldChzdGQ6OmJhc2ljX2lmc3RyZWFtPGNoYXIsc3RkOjpj aGFyX3RyYWl0czxjaGFyPj4mLElvOjpJb0Jhc2VSZWFkZXIqKSBbSW9FcXVEcml2ZXIuY3BwOjQz XQogICogUmVhZGluZyA0IGJ5dGVzIGZyb20gMHhlZmZmZjIzOCBvbiB0aGUgc3RhY2suCiAgKiBB ZGRyZXNzIDB4ZWZmZmYyMzggaXMgICAgICAtNDggYnl0ZXMgcGFzdCBzdGFydCBvZiBsb2NhbCB2 YXJpYWJsZSAiX1RhZyIgaW4gZnVuY3Rpb24gX1NfY29uc3RydWN0X19IMVpRMjNzdGR0MTdfX25v cm1hbF9pdGVyYXRvcjJaUGNaUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJf dHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjX1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pR MjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgwMFJDUTIzc3Rk dDlhbGxvY2F0b3IxWmNfUGMuCgoqKioqICBQdXJpZnkgaW5zdHJ1bWVudGVkIC4vVGVzdF9lcXVE ZWJ1Z1B1cmUgKHBpZCAyMjY1MCkgICoqKioKVU1SOiBVbmluaXRpYWxpemVkIG1lbW9yeSByZWFk ICgzOCB0aW1lcyk6CiAgKiBUaGlzIGlzIG9jY3VycmluZyB3aGlsZSBpbjoKCV9TX2NvbnN0cnVj dF9fSDFaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBjWlEyM3N0ZHQxMmJhc2ljX3N0cmlu ZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY19RMjNzdGR0 MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0 b3IxWmNYMDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjR1EyM3N0ZDIwZm9yd2FyZF9pdGVyYXRv cl90YWdfUGMgW3N0cmluZy50Y2M6MTI1XQoJX1NfY29uc3RydWN0X19IMVpRMjNzdGR0MTdfX25v cm1hbF9pdGVyYXRvcjJaUGNaUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJf dHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjX1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pR MjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgwMFJDUTIzc3Rk dDlhbGxvY2F0b3IxWmNfUGMgW2Jhc2ljX3N0cmluZy5oOjY5N10KCXN0ZDo6YmFzaWNfc3RyaW5n PGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46OnN0ZDo6 YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxj aGFyPj4oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+ LHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiYsdW5zaWduZWQgaW50LHVuc2lnbmVkIGludCkgW3N0cmlu Zy50Y2M6MTg0XQoJc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+ LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pjo6c3Vic3RyKHVuc2lnbmVkIGludCx1bnNpZ25lZCBpbnQp Y29uc3QgW2Jhc2ljX3N0cmluZy5oOjg0OF0KCUlvOjpJb0VxdURyaXZlcjo6cGFyc2VMaW5lKGNv bnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFs bG9jYXRvcjxjaGFyPj4mKSBbSW9FcXVEcml2ZXIuY3BwOjEyMV0KCUlvOjpJb0VxdURyaXZlcjo6 Z2V0KHN0ZDo6YmFzaWNfaWZzdHJlYW08Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+PiYsSW86 OklvQmFzZVJlYWRlciopIFtJb0VxdURyaXZlci5jcHA6NDNdCiAgKiBSZWFkaW5nIDQgYnl0ZXMg ZnJvbSAweGVmZmZmMjM4IG9uIHRoZSBzdGFjay4KICAqIEFkZHJlc3MgMHhlZmZmZjIzOCBpcyAg ICAgIC00OCBieXRlcyBwYXN0IHN0YXJ0IG9mIGxvY2FsIHZhcmlhYmxlICJfVGFnIiBpbiBmdW5j dGlvbiBfU19jb25zdHJ1Y3RfX0gxWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQY1pRMjNz dGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxv Y2F0b3IxWmNfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpj WlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY19QYy4KCioq KiogIFB1cmlmeSBpbnN0cnVtZW50ZWQgLi9UZXN0X2VxdURlYnVnUHVyZSAocGlkIDIyNjUwKSAg KioqKgpVTVI6IFVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgKDEwIHRpbWVzKToKICAqIFRoaXMg aXMgb2NjdXJyaW5nIHdoaWxlIGluOgoJX1NfY29uc3RydWN0X19IMVpRMjNzdGR0MTdfX25vcm1h bF9pdGVyYXRvcjJaUGNaUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJh aXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjX1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNz dGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgwMFJDUTIzc3RkdDlh bGxvY2F0b3IxWmNHUTIzc3RkMjBmb3J3YXJkX2l0ZXJhdG9yX3RhZ19QYyBbc3RyaW5nLnRjYzox MjVdCglfU19jb25zdHJ1Y3RfX0gxWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQY1pRMjNz dGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxv Y2F0b3IxWmNfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpj WlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY19QYyBbYmFz aWNfc3RyaW5nLmg6Njk3XQoJc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRz PGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pjo6c3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6 OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pihjb25zdCBzdGQ6OmJhc2lj X3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+ Jix1bnNpZ25lZCBpbnQsdW5zaWduZWQgaW50KSBbc3RyaW5nLnRjYzoxODRdCglzdGQ6OmJhc2lj X3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+ OjpzdWJzdHIodW5zaWduZWQgaW50LHVuc2lnbmVkIGludCljb25zdCBbYmFzaWNfc3RyaW5nLmg6 ODQ4XQoJSW86OklvRXF1RHJpdmVyOjpwYXJzZUxpbmUoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8 Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiYpIFtJb0Vx dURyaXZlci5jcHA6MTU4XQoJSW86OklvRXF1RHJpdmVyOjpnZXQoc3RkOjpiYXNpY19pZnN0cmVh bTxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4+JixJbzo6SW9CYXNlUmVhZGVyKikgW0lvRXF1 RHJpdmVyLmNwcDo0M10KICAqIFJlYWRpbmcgNCBieXRlcyBmcm9tIDB4ZWZmZmYyMzggb24gdGhl IHN0YWNrLgogICogQWRkcmVzcyAweGVmZmZmMjM4IGlzICAgICAgLTQ4IGJ5dGVzIHBhc3Qgc3Rh cnQgb2YgbG9jYWwgdmFyaWFibGUgIl9UYWciIGluIGZ1bmN0aW9uIF9TX2NvbnN0cnVjdF9fSDFa UTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBjWlEyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pR MjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY19RMjNzdGR0MTJiYXNp Y19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNY MDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjX1BjLgoKKioqKiAgUHVyaWZ5IGluc3RydW1lbnRl ZCAuL1Rlc3RfZXF1RGVidWdQdXJlIChwaWQgMjI2NTApICAqKioqCkN1cnJlbnQgZmlsZSBkZXNj cmlwdG9ycyBpbiB1c2U6IDUKRklVOiBmaWxlIGRlc2NyaXB0b3IgMDogPHN0ZGluPgpGSVU6IGZp bGUgZGVzY3JpcHRvciAxOiA8c3Rkb3V0PgpGSVU6IGZpbGUgZGVzY3JpcHRvciAyOiA8c3RkZXJy PgpGSVU6IGZpbGUgZGVzY3JpcHRvciAyNjogPHJlc2VydmVkIGZvciBQdXJpZnkgaW50ZXJuYWwg dXNlPgpGSVU6IGZpbGUgZGVzY3JpcHRvciAyNzogPHJlc2VydmVkIGZvciBQdXJpZnkgaW50ZXJu YWwgdXNlPgoKKioqKiAgUHVyaWZ5IGluc3RydW1lbnRlZCAuL1Rlc3RfZXF1RGVidWdQdXJlIChw aWQgMjI2NTApICAqKioqClB1cmlmeTogU2VhcmNoaW5nIGZvciBhbGwgbWVtb3J5IGxlYWtzLi4u CgpNZW1vcnkgbGVha2VkOiAyNjQgYnl0ZXMgKDM1LjMlKTsgcG90ZW50aWFsbHkgbGVha2VkOiA2 MyBieXRlcyAoOC40MyUpCgpNTEs6IDk2IGJ5dGVzIGxlYWtlZCBpbiAyIGJsb2NrcwogICogVGhp cyBtZW1vcnkgd2FzIGFsbG9jYXRlZCBmcm9tOgoJbWFsbG9jICAgICAgICAgW3J0bGliLm9dCglf X2JVaUx0SW5fbkV3ICBbbmV3MS5jYzo4NF0KCV9fYnVpbHRpbl9uZXcgIFtydGxpYi5vXQoJZW5y b2xsX19IMVpkX1EyMklvNUlvTWFwUkNRMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDEx Y2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNSWDAxX1JRMjJJb3Q3SW9WYWx1ZTFa WDAxIFtJb01hcC5oOjU2XQoJVGVzdFJlY29yZDo6ZmlsbE1hcChJbzo6SW9NYXAmKSBbVGVzdF9l cXUuY3BwOjI5XQoJSW86OklvV3JpdGVyPFRlc3RSZWNvcmQ+OjpJbzo6SW9Xcml0ZXI8VGVzdFJl Y29yZD4oSW86OklvRHJpdmVyJikgW0lvV3JpdGVyLmg6MzFdCiAgKiBCbG9jayBvZiA0OCBieXRl cyAoMiB0aW1lcyk7IGxhc3QgYmxvY2sgYXQgMHgxYTIwMTgKCk1MSzogOTYgYnl0ZXMgbGVha2Vk IGluIDIgYmxvY2tzCiAgKiBUaGlzIG1lbW9yeSB3YXMgYWxsb2NhdGVkIGZyb206CgltYWxsb2Mg ICAgICAgICBbcnRsaWIub10KCV9fYlVpTHRJbl9uRXcgIFtuZXcxLmNjOjg0XQoJX19idWlsdGlu X25ldyAgW3J0bGliLm9dCgllbnJvbGxfX0gyWmRaZF9RMjJJbzVJb01hcFJDUTIzc3RkdDEyYmFz aWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpj UlgwMVJDWDExX1JRMjJJb3Q3SW9WYWx1ZTFaWDAxIFtJb01hcC5oOjc0XQoJVGVzdFJlY29yZDo6 ZmlsbE1hcChJbzo6SW9NYXAmKSBbVGVzdF9lcXUuY3BwOjI4XQoJSW86OklvV3JpdGVyPFRlc3RS ZWNvcmQ+OjpJbzo6SW9Xcml0ZXI8VGVzdFJlY29yZD4oSW86OklvRHJpdmVyJikgW0lvV3JpdGVy Lmg6MzFdCiAgKiBCbG9jayBvZiA0OCBieXRlcyAoMiB0aW1lcyk7IGxhc3QgYmxvY2sgYXQgMHgx YTFmMjgKCk1MSzogMzggYnl0ZXMgbGVha2VkIGluIDIgYmxvY2tzCiAgKiBUaGlzIG1lbW9yeSB3 YXMgYWxsb2NhdGVkIGZyb206CgltYWxsb2MgICAgICAgICBbcnRsaWIub10KCXN0ZDo6YmFzaWNf c3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46 Ol9SZXA6Ol9TX2NyZWF0ZSh1bnNpZ25lZCBpbnQsY29uc3Qgc3RkOjphbGxvY2F0b3I8Y2hhcj4m KSBbc3RsX2FsbG9jLmg6MTI4XQoJX1NfY29uc3RydWN0X19IMVpQQ2NfUTIzc3RkdDEyYmFzaWNf c3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAw WDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY0dRMjNzdGQyMGZvcndhcmRfaXRlcmF0b3JfdGFnX1Bj IFtzdHJpbmcudGNjOjEzMV0KCXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0 czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46OnN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3Rk OjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj4oY29uc3QgY2hhciosY29u c3Qgc3RkOjphbGxvY2F0b3I8Y2hhcj4mKSBbYmFzaWNfc3RyaW5nLmg6Njk3XQoJVGVzdFJlY29y ZDo6ZmlsbE1hcChJbzo6SW9NYXAmKSBbVGVzdF9lcXUuY3BwOjI5XQoJSW86OklvV3JpdGVyPFRl c3RSZWNvcmQ+OjpJbzo6SW9Xcml0ZXI8VGVzdFJlY29yZD4oSW86OklvRHJpdmVyJikgW0lvV3Jp dGVyLmg6MzFdCiAgKiBCbG9jayBvZiAxOSBieXRlcyAoMiB0aW1lcyk7IGxhc3QgYmxvY2sgYXQg MHgxYTFmYjAKCk1MSzogMzQgYnl0ZXMgbGVha2VkIGluIDIgYmxvY2tzCiAgKiBUaGlzIG1lbW9y eSB3YXMgYWxsb2NhdGVkIGZyb206CgltYWxsb2MgICAgICAgICBbcnRsaWIub10KCXN0ZDo6YmFz aWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFy Pj46Ol9SZXA6Ol9TX2NyZWF0ZSh1bnNpZ25lZCBpbnQsY29uc3Qgc3RkOjphbGxvY2F0b3I8Y2hh cj4mKSBbc3RsX2FsbG9jLmg6MTI4XQoJX1NfY29uc3RydWN0X19IMVpQQ2NfUTIzc3RkdDEyYmFz aWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpj WDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY0dRMjNzdGQyMGZvcndhcmRfaXRlcmF0b3JfdGFn X1BjIFtzdHJpbmcudGNjOjEzMV0KCXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3Ry YWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46OnN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIs c3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj4oY29uc3QgY2hhcios Y29uc3Qgc3RkOjphbGxvY2F0b3I8Y2hhcj4mKSBbYmFzaWNfc3RyaW5nLmg6Njk3XQoJVGVzdFJl Y29yZDo6ZmlsbE1hcChJbzo6SW9NYXAmKSBbVGVzdF9lcXUuY3BwOjI4XQoJSW86OklvV3JpdGVy PFRlc3RSZWNvcmQ+OjpJbzo6SW9Xcml0ZXI8VGVzdFJlY29yZD4oSW86OklvRHJpdmVyJikgW0lv V3JpdGVyLmg6MzFdCiAgKiBCbG9jayBvZiAxNyBieXRlcyAoMiB0aW1lcyk7IGxhc3QgYmxvY2sg YXQgMHgxYTFlYzAKClBMSzogMTggYnl0ZXMgcG90ZW50aWFsbHkgbGVha2VkIGF0IDB4MTlmNDY4 CiAgKiBUaGlzIG1lbW9yeSB3YXMgYWxsb2NhdGVkIGZyb206CgltYWxsb2MgICAgICAgICBbcnRs aWIub10KCXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6 OmFsbG9jYXRvcjxjaGFyPj46Ol9SZXA6Ol9TX2NyZWF0ZSh1bnNpZ25lZCBpbnQsY29uc3Qgc3Rk OjphbGxvY2F0b3I8Y2hhcj4mKSBbc3RsX2FsbG9jLmg6MTI4XQoJX1NfY29uc3RydWN0X19IMVpQ Q2NfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0 ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY0dRMjNzdGQyMGZvcndh cmRfaXRlcmF0b3JfdGFnX1BjIFtzdHJpbmcudGNjOjEzMV0KCXN0ZDo6YmFzaWNfc3RyaW5nPGNo YXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46OnN0ZDo6YmFz aWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFy Pj4oY29uc3QgY2hhciosY29uc3Qgc3RkOjphbGxvY2F0b3I8Y2hhcj4mKSBbYmFzaWNfc3RyaW5n Lmg6Njk3XQoJc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSBbbG9jYWxlX2ZhY2V0cy5oOjEyNTFdCglz dGQ6OmJhc2ljX2ZpbGVidWY8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+Pjo6c3RkOjpiYXNp Y19maWxlYnVmPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPj4oKSBbbG9jYWxlZndkLmg6MzAy XQoKUExLOiAxNyBieXRlcyBwb3RlbnRpYWxseSBsZWFrZWQgYXQgMHgxOWY0ZDAKICAqIFRoaXMg bWVtb3J5IHdhcyBhbGxvY2F0ZWQgZnJvbToKCW1hbGxvYyAgICAgICAgIFtydGxpYi5vXQoJc3Rk OjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9y PGNoYXI+Pjo6X1JlcDo6X1NfY3JlYXRlKHVuc2lnbmVkIGludCxjb25zdCBzdGQ6OmFsbG9jYXRv cjxjaGFyPiYpIFtzdGxfYWxsb2MuaDoxMjhdCglfU19jb25zdHJ1Y3RfX0gxWlBDY19RMjNzdGR0 MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0 b3IxWmNYMDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjR1EyM3N0ZDIwZm9yd2FyZF9pdGVyYXRv cl90YWdfUGMgW3N0cmluZy50Y2M6MTMxXQoJc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNo YXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pjo6c3RkOjpiYXNpY19zdHJpbmc8 Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pihjb25zdCBj aGFyKixjb25zdCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiYpIFtiYXNpY19zdHJpbmcuaDo2OTddCglz dGQ6OmxvY2FsZTo6Y2xhc3NpYygpIFtsb2NhbGVfZmFjZXRzLmg6MTI1MV0KCXN0ZDo6YmFzaWNf ZmlsZWJ1ZjxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4+OjpzdGQ6OmJhc2ljX2ZpbGVidWY8 Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+PigpIFtsb2NhbGVmd2QuaDozMDJdCgpQTEs6IDE0 IGJ5dGVzIHBvdGVudGlhbGx5IGxlYWtlZCBhdCAweDE5ZjAyOAogICogVGhpcyBtZW1vcnkgd2Fz IGFsbG9jYXRlZCBmcm9tOgoJbWFsbG9jICAgICAgICAgW3J0bGliLm9dCglzdGQ6OmJhc2ljX3N0 cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+Ojpf UmVwOjpfU19jcmVhdGUodW5zaWduZWQgaW50LGNvbnN0IHN0ZDo6YWxsb2NhdG9yPGNoYXI+Jikg W3N0bF9hbGxvYy5oOjEyOF0KCV9TX2NvbnN0cnVjdF9fSDFaUENjX1EyM3N0ZHQxMmJhc2ljX3N0 cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgw MFJDUTIzc3RkdDlhbGxvY2F0b3IxWmNHUTIzc3RkMjBmb3J3YXJkX2l0ZXJhdG9yX3RhZ19QYyBb c3RyaW5nLnRjYzoxMzFdCglzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8 Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+OjpzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6 Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+KGNvbnN0IGNoYXIqLGNvbnN0 IHN0ZDo6YWxsb2NhdG9yPGNoYXI+JikgW2Jhc2ljX3N0cmluZy5oOjY5N10KCXN0ZDo6bG9jYWxl OjpfSW1wbDo6c3RkOjpsb2NhbGU6Ol9JbXBsKHVuc2lnbmVkIGludCx1bnNpZ25lZCBpbnQpIFts b2NhbGUuY2M6NjZdCglzdGQ6OmxvY2FsZTo6Y2xhc3NpYygpIFtsb2NhbGUuY2M6MzIzXQoKUExL OiAxNCBieXRlcyBwb3RlbnRpYWxseSBsZWFrZWQgYXQgMHgxOWVlNDAKICAqIFRoaXMgbWVtb3J5 IHdhcyBhbGxvY2F0ZWQgZnJvbToKCW1hbGxvYyAgICAgICAgIFtydGxpYi5vXQoJc3RkOjpiYXNp Y19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ Pjo6X1JlcDo6X1NfY3JlYXRlKHVuc2lnbmVkIGludCxjb25zdCBzdGQ6OmFsbG9jYXRvcjxjaGFy PiYpIFtzdGxfYWxsb2MuaDoxMjhdCglfU19jb25zdHJ1Y3RfX0gxWlBDY19RMjNzdGR0MTJiYXNp Y19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNY MDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjR1EyM3N0ZDIwZm9yd2FyZF9pdGVyYXRvcl90YWdf UGMgW3N0cmluZy50Y2M6MTMxXQoJc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJh aXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pjo6c3RkOjpiYXNpY19zdHJpbmc8Y2hhcixz dGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pihjb25zdCBjaGFyKixj b25zdCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiYpIFtiYXNpY19zdHJpbmcuaDo2OTddCglzdGQ6Omxv Y2FsZTo6X0ltcGw6OnN0ZDo6bG9jYWxlOjpfSW1wbCh1bnNpZ25lZCBpbnQsdW5zaWduZWQgaW50 KSBbbG9jYWxlLmNjOjYwXQoJc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSBbbG9jYWxlLmNjOjMyM10K ClB1cmlmeSBIZWFwIEFuYWx5c2lzIChjb21iaW5pbmcgc3VwcHJlc3NlZCBhbmQgdW5zdXBwcmVz c2VkIGJsb2NrcykKICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrcyAgICAgICAgQnl0ZXMK ICAgICAgICAgICAgICBMZWFrZWQgICAgICAgICAgOCAgICAgICAgICAyNjQKICBQb3RlbnRpYWxs eSBMZWFrZWQgICAgICAgICAgNCAgICAgICAgICAgNjMKICAgICAgICAgICAgICBJbi1Vc2UgICAg ICAgICAxOSAgICAgICAgICA0MjAKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgICAgVG90YWwgQWxsb2NhdGVkICAgICAgICAgMzEgICAgICAgICAgNzQ3CgoqKioq ICBQdXJpZnkgaW5zdHJ1bWVudGVkIC4vVGVzdF9lcXVEZWJ1Z1B1cmUgKHBpZCAyMjY1MCkgICoq KioKICAqIFByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzIGNvZGUgMC4KICAqIDExIGFjY2VzcyBl cnJvcnMsIDIzNyB0b3RhbCBvY2N1cnJlbmNlcy4KICAqIDI2NCBieXRlcyBsZWFrZWQuCiAgKiA2 MyBieXRlcyBwb3RlbnRpYWxseSBsZWFrZWQuCiAgKiBCYXNpYyBtZW1vcnkgdXNhZ2UgKGluY2x1 ZGluZyBQdXJpZnkgb3ZlcmhlYWQpOgogICAgMTMxOTUyOSBjb2RlCiAgICAyNDg0OTYgZGF0YS9i c3MKICAgIDkwMTE2IGhlYXAgKHBlYWsgdXNlKQogICAgMTI3MiBzdGFjawoK From benoit.sibaud@rd.francetelecom.fr Wed Jun 28 03:27:00 2000 From: benoit.sibaud@rd.francetelecom.fr (benoit.sibaud@rd.francetelecom.fr) Date: Wed, 28 Jun 2000 03:27:00 -0000 Subject: libstdc++/65: Uninitialized Memory Errors (UMR) with Purify Message-ID: <20000628101943.9655.qmail@sourceware.cygnus.com> >Number: 65 >Category: libstdc++ >Synopsis: Uninitialized Memory Errors (UMR) with Purify >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Jun 28 03:27:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: benoit.sibaud@rd.francetelecom.fr >Release: unknown-1.0 >Organization: >Environment: SunOS XXXX 5.6 Generic_105181-17 sun4u sparc SUNW,Ultra-4 Reading specs from /opt/gnu/gcc-2.95.2/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/specs gcc version 2.95.2 19991024 (release) libstdc++ 2.90.8 (full recompilation of gcc) purify-4.5.1-solaris2 >Description: I've got many UMR with Purify. I suspect it's due to libstdc++ 2.90.8, so I send to you the Purify report. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="Test_equDebugPure.pv" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Test_equDebugPure.pv" cHVyaWZ5IC12aWV3CgwAAAAAACM5WcVXAAAAWy9hcHBsaS9vdXRpbHMvbGliSW8vZXhhbXBsZXMv VGVzdC9iaW4vc3BhcmMtc3VuLXNvbGFyaXMyLjYvMS4xLWRlYnVnLWcrKy9UZXN0X2VxdURlYnVn UHVyZQAAAGD2AAAAOwAAAAAAAAAAAAAAAAEw+s4AAAABAAAxYi9vcHQvZ251L2djYy0yLjk1LjIv bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjYvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1 ZGUvZysrLXYzL2JpdHMvc3RsX3ZlY3Rvci5oAC9hcHBsaS9vdXRpbHMvbGliSW8vZXhhbXBsZXMv VGVzdC9zcmMvVGVzdF9lcXUubwAvYXBwbGkvb3V0aWxzL2xpYklvL2V4YW1wbGVzL1Rlc3QvYmlu L3NwYXJjLXN1bi1zb2xhcmlzMi42LzEuMS1kZWJ1Zy1nKysvVGVzdF9lcXVEZWJ1Z1B1cmUAX01f aW5zZXJ0X2F1eF9fUTIzc3RkdDZ2ZWN0b3IyWlBRMjJJbzExSW9CYXNlVmFsdWVaUTIzc3RkdDlh bGxvY2F0b3IxWlBRMjJJbzExSW9CYXNlVmFsdWVHUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3Iy WlBQUTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0ZHQ2dmVjdG9yMlpQUTIySW8xMUlvQmFzZVZhbHVl WlEyM3N0ZHQ5YWxsb2NhdG9yMVpQUTIySW8xMUlvQmFzZVZhbHVlUkNQUTIySW8xMUlvQmFzZVZh bHVlAHB1c2hfYmFja19fUTIzc3RkdDZ2ZWN0b3IyWlBRMjJJbzExSW9CYXNlVmFsdWVaUTIzc3Rk dDlhbGxvY2F0b3IxWlBRMjJJbzExSW9CYXNlVmFsdWVSQ1BRMjJJbzExSW9CYXNlVmFsdWUAc3Rk Ojp2ZWN0b3I8SW86OklvQmFzZVZhbHVlKixzdGQ6OmFsbG9jYXRvcjxJbzo6SW9CYXNlVmFsdWUq Pj46OnB1c2hfYmFjayhjb25zdCBJbzo6SW9CYXNlVmFsdWUqJikAL29wdC9nbnUvZ2NjLTIuOTUu Mi9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNi8yLjk1LjIvLi4vLi4vLi4vLi4vaW5j bHVkZS9nKystdjMvYml0cy9zdGxfdW5pbml0aWFsaXplZC5oAHVuaW5pdGlhbGl6ZWRfY29weV9f SDJaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBQUTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0 ZHQ2dmVjdG9yMlpQUTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0ZHQ5YWxsb2NhdG9yMVpQUTIySW8x MUlvQmFzZVZhbHVlWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQUFEyMklvMTFJb0Jhc2VW YWx1ZVpRMjNzdGR0NnZlY3RvcjJaUFEyMklvMTFJb0Jhc2VWYWx1ZVpRMjNzdGR0OWFsbG9jYXRv cjFaUFEyMgBfX3VuaW5pdGlhbGl6ZWRfY29weV9fSDNaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0 b3IyWlBQUTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0ZHQ2dmVjdG9yMlpQUTIySW8xMUlvQmFzZVZh bHVlWlEyM3N0ZHQ5YWxsb2NhdG9yMVpQUTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0ZHQxN19fbm9y bWFsX2l0ZXJhdG9yMlpQUFEyMklvMTFJb0Jhc2VWYWx1ZVpRMjNzdGR0NnZlY3RvcjJaUFEyMklv MTFJb0Jhc2VWYWx1ZVpRMjNzdGR0OWFsbG9jYXRvcjFaUFEAX191bmluaXRpYWxpemVkX2NvcHlf YXV4X19IMlpRMjNzdGR0MTdfX25vcm1hbF9pdGVyYXRvcjJaUFBRMjJJbzExSW9CYXNlVmFsdWVa UTIzc3RkdDZ2ZWN0b3IyWlBRMjJJbzExSW9CYXNlVmFsdWVaUTIzc3RkdDlhbGxvY2F0b3IxWlBR MjJJbzExSW9CYXNlVmFsdWVaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBQUTIySW8xMUlv QmFzZVZhbHVlWlEyM3N0ZHQ2dmVjdG9yMlpQUTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0ZHQ5YWxs b2NhdG9yAC9vcHQvZ251L2djYy0yLjk1LjIvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy LjYvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgA Y29weV9fSDJaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBQUTIySW8xMUlvQmFzZVZhbHVl WlEyM3N0ZHQ2dmVjdG9yMlpQUTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0ZHQ5YWxsb2NhdG9yMVpQ UTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQUFEyMklvMTFJ b0Jhc2VWYWx1ZVpRMjNzdGR0NnZlY3RvcjJaUFEyMklvMTFJb0Jhc2VWYWx1ZVpRMjNzdGR0OWFs bG9jYXRvcjFaUFEyMklvMTFJb0Jhc2VWYWx1AF9fY29weV9uaTFfX0gyWlEyM3N0ZHQxN19fbm9y bWFsX2l0ZXJhdG9yMlpQUFEyMklvMTFJb0Jhc2VWYWx1ZVpRMjNzdGR0NnZlY3RvcjJaUFEyMklv MTFJb0Jhc2VWYWx1ZVpRMjNzdGR0OWFsbG9jYXRvcjFaUFEyMklvMTFJb0Jhc2VWYWx1ZVpRMjNz dGR0MTdfX25vcm1hbF9pdGVyYXRvcjJaUFBRMjJJbzExSW9CYXNlVmFsdWVaUTIzc3RkdDZ2ZWN0 b3IyWlBRMjJJbzExSW9CYXNlVmFsdWVaUTIzc3RkdDlhbGxvY2F0b3IxWlBRMjJJbzExSW9CYQAv b3B0L2dudS9nY2MtMi45NS4yL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzIuOTUu Mi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9jb25zdHJ1Y3QuaABkZXN0cm95 X19IMVpRMjNzdGR0MTdfX25vcm1hbF9pdGVyYXRvcjJaUFBRMjJJbzExSW9CYXNlVmFsdWVaUTIz c3RkdDZ2ZWN0b3IyWlBRMjJJbzExSW9CYXNlVmFsdWVaUTIzc3RkdDlhbGxvY2F0b3IxWlBRMjJJ bzExSW9CYXNlVmFsdWVfM3N0ZFgwMVgwMV92AF9fZGVzdHJveV9fSDJaUTIzc3RkdDE3X19ub3Jt YWxfaXRlcmF0b3IyWlBQUTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0ZHQ2dmVjdG9yMlpQUTIySW8x MUlvQmFzZVZhbHVlWlEyM3N0ZHQ5YWxsb2NhdG9yMVpQUTIySW8xMUlvQmFzZVZhbHVlWlBRMjJJ bzExSW9CYXNlVmFsdWVfM3N0ZFgwMVgwMVBYMTFfdgAvYXBwbGkvb3V0aWxzL2xpYklvL2V4YW1w bGVzL1Rlc3Qvc3JjLy4uLy4uLy4uL2luY2x1ZGUvMS4xL0lvTWFwLmgAa2VlcE9ubHlTdG9yYWJs ZV9fUTIySW81SW9NYXAASW86OklvTWFwOjprZWVwT25seVN0b3JhYmxlKCkAaQBlcmFzZV9fUTIz c3RkdDZ2ZWN0b3IyWlBRMjJJbzExSW9CYXNlVmFsdWVaUTIzc3RkdDlhbGxvY2F0b3IxWlBRMjJJ bzExSW9CYXNlVmFsdWVHUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBQUTIySW8xMUlvQmFz ZVZhbHVlWlEyM3N0ZHQ2dmVjdG9yMlpQUTIySW8xMUlvQmFzZVZhbHVlWlEyM3N0ZHQ5YWxsb2Nh dG9yMVpQUTIySW8xMUlvQmFzZVZhbHVlAC9mcmVlc3BhY2UvYmFja3VwL2djY2J1aWxkL3NwYXJj LXN1bi1zb2xhcmlzMi42L2xpYnN0ZGMrKy9zcmMvLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJz dGRjKysvYml0cy9iYXNpY19zdHJpbmcuaAAvb3B0L2dudS9nY2MtMi45NS4yL2xpYi9saWJzdGRj KysuYQBfX2FzX19RMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMx WmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNQQ2MAc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNo YXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pjo6b3BlcmF0b3IgPShjb25zdCBj aGFyKikAZ2V0bGluZV9fSDNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9j YXRvcjFaY18zc3RkUlEyM3N0ZHQxM2Jhc2ljX2lzdHJlYW0yWlgwMVpYMTFSUTIzc3RkdDEyYmFz aWNfc3RyaW5nM1pYMDFaWDExWlgyMVgwMV9SUTIzc3RkdDEzYmFzaWNfaXN0cmVhbTJaWDAxWlgx MQBfX2NlcmIAL2ZyZWVzcGFjZS9iYWNrdXAvZ2NjYnVpbGQvc3BhcmMtc3VuLXNvbGFyaXMyLjYv bGlic3RkYysrL3NyYy8uLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9iaXRzL2lzdHJl YW0udGNjAGdldGxpbmVfX0gzWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxv Y2F0b3IxWmNfM3N0ZFJRMjNzdGR0MTNiYXNpY19pc3RyZWFtMlpYMDFaWDExUlEyM3N0ZHQxMmJh c2ljX3N0cmluZzNaWDAxWlgxMVpYMjFfUlEyM3N0ZHQxM2Jhc2ljX2lzdHJlYW0yWlgwMVpYMTEA L2FwcGxpL291dGlscy9saWJJby9zcmMvSW9FcXVEcml2ZXIuY3BwAC9hcHBsaS9vdXRpbHMvbGli SW8vbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzEuMS1kZWJ1Zy1nKysvbGliSW9EZWJ1Zy5hAGdl dF9fUTIySW8xMUlvRXF1RHJpdmVyUlEyM3N0ZHQxNGJhc2ljX2lmc3RyZWFtMlpjWlEyM3N0ZHQx MWNoYXJfdHJhaXRzMVpjUFEyMklvMTJJb0Jhc2VSZWFkZXIASW86OklvRXF1RHJpdmVyOjpnZXQo c3RkOjpiYXNpY19pZnN0cmVhbTxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4+JixJbzo6SW9C YXNlUmVhZGVyKikAL2FwcGxpL291dGlscy9saWJJby9leGFtcGxlcy9UZXN0L3NyYy8uLi8uLi8u Li9pbmNsdWRlLzEuMS9Jb1JlYWRlci5oAGdldF9fUTIySW90OElvUmVhZGVyMVoxMFRlc3RSZWNv cmQASW86OklvUmVhZGVyPFRlc3RSZWNvcmQ+OjpnZXQoKQAvYXBwbGkvb3V0aWxzL2xpYklvL2V4 YW1wbGVzL1Rlc3Qvc3JjL1Rlc3RfZXF1LmNwcAB0ZXN0X3JlY29yZF9fRkdRMjNzdGR0MTJiYXNp Y19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmMA bWFpbgAvb3B0L2dudS9nY2MtMi45NS4yL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42 LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgAZmluZF9p Zl9fSDJaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBjWlEyM3N0ZHQxMmJhc2ljX3N0cmlu ZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1pRMjNzdGR0 MTJ1bmFyeV9uZWdhdGUxWlEzMklvMTFJb0VxdURyaXZlcjExU3BhY2VUZXN0ZXJfM3N0ZFgwMVgw MVgxMV9YMDEAZmluZF9pZl9fSDJaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBjWlEyM3N0 ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9j YXRvcjFaY1pRMjNzdGR0MTJ1bmFyeV9uZWdhdGUxWlEzMklvMTFJb0VxdURyaXZlcjExU3BhY2VU ZXN0ZXJfM3N0ZFgwMVgwMVgxMUdRMjNzdGQyNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnX1gw MQAvZnJlZXNwYWNlL2JhY2t1cC9nY2NidWlsZC9zcGFyYy1zdW4tc29sYXJpczIuNi9saWJzdGRj Kysvc3JjLy4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2JpdHMvc3RyaW5nLnRjYwBf X0gxWlEyM3N0ZHQxN19fbm9ybWFsX2l0ZXJhdG9yMlpQY1pRMjNzdGR0MTJiYXNpY19zdHJpbmcz WmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNfUTIzc3RkdDEy YmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9y MVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaYwBfU19jb25zdHJ1Y3RfX0gxWlEyM3N0ZHQx N19fbm9ybWFsX2l0ZXJhdG9yMlpQY1pRMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDEx Y2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNfUTIzc3RkdDEyYmFzaWNfc3RyaW5n M1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNR MjNzdGR0OWFsbG9jYXRvcjFaY19QYwBfU19jb25zdHJ1Y3RfX0gxWlEyM3N0ZHQxN19fbm9ybWFs X2l0ZXJhdG9yMlpQY1pRMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFp dHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmNfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0 ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFs bG9jYXRvcjFaY0dRMjNzdGQyMGZvcndhcmRfaXRlcmF0b3JfdGFnX1BjAF9UYWcAcGFyc2VMaW5l X19RMjJJbzExSW9FcXVEcml2ZXJSQ1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFj aGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaYwBJbzo6SW9FcXVEcml2ZXI6OnBhcnNl TGluZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4s c3RkOjphbGxvY2F0b3I8Y2hhcj4+JikAL2ZyZWVzcGFjZS9iYWNrdXAvZ2NjYnVpbGQvc3BhcmMt c3VuLXNvbGFyaXMyLjYvbGlic3RkYysrL3NyYy8uLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0 ZGMrKy9zdGwvYml0cy9zdGxfaXRlcmF0b3IuaAByYmVnaW5fX0NRMjNzdGR0MTJiYXNpY19zdHJp bmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3IxWmMAc3RkOjpi YXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNo YXI+Pjo6cmJlZ2luKCljb25zdAByZW5kX19DUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0 ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjAHN0ZDo6YmFzaWNfc3RyaW5n PGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46OnJlbmQo KWNvbnN0AC9vcHQvZ251L2djYy0yLjk1LjIvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy LjYvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2l0ZXJhdG9yLmgA X19RMjNzdGR0MTZyZXZlcnNlX2l0ZXJhdG9yMVpRMjNzdGR0MTdfX25vcm1hbF9pdGVyYXRvcjJa UENjWlEyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNz dGR0OWFsbG9jYXRvcjFaY1JDUTIzc3RkdDE2cmV2ZXJzZV9pdGVyYXRvcjFaUTIzc3RkdDE3X19u b3JtYWxfaXRlcmF0b3IyWlBDY1pRMjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hh cl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0AHJiZWdpbgBwYXJzZVRva2VuX19RMjJJbzExSW9F cXVEcml2ZXJSQ1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFa Y1pRMjNzdGR0OWFsbG9jYXRvcjFaY1JVaU4yMgBJbzo6SW9FcXVEcml2ZXI6OnBhcnNlVG9rZW4o Y29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6 YWxsb2NhdG9yPGNoYXI+PiYsdW5zaWduZWQgaW50Jix1bnNpZ25lZCBpbnQmLHVuc2lnbmVkIGlu dCYpAGZpbmRfaWZfX0gyWlEyM3N0ZHQxNnJldmVyc2VfaXRlcmF0b3IxWlEyM3N0ZHQxN19fbm9y bWFsX2l0ZXJhdG9yMlpQQ2NaUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJf dHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjWlEyM3N0ZHQxMnVuYXJ5X25lZ2F0ZTFaUTMy SW8xMUlvRXF1RHJpdmVyMTFTcGFjZVRlc3Rlcl8zc3RkWDAxWDAxWDExX1gwMQBiYXNlX19DUTIz c3RkdDE2cmV2ZXJzZV9pdGVyYXRvcjFaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBDY1pR MjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlh bGxvY2F0b3IxWmMAc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPHN0ZDo6X19ub3JtYWxfaXRlcmF0b3I8 Y29uc3QgY2hhciosc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+ LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pj4+OjpiYXNlKCljb25zdABfX21sX19DUTIzc3RkdDE2cmV2 ZXJzZV9pdGVyYXRvcjFaUTIzc3RkdDE3X19ub3JtYWxfaXRlcmF0b3IyWlBDY1pRMjNzdGR0MTJi YXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0b3Ix WmMAc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPHN0ZDo6X19ub3JtYWxfaXRlcmF0b3I8Y29uc3QgY2hh ciosc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxs b2NhdG9yPGNoYXI+Pj4+OjpvcGVyYXRvciAqKCljb25zdABfX1EyM3N0ZHQxMmJhc2ljX3N0cmlu ZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1JDUTIzc3Rk dDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2Nh dG9yMVpjVWlVaQBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4s c3RkOjphbGxvY2F0b3I8Y2hhcj4+OjpzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90 cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5n PGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj4mLHVuc2ln bmVkIGludCx1bnNpZ25lZCBpbnQpAHN1YnN0cl9fQ1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pR MjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1VpVWkAc3RkOjpiYXNp Y19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ Pjo6c3Vic3RyKHVuc2lnbmVkIGludCx1bnNpZ25lZCBpbnQpY29uc3QAL2FwcGxpL291dGlscy9s aWJJby9zcmMvLi4vaW5jbHVkZS8xLjEvSW9NYXAuaABnZXRWYWx1ZV9fQ1EyMklvNUlvTWFwUkNR MjNzdGR0MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlh bGxvY2F0b3IxWmMASW86OklvTWFwOjpnZXRWYWx1ZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxj aGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+Jiljb25zdAAv ZnJlZXNwYWNlL2JhY2t1cC9nY2NidWlsZC9zcGFyYy1zdW4tc29sYXJpczIuNi9saWJzdGRjKysv c3JjLy4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2JpdHMvbG9jYWxlX2ZhY2V0cy5o AF9fcnNfX1EyM3N0ZHQxM2Jhc2ljX2lzdHJlYW0yWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNS ZABzdGQ6OmJhc2ljX2lzdHJlYW08Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+Pjo6b3BlcmF0 b3IgPj4oZG91YmxlJikAL2ZyZWVzcGFjZS9iYWNrdXAvZ2NjYnVpbGQvc3BhcmMtc3VuLXNvbGFy aXMyLjYvbGlic3RkYysrL3NyYy8uLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9iaXRz L2xvY2FsZV9mYWNldHMudGNjAGRvX2dldF9fQ1EyM3N0ZHQ3bnVtX2dldDJaY1pRMjNzdGR0MTlp c3RyZWFtYnVmX2l0ZXJhdG9yMlpjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjR1EyM3N0ZHQxOWlz dHJlYW1idWZfaXRlcmF0b3IyWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNUMVJRMjNzdGQ4aW9z X2Jhc2VSUTIzc3RkMTJfSW9zX0lvc3RhdGVSZAAvdXNyL2xpYi9saWJjLmEAZGVjaW1hbF90b19k b3VibGUAcGFyc2VMYXN0VG9rZW5fX1EyMklvMTFJb0VxdURyaXZlclJDUTIzc3RkdDEyYmFzaWNf c3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxsb2NhdG9yMVpjUlVp AElvOjpJb0VxdURyaXZlcjo6cGFyc2VMYXN0VG9rZW4oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8 Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiYsdW5zaWdu ZWQgaW50JikAX19sc19fUTIzc3RkdDEzYmFzaWNfb3N0cmVhbTJaY1pRMjNzdGR0MTFjaGFyX3Ry YWl0czFaY2IAZG9fcHV0X19DUTIzc3RkdDdudW1fcHV0MlpjWlEyM3N0ZHQxOW9zdHJlYW1idWZf aXRlcmF0b3IyWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNHUTIzc3RkdDE5b3N0cmVhbWJ1Zl9p dGVyYXRvcjJaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1JRMjNzdGQ4aW9zX2Jhc2VjYgBfU19m b3JtYXRfX0gzWmNaUTIzc3RkdDE5b3N0cmVhbWJ1Zl9pdGVyYXRvcjJaY1pRMjNzdGR0MTFjaGFy X3RyYWl0czFaY1pVbF8zc3RkWDExUlEyM3N0ZDhpb3NfYmFzZVgwMWJYMjFfWDExAC9mcmVlc3Bh Y2UvYmFja3VwL2djY2J1aWxkL3NwYXJjLXN1bi1zb2xhcmlzMi42L2xpYnN0ZGMrKy9zcmMvLi4v Li4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3RsL2JpdHMvc3RsX2FsZ29iYXNlLmgAX19s c19fUTIzc3RkdDEzYmFzaWNfb3N0cmVhbTJaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY2QAc3Rk OjpiYXNpY19vc3RyZWFtPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPj46Om9wZXJhdG9yIDw8 KGRvdWJsZSkAZG9fcHV0X19DUTIzc3RkdDdudW1fcHV0MlpjWlEyM3N0ZHQxOW9zdHJlYW1idWZf aXRlcmF0b3IyWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNHUTIzc3RkdDE5b3N0cmVhbWJ1Zl9p dGVyYXRvcjJaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1JRMjNzdGQ4aW9zX2Jhc2VjZABfU19v dXRwdXRfZmxvYXRfX0gyWmNaUTIzc3RkdDE5b3N0cmVhbWJ1Zl9pdGVyYXRvcjJaY1pRMjNzdGR0 MTFjaGFyX3RyYWl0czFaY18zc3RkWDExUlEyM3N0ZDhpb3NfYmFzZVgwMVBDY1VpX1gxMQBfU19m aWxsX19IM1pjWlEyM3N0ZHQxOW9zdHJlYW1idWZfaXRlcmF0b3IyWmNaUTIzc3RkdDExY2hhcl90 cmFpdHMxWmNaUTIzc3RkMTlvdXRwdXRfaXRlcmF0b3JfdGFnXzNzdGRYMTFYMDFpWDIxX1gxMQBf X2xzX19RMjNzdGR0MTNiYXNpY19vc3RyZWFtMlpjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjbABz dGQ6OmJhc2ljX29zdHJlYW08Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+Pjo6b3BlcmF0b3Ig PDwobG9uZykAZG9fcHV0X19DUTIzc3RkdDdudW1fcHV0MlpjWlEyM3N0ZHQxOW9zdHJlYW1idWZf aXRlcmF0b3IyWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNHUTIzc3RkdDE5b3N0cmVhbWJ1Zl9p dGVyYXRvcjJaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1JRMjNzdGQ4aW9zX2Jhc2VjbAAvYXBw bGkvb3V0aWxzL2xpYklvL2V4YW1wbGVzL1Rlc3QvYmluL3NwYXJjLXN1bi1zb2xhcmlzMi42LzEu MS1kZWJ1Zy1nKysvcnRsaWIubwBtZW1jcHkAX19wYWNrX2RvdWJsZQBfc3BsaXRfc2hvcnRlbgBf X3VucGFja19kb3VibGVfdHdvAF9fa19kb3VibGVfdG9fZGVjaW1hbABfdW5wYWNrZWRfdG9fZGVj aW1hbF90d28AbWFsbG9jAC9mcmVlc3BhY2UvYmFja3VwL2djY2J1aWxkL2djYy8uLi8uLi9nY2Mt Mi45NS4yL2djYy9jcC9uZXcxLmNjAC9vcHQvZ251L2djYy0yLjk1LjIvbGliL2djYy1saWIvc3Bh cmMtc3VuLXNvbGFyaXMyLjYvMi45NS4yL2xpYmdjYy5hAF9fYlVpTHRJbl9uRXcAX19idWlsdGlu X25ldwBlbnJvbGxfX0gxWmRfUTIySW81SW9NYXBSQ1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pR MjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1JYMDFfUlEyMklvdDdJ b1ZhbHVlMVpYMDEAZmlsbE1hcF9fMTBUZXN0UmVjb3JkUlEyMklvNUlvTWFwAFRlc3RSZWNvcmQ6 OmZpbGxNYXAoSW86OklvTWFwJikAL2FwcGxpL291dGlscy9saWJJby9leGFtcGxlcy9UZXN0L3Ny Yy8uLi8uLi8uLi9pbmNsdWRlLzEuMS9Jb1dyaXRlci5oAF9fUTIySW90OElvV3JpdGVyMVoxMFRl c3RSZWNvcmRSUTIySW84SW9Ecml2ZXIASW86OklvV3JpdGVyPFRlc3RSZWNvcmQ+OjpJbzo6SW9X cml0ZXI8VGVzdFJlY29yZD4oSW86OklvRHJpdmVyJikAZW5yb2xsX19IMlpkWmRfUTIySW81SW9N YXBSQ1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNz dGR0OWFsbG9jYXRvcjFaY1JYMDFSQ1gxMV9SUTIySW90N0lvVmFsdWUxWlgwMQAvZnJlZXNwYWNl L2JhY2t1cC9nY2NidWlsZC9zcGFyYy1zdW4tc29sYXJpczIuNi9saWJzdGRjKysvc3JjLy4uLy4u Ly4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3N0bC9iaXRzL3N0bF9hbGxvYy5oAF9TX2NyZWF0 ZV9fUTMzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0 ZHQ5YWxsb2NhdG9yMVpjNF9SZXBVaVJDUTIzc3RkdDlhbGxvY2F0b3IxWmMAc3RkOjpiYXNpY19z dHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pjo6 X1JlcDo6X1NfY3JlYXRlKHVuc2lnbmVkIGludCxjb25zdCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiYp AF9TX2NvbnN0cnVjdF9fSDFaUENjX1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFj aGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgwMFJDUTIzc3RkdDlhbGxvY2F0 b3IxWmNHUTIzc3RkMjBmb3J3YXJkX2l0ZXJhdG9yX3RhZ19QYwBfX1EyM3N0ZHQxMmJhc2ljX3N0 cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1BDY1JD UTIzc3RkdDlhbGxvY2F0b3IxWmMAc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJh aXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pjo6c3RkOjpiYXNpY19zdHJpbmc8Y2hhcixz dGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pihjb25zdCBjaGFyKixj b25zdCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiYpAGNsYXNzaWNfX1EyM3N0ZDZsb2NhbGUAc3RkOjps b2NhbGU6OmNsYXNzaWMoKQAvZnJlZXNwYWNlL2JhY2t1cC9nY2NidWlsZC9zcGFyYy1zdW4tc29s YXJpczIuNi9saWJzdGRjKysvc3JjLy4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2Jp dHMvbG9jYWxlZndkLmgAX19RMjNzdGR0MTNiYXNpY19maWxlYnVmMlpjWlEyM3N0ZHQxMWNoYXJf dHJhaXRzMVpjAHN0ZDo6YmFzaWNfZmlsZWJ1ZjxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4+ OjpzdGQ6OmJhc2ljX2ZpbGVidWY8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+PigpAC9mcmVl c3BhY2UvYmFja3VwL2djY2J1aWxkL3NwYXJjLXN1bi1zb2xhcmlzMi42L2xpYnN0ZGMrKy9zcmMv Li4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3JjL2xvY2FsZS5jYwBfX1EzM3N0ZDZs b2NhbGU1X0ltcGxVaVVpAHN0ZDo6bG9jYWxlOjpfSW1wbDo6c3RkOjpsb2NhbGU6Ol9JbXBsKHVu c2lnbmVkIGludCx1bnNpZ25lZCBpbnQpAAAAAMkAEcwAAAAAAQAAAAEAAAo5/////wAAAGn///// AAAAmgAAAAIAAAp8AAAKmgAACrgAAAq4AAAAAP/////////oAAAAAAARzAAAAAABAAAAAAAACjn/ ////AAAAaf////8AAACaAAAAAgAACnwAAAqaABHLTAAAAIsAAAAAABB8AAAAAAEAAAAAAAAAAP// //8AAABp/////wAAAJoAAAACAAAA9QAAAPUAEHlAAAACiAAAAAAABEQIAAAAAQAAAAEAAA6N//// /wAADrX/////AAAAmgAAAAIAAA79AAAPXP//////////AAAAAP////////+4AAAAAAAERAgAAAAB AAAAAQAADo3/////AAAOtf////8AAACaAAAAAgAADv0AAA9c//////////8AAAAA/////////8AA AAAAAARECAAAAAEAAAABAAAOjf////8AAA61/////wAAAJoAAAACAAAO/QAAD1z//////////wAA AAD/////////yAAAAAAACWgQAAAAAQAAAAAAABLK/////wAAC/v/////AAAAmgAAAAIAABM5AAAT OQAJZ1wAAADaAAAAAAAJaBAAAAABAAAAAQAAEsr/////AAAL+/////8AAACaAAAAAgAAEzkAABM5 //////////8AAAAA/////////+AAAAAAAAloEAAAAAEAAAABAAASyv////8AAAv7/////wAAAJoA AAACAAATOQAAEzn//////////wAAAAD/////////6AAAAAAAEww4AAAAAQAAAAEAABDM/////wAA DrX/////AAAAmgAAAAIAABEzAAARM///////////AAAAAP/////////gAAAAAAAESDwAAAABAAAA AAAADo3/////AAAOtf////8AAACaAAAAAgAAFd0AABZCAARGlAAAAE0AAAAAABMMOAAAAAEAAAAB AAAQzP////8AAA61/////wAAAJoAAAACAAARMwAAETP//////////wAAAAD/////////6AAAAAAA EdxUAAAAAQAAAAAAABA//////wAAAGn/////AAAAmgAAAAIAACrgAAArAgAR2kAAAAAcAAAAAAAQ fFAAAAABAAAAAQAAAAD/////AAAAaf////8AAACaAAAAAgAAAPUAAAD1//////////8AAAAA//// /////8AAAAAAABB8UAAAAAEAAAAAAAAAAP////8AAABp/////wAAAJoAAAACAAAA9QAAAPUAEHlA AAACiAAAAAAAEHRYAAAAAQAAAAAAAAKu/////wAAAGn/////AAAAmgAAAAIAAAQeAAAEHgAQdCAA AABJAAAAAAAERGAAAAABAAAAAAAADo3/////AAAOtf////8AAACaAAAAAgAADv0AAA9cAARCnAAA ACcAAAAAAAREYAAAAAEAAAABAAAOjf////8AAA61/////wAAAJoAAAACAAAO/QAAD1z///////// /wAAAAD/////////uAAAAAAABERgAAAAAQAAAAEAAA6N/////wAADrX/////AAAAmgAAAAIAAA79 AAAPXP//////////AAAAAP/////////QAAAAAAARzGAAAAABAAAAAQAACjn/////AAAAaf////8A AACaAAAAAgAACnwAAAqa//////////8AAAAA/////////9gAAAAAABB4aAAAAAEAAAAAAAAIif// //8AAABp/////wAAAJoAAAACAAAI9QAACPUAEHhMAAAATgAAAAAAEcx0AAAAAQAAAAEAAAo5//// /wAAAGn/////AAAAmgAAAAIAAAp8AAAKmv//////////AAAAAP/////////gAAAAAAARzHQAAAAB AAAAAAAACjn/////AAAAaf////8AAACaAAAAAgAACnwAAAqaABHLTAAAAIsAAAAAABGAdAAAAAEA AAAAAAAGHv////8AAABp/////wAAAJoAAAACAAAGiQAABokAEYBAAAAA2QAAAAAACTh8AAAAAQAA AAAAAA15/////wAAC/v/////AAAAmgAAAAIAAA3pAAAN6QAJOFAAAASsAAAAAAAHPIQAAAABAAAA AQAAIQf/////AAAL+/////8AAACaAAAAAgAAIXsAACG1AAANcgAADXIAAAAA/////////6AAAAEk AAc8hAAAAAEAAAABAAAhB/////8AAAv7/////wAAAJoAAAACAAAhewAAIbUAAA1yAAANcgAAAAD/ ////////sAAAATQACxCQAAAAAQAAAAH/////AAAAmgAAIyYAAACaAAAAmgAAAAYAACM2AAAjNv// ////////AAAAAP/////////wAAAAAAALEJAAAAABAAAAAP////8AAACaAAAjJgAAAJoAAACaAAAA BgAAIzYAACM2AAsPzAAAAAAAAAAAAAlwlAAAAAEAAAAAAAASyv////8AAAv7/////wAAAJoAAAAC AAAU4AAAFOAACW9cAAAAhQAAAAAAEdycAAAAAQAAAAAAABA//////wAAAGn/////AAAAmgAAAAIA ACrgAAArAgAR2kAAAAAcAAAAAAAEOKQAAAABAAAAAAAAED//////AAAAaf////8AAACaAAAAAgAA EMcAABDHAAQ4HAAAAJIAAAAAABB0qAAAAAEAAAAAAAACrv////8AAABp/////wAAAJoAAAACAAAE HgAABB4AEHQgAAAASQAAAAAABGC0AAAAAQAAAAEAAA6N/////wAADrX/////AAAAmgAAAAIAABnS AAAaPv//////////AAAAAP////////+4AAAAAAAEYLQAAAABAAAAAAAADo3/////AAAOtf////8A AACaAAAAAgAAGdIAABo+AARdxAAAALYAAAAAABB8tAAAAAEAAAABAAAAAP////8AAABp/////wAA AJoAAAACAAAA9QAAAPX//////////wAAAAD/////////oAAAAAAAEHy0AAAAAQAAAAEAAAAA//// /wAAAGn/////AAAAmgAAAAIAAAD1AAAA9f//////////AAAAAP////////+oAAAAAAAQfLQAAAAB AAAAAQAAAAD/////AAAAaf////8AAACaAAAAAgAAAPUAAAD1//////////8AAAAA/////////+AA AAAAAAsQuAAAAAEAAAAB/////wAAAJoAACMmAAAAmgAAAJoAAAAGAAAjNgAAIzb//////////wAA AAD/////////8AAAAAAACxC4AAAAAQAAAAD/////AAAAmgAAIyYAAACaAAAAmgAAAAYAACM2AAAj NgALD8wAAAAAAAAAAAAF5LwAAAABAAAAAQAAJXT/////AAAL+/////8AAACaAAAAAgAAJQYAACUG //////////8AAAAA/////////3gAAAAAAAXkvAAAAAEAAAAAAAAldP////8AAAv7/////wAAAJoA AAACAAAlBgAAJQYABd/gAAAAiQAAAAAABES8AAAAAQAAAAAAAA6N/////wAADrX/////AAAAmgAA AAIAAA79AAAPXAAEQpwAAAArAAAAAAAQeLgAAAABAAAAAAAACIn/////AAAAaf////8AAACaAAAA AgAACPUAAAj1ABB4TAAAAE4AAAAAABGAxAAAAAEAAAAAAAAGHv////8AAABp/////wAAAJoAAAAC AAAGiQAABokAEYBAAAAA2QAAAAAAEZDIAAAAAQAAAAAAACsi/////wAAAGn/////AAAAmgAAAAIA ACtoAAArlwARkHgAAAAfAAAAAAAS1MgAAAABAAAAAAAAEMz/////AAAOtf////8AAACaAAAAAgAA Ee0AABHtABLQcAAAALMAAAAAABB8yAAAAAEAAAABAAAAAP////8AAABp/////wAAAJoAAAACAAAA 9QAAAPX//////////wAAAAD/////////2AAAAAAAEHzIAAAAAQAAAAAAAAAA/////wAAAGn///// AAAAmgAAAAIAAAD1AAAA9QAQeUAAAAKIAAAAAAALZNgAAAABAAAAAf////8AAACaAAAjJgAAAJoA AACaAAAABgAAKWAAAClg//////////8AAAAA//////////gAAAAAAAtk2AAAAAEAAAAA/////wAA AJoAACMmAAAAmgAAAJoAAAAGAAApYAAAKWAAC1+cAAAAAAAAAAAACXDYAAAAAQAAAAAAABLK//// /wAAC/v/////AAAAmgAAAAIAABTgAAAU4AAJb1wAAACFAAAAAAASDOQAAAABAAAAAAAACjn///// AAAAaf////8AAACaAAAAAgAAKmcAACpnABIL3AAAADgAAAAAABB0+AAAAAEAAAAAAAACrv////8A AABp/////wAAAJoAAAACAAAEHgAABB4AEHQgAAAASQAAAAAAEtEAAAAAAQAAAAAAABDM/////wAA DrX/////AAAAmgAAAAIAABHtAAAR7QAS0HAAAACeAAAAAAAIGQwAAAABAAAAAQAAIQf/////AAAL +/////8AAACaAAAAAgAAJesAACYk//////////8AAAAA/////////7gAAAAAAAtlFAAAAAEAAAAB /////wAAAJoAACMmAAAAmgAAAJoAAAAGAAApYAAAKWD//////////wAAAAD/////////+AAAAAAA C2UUAAAAAQAAAAD/////AAAAmgAAIyYAAACaAAAAmgAAAAYAAClgAAApYAALX5wAAAAAAAAAAAAR gRQAAAABAAAAAAAABh7/////AAAAaf////8AAACaAAAAAgAABokAAAaJABGAQAAAANkAAAAAAAlB HAAAAAEAAAAAAAALiP////8AAAv7/////wAAAJoAAAACAAAuUQAALrIACUDwAAACuQAAAAAAB/Ec AAAAAQAAAAEAACEH/////wAAC/v/////AAAAmgAAAAIAACfuAAAoJ///////////AAAAAP////// ///IAAAAAAAH8RwAAAABAAAAAAAAIQf/////AAAL+/////8AAACaAAAAAgAAJ+4AACgnAAfumAAA BCUAAAAAAATlIAAAAAEAAAAAAAAwmf////8AAAv7/////wAAAJoAAAACAAAxBgAAMSAABOTEAAAA PAAAAAAAEHkgAAAAAQAAAAEAAAiJ/////wAAAGn/////AAAAmgAAAAIAAAj1AAAI9f////////// AAAAAP/////////gAAAAAAAQeSAAAAABAAAAAQAACIn/////AAAAaf////8AAACaAAAAAgAACPUA AAj1//////////8AAAAA/////////+gAAAAAABLVLAAAAAEAAAAAAAAQzP////8AAA61/////wAA AJoAAAACAAAR7QAAEe0AEtBwAAAAtwAAAAAAExE0AAAAAQAAAAAAABDM/////wAADrX/////AAAA mgAAAAIAABrQAAAa0AATEOAAAADHAAAAAAAEMTgAAAABAAAAAAAAED//////AAAAaf////8AAACa AAAAAgAAEHIAABByAAQuqAAAAFUAAAAAABLxQAAAAAEAAAAAAAAYYP////8AAA61/////wAAAJoA AAACAAAcugAAHUIAEvEoAAABMQAAAAAAEd1MAAAAAQAAAAAAABA//////wAAAGn/////AAAAmgAA AAIAACrgAAArAgAR2kAAAAAdAAAAAAAC1UgAAAABAAAAAP////8AAACaAAApCAAAAJoAAACaAAAA BgAAKVkAAClZAALUwAAAAAAAAAAAAARRWAAAAAEAAAAAAAAOjf////8AAA61/////wAAAJoAAAAC AAAV3QAAFkIABEaUAAAAhQAAAAAABE1cAAAAAQAAAAAAAA6N/////wAADrX/////AAAAmgAAAAIA ABXdAAAWQgAERpQAAABsAAAAAAAQfVwAAAABAAAAAAAAAAD/////AAAAaf////8AAACaAAAAAgAA APUAAAD1ABB5QAAAAowAAAAAABHdYAAAAAEAAAAAAAAQP/////8AAABp/////wAAAJoAAAACAAAq 4AAAKwIAEdpAAAAAHQAAAAAACYVsAAAAAQAAAAEAABap/////wAAC/v/////AAAAmgAAAAIAABcg AAAXb///////////AAAAAP////////84AAAAAAAJhWwAAAABAAAAAAAAFqn/////AAAL+/////8A AACaAAAAAgAAFyAAABdvAAmEoAAAASYAAAAAAAWhdAAAAAEAAAAAAAAh+/////8AAAv7/////wAA AJoAAAACAAAicQAAInEABaCoAAAC5wAAAAAACTF0AAAAAQAAAAEAAAuI/////wAAC/v/////AAAA mgAAAAIAAAzLAAAMywAADXIAAA1yAAAAAP/////////oAAABTAAJMXQAAAABAAAAAAAAC4j///// AAAL+/////8AAACaAAAAAgAADMsAAAzLAAkwnAAAAqQAAAAAABB1dAAAAAEAAAABAAACrv////8A AABp/////wAAAJoAAAACAAAEHgAABB7//////////wAAAAD/////////2AAAAAAAEHV0AAAAAQAA AAEAAAKu/////wAAAGn/////AAAAmgAAAAIAAAQeAAAEHv//////////AAAAAP/////////gAAAA AAAQdXQAAAABAAAAAQAAAq7/////AAAAaf////8AAACaAAAAAgAABB4AAAQe//////////8AAAAA /////////+gAAAAAAAlBhAAAAAEAAAAAAAAsWf////8AAAv7/////wAAAJoAAAACAAAszQAALTsA CUFIAAAAgAAAAAAABdWEAAAAAQAAAAAAACH7/////wAAC/v/////AAAAmgAAAAIAACd5AAAneQAF 1OwAAANuAAAAAAAS0YwAAAABAAAAAAAAEMz/////AAAOtf////8AAACaAAAAAgAAEe0AABHtABLQ cAAAAKEAAAAAAAkxkAAAAAEAAAABAAALiP////8AAAv7/////wAAAJoAAAACAAAMywAADMsAAA1y AAANcgAAAAD/////////2AAAATwACTGQAAAAAQAAAAAAAAuI/////wAAC/v/////AAAAmgAAAAIA AAzLAAAMywAJMJwAAAKkAAAAAAARgZAAAAABAAAAAQAABh7/////AAAAaf////8AAACaAAAAAgAA BokAAAaJ//////////8AAAAA/////////9gAAAAAABHBuAAAAAEAAAABAAAgFf////8AAABp//// /wAAAJoAAAACAAAgRAAAIKL//////////wAAAAD/////////4AAAAAAAEcG4AAAAAQAAAAAAACAV /////wAAAGn/////AAAAmgAAAAIAACBEAAAgogARwWwAAABWAAAAAAATEbgAAAABAAAAAQAAEMz/ ////AAAOtf////8AAACaAAAAAgAAGtAAABrQ//////////8AAAAA/////////+gAAAAAABB9vAAA AAEAAAABAAAAAP////8AAABp/////wAAAJoAAAACAAAA9QAAAPX//////////wAAAAD///////// 0AAAAAAAEH28AAAAAQAAAAAAAAAA/////wAAAGn/////AAAAmgAAAAIAAAD1AAAA9QAQeUAAAAKM AAAAAAAOecAAAAABAAAAAf////8AAACaAAAjJgAAAJoAAACaAAAABgAAKZEAACmR//////////8A AAAA////////+74AAAAAAARJyAAAAAEAAAAAAAAOjf////8AAA61/////wAAAJoAAAACAAAV3QAA FkIABEaUAAAAUgAAAAAADmXUAAAAAQAAAAD/////AAAAmgAAIyYAAACaAAAAmgAAAAYAACluAAAp bgAOZZgAAAAAAAAAAAAQddAAAAABAAAAAAAAAq7/////AAAAaf////8AAACaAAAAAgAAAx4AAAMe ABB1pAAAAFIAAAAAAA552AAAAAEAAAAA/////wAAAJoAACMmAAAAmgAAAJoAAAAGAAApkQAAKZEA Dm+QAAAAAAAAAAAACmHgAAAAAQAAAAAAACnH/////wAAKgb/////AAAAmgAAAAIAACpLAAAqSwAK YVQAAABUAAAAAAATDewAAAABAAAAAAAAGGD/////AAAOtf////8AAACaAAAAAgAAGMsAABjLABMN 0AAAASgAAAAAAAWx8AAAAAEAAAAAAAAh+/////8AAAv7/////wAAAJoAAAACAAAmaQAAJmkABbEU AAAEvAAAAAAABaH8AAAAAQAAAAAAACH7/////wAAC/v/////AAAAmgAAAAIAACJxAAAicQAFoKgA AALnAAAAAAAEVgAAAAABAAAAAAAADo3/////AAAOtf////8AAACaAAAAAgAAFd0AABZCAARGlAAA AJ4AAAAAABGSBAAAAAEAAAAAAAAPtv////8AAABp/////wAAAJoAAAACAAAP/AAAEB8AEZF4AAAA KgAAAAAAEtIYAAAAAQAAAAAAABDM/////wAADrX/////AAAAmgAAAAIAABHtAAAR7QAS0HAAAACk AAAAAAAH8hwAAAABAAAAAQAAIQf/////AAAL+/////8AAACaAAAAAgAAJ+4AACgn//////////8A AAAA/////////9gAAAAAABB2IAAAAAEAAAAAAAACrv////8AAABp/////wAAAJoAAAACAAADHgAA Ax4AEHWkAAAAUgAAAAAADm40AAAAAQAAAAD/////AAAAmgAAIyYAAACaAAAAmgAAAAYAACl9AAAp fQAObUgAAAAAAAAAAAAQfjQAAAABAAAAAQAAAAD/////AAAAaf////8AAACaAAAAAgAAAPUAAAD1 //////////8AAAAA/////////6AAAAAAABB+NAAAAAEAAAAAAAAAAP////8AAABp/////wAAAJoA AAACAAAA9QAAAPUAEHlAAAACjAAAAAAABCI8AAAAAQAAAAD/////AAAAmgAAKQgAAACaAAAAmgAA AAYAACpZAAAqWQAEIjgAAAAAAAAAAAABfjgAAAABAAAAAP////8AAACaAAApCAAAAJoAAACaAAAA BgAAKcAAACnAAAF6EAAAAAAAAAAAAAWyPAAAAAEAAAABAAAh+/////8AAAv7/////wAAAJoAAAAC AAAmaQAAJmn//////////wAAAAD/////////sAAAAAAABGJMAAAAAQAAAAEAAA6N/////wAADrX/ ////AAAAmgAAAAIAACNIAAAjtf//////////AAAAAP/////////QAAAAAAAEYkwAAAABAAAAAAAA Do3/////AAAOtf////8AAACaAAAAAgAAI0gAACO1AARhQAAAAMIAAAAAAA5ebAAAAAEAAAAB//// /wAAAJoAACMmAAAAmgAAAJoAAAAGAAAppwAAKaf//////////wAAAAD////////7/wAAAAAADl5s AAAAAQAAAAD/////AAAAmgAAIyYAAACaAAAAmgAAAAYAACmnAAAppwAOWCAAAAAAAAAAAAAJSmgA AAABAAAAAAAAEsr/////AAAL+/////8AAACaAAAAAgAAHdQAAB5nAAlJlAAAALgAAAAAAARebAAA AAEAAAABAAAOjf////8AAA61/////wAAAJoAAAACAAAZ0gAAGj4AABnLAAAZywAAAAD///////// 6AAAAAAAE650AAAAAQAAAAAAACH7/////wAAC/v/////AAAAmgAAAAIAACcHAAAnBwATqAgAAASl AAAAAAAQdnAAAAABAAAAAAAAAq7/////AAAAaf////8AAACaAAAAAgAAAx4AAAMeABB1pAAAAFIA AAAAABHKeAAAAAEAAAAAAAAGHv////8AAABp/////wAAAJoAAAACAAAHiQAAB4kAEco8AAAAywAA AAAABOagAAAAAQAAAAAAADCZ/////wAAC/v/////AAAAmgAAAAIAADEGAAAxIAAE5MQAAABCAAAA AAAS0qQAAAABAAAAAAAAEMz/////AAAOtf////8AAACaAAAAAgAAEe0AABHtABLQcAAAAKcAAAAA AAXirAAAAAEAAAAAAAAh+/////8AAAv7/////wAAAJoAAAACAAAlBgAAJQYABd/gAAAEDQAAAAAA CbasAAAAAQAAAAAAAAuI/////wAAC/v/////AAAAmgAAAAIAAB9WAAAfqQAJtlgAAANQAAAAAAAI CrwAAAABAAAAAQAAIQf/////AAAL+/////8AAACaAAAAAgAAJC8AACQv//////////8AAAAA//// /////8gAAAAAAAgKvAAAAAEAAAAAAAAhB/////8AAAv7/////wAAAJoAAAACAAAkLwAAJC8ACAng AAAEIQAAAAAABFK4AAAAAQAAAAAAAA6N/////wAADrX/////AAAAmgAAAAIAABXdAAAWQgAERpQA AACJAAAAAAAR+sQAAAABAAAAAAAAAAD/////AAAAaf////8AAACaAAAAAgAACroAAAq6ABH51AAA AZ0AAAAAAAai0AAAAAEAAAAAAAAvkv////8AAAv7/////wAAAJoAAAACAAAwAgAAMDYABqIcAAAB LgAAAAAABF7UAAAAAQAAAAEAAA6N/////wAADrX/////AAAAmgAAAAIAABnSAAAaPv////////// AAAAAP////////+4AAAAAAAQftQAAAABAAAAAQAAAAD/////AAAAaf////8AAACaAAAAAgAAAPUA AAD1//////////8AAAAA/////////6gAAAAAABB+1AAAAAEAAAABAAAAAP////8AAABp/////wAA AJoAAAACAAAA9QAAAPX//////////wAAAAD/////////oAAAAAAAEg7cAAAAAQAAAAAAAAo5//// /wAAAGn/////AAAAmgAAAAIAACvZAAAr2QASDdAAAABKAAAAAAATquwAAAABAAAAAAAAIfv///// AAAL+/////8AAACaAAAAAgAAJwcAACcHABOoCAAABJIAAAAAAARe6AAAAAEAAAABAAAOjf////8A AA61/////wAAAJoAAAACAAAZ0gAAGj7//////////wAAAAD/////////0AAAAAAABF7oAAAAAQAA AAAAAA6N/////wAADrX/////AAAAmgAAAAIAABnSAAAaPgAEXcQAAACwAAAAAAAQcugAAAABAAAA AAAAAq7/////AAAAaf////8AAACaAAAAAgAABR4AAAUeABBypAAAADAAAAAAABB27AAAAAEAAAAB AAACrv////8AAABp/////wAAAJoAAAACAAADHgAAAx7//////////wAAAAD/////////2AAAAAAA EHbsAAAAAQAAAAEAAAKu/////wAAAGn/////AAAAmgAAAAIAAAMeAAADHv//////////AAAAAP// ///////gAAAAAAAQduwAAAABAAAAAQAAAq7/////AAAAaf////8AAACaAAAAAgAAAx4AAAMe//// //////8AAAAA/////////+gAAAAAAARK/AAAAAEAAAAAAAAOjf////8AAA61/////wAAAJoAAAAC AAAV3QAAFkIABEaUAAAAWQAAAAAABE8AAAAAAQAAAAAAAA6N/////wAADrX/////AAAAmgAAAAIA ABXdAAAWQgAERpQAAAB4AAAAAAAHOwwAAAABAAAAAQAAIQf/////AAAL+/////8AAACaAAAAAgAA IXsAACG1AAANcgAADXIAAAAA/////////9AAAAFUAAc7DAAAAAEAAAAAAAAhB/////8AAAv7//// /wAAAJoAAAACAAAhewAAIbUABzo4AAADtAAAAAAACb8IAAAAAQAAAAAAAAuI/////wAAC/v///// AAAAmgAAAAIAABQFAAAUBQAJvrQAAALKAAAAAAATCxQAAAABAAAAAAAAEMz/////AAAOtf////8A AACaAAAAAgAAETMAABEzABMK6AAAAMcAAAAAAAm/HAAAAAEAAAAAAAALiP////8AAAv7/////wAA AJoAAAACAAAUBQAAFAUACb60AAACygAAAAAABRMsAAAAAQAAAAAAACEH/////wAAC/v/////AAAA mgAAAAIAAC9kAAAvewAFC0AAAATjAAAAAAAJhzwAAAABAAAAAQAAFqn/////AAAL+/////8AAACa AAAAAgAAF8IAABgP//////////8AAAAA/////////zgAAAAAAAmHPAAAAAEAAAAAAAAWqf////8A AAv7/////wAAAJoAAAACAAAXwgAAGA8ACYbUAAABJgAAAAAAEHM4AAAAAQAAAAAAAAKu/////wAA AGn/////AAAAmgAAAAIAAAUeAAAFHgAQcqQAAAAwAAAAAAAFE0AAAAABAAAAAAAAIQf/////AAAL +/////8AAACaAAAAAgAAL2QAAC97AAULQAAABOMAAAAAAARDVAAAAAEAAAAAAAAOjf////8AAA61 /////wAAAJoAAAACAAAO/QAAD1wABEKcAAAAJgAAAAAAEwtkAAAAAQAAAAAAABDM/////wAADrX/ ////AAAAmgAAAAIAABEzAAARMwATCugAAADHAAAAAAAFq2wAAAABAAAAAAAAIfv/////AAAL+/// //8AAACaAAAAAgAAJGgAACRoAAWq4AAAA6gAAAAAAAc7aAAAAAEAAAABAAAhB/////8AAAv7//// /wAAAJoAAAACAAAhewAAIbUAAA1yAAANcgAAAAD/////////wAAAAUQABztoAAAAAQAAAAAAACEH /////wAAC/v/////AAAAmgAAAAIAACF7AAAhtQAHOjgAAAO0AAAAAAAR+2wAAAABAAAAAAAAAAD/ ////AAAAaf////8AAACaAAAAAgAACroAAAq6ABH51AAAAaAAAAAAABB3eAAAAAEAAAAAAAAIif// //8AAABp/////wAAAJoAAAACAAAJigAACYoAEHdYAAAASQAAAAAABQuEAAAAAQAAAAAAADCZ//// /wAAC/v/////AAAAmgAAAAIAAC9kAAAvewAFC0AAAAFDAAAAAAAET4QAAAABAAAAAAAADo3///// AAAOtf////8AAACaAAAAAgAAFd0AABZCAARGlAAAAHkAAAAAABBziAAAAAEAAAAAAAACrv////8A AABp/////wAAAJoAAAACAAAFHgAABR4AEHKkAAAAMAAAAAAACXOYAAAAAQAAAAAAABLK/////wAA C/v/////AAAAmgAAAAIAAC26AAAtugAJcxwAAACDAAAAAAAFo5gAAAABAAAAAAAAIfv/////AAAL +/////8AAACaAAAAAgAAInEAACJxAAWgqAAAAvMAAAAAAAlvmAAAAAEAAAAAAAASyv////8AAAv7 /////wAAAJoAAAACAAAU4AAAFOAACW9cAAAAfQAAAAAACX+cAAAAAQAAAAEAAAuI/////wAAC/v/ ////AAAAmgAAAAIAAAwfAAAMbv//////////AAAAAP/////////oAAAAAAAJf5wAAAABAAAAAAAA C4j/////AAAL+/////8AAACaAAAAAgAADB8AAAxuAAl/VAAAAqQAAAAAABJDnAAAAAEAAAABAAAA AP////8AAABp/////wAAAJoAAAACAAAB4AAAAkv//////////wAAAAD/////////6AAAAAAAEHuc AAAAAQAAAAEAAAAA/////wAAAGn/////AAAAmgAAAAIAAAD1AAAA9f//////////AAAAAP////// ///AAAAAAAAQe5wAAAABAAAAAAAAAAD/////AAAAaf////8AAACaAAAAAgAAAPUAAAD1ABB5QAAA AoUAAAAAABOrrAAAAAEAAAABAAAh+/////8AAAv7/////wAAAJoAAAACAAAnBwAAJwf///////// /wAAAAD/////////2AAAAAAACWesAAAAAQAAAAAAABLK/////wAAC/v/////AAAAmgAAAAIAABM5 AAATOQAJZ1wAAADaAAAAAAAFr7QAAAABAAAAAAAAIfv/////AAAL+/////8AAACaAAAAAgAAKGoA AChqAAWvMAAABCkAAAAAAAlvtAAAAAEAAAAAAAASyv////8AAAv7/////wAAAJoAAAACAAAU4AAA FOAACW9cAAAAfQAAAAAAEwu0AAAAAQAAAAAAABDM/////wAADrX/////AAAAmgAAAAIAABEzAAAR MwATCugAAADHAAAAAAAJf7QAAAABAAAAAQAAC4j/////AAAL+/////8AAACaAAAAAgAADB8AAAxu //////////8AAAAA/////////+AAAAAAAAl/tAAAAAEAAAAAAAALiP////8AAAv7/////wAAAJoA AAACAAAMHwAADG4ACX9UAAACpAAAAAAAC1+8AAAAAQAAAAH/////AAAAmgAAIyYAAACaAAAAmgAA AAYAAClgAAApYP//////////AAAAAP/////////4AAAAAAALX7wAAAABAAAAAP////8AAACaAAAj JgAAAJoAAACaAAAABgAAKWAAAClgAAtfnAAAAAAAAAAAAAWrvAAAAAEAAAABAAAh+/////8AAAv7 /////wAAAJoAAAACAAAkaAAAJGj//////////wAAAAD/////////4AAAAAAAE6vAAAAAAQAAAAEA ACH7/////wAAC/v/////AAAAmgAAAAIAACcHAAAnB///////////AAAAAP////////+wAAAAAAAT q8AAAAABAAAAAAAAIfv/////AAAL+/////8AAACaAAAAAgAAJwcAACcHABOoCAAABJIAAAAAAAgX xAAAAAEAAAABAAAhB/////8AAAv7/////wAAAJoAAAACAAAl6wAAJiT//////////wAAAAD///// ////yAAAAAAACBfEAAAAAQAAAAAAACEH/////wAAC/v/////AAAAmgAAAAIAACXrAAAmJAAIFsAA AAQ5AAAAAAAEX8AAAAABAAAAAQAADo3/////AAAOtf////8AAACaAAAAAgAAGdIAABo+//////// //8AAAAA/////////7gAAAAAAARfwAAAAAEAAAAAAAAOjf////8AAA61/////wAAAJoAAAACAAAZ 0gAAGj4ABF3EAAAAswAAAAAACb/IAAAAAQAAAAEAAAuI/////wAAC/v/////AAAAmgAAAAIAABQF AAAUBQAAFdgAABXYAAAAAP/////////Q////0AAJv8gAAAABAAAAAAAAC4j/////AAAL+/////8A AACaAAAAAgAAFAUAABQFAAm+tAAAArkAAAAAAAm/yAAAAAEAAAABAAALiP////8AAAv7/////wAA AJoAAAACAAAUBQAAFAUAABXYAAAV2AAAAAD/////////2P///9gAEHfIAAAAAQAAAAAAAAiJ//// /wAAAGn/////AAAAmgAAAAIAAAmKAAAJigAQd1gAAABJAAAAAAAIC9AAAAABAAAAAQAAIQf///// AAAL+/////8AAACaAAAAAgAAJC8AACQv//////////8AAAAA/////////7gAAAAAAAln1AAAAAEA AAAAAAASyv////8AAAv7/////wAAAJoAAAACAAATOQAAEzkACWdcAAAA2gAAAAAAEx/oAAAAAQAA AAAAABhg/////wAADrX/////AAAAmgAAAAIAABumAAAcLgATH8QAAAEvAAAAAAAQc/AAAAABAAAA AQAAAq7/////AAAAaf////8AAACaAAAAAgAABR4AAAUe//////////8AAAAA/////////9gAAAAA ABBz8AAAAAEAAAABAAACrv////8AAABp/////wAAAJoAAAACAAAFHgAABR7//////////wAAAAD/ ////////4AAAAAAAEHPwAAAAAQAAAAEAAAKu/////wAAAGn/////AAAAmgAAAAIAAAUeAAAFHv// ////////AAAAAP/////////oAAAAAAALD/gAAAABAAAAAf////8AAACaAAAjJgAAAJoAAACaAAAA BgAAIzYAACM2//////////8AAAAA//////////AAAAAAAAsP+AAAAAEAAAAA/////wAAAJoAACMm AAAAmgAAAJoAAAAGAAAjNgAAIzYACw/MAAAAAAAAAAAAAAEQAAAAAQAAAAD////+AAAAAQAAACM5 WcW7AAEAeAAVIuEAFiLkABkjoAAZ7ZSmxrc6AABYegAAAAAAAAAaAAAAzCAtY2FjaGUtZGlyPS90 bXAvcHVyaWZ5ICAgLWcrKz15ZXMgICItcHVyaWZ5IiAiLWNhY2hlLWRpcj0vdG1wIiAtcHVyaWZ5 LWhvbWU9L29wdC9wdXJpZnkvcHVyaWZ5LTQuNS4xLXNvbGFyaXMyACAiLWNhY2hlLWRpcj0vdG1w L3B1cmlmeSIAAAAAAAAAAAAnLi9UZXN0X2VxdURlYnVnUHVyZScgJy4uLy4uLy4uL2RhdGEvZXF1 L1Rlc3RfZXF1X29rLnR4dCcAAAAAANAAAAAlAAAAAAAAAAMAAAAM7//0EAAAAAQAAAAE7//0EAAA AAYAAAABABB7nAAAAAAAEgskABHalAARj4gABC/cAAAABgAAAAHv//OI7//0UO//9Mjv//VY7//1 4O//9lAAAAAF7//0EAAAAAAAAAAAAAAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB ABB7nAASQ5wAEgskABHalAARj4gABC/cAAAABgAAAAHv//OI7//0UO//9Mjv//VY7//14O//9lAA AADQAAAAJQAAAAAAAAAEAAAADO//9LAAAAAEAAAABO//9LAAAAAGAAAAAQAQfAAAAAAAABILJAAR 2pQAEY+IAAQv3AAAAAYAAAAB7//ziO//9FDv//TI7//1WO//9eDv//ZQAAAABe//9LAAAAAAAAAA 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 BgAAAAEAEYEUABBz8AAQdXQAEHbsABB8tAASQ5wAAAAGAAAAAe//8Vjv//Ho7//ycO//8wDv//OI 7//0UAAAANAAAAAlAAAAAAAAABIAAAAa7//xwAAAAAQAAAAE7//xwAAAAAYAAAABABHKeAAAAAAA EHPwABB1dAAQduwAEHy0AAAABgAAAAHv//DY7//xWO//8ejv//Jw7//zAO//84gAAAAF7//xwF81 MTM3AAAAAAAAAAAAAAAAAAAAAAAA0AAAACUAAAAAAAAAAAAAAAYAAAABABHKeAARgZAAEHPwABB1 dAAQduwAEHy0AAAABgAAAAHv//DY7//xWO//8ejv//Jw7//zAO//84gAAADQAAAAJQAAAAAAAAAT AAAADO//9CgAAAAEAAAABO//9CgAAAAGAAAAAQAQfMgAAAAAABILJAAR2pQAEY+IAAQv3AAAAAYA AAAB7//ziO//9FDv//TI7//1WO//9eDv//ZQAAAABe//9Cjv/+/YAAAAAQAAAADv//Dw7//xWAAD 79QAEcp4AAAAAAAAAAAAAAAGAAAAAQAQfMgAEkOcABILJAAR2pQAEY+IAAQv3AAAAAYAAAAB7//z iO//9FDv//TI7//1WO//9eDv//ZQAAAA0AAAACUAAAAAAAAAFAAAAAzv//SwAAAABAAAAATv//Sw AAAABgAAAAEAEH1cAAAAAAASCyQAEdqUABGPiAAEL9wAAAAGAAAAAe//84jv//RQ7//0yO//9Vjv //Xg7//2UAAAAAXv//Sw7//v2AAAAAEAAAAA7//w8O//8VgAA+/UABHKeAAAAAAAAAAAAAAABgAA AAEAEH1cABJDnAASCyQAEdqUABGPiAAEL9wAAAAGAAAAAe//84jv//RQ7//0yO//9Vjv//Xg7//2 UAAAANAAAAAlAAAAAAAAABUAAAAM7//0IAAAAAQAAAAE7//0IAAAAAYAAAABABB9vAAAAAAAEgsk ABHalAARj4gABC/cAAAABgAAAAHv//OI7//0UO//9Mjv//VY7//14O//9lAAAAAF7//0IO//79gA AAABAAAAAO//8PDv//FYAAPv1AARyngAAAAAAAAAAAAAAAYAAAABABB9vAASQ5wAEgskABHalAAR j4gABC/cAAAABgAAAAHv//OI7//0UO//9Mjv//VY7//14O//9lAAAADQAAAAJQAAAAAAAAAWAAAA DO//8/AAAAAEAAAABO//8/AAAAAGAAAAAQAQfjQAAAAAABILJAAR2pQAEY+IAAQv3AAAAAYAAAAB 7//ziO//9FDv//TI7//1WO//9eDv//ZQAAAABe//8/Dv/+/YAAAAAQAAAADv//Dw7//xWAAD79QA Ecp4AAAAAAAAAAAAAAAGAAAAAQAQfjQAEkOcABILJAAR2pQAEY+IAAQv3AAAAAYAAAAB7//ziO// 9FDv//TI7//1WO//9eDv//ZQAAAA0AAAACUAAAAAAAAAFwAAAAzv//PwAAAABAAAAATv//PwAAAA BgAAAAEAEHhoAAAAAAASQ5wAEgskABHalAARj4gAAAAGAAAAAe//8wjv//OI7//0UO//9Mjv//VY 7//14AAAAAXv//Pw7//vWAAAAAEAAAAI7//wcO//8NgAAADQAAAAJQAAAAAAAAAAAAAABgAAAAEA EHhoABB+1AASQ5wAEgskABHalAARj4gAAAAGAAAAAe//8wjv//OI7//0UO//9Mjv//VY7//14AAA ANAAAAAlAAAAAAAAABgAAAAM7//z+AAAAAQAAAAE7//z+AAAAAYAAAABABB4uAAAAAAAEkOcABIL JAAR2pQAEY+IAAAABgAAAAHv//MI7//ziO//9FDv//TI7//1WO//9eAAAAAF7//z+O//71gAAAAB AAAACO//8HDv//DYAAAA0AAAACUAAAAAAAAAAAAAAAYAAAABABB4uAAQftQAEkOcABILJAAR2pQA EY+IAAAABgAAAAHv//MI7//ziO//9FDv//TI7//1WO//9eAAAADQAAAAJQAAAAAAAAAZAAAADO// 83AAAAAEAAAABO//83AAAAAGAAAAAQAQd3gAAAAAABB+1AASQ5wAEgskABHalAAAAAYAAAAB7//y gO//8wjv//OI7//0UO//9Mjv//VYAAAABe//83AAAAAA7//u8AADv8gAAAAH7//xGAAAAAAAAAAA AAAAAAAAAAAAAAAGAAAAAQAQd3gAEHkgABB+1AASQ5wAEgskABHalAAAAAYAAAAB7//ygO//8wjv //OI7//0UO//9Mjv//VYAAAA0AAAACUAAAAAAAAAGgAAAAzv//NoAAAABAAAAATv//NoAAAABgAA AAEAEHfIAAAAAAAQftQAEkOcABILJAAR2pQAAAAGAAAAAe//8oDv//MI7//ziO//9FDv//TI7//1 WAAAAAXv//NoAAAAAO//7vAAA7/IAAAAB+//8RgAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAEAEHfI ABB5IAAQftQAEkOcABILJAAR2pQAAAAGAAAAAe//8oDv//MI7//ziO//9FDv//TI7//1WAAAANAA AAAlAAAAAAAAABsAAAAE7//1yAAAAAQAAAAE7//1yAAAAAYAAAABABHMAAAAAAAABC/sAAQ4pAAB APgAAAAAAAAABgAAAAHv//VY7//14O//9lDv//qA7//7CAAAAAAAAAAF7//1yO//8oAAAAAAVVVV Ve//8dgAAYFIAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABABHMAAARkNgABC/sAAQ4pAABAPgAAAAA AAAABgAAAAHv//VY7//14O//9lDv//qA7//7CAAAAAAAAADQAAAAJQAAAAAAAAAcAAAAAu//9bgA AAAEAAAABO//9bgAAAAGAAAAAQAR+sQAAAAAABGQ2AAEL+wABDikAAEA+AAAAAYAAAAB7//0qO// 9Vjv//Xg7//2UO//+oDv//sIAAAABe//9bgAAAAAAAAAAO//9cgAAAAE7//0ZO//89z/////AAAA AAAAAAAAAAAGAAAAAQAR+sQAEcxgABGQ2AAEL+wABDikAAEA+AAAAAYAAAAB7//0qO//9Vjv//Xg 7//2UO//+oDv//sIAAAA0AAAACUAAAAAAAAAHQAAAATv//W4AAAABAAAAATv//W4AAAABgAAAAEA EftsAAAAAAARkNgABC/sAAQ4pAABAPgAAAAGAAAAAe//9Kjv//VY7//14O//9lDv//qA7//7CAAA AAXv//W4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAEAEftsABHM YAARkNgABC/sAAQ4pAABAPgAAAAGAAAAAe//9Kjv//VY7//14O//9lDv//qA7//7CAAAANAAAAAl AAAAAAAAAB4AAAAE7//1wAAAAAQAAAAE7//1wAAAAAYAAAABABHMdAAAAAAABC/sAAQ4pAABAPgA AAAAAAAABgAAAAHv//VY7//14O//9lDv//qA7//7CAAAAAAAAAAF7//1wO//9lDv//qA7//7CAAA AAAAA798AAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABABHMdAARkNgABC/sAAQ4pAABAPgAAAAAAAAA BgAAAAHv//VY7//14O//9lDv//qA7//7CAAAAAAAAADQAAAAJQAAAAAAAAAfAAAAEO//9bAAAAAE AAAABO//9bAAAAAGAAAAAQAJf5wAAAAAAAQwPAAEOKQAAQD4AAAAAAAAAAYAAAAB7//1MO//9cjv //ZQ7//6gO//+wgAAAAAAAAABe//9bAAAAAAAAAAAAAAAAAAAAAAAAAAAO//8sDv//RAAAAAAAAA AAAAAAAGAAAAAQAJf5wAEYPAAAQwPAAEOKQAAQD4AAAAAAAAAAYAAAAB7//1MO//9cjv//ZQ7//6 gO//+wgAAAAAAAAA0AAAACUAAAAAAAAAIAAAABDv//WoAAAABAAAAATv//WoAAAABgAAAAEACX+0 AAAAAAAEMDwABDikAAEA+AAAAAAAAAAGAAAAAe//9TDv//XI7//2UO//+oDv//sIAAAAAAAAAAXv //WoAAAAAAAAAAAAAAAAAAAAAAAAAADv//LA7//0QAAAAAAAAAAAAAAABgAAAAEACX+0ABGDwAAE MDwABDikAAEA+AAAAAAAAAAGAAAAAe//9TDv//XI7//2UO//+oDv//sIAAAAAAAAANAAAAAlAAAA AAAAACEAAABH7//0kAAAAAQAAAAE7//0kAAAAAYAAAABAAkxdAAAAAAABENUABGSBAAEMTgABDik AAAABgAAAAHv//Lg7//0qO//9Rjv//XI7//2UO//+oAAAAAF7//0kAAWIuQAGfkIAAAACgAJx7jv //AoAAAACFVVVVUAAAAAAAAAAAAAAAYAAAABAAkxdAAJOHwABENUABGSBAAEMTgABDikAAAABgAA AAHv//Lg7//0qO//9Rjv//XI7//2UO//+oAAAADQAAAAJgAAAAAAAAAiAAAADe//9IAAAAAEAAAA BO//9IAAAAAGAAAAAQAJMZAACTh8AARDVAARkgQABDE4AAQ4pAAAAAYAAAAB7//y4O//9Kjv//UY 7//1yO//9lDv//qAAAAABe//9IAAFiLkABn5CAAAAAoACce47//wKAAAAAhVVVVVAAAAAAAAAAAA AAAGAAAAAQAJMZAACTh8AARDVAARkgQABDE4AAQ4pAAAAAYAAAAB7//y4O//9Kjv//UY7//1yO// 9lDv//qAAAAA0AAAACUAAAAAAAAAIwAAAEbv//WQAAAABAAAAATv//WQAAAABgAAAAEAEwsUAAAA AAARkgQABDE4AAQ4pAABAPgAAAAGAAAAAe//9Ijv//UY7//1yO//9lDv//qA7//7CAAAAAXv//WQ AAAAAO//8PgAA7/I7//xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAEAEwsUAARECAARkgQA BDE4AAQ4pAABAPgAAAAGAAAAAe//9Ijv//UY7//1yO//9lDv//qA7//7CAAAANAAAAAlAAAAAAAA ACQAAABG7//1iAAAAAQAAAAE7//1iAAAAAYAAAABABMLZAAAAAAAEZIEAAQxOAAEOKQAAQD4AAAA BgAAAAHv//SI7//1GO//9cjv//ZQ7//6gO//+wgAAAAF7//1iAAAAADv//D4AAO/yO//8UAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABABMLZAAERAgAEZIEAAQxOAAEOKQAAQD4AAAABgAAAAHv //SI7//1GO//9cjv//ZQ7//6gO//+wgAAADQAAAAJQAAAAAAAAAlAAAARu//9YAAAAABAAAAAe// 9YAAAAAGAAAAAQATC7QAAAAAABGSBAAEMTgABDikAAEA+AAAAAYAAAAB7//0iO//9Rjv//XI7//2 UO//+oDv//sIAAAABe//9YAAAAAA7//w+AADv8jv//FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG AAAAAQATC7QABEQIABGSBAAEMTgABDikAAEA+AAAAAYAAAAB7//0iO//9Rjv//XI7//2UO//+oDv //sIAAAA0AAAACUAAAAAAAAAJgAAAAHv//UAAAAABAAAAATv//UAAAAABgAAAAEAEtKkAAAAAAAE RAgAEZIEAAQxOAAEOKQAAAAGAAAAAe//9BDv//SI7//1GO//9cjv//ZQ7//6gAAAAAXv//UAABqq qAAaqtgAAABCAAAA0AAAACUAAAAAAAAAJQAAAAAAAAAAAAAABgAAAAEAEtKkABMMOAAERAgAEZIE AAQxOAAEOKQAAAAGAAAAAe//9BDv//SI7//1GO//9cjv//ZQ7//6gAAAANAAAAAlAAAAAAAAACcA AABG7//1mAAAAAQAAAAE7//1mAAAAAYAAAABAAlnrAAAAAAAEZIEAAQxOAAEOKQAAQD4AAAABgAA AAHv//SY7//1GO//9cjv//ZQ7//6gO//+wgAAAAF7//1mAAAAAAAAAAAAAAAAAAAAAAAAAAA7//y KO//86gAAAAAAAAAAAAAAAYAAAABAAlnrAAERGAAEZIEAAQxOAAEOKQAAQD4AAAABgAAAAHv//SY 7//1GO//9cjv//ZQ7//6gO//+wgAAADQAAAAJQAAAAAAAAAoAAAARu//9YAAAAAEAAAAAe//9YAA AAAGAAAAAQAJZ9QAAAAAABGSBAAEMTgABDikAAEA+AAAAAYAAAAB7//0mO//9Rjv//XI7//2UO// +oDv//sIAAAABe//9YAAAAAAAAAAAAAAAAAAAAAAAAAAAO//8ijv//OoAAAAAAAAAAAAAAAGAAAA AQAJZ9QABERgABGSBAAEMTgABDikAAEA+AAAAAYAAAAB7//0mO//9Rjv//XI7//2UO//+oDv//sI AAAA0AAAACUAAAAAAAAAKQAAAKbv//UAAAAABAAAAATv//UAAAAABgAAAAEACb8IAAAAAAAERGAA EZIEAAQxOAAEOKQAAAAGAAAAAe//9ADv//SY7//1GO//9cjv//ZQ7//6gAAAAAXv//UAAAAAAO// 8bAAAkoY7//1AAAaqqgAGqrYAAAAQgAAAAAAAAAAAAAABgAAAAEACb8IAAloEAAERGAAEZIEAAQx OAAEOKQAAAAGAAAAAe//9ADv//SY7//1GO//9cjv//ZQ7//6gAAAANAAAAAlAAAAAAAAACoAAACm 7//0+AAAAAQAAAAB7//0+AAAAAYAAAABAAm/HAAAAAAABERgABGSBAAEMTgABDikAAAABgAAAAHv //QA7//0mO//9Rjv//XI7//2UO//+oAAAAAF7//0+AAAAADv//GwAAJKGO//9QAAGqqoABqq2AAA AEIAAAAAAAAAAAAAAAYAAAABAAm/HAAJaBAABERgABGSBAAEMTgABDikAAAABgAAAAHv//QA7//0 mO//9Rjv//XI7//2UO//+oAAAADQAAAAJQAAAAAAAAArAAAApu//9HAAAAAEAAAABO//9HAAAAAG AAAAAQAJb5gAAAAAAAloEAAERGAAEZIEAAQxOAAAAAYAAAAB7//zcO//9ADv//SY7//1GO//9cjv //ZQAAAABe//9HAAAkoY7//ylAAAAADv//EoAAJKGFNUPTEuMiBMAAAAAAAAAAAAAAAGAAAAAQAJ b5gACb/IAAloEAAERGAAEZIEAAQxOAAAAAYAAAAB7//zcO//9ADv//SY7//1GO//9cjv//ZQAAAA 0AAAACYAAAAAAAAALAAAAAzv//RoAAAABAAAAAHv//RoAAAABgAAAAEACW+0AAm/yAAJaBAABERg ABGSBAAEMTgAAAAGAAAAAe//83Dv//QA7//0mO//9Rjv//XI7//2UAAAAAXv//RoAAJKGO//8pQA AAAA7//xKAACShhTVD0xLjIgTAAAAAAAAAAAAAAABgAAAAEACW+0AAm/yAAJaBAABERgABGSBAAE MTgAAAAGAAAAAe//83Dv//QA7//0mO//9Rjv//XI7//2UAAAANAAAAAlAAAAAAAAAC0AAACk7//0 cAAAAAQAAAAE7//0cAAAAAYAAAABAAlwlAAAAAAACWgQAAREYAARkgQABDE4AAAABgAAAAHv//Nw 7//0AO//9Jjv//UY7//1yO//9lAAAAAF7//0cAACShjv//KUAAAAAO//8SgAAkoYU1Q9MS4yIEwA AAAAAAAAAAAAAAYAAAABAAlwlAAJv8gACWgQAAREYAARkgQABDE4AAAABgAAAAHv//Nw7//0AO// 9Jjv//UY7//1yO//9lAAAADQAAAAJQAAAAAAAAAuAAAApO//9GgAAAAEAAAAAe//9GgAAAAGAAAA AQAJcNgAAAAAAAloEAAERGAAEZIEAAQxOAAAAAYAAAAB7//zcO//9ADv//SY7//1GO//9cjv//ZQ AAAABe//9GgAAkoY7//ylAAAAADv//EoAAJKGFNUPTEuMiBMAAAAAAAAAAAAAAAGAAAAAQAJcNgA Cb/IAAloEAAERGAAEZIEAAQxOAAAAAYAAAAB7//zcO//9ADv//SY7//1GO//9cjv//ZQAAAA0AAA ACYAAAAAAAAALwAAAArv//NgAAAABAAAAATv//NgAAAABgAAAAEACTGQAARIPAAERLwAEZIEAAQx OAAEOKQAAAAGAAAAAe//8cDv//OI7//1GO//9cjv//ZQ7//6gAAAAAXv//Ng7//uqO//71AAAAAB /////wAAAAEAAAAeABqrfAAAAAAAAAAAAAAABgAAAAEACTGQAARIPAAERLwAEZIEAAQxOAAEOKQA AAAGAAAAAe//8cDv//OI7//1GO//9cjv//ZQ7//6gAAAANAAAAAlAAAAAAAAADAAAAA47//zcAAA AAQAAAAE7//zcAAAAAYAAAABABLRAAAAAAAABElwAAREvAARkgQABDE4AAAABgAAAAHv//KA7//y +O//84jv//UY7//1yO//9lAAAAAF7//zcAAAAAAACckQABn5CO//7wgACMGgAAAAAQAAAAAAAAAA AAAAAAAAAAYAAAABABLRAAATDDgABElwAAREvAARkgQABDE4AAAABgAAAAHv//KA7//y+O//84jv //UY7//1yO//9lAAAADQAAAAJgAAAAAAAAAxAAAACu//8tgAAAAEAAAAAe//8tgAAAAGAAAAAQAJ b7QACb/IAAloEAAEScgABES8ABGSBAAAAAYAAAAB7//x4O//8nDv//MI7//ziO//9Rjv//XIAAAA Be//8tjv//GM7//xBAAAAADv/++YAAJKGAAERLwAEZIEAAAAAAAAAAAAAAAGAAAAAQAJb7QACb/I AAloEAAEScgABES8ABGSBAAAAAYAAAAB7//x4O//8nDv//MI7//ziO//9Rjv//XIAAAA0AAAACYA AAAAAAAAMgAAAArv//NgAAAABAAAAATv//NgAAAABgAAAAEACTGQAARK/AAERLwAEZIEAAQxOAAE OKQAAAAGAAAAAe//8cDv//OI7//1GO//9cjv//ZQ7//6gAAAAAXv//Ng7//x4O//8nDv//MI7//z iO//9Rjv//XIAAAABQAAAAAAAAAAAAAABgAAAAEACTGQAARK/AAERLwAEZIEAAQxOAAEOKQAAAAG AAAAAe//8cDv//OI7//1GO//9cjv//ZQ7//6gAAAANAAAAAlAAAAAAAAADMAAAA67//ywAAAAAQA AAAE7//ywAAAAAYAAAABAAmFbAAAAAAABES8ABGSBAAEMTgABDikAAAABgAAAAHv//Jg7//ziO// 9Rjv//XI7//2UO//+oAAAAAF7//ywAAAAAEAAAAAAAAAAAAAAB4AGrNEABn5CAAAIBQAAAAAAAAA AAAAAAYAAAABAAmFbAAETRQABES8ABGSBAAEMTgABDikAAAABgAAAAHv//Jg7//ziO//9Rjv//XI 7//2UO//+oAAAADQAAAAJQAAAAAAAAA0AAAAOu//8sAAAAAEAAAABO//8sAAAAAGAAAAAQAJhzwA AAAAAAREvAARkgQABDE4AAQ4pAAAAAYAAAAB7//yYO//84jv//UY7//1yO//9lDv//qAAAAABe// 8sAAAAABAAAAAAAAAAAAAAAeABqzRAAZ+QgAACAUAAAAAAAAAAAAAAAGAAAAAQAJhzwABE0UAARE vAARkgQABDE4AAQ4pAAAAAYAAAAB7//yYO//84jv//UY7//1yO//9lDv//qAAAAA0AAAACUAAAAA AAAANQAAAwLv//NwAAAABAAAAATv//NwAAAABgAAAAEAEw3sAAAAAAAETRQABES8ABGSBAAEMTgA AAAGAAAAAe//8mjv//LY7//ziO//9Rjv//XI7//2UAAAAAXv//NwAAAAAAAAAB4AGrNEABn5CAAA IBQAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAEAEw3sAARebAAETRQABES8ABGSBAAEMTgAAAAGAAAA Ae//8mjv//LY7//ziO//9Rjv//XI7//2UAAAANAAAAAlAAAAAAAAADYAAABq7//zQAAAAAEAAAAB 7//zQAAAAAYAAAABABMRNAAAAAAABE0UAAREvAARkgQABDE4AAAABgAAAAHv//JI7//y2O//84jv //UY7//1yO//9lAAAAAF7//zQAAAAADv/+/wAALqgO//9Rjv//XI7//2UAAAAAUAAAAAAAAAAAAA AAYAAAABABMRNAAEXtQABE0UAAREvAARkgQABDE4AAAABgAAAAHv//JI7//y2O//84jv//UY7//1 yO//9lAAAADQAAAAJQAAAAAAAAA3AAACqO//8sAAAAAEAAAABO//8sAAAAAGAAAAAQATH+gAAAAA ABLzQAATEbgABF7UAARNFAAAAAYAAAAB7//w4O//8VDv//HQ7//ySO//8tjv//OIAAAABe//8sAA AAA67//uaAAAAAAAAAAAAAAAVe//7Zjv//NgAAAAAAAAAAAAAAAGAAAAAQATH+gAExIQABLzQAAT EbgABF7UAARNFAAAAAYAAAAB7//w4O//8VDv//HQ7//ySO//8tjv//OIAAAA0AAAACUAAAAAAAAA OAAAAcvv//LAAAAABAAAAATv//LAAAAABgAAAAEAEvFAAAAAAAATEbgABF7UAARNFAAERLwAAAAG AAAAAe//8Vjv//HQ7//ySO//8tjv//OI7//1GAAAAAXv//LAAALqgAAAAAAAAAAyAAAAAe//82AA AAAEAAAABAAAAAAAAAAAAAAABgAAAAEAEvFAABLzdAATEbgABF7UAARNFAAERLwAAAAGAAAAAe// 8Vjv//HQ7//ySO//8tjv//OI7//1GAAAANAAAAAlAAAAAAAAADkAAAAw7//zWAAAAAQAAAAE7//z WAAAAAYAAAABAARe6AAAAAAABES8ABGSBAAEMTgABDikAAAABgAAAAHv//LY7//ziO//9Rjv//XI 7//2UO//+oAAAAAF7//zWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYA AAABAARe6AAETRQABES8ABGSBAAEMTgABDikAAAABgAAAAHv//LY7//ziO//9Rjv//XI7//2UO// +oAAAADQAAAAJQAAAAAAAAA6AAAAMO//80AAAAAEAAAABO//80AAAAAGAAAAAQAEX8AAAAAAAARE vAARkgQABDE4AAQ4pAAAAAYAAAAB7//y2O//84jv//UY7//1yO//9lDv//qAAAAABe//80AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAQAEX8AABE0UAAREvAARkgQA BDE4AAQ4pAAAAAYAAAAB7//y2O//84jv//UY7//1yO//9lDv//qAAAAA0AAAACUAAAAAAAAAOwAA ADDv//NAAAAABAAAAATv//NAAAAABgAAAAEABGC0AAAAAAAERLwAEZIEAAQxOAAEOKQAAAAGAAAA Ae//8tjv//OI7//1GO//9cjv//ZQ7//6gAAAAAXv//NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAABgAAAAEABGC0AARNFAAERLwAEZIEAAQxOAAEOKQAAAAGAAAAAe//8tjv //OI7//1GO//9cjv//ZQ7//6gAAAANAAAAAmAAAAAAAAADwAAAAK7//yOAAAAAQAAAAE7//yOAAA AAYAAAABAAlvtAAJv8gACUpoAAm2rAAETVwABES8AAAABgAAAAHv//FA7//x0O//8mjv//MY7//z iO//9RgAAAAF7//yOO//72AAAAAGAAAAAQAAAAAAAAAA7//u+AAC6oAAAAAAAAAAAAAAAAYAAAAB AAlvtAAJv8gACUpoAAm2rAAETVwABES8AAAABgAAAAHv//FA7//x0O//8mjv//MY7//ziO//9RgA AADQAAAAJgAAAAAAAAA9AAAAMO//8tgAAAAEAAAAAe//8tgAAAAGAAAAAQAJb7QACb/IAAloEAAE UVgABES8ABGSBAAAAAYAAAAB7//x4O//8nDv//MI7//ziO//9Rjv//XIAAAABe//8tjv//DY7//x QO//8dDv//Jo7//zGO//84jv//UYAAAAAAAAAAAAAAAGAAAAAQAJb7QACb/IAAloEAAEUVgABES8 ABGSBAAAAAYAAAAB7//x4O//8nDv//MI7//ziO//9Rjv//XIAAAA0AAAACYAAAAAAAAAPgAAACbv //NgAAAABAAAAATv//NgAAAABgAAAAEACTGQAARSuAAERLwAEZIEAAQxOAAEOKQAAAAGAAAAAe// 8cDv//OI7//1GO//9cjv//ZQ7//6gAAAAAXv//Ng7//x4O//8nDv//MI7//ziO//9Rjv//XIAAAA BQAAAAAAAAAAAAAABgAAAAEACTGQAARSuAAERLwAEZIEAAQxOAAEOKQAAAAGAAAAAe//8cDv//OI 7//1GO//9cjv//ZQ7//6gAAAANAAAAAmAAAAAAAAAD8AAAAm7//yOAAAAAQAAAAE7//yOAAAAAYA AAABAAlvtAAJv8gACUpoAAm2rAAETwAABES8AAAABgAAAAHv//FA7//x0O//8mjv//MY7//ziO// 9RgAAAAF7//yOO//72AAAAAGAAAAAQAAAAAAAAAA7//u+AAC6oAAAAAAAAAAAAAAAAYAAAABAAlv tAAJv8gACUpoAAm2rAAETwAABES8AAAABgAAAAHv//FA7//x0O//8mjv//MY7//ziO//9RgAAADQ AAAAJgAAAAAAAABAAAAAJu//8jgAAAAEAAAABO//8jgAAAAGAAAAAQAJb7QACb/IAAlKaAAJtqwA BE+EAAREvAAAAAYAAAAB7//xQO//8dDv//Jo7//zGO//84jv//UYAAAABe//8jjv/+9gAAAABgAA AAEAAAAAAAAAAO//7vgAAuqAAAAAAAAAAAAAAAAGAAAAAQAJb7QACb/IAAlKaAAJtqwABE+EAARE vAAAAAYAAAAB7//xQO//8dDv//Jo7//zGO//84jv//UYAAAA0AAAACUAAAAAAAAAQQAAADDv//LI AAAABAAAAATv//LIAAAABgAAAAEAEcG4AAAAAAAEUDAABES8ABGSBAAEMTgAAAAGAAAAAe//8mjv //Lo7//ziO//9Rjv//XI7//2UAAAAAXv//LIAAAAAP////8AGfnQAAAABwAAAAAAAAAAAAAAAAAA AAAAAAAAAAAABgAAAAEAEcG4ABGh1AAEUDAABES8ABGSBAAEMTgAAAAGAAAAAe//8mjv//Lo7//z iO//9Rjv//XI7//2UAAAANAAAAAlAAAAAAAAAEIAAAAm7//xuAAAAAQAAAAE7//xuAAAAAYAAAAB AAc7DAAAAAAAEaTUAARQMAAERLwAEZIEAAAABgAAAAHv//AA7//x6O//8ujv//OI7//1GO//9cgA AAAF7//xuAAAAAEAAABEABbamAAAAAAAAABVAAAAHu//7iAAAAAAAAAAAAAAAAYAAAABAAc7DAAS b2AAEaTUAARQMAAERLwAEZIEAAAABgAAAAHv//AA7//x6O//8ujv//OI7//1GO//9cgAAADQAAAA JQAAAAAAAABDAAAAJu//8agAAAAEAAAABO//8agAAAAGAAAAAQAHO2gAAAAAABGk1AAEUDAABES8 ABGSBAAAAAYAAAAB7//wAO//8ejv//Lo7//ziO//9Rjv//XIAAAABe//8agAAAABAAAARAAW2pgA AAAAAAAAVQAAAB7v/+4gAAAAAAAAAAAAAAAGAAAAAQAHO2gAEm9gABGk1AAEUDAABES8ABGSBAAA AAYAAAAB7//wAO//8ejv//Lo7//ziO//9Rjv//XIAAAA0AAAACUAAAAAAAAARAAAACbv//GYAAAA BAAAAATv//GYAAAABgAAAAEABaF0AAAAAAASb2AAEaTUAARQMAAERLwAAAAGAAAAAe//70Dv//AA 7//x6O//8ujv//OI7//1GAAAAAXv//GYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAA7//xqAAAAAAA AAAAAAAABgAAAAEABaF0AAc8hAASb2AAEaTUAARQMAAERLwAAAAGAAAAAe//70Dv//AA7//x6O// 8ujv//OI7//1GAAAANAAAAAlAAAAAAAAAEUAAAAm7//xiAAAAAQAAAAE7//xiAAAAAYAAAABAAWh /AAAAAAAEm9gABGk1AAEUDAABES8AAAABgAAAAHv/+9A7//wAO//8ejv//Lo7//ziO//9RgAAAAF 7//xiAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAO//8agAAAAAAAAAAAAAAAYAAAABAAWh/AAHPIQA Em9gABGk1AAEUDAABES8AAAABgAAAAHv/+9A7//wAO//8ejv//Lo7//ziO//9RgAAADQAAAAJQAA AAAAAABGAAAAJu//7JgAAAABAAAAAe//7JgAAAAGAAAAAQALD/gAAAAAAAWi1AAHPIQAEm9gABGk 1AAAAAYAAAAB7//sGO//7Kjv/+9A7//wAO//8ejv//LoAAAABe//7Jjv/+iwAAAAQAAT9AAAFjAA 7//wTAAAAAQAATEUAAAAAAAAAAAAAAAGAAAAAQALD/gACpK8AAWi1AAHPIQAEm9gABGk1AAAAAYA AAAB7//sGO//7Kjv/+9A7//wAO//8ejv//LoAAAA0AAAACUAAAAAAAAARwAAACbv//GYAAAABAAA AATv//GYAAAABgAAAAEABaOYAAAAAAASb2AAEaTUAARQMAAERLwAAAAGAAAAAe//70Dv//AA7//x 6O//8ujv//OI7//1GAAAAAXv//GYAAAAIu9oAADvaAAAAAAAAAAAAFUAAAAeABSFuAAAAAAAAAAA AAAABgAAAAEABaOYAAc8hAASb2AAEaTUAARQMAAERLwAAAAGAAAAAe//70Dv//AA7//x6O//8ujv //OI7//1GAAAANAAAAAlAAAAAAAAAEgAAAAK7//zWAAAAAQAAAAE7//zWAAAAAYAAAABAARiTAAA AAAABES8ABGSBAAEMTgABDikAAAABgAAAAHv//LY7//ziO//9Rjv//XI7//2UO//+oAAAAAF7//z WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAARiTAAEVcwABES8 ABGSBAAEMTgABDikAAAABgAAAAHv//LY7//ziO//9Rjv//XI7//2UO//+oAAAADQAAAAJgAAAAAA AABJAAAACu//8jgAAAAEAAAABO//8jgAAAAGAAAAAQAJb7QACb/IAAlKaAAJtqwABFYAAAREvAAA AAYAAAAB7//xQO//8dDv//Jo7//zGO//84jv//UYAAAABe//8jjv/+9gAAAABgAAAAEAAAAAAAAA AO//7vgAAuqAAAAAAAAAAAAAAAAGAAAAAQAJb7QACb/IAAlKaAAJtqwABFYAAAREvAAAAAYAAAAB 7//xQO//8dDv//Jo7//zGO//84jv//UYAAAA0AAAACUAAAAAAAAASgAAANzv//UIAAAABAAAAATv //UIAAAABgAAAAEACAq8AAAAAAARkjQABDE4AAQ4pAABAPgAAAAGAAAAAe//83jv//VA7//1yO// 9lDv//qA7//7CAAAAAXv//UI7//wqAAAAAhVVVVV7//wAAAEIrgtMC4yAAAAAAAAAAAAAAAAAAAA BgAAAAEACAq8ABHHcAARkjQABDE4AAQ4pAABAPgAAAAGAAAAAe//83jv//VA7//1yO//9lDv//qA 7//7CAAAANAAAAAlAAAAAAAAAEsAAADc7//0+AAAAAQAAAAE7//0+AAAAAYAAAABAAWrbAAAAAAA EcdwABGSNAAEMTgABDikAAAABgAAAAHv//KY7//zeO//9UDv//XI7//2UO//+oAAAAAF7//0+O// 7zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAWrbAAIC9AAEcdwABGS NAAEMTgABDikAAAABgAAAAHv//KY7//zeO//9UDv//XI7//2UO//+oAAAADQAAAAJQAAAAAAAABM AAAA6O//81gAAAAEAAAABO//81gAAAAGAAAAAQAF4qwAAAAAAAgL0AARx3AAEZI0AAQxOAAAAAYA AAAB7//xqO//8pjv//N47//1QO//9cjv//ZQAAAABe//81hVVVVV7//uKAAFeAjv/+4oAAV3sAAA ABQAAAAAAAAAAAAAAAAAAAAGAAAAAQAF4qwABau8AAgL0AARx3AAEZI0AAQxOAAAAAYAAAAB7//x qO//8pjv//N47//1QO//9cjv//ZQAAAA0AAAACUAAAAAAAAATQAAAOjv//IQAAAABAAAAATv//IQ AAAABgAAAAEABeS8AAAAAAAIC9AAEcdwABGSNAAEMTgAAAAGAAAAAe//8ajv//KY7//zeO//9UDv //XI7//2UAAAAAXv//IQVVVVVe//7igABXgI7//uKAAFd7AAAAAUAAAAAAAAAAAAAAAAAAAABgAA AAEABeS8AAWrvAAIC9AAEcdwABGSNAAEMTgAAAAGAAAAAe//8ajv//KY7//zeO//9UDv//XI7//2 UAAAANAAAAAlAAAAAAAAAE4AAAB27//0AAAAAAQAAAAE7//0AAAAAAYAAAABAAgXxAAAAAAAEch4 ABGSNAAEMTgABDikAAAABgAAAAHv//Jw7//0OO//9UDv//XI7//2UO//+oAAAAAF7//0AAAKCUAA AACZABbamO//9agAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAgXxAASgiAAEch4ABGSNAAE MTgABDikAAAABgAAAAHv//Jw7//0OO//9UDv//XI7//2UO//+oAAAADQAAAAJQAAAAAAAABPAAAA du//8/AAAAAEAAAABO//8/AAAAAGAAAAAQAFsfAAAAAAABKCIAARyHgAEZI0AAQxOAAAAAYAAAAB 7//xwO//8nDv//Q47//1QO//9cjv//ZQAAAABe//8/AAAAAAAAAAAO//9AAAAAAE7//xfO//8PT/ ////AAAAAAAAAAAAAAAGAAAAAQAFsfAACBkMABKCIAARyHgAEZI0AAQxOAAAAAYAAAAB7//xwO// 8nDv//Q47//1QO//9cjv//ZQAAAA0AAAACUAAAAAAAAAUAAAAHbv//IgAAAABAAAAATv//IgAAAA BgAAAAEAE6rsAAAAAAAIGQwAEoIgABHIeAARkjQAAAAGAAAAAe//8RDv//HA7//ycO//9Djv//VA 7//1yAAAAAXv//IgAAAAAAAAAADv//PwAAAABO//8Mzv//BEAAAAAAAAAAAAAAAAAAAABgAAAAEA E6rsAAWyPAAIGQwAEoIgABHIeAARkjQAAAAGAAAAAe//8RDv//HA7//ycO//9Djv//VA7//1yAAA ANAAAAAlAAAAAAAAAFEAAAB27//xmAAAAAQAAAAE7//xmAAAAAYAAAABAAXVhAAAAAAABbI8AAgZ DAASgiAAEch4AAAABgAAAAHv//Cg7//xEO//8cDv//Jw7//0OO//9UAAAAAF7//xmO//7dgAAADQ AAAAJQAAAAAAAABQAAAAAe//8iAAAAAAAAAAAAAAAAYAAAABAAXVhAATq6wABbI8AAgZDAASgiAA Ech4AAAABgAAAAHv//Cg7//xEO//8cDv//Jw7//0OO//9UAAAADQAAAAJQAAAAAAAABSAAAAdu// 8XAAAAAEAAAABO//8XAAAAAGAAAAAQATq8AAAAAAAAgZDAASgiAAEch4ABGSNAAAAAYAAAAB7//x EO//8cDv//Jw7//0OO//9UDv//XIAAAABe//8XAAAAAA7//uuAAC6oAAAAAE7//wzO//8EQAAAAA AAAAAAAAAAAAAAAGAAAAAQATq8AABbI8AAgZDAASgiAAEch4ABGSNAAAAAYAAAAB7//xEO//8cDv //Jw7//0OO//9UDv//XIAAAA0AAAACUAAAAAAAAAUwAAAHbv//IgAAAABAAAAATv//IgAAAABgAA AAEAE650AAAAAAAIGQwAEoIgABHIeAARkjQAAAAGAAAAAe//8RDv//HA7//ycO//9Djv//VA7//1 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 BPgAAAAAAAAAAAAAAAA= From benoit.sibaud@rd.francetelecom.fr Wed Jun 28 08:17:00 2000 From: benoit.sibaud@rd.francetelecom.fr (benoit.sibaud@rd.francetelecom.fr) Date: Wed, 28 Jun 2000 08:17:00 -0000 Subject: libstdc++/67: Uninitialized Memory Errors (UMR) with Purify [Short example] Message-ID: <20000628150940.18348.qmail@sourceware.cygnus.com> >Number: 67 >Category: libstdc++ >Synopsis: Uninitialized Memory Errors (UMR) with Purify [Short example] >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Jun 28 08:17:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: benoit.sibaud@rd.francetelecom.fr >Release: libstdc++ 2.90.8 >Organization: >Environment: SunOS XXXX 5.6 Generic_105181-17 sun4u sparc SUNW,Ultra-4 Reading specs from /opt/gnu/gcc-2.95.2/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/specs gcc version 2.95.2 19991024 (release) libstdc++ 2.90.8 (full recompilation of gcc) purify-4.5.1-solaris2 >Description: I've got many UMR with Purify. I suspect it's due to libstdc++ 2.90.8, so I send to you the Purify report. #include #include class Blah { public: void get(std::string & str) { std::getline(std::cin, str, '\n'); } }; >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="a.out.plog" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="a.out.plog" KioqKiAgUHVyaWZ5IGluc3RydW1lbnRlZCAuL2Eub3V0IChwaWQgMjM1OTEgYXQgV2VkIEp1biAy OCAxMzo1MDo1OSAyMDAwKQogICogUHVyaWZ5IDQuNS4xIFNvbGFyaXMgMiwgQ29weXJpZ2h0IChD KSAxOTkyLTE5OTkgUmF0aW9uYWwgU29mdHdhcmUgQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g CiAgKiBGb3IgY29udGFjdCBpbmZvcm1hdGlvbiB0eXBlOiAicHVyaWZ5IC1oZWxwIgogICogRm9y IFRUWSBvdXRwdXQsIHVzZSB0aGUgb3B0aW9uICItd2luZG93cz1ubyIKICAqIENvbW1hbmQtbGlu ZTogLi9hLm91dCAKICAqIE9wdGlvbnMgc2V0dGluZ3M6IC1jYWNoZS1kaXI9L3RtcC9wdXJpZnkg LWcrKz15ZXMgLXB1cmlmeSBcCiAgICAtcHVyaWZ5LWhvbWU9L29wdC9wdXJpZnkvcHVyaWZ5LTQu NS4xLXNvbGFyaXMyIAoKKioqKiAgUHVyaWZ5IGluc3RydW1lbnRlZCAuL2Eub3V0IChwaWQgMjM1 OTEpICAqKioqClVNUjogVW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZDoKICAqIFRoaXMgaXMgb2Nj dXJyaW5nIHdoaWxlIGluOgoJZ2V0bGluZV9fSDNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pR MjNzdGR0OWFsbG9jYXRvcjFaY18zc3RkUlEyM3N0ZHQxM2Jhc2ljX2lzdHJlYW0yWlgwMVpYMTFS UTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pYMDFaWDExWlgyMVgwMV9SUTIzc3RkdDEzYmFzaWNfaXN0 cmVhbTJaWDAxWlgxMSBbYmFzaWNfc3RyaW5nLmg6Njc2XQoJZ2V0bGluZV9fSDNaY1pRMjNzdGR0 MTFjaGFyX3RyYWl0czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY18zc3RkUlEyM3N0ZHQxM2Jhc2lj X2lzdHJlYW0yWlgwMVpYMTFSUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pYMDFaWDExWlgyMV9SUTIz c3RkdDEzYmFzaWNfaXN0cmVhbTJaWDAxWlgxMSBbaXN0cmVhbS50Y2M6MTE5Nl0KCW1haW4gICAg ICAgICAgIFtjY3ptcnhpYy5vXQoJX3N0YXJ0ICAgICAgICAgW2NydDEub10KICAqIFJlYWRpbmcg NCBieXRlcyBmcm9tIDB4ZWZmZmY5MjAgb24gdGhlIHN0YWNrLgogICogQWRkcmVzcyAweGVmZmZm OTIwIGlzICAgICAgMzE2IGJ5dGVzIHBhc3Qgc3RhcnQgb2YgbG9jYWwgdmFyaWFibGUgIl9fY2Vy YiIgaW4gZnVuY3Rpb24gZ2V0bGluZV9fSDNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0czFaY1pRMjNz dGR0OWFsbG9jYXRvcjFaY18zc3RkUlEyM3N0ZHQxM2Jhc2ljX2lzdHJlYW0yWlgwMVpYMTFSUTIz c3RkdDEyYmFzaWNfc3RyaW5nM1pYMDFaWDExWlgyMVgwMV9SUTIzc3RkdDEzYmFzaWNfaXN0cmVh bTJaWDAxWlgxMS4KCioqKiogIFB1cmlmeSBpbnN0cnVtZW50ZWQgLi9hLm91dCAocGlkIDIzNTkx KSAgKioqKgpDdXJyZW50IGZpbGUgZGVzY3JpcHRvcnMgaW4gdXNlOiA1CkZJVTogZmlsZSBkZXNj cmlwdG9yIDA6IDxzdGRpbj4KRklVOiBmaWxlIGRlc2NyaXB0b3IgMTogPHN0ZG91dD4KRklVOiBm aWxlIGRlc2NyaXB0b3IgMjogPHN0ZGVycj4KRklVOiBmaWxlIGRlc2NyaXB0b3IgMjY6IDxyZXNl cnZlZCBmb3IgUHVyaWZ5IGludGVybmFsIHVzZT4KRklVOiBmaWxlIGRlc2NyaXB0b3IgMjc6IDxy ZXNlcnZlZCBmb3IgUHVyaWZ5IGludGVybmFsIHVzZT4KCioqKiogIFB1cmlmeSBpbnN0cnVtZW50 ZWQgLi9hLm91dCAocGlkIDIzNTkxKSAgKioqKgpQdXJpZnk6IFNlYXJjaGluZyBmb3IgYWxsIG1l bW9yeSBsZWFrcy4uLgoKTWVtb3J5IGxlYWtlZDogMCBieXRlcyAoMCUpOyBwb3RlbnRpYWxseSBs ZWFrZWQ6IDYzIGJ5dGVzICgxMyUpCgpQTEs6IDE4IGJ5dGVzIHBvdGVudGlhbGx5IGxlYWtlZCBh dCAweDE0MDRlOAogICogVGhpcyBtZW1vcnkgd2FzIGFsbG9jYXRlZCBmcm9tOgoJbWFsbG9jICAg ICAgICAgW3J0bGliLm9dCglzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8 Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+OjpfUmVwOjpfU19jcmVhdGUodW5zaWduZWQgaW50 LGNvbnN0IHN0ZDo6YWxsb2NhdG9yPGNoYXI+JikgW3N0bF9hbGxvYy5oOjEyOF0KCV9TX2NvbnN0 cnVjdF9fSDFaUENjX1EyM3N0ZHQxMmJhc2ljX3N0cmluZzNaY1pRMjNzdGR0MTFjaGFyX3RyYWl0 czFaY1pRMjNzdGR0OWFsbG9jYXRvcjFaY1gwMFgwMFJDUTIzc3RkdDlhbGxvY2F0b3IxWmNHUTIz c3RkMjBmb3J3YXJkX2l0ZXJhdG9yX3RhZ19QYyBbc3RyaW5nLnRjYzoxMzFdCglzdGQ6OmJhc2lj X3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxvY2F0b3I8Y2hhcj4+ OjpzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sc3RkOjphbGxv Y2F0b3I8Y2hhcj4+KGNvbnN0IGNoYXIqLGNvbnN0IHN0ZDo6YWxsb2NhdG9yPGNoYXI+JikgW2Jh c2ljX3N0cmluZy5oOjY5N10KCXN0ZDo6bG9jYWxlOjpjbGFzc2ljKCkgW2xvY2FsZV9mYWNldHMu aDoxMjUxXQoJc3RkOjpiYXNpY19maWxlYnVmPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPj46 OnN0ZDo6YmFzaWNfZmlsZWJ1ZjxjaGFyLHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4+KCkgW2xvY2Fs ZWZ3ZC5oOjMwMl0KClBMSzogMTcgYnl0ZXMgcG90ZW50aWFsbHkgbGVha2VkIGF0IDB4MTQwNTUw CiAgKiBUaGlzIG1lbW9yeSB3YXMgYWxsb2NhdGVkIGZyb206CgltYWxsb2MgICAgICAgICBbcnRs aWIub10KCXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6 OmFsbG9jYXRvcjxjaGFyPj46Ol9SZXA6Ol9TX2NyZWF0ZSh1bnNpZ25lZCBpbnQsY29uc3Qgc3Rk OjphbGxvY2F0b3I8Y2hhcj4mKSBbc3RsX2FsbG9jLmg6MTI4XQoJX1NfY29uc3RydWN0X19IMVpQ Q2NfUTIzc3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0 ZHQ5YWxsb2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY0dRMjNzdGQyMGZvcndh cmRfaXRlcmF0b3JfdGFnX1BjIFtzdHJpbmcudGNjOjEzMV0KCXN0ZDo6YmFzaWNfc3RyaW5nPGNo YXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46OnN0ZDo6YmFz aWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFy Pj4oY29uc3QgY2hhciosY29uc3Qgc3RkOjphbGxvY2F0b3I8Y2hhcj4mKSBbYmFzaWNfc3RyaW5n Lmg6Njk3XQoJc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSBbbG9jYWxlX2ZhY2V0cy5oOjEyNTFdCglz dGQ6OmJhc2ljX2ZpbGVidWY8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+Pjo6c3RkOjpiYXNp Y19maWxlYnVmPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPj4oKSBbbG9jYWxlZndkLmg6MzAy XQoKUExLOiAxNCBieXRlcyBwb3RlbnRpYWxseSBsZWFrZWQgYXQgMHgxM2ZlYzAKICAqIFRoaXMg bWVtb3J5IHdhcyBhbGxvY2F0ZWQgZnJvbToKCW1hbGxvYyAgICAgICAgIFtydGxpYi5vXQoJc3Rk OjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9y PGNoYXI+Pjo6X1JlcDo6X1NfY3JlYXRlKHVuc2lnbmVkIGludCxjb25zdCBzdGQ6OmFsbG9jYXRv cjxjaGFyPiYpIFtzdGxfYWxsb2MuaDoxMjhdCglfU19jb25zdHJ1Y3RfX0gxWlBDY19RMjNzdGR0 MTJiYXNpY19zdHJpbmczWmNaUTIzc3RkdDExY2hhcl90cmFpdHMxWmNaUTIzc3RkdDlhbGxvY2F0 b3IxWmNYMDBYMDBSQ1EyM3N0ZHQ5YWxsb2NhdG9yMVpjR1EyM3N0ZDIwZm9yd2FyZF9pdGVyYXRv cl90YWdfUGMgW3N0cmluZy50Y2M6MTMxXQoJc3RkOjpiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNo YXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pjo6c3RkOjpiYXNpY19zdHJpbmc8 Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+Pihjb25zdCBj aGFyKixjb25zdCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiYpIFtiYXNpY19zdHJpbmcuaDo2OTddCglz dGQ6OmxvY2FsZTo6X0ltcGw6OnN0ZDo6bG9jYWxlOjpfSW1wbCh1bnNpZ25lZCBpbnQsdW5zaWdu ZWQgaW50KSBbbG9jYWxlLmNjOjYwXQoJc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSBbbG9jYWxlLmNj OjMyM10KClBMSzogMTQgYnl0ZXMgcG90ZW50aWFsbHkgbGVha2VkIGF0IDB4MTQwMGE4CiAgKiBU aGlzIG1lbW9yeSB3YXMgYWxsb2NhdGVkIGZyb206CgltYWxsb2MgICAgICAgICBbcnRsaWIub10K CXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9j YXRvcjxjaGFyPj46Ol9SZXA6Ol9TX2NyZWF0ZSh1bnNpZ25lZCBpbnQsY29uc3Qgc3RkOjphbGxv Y2F0b3I8Y2hhcj4mKSBbc3RsX2FsbG9jLmg6MTI4XQoJX1NfY29uc3RydWN0X19IMVpQQ2NfUTIz c3RkdDEyYmFzaWNfc3RyaW5nM1pjWlEyM3N0ZHQxMWNoYXJfdHJhaXRzMVpjWlEyM3N0ZHQ5YWxs b2NhdG9yMVpjWDAwWDAwUkNRMjNzdGR0OWFsbG9jYXRvcjFaY0dRMjNzdGQyMGZvcndhcmRfaXRl cmF0b3JfdGFnX1BjIFtzdHJpbmcudGNjOjEzMV0KCXN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsc3Rk OjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj46OnN0ZDo6YmFzaWNfc3Ry aW5nPGNoYXIsc3RkOjpjaGFyX3RyYWl0czxjaGFyPixzdGQ6OmFsbG9jYXRvcjxjaGFyPj4oY29u c3QgY2hhciosY29uc3Qgc3RkOjphbGxvY2F0b3I8Y2hhcj4mKSBbYmFzaWNfc3RyaW5nLmg6Njk3 XQoJc3RkOjpsb2NhbGU6Ol9JbXBsOjpzdGQ6OmxvY2FsZTo6X0ltcGwodW5zaWduZWQgaW50LHVu c2lnbmVkIGludCkgW2xvY2FsZS5jYzo2Nl0KCXN0ZDo6bG9jYWxlOjpjbGFzc2ljKCkgW2xvY2Fs ZS5jYzozMjNdCgpQdXJpZnkgSGVhcCBBbmFseXNpcyAoY29tYmluaW5nIHN1cHByZXNzZWQgYW5k IHVuc3VwcHJlc3NlZCBibG9ja3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja3MgICAg ICAgIEJ5dGVzCiAgICAgICAgICAgICAgTGVha2VkICAgICAgICAgIDAgICAgICAgICAgICAwCiAg UG90ZW50aWFsbHkgTGVha2VkICAgICAgICAgIDQgICAgICAgICAgIDYzCiAgICAgICAgICAgICAg SW4tVXNlICAgICAgICAgMTkgICAgICAgICAgNDIwCiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICAgIFRvdGFsIEFsbG9jYXRlZCAgICAgICAgIDIzICAgICAgICAg IDQ4MwoKKioqKiAgUHVyaWZ5IGluc3RydW1lbnRlZCAuL2Eub3V0IChwaWQgMjM1OTEpICAqKioq CiAgKiBQcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyBjb2RlIDAuCiAgKiAxIGFjY2VzcyBlcnJv ciwgMSB0b3RhbCBvY2N1cnJlbmNlLgogICogMCBieXRlcyBsZWFrZWQuCiAgKiA2MyBieXRlcyBw b3RlbnRpYWxseSBsZWFrZWQuCiAgKiBCYXNpYyBtZW1vcnkgdXNhZ2UgKGluY2x1ZGluZyBQdXJp Znkgb3ZlcmhlYWQpOgogICAgMTAxNTA4NCBjb2RlCiAgICAxNjQwNzIgZGF0YS9ic3MKICAgIDE2 Mzg4IGhlYXAgKHBlYWsgdXNlKQogICAgMTMyOCBzdGFjawogICogU2hhcmVkIGxpYnJhcnkgbWVt b3J5IHVzYWdlIChpbmNsdWRpbmcgUHVyaWZ5IG92ZXJoZWFkKToKICAgIDE0MDA5MyBsaWJtLnNv LjFfcHVyZV9wM19jMF80NTFfNTYgKHNoYXJlZCBjb2RlKQogICAgMTMzMiBsaWJtLnNvLjFfcHVy ZV9wM19jMF80NTFfNTYgKHByaXZhdGUgZGF0YSkKICAgIDk2MjMxNyBsaWJjLnNvLjFfcHVyZV9w M19jMF80NTFfNTYgKHNoYXJlZCBjb2RlKQogICAgMzA5NjAgbGliYy5zby4xX3B1cmVfcDNfYzBf NDUxXzU2IChwcml2YXRlIGRhdGEpCiAgICAyMDM2IGxpYmRsLnNvLjFfcHVyZV9wM19jMF80NTFf NTYgKHNoYXJlZCBjb2RlKQogICAgNCBsaWJkbC5zby4xX3B1cmVfcDNfYzBfNDUxXzU2IChwcml2 YXRlIGRhdGEpCiAgICAxMTc2NiBsaWJpbnRlcm5hbF9zdHVicy5zby4xIChzaGFyZWQgY29kZSkK ICAgIDgzMiBsaWJpbnRlcm5hbF9zdHVicy5zby4xIChwcml2YXRlIGRhdGEpCgo= From donnte@microsoft.com Fri Jun 30 17:47:00 2000 From: donnte@microsoft.com (donnte@microsoft.com) Date: Fri, 30 Jun 2000 17:47:00 -0000 Subject: libstdc++/68: Makefile non-portability Message-ID: <20000701004404.29264.qmail@sourceware.cygnus.com> >Number: 68 >Category: libstdc++ >Synopsis: Makefile non-portability >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jun 30 17:47:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: donnte@microsoft.com >Release: unknown-1.0 >Organization: >Environment: Interix >Description: I'm NOT quite sure that this qualifies as a bug because it does work with gmake. However, so far, it's the only thing I've run across in building the whole compiler and library suite that does: On roughly line 130 of math/Makefile.in you'll find libmath_la_LIBADD = \ @LIBMATHOBJS@ \ $(EXTRA_LONG_DOUBLE_$(USE_COMPLEX_LONG_DOUBLE)) At least the openbsd make I use normally use doesn't support nested $(), and from reading POSIX.2, this (quite arguably... the standard is fuzzy) is not standard. (POSIX, P673, L467). (The unanswered question is are macros evaluated inside-outward or left to right; if the latter it's illegal, if the former, it's legal, and the standard doesn't make it clear.) Anyway... is this something that should be fixed in the name of portability? Donn Terry Speaking only for myself. >How-To-Repeat: Use the appropriate make, configure, and make. >Fix: >Release-Note: >Audit-Trail: >Unformatted: From donnte@microsoft.com Fri Jun 30 17:57:00 2000 From: donnte@microsoft.com (donnte@microsoft.com) Date: Fri, 30 Jun 2000 17:57:00 -0000 Subject: libstdc++/69: configure non-portability (-ffunction-sections) Message-ID: <20000701004815.31259.qmail@sourceware.cygnus.com> >Number: 69 >Category: libstdc++ >Synopsis: configure non-portability (-ffunction-sections) >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jun 30 17:57:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: donnte@microsoft.com >Release: unknown-1.0 >Organization: >Environment: Interix >Description: configure wrongly concludes that -ffunction-sections is supported when it is not. Mostly, this is beningn because in most places, it's only a warning anyway. However, in building one file, -Werror is set, and the warning that -ffunction-sections is set becomes an error. -Werror needs to be set in acinclude.m4, line 230, where CXXFLAGS is set to -ffunction-sections... >How-To-Repeat: Use a version of gcc that doesn't support -ffunction-sections. >Fix: Add -Werror to set of CXXFLAGS at line 230. >Release-Note: >Audit-Trail: >Unformatted: From brendan@zen.org Mon Jul 3 04:57:00 2000 From: brendan@zen.org (brendan@zen.org) Date: Mon, 03 Jul 2000 04:57:00 -0000 Subject: libstdc++/70: missing parens in bits/std_complex.h (operator==) Message-ID: <20000703115155.14459.qmail@sourceware.cygnus.com> >Number: 70 >Category: libstdc++ >Synopsis: missing parens in bits/std_complex.h (operator==) >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jul 03 04:57:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: brendan@zen.org >Release: CVS tree >Organization: >Environment: n/a >Description: In std_complex.h it defines an operator== to try to call __x.imag(), but it's missing the parentheses for it. The line is operator==(const complex<_Tp>& __x, const complex<_Tp>& __y) { return __x.real() == __y.real() && __x.imag == __y.imag(); } where it needs to be operator==(const complex<_Tp>& __x, const complex<_Tp>& __y) { return __x.real() == __y.real() && __x.imag() == __y.imag(); } >How-To-Repeat: >Fix: Patch attached, change __x.imag to __x.imag(). >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="diffs-complex-imag" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diffs-complex-imag" MjAwMC0wNi0yOSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AemVuLm9yZz4KCgkqIGJpdHMvc3Rk X2NvbXBsZXguaCAob3BlcmF0b3I9PSk6IEZpeCBjYWxsIG9mIF9feC5pbWFnKCkgdG8gaGF2ZQoJ aXRzIHBhcmVudGhlc2VzLgoKSW5kZXg6IGJpdHMvc3RkX2NvbXBsZXguaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL2djYy9lZ2NzL2xpYnN0ZGMrKy12My9iaXRzL3N0ZF9jb21wbGV4Lmgsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1wIC1yMS4xIHN0ZF9jb21wbGV4LmgKLS0t IHN0ZF9jb21wbGV4LmgJMjAwMC8wNC8yMSAyMDozMzoyOAkxLjEKKysrIHN0ZF9jb21wbGV4LmgJ MjAwMC8wNy8wMyAxMTo0ODoyMQpAQCAtODg4LDcgKzg4OCw3IEBAIG5hbWVzcGFjZSBzdGQKICAg ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgaW5saW5lIGJvb2wKICAgICBvcGVyYXRvcj09 KGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBjb25zdCBjb21wbGV4PF9UcD4mIF9feSkKLSAgICB7 IHJldHVybiBfX3gucmVhbCgpID09IF9feS5yZWFsKCkgJiYgX194LmltYWcgPT0gX195LmltYWco KTsgfQorICAgIHsgcmV0dXJuIF9feC5yZWFsKCkgPT0gX195LnJlYWwoKSAmJiBfX3guaW1hZygp ID09IF9feS5pbWFnKCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICBpbmxp bmUgYm9vbAo= From bkoz@redhat.com Mon Jul 3 18:17:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Mon, 03 Jul 2000 18:17:00 -0000 Subject: libstdc++/70: missing parens in bits/std_complex.h (operator==) Message-ID: <20000704011701.17307.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/70; it has been noted by GNATS. From: Benjamin Kosnik To: brendan@zen.org Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/70: missing parens in bits/std_complex.h (operator==) Date: Mon, 3 Jul 2000 18:10:53 -0700 (PDT) thanks brendan! This is now fixed, thanks. -benjamin From schimmel@dkrz.de Wed Jul 5 13:27:00 2000 From: schimmel@dkrz.de (schimmel@dkrz.de) Date: Wed, 05 Jul 2000 13:27:00 -0000 Subject: libstdc++/71: failed to build on x86-linux Message-ID: <20000705202006.8874.qmail@sourceware.cygnus.com> >Number: 71 >Category: libstdc++ >Synopsis: failed to build on x86-linux >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Jul 05 13:27:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Frank Schimmel >Release: egcs-20000626 >Organization: >Environment: i686-pc-linux, gcc 2.95.2, binutils 2.9.1 >Description: I tried building egcs-20000626 with gcc-2.95.2: configure --enable-languages=c,c++ --enable-haifa \ --with-cpu=i686 --enable-libstdcxx-v3 --enable-namespaces \ --enable-threads=posix --enable-shared File `libstdc++-v3/src/locale.cc' won't compile: In file included from /space/frank/egcs-20000626/libstdc++-v3/src/locale.cc:41: /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswspace_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:65: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswprint_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:73: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswcntrl_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:81: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswupper_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:89: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswlower_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:97: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswalpha_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:105: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswdigit_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:113: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswpunct_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:121: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswxdigit_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:129: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswalnum_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:137: warning: comparison of unsigned expression >= 0 is always true /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h: In function `int std::_S_iswgraph_helper (unsigned int)': /space/frank/egcs-20000626/libstdc++-v3/bits/std_cwctype.h:145: warning: comparison of unsigned expression >= 0 is always true Only warnings (not critical as far as I can tell), but `-Werror' makes it fail... >How-To-Repeat: >Fix: WERROR="" (Not *really* elegant...) >Release-Note: >Audit-Trail: >Unformatted: From kmb@eticomm.net Fri Jul 14 09:07:00 2000 From: kmb@eticomm.net (kmb@eticomm.net) Date: Fri, 14 Jul 2000 09:07:00 -0000 Subject: libstdc++/72: streambuf.h Message-ID: <20000714160617.31859.qmail@sourceware.cygnus.com> >Number: 72 >Category: libstdc++ >Synopsis: streambuf.h >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jul 14 09:07:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Kenneth M. Berry >Release: 2.95.3 >Organization: >Environment: 2.3.X or 2.4.X, glibc-2.1.91-2, K7/700Mhz AMD-751 VIA686A >Description: make[2]: Entering directory `/extra1/ALSA/alsa-conf' c++ -DHAVE_CONFIG_H -I. -I. -I. -I./newt -g -Wall -ftemplate-depth-20 -c Alloc.cc In file included from /usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/iostream.h:31, from /usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/iomanip.h:31, from Alloc.cc:23: /usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/streambuf.h: In method `struct _IO_FILE *& streambuf::xchain()': /usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/streambuf.h:295: type `_IO_FILE' is not a base type for type `_IO_FILE_plus' make[2]: *** [Alloc.o] Error 1 make[2]: Leaving directory `/extra1/ALSA/alsa-conf' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/extra1/ALSA/alsa-conf' make: *** [all-recursive-am] Error 2 [root@localhost alsa-conf]# gmake[3]: Entering directory `/extra2/MOZILLA_CVS/mozilla/xpcom/tools/registry' regxpcom.cpp c++ -o regxpcom.o -c -DOSTYPE=\"Linux2.4\" -DOJI -DUSE_NSREG -I../../../dist/include -I/usr/X11R6/include -fPIC -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wbad-function-cast -Wcast-align -Woverloaded-virtual -Wsynth -pedantic -Wno-long-long -pthread -DDEBUG -DDEBUG_root -DTRACING -g -DMOZILLA_CLIENT -include ../../../config-defs.h -Wp,-MD,.deps/regxpcom.pp regxpcom.cpp In file included from /usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/iostream.h:31, from regxpcom.cpp:24: /usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/streambuf.h: In method `struct _IO_FILE *& streambuf::xchain()': /usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/streambuf.h:295: type `_IO_FILE' is not a base type for type `_IO_FILE_plus' gmake[3]: *** [regxpcom.o] Error 1 gmake[3]: Leaving directory `/extra2/MOZILLA_CVS/mozilla/xpcom/tools/registry' gmake[2]: *** [install] Error 2 gmake[2]: Leaving directory `/extra2/MOZILLA_CVS/mozilla/xpcom/tools' gmake[1]: *** [install] Error 2 gmake[1]: Leaving directory `/extra2/MOZILLA_CVS/mozilla/xpcom' gmake: *** [install] Error 2 [root@localhost mozilla]# >How-To-Repeat: Compile mozilla cvs or alsa-conf cvs. >Fix: >Release-Note: >Audit-Trail: >Unformatted: From jfardo@laurelnetworks.com Fri Jul 14 11:17:00 2000 From: jfardo@laurelnetworks.com (jfardo@laurelnetworks.com) Date: Fri, 14 Jul 2000 11:17:00 -0000 Subject: libstdc++/73: libstdc++-v3 doesn't build for PowerPc cross compiler on x86 Message-ID: <20000714181208.8346.qmail@sourceware.cygnus.com> >Number: 73 >Category: libstdc++ >Synopsis: libstdc++-v3 doesn't build for PowerPc cross compiler on x86 >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jul 14 11:17:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: John Fardo >Release: gcc 2.95.2/libstdc++-2.90.8 (Also gcc 2.96 2000713) >Organization: >Environment: Build platform - i686 Linux 2.2.14-6.1.1 Target platform - PowerPC 750 >Description: The libstdc++-v3/gcc build fails for the PowerPC750 cross compiler on a x86 PC host. I have tried with both the most recent released version as well as the current CVS version. The build fails with the following error message: if [ x"-fPIC" != x ]; then \ /compilers/BUILD/gcc-obj/gcc/xgcc -B/compilers/BUILD/gcc-obj/gcc/ -B/compilers/ppc/7xx/powerpc-linux/bin/ -c -DHAVE_CONFIG_H -g -O2 -I. -I../../../gcc/libiberty/../include -W - Wall -Wtraditional -pedantic -fPIC ../../../gcc/libiberty/strerror.c -o pic/strerror.o; \ else true; fi ../../../gcc/libiberty/strerror.c:463: warning: static declaration for `sys_nerr ' follows non-static ../../../gcc/libiberty/strerror.c:464: conflicting types for `sys_errlist' /u/jfardo/work/compilers/opt/hardhat/devkit/ppc/7xx/powerpc-linux/sys-include/st dio.h:553: previous declaration of `sys_errlist' >How-To-Repeat: 1. Following the instructions in the installation instructions, I renamed libstdc++ to libstdc++-v2 and libio to libio-v2. 2. I linked the libstdc++-v3 source to the libstdc++ directory at the top of the gcc source tree. 3. I have binutils 2.9.5.0.22 built for the powerpc on the x86. 4. I created a directory called gcc-obj and ran the configure script from there : configure --host=i386-linux --target=powerpc-linux --program-prefix=powerpc-linux- --with-cpu=750 --with-gnu-as --with-gnu-ld --enable-threads=posix --enable-cross --enable-shared --enable-languages=c,c++ --disable-libgcc-rebuild --with-headers= --with-newlib 5. Run make. >Fix: >Release-Note: >Audit-Trail: >Unformatted: From bkoz@redhat.com Fri Jul 14 11:27:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Fri, 14 Jul 2000 11:27:00 -0000 Subject: libstdc++/73: libstdc++-v3 doesn't build for PowerPc cross compiler on x86 Message-ID: <20000714182701.10868.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/73; it has been noted by GNATS. From: Benjamin Kosnik To: jfardo@laurelnetworks.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/73: libstdc++-v3 doesn't build for PowerPc cross compiler on x86 Date: Fri, 14 Jul 2000 11:19:32 -0700 (PDT) note that the cross fails in the "libiberty" folder, which is different than the libstdc++ folder........this indicates a problem with either the compiler, newlib, or libibery versions being used. -benjamin From pjviitas@flash.lakeheadu.ca Sat Jul 15 14:37:00 2000 From: pjviitas@flash.lakeheadu.ca (pjviitas@flash.lakeheadu.ca) Date: Sat, 15 Jul 2000 14:37:00 -0000 Subject: libstdc++/74: gcc make bootstrap fails with: /bin/sh: -c: line 1: syntax error near unexpected token `(C' Message-ID: <20000715212942.13547.qmail@sourceware.cygnus.com> >Number: 74 >Category: libstdc++ >Synopsis: gcc make bootstrap fails with: /bin/sh: -c: line 1: syntax error near unexpected token `(C' >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Jul 15 14:37:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Peter Viitasaari >Release: 2.90.6 >Organization: >Environment: gcc version: 2.95.2 machine: i586-pc-linux-gnu directories used: gccsrcdir: /root/installs/gcc-2.95.2 libsrcdir: /root/installs/gcc- 2.95.2/libstdc++-2.90.6 gccbuilddir: /root/installs/objdir libbuilddir: none needed destdir: /usr >Description: gcc make bootstrap fails with: /bin/sh: -c: line 1: syntax error near unexpected token `(C' >How-To-Repeat: Starting in /root/installs/gcc-2.95.2 do this: mv libstdc++ libstdc++-v2 mv libio libio-v2 tar xzf ../libstdc++-2.90.6.tar.gz ln -s libstdc++-2.90.6 libstdc++ cd ../objdir ../gcc-2.95.2/configure --prefix=/usr make bootstrap Fails with script attached: (Reproduced with make check) >Fix: I am not too sure but it seems like some of the script variables are not being passed into the libstdc++ makefile. Is the libstdc++ have to be made before gcc is bootstapped? >Release-Note: >Audit-Trail: >Unformatted: From pjviitas@flash.lakeheadu.ca Sat Jul 15 14:37:00 2000 From: pjviitas@flash.lakeheadu.ca (pjviitas@flash.lakeheadu.ca) Date: Sat, 15 Jul 2000 14:37:00 -0000 Subject: libstdc++/75: gcc make bootstrap fails with: /bin/sh: -c: line 1: syntax error near unexpected token `(C' Message-ID: <20000715213004.13598.qmail@sourceware.cygnus.com> >Number: 75 >Category: libstdc++ >Synopsis: gcc make bootstrap fails with: /bin/sh: -c: line 1: syntax error near unexpected token `(C' >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Jul 15 14:37:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Peter Viitasaari >Release: 2.90.6 >Organization: >Environment: gcc version: 2.95.2 machine: i586-pc-linux-gnu directories used: gccsrcdir: /root/installs/gcc-2.95.2 libsrcdir: /root/installs/gcc- 2.95.2/libstdc++-2.90.6 gccbuilddir: /root/installs/objdir libbuilddir: none needed destdir: /usr >Description: gcc make bootstrap fails with: /bin/sh: -c: line 1: syntax error near unexpected token `(C' >How-To-Repeat: Starting in /root/installs/gcc-2.95.2 do this: mv libstdc++ libstdc++-v2 mv libio libio-v2 tar xzf ../libstdc++-2.90.6.tar.gz ln -s libstdc++-2.90.6 libstdc++ cd ../objdir ../gcc-2.95.2/configure --prefix=/usr make bootstrap Fails with script attached: (Reproduced with make check) >Fix: I am not too sure but it seems like some of the script variables are not being passed into the libstdc++ makefile. Is the libstdc++ have to be made before gcc is bootstapped? >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/plain; name="Typescri" Content-Disposition: inline; filename="Typescri" Script started on Sat Jul 15 16:44:08 2000 [root@pjviitas objdir]# make check make[1]: Entering directory `/root/installs/objdir/etc' make[1]: Nothing to be done for `check'. make[1]: Leaving directory `/root/installs/objdir/etc' make[1]: Entering directory `/root/installs/objdir/libiberty' make[2]: Entering directory `/root/installs/objdir/libiberty/testsuite' /bin/sh ../../../gcc-2.95.2/libiberty/testsuite/regress-demangle ../../../gcc-2.95.2/libiberty/testsuite/demangle-expected All 616 tests passed make[2]: Leaving directory `/root/installs/objdir/libiberty/testsuite' make[1]: Leaving directory `/root/installs/objdir/libiberty' make[1]: Entering directory `/root/installs/objdir/texinfo' make check-recursive make[2]: Entering directory `/root/installs/objdir/texinfo' Making check in intl make[3]: Entering directory `/root/installs/objdir/texinfo/intl' make[3]: Nothing to be done for `check'. make[3]: Leaving directory `/root/installs/objdir/texinfo/intl' Making check in lib make[3]: Entering directory `/root/installs/objdir/texinfo/lib' make make[4]: Entering directory `/root/installs/objdir/texinfo/lib' make[4]: Nothing to be done for `all'. make[4]: Leaving directory `/root/installs/objdir/texinfo/lib' make[3]: Leaving directory `/root/installs/objdir/texinfo/lib' Making check in makeinfo make[3]: Entering directory `/root/installs/objdir/texinfo/makeinfo' make make[4]: Entering directory `/root/installs/objdir/texinfo/makeinfo' make[4]: Nothing to be done for `all'. make[4]: Leaving directory `/root/installs/objdir/texinfo/makeinfo' make[3]: Leaving directory `/root/installs/objdir/texinfo/makeinfo' make[2]: Leaving directory `/root/installs/objdir/texinfo' make[1]: Leaving directory `/root/installs/objdir/texinfo' make[1]: Entering directory `/root/installs/objdir/libiberty' make[2]: Entering directory `/root/installs/objdir/libiberty/testsuite' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/root/installs/objdir/libiberty/testsuite' make[1]: Leaving directory `/root/installs/objdir/libiberty' make[1]: Entering directory `/root/installs/objdir/texinfo' make all-recursive make[2]: Entering directory `/root/installs/objdir/texinfo' Making all in intl make[3]: Entering directory `/root/installs/objdir/texinfo/intl' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/root/installs/objdir/texinfo/intl' Making all in lib make[3]: Entering directory `/root/installs/objdir/texinfo/lib' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/root/installs/objdir/texinfo/lib' Making all in makeinfo make[3]: Entering directory `/root/installs/objdir/texinfo/makeinfo' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/root/installs/objdir/texinfo/makeinfo' make[2]: Leaving directory `/root/installs/objdir/texinfo' make[1]: Leaving directory `/root/installs/objdir/texinfo' make[1]: Entering directory `/root/installs/objdir/gcc' (cd intl && make all) make[2]: Entering directory `/root/installs/objdir/gcc/intl' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/root/installs/objdir/gcc/intl' if [ -f libgcc2.ready ] ; then \ true; \ else \ touch libgcc2.ready; \ fi make[1]: Leaving directory `/root/installs/objdir/gcc' make[1]: Entering directory `/root/installs/objdir/i586-pc-linux-gnu/libiberty' make[2]: Entering directory `/root/installs/objdir/i586-pc-linux-gnu/libiberty/testsuite' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/root/installs/objdir/i586-pc-linux-gnu/libiberty/testsuite' make[2]: Entering directory `/root/installs/objdir/i586-pc-linux-gnu/libiberty' if [ -z "" ]; then \ true; \ else \ rootpre=`pwd`/; export rootpre; \ srcrootpre=`cd ../../../gcc-2.95.2/libiberty; pwd`/; export srcrootpre; \ lib=`echo ${rootpre} | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \ compiler="/root/installs/objdir/gcc/xgcc -B/root/installs/objdir/gcc/ -B/usr/i586-pc-linux-gnu/bin/"; \ for i in `${compiler} --print-multi-lib 2>/dev/null`; do \ dir=`echo $i | sed -e 's/;.*$//'`; \ if [ "${dir}" = "." ]; then \ true; \ else \ if [ -d ../${dir}/${lib} ]; then \ flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ if (cd ../${dir}/${lib}; make "AR=ar" "AR_FLAGS=rc" "CC=/root/installs/objdir/gcc/xgcc -B/root/installs/objdir/gcc/ -B/usr/i586-pc-linux-gnu/bin/" "CFLAGS=-g -O2" "LIBCFLAGS=-g -O2" "EXTRA_OFILES=" "HDEFINES=" "INSTALL=/bin/sh /root/installs/gcc-2.95.2/install-sh -c" "INSTALL_DATA=/bin/sh /root/installs/gcc-2.95.2/install-sh -c -m 644" "INSTALL_PROGRAM=/bin/sh /root/installs/gcc-2.95.2/install-sh -c " "LDFLAGS=" "LOADLIBES=" "RANLIB=ranlib" "SHELL=/bin/sh" "prefix=/usr" "exec_prefix=/usr" "libdir=/usr/lib" "libsubdir=/usr/lib/gcc-lib/i586-pc-linux-gnu/2.95.2" "tooldir=/usr/i586-pc-linux-gnu" \ CFLAGS="-g -O2 ${flags}" \ CXXFLAGS="-g -O2 -fvtable-thunks -D_GNU_SOURCE ${flags}" \ LIBCFLAGS="-g -O2 ${flags}" \ LIBCXXFLAGS="-g -O2 -fvtable-thunks -D_GNU_SOURCE -fno-implicit-templates ${flags}" \ LDFLAGS=" ${flags}" \ all); then \ true; \ else \ exit 1; \ fi; \ else true; \ fi; \ fi; \ done; \ fi make[2]: Leaving directory `/root/installs/objdir/i586-pc-linux-gnu/libiberty' make[1]: Leaving directory `/root/installs/objdir/i586-pc-linux-gnu/libiberty' make[1]: Entering directory `/root/installs/objdir/i586-pc-linux-gnu/libstdc++' make all-recursive make[2]: Entering directory `/root/installs/objdir/i586-pc-linux-gnu/libstdc++' Making all in math make[3]: Entering directory `/root/installs/objdir/i586-pc-linux-gnu/libstdc++/math' /bin/sh ../libtool --mode=compile (CC_FOR_TARGET) -DHAVE_CONFIG_H -I. -I../../../../gcc-2.95.2/libstdc++/math -I.. (CFLAGS_FOR_TARGET) -c ../../../../gcc-2.95.2/libstdc++/math/signbit.c /bin/sh: -c: line 1: syntax error near unexpected token `(C' /bin/sh: -c: line 1: `/bin/sh ../libtool --mode=compile (CC_FOR_TARGET) -DHAVE_CONFIG_H -I. -I../../../../gcc-2.95.2/libstdc++/math -I.. (CFLAGS_FOR_TARGET) -c ../../../../gcc-2.95.2/libstdc++/math/signbit.c' make[3]: *** [signbit.lo] Error 2 make[3]: Leaving directory `/root/installs/objdir/i586-pc-linux-gnu/libstdc++/math' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/root/installs/objdir/i586-pc-linux-gnu/libstdc++' make[1]: *** [all-recursive-am] Error 2 make[1]: Leaving directory `/root/installs/objdir/i586-pc-linux-gnu/libstdc++' make: *** [all-target-libstdc++] Error 2 [root@pjviitas objdir]# exit Script done on Sat Jul 15 16:44:45 2000 From pedwards@disaster.jaj.com Mon Jul 17 09:37:00 2000 From: pedwards@disaster.jaj.com (Phil Edwards) Date: Mon, 17 Jul 2000 09:37:00 -0000 Subject: libstdc++/68: Makefile non-portability Message-ID: <20000717163701.30580.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/68; it has been noted by GNATS. From: Phil Edwards To: donnte@microsoft.com Cc: libstdc++-gnats@sources.redhat.com Subject: Re: libstdc++/68: Makefile non-portability Date: Mon, 17 Jul 2000 12:32:26 -0400 > I'm NOT quite sure that this qualifies as a bug because > it does work with gmake. Well, hmmmm. On one hand, we do list gmake as a required tool to build the library. On the other hand, automake is supposed to generate super-portable Makefiles that don't require gmake. Putting gmake-only code in the automake input file defeats the purpose. On the gripping hand, gmake is absolutely required in building GCC itself, and the library is being designed to be built as part of that process. So we've assumed that gmake will always be available. As soon as we get Solaris builds working again (those are the machines I have access to at the moment that also have spare diskspace), I will play with changing the syntax and report on this note. > $(EXTRA_LONG_DOUBLE_$(USE_COMPLEX_LONG_DOUBLE)) > > At least the openbsd make I use normally use doesn't > support nested $(), and from reading POSIX.2, this (quite > arguably... the standard is fuzzy) is not standard. > (POSIX, P673, L467). (The unanswered question is > are macros evaluated inside-outward or left to right; > if the latter it's illegal, if the former, it's legal, > and the standard doesn't make it clear.) POSIX can be so fuzzy sometimes... I would argue that nested things should always be evaluated inside-outward rather than side-to-side, but as you say, it isn't mandated. Phil From pedwards@disaster.jaj.com Mon Jul 17 09:57:00 2000 From: pedwards@disaster.jaj.com (Phil Edwards) Date: Mon, 17 Jul 2000 09:57:00 -0000 Subject: libstdc++/68: Makefile non-portability Message-ID: <20000717165701.7502.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/68; it has been noted by GNATS. From: Phil Edwards To: bkoz@redhat.com Cc: libstdc++-gnats@sources.redhat.com Subject: Re: libstdc++/68: Makefile non-portability Date: Mon, 17 Jul 2000 12:48:39 -0400 > gmake is going to be required. It's important to my own sanity that I > don't have to worry about various make systems and limitations. At some Ah, okay. Keeping the maintainers sane is always a bonus. > point, the autoconf machinery will go in to enforce this. Perhaps sooner rather than later? Perhaps today or tomorrow; this should be easy. From bkoz@redhat.com Mon Jul 17 10:27:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Mon, 17 Jul 2000 10:27:00 -0000 Subject: libstdc++/68: Makefile non-portability Message-ID: <20000717172700.14557.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/68; it has been noted by GNATS. From: Benjamin Kosnik To: Phil Edwards Cc: libstdc++-gnats@sources.redhat.com Subject: Re: libstdc++/68: Makefile non-portability Date: Mon, 17 Jul 2000 10:18:35 -0700 (PDT) awesome, you're the best. > > point, the autoconf machinery will go in to enforce this. Perhaps sooner rather than later? > > Perhaps today or tomorrow; this should be easy. if you get around to it, can you please emit info at the end of configure that says something like: "please make sure you read the install information here: and the configure information here: before preceeding with make" I hope this might increase the number of people who actually read the docs. From thomasdr@us.ibm.com Mon Jul 17 13:37:00 2000 From: thomasdr@us.ibm.com (thomasdr@us.ibm.com) Date: Mon, 17 Jul 2000 13:37:00 -0000 Subject: libstdc++/76: Segmentation fault on AIX on multi-threaded "Hello World" Message-ID: <20000717203528.1613.qmail@sourceware.cygnus.com> >Number: 76 >Category: libstdc++ >Synopsis: Segmentation fault on AIX on multi-threaded "Hello World" >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jul 17 13:37:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Dave Thomas >Release: unknown-1.0 >Organization: >Environment: AIX >Description: We get segmentation faults on AIX whenever multiple threads try to write to cout at the same time. We reduced the problem to a two thread application. Each application does a : cout << "Hello World" << endl; The application will eventually generate a segmentation fault. Running the test program under a debugger revealed that one of the thread is always in the C "write" runtime function. We noticed that the source file that our debugger wants to bring up for the line of code of "write" generating the segmentation fault is NOT source shipped with gcc, but appears to be the "native" AIX C runtime, probably shipped with xlC. 1) Is this a known problem? If so, is there a planned fix date? 2) Is it normal for the gcc C++ runtime to use the C xlC runtime library? >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name=" " Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=" " From bkoz@redhat.com Mon Jul 17 15:57:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Mon, 17 Jul 2000 15:57:00 -0000 Subject: libstdc++/76: Segmentation fault on AIX on multi-threaded "Hello World" Message-ID: <20000717225701.29672.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/76; it has been noted by GNATS. From: Benjamin Kosnik To: thomasdr@us.ibm.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/76: Segmentation fault on AIX on multi-threaded "Hello World" Date: Mon, 17 Jul 2000 15:52:54 -0700 (PDT) this bug reporting system is for libstdc++-v3, not libstdc++-v2, as you reported. At this time, libstdc++-v3 on AIX is not supported. -benamin > >Number: 76 > >Category: libstdc++ > >Synopsis: Segmentation fault on AIX on multi-threaded "Hello World" > >Confidential: no > >Severity: serious > >Priority: medium > >Responsible: unassigned > >State: open > >Class: sw-bug > >Submitter-Id: net > >Arrival-Date: Mon Jul 17 13:37:00 PDT 2000 > >Closed-Date: > >Last-Modified: > >Originator: Dave Thomas > >Release: unknown-1.0 > >Organization: > >Environment: > AIX > >Description: > We get segmentation faults on AIX whenever multiple > threads try to write to cout at the same time. > > We reduced the problem to a two thread application. > Each application does a : > > cout << "Hello World" << endl; > > The application will eventually generate a segmentation fault. > > Running the test program under a debugger revealed that one > of the thread is always in the C "write" runtime function. > We noticed that the source file that our debugger wants to > bring up for the line of code of "write" generating the > segmentation fault is NOT source shipped with gcc, but > appears to be the "native" AIX C runtime, probably shipped > with xlC. > > 1) Is this a known problem? If so, is there a planned fix > date? > > 2) Is it normal for the gcc C++ runtime to use the C > xlC runtime library? From Darya.Akbari@t-online.de Sat Jul 22 05:47:00 2000 From: Darya.Akbari@t-online.de (Darya.Akbari@t-online.de) Date: Sat, 22 Jul 2000 05:47:00 -0000 Subject: libstdc++/77: Internal compiler error 980711 Message-ID: <20000722124333.27622.qmail@sourceware.cygnus.com> >Number: 77 >Category: libstdc++ >Synopsis: Internal compiler error 980711 >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Jul 22 05:47:03 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Darya Said-Akbari >Release: unknown-1.0 >Organization: >Environment: SuSE Linux 6.2, gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) >Description: When I try to compile some of the new C++ Standard library stuff from Nicolai Josuttis ( The C++ Standard Library, Addison Wesley) following scenario happens: akbari@sokrates:~/c++/josuttis/The_C++_Standard_Library/io > make g++ -c -pipe -Wall -W -O2 -DNO_DEBUG -I/usr/include -I/usr/include/g++ -I/usr/include/sys -I/usr/include/CC -o ignore1.o ignore1.cpp In file included from ignore1.cpp:12: ignore.hpp:11: istream: Datei oder Verzeichnis nicht gefunden In file included from ignore1.cpp:12: ignore.hpp:16: Internal compiler error 980711. ignore.hpp:16: Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'. ignore.hpp:16: See for details. make: *** [ignore1.o] Error 1 >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="josuttis_io.tgz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="josuttis_io.tgz" H4sIADGZeTkAA+w9TY8kR1Y9ayNQi5VPgIQ4xBRST/Z3fXbZ/bUypscYbM9iz66Rdq3ZrMyo7vRU ZdbmR3/Y28BqbKHWaCQkfgFH7ghx4GCk1XoPHBCnPXAwEosseQUcrJUlLJv3Xnxk5Ed39Ximqseu jEN3VmTEixcvIt9HvIgXXrA+N+nE2vVup8PmGGPdjS79b7Tb9F+mOrxptDZajWan0YK39WarMcc6 E8cMUhLFdsjYnH23Z4feReV4GE0DoekmL1h37Lix5oxGE2ujUa9vyPEuG/9mo4njX29vbDTqG1CA NRob3focq08MIyPN+PivL7HbB5z1g8EgOPL8feYELmf82B6OBpx5EYvtu9xn/TAYshgK9oLg7jxb YjWs9cLyMns9tn3XDl32stcL7fCErbLn2e0kDkLPHjB4x17jfR5y3+E1rNg7Ya96TjCwPfbKGvvj IEri2ItW2POu60WBv/oGjwb8ZIU1nnvuOSiPVawXFtkLwegk9PYP4rLaVHgNi36bh0MvirzAZ3EA fRkBJBi5FTYMXK8PPyI+EFhBa3Ho9ZKYQ78ARBT04yM75AgFfu6Hth9zl43C4NBz4YEKORoLP4g9 hzN7NOJ2GDHPZzYAhvcejwiT2yZQhKgh1WwoH9XYkRcfBEkMxB6FPIpYEDIPqO5xF+tDNUQBUEZs sSy0yRzo+ZABAOidF0MDiRfbPW/gxScwhiGUPWGjJBwFEUcs1ufX19kBt10esr434BEVwif20vqt +d/3fGeQwHhv94EY3B7uGlleoPKSCCeGbw95NLKh01Hsbs3Pw8yhFqHbBJDes5EdRdBHG2k1HALq qwPPBzqF+8mQ+3GEXVtlwYj7K0ARz4+hHBAa3oiOOgNAnQAS+lhgaAN1LXwCKM4Kcw7scAmfD7/3 5uL8O/PIQzzZAaoJyGEedF0heB4ukLAIAfd2GlvM28Y2ttjysrfI3hFwJCzEWSImE/5Yw2yLkPHe XNzK1DgKvVj0RXdSzMok1sWwM8zZ0r+PDrC4RaD3eWw5i4gHMxJWXxsl+Cqtdppp2BnApGQ86Pe8 mKjat70BPkc8Zm7CEQsO5Aj6q8UOUWUr1xVzWLKFId+SiJzOn85fNT+r0sMlIf+bVyn/G92NRl7+ d+utSv5PI1Xyv5L/GWFfohPMHwaeK6T1Tah6+wh7boFIi2IpjBEiyn8ljgviElSGzc2MkLZ0nVRc ZxUCmm99L4RWYm9owEEJyLa3hQQK3V7StwwgEed3kTw0W/m+5/swree1xMLX+1b94lYjDj/dSzUL kveySopuS+lMprpklyspLEZqj9dUlFTOjpKhmJwjoJH/A6oTtQHH8f9mayPH/5udVqfi/9NIFf// evP/y9tziotZil0p00TxLmGagBWBnQmAyL0BWRIA1EX2BcVtJ+bhvGHHOJ5fYsZoRugZhlDerKms iWmklP9PzgYYq/+38ut/Ff+fVqr4/+zxfyMP2LUNQ3VpmQCc2/OBSzOpyYMSDIPLFBzCAXi+WJMT ZaDIHfV+G3nNLoIIIpQNhhYu16MkXFVhDCCoBJBSIEDOccipxbfgXKAIBNGD/4sF6Ued1xBhWA/t geeaIo86x67vSORMubckQLMdtkSltiRsMAK8fZ8GFMCJ9Tn82GR3MsTABDo/VTcyBOSHl5yS/0c8 ntwS0Bj+32p3hP+v2ehsdJtt5P/tbrX+M5VU8f9Z4f/YXX9/N1XBsbzIjMrEhFms3FmUgVS6qDS0 fW+ULQec5gjESVrKAVEz8HrZUvzYi6HUOZ4nKnOEk87lQBFgjjDgkVimIqfLC4Kl3Q5uCiuElqpE XxeYsfBENQSXHVPSWORRsrDYklVTvBRg1qQdk4IvvD6df2iccwtsUkLodbagdIltzbkD2daiIc5o uBAEd78lPWjMuk7ZOUvt1VswBXtBGOMMhs9imJpsPAxxQazm2P6NuIAQ+36tptbLEAsqCnkZbxZm gqAcpLKMhn7vz166fefm8y+9/J3X9rQ9qEUx+dW0vYlTKr9AVscFsma9/Sz8X142e0SYISYkaTcZ oUiTsrWIjx69hIJFPGn4NpmsEsOsc+44dhQLvcHyFrOdAYRPWeo9i0TTNrDGIVYFfnEyf+kZmBt3 oYfoYS9fWZ3isKf4TGzUkfde4Ew1HakXO1FLVhrGD9RVy+lJJdT/gLAT3QA0zv4HzS9v/9e7lf0/ lVTpf7Oi/6X2f4kuo/grdiJSIyqYOrSkc4SgKrrExA/PN91iVz2zq3SZJPn/RDeAjOX/nVae/zfq jYr/TyNV/L/i/4/A/wHG7q549oPorjc6inQG6dmVQHiyE/D/PpjRDZDdB1e0/ttotwr8v9XdqPj/ NFLF/2eS/+Mes3mxKU/kLuA6jnBqAf+2sq/g/3CF3cTlNqDsAuvrbfcgSPwV5soFJiyH1f0tvYxE m0OEUyvo0wzyk6HhzsIqa96+H4S4jVxs4AMxwm6s38iAdC8C6XI/GHo+ARUrgWxHo2v5K66ELP1s WOXoIID53ZdlRK2Qx0noU5MzI68U/0dZPSkBMHb/X6O4/6M6/zWdVPH/Gef/QYH/b29L/h9k+b/w TJRIAeLRuOS/pnm7Rb4QYOIi32DQ6rDQLDLbJzBJ/t+8Qv2/2ewW9P92vVnx/2mkiv/PIP+PObRj x7j5YgA6MflOb68w8SMObYC8mxESPTvynDvSHtgWxWW5hfmi4XBR8UsbEwVNv2g4CFtDFl9CX7Z9 aHsDu6eOqeJZYwKCkgjpqIG5fBj43jDdVge0IiT62AewSUac3wUptrODdU33cdZiyWQLQ0X6lPEv H0TcqOqCWdLI+rUJa0M84kx5m4dBij+e2VXnd2HgX1q/hSMNmDMehiXYu4hzvYAxgMEtC1yadkG0 uSmhGp3ICOUCmvyQhyfwHQCX8NBJ7nOY4ICbwgHnkb/PiU9k7DNtZpVROrM5o2C3mVhUKsPjT0r+ X6X91+0Uzn/BUyX/p5Eq+T978t/YE/qoKkEwRiXQtuRFxYVKkN0gdq6xCRNWbI6Tu/xTQUk0inDL mZCP2TdI6WjEHZyVfY8PkKZufJARSTlMcWdsCb5MbrOP1nA69IexEGMqk8BmDhj3PfKq5ZGOHspm zp4gLoEmjfBojfb8bV1SZAL/F7rMBHeAjeP/G0X+325W/v+ppIr/zzD/r4lPHxW/WslhL9pKvVXc 7VUjk4oCGQBqAgZwGuDXUt9HKVHT+8LSjb7mngEvZWkSAtbMQylWo7IvwyvtczIxA6Tklm4v1/4l uxEfBdRw9CXwV1UvQPqRujAJk0fz/8kt/433/7cL/L/Vrtb/ppIq/j8z/L+o/g+8Ien1j3lB0GB3 l1wPNLahkfc/8WNvoI4EG3IgXXkTW85QdQbIoh/bwDl3NzeH9rG1uEJlQRXnvnXj+/4N8wxMqhPT iRk6FOw70Hvf1otUM7PUhPzf7yX9SR4AGef/qcOPHP+n+L8V/598qvj/zPD/Mv1ffPrn6v/wlnm9 LZZLuFsYQAHp1IpKJuKCEfFNhXPwrQWvt6jiHXi+F0Mt722ejSZBvYwP7FgBKpzsy8dA22nWCyc8 lePI58excUrUQlpL00KAX9RVdJSibNRTsdZCCBlwKKDqIIkO0voZDd7RajuVyoK0+wiD0xzSMGH6 005rMCDSPNaznbtonohYEOZqFxPeEw89Pc/m48NCXxIfe2P4dc7LPzV8VcUDPZOzOqr0pKRU/l+Z /dfuFPf/NVvV/u+ppEr+z4r8xzgbXrCbzaGQINkgISIoEhiFID452EC1F2osXQ8kyUoSuO+qKKdQ fEXs3kiGIqqFMByF/rAJCPUGniNkim6AYAJNYg7Szt1Uvh3Xjm0pnjdTBw4I4CGoLyvQxyQ0ZSTQ HSQnSUogs81GIHFLqkXeca5WELqej9OVOmToLakvCM/+Sz8Udk6UeR2Vlh3WqCtdJsIMtQ89RT7V XMTv76XV38zqUwDDrIdUIXppkhAKYeKkW1Wga4YKBbY7jH6+bSoFM8Ykj3qxs4uTBaZv4rs87MOX by1m92b4dGrL3EPC431mCfjL7RWFuQ6wiyQoNqVToSKRHaapl+4LKRTW+iIoItmytCEkP3lQrwQm DdOQH2VHW0UDTqlz6IVxAvwJ3t2JT0YGJZiVD/wP324GW+h0H9d7ESvotYD6rYxmtj+KyZ3HuHjK 62hyeWFJvC0P47+EHXSQMagpVk5fHGdgcfjx9UC1hHJG3xHxbFHgeOq7oK/JeLtu6MP0MX9bNJji l+bBNyA7uco4ZpjdQBIYRXdZO0+ADKD2eQSgI4nJCJld/sMHlnnoBUk0kF8wDrLZURxvRS8ZB84i DgH0ETGlcxAXSwlBPGvIhw4goma/1V5N0V9ckXQw8nKu7GKfc2aGtFbMSZsficwQAMkEG66vGB9W ymBW28WxYNu5TWGy7b3XXrv1GoqevVs3y6YoZJ93ywQILa7YInwcgKmJeIZh5En2CLwji/5l2Mgy iaVsvcy3m+sV9TtrPOY3yGU+3NP5062vrI2E+n8w2eufxq7/dTrd/P0PnXal/08lVfr/LOn/GGfv UUKCu0GCQb+PV9jJlsEzabuX70a5TUry4glhZQiFWDm5X0kGsQd9dcjlQvrzEQj5QQC/ARGSJmIP sXDEGz58xfWFFJdNZ6FnXmHAti294/g6xSRHN/xxNiT5klyKNDZVY1piqC1TJgPiRPY+pwHBeGUq MpoYHVEGzYYkKtUldNw0UVIEKcOuYI/Tuy40Eaj74+KmKTFtRE7LB04jaskbLUrJlX23WU6ukyeO XBLtx04vMXnVnCb04fuECZuh2rGIE4hXhERiu8aJyOE/BMNCZh0DQU5SJJ7ApVSQ/9ChyToAx+3/ aHUK8d/arSr+71RSJf9nRf6X+f/Up3+OA1C8ZsFlPIAy8GveAygbxdfWQlDqAswGbU99gFmICiFi sq0GKBfHoF043tAeqCCu2B5k4zMUqLxYl0kG/7+y+D/F+/+a7Xa74v/TSBX/nxX+b7h2jB2AgWMP +G6Jm0j6cKQIOMeJM1/uxHG4H4epTOgnvnn8E2aIvHIv45FJgJShY0ccx0qd310vX60PDtVivc5y TPMETRcH7+DYu3WzZNET7IZDdBQABNkkkFO3nyntsB3R5zigApazss9jIFsaVtsATENF0cnxW0n3 jOg9HMU4eibKkId1LIfOHZfgblow5sKsMGCKT7Ksc/5CZcr/j6/s/qdWMf7nRrPi/1NJFf+fFf5/ gf5/XBkAs5pM/n9F5/+brUZh//dGs1vx/2mkiv/PCv9/WP3/EmeCQDfG3DvilzjYs8t2pekgD9KX GRDilcYoeyToSTYqrgscQaj88I4qBSaBzg36YBd8TS2OTCcvbXuoWvDB3MGajrlrYh7p5/J+Zq7I axi1+rFVXupITL1ddqSKXTUv/SomLf8neAPE2PivxfO/7Wr/93RSJf9nRf6fb/81zzP/+q5pvTW0 7WZaanL/H8ogcswH4vY0l0dO6I0wBlCjMt2e3GTw/yuL/9rudgr8v1PFf5tKqvj/DPP/cptQW4Cl B4CEsZGeAKLzMRefAwIxcqEXqewokICvBE5OpOTPyKwXzsjoJgnRO313ERrvuxY9vaNPvRaPkIju BT7Pbf5+rC4oOhf0NlrPWwWLTNIXabvwNnwGiwij8bgdQZneDsVmTJ4/fyD7nK7lihGj4yjHEZiO vrquVox/dM7BB5nyIHCWGN2SKBJK2P1oRUwjgTAai3o2Sf0jO51Ubslk0rOBzMTs5EnByTmNMwVP P8HTSgaytQDZ6ez5Cm/6N5KW/60nZP9fty7i/1Xrv1NJlfyfYflfU59+5f6b1WTw/6uy/1pd0/8n +X+7sv+mkir+Pyv8vxj/YWywhy9h6z28pXeZQAtGnIUvE2PhkUMslAZXyBiJbIBDCKMy4LERbABx gZHLHSReIsRtPLVvw3+YONAxZVDmQjEIguZjMYzU0Wp9Atwyzn83FrMXZ2BcDV7sIIWnKulb1j/6 52UYnPiOZbZRNKQF8IxTkj6TXCAGmltY9A/kIf2MDS3mF0yDkThjP+rZEc9HGpCztKFIsSIsSzCb cxYmpvJj7epp1EuGQNpVfWJcH3NHTUSecWe241D4kP3BSd561Uf1U8rLBfJ+MhikpBc4O/Rt4/ir cAaFEAAT2gErI2Wk07csSIZKS4L6xfUKIhf6BUpImZkCOaCInDHo1nnOZxWf4CFGML/QoUYBZ+xB GPj6ayaOiutK6/hpeEbsT+Pb0EFdihO3ZGSokdwMfgw9XW1c0NH6I8YgAP2Prui+wvifjY2NVl7/ a7Yq/W8qqdL/ZkX/K1v/7z/k+f/U94uNGSZ46UYjZftDOTT/8eT0GjEbS+kn4g3eTYYr9XgnGeSA XolPKOrpopZzy0YHwRGWMmI7R0Ao54D1eHzEYdoq7JCEJrYGkgIsrSqIR7ma0Oh2xXlueRqezn3T gfKaI0uxsnLnwVttP3cpePlyKbyJLGQo/j/B7T9j/b+NZqPA/xvV+u9UUsX/K/6P938dBh6xyGxg ltt4laYM4q+N+CVtZyn7X98DbSz4SqYvIy3neZm5ViugS14uWXkhzjMaVmx52cvcFqkKvYWF3tre wcWC5eW38sp12qy39BbdscVulKnUOfTSwCFgRpwK+eIGPGKv3roNAwEk1gsKBUFZKk/JINAmbUd2 VYdheYPLLcwkL6BQ2gkSCHS3jCnG8pFxyocvI3elTzXb8G1cbT/CSXWgV+OD/nlomHJUoFSbmHSq 0qQTyn/ueiF34qs6/wnyv+D/3Wh1Kvk/jVTJ/0r+n2v/kVKg2IMl6y8sllmGWpikgczC4CgvoTQs LF6QQ3Tpm12oeZpDhGlMMncHBX1lmnog9Gqaq8XHcU3qH9pKtA951r2sIjhnL9RU+g42c0cW3BHX EEl5asakk9gFCYLV66mIjYInqzELMw1TWKg8uMcNyYB+BaAAjaeCYJBDwSotK5AuDZkXxRi0OBi4 pa76FDejs4jaqQRACk8ksHz+1T+k2SdJYsPXPkQnDnwCJ5UC8JVKKP+Prjj+a6Odl/+NTruy/6eS Kvlfyf+HWv8NRjgdUAr84Adymqy5dnzjBrWv4nOqY6kq8CtWkBtwYTJsZZaHhTii3bXpUkF6c1Tx nfixRphYNQOJmlw6htH4kXhC+srHOEx8fcFTYX2hXXaNVLoZXN9BSIgL+aluaK2tpRfeGkJXwhAm PU4OIpoTwLTyYzPA+4hWtfndfbw0XNvapKdArjrJq6Ol65rmvViYRIRUSwAU11kVNp7jUgAS1Cn1 2TqZleYshs4AJrqVj6NOuYzxoN/zxD26rG97A/ih3JKVPvBEJ5D/EXxqE9UAxvp/uxt5+7/RrOz/ qaRK/s+y/I+KWcC6Ix5fWiMIRHR3Jcqj1OI8z/dKYbplXRKf8EL5XDv4V7oFaKU58yIVS0pQBdFa JG7aydu7ODCF4OCEi+igUCTocbvR2WU9q9N99rnFLRMxqiwxaK9tSD+vqCSze8WWcWeWUBxo0AIn znWahP0Ihb3ZGJSTMOFJ9HlcXx+HbEX+nwwnawCOu/+vXS/Yf90q/t90UsX/Z5n/6ztB5lNG/8oJ jCTL3PeBVt3zvvttcR/Z68lQuoS9dEX49GGcoBJshJtlKSOGeWPsLib/KOGxuVloGy+k0FuPiUHa uOVHnkQlUw9NkCTkC+KSCdMI0pdKvLR+Cwjv8BH6SSXjpdJrRwd2bHJZVfWCmyMKWGjIF6Ggt0xN Ao+1tbXSRhP/rh8c+WmbtYdqQQk5YdVG0jmc3iSSDNVhrGSYWcE35qHec/BIc06u/WONtJtixoly qIuofAmTpPCKmHeYbdrp5BNwkhA4VUxnEui0gSYTaBL2vmG10zJDIMsN3D1VLlIOAl0zshbzrS3R KQFpKAulxHbxMT7Axfy0amq8457kV2/d3tvU1YCl2IMowNMAeKEfUHo16K9qd4OoZd5kl0FKbqFT wH6k9twhGnl8s1+n7IFYbVCrNBG79SeZEoQw3TyTal626zLsZKAnThmihCxxgHp2t7lc3yDfx+6u gFt2Lh4rL++I9+NPxpd/L7KTnjkDgOWLQxsuCrFSeqcdT70tY+eSUSs3/hfSiMLRiVGlqHNllMhN xMxExaUcwzF0IXaQCLXCOVCTXOuqAxfSfD5T/iHIVJjAud6UQCc2Zs61NEtvm5/x9Smh/09y9+f4 85+NZr2o/zcq/X8aqdL/K/2/0v8r/f/rof+P1fMv1lsvr7OainVeV72Mnlquo+Y0pDEanlAWlbGj Z31Bc8Nk1YzrGpFbFT+rxVrBJ1hpU1/7BPof+pHBiFwLJtXGxfpfu9Gh+B+N1kazU++2W+T/6zYr /W8a6S/2Xr557do1/fva3FNz14z3/8LE/zb9teYac2uZ+t85+8W9X1pvfPf1B6efnJ1++MHeJ5j7 wd6n4t9n+O8fkSucfXDvw6fi3377mXuffiP+tWdvxMsvwp8F/HP9xfu//u778e+++5/xb/3d3NwX c/E3733wNDzNfZH84t7/PPXii2enPz/7dJXA7H30YHTt3uefP/NXfws/3/vVM++ewf8ff/6X8Pfw +nc/+uyLL76495On33s/OdQ/Pr579qsH/3QDcXnwR79x9rN//uipB7/3Hr68/zeY+d6/Jb9z7z8+ /VNdfkuXv/+Ns3v4/+xfP154EC/MURF8kO8//u8Hf79AgMXvxvtne5+c7X167X/P9j77+Jt/ff/0 wzcU2PvJJ/ff/PmPP8Z+vH6AfwWGD55u3fvJb0KlB6e/PDv997P/+ynA7T/4B4SXb+/+K5/c3/ts 8Wfxf+1Qj5/5f/auBTqKKk3fqu4kndAxCYSHCkyIMIBImQ4hJAE1ndA8dohmEgQmGIuQNEljXiYd HjvEIYYATduKr5k9u7rq0Rl11l2ZXXUYFQ2DY2bQGSPLnkXGWfHI2QMGNYxZhJEh+//3/tVdddMd CD7O2XO2zqn667v3v999/fdZ1dWRRB9Gtc7uBMydXeRuN096WmAnT+q/hTYM5cP01doYQ4bRgTMx 41s0JL6ci8U3Jkp8PZ5TQvQLMfD1G8hxw0AeJwPZGTGQDLOBtEUMZP1uoxq/Bfs4FfD0o30M9CXt Lo8Yx6lhjaMfjaJq99D6ORX0DHyd9vD+yhPzhrMHis9qD33zKJsjtQdX98n3UOeMZG8p21r+Ojgo 4rg6nKeTleAoGgbpDxPfySxQPvnDv0ZNf8q2zMEo/MmDI+A/dgH4Z1nzI+cv5H179e164FTlAUEL /WXHqcNws3JFqOT98mAlmFtwTKDkSCC0AEL2FGag1puF6fY3C8dC+3ifN5NCuxAOIVIzuHCmcTEh nouJ6Ff3AnTe69Wy9Sy0D/lE3xP0HCHiYNcCntN0C95VmD41/pl4f1HdOG59E5ApnJvONxylMW/s 6xV+Z7Qf15kQ5uU6LIVQDlwDoSz0DpxOeW1/aZ0LmfPRuOtuwOi5olH8jsCBINfu6cKQPK9uO9gi W28L2kqD3HWwFxTLL56wSAoXdVwYTGAs5d5NaKiTre1Rrq/1qigyaM0vmTEQ9v17FPsN/TQDHIwq 3iDq9+2h9Xs4EMr72upX4fWbZ6rfw6G2w8Tds8guajZPquk8U00voZr2jLymreUXenQellaGUf84 KLOU1x5G1yArLTNYyo2+1gEdb5Kru88hyjfIjCT9Jmr/MPL6mCHXR9DjABBkB3jpMsbnN1kuLQuN cW1VjV5VX99UzcLT4DY/y2TVVY3T/eJlV+MPZ3BVl8nVCjL45JXx5VtBhllZLLNIN/w3N77GWubK rvc21vrrdL4GYy5XfVMt+BKap+s3w3K4Rg8vzEVaIf2YE2YcgGGyFSxxBNucwcrUYHt6/ml/VuBM /pf+a3el7bLl/brduUfpm2nUR15vuxNK+0oDu4vzT7cdcnXDNS7/y5SHu0PeASotM38l5y/h/J/7 JwD/OX/OrjG7lLxfb7kir3fLhGJ3/udtH4Pr5L3YKPumEP9eLNy+MeH+PP9ziGPaIO8JLRF9TUeU 8uk8Zeft7gy3RTC379E8dL2dW0vgABhzD3YrrC916PyEq/I2EbQFC+2DvaWitxHd3GBveMTu6vY/ 2vcdmOOZDwrf9zSVR7Dy7LBZFunFIm9zBE4H253BSTzYWLzOPJryfEr+wZYC5b1AMjoEjpy8GgrY PJ4Z8w8eQDkoZN8LRn3n/7nlukCv69AXZ4A75fn+QAIvFeXNwFyUJ7GrogHvdbxy3/0n7DDuTT0b si+BWWzXIf+UUNHQYXCMSGSAo2D7edEwn0Qk5lc/CJzuOLcV4Mbpu0PuhKGzqpSuG7Ao9zuE2oaj PXFGuYT5BFViGDxJvgqOH8zGrwF+PfkqjMchb7/Fynj5OqEz9pwvD7Y7oHrSwbVU0MEULNh2PtB2 tvOC4r8xtBiTCBMQ5dwraMWBgwEnT27IOb6zHSal2D8FkooDB8EBJilL8o+09feoPD2egZD3RDTz 5uPBVAXHg/LQvn5IYWAfzht6uvCeW1zXQPjuLN3trWRfdUK8732M6+xsztR1HIuGpsWohtPiDhae Fl9pnhY3RqbF1bu/hfkwL4kALwWYFfMy6Btv2G+Ql9bKEy9cELPkF1E5+ChmrqMP81Zeh1fLXJlT 4XS5Jcr8NcQJeCwwiz0mZoBXRrLyB2v6hpvPPhltfdN1nuqwDscZI/mPOHijCO1joF4qKkfY4Jue QfBxGuNbbL6+4+hs4rcrpB54E6lvt/8K3XvieTYfxhggfbvUnbbios6TSuv/CJ++SZb57TDxpUer P6n8SoeU342XXn7RxnvR8caLjneFqeMl2kj6TrrR2ZqelG3LwrP6sZFZ/bzItGW4+XwqOJ28I8p8 3tqeO09liP6660xbKoytV5j7T0g6LEEHurpTtlVh/Zc4aakbVIKb7TN7Au1nIVgiBEvYjdFgVp37 TyhTlZ2ez8AnBXySzeUdHyx1BG7FTnhSqPJ8yHN2/q1nN8YFjkDZYUxngyXnZ+4PlPRvbf+Mtc0H hmRgGBVpj/G7ClNdf5xf2d86OeU1WHweC8BIMLAyWHIsPO0uBt+Wj3HsQbqB4Phg4CEIWlrGFd0T B3sDnhNgoxiFPw+iMM/fovGXDHzftO9h8JecmF9y1p/Dwx8Khx83lC+dzxecamcBa1Od9p1F6aAT Dzp24I6nWXLffF5+4OMEtqRwfxGbzx7hC3kPB/ovazYC9V/+CjckPuawtrE8l9xs69bDRUwPAkeC leeRXcw/e7juGY9T8ceL+bQR87B8m2PxdXbbiWDY8DtGlp5EcJsE49njsICYCvcVYMDNcKJhf4wB 4N4L5z/DuQfObjh/B2cp6GdBuNm48IAR3AP3TTC/2grnB3CfBDIDzjY498HZDWcvnO/BuQfCLIYz DsKlwvk6nHugozoG51E4P4GzH85nYQX3Paj4ZjjXw9kO51ZjQv8tHYN0pBNWvHVCbnE47fadSj3c TyS/ayEf7iscXWpRctzCHcnu7Ve4O1PUHZpdXaMxv2ZfrTmrNLZWszdqbLlmX2bcq/eDiq6xO7nK 8mgqG0Dj57gLmwfnPXBmQVx/UiLxLd6R596ev7CzQK3S0u/SHKshwDLNoa7Q7F6NlWuOSo3v5/4W zlQo15AlbK57+7yFnXkYVl3CA7drjmYjHM87bRBD0HC4DLifQO6rTe7uHTb3dru7Eyd2qLOAdGpi 6CD/mij8M+B+E7n/xOS+sNO+UrOXacyrOT0aW6qR7T5FuhWKuR7s7u1x7s549QCq8fS8TXqtZs4d 8e7tCQs7HVBot4F7P+n8xmYup2Xu7SXuzpvVR6B0V0HFLdbsVZoT7uo0+yaNrdPsK3gFNoG/G/yX cOfbeTI3g9tCvpGO+SpVBf8hS1pHubc73Z3JkFZHnebcpDl42WzB9gl27zSlF23uIeLIMpdrpw2i g3oBtxfIf6LJvxRKAXHvMGExzn7yT5bidNiGj3OGLXqcbHFxcUHGjMU33zozw1tb3To7W8t3abm5 /DWOrDmunOuX+RrbNmXM4J4uzaVlZ7R46734qT/GtNbNDf6qtQx/DSFknXHn927yMw1U6Q4/3cq0 ta2tTGts8nvBq0k41Ta2afW+xjuaGqu9ml/T9VYAelsjvtynb6xqwd9Z6voSV0V5tb4qy6VvGBKk 3rvJV91U21LVXIffPdCrmxqaq1q8ECi7orS4vJpfMOzyrFUu1/JsfW2UWGORzNlYtTk2k09iqtF0 f3aOrtd411W11fvFdoZu/H1v9tosX5aml+vrWrxevd7X6h9B9qPnnkc4R9cbREzW+FwYm9WrqalB r6tqrKn3tgyNu5x7k/7wvLf6ROV+RYrLKTx8SOjnRXh54b2NNV8hdJ23qlnHD6BHK77qujaovHDm h2e71VcWsxAvg2goSYt3na++/lLCx0rGSBjk0CU6fylCN++06Xqx35Wtl/NdOB2/MZddUV3hz+eU Vf6mFjDz6Gm5fLahLb0V2tMc1HS5TH+Z7RoSVi+bR+9plWFE5h3EORXQGCugD6hYle2K6EVP+zcb o2zE+ga/Lu1vDk1VDL2oOlG2Q2MTRlMeUh7+dRdNYHQ1WUW7eE6jakWLyrIHHDNBVi1JA18TA6O8 5EK4pJIdRjdKRi+VMoZqbXU1Qd2PHyykwENcvXXQhUJg4R9BMGo2eBv97JKPq5mYwsYTLoTzOdNa IpXkFDgTTeGmFsAF5jTXU3icQ2KwWYRpusNOSesSO0kX6V9ML5eJuS8z6aWbsPF+xgK6Vw0PSOw/ RNFbyKz5fTzRym/kd6OktydRzOVlvZclvdQkMZ+X9XCDylwuW5NEWRtHBslixcrXnRQ9fW0S32+T ImXG4yP5usTXmyTWDDLfBUWqX1hCr2KifpNZpH7dqjXeulHR4+2Q9Opj6L0u6TXH0LugWvOxdZRY z8j5KLZZ87EF8rGH8jHalI97bFa+Y06x7pH5Dkp8190o/JAv3cTntFv51iSLNZLMt8Ju5VsAfIWK 4Btn4ntK4stKE2simW90nJTfmyLpm2Di2xZnLWf7mAgHY5Fyfkbiu+cmwYN8V5n4eiW+9Bh85yS+ p0x8E018342X8jtGrKXk/C6Nt/K9epPQQ77JJr5miW/NmMh+hJnvAYnvlKn8Mkx8eyW+rTHSd1Ti O29KX6aJDxu1pX8ZI9qZzDdL0uuOEW95gmSnhZF4p5ni/ZHE1x+jXH4m8d1WGCmX6Sa+dxOsduCE RjHDZKeGHXwk8dUDX6Eq+Gaa+M5JfDljQc/Ujgw+m8PK91wR9OWUvlkmvjRHpO/Hww/Gd4MJG35p pjjx+AXoXeUYqmcZY5BvBthaoijrCooXyylR4jsOA15hFD75MLvb2Wnzdrv0NiJim4TtFhuSY7GF a93ACZa6t4406O/gNhs5HHyPZrUJW/UTpTciE/neWo0JW/WTJDyKFVhcRkn+TgknW8ZQbEGLmNme k1kpM7eXZF5HW024ipnHQ2vp2ViKhFMlnCbh0azW4jKaNTDzODVa0k9n1tdo09nfMvM4lC7pj2Md FpdxDJ/WOE34ASbmTAZ+BK7vmPDP4PoXE8axMVWJ4F/C9S4T3g/XLhN+C667TfgQE/utBsZ3eI6Z 8EcssmeI+BMJf8Eie3gq2OuN4DdDjfgvUUQ/YeBbAFeY8A8AP2jC1YBfNuEGwJNsEbwR8BIT7sA9 exPeCXiNCd+H+/sm/GPAL5rw44rYwzfw04p53B/HzIcNRr5/sTTJCexFxTyuT5D0r5LwRAlPZq9a +CazA4rZ3idL+hnsoEU/g72rmNtLhqSfyY5Y9DPZBxb+TEl/Kvtvi/5UyX8a+8TiP40NWPimSfrT 2ZcW/elMVc3pnS7pz2SJ5s6Zjyxm/1n8mU7kmCX5x0l4Nptt0sfWP5cwPtMYDfZaIPm7CWOfkgn9 STPhQoZrqCT2GOFW7p/Ofk8YbSYT7CVBmjOmSDhdwpm2yDMPTE+DLfIcA/EeSf9lCfdK+CMJfyHh 8xK+ggZktOFMsN96u9W/XcJ3S/jvJfxzCb8s4R4JH5XwpxL+XMLnJeyMs+IrCeNImAnXBYRXc+xg TYRrOE5kz1r0R7G3CGM0U6BXizMNucg/VsIZEs6S8I0SLos386ewuy04lT8vjOA09gHhCl4/o1l6 QoRrCrSk2aYhn9u3xf8qtpTwRJ6/DLaacBbHk1kj4WSOp7KAxX8ae8ISfjrbmyDShv19Gvvz4FsW /Uz2J8n/Myl95ySc5LDqZ0p7Fy55L8N4tRF/5F1bXZ3NHzT46r01GtOWLSrK4de5ePXwa1Euv+fX onn8mgdXz5KinDlzs/mdh+5ILPLkcbV8fs+vRa4sDoQocrmIIWdurnGXG3bLm0es4s7sEFaamyu8 yMFjOAiBGrlZrvBdDtP1Wq9fN/YydX1RlP3Ni2+PUlxICHEJwWPIzTK8IndZRtIimcyfKwJyJdII e3sMbyGgsFyisESZClHkIj9RTy5RUUIUuURVCVHkEpXlyhOOok5colJA6LpnVbGndPnSW27Wl7uL lnl0nWG5uEs8epFn8dKbOeab3gx/ycvEYxQ2wicsI3wcNbI9/8vflW/wNjQ0bfAy/hzGjz8UbwRe yP8Gxr/XVixayfKmRdA0LttcxNvCX4mC72rP8TW1wp3LRd/oxUz5SourfT7hb2zGa6QITnnGJ/CF G/7ml4kHAYYyhGff7KMB/MEvZjzisMkHVaz7mhqqGn3NOhTwRvTHFPqk1MkY0qpFMkXZ9g3Nts+a bXyBW196iw7VUM2wCwgHKhOMvgjjRZ/7XsZz3st/rnvxB7GX/+CVF1V+5HV3XffWhW/RK7IjD2Vk UaxuhrJsrTPt2Y/0menInpGO8JnoZT26jPnkCEyjsbp5M4v2rGroU50oD4yGeSAT66FKjCcjoO6L Fp/leRBXklxa/H6fzpvX2jZfvd/XCMVR7/V7hXKMhOVbIzZBXKEoMKeqJ3k/SPU2xv4RZSXj62Xl dsb+gFhn7Djh04grYIUD8zB1DWM5ighfQBL3gNUqxvBFSdTrRLmWsccUEf5pkr9A92rG122o9znp pajCfzzJKarwX6QK/hDJf1VFenHfHdP7Iel/qor04k+MEKfZRPgim0jv920i/EqSlTaR3jtJ70Gb SMfzFP6XJPfbRHo/JD2bXeh9xy78p5N02YV/LfnfR+4/IdlD7p8R/oJkWpzgL8P96HWMPYG4lrF/ QlzH2CsofYy9EyfS/R8kj6Jcz9gHqH8HYydQQqWeJvwXlA1QHqCrNjJ2fbwIl0OygOSieKG/GnET Y5sQNzPWQe67SD6I8k7GHokXvPvjRX4Po2wBOyF5Ol7kJztB5KcjQeTnXsSwaPwpSj9jv0oQ8b9O 8o0EkZ/fJYj4DiWI/PyR8PEEEe+nCSI/fF+0DewEpLoBVsIoN0I9O0S6alBuYsxPssMh0oXzfKVd 7FQod0E9ol3/CNbDhF1k58WItzK2BGUHYyvQ/W6xjuL81G46SW8MSgBXotxGfJ30vA7q+W8Il5F/ K+EfksR2qHQx9hLpv0bubxD+PcV3iNy/IHfc+0K+SYrwv1YR7SJbEXrzFcHrJryY9DGd6naxrkee edQfdJB8luJ7ifqFd0nvv6hfGCCsUDuupH6gmqSP+oMO8n+W2vk71A/8J8kPqT84g3gHrEOxHavi 3VV1J9SHuR+Acl6BMsDYGlXUW6sqwoXI/QnSf4n09xM+qVI/Q+16PMkp1K5diHcxdpNN1PNCcl9h Ezzt1D88RuGelvoHXj9gh7MVIXFNpwTFDjPy4vpOuYfcQ+R+b8Qdl93KfWLHGCXak7qb7BSMYxLV yzXo/gCF3yp2WNUHKfz9FP5+Ch+i8A8NDR9H7qNIcv2HSf/HF48PD0Wl/Kjkr1J+VLFWRZlOcgLJ iSQzSE4lOYPkdSSzSOaQzCO5gGQhyYUkl5BcRrKU5HKSq0jeRnINyRqSdSTrSTaT9JPcRHILya0k t5HcSfIekrtJPkTy70g+QvJxkk+RfIbkcyT3kHwB5VjG9qIcx9irKMcz1o1yKvUPueL9X6WAMfwN mAKDfC/KmdA/o5zF2BGU32V8f1uZztgxlDNofIfO6gRKKHz8Rb8ymzH8nYOiUTufyxh+A0LJZwx/ EafQSxOKi94LyIb6RzkH6h9lDvVLUGnpKOeJ94mV+VD/KBeQnSyP2IFRXm8bdoV6DtJPEvMLBTrv GpRpUA8owbieQQnG2osSyHA/VgGjXY7t/yaoJ5XKHyUYy16Ui6FcUEKnPICyBNKD7fkWsD+UZez/ 5OFrur6k6g5cfnu/sTgu8v2/uXNys8T3X+a4sudm5fDv//3/91++neOar/NIuibDMCb+NTpcffC/ A6INyP9l73qAmzrO/MqW4VlxsAgkIQ0prxdI44CNJcw/A8Vgy+AEY2FZxkkDwsgyz8S2fLZknLvS Qg0ciuI5X4+5y92kjWmYJnOXC0xCE6bpZQRkCM20F6fJ3XFN7+r23M5T5CTOjQMiiOi+b3ffP0mO SWr3ejOWR9732z/f7n7ft9++p7ffLm5OZsN/dhrDkL/jUZvY4reJ9Pw5m3aQXuc+m5LNTrPZxZY9 7f5Onw1dsmleHvbwCzsPlzFadpEebYIbVNF/dmjfJl+7r7MxwPZwDbRBa3HzXLu91LZ6iWgvLi5e WrxyafEqyIkfZ6d/rw835m8KtrU9yiLr+LNkKW7+Z5lc/inkxHL2A23nEjHg97d20a3I/HxPYEt5 ee663D1er6W8oQGvFi+2lFdu2bDJBaCwo6XDJxZux90IC7eLhTV2sbBia42nwrHRvUnEEjTnBBkt VVvLnRvqNiPBqqXBrs6lyvZtD1tyU6KWQv2Zorse7coUXV5u2VK19QHe7i1KuyFyI23/Fpq7wWar XbG0tWW3WNj6pwH41+DroYHNBv/bLJa6DbWQG4duobfZsumhKidS/LOWDrFwdbPGR/wdDji22bGh wlHrEtflNnc2em0t7UVSRwdtHcV4KpI+wp6Swa7PwHRQg+2ogSrkGpmKe1Ii7Cl4GWKLq8ZdW+7A Zup+sae5cKgg4Nd2LYGPIy0Cx5OKYFyp12x8aVB37C+L2KcrxwaaipVueVO75U3pljelW4bKtWT1 zCGG+AkUCqD5LDUb73eU1+m54dd44Vc54Tfywa/jgl/lgV/PAb+x/361935D3/2GnvuN/fYbeu03 9Nmv77Ff11+/1lu/1le/xVVbXl2Dgxr7zK8qqlx1GIKib3Lg1Re2ob+v0bTczYyvYou10VWF25V6 W6CaIB1mRS53ZWVVg8NVKlJxFnl7euCfVywqhwDSIbLIX2rJXXgvGKICGLoivaJGoACuudmBFL+4 sExcuBbL9PR8/jLez12k/PNXopQoVwp8VnaFZxtxTlQYBsa3FLIzGRdYLOolxnL9L2CXoBYFIlaH 1hPjtvDasAqlWOZSWGajC8i3+b1ImKkbYDr/lapztsWiXPEJr6ij02/JZbOkGoEVaiVwG13KBWhB Ac+EVlnLDvUxs4YN4YYYL1HBC7AkGm9dUYsFD5VrB6KFnW1iYfN4feK90LFPKXDfN2FEdPrSZlOg rBiSUlFnYSGeWo5SUbGkNMbOY+w8RrUwpaLe6kIKMzalomp7LRZqdEpFbn8tFsX0lIqaGYZY1QaV inp7DCn7WOZ9POfdyujTVW9XknB4KvXzSNWIlYqptlybwCwW1bqViuOYeEO+Hl3GVNvP5jglq13L mTop2PX5lmn5lqVNHpLKObvKOd4/blBLRXUmgThqWEtFZTqhMXYew8v9X99v/7F9dM9/35yqOiZ6 /rPz5z+7bXlJCX3+s9tWrJh+/vtDfCb3+WX6+e/3498f/fPfUvrQNv38Nv38Nv38Nv38Nv38Nv38 Nv38Nv38Nv389v/2o53/MHV1wPPfyuXLx3n+sxWX2Jax5z/bCnjwo+c/2FaWTJ//9Qf5pJ7/kMU9 LoeOmwVcRzF3J4svISKZQe4lC8h86lGJaSUHIA98I4StLcD1Ibi2A91lcA3AGKThF9eJzOFpJv6l H0jDb94qQvBL3UisLF0ELF40C/g9ge/0c7n/rpX5oprL4DtoFvCr1D+D10H9YIGIcNAs4Fckml8z fvG5ZGlrU2Er7jJV1OUvsms+rFj3pq1uzgvtgz6Te/n1bl387Sn8XMLz4poVdNtA9m0kzCvOxfMU wncNv8Y1Y3r/T1xrgh6YuCYFtRHXutzF03C9Cvpyeghb+wIsIA8S5hG2TUcD15vV6LDiDrKJsLUv 433QUxP7j+tgKnkcsIZ4CVuDhp97ePg1Ht7PwyrCdAJl4OBxuC5uOb9er6sHPehQR+o4xvU+ONa3 clxNmCxwn/gH4LuDxy8jbI2c8pE+oy85GeIUz1r3OGVSJ5dbeTgnQ15cC/cVfo37iSj+qHrvQ8Xt yujhqH1wXW1DSpyYIR+uN9yuw7juTvHyQ9/bpfwafbw3EOZxjGsWcUUHevuhx66iy+hdieuh9Pt1 jPdZxcNmXZzi64xrvBSf23pd+iwe7spAT+/WKPJ2HwI7M8vEdA9188SAWTjJMa6nugjjewntw+0k COGB02w8o58hrmsceMEsVHBcBeVOPGUWUEex/Hb0Y33eLGzn6S8A7j9pFno5ng1MGYXy6zluzmI2 hdD6Pkr6cS0V0LNzergu6DXACY77cU3YS2bBxsv/Btd4PWsW1nKM64OKXzQL93KMPrYDkL+Y4zOA y142C7M5vgUU5h2gf4TTx/XCw0+x8ogdgE8BvYU8P64TLgP7WEaYH9x5wGOQH9c3Y/5LgM0DjF+I 0Q9QPGUWlvPyJ2CQlL3E7DPiK4DnQv5cnh/99hYCfpvjRYAHgP9f5vlxve+upxi/boHR9ReAKyD/ XJ4f1//ugvZu5vlHANdB+rvZLH0McBPgr/H2zgCDKUJ77uL5SwBbob4FHD8GeADa/5GJ4SjgAJT/ EWE2Bdd+HQL8JV5/PuCjwB/FT3ANputwM+BjkL+Q5z+Ge4rq0s8CjvzQLKzm9b+P+4+CPq3heCsw 6vQA00+qb4CHQP7/nsXSQ4Bfg/Qinv4EYOtJTd6jgNfq6rsPDNASwFaOvwV4eEDTh8cBjwF+i+Mn AQ+9yPQd6cUB7zqlte9B3FcGxtcPeP5H0AACf+/g6d8DvOtlRX6zyAnAc49r+vYG4IWAqzn+AHDJ cU2/ssHoic+zdKTXiEbwZY1frwAe/SetfXeAURp4zizcz+VXCXjoGbOg+A13Aq47ro2vI4ClN7Xx +CTgx4E/8zh/3gEcgPz/weX/W8DFoC9VnN5yMEYRwL9QxjfgwZeYPBBHAB+D8qd4fT8HfOI4kw/i OOCBH2r8uhsm5sg/gnwV+QOO6+yTC/BpKN/N29OC+Z9l4wHz/w3g4pOa/foA8MAzmrxqQPDOk5o9 eZVvvcDoE/Izjhfz9v0Xx0/w9A8Al4B+7DKx+j9OSTfzrRuOcvt6G8dKf8XZRvorU9LLOFbsqwtw BfR3iOMGwAdeZvo8G+5i9gB+B+0Jr+9RXt7MaR7huJOX//5sY3tf4HgWT/8x4Cao7yXO37OAt72s 6cdFwK/p7PebKfhdwGvf0jB6iLb527mjkofAbWGnr8vf2s3uCQF2BCQ8KBFxMeHA0xYM+Ho8wfZW v/eRlEgaBeW6Ak3exYvhBnO3d0WRrdDGCFKHPL6RqcezzZ7RN3AVd1dNdcz7LKcmW0uxZ1mtr8Po 2/dFKX1+pz+Px9/h7PZ4ypkDXqu/fYr655V83kc8UCfz9MrsXfkFa3C3EEpnkskST8WDWzdUV5Wn u0ameTt6JrNi9PXkzpy+iX12cV/cye55Y1dXy572ye8Va+uUjB+9vyn+GoeNz0zR6YWmAON8/q7J 7eEE7o/o5qnznfb4gwGPv9nT2di+Bz2ONQ9f1edX0zjdkO30dQQ7Jlk0UyERaOdkqyWXWObi6Q7D Hhy1U9A1ZzfxtLRT5+j2gGI7dW7pk2yFuFt/uj94k+8GrYSzG9Sde6NOcutAyq2NXt/k6qO7xd3C xihm6/TtAaH6OtmuocD5Zn/KJgATjzudz/GEeTVvZjYn2x5qMcysK7qoQ7wNp1T9VDohYb1bdREq 5kTKVkLvSpg1mwI9VpjMPfthFr1hZ2wbd8buCAb082BbYw/l8qSPgS/uPD+Z7Shqb2lVJhvdVgSp OyF0e6dIXAR3wZhSVfBosyjfsqKy1uHYUuWq81RtrXA03IhaEE8zWEfe1okmYcUqjZuPzYqGHUPo VOmFNgamihlkT2fj7qm60W/fN0WthnbrJ4QJ5fR5doah+6wYph+Q86YtNRs3bPHUVFa6HHV8X5ob sIPAAn+Tz6PuV8IevtK3PCia3Lsz43Q5wR0RzphTdBfMhlmLcZhpdWUmXOutpSPhhmeNG9qYhz88 0X1XPJnm2doa99YKj9t5Y3QaOxq9LYFHJ9v6N3f6d/NpZWpGO26Y0dXl6Wr1d0zd0Gxt2d2Gvyas wMfsPQi9DKZynm6BY/fYoPomfEZQ93LSomGQQDEmJ7irAI1uptuHoOEN+JrThck2YlcyZLit4rv9 QBWMPO5jg4YXWsl/ZaHbSmEGfHzBrmZWGaUqrbFgtT1q1a1sEyePj57z4vHRU11g6CP7sRqCm8mQ TVuqNpZ77EXF6pWN//7E3kSa+H8TfzNhSkPpoT4nSaFCDNf6NJJG35Qxr7E9ym66WfyLb2aVrQjZ e1rtD38jp3vrYdjScjP2cmi2Vu95a2p6tiH9tFXbB3k2Tc8i7ylbvQ6ahRkm9i4mx8x+88zZSkjg TbMwcyYhPRjmEfINDKHkAQznEHIIw7mEHMXwdkIex3AeIf0Y3knIMQznE/IEhtsJeRJD6MgAhl8h 5ASGf0LIsxjeQ8hzGH6VkFMY3kfIaQyBIWcwLCLkxxgWExLBcBchr2FYAu3GcDkhP8VwFXQHwzWE vIPhWkIuYbiOkF9iuJOQIQzLCRnG0EeIjGElISMY4jsjDNEPHMMHgB8Y1hCSwNCwdyc7nw395MnX D55PLiWk9xX8dZMEcmTcnSJ0WY5BIP/bTDwpNsHPdEsubwVKyUUd/Lfv5CLkNH3bGR3CA8gWIccl TIsOUoycl1B80QjFKAF6inf0FMUoCQlFHx2gGCUi4c/80X6KUTISvpaKHqAYJSTh679oB8UoKakM 8S6KUWISvtaJOilGyUn42jhaRjFKUMJXm9FiilGS0i7EIsUoUQk7RM9cTC5CyUr4ui9KD1lbhBKW cPuEKJ7umFyEkpYOEH7menIRSlw6SvtPMUpe6qf9pxg1QHqC9p9i1ARpgPafYtQI6Vnaf4pRM6RT tP8Uo4ZIZ2j/KUZNkSK0/xSjxkgXaf8pRs2RBmn/KUYNki7R/lOMmiQN0f5TjBolybT/FKNmSaO0 /xSjhklx2v/riMeo/E3Yf4rjVP6IBylOUPkjjlw3HFdJbO/vDP26dzjurKuV8F2PhC/sttVLA983 C/LbUNmY4fjifjzfct29F0Hxgqti+aHLfU5z6NaFgMMkOXgcL3pXkWD0DL53OxwJWKTNPwFC9+GJ tjlYDNUf1Vg5j5Gfz6yeRwn4DL4jgbL50sK3UI2QQAE/grCf5ze0Z8QsHYKm9zkSTvm5OXiQqhCK UIQ7y+Cho3eo9OVvXU85P5xmdMymxTQ6TQY6P8hidGb3y+szls9h5W2R2M7Yw/rzPnn6b600PXaA 43/l+FTaefO/ShjPF00aMT22XEefnh+MmsVOfs8KOwSnvDKfNjcUce419R1ei0fKyiuv09PeGTwc oedlCqHLYZ7ckKBHoYYiwPgHJHyrLf0V8ALJSX+NeoHGXa6luYArTrl3FmeQU16rxb51jV7uNckz aX3m1+mx8mhaQpcP0iPpUf2+KUTRkPV1E1pV/qs0l1N6Dms6jfWyiL7DaB/2Zjvle1n7WIRTOoNy UrpyE3TlFoWNNDIHt0Rxyk9fUxt2Ubu8S2vut7XYfdrlTz9RL00sNkmbE12DJ5kbz/NOk9+Ca6n6 wTl8hFGNVRvO19XSm3n6P8fu1Mv/zU+M+vDhJxPrA2544mIKYaIKcc/NeoWgrJVfusYVYhXjYg49 c5YzXt78yfj6EFH1YaPGqa48VR+WaLFnryr6cOUTLsCVTLC8VjzP9jZdf1iCIj9WOnT+8Lvq+a6g C3lX1bYF82OFBn6CKtEKJLwJkbM4T0Pq+E+Tl/9qmrwYB353dTx5sfQLVzPKa4GRnrzeiMPfLVZM mWK/XK80gHnuXYf/k4FZ2MfkYO/5RO+aZHCMz/p6+5jB/oXdeHI5XRPlTnTepLN3YUcidDZ00XQx 5EjEfoNn7yZCF2NEpUHLC67+47jQAPL07k+QYCkT+CVVzg/FVYl+eEWR6CImBiM/ob3Jt6nOXb7C pRQ6F3LHe/fHSeCWsDseGjTwK3YktfxYhv65wjsEl3xCT5G1dJZLLk0qsY5E2J0A+kAkrhDB82zd Qt/9M3t/HTd0XE9fdIUdeSHHEOQMO4byT1qhwccPUYYMhW/FJR8QXTCIx8E7xjDOMbTGEe9cdvwA z+MYwsodcXZtyqFFsC3RVpg5onvgn3L+sEZA6NzNq4U+X7L9/EpQCJ1FUkKG1kxcE+5wFr0OY96g r8dxgctZ2czyO+URdk46JR8PvRV6w/QG0oG+jfbuHyOBbWoDnTLJY1aDwr65h5He646hMsYPLDOi tss9Erbwto/ouRayhh2jCsH//lit3DH0NOboXYf/Sf7hjylv1C6OHNw/cgAnivzoj9hEoerziEKt 8aaJmieHHTJLDgMTh3v3D5PATh7nHlYbPKxrkL5DSOTpQ5RcHq9UbaJTPnedjYlzwHtcgcPY3usY EaLrtfPEX89BAqzlKh++yubGpxmPRhVZHjXUPzpB/Ru1+mO52njf8cv08TPfBdYBV5ngvQcdnDm8 MAwaGJoJU/B2OjSj3yUp+kNzX8nl0wfn8hnkcd/8rNCOMaqK0NQxKB+uFkxvgE5VyyEwR8N4q9dP uQ2sFEwojcTmNY7h4J0gRHbCdEwE428c/5DZLYesScdw7DyeYe4eTenfUHr/rHje+g7h4DVUme75 LvnCNaZoKJsvmfT645Lvy9iZtVmh/Yk+xxWn/A8CTYfGotJQwxVc7ZJf5CTBBD77qWpxRsPBUbyl g3LfEdgEOBrFBwf1vHE0SvGwBfQsGOc5JTUnulTH5uvnb/lX/2OYL2I7jfzhJBYxErHB2L8Y02Ov ptD7SyM9+aQR9/mG+TnnKj8pL8PBvD7zl53yk5+qnIxB5vjXdxotqGaf+8pNTrlNmZpD5117rfLz 7IB3arISoQZk6utl9BkAri6U5ZE0gw30tisNCO+39u6fSwLzw9Vzt213yacEVXIzauXKj5B2Xp9v TN8BrT14p7BTPzdkO11ym6DeCGETnPLjNIcVxTQHbRVEVfE851KmEoU+2OUz+BSWPpnw+ZxOVtkz eU1heEKihJTz1V0wTsLuvNDbvVet3fl9ZlweR1Zfyv8O3n/1XhPz/zZyNKIWSKcP/VNZVOmS/34G ryj0+oVNeeSCIwlKfliJ7O0RTPtKXXKTwonVF/YtdsluBTrr5RYmpKORQ5GgVbuRZvoB5EyPOZIo +1GDomjtgbYEhfCOvHo5X6nVKVeY6aVLvqY2b0YG9flMeUdm6OV9ZHRcedPxHxTq5Z3ZrMT5EDDv MpjNNY5E983S7+BGRr7nQ9rl2F0G+xb7Rar9gfGaVzC42mHtvpmB0NkCsGnW/n4KrQyO1ssfXVdv Rxa75612j0JNo1hTgtc0B8xO7I0M9K0Fg+Hqeaazoeo42E8QwT2fqiLIP/R3NFvcKQ8kVO0FO5sH +b5n0qvvmFP+WYKrbx5QNQ3CcCo4V1svdyv5QueyoQOD2Q6rk+aZZxp00oLHlILzAM/FRBb/DSV+ DKpbwJoVe0Q//xpryvusmurl69mqRtzyaVqN9fJ/aulZrOZ6+SfZqkLj7DIzNBpLM1OG8QiU5CaV MxTiUnAFwgT22AdUd+iQvtkg/wz3g2z8zlEIwkOG5Uw/yBXuW7thaN1PuGbPJgY7kVB+n+DjX+tZ PDtDxjT7KePS/KOOZJ8jCYbqmNoBl3wmSyVVTdSnrBm0T0KKgQJ68sMjyeTRSP6rg1Bffsrzaob+ KsPPJddkawNufHvP+ne30iiYJY391+xBUhWKXML7c6l3yASPlPPq5dveZ6PEKI/UKnl9yQeE3j8X SDDXJVsYJb09heaXm3sjVuBVHmOQymXK3zzVxIBdOPgpvUu4rd4lr6ftE6LPEPX+vF62mFQmpNwf xOnU+xhR7w/4xO6I4zRmpeNdXhBL+33oiqKPQqyMYx9R5u+033/eS/n9572U+fp/2bv26LiK8373 IWslS9bDdiAphg24xQZzpb272ofktGhtWbbxK9hgCIb1anclrb3aXfYh2+ATDAbzCDTmlJLycHgH MI8QHnECOUmgkBJOU3wKp3BCmkPakuqYtHWaphQOhX6PmTszKzmFP9LTP7w6s/P95vvmPXdmVne+ +aYa1+txPPM89d4Rak4Y7sa6pPUvy33zXZ5UjnJHdGycuolD3vVTNtPbn38/Xf/y81O+m1Z+3PAj yujvMKekp8Hxv9K69/mjM/380uOP49n2qa+IgTJrI8w/YrQfnXEoNtbv/KnqEXdV2zjVTZHbGnYu DevN5vO3fbwNHupnaN8yTwqrJUaMrz2Xt1m1uRunDryntkP0b4uPl8GzcMJMM4HZfp2y9pb5Mf7/ D+lM3QF1EEnguxyP5XXN8+ALVOtUK5Munl4Llsq5YpCNiQTpQpVTSa4/SHqT1mS6UM/1B3XhfFGT hZjB0mhwIjdRquyyyqVq8I+DhVwRT0oEzwoWQwDlMZvgosUY5FjH+mTFewj58RxL8Pf0+e69/sBL 4M6+zx/wgGsHtwFcBNxWcHvAHQYXfAAwuI3gquD2g/sFuMPf8Ac6H/QHfOBOA3c2uPcf9QdGHgMZ cKeBC4F7AtxacBeBuxvcVeCeBHcY3Gef8QfOBLdBuK3g9oD7WHyk1UJPbty6H/8PvjvQ5vdf58GX KqgLiP9vR53IwTmBa7zJ9qY1dmCd7d9oW+fbgZTtP4cI72pSr8K5FF+m3A118ntVnC/a/k32PJAe tQPbbb93PcR42LYutAM7KB6+sMGXIk9AnQ96VLzhvdFzKOolMmrNDmy2/dvsQEZGx/LjvdBSH0HG RV0jsm8o9DRk+PK9TZfYgfNs/4W2tcL2s11bj9J/UnL+5cCm9Bd6lD6E5ONLqKUepTej4s32Ttl+ 32qPHbgc6jpkB+jd5bhH6WAo2VZoiiJmQ3qEN3qUnokrc23z4L7A4N6WNZAYVN87bFvQFtuw4TDd H3qUroqMM7jPN7jXv5rSRRn8xSv1XbT6Ddt+yN5iXc2AV+kIuelc6xvc5x/c2wTNtc5uo7R6vUo3 TUsLmnLE7txo+7GN8D5qqS8kZbCd8X9OUo/EzWOvj9oZX/rd6FV6JBqfyveQV+nAqbbxD+4DiVkr oW0GbUr3sFfpipntMUztgWnhPdhS3+hYdUXdvJN8Sm9rWn9Aqb3fsQPn2/6M3bmZqp/DcQmjs/M8 fDA6V2GGWO+sT+n7uenY/ksgG+Jf7VP6fI3tgvz7NX28Rj7W+UWf0lfT+mSD7d9M/Yt9MuVTOnhS BuPikQKpizVTe2H+C/1Kn22m/PE3ldRfOlYa436lA6mlsVbW8Tq/0tHT+OdgBVCP6CG/0olSfTFr cF/z4N7ARnqir6C5CJ4MHEuoQyh1oKT8EGSG+f+HX+nHmeU9h8qL7XUiKuJ+24xP479J6frNVFca /5p+oh630KT0Lqflu4bH7/4mpWs5Lf21dhvKPN2k9MGmjd8N9jxszzex/Ica6rjXt1rOaf/VpHQ4 JR+Hg3gR5vpSrxQ/B+/yB54F9wq4n4I7Au4DcK2ouwjuDHD94FaD+xK4beAuA3cDuNvBHUSdR3Cv gPspuCPgPgDXeg/EB3cGuH5wq8F9Cdw2cJeBuwHc7eAOgnsW3Cv3cJlwPZe676cIf7Pwnxb6+Hh+ BPfe+PoYdYu3Cj2vRVf6A1jhD2/wB1D3e8vVUA5cL7pY35rsP4p6434H9fnwLAve7Y/th+2G26ul X+c2XAg+7uxw7GG/YwHhh2XpxQO01pYwjaPgH73T3JNY1u3W6XNZ5x51m/33Ml/S2MdLhSTqSe8R dEGj92n0sxr97xrd41H05Rr9Vxr9Lxp9glfRX9DoEY3erdFf0+jvaPSvNRrtoUo6rtEjGj0J9FWC 3q/R3wf6XkH/QAt/XaN/qdEfavRc/8zpHIs+/RjyaS28LugFt7L8CyIc5zFZlzc0Gm2XSnqNRl+v 0X+p0e9rNNoZlfSYRt82S5XncUEvgkXtBU0m2KzoUY3eR/TCT9wmn5Z+qJnLk4QH4lVBvwG/a2Xb 4vz8HpXh4LS4bajPLG4UWEg031iwlOhTiT6X6NOIzhPN9oivIppve7iNaD479y2i+bfCK0SHif4H oiNEf0g03/wwvwVpvimgh2i+VWAl0QmiR4jmGzGuIZqt1R8gmm+aeIZovkXiJ0SfTfQ7RA8S/RHR SaJPbEV6GedLNN98sZJovqEiRTTfdLGT6GGi9xO9kuhHiF5F9AtE8y0VTbOR5ls3Tiaab8iIE803 fWwgmm+5yBPNNyVcRfSFRN9BdInoKaIrRH9MdJ3oz7UhfTnREaJ3E/1Foq8gukj0HqJvInov0QeJ vproHxN9LdH/SPQN3G5E38R54fk960+JjhF9M+fVzuPt71Z4rGsEfV2HZT3Wrp4Ffez9Qgs/Y44a b/k5KvwBjX5Lo9s7FL2iQ42xq7Xw73WoMfNGh+r37k7Vvz2dSn5Co+/sVP31Sqfqi1bUXxa3jSzq UvI5jb5No39G9HaiO7pV+Hqi+bKgMaJ3TmufmebJLhxfJM9HuG4l+kRPo/wj3eqZfbFbzT9/362e 3/e61fOrx+2ai3vNU91wuT7isVo7Y9HlndVKpqeczmxPj+WqPcnzVq1Z3jOGR3jPcuxQT6Za72k0 Ipwv1vpri3qXhBZ/oULeQG8v3qUqPoBCMfczwP/HQHmH5R2QHwg5wCmUimNBmVr4k6VWL+KZ91zW jRfR4vUa8cJ6PMprWuS+TxHZKG1URQz1zvQZ6I3N9NHTmlaa2LFKEzpGWtXxUqXmRo9z9PjigbPC TiwaH8BvV2pabgkWT2B3RPv6wn0gyRJuj4V6RYl6Ic2QE+duc1NScnIoYNEHnD5IarRQSoth4rjV igDXypbqI4Ucs1Snx5FFzaLzVeeGHBTAQVjI7XTrEIIOrMZRQ7yfxJbAOHIG8hPpMYHDDgaoiFqx ZBdGRbmkiJ6/7JGYKKCUmVZQ0fbgi5JOlvJZZkE7s2fZtnuxLj1g1V0TI6VC1R7/JA9ipidTKo7m x0C6ISFojAKEUmCt0BjCYqO5dK1eyVXN0Oquak8mmxsVwRP5asYIo2Lh9VkwA+D1Bj35SDzKF2n1 5MYyVShZImRHoyrBWhaimpmg+kwhx2FMq6AC1Gmyf9OiEM0m1Ug8m8tA7xVS5RJ2MYbD6DmDZg3u 29p4qV5NF7PVVDVXFgKil7dYY5VSvZwvjsnwaISGQ7GWytQrlRS3t2QmohwJWbliZlcDG4Y78vHG iJkKBeOml+OjxIylCiUcmUJjwRwnwpHLpWq+lp/MpfCRcrl9VLRibiw9nRePc0ysFd52nMrmx/K1 av8i0RIwAQzMFB6HcMgvlammypVcJpfNubxwFHhorLmcGoFmgDGYk6xIhKIVZ4rW5wCvOGO0aK/I jRSUoJJFlxPnSI3hMSzDgD5uds4wcFRYKsUk6tvUMzUcQ2EaQ+GoZEFBIQzGT1rOqgN9AxgUxiEF PswuO6siGdQp6V+Czyk2biqVqe0q51IjlEQfD8GE26WSXSsVSjtyFRKKslBI61wlVi+XXTHZvQOq DjgjAQ9mG/TionghmjHgeczmytWeejG/E8FkDz9/qeGUOyH8DrERGAM9WAp8nkkfijKLYlvR6gml qKfETB7qE8EwkVM4LR3McIiR4HCefyE0rKeCsyIHRyi4j4MvraezKSHfR4wYMvTgKAVHMRiSjsvg GBeml9LRGXGtlBAeikoGT7ZxGUExcCmT5QdG2HEZosYyisZxVOWAEY24jLAqbt3kRLT6pbPZisvA iqNPw4RqTApVk65AjAW4zfJuy+DKwg2N99do4QktPF8syXCnl8Op1BOoMikZIS1CsYCWxyXH0Til 0VE3nKtJwQU9PMLyVIWyKpLTp1qyqoYaMKKKUSnkJ9zwmMoAw1U7OnEtCy0HvdKjVcUIi1qHcQaI p1KTuCFAbDz9oQG5SYhG6PHL6l0UDqtSZgwG1RenKTKVPeHWK9ynyl/dMVJwWzQcVYwMala6DK3G o9nURLq6XTDi6okBRjUnI4gaR6CCVViSRmGJGaFpHQNDeu3CUD1OCaexXoeruD23S2YecVQF8+WM 3nWRsHo6oB4ZWFskJ6JKzBzVS5E+rZdGqw0Ro9pAlEwtrj7eR6uj+YIeN27EZaYWN6HFhbGvOH36 6Ichq3HE8HeIVUtVYeJNu13cpzVNLVVvYGqTHDzt5ZriRGQ0XKJwvuX7oarudCwujOJpWAA5G/9v s3Y1Mw4/t3CpIypVTlfSE7jQxXmzJEIr+VIlX9ulb4Ch4+VNVaPpag1HIMaLLRGPB6p/1mkdD4sY EAb7ExI0N85uQrDwZ2iNiNFSAB4vozFeRk05uSq7F2ala7LVYrQGgBcVi3U2V0tnxkkjVa/DFlnv cqmQz+wyiiU51CDcHmKvt4X6aDwHLUIiIhrv9TBaqSxzERs8jDFWT1eyOGP188ooN3fUUrAhx8kA H0kRMeG4BZTsfqxRTGwBEu4eQEjoSburv2waWMWzsmni3DQJethh7khxj1DP8bRFu4rUjjTsGmk7 GVP7XDNJvcVp8UOfxg00Od7ebg4YGdWdL2La+mdeeybZYZEo9H8VNZonUvADI1eZdFvd7ccJKFG9 WGvow4lUaUcxVzErweLb88XGrpsw2gI7jyZxo2hGncUwwxUX60wCWroN9S4VMzk3akw+1pJb2aFm 8ZhYk2O0BldhvwDsmTsKwjF6rlIVmUbFqAAGXY7gVl7+GHHjNHaxGK0q6jSBaK+WhFZRd88KweUq bPTc/hGDdKChmnorOmLkOGLmQH5jI2KWZsJy8pDpysQcucjtYI14DE6ILSesMDvycglILFF7r2F9 hxcR0nHJkNu1yBI1hQ8be7/IErW4DRtbvIjYp2IuhhJ7/zCnZA0vW9YfXDS87rzFQf33bjCUSCR6 w6FIzxqcroOLiBmyQ7YTFDf+HY/8qSPLN3z4H9DekN2LryD+L8IsG37519Ij4Ncq7I9LCkZLrlK2 7GKplrMHk6vOqqXHLHs8XYXlO7urCBHZr1Use6xYtyfhWc+XigZIAQ8qaY+VakyMVKtMlAs1zCIP 30TS/QY23YRjV0p0zYHN32OZTApvnCjXxF0Jdm5cXMJgZ2qlCiSYZY9ygSKlJ/IZi7OqisqlR6ic mdLERK5Y40pZn/jzB6LZ8H0u3fVumXdly3Ni+J/qZiFHd7J7zHuu/cLHpm8ScvheeRHIRXyK7xcO 77+eLeTwffMWCLx7Fsf1WOoud3xb5BNy+H76Q7w/t8vN1i0fvvXBd8soh++Vj55kWa9r5ZL3L+Cb nI+EHL6PfnEB33PdJPKR8nhfeouIg++zF57Mwwz584WPuKDJLQG5JSdzuZF/giZX1+TwPfnSk/n9 OfLbNLkvizrhe3h8T7/1FEu8teOPvN/hak3uFpC7BeTO1i67l+18vSaH9gDe/rxlXTp/enpf1fM9 BPnG+CxKo9yfW2q87Aa53SC3X5OT7XdAyGGbkg2AuCXeYPEnKPz7NDk8c3c/yN0/Q3rPaHKobb4y AWWaNV3uB5ocKmte8CdqetDlfqTJbQW5rceQ+4kmh+cexkHuzgY5dHiP+SwhRzYNzlb2FKQcpv+W 8FEO77V9EeR2aunJMrxtmWc0UW55M99ZL9PDcfNLy3LvE6H4Ky06QyE/Mo1/a0iv5yLLKnqmy+GF Bc2CRv6BLWb5pFxXQ77zL4bnagY5OVbk51cj0C4dfMf+bZZ6zlsa0nu0Ak4bp7/rvCrOW5ZlCasX PD8x5pwXuZhzwPmGMfcyziuMubfkuRQfW6ugeYIxtwzOB4y5t5a4uIXwUhezNQJ5v7pPWC+4xcVs ceDteyRuZ/lDEvNN/Ltd3EE4+LLE/FTe72KeGPH5YNxN+IJXJeaBsdXFfOJ13MXc4PKck48sXqj7 l30NljJ8DVYRfO7olPhz5Mtx5qPVRuef1IAXNOCTjX73W7/+mObKe+W5oXYjReSfOoN8pyaP98Qv fFmemeqkuVW2hwfaA9ebRRr/HC2+F+9Ht1T7eqB90eTOVo2Pb/LxSowTiX8CneUta3zUGdmv4bss vi9e5veYpfrLA/01U322Pqjq85yGMT28V36LFp/ye/DY+eHtG1mt/u+Cv+lVVb+Z2v8vtPzfn4F/ t9beTR4+jyzxbMBvabjLw+eSJT4B8I6HFF4gziNLfBrg72l4sTiPLDGe7Xpdw33iXLLEA4APPaLw oDiLLPEw4K89qvBacQ5Z4k2A39fwxYDx7LnEo4BDGi4BXqvhnYAv0vCVgEc0fAPgqzT8Z4D3a/g2 LI+G7wL8hIYfAPykhh8HfFjDeOHEEQ0/J85MS/wC4M88rvCPxXlpiQ8DntDwGx4+Ky3xzwE/ouF3 PHxGWuJfAW7+psK/8fD5aIk/APx5DXvEOWmJA+JctMQdDfgzgK/U8AJxVlrihYDnPqHwmeKMtMSO OA8tcQLwHRrGPdbdGh4GfPOTCq/z8vlmic8D/E8a3iLslUicAdzzlMLbvHy+WeJLAV+g4Z1ePt8s 8RVePsss8T7Ar2v4Ji+faZb4FsCznlb4Di+fZ5b4XiyPhh/28nlmiZ8AvEvDh/BMo4a/7+WzyxK/ 1ID/2stnlyV+DTDqZUj8M8Bnavgd7F8N/2sDpvPrGv5vLI+GUcXvdg23+vgstMRdgL+r4RN9fB5a 4lMAv6/hP8ItxLe19QTwZzWMv3WCGh7w8flniZOAN2p4lY/PQUu8AfDNGt4s7M1IjNqzhzWca8AF wB9puIrlPaTwZYATGr5S2K+R+DqfsseA+Ks+tb/AXd99PrX+oUWHp3ymfR+0h6Pb95nvN+373Og3 7fvc7jft+/zWb9r3wfPjun2fh5tM+z5PNpn2ffDcqG7f5zXtnDnGR/s3un2f9bNM+xPnzzLt/RwU vzHkPvVbs0z7Py3Npv2fTLNp/6fcbNr/ubXZtP8z1Wza/5kXMO3/LA6Y9n/WBizD/s9vA6b9HzyT qdv/GW0x7f9Mtpj2f/62xbT/82aLaX/kSItpD+g/W0x7QOtbTXtAm1uV7lI38J9qNe0DvdRqGfaB ftNq2gdaNdu0D/TQbNM+0A9nm/aB/ma2aR/og9mmfaA/bDPtA23Ec5Iaf0+b2n93Qn7Xtpn2gp5q M+0FzWs37Vs57aa9oGy7aU9oot20H7S73bQfhPZvdPsmb7crPTNsP7SHo9sXOmWOaV+oNse0z3Lz HNPe0NfnmPaGHp9j2htq7TDtDW3vUL8vgpD+ZIdpfwjPi+r2h57rMO0PPd9h2h/65w7T/tDsTtP+ ULDTMuwPfbnTMuwPvdlp2qeZ6jTtEa3oMu0RVbtMe0R3NdiP+UaXaZ/o2S7TPtHhBvs0bzfYm3mn y7RftKDbtF9k45lNzX7OF7pN+2gXd5v2jR7rNu0b/bzbtG8Un2vaN1o917RvVJ5r2je6Y65p3+hH c1V/dsLfa3OVTiKOr9g80/7R0nmm/aNz55n2j66YZ9o/emOeaf8oPt+0f3RA+w2PcSz8xyj+L9TO TD+BSsdXM5VatVYfHQWybDtWKrV80/pzU3TxeEoc1auBeBjf9JdSY4XSSLqQon+TptL1nRA6tDK1 4tzBtUOp5NDwqnUQCbPjt2NWaWQbmveNW3xNLQdixoIcLVXwjVEpJW6jXablreeX0fIjmaF1y0lk uQ64GIw0W8eWvWZFMoLfQ/Sd7COavpNRouk7GSOavpNxouk7mSCavpOhXvCGVib7EmEmoqEEEUOS gJCYDBGEEnYcIBgyV0UnFn+vGKJsILcQoxAjwXMYhRmFGXEF2UuGuIrsJUNcSfaSIa4me8kQV5S9 ZIgr6VDuQ+wlHS4Ee0lRQPaSDheCvaTDhWAv6XDuDufOXtLh3NlLOpw7e0mHG5q9ZJgLwV4yzLmH HdH8vX2iaQUBIRhNC2fISYa5tGEuLXvJMJeWvWSYm4y9ZJhLG+bSspcMc2nZS4ZF0lzaCJeWvWSE m4y9ZISbLIJP19AFy4Y2bFq1fp24tV2NW/n4HDd5ddzk1f9Xk1fi9vDfh+Wr1Gg5Nb7juAGs4waw jhvA+p/2zga+qqPO++dcLnCTBkjbtHZrbY8tRV5DXqGm1CeV0EJLSwppixWFNAncSwM3JpdCK1Uq UBJeLK6sWwrYdK1alVX2kV3RosUtW6tWRcV9quKKK6tBcMVdtg9PC+GZ35mZM/+Ze+5LCklbO5PP ybn/mTlzzsx5mzMzv+/kngCL36O1tYrXP6BTYnHIyk2sIolH1fneh51u6y9nui0xt8Qbadat9PlH 6X3U96m4glm8BmpOLjJpB58b5A02SZc5eYn2mPqLncHLr2GIy91O5tXPk3lh0hzj7fdmnNxLTMOT /xxfeKhq+cakPedv4i99FqKw2ZuNe9nOEzYQ84TNn08eLv7FMpU3bzUk+6cOZicmG4iJyYy51K17 c7hEcqKGn+wPV15WNqmqyudWTp402V+XCxs/y6vLylhIeWVFeXV11eQK5lVRXVnheGX9czi6W4Yr 1vOcxvvubWxPZIvX0t4xEAc0sE5wRL1KVuyeAIx6hYFvpfJ9p/KtUr5XK99q5XuN8p2kfEcq38nK 91rle53yHaV836183xX4VpUp39HKt1z5jlG+JG9jlS/J2zjlS/I2XvmSvE1QviRvpcqX5G2i8iV5 K1O+JG/lgW81yVuF8iV5q1S+JG9VypfkrVr5krxNUr4kb5OVL8nbdcqX5O3dypfkrUb5krxdH/hO InmbonxJ3m5QviRv71G+JG//S/mSvNUqX5K3G5Uvydt7lS/J21TlS/JWp3xJ3qYFvpNJ3m5SviRv NytfkrfpypfkbYbyJXm7RfmSvN2qfEneZipfkrfblC/J2+3Kl+RtVuB7HclbvfIlebtD+ZK8zVa+ JG9zlC/JW4PyJXm7U/mSvN2lfEne7la+JG9zlS/J2/sC33eTvN2jfEne3q98Sd7mKV+Stw8oX5K3 Dypfkrf5ypfkbYHyJXlrVL4kb/cqX5K3JulbXkby1qx8Sd5alC/J20LlS/K2SPmSvMWVL8lbQvmS vC1WviRv9ylfkrdW5UvytiTwLSd5W6p8Sd6SypfkrU35krx9SPmSvLUrX5K3DuVL8pZSviRvy5Qv ydv9ypfkbXngW0HytkL5krw9oHxJ3h5UviRvH1a+JG8rlS/J20PKl+TtI8qX5O2jypfkbZXyJXl7 OPCtJHn7mPIleVutfEne1ihfkre1ypfk7RHlS/K2TvmSvHUqX5K3LuVL8rZe+ZK8bQh8ab1ko/Il edukfEnePq58Sd4eVb4kb5uVL8nbJ5QvydtfK1+St08qX5K3LcqX5O1vAl9aL/mU8iV5+1vlS/L2 mPIleduqfEneHle+JG/blC/J23blS/K2Q/mSvH1a+ZK8PRH40npJt/IleXtS+ZK8/Z3yJXn7jPIl eXtK+ZK8fVb5krx9TvmSvH1e+ZK8Pa18Sd6+EPjSeskXlS/J25eUL8nbTuVL8vb3ypfk7cvKl+Tt K8qX5G2X8iV5+wflS/L2v5UvydtXA19aL9mtfEne/lH5krz9k/Ilefua8iV526N8Sd6+rnxJ3r6h fEnenlG+JG97lS/J2zcDX1ov+ZbyJXl7VvmSvO1TviRv31a+JG//rHxJ3p5TviRv+5Uvydu/KF+S t+eVL8nbd6RvBa2XvKB8Sd6+q3xJ3r6nfEnevq98Sd5eVL4kbz9QviRvP1S+JG8/Ur4kbweUL8nb jwNfWi/5ifIlefup8iV5O6h8Sd5+pnxJ3v5V+ZK8/R/lS/L2kvIlefu58iV5+4XyJXn7ZeBL6yWH lC/J26+UL8nbvylfkrdfK1+St8PKl+TtN8qX5O3flS/J22+VL8nbEeVL8vYfgS+tl/xO+ZK8/V75 krz1KF+St6PKl+TtD8qX5O2Y8iV5O658Sd7+qHxJ3v5T+ZK8/SnwpfWSE8qX5O3Pypfk7b+UL8nb fytfkreTypfk7X+UL8nby8qX5O3/Kl+St1PKl+Tt/wW+tF7yivIleXtV+ZK8nVa+JG9nlC/JW6/y JXk7W/h6t9+dq0P7b2OqvDTZj/vI3v7rVfkVlMnsA2ASq4Djsc6+y6rKbPvvQLiPTpt5k+sqpa4b KOG5qxPCek52H+0MFzp06YL56eeomcdP8wknv7O2iv1AYpjn1TeunxZbOewoOAFy/lQ5i7kfLGZk w/yCJcWz9eSKu17etLZSm1v84vJ9xy435r/T5hcXB2LOL35aTo4ZPr+4v5M4DJnAsbXB/LSLnWD3 UZbikA16nvVjjp71s3X0bG8wX3DafHCIGTo/uUiR7eTWYzPU/s1wc35yIz3T3rBjvJifPBx9A018 GXS5bFnEltXQDLt8HhNznit/Lea5wvUhFfnfIPP83Lx68ozSWGRWafGDcs6pB/A/mLXqnOBCWTg9 nJwDpg7/xak5Pv3Gp9yEAHR8JE8WrA7CCWRHQHPyd5KXI9EjtaKspJOcFMzSUEC2OzCU3ScOZ3ZI vg3O3ThH8UXgThugC8rVieURD7M0DCX+p8UcLdLJzaYY+y2OhPN8bjfycV2Mz8+FfAwh+Wg20sPc WPUh6S010sM8y8UivRhJb6WjMz9WRRwxo4SeD5ND8k0Wb21IPJNDksKcIi4Uroq/E8YhOTmEM1vM 9ExnchJo2CBjq0HaHjiHRK+EmPGHGGSNIUZ4zOdaKBczwgcbdqFWlsj3NPH7G75OzXVuMcLvNuxW w15p2OsN+1HD/rRhf8mw9xn2Dwzb8Ws8EFMZKrJ8FC1y1DAfrEhG1jiYhJF48JE26aOpNd0I+tyN kZZN7OHWPn8+whMQlkA4U14uEr2XPff0YYf6oFr/fo0M5wyqyAjOUoqwTO/Gml3w0Bq6Fzk+uyNy MTvb7JxF2EZgZ0QucXymRYRd1PdgfanjPCjWnxD+T2ItUC7gK0TFOibWRWJdLNYl1H8If0649Gay 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 5Dsc7eQjyXc4vqerCCMP7cWHO9V38zaHf8cXOUr7PZfs/1tsvYp8B0OT2Uy+g38rjl1qvf9L2FKb PUhkUGqnLzbsq4Uttd6yXUJqud/j6undaYR/UNiy3eNDsMl3/SrRriHbEf6atHsgjSeELbXezxjH 931hS633z5j9Uqcqn0NIn7Q7/Naw/8Ts/cQ+b1pv+S3dh6/ljG92/uGr1QWsyrv/Vd70eaw9m4XL pfGG9tXUeJ90ZXqu83MnXePdK8JXCY03ni2DB/F7HHortIENHczbcocO4W220HijrXEoe8imhMZ7 BdbsobFSaLvhqB73o76+G19F0HdD9dn1cg8mte75nKvru+f5+u4Fgb672dB3xw19d6uh724z9N0p Q9+9wtB3r9T03bS8qZ4bz8j4Aa7nRjtzzycz6LmLDD13TOq5Y4Gee6TUcxdDjj3W13MX5annbpZ6 bjRu8gSy6bn34HwG7QEw6nuOqqnrcZZ7vt6bpT0gbb736b4+e/q56rOT0Gd/P1yf3ZBFny3bHXAO QtsdnHRttnx/wl3Oym8sW8I02vK+y6TL/rlYIw94Px4QumxcG3h/SF32ydVcl31S6LJPuuG67LlC lw11JtVlbxG67JUZdNlTDF326bXZddm7iS57t9VlW122Y3XZVpdtddlWl2112aYue7fVZVtdttVl W1221WVbXbbVZVtdttVlW1221WVbXbbVZVtdttVlW1221WVbXbbVZVtdttVlW12207+67BdJeNRJ 12Wjf/mkOIhsumz0R59kRiyHLhv9yKcHK92z44TrstH/PCUPXbacyz2XLnsNi7cmD102+sW3DOH9 5QjPpMtGv/yBPHTZcm74Vcb5wEJ12Rh/uZnFm+6mp0d12RgHcDiWW5d9msVDv2AuXbY/5jIPXTZG gRQXhM/LRnXZGLQxPQ9ddj2LV5+HLhvjF+YW8LF+NB6WfY7SZftjQ/PQZWOcXF2euuy6PHXZnXnq sr8yMj9d9jvy1GX/TZ667CpWeF4euuwGdjGP6Sdd9klDl43nBbf52ZLjS6Que4qhy15p6LLXGLrs LYYu+4Chy1ZzsvMrfbOhyz4czLHOddmnA5vrsqOGLrvY0GVPN3TZ9YYue25gc/XMmsDmo3Xq3mC6 bDmeJ19d9j4SH7rsmKHLrg9srssuMnTZcnupyy4Owrkuu9jQZWNoGtVle4Yuu9bQZReT/eF5NT2w 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 1llnnXV9dv8fWOP4FQCIBAA= From Darya.Akbari@t-online.de Sat Jul 22 05:57:00 2000 From: Darya.Akbari@t-online.de (Darya Said-Akbari) Date: Sat, 22 Jul 2000 05:57:00 -0000 Subject: libstdc++/77: Internal compiler error 980711 Message-ID: <20000722125705.11073.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/77; it has been noted by GNATS. From: Darya.Akbari@t-online.de (Darya Said-Akbari) To: libstdc++-gnats@sourceware.cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: libstdc++/77: Internal compiler error 980711 Date: Sat, 22 Jul 2000 15:07:51 +0200 libstdc++-gnats@sourceware.cygnus.com wrote: > > Thank you very much for your problem report. > It has the internal identification `libstdc++/77'. > The individual assigned to look at your > report is: unassigned. > > >Category: libstdc++ > >Responsible: unassigned > >Synopsis: Internal compiler error 980711 > >Arrival-Date: Sat Jul 22 05:47:03 PDT 2000 Thank you very much giving response to this problem. Actually I am not able going on to test the new Standard C++ Library until you give me more explanation on getting around this problem. Yours sincerely, Darya Said-Akbari From samuel.fryer@kodak.com Fri Jul 28 07:57:00 2000 From: samuel.fryer@kodak.com (samuel.fryer@kodak.com) Date: Fri, 28 Jul 2000 07:57:00 -0000 Subject: libstdc++/78: compiler error on basic_string template Message-ID: <20000728145145.11749.qmail@sourceware.cygnus.com> >Number: 78 >Category: libstdc++ >Synopsis: compiler error on basic_string template >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jul 28 07:57:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Sam Fryer >Release: 2.95.2 (19991024) AND 2.96 (20000722) >Organization: >Environment: RedHat 6.2 on a dual P3 >Description: A transcript of my session explains it best: $ more x.cpp #include template class basic_string; $ g++ -c x.cpp .../include/g++-3/std/bastring.h: In method `const charT *basic_string::c_str () const [with charT = __wchar_t, traits = string_char_traits<__wchar_t>, Allocator = __default_alloc_template]': wstring.cpp:2: instantiated from here .../include/g++-3/std/bastring.h:343: cannot convert `const char *' to `const __wchar_t *' in return >How-To-Repeat: Create the x.cpp as shown in the description and run "g++ -c x.cpp" >Fix: My solution (which probably isn't the optimal solution) is shown in this diff: *** bastring.h.orig Thu Jul 27 11:01:23 2000 --- bastring.h.new Thu Jul 27 14:26:41 2000 *************** private: *** 340,346 **** public: const charT* c_str () const ! { if (length () == 0) return ""; terminate (); return data (); } void resize (size_type n, charT c); void resize (size_type n) { resize (n, eos ()); } --- 340,346 ---- public: const charT* c_str () const ! { if (length () == 0) return (const charT*)""; terminate (); return data (); } void resize (size_type n, charT c); void resize (size_type n) { resize (n, eos ()); } >Release-Note: >Audit-Trail: >Unformatted: From nicholas.walker@desy.de Mon Jul 31 06:37:00 2000 From: nicholas.walker@desy.de (nicholas.walker@desy.de) Date: Mon, 31 Jul 2000 06:37:00 -0000 Subject: libstdc++/79: valarray badly broken Message-ID: <20000731133355.28998.qmail@sourceware.cygnus.com> >Number: 79 >Category: libstdc++ >Synopsis: valarray badly broken >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jul 31 06:37:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Nick Walker >Release: stdlibc++-2.90.8 >Organization: >Environment: SUN sparc solaris 2.7 >Description: copy constructor fails when using slice_array test code: int main() { std::valarray a(10); std::valarray b(a[std::slice(0,3,3)]); // bug ... } when compiled with gcc 2.95.2, I get the following error message: /solar/solar04/x01/njwalker/GCC/include/g++-v3/bits/std_valarray.h: In method `valarray::valarray(const slice_array &)': valarray.cc:12: instantiated from here /solar/solar04/x01/njwalker/GCC/include/g++-v3/bits/std_valarray.h:295: no matching function for call to `__valarray_copy_construct (const _Array &, const size_t &, const size_t &, _Array)' Compilation exited abnormally with code 1 at Mon Jul 31 15:16:22 >How-To-Repeat: see description. >Fix: >Release-Note: >Audit-Trail: >Unformatted: From rovf@earthling.net Wed Aug 2 01:47:00 2000 From: rovf@earthling.net (rovf@earthling.net) Date: Wed, 02 Aug 2000 01:47:00 -0000 Subject: libstdc++/80: Was the announcement of merging libstdc++ v3 into gcc wrong? Message-ID: <20000802084133.19770.qmail@sourceware.cygnus.com> >Number: 80 >Category: libstdc++ >Synopsis: Was the announcement of merging libstdc++ v3 into gcc wrong? >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: doc-bug >Submitter-Id: net >Arrival-Date: Wed Aug 02 01:47:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Ronald Fischer >Release: gcc 2.95.2 >Organization: >Environment: Solaris 2.7 >Description: http://sources.redhat.com/libstdc++/ contains the following announces: 2000-04-21 Officially merged library sources into GCC. 2000-03-24 Ninth snapshot release, libstdc++-2.90.8.tar.gz >From this I conclude that the current version of gcc should already include libstdc++-2.90.8, but I checked several ftp sites, and they all listed only gcc 2.95.2 with the old library as their latest release (dating back to autumn '99). >How-To-Repeat: >Fix: Use the old gcc and explicitly build the new library. >Release-Note: >Audit-Trail: >Unformatted: From bkoz@redhat.com Wed Aug 2 01:57:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Wed, 02 Aug 2000 01:57:00 -0000 Subject: libstdc++/80: Was the announcement of merging libstdc++ v3 into gcc wrong? Message-ID: <20000802085701.23985.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/80; it has been noted by GNATS. From: Benjamin Kosnik To: rovf@earthling.net Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/80: Was the announcement of merging libstdc++ v3 into gcc wrong? Date: Wed, 2 Aug 2000 01:51:11 -0700 (PDT) both libraries are shipped, with libstdc++-v2 the default. To enable libstdc++-v3 with current gcc, use the --enable-libstdcxx-v3 flag. -benjamin From gregd@broadcom.com Wed Aug 16 17:57:00 2000 From: gregd@broadcom.com (gregd@broadcom.com) Date: Wed, 16 Aug 2000 17:57:00 -0000 Subject: libstdc++/81: cannot compile version 3 with gcc-2.95.2 on Sol 2.6 Message-ID: <20000817005607.22630.qmail@sourceware.cygnus.com> >Number: 81 >Category: libstdc++ >Synopsis: cannot compile version 3 with gcc-2.95.2 on Sol 2.6 >Confidential: no >Severity: serious >Priority: low >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Aug 16 17:57:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: GregD >Release: libstdc++-v3 >Organization: >Environment: SunOS 5.6 Generic_105181-05 sun4u sparc SUNW,Ultra-2 using Sun ld and as >Description: /tools/src/gnu/gcc/libstdc++-v3-sun4u-5.6/gcc/xgcc -B/tools/src/gnu/gcc/libstdc++-v3-sun4u-5.6/gcc/ -B/tools/gnu/gcc/2.95.2/sun4u-5.6/sparc-sun-solaris2.6/bin/ -DHAVE_CONFIG_H -I. -I/tools/src/gnu/gcc/gcc-2.95.2/libstdc++/src -I.. -nostdinc++ -I/tools/src/gnu/gcc/gcc-2.95.2/libstdc++ -I../libio -I/tools/src/gnu/gcc/gcc-2.95.2/libstdc++/libio -I/tools/src/gnu/gcc/gcc-2.95.2/libstdc++/config/cpu/sparc/sparc32 -I/tools/src/gnu/gcc/gcc-2.95.2/libstdc++/config/solaris/solaris2.6 -I/tools/gnu/gcc/2.95.2/sun4u-5.6/include -g -O2 -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -g -fimplicit-templates -c -DFIND -DC=wchar_t -fPIC -DPIC /tools/src/gnu/gcc/gcc-2.95.2/libstdc++/src/string-inst.cc -o .libs/wstringFIND.lo /tools/src/gnu/gcc/gcc-2.95.2/libstdc++/src/string-inst.cc:301: syntax error before `::' make[4]: *** [wstringFIND.lo] Error 1 make[4]: Leaving directory `/tools/src/gnu/gcc/libstdc++-v3-sun4u-5.6/sparc-sun-solaris2.6/libstdc++/src' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/tools/src/gnu/gcc/libstdc++-v3-sun4u-5.6/sparc-sun-solaris2.6/libstdc++' make[2]: *** [all-recursive-am] Error 2 make[2]: Leaving directory `/tools/src/gnu/gcc/libstdc++-v3-sun4u-5.6/sparc-sun-solaris2.6/libstdc++' make[1]: *** [all-target-libstdc++] Error 2 make[1]: Leaving directory `/tools/src/gnu/gcc/libstdc++-v3-sun4u-5.6' make: *** [bootstrap] Error 2 >How-To-Repeat: make bootstrap on Solaris 2.6 and compile with gcc-2.95.2. >Fix: >Release-Note: >Audit-Trail: >Unformatted: From bkoz@redhat.com Thu Aug 17 09:57:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Thu, 17 Aug 2000 09:57:00 -0000 Subject: libstdc++/81: cannot compile version 3 with gcc-2.95.2 on Sol 2.6 Message-ID: <20000817165700.13281.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/81; it has been noted by GNATS. From: Benjamin Kosnik To: gregd@broadcom.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/81: cannot compile version 3 with gcc-2.95.2 on Sol 2.6 Date: Thu, 17 Aug 2000 09:54:22 -0700 (PDT) sadly, this is a well-known bug. The solaris builds have been broken since the libio merge. you can see this post for more info on what needs to happen to get all the king's men together again on solaris: http://sources.redhat.com/ml/libstdc++/2000-08/msg00025.html -benjamin From wappenschmidt@digital-security.com Mon Aug 21 09:27:00 2000 From: wappenschmidt@digital-security.com (wappenschmidt@digital-security.com) Date: Mon, 21 Aug 2000 09:27:00 -0000 Subject: libstdc++/82: problem opening a stream in binary mode Message-ID: <20000821162541.5795.qmail@sourceware.cygnus.com> >Number: 82 >Category: libstdc++ >Synopsis: problem opening a stream in binary mode >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Aug 21 09:27:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Armin Wappenschmidt >Release: libstdc++.so.2.10.0 >Organization: >Environment: gcc 2.95.2 on linux and solaris >Description: Opening a stream in binary mode doesn't work in this way: ifstream in("binary.dat", ios::binary); You can't read any values with ifstream::get(). Opening the binary with ifstream in("binary.dat", ios::in|ios::binary); does work correctly. A similiar problems occurs while writing to a binary stream. You have also to open it with "ios::out|ios::binary". >How-To-Repeat: >Fix: Instead of ifstream in ("binary.dat", ios::binary); ofstream out("binary.dat", ios::binary); use ifstream in ("binary.dat", ios::in |ios::binary); ofstream out("binary.dat", ios::out|ios::binary); >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-cppfile; name="tt.cpp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tt.cpp" I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBz dGQ7CgppbnQgbWFpbih2b2lkKQp7CiNpZiAwCiAgICBpZnN0cmVhbSBpbigiL2V0Yy9wYXNzd2Qi LCBpb3M6OmlufGlvczo6YmluYXJ5KTsKI2Vsc2UKICAgIGlmc3RyZWFtIGluKCIvZXRjL3Bhc3N3 ZCIsIGlvczo6YmluYXJ5KTsKI2VuZGlmCgogICAgaWYgKCFpbikgewogICAgICAgIGNlcnIgPDwg ImVycm9yIG9wZW5pbmcgZmlsZSIgPDwgZW5kbDsKICAgICAgICBleGl0KDEpOwogICAgfQogICAg CiAgICB3aGlsZSAoICFpbi5lb2YoKSApIHsKICAgICAgICBjb3V0IDw8IGluLmdldCgpIDw8ICIu IjsKICAgIH0KCiAgICBjb3V0IDw8IGVuZGw7CiAgICAKICAgIHJldHVybiAwOwp9Cg== From pedwards@disaster.jaj.com Mon Aug 21 09:37:00 2000 From: pedwards@disaster.jaj.com (Phil Edwards) Date: Mon, 21 Aug 2000 09:37:00 -0000 Subject: libstdc++/82: problem opening a stream in binary mode Message-ID: <20000821163700.10303.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/82; it has been noted by GNATS. From: Phil Edwards To: wappenschmidt@digital-security.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/82: problem opening a stream in binary mode Date: Mon, 21 Aug 2000 12:36:51 -0400 On Mon, Aug 21, 2000 at 04:25:41PM -0000, wappenschmidt@digital-security.com wrote: > >Release: libstdc++.so.2.10.0 > >Environment: > gcc 2.95.2 on linux and solaris 2.95.2 shipped with the older libstdc++-v2 library. This project (and bug reporting address) is for libstdc++-v3. > Opening a stream in binary mode doesn't work in this way: > ifstream in("binary.dat", ios::binary); > You can't read any values with ifstream::get(). > > Opening the binary with > ifstream in("binary.dat", ios::in|ios::binary); > does work correctly. Yep. Just one of the many ways in which libstdc++-v2 is noncompliant with the standard. This is already okay in -v3. Phil From kunert@physik.tu-dresden.de Fri Aug 25 05:37:00 2000 From: kunert@physik.tu-dresden.de (kunert@physik.tu-dresden.de) Date: Fri, 25 Aug 2000 05:37:00 -0000 Subject: libstdc++/83: Message-ID: <20000825122924.6091.qmail@sourceware.cygnus.com> >Number: 83 >Category: libstdc++ >Synopsis: >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Aug 25 05:37:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Thomas Kunert >Release: gcc version 2.96 20000824, libstdc++-v3 >Organization: >Environment: Linux-686 >Description: This code does not compile: #include using namespace std; int main() { toupper('a'); } >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From dmreece@flash.net Sun Aug 27 16:27:00 2000 From: dmreece@flash.net (dmreece@flash.net) Date: Sun, 27 Aug 2000 16:27:00 -0000 Subject: libstdc++/84: libstdc++-2.90.8 fails to build on Solaris 2.6 X86 Message-ID: <20000827232210.16338.qmail@sourceware.cygnus.com> >Number: 84 >Category: libstdc++ >Synopsis: libstdc++-2.90.8 fails to build on Solaris 2.6 X86 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun Aug 27 16:27:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: David M. Reece (dmreece@flash.net) >Release: libstdc++-2.90.8 >Organization: >Environment: Solaris 2.6 X86 on a standalone platform. gcc-2.95.2 compiler used to build. >Description: I build/installed the gcc-2.95.2 compiler with no problems. I then attempted to build the libstdc++-2.90.8 per the instructions contained in the tar file. I have included a capture of the build. >How-To-Repeat: 1. Build & Install gcc 2.95.2 per instructions. 2. Per libstdc++-2.90.8. - untar in src directory. 3. rename libstdc++ and libio to *-v2 files. 4. mv libstdc++-2.90.8 to v3 file and create softlink. 5. in objdir directory rerun configure per 2.95.2 instructions. 6. make bootstrap. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bug.report" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bug.report" IyBscwpDT1BZSU5HICAgICAgICAgICBjb25maWcuZ3Vlc3MgICAgICBpbnN0YWxsICAgICAgICAg ICBsdGNvbmZpZwpDT1BZSU5HLkxJQiAgICAgICBjb25maWcuaWYgICAgICAgICBpbnN0YWxsLXNo ICAgICAgICBsdG1haW4uc2gKQ2hhbmdlTG9nICAgICAgICAgY29uZmlnLnN1YiAgICAgICAgbGli Y2hpbGwgICAgICAgICAgbWlzc2luZwpGQVEgICAgICAgICAgICAgICBjb25maWd1cmUgICAgICAg ICBsaWJmMmMgICAgICAgICAgICBta2luc3RhbGxkaXJzCklOU1RBTEwgICAgICAgICAgIGNvbmZp Z3VyZS5pbiAgICAgIGxpYmliZXJ0eSAgICAgICAgIG1vdmUtaWYtY2hhbmdlCk1BSU5UQUlORVJT ICAgICAgIGNvbnRyaWIgICAgICAgICAgIGxpYmlvLXYyICAgICAgICAgIHN5bWxpbmstdHJlZQpN YWtlZmlsZS5pbiAgICAgICBldGMgICAgICAgICAgICAgICBsaWJvYmpjICAgICAgICAgICB0ZXhp bmZvClJFQURNRSAgICAgICAgICAgIGZhcS5odG1sICAgICAgICAgIGxpYnN0ZGMrKyAgICAgICAg IHlsd3JhcApjb25maWcgICAgICAgICAgICBnY2MgICAgICAgICAgICAgICBsaWJzdGRjKystMi45 MC44CmNvbmZpZy1tbC5pbiAgICAgIGluY2x1ZGUgICAgICAgICAgIGxpYnN0ZGMrKy12MgojIHB3 ZCAgICAKL2V4cG9ydC9ob21lL2dudS9nY2MvZ2NjLTIuOTUuMgojIGNkIC4uCiMgcHdkCi9leHBv cnQvaG9tZS9nbnUvZ2NjCiMgbHMKZ2NjLTIuOTUuMiAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnN0ZGMrKy0yXzhfMV8xLXNvbDI2LWludGVsLWxvY2FsCmdjYy0yXzEtc29sMjYtaW50ZWwt bG9jYWwgICAgICAgICAgICBsaWJzdGRjKystMl85MF84X3RhcgpnY2MtMl85NV8yX3RhciAgICAg ICAgICAgICAgICAgICAgICAgb2JqZGlyCmdjYy1nKystMl85NV8yX3RhcgoKCi0tLS0tUEFTVEUg b2YgQlVJTEQgT1VUUFVULS0tLS0tLS0tLQo1LjIvbGlic3RkYysrL3NyYyAtSS4uIC1ub3N0ZGlu YysrIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysgLUkuLi8uLi8uLi8uLi9nY2Mt Mi45NS4yL2xpYnN0ZGMrKy9zdGwgLUkuLi9saWJpbyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIv bGlic3RkYysrL2xpYmlvICAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2NvbmZp Zy9jcHUvZ2VuZXJpYyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2NvbmZpZy9z b2xhcmlzL3NvbGFyaXMyLjYgLUkvdXNyL2xvY2FsL2luY2x1ZGUgICAgICAtRF9HTlVfU09VUkNF IC1mbm8taW1wbGljaXQtdGVtcGxhdGVzIC1XYWxsIC1Xbm8tZm9ybWF0IC1XIC1Xd3JpdGUtc3Ry aW5ncyAtV2lubGluZSAtV2Vycm9yIC1nIC1maG9ub3Itc3RkICAtZyAtTzIgLWMgLi4vLi4vLi4v Li4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3JjL2lvcy5jYwpybSAtZiAubGlicy9pb3MubG8KL2V4 cG9ydC9ob21lL2dudS9nY2Mvb2JqZGlyL2djYy94Z2NjIC1CL2V4cG9ydC9ob21lL2dudS9nY2Mv b2JqZGlyL2djYy8gLUIvdXNyL2xvY2FsL2kzODYtcGMtc29sYXJpczIuNi9iaW4vIC1ESEFWRV9D T05GSUdfSCAtSS4gLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9zcmMgLUkuLiAt bm9zdGRpbmMrKyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrIC1JLi4vLi4vLi4v Li4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3RsIC1JLi4vbGliaW8gLUkuLi8uLi8uLi8uLi9nY2Mt Mi45NS4yL2xpYnN0ZGMrKy9saWJpbyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysr L2NvbmZpZy9jcHUvZ2VuZXJpYyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2Nv bmZpZy9zb2xhcmlzL3NvbGFyaXMyLjYgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLURfR05VX1NPVVJD RSAtZm5vLWltcGxpY2l0LXRlbXBsYXRlcyAtV2FsbCAtV25vLWZvcm1hdCAtVyAtV3dyaXRlLXN0 cmluZ3MgLVdpbmxpbmUgLVdlcnJvciAtZyAtZmhvbm9yLXN0ZCAtZyAtTzIgLWMgIC1mUElDIC1E UElDIC4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3NyYy9pb3MuY2MgLW8gLmxpYnMv aW9zLmxvCi9leHBvcnQvaG9tZS9nbnUvZ2NjL29iamRpci9nY2MveGdjYyAtQi9leHBvcnQvaG9t ZS9nbnUvZ2NjL29iamRpci9nY2MvIC1CL3Vzci9sb2NhbC9pMzg2LXBjLXNvbGFyaXMyLjYvYmlu LyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysv c3JjIC1JLi4gLW5vc3RkaW5jKysgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKyAt SS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3N0bCAtSS4uL2xpYmlvIC1JLi4vLi4v Li4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvbGliaW8gLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4y L2xpYnN0ZGMrKy9jb25maWcvY3B1L2dlbmVyaWMgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xp YnN0ZGMrKy9jb25maWcvc29sYXJpcy9zb2xhcmlzMi42IC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1E X0dOVV9TT1VSQ0UgLWZuby1pbXBsaWNpdC10ZW1wbGF0ZXMgLVdhbGwgLVduby1mb3JtYXQgLVcg LVd3cml0ZS1zdHJpbmdzIC1XaW5saW5lIC1XZXJyb3IgLWcgLWZob25vci1zdGQgLWcgLU8yIC1j IC4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3NyYy9pb3MuY2MgLW8gaW9zLm8gPi9k ZXYvbnVsbCAyPiYxCm12IC1mIC5saWJzL2lvcy5sbyBpb3MubG8KL2Jpbi9zaCAuLi9saWJ0b29s IC0tbW9kZT1jb21waWxlIC9leHBvcnQvaG9tZS9nbnUvZ2NjL29iamRpci9nY2MveGdjYyAtQi9l eHBvcnQvaG9tZS9nbnUvZ2NjL29iamRpci9nY2MvIC1CL3Vzci9sb2NhbC9pMzg2LXBjLXNvbGFy aXMyLjYvYmluLyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9s aWJzdGRjKysvc3JjIC1JLi4gLW5vc3RkaW5jKysgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xp YnN0ZGMrKyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3N0bCAtSS4uL2xpYmlv IC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvbGliaW8gIC1JLi4vLi4vLi4vLi4v Z2NjLTIuOTUuMi9saWJzdGRjKysvY29uZmlnL2NwdS9nZW5lcmljIC1JLi4vLi4vLi4vLi4vZ2Nj LTIuOTUuMi9saWJzdGRjKysvY29uZmlnL3NvbGFyaXMvc29sYXJpczIuNiAtSS91c3IvbG9jYWwv aW5jbHVkZSAgICAgIC1EX0dOVV9TT1VSQ0UgLWZuby1pbXBsaWNpdC10ZW1wbGF0ZXMgLVdhbGwg LVduby1mb3JtYXQgLVcgLVd3cml0ZS1zdHJpbmdzIC1XaW5saW5lIC1XZXJyb3IgLWcgLWZob25v ci1zdGQgIC1nIC1PMiAtYyAuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9zcmMvc3Rk c3RyZWFtcy5jYwpybSAtZiAubGlicy9zdGRzdHJlYW1zLmxvCi9leHBvcnQvaG9tZS9nbnUvZ2Nj L29iamRpci9nY2MveGdjYyAtQi9leHBvcnQvaG9tZS9nbnUvZ2NjL29iamRpci9nY2MvIC1CL3Vz ci9sb2NhbC9pMzg2LXBjLXNvbGFyaXMyLjYvYmluLyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4v Li4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3JjIC1JLi4gLW5vc3RkaW5jKysgLUkuLi8u Li8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGli c3RkYysrL3N0bCAtSS4uL2xpYmlvIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysv bGliaW8gLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9jb25maWcvY3B1L2dlbmVy aWMgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9jb25maWcvc29sYXJpcy9zb2xh cmlzMi42IC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1EX0dOVV9TT1VSQ0UgLWZuby1pbXBsaWNpdC10 ZW1wbGF0ZXMgLVdhbGwgLVduby1mb3JtYXQgLVcgLVd3cml0ZS1zdHJpbmdzIC1XaW5saW5lIC1X ZXJyb3IgLWcgLWZob25vci1zdGQgLWcgLU8yIC1jICAtZlBJQyAtRFBJQyAuLi8uLi8uLi8uLi9n Y2MtMi45NS4yL2xpYnN0ZGMrKy9zcmMvc3Rkc3RyZWFtcy5jYyAtbyAubGlicy9zdGRzdHJlYW1z LmxvCi9leHBvcnQvaG9tZS9nbnUvZ2NjL29iamRpci9nY2MveGdjYyAtQi9leHBvcnQvaG9tZS9n bnUvZ2NjL29iamRpci9nY2MvIC1CL3Vzci9sb2NhbC9pMzg2LXBjLXNvbGFyaXMyLjYvYmluLyAt REhBVkVfQ09ORklHX0ggLUkuIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3Jj IC1JLi4gLW5vc3RkaW5jKysgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKyAtSS4u Ly4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3N0bCAtSS4uL2xpYmlvIC1JLi4vLi4vLi4v Li4vZ2NjLTIuOTUuMi9saWJzdGRjKysvbGliaW8gLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xp YnN0ZGMrKy9jb25maWcvY3B1L2dlbmVyaWMgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0 ZGMrKy9jb25maWcvc29sYXJpcy9zb2xhcmlzMi42IC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1EX0dO VV9TT1VSQ0UgLWZuby1pbXBsaWNpdC10ZW1wbGF0ZXMgLVdhbGwgLVduby1mb3JtYXQgLVcgLVd3 cml0ZS1zdHJpbmdzIC1XaW5saW5lIC1XZXJyb3IgLWcgLWZob25vci1zdGQgLWcgLU8yIC1jIC4u Ly4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3NyYy9zdGRzdHJlYW1zLmNjIC1vIHN0ZHN0 cmVhbXMubyA+L2Rldi9udWxsIDI+JjEKbXYgLWYgLmxpYnMvc3Rkc3RyZWFtcy5sbyBzdGRzdHJl YW1zLmxvCi9iaW4vc2ggLi4vbGlidG9vbCAtLW1vZGU9Y29tcGlsZSAvZXhwb3J0L2hvbWUvZ251 L2djYy9vYmpkaXIvZ2NjL3hnY2MgLUIvZXhwb3J0L2hvbWUvZ251L2djYy9vYmpkaXIvZ2NjLyAt Qi91c3IvbG9jYWwvaTM4Ni1wYy1zb2xhcmlzMi42L2Jpbi8gLURIQVZFX0NPTkZJR19IIC1JLiAt SS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3NyYyAtSS4uIC1ub3N0ZGluYysrIC1J Li4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4y L2xpYnN0ZGMrKy9zdGwgLUkuLi9saWJpbyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3Rk YysrL2xpYmlvICAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2NvbmZpZy9jcHUv Z2VuZXJpYyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2NvbmZpZy9zb2xhcmlz L3NvbGFyaXMyLjYgLUkvdXNyL2xvY2FsL2luY2x1ZGUgICAgICAtRF9HTlVfU09VUkNFIC1mbm8t aW1wbGljaXQtdGVtcGxhdGVzIC1XYWxsIC1Xbm8tZm9ybWF0IC1XIC1Xd3JpdGUtc3RyaW5ncyAt V2lubGluZSAtV2Vycm9yIC1nIC1maG9ub3Itc3RkICAtZyAtTzIgLWMgLi4vLi4vLi4vLi4vZ2Nj LTIuOTUuMi9saWJzdGRjKysvc3JjL3N0cnN0cmVhbS5jYwpybSAtZiAubGlicy9zdHJzdHJlYW0u bG8KL2V4cG9ydC9ob21lL2dudS9nY2Mvb2JqZGlyL2djYy94Z2NjIC1CL2V4cG9ydC9ob21lL2du dS9nY2Mvb2JqZGlyL2djYy8gLUIvdXNyL2xvY2FsL2kzODYtcGMtc29sYXJpczIuNi9iaW4vIC1E SEFWRV9DT05GSUdfSCAtSS4gLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9zcmMg LUkuLiAtbm9zdGRpbmMrKyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrIC1JLi4v Li4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3RsIC1JLi4vbGliaW8gLUkuLi8uLi8uLi8u Li9nY2MtMi45NS4yL2xpYnN0ZGMrKy9saWJpbyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGli c3RkYysrL2NvbmZpZy9jcHUvZ2VuZXJpYyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3Rk YysrL2NvbmZpZy9zb2xhcmlzL3NvbGFyaXMyLjYgLUkvdXNyL2xvY2FsL2luY2x1ZGUgLURfR05V X1NPVVJDRSAtZm5vLWltcGxpY2l0LXRlbXBsYXRlcyAtV2FsbCAtV25vLWZvcm1hdCAtVyAtV3dy aXRlLXN0cmluZ3MgLVdpbmxpbmUgLVdlcnJvciAtZyAtZmhvbm9yLXN0ZCAtZyAtTzIgLWMgIC1m UElDIC1EUElDIC4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3NyYy9zdHJzdHJlYW0u Y2MgLW8gLmxpYnMvc3Ryc3RyZWFtLmxvCi9leHBvcnQvaG9tZS9nbnUvZ2NjL29iamRpci9nY2Mv eGdjYyAtQi9leHBvcnQvaG9tZS9nbnUvZ2NjL29iamRpci9nY2MvIC1CL3Vzci9sb2NhbC9pMzg2 LXBjLXNvbGFyaXMyLjYvYmluLyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4vLi4vLi4vLi4vZ2Nj LTIuOTUuMi9saWJzdGRjKysvc3JjIC1JLi4gLW5vc3RkaW5jKysgLUkuLi8uLi8uLi8uLi9nY2Mt Mi45NS4yL2xpYnN0ZGMrKyAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3N0bCAt SS4uL2xpYmlvIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvbGliaW8gLUkuLi8u Li8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9jb25maWcvY3B1L2dlbmVyaWMgLUkuLi8uLi8u Li8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9jb25maWcvc29sYXJpcy9zb2xhcmlzMi42IC1JL3Vz ci9sb2NhbC9pbmNsdWRlIC1EX0dOVV9TT1VSQ0UgLWZuby1pbXBsaWNpdC10ZW1wbGF0ZXMgLVdh bGwgLVduby1mb3JtYXQgLVcgLVd3cml0ZS1zdHJpbmdzIC1XaW5saW5lIC1XZXJyb3IgLWcgLWZo b25vci1zdGQgLWcgLU8yIC1jIC4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3NyYy9z dHJzdHJlYW0uY2MgLW8gc3Ryc3RyZWFtLm8gPi9kZXYvbnVsbCAyPiYxCm12IC1mIC5saWJzL3N0 cnN0cmVhbS5sbyBzdHJzdHJlYW0ubG8KL2Jpbi9zaCAuLi9saWJ0b29sIC0tbW9kZT1jb21waWxl IC9leHBvcnQvaG9tZS9nbnUvZ2NjL29iamRpci9nY2MveGdjYyAtQi9leHBvcnQvaG9tZS9nbnUv Z2NjL29iamRpci9nY2MvIC1CL3Vzci9sb2NhbC9pMzg2LXBjLXNvbGFyaXMyLjYvYmluLyAtREhB VkVfQ09ORklHX0ggLUkuIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3JjIC1J Li4gLW5vc3RkaW5jKysgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKyAtSS4uLy4u Ly4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL3N0bCAtSS4uL2xpYmlvIC1JLi4vLi4vLi4vLi4v Z2NjLTIuOTUuMi9saWJzdGRjKysvbGliaW8gIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJz dGRjKysvY29uZmlnL2NwdS9nZW5lcmljIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRj KysvY29uZmlnL3NvbGFyaXMvc29sYXJpczIuNiAtSS91c3IvbG9jYWwvaW5jbHVkZSAgICAgIC1E X0dOVV9TT1VSQ0UgLWZuby1pbXBsaWNpdC10ZW1wbGF0ZXMgLVdhbGwgLVduby1mb3JtYXQgLVcg LVd3cml0ZS1zdHJpbmdzIC1XaW5saW5lIC1XZXJyb3IgLWcgLWZob25vci1zdGQgIC1nIC1PMiAt YyAuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9zcmMvbG9jYWxlLmNjCnJtIC1mIC5s aWJzL2xvY2FsZS5sbwovZXhwb3J0L2hvbWUvZ251L2djYy9vYmpkaXIvZ2NjL3hnY2MgLUIvZXhw b3J0L2hvbWUvZ251L2djYy9vYmpkaXIvZ2NjLyAtQi91c3IvbG9jYWwvaTM4Ni1wYy1zb2xhcmlz Mi42L2Jpbi8gLURIQVZFX0NPTkZJR19IIC1JLiAtSS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGli c3RkYysrL3NyYyAtSS4uIC1ub3N0ZGluYysrIC1JLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJz dGRjKysgLUkuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9zdGwgLUkuLi9saWJpbyAt SS4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2xpYmlvIC1JLi4vLi4vLi4vLi4vZ2Nj LTIuOTUuMi9saWJzdGRjKysvY29uZmlnL2NwdS9nZW5lcmljIC1JLi4vLi4vLi4vLi4vZ2NjLTIu OTUuMi9saWJzdGRjKysvY29uZmlnL3NvbGFyaXMvc29sYXJpczIuNiAtSS91c3IvbG9jYWwvaW5j bHVkZSAtRF9HTlVfU09VUkNFIC1mbm8taW1wbGljaXQtdGVtcGxhdGVzIC1XYWxsIC1Xbm8tZm9y bWF0IC1XIC1Xd3JpdGUtc3RyaW5ncyAtV2lubGluZSAtV2Vycm9yIC1nIC1maG9ub3Itc3RkIC1n IC1PMiAtYyAgLWZQSUMgLURQSUMgLi4vLi4vLi4vLi4vZ2NjLTIuOTUuMi9saWJzdGRjKysvc3Jj L2xvY2FsZS5jYyAtbyAubGlicy9sb2NhbGUubG8KSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3Iv bG9jYWwvbGliL2djYy1saWIvaTM4Ni1wYy1zb2xhcmlzMi42LzIuOTUuMi9pbmNsdWRlL2xpbWl0 cy5oOjExNywKICAgICAgICAgICAgICAgICBmcm9tIC9leHBvcnQvaG9tZS9nbnUvZ2NjL29iamRp ci9nY2MvaW5jbHVkZS9saW1pdHMuaDoxMTcsCiAgICAgICAgICAgICAgICAgZnJvbSAvZXhwb3J0 L2hvbWUvZ251L2djYy9vYmpkaXIvZ2NjL2luY2x1ZGUvc3lzbGltaXRzLmg6NywKICAgICAgICAg ICAgICAgICBmcm9tIC9leHBvcnQvaG9tZS9nbnUvZ2NjL29iamRpci9nY2MvaW5jbHVkZS9saW1p dHMuaDoxMSwKICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uLy4uLy4uL2djYy0yLjk1LjIvbGli c3RkYysrL2JpdHMvc3RkX2NsaW1pdHMuaDozOCwKICAgICAgICAgICAgICAgICBmcm9tIC4uLy4u Ly4uLy4uL2djYy0yLjk1LjIvbGlic3RkYysrL2JpdHMvbG9jYWxlZndkLmg6MzgsCiAgICAgICAg ICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9nY2MtMi45NS4yL2xpYnN0ZGMrKy9iaXRzL3N0ZF9s b2NhbGUuaDozNywKICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uLy4uLy4uL2djYy0yLjk1LjIv bGlic3RkYysrL3NyYy9sb2NhbGUuY2M6MzU6Ci91c3IvaW5jbHVkZS9saW1pdHMuaDoxOTc6IHdh cm5pbmc6IGBEQkxfTUFYJyByZWRlZmluZWQKL2V4cG9ydC9ob21lL2dudS9nY2Mvb2JqZGlyL2dj Yy9pbmNsdWRlL2Zsb2F0Lmg6NjM6IHdhcm5pbmc6IHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRo ZSBwcmV2aW91cyBkZWZpbml0aW9uCi91c3IvaW5jbHVkZS9saW1pdHMuaDoxOTk6IHdhcm5pbmc6 IGBEQkxfTUlOJyByZWRlZmluZWQKL2V4cG9ydC9ob21lL2dudS9nY2Mvb2JqZGlyL2djYy9pbmNs dWRlL2Zsb2F0Lmg6NTQ6IHdhcm5pbmc6IHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcmV2 aW91cyBkZWZpbml0aW9uCi91c3IvaW5jbHVkZS9saW1pdHMuaDoyMDI6IHdhcm5pbmc6IGBGTFRf TUFYJyByZWRlZmluZWQKL2V4cG9ydC9ob21lL2dudS9nY2Mvb2JqZGlyL2djYy9pbmNsdWRlL2Zs b2F0Lmg6MzU6IHdhcm5pbmc6IHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcmV2aW91cyBk ZWZpbml0aW9uCi91c3IvaW5jbHVkZS9saW1pdHMuaDoyMDM6IHdhcm5pbmc6IGBGTFRfTUlOJyBy ZWRlZmluZWQKL2V4cG9ydC9ob21lL2dudS9nY2Mvb2JqZGlyL2djYy9pbmNsdWRlL2Zsb2F0Lmg6 MjY6IHdhcm5pbmc6IHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcmV2aW91cyBkZWZpbml0 aW9uCm1ha2VbNF06ICoqKiBbbG9jYWxlLmxvXSBFcnJvciAxCm1ha2VbNF06IExlYXZpbmcgZGly ZWN0b3J5IGAvZXhwb3J0L2hvbWUvZ251L2djYy9vYmpkaXIvaTM4Ni1wYy1zb2xhcmlzMi42L2xp YnN0ZGMrKy9zcmMnCm1ha2VbM106ICoqKiBbYWxsLXJlY3Vyc2l2ZV0gRXJyb3IgMQptYWtlWzNd OiBMZWF2aW5nIGRpcmVjdG9yeSBgL2V4cG9ydC9ob21lL2dudS9nY2Mvb2JqZGlyL2kzODYtcGMt c29sYXJpczIuNi9saWJzdGRjKysnCm1ha2VbMl06ICoqKiBbYWxsLXJlY3Vyc2l2ZS1hbV0gRXJy b3IgMgptYWtlWzJdOiBMZWF2aW5nIGRpcmVjdG9yeSBgL2V4cG9ydC9ob21lL2dudS9nY2Mvb2Jq ZGlyL2kzODYtcGMtc29sYXJpczIuNi9saWJzdGRjKysnCm1ha2VbMV06ICoqKiBbYWxsLXRhcmdl dC1saWJzdGRjKytdIEVycm9yIDIKbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYC9leHBvcnQv aG9tZS9nbnUvZ2NjL29iamRpcicKbWFrZTogKioqIFtib290c3RyYXBdIEVycm9yIDIKCgotLS0t LS1kdW1wIG9mIGVudmlyb25tZW50LS0tLS0tCiMgZW52CkFCX0NBUkRDQVRBTE9HPS91c3IvZHQv c2hhcmUvYW5zd2VyYm9va3MvQy9hYl9jYXJkY2F0YWxvZwpESVNQTEFZPTowLjAKRFRBUFBTRUFS Q0hQQVRIPS8vLmR0L2FwcG1hbmFnZXI6L3Vzci9kdC9hcHBjb25maWcvYXBwbWFuYWdlci8lTDov dXNyL2R0L2FwcGNvbmZpZy9hcHBtYW5hZ2VyL0MKRFREQVRBQkFTRVNFQVJDSFBBVEg9Ly8uZHQv dHlwZXMsL3Vzci9kdC9hcHBjb25maWcvdHlwZXMvJUwsL3Vzci9kdC9hcHBjb25maWcvdHlwZXMv QwpEVEhFTFBTRUFSQ0hQQVRIPS8vLmR0L2hlbHAvcm9vdC1tb3phcnQtMC8lSDovLy5kdC9oZWxw L3Jvb3QtbW96YXJ0LTAvJUguc2RsOi8vLmR0L2hlbHAvcm9vdC1tb3phcnQtMC8lSC5odjovLy5k dC9oZWxwLyVIOi8vLmR0L2hlbHAvJUguc2RsOi8vLmR0L2hlbHAvJUguaHY6L3Vzci9kdC9hcHBj b25maWcvaGVscC8lTC8lSDovdXNyL2R0L2FwcGNvbmZpZy9oZWxwLyVMLyVILnNkbDovdXNyL2R0 L2FwcGNvbmZpZy9oZWxwLyVMLyVILmh2Oi91c3IvZHQvYXBwY29uZmlnL2hlbHAvQy8lSDovdXNy L2R0L2FwcGNvbmZpZy9oZWxwL0MvJUguc2RsOi91c3IvZHQvYXBwY29uZmlnL2hlbHAvQy8lSC5o dgpEVFNDUkVFTlNBVkVSTElTVD1TdGFydER0c2NyZWVuU3dhcm0gU3RhcnREdHNjcmVlblFpeCAg ICAgU3RhcnREdHNjcmVlbkZsYW1lIFN0YXJ0RHRzY3JlZW5Ib3AgU3RhcnREdHNjcmVlbkltYWdl IFN0YXJ0RHRzY3JlZW5MaWZlICAgICBTdGFydER0c2NyZWVuUm90b3IgU3RhcnREdHNjcmVlblB5 cm8gU3RhcnREdHNjcmVlbldvcm0gU3RhcnREdHNjcmVlbkJsYW5rCkRUU09VUkNFUFJPRklMRT10 cnVlCkRUVVNFUlNFU1NJT049cm9vdC1tb3phcnQtMApEVFhTRVJWRVJMT0NBVElPTj1sb2NhbApF RElUT1I9L3Vzci9kdC9iaW4vZHRwYWQKSEVMUFBBVEg9L3Vzci9vcGVud2luL2xpYi9sb2NhbGU6 L3Vzci9vcGVud2luL2xpYi9oZWxwCkhPTUU9LwpMQU5HPUMKTE9HTkFNRT1yb290Ck1BSUw9L3Zh ci9tYWlsL3Jvb3QKTUFOUEFUSD0vdXNyL2R0L21hbjovdXNyL21hbjovdXNyL29wZW53aW4vc2hh cmUvbWFuCk9QRU5XSU5IT01FPS91c3Ivb3BlbndpbgpQQVRIPS46L3Vzci9sb2NhbC9iaW46L3Vz ci9jY3MvYmluOi91c3IvZHQvYmluOi91c3Ivb3Blbndpbi9iaW46L2JpbjovdXNyL2JpbjovdXNy L3VjYjovdXNyL3NiaW46L3Vzci9vcGVud2luL2JpbgpQV0Q9LwpTRVNTSU9OVFlQRT1hbHREdApT RVNTSU9OX1NWUj1tb3phcnQKU0hFTEw9L3NiaW4vc2gKVEVSTT14dGVybQpURVJNQ0FQPXN1bi1j bWQ6dGU9XEVbPjRoOnRpPVxFWz40bDp0Yz1zdW46ClRaPVVTL0NlbnRyYWwKVVNFUj1yb290CldJ TkRPV0lEPTcxMzAzMTgxCldJTkRPV19URVJNSU9TPQpYRklMRVNFQVJDSFBBVEg9L3Vzci9vcGVu d2luL2xpYi9sb2NhbGUvJUwvJVQvJU4lUzovdXNyL29wZW53aW4vbGliLyVULyVOJVMKWE1CSU5E RElSPS91c3IvZHQvbGliL2JpbmRpbmdzClhNSUNPTkJNU0VBUkNIUEFUSD0vLy5kdC9pY29ucy8l QiVNLmJtOi8vLmR0L2ljb25zLyVCJU0ucG06Ly8uZHQvaWNvbnMvJUI6L3Vzci9kdC9hcHBjb25m aWcvaWNvbnMvJUwvJUIlTS5ibTovdXNyL2R0L2FwcGNvbmZpZy9pY29ucy8lTC8lQiVNLnBtOi91 c3IvZHQvYXBwY29uZmlnL2ljb25zLyVMLyVCOi91c3IvZHQvYXBwY29uZmlnL2ljb25zL0MvJUIl TS5ibTovdXNyL2R0L2FwcGNvbmZpZy9pY29ucy9DLyVCJU0ucG06L3Vzci9kdC9hcHBjb25maWcv aWNvbnMvQy8lQgpYTUlDT05TRUFSQ0hQQVRIPS8vLmR0L2ljb25zLyVCJU0ucG06Ly8uZHQvaWNv bnMvJUIlTS5ibTovLy5kdC9pY29ucy8lQjovdXNyL2R0L2FwcGNvbmZpZy9pY29ucy8lTC8lQiVN LnBtOi91c3IvZHQvYXBwY29uZmlnL2ljb25zLyVMLyVCJU0uYm06L3Vzci9kdC9hcHBjb25maWcv aWNvbnMvJUwvJUI6L3Vzci9kdC9hcHBjb25maWcvaWNvbnMvQy8lQiVNLnBtOi91c3IvZHQvYXBw Y29uZmlnL2ljb25zL0MvJUIlTS5ibTovdXNyL2R0L2FwcGNvbmZpZy9pY29ucy9DLyVCCl89L3Vz ci9vcGVud2luL2xpYi9vcGVud2luLWluaXQKZHRzdGFydF9zZXNzaW9ubG9nZmlsZT0vZGV2L251 bGwKIw== From Patrick.Vankeirsbilck@iib.vub.ac.be Fri Sep 1 03:47:00 2000 From: Patrick.Vankeirsbilck@iib.vub.ac.be (Patrick.Vankeirsbilck@iib.vub.ac.be) Date: Fri, 01 Sep 2000 03:47:00 -0000 Subject: libstdc++/85: Standard C++ locale Message-ID: <20000901104319.22474.qmail@sourceware.cygnus.com> >Number: 85 >Category: libstdc++ >Synopsis: Standard C++ locale >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Sep 01 03:47:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Patrick.Vankeirsbilck@iib.vub.ac.be >Release: unknown-1.0 >Organization: >Environment: last night's experimental g++ compiler >Description: standard headers not found: , , class locale not defined >How-To-Repeat: just try to compile the attached file local.cxx using as additional compile flag '-DOS_LINUX' >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="local.cxx" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="local.cxx" I2luY2x1ZGUgPGxvY2FsZT4KI2luY2x1ZGUgPGlvc2Z3ZD4KI2luY2x1ZGUgPG9zdHJlYW0+CiNp bmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNzdHJlYW0+Cgoj aW5jbHVkZSAidGltZS5oIgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIGV4aXN0aW5nIGxvY2Fs ZXMgdW5kZXIgSVJJWDogImVuIiwgIm5sIiwgImRlIiwgImVzIiwgImZyIiwgIml0IgovLyBleGlz dGluZyBsb2NhbGVzIHVuZGVyIExJTlVYOiBQT1NJWCAgZGVfREUgICAgICBlbl9HQiAgZXNfQ08g IGVzX1BZICBmb19GTyAgICAgICBoZV9JTCAgamFfSlAgIHB0X0JSICBzdl9TRQovLyBhZl9aQSAg ZGVfTFUgICAgICBlbl9JRSAgZXNfRE8gIGVzX1NWICBmcl9CRSAgICAgICBocl9IUiAga2xfR0wg IHB0X1BUICB0aF9USAovLyBhcl9TQSAgZWxfR1IgICAgICBlbl9OWiAgZXNfRUMgIGVzX1VTICBm cl9DQSAgICAgICBodV9IVSAgbHRfTFQgIHJvX1JPICB0cl9UUgovLyBjYV9FUyAgZW5fQVUgICAg ICBlbl9VUyAgZXNfRVMgIGVzX1VZICBmcl9DQSwyLjEzICBpZF9JRCAgbHZfTFYgIHJ1X1JVICB1 a19VQQovLyBjc19DWiAgZW5fQlcgICAgICBlbl9aQSAgZXNfR1QgIGVzX1ZFICBmcl9DSCAgICAg ICBpbl9JRCAgbWtfTUsgIHJ1X1VBICB6aF9DTgovLyBkYV9ESyAgZW5fQ0EgICAgICBlbl9aVyAg ZXNfSE4gIGV0X0VFICBmcl9GUiAgICAgICBpc19JUyAgbmxfQkUgIHNrX1NLCi8vIGRlX0FUICBl bl9DQSwyLjUgIGVzX0FSICBlc19NWCAgZXVfRVMgIGZyX0xVICAgICAgIGl0X0NIICBubF9OTCAg c2xfU0kKLy8gZGVfQkUgIGVuX0RLICAgICAgZXNfQk8gIGVzX1BBICBmYV9JUiAgZ2FfSUUgICAg ICAgaXRfSVQgIG5vX05PICBzcl9ZVQovLyBkZV9DSCAgZW5fREsuY29tICBlc19DTCAgZXNfUEUg IGZpX0ZJICBnbF9FUyAgICAgICBpd19JTCAgcGxfUEwgIHN2X0ZJCgp2b2lkIHByaW50ICggY29u c3QgbG9jYWxlJiBsb2MpIHsKICBjb3V0IDw8ICJsb2NhbGUgbmFtZSA9ICIgPDwgbG9jLm5hbWUo KSA8PCAiOiAiIDw8IGZsdXNoOwogIGNvdXQuaW1idWUobG9jKTsKCiAgaWYgKCBpc3VwcGVyKCdc Mzc0Jyxsb2MpICkKICAgIGNvdXQgPDwgJ1wzNzQnIDw8ICIgaXMgVVBQRVIgY2FzZSIgPDwgIiAi IDw8IGZsdXNoOwogIGVsc2UKICAgIGNvdXQgPDwgJ1wzNzQnIDw8ICIgaXMgbG93ZXIgY2FzZSIg PDwgIiAiIDw8IGZsdXNoOwogIGlmICggaXN1cHBlcignXDMzNCcsbG9jKSApCiAgICBjb3V0IDw8 ICdcMzM0JyA8PCAiIGlzIFVQUEVSIGNhc2UiIDw8ICIgIiA8PCBmbHVzaDsKICBlbHNlCiAgICBj b3V0IDw8ICdcMzM0JyA8PCAiIGlzIGxvd2VyIGNhc2UiIDw8ICIgIiA8PCBmbHVzaDsKICBjb3V0 IDw8IGVuZGw7Cn0KCnZvaWQgcHJpbnRGbG9hdCAoIGNvbnN0IGxvY2FsZSYgbG9jKSB7CiAgY291 dCA8PCAibG9jYWxlIG5hbWUgPSAiIDw8IGxvYy5uYW1lKCkgPDwgIjogIiA8PCBmbHVzaDsKICBj b3V0LmltYnVlKGxvYyk7CgogIGRvdWJsZSBhID0gLTEzLjQ1ZS02OwogIGRvdWJsZSBiID0gLTUu NzhlKzY7CgogIGNvdXQgPDwgYSA8PCAiICIgPDwgYiA8PCBlbmRsOwp9Cgp2b2lkIHByaW50RGF0 ZSAoIGNvbnN0IGxvY2FsZSYgbG9jKSB7CiAgY291dCA8PCAibG9jYWxlIG5hbWUgPSAiIDw8IGxv Yy5uYW1lKCkgPDwgIjogIiA8PCBmbHVzaDsKCiAgdG0gdGlqZDsKICB0aW1lX3QgdGQgPSBta3Rp bWUoJnRpamQpOwogIHRpbWVfdCBudSA9IHRpbWUoJnRkKTsKICB0bSogbm51ICAgPSBnbXRpbWUo Jm51KTsKCiAgc3RyaW5nc3RyZWFtIHN0cjsKCiAgdXNlX2ZhY2V0PCB0aW1lX3B1dDxjaGFyPiA+ KGxvYykucHV0KHN0cixzdHIsJzAnLG5udSwnYycpOwogIHN0ciA8PCAiICI7CiAgdXNlX2ZhY2V0 PCB0aW1lX3B1dDxjaGFyPiA+KGxvYykucHV0KHN0cixzdHIsJzAnLG5udSwnWCcpOwogIGNvdXQg PDwgc3RyLnN0cigpIDw8IGVuZGw7Cn0KCnRlbXBsYXRlIDxjbGFzcyBGVU5DPgp2b2lkIGRvT25M b2NhbGVzICggY29uc3QgdmVjdG9yPGxvY2FsZT4mIGxvY3MsIGNvbnN0IEZVTkMmIGZ1bmMpIHsK CiAgdmVjdG9yPGxvY2FsZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbG9jcy5iZWdpbigpOwoKICBm b3IgKCA7IGl0IT1sb2NzLmVuZCgpOyArK2l0ICkgewogICAgZnVuYygqaXQpOwogIH0KfQoKdm9p ZCBtYWluKCkgewogIHZlY3Rvcjxsb2NhbGU+IGxvY3M7CgojaWZkZWYgX19zZ2kKICBsb2NzLnB1 c2hfYmFjayhsb2NhbGUoImVuIikpOwogIGxvY3MucHVzaF9iYWNrKGxvY2FsZSgibmwiKSk7CiAg bG9jcy5wdXNoX2JhY2sobG9jYWxlKCJkZSIpKTsKICBsb2NzLnB1c2hfYmFjayhsb2NhbGUoImVz IikpOwogIGxvY3MucHVzaF9iYWNrKGxvY2FsZSgiZnIiKSk7CiAgbG9jcy5wdXNoX2JhY2sobG9j YWxlKCJkYSIpKTsKICBsb2NzLnB1c2hfYmFjayhsb2NhbGUoIm5vIikpOwogIGxvY3MucHVzaF9i YWNrKGxvY2FsZSgidHIiKSk7CiAgbG9jcy5wdXNoX2JhY2sobG9jYWxlKCJlbCIpKTsKICBsb2Nz LnB1c2hfYmFjayhsb2NhbGUoImNzIikpOwogIGxvY3MucHVzaF9iYWNrKGxvY2FsZSgiZmkiKSk7 CiAgbG9jcy5wdXNoX2JhY2sobG9jYWxlKCJodSIpKTsKICBsb2NzLnB1c2hfYmFjayhsb2NhbGUo ImlzIikpOwogIGxvY3MucHVzaF9iYWNrKGxvY2FsZSgicHQiKSk7CiAgbG9jcy5wdXNoX2JhY2so bG9jYWxlKCJydSIpKTsKICBsb2NzLnB1c2hfYmFjayhsb2NhbGUoInNrIikpOwogIGxvY3MucHVz aF9iYWNrKGxvY2FsZSgic3YiKSk7CiNlbGlmIGRlZmluZWQgT1NfTElOVVgKICBsb2NzLnB1c2hf YmFjayhsb2NhbGUoImVuX1VTIikpOwojZW5kaWYKCiAgZG9PbkxvY2FsZXMobG9jcyxwcmludCk7 CiAgZG9PbkxvY2FsZXMobG9jcyxwcmludEZsb2F0KTsKICBkb09uTG9jYWxlcyhsb2NzLHByaW50 RGF0ZSk7Cn0K From bkoz@redhat.com Fri Sep 1 11:07:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Fri, 01 Sep 2000 11:07:00 -0000 Subject: libstdc++/85: Standard C++ locale Message-ID: <20000901180700.31491.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/85; it has been noted by GNATS. From: Benjamin Kosnik To: Patrick.Vankeirsbilck@iib.vub.ac.be Cc: libstdc++-gnats@sourceware.cygnus.com, athana@vki.ac.be Subject: Re: libstdc++/85: Standard C++ locale Date: Fri, 1 Sep 2000 11:03:31 -0700 (PDT) > last night's experimental g++ compiler > >Description: > standard headers not found: , , There must be something wrong with your install. If you run "make check" in the libstdc++-v3 build directory, the very first testprogram tries to find all the headers. > just try to compile the attached file local.cxx using as additional > compile flag '-DOS_LINUX' the attachment is corrupt. Can you please just send a plain text file? thanks, benjamin From bgarcia@laurelnetworks.com Thu Sep 7 04:27:00 2000 From: bgarcia@laurelnetworks.com (bgarcia@laurelnetworks.com) Date: Thu, 07 Sep 2000 04:27:00 -0000 Subject: libstdc++/86: map & set iterator comparisons are not type-safe Message-ID: <20000907112139.6301.qmail@sourceware.cygnus.com> >Number: 86 >Category: libstdc++ >Synopsis: map & set iterator comparisons are not type-safe >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Sep 07 04:27:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: bgarcia@laurelnetworks.com >Release: 2.90.8 & CVS >Organization: >Environment: all >Description: There is a bug in bits/stl_tree.h that allows you to compare two iterators (map or set iterators) of arbitrary types. An example program containing incorrect code that compiles and runs is included in the How-To-Repeat section. The problem is that operator==() and operator!=() are defined to take _Rb_tree_base_iterator arguments. The fix is to make these functions templates that take _Rb_tree_iterator<> arguments instead. This should not result in any less efficiency, since in both cases these functions are declared inline. The appropriate diff for libstdc++-2.90.8 follows. The CVS version of the file does not appear to have changed significantly, so this should also be applicable to the head-of-line code. >How-To-Repeat: And here's a little test program that exposes the bug: #include #include #include int main(int argc, char** argv) { std::map mapByIndex; std::map mapByName; (void)mapByIndex.insert(std::pair(0,1)); (void)mapByIndex.insert(std::pair(6,5)); unsigned i(0); std::map::iterator itr(mapByIndex.begin()); while (itr != mapByName.end()) // XXX - notice, it's not mapByIndex!! { std::cout << "In loop, " << i << std::endl; std::cout.flush(); ++i; ++itr; } return 0; } >Fix: *** original/bits/stl_tree.h Mon May 8 09:57:34 2000 --- new/bits/stl_tree.h Fri Aug 25 08:02:47 2000 *************** *** 184,196 **** } }; ! inline bool operator==(const _Rb_tree_base_iterator& __x, ! const _Rb_tree_base_iterator& __y) { return __x._M_node == __y._M_node; } ! inline bool operator!=(const _Rb_tree_base_iterator& __x, ! const _Rb_tree_base_iterator& __y) { return __x._M_node != __y._M_node; } --- 184,198 ---- } }; ! template ! inline bool operator==(const _Rb_tree_iterator<_Value, _Ref, _Ptr>& __x, ! const _Rb_tree_iterator<_Value, _Ref, _Ptr>& __y) { return __x._M_node == __y._M_node; } ! template ! inline bool operator!=(const _Rb_tree_iterator<_Value, _Ref, _Ptr>& __x, ! const _Rb_tree_iterator<_Value, _Ref, _Ptr>& __y) { return __x._M_node != __y._M_node; } >Release-Note: >Audit-Trail: >Unformatted: From bkoz@redhat.com Thu Sep 7 10:47:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Thu, 07 Sep 2000 10:47:00 -0000 Subject: libstdc++/86: map & set iterator comparisons are not type-safe Message-ID: <20000907174700.19186.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/86; it has been noted by GNATS. From: Benjamin Kosnik To: bgarcia@laurelnetworks.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/86: map & set iterator comparisons are not type-safe Date: Thu, 7 Sep 2000 10:37:15 -0700 (PDT) thanks this is an especially well-formed bug report. i'll check this stuff in later today. nice to be working with you. . . . -benjamin On 7 Sep 2000 bgarcia@laurelnetworks.com wrote: > > The problem is that operator==() and operator!=() are > defined to take _Rb_tree_base_iterator arguments. > The fix is to make these functions templates that take > _Rb_tree_iterator<> arguments instead. This should not > result in any less efficiency, since in both cases these > functions are declared inline. > From brendan@zen.org Thu Sep 14 08:37:00 2000 From: brendan@zen.org (brendan@zen.org) Date: Thu, 14 Sep 2000 08:37:00 -0000 Subject: libstdc++/89: missing typename in string.tcc for _Rep::_S_max_size Message-ID: <20000914153539.18048.qmail@sourceware.cygnus.com> >Number: 89 >Category: libstdc++ >Synopsis: missing typename in string.tcc for _Rep::_S_max_size >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Sep 14 08:37:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Brendan Kehoe >Release: unknown-1.0 >Organization: >Environment: >Description: The use of size_type in _Rep::_S_max_size is missing a `typename' keyword. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="diffs-string.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diffs-string.txt" MjAwMC0wOS0xNCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AemVuLm9yZz4KCgkqIGJpdHMvc3Ry aW5nLnRjYyAoX1JlcDo6X1NfbWF4X3NpemUpOiBVc2UgdHlwZW5hbWUgZm9yIGl0cyBzaXplX3R5 cGUKCXJldHVybiB0eXBlLgoKSW5kZXg6IGJpdHMvc3RyaW5nLnRjYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvY3ZzL2djYy9lZ2NzL2xpYnN0ZGMrKy12My9iaXRzL3N0cmluZy50Y2MsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuOQpkaWZmIC11IC1wIC1yMS45IHN0cmluZy50Y2MKLS0tIHN0cmluZy50 Y2MJMjAwMC8wOS8wNiAyMTo1OTo1MgkxLjkKKysrIHN0cmluZy50Y2MJMjAwMC8wOS8xNCAxNTox ODo1OQpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2Ugc3RkCiAgICAgX1JlcDo6X1NfdGVybWlu YWwgPSBfQ2hhclQoKTsKIAogICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U cmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KLSAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz LCBfQWxsb2M+OjpzaXplX3R5cGUgCisgICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwg X1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlIAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U cmFpdHMsIF9BbGxvYz46OgogICAgIF9SZXA6Ol9TX21heF9zaXplID0gKCgobnBvcyAtIHNpemVv ZihfUmVwKSkvc2l6ZW9mKF9DaGFyVCkpIC0gMSkgLyA0OwogCg== From brendan@zen.org Thu Sep 14 08:37:00 2000 From: brendan@zen.org (brendan@zen.org) Date: Thu, 14 Sep 2000 08:37:00 -0000 Subject: libstdc++/88: installing fstream.h Message-ID: <20000914153422.17963.qmail@sourceware.cygnus.com> >Number: 88 >Category: libstdc++ >Synopsis: installing fstream.h >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Sep 14 08:37:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Brendan Kehoe >Release: unknown-1.0 >Organization: >Environment: >Description: One of the backwards-compatability headers, fstream.h, is missing from src/Makefile.am and thus doesn't get installed. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="diffs-fstream.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diffs-fstream.txt" MjAwMC0wOS0xNCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AemVuLm9yZz4KCgkqIHNyYy9NYWtl ZmlsZS5pbiAoaGVhZGVycyk6IEFsc28gaW5zdGFsbCBiYWNrd2FyZC9mc3RyZWFtLmguCgpJbmRl eDogc3JjL01ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3MvbGli c3RkYysrLXYzL3NyYy9NYWtlZmlsZS5hbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yOQpkaWZm IC11IC1wIC1yMS4yOSBNYWtlZmlsZS5hbQotLS0gTWFrZWZpbGUuYW0JMjAwMC8wOC8yMiAxNzoy MjozOAkxLjI5CisrKyBNYWtlZmlsZS5hbQkyMDAwLzA5LzE0IDE1OjE4OjU5CkBAIC0xMzIsNiAr MTMyLDcgQEAgaGVhZGVycyA9IFwKIAliaXRzL3N0bF90aHJlYWRzLmggYml0cy9zdGxfaXRlcmF0 b3JfYmFzZS5oIFwKIAliYWNrd2FyZC9hbGdvLmggYmFja3dhcmQvYWxnb2Jhc2UuaCBiYWNrd2Fy ZC9hbGxvYy5oIFwKIAliYWNrd2FyZC9idmVjdG9yLmggYmFja3dhcmQvZGVmYWxsb2MuaCBiYWNr d2FyZC9kZXF1ZS5oIFwKKwliYWNrd2FyZC9mc3RyZWFtLmggXAogCWJhY2t3YXJkL2Z1bmN0aW9u LmggYmFja3dhcmQvaGFzaF9tYXAuaCBiYWNrd2FyZC9oYXNoX3NldC5oIFwKIAliYWNrd2FyZC9o YXNodGFibGUuaCBiYWNrd2FyZC9oZWFwLmggYmFja3dhcmQvaXRlcmF0b3IuaCBcCiAJYmFja3dh cmQvbGlzdC5oIGJhY2t3YXJkL21hcC5oIGJhY2t3YXJkL211bHRpbWFwLmggYmFja3dhcmQvbmV3 LmggXAo= From brendan@zen.org Thu Sep 14 08:37:00 2000 From: brendan@zen.org (brendan@zen.org) Date: Thu, 14 Sep 2000 08:37:00 -0000 Subject: libstdc++/87: slight tweak to get_state methods of char_traits Message-ID: <20000914153305.17435.qmail@sourceware.cygnus.com> >Number: 87 >Category: libstdc++ >Synopsis: slight tweak to get_state methods of char_traits >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Sep 14 08:37:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Brendan Kehoe >Release: unknown-1.0 >Organization: >Environment: >Description: The enclosed patch adjusts get_state in char_traits.h to receive its argument by reference instead of by value, which is unnecessary. 2000-09-14 Brendan Kehoe * bits/char_traits.h (char_traits<_CharT>::get_state, char_traits::get_state, char_traits::get_state): Pass argument in by reference, not by value. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="diffs-byval.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diffs-byval.txt" MjAwMC0wOS0xNCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AemVuLm9yZz4KCgkqIGJpdHMvY2hh cl90cmFpdHMuaCAoY2hhcl90cmFpdHM8X0NoYXJUPjo6Z2V0X3N0YXRlLAoJY2hhcl90cmFpdHM8 Y2hhcj46OmdldF9zdGF0ZSwgY2hhcl90cmFpdHM8d2NoYXJfdD46OmdldF9zdGF0ZSk6IFBhc3MK CWFyZ3VtZW50IGluIGJ5IHJlZmVyZW5jZSwgbm90IGJ5IHZhbHVlLgoKSW5kZXg6IGJpdHMvY2hh cl90cmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9lZ2NzL2xpYnN0ZGMrKy12 My9iaXRzL2NoYXJfdHJhaXRzLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC11IC1w IC1yMS43IGNoYXJfdHJhaXRzLmgKLS0tIGNoYXJfdHJhaXRzLmgJMjAwMC8wOC8yMiAwODoxODow OQkxLjcKKysrIGNoYXJfdHJhaXRzLmgJMjAwMC8wOS8xNCAxNToxODo1OApAQCAtMTMxLDcgKzEz MSw3IEBAIG5hbWVzcGFjZSBzdGQgewogICAgICAgeyByZXR1cm4gX19jMSA9PSBfX2MyOyB9CiAK ICAgICAgIHN0YXRpYyBzdGF0ZV90eXBlIAotICAgICAgZ2V0X3N0YXRlIChwb3NfdHlwZSBfX3Bv cykgeyByZXR1cm4gX19wb3Muc3RhdGUoKTsgfQorICAgICAgZ2V0X3N0YXRlIChjb25zdCBwb3Nf dHlwZSYgX19wb3MpIHsgcmV0dXJuIF9fcG9zLnN0YXRlKCk7IH0KIAogICAgICAgc3RhdGljIGlu dF90eXBlIAogICAgICAgZW9mKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50X3R5cGU+KC0xKTsg fQpAQCAtMjA1LDcgKzIwNSw3IEBAIG5hbWVzcGFjZSBzdGQgewogICAgICAgeyByZXR1cm4gX19j MSA9PSBfX2MyOyB9CiAKICAgICAgIHN0YXRpYyBzdGF0ZV90eXBlIAotICAgICAgZ2V0X3N0YXRl KHBvc190eXBlIF9fcG9zKSB7IHJldHVybiBfX3Bvcy5zdGF0ZSgpOyB9CisgICAgICBnZXRfc3Rh dGUoY29uc3QgcG9zX3R5cGUmIF9fcG9zKSB7IHJldHVybiBfX3Bvcy5zdGF0ZSgpOyB9CiAKICAg ICAgIHN0YXRpYyBpbnRfdHlwZSAKICAgICAgIGVvZigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGlu dF90eXBlPihFT0YpOyB9CkBAIC0yNzYsNyArMjc2LDcgQEAgbmFtZXNwYWNlIHN0ZCB7CiAgICAg ICB7IHJldHVybiBfX2MxID09IF9fYzI7IH0KIAogICAgICAgc3RhdGljIHN0YXRlX3R5cGUgCi0g ICAgICBnZXRfc3RhdGUocG9zX3R5cGUgX19wb3MpIHsgcmV0dXJuIF9fcG9zLnN0YXRlKCk7IH0K KyAgICAgIGdldF9zdGF0ZShjb25zdCBwb3NfdHlwZSYgX19wb3MpIHsgcmV0dXJuIF9fcG9zLnN0 YXRlKCk7IH0KIAogICAgICAgc3RhdGljIGludF90eXBlIAogICAgICAgZW9mKCkgeyByZXR1cm4g c3RhdGljX2Nhc3Q8aW50X3R5cGU+KFdFT0YpOyB9Cg== From bkoz@redhat.com Thu Sep 14 13:07:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Thu, 14 Sep 2000 13:07:00 -0000 Subject: libstdc++/88: installing fstream.h Message-ID: <20000914200700.4805.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/88; it has been noted by GNATS. From: Benjamin Kosnik To: brendan@zen.org Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/88: installing fstream.h Date: Thu, 14 Sep 2000 13:01:22 -0700 (PDT) thanks, this is in From bkoz@redhat.com Thu Sep 14 13:07:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Thu, 14 Sep 2000 13:07:00 -0000 Subject: libstdc++/87: slight tweak to get_state methods of char_traits Message-ID: <20000914200700.4802.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/87; it has been noted by GNATS. From: Benjamin Kosnik To: brendan@zen.org Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/87: slight tweak to get_state methods of char_traits Date: Thu, 14 Sep 2000 13:01:08 -0700 (PDT) this is in, thanks. I also uglified these non-standard member functions while I was at it...... > 2000-09-14 Brendan Kehoe > > * bits/char_traits.h (char_traits<_CharT>::get_state, > char_traits::get_state, char_traits::get_state): Pass > argument in by reference, not by value. From bkoz@redhat.com Thu Sep 14 13:07:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Thu, 14 Sep 2000 13:07:00 -0000 Subject: libstdc++/89: missing typename in string.tcc for _Rep::_S_max_size Message-ID: <20000914200700.4808.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/89; it has been noted by GNATS. From: Benjamin Kosnik To: brendan@zen.org Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/89: missing typename in string.tcc for _Rep::_S_max_size Date: Thu, 14 Sep 2000 13:01:37 -0700 (PDT) thanks, this is in From guy@birchcrown.demon.co.uk Thu Sep 21 09:37:00 2000 From: guy@birchcrown.demon.co.uk (guy@birchcrown.demon.co.uk) Date: Thu, 21 Sep 2000 09:37:00 -0000 Subject: libstdc++/90: std::istream &operator >> (std::istream &, int &) cannot parse "0x2a" Message-ID: <20000921162752.3056.qmail@sourceware.cygnus.com> >Number: 90 >Category: libstdc++ >Synopsis: std::istream &operator >> (std::istream &, int &) cannot parse "0x2a" >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Sep 21 09:37:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: guy@birchcrown.demon.co.uk >Release: 2.90.8 >Organization: >Environment: linux 2.2.15, gcc-2.95.2, libstdc++-v3 2.90.8 >Description: As synopsis; the attached example sets the stream state to fail. >How-To-Repeat: See attached example >Fix: >Release-Note: >Audit-Trail: >Unformatted: From Guy_Bolton_King@non.agilent.com Fri Sep 22 03:57:00 2000 From: Guy_Bolton_King@non.agilent.com (Guy Bolton King) Date: Fri, 22 Sep 2000 03:57:00 -0000 Subject: libstdc++/90 Message-ID: <20000922105702.19875.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/90; it has been noted by GNATS. From: Guy Bolton King To: libstdc++-gnats@sourceware.cygnus.com Cc: Subject: Re: libstdc++/90 Date: Fri, 22 Sep 2000 11:51:11 +0100 http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view&pr=90&database=libstdc++ Sorry, the attachment doesn't appeared to have made it: #include #include int main() { std::stringstream foo("0x2a"); int i; foo.setf(std::ios::fmtflags(0), std::ios::basefield); foo >> i; assert(!foo.fail()); std::cout << i; } Clarification: in the presence of no fmtflags, the input operator should behave like strtol(x, y, 0); instead, the function fails. Guy. From hughett@bblmail.psycha.upenn.edu Fri Sep 22 10:47:00 2000 From: hughett@bblmail.psycha.upenn.edu (hughett@bblmail.psycha.upenn.edu) Date: Fri, 22 Sep 2000 10:47:00 -0000 Subject: libstdc++/91: Compiling gcc 2.95.2/libstdc++ 2.90.8 fails on RH 6.2 Message-ID: <20000922173742.4818.qmail@sourceware.cygnus.com> >Number: 91 >Category: libstdc++ >Synopsis: Compiling gcc 2.95.2/libstdc++ 2.90.8 fails on RH 6.2 >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Sep 22 10:47:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Paul Hughett >Release: gcc 2.95.2/libstdc++ 2.90.8 >Organization: >Environment: Red Hat 6.2 on i686 with all errata installed as of 9/22/00 >Description: I downloaded and compiled gcc 2.95.2 with only minor problems but discovered that may favorite C++ program would seg fault instantly when started, apparently in the valarray library. Suspecting a problem in the stdc++ library, I downloaded libstdc++ 2.90.8, copied into the gcc source tree as directed, and attempted to recompile gcc with the new library. I got the warnings about an inability to inline three functions, which were converted into errors, causing the compilation to fail. The pertinent part of the error messages is as follows: /home/local/src/gcc-2.95.2-obj/gcc/xgcc -B/home/local/src/gcc-2.95.2-obj/gcc/ -B/usr/local/i686-pc-linux-gnu/bin/ -DHAVE_CONFIG_H -I. -I../../../../gcc-2.95.2/libstdc++/src -I.. -nostdinc++ -I../../../../gcc-2.95.2/libstdc++ -I../../../../gcc-2.95.2/libstdc++/stl -I../../../../gcc-2.95.2/libstdc++/libio -I../../../../gcc-2.95.2/libstdc++/config/cpu/i386 -I../../../../gcc-2.95.2/libstdc++/config/gnu-linux -I/usr/local/include -D_GNU_SOURCE -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -Werror -g -fhonor-std -g -O2 -fvtable-thunks -D_GNU_SOURCE -c -fPIC -DPIC ../../../../gcc-2.95.2/libstdc++/src/stringMAIN.cc -o .libs/stringMAIN.lo cc1plus: warnings being treated as errors ../../../../gcc-2.95.2/libstdc++/bits/string.tcc: In method `std::basic_string,std::allocator >::basic_string(const std::basic_string,std::allocator > &, unsigned int, unsigned int = std::basic_string<_CharT,_Traits,_Alloc>::npos)': ../../../../gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:712: warning: can't inline call to `static char * std::basic_string,std::allocator >::_S_construct,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, const std::allocator &)' ../../../../gcc-2.95.2/libstdc++/bits/string.tcc:184: warning: called from here ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h: In method `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::append(const std::basic_string,std::allocator > &)': ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:451: instantiated from `std::basic_string,std::allocator >::operator +=(const std::basic_string,std::allocator > &)' ../../../../gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:675: warning: can't inline call to `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::replace,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >)' ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:470: warning: called from here ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h: In method `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::assign(const std::basic_string,std::allocator > &, unsigned int, unsigned int)': ../../../../gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:541: warning: can't inline call to `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::assign,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >)' ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:523: warning: called from here make[3]: *** [stringMAIN.lo] Error 1 make[3]: Leaving directory `/home/local/src/gcc-2.95.2-obj/i686-pc-linux-gnu/libstdc++/src' >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From bkoz@redhat.com Mon Sep 25 12:27:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Mon, 25 Sep 2000 12:27:00 -0000 Subject: libstdc++/90: std::istream &operator >> (std::istream &, int &)cannot parse "0x2a" Message-ID: <20000925192701.12654.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/90; it has been noted by GNATS. From: Benjamin Kosnik To: guy@birchcrown.demon.co.uk Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/90: std::istream &operator >> (std::istream &, int &) cannot parse "0x2a" Date: Mon, 25 Sep 2000 12:17:04 -0700 (PDT) there is no attached file for this. Can you please re-send your example code in plaintext, as the body of a (small) email message? thanks, benjamin From bkoz@redhat.com Mon Sep 25 13:47:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Mon, 25 Sep 2000 13:47:00 -0000 Subject: libstdc++/91: Compiling gcc 2.95.2/libstdc++ 2.90.8 fails on RH6.2 Message-ID: <20000925204701.12315.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/91; it has been noted by GNATS. From: Benjamin Kosnik To: hughett@bblmail.psycha.upenn.edu Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/91: Compiling gcc 2.95.2/libstdc++ 2.90.8 fails on RH 6.2 Date: Mon, 25 Sep 2000 13:40:30 -0700 (PDT) You might want to try a newer set of CVS sources, which have -Werror removed. In the meantime, you might want to read the build/install docs, esp. the part about -Werror: http://sources.redhat.com/libstdc++/install.html#usage On 22 Sep 2000 hughett@bblmail.psycha.upenn.edu wrote: > > >Number: 91 > >Category: libstdc++ > >Synopsis: Compiling gcc 2.95.2/libstdc++ 2.90.8 fails on RH 6.2 > >Confidential: no > >Severity: serious > >Priority: high > >Responsible: unassigned > >State: open > >Class: sw-bug > >Submitter-Id: net > >Arrival-Date: Fri Sep 22 10:47:01 PDT 2000 > >Closed-Date: > >Last-Modified: > >Originator: Paul Hughett > >Release: gcc 2.95.2/libstdc++ 2.90.8 > >Organization: > >Environment: > Red Hat 6.2 on i686 with all errata installed as of 9/22/00 > >Description: > I downloaded and compiled gcc 2.95.2 with only minor problems > but discovered that may favorite C++ program would seg fault > instantly when started, apparently in the valarray library. > Suspecting a problem in the stdc++ library, I downloaded > libstdc++ 2.90.8, copied into the gcc source tree as > directed, and attempted to recompile gcc with the new library. > I got the warnings about an inability to inline three > functions, which were converted into errors, causing the > compilation to fail. > > The pertinent part of the error messages is as follows: > > /home/local/src/gcc-2.95.2-obj/gcc/xgcc -B/home/local/src/gcc-2.95.2-obj/gcc/ -B/usr/local/i686-pc-linux-gnu/bin/ -DHAVE_CONFIG_H -I. -I../../../../gcc-2.95.2/libstdc++/src -I.. -nostdinc++ -I../../../../gcc-2.95.2/libstdc++ -I../../../../gcc-2.95.2/libstdc++/stl -I../../../../gcc-2.95.2/libstdc++/libio -I../../../../gcc-2.95.2/libstdc++/config/cpu/i386 -I../../../../gcc-2.95.2/libstdc++/config/gnu-linux -I/usr/local/include -D_GNU_SOURCE -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winl ine -Werror -g -fhonor-std -g -O2 -fvtable-thunks -D_GNU_SOURCE -c -fPIC -DPIC ../../../../gcc-2.95.2/libstdc++/src/stringMAIN.cc -o .libs/stringMAIN.lo > cc1plus: warnings being treated as errors > ../../../../gcc-2.95.2/libstdc++/bits/string.tcc: In method `std::basic_string,std::allocator >::basic_string(const std::basic_string,std::allocator > &, unsigned int, unsigned int = std::basic_string<_CharT,_Traits,_Alloc>::npos)': > ../../../../gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here > ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:712: warning: can't inline call to `static char * std::basic_string,std::allocator >::_S_construct,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, const std::alloc ator &)' > ../../../../gcc-2.95.2/libstdc++/bits/string.tcc:184: warning: called from here > ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h: In method `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::append(const std::basic_string,std::allocator > &)': > ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:451: instantiated from `std::basic_string,std::allocator >::operator +=(const std::basic_string,std::allocator > &)' > ../../../../gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here > ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:675: warning: can't inline call to `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::replace,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >)' > ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:470: warning: called from here > ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h: In method `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::assign(const std::basic_string,std::allocator > &, unsigned int, unsigned int)': > ../../../../gcc-2.95.2/libstdc++/src/string-inst.cc:64: instantiated from here > ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:541: warning: can't inline call to `class std::basic_string,std::allocator > & std::basic_string,std::allocator >::assign,std::allocator > > >(std::__normal_iterator,std::allocator > >, std::__normal_iterator,std::allocator > >)' > ../../../../gcc-2.95.2/libstdc++/bits/basic_string.h:523: warning: called from here > make[3]: *** [stringMAIN.lo] Error 1 > make[3]: Leaving directory `/home/local/src/gcc-2.95.2-obj/i686-pc-linux-gnu/libstdc++/src' > >How-To-Repeat: > > >Fix: > > >Release-Note: > >Audit-Trail: > >Unformatted: > From hughett@mercur.uphs.upenn.edu Mon Sep 25 14:27:00 2000 From: hughett@mercur.uphs.upenn.edu (Paul Hughett) Date: Mon, 25 Sep 2000 14:27:00 -0000 Subject: libstdc++/91: Compiling gcc 2.95.2/libstdc++ 2.90.8 fails on RH6.2 Message-ID: <20000925212700.29118.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/91; it has been noted by GNATS. From: Paul Hughett To: bkoz@redhat.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/91: Compiling gcc 2.95.2/libstdc++ 2.90.8 fails on RH 6.2 Date: Mon, 25 Sep 2000 17:21:35 -0400 > You might want to try a newer set of CVS sources, which have -Werror > removed. Thanks. In the event, I solved (or at least covered up) the problem by removing -Winline instead; that seemed a little bit less likely to cause secondary problems. Given the workaround--which I somehow managed to overlook--this problem doesn't have the high priority that I originally assigned to it. Thanks again. Paul Hughett From bgarcia@laurelnetworks.com Thu Sep 28 10:27:00 2000 From: bgarcia@laurelnetworks.com (bgarcia@laurelnetworks.com) Date: Thu, 28 Sep 2000 10:27:00 -0000 Subject: libstdc++/92: Bug in istream::get(basic_streambuf*); Message-ID: <20000928172353.29409.qmail@sourceware.cygnus.com> >Number: 92 >Category: libstdc++ >Synopsis: Bug in istream::get(basic_streambuf*); >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Sep 28 10:27:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: bgarcia@laurelnetworks.com >Release: unknown-1.0 >Organization: >Environment: linux x86, libstdc++ v.2.90.8, gcc v 2.95.2 >Description: The function istream::get(basic_streambuf*) appears to screw up on some 8k buffer boundary. It will return WITHOUT having hit the delimiter, and it will drop a character in the process. >How-To-Repeat: First, create a file called "conf" with at least 1500 lines of "1234567890". Next, compile and run the following program: #include #include #include int main(int argc, char** argv) { std::ifstream infile; infile.open("conf"); if (!infile.is_open()) { std::cout << "Couldn't open conf file" << std::endl; return 1; } unsigned numbytes(0); unsigned numlines(0); while (!infile.eof()) { while (infile.peek() == '\n') { infile.get(); ++numbytes; ++numlines; } std::string line; { std::ostringstream line_ss; infile.get(*(line_ss.rdbuf())); line = line_ss.str(); numbytes += line.size(); } if (line != "1234567890") { std::cout << "Line " << numlines << ", byte " << numbytes << ", got: \"" << line << "\"" << std::endl; } } return 0; } You will get output similar to: Line 745, byte 8192, got: "1234567" Line 745, byte 8194, got: "90" Line 1491, byte 16383, got: "123" Line 1491, byte 16389, got: "567890" Line 2982, byte 32766, got: "123456" Line 2982, byte 32769, got: "890" Line 3728, byte 40957, got: "12" Line 3728, byte 40964, got: "4567890" Line 4473, byte 49148, got: "123456789" Line 5219, byte 57339, got: "12345" Line 5219, byte 57343, got: "7890" Line 6710, byte 73722, got: "12345678" Line 6710, byte 73723, got: "0" Line 7456, byte 81913, got: "1234" Line 7456, byte 81918, got: "67890" Line 8652, byte 95044, got: "" >Fix: >Release-Note: >Audit-Trail: >Unformatted: From joel@quoininc.com Thu Sep 28 11:37:00 2000 From: joel@quoininc.com (joel@quoininc.com) Date: Thu, 28 Sep 2000 11:37:00 -0000 Subject: libstdc++/93: template class basic_string cannot be instantiated with types other than Message-ID: <20000928182739.17728.qmail@sourceware.cygnus.com> >Number: 93 >Category: libstdc++ >Synopsis: template class basic_string cannot be instantiated with types other than >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Sep 28 11:37:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Joel Roth-Nater >Release: 2.95.2-51 >Organization: >Environment: libgpp.rpm on SuSE-Linux >Description: std/bastring.h:334 const charT* c_str () const { if (length () == 0) return ""; terminate (); return data (); } This causes a compiler error if "" (or char*) cannot be implicitly converted into charT*. >How-To-Repeat: instantiate a wide-char version of basic_string: typedef basic_string wstring; >Fix: As a workaround, I created my own version of the header file which casts "" explicitly to charT*: std/bastring.h:334 const charT* c_str () const { if (length () == 0) return (charT*) L""; terminate (); return data (); } This will still link with the original lib. I just have to make sure I include my header file before anything STL. It would be cleaner IMO to do this: static const charT empty_str = 0; const charT* c_str () const { if (length () == 0) return &empty_str; terminate (); return data (); } >Release-Note: >Audit-Trail: >Unformatted: From brent@rcfile.org Sun Oct 1 22:17:00 2000 From: brent@rcfile.org (brent@rcfile.org) Date: Sun, 01 Oct 2000 22:17:00 -0000 Subject: libstdc++/92: Bug in istream::get(basic_streambuf*); Message-ID: <20001002051700.29946.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/92; it has been noted by GNATS. From: brent@rcfile.org To: bgarcia@laurelnetworks.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/92: Bug in istream::get(basic_streambuf*); Date: Mon, 2 Oct 2000 01:20:11 -0400 On 28 Sep 2000 at 17:23 (-0000), bgarcia@laurelnetworks.com wrote: | >Environment: | linux x86, libstdc++ v.2.90.8, gcc v 2.95.2 verified that most recent cvs has this bug as well. thanks for the bug report. I'll provide a patch for this tomorrow. cheers, brent | >Description: | The function istream::get(basic_streambuf*) appears | to screw up on some 8k buffer boundary. It will return | WITHOUT having hit the delimiter, and it will drop a | character in the process. | >How-To-Repeat: | First, create a file called "conf" with at least 1500 | lines of "1234567890". | | Next, compile and run the following program: | | #include | #include | #include | | int main(int argc, char** argv) | { | std::ifstream infile; | infile.open("conf"); | if (!infile.is_open()) | { | std::cout << "Couldn't open conf file" << std::endl; | return 1; | } | | unsigned numbytes(0); | unsigned numlines(0); | | while (!infile.eof()) | { | while (infile.peek() == '\n') | { | infile.get(); | ++numbytes; | ++numlines; | } | | std::string line; | | { | std::ostringstream line_ss; | infile.get(*(line_ss.rdbuf())); | line = line_ss.str(); | numbytes += line.size(); | } | | if (line != "1234567890") | { | std::cout << "Line " << numlines << ", byte " << numbytes | << ", got: \"" << line << "\"" << std::endl; | } | | } | return 0; | } | | You will get output similar to: | | Line 745, byte 8192, got: "1234567" | Line 745, byte 8194, got: "90" | Line 1491, byte 16383, got: "123" | Line 1491, byte 16389, got: "567890" | Line 2982, byte 32766, got: "123456" | Line 2982, byte 32769, got: "890" | Line 3728, byte 40957, got: "12" | Line 3728, byte 40964, got: "4567890" | Line 4473, byte 49148, got: "123456789" | Line 5219, byte 57339, got: "12345" | Line 5219, byte 57343, got: "7890" | Line 6710, byte 73722, got: "12345678" | Line 6710, byte 73723, got: "0" | Line 7456, byte 81913, got: "1234" | Line 7456, byte 81918, got: "67890" | Line 8652, byte 95044, got: "" | | >Fix: | | >Release-Note: | >Audit-Trail: | >Unformatted: -- All opinions expressed are My own, unless otherwise attributed. In presenting facts, I expressly reserve the right to be Wrong. Portions of this message authored by Me are subject to the Free Thought License. From bkoz@redhat.com Wed Oct 4 11:07:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Wed, 04 Oct 2000 11:07:00 -0000 Subject: libstdc++/93: template class basic_string cannot be instantiated with types other than Message-ID: <20001004180700.17423.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/93; it has been noted by GNATS. From: Benjamin Kosnik To: joel@quoininc.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/93: template class basic_string cannot be instantiated with types other than Date: Wed, 4 Oct 2000 11:06:53 -0700 (PDT) > >Number: 93 > >Category: libstdc++ > >Synopsis: template class basic_string cannot be instantiated with types other than > const charT* c_str () const > { if (length () == 0) return ""; terminate (); return data (); } A couple of things: 1) libstdc++-v3 has a working wstring class 2) libstdc++-v3 has a conformant string class, so that things like # include typedef std::basic_string sstring; template class std::basic_string; work. I suggest you use this library if you're interested in this kind of functionality. -benjamin From joe_hesse@actcx.com Thu Oct 5 07:17:00 2000 From: joe_hesse@actcx.com (joe_hesse@actcx.com) Date: Thu, 05 Oct 2000 07:17:00 -0000 Subject: libstdc++/94: Friends and Namespaces Message-ID: <20001005141606.28760.qmail@sourceware.cygnus.com> >Number: 94 >Category: libstdc++ >Synopsis: Friends and Namespaces >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Oct 05 07:17:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Joseph Hesse >Release: gcc 2.95.?? >Organization: >Environment: RH Linux 6.2 >Description: The following code with friends and namespaces doesn't compile with gcc -c test.cpp The code seems ok to me and it does compile with no errors using the Comeau compiler. >How-To-Repeat: Just compile and observe the error output >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/plain; name="test.cpp" Content-Disposition: inline; filename="test.cpp" Does anyone know of an easy fix to make the following compile with g++. I think that the code is correct but it fails to compile with g++. The error messages are: test.cpp:10: parse error before `(' test.cpp: In function `void f()': test.cpp:7: `int N::XYZ::m_x' is private test.cpp:17: within this context The code compiles with the online Comeau compiler. ----------------------------------------------- void f(); namespace N { class XYZ { private: int m_x; public: XYZ(int u = 0) : m_x(u) {} friend void ::f(); }; } // end of namespace N void f() { N::XYZ a(10); a.m_x = 11; } ----------------------------------------------- From bkoz@redhat.com Thu Oct 5 10:27:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Thu, 05 Oct 2000 10:27:00 -0000 Subject: libstdc++/94: Friends and Namespaces Message-ID: <20001005172701.31231.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/94; it has been noted by GNATS. From: Benjamin Kosnik To: joe_hesse@actcx.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/94: Friends and Namespaces Date: Thu, 5 Oct 2000 10:17:27 -0700 (PDT) this should be a g++ bug, not a library (libstdc++) bug. You might also want to post on gcc-bugs@gcc.gnu.org thanks, benjamin On 5 Oct 2000 joe_hesse@actcx.com wrote: > > >Number: 94 > >Category: libstdc++ > >Synopsis: Friends and Namespaces > >Confidential: no > >Severity: serious > >Priority: medium > >Responsible: unassigned > >State: open > >Class: sw-bug > >Submitter-Id: net > >Arrival-Date: Thu Oct 05 07:17:01 PDT 2000 > >Closed-Date: > >Last-Modified: > >Originator: Joseph Hesse > >Release: gcc 2.95.?? > >Organization: > >Environment: > RH Linux 6.2 > >Description: > The following code with friends and namespaces doesn't compile with gcc -c test.cpp > The code seems ok to me and it does compile with no errors using the Comeau compiler. > >How-To-Repeat: > Just compile and observe the error output > >Fix: > > >Release-Note: > >Audit-Trail: > >Unformatted: > ----gnatsweb-attachment---- > Content-Type: text/plain; name="test.cpp" > Content-Disposition: inline; filename="test.cpp" > > Does anyone know of an easy fix to make the following compile with g++. > I think that the code is correct but it fails to compile with g++. > The error messages are: > > test.cpp:10: parse error before `(' > test.cpp: In function `void f()': > test.cpp:7: `int N::XYZ::m_x' is private > test.cpp:17: within this context > > The code compiles with the online Comeau compiler. > > ----------------------------------------------- > void f(); > > namespace N { > > class XYZ { > private: > int m_x; > public: > XYZ(int u = 0) : m_x(u) {} > friend void ::f(); > }; > > } // end of namespace N > > void f() { > N::XYZ a(10); > a.m_x = 11; > } > ----------------------------------------------- > From ben@valinux.com Fri Oct 6 11:27:00 2000 From: ben@valinux.com (ben@valinux.com) Date: Fri, 06 Oct 2000 11:27:00 -0000 Subject: libstdc++/95: bastring.h's c_str implementation prohibits charT's other than char Message-ID: <20001006182156.27166.qmail@sourceware.cygnus.com> >Number: 95 >Category: libstdc++ >Synopsis: bastring.h's c_str implementation prohibits charT's other than char >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Oct 06 11:27:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: ben@valinux.com >Release: 2.95.2-13 >Organization: >Environment: debian potato >Description: The problem is that when you define use a template parameter for "charT" for bastring as anything different than "char" the type that you pass in as the template parameter doesn't match "" which is always of type "char*" when g++ compiles the bastring.h header file. >How-To-Repeat: Try something like this: #include int main() basic_string foo; foo.c_str(); } >Fix: --- /usr/include/g++-3/std/bastring.h Fri Jul 7 02:10:00 2000 +++ bastring.h Fri Oct 6 10:55:14 2000 @@ -332,7 +332,7 @@ public: const charT* c_str () const - { const charT* null_str = ""; + { static const charT null_str[1]={0}; if (length () == 0) return null_str; terminate (); return data (); } void resize (size_type n, charT c); void resize (size_type n) >Release-Note: >Audit-Trail: >Unformatted: From bkoz@redhat.com Fri Oct 6 11:27:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Fri, 06 Oct 2000 11:27:00 -0000 Subject: libstdc++/92: Bug in istream::get(basic_streambuf*); Message-ID: <20001006182700.27766.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/92; it has been noted by GNATS. From: Benjamin Kosnik To: bgarcia@laurelnetworks.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/92: Bug in istream::get(basic_streambuf*); Date: Fri, 6 Oct 2000 11:18:20 -0700 (PDT) Brent's patch for this is now in, which fixes this problem. thanks both of you. -benjamin From bkoz@redhat.com Fri Oct 6 11:57:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Fri, 06 Oct 2000 11:57:00 -0000 Subject: libstdc++/95: bastring.h's c_str implementation prohibits charT's other than char Message-ID: <20001006185700.3079.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/95; it has been noted by GNATS. From: Benjamin Kosnik To: ben@valinux.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/95: bastring.h's c_str implementation prohibits charT's other than char Date: Fri, 6 Oct 2000 11:49:17 -0700 (PDT) Ugh. Dude. This bug was reported last week. 1) use libstdc++-v3, which has a conformant string class 2) use libstdc++-v3, which already has a wstring and unicodestring-capable string class etc etc etc. benjamin On 6 Oct 2000 ben@valinux.com wrote: > > >Number: 95 > >Category: libstdc++ > >Synopsis: bastring.h's c_str implementation prohibits charT's other than char From michael.reed@ft.com Fri Oct 13 06:37:00 2000 From: michael.reed@ft.com (michael.reed@ft.com) Date: Fri, 13 Oct 2000 06:37:00 -0000 Subject: libstdc++/96: Name cabs clashes with definition in system header Message-ID: <20001013133630.19142.qmail@sourceware.cygnus.com> >Number: 96 >Category: libstdc++ >Synopsis: Name cabs clashes with definition in system header >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Oct 13 06:37:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Mike Reed >Release: libstdc++-2.90.8 >Organization: >Environment: AIX enterprise2 2 4 002034865900 >Description: On the AIX box I am using "cabs" is defined in /usr/include/math.h which causes a redefinition error. The system has not really been maintained for about 3 years so this might just be an old AIX problem that is no longer. I simply commented out this definition in the fixed header in the gcc build tree. This allowed the build to progress but I then got lots of errors in std_sstream.h. See attachment. At this point I gave up. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From bkoz@redhat.com Fri Oct 13 10:47:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Fri, 13 Oct 2000 10:47:00 -0000 Subject: libstdc++/96: Name cabs clashes with definition in system header Message-ID: <20001013174701.20084.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/96; it has been noted by GNATS. From: Benjamin Kosnik To: michael.reed@ft.com Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/96: Name cabs clashes with definition in system header Date: Fri, 13 Oct 2000 10:40:33 -0700 (PDT) this got fixed by Edelsohn in CVS gcc earlier this month. You might want to try current CVS, although this platform is known to not be working yet. From David.Margery@irisa.fr Tue Oct 17 04:57:00 2000 From: David.Margery@irisa.fr (David.Margery@irisa.fr) Date: Tue, 17 Oct 2000 04:57:00 -0000 Subject: libstdc++/97: allocator doesn't use operator new for allocation Message-ID: <20001017115224.21016.qmail@sourceware.cygnus.com> >Number: 97 >Category: libstdc++ >Synopsis: allocator doesn't use operator new for allocation >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue Oct 17 04:57:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: David Margery >Release: unknown-1.0 >Organization: >Environment: linux g++ 2.95.2 >Description: Iso standard requires allocate of std::allocator to use operator new for allocation (20.4.1.1, paragraph 3). It isn't the case (or at least doesn't seem to be) in the version I use. >How-To-Repeat: run the program attached, and you will not get any message printed >Fix: replace calls to malloc() in the implementation of allocator by calls to operator new() (same interface) >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="newNotCalled.cxx" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="newNotCalled.cxx" I2luY2x1ZGUgPG5ldz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5j bHVkZSA8bWVtb3J5PgovL2ZpcnN0IHJlZGVmaW5lIGFsbGUgdmVyc2lvbiBvZiBuZXcgYW5kIGRl bGV0ZSBhcyBhdXRob3JpemVkIGJ5IHRoZSBub3JtCmV4dGVybiAiQyIgdm9pZCAqbWFsbG9jIChz aXplX3QpOwpleHRlcm4gIkMiIHZvaWQgZnJlZSAodm9pZCAqKTsKCnZvaWQgKm9wZXJhdG9yIG5l dyAoc2l6ZV90IHNpemUpIHRocm93IChzdGQ6OmJhZF9hbGxvYykgewogICBjZXJyPDwiVXNpbmcg b3VyIHZlcnNpb24gb2YgbmV3ICI8PGVuZGw7CiAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Cn0KCnZv aWQgKm9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc2l6ZSkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKSB7 CiAgIHJldHVybiBvcGVyYXRvciBuZXcoc2l6ZSk7Cn0KCnZvaWQgKm9wZXJhdG9yIG5ldyAoc2l6 ZV90IHNpemUsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKSB7CiAgIHJldHVybiBvcGVy YXRvciBuZXcoc2l6ZSk7Cn0KCnZvaWQgKm9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc2l6ZSwgY29u c3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpIHsKICAgcmV0dXJuIG9wZXJhdG9yIG5ldyhzaXpl KTsKfQoKdm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQgKiBwdHIpIHRocm93KCkgewogICBjZXJy PDwiVXNpbmcgb3VyIHZlcnNpb24gb2YgZnJlZSAiPDxlbmRsOwogICBmcmVlKHB0cik7Cn0KCnZv aWQgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQgKiBwdHIpIHRocm93KCkgewogICBzdGQ6Om9wZXJh dG9yIGRlbGV0ZShwdHIpOwp9Cgp2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqIHB0ciAsIGNv bnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKSB7CiAgIHN0ZDo6b3BlcmF0b3IgZGVsZXRlKHB0 cik7Cn0KCnZvaWQgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQgKiBwdHIgLCBjb25zdCBzdGQ6Om5v dGhyb3dfdCYpIHRocm93KCkgewogICBzdGQ6Om9wZXJhdG9yIGRlbGV0ZShwdHIpOwp9CgppbnQg bWFpbihpbnQgYXJnYywgY2hhciBhcmd2W10pIHsKICAgdmVjdG9yPGludCxzdGQ6OmFsbG9jYXRv cjxpbnQ+ID4gbXlWZWN0b3I7CiAgIC8vdGhpcyBjYWxsIHNob3VsZCBjYWxsIGFsbG9jYXRlIG9m IGFsbG9jYXRvciwgd2ljaCBpbiB0cnVuIHNob3VsZCBjYWxsIG5ldz8KICAgbXlWZWN0b3IucHVz aF9iYWNrKDEpOwogICByZXR1cm4gMDsKfQoKCgoK From bgarcia@laurelnetworks.com Wed Oct 18 13:37:00 2000 From: bgarcia@laurelnetworks.com (bgarcia@laurelnetworks.com) Date: Wed, 18 Oct 2000 13:37:00 -0000 Subject: libstdc++/98: Outputting streambufs to a stream is broken Message-ID: <20001018202741.27448.qmail@sourceware.cygnus.com> >Number: 98 >Category: libstdc++ >Synopsis: Outputting streambufs to a stream is broken >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Oct 18 13:37:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: bgarcia@laurelnetworks.com >Release: unknown-1.0 >Organization: >Environment: libstdc++ v. 2.8.1 redhat linux x86 6.2, gcc 2.95.2 >Description: Outputting a streambuf to a stream is broken. This appears to be similar to PR 92, but does not appear to be fixed by the same fix. >How-To-Repeat: First, create a file called "conf" with at least 1500 lines of "1234567890". Next compile the following program: #include #include int main(int argc, char** argv) { std::ifstream file; file.open("conf"); if (!file.is_open()) { return -1; } std::cout << file.rdbuf(); return 0; } Next, run this program as "./junk > conf2 and compare conf to conf2. host> wc conf* 1500 1500 16500 conf 2234 2235 24576 conf2 host> diff conf conf2 | head 1500a1501,2235 > 4567890 > 1234567890 > 1234567890 > 1234567890 > 1234567890 > 1234567890 > 1234567890 > 1234567890 > 1234567890 >Fix: >Release-Note: >Audit-Trail: >Unformatted: From evan.harris@dsto.defence.gov.au Tue Oct 31 18:07:00 2000 From: evan.harris@dsto.defence.gov.au (evan.harris@dsto.defence.gov.au) Date: Tue, 31 Oct 2000 18:07:00 -0000 Subject: libstdc++/99: ostream setw and width breaks double/float output Message-ID: <20001101020522.24051.qmail@sourceware.cygnus.com> >Number: 99 >Category: libstdc++ >Synopsis: ostream setw and width breaks double/float output >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue Oct 31 18:07:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: evan.harris@dsto.defence.gov.au >Release: 2.10 (debian packages libstdc++2.10-glibc2.2, libstdc++2.10-dev) >Organization: >Environment: Linux battlezone 2.2.17 #1 SMP Wed Aug 9 13:02:12 EST 2000 i686 unknown Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs gcc version 2.95.2 20000220 (Debian GNU/Linux) >Description: Setting the field width of an output stream via width or the setw manipulator results in floating point numbers not being output correctly. Null characters are output at inappropriate points. >How-To-Repeat: $ cat > x.cc #include #include int main(int, char**) { cout << setfill('_') << setw(20) << 3.14159 << endl; return 0; } $ g++ x.cc $ ./a.out | cat -v ^@^@^@^@^@^@^@^@^@^@^@^@^@3^@^@^@.^@^@ >Fix: >Release-Note: >Audit-Trail: >Unformatted: From lfarkas@mindmaker.hu Thu Nov 2 03:07:00 2000 From: lfarkas@mindmaker.hu (lfarkas@mindmaker.hu) Date: Thu, 02 Nov 2000 03:07:00 -0000 Subject: libstdc++/100: stdc++ dead on ldopen Message-ID: <20001102105947.2210.qmail@sourceware.cygnus.com> >Number: 100 >Category: libstdc++ >Synopsis: stdc++ dead on ldopen >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Nov 02 03:07:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Levente Farkas >Release: current cvs >Organization: >Environment: redhat 6.2 >Description: http://sources.redhat.com/ml/libstdc++/2000-10/msg00311.html >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From lfarkas@mindmaker.hu Thu Nov 2 03:17:00 2000 From: lfarkas@mindmaker.hu (lfarkas@mindmaker.hu) Date: Thu, 02 Nov 2000 03:17:00 -0000 Subject: libstdc++/101: bitset inline Message-ID: <20001102110910.4449.qmail@sourceware.cygnus.com> >Number: 101 >Category: libstdc++ >Synopsis: bitset inline >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Nov 02 03:17:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Levente Farkas >Release: current cvs >Organization: >Environment: redhat 6.2 >Description: http://sources.redhat.com/ml/libstdc++/2000-11/msg00001.html >How-To-Repeat: >Fix: http://sources.redhat.com/ml/libstdc++/2000-11/msg00001.html >Release-Note: >Audit-Trail: >Unformatted: From bgarcia@laurelnetworks.com Thu Nov 2 03:37:00 2000 From: bgarcia@laurelnetworks.com (Brad Garcia) Date: Thu, 02 Nov 2000 03:37:00 -0000 Subject: libstdc++/98 Message-ID: <20001102113701.9965.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/98; it has been noted by GNATS. From: Brad Garcia To: benjamin kosnik Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/98 Date: Thu, 2 Nov 2000 06:29:08 -0500 (EST) I was reproducing it with the last snapshot (2.8.1, as stated in the pr). If you have any idea what change might have fixed it, let me know. Otherwise, it sounds like you can close out this PR. On Wed, 1 Nov 2000, benjamin kosnik wrote: > http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view&pr=98&database=libstdc++ > > Hey I'm unable to reproduce this. Using x86/linux, and today's sources, I get: > > %wc conf* > 1500 1500 16500 conf > 1500 1500 16500 conf2 > 3000 3000 33000 total Brad Garcia From mark@codesourcery.com Sat Nov 4 11:07:00 2000 From: mark@codesourcery.com (mark@codesourcery.com) Date: Sat, 04 Nov 2000 11:07:00 -0000 Subject: libstdc++/102: and std::rel_ops broken. Message-ID: <20001104185954.17881.qmail@sourceware.cygnus.com> >Number: 102 >Category: libstdc++ >Synopsis: and std::rel_ops broken. >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Nov 04 11:07:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: mark@codesourcery.com >Release: unknown-1.0 >Organization: >Environment: i686-pc-linux-gnu >Description: This code: #include int main () { vector v1; vector v2 (v1); } gets a legitimate compiler error indicating that: /mnt/u5/mitchell/egcs-4/libstdc++-v3/include/bits/concept_checks.h:402: ambiguous overload for `std::__normal_iterator > >& != std::__normal_iterator > >&' /mnt/u5/mitchell/egcs-4/libstdc++-v3/include/bits/stl_relops.h:37: candidates are: bool std::rel_ops::operator!=(const _Tp&, const _Tp&) [with _Tp = std::__normal_iterator > >] /mnt/u5/mitchell/egcs-4/libstdc++-v3/include/bits/stl_iterator.h:1046: bool std::operator!=(const std::__normal_iterator<_IteratorL, _Container>&, const std::__normal_iterator<_IteratorR, _Container>&) [with _IteratorL = const int*, _IteratorR = const int*, _Container = std::vector >] The problem is that the templates defined in the relops namespace have been brought into the global namespace via using declarations, and that neither they nor the overloaded version for iterators is more specialized. The same problem occurs without compatibility headers on: #include using namespace std; using namespace std::rel_ops; int main () { vector v1; vector v2 (v1); } but I'm not sure if the standard allows that, or not. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From Andrew.Pickin@aethos.co.uk Mon Nov 6 07:07:00 2000 From: Andrew.Pickin@aethos.co.uk (Andrew.Pickin@aethos.co.uk) Date: Mon, 06 Nov 2000 07:07:00 -0000 Subject: libstdc++/103: no install.sh in archive Message-ID: <20001106150649.20858.qmail@sourceware.cygnus.com> >Number: 103 >Category: libstdc++ >Synopsis: no install.sh in archive >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Nov 06 07:07:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Andrew.Pickin@aethos.co.uk >Release: 2.90.8 >Organization: >Environment: Solaris 2.6 >Description: There is no install.sh included in the archive hence configure fails at the first hurdle. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: From pedwards@disaster.jaj.com Mon Nov 6 10:07:00 2000 From: pedwards@disaster.jaj.com (Phil Edwards) Date: Mon, 06 Nov 2000 10:07:00 -0000 Subject: libstdc++/103: no install.sh in archive Message-ID: <20001106180700.500.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/103; it has been noted by GNATS. From: Phil Edwards To: Andrew.Pickin@aethos.co.uk Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/103: no install.sh in archive Date: Mon, 6 Nov 2000 13:09:17 -0500 On Mon, Nov 06, 2000 at 03:06:49PM -0000, Andrew.Pickin@aethos.co.uk wrote: > >Severity: critical > >Priority: high > >Release: 2.90.8 > >Description: > There is no install.sh included in the archive hence configure fails at the first > hurdle. 2.90.8 must be placed inside the GCC source tree, and the install.sh from GCC is used. Please read the instructions at http://sources.redhat.com/libstdc++/install.html . Thanks! From schmid@snake.iap.physik.tu-darmstadt.de Fri Nov 10 16:27:00 2000 From: schmid@snake.iap.physik.tu-darmstadt.de (schmid@snake.iap.physik.tu-darmstadt.de) Date: Fri, 10 Nov 2000 16:27:00 -0000 Subject: libstdc++/104: Segmentation Fault Bug in modulators setw and ios::left Message-ID: <20001111002607.24294.qmail@sourceware.cygnus.com> >Number: 104 >Category: libstdc++ >Synopsis: Segmentation Fault Bug in modulators setw and ios::left >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Nov 10 16:27:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Peter Schmid >Release: unknown-1.0 >Organization: >Environment: System: Linux kiste 2.4.0-test10 #20 Thu Nov 2 03:02:57 CET 2000 i686 unknown Architecture: i686 GNU assembler 001002 GLIBC 2.1.3 g++ -v Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/specs Configured with: --enable-shared --disable-nls --enable-threads=posix --enable- long-long --enable-libstdcxx-v3 gcc version 2.97 20001106 (experimental) host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu >Description: The programm tmap crashes with a segmentation fault. When the width of the output field exceeds the width given by the modulator setw(15) an segmentation faults occurs if the output is left-centred by cout.setf(ios::left, ios::adjustfield). G++-2.95.2 has no problem. The standard says that only the minimum field size is given by setw and all characters should be printed. >How-To-Repeat: tmap.C #include #include using namespace std; int main() { cout.setf(ios::left, ios::adjustfield); cout << setw(15) << "12345678901"<< " " << "2345678" << endl; } peter@kiste:~/trans/c++/neu/cont > ./tmap Segmentation fault (core dumped) >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="tmap.ii.gz.uue" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tmap.ii.gz.uue" YmVnaW4gNjQ0IHRtYXAuaWkuZ3oKTSdYTCgiJE9WIkNIYGBXMU04N2BOOjZEYFs/VU09UUxXREMi YD9NPk9aIjFHXzlgUlk4QjRXUispRkkvKQpNPic5UztVW0Y8M1NbWylTPDshXio7JEhdKUlNLERb M0QyM1JfXz4oPSE6ImAxQz47JE41ME5RLlNOWCUiCk1INSJIKkEwKkEyXjI/TytZOkM5PC8vR0Zc WCxPWiwuN1pWN1lZNzBeJkRaX1MoTzE9I1cuT0tRWl8vQ0gKTV88RjdeN1JZKksvQVsnLTJbLjJA Sk8xRU9FSV5ONVItNFVHTVIzNk9eJDVSXEopVlE5LkhZRDovJ1hfRgpNUTIyX2BGVF1LNTxLS0on WSxBVUdEW1MoRUoiRTlfNTomTyE6K1ZPMzhBIikpKlc3RS86VTIyXjA7IysoCk1NMU45VyhRIS5d JCQlLTdCRlFLPUMqWidJNltKWjcnLTpDNjooT18pWVohNzddNkw1Sl5JODdFNU9VTloKTUdNTzgt K19cXEZIVC5KK19ZTF0/L0NdOlQtXyVeTztISkVBXy43Q1JVMEwlVVZHXjknLSgpUD5LI1hOLApN MyxERDMyXzdeNzI1JV5HWzgzSy1FUk9SQUUwPFI8PFNCR0tfTi1URjgwLCk6LkFJWzEmQTxfTkAm LFpSCk1ZNihYUkErUlg+IldAUjE5K18vQipDRF01O2BfVUFMV1NCLCwuIUBaVCJHKD5YLDdPTlxH Mi41KS1FUk0KTTJSQCghXF4uYFY0UCYsTC8xIzgyNEFJYDBAVC0hKihPOlM5JFFXLlk2RV8iQUVZ XDU9VjBXOFkpVE5RVgpNRTk1JVxPRFdHUj5fJzFSWEZLJD4/USRaOi5TWjdXVlUuMkMtSk5NQkY1 XDVWM0MpQlU2UlMvXjVJOFEvCk1FOSskXlc9UEArKC1YU2AqJjUrMylKOTk6JS8hOD0jRlEmOFNM UlYuTk0tUypJTylFJVZHXSw+OV5XVVkKTS8yXTdLYCNbQTkyQE0qLz9SO18oVV5GPFMlM1pGP1hY LlNBKDRcSD5ZLk5cMi0sJCtcW14oXCdeTkFaLgpNWjsjQCU+V1JMQzAxIVU2REVSISwwQWBQK1Uu TChZKTA9QCYjM0FQKVxNX148UTAoKys1VkJBRCQpP1xdCk0mOiFgPSc1PlAkLDojVDcpP1lcX10x LzQvUSpKKEkjVEctUykoP0RVJyhdK1paTDwvLylTRytWJz8xJ1wKTVBMIi5cMF03W0A/ITJXRFFR Wk8sWU4sLF9VKjAuPzAuP0AoPUZUXEY5QjYlXS0zWlEsTE8zLDNYUlo2NApNJ0BCXlkzMj9WOV00 Jl8wQylaTistNl0oTFw+SjcoXTYxL1UxJTlCKEFNXC9JU1wvP0NEQztTWjJJXEUyCk1VKycwJlxP MUQ6XDktWS1BJl1EP2AmJTZeMlNTPyVLPjckWz8mPEIhQ1IsQlJNWjk2KUE8UThNLVFORUwKTU4n UycrKSNDTC5QWlA2QWBfQkA5JSohRCxFWkZNLVsvXz4vIVReMytJLyxSLjYxMj8zWSkuSkk4TV9P KwpNJjE/QUBGM0M9KURBKSdONz8/I1RQOUNKQlklRCIvOidEKC0wOkUyTC8iUyYvWElZQTMnLzko RzUhUFBECk0iUDFBMy8pSSZgOE8kKCEhKUlXW0U0XDAvSD9MS1kiMVRCNzE7NC4jU1MiLjYqNUs3 PWA+I18rP1E6SjQKTUEvOkhXXDdKRkpTM1FLODYvSERJQlFFKFcmSDw3Nj1AQT83PE1HWywwQjwn RyQ/SSsqJ09UTDZQJyxaLApNNjJPPkVfRlxTJTw/Vi1SRUxWIUBGUVRIRkVSL1JTOyRVVzBSNypb SE0mL0YsOVJIKlYqXCs2RDNYR0YxCk0lWzA8LDlHLygrXzpcLDs5PEUyRlhOVkFePUlCPTMkRT9V LU1DKy81PCcxLTZcWWBQWzMvQl9EVCdbJC4KTThTMTJJPkIjS0lEN1VRRkEkX0wkWDxUNyMjUDdP JTFBSyg/RUYjWiEwQDIxPVRTIkwyRj4pLl9HXjlCKgpNLz83IUAsIz48QEA/JF1HRVg0SVEnPSlD V1NBMCw5QVIwQjw2NT1GR0ZWJS4lRjU3TConMU8hQ1smUSpECk03PF1GJ15RKiZELzQ1KSElRTRg Ky0zIStCOjY/RT5cQUo2PkRFNzZRMEdMUjJePFcxNTsiUE5fUjhHUDYKTSlMVSxEJDtXOFs5Pjk7 PTVPNj4lLidCSylDKShMLk9TOEkzKU9PTFhPS1NBOkpNSjYsTDstOlg8Kl8qIgpNRUxHKik0SEFc T0YmTCJeRyQ/OjUvMk1eIiQiYEE1MzNETUtKUTYpKTUnTUZEJEFWKzRRPTZMOiRZQDQlCk1SIVQw WisoLj1TKFgiVUFXPjAoXCEoJjVFUy4iV19aOF9PNztbVVhHXSNeVEo2PTEiVzs0MlQiNjc4OzsK TSo+QTI0KDRLUDo7X0Y9Si5WL1tTWmBIXiVYJk1ZOVE1XjA/I0ErKjdZODo2OV86QE8wQTRKW1sk Nj9VKQpNKF01Ol1CRiMwOltXJyktJytNYDAuVDJPXT8xJztNYEZLRVZLQ2BdSUkhTz9WIShBJDBO JUBQL0coUzU2Ck0kRiMyUCxdTEo5KighOE9ZQjpVKURCTU1bXkUvPy5WMVIiNiheNSRML1EqVSMr JyhTXCJOJDMtMkskWDIKTVc0P1soXkwpLCtfQDlWOjgpQEwsNz84RU1fNi02TDxEOkNVQ1Q4OE8l USlHLzolNiRIRTo0MUA1Rj8pKQpNSGBJIkYpSE4uKCI9OTpcKVkmP0g6QTFLQzQyTS47WSg3T0Ng UEdJXDs5LygpMFshUTMkMkM+RUNeUEhXCk1dVjAtR0U+VyVRIk46Vy1eKDhOMz08QUFMVjszRUhI QVZUVUIyMFZIM0tHS0BVIi9ST19cREJDPi0kVFoKTSc8J1wqNVVEXz1dT1RbMztbOVs5XTpCQyhV Q1FPU1A1SjhMQzYvJEczVDRWLDQoNV9SKEs+TlJGPT1KRApNT1JaKF5FVVc4PTJHQEBOQyFEJEAq PE9MKkVcMlM1JTFeNjk+Q0Q1VVpKOC1aQk0sSDY3JS4hXDZSLzpBCk02XCJbNCctQFYlLSwlUSI7 QUVcLVpEUVo2JkI5MzsvMSJLMDUrTjE/Ny1JUCwoUVQoMV0qJyU5XjE9OFkKTTU+TT43PEo8VzQz WFlVPURBLj5TPygwO1JWSDFCUlc+SjIuSkBXRT5HLCk9WUgrQVdBPi5DJyJbVlQuLgpNPTtVMjs7 UlQuWlclT1NgOFo4T0UoQU5JW0pBPkstWjNBPitIUydFOUIrPUxGN1oiMjRQKzM8PzZARlQzCk0y QUVONE5WXyRAWFFaUixBNCIqXTUkMl0uOUwzJUouKU1MNjBMQF0pMVtBISleLUUzUCxFIlYlSkgj TE8KTVY2SyM+OU89Q0srJUJLVFYuVCxfVElfU106SjskKU1fP0ktVE5NUFk1X09PIyorX0wpIjc9 QFdMUDYoWwpNNzIhS0BeNEpMPUA5XSQyNlQvLisuM1dSKl44YCE9VUwtREJMSlFeOV8sMkY7KVNc XysiPCM0PEUjKSdICk0/UTU8UDpANSgtQzslSlsxIS8uMTpMXUlAQ00xTTVMVEAxWTJRXEs2X000 JE5FSz1FRUAxVFFfS01COCoKTUYwWTcxTFFAQShCUShMMlYoPSU6KFZZVlVAUTEmTUcmOkhWTT07 NydWSjpNXy8zJVlKISw5Oz04RT4uPApNK1pKSFtBWlQiPVxQTzZbUjBKQlcmTSQvYEYxJV1gL0hA V1hJVVZWNEhUWkI2JC9MWjA8I1BRU048Xik0Ck1QQFgsQ10tKV4xNFlFMShCQ10/NF40SF1JKy0r WUQlVishJ0FLL1cvJSpRMCQ/IVJZNFE2UDcvTkYoLFAKTUE2PjwuN0gpSmBESUBWVlUqNCMiPUhY JFE2PFUsNDYiVFo7MlFZLjNTXl4hLTY8Sz9PNl1VPERWTCQ2WgpNOkg5Kyc8TlREMTNDR0c1NjVA WjlVKC9cRz9BV09MQCpORVtAIkRJTjBaW0YoWyoySC9LLj8jXElZUy9aCk0hPkJMOUFJKypWQiFF PmBDQUExMVNQKSdUT1s4UUgpSTo8KDBeOENPMUVSTilTVTlXP0dWODk0TUldRiQKTTpGIkQsRSct X01LVEhaUU5aLkAtTkJRWiMyUDJXTS8xPStbLFMmW0spTF5YL0dIOVtdKDwwLkRKOD9ZRwpNIktD ITYmQ1w5Wy1FTDpaW1g3KjhgJUVPT0NgNzQuKVFgOE8kTCNdOSskWj8hNDRSXCNYIzFfQF9VWywl Ck1IO0NNJlBdTkZDK1deISVVSGAkSUAmWyhGUjRRRjI1XF9AJWBIYDNKViM4VzZZVGAqSyMvNks0 Mj1gKkIKTTUtV1AqTUskWCpGXUZeIzlbSlZVVj5MTCQsJCwpNy5TUi9CKkg0LSU4LSUtLkcrPzxF QT49N01KJVctVApNRzRfJz8tPlIpWCxKSUwuS0kyWSFSVlxALko1ST5OK1gxQFUqNklUUSVaIkxe VjAtUEs9WC5dKEtTP1s1Ck1ITThFKEQ2P182QSVdRU89QEhPLEc0L1AjKj9BRTBfJSotMjAvRlwq VCM/MlssPVpGSTQuOCsmTVIqKGAKTVtGR0wuOCZRXD1dUU0vVTxYNC5cOk8hQ1pKJU0/TEJTWjlA K0k2YDtHRypeP0JAQUY8WiZNXSlFLElRPgpNVDc/N0U6UDw3U05CXztTOEkvVipWRkNbOTxGYEQl PTkyPVUyR0NFSS4nTiIqJlQqRGBHXjA0Il8jWUpICk04LlYsPTVWREs+Wk8uNVk6VjsrN0M8U0Mk MFNUR19JXFI7U09DTz8rPTM3L1UlSVctOS5eOT8lJFZgMFwKTTc8XzcpP1BYJ0daYENXLThdRCxW QSY1T1MrKD9TLD1cLjVYUiRRUlpNJj9JVTZRJVVLNUItME02Ll4zMwpNT1hDXVAwVyZDXDoyUj1B SyM0UUtMKz46PSwyI1wkVjY6KDdRPydUWVMxK0pTI2BKXDNLXTdGKFwnXU8yCk1VMzZeNjg+SFU+ VUItN08nRlVgI1ElITtGJ0BZUlQxMjZKYEY1WjlAWDs7TFoxYFIoR09IO1c8RSJcSS8KTVlONUxO Jyg0IjQ8JUUoLTg7O0AoRWBJJENSNSNCUzJVWC1WUlQ1VEI6Xyc5Skk9WFI1OC8vWE8oJkJBQQpN MlAuPygvTEBdOUc8SmAsIkA5JkYnKE5UUSgjYGA6K1A+RydDTV8nQF42QlUuVUE2IzxHTjgpSkBM ViZYCk0nKUY8JFkwMTFNNTErOTsjVlg3RFw5LkBBVEY0Ul81RDRdK0A3OEg9TEZXQEEoUDA6Pl0/ VSFfLjNDUDgKTTFBMzE+PS9cWkdKRTdFT0cmKzEuLFBgIjwvSDM2U1JPX0Q2V1cxYEUhXU9VTVZK Vjo1QUcvRTpZTjxYKgpNViEyUU9JUjAvTD1cYEtLVjpFOkFVPVBKOyZLJlU2Kz1fNCFVRlsxTUox N0I0WU5UMSMkTFlMTUlFQlU8Ck1NQDhWOVlHXU5COSwwUFE2XkE4VTJcTUwtTFIrTy1DKEU6JllC S0pYOzleLjBVPzpgNiheQ1pGKy9STSsKTU9bW0I5MWAlMk44IVEpQlVeXCguW0BCVjZbSTBIPTch Jk8hKzJfKjMzLCZWMSI4Q2AlTDFWJVZQNUAzSApNP0ZdXjUwUkdINUA5NTwhPiVUMSZOS0BHLUE1 JEw1T0VeISUhRFIjXDQ2WjcmVyRJU1lWOCclI1koWzlHCk00S0UsIklVNkw6LjYnYEg7KSQrWjlL QThMVistJVIlXz5fTT87VVlfXzk/VCZfKz9NWl8zX1xeL1dfW1AKTV05Xl8+XVRbPCtfXVk/NztL W19ZS109X1gyTGAhXCpXL19TN1pTPz9PRFVfSEY2LF5KX19ZVl8/Pz9OLQpNXy4ySV9NLFcvX1tN PT9LMy9XWVpeX0lbSFM7X1wrPFcvV1tTXko+Py8pNl9fX087VV9eM19PN0tHXVpGCk0vX1JNWVdR WFxfSjtPW19ZWj1PXz9IVV4/P1dGUzhdTyImOz9fJ18pOV1KUjZeMicnXV1cX181V1I6TzoKTSMz STU4RSVRKkFJOE5DN19cT0pPN19fXU5bPS4tOFpZQVZSIkouMz87X147QyshIT1PR01JX19aXkhU PApNLSE/IkZfX1dXOFwkSFteXT4/VzdVVl0yXkhLXDheKUclT0VfQSQ0QkJfU1hAWF04SEtTSCxf RChOTlVJCk0zSlk6VzQtMkhWRFYrLTgrOklJLExJK1VDTkVaWkY4T1leTTU3RjMqVV1aJVFYNiYp M0FULDFINkhWUSoKTSlSVVZSTDVMQFdEJFJeUl0vJltFM0w6Tz9fQ0ZdNz9JOlYwSlxCXV9ePzhH XkhGLUJKX1Y3UkAhV0VBMwpNNDdTW15KPV9fLyMtP1tXWVw4PD9fXFpHJWBWRyInQVUjJFZELkQ3 XjJZNjwuTSchI2A3VjZaXDNTMC0zCk1DJlNERV1SK1ovITM1XjcqSTsxT05aK0ZGQTw4KlFJL142 TjkzMjw1R0RBOUUhQERVIkMyLCYxN15bVyQKTT8zRWBYOyQuKjgiV140SU9YOTM5Wk9VUEpGTEFb SE1CM0BKTVJUKVosJWBUX1NGRztEODMoNEUpLTNISQpNIVEwUlRfMUkoV0lKU1g7SCtFVlBORlMo QjhGVlRNNS0rSkBELkJMXklNOytfLC1GMChDOiFAPDA/OyJECk00UVw0OzdFUVo8L09STCpPOk9J MGAoPzswQzIoSj1QMyQ5TSQvQDNPOzFOR0RMWDBeUkhSV15dTiNEWVcKTU1OJTRRPCZcNSNMWDFN JTM4ITcpTVZWQjVUNFU+JSpYQkZSQjspTl5LUCNFMyxQQjI9PFJCTTRcLVVdNApNUkRNNiokWDA3 UkYwRD9WVTgjP1c4WDVaSjRaKV5XT0pHQkFPVFhcOykhQ2BLRSlASjFCUis6IklATUUjCk1fIisv VC9MSVoxUldPUS0+T0MpUEJTLS9NWClEWEM3PiMhSSY8SixKPlY/PCIrIitZXDhNSClHWEs1Oi8K TUM8Kiw1Wyo6SCJYPEw0UzlCMiIuUSRPU0pVSD0uPTBdQj5NISpVV1BSNToiJzonRjolVjY2NCUt QFpBRQpNVU0qSlEsPUdGS1cvSU5aQlBfI1VGU0RDUyY2J1IiLSEyPCFeTkxNM0QiXSJFOyo2JV5U Oko2OlhUPC0jCk0vREFdOVxFRl1cJDNIWyghRSJgXkpfKCNDVFs4IildOjQoK1hNKCEsMllCTEJR OVBKMC5EOk44QjNALisKTU8+VSVPUF5NXklgSlw8KFlMQiVKPTgnJSQoWigzXkoiIywqNDJIXUY9 NkVHW1JTOFM7TSdSOi06PStNNwpNJEo0KjA2SkwwVUhCNVxBQVFHKF1GMVMrVFNeUUwmW1JSUTdd Lk0uMysrLS1QPl5BKyZPNjg2PDNdNEstCk1TWEtTKzszLTglUjZcXiVYLSVRWko+Qz9OMz8qVFtR Kl9IJkhFRzRNQSxXWEQ6LTtRLi1GJitIQTlGITcKTT83QykoQSc6TUEnLTdHRFpBMEFMRFtWQ1cr VkoiTEowJT4oNUEyQDI5OUY4Uj5ROVMnRy8/S04zJFo7JQpNPElNTC1XOF1BK0UjIjE/WTJLKioq Tjc4NS83LSgxJUtKQ1VALVY2KzorNCdTIzosSkIiJUAiJlMoXFE/Ck0wPTNQJjsoSTAnSVZBJj4n PFc0SyFFTE82V0ZNJUw1Li07KStAJlBVREFCLlZcOjBEKS06JzZGUUokTy4KTSxJTlQxPExIMEJI VEhQQUk4SzwxO0VcRDNcLUciNSYjRjY4PExXPk8+MlpSMFk6NEsqPENgLUA8MjI/SwpNOEszKllf SzA3NzxbVlNcKEg3PDI1UF0zNCtTJlYzMVM8NjZIMUpSVUouPi5GIitZKSFeQSgrMjJFNVtECk1R OVA9OUZHNUteQVEqPVhPOEc4QFA6JkZWRTQlPExCOkUoLUhgSCEsTjo+IVIjOy9FKi8pNUM1SEdH SjUKTT1IJ10oSDBDQkZAKjYpREouQkxGSSQ0VjFEPVhBU2AsWystMCFSRCstMSohYEYoI0NDWEhc M14/Q0pWMApNYC1dIjFUJ0NaViQxJjRVXjBVQ1ROPUtMOUYiUGAhRy9UMEhDJiY5JSkpPiQ4L04p IjteXUNgRS04QCI9Ck1CKk8lPkdGTThJRCNcNUNcNVJcMF5ONC0yLUlIQiJOUEdSX0ooLF8nK1tP LTFOTDZgRCk4VU1TQzAmMU8KTSEuR0kjNiNUKi5HTiMwI0g4XVxeVCU+Q0NfLCUiWl4+RV1HXSM5 M05TJCRILUVJV1JBLVBbMTkkWF9ZJApNUUNgSStKW0ctVUtZRjtHJUJOUiZFTlE5S1hFLEw1Ki47 PSlDU2BbKUlaQEg0TyQqXjU0US1WNyxMV1hACk03SUknOlNdU1hMRktVPVlQLTlGN1hFQERYVklC XyJbKCxEKUojLCNPXSc2UTBDWlBBYFooQk1ESFowVloKTVA7TiNOL0lVIUFXRD0rWlpJREUoVjlM RTZYJ1hTXjtQJjpSJkFCS1A/I0FFJl1FLik/MjgsWStNQSg3PgpNUlksIk1MPi1ZRUcxJjhDW1Ne L1JBSE5DYDJdQkxYUiNJIlpTOD9GLiIhSjhKVVpfLzIzM1w3OVU5R1lDCk0qPSgvNFdISEEpJSpB Iy5TRSU4JEI5PyFbJyxgIjE0PVNCMyEuIU5dN1UmWU4pWyo9JUdSWT9RPVNXQEYKTUckMSdQN1I5 RT42XC0lXDU8WUhWMiQ5UUBRWihgRjs8TUpTJTVEMT0rOUVVPjEnK0M6KUxASUJHK2BMRApNIkot N0NaXy0lJiVVOlcsKVJeWS1PLl86QV8pUDdVVFBPKSksQFE0XyEuTUI+OVUvNkFIJl5GPC8xOy9e Ck07LTJHTyZCRS5RTFElM1EoVUMuPyZMLEFAIUpSRjpYJjYqVEsjVUU4WSxMKlxMIS5UX0ZHLVUp TS4rVDkKTT9FQCo+NSpTW0MwS0tGQ1QuU1lKPTQ8QjAnTj1SPSInUkZRWCZUOic6SyQkWSVOQ1Yl JkU9WDpcKTApLgpNRyQ0IUQmW1I8OTouQVpMQSRaVUovLkBHSU40NipZOU5QT1YwXD1NIldgXjdQ VjdGPy4mN0ZgMF44PldQCk0rVUEjMSknQVAuQCc1TCdeTCFSXl1bMV8uMVJdSF44W15YOTZYUGAv Ry4yL10rTlxaPENdLSFUTjVfKlsKTUo4W0VaLEQ/MUsvXE1AVzJDWV9bT18hNkcxMU8hIzRWOy5d N1BcTElBPFpPRCdIPk8nNDlNUjY4OTojTgpNQDYkOVErQ05ZMStPLCskOVA3SEshTD1aKl5GTDdZ T0M7W11XOCFMQ0tVXyM4Mz8/UkMkN0FWN01gPT5PCk1DPSVWUkRMUEYlVyU/UlNNW1wqVihII0hL JS40UyxGVEc6TiM4WT8zPV8pVipJNjxFKlIvWiRdUWA9VSEKTVhNUlsuNUo3QSQuRlpVRyE7Wkgi NVUnUkQ1PzUxM11MVUomTSo+LjRYLENPK0oqOT44KTcqQC0uLDUqQApNOkYxMTtDWzRbJlFcNVEp JkxCV10rOUYsNDg/RjJdMkMxWlJgXTMoOyNXW04vUC45WScuWiQjREI5Sy1eCk0pMVAmT1lSSTkj NFY5Wj4rKjtUYFMzSls7N1FFM1guVEdVKitPVENNNyFPPkxEMjhRQTxGRUZbKitZPC0KTVdNYC0i Ll8+UkkqRl45Uy9LREZBM1kyLVlPLVc+OjozLCxgNEhWMUVTSSoqWkZVTyNVMF5WUyJQXUFFVApN IktZOlVeT1ZXOjslIjhRWU5MUlI9WVhWKTw8UV1fSTIrTj1PQy5MWiUhUjZTQTAhKSlIJlVdWUhc TyQyCk1YRSVMSSlAOU5SJTUxJkdRWyJMTl5SLSpcVD0/ODg2VCoiVj4wNyUvL0YrMEI0L1pYVFJe NT1APkxFX0oKTU80M0tEL1kwO1U3W0FeUDdSVV8sSUMrI0FBMjBKIlAtVSdVJSREXSU8UDcnQkUj ITouXVEwK0FMWlFOTwpNUUw6Nl9JYDxQMkMhTkVPIUVgWis+M00iPFZYTjMxPFZGTUlSNzkhKS85 RTIxWCk2YElaQDAlKFpOTjNcCk1PME42PTE+SSgxKUdEWUQxQlBWSDQ6TFRDQTdfO0NHUUhaXS1A XVRGMCZEPC4wMS8hRitBSFEoSU0lQzMKTVhJUUZIVVgyNzZfIitYMi0rVFldJSokKiNGKURGTyc7 J1VFWEErXj5YWypCUz0lWkMtNyMoWixLXC1CMwpNQiJKSjFSKl4uNTIlIy4uU1ghNVVfRiVcL1VG LkFINSFYRDJHKUMnNy9fIiM9X1pGWjU2USdKN09BXkRUCk03Wls0QUk2TCYuQ0leXEZCKSteTVg8 OTFCPCckMEA1SSY6QTVSQEcjPD4lLFhZWE5BYCYwWlQmXk1CIVMKTVBIK2AhMUU8LiIqTCIkUFYi SDRQKSdEVlg6QEJgQkU8UCtCYEIjSC5gPCpQVDtROjlJRFRPWD0kPS9OWApNW1wiNi9VUFpXLDIo IVUiJTJgQToxMlZLVElNOjxIKTpKRzojNE5fLEMqU1Q/LlxSVUopVkYvMEY5TCpICk0tNkc0Ry1F SFRNUyRTIUpdMUhZIUleWyxONyZHI0FfOFwuUFEuPlRGQk03OCVMYFNZXlg5Wl45MTkwIykKTVpS KDI9Nk4kXlk1P1xAKk5ATkNXRzYzRFYqNkRbT1gjSD04LFcoMzJLW0hANT0iIV1ZLk05XFo8PVxQ KQpNOStfNDY6WCw/NTlGLForWVc0UTQ7JyRbRyY0Xi81QlJLVlhdTE4pVUVRMSU9Ti4pJz4jSEs2 OCtLSk88Ck1CKCdeVFAhQSwyIy9HUDguSixEPEooTiInTCkzTjtQXFIsJzItJUw3NkFZTiFfRTEl KmBSVDspLUgnJT4KTU5FMTszKVNTLUZgYClOKi4hU0VdUjBTLUsvUz1MLzFEUkwoR2BKNjFcQitM RTVIWVA4SE43TCxJJE9fQQpNI09QJE9SWCQpRSw1PyFDLE4kSiUtMUI0IzUsREYhQjY2OExYXUEp O1ZCOE4yOU8/VkQ2TzhXITJeN05GCk0iUixdRzJQWzEnUlBHNlUwT1M0VE1USV86WE07XSYjLFY4 PTslMS0kLiVLVFxUWDNPSUIlQjg5VFdYOTcKTV48Q0tUJyYpJCVIO0JRPystTkExMTFTOks3MjZT P0AoMmAlS0hHUSlFWyRDU1lUWl0iN1lOSzZDWihTNgpNUlhTWjZbNCg9JUJHLkNeSis1WClSLz8t OCQrWyUiOkYrQzpCQDFOO1AzTy0oS1g6WCpCMyZDMS4lJmBbCk1EYEEiVFtTKCMqSTUqUi1JWmA7 WiQpJyleXEYzKVZVJjdJTko2PUdCLT8kUEgyUEUmI1IhXjtVVCROK1cKTS9DQDREP0c0WDBIQ1Yy QVhUIjM+XlFJQzQoJSU8UVBWJ1wmNiI2M1I1USUmI1Y7KCldSlhgPD1RXS1RTApNPjtQVE9WTitY WSJGTz4yREVTU0VFVUQ7T003V1ZcIlNCSlpVLDNdRkYhTiNfVyMwTUY3TF5aJyVOMjhWCk1CUTZS TSgnODFPKU0rKVgjQStSRFtGOFhTQztENUgrNEI4VzRLSiFEI045OChONFc2JlRMTUNZXCM3ISIK TUUlRCNQSUJWQScjQls5KEk4PURgUExOWEYyJTEjPjReW2BFOydbVC8jPD49QjQ+JkBcJlZFRFov J0kkOApNTFIoMkVbWCdFWzgmPUVOJCxWPDtXUlNUNl9KQDslNzFgW0xQWzFPTkc3KioxS0dgNy8i QCZNOi5XPSUmCk1DQzlLP1MwKk8+QFohVzhNMUMtMSw0UFZBQUNINDUxSzNHT1VgK0MoTk81Iylf M0lZRSxUIl0lTSlQR1UKTSlLKTs/I1sxUDVbWjsjUC5MKENTNDZUSjBQJF5AJStXQSlCKUg4RkIy MycrXT9bNC4/I0VOQ01BKCExKwpNU0NTLS86WEZaRV04Ri1ELlA9PSJZWTBGJC8oNS8/VlU1Nl5C SEhHM0Q4PzcjMyIjQyZZMDchT1Y4Tk0oCk1IUSlXNjo1YE1TLSdHL1Q5QkBKOE4vPiFEUTxZRyRS VkNRTTQ2IT08QTw9SSJBRjBSP0VCMEIvJDQqX1gKTVBEUk9SSltNVF9bMi5ZIUZAQzg2T0JSODM5 LkcpPDE7RTxgKEEyViM5QT0pIz9KYEQxUjkrNU9KUj44MgpNV1VFWjlNRFtWU1NJUDNPMFlBLlUs VCNPJjFOQV5fOkpfJjI1VD9XOVpKVUMxSmBSTlxGK0gmNSpbUkJKCk01TDJKKVcuVypSSUIvSlhH TENDS0JgLE5MKlUtXFFLMV4qO2AoRVkkP1VBTCw9XVBBSVc5YFZLQjg3TDAKTS0hKSZSXlFcXFwi XlcyUSQ6S0lVQkEqO1FXUiVSPlckQiclWk5TIl04MD48V0siIkFeKFImK1EtRkcuWgpNTlYzJzo6 KCkjUCszYF4+Lzo0WmAsQk8rOiVKUEwtMzhMQ1BGLTg6TyM2M0orRTxJNE83SzQuM0orRUdZCk1C Nlw5OlVNQSZRQC4qN0smQ1Q0Tyo3OFQqWEw0QiowOCo0NT0kQ19fOEY8RUJIMjEuRGBMXDwlLl8t MTkKTUhbLCpUOjJSTUw8Nz4uMyk6I1o7IzhOWDJgKUhFNTQnIyNGK0tRJ1kvPE8nQDVgSUpfUVpG OTchXERMPgpNXUNeXzknR0QrMTMlVlUzWj5cVyJFR0AwO15dQztRLjMrMStXXVpUQ0NfRzstQFsv MCsvNkAtQ1Q6KFVKCk1RKUknLiUhWDBTIkYvNjE3LyNfUVFGV1JKUUc1JT5ZSDQqWixMVFEnMUFQ RTQ6KS86VThbLjpgMTFMTyUKTTwpMEVZIjRbSkstPllMMkAuQ1ZFJzNAI1NSSVAtJEUkSV5HWSRB VU1WPSUjK0BaOVZaNUg2W2A0QyYxVwpNSk0jRiNRLDFfTEM9QzU4KT9IWjIhUylWTyxXUlIjVFYn L0FXJUEuKD9ePFhMI0JFRkdCKyQiXU8rNllSCk0uWTUhRGBLJ0ouPkdJWEJWLDxKKUgnQVAtLU9O KzlfJ0pBKyRCKEgzS2BLUzpNPkkoPUooKjxJQTFZNEwKTSktQUs/QDI9PVMoLkhaNTUtWkguQEVN LE8/PEEmTE1gPEsyPkddIkE6QUJVMF42MTtANiswW0tbUiFYJApNOC06L0tVPSVfVCFFTU9UQDEj YEYtSDIvTmAsR0M1XSI0LV1bSVtLLExFLF1QPjVGQkVcPkI6VDZLXDNDCk1PRi5fTyhNYDVOUEVM KS8pXi49RUUzI0dPSlVgLl0jK1BPSCI2JD9eJlpTKE8hTD1bPSYoSzBcNjonKEoKTTw8ViVFWjMr MjVFLj5BK1hCMiJcLSgwKyVbNC49LSxNQDhcVzwkMCQiTEE1NCQiJ0Q/NS5aIk09R0AwOgpNWC5M NzpcQjkmPSovTFI/OEgxSVBHYCxZJloqKkItUU5NQCZET0wuIyk7Uzk6N1tZWT01SD0kM19TOV5f Ck0/J1pUSCteK10+VDFMMiJfJyNTWVpANFRIXDs5ISMxQylUVFMsKjRJVF9RSCgqPjgqMzUnXFc3 ISRANigKTSRVT09BXSxVLlg6TDxGQTAiXl4lWzxUYEApP1JbRy1AL1VJJz09NElJOU8xPEszWEhg XiNGOzhUMzFeRQpNQzZWXFMrKUwuOWA4MDsnOCcsPzZAR1sjUiosJCdKWVZHXGA7WFdDJyEqOTNB PSlWIUcqI2BdUjY/MTNFCk1ZPCNHLlYpJEpgTUxEU1s7MlQrJiosTUxMUFhZLzZIIjw9LjEvLCxF XSJWM01JRDZHQC07MUgsMk1HQkQKTTZZT0w4UEskST9ARC9IQSQqSis8XE4/RyhERDBbWiY1MEI7 R1lTWSdNKTdUXERQNSxdWk9ZTS9ZMzU5WgpNT1pYNyJfS1VIVlk1J0ZPVEJHVkZQKFA4MlNXTlo7 M04uLkVGXjxdLS1UTU1RKEsmRiwnLUdVOlE9I0ctCk1HRDNTOjRVTEBRTkUhLitNSSlTWUEqLCcq IlJRXDdSKiksLCFQRUIkJU8/KTUwQF0mNVo0SEEyTyc+KEUKTUNeWD5LU1ciJFY8OjBeVT9FVkE1 XERGR11aLi9GJEoiQCxJRkQhIS4nQlQ3QTFcMlJMP19TJDhNVys1XApNQUYlMyVZR0E6KTBNVCRQ KkQlSisyWUsjPVAuUFMxRCkxWEEoYEEyP1peJCdSWUwtL0E5OS1JWlZEMUY7Ck1aOiw3PU4pRkwl SWAsJVstV1dHRTc5Nlg4XyUxLCdWRScyPzBSSFpfUlRdTD8qPDlTRScmOyc3WCwqSDYKTVFMIiVN WjlTXSwyU1ZaNkkvTE1GT0ZFTjMnKi9HNlc7P0EyPFFeWzsqPlYlQkVWKk8nXyE9X10oKlxRMQpN VSdFRkIrTFBNL1dENlY7RjxCWjZBPlAsLFk+S148VyglUElMViVWS14yNUksMT1ZTDApJTlZPStH TEksCk1EQDFEQyo2NzNgNEdXPlJSWSFDQWBbXUBGNlIiMDdXMEYjITtXTjMsR1JUOiIpOlMyVV1A TClFWFFUYCIKTV1KNi1YIzEsM0EoOjNCTTIsWDNIVSM6KjNNUzk7TicnVEQsXCM3Qzs7LjI3QyQu NzdGXCo9KjtQS0g1PApNKj5TNDhFM182TVI/UVcwPVhWQFwiJ14sXkg9Vkw1Pk4uJUQ2SzBZNyw7 T0c7R0kmS1ZBVV4oSjtBS1c8Ck0uJVM6VUNIV143QVUnOj1XIiE1JFowSiNTNSYpJExJWE9LWjw5 QERTRCw9NUlFNyEwRihdWSxSKlw6KkUKTUpVIUEtUj8zXjcjJVw5T0wiJ1kqTisvTSpEQyFaPFow VCIqRiZfQytcNlQhNzFEUzJHLUw7UjZSMkIuTwpNXylVRitdOTtbJDsjYCVfUjFaXiI2RjQkWFdG MUlAO1kzPlFfVz9UUVQrVSIuVjQuQlM0VjZeUz5BTEY5Ck1IRD8oWFdPPU8yJUouRDlIIVkuVjFG RDMwP00lPE8rLE5RVV1YQEBVWUNgQWBeO1EjUz9PM10hKU5dREEKTWAlPkhCNVpMJ1RgV08pVitG JU1STCFZRC1XVT1dLFBTLToxV1c9RTZOR01GRlhOQi5eLjYuTS9KOilVOQpNSUovYD07KiNOJUtH TDRTQjNHPjJOQDtSW0NJIiw0OS5LVEROQUZUUl5VNFk3Uz1WOiJGRDw9WzgzNzMxCk1BODlGQ1Aj MkM5NldAVzVLQVtVPSk7VCVIRy4hViFaX04rVik0PU4tIVI5SVZLNDZFNz8oQk8wSVwmVVAKTThL Ql82Xl1KTTIqX0NVJU5SV0JBLj5TTTJaIiNeWjwrPl8vKiZUJUdBLzlZWEBANjNPIUMiLVMmNlRL WApNST0+QE9SUU4tV0AnMUIhTlVXXDpCK09QWCdEQCQuXUpRQTMjTzJFP0MjRztEISleMD9OW0oj XUE1Uj9ACk04PE4iSig+XFQlKTIvUUMqK1wmUlpRNURDOEowX0FMOSIqXDtcKT5HJVJfKFQnIT9g L0QtPUM5JGBfPD0KTVA7RSFDSDk0VUVLKlFHMSlcXyEmIWAxWCFELDdDWlNeT0pKW1A9LFBYM1gn M1hbJD1TUCwpSltXKDFAVwpNUU5GPFIjSVhMWCRKT0U4XFheKUlgIkRNWUBSOEI4RFhTUUBIPi5U WU8wKVZFU082VUsrTyVgQz86UzMvCk1VPEJBQypHLDEpYF08TzdBQiNVIyclKD00JkpDU0NQLUk/ NUkjIlEhWlFAWSFITzI4MSZFLzw3OEgxWCoKTSxePTdFSDMuWVhAXT0tRC9BODg/OzYtW1FGJF5e PE5JIUM9LVhGTTk3RF1fMTUxND5ZV1MtPiRILTw2LwpNPDJDXjI2QyhCMERKNSs2YD01V1lAWV9W LS1IPktLU1VQUFQnKkg6LkY/KyhfUEspWjpNKEsvIUYtOE9KCk0tR1UoRl0nJEZRJ1tOTzJRQjtd NSZPRTlMXS0mQCVQRz9FIUlgJjstSUYjVUxFJ19aRzwvTURFVFNAOlUKTTVfLVdAMCdVQkFgLUBM P15eM0g9R2A8XFNCXj4qNCxIOyIwJDEuIzs5QSI2JjEwJyU/VzdAU105WTssTApNUEFDQ1NeSVhX KicqJ1woNi0yPyFCXEs0SEI6PytSPFc4WzZILDU4VFsoQT1ETWArQlo5JDI5VzM8UitMCk1QSj9U JlgrI1ZQTzktTD5IJyEqODlXQ1lLWjwkQlhNRC0hVE5FXEYwL0BRN1xfKywhIl5fYFcjR10vPyUK TTY2NFEwOTIrTFIjIk80Ml8+LExKKUpcLCwrKT8lXzIoIyZOJCssS1MkMjcyVjU4YDxeT1A8Q1c5 I09CPApNUF1cLlwvRFZAPj1NMEM9T0srLlhERTExIyFEOilbKio7Vk48IydSOkgpLVM/KzklSEI4 SFM3PC9JPThRCk08RUpATjU6Vi1XREc2WVZdNlg2Xik+IllESTxJUzVESz0kQkszPFMxKUBYVCJP LEVcXTE6Rkg5XzMnXkIKTUJTRkUlVkZKYFomMy4wPzNgWiNUWTtFOl1FVCghXCUiOkFBL0oxTTgj ITk0WEkqS1JIMkkqT05TWkksSApNIS0yLmBYRV9EXSNELi1LJVlEOlFOOl04O0k7K08wNjVALTQ4 MkgmKzg6Q0YtPGAzUyc0LDZbTyovJVAlCk1KMSZOKCYyISoqTERAWC9dUSQxXFhMNzkrI0NXJUMz K1o5RicsSERURSkqOyJEOzEhMi44ITQiTThBQT0KTU0pSUkjJjBLJjw/YC4oWVkzK1JDJjxDTDBS UDNWP0E1LDkoTjdcVSxIIi81I2A3MEtWMEpAKDFGSyhcUApNKFRHRVxEKkcjUEZGMVxFTlo7RyU/ JVpIOSIzIUkmWkAuIkZcKig9N0xWJyJdTjRGPS83Uk4/WC5ESDhcCk0/TFMyQUNCKyciWl01MTdS OksmXkcuOkM0WzkkRFZcW1c+MldZIi1ZXTNYTzVeT0EtL0VXWCFPUD4iOFcKTVVTMD0xOT5fLlNP WD4iOTtPIVIuNFBXQy0uJk0+QWBRIltPKEgtXUk2VylENj8qOlNOJio5RyxMSiVaWQpNJ0E7Qzo1 OVZWNlo9NTZJPTkrPis7KzMqUUY6UWBaPFpTOlI2Sks9KVFYNV89TCJgQEMrPVErVDlJKUI3Ck1W Nkk9JUZFKjtQKVFWVj9NWi09KSFUJTFNYDErNTM9VS45XS8yOTcxPCdVVU8zKSg+JDlZTz45Si5J Kz0KTTYxNUBCQiJZP0orS1EzNEY0QUUyVDosOz5TSkg2UF5bUj1KJlpKMyJALTYhU14sVzlBTlVG PCMoL0FGTApNJlM6T1NOOSlPUS1ZLSUsXCFBKyU4IjdOKERWLEczMjNYPFMvOSJKNC8pQlZAKVg5 WjA2KDlFKE1BKGBYCk07K0clNlRIOTFOUihKJlpZSEVXSz8rJV1PJUMjWjYvPVZOMkQqU0o+UUUn STZJVlBAOTUjWV5AVWBCXVgKTS8wVUE7UzpaXyJEUCk5YCI7MjVXLkctUSpDOSFaTFkuPzZMMjRJ Nl88UjM8YCpEWyhSJitJImAkQSEtMgpNSEAzR0hXS0czOCslTkFQLylESTQ0LFIsOFInVTQxLk0k JEBcJTxdLiNAQy9NLiUkM0ImKkcsTDQwOTxUCk1GQylWPScrMytDQVQ5O0MoRSNSUi85UkAlQTc7 MEJFIVtbIUI+IUQpPi0xWykpXidGSzM1LTBZMCY1W0AKTSU9R1heM0I9QytCKkEwTixOITlSVVVA Oj9VUy1WJzVLNTw4JFsnNTlLIyVOSlgqQElZXjkvUEBgPCI+PgpNRjM/KFM0LWBILDQiXF4/XTQ3 VFNEX1lMIUZOWTBMQ0wpTk4xN15RLC82PFgnXS0sOkFNIjtCUklXI0VSCk0/XUJYWSIlWEwoMSNG LWAuQkcyNjpKQEUwPlg5LTgpODZDOSVLODxHIyFCXlNVSytAWTJAOUxPLjhWVikKTTgrIS5SVjoo JzpaOTRERUFePEpYVTVNNVgrUCpBMzlbOD4xQTpHRyk6PzRFMzRFNyVDTl41JFpgOi0hQwpNTC8t OD5ZMDNGQzMmPVQ2LktFO0BdNlJVJ1RTQ0k2Oj5OKkInWlUvUjQqUF1FWCJgPU9CXTAlOk1HQklR Ck1OOVhgLSxCM0EwOiowRy1QLUJOMyxPXypSS0dJKk9gTktGJy1SXSY8LEErTlkrYFwoMTdLImBY TydAXUAKTTolXlZYKj1QRUpNWSw8WU5YUlRJSFZZOUxbKlk6SUEsRUcpRDxVVy5cPUBSVC05XVwn Nks2RlYzWkwxWApNISg9W0lFJWBDYC0jQjA1L2BIMTBHNDUkKygrKlMmSlgkKzs2SyxUIU40T0o+ SyM6XTQnOkkmRl5YJlBZCk1PUyJAMyFWPFtDKlNMK0xWUiE7WE87TTw3UlNOVUVaVV4uUV01QlhX OTVHPVRfUipHPTwzOFk1PyE4SzMKTVtCX05XMDYqSycvTidSRTxZUl1WViM+K0Q3JidUPDVYPVUo IjsvRyxdKUw1Uy46PUUjMV05OTIpOFs9JwpNOFlNOFApMFNbPUBVQU4yK1ozYFo+Nzg8PCFDNU5Z Uy1WKklTU1U6IkM0LVZQWFc4TzkvN1k2Q0tRUU49Ck1LOkpRVi5bWD5HUDtHVl4sKCE8Uz44TDc+ L0dKOUg6Sz5MVkBZNC4xXUQ6QD8zUEFNJlxeXkgoV1gjMk8KTTZaPChNNSwxMVJdXFAjNyhIR0Uq JzVYME0sQ11FXDNJKDtMTjM1MjFcVFZGWVMmOiZKSC08ITJFMUpWOgpNSiM3IjsrREpaVT5CIVRW SkJaTUFIOjxJOkBQKE9aMElWJTdLSyYzVysjOzRAUTgnXDE+UVgxWFRKIS4kCk03QVEnNVhCLClH R1xGJV0zKjYoQTdMMzcuLCQvP0hCMCgqKSEtLSZSWDhQXkcqJz87VmAhJFgyXC85SjcKTSgkXCZB L10sVTlXKzEuXiguLDIlJjoqSDg9UGAoYD1WQCZXWls4XzQ+J1hHMC0mPzlWQEE9TVw9KzQoVQpN NlRKX0clREVaISVVP0EkKys3OCNSRURHQ1ZDQVQ3UjxDPVorMU8vKz8iWz9CKEM9STtTWUE4ODAz WjsjCk1KUjVZXjFMUyctM0UsLlBSRVMxRSFUSVkuXzBTQzArLjFWKjJaKl0pXkUtKjhZPiZUXDdV LCdGNSctXF4KTS8zWF4vSk5KMEciQkEwPzUpMj9ZOzM6Rjk/TycsOCJPTFVNMU4rKkgySiMhUkU8 NkdWOjMlPC5ZTE4xXApNUWBIXks4OTlZRT83TyZRRVQ+NEhTWEk1L0xFJycnOSQhXEUoV0UhM0JF LFpLT1FCM080PjtSJlJQRStgCk1DUkNfK0VfPEwuK11SSytLKEo9N0pESzhVPCM5UzQkQ1Q9VV4z KFdBXilfS1k2SjI5VS8mOCgvRD1dK00KTVZEO1RbVSc8MFw9IU1XMyxGQ0tGPTIvRmAjVS9LNksz TDE8VTo9V0paM0Q8JFQkOy9TPlNeNDI2Q15DOApNOSlBLzk/JSEjI0sjUTgoND9FRF0uQkxaRE00 M1hTKE8yK0deSCFIQitVQF0/PT5ULV03M0coQzJARFsmCk1fRy06XS4vOTA+U11CVSpDPkBYWz5A WjNMJiw9O1JcODVDUVJFXClBQ1VSYFJSQT1OOE5ERWBCT1IzUEoKTVsiMiclTkopXDUqXDhCXURJ JyNSNlwrIzUpL1Q+VStUKy9ESDpVKFNSKkAhMDMmWC0vSjdVMikkMkY1RQpNNjlUQldeRj5cQCkm VzRaV1ZaLk86MCZFOFxFKyVETCw6Wk4vISNJWVtCNE4hSihYOyQ4IzlbNEpQPUhQCk0wTzdHIldZ OilQJVgoVzJELUg3OVoiLCtQLi03IUFLRE9YKjg1LVBeP0w1P0c0RjBBWk9LT2BLQjQwQ0IKTTQx NSRKTihNQCpdPiI7TjVNPDlJLT8jVC1HR1UyQTFYWEcwP2A/VTknPSI/XjQmSyNETUY5UDVSJkVA PQpNLDJaYFA2JSVGU1RUJTA0QiJMMkJTLVwzPUNRJUlJSjgzMzo+JEBHVl9KL082IURfWCw3Klks NFQrUyleCk00QE5eNVdQJCIiRCsvKSszUT44JygkTDJIVDpSJEtQTiQxOEQ2VkU2WSFBT0NPIzFF QSReOkhCUFI0SDEKTVYqSUwoPEJXQDwhPEwxWktcLDFEU1IuM0s8NUtRRVA/WFU5TlJgSDE1Mz0i KUw8PSNIUF4nRkBJLEckWApNXDlNSz5NOTFKJTtbWCtYUUdESV1MMkpCJiUxPUxIIjNeNDRNSFZg SUE1UyJbR1tWRUojPDE/WidFTWBXCk0sQiI6NSVAKjAmSjAjQS8kLkBJUy5PSkMvRzBUWi08I0o2 OV44WDY4KyFELSMlRyZQYC1JRj9XOlAyITUKTS1aIlhDSzgzVD0hVFU0KSNZWVlWUidCKSVaL1k7 IyRMLFtMTU47NixPMztXXTYyW1JIMj9ULGAhNTIiRwpNLU5IOV5UJjEqPFoyUVhfSU9CVlBeLy0p VE9GLFQpNlZeIy9ZXUBOUyowO0w5XT9US1hOXjM1PVhYPjEvCk1SNSY/VmBTXUxQLktRSyVcOFUu IihSSUlHQTU3SlZONCVGWF9ENSgrO0cvSVVGXk5cVkY2PWBbOUs0UlQKTVhQTCcsUkhTRj1DMTxN LyZUNlkpUkVZWiZTSiZKW0ZXQisjK1QjLUpAMlgpRGAhOy4pWCs+U1AvNjxVNwpNSyJUQDwuLydR PkRNPF1RT1ApXipXS0lQNVZUKFIqVSVPRT0sKyMkJkA+OzFESDZbNzc8Ni4zQzIwKSVNCk1YJEBX JFVJIlQxOi8mLC8oO1IlLjA3RiRfSjE8MDpRRSNWXihZQkVbXSFBWEFSL2BfLyVWMUZKKD46ST4K TSI9WjVCSEApMTg+Tk5DM11CSEklIltZXEBcS0JLSDpMUk4mYCMwNUJgUzVQNU9RQk8qVksxWVNF KTVEWQpNN1Y0SztATis5SjUmP0oxLTpGQDkvMSRLVERISjQxWCRFN0ZBPSMxPEtMWUVSOE8uNDtc OiQvLiIrIiRMCk0vNVs1TThPWSpMVTRZS0xQJ1xgUTgoPkw2IV5IXkUiT0NbTVRbOUYuU01BMTZb WE5AKTo1U1lLQkFfJTEKTUZYSU1JUCorUk9SSiMiS0oiTVM7NFddWD5USlYqXzlLKz8mL1MoPzpF SFI+TDZQX0MlREA9VkVbOCErIwpNIUdHMSQ9TlIoTjFbUidMP0heRzosQUAsXSRTJCwtT0EzQFYl YCZaKFM7IT1gUiQiKVtKMSZTXjAzOzRcCk1CTCIlVUxQOypPVTA8VUtBUDs9Kk0jLz1QISM5VlBA TlI6QjFMJE02YEFUSDJDWUUnIVEjRF4jQ1Y0JkQKTTEyYFNKOiEmQDxRSFsrNCsxLElBR1Q1UDRa V1A7WkpNQUtVLVwqIUxASU9NJlA0QjZeWl0mMDRXSi1ZTwpNNl5XS0c0NC9FNSQtP1g8Kl9MOkNS Pl0iRD1eQCZLTCVBO1U/RC5eYExDVl5HOEJfXTRZSTc/XzpXJTZfCk09PyhfJk5KOSUxK1ouOVQt NVotSzBTRitXOF9UPl0oOj8mNzRaLEBdJE1ISVA3WUxOV0s0JDpQOFZGV00KTT0pV1owU0NCJy5H MzReSDcpUiFbUyU8Jj8hJjFOVSQtNEUsTTVVLDE6WVoqXy1gXEpLIT8nNTdINUhVTwpNREkhQURI LSw0T1Y4LSctVjxXN1pSLSsoQEojLE4uWkk2STQtJT1FLTckKFs1QSEtOTQ+X0AjQV0/UUhbCk1H OC1VUyMnJDRcS0k8ITcqMUtaJD02SjdHRDdbUFNHX044K19OOVolOkUqMTY0WEskLjdSVlQ8MD48 TUEKTVo4X0IlWFJYJSlHRzInPTUvSzwuXFBSIy1SUCknJ1NOUC4oXDdRTy9gNz5IYEQpKEI4MkxR LDpHSVIpRApNNiFZQDguXTQ5VjNSLiovQlNbXzRKOklKQ0stSU1FKElOS0oyQUdAUVZAOT5ULVwn Rz9WPU8lKTQ/MTAkCk04LzRFJEgyRzNcVUpaWlk2VVNcWCQvT187RF8sO08jTzFgJixMSlsrSz5Q XVk1LE9NKV1fOjAyL1I9WFgKTVw6MyRBO1BYSyRbIk9PJFRPVlIyTCRfNlBRL1ZGNSI1OicoK04h Kk5XP1FcTEFVJiZCPFdIJEkrUjo3KwpNQD0zLlUjV15aV0hOUEdDSDRZRlEtKjg/RFcnXi9ONFFV WVpaWkdCTiFKIT4qMkEzIzw4Xl0xTCJaWC4tCk0tIiE7XiIpWVoxWkFUTTJXRFFOLTovLyw6SVE9 SUotVTI4X1JcVEYlJ1swNl1QQDE5SV5YOVtIKihQPiYKTT46MjVVLENDOlpALkRGSyhcNT5HRk48 SE00RkxYMEktTTg0YCxTTysjST4sVzhLLlM4U1xgVzg3WT45JwpNXlIhPl8lOEZBQThSIkc+KUVD NUJEJiMzXlo4ODNDTyUjMVMpQzcjVDclMl8sO1giOVgmUT5RXDYwUVcrCk01SzRZW0RWMD1ePD8/ TFRLMF9PN0c6NlhbJE49NlVTWTImUkUzWFRbKTYvVjhEPCREWEZbLSIzLVFGMFsKTU82Sz4rOTgu W1tHPzxDSVEhKTMoTDg0RjA2UzhEXTtPPGBdKSo4J18+SjxbWC5VNlUrNzU4T1tMP0A9SwpNM0Ik VT0nPzdNNTkmW1xQVlc0MSdRQU1XOFdPKTUnUF1YJDo+WiwjREg3MGAtUENFMy1HSi4mUzIjUk1Z Ck1BPFRdTjctI15QOVNQO0YtTzEmXi4pPUwlPSQtWiFPSmBMWEhPSVhEWz0hXExcWEAiVTZFSzVM PWBCWFcKTVZeLDtJUU0xXktPPUwwQ1ZKNjZbLDxYLFVIS1xgMFQ+WiYtI1U9WUA2KS8mWF1JMkNV RjJIKiFfVDxAXwpNLSdXXj0mQ0RZPCwzJVZIN1Q/Lkc2KzhVKlREMURNNzo6OV1gLlFEMCs1NC5C XyVcQUtHNDgpWkVJMlFGCk0xLlIyRUsvLD1MMzkiOUtIQz5ZTCVRPk0jKSkpTEQpRkFET1Y6TS8k S1RCIlVWNEY0Nyk6PVEtJic4Qk0KTSdEWCJFQmAjLkY4OSUwXEdBLScuUyU+RV5YSFVgSVJYISIo KDM1Kk9RTUY1XTY6OSsyUTBBKz0zVDwhJwpNVFksSVwqMCdEQVMkKzRHIUoqVWAmSV8oU181VFU4 KVZNMlhJVC1CQVcoIkM7KFwrYCpDOFJQTDIzNzdLCk1ZUzQ/I0I7OVZNOCklSTRSVzo8Kl0uT0FW QEpCNU8pIlZDOEIvUVNRJDIsXCsrIy5GIVlaMShZTSY4XUkKTVs6PE83OzMsOElETElBS0EuNkRY P0s/K102N15cXERPODkkXEs2QSolMlE6OiZQNlZdQF9GUz5GMVhTNgpNQVhKOTQvW108KEhUQlMx UjIkTVskOmA/XlxfPzZSQWAhKjkkUTVVWVpSXiZZNyNWXFBOS2BWKFJCLCRXCk0pMzQiWUk4VD9e O1suYFFdJydGX1QqNiFBQkwlRSkzMiFILSstKzZAQUhCW1RXQjIkNS0mLC5bNjkjN2AKTStdL1gh OUUoIjonNlQtXyhNMFFaLCZVIjg8N1A2WipRMT41QiJVMi5bPCkmPzMiTyUnTGBFL1tHKVQnSQpN ST5aJSpZSl1KJy1cTzM9Jyw1J00pOFA2VU0nUC1fKCRQUUcsTThgNy06RCdbQGBRTUsxW15MKD9U RyVCCk0rMylGLyJBLUlQNkAvW1BGVEYkUkxMTDdMVlFWIjJVNE5bWltMIkRTYDQxOUM2UCEnKD8i SSxQUkxWO0AKTUBIITE5NkRXI0g9PzhAXE5TR1NGKz0hSicsW2A3QF9LPUNRUS4iOTU+PycwMi0o XyVCJ1VFN19JK1ouQQpNMy1DTypbRyRKQypcSS5RTyY4ISlVOlZPSUFgQUpYPzs3LVhAMjBeRjNd OyVKIk5gPkFLRyRWWT5JJ0E1Ck1aO0w5S005K0wuODpFRT09WlsnKTcjMCReO1dAQCRQV0NAMUxN LVpgRiU9VU8mWCkmRzwqNzY2S0snQi8KTSEhLTkqOldNPkUzOkNdOEUiW0YqITYiUFImKy1aUkVQ MmA7T2BXTlFaVlcpMzRdLllMTTpOPycqIyw4TQpNVUFBLj5bRSNFJE49X0QrVDFdLUw2KypKXUlL TEJeMzlcUEEvJyZdSV1IWiZdNk5aUjIjXzgtTlM9XE5YCk02SSM8J1ZAPU1aLkNeNlEmPSY9JVBP MzFMKUA3LjknJzUlUlEjKyVYXkcwVz0/SlNLVlFJW1o0JVU2KisKTVg+SFpbLjVGWyglXCgjX0dU Xz8wMjsiMS08K145IWBEKTYiJyRYTjgnTkZESCQnMlVANFVdTVRUQylgMgpNQCUlNScpKytFVDJC VDY9NEk1XE4iN14tS05VNiIqMVdWMD9EJ0FTTllAWDokM1QrIz9HNFckWVVTKC0/Ck1FVEkrOzhb NTlPQFBBNz5JS0xeWSM4STUxRFBONFFVJyNQLCJDLllIMiMnIUdVLGAnRl4jRFInPEQuJCoKTUhQ JlddK15SWVw1WkVKRz1EJyU2UyY9VTI8JSEzQUUsTiZHIWA4LFclTzA4VSckOlIyOSFGWVomYFpV JwpNLS9dJVxPUTkxL2AzJVM8TFw3NSc7MEQ7KkpEOFlVP1lKSDxMIkw/OTooJV5ILk46IzgwNUhP VEdOWFtACk01MDIiNEswW0ZTKCZJJV9ZOClCO10vPzxYMWBJMy4wRyNRR1lKVUNETzItSSJGRFpE RzJFV1JIRTQhLyEKTVcvRFEtUUBDIjY7PlNPOlAsKD5IX1JKSVdDWDM7SkwjPDYvUlpeMTNaSUFL XkVfQjVVXSZXOkxYTlVTLQpNO1Q5KTFSO0IsJ05STiFGJUtYNzpWSjUwJUlIV0hdNVw9QEc2RENW NS5CMS1WMl1cKjJOUEhQRF4yIz43Ck1AN1omS10zPTdEPUU7VFYkIjNaVFBcTkpWV10jVztGKzZW PT07QlA3WydAWE5GITtEIT82Nk8jJVgqTkgKTSIpN0QqRUxNVVk/U1EwSl9OJl8uI09EQiVfP1Ep Wy9QOk9aLkYpPVg4ITIzIkZXJC9VRFNFPl5FOUJOUgpNNSctSTBVW1otWyk5W1xNQUw1SEhLXWBE TCVOXitOQy0rWCZSSU5ZPkspOVxXPlhLOz9JVD4mRV0rXlVECk03Lj0uNkcsXCVYW1MkT0kvSFZd LyxbUkpbTlVJWlY1LkkvW0lKM0FVSiVcOClRVzUsNlpRU0QhLi1WKEcKTSZeNkkxSSQtIjtCL1A/ JSNaWlhFWVw4Tz5OYFA1LDhYJUFASjopUCJNLlpFSE9cWCU+I1FPKUNSVUckPApNS2BJWlJZO1c4 JUBUISFEJ1BBRCZOMkorO1g8OSwyK1hDNUlcPFo0QyNTV1tbVDFDTlIjXFlCVy9XNVAwCk0kRVkk WywrKF5bTCJDMyVHL01IW1s6Ojc7RltGWSE4Tj5AUDYqXkxBYCc8TzhVXDldO0ZTTVhJQ04+PFAK TTUoSVc3V0JMKkpfOzRfXiZBIldXTiUlLzQrPUM+TUQsJ1FPOjo+OiRaTTFMTFYmI1BMTiREPUNQ KCJGXwpNQjMuLUk7TiZARCFHYFciXyoiQzpaWCs+PldBSTc/SDZPIjIxJjg3MjVISl83KSU7Oj8p Ti5VJz08UFY9Ck0tLEdKTTYqOTFeOFU+QUoySkRSJUxMQV9IKDBWPjo2SFNfWyM/JkxAVl0hTTxP JEouNFteUSdaPilEP0QKTSdZJ0MhUCRVRzZYKjMiRDwtOUgiNGAnXTY2MEEwSlZXV1kwQyskVV9J MkZHP1dVIl0xKysqVTxEN10pQgpNXyJXMTMuK0U/XyI3IkotPz8+VS9JVz4sQDNUU1MvL09FMksx L0FTOjQhVFlRUyUjPCZQVUNRUEZdUkEyCk05TTRcPl1IQDtUOVRTSFNBPElGNSpZIVVIT0kmMVpM PkVDLyNBT0tMSTs+YExNQ0UhS0pRS1lHUkBOU1oKTStNPCZZQV4pJD5fOlwnMVdKOT04LDouND45 JkIxIzUyKCxCIU8+Sj00UTM7ITtNMDRSIy1GUjlPQk83TApNV08iTEQ/UCojIlUvI083TD43VCZf IitZSkY5Lio/PTozPCk2UVM1U1FJUDxSI1csWSlSMyxCPDRPI0AwCk1NW0pEVy9TQlk9NVYpXjRa PTA/MkA5Jl1cWSE9TSM6P0k6Wz1BSTdSRjZYNjUmKEFWK0MwVkMiMSRcJSgKTTdJLUYtPDcjMjU4 OUIvM0lKSTYnUCQ6JEQhJTEqTyFGOjBBWTQuRERaMVNTSydMUlNAUDQtV05LOlJEUQpNUyROUl04 Tz1KNyZGNCktSCstMzozSi8oKyYxWlFQJCYxJUZfLiEzSEgsQU5UTjZfYENWNzhSJ04zMSNFCk06 UWBBISIiJidGUjA6MEhOLD0hQj4kJzwiMUdJO0s9Q11IJTcoUkohPyYiSlQsPEYnISdfPVU5WWBN J00KTTwrQCI2O1teXSxQNyNZPkpXKCZCVy5FSUQoVzkxMzshLUBYL0pFTWApQiFHPklNSExQXDZK NDUqLSlMWQpNMSlJPj1CTydWNUQ3Ny0yIVAoQDhgWE5DNyMyKF88LEVNSUQpSzovMiRdKF9SQSde J0cjTF8tLTpYSmA5Ck02SFZZPiIlTyRPTDgnKF4oJDQ9JEczJSlfXkFDOFxOLTFCLkRgQ1tQVDNC XjIuIicsU1ZGXEAqU01aMVEKTVw/LUs2RDNKUCY1LlJGNEJZPiVPNkxXMElIN1QoRzZdOkg7Xko5 NiooJkhBLEhVVjosNk46Ll9UNSQmYApNPV5eUDBFVSU3KzElWUoyUFZfKCEjWCZVVTEpS1FGJTVW MSFHJFc5LThaJDtATTclQCU5VFFNPEpSLktNCk1APlVgXzpAQkItMixRPDlURyVWTktcIjBgRUxG KFQ5R1xBTy0xN05bKk5HJVVSXFlTJDs2ITVONzAlO0cKTTpeRE4uTiovRj43OzM2MztAS1QvITYx MiJWQzxNJCNVSkAuRE9OJ0FaPCFQUk5ZQERBVUA1VzJZMzkmOQpNK1tTLUc4WikuKlxPPiQ2Uk9b RThePVE7WF8tPis6TlZFUFEuQ0JHR18+Vy1aWz1PX1knXl0+XF8/Ly9WCk1WUV1fKCo5XStTR049 QDVFNDpbQls3KlYxND5ESUA3JjNgQUIhUDRMTDZUMEYzPTpGXSpcNkAtUk9aQEYKTU1WXFJCJURO MVovJDFYLUNZQFEpVClGST0wVEc+PVRJUUJLNUZGPzIxSTFXJ0AiNURQQyVAV1pDTlI1JApNUjhS Rl0iWVhKOipIJVYiI1k5UzI6VStKIjtIMjJYJ1JHPDIjKFwiST9QOlRGVEkkUj1GNl9SLC4zXE1P Ck1CVTRZU05GNSRgR10pUk5TOE4wNjhOKjw3M18vOzBRVTVRNTtKWy5PLyMoLCo0Ll4vQipUJVoj MVZIXSQKTTs7MDReOVpQUzQ5XVcwMSJIL1olLk1COzc+OyU2LFErQFQqNDtOPlxbJ1FVRzpGM1go R15XYCQpNzNcOgpNJ1NCUlpPRjE1MSEnUjVOPUhWJCNeOzwnI18pKSQjODlDTD4kPzk8PTEyS04y LjdART4nUDInQS8kVy04Ck01JlYrVyQkODsiJi9GND9CMEAxQ0hYKk4/SjAhSl45OzAwVCxaTUol Lj44SVEoTS5UJltCLUAmXiVXXyoKTVtYM1xSKyJTLTorTCtBI0JRTlQtP0ZPJDs1Wlg4IzY0Vj8i NiE9XzpeOlwvIy0tLVcoLVlVLlxGN1QpWApNYEFQXyQkMks0WVhVJDA7M0BGVlM0Vy49WUMxRk1Y LjJVUVdeRUheT1ojSiEsX1xgUDsiS0tdLyVUPDZfCk06MFVFNiglSzoiUiE8RFhBNzkiQVZYK1hY KlNBRTFdQk9dJEcwJUA3TVJIIS9JWUFZTjs7T0VJLU8hVTwKTVIvMzAtJEZfPlxcWkEkW0ZNMVEk XidJYElDTTsoTEtbS0xMVVo8Tyc5QFVfTUQnI0ReJVRSNUteKEdHXgpNTyo6Pyc1NS5dSikrIyQu OkZNSio/UjpPVVw0WCpaPD86JCleTjkrO1pSSGApIzVZTTI8KTpWTE00LSM2Ck02XyIzMCVWXyQ7 PSgwK0VVQkBQK00zQj9OKl0jIkpeSjk7LF9LPiNRO1JcNVtFRUtNSihURT5ZI0U6PSMKTURSPTE+ RzEzVz5EVl5UPTVIW0FLYEMoXCE6UEdcJl1NIktJPVQqSVFMQEhFRjpMV0BBSzY6TEQ0KEdXTwpN JkMqQlxMIzBDQTA6KEZXJCs+NCNZIS0zWERXW11dRk5dLl5TQk9aWV5SOzxAVVhROitAS0VVNV01 LUZJCk00Jjc8RU8qWF4yTEgnXzNeLVQ1MzVMPU0rW1wsIjEoND4jVy9ZMUE3WCg9NVg9SEYwK1A6 QytMLUUoIikKTV5PKFg5QD5fR0hFKlw9PUZaTT1cVy1BLTZGUkxDLkwrNjo/M0ddQUAjSEQ4R0Ep K0AiQUxAOiY2QS9IQgpNLD03JFo6RDBGRzEuN0lSPixJJCgqKi9GSykjYDQ2KjJYUFlRQF9DI1Y8 XSpMS1RLQi9MOVpFSCdLM2BbCk0jSiwtQVZWT0hSWkIyPDtZIyJJYE8yTCM4JV5INUJVXTlbMVxA NSsvVFMsSCJPUF1KWUMoSz86VExCVD8KTSQ1USk3UEQpKDEyOTVFJVFYVFU3P0JZUUQyRz8qRCUx Xi0lJFEmT0MnJThVPjIrOSM5PjBCI1U1LjtaPwpNJUVeXkonVyE3TjVYUS8qSDJXUjwrUVhAV1Er Ij9BNVMsOUEhNipJXl5TJkFEPUNdQkxDVUBcWWA/Ny0tCk1bXmAkLFQmLiZBTDQwQ1w+SiJSJkIp Nl4wKElTT10oS0oiIVhWNDJOUiJaJzJbKVRZREI+WjtUPV4pSz0KTWA8XDYuWCRSXEhZTj1FRFYr XD5DIy4sIjNcJDVGVSchSk5RKzlFUk8+NSpdRlYzNEJLV0g8RFBXS0Y7RApNLVtBKStDKVQ0TT87 KmA2NVc3Ul8hNEI7WTwzWkwjMVFYR11NPU8nRE4tVF5eQUhaTDJeMCJVPUc4W044Ck0rXy87P0RJ KmBIMj1PJiEoNDJdJFVERDNYLiElOTQmXD9YMEgzQlwnPUwiVSJUUzxfKEhXOlc6IyVTV1EKTURV OUQpUE4xO1YjVl1MMy5ZUSwrWyk6TE5ASCtFSVU2U1JXSCcwQFI7Py1ZITZITk4oJDkqWF9XQDMp VQpNIl8uI0BXSzlSTTI1OF1YNjVJJyI/RjM3QlNBRTgoQ05eJU4qUVQoX1UzWzFIKk8lLVk2T05g LGAtJTpfCk04T1NdUlY0VkcyXjYiLV8nNUctQlshL10zJEpFSSFBSkctIkBCWyM/QitONjtSVTdc UD8jRF8lOUFZWUcKTThMWyMjVVcvPUleR0g4TFpbOSNHWSlSNkpNPyY+PlcuQiY7Sl1KNCFUPFhV UzNYRlUsSFpCO086JU8oOQpNJVpOUU8iOUtMTVE7TTZQTk0nODxEUSxaVCpOV1RdJVUtR0gnTTVF JD1dVlpHTkBBTj5DWT9LVDo3TSpbCk1FSkEtOzZRJ1QqVytdKlU8K1wwIy41P0M+ISZgQVJaO1I0 PDE9NF4zQSEzT1RHNlE3RjtDXSY5OCVEMEwKTT01QClOQC4jPEFLWV1DXVpHND4+X0okUV8uR009 XkRXL19bUFdaXz9PJFU/T1dHU1hZTCRLLUFIQlZSQwpNREVWNF5TXUlPRFIrXjhKPi5XSS8jVTpR R0xXWVFXXVAnL1onPFJRTzE+WzRcMjxWXDVbUUI8PDdcJkEvCk0mIixHLEtINSlUNkJdTFc5PCo7 OUtfMzpdPVwyVyJVOFU/Vj9PT1tePT9LVidXXVs3NFRgVk9MRVM1OFAKTTclSz1FR1UuNSo8QTtO PlxVJDZSWkMsMi4pX148PSYhVzQ6Wlw9PVUsNSpdPikuTVMjW1xZXkw/N0tfWQpNXk5WLztdUF5U LCpEUjpOTCQpLk4pLldGOTM6Q1A3P09cU0VJKTlcNyc9OGAlM2AzOVgtVWBHJSMkMExCCk08UllQ RVYkUzlHQU4kXFBMRSpKKUkzVDtZOTYpWl1dX14vSC0iLikkSjw8WDglVCxSUF9KRCVURUpFJkEK TUZIOktHXismPUolSCJFRUchL0NbQkYmSFVUVFgrQ1U+IV43XV5eQVlfMlsjND9ZSzdCW1VUVFw5 OjY5TApNVE4vL1dcOi5eVjZeXT5YUz0lRUVBRz1dYCtSJyUsKjJfNCtZQVAvNzk2KClWWSI4JUc8 KSorKF5SRkAvCk1GPTA1LSo4Nz1VNzsxRSUmMkI2QylcQzhfL0JXXS83X18/TzdXVEUmTVkwI0NX VDBdKT42Sig/Xi4iNCMKTV1gJUwyKE1SJFldXy80TF42SUMkWD4iVFdKIT1TJzlLMk1MPz9HUlsu XzNdWylbSF5dR1ZaL089WlldXgpNMk1fXlVdPF9bYCldU15eJ08uPztJPlsuTC5fWS87J09ePzs4 XVNfP08vW1pbPkxXLlwvISVfPSNYOE5NCk0kV0FHRi9DQkdJQ1g4R00sXys/T19PWzMrSSNWXD9V MF1PJzYiL09WVl5dP1tQMUUjXl4nTEg9O0heUT8KTU9PV087X19SPkE9KF5eN11ELzsrSzknVklb X19ePlY7S1tdWU5QTyQvO0g/WEFZTUM7Qz9fX0I3NzojSwpNP11QLzc/XyNJQk05LyNeT0NLI2Al TF4wTy0rJUBUO08sUDxbMiNBIUdJRSs4SVEtQU5PSUJNLj1QTylXCk01O0NAIzw8Kz8yPF1FNzY6 KTVfU0pYKlU0JDdBTV9TLFI1YFsoSDssUTNSVENHKC9aVixRRkJcXlEvOzwKTTAkJlw4Lj4xWykx KEhSOVhMKSw5XSNKXjspNEktLDtJQS4hRChSRzBKPi86TDVQXE0jWUVUJE5ML1k/OwpNW0BcUl0p SyIzN0g1WklDQEU8Ty0+ODYmXDo2S1pWJEErTTlBVlVYNV8tKTNFJTQ4XDEwWDBbOzhPPlE6Ck0m YCQsK15NQ1InOTtcTTYnPUEhRFNKMytZLz8/JjEmOVpaLDlPTV4qTzUiYExXKihDQy1VQSpZMiNE QFgKTUklSk5RUT87OENORCk9SyNBVVpFIzlCViFHSDQkPClfXSldJloiUypDIkAiVDU4M15DUV5X K0NJXjcqVQpNNj1PRFleLyczO0xdU0M5SV5OQUhEVllPVUM7WT43MTRWOzpRNzVOI19PNVlMOiUk ITddMjEqUEA2U11eCk1TYDNLKktaRz9cRVkvIzI0NzsoMFpbKCpGQUIuUVNHOydbRkNHQks0JEk7 LjIoVUNcQUErUzUzLTYpTVQKTS46Oj8/SDE/PDswVVVPKUVQNVtGPV0mNVk/SVI1MFknPVNGYEgz JFxOSyxRQSFVTzhRQi9WRD08T04vKgpNM0lcR0tCL0g+QEVcXyY/PTA/LVROQCI9X0o/NVo8Kzta PT5XIlQuMiFDTk8jOjRJW14hUC0qKSY3NTdHCk0yMi4pI09IWTssKkU6Kj1VT08uP1I9TT82TkZE VEFeSkNfJCsrPUcvQUsuMDRYP0pBLDgwPC07QFkuJVYKTUUkUFVSWC4oWyYsRT9FNE9fMSFKTE8q MyknQ0QoSlQlNEk/SERfJ1wvVjMpRyE8ITo2VyRPSkZTSCJSXwpNSU03XC42X0pdJTBXODlTIzFW LDcrLlJMS2AhOzBdJUohUFJRRFk8QCFGVU05VlwrODlWPGBeMUdCNCUtCk05JEM4JkYoUklYMypR ISIjRWApJixWTTxTPEwvNlQvLzowRCxNPyxNPCEqMiY7O0pBIVQzMFZRKSpNVTgKTVJUNFZSQj9Z Mi4tSTEsViEmSyU+Jj40JEhXRjk6UEBeWTwsUSg8MVpBW1M1OlNFVVImKlwkMjM0RzAqYApNXjAs TlMxJ1oiVzwkP0ItUVJGTiwlNUpXVDpDNTwkPTpfOk9IV0ZPQScvRSZeVDhCLlg/NDstMlUmTlg5 Ck1ZSUBRXlU/MU8+XigoPy9WPkVDNFtRWTJMVSdXWk9DJ0QvWEEnMlNTXV9FUEpFP0tMSl82IVZd J0g0R0QKTTUvK1VUMlJGJV86ViMhNlYyNVc7WC1TSVVCRy8vMFRMQCMxXVJXLVo1MEUtK1tgKFg8 RFw5KzIxXidHTwpNO1pbLl8lPC1RXFkoP1svUSxVLFU6QEY7Pi5cQ0BeIikpTzVSSkNQPVQ4QUM/ OTdLPEZZPFpXWEoxWzk/Ck1AXDFRM0JRYDw8UFwqQTtLRTRNUVhXNDxHPFRKT0A0UCsiMUk2WC5Y KUtJLTI9TyxWKz07WV9NVU00VVAKTSdZQTpZSygvMiQvUyVAL0dcJmBNK1tLOC47YEBVJyomQVFH V1FfNCpZNVNTPzFTSzZHNFxeKUJFKC8tNgpNKlFAK1ZQO1pJP0cwNkZWQzhVTTtBLlwkPFlAQEEi RlFEPD4/Tk40LipTQ09LXy9SOUVCLjc9OlMvTDNRCk1HRVcpJVFdQSVILzwlUiZLU1FWRCk7RkJJ JzkoOjdOSSg/NU4oWktYKk0+QzNBKFkpR1tSMSs6TzlGRiwKTV0vJlclQj4nUE1TWVlXUSxaQyNP LjY5Kkg5X0NRQDJPWkQkMiswUlktRylAXC5YVCcxWTs5LDVPNDdJJQpNNURUMEdFRTQsNklSLkZQ UD5GJDAuLEsyOFE0ODM5OldKMFk+NTQtOkJcTzRQLTgyLUU0SFUhMF5AQzc6Ck02TUQmUiYhWk4t R1otQCU5JExVI1kuMFMzNTZIPUEtRkJXMlEqTDU9OkVPMUchT09EKyxNPDglSDIsOl0KTSgyQV0v MUo5S0VXWjxDW1tGTlUlVTlMOjokVS8tVCczNClLNUZAYDBfPFc4L005PUE7PDlbWygqTDdBMwpN IVhYUUIhKDA5JyMrR1UuITAsLEVHMDwrOyk+Jjs6TUE2I0BTQ1E6NDxYXV1ZIzU9JT0wRDUqLj1C OjswCk1aRzAxUTE4PTNbJCksQCQsWWBZXkxVQigzMkQ0MVlKKCwoNC0kMEdCNDIvSkAsNDo7IUA2 OEorQlhXUF0KTTZaJ0omOl1HTFBdOl4zQC5fN0lBISlPUy9cIUg4VSIwK0FbOyNNNTZERlstTTU4 MDBKM1ZYTTk7L2BaWApNJ0pGI0A2LlE7OlBZRlFCVj5YNyZWQSFKSj5ZXCNJRjJDMilGXCJGTSZB KDE3RiIuWDs9OTZCRV9QYEJGCk1ATFpeUzdVN0k1LThPR0AyW2BCL1U7OF0+JFQxTC5gWCwyKDFK KkM7LCFIQ0g2XDhUMz1LMSMyTC84SS0KTSZcOSIzUig6J0lGN1JDMU5XSCtDVyUoNEA4SVRaQz0l UDhZUUI+W11JQFQ7NCpQSzNRKVwpUVUrIUFWTwpNU0cxUUNZI0AqOEclT0dHPSc1Pi42Wi1dVUYn TT81OlNMMUpbSlsqST4tJEUmWS9bL183RENFVFs1RTM4Ck1dNipHRkVWT1dEMlU6XD5RLi1ZRkRb S05MSF1dLTdUUjtRPFxAMzRfQzFCN1o1TE0qNjI2MFk5QlQ8R1UKTSs0LE9KPD0+VVVELUtZKz8y Jk9CWllSWUQrVj8pXVJFOTdYXzM/QCVBMTZAK1omIVk4JmBQQDxQMkY4SgpNMkUsP0FRJUhZUz9f Mz04QDBbVipZVFUwREFFUSokQjdEPmBcX1c1VFgoTipORlVQRFlZXTJRW00pU1pCCk0hTzs4OmA/ MT1aWkhMQ1k1VyhWJUg8Wz41WDYmQUQ7J1lBRkNBUkEjWzxIKFU+TEdTTT0mO1AuTE9STV0KTUtN NUU/K0g7NzBZKEElV0ksRysrQERgKDcoS0EkKCRMQ10yPTxcQC0iV1wzSU00S0FASygzQkJNMz87 QQpNRDsqRzQuKEkxKzkrSltfOUQ9O0BWUU0/PiNAOjs2M087JUchVFdCOE06SiYhJTYnLlhaIVwp UDEiJT5KCk02SD01NSc9IlU8LyVYVC9OMDBZQUJZM1wwTExNM1s2LTtIXi1FIls+I0xLI1pDTzIz OFUuXCpJPE5cTT8KTSkvVkc8PT8oLiY4QkRPLjFOV1UkTkcjJTZAWUsiYD46MFhYIyksUShJQD5B PTwzLT5QW08xQz5AKTE4RQpNQ0NSWSk9XVUvIkcwWl83KiZKLyNgW0hMWEUqLk80YFopKl0mIT8/ IVVGW0ZIRy88Ik9KOiEyR0ZeSkRFCk1NYCdYTUMhVlYyQywxJitDJSlTJj0oSFMhVlYiN0oiWCgz L1g2PCUhUlJSSjQmSVE/I1ZDWlZgIlJERFQKTU9EQCZTXi9OXThKMiZTYCwjI0Q4KjNIRyRHJStQ S0NRTyMpW0NfVj5QLyw/OVUzTVQoWDcvNjEtUU1HXQpNWUNKPzlIRyxHTE1TOjUjYEUlMFQwUC1b Pzw5XiVOUTo4PF1GQytVNzQ6Ll82Jzc1OzZfXy8rNUokPDZPCk1VM0FRUUctIiE4OE9TPU1RVl5V WEZOVTJQWysmQ0hcJ1MkNVI+RUlDWF48TDg3PVYpL1BKO1NGMlFcKEcKTTRfYCxgOTA+Wy5gUidU QTwsTTVAVSJIVlE0Ri9cWlhVJ0VaOkZZNDlMNi9CLF5WKkMrUDFMOUVBTkZIIgpNWigzM0hDPUxH QiVCRVk3QyZSVDFRUDZKOTlYNUtWXU8wUzY2KTVYQVQxQDc8N0I+OzVgJylgVUMmRD86Ck0nL2BT WV8iSD86U1RCOmBCNkJVLFMqIkBCST0oYDpGMy8mUklIWDpKTU0xSUA+VjssM1VeQEpaWj09PF4K TThXKC42TipbKzxEPEJQUDE6J0gtNDJWXCpBN148L1M+JklZJzIqSDE1YEBFQUo1MichVVU5PzpI Q1FbLwpNLTFKWCQoXEI2QVUlVVYtSl4pVi5XQ0YuUVAsUydKRDNTXiQjUSdCRjFDUSdCJz1YJ0s6 IilDUF5bQygqCk1IKC4zKS1FVEY1Rz8nU19OUkFROE9MJUs5JF5KTDwtSlVRRlozVTxcUFsxMUZd SiFbRlNWVD1FK00xVDIKTUFIIV0+JiI/UVkrK0EyI1wiKl5CSyc/LTZdVStXRkk/KjBASy5JPCpI SFtXPjskOkRIJE1dMzckSFc/VApNQk5CTC0rOyglTjVcMTYxJy1KOjtcK0s2KD83I1w5XUchV1Jb XD0xUElcTk9OSVNDWV1PJS8zPEpPRlg3Ck1JIz9ZIko1KDFfPiw3MTc4MzRZVSNTTi9WKU8/SmAm KzUzWCc1J10kUkxBSCtHR19ILzlASlcrMFJfJSgKTV5CXkRcOlA6L0tJOEspPzcqNlZTKFxPUE8h VSJYMV5OS08uRU0qVEs0NS4oJzc6YFxYMyNKYEdBXD4sVgpNMCkhQVBaYFBJXl4rXkMsKzw9TmBa MiJPQipRYCQhOygkK1hgO0w0SjQhV19HOTcuLSlWNFksVV5HTClZCk1CSShEPkoqQk07PF00VUZD JDUuVSZLRypONUgjQSc+UlVILDFGSlddP0xTJVswVkY6UjYqMUhGKiI1TCkKTUssWiw7Mzk3JFlT JyUpMVxdPkctWihISVcqTEAiOE8jSVMvKUY+RzxLTk9QUzgiLztETU0zVzwqRVFCPQpNOC07UyFD TFk2Uy47XF9bUVhVUjAhSTwhJlxXXlM+OV0qUy9eNjtVLVY6SDlLWThITUE/SSgjM1k/PS8+Ck1T IVY6Plc5RT8+UEZRRFdUTlQpPl0kMC1MKipIWjwkYEwzJVY9YEwyJVguJVNUQjk1JjtPTFcqOUkx JjEKTTUuJkJHQS9gLzg6TDtUPCZWMkkwXz5HIVgqP1RJVlBaLjsvRCk+W0kmKlUrNEdeJUI8MT1C UDUjYFdUOApNJlg0SFcxJkIyWURdJTw2XTFcVU9FOSNEKS5NSDZcQTNBVllXRE46WSslMzM3JSo8 MjBLMCoyQjIxITdOCk0pTzRBTSlITUorIjRgUENFKC80OUQ8XTwlKStfUi9gP1Y8OzFBOE83SFBb YEAmXFQpWVIzOyhHJ0ZDSFoKTTBFTiYkSUE1PU40PVtRN1spQ05BSk9HQEBOWFgyIVQ9PT8yVjIk VkQyLVQ4SSciWGAiREZMQDxVK1k3VwpNQi5QX1lYOitWKTE+P0RfM1k3UF5VMUtYNTQ8OlQsTEpF Q103KzsqVj4iTDovST9XOzQrWzhgMi8kLkEvCk1RJFFBNVU1XCQkXF4pV0g7WS9HTFg5I0dMUFtT USMnKiwpSzRDW0woQSZJUTBcITQ7Sys6QDZVUVFSQi0KTTwvMSk8I14oX1A1NTJRMVRaW1BDX1pO KE1gUyFKWSRQTjI5RCg5OCFRJSFcOUBCMlRIQGBFSkRFRTFJNQpNSFpDQTY7QztDYCE6REo4JSYn RltNJT9BSkApJlBcSyk4JkU1Iy8pKDdAQSZRO107W1hHWCs+TVtYSjJcCk1ALyVeXFFGLionXEFJ V0FLIVhFKVNRQ0U3VTtLX0NNNV1XTV0nWldPVz1ZVkQmQC48U2BFJSVKTyheI1MKTU5SJlpHSVhe P0g1IyU8WFEiPCpdJiItJEA4OigvQFhBPkEyJSonKCtCWCZILlFdXl9CNihLOCsyODdgRApNQ0hE RyNYKl1cRzUsSUlgODghNiFMRD9eSEpJXywjUUYwPi5HOUA/Li1cMl8kP0gyODc4L1ZGViVaMTsm Ck1fWy9bJmAjJ08qSitdPDZdNClWM05RJjdXIT41ITxbLUIrUElUSFRZWFVQUzFAUzZSRUArLS41 OkUlSFYKTVVeX0U5Sy9WUilaVVU1VCwtJzZATTYkQzBNQjEpRyc0LC9INipgUUwtSjVWWjcrSlk+ IkRDPjY0PTArLwpNPCFeKiNeMVVGMFVHIkUrJDo8OCo3NjUjLy4+SzJFO1M0PDQsI007TTFOJiY9 XE1XPTZVP1VeWTMsV1EyCk1ZRURRQ05dOU9cPUpeT0w1WilGTFZZN0dNWFZFSzpBUEYqMz9JX1BH IlcxWU5aYE9WLSoxL0MtJFIwTiIKTT0jSDtFTl9YLkhWJzUnVj9ERUlDOTlAOkkwQEs9YFg1WSZb UklWMTVLQy5SRilALElcTixWVCxMMkBRNgpNWkI6WjJHKVE4MiEyJl9ZJzkqNz5cTCdTTUReRlo1 JiEqXE0zLzQqPTFaLlxaLzksNEcxOEVeNU5FNVU/Ck1PJiFXLkVOUFYpTz9dI0EmSy0iNC4pNENM WiZPLTNAP0wyNjkxTTlLNEg9QD5FOUpQMksoNkBHJ1BPOi0KTU9PUUomVChWWmAiTUUnKlZfWlop SWAxPi5aQiZGKlsxXFU/OF1PSyVIVD5AMTUkNjNGQTUnQEokV1dcXwpNIi09QVMkXUBOWTc1NVlc RSRUVzhTXlo3TCpaXVtDRlNSV18uNz01RCIvWFkqT0BZPEovSzgyRF9ZLDQ1Ck1ZTlc8VDhgYE5d Pj0+NUNQXTcwTy5cPSI+YDlBXSRQMkkyL0knQExgSUo1UFQnMzRAODIzIyw4VEBBNEEKTWAnM0Je O0dcOiZBMFdFSzcrSkUnVDI8SipbI1IxMEk0NS8vJiIlMzciVDQnPy80TClKIzYpVFtVKDVVUApN VlJCUjpSXUckOyY1WV40LFsmKDwpIiFHQ15RYCs4XF8rQUNCVy9LVVpVSzNKQ1hgLD5fSjVVMDNc XitACk1NUC8/P0BLQTNONU9RJiozOy8qP0BWJiNUMUk2LDQ+JF4hJkVeSUpdIlYyM0AiNFYyKDFB QEpGMSMsLkwKTVYiQEFBQERCKkJGJjYwNS1DJyYwTiQsRDs1NlU3XyJNXkRgR100PEMkTS5NIzBZ Q1RWPVEoLU4kUihdSApNPFteXTlWOzM1OTkwWE1YVjwuOFImLkwxQyEkUzQ9IjsoYCgzTiEsNSwp SC9gPFw7PUMuSEFFRy4zQzYsCk1ZViRMRkEjYENRXyNGSzksXTxgUVA5Q1JWKjZHO04jUThbNkE0 SDQ+V1xSQEFXUFYwRF9NOlwyQD1XMkQKTVQsLSZaXj0/ISZNODReSDFcK1YzWExCMFwuTi8oXD9F NTpANSFFXCNFRUwnMzA6TjlGPCI9YC9bIlMkQwpNNlpOIzFYVFs+LTFCIVhdQCFdVV07W00pRWAx PDVgNlhBKzYyL1clRkxCV1NKLDwlVzQwVTpZSTctIiJGCk1TNz8wTUkkT1dXQCwnSyNELjcjNkRA JSVfKVRDLCo/NzJcLTxKYDNRUUAlMTdCXlshViNEIiRBQ01aQTQKTVNUOT5EJlcwWCsvPUhgJT1f QSZASk9NIkQmVlVaXjxNXStTPVAzXl9WWyZfVmBUIkQmPzY8UClZWlVUXgpNV1FVViFdVl5AWic+ RzdZLzE7XytCJ1onPlFCWz9AKzs1WyU1KEs+UDhMJCkwXU5PSyNXVUAiNC5DMTFWCk1cTzlZUFku VzNWLS4nKFYlNlQ0RSM4WFlMNE9JKSk5NV5MI05MXko4MUpMPj1gX1NLOUZXWTdJVUszLjEKTV9Z Rl5JIUVbVTQqOk9DRkdGUi1cUDpONkZWOCFZQkJFKT1ALzQyMjgmOSJHPDg4WSksJ0I3OzYzNCot LgpNNy9UUVJWOjc2OUcuVUxNNT5JRylVIV0/KSJdS0ReXyQ7JFdDRyVQL1I7KjVXVFIrVzw9XiVF NzFPTmBeCk1LQTlSXVQpPFE3JTZXMWBBWE1dXl8oTDglXlguSlY5UitfLjxAXTNVSCEhQ0owT182 LThDK0VaT0BLOVgKTUk2SzJeSSJMOyw4RisjMkwvJTJCJ05gXy5JNko6JDBRUjw7KUdFMzVJJUg3 PlYrNUYnVFdFJFBUT0YxLwpNSihIST4jVE9fXyFEQklZXD5WSSU0IkxPXUIyKjk6QF1LMklJLTlU NzVXTDoxPyszR0VAUTJIXTI6NF5KCk1OR1JVSVVANDxUVkZcXiU+SiU8MDozUT83VFpTLzk0Qlkt Mj41KVpbWUdVTjFHIl9SQV42N0VcRClcPC0KTScqODhDMTVLP0tNLDoyIyo1Njs9PWAwXUQuRldN JDBZR2A6REk4OCM3KEU4SVZIIlRZWjEiJiFBNChaTwpNOTYuKEIvXkZBMlg7O0hYNlgoJ1U7N0xd O0EuSDZCXlVBVVlbKCs1XVUhWVZNNiMmKCVALzhAVEwmWi0qCk0vXyw9MkRPOjYlTVxNRDInOE48 JzVFMmBNSy81KU1YUDAvXDY6PigpXCs3KCRAT05QLV5NPFhIRU85WFsKTSxJOFVILURAJjtZKEhC Wk86SzEvPjNFPFlCLTA0NjA2S01aSE0iTyYpMysuO0ZEIjlXSlNeRypdNiEhQQpNSE1NXDZLVl9B PTsmNEFIP1QsITMwTykiKUAuP0tYRkJHSjNFTCtCMk1QITE+OUw8SUswK1slQi82NiY6Ck0lNT5L WlMwSzJRNSU6RTtYKEdFPj89SydAUyM7TFpbLkhWMjMuIzk7LSYmVCY4VllfOiIpJlcnXFRaQVUK TUhLOitCOCEoVEpfOU1fMUY3SFs5RzpHTDJGRDk+MGBeJ0ozSTwkN1BPNVJPTEMxLS5JVFQ3MT9L OTM5LgpNVFZaNz8iM1ROKjkjRGBaKzwzSDxDWS8uPlk6LD5WSiJINTI+OTssPjtZUD5AKSNJQEpb Uik4VUYtQEszCk1KWSY3US8qQ0BUQzo3XFkoUloyMmAkUzFeKVNUXk1VOTxETTpHIjtfPD1TW0Nc J0csKTMjXiNNLS9HXTUKTT9EWC8tVyZIVzUjKThVOjBYTT0rL0ldXVNFKjkkXDIjPTxDVz4/R0E8 Xy8uIT1GI0NTOVVeO1c9ODpLUgpNRDBPMERRWT9QPkA5SSk4QjVDXSQrLSpBTy8xMFA+Uk1UUzRa R1pKWi1GK1c+Ny1eNj1YLCVaIiM1JD8xCk1DQlVaNyY+MTIzWD0kUjM0OFknPUopWlJONE8pUytB JCUqISdeTVkzJjVNJUJNJUwwMUNXQkkjQ0kpP1wKTTFfXEw2NjskTC9aL1hTYDdfMkpYOiQ3KVxE SzA5PCQ+QU4oMzpTXygrOVJWSEJOOk9gUCxBXClbVzs3WQpNOjw0Lz9EPzxDSFYpJjQ+RjFENU1O I0ghNT0/P0QsJVgiWTdLNls5TkA2XyQtPz40IiMoJU8wOy03Sy9TCk1VVEZCM1krMC9aNSkuPDMk Lk5cIUJdQk1HWVlSYF9SIzxUSyNgLFAwMlg7VE9cO1EkUVJUTitNPDc/Rj4KTUolXjU9MisuP0Az S0haPFgqTkosUypPQiReTllMQ1lSViIyQi81Rys+JygoW11BNFxLQjJQMUg3Qjs7TgpNSkBgOFs9 RUBeJDw/LCI8I0BVR1wwRScuKyU4KTFALVBKVylWK18vVzkjKj1MRzM5VTA4My1CJ0lHUzFBCk1X VjArXDQ5LElQSjZOTFIrLDVePEdZWy41XT00JFtcOVdKMjcnVTs5LEY2M0BKN1VDO0I4UEg9OShC WzoKTVUjLEUyN10qOVwvO0UrWFhMVE1RNjQqKyQjSy1cRCkoPFUlJkBfQT4mJzFHXiw/MUQoQFo4 T0tIU1o6JQpNXDtWPiEkTzBgYExLNTM2XjNfLEU6NjtYK0FNV10uJGAwNVgwVVpdISk+PylMM0A4 WGA2WCkhViwhV0FBCk1gNjNGYFAhKCUpPSIkPGBSQDtRKkNPSjU0IkE+UFxNSSVIMUMoTCwnWlEh IihKNydQXTYwPSZdVTc8WU8KTSMmYEpWUEY7SGBPUlImXT8lNmBOREhZKEItN08oTFdIUF4/QFNg XD9dKDI9JC84VjoqI1UsUkdbMlU0TwpNUiVLWDRMODRMW0UiOFVTOT0uQys0XDM2XlAnMjtOPFNC WDQ+OjMjXCwoIkhGT1MpTCFAWE9NMi1KMFtECk0kMC4nV0VTI1paSiM0L1EvU0FQUl1UJEc/REkn USFROTk4KSQlTUs9LFNcU0MvL0U4S1ssVy9aIytAKVwKTV41NTFdRCpAXFxBQEcxW0FQJllSS0Za M0BMVTEjXko8V0tUU1suS0kmRiE2NjwnTEQhU15MUktWJScxVQpNTmA3QCEyVVBJUi1dQCY2Ikwx QzoiMDA3L0pBJitXSTBCTSRVISlVUjsmVFouJlpOJy0xUTJMJElJRSNaCk1COFg9TzBBSy45VE8l Kz9QP1M0VUY/LiZfWTJaQUomPDdOPUNIQzUuUTotMi9ASFwqLTQxMSIhPShZMSIKTSlJKD4jMEYv PDA0W0QrX0hMJUtKJypJITVFO0AjKiEqX1k2NikkIjw9OVxXSlBFPSQmWEc9KDtXMDpOLwpNJVlW Qz9NPTZVMCs8OytWQlxNKEQhLjUvUEA2K1o3SVlZSzFMSiQhQjFKXF5EIyU+RCEmO0VcLktbJj0m Ck1fL0ZEMFY8UiM4RjdDWlIvWCg0IjBVLSJdO00/LkpdXzQ8LUZMSVVgU00oXTQkWSpXKVxQQEZJ KlhXI1QKTT4iWlotSyIuIzhVPVMrNmBEQVUqKyM6ISVDWywnRzRaS006QE0yXTQuWVVOTV9PUzQ/ XDc+O0EqLCtYXgpNXlJdOlIyXlNKW1FQU14/IURYNCInRGA1QDksNVhRQEg5LUJINUNOWkgsLUNg QDYiQz1EU1BXPSonTkQpCk0xLDdLOVkoWjFRPkYxSCciNSghKFI5IixNMWAqXSYhVEc4Vz49OiNg KDEvISZAYCVHXVdOUUQ0XUcyWDcKTTlKPUxBXVNHNipHL05cWk07L1EvTFlcOkcsPDwmXWArO1M8 RjkrVUxdXCo0SF8vKVEtPE0/QDIjVilJRApNI0RYRkMkN0lPXjwmWE5TTClcIyZMIzdJNEVZNkU2 I14pLCI8NUhgITRcN04uM1wxUFQjI0w5MUQ0KE1QCk0pXiY9MEkmKyclLVlfQjBWMVBGLysuJ0wt Nl8mPi0+V0dAPlhGSVIwS1lUUzVIJT9dT01OUCZfVkkwI0gKTU9QTTNWMU0pIj9CJipXLV1dKkFb XCVUPzRZUU4rUCldUixUTlklQC8/SywhTCxaM1xOKEQkR0w4UmAwIQpNOVBUUSw1Pi9gQV9XWTFV Q0kxXzgiLkxHQCg8UTFMUTQ0S0FQKSFAN09eTU8xQUgrJT4/PUFAQjlASTdKCk06NjQnPlQwJDY0 U1ZHMzwjOz9aWEhFSyk2OSwoNSJMXVRFMTAyS1tDKixBI0NUOEMhQj1CJy5DTmA7LSYKTVJEMV4p MFlfQCQ4QDAkXkZbPCEqTjc6OC1POjBAT2A1KzJbVzZeKitGWTJGQFYnKCI/JUciJURCN1pGPQpN TU9WJiwrL1QrJGAtUzs0NjJeJzdTU0tgSj4rQElGWFdVI0ZDRj9JYEsiWSorVExaSkAzRjRTQ0ZX PVpSCk0+VDpDU0c3PDMsPEFVVzAzNFxKMzxSVC5ON147MypeJSpDMjtZKyo2Sl4wSyxORjRUXT40 SjA4P0I3PVYKTUZCXUwjTkJJUzlMMCZEWSxEJ0tQUDdgJ1gsOSNVMC9OYFw+RFo8QVArNUJWRUsh MFciNj5NJVQ9UFA6UwpNSjZWW1UtMio5RS9YOEwiTCQ2Nk8sVU89MDFTI08oOEEnXTQzTCRKKFs0 PUBRPiM8PUIpPjZUL0NSUkxMCk0+KV9BISwnQlNGVCs+KkAzTDBXWUZDIyZJUClbQDRYXF9JNSMk LU4wVEtQPEJJKklYIUctXlopRUQvITkKTWBdLylATCQrO2BJJT5NPDEuLDMkLiNWJSNHQzQ6QkhT NU1WSy01IyMiKk0kSTBWR0lPQCpgJUY2Sy00JwpNWjwmT0goNVJdL09aRDk3TzM5USpOSy0xN0BH L0ZFTUcxJDAiTlBcJlYoWycvNi0qXUZBNSgnSlUvWFc5Ck07MlsqUUMrUEU3MkM2XVFLN0g6Q0c9 USlRMUs9PE1dVE5DXlM0S1w4XFxYJ1coJT0wW1BbIz4oMlQ2WVwKTU4rKVlJLStFNCIwN0tSSF0j RFpBIig+I1BLXVBMOl8kTlErQyJFUEtMKFBDTyglWEEiV1BOKTgpTFVBMApNWjVHK0EnRDw5PCxI UCM3YEFIUDgjRF4tM1o/PyE/OiwnW0pIJVVLODslIzs3N1o4KlgwOlQvVytDJjlgCk0nJlVLQ1RP LzcnRCtRNDFLMU0oVDBHRFQ2JTNINzQiKUpLVjg4JUUpRCQ0Jjo2KiU7LSkpWzQwMCY2ND0KTVk9 Q00pPyJHYExKQVgsSiY3PzktS1deJ0MqS10mISdNXS4tWEVBT0wzN0ZWSEc4RVNTSTJTW09IPjoq PApNUyVSVV0hK1VGQ0VNITdAKlUrNkYqVyQvU2BALztSTzQmIilGOEwyWjM0OldUN0A2PDRDXjY4 MENgIUUsCk0mK2A2KlE8LkRWVFYjNDYvNlleJi4vOFEkUSc8T1JUOjc9Qk4mOTIwJUBbPFM7QzhC JjhMXiFDJSFXLi4KTVgqWDEyIlRfQktQWipVXyE2MCg9OllISy1SUEY0OVBZI19NIjczKyYxKD4+ PyNfIjBBKmA8NTpPUStLMQpNRUMjQF9IOCowNSZfQlk7X1I6SFlKITIiWzEkJFUhTVQ/NTwxKCgp VDgkRzJVTENGXk4+Sz00KjAnJyc0Ck0sKDNUJz8zKShVISU/OjZLLUMiLD8qQTRCUjorN0EoRzVb VSowMTUnK1xNM0BMTElBMFQ9MVtFUD1RIlMKTS5MNFdeXkc2QylbQV1KQ1s+SCQ4XDchLUktP14s LzstWjMlTyhbUkdbIVxKMEgmRUxWNSQ3MDhdPyVMQgpNOyEwIU02OC1GJkwpIT5aKSRAM0AyW14+ X0VGWVY8XVtgXD1VT0xTSSo5O1AuLjlcJSQ3OVwmIiIqMlMqCk1dViM9UVxSViM+JT45VlNNNDxV SyRUIjgkM0VORVgzKFA2SyZUTCpQNUVIQDAnM18sOVo2OiU3KUdRSUYKTVArOlg3LkBXUlMwUFM4 KEY/OzdWPihMOiVEJjUyM2AoK1tPQkIoX0xBM007RUU6S0s4VSlPVStUJiNJWQpNTC0lYDEvM1s/ R0tGVV5WTV1NODxRKyMuV1ojOyRDSzBINSdYYFtGOEZZJFReMiEmMCdBUDlMYFhDLWAkCk07UCcn VCdAVz0hXVg+RScjRVUiJ05NNiZKMF4/MkU7P1AiRDFVWC1NPl9aOjw4IlNNLjlBO085KyspIj8K TSpWOiRWQygmUjZJLSc7MjEqKkdMKVY4X0QwTilDL1UmJjcjPGBMVWAlXCojQVkkKThSRiQ8Q1dE PkRbXwpNRC9fVTlNUF5cQCFIYCc2SyUqRFhGOTxXUFcrTEguW0c1UEtgQjs5VEhPUV9USEVIVE4n Wk1CLEpgRz4vCk0+KjBBLCZaVDJWYFJQUVArPidCRjxeUCtYNDs2Il5RPksvM01cYEhbWVBgWlUo JS5JUVkjRVU0UzstSmAKTVBeU14qOkJSLF5gJFEvS0wuMjdgTCpGVDpGJUU/MjI1VUo5Ti5UOyIr OSZOK01EQi4wSEYnLSc8SS0qKQpNUCwwQjA7K1JENDc4Mj06Vz42SFNSRlEkJk1cQFhbKk8wT0s1 JyQxMTJdJSgvUy80OFcnVTI7TGApTjhECk0sLChJP0pWKCleUzpZVyUkLFc7YCFYT01dND0zKEJa RjhRJFpAKDVRVC4wIic6QS5TTjRRPTc0WjcxUSoKTTlcOEsiJ0RVIyMjWUNAKlFIWENgJDNTKylQ MkMkKCFXYChFXy1bP1I+U0lgMVFZXyM+U15YXyQ2JU47UApNUGBcMipQKCwvTywsTydBSVE0RVpY KyNDM09ZOEdERT5POF4tWyMxOkBRTmAmSy4vIj9AJS1aQDkvK1gwCk00NVg6WT80RStdVVBPKDtd Qyw5JCgxIUNLWi8oUChEOSw3XUwmJjVdJkE/XmAiNlE7TUY8U041ViYiSDYKTTsqVT47QzImOTww QGBFMiI0WDRbKF0vWUkuVFlIUCVPLydFTCclTjYlRzdgVV5fWlFLLDUwKE46TUQnQQpNLDErSDUj OSo3PS5VTjoqMl9QVzBGXy4lQjYzOzshJC9PNEc3LV48KyEyUTYkKDFFNEMxSzwnWExZRU40Ck0m QClYNlkrI1AjNygpTVpFNkUuSSRNVVQsXypUKTVURFEsVCxgXFY2MztCQ1FBMUpDM108OSFOUSFc WD0KTUs7NztFI0BNUjlASFlMYCwjQj47JVZFRT80RzczLyVbWi89V1xNUFgvTDkiKTAiLyU8Q1Y+ QicxJS5HTApNMEInNT4qXEAhPkFPW1ooMSVJUitESSNRXDkpRFkkRFlMSCNMPC9gXTYxT0YxXicp YFRPOk0nRyhFTzwpCk1bRTk7VFheYCFQV1MlYDVJVjA2M0FMLDU/M04ySztNS1Y7MixIJltTJzZO KzMyTSE7VzYjTiEoOSkmWl4KTSlPWDtbUj5DXF1POkIjI1JKI0FOKEcwMSE9VTNaQjdXODwnPSg5 NUc5TixEQF8qPlYhQCdUIkdPJicqKApNXSEwWi4jS0Y+PlhHLClVMDNZXSpZMEVKVk5BIyUvKkxJ J1VPPyszP1JbWCQtVEQwP0BdIjgnP0BUR0kyCk1NRDc1WSMuSChSWChFTFMjSShQWkBFIiIzVEk8 RCErXFc8Pk1ENUM2IiElOCxXJE0iRUpAKT9XLltKRE8KTTpOWzEzTVA3Vkc1RjpNTyw7QF9GUFY7 Rk5aNkRFTVAuVT4wXjQwV0pEMSksIj9FM0MsKTIsYCxLTVMmLApNUkQ7OUYtJlEwVFhLMVpPLVg5 KkcxXTVJPz5SJDdFVElXRVIsWlBYM0wkXjQsPEEqWisuSz1dJ19IKSFNCk1IWC5FVDwnSUc3PlBB MCcmOSU/PCImWlNBWV9NIkBMQyhfUzknOFNQOV8/KVBHPzpQP01AWDxfTkBINy8KTVtdLjQjRztf Py9PI1ZVW0c6UF9OJz86TkgxJl9SPVJcTmAvLk89QTlTS1c4X01CVlVfRzpHJ04nTztMJwpNU0NW XyJZRlsqVjgjKUk/TjAqTlZWP19aQE88Ti5bQC1OWkEiXE1aJVQ3IlFQUFFcPDA/Q1ZWO19aXE8/ Ck1OXlFAQigmVykoIldQLGBKN0spPk0qMzlZMjg9WTAvKDZBNz5FRTg9TkNHISlBTy47JlBOJ0lG Iz49JkkKTSokW1BTJVdeQyhcSkU8RTg2Tks2LypJO1lePj1CTilMLlZZM0w9LVZZWlEhLC9NVkU6 VEhQUzg4S1NLXQpNYDNbLTwzOy05XU9QPC5dYC1WRldaJTVCM1pNT100JE5IOFJaTDkjNiZUWk9Z RjZeTklaITpSQi9aXT4sCk1OUilRTjlKUjpDMSUtRkJPXkRZJk5WKVw8WE1BN0gqRjhIQkkqUiY3 NytINy8tL002XyVTSCpYSUkxIywKTUZVUz9dQSw+VlItXVgvSysoJUVGOSVaL1EyP1IzOTReOFBe UmAnVkJELUYtLF5RW0FZM0w9JkReIUU6YApNL2BbOFtOOSc2NShIUEs9XT9NMWBKTlZXYF9JXCI+ IlAqU1BEJS9LRS1VLitKMFtfNzc/WFtYLCtMUVdaCk1cWVI1SC1dSCRQTzhRLigpXlA0OzZDU0Ev V0VbXCZJOCdYNiFVRz49TTFQITZILjZJMEM8UkNaW0dTWygKTV5SViUvS19FWi8lOz9TWighVzg9 VCpXYDRHWjJQXyZRJjtLRzs2KVsjSSNdXzc8TTtTSj89PzInPFVWQQpNOlc3SScvMig3UUM5SyUu Py0xUiMhLzIqSEdQS0ItUU0zLVorUzEkQVNZUUZTPD5YKTcoKC8jOkAxRk9DCk08SlonSTFKNWBY RiwiM045Iz1dRUoyRjooIjk0ViMlPilXXGBgMS0oQVU1MFIkMz5OJkRLJDdaUVtfLDgKTTs2PUsn XjNOOFg8Pj9eN0dNXkMxK1RUOVwnKkBSOzUwKFI/TjA6OUdPRSlOPiQsUDcoMDswKkA0SVQxOQpN Jy8oIShbXyhKXTYsKUcwWiksNklSQ0NEKj1HKS9ZP0JcOSs/QSMpO1glUTVCO0opO1NVTC45WEw4 KSM1Ck1JSz4rVyc4WzlKTSlFUjZEWEk8V1AyX1xgLlJcSCM8XElcTSUtTEhHXjZBKFRdPjw2UWBO RE0tMytYMFIKTV5XNj1FXURMKlU7SV5ZUz0vM0xPWiJUSU1YUFJNVFhIOEFDP1A8O1gjSzouS1sp WkcxLyZEJlA3SVo/WgpNVCZPMkJaTFUsJkxRNk9TVF1LT1RGUV1fXi5fNztdWkZLXV5cXj8nLV4x VUIwLF5XTEVfSV9dIjtGJkMkCk0rIUYjXVVGWVJCRVU1Vy9eXDFcXiJNSktLTDlfJlBTJUghJEFe QlQuMTJMOFstMTAmKSo1MjI8Ri81Li0KTStTLiQ/PEs2RE0sPFMtTiUsKlclK1teYChaKjlDPD83 WyUwSUZePF5SNCIqLEdEYEJNODZgNWA1IiRUQApNW047QD5MITJgVVxEN1M1OUIoNkgpJTRaSDBO LTxAOi9RRUhEREZTPzk8T0VWXk1BXDBVU040NjEjWkUyCk1EWFAnXE5bLDJWO14jK086MEtQXFRb XidFMVAjOjMmXD89QlQmIyk6N2A5SUA1KSMmMSw8QjpQOUlfMTQKTV84Mz81PV9FUVtQWTxPMSUx XFFLLEk1S0NFPDRBSTdDJVg0QSVTXSEjLkZNU0xfOkYpMEojWFNKV1hfSwpNRT9XSitfRVItMjEs SS9ILCJLJV5UKy9fIkUqIklgXS4xISpdQC1gVjg5Ozk8Q1QtRUc8Uy1PMFRJSD1cCk0zPFNOTiRP LikkO1xHQ04qIitfSTNDMyI/TyxFLCZPTzQnW0FNSydSTVZDXy9PTio8XEo7ODMmPlNbWD4KTVQ0 TTktWidLQDoySyMxIjAlX0VENCFERTo1KlI2TkYwNThMQUgnSjlcLyxeTyE1VitIMzNBS1VHJl5B JwpNMV9TOkQiYD0kVFVQXzJBSTJALFQoVEQtQSJBPVlQQiokPSxDP1lcL0lXSEYnRkoyJj5dJDZE P15QIU9CCk1KLF5SVjZTXkdGVS0iOUhJYCMzNkUpWlE+RE1GW0ImPUxSOEk+KigzIl9PRCw1KzAp UE0jJFMoUF9WQC4KTUVMJ0ZEUyNgLUQ7KihNLEUoQltWTF8tRT5CPVFKS0UuOTxaMj0sJSpDUDdf MjQtLEQxS0NCQVRGSCxZOApNTSNPVEpZWTcpSCYsWj4yPzInWDpBPEZAOUpeNycoVzA7QigrTU1a JTlMSDg9QS9FWEc6OFYsLyNSSV4kCk1BL0JTXTlJPF4hJFQzVF5PQVRNKUM5MkdTJiRGST8xYGBB MzJNW1M4RjQtLVNHOz5SOiVKPUJSIWAjO1wKTWAlV1VSU0JJNC4zVykhMVRaMFg8NkFcPVklNlNF Ok1COlRUSzEsJS5EWloxL0BKM1JVRzs4UkpFKzMrVApNW1k6I1cpR1krNzZPRSMsUiI6Nz4uKD8o RFM3QCNeUFNAPDVfTisuMCMyOScnPVFKMy0kJkNRSEUjRjk7Ck00Vys7ISs0OTpdTDRRP0QzSVYl Uy5aPi05MUkmLDpdLzBILUVLQERDWTpDNypaJEssPj4kNjpELVtTU0gKTWA0LSsvUD9RYE00ODhF OlVWSUElLEk3Sk9YPkcnKjtKVVYiSitZKjNEVCQ7N0gwX1lWLzJeMSdNXFchSgpNW0BYWUdYUVRO XVolTCVNLT1JJz5UNDU9UkFWRDU8NzM9OVMjLilQSGAxKCYsWENSOFNBX0VRIi5OM1pPCk1BOF5V RSE/PFlbQSJBLF4jS01TVTpJVF4sM18pUUZYL0FSSCFbWD0zVUFVU0tTPkQhRkRKXzI4USwjITwK TVpQXVZQIT0zIVlFNk8jOC1eKGAoRC49UUQ1LTslQiFfR0xeRztYREA1NyU2JU4uUF5cLidKXSdV YDpLLwpNRzZUSyVRXExTUyk8T1dQUzcpVFUhU1cuKV4qWjRJQzpRUUE7WUY6N1Y1VDE2PC81XlY4 UjwzLTEmKSpgCk1UQj1ISkJMXUtQLFpCVSI2Rkk8PVAuNClVWiQ/LzclQUJUSFZILk8zMFtaPC0y U0giXDg/RExLNCZcIygKTVZNUjUqYC1TJVpOMkNHJSo6T1JQR0YnM0QxNlYvOF9ULlJHTz00IzJD XipMTl5VVFkjNFcpKS9OWS1UMApNIlY+L0ImJ0MnJEMzJ1g1PDoyJk5ePy5XMC45XC5QITpaNU8n XU4iKzJVKCMmLSdcMjszJ1pcIl41P0ErCk1gTytCNlcuW188KFskXU9RTVIhJDlaMkFCJkFPQlhV JSEuNC1MVCYzQDAmJ0NRNkRHUy8jVls6NGBaLzEKTSklI2AmLCJgRVg4NFpaIlw0PiZHPDE5VSNY VD44KEdMTkVbQjItJD4iP0E2WCU4STQsNDA8OkxZL0k+SwpNPzAuNUBRT1RRLTNON0hTN1g2Ji0z QywvM0xPIyRbLjU0U1RURlBeKE82Uk5IWzgwIVBKTVAzUEdDS0Q3Ck09KiMwOkxRU0BFPUtQWzUj VDM/Qis+TUI6YDU7O0BXM0QrOk8kPj1IRlA4LUhPSFY6Xl5eOF9DMCU5PUcKTTpPP0szNlYvVSZJ TTlDTk5OKj8vWlleM0JAS0heOEVFJCQ1XFEjUVYnRTJgN1k1JyQ3PDk0WiJMUitKKApNW1dPPSQh X0MjW0ZBKTMlQz8hQFJWSi8hJ01OKzEwRTIiUygmO01VKC9dRzc8Ni1DRykmMEU4UDI+R1NYCk1Z XkshSjIiX1dRPEUzQSJIPU1DKjU1XkdeRUJWPTY5MyJULlwoWj0uUTgoQT5NTENDSDo+QDNOSFA+ OiEKTVcwXysiUF5bKT5MJl4jVDRTVyUnOSZCIyIvTE1IJ0o4UTMuLUMnRCknXERRMEQxOENSP1k9 Jko8TzAmQwpNOktaNTRRKCRKUyhdJ1csSDleLFMrQlQ/PDpGKF5DMEMvPDcpM01FPz8rOEE4M0Mm PSosJEFeUSFaNFgnCk1VKUBKVUcwSjpJJVsxVUE2RFE5Tic2YDFNYFk9YDtcKz08TTgmSVo7OC5S WitKQz8qQUxHSF5NQSI1UigKTVNHTy84SSQzVTJBLVIzT0JJIzc+KV9INFEuQixRV1ROTFE2PEFe MlM1JFVWWyo6Iy4oWVYnOjFRRSZMQApNIypcSC0nSSpNMlpJVjhXTkMtNCtgV1YhSzg3RjVPJSNZ QjI9MURKWTY8UEFZSV4vRT8wNCMhTj84NTtCCk1QRTdTQkM6JiJCOyJOUlsvXFpeWEMjJ1pAXzZG NDI9IkMrNy0jTDFBQ0cvMjlHQ0E6RSg5JD1LKUtVWC0KTUcqNjA8OzxQLzlOPCtWPzQlMFtMKF41 I1A2XkkxP18sVkkzLyZVND5SKjgnVTc5N09ZJ0FVPV42WTA3WgpNVGAyT1A5O1BcS0xcLSREMDNc T0s3XT8jOjtbWjQnVzhKR1gjSyotKGBbNVomXD08QzZGIj45XTpJOEdNCk07S0k7RklAMSxXVU0x XzlJSUhRI10/WjU9QkQsSStdISY0MV1SXExQIitMNSssRkMmTl9JLjVeUSgsMCQKTSdgQkYqKDtF QVteNVY5QC4wXzlAITVeLVZFOjciOEErXUI5PUQlPVtgPUgkS18jJCxgQzwuPTA8SyI/KQpNO0xY MixUVSoxTjQsU08+UV8rUTdWN041TzU/OT1URDNSXzQjMTEtUF9PMiFQVitgSD0sI1YoPlBVSidZ Ck03NERCTUssLCVCYFQjSiE1QzdQJyxKQldVWEk7RCUkO1w9WUcsNUhTREEuOysoYDlOVFZTVldQ VE9SSicKTUJWTSJJNkZKPE1BTlBIIzVPJkJcSTcjVjJPKV5FNjFcJEkmJjJHKzNFIi9XSCIxO0kw RkYpLl4uKUAlIQpNUT5VVy9DL1VaWCYiWzE1RFBKYFdVPkJZNVhNUjY2NzcmKGA6PzleVCxdKSNa ITVYTmAuOzomQjVcJjZXCk05JjA1JyM/L1MlWkJNSkMyVllASShOLS9DKyhXKVhRNTw9YCNUWjtd PjAvM1o/TzgnXURKLj0zU1AsTkoKTUdGSDUkUjc0NiYhPiEhSDtcKC0zPEs+JFdCPShPVjElL10k RDRHTTJTJU9BRUFWSExALT09SiMrQkFOOwpNOTFDMispTi02K1hHVlc/MSRVPF9UXjlbYEMyPjYo Oz5JOTdcMjNeP0RcPTNCP0JZSiZKL0g1PiRaPFQ4Ck0sJzIpXjs6JltQWCEtXCNgLD1LS1NPRlBa U0E7Njg/PS5KWSgzX1c4I0g2OkNXJSchSUpHU0JLXlVcQUUKTVE7RC8pNUlaPEMvXFQpSUpYR19R MUNRUlsjMSJATThVKThbWl0wUClWXTdIPTNVUjAyT0BPNytQYFFGMApNJzZHOkUzYFIoR1MtXEFT PUNWIS5URk8hKlQ6UEg3MDU/XFYkOytBUiktXydCRVFQLyJZJlpFSyVbVVdQCk1eTEFQRkcxRD9V WSk1L18kOSczJyRNK0RdNSY/Ty5dV0M4Iiw6LVlIMFZIVyUtQDVeJTcqRWBUJV5WOVIKTT80LlFP RFZJP0Y8Uk86OSRXUlxCXUZaOU81TkY/OUskQjUuSE0/QCRBVy02MjFZWV5UJiNSV1gmLTZbMQpN OD4qLydCJCc1XkRcS1VfM08zQiFHSD1JYEI/UihAUV5HPChXTEJaXSs4PUpNWDVVI1haKlIyVlJG WjMzCk1IOzY4PyVdVCo+Ii4rLiJbQEouUi42WStYTGBDPFhWRz9cRChUL0QnRjlFUSwyPlooUk8l RDBXWT4nM1EKTTtfKz0hXS4qTi47IVhQP1QmQlQmRkFfQ00wSSlLTkxZVTEtXUVgLDxQWFMpUVBM QkIkNzNHND8yQyhdJQpNVztQTyhdMCMlVy9bNyZdJEBbWlsuQzNVJkUmLklFRyQ0WTU0STVFREsx KD4wVF9bQFpdR0MjVCxeTkIoCk0yWEYlNFxOO0MyUFwjR11JMkBLKVFISjYjSFteLSdYSCFMUSRa VEUrQzhQUDZISywmNSooX009PzlDSE8KTUtEQEFdSF5fVSYwWidVKThfJV1fTj8lXDM1MCsqMkFe PC5ZI0JdWTBZJSwqNS9YMj1XKyVXXF8kYChaQgpNSTVdQlIqWVRIPEA+Kj9HPEVDIkhEMClPJykp V0JNJzReUDtMVkdDQi5EQDhTYEpUPERTMk0wVlRcS0soCk1CV1ElOUZbXktWUTw2UyxbTT0lS0M6 Ky5JYCRSWjIvSVgiNjFERDlLWz42UE04WFc1OVhVQTgoP1dCXTUKTStaTSknIiVWRTAqVk1LOEBD LThFTFZfVVo9QTVeNCRYTVYoNC5dXCUoNSJEMzBSRi9VN1NZKE8+UVsiMwpNJkkmL1RKPFY4QCZJ M1lYXFo9Kks6LzVEVF1EPzohTUdSPkpaRy1cMDZTUFpWOytPKiVUTFhWWFQ5L0FQCk1VOzQkXEY3 Wk1RX19QSTxPXSFQXD4zIjYlQ1k+XFMlWDNUKklEODpUPE0rMzRVQztJWVVVKlIrNkkrPzcKTSU4 TFZSXkBQI0JQO1lVXjAxQSRHJl45Q0pXOztSLSoxJVE8QFlaSUo3JTBAPkI0LUNALU9RVjApTlZf QApNTzs9W0hgUDxQTks7JiQzJS5bTjFQM0NbOjsiWz5cQzpFL1M4IS1QRFBUKF0oOV8zOUxSM188 VCVPPEpWCk1EKCFUIltVNlEnVjhCTDhZOjJLSS1dJCtcOEUsXzgtTllGSVBaTD5RMC4iOkVSVVAw RzZOIVNRJTpFUzYKTUFTYClEIVQhS1UiSChbNDtJREtQI141PTM2LTw/MjQ1WkpNVkVARjtZJks0 NlxIWVQ4IjA/UDBSVUxDOQpNOC9KLzMlUzk0NUs7Qzg2TzIqTS0iIi9RUCpXSV1DS2BDTiMqRj46 WztDQjRBPipOTlEqWUMmJk0+OTQ7Ck0qNjJNODJIVCY6PS02IS45OkpNIiQ+JEQhM11NXVMpIjk5 UyIkM04iRTxFITtNRzJJIV5dLU5HWyVSPV4KTV1EI1hTVVIwVS4pJTIqUlYyJTYvNVMmLiUzUioj QVs+P1tfJyxZKDgzTkoyRmA0Ti9cSD9GSzhVXEEkJApNKShcLDZRMDk1IzApQktLUlFcVzA8Ql9d OlQsPE48RTYoSjUxLzBfKlFPKykoQ0RKSyIpJkg3KCRNQjorCk0vKDgiOWBaOyhaTT0pKFdHOCFO VCI7SSE/KyxMKSY2XjJgOEdRVFQ9UjBVI1wpT1lEMlZfVEA6ISxKVCQKTVkwPlw1LTpHJj0lMEtQ KUsnVy9TJ1owVlVbKSMjK0A/QUhYNlovJDY6WlJDNjZHK09VSz9ARSc0SlIkOgpNPmBcXEtFKidC KicxTCIxKFUuYCcvKS1cJyUkRTtNIS1CXjg6OFA0TUAqViw1JlU/LiZLN0xURycuXlYwCk1LKF8w KyNTRSQjJFcwITwnUDRGJyZFTC5IUFFKMyM8MUEmUC4oM0tQJStgUVJSKTciJykmI05SQVhTPFYK TTs3P09ELysmWTdIIj1AV0MrR0AhXTkjXTBHMTdFU0wnViVULipKIjcuRT5OTEE0Iy1SX0k+NUAi PSkqNQpNJzJPRCVeWixcJCFNXEkpODI6STg5XSFfXk4rSVJZL0czVVxEN1wpOyxcMCEmNVtBNT4o S1FKWTs0PCdLCk0nL0JRQy9UNj5cXFxVVUYnN1hIWSZUWClBM0g9P0IqRFJeTDwmQlcjYFNSVCtI VEJNSiszNDlJVD0iKloKTUshITAuL1BPMjA8WDNdRS4uIUwkUV8qWFFaWS5KO1FgJTg2MVFgUixZ NyEhSlhAMSUoMFslRjslXFE/VQpNJjZUWz8+QiE+VFtLXVAxJ0JCVFsuM2AkQyhBRSQvRy9SQlAr ISQyJChJI0QzWkwhYEc5MVlOXClFJSwiCk0nXzNWXlkxKEI6Tjw3QzEmLkcpRj9RM08uJ0s/IlYh TDlHIjdQXzxJOFdIIjVfOSRTMWAzLERMMCpMJEUKTSZBOVk/XFNAQjZHUU85QUk+RDJaNTEsWSQ5 IktZSyo+Uz1fO1RdRSRSKVMvSEMwVkQxNy5PKkguXTtQTApNTF4mWyxRLFsuNS5ZXy9cKDo6QTVB WjJCVUVJTjIlSTxPODI4W107SlRaTkpaYElgPUooR1wuVTFgJCk9Ck0nMlM2RV0tXDkrKC4pMDw5 Oz1bQjtWSjpcJCVGPz0xRTo8YEw0NyZELjZcTUBQVTk9PDlURVFFWTJZRCoKTSUhNTxKYE1FUTFA TTBLPEglI1pMTCMvT0ZEM1hUI10qUmA6QT45LEFMPE1UUipIMUhQP09ZISQtKi8sIgpNXC9CUVki TVlKMz1CKSdYL10kMiJTRSorQD41XDQuQkBXJzZINlgpVytETj5NSlA6K0w3NFkjQlMpQ1dMCk0k OyFSUS0zWE1TTTZER101PSk7IUxNOigiWzFMJ2AwWzJVJihcSDI8MF07WzFXI1JSME41N0g1Kz9T UksKTTZBPFFgMFo4MChHUmBdMkY/MTYoOEs9I1ZGYEguWCJGW09SUkU1IVJGTyFZW087JmA9W0NW SDpZNlM6PwpNNFBSWVReQUZHO0BaL0MjXz1DITE4X2BRVUhTPVAmWkYlNkw7UzspMj8jLzdWN2Ah RkhFOSMuQSpHRCJeCk1CJVVQUF0iMF1fIUEuU1YrXT8qOk0+P046IU8sOGBIXjwlN0VdN1I6PzVO LCxeSiNgSl03XFg1XF5XOEEKTU81LUIuMD4qVDcsMlE4SEk8MFRJLjRLWjc2KDEsL1ZLMydLXV4w K2A5WUQ9VTI2SUNRNygrQ05JIVIpQgpNJFpOOGBEPi9JOmAwSS1WTiZXWkUvTElPVT9BMzVAXlQn JFFDN0ddNFM+Nl4mRVNOIjhUPzgtOFkzVyZBCk1MXTNFQ0chRTlfIjNGTzZSOiw+LVg2JkRARDYu Rz5OUFojRigwVVZTW11bJSVKIjYyOSU4OUBfVlc3TkgKTSNKVUNJLUsnMkdBL006J0BDLDNbKitC TSdHPSMyO1I9MFVbNTM9V1E8Ml1HLkVFRidgKEkzOjcxOV9LRQpNQFlOIiZUTCFRI1kxKjclSjJH Vi9JLzxKYFUzSl1ZUzwtTU0xYFMrKSJCOytdMEYoM1UwOyJgSCdbRkpfCk0pU1VBI0NVMl8xWDUy NFxSOScuIjtUJyEwK1MxRj8vSVopWEpGPktFRk9OMks0SiIjTD9fNyJdNzs8RTAKTTRRSSpDWjs/ OyU5QltRNiQ+Njo1NkY5RD8sPz8kKCszWzxEIU83WDpCKjcnRUYiJUk8XkE7VUJEOkMmRApNJUJB LCs2V1hUMCslKzM7SVZIIj9DSFsuWkRFQlYiQE5DRCQpNjxgRUBIN0BYVDJHP14mTj9KLyoqWSw0 Ck1EPEFCMSpBJEYxOjNGLmAiVCVBTTA2VDsvLVg3OScqUFAyTTlRVSQvXFQ2SzBMVTskIVJCYDw6 I09EOj4KTVMwLz9TOCM2RycyNVFLJkEnUVAtTEIkNT80Mis0KkdRQSEtSjMiTSktMysuTDkmXlw/ T2AhSCVIMEVSPgpNLUVVTCk5JTxAUU9AXlA3OD9AJCZfXFgsPU8/OSJGV0s/PFMxWlFKYF1WYDEx IlJJW0wlJDAhPUA0JkdXCk1KQFYlTzo1UClZOyIpQkw/PVBYJDVJVFs5REwkNUotVzlGPlgyXiFN QyxEJl1IQUM8ODE3XiJRQmBZPScKTVwwOSo4JzVOJlJeOyZSSDVCX0JaQURMTSNcQkc5S1RUVExI TUw7SDYsSCspOVwtVzY/Vz1LIUNWTUgyIwpNIiYkUzlDOTFCOC5OIiZKUF06UChKOyVKVio2QF9Z IzYuIihgT1FTYFIjODo2SikiPUNSIjIoI0lgO0whCk09WEo6YDZaUjwxS0MhR0pBXzlJPCJXXUxO LzwyLlMxW1RXXU9eQU1fNyxAYF1AR09OV0NFMz5NOihbUFwKTToiUjs6R0AjOycvRkRROTZOIS04 OikkTUJLJlBMPSFgWF9TIVMwN18zLDtNTzJXLjohJ0VOWVI3RD5PVgpNTzZLOkpSOSstPkRDIVo5 XE80QSQoR08/JE5DSDoqLDUiWSxeTDlSW0VTWzYxOkNVIVxNPExPYFRYNVxECk0pXF1KUTBXMmAk N1YlUU83IV84NUMpLTFMVlI8I1hOLlw2WUgnMjZdTSlZJ1dDTiVXQltKM0UhOkk5NikKTT1KO0xE UiVTKjVZVkAyWl85Kl0mVUkkO1xJWUs9Jzk5YFpTTEVBU0lETzpHKD9XRGBeJE09OEY2JkxFMgpN IVM6Pl4vJDJLVFZBIV5SQFgyIls8VUIvLktNLTFIVloqLzgoMEMiQCw5W1haPlVXWjleX18+J0st X10oCk1fX0tXJ1tZWV5eVi8vWjJPV1tTWVw8VlktSDA5WCFbTyZgXkM1WzxDM007JUIoWV80WllA J0Y3Njs8SDsKTUQjRyRFVExWLD5VO0UjYD5AOiIwIkM1OCE4LTQ1P0AyKzFRREcqQVNHWCpeLSVO Il4kR1MkKjM5VCtAJApNJy1AUDNIWF4jODI2SktZWEslJUpfRlU8W1E1KDFUVD5VLyQnLFonPCkj WU0nI1NGS1NMUlI4T1FBTEReCk1DMUUrI19bWCJPSDJQKUY3XSZAWlQjIlhTVTMnXjk4JC8xPyRC OilIOSEqJE9YRSsoLjc+PlZNMSlMVEcKTSZWPSIhPFcwNTFPWScySzxCJDpJPjZVSykoJ0pJKV1D IjRSPEsmUjw+MCpZWFNRWVcjOUdJNGAmLjk2JgpNKFxbRClOKj1HQS8rUiYpOksrVDI+TjhNN18h TDdgUiE1VEJeUU4zQihOJ15gM1YvPTM2MEY1Il9RLlo2Ck1URVNNIykkVUFAXk5KQ0EsTTtTKVo7 RExFWCI0JiosQVQyUEdJUU5VUEZgLDZIIzE7UCcmLDg0QUNNSj0KTUZGSjBCPzlIOVBURkkvYDlS KDE0QlkuUEtMQVpcJy8xJDlfMUReKSFVJlBSI1FMVDhEXyNJQiNaRlguKApNRzgyWzkzPTVXVl1V P1s6Sk5eIipOLSMoXCYwXVpOJytMIV9fRUtbXk9XX19eQ05ZIy4uK0tbSzBHOTY6Ck0vIi9LWlpL SlJQPzIlU1gyIzdINDYlWlZWUl5WXkI1TVE3Oi9dKE4tWSg/LTcoKyEvViE2XE1GYDtJOzMKTT9V MUdGXj1aTzI9Mz85PzdDWEAzMSomTz4rLFY0Vk0mX0NPTilFJU1dIUtSLSlORlpQV1wqOU9QS0w2 VApNQyZNPE9GNEYzUDNDQUhfN0ZTRD9EXidYR1wsMVsyIj8rOyc5OVtUTCIoTlIwOy8uSldPOSQl OURDJkE3Ck1XLktWIkIyME5aT1JeTT9VPClKTy9GUlJKXilNQDc0Njo2JStGUkdAIkVdXS5WXDdN VD5MQDJeUjZZI00KTTcjR1suXTM2OD1eNGBcIldKI1NEITFXJygjIjw1JkcxSChTIU0pIiszMktZ OVo6OlgnKkUhPlgvSUNOVQpNRlRSNF5AXypbRVY7Lio4LE1fSDQoPEVdXytZKVU2SVdOODVHTTM7 UE09NkRTTjkuPjNTJTI/Mz9PPFFPCk1AW1UhMEFQWVVdTjlbLSdXOlgmPSdZS181PDA/TC41VUsr Lz43QC5NLFMuKkY8KkVHWEo9LVwzSjdCPlsKTSk9V0dAN18nRkJeUCpRTz8yOzRLTlJHPl0zOTs0 Lzw/Lzs7Kk5cPUY6LlU1Qlc+QlEiXTtKSVVSI1ZCVgpNWyk8TVM/W0pMUypeLVAzWS4tSCslRDxR UlgtW0wqJF5WJ0U2V0BPXkcxO1xDOUI2UkUiOVs7IU1TMCUsCk1LT0laOSotKU4oRk5WP0VJTi08 SFMzNyonPF4xIkk3RDMpIypfL1taXUA7UDxGYFooL0spLEFONj1gLywKTT4iRVBaKU8uQVpJSyY4 UVYpYFBLL1tSWkU8JltLVixUVi0wMVQ9XjoiXF9MMyUvXCFFT1NFJDFZIz9KVgpNMVIySlVKIyIm NSlXPFw+KzQiLVxNSzsvJTopO0M7SFszW1dWPV0uOjJGKj47IURYRE9LOkRdMS8/T109Ck1SMTtd PkYhWUYnQFUjTEI2L1pOOUJPV0Y9VDkwJDRNPjpOXDVOVDBgIVBUV10+YEUlKDxgKE1LSkBJNT4K TUwpQCVeSjA9NzAuTiNRO10sW0w+RTtCQz0yRC44OCU+VjolTz86VTxeT0hYRUoxPSUtKTojU0RE PVNRSApNWypWKE9CIihcUzFZPz5FMlBTIjZULDRdNj8rXDVEUCNISj4nMUw1I0U5RD8wRzknIzY0 KkxZKD8nMTxBCk1eTltDQDFFQFQ3PjxBTylVUTFYIUtKIjFHOC09VD1EXiYhSTM4MTxTYFciT1g7 Pl4lVSkvYFZVMz5QNFYKTTBGS01AOzFMIi1TUStMQk4qMlhBKC9WWmBAMSpMU0ZLRUFeJjxIISsk MkEjJDwnWjw0PjQ3VzQpTi5KKgpNWitNVUBYQS1CSF07KT8yXVo+NkAxSzpaKFpLV04mWV4iLEhZ PEBPX1ZWKjU3PUVBX1cjR0ROTUNfU1YwCk1cMU9YTEpVJDc3T01RJCxeRS9XWz8+IitIMUFWU1BO TEVgOi8hU103JVleWSZeN0xKKU5RSktgNiU1OVgKTUhVQS5eKFtHQCNOPi0rX1M/ITA8JVknWkMp NFApVF1OUUA/KE45WyshXTVEO0lYJkhPI0lVNltMK0BEJgpNWUE2PDNQQkRBJV9NKlFcXyZESkNY LERHLyUpLFVAJ0cjISciWTNDMS9JSUMkI1g/JDI+TipJPDQ9UkshCk1PIzYtOTwyRyUrKzQxSzEy VyZHPUFFOVcuJktcX01TUCwqKkhFSTJKRUNSQVIiJVhIKSteWDk6P1dfIzsKTSY0R0c9IyE3Rz1O UlZgL0AsNDFBXFlaUVItVVE8LDgiUD9aQ15ANUNOVypTL1IkOU5fRkZSQiE5V0BQNwpNOjNETEtL KUUqVVg6QVNeVEpSOSYuLzstTSFXLU8yVF4iLU9RTkZSYFtWI0teIztQOUIyLVchRTpaJ19TCk1Y UF9fXz9LLTZSR0xbUFgjSUBTOC84S19EXjsrTSlCU15RKz85XjRKSV0xPVM/Ryc/VlE3JTIwXixb SSkKTUVRSllIUzg7QkU4UFYqRkFMIzpYSDtcIzsnJDM2Oj1eQlg0X1s3ISpBOjJRKjAkPDZaOUIm PDEnOS9WWApNN01GT19EWzVSSF1MLFhMR1Q9IUUkRCtQOERGWiw9T0xFITAkIj0oMkZSVEcsSlFB T01DWU4hJDMqXWBbCk1BSTleI04oJUpDJyRLJktVRVpMUWAxNjxWP0AwPCY6IzI5W1UkJ0EyQV8i MiUxJSg/OyM2JEpcJiZgPCIKTTtDJDY4IzY4VDtgOEMrPSE+UCRAIUM9VSwjOC1LXDhAXVpJXVg2 S1ZbMz9CV19aViYhQTBIUEU+QFRdWgpNOEM2MlhVNzMzLyQqW05DVlM7RSglUD5YTylUNElBRzgm W0hNIy1fJD8jSjY2PUotXVQ1VjRRJVVaU0BCCk0tQyE9TVYmWVVIXDBWTEhJXTZCL1BbO0I9WzlY NEtWSjtcR05HNTdXLlo2Oz0tMUsnIzwmTipGTU5WRjwKTUxJKCdETTonVCo2QEkkK1w2NSNXWChM TVIlQFA8Ryw3SydMOFlFLjM5KVxQSlZYOEwhVVE6JzdTRC5XQApNUj0tWyM9SU4rXiJaU0JSLzZI IlJfNilATFxGWS9JSE8vRlI8RzouLjM5XlQ5TyNMVVpETUY1U1tNJCFfCk1AKzFgTDsoSU8qQ1Im Ij8pR14iLDM0Wi1CWlNKXjM1IjBAUlc3N1FCSzk2XDBbNiU2XSomITswNzs9TlMKTTQ/WyhBXEs6 JDAqVlQ1KVtdRDxONT9YUypTQUFRP0tEQkNfN1w7MGAoLjM1NT44Xz9bXUs8MVAtJUAiSgpNK1pL L0NRMTNfXj9LJ1VaX14/S01DVlw0L1pNIkM2V00qUEdBK01GWEdIVU1WLSQkV1hYR0sxVkI7JkMq Ck0hSFA1SDNSMyckRiNFQFBVKDVGMmBKJjNIUDhDW0hCNFUzME46KUk2R0o2VVosNDAuIzpHPTwu JVJWU14KTU9JVVUiW1lDXU1gMyc+UCpgXlU3KC9MNTImLlkzN1RDUmA0IzkiW0pKIlVMNzAqQ1Uq MyEwOVxfO0Y8PQpNWEE1LVs6UF0vJU9aI1JYI1FgLjEzX01FUSk4RkxJTE0/Kk1TVis9OzpZQ0o/ KylOJkZNPlBVQzhdNVYtCk1fP1tMP0dcNkZeTj9eSTk3VSYkQixKXTlWNiFYTytHSlQ8PCVGN14k TzBOLVFaRlFNJiQxWTFgKT4iUmAKTTg1LVtQUTw1QCFNTl1ISl8+KS9EMDRHIV89WUc3NiVBM0o5 YCNPPltHNFg0JD9eLCRPQlRaKjJAOFknXwpNTkZZST5dNlcjR0JbLi4zU0MsSS8oMUBMLlxJVFZY SS05JzQ8MU1FSlglYCw2J1hJRCFIRiwtV1AhTkc/Ck1IOzs8UyY4LSZQWjo9VzU3OE9KSkI+VDEv NDNbWkZJUzVMTlw8WEYxM0cmVUA6UFsyPTBIOFs9MjFVXy4KTWA+NyVAMzc9Vko2NiE1UkIvXiVP JDQrWDMvXFhXQDJVKDc+QicoQUwxWzMuPy5WUydMOVheWTdeTUBdLgpNXzMmMlA+K1lcPVc1PTZV UVkzNDBUME07ISUtJzJTLSRcXUlXJztDJyc+WSMtWD8qIVZfJkAlSl1RQFQ0Ck1dOl00XU1QMVQ+ WzVSTU5RMlxRM05PKVJARVRTND9SN0teUlpaNSshSDc9Sl5cMFRXKUolJSdFP1NNVTgKTTNMJDpT ND8oO1hfPV1YNFdFMFtVPltXTilOIitPWTxUO1s4MEs2VSEuW0QuWSowIzxHMks5RzBNYDdEVwpN WUc1VUk2Ozc2TlZNXFAhRjZbLSVIXTUnPz0vNE9aU0ZKJldDI0wkPTxZM040Wk05VEVCWy9KVCtd NFAmCk1BPyUxJTdQTENYOlc8XFU/NzxbJClUUTslX09NJiM/TytfSUtNTjVQN1E/XVU5QVBFQVpI Ll9fPFpPQF4KTVA5X1MsPkRYSFwpUFJBNCNGUCk0RTtTL1JCNjk+NFgxVGA7ViM5ViVFW2BAOEw4 K1pKWSo+NjA0VTpcQApNI1MhXTI2LFtNN1RIWjwvN1BSIiEoJlctMilHUl4jJDA6WUI4PkMsTFFP LzlVWi0xTUVTQjErJStgKUhACk1HVSIyRSpRPC5GMCVfMjIxXzNUV0M2JkwzWEg+PipeMEwxOFZK U0EnTlwmYD5UNkg2XCQwSSxbR0gjQVUKTUAxRSIlMD02V19eQ0FdRj03OUM1JTVSWy5UQkFPR0RT KCheVStCOlg/UzNcPEJBXjdIKFo9MVNXR0UlTQpNOTMxOyZMNz03M0k0OTNSNFRfQSxBSksjTTpT XjhgOjpePCssJChZXE8xWS1cVyRWKy1bRFE9N0sqPC48Ck08IiNWRkwiWiZBJz1ZL0RWSlNBMVlK RTZcL0wtJSFVWFVENVVeODpHJUc9WVNJK18yJTIyMT9LWCJDW1IKTV8pYE4wNjtRWU5BP1xONUoy IUMhPDleNVxZN1clKF4nIyU7OTYzWD4zWy8oUEwmRDYxKykwVVwpT1wvLApNNDpQPCpcXFVQW1BU VFtXXlBMKl9YSDkmXCkwVUI6WEgpUjpLU10zNyg9IT8qTEctWFw/TksySU5eWEVaCk1VQSQ4YFM7 VFVBMDtAI0YmSDREL0A9RmAxK1ldSWA/LiMhWlg0WUFWKz1FKldUMi40JWA5VyhCQFpaKjQKTTlR Rz5dNVVISk09PDQtMzA3JiIuOClJJlNJMEZKQk9ROipfUFdgRTRDI0BKNlNGO14lXjUjP01JNiNf OwpNRTBeODoyNiYtRCM/M008UVMmMEU6OUU1NS86SDczJyU2K1k/XD1PUi5CLFMmOUM5YDdKSUku Xi08NDgpCk0zTTY6RDUtXiRYKUI6OENROy5HVkhMODEhNjkwJjsoJkREKyFOVygqO0FUQU0yKEQw TzE6IyE0J1IyJzsKTTUkWC5PPS87YDZfLDtPTUs8JyhbSChSWUM4KkpPWyExLzkuNiRJTlgxVyNY ODlFVzAnX1gyVFZZIjw4KgpNTC8zMlouQ0szNkxeNTFYS043JkRZUFI4NC5dYE9GUUskQVA4Lk8i PTQnXTBdOkgkVE5aPGAmVDlIKiRFCk07NzVQUyReKTRDTjgnOEUtV1gmPEZLYEBDMDBdL0YsX1om SV1TJ1gyPzJfRypITEs4LzwsNjNPWyYsNDYKTUVCVkIiNywuTlhOQFw0XilRQ11ZVDJcJSpPXzRK JkFQXSRYLC8yOCY4L0lXUiEkWTkiNi9WLzxTXClGXQpNOT4zNztTXUohWUUxXlsmQCcqU1teKTVE JkVYM1UjPTJINT9VXDFXTShcTChTVVtBJzk0PiUsWklAN1s6Ck1GJipYSE9VLDQjKlkxIyhaPkJD JzZFUSc5PjcpLVhWVlJgLSQ+Qz8yQilUL0smI0pLNTVYT1NaLT8yJS0KTTZUJD4zJkNYTWA5QS5c JjQ5QmAnN0s6VlxQQTtIJ0s9MUBRXVgzNUo4WENRUyExVVckMltFSVVCKV1VIQpNQE9dTD1bW0Qv Pyc+TUFWTU81WzRUOi43OjUoOmBgREpXLF8lPkc6OUU4OUw5NEQ+I0gjOEY9KlIzVV1WCk1OTStX WEckTE42WVNQW18sJlVRPktSPjM6OU4mOCUjUC8jYDMrMUE2SCxaUDhFMygjPi5KU1xUMFpYMUsK TVtGWD5ZK1QkSkdeMypdQy0oXEtQWlUqWC9ER0U3MiNQI1NcUEAnOUpHJkI2SiZHKVhYVF4kT1c7 XFRJWwpNTyEpQEQ9S0ojJyxPMD9URkYmNShAJjlNVys8RT4sNTA6Ly5VU0o1QkIsMigmV0dXKkJZ Rlg0R0ojPyxCCk0rWlo4ITRfMSVNX1BGIkExVmAlIyc/XlNPKSErLEVAMF5HSUYtYE4wLS83WUEr JDQnWkMqNUBAU1hZQF8KTVgwPy8mN19SMTNZMkFdISxBRiQ/UiM8KitGSzRgW04zMDpJT187RE4m LCNHOD4mWyxdLkpgRDk4Qy5eRwpNWSo6MUU3SEwrIVVIRF1QOU8uS0NQMkJAJ0cwODpDRl9aMydA RzkwUS5SVTpXISNHMkBeT1FaVCtRND1LCk05VCEwPlhcKkQ4Qko3TlVNI15WUS89WEtPOUdMMzE0 Q11ASzg+ITs8NElIWVo+NDhLQ14zK1tcOCheUzkKTUEoYDtBXlE6PE4kNCEpQV1TUyJTLT0/KlYk R1xHTi5EXVBgWSNNX19YRyE5UCtdJEY5Kzo9SVgtXFBCVgpNQjUxIiNZOl1QRElJKFA7XUkmN1JA WVVRLlNLMU0lLydfRyswUEozUTMpIzA8SVFeWU9ORiNeSFxSMC07Ck1dJk1PTTNHKEVFV0MlVC9G LipJMThWTVhdOjdLIjBFSTNfW08rL01aMC01PUEuUjk/MD45TzQpIzVcUiYKTVMxKTdJPkVCNipZ UlZONTosODEpSzxDYCEsT0NbUl07KFRTMC5NXiYqJUNMM0FAKjFJX0gjYC1SSE8pTgpNMDxgYDso SCI5JV4xJFooOiM1SCJHKkhXSEBVOS8hWEtgLT09MCcuO1JFSVxKIT8+IzFEISJUUCNbLWBQCk00 IllJJy8pNkRUV1g3WVRTJy45RVxPSThBWF5RNS1OIT5dJSMtUFxZYFZCPGAjJ04vQz8jSlVPJyQq MC0KTTk/NVQxOy1BL1grMFk+WD5QRy5MUkA4OV07I0BALDsyQjctMzc/X0AvT08+J1NPW0dKJz5g Pl5ZX0NGMQpNOCo4Uj4qK0kxOCs+QC9eXFgrP1IrI0ZPOyM5IS1JSEpIKylbMjhcMUJSPU86ISFR TjVFISk1Qz8iSi0jCk1bRCVBMUxcSSUmSUhMKEI5WkdgWD9CXjxKQmBaQDMzWTk2KTw0Wk9COk9Q JFE0KU4oTS5WYC1KSFFJJ0sKTSc7VzErRCZUVypCK0FFQD1gPlNKOSQmPVlQNy5PPlhSUlxPJz1L XzJYN0JYNi42Xi0tK1FHPU4oRFItOApNTjE4UDNCRTJcNyhdRjlDS1QqSlpIJTU+LjVXRl9cS1hU RFkvSS8tN1VHPDlVSERFUE5GOyxcNWBEKT9ACk1BUyxYLyVbJFtQJVNcSS1bS0YkJCg4VickIS1b RFAkPidOTjswOEU2WCI0YC0qQGAtI2AhQjtARSwxSloKTVZfSUcnWF8hWzYtQVtNNyJKJUg8TjAr KS9TLCJXLS0oNiJFLD5ARkQiNjBHM1JBKywkUk88MT9KIlM5JwpNQ09FW1RGVUhGKChTIShBVjFI UzZgWlNfWl1NTUkoO0YqPlpgQiNINEZUSU8yMT9HKTM2Qi5gRy5TM1syCk1cUSI8LypAVVNaPFFe P0okNEpbMzk1TilZSlAoQiZeL0wxMEteRTE/IWBLNF4sTjZKVlI8PEYwXCsoRFIKTSFaVV9GNVdF MTo8S1YkJ1RCJzUzKzc1NEtWKUxAMjo9Sk5RM0xRU0RWKEpJMztOUE4ySz0rWi9eTixMSApNP1Ey QC49RjRERzNHKDJYX0ZcXSEtKlVBNyQ0XERLWU5PKkdPXy1GWk4lSjNYMi4iYCRTODFDJygpTUkt Ck1DSUI5JC1CUUgkN14/S1hSU0w0Qz9DMVVMXTJZS0wmITYtWE9VLDxFSkkjKkFaR0FUUykrUlJT Sk5CNyMKTUNYNllPVUtQNmA3JjRfV0RWO2BcRDAoLzg3UVtKQFwpTzMtRU1KQDo8JVgqTipXRUwt PDs9UDkkWDYhWwpNKU5dQV4rRWBTVUU+QV41SkZKWk5CPlVfLzlfMkhXO11ZVj0xSVBOLCYyX1Jc VkBGSC5JWjYhKFM4WUY1Ck0qWTAxQSYyM1I3WyVHMDEoMDs0MSg4RyRbSTBEK1xfQFtAPCFQNjw2 VlU4MFBXQEhTVDsrI1YoUSotXyIKTUVRYEo3P1g8QEUoJD4mVFFaJFo7UzhFNE86TUBcPz4mMSE2 LDJVTS5bIlY9XloyTT47KEVDMiFEMy1aIwpNJC9XTS5TLyw7IyM8IiVgTCohUVtPWkYlPidIWScr VkNVQE5GVkFERTotU15GOjJLTCI4RDw/MVI3JSM4Ck1SVCQqKUlVMCs3I0xHNS85RT0jNTkrPjhV LzMlVyE/VT5RK19GQUcuLiJRSiIiW0cwMik3Jyw2WkRcLEkKTSNETUhcTjtVW0IjUTxKNE0vKi9J WFYnImAvTUFDKz5LOSpTKTdGJT07PSo0S1RgVkxdUUIxJkQsWTwpNApNXFRfJEcjNSRbOzhcRU4t TDg+PENTUjpEIjRfOUpCJVE5NTwrXFJPKjNLRSMhSEZLWz08ND1cNTUzMj5ACk0xWzVOQF1NOig3 N0JMUkc7OC06ODpSNDo6PSUpU0QpRDZCJUVDKVk1LDZNPFdFXzhSUko9QzxDJjI9LSkKTSdeUFRK WVhZPyhHIzwqTDpSVCMrQi8nQyg2SUxJKjdPQE9ZIUM7VyVgMCRTP10uISw0IzUmSmAqXD8tMwpN X0JfQC0qPS9NLVk1MV9YNDQwS1JcOVZWOSVDMig5OzlBNjYlWy8tPyVRPFRCSCcpUjc9JlksQltZ TkomCk1YWkMsTkU0WTldKUMuSVxPNkM3S0oqW1BVMStdJ1Y+K1UzNDFdWy1cOTo3JkMuNENTRzRg I0ReP0kvOVEKTUY0XiwzYEc/NmApT0M5RSdeOi06L1AvQEBPLjAvSF9ISDs4IyozSTFHVVFUXCZb IiUiVz1TTFcmXjsjMApNN0shWEFfREFGYCwuLTtNPzhJJEIwNUAiMCtfO1s6S0k5WywuSTgkRjs4 PDtHLDxdOllAPTlcNUhPOiVXCk1FLykyOC1GUihfUD09SCc+KzwtO0RHMy9eJ1k4Qk8kNVMzMCQy UVRVRkBeLjRGTFYrVFJTPUMsL1FMLF8KTS9FJ0dRQS4nRE5aVSldXjEzVl5PQVw0RlVZWiRGViRU MClKWUBfTERHNy4hIiIvJ1MtXFpaUFFOJE1GMwpNLFNFNFw0SF4wUTs5OTpGSS1dIUU4LS9ZQEcw Ly04VF9EMUVFUUJGKENEOSQqMDFZP14vWlU/Pk4iJFJLCk0oUVYiIzM2Tj4qXFdLU1IkMj5eTTgi QyYmKEVASz5NQkxbNEk2XSQoUz1JQFs9U2A9NyY+XSlfJSsoWyEKTUBENTs7MVxdRlhVVk8iQUol LSY4MUE7WENBL2BDT0tMQUxKOlg5NkJaIlBLS1srVClFXT1UWS4lLyVIMApNI1dWT0xgXz1HK1Mh UEpKPyJPJC09VCJWUzFZVS8iTVVeLDRSLE5eJztQUERYT0MnSksoQz8hMEw2XC1JCk1WTz4+KTM8 REhBLC8rLUIxNFIuUE0uVTc9QFpNJEoyPUJWSCIrR2AkWVBGNkpWUCEzQEw4TjJdTllOUFMKTTg6 XCEkP15ASydGTFVFWDFPUClVODk5WUQ2IjtUPC9HMUEwLT4jNC01TTlYKzFPVjBBITkyOzZWOEM0 QQpNU0dTIicyMlAkOUVIIjAzTzZLLkw5USIzUEhDSkovXlUuO1hgXD5XUUslPkQvQWA+XUgtIj1W Q14oK1A+Ck06WzlZKUwqJlxSIVYoQCEuS1M0QVghTE1VLldYTz0nVU5HQEc+XyNCSyxEJSRGSFI8 JUE7V1tMIVcqRlEKTUtXISZPQygrVV1LI2A/NDBHTSE/LTU+VE5UNTYqODNOQS5bQTZOQjhVLzQ4 TVMtKENELVJIXCVKTkVNTwpNR19cLDYzXzQoJTM2OC0tPV5aOjtdPltZMldBMlJNJCdbJiFSOEhc PSxWXU0wLUgzUylfWSsxNTk8Njk/Ck1UUCYlSiJWNU4uJiw8W0BbNEk5XDU5UkY2U0NHLiZDRjxD MlgiVTY/RTMvTSYlLCEnK1kqIUY9PkgsWVkKTS5QRTxNMTgjTlo6T1QsPiRCKjQzLCZSVlJZW1Uj UCIjNlteSls5PCdQSl1gUyZSNTtRV0FOYDdeQzZCQwpNKTNZNldgSzZYLiIwOT5ONjFTVS5dOVUu XV8iSEpRIUk7KydSNDwwWS4wMyNQTS9PJVVDU0I5PUhGIzwiCk0vUlFcJUg7Qz5EK1w4KVJbVDdT QilYMT0hXkJNWFJbIlJCOEQvV1hOSChfYD8xLEZFNjZDPUVRLyM+WT4KTTFBPC5QTlQ3SE1VPVo4 LictLC5CVTwpI0ZXKUFHWlBNPSM+OUU7JE1NM11RSlBcSkY/Vzw9J1s3OjZdJwpNUTBgLko2JjRP U11fYFI4KS1IR0dLQ1MvOFJdI1coMC07Q104VUg5MFNAOjBbQCE8NSVCWSE6IUBAJCMrCk1KTUcs LlAvUypQMUdFMUlaRCgqQUE/JksiQiJfQV8mTEEoMj9ZK0tHWDM/TFZLTUVAU0FRVyIjLjpLLj0K TVAnVDhVQVxbI2BMMSdDJTElUzYiK01LKis4JSczNlYnXlNXRllSPFInPzhRNWBcWUFOS145SlJP TS05PQpNIzReQ0ZPJ0JdNihAQFFHOihEWkJTSDtPTE8wWixfLUdAIkJDQkMuJU8qMl49V0lKR1JG RCVMTEFfWksuCk1JUV0oUkJXRiJUXztdKT1RWS0jTTgkIlApQlI8VS1eTV5GOSZZISNZJjtTTlZg NCdcKSwyUVdPSyEvV0MKTUxMWVdFLDFVIzZTVy8vM11CIkIvJzEqMDY8OCpJUFc5STssQFkzIyMx QSwxKUUhSzQ5MFVXPUklOzxHPQpNJEclWyRXMU9ATlpAIj1KIjUqWjhNYFVOMVQwVi9XUjkiIidG KjReM1stWVElJEZDMUs/P0w4SCg4Q1NCCk1KUjgiP0NCVVQoJltcPEhQJUk9SWBLMVgkQVMwMC09 LidcVTVCJj9DMTEwSSxUKV5NNFwvWDlfKT83L1cKTUNgQl9BXFohXClGIyQtXyQuJDE7PF5eJ0xQ T0krWktAMVRPPyZOLiRYLTE1TzBAPD0xJitgQUUlP1ZCIgpNVTxJVS4vW0c+S0dSLSpWXEMsPl5F MUc4QjcjKDw2MDFXUD9DWzArRC4vPzAhVktIKi9LODtgLCZILzQrCk1eOilGPy1RPDtDKU8qXjpI NVpPT1tTIltYXzY1KEk6WVhGRkxKWzRRXDxWLy9fU1daUz1PSTElUUFSQFAKTT5YJ14yT1xHUzk9 SSw6PFNIJ0EvMFlISEQ1PVNfTyQ/VltBRFFPRzsrV0M7STheJzZVSENDYD9eJzUvJApNTyo/KEUu L05ZSVknXlQxODBeWDItJChbQE1LUVtIPDohSlk8O0tDVks7LFU/ITwmO1sqIVM5TlQ5XzomCk0w PTUlUkVRRV1fOzY8KU82TC4mLkJLJipHOjM7TUZWXExcOVFRPlgoMkxIWkFLLSFSTTgtOipdS1sq JDkKTVUvJV5MW1YlTzs+UC9VJCs+Xl0+PzlDTlU7TFU+I1Y7LDY6QSs1RyUjMiwlQk01VUZEVzk4 LTM9QTItNQpNXDJDO0IiYCE/WDpcJFE0OUNII1lIXjJFNFBEOUEwNSdOTFROOyIwRFVeOjosKUgz RTU3Lk4oMDkyU0s3Ck1WQ0U8PFldTyJTUyROW2AvNU9BI15WWExaOjBZRTcpLT4kTkxRNCIlLlk+ MCdILVsrUyhRNiRJRFVPJTAKTVYjRF8wWjdOMVBaVyZIPVFVXylZJ1ZGUTdQS0xZRSlAYFhVQlNE QyxXLDhONzQ3L0NNRzdIXFlPTEMqXQpNRypeKzwwTVdfPShfU0RKRFw0PilPI1spT05DNy4/PVlT IUE8Tl9gPDw0MS9WSV05NTpeJ1RQRVtBXVVICk07MjUjOEY9YENfNlkzVUo3SVImQDdSWjJPQ0pd JidUPy1ANCEhLzJBSkdOPkAlT1A7IkRNTD4tP0sjTCcKTSRUNjA1JVQxUzNgXURAQV4xIjJcSiIj KVw/J2BPNUhQXUlJPjwhVjswPTdWTjAxRUU/Q1s9QU8/TF1PLgpNXztIRj1GXDcwOT4zW1s5Oysz NV9eT0tbVV5HOz9fU01NOSo3PS5IVkBgQ101XTFZTTIzNVReJVI6VVhLCk0vVCVKK0BJSEU1OCw/ LC9HOEsiTSpVMSJNUyM2Ly49NCg3WjVeS01bPDhRLCxcPSReSC4oOitUO0k4TTAKTUo/LFApOzVf Q148PiknPlxVO1Q3WTNMTlJMLSsjI0tEXCc9TVRZXzFAUUg6JllPRD00NV00TiRDO1U/RApNPlQ3 XD5LJzg2XVNNQictVTJaXFgiTj41TSQ5LkUtOyVfIzhMW086WSEmNjVPOUFeSiYpWi1SVU5AVlQ/ Ck1BLDVdKV4rWENWUU5aXk5cQTkxXkYmKFpTTVJeKFsmXS1bPF8mM0deLCxXTSIjRV83XjtWOElC N1lWOVEKTThdQC9USTFUPlNBLVJWJSFEW1UnU1UpVyVFST1OUF5JU0JNLT4rMTA/RzZdXk4wPVdR TztfSTE8SSgxRwpNUTZCWkFCMVpGQFlaUiwxMDw6IixdQDBKRyFCVERRSjxKQENBQkBFNVE7LD06 WSJbSiU6K0AqKjBYJy5NCk1UM0pFPEgqVS0rV1YuTlYhWjsxPTdZUDg/K0Y7QlktWzUlWltMJDpZ P1ZVVjNXTCQ7MlY4Ok5AVlhQMioKTTI5VTY9KVAjX1AnSS5OXUJbWllUR1NEW11YTl0zVDRRL0xT NTdIM0JPKS81V0w0IUhZX0hWIyg7RUovSwpNIz1UTD5aL1NIPF5NJzs0WiswOyxfNUg5MyItU1ZO N0YmPicvWCpIV1dVIj87N1RCWDsnRz5UN1ZKNFJWCk0hWjcpJkRVJl8oQlYvMkQ9SFNXVydIRTNR VTdVRzo/SlU0Il1eRyZdREo9OiNcIiNPKU0yYFklU01gXi8KTTlcTlsyT09IODZPPUcqUFxaJUVP OjY3VF9HMihCW0tDTT8oVD1LXzE8PlNeTUxZQ0BaWFZQNk5QKztQYApNOzFFPl5DRigmKkMmJCsu Slc8V1lbV1tcWjZNLVIlQyk2K09dKUxUVyUqLjtSLSdGXjgnWiIuRTozMSFECk0tNyMnWV5bLE0i KV0rNldbLyRcKkVVS1pdMCMrUEM8YF47R1tWRzZDTEheYEEiRCNRV0xTPClQU0g/SV0KTUlbW0FX LSY5NipSKDNXQCQ/LSEzQE09WFdeXEk6OlklO0U0PkhEQ0UkS0lCOy0/NTNPU1ZdVVgvWzo3XQpN W0RLW0c1K1szOFw2PkQ5RkBZSE0nQj88QSZXLCpPPV1BJyFDVzZDRVhBS1RAKDtcKSU0REhCM19H KF8pCk08KyZRJlRYLSdYR0cuRyFaQF4lXE81KjcmI0hgRSosRC4rQUhPPElEXEtaKiQwP0VTO1Za P0xdXixYIVkKTVwmQCk9Tz06XE9PT1hDLlhCSFQvUUlFOV5DJEg5VU1AKkFLJE9CJiUzSzVUPj4u XUdgNlZRPFpJPlpHLQpNJFBPYFMzVlRbIyhDKEZCTCJOTz0uSUxePztGOzo5LUkoI15gT0VcOCkk UGAiJSdAMldFT0xbNkMxQSdJCk1SPitaN0UiKEkuRjVMIS5QJ1ApYEhDWzg/TTZFLTxCPltgPV4u OkNMSEFBLCEnJD9KLDA6IkRdYEYsM0kKTSQkKVI0Mz5XWkVQWj47RkFSJlkkJlBTREpaMjxLXEIk TVJGLkQ4OFtBQ1NTVyguMTtCWVQhUDEnVyoyNwpNTVIkYFRBVFlPOF8+OV1PJycnISVUUC05RSM2 LUsxNkpROmBXKDxERytBOEtaRi5LQ085RUohTiNYLVM0Ck1MQT5FKzhJMipVK0EoOEk0P1E8Pkgm QVUpJkEwWEpFTldYXighOTIvJEs3Oi8+LVwmQmBeJjchTlEwNSUKTSs1WFYqLiI6NlsxNEs0MSku KEA4TDVQJSheWlBAWCJQSDpQLlg0KD0zQyc3Vj4vOC4hPylBUUkoTFYrTApNJDdJXFM8OV5MO1Eu WmA3VSZASjlANitBWFtNKDc0UV42QkpdJyhbPlQxVE8vL1FLKkpfTkwtPTpTRzdGCk1JJiQ4MEA0 JCdOQTEvPzAxPyFTXFQ1WUopYFJUODVdXV4qTC4yXzBBJCUuUEg5MzpRTTFWIklVQERfUSQKTVIz Nz0zP1w8I1RGTlwpUCg+RyJDOVk1OEpWXCJQTkwpQ0gpYFIwN1cpQ0Y3IkdfKSpeNE9aODo4Uick WApNKikhRylMMiFBQ0JIQUhCWipCQyRIUi9RJ0NYLEAsLUc1OlhTOlknLUJPYFUtTl4wXUwhMCIt YCdIVCMrCk1aRVlaMS0iJC5GTFBKTWBfSFFeWD1QQyM7OCNAWUUoVkBLSDItWU5eJCM/QE4/SVgx Wy86NzRPTTlXRUsKTUxTUDZBJ19FXUhHKSFLVVglYEBKIjskNyQ9TDIkN1tXUj1fRj48JEI+MFNX MjwhOktTKzYmW0EsOkNNKwpNRklPPkxLXClMLDEiRUstTTBRSUY8PCJOTSlOSTlWIiorNlZPTDFC Ui8lV1MtViJdQV0mTCwuLT1BPiNPCk02KDMhKlcmSlgwQkpaUEgqLigsIltKIkAwUkNEJEhJUiJG V044Ol9JJCQqJUZNXE0lLjw4OkwnOzdMTEkKTSkjTTFYMUAiTjlUPS9UMlVFWkIuVlA0WDZRUi45 VS8uRyMsViZFJz4pS1NRWUJWV1lHOyI3JFleNy1LMgpNNjokYEg7VFYsUEdPQTUiUTg7I1syTF1Q KyNcRFk+Pj0yVllPXUlJUUxQVjNBWlhBMF1XOTpcSzYtKjUlCk1ZSVcwRik5WEpaPFlUPzBTXC5Y Iz5NJCJgMzsqOSU/N01YV1dSS1UsJUtMUVhVPjxcTigvPz4iPztWTTgKTShCTVRYTV9EJC4/MC9d X0Y9SkpbMkghKS4nO0gvV1UrIUYpPlRHYFsvRVtHViRDMCRUKVwxLlUjLyxgPwpNMFtYXk48Uk5c SiszITdPUlU/TjMqJ0ldQCI7ODJAQy1JU2A8K1BMI00sJ0BCL1kwWU5VVD88J0AwOVlVCk1bM0lf VSw+R1AsVDFQI2BTOzxfXjg7OiVETy5eSVQmNUwxPFUxVFFOLVdCXSg5XFdZJ2BPO1dOLy47QDUK TUMrTUxHLF8hWicoN0YnJjsjMFlMSlg8L1cqJzpTQSZIQkc7Tl4iMDRcJzVTNVs8UCk1RmBGMzBL STBPPApNQ0MtI0E7NVcrT0o2S1taWzomS0U8T2BLKFUzLVsuKyRaVDQ/LidKSCxbJ0laOF9QRS1E PDAoTUcwPChNCk0tOl1ZV1I9I1ktXiNFIUVeLCw5XTVXNC8vKEgkJVdEUUZKWydWOytZXjw3SExY T1soWENbKFhCWz5QMlEKTSs1S08zWUxLT1JRXlVFUFQrPCgwKUQuUiwjSzNXTFlcSEpLVTAzNDVP VmA/RGAvNyFeRS8vPiw8V0gmPQpNVSFTJjE2UVI1LVEsJTcyJ0RDMz5WLUorVUtVSFcxVzE+SFwn SmA8Wz44IVpMI01GXEg6Ui9HQVZORStECk02WzdbLzIjWD1VJ1JeUykwKzstNU5CWVI+Rk9XKU5F YFotXSYqNCQ4QCdUVkpHVFZKS1QmVlJcLj1GSVEKTUAqMkIsTldcMz8pREosQjs3PElSWTgvWFgv LT5bO0pSVlpeMl1NSU9LX1dWWls/XV5KVSldQk1TIz06KgpNNU1bIV8lSC8zQ0ZbKklDJSQiX1lX TU9GRkVDXDs6UjApOVNdKEcyT0FPPUo+K1woVzpFJTosNDItLiFQCk1LLVs3TE81KUZbSylVRE82 QztXUlBVVE9gQV48IU1KTyMvPEo6Ol4yXUJPIy9cSypMLTZNTz5DLU4+QV0KTVA0XSQ5O0oqPDlT MyRQLDkiXDlPMTJWVkhRM1dCWypdIU1RS1AvVkJbJCRNUkM5MSIrO1g7VjRNJV49KgpNMS1SJkdE UTY9W1VKPlQjKjo7XT5WVk5LTzs7OktdP1ZaWzYtVVZNOzRKLDsrXy1WNDlMOi5PLmBaTFNFCk1B XURMNlk3WUomV01WODtOVyJfS11ISVJLUkNXUltLXUxKWz1gLSFAOFFPS0tRVi5cJ1I4KkJdND8r XioKTVciTydPNys8S1IrXyQqTygzVkwxXjhHSDtCUS9RVV9HKTxXQCpJOjxYIkY5IzZfMzssSjhJ Ni1cJGBXVQpNJE5NTSxgPDYrLEtGIldAMSUtMlAoSS80PUw2TUJGSShHTlQ4VV1YNltDTj8lMV0u XFBQSys2Qi1OSUgvCk1IKEFIN0cmUkdONiYyMlpKTkU/MVhFIkMtTFghPExDLStBT1M9UEwmV0pb LUEqOipVLD5YRlUxTTQ5N1oKTVZGQTJZUVo1WjdVLDM6VCtZMTo4RkojPUVOOkYvMT9TOEpdS11L SUZCW0omP1NPNyVNUz1aSUhGXytXNwpNLTdNPVxQPzItNihCWmBFOj9YOUIiUVBERDMjQ1BCKls3 OjYrSylSTTVULV4+LCI/UlsyXUcrXk05IUM9Ck1ZX0JdNVNXJVpNT1lBJWAuUjRWNkkxLEFVVyNT MklAImAiVSFHXkQ1PiNHO0g5XyxSXFs5RjtLLCE2VjsKTVVcVlkkVCU0RTsvTkQoKUZSQyMvUDk0 RSYpUV8mQkMwL1QnKFNRMDQiT1I/NzRXN1dTWipHVzFYVF43LQpNPCQlWzJdVDFfVTI3PikzOT5X SU5BV1soQzpTSEAhI1RcRDNILiMnKFFOVTFBO04mKVo8TCJBK0Q/VklSCk1AWiI5PTpcPSQ1K0s9 SignKyZHVi44UD87QFtDM1VIODpBLERbUEYxViVARkZLYF4+PCRIIS4mIi0rKlcKTUk/OlZVIV0y PyMiKSg4UkkjNlBJKUJMREYkXTg5J0FMSjc5JFItWjZWTU0yPlVNSi1WUEk4NFFNO0RMUQpNUj1B W1goKFElI0ZHMSoqWTA6Kl4pWS5cJi8sRlRfRCQhLCEpIyhXWE1SMEJfYFVRMDBdMCdfMkA+VWA1 Ck1JXThIJyZRO1Q2YFtbPyIuIi4qUVk3JDs/TlQ/X1k6Xl9LXV9fX0hbKjguQ0BZITpdNjcvJVYl IipESV0KTSgpMiojTDc6V0ZbYE81Ki1WMkZEKVsnJChVMUM3L0JBPzlURVU0KzIyPFo0T2AnMTcm PEBBKEUrOVU7OApNREI2VFxVSUcjPFtEKlFXXlE+JzBFVSsmRlgnO0tVQyQlP1FOKVVDTyZdTCIn K0VQUiMoRj4tNlsvUy8yCk1fWlcsUUUxKjkrTEJEJC0wKykyRU07TDdYPlc5VkE6KVpYMi1XTicu STg1RUM8IzNBW1FfPjxeUiJAVTsKTTk4NUoySlBPREkvQzlYL0RcUl83Ul8rK1o3UFRHJ1hJK09D WVxOS1FYWi9XKVVdPkRCJ1g8S0Y6SUwvSQpNVT9TKV0+PykyM2BaSDhcKU5IJDlIXGAvNFEiUUVN JFtWOVQvMEpBOVteTyhNOCUnTCw2PE05Q1BYSkdGCk1QTiU1I1dXK0ExVTg3XCVLLVhTNUQiKlgk OSVLXVEhTC86T0I6SEQiM083OF0+QUVaO1JOWk02SzkpRC0KTVJdJFUnSkVLIT82Si0wN09CQDpH Tl0tJ1ZgSSYmVU4xUU05Jk5IOVghQEkoOT5MSVgkOEs/WlNQX1UxUgpNKDcoPlItNlxHUVo/LUU3 QyNZXlNDOk5JWj1fI1hPIkgmKSxeTCIqTTNVM0xOTjQvKCUuW0dSJUtIVV09Ck0hRD06QUYuIT9H NzleUSg2TF1DOl9cVUs8MipYTV4lQFs2XVkrUD5DNUFNWCNVSyVGVUk/WFZQQk81MUoKTTEhIi86 L1xCMj1dRFtdRy9GRTQnTkJKX1k0SCFISy4vXDokMmBQUE01NUleJ1JAITlHUUddPTdURTApJQpN P05RKEI9ITNTNTBEN1A0TT1aMjQ1KTVJVFRKOkVFI05FJCNQQS40SS5BJiFfISVAR1VQLkVVRScy K09BCk1eL1YwJzYpNUg9NSdcTjk9XVYhLzVVMSI5JV9EOURNKCNENElXRF09NE1GKFUlSF9bWjc5 N0lLTUFDMksKTUtCUS1LQDxPXSJILiw/SjZOR0RRUzhPLCsnSlBcM0pCVUtLISpUPiwxSUpaTy9J Oy5bJUI9SjhJP0gtWwpNViU6IVkmRlRMVSlVVEtPTilIJDdINDtYOyZVWyk0MlcmRzVXR0dKW0xc VUIuYCpVNihJOTNKLS1JTUsqCk1IOTssVTtTNCFcMltNOkwsPyxFPzZPJ05bKCFIQU81SiZIJVtY N1c3JlJJVykpVFZXVTM5R0syX1xYLUEKTS5SWj4/JTYkVDxPLTFFPVxPMUQ2WF9HTFpdJEg2UlhJ UDk0KF5YTFAzVDVQKEZFW0Y1WUctLDMoS0IpWwpNVy0uNUomPjFCUE9YQkQ6XSU9MSYvQ1ozRlUz UFxYQCxUSUFcWzleSUFXLCpCJlxVTDE/RkE3RkxVOVxFCk1XJV04Oj9GLiU/XyU/XzRZQT0iMVMz USpeRVZaIkUjIU8rMSEjSTQ7VzU6SCUqOCcqQEZJN09RJFRXRk0KTV9FXFY/Lz1DLjxbKk8rQkox Ni5XTkFBRUFQL04+I0M4VUlcUypDVVc0LllRNSkySjkwMi8oMz9SQjQ8NQpNPkkyQTRZWCk1P01N NC5MWCgpQ0YwNCVMLTRLPyg9WVZATzMjUz1RUUMrWDJcOEhXUyQjJ1kkQ1JBQSJKCk1cOChgRl88 TTw6LSdeJ00lUTgvRjdNLVg8T0w4ODAsJTY2W0NeTTVWRShNVE0yRDU7Ky1RUTdOLyE4XjkKTT4k UlteMjlAOTRITy47RjZcVyo1QzZMRDVYRThbXlEkPi04Xk44SyUyXTVHIltDJTwuIiQnPStTUy47 IQpNYEY4NzQ8TiM/Q0ozMTUwQEVgSlIkTU9JTVgyNzkmRUgnQVYqQkZaRitdTCpeR0AwOF1BQFg5 ST5QWyghCk1cW08mOSdVRUxGT1NJYDclPDNdOTYpSkhCVFxEKDxMLjNWRD1bLEMrWmBRQT02OFZf Ni9RQ0xcQkhBVycKTSstSlFTJT83LFFLUi4kQS4yLFZHK1opSitFPjQ8NzJVP0QwTTVGLFUmR1Uu MksuRjNGSTUuQ0ZAPys5PApNIyxGIkRKIWBZYDM9RkEyQlslU1E4P0stXTshXCJRQFM/PEw4JEtb WT5ESjpPLmA7PCpQWF5XRFk3LjhDCk1UOy1TIjQ7NSVJNS4zV0ZVLV1GIlwvJS8qNiYrJj4nRSox VT41SjcjLVA0VzFEUl1DJDFLRj9eK1NaX0YKTT86JDknIkQ4VEk9LklVLExZRE1CJ10kNy0iOj8l LklWT1kxLyMmKlcyW1ozOT82N1I9LVZeTFJFV0M4WwpNMyNNVTFGPSkiXUFOJFRcUiZAMl1VMDxC JiE+RF0rUDw3RjRfLFBgPS4iIylYXDA8JD9VIi08TCdaNE9HCk1dMl1HNyVaVFA6TE5AJlwrO0Jc Kz88X0AnOEpHLkxRKTswNl5KNTJOMVpOLkAkTSRaNjVWVTRPVDhVOiwKTUk9O0RgJkEuWSImWkUs VUk7K1g1N1w+X1osIScrSSkpJlVQXyQuQFxSXyowLzssJi5FVUgxLEg1IVFCVwpNM089KV5DV1ks NidJQStFOEAuMkBHNUEvP05YPydfXkJYUjc1XiIzXDQuRlFfSjBSMCUuVC9DLzBITj9FCk0pMi0w SCcxLjZFLDVYL0o7MDE2LiE4J1FeLyRPIjNMNDEuIj8mNDZIUEspPj9NMj0oOFFYMi4sKlYuKT4K TUIpKTFGMSVeRCI9KEFVVT1FOUwnSyhOR0lSKzE8R0VUUDJEVSdKWiYnMTonMDciQl9eMkBJQlBX UzhKSwpNVTM0XC0sT0E/QmA9LlgiVmA1Ly05Vj5GSz9eO1ExKiItOkQrRFA9PEYrQjAiNjZWPl46 TVNROjQ4MSJDCk0oNSU/Xj5KIyMwMyUlLC42X0tGXEI6XUZMK0g+LkJbODBNQyJWVDkyX0FUKjRN REpUJT0+MVlbJFAvX0gKTVs/JyJNTTdMT1RPIj0uXFBKITNDUVhcXVMsV18kITo3XiVCT1hgUEUp KFJHR1lQSFBWKl5OTFtQWjQoIQpNL0RbWl1KM0E/XUM0JDwiTCI1MUkoKi1TQ0MzTihCVCpDQyxC QD4+TDE6UCxIWCtgUTA8IlwhT1k6OTsyCk1IWllfRDE3PFojS0kvJ0dSSS5OKEsiSkQ1TT9FXy44 LGAySjg0OEc1Q1pUSjAnYERMSVtaRF4iV0tPU1AKTSxTW1xGUjhSWS8lUUQ9VzBEI046MVYxJCkt QVI9OlheN1cxYFghRSdCTERDSi5SVkhUSENVMF0lV001YApNJ1BRXjhDMT4/JEEnOSIyNidGVkRO WDhRRThdM0pfQzRSWjcoRSokXUAyOiRDPjsvTyxATzg8RTwpOE87Ck1GMFowV1QvPDtCXSQoKy0j JUJRWlZGMDooOVMuTjQ9MjdJUV84O01dMDU6S1BWQUEtQk0sJ0MsWTMuYCMKTTY9UjBZJDFAWSU8 JVNHQCxcYEAsM1hDQVBOUUYsKUwkQSMiOkRMUDhCUTUhX0BJUzVTTlw1Nj9RYCxNVgpNVyw0RTkw V1JCUF8sOjQoSTFdIT0zLT00IklgL0chNCgzWyM+Nyk3I1JYWURIQVpPXk4wSjZaNSNeSEsqCk00 TCk7QixTJSJXKi5XMFY6LiMvKUhANForMUQtQSw+IzxXXC8zLDc9WiFAUlYjVSNNUldGMl8tJTQ0 RGAKTVExRkNaVlNUS0wtQDUhTTxKTTlEL0FVVzEsLlROOVo2MlNVKzEjVEQoS0tdTV4xVz80WUtH XWBbUjotWgpNXzZCUzhELkIsPSckVUlTJUBeQ1MxSVRUJSJFNzhPM1MjSFlWPzdMRjJgJU4mJlJN RlpBJzNVVkVPISRBCk1DJDBOPEImQ1deIUtGMEIqOiFPXT9AP180MVdSIi1OT1BDOFErJU1BRFdg LygrMTIwIlhXWistMDVIP0QKTS9GKC0kVixQN1FZPTYkOCk3KUtIKjtKOjw8PjhRUmBCWlRSL0I2 LmBAUTcpRkkmKFk8UTkjSEchWztgVgpNRDg2NiwiXC8qPylNRkkxVEhbRy5IJydbXVQiQisqUU1F Vj5ZUjlVVFMkJiRARCNMTUVATl8wW1AlJSlPCk00IzxZTStSWVJEMV8sW1EpK1NeTExCNkcvIi9J RFckRkFCJ0tFJUU+RCdGVSgqM0MyVz5aUiNWXFolYDIKTTxCLjZQJlc1L0pdLTMrS1gmK1krUj89 UVFcX05DJyVIWmAkSUVYVEFMWS9XKyxFSVVDR04pPzNfLTc1QApNNzdLXys2Vig1S1svX0FaOC5g Pk00OiswXkxaO0A5Xj1CLERDNjhJLzwvSkBZUzdHNCQsMTkzPlJgSkNdCk02IzMkRylINCFRLGBU LVtFQi04NFRZOFtOTkZOWDYuVCdGU1g+R1kjKiMiWi1BTF4kTzVVTlEmPEQvU14KTS5eUykxMipH M0NWKSYpKiVYOzZfOi1HVVY9Si4pTjcoKUg6TDk8PyZbOEkoME88WEcyUj8pUDxOKj1OQApNITdP XEpIXyE8QVtIQDAkVTwoKl5fYEFPS0VgKygzV0JeLFMsMUZKSiY6T19DSUwlVyY6SiYpOFlFIkFT Ck1CQUAvLTInSUdcJUYhTDVHXF89OVFTTTNWL0QuL1I2NU1cODY6JzAuVC1CVyNCW1NIJT0nPCJE SElZVFoKTVhJTydNVy4vUEsrLEVFR1lXSTIyWSFXRltSLk9SPVNHOERdK2AiODwqRTQoWSQ8Nlcu NiJFKyQxJzc5RQpNJ1I9TEZJNEVYPSMvPzI0X1tTSkE4XypPTUBCUlMzJzhJXSVUN0YzMiRKLkgn IUdCT1ZVI0sjVTZCYFpBCk1ILUYoJz5OWFZFQjBeTVhQJUpJRiQhX1tZOSwoOCc4SS9UIzRXTjg7 KERPPC1WQ1MpPCghW0M6QydDQiYKTUYyNzZgLFo+WDA1UiNUNCJDQCcnSSReKUdJLlU1VVgoJTk3 M0hWUzxNQFBOIjVROGBYRFdAIj0+PClANQpNWkBARUxNJEY2U0hQPjRCO0xeQEJXXz09QUo8MT08 PFVIXTdOU01HYFspLkYiUUFFUjdgOTJbVCowR0hCCk1SVyNaMFRYW1IyUDQ8WUg9KSpJTU9FMEQp OUM8RFgwJixFPk0+UlgyJCkmJlI1UlxJIi1TI1YyNCRfVTMKTT85MUE7RkclMEBMJDYtJyVGPVgv SE4qKyE4VSw6M1NCKlcwRVFKQ1UxKlclQyw0Nk1SSUUrYDc9OE5UKApNOCVXVjE2XyIrKFMoJDw6 RD1BQikrLjBRIjwxNzkwVkhTNl5VN1stSDxUNTRNP003TjorRl5AUUUvRyxVCk1ZKUAiMDRNPTQ+ YFFLXUkzJyZWKD9FRCwlXC5OMzFdS05JTS9ISFQtSyY2XVI2P1QwMiNFTVkrXTZXXVYKTUItL1ZN Xy9gQjM0VTJRTylMLlI2J0RBKkVdL1kwQExSTTlKRjcxITFYW145PzFOMCY0XEc5RyteKk5EXwpN M19ZJF9XLypDYE1WL0s2XDNUXCE4NSVKT1dEPVFSO0tgUUU6JCkkOE1FPy0kQVhbJTclNDg1WCU4 Ml8xCk1gTj4pTDxfLTJQXDciV1pYTzYjSz5LRTRVQVArNUVEJWBcJyRJYDRFKlg/LDQiVlpLMlko Sk9XPE07Ul4KTU02LTtGPzUoSTdZJyFOMjBfTj9dN0AoPyFZOitfIVY2VyxITDA6SyRBK0U6LUFD PV1XWydATF8+IzghYApNRDo8LFYkISg/I0Y6YEtOQFY9OVI8YEQiUCNCQU1ULiM5SVg9UDg/LSpD L1BJNiZWQVxYKFQ5SlNQXzZUCk01MzsnPEYjIiZONyhHJT5TNixdXzNeJzhOIl8lLDMjSiJYQENV TkpZQyYnIlEpJTlQS01MLUVSPURQR08KTTw5X1Y2Lyw+IiE9Ni9FOTZOQj9IVSktWC4iJUpbIlU8 JElBUTg4O08xQGAkRFw2Pis2IjdYRFkjN1ZJTQpNL1FVUEEjRFM2WllIUl8tLC89J15AYCIjTDJV YGBQTjBZPCMmSThOUVs9X0ctSS8+VEY9RCtXUkkzPjNYCk0oMCQkT00wRj1BNz0lIS1PQTRKQ01b VjFNJClgXz4uKFFYSCotNU5ZRFZCTUEwU1VTS01PIkA0TFclR0wKTSRPQk1gNUswPTw7OS5FVVpd XFMoOFFcXyorXiJYNitAUFo0VDNdM0AmRktJUDBZSDciMjM5XCNZMixbUgpNSEAvJzcmW2BcKEI5 RzFLQVoiYEA7UCMwQFFJTz9VMjA/Xz0vU0xZQjFQOC4hIihdJC1JJytLN05FTkNVCk1KJlgkIy1c OU81RFlGPldRTDwvI1RWTFswTSFfVE0sPjI7SCpPWzs8LyImN0hVND89U0EqYCtKX0whMFgKTUxS RjRHNSQ5Ty0oLFAlTCUsNkJEU1xgIyFaI1MpXi8zJFYvRE43X0o+T0ckVktbQTE9NVJGQSo1VFU7 TgpNKE9JKkVAYDVZPS0xLi1QN0RaQzlRM0tSUCFEQiwrUihMLSIjJlY6I09GXSQ8PVBaLy9eVVBX R1dTUERNCk1LRSsiMlZZU0gxJEdQSExeT0c6VkVJT11YJ0kzSzc/VUxJSDRbJCI1UCwiMzEwTT9a OShFQTssMkNKX0sKTTYyLkstNl8iJVtVQkcyMjYsJjhYMzBIIyVdYCMqPzoqNVxgUU83PzsiTEs7 Pk1II1tKSC8xJV07WUc2NwpNUlJCI0M4IjdAVDlTNylDW1tJMUo6V0pDODVILkJaTiw+Q0s8NE5a JkUzJSY1RkVJSDwtLVosKVJTLEhSCk0iQTJWMFsnTE43JTtPMDNYNVgmYCotMlhNSSxOUCNgLzpI XTteQS8rRi5IOCYyU15VV1spSFgkXTBEIkYKTTUqJ1k1Xy4pJzQpLCpYRUQtTkYsO0w/OEIlVzBX NC5QSygiREAxVUUoOT9MRjc+MDs0SiErSyNPOUA/RApNKlFYLDMxWyRFLyxXPEMtQlovKVY7TyIm OSFGUys/IjYtMj4+NThMLzgyWkMjKyZMNyIkQyxVSU0mLVcyCk1KP0kqU0IzXlQ2WiEzQVxMJSgs P1lZPWBWYEooIkZZQz88IS5HLVw6NFlEJUJJQVNFNVdOV0EkTS8xODAKTVU+SkosJS46JkkvViVO YE03QTtKVTAsMVQ2UThYNEYpIikkPE42TUU7Qi8zT2BUJSgpQDZaPlleJS1SLgpNQzY0KEsiUF0i L1RKYDQsK1BfLlAiQlNKMVRRSDQkVFBBI0NXOCZYJFJcMCksRU4oJjEwSj5SW1MlVSIwCk07TWBB TiNBREE8SlpHNjY/TEZWUSQrRDc2R2BLUzxcVkcrN0hXTEtYXSUwWFg2M1w8WSdUVy4jPi5HUFYK TUdBTiM7JDgvUWBGOSJBRUNcMDY4LVI7R1QjXjVNKDo0LkNIQlVAUzxUKyU4WywnKUlXKitgRElP Sl4sXApNWSJISlA0KV01UCM8PEssM0IzUlddMVNYSiErOyw0VEIyTyhBLyRNLCpgWS85O19KVTwv L08uOE83I0s5Ck0/KDNKSlg/LyY+OiVZSlYoKClfXiRgOiY4V0w0LyUyPSpTJzddIyE4KDozMzMr NCM9YFQ4OCNKXi0xMC8KTStDSF5CMyZHVjhFOiZfK1okM0FMUmBNXDgmRlFIWi00J0ktIUk4Jzoi KzIkPkg1MkI+YDk/MjA5XGBUWwpNPT4jRCRTKjgxXlhAXi82LzszPVklIWBNMUwzNzlaXF4qMTQk ISRUUTtZT1MvLExANlwzPF5GMixOW1IpCk04MEpGKzYxUE8jT1pHXVAqUVFSXjFNOSRVNCIpJDBK L1M2PC01L0JHLVFBLEArPF9FMVpgJChePUdVUUgKTT5ePkdRMUJVSS8uRylJQEEsXVcvLEYnK18h KjQmOFExPCstX11RREQrVTpVUVVQTkk8LSIoQSEnVVkpIwpNOlFaKFlXKlYrJSlVUEA7P0skQF1Z Vks8OURPWkgqKio8R1ZANlZYTE4lNUAnISpLV0kvSDpQWE82L1BeCk1bMztKTUwhViw2QldcO1I2 QyZHOTwwIy1fU1FbOTpEUEdELjZVLlpPJz42Tis8OUlXQzRXXUpPOEw+X0cKTTFQUz5AITY/IVAi IiRNJDxHRmBMK0ItMjQ/X1JXKkBWQV81RD4mR1RZIkBXRlFXNV1WKys2OidHRCpQWwpNOiMqOVJK Szk9LV8zUjMnUi1NJyZEOi5BWF4uLEw/MjI0VSMzRV5XSidKQjtBYC9KWEMxQVddVlA3P0klCk1V JDgiOjhNSiNcW040I1hSU1JTV1JZMmAyLUY2V01STk5FM0lEMDdfQjI/KT8uKDEuUyknVUI0QllI RyUKTStdMlgqYCs1PysoTy5HQmBJSU5XRi1eLF5CKEVSIiw+PUE6SEonWUFIVENQIk5BJkhXNVpM QUEmOyxMUQpNWVZCUSpRWTQkKSIsMTEyQSdCKjVPRkQzLDhgQDMoUz9gPCM+X0YrPDkyKCZEOVoh P19KUlQ9VFAzWk0vCk1TSyxPVj4xRjcuXSZGNyRaJkUkIlQ1S0IzSUUhUzZKUCo1RzpAQ0dYUk8/ XVkiIls3NjYkVzNfX1lHLyIKTSUuI1YnKlFITDlbUTpVLl9fNkZdNitgJFwhVEI0WStTWSY3Uilf KlNHWVI/NFInM0k/Xl5bIjpHUUtOKwpNIl8qLkE7WjNeTS9ZQzpDP01eT1dEP0ldTl9ZUE5LQD5M T0gjTl9YYEozXlBaWF9TSldTJVpJXzhdNF4wCk1eQj1WXzVMLVgqRC1YIkQiWCpELUAlXCMxLkxf TF5MXzBeSF9MXkxPUktTQFszXldaU10nWkNeV1pVXjUKTVBcNFVKX18iS09cIko/XyJLR1xZJzE7 TzYvVjc9T1Y3Mi9WNz1PVTFMMkpHSy9ZNz1PVk9EL0k/Lj9WRwpNJVZdUSFHKFhMKF5ROC1fQVA+ JjQsIzAnWDMoQVJINjojMFxeR0knOVxOKTlZPDEqPjhLJzklVzBELDFMCk1HIlJPWV42Klo7OSNc SFY2M1JfL1stKUkyQEo8IyUpMDojNUc8UjpOKilOPiUsLk9PKikhODRBMVI5PjwKTSYhV1JIKy9e Rz1FJVopUCslTiZDJkJTIilUWlAiITwuUDIqPD84LSVeYFApJVYlLCUiUyJZVkZQIik+JQpNUDIq Vz4qXC9TJSlcM0tGJUMmKiIjVUBRWUlHUlAxLTxYIkVYOCM8XjcoW1JXJT84YCFMTDoxOS4oMSg+ Ck1aSjJQMVtgLDQ1UDFGSE5DKDFAWFk8UydDJCJGRDUtT0paRUBaJ0k1JigvN0pcKiZPRVg1MUhd WjU9QiQKTUolPiUzOSI6NT5CJEo1PiUzOiFaNTFDK1UqTVImVC1FTlEqOztVNVVLJUoiNjQ2TTEq MFBFQzdJM15eJApNMy41TEIqUSxeI15EOCNbJldEYChLNDVORkNaLzIwNUUmSUVUPTAiTytEUDI4 I0QiJTorJFBBRT5BLFJYCk08ISRWKi4kQjshKiZCUyFWIiE9QSxSOTxBYFVVTmBCOzEhNSVaKjAp JVYmNCMxPUFHISxOPEVPOTpcJl0KTVgyKVYyWFMxSkU8U1NBKyhPPlsyXS44SERYQFVdPC1aVU4u Xz9LSy4pXFJUSFRPJF46MENSXSdENUJeWwpNN1lJKS80VEBXUF43UyJDXV1fJjomRkg8JSsnOTZg Vj46KU5MIy49SyhPP0YxOzhcSlwrJ0E+WCM9PFhLCk0nLz1ATD1dJFxIRyRMQCVZLVhEIU1WOFYv KlVaRUdRTENgVCZXOFw5M1JFJS9VPFZKKD5DI0JFLFtVOigKTWAtPyNaNDAwMDtNRycsUFkhRjM8 OjZYS1ROW189Q0tfOUNeWiVRPD1eOyUrMzcvOE04Q0Y2NEUxXCE3OwpNLkU4KC8+KC1UJVM2UU9O KyJcJTNISCFQK1sxIlI6QUFFJCJWLEk5LSw1I0RcMVpXPitOWCQtWFFFPUdQCk1TJT8yPT4qKkpO XlNEOkMnR1tHJCIxX1FEYFlARzo6Ky8wTilKX1FYSy4sPFdKLU5cIlk4J1QiTiIlSCQKTVIrNTxC UCJZNyZcMSgtPEUrMCtEWUQmK2ArRSI7Jy40RjJZTyQ+IU1aUkFSLFpRJUAtUTBWQTBAP1w3PgpN MiEuQzU5YDVTJ0JASSg7UE4wU1krPjNBQURgLUhfYCVfLCpOKStAUFQzOCtCIS1JJVMmQlJEI1Jg X1VcCk0hSSY/Q1svMV5VNChfNl9JPzBGJUwzR1ZeTTlZXTEsXTkmTFZSNCdDXz4zPzYkX1k+O1k+ LEtORFJDN0MKTVcwSzQkOVUnSlZWRSFYSUw/SjEkRDI7XUQ1NiNXMEosLE5SIk4vX1IlOUVESlMo O1NCWzckWTRUMz5QJwpNNzIyUEFdMyU8OTZNMEhQK1g/XEhcTkZdMk44VSZFQkxAUFU8WiopLCZN OEk6VyFUVSNSODNWRDFTVUJSCk07XCdJKVhKYCI1QilLKyIkNiQ1RCFKW1I2OzdUViZCMDYwTFUx S0VRYF1BJDo5Njs2JCw1Wy0xLiJcQWAKTVM4Qy1eRiZbKFw2O1YuSiRZJFU0VEkiSjpSOFhaOVsq OSNBPTlAWjBSTEQ6I1A2Qz1LOTwjSl5SOTJXJQpNKkJPNSswXzpNUTgjIVdTRU41QT8zTy8xKjBd VkQpTzw9I0UjXFVBP1M8TC8sQFxWS1NMQTpQJlE5LjBPCk1cQyVcMktcRUooRyhCNEUpNFE0QSdb IkxHQTJMUy48SSpfKS0mXzkpOU5dPCtbLjRIPSEhKyolSFIsSUIKTTJZK0tYMSglUilWKyc2RC82 PE1DMjlORChgLk1MVlNDOTgyYEksNU5DX08nWDsoTCFIIjUnKDErNEE5OwpNIzxML08vIzM8JiZC NSsoUidfJlIrXC1FSjlRQCEwRko4MFAkQlsnIkBYSyI5IlUrJzA+MiVLXitHT1pOCk1eXyZbXEZN JF8sRC5fPFsxXzVUQVRZN0xSQFU/XUkuLzowPi4qNVsiOGAkOls0Kk8uKz5LOTs8KyxGJ1IKTUU1 TjE6RFg2VVswOklZM1k5KFQwPSNMK0EqUztUWjJDLj4hNz02IiFVWDQ3NC01NCIzPyRSVSokKVBA WQpNX15WQU5gJixPOSRJSEVbJVQzWC46PyRQRkxcTlxcKFdKRj1KN00sKCVPOjNgTlIoTiMvMUgp KDQiRSRPCk1JT1BVVi0jMDEnJyE/ITgpQUU3WjM0OTo/PTghOixAOi0mSy0yWVVPRiw0PSY/Tjcw LCRINl5JVE8xJTgKTUdAYEwrLlJUKUhCISdANEg0XCNQN0RXR0VcLElLQDQsIjAyWUM6RkI/IjEm OVUnRltQRlVBLklDIk5KMApNSTdPQkZASiJEQV1fMkA0KFtXPi4lWDooXSozUlY5QDNVPFFDKkoj O0QkQSlRUy4rYDYkOjJQKDgvYF0oCk0pSFo5LzhcJDMsJj0sLyhOK18pNS9JUlJYIzMhPyNQTjQn Nl0iXEBILjRfITZURFhRO1I8LDMiUlBRXzgKTUdDN01URD8kJiImPUlIQiY7IStOVENRRzczX0w6 Pj5IPicvIVhDQSlIMTI4KiU5PVNHRlArR15DWl8pRwpNLjtKJiEyLT1KKVgvSVo+Qlc4PUhYTUIz MDlYVDkhPSE5JjU2QyMpUVhgOjBGJFQ2U0hHUCZSPEFeUkInCk1HRkRUNDhAO1NNXkclIk5ZSSkp MkYrWidbWVFJPydJKjtWKDE1Ii8sLkRaJTA/J1MrVzdKNC0rNUpCJi0KTUUlSjVBKFUySlBaVTlO SUEpTlI+TiRKQCtBTFgoKFRIYCpCUk0lI1gvQVYuUVlIMU0lODdcTidROFktLwpNSSUhYGApNDlP MU8vI1RNUEsrSz8yXChcLksoMkRcI1M6PlhVKz4tTEZBJEMkVjlFSVdfLkkyT05HMk9WCk1VMkQ/ QDcqMElQP0hbVD9QTkklTChKLUtMNytCMERRXi0kPTs4UiRgWkBOPzc1OTFOP0E0NFBDSjZXNl8K TWBRLC1LWSsvI1NfR0gvXy0wPU46UCFQPUVHODEsYDdMUkonJi86K1IhW05KQVIlI0gqIzBcTCsh YC4yRApNIyknUUItMUM1N0lcJTdMOCpVKU0xRFo0WCYvSkxALiw4P0kjVz1fQEhPKiglWjU4XSUx US02JUAlUUMyCk09K004MkNCWFFMI1ojIkswO0wwN0VbKE1PSDgwOy8kNUolMktAOWAwOjVALVI1 VlJFRk1GPCVXM1w8UFoKTU0wODI5REJCXiwpPkxBUSgoNiw5MTdSPj1IMj1SJy0/PCouL1dQTUhS NEs2JE0pLj4rRSMmUz86WC1ePwpNQiM9WDJdW0NCSCI5OFtgUDVXPiY4LTg4VDBNI04kMFlNKSNL UD4sKV8hNl81QyRYJF1gSjRMISklUU02Ck0xTExZPGBBJT1NLTlCIVsoOjJGS05RS0kzIVJFMEhQ W1ExL1UjJC9NXlVKNFxRNFExOy9RSjZOUDxbSDgKTURJWVo1QVIhRzk+S105Izs9T19GPTtLVFRH TzNCRi5KYCM3QkcoR0c0PlpINy85STteR1FgXyo2XzdbRApNQCskN18qSjg7VVdgWkZVYF0xQCFX XEA6S1AkWFZBQS9OLCIwWlFeRj8uQlVVW11dLyMtTD0kWTRGT1tXCk08SUohQDxaKzw3OUtLNFdF VVlfMlpfU0peSDhgKipMJikxXktAPE8nUUNMR0BgP01OJE0oI1FFWTIqPVcKTSdRTmA1IjNUJCUh YGBAUTkoXkBTR1JfSyckOEJROUdPN0FcOy5HRTFKWSg1KFxIT1tKYFRILj4mQiVARQpNMT9cWjZU VkZQWkxFJTU8XzQwMzNCN0BDREgnVVNcX1tTXDVIUiRVXjYvJWAjXk5DQ0BGMldRWUxPO0tECk1M RSY+WjgtPy5fIT4qKyoqT1YiNyIiPi8kTjNdST8pJzUyI1VeVzowXkdUQ0kvWVcuVENdW1Y6ND5G NUIKTV0yQCorNzsrLS9XT1tfMTs3JE4vLUZPSTQ3UStfW005Ml9cO1ddKl9XMiQtQy1eX1QwJTQt SCY+R1NcMgpNJjM2O0NTLF0vXj9CMzw3XEUhNz1eOkVgOkUqYDVQQzdSOl47U1RcJEo9XldAVTIt XjhEQF07XzswOksmCk1fLDBIXTxLJFpFJDQ2STdTJFYuNFM1S1JTNF4sVClOVVkpTj8yJE9fPUg8 VCwnWzFcWS9cQ11WLUgqOUcKTVNFXTRTJFkxUzlWPCRJWEZAV1ojLClTWE4vRyw9ISdaPzBMKFU5 QjUrRCtfTlA2JDpMUShBJCpPIyhQPgpNUTohNC4xVDFTTUJEJj1dPDEsQlsyMy5eQj5AVlxWXUcl L1VDJUlKJTwhK15FJjdPUUdGSSlaJVhYNFEiCk1NPkozNU8qIU0xJyRFUTRCYEI2P0tMTEwuMTU/ JFdIP10mKjVTUE9ASkNgSzZCT00xLChQTzQwKTNcTkUKTVxHW2BFMzk7Ol8sWj5LNC0iSCVEKThH OFJbXlknSlhaUUdYTkpSS0kqNzhaSS5fLzYrRCsmQykvITRfWgpNMCVUPEBWPiw2K0gtIj4xRzc0 UFpcM18qMTojPGAzLi0oK0Y2UC84SVkzPlZZKSspYF4xKz5BNFA3OE8wCk1XVlJDNEE3SihPTC8i TTBYJlg2YEQsXyFaSS9cLUFOJ2ArYCIwMSM3VjZUKGAvRDxLKVpTLi1PQS1gMSMKTUVARCJGRjtM UCk4NyIvVD4hI2A/IT5OM1NcJ0o5N1lVJzAzYCJAMSErJD1ZNUpTUjIxWDw0VVRKIy5RWgpNP0Qs Rz8hIjQqJSwpOiMnL0JWI0c1KiQoNCxNSjAsTFBGJz9ZWEI4LEE5NChgRUQ3XjhLLFsxYDQ0MjAs Ck1BSVhCJiU3MDYxNCpAQUouX1tFPktCOVktQFUuMjVgTCIoWC47IjRQNTJATClKO1M4MzVCTkUw NyU5KTIKTWBQSiMkME8iJCI0TkFeLStFTUUkTyQjMElANFBHIjYoOyNYKUBeYCUwQiJIN0BLIyQi NSIwKltGPFpMTwpNUVNBVUUpVE5FW0woNC9GKTdLNSlYVz5FXD5aUFImKiFYOjJLTFohKT9fNDVS SkJKXkY1PlwvQSgrUDEyCk0oQEBBK1QqVSpSSy9VWk0wOz8oWTYnVTVLSE0xImBgS0BgXjJNK042 XyVeRCY/JEVOPFJOWi1URF8kR0UKTTVEMitDTThFKi1ILyU+N0ZHMlBaWGA/VF5UXUteREI1Jzky XVNQSFMkMVBRNjk9RCo0Pz9SXFdPPyc6WQpNTUVbMUclQSQjKjJaT0szOzUlUzAvIVxHRzQtNkAl QlNUXkdFPC8yTkZXMFgmJjYtL0YpRzBJVl1DIypbCk1SST0kWVpOOicxLDBXPTxKPkMqJ2BHNy09 XlU9KCQlIyZNXy5LI1FCUjJXKjspME9CM0VbQUdSXFI8PksKTTpbJ0lIM1E6V1o/MkYtLFFDP1JA TDRgREc+OEpEWVpAQz9GLTE+TDRWOlRaIyJRWz9HSUo9WERUSU5aPwpNWCY9Qlk6WiNcOlssKU9K UEs9TUBRXV5gMzMtLyRETkdgXkdINE5aXEdcS049LUM7J0w+WjBUJisuVzBJCk1YKFg8RSFZJEYm O0leRFU6WThGVVo2X09FPkdAJV1ZOTcyXTdRWjdRQzMuWCQpIzVDWFsuOS1CKSkhTFIKTTMpKTJW JVg+Xzo4KzwnOERFLEc+QVs7VVFPRjJGIyg5SiQ+X1BAITlRRFNfO1VaLlMwL0tNIUEjOjclIwpN T0REJkYsWVkoJT5ON1dbJFVBREJFKSUpQFkyNkk6OzIyUSQmUFFJQyMkXV5JLC5SJydbWFYyU1xC VVVSCk1PKVstL0wiN0FbKl4iYCgyRyxEQDNPLTkrR0YzRVdYRFI3JSVaLDJLPTpSOT5cIlsxXz47 NmA8KSJaTVMKTVUzOTE2NiIoRi5ZSis2Skw4W1xNPEUuSCY7Tjg8R1o8JjxNOTdPITtgOUxfXzFM XjZMTSgnOTxJNV5gNApNKUQtLjVJX0RUWFE4Q1lSVVlGT1w/NVpAS1suUjUvL1shR1pZQDkiTCtR SjZdNCUjNFpNN1g7KjBISFsrCk0vNjs1Ujg0VUckPTwiRUtBOVRBPSszR1lJSUg5WFAiXlNJREVK PjZLRk0iXFAiTCkwJ1kxW0E9MiQ0MEMKTVgrQExMXTZELTUxXldQKE4vPUNeQyo5UDooQzxIVT8p T1NEJCMuXi46KFpZUSY4WjRUMVUlXTFcNlE9VgpNIVFAPFtEIVE8KyJAOmA0SzlJITBPUkIrOj40 PCJQN0o7VTs9TklQOD9FOVRNJlJgUSdDJ1RfPjNJVUBaCk02O0BRJlArTSc7PE44Rkg7OiktNzY0 Uk9ALyYySiY/NiZQSkFMQz0iRipFKEAuNic4RDFKS0pbSUg5RVwKTVdBJTFEPzBVMlgyW1NCUkFT N00lWzQxXyUoK0otQ1FLRCpXKCRUSFFIYC8kJUgwMyMnXytITFRdSVheOApNTU4ySkFeRStKNylO SztAS0tKKEhJPEAvRUgmJUUqJDc1RCldWUVaXCgvX15JJTNBU1szQitdUSJgSUouCk0tPkYsYC9X VlElK0VTQFBcWS5ATz1BP11BOCReXl8/PzRBPVYnKS48PTBdXi87IzRKT0pIRU0hXEQ6ISYKTTVL WUAzVFlMQzVFPEojSSEzVUE1PjU6NUs8U1YjKkFbWUQjJSlPK0UkSS1eVkoqVj87KiooLSpAXi5B SQpNTElDNzolMChXMTo6RT9aXVZBVlUnKCxVXkFHP0ktLy1JSFRKV1YuQztEKk85PFVeMUM6Kj1L MTFMXChZCk1WSyI/Ulo6XUMmQzBUXD86MzcrJzs/VC4wR11PRz9ZJS1OPVZLVSYjUkBdPE5YLlYh W0UmJ1ZMVFpHMlMKTTw7LyI9MVlIVE09MVBePT5KWV8xMztLPUsmWDQ7VTdOMy03T0laUzlgUVhB VVssP1dXXlpPNTY7SlZCRQpNLGArMVs7Lz1LPUgoTCVLVSw8ITEmJj5DVkBCMC5LIVk+U0xETk9P N1Y2V01NREY9NU1KPkNeSDNHTTJJCk1WUzs+Li1MQEtNVFxKUDQxLC86LlpGRCxNMVU6N1ZOSEpL NTE4MycwVTdbVyFDJzBYTygnR0k8JVcsRDAKTSVXIU1VJDJCSD5NPDkiLVM6XylAPVcuUVJEWTIr U1tIXUk6PTJXOCZHPzM2T0Q2JEczUEdbW1Y3KUVXKgpNVF5MPEUlLj9JNl5YUyhMLWA/Ii1IMjhU WClZI0pRN1ZBOy43PDpQOjshR1FSUElZV0I9UD5YR1pTTU5gCk01XE84MTEwXlFPNFMtJjxWUl8o QT9cMTUoXzg4S1I5X1ElNjszUjpcRk9RUT1GI1c1Lj5AOFA3SEg2XVEKTSMwIzJCQ1U6SkVIL01H TyFIWDkkP0IrMStgPUReJyxVVldHQEdgNUpcMDg6VSlQV0ooRUU9KkkzJ1RPNwpNWSpVT2BLIUYr UzlfU1JcWkU6MkxGTEAsTEM1SjpPK0InXDJEOSssKFstWElFV1pCSVxeQUItSzJbKj9GCk1gP1xA O0wkLD80V0dCXTY5QUJXL1MtLy9RYEBENEddXCVGQFwrXSsrWy5LLF1WVlQrS1c/UiJDQFdeQyUK TTY1WkBdKiw3Kk9XKFAqSC46XzZOQEdaXzNXRExAMlJDPVVFSEdWJ1Y2SUw+KEI0XFddKTBdLmAn RCwjTApNRUouMjNEOTItQVJAMFshQE5WV1BGQk5TLl5RW1ghLEUxK0g8T0BdNUlfMFBSTEAuXDpe UitfQD5JJkIlCk1cLkEqWU5CYFleJVlNQFgoIk9LNT9DL0ZBLlhXVzAxPDwyXE1ZUClaVlk/LSs0 WEU8Iyw5KSVRL1AuTjoKTSU6VktSPkFdNTopNjNbPUU3VElGPVVMMDVaJ0pILj8wJi87KjBIQz8n OT5NS0RRLEslX0xUSzBgM0kzJgpNUE4kLDJcQTRgQVxLMUcqPCQ4JFNfXmA5UkwhKF5EOiVaQ1w+ SyolKFEkPTNMJlpQKEBfPS4vOC4uND4mCk0jW1MlKyw7LDwiSzJIPSNVSyIkWjRDKzNKLFZPXCUs TTdAYFBNSyw4OEBfSycoJFo5UD4hWD48V0lTRVwKTV1FQDNVKk0vVy9YXFVPQyQ8Jyk6Syo/MyIj OC5FMS08OilSM0lHXjojOEU5X1sqMT48WCFGK1BLMSdZKgpNYFFMWlJPMCJVWC1LLUE7WyxCTyJZ W0Q4P0I7VCdQJS1ELC8hVD4iM1FaUzc5Xjo0RCojSFc+RiY0SDEsCk1IN0Q/QTomO05gISpSQlxK PTFHPmBaN1IkKFtFWiNEPEpGOitDOWBZMigvQ1pMLkREOC5UOSFESlFBRFEKTVBYQjBJT0oiMTc7 WCFgVFIqS2AzXidQIV9XOD0mQ0wwSjFWJUA1UVQvKmBcQDNCVDlbIT9AYC8pU144XApNQikzRzw3 Uj5TTiI8WjY+QzJBSSpUPSVVMT4lRyJBXiRNOjNFMi4vTlMsLDlXIjtOTiVgXyhLQydDQF1gCk1U UVhIPC1CPUxPUFJCQCwlTzxMLEQ2JVFXIkRLKl9ONzlAUzIwSCMrIk8nUCJDNCkoR0Q2LSIyLDhA JS8KTSJBMz5FJ1MyV1hTJl0tVklWPEtAPTMvNFFTSiM4SlUpJDlPISUoQE4sNFU2LjQ4X1QtNidc WSYxWTE1QgpNTygsO04xNjRCPFFDOkpMTFVWQzcqYClbQj9cUkxDRDJOS0E7XVxEQ09HN09EJCZO J10rNTstJ0E3IlFXCk1cMCZWX2AsJypWLGBHYCRCJCFRQTkmIUZBQD9YQSpPNTs8QTEuSVBgK0c7 RFVWUlpTLVMiLEsnKUY0LFUKTTlQJksiNEBGLE40Ok4iKkFVUGA7VDFJOkA8TkZFISJAPTw2XVA0 NDdRI0kqL1BVTConTSdJKCxFRUonWwpNNEg4KkleRy1cYC1CNjYmKzEpPCdCMlNfJzleSSNPODwo OCQnO1U1YEsuWCpXNU00N0JFIkA8Nz0oJFI7Ck05OlRBQi5LWDRIS0NBVigkOFRIJSIvOjZRWjYo TEhaI0E8Q2BYP01BL0Q0REI8JDUwJEhJQ0w4RFpbRDYKTUsoJUU5VkE9WFE4N1c4VT8yLiNLPCEy OE5ZUlE1VE1WOTI3Xi0yKSckKSE9WFovUTskVUYiKWAvNkc6VQpNNik1RCsoXyQsV18kVTs4JVNg MSQ9WzlHUF4rI0ooLCktNU9LMCspKDdKJCFVIi1MNjpLKUVcVEdCNzdHCk0uK1YmUyZVMVIuI0VZ N0pWSCpRKk0yKktfMj9RW1pFJEZUQTMqKjJdVmBFKDlbW08nJFgoXjBVWTZJJDsKTV1HWFUzVjQr RzQsXj1FVk8qIzwnOyRXLEknKFJZMiVCNDAvRlMmOzpaOio5PitfRT00V1FbQidNOEtWQgpNVyNb MisyN1xeQ00vXjc3ISFcL1U+MCooN0ZBTitUR0lgQjInOl0hNyFMJTU5NTg0RistQ0hfQ0k1IkNL Ck0jSz1PTkNVSC9BJiMyLkgnUlpCUiNbTCtUX1FFX1pNITVcLDBNRU4nRjQ0MCUrPUsqN0MtRz4i KVwqPVwKTSRIOEk/ITFFLTMxQURMSFJTKTEjSzNOLUYzYFpJLlVBPVEuOC1RKVlUWi86WjgsV0JH ODpCIkZYIz4qOgpNPEFbWSElSTVIVlk7SFhdNCZKSVNaIU5ePCJRJFAvUjpQXDIrQyImLyFILVJP W04+SCRZPSg9UzFKTTI7Ck0kKkI6QT5LMkkwNlo1K1pCOEUpJDkxOT1GOSgyTkQ3MDpGUiE6TFJN Kl0qU0dDRz1LSkIiTC1cISg2REwKTTJOMjozKGBaTFtYKT9SNic6N140N0tUSzlbR1ZGNl1BUiIw WDpUR1xIRyMlM1VOLkpbNi1fLzRbWkEwKApNTCwyIkVENycxRlo7IWA5VlgxTTdaNigqLDQ2UExJ PEslQEE3NiFYVydVTEwzKzk4TiZSUVwrJmA2QlQ7Ck1SViwhWSxQTko1UllEOC0uMzZEXlBgTFVa SE06MFxXPC48ITk7Ul42OVwvOyNHQzNcU0k6JUwoRVNDYFEKTTMhRSU0WSRVYE0jNidZPi5UPSk9 MSlPOyNcWkIsX0dMRTBETkw8UUxMWzBIPyg6NEopOkYhQkFITldZVApNSUkoREEnXlM3MDUnOiFY VFVbITBaOiwqJ18qUjosWTpZTUcrNTYyQTpKX1hELjU+Uzc2PlEkJlVWQ0dKCk09W01RUiwoJVoz VUJJQT5BXUBLVF5gUDk5LT4yVFZMNE5WSSVTPUxINF0/KVRGKzlHPCNEPUFDJzc9LkAKTV8zP2BG OmBcOlhaKiExL1AvKE81RTtUWlgoTEc4XzQiKkUnQTBTLmA+WVY/OCNEIz1CXmBAWURWUlwwRwpN YCE/OCYqRTwhSkZGKzlcVi5TSitbQyFLWDI3XUYrUCc1Olk5IT00KjIqIV8+TUdMNjUuJVFZODlG MzIxCk0wRD4tKUM6Lkw3UTRTPV9RQllQSitJXl8lWVMzIU45PyksXi5DWU9OM1VGRzReVzVFOFM6 LC9WN0NXMCcKTUc0XlJBXTg5JlJeKENTKE9bKy1NUSQySlAiMjAmKzlaUF02SCUxRVwqOC5LMCQs MS84KlUzTVBLWVlMJgpNJyIoITddKzI0M0ZaUigyRDVQX0pbVUowVipGWjkvUT0iViYpNTAmN0Ix VllBVTY3LDcxLjk/JyEjL0gjCk1NVmBFJiY0WkwhOSsuOjkzL1QvR1BFKFhWWV40OF45WCQkRCxC YCEyR0AmOElAIUsiOEVDIls9NU9QVVcKTWBISTEsU1BYJDE0L0s5TWBAIVBaTSZSWCImQi8nWy8r QU1KJSZgVC47KGAqNkVJOVgmUGBCTkJeOycjLgpNMi8oUUxaLychIWBCIztaKkIvRFZJOCY0Q082 JUBgQVZdXV8yIjIqTCNTU0Q9REhSWF01RSoyYFY9KjA7Ck1bUzhRJD4hKkNcLEFCTk03OzhEKExB VT08J1xDIT1DMyE5RDJFJi5DUDlISypWLyguPSZIUSpYTz8wJj0KTVEwNjlcQ0lOX04yKjYyME5V WTJRQklBWWA2NU1OQUoyKTtJTyMnNzxNIl5cQj08XEUiYD43PVItWyc4MQpNSzBQRztUNzxZU1lR R1YvQjdNO1U3WCwrKCoySStEOSs2OUgjJD4mVlMjR0UoMTcqOEgpTlQlJ0c6JiMoCk06UFFAW00k XkAxOEwlMTM1QyVfVUEhSVImR2BdO0hDOiwnPz0lMS8jVzAxVElUPFUrMTg3KF5IQlA1VFoKTSEi JS8hYENQRC0jLScxPVhTKFoxME02TFpGWiY+Nz4wKC1LWj4kLCdMPyhDTVk5MDVMNjRIS084IzUr YApNWklfOlFgLCU6LyomSFgmI1lSJlxTPk5DJD9QTjsnWCQ4XVBOSihXUzIqUkZAWkNbXC4yX0Al JjBfO0k2Ck0tVT9CPSRZJDBFXCtSU0tbS00oQzApI0FBM1xTPj9bV1dZVD48NjkzNlssLkskTCkq K1VcOE0zVSooWz8KTTYyS0UpXSctUipVQkMzN1MwSyFGIjJTRkdNYD8vTi0/Ky89SjhWS1tARz9W LSpeQi4/VDdXRFFDMVlMOApNOUpPJjJIKmA5Ul4kLS1XKCNPNz9WIU5DSFdFVjs5TlhdPkorSjBO UzwzX0E3JEJfXjpfSTpNMltTXlpbCk09WVxBVzosVlw0R1UkTDNQPyVgRyJXKE1TRjpHKGBFTDgh Xy81NltRMz5XNyFMOkk2UjdeRyotQ0pYLFMKTUNBO0JGJiYtJ1gvRD87My8wJUklXzZMVTZNJ1o6 Qi0zSyY8STY4RUgtSyhLNysjWFQhRT1LNiI9XDsuRApNOjRNWyZbXyo4LixZVkNASThZYCldNSda PyQhLElKVVJdWlA3NlQjRi5PKFVFVkdVT1RdNU5HS1cvIiVMCk0sR0EsXi9PNEU6LlohPVUvRDwm WFhFQDxHMUNKNilROSRIUC5PXlo3T1wjKjI0Kko8RT9KLUYzS1grJjAKTTkwQFY+TzUtSDcmPCon SUZVK0I1P1ROQCNELyUjL0AwLVpMIV9MRCs3PzhCISVKMVFQNS0vQDUhNFQoIgpNK1kyMFojUklF S1ZQLDIuOFYkOSQtX0UzPERTJCZSTyc7N1xFXTBZWTMkTzcxMVZZWE9WU0YsOTwyK0ZaCk0wWCte RTYuPi1dSCMiRiUrIVIjOCMxXS1MVic5NDNTLTpRISMyLjJJUURVWENKWTxLOUhGTy00WCNeIzQK TV47V0lHW1ZWIkUxKj9BPylPXFVFSTwpYEROKjFDLko0PFdYKT8kU1RDW01DWT00MkdaT1EuU1RV KiQiKApNLkVQT0xbJl5aXilTKyQrMklOKFI2VyUsKyQpSkFOM0hcOzlMWSddN1E4LTwxKDxEUyRg OikrVyQuMEIsCk02PTBYKygyWChDRFo3O0InUDhLWSRATlcoUypbX1JaM0pXPENWQiFVOkMwQTRM LVtQKUkzIlcqLz1XOUkKTU0xK0IiYCEqXFAxX0I8OjlKLyosXV9GMz83WiI8WFxbNzkiUyI9OFUr KEs9LlcmSSw7SSRWRERLS0YsUwpNLDteKkY5OVI9XkslVFtdVUBdKyM5KFlGNi1FKyJSLC8yM0VK IztBTCRAVlhUTVpAIzkiT1IhJkpSSUhKCk0kMj5QNiErUVMsOjdAVDk8MSJINUlSTU4qRD0uWjA8 RkVKTlVgXVEpSjA0W0RIPy4jRlNORFdYTUQyXT4KTSsqQ1Q5XkhDTlVZVlNWUENQJykqNEdMT1Qk JUYjS0o2IWA7JEIoMl49SDw6P00+WT1XL0tIITVdUDg5VQpNPSVUWUkuKjc8OlpJLEUsSjFUM1wr KDhFPT5cOkovPyQtNDdJPiMpPDNVPiItRDlNVic+OiE5OyddKyMtCk0nSi5URzMsPyJAXi82LGBC JilGMEImODQxQVA5LE8iXD9MQ2BSPE5ILkYrLjtGVDUrLmAzKkpGMCxLWEIKTV1OPSJeTC5PRDJP V0RNUlQvUUBgQys4KU9cRkMwPDIhNkQiQ0U+XVVLMVtUKjgyVE9WQkZAXj89OjpbRApNKTVTQy0o ITg9PkYjSjMiSkZcVjg5NTpMUkBeUj1UOUIoX0QpRyswVEBDRkw1PTdZPjw8SkQnMC5UVzBRCk1a PUtPTlMjIkoxKkRZIVQoM0tWS2BUS0dIMS5gJE9WSiJQW0s1YCtCLVNbYDIrMyoqTk1CRjVcNTkk JzMKTUgqWVBDPT5JTEtSPkVTUzhXNVRYWkhRWjFPWVslN0RJW1FOYDw4PEokOiZVSzxASiZAJipI UTdXUj1MPwpNWig1UzghVUhLKTxAWEYhQ1NaIzkhOkNMXlwtSyxVSzAsLzZCJl1BOUMkJihYPCQh KDFOKEwxU0BDRFQjCk06QEBMOkswTzNTX0wmNCk8WCtEQ1smIi9SVjssNCROJDsyUycoKCE4Ii4s WUw6XkhNM1JJVDJRK19MR0oKTVUiKDM7WE8yOVUpT0xLIi4tPCo0K1FfJDM0J0lISTpGMFBWIipN KTJJWk9HKSJFPlg6OERZRFctMiZMPApNVEYyWjdFWyM4Wls2UjhVNS1JVE4uRTUwVi9ELj07SENL RzNAWChJLjZaQlY6JiwmMCg9MkZaOipNN0o2Ck01RTpQXCQ8U0c2RlJQMUgmIjEzRDlJRThMJENE MSQzRDchV0AxWiZgPzRVMjVFWkg5NjlATDhRNldBS04KTUlIJztJJy9AK19CV0oqMVVDOkREOi1N LywqVEIrX15ENl5fSzhDMTw3VVZPTSRPLl0nJztePmA0OC5FWApNJDZFSVUoTkMiWVRZWE02S1kq Qi85ITRCSTokLzYyRFs8KlRFX1AsR05UUF44RC4hQUtTLldZRldHPTU9Ck1YODtZUEtRXEBVSi1Y PilUUi04SyY+MkhZPDlOOCo1XChAPCYlM09MPFcpXlNMTF1YMFg0NkRZSS9TV0kKTUQsITItVEVM LSpJNjgwPTEqWC9RRzMwTjUnJEVMPlFITjBNYExLTyY2MUQwOzYlXU9XUypVMCIvJio4SgpNPSFO MyotRCwuVEhbQT1OPUNfP05YYCNYQ0ovQjhbUFI4Wz1gKyxAJ1A3VlojUTxMO0c/M0o1LFVITCVe Ck0mIy5IRzlZTDozWUVRN0A6UFpNViFbQT0yM1xcSD04TV5cJSVfP19ZX1E3X0lbTTUmNCFQN0M7 ITY2LEsKTV87K0wsTk1FOVpPODxESFUxNT86W1JKJFs6TThFW19BT1heXS9CJzdVP0lVTUBNYE8/ QyZWYFVLWCYhQgpNWSc6JktBOz9VKEJNM0QlMzw+PSU9MzZXSjZFXl4+NzU6JzEkX1xWP09XUV5N KiJfQl83TVQ1NlFfRytQCk1ZKkw3IkpTPT4lVjxeMEBeQzxPIUpMRiM7XVNQJjsyPlw6T0lUVype SUBFTDVBXygsRUhbRy9BOyhUTEYKTSM4J09dWlAySl9HLUwhUkdfXEsqLjxXLlonWS5CVlE4OUJS L01aXVI3RFJIIllXPkJDW1AlIkZSKlVALApNJ0BUUy5EL0RTW1I8LjtUMUtULz0kNDYmRVcxPTkn OSU/IigyNkdTSyZcVEMsTi9NWEQpPjQ0UVBSVEhSCk1cX0ZIJipHTFArVyM7JlY4K10vRShBT0VQ UkU5VlgsVEY3ODVgSVtFLVU+RzVbMyhALzg4UTgrRlAwMkcKTVMiJmBYNlQtYCNDNlUiVFZTSl1I T1hTLEcpWSJfPi1gLDQ0IUtDPj0nKiVIODpIWUtbKFJMRzFWLlFQQQpNSjVQPTssT0EuK19FSiYq NFJROys/I0s/RC9SPE5bLlJBYD5KLUFCJiY0Vj48K044JVgpW2BdViMxOC0jCk1QQEgvO1ovQUBK KDI7RiFgS0g9Ky4qNEshWSI2X1c2PSRST0lBXiQvTDE0SC1ZJ0k1JVElNSQoRCJgNyEKTTdZIlpB SDJIOkVANEdMWjdSXyEkRUIzOEMpVDQ4MzgjOFkhSyxVIiJgLzdENSw1TFNUOy9HR1Q1Lj1ETwpN WjAyKyVCMlNeN0BdRz9NJyJJMT5FPC8lLEA7TCpCXF4lLUYySCkpLVlGNDZRN1UwJjwvP0tVUVU+ UTpDCk1BLkEoSSQrV0kpSzVTSitLYCw6KktWMlE0N1ElUiMxVlFTUDpdOVMyXkoqPjdONidJXlQ6 SypTIUtaSiQKTTdPNlAkNzBZR00+JSpNNk1SVUotVFo0T1hXM0k4I05aVSxTOiU1MkVAOikwRFtK KCxEIi4pRzYpPU5QQwpNLUpJYC8/N1c6Ty4zNElOPCIxVl1aMFheVSMpLDMuI0pCTCUjLS5BRmAj Vlo9Iy5ARiU6LUFRQkk3Qi9GCk1PXTpOJDg2NTxMN0VbTC8xSzNYNVEjUz87OkBAWUZeTyYtUy40 N19QJEYsMDdDRkxAX0ojJVkkSlokNysKTSpCQiIzXlk2YFMlUi09MWBLLlk+YF9VQS0xYDtfW0g6 Qi5eL0g7Kj1QOk5NQDpIYC1NKWA1NCNLOlJgKApNPDJMK08jSEpaLCZPW1dQWiIuUFdNOioqWGBZ UDRYVURQLUBLSURDJSEqRzY0I10hJCdMVV04PTU0WWAtCk1aRkhLKiRdUD0wIkFVXTk9XTxgV1RG M1VGSkJPVVEjWD5fNlYrPzVGISUyVEhOIywoKj4qPDw+JEtgNEAKTUstXCZTWVtNPzdcSFgxSkou IS8oN0xHXTg5NjxSMEFVVTlQSTVXYFU4OzkwNl03NTtaKjFOSk8/MydWNQpNQVs5UVtUSE9WSlU4 ITcyVzUtWC0vX0MxQksoM0wiSTc8QkM3SixJQSU9PFlPR1RRWDdeUSwyLEcvQlVGCk0qO05PJ0pa UkRcMUtKLjlEXTtWIl5cLEouLEQiPTU2O0UhX0EyNVU7Rzw2ITs6MyJYRCM3NVVMNlcoPkMKTUwh WzgoSFY/WEZbJV5cQy43VT9aJzRcJitZWl9IKj8kTCw0XSFRJzY2MFFgSSsrSi9YTTM1RFw/S04+ MQpNRDpSSVNZJTVXTk5JL1pSPlhAUTBWXF8oLFNfQF9DRCZMO1lPTDEpRCxXXUIpPUAmL0QwKFxd W1VUSj9PCk0vNlEvMFVGSTBDO1EnVDlJSk4/L0dJVyROQSNbU1VPNjUrTldLKyooTVpEMzw6Xlxf TiMqUl4qJFFGWyQKTUQpKlBWRkNOMipTMVImOk5RIUgtOz4hLFciVEVeKEVaJFZFIkkzO1RHQSE7 WDc3OUgvX1RRPS43KVxePwpNXkE5RzBEQCU9XFA0QyVBRzhLXUU5XisuSzxfSFVYOjpDQCc+Sls8 X0pHSkM1Kk5LVFVAKi1FM1Q0VkJVCk1NNTw4NyIsXSUwOTk3UiwhPiklSjomTkFcSV9eNEpQTUE2 MERaPU1EJjE6QURTSWBMMVRGQFtcR0NZL14KTT9KXCspXjZGMlsqXVFPSSM6UlIjI1FIT1FfUDpQ SCM/PyJENlY8IUZSWyMoMUM5OEBOVjBZT00kVVVcTApNIjZQO15IWkUvOlZRYE9PLkxQM0M8Jis3 OC1fTSVWJjA7QFY1JlpOWzVWSV82KjcmUUteTixOL0lIVSdRCk1TXiM1NUVZNWAhTElKUkpAXTk0 M0EnQz8yTkczN1haVUlJXyxbLi47KyxBQi0lMCcqQ0paKS9NTk9SOCsKTTQnLzMxPUU+QD9WUSU5 QykiKFY3OTAlRTg7OzA/JiQ2VzwxRjJbL0g5Qzk4Ry5WMihPUiQ1Vj9NSjQhXQpNW1Q7RS5OVktQ PiNEWSw3QF4uM1lSVj0vN1tRWF1PK1hRNz8hJTVOLDREMiExSkskWVI9USpLJ08uWj9WCk0wJTlQ JlJfQ11KS1BDWlQqLTEsVDY9IiUlKD4mVyZBSSVQPlpcMihPI0dSU1k9WS5KO0hfUUlJTzZQTl8K TT1FOV80NE1gNyg+UlE2Ik1VPiFTN1NSREs/SF5GPjVAPlZPIk8zO1w4Vk0jQSFMVjZBVyYrWlE6 NiI/NgpNOyZTUyU2Ly0hQz08Ll5aNDVPVSQlWWAsP0JNSkUlXkM2Iyc2XzI/XSVcXj4/TzdUWSVF Vj0vK1JLUEA7Ck0iM2A1UV1ePi8jVD5PIVI8LydWMS8xOUAoTzNEKCUpL15DKVU7OzkiVyQ6Rj9V PS88TyklSiQ4UiRFXC0KTUNLXDo/JzY8JzFWX1woXSRJJltML1NGPlUlKi8xX1UhWiVSQkhSJi8z RCgpVSJQPVYxXiRMTSRYNk8rRApNWTVZLUFNNERZWDZaRkkkKyVVUT08KEJVXTVcVVIkOTpLQUlM PzVVRlAoUTQ3X0xTPEs0VUYrQidNUFQ1Ck0pQltFSzFDQ1A5LyFYLUdRQlkuN1NVWjI/UDsnXzo9 JEVRVl8xI0EnUEpNKCg/R0RRNTxPR0ddVVRDXVkKTV5PK1lYKjNfQyJIVSNCXSJKM1YrXTdPWkku VSNUJkoiRCElSkMwWy5cPS5HU1hePz9ENCZCPSJUR1FXVQpNR19PJylFWl1VPTFOUVgtMDEhJkJX SFtLWis/Q0giV0MqS0NDTzg6S1QnIiInXkpKLidEKy4qSFkhLFM6Ck0yQlgmOiIsVSVQLlhPSihT SD5YVVc1OFdeVUk0PV9gQl5IS0EvR0VSXEdTMClfK1RaNEZfM1k4LSlcXi4KTUdQXj45VD0vT1NI OT8uPC1HOEk0P19WNzdbVEBEK11aPU8rTCE9JV8rWVhfLlFZRENRN0g+XyZgW0pgMgpNQSMyLTZO YD1PV1BaKCZLSFE+I0lSVj8vQiUoXD43SSxNPiU3NTAsNktRLEtRTD0xQkxdLzdNOzNCSDApCk1A QTRMTTRDQFVdKitFLD9WQkMlQk9bIkE9SDAyKlExQ1Y1IS9VQC8/Py48UE5IRiZOWD1bITtKUWBK VVMKTVE7IVlQWyFbVD5RIV8/TjReMVc9XypZRGAzXFkzPVtHWTZIXUciOCssS1JERF4rUz8uRTxI XFFAPChXLgpNUllYPjIvKzNdTDs5MSsyP1woUVBZLVY5XT1XJlpfMjQyI1E2LEkkX0pKTExZRE0+ MT9aSEtDKj8zJ0A1Ck1ePC5OKERJMkdKJTdZPyRCPU5cWDozQ0ErTTwzXVlLWjUnXSQ2XyczRUUz LS87VFFRQE5NUiNeQUU3Li0KTTQrWDI9WlVTJCoiRl8mSTcpSTk9Pkk2TT0pTVYhMEojJSIpRVQs OSddYD1IQ0NVK1ZDKFYqTj5LOyszKgpNUUo+MlUhU15ERUIkMj9JXT5DNEI8VkRFIlROPlhSNilC QjIvXjRIXCZFM0pWYC8hK0hGX0UlKS42WjZLCk1aV1FZPSQmVTE4PDVUJS0+TTRZRk0kOioiQ10x MShFYCw3XyRUW10tMS1QRipQJlMoQS0uNUUqJjRHQFoKTSE6Vio3V1BSNFA1Oj9JIT8pVjY+JTYv S0RaSUE8TEhDXDc6XlgmUVE8PSZRIkIyPVBTMT0zK0tWXlZbVwpNS2BZKFA9OCYuL0ZOI0JBOkIx YDdgJSlPJilBOC4lM0RUUU9BQlFJTUxSMEo9Mk45KjVDSlVCO1JMJyYjCk0jPkkyJT1eWC86LVJH MTozQzlNTVVDOzNYOzM2SSQ6W1dgIko2UE84M0c2S09JX0dYVC06OjUlS1FKJkIKTTNRLEcrWEFZ RjAnOShdWVNKPDA6WzcpMzFcSE46MSlKQjpSRUdVMzskREBGKCUwQDMsTEkqWCVWPDUySwpNIU5N NFNdYDY6PSczPUA9WScmPzM/KjohQkVYV0E9VlU6NCZLTCcqTDg6WSc7RylCNkc/XlNfXk9eI109 Ck06Ii9bVlszJ1pBJDtKXFdaQDwvVFg3XzklJz4qUTM7JyhQKF5VQj02OzotUSg6KiVLYCRaOUUt VFY9WTMKTU8iWVtQVThMUkVYXC88V0ZEVFg3PU0mOCZITEw+UTxVLVxCKzw1NzclMEFHJk0vOlJf RkxER0A1MiJTNgpNSlxPQVolVCcjRidFJyVUN1tPUEc1KSJIP0JBJlVEPUlQNE8jLDlNLktaKUhN IjMkTy5LKFpHJkVJPlUvCk0hRSg4I0o+R10sTFgrUjZgMTlGXylQTkpUVEEtXEpLI0VYMlZAOjMw LDhXITgmJ044JlVBMj48TCQ2QE8KTUoyRihLPVwkVzQuSygrLSg2Vk5AOUxMOVxeT0kqNVEzNmBM LExWKUBYOUZGPk5GKUtSVFheM0lBUyFcUQpNWSdLPEhUYEZWJ1NZK0VfPCovXiNZQEcpLypRRElW TkhVX0RbKTlcNCpQSS44RiE5Ijw0TiM/QkVIQFwnCk0kJCVKKlU9V0Y0QTlfQVlIPDg0NTlcXGAh RTJcMSs9TyUxOk0mXT5GPCIwWElaTDA5RUhOTjtAUDclS1wKTUNBNTo2KkokLlQ2Wjk5M08/XzI5 REZEVF5HN0gmIVFbQ0gqJ0QmNSY9VCsqITdGT0o3RyhTLjZGJytgKQpNWE5WQU86RzJGJyxUVjg9 M1JQR0gmP0Y+TEElYFg7RkcsKjlVVkUwKVg9OSlZO0UxJjk/UClCVFo1NEsuCk09Ij49NkFBUjVV Ky86S0lDRk4kNVtCLikyOTw1VzsrYE9VRSZaOzpOXCZgXy84W1M4LF5LNy1BVCZgQVMKTSVdKStG OFNSWERSX0c8TldcXzQqPllWNSk/OVouS1xaYFshTykvYDskX0stNytUV1g4LC85QE9AYFZeIwpN TUIqViFLMSVeNlYxLFFNTzNLVio5XVNFJ1oqNykhLEdUQT9ET1leTzlMLyVEVl8oIl8rOCNdPj0j OE1cCk1cM0RJMT5BOzQxQCwjKk0lUVo3L0ZIUz1ETSNVM0ooO0ZaUitUMko/JVwuSTtGXDBRVCFG VT1ARklaSD4KTVouIzNWQTUvNyc6NTRSXjFeTidLXEpIR0EmR1opRU5OSVpOK2BRJDRMMlomWTA8 JUQsRF85PC4yOkxGUApNTyVLLyxLI0VIO1lSMCQzUFRXXyQ5U0tXTD07W0pHR1IsLyNBPElGJ0Q+ REdEW1E8S0UoXzNBMFpMOCspCk1eRjQ8KiE2LV49TiVQRlRRNzJeIVZDJFEvMjxFPl4pXy8pOiRf JSIqTU0uNSJaSlciUkpAO0dOKVw/USEKTT4rJmBAOVc+KUhfSSVaSFhKUyI7WTw0PUhXODRDMUpB O1RbVDVXOldeIVcmWEM/LldeP0MuVDtOMlhAPApNQ0lbUi45JyZKJD1IRTpcXkktRFRIXVM8SDhR KFw7S0gsSDBEWSs8K01DL1NMM1lgLzRAWFYjWCMmUVlHCk1OTTw9UlgwJ1s9I1EvVignTjxCTloh PiVWUUklKzAoTSFYVENcQygmQF5RNzhDPkVKV0RVPz5DQkY2LyIKTUVNJjs0PkM1SlZAMlM1P0kv MidZNjMyMjVcM1goLjstJz4tVyQ4Tz4tJU0mMyghNjwzTk8yM0heUUc9LQpNUC5AIUlBMlwlUTMv WFUmPDdeNyQsJE4nUT9CLjw3U1RKIlouXFtOPipLX183QT0lKEc+IjxDRDYvMD49Ck1TVCoyXjZd RS1COy1LWyorYF9aJk1cU1VRJCdCUTRCTzZRNiRUVS8jUk4xLjU2SElAKCIxISkyR0NNJCUKTT4z QFtEIlgmTzwoV1QpYD01IzUlL1RcRUFgWVtfLlZDRVM7NVYpSkQ4UE1MMTNbMCIjNj1KUkRJK2BT OApNQVcvWEcwUVUnXlQ0Ozo9W2AmUC4nWEIuKihNOyhcWkAiSTlXMV02PiJSQkFEKDYmPSI6QT9S QDA7IiQyCk1BKygpXVFDXVcxK1soJTNBWEAnSTVgYCwxQTxINUBYMi9TT1Y2K0U6LyZFMFFGOyow MVEzPkYmJE4/KScKTTFFOyI5OGBLUVVHOTlXVkxFQy5KPkdVPjBIJmAlOl8rOUpIPDgwOlk3JzhA KCFSME8hXS46MzJMWURHNQpNMjRFOyEwI0ElSU0vUEhVUS1FJ15TL0YiLDcqL1hdIUErLDI4TkpL WyFURihZMk9IW0E+PCEhXiYyMl5JCk1EKVJKIT40K0g+STEsUlJHV1NFRCgvSzYxXS0pODZHSDZc Wl1bSllCUTVAUi1YT1JGJkNGPV8nSVwlOVUKTSEzODJdPjshSCFDN0cwPFUhPy42SUAnJiU7WVkw I0pZWDNTUFJcTFtHYEBeVj5eOyFUUTYsVlBWR2A+JApNP0xYXFwtJlRUM1FgIVkuWSRPJik4IiQk KUwrYEdAQkEnRk4/SidIVSwiVzJUN1JWRiJfQzMlKC1QWzkpCk1aXFYuT0NEXSNLUzNIXF5DP11F WShNYFo/U05gVFwjSEMjLUw/Ny4hSDIkISNDXDU7MEQ+WVRWJEY7Uz8KTUEsTU1WT0Q5Ny4oQyw2 JCM3TFdFXilAO01LLkBUU0ZMOScoKCtdIycqM0VBOzYiVCkoQEI9Rzk1PFFUIQpNRE0+T0QuWThd XVE3KVk6KU9ALUxbTTwiNTZQLldZW1BNUj42I0ZDLl80QkdbKChHTS4iX0pKOik+I0NJCk1UKylC SVc4NylAV2A6WCw5QSsqODo/UUM7JloiLC9GMyVRXFRGJi1AUy0iUShLVyU1QTg1XFshR0gkPiEK TSZRLlMpUCNDXFEvO19OLi9CU0YrVkRBN1xdMzoiLzJaOTFAUCI8OjktVilLSzctKEVWUktMTU5B WTtNUApNMEdCO1tgQUFLRTpUX0kqQCY8KFdPYFZZTiVWNTgmVEsiUCheOUtOOkYsXCg1LzpaQ0Mh KiJEO1M4Rk4zCk1DIzEiT14mPUApUDEiVSVYOjNQQzdbJ1VaTyIhTzBHK1FMU0MxNjNALjVQPzFf QVhIQlxMKUgsV0RAYEIKTURDVVAhSyQrKFwxNSs4KVAmKU0/TyFTM1lWKjo7UyEjIVpCYFk/IjBd RS1YOTVLVVgrQkwlMywkIVAkLgpNVFQxKDwkWis6NGBTNy0jK0ZXWEtNQUhLXV1bRFVOSENAXlBe WVpbUFsyOzBUSF1XIzU/TFY8RUQkO0YjCk1OXksuLjQ+OVs9XlpbSj1BN0ZIKl8pMS1SNFBAKlY8 XyI2QCUmIS0lR141SjJdSEYyPiJbMjMvWi06ImAKTVRdTEdLIjs3TShCMytAMTwuTEtKLSgmW1oh YDojPiIuMkFSLVErSS1LRS08KEgkIj06RyRKWDspWWAsPwpNMzI/OEIpXTBEQi43K0JdSV9DSDc5 MkU3UUhgUVIqVidgKCopRDVBWiUvXTZTT11JSFg/KyRCR0tWKS44Ck1eRFMiTkIyREtUVCNGNTld NSZNLjVeLFwiJltGLjNALy0sWCMnXFhGT0lYPSxfXTZGMV9HITQpRjAnTCMKTTczJixdOiY7Uyom SUEkJSc/MVE2NyU/WiM+V1pEKlAvWihEOTJFTFNNYE4rUVRLQChdNktbWD0zJUJXSQpNYEEuNCFe NElRPVwrQFkjNFpbIkdXXzEsLUhKIig8MUwwTUpOO1lQWFhJIjY7IUYkPSVRKS0iPkhDPTZICk0m Njg3MDFTNTgnTzRUMlMtNCQ2Rjg1VUpeMjpGWkg2PkM3PDojKkMtMCkyViZCTSkkVVlaPFwrOkRM LlcKTUMmOFg+PTYmLT9VJlNOUzNEXU45My4/YEQkXzxKS1guXl4kSCpOYEoxM2AlPCcxOERYRUYl TyFVMixcSgpNSSQ/SlhbR0IvIyEjQz1bOURcN0hHRzJNUWAnPkgrTV1XNTZcUChgNjglSzNIODFG Mj5BJlBVQzYxJUkpCk08WSxAODBZVyolKClXOiIqRVVfJTxMPUEuTFYzXE0sUUBNOVA6SlI+XzVg Wk8jIl44TztBWEBaWkBVMl8KTSFFKV48KFZQMFA7YEFHTEAiUF1KSCFEISVeKVsoLVApUl83RUpB UDJgXkldRUk7JUU9PlBBV0RAUCFESQpNPkBUVVxSLkhAWDcmIT09JF9KViZFXS9MWVY/Lz9KJTJE KVg0M01FS05DVVNWVD8+Nj9MMWAhQDBQVjhDCk0vJFVANVhBPiE5USxQOFleSC0+KikvXjEvIS85 OCU1U0wtMGAqPDdRNVchXkgxLDs+N09ET0FXXDxGO0kKTWBKPzY/VENETjhIQF9aJTNAIi43S1dA OjBbTlNSWFAmLyxCWCJeT0MuV0pKVywrXVY1LiYtKk8oL1RGMgpNSVNFX0dMUSs9Q1IsVzlNITdS P0dSOy5HWy0/Q1FVV0UuOCQ1Oj1HLkgpXDxcSEoqO0VVIiI5IlgzRz46Ck01LiVIT2AtPyY7WDws UTpKO0dRQztVXTkoKjI7MUokTS4mYF43VENMVj5fU1kqR1w7NzghWz5MU1Y1PyMKTUJQXTtfTDci USFDUTNJXj1gOiFELiNHRj0jYDBBMlFZWy8oP1NfMydBTV46Q05DOCRSTy45ISNRR0dNOgpNO2BB Tlw/W1NfTE9DRFkuTzdKWkVdXzIrWSVHXzk4L0MrKEMwNlFGW1BfU0crKU8xQkZEUEBPIjBCQkRO Ck0zLVIoKjA2IS5MSTYiNzRYRzlaKkMjVzJHM1NJTCY/RTM1WTknQklaVSYjQSYsKlRUTSQlXTc9 MjQpMD4KTTApODlDOEQyL0tWKD05UlVFNTlXN19HIUBEMlBIJiZEWCY1QiIqKjs7KDRMTy9aOVVZ MCpMNDY5MzwqTApNJDwsOSMsQCZXJCVVOlhGMUg3UVIpXFJRJDEkMDQiVVExUk1EQDxRMTAxUlhS SzNYSSleJl8lNUxbTSJdCk1FRkk+WjovNEAzTTM0OiokJlxSSFhdSjgvNyo3KkRAQ0w/PzZEJCsm XmA/SSEiNS0hOzVMSCNaOi05NFkKTSNPVjg3TVI0QUZXUUZDND9UOkNcNic7UzM8QForLDxGOElD RVUpMlw+WFlLQDVIOFEhOTk7Q09ULF0wPgpNT0wtRkY0I0dVLCNPXD9WS0gjNSRSVTU6MFZSVTQq V082KyZALTEzNF1UOEswNFdHLTdVQk5AVUQ0WiNTCk1NQTYkRCwjLydDOEE/JTkwNzcoJEk4WydY SEdEQSFBJlgpLkUuMy04NkNaRFdDP0dBOzhaQ1FEXVszIyMKTTlOMkhYKDZQQTovSVBGNzUxOFMp NFxUQT85MFY3T1dDRFE+OF8qUzJUUlolMElIR1NLWVFKJzAwLiMxRApNRlNSUSshNkA2NSwhVFIr XS1OJFI6UDkmVCVgSVwhQTZcVFclLk5TRjU9PDU+R0grVys4PTpKJ0YzR09MCk1VQytdYCs9XUQz UV9cN1A7T0IrQSotPEZgUk8hLSgxWDlZRiMzLCQ9QCI0IzRLNyNMTixGTigsPjs9XFYKTTcmKlAk YCwkPD8mIko4XjFKM0A9Py5DWzYsSTgoIzpFM0NWLCpKRzQlI01TJElNNFpQLigvOlkxTz4sSApN WENJPU5LRWAtTC8tVDY+VSwqUkI4XU84NkkoMFFRND9cUCElLDYiTTRBNUtYKmA6VlZLSk1IXVkp Mj9UCk09WV05PzJDTikrP1YnUTpbQU0jPUUlXUksS0UhRFtRSy8rNTw9LiheRT4/LUVbPS8xQTJd Ujk4OTo2NFkKTUYwWk9FSjEzLkBXPjkrO0IrWEVFLEFMTjo1WTslTlhDNFI4OS03R0RFN1tOOCdg OCYrVjk6SzUtOFE3WQpNXl8zVkI2QjNbNT5SUUhWXTc1WzJSL0JJPiQkRC9JMzw0KTUoTDVbSjUj TTVMLS4lQjRAIz5CIlc1Py9FCk0kVSlCQE0iQzxcUFIzJFlEN103VSg6SjdeNSlOOlM7SVojUkZI Xj9HRzcjSUEuO2BDLkdIPyguLlNHNScKTWA2T15VKWBRP1MrOCRKKD1ROTRfLzcyPl8iRi4oUVws WlU3VDlRWzMnUl4nNDZaQFcsNyM5XkAzUERbVApNLTY8RTVFUSQwPSM/KU1eUEtTOy9MKT5PMS9E PVlBRiE/ITZfXC5aXDJFWEY/UClTPERbKCoxLj1KWGAuCk1MVCtfVipAUVNEOjUtOVg7LTpaUzZa PiYxXUtIVV8yX0RTUjtDRz4+UVdXVEdTPkU/WSwxOiMoJkZYViIKTS4zL00hLVtcWUMlNmAkUzoy M1o9VERgOz9FPD1QNzlUOU1eXlgtOjclPFwtSC9RPTFYKTI+PVBFXjpVKgpNPkc6S14zVUJEV09E PS5RViReWUo/Nzk7RzwhRi4yPCQnX1sxU0ReN0pAWy0qU09EVTBGKyxBT0UyV0smCk00UkYmYE0k KkpBQTcjPkkxSig/IlVgVDpKKlRAIkdZJ1dgWkshSEBbUUNGWlpYKzpRPFpTM1shK1xbQE4KTT4x R0gpTFBYLVlRQTtHISZON0ZgIycrQzg4Ujs/K1JaP0NBLEA3OUM3TVQtUGBAMVY+KSVRRz5eSENe IQpNUj4oL1VMTlxOJEosWTNJQSdHWkctK1dMXVQhJ1VNKjxdVkslPTdIWlMyOEtJRyUvM1g/Qz9a WjcqVS89Ck1cTyspXjNFR08vWlMrT1ddPjddUFxPMzlcUTxPT1NLTj9UWj9SP18xP1wxO11JYDVY UkYtOD9fX2BfPyUKJllAWEcoYEBgCmAKZW5kCg== From schmid@snake.iap.physik.tu-darmstadt.de Sat Nov 11 09:47:00 2000 From: schmid@snake.iap.physik.tu-darmstadt.de (schmid@snake.iap.physik.tu-darmstadt.de) Date: Sat, 11 Nov 2000 09:47:00 -0000 Subject: libstdc++/105: EOF is not processed when reading numbers, typing ^D has no effect Message-ID: <200011111737.SAA19785@snake.iap.physik.tu-darmstadt.de> >Number: 105 >Category: libstdc++ >Synopsis: EOF is not processed when reading numbers, typing ^D has no effect >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Nov 11 09:47:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Peter Schmid >Release: 2.97 20001106 (experimental) >Organization: TU Darmstadt >Environment: System: Linux kiste 2.4.0-test10 #20 Thu Nov 2 03:02:57 CET 2000 i686 unknown Architecture: i686 GNU assembler 001002 GLIBC 2.1.3 g++ -v Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/specs Configured with: --enable-shared --disable-nls --enable-threads=posix --enable-long-long --enable-libstdcxx-v3 gcc version 2.97 20001106 (experimental) host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu >Description: The following programm reads doubles from cin and waits for EOF to compute the sum of all numbers. This does not work since EOF is not processed when CNTRL D is given via the keyboard or the end of the input file is reached when stdin is redirected to a file by the shell. The programm does block forever unless killed by a signal. It makes no difference if integers are used. >How-To-Repeat: cat tb.C #include using namespace std; int main() { double sum, value; sum = 0; while (cin >> value) { sum += value; } cout << "sum: " << sum << endl; } Compiling the program tb.C g++ -v -o tb tb.C Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/specs Configured with: --enable-shared --disable-nls --enable-threads=posix --enable-long-long --enable-libstdcxx-v3 gcc version 2.97 20001106 (experimental) /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/cc1plus -lang-c++ -D__GNUG__=2 -v -D__GNUC__=2 -D__GNUC_MINOR__=97 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i686__ -D__tune_pentiumpro__ tb.C -quiet -dumpbase tb.C -version -o /tmp/cc6PCiTv.s GNU CPP version 2.97 20001106 (experimental) (cpplib) (i386 Linux/ELF) GNU C++ version 2.97 20001106 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.97 20001106 (experimental). #include "..." search starts here: #include <...> search starts here: /usr/local/include/g++-v3 /usr/local/include /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/include /usr/local/i686-pc-linux-gnu/include /usr/include End of search list. /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/../../../../i686-pc-linux-gnu/bin/as -V -Qy -o /tmp/cc5pHN7U.o /tmp/cc6PCiTv.s GNU assembler version 001002 (i686-pc-linux-gnu) using BFD version 001002 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o tb /usr/lib/crt1.o /usr/lib/crti.o /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/crtbegin.o -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97 -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/../../../../i686-pc-linux-gnu/lib -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/../../.. /tmp/cc5pHN7U.o -lstdc++ -lm -lgcc -lc -lgcc /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/crtend.o /usr/lib/crtn.o Gzipped and uuencoded preprocessor source follows: begin 644 tb.ii.gz M'XL(")&##3H``W1B+FEI`.W]:W<;-[(H@'[7KV@G:_N0,N6(E)^BK%F9C&?O MW)O7L3W[[%FYV;THLBGUF&PR?%CR),YOOWBC`!30Z&93HAQJS<3L;J!0*!2J M"H5"X#"?K4?;5Y:-'1Q].OLIG MR]4B&TR_(,5.#LI*7^2KY5?+U2B5U1Y?\8I?)B?/*U<\B6IN^.C1<%:,\TO0 MUI-JM>(:FBW343;.BVP)6GI:K:4>K_6B,BUZD4C2>G5I7YGT`LDZ@URYD?'U M"+0334!1+;ZIX?7P:K#033TYKEBM0E/D/_D,].IEQ6K5FAHL+JMW2]=S&YOD M%U]=#H=']-_\V8MG1W/ZNUC?'%T6ZZ]ZCU\^5W"=YD\VAW1RL/HXS\B43-+T M8IU/5GF1?ABDDWRY(F](Q:%\[%/4N\?--@D;2$!#3RJ/")W;!\5@FBWG@V&6 MD`\'OQTDR7J9%Y?)Z:F"_:G:N'$>8<#!T(%.0=[K/?=]/T$JC[/!:KV`@K#W M]#A0!H.Q_$AD(R&E`2344$\@^J)B0W0\EZOU!6SH^:@-*NNBV5^662C)"]6R3+_=Y8R/E5*$N_? MP0'*-HS#*&1(39N89J%-!8=!FQ.;S"_74]&-%AP2O: MY65I(@[*2"]!F(0@8%ZD6$P"!ITX$N2_W6])#@>CJ MO("'-!Z*DO\^>^(GJ'\D5$4@Z3FYDT/R:S`:+:RO;0>_@)=&PV'IN5%-(3ZQ,O/S<1XR^74GH@^"XF M^=3^I-J@'SE97:QY0YH]5HOU<$74'U6!B6CXPV#R<^^7/GGSB3R-EZ*.A=Y( MCHY\S;B9#-O0_@`(L\JGF>?3\OIB\MY`#GP<$E'VWL3"Y"I>;#Q*IX/E>V:! M'(=EUPE&`_)'R:``)>/1,J7U?NX>]YXD7R6M%\DAD^JS<=)2Q=KM7_ISS(?^>KA22T1_W. M5U=DG3:RM?!)3%G,0.)6X_`J`RNL9[;U8Q8Z.>`\2F<)?9?.!XO!U)BUXOTB MGRWRU4*%L.%ZEX>VB^MEA=3,G?5!NC;#487M&6,]`P[?-\-LF'K,,8C50I M^J!KYL551NC$/D%XLSD#SP4O51CKP6)$GT`A@LA[)N'8%$^2#[-\1,6>^F!` M8&\YA$^)[/)@I;@.Z;%O'*@83#FA$XNJ[-/U(">+LDO8T'!6C/P-"=*NI]./ M=B6-(6HJR*)*H(4:F*;$TL\6'R"IIZ25=;%">S)-9]=%MH"%W^?%J!\FS520 M1O=CNEYE-V6]9X4X>*LF,DBPZ[-BF,F^^SA^<$?3F-L*_L6?%#``(LI)J6U%8OYDNBVC.#1+)K8>K2,B8T+RA`[H!` MEW6XD\%9P+K+$^`A"*R\G!'\]L?T[]]^]SJA_Z%-/8U:L*->`K+L,MQ.09>" M*EP*-OW/U';$=I]%5_"Y"&PMYZS*/QHFE+TL-[0\LP?M1:!:]27.ZD\:J=:R M3QD,PL>TT@/T-7HUAK)&K-\67RW`<6UN-KFT0N<0@NCI%H3!_;5[BY)ZOW MK+R]@'!=F_,+69RL0PZ;-9NV5`S9;A)+:D!URET?A'I4_N<71/&F:=)J">9/ MZ2+K_WZ;INUVNV_7HXZ.8,7_\E2D+HY@Q;>>BFQBA"K^35;TV$WKM$Y_71#5 MN^["J$X%%T8%@D!2+K++?$DT1TGEZ]EB)*I3-VU07V$*+2M&^:!`M@_=`MZ% MF@/#GF*Z@-@T?-FK,NEAH64VR88KT%:XD']Q:>4K7MU M*7-V$^&?7Y(1GDWS(6XLJT4LMGBGCJ@6YGEQ"K>9"X9[7S@RPNUN#SG6]5*U M\<+NM!;_PF"D+Y;S;*BZHWJQ^D`6BL.^\[(0;]DR_023F!::CJT%VR:4,MRD MVG\E'&+61T*@1'JIB'IS-BVUVAGZD/V?K53LA-O_L.FFUN7.N\E\?HG^_D)=V#>S!?#M=(&N# MY2JQV!GT1);0\XLY/?)+Y@`%W:PW2*RKGYC\Q*9LG/S\N)P.A@L8(M%]&5S! MJ!4@V-L6KM$$\Y%JSVF".U&U6S2!'E+'RM;^U02Z6MV66!'3'^NV)@J9#E=& MS&"$B+$BQ+8AT5I#;G96#%$:VL9JA:UUM>%4&\5HA\$R)+H!]`'_5*NVRA'G42QAMC3#P:&.=SGQ*F$'1@> MIY/R*W(J)40>KZGSE7I(IQ?,@^Q8(L)9^Y\I6*$BX.7*F:R"9]PQ!V$*SSAS M]!)08U(&VVI3@(3M'`F*SVIBB@2G3:F/)R>?/P!KSE;\ZGNCDZUGBW35#)]LGA5TO<`5E-R&7,V&9"5!]9WY?KR83>D7H+/J M:2RMH`56@H\84D0]"QQ)^R,;"Z:E"4/D0[X;<;$>=V1UY]O'5;:<9&.J@9'* M1#7[:]./LKJAHS?HLN@UL$AX3X>3V3(SNZV;['-]]"+>I=F#TE7"_,\4<(.Q MT/C/>LMB77?#Y3`!LMY\82Z@Q.,"%HEA?[)8G#X-BF3@?0:.\'^MIW-"<=LW M'MPT9>[Q(^I``U(`W9`W2V(R2_C\`X!`"=2Q;6ZV.@%48)^U;"7H!$2INN%5 MM(G!$WLWP;/=6VFSUUD@@AE*YF:1\15#BXK`HIVTY+[E8''9[JA=S.%5/AGQ M7,;-2AI=<9<@++NDS4(W^)M2:\T^U>+6I>( M%'WVHQ'9;W4++C)W#L$^3L-+'XI1J"%]WA2@;Z39C_4D6SB`Q;8BBP*XH['G M!,;&?\?1]G.%#_&RP8^IA[;Y,<\F(RZ4@FUXROGZH81D.AW<2)?)8'))WUV5 MLG)\[8CV\V*3]DMJH^TO%@P(>94MJ%O*,R<-9T\0I4T!,L'?"^CW7AT5K)VQ MKHNTT?TUQTLK6_:ZD7D\@H'^$Y\OF??=\7ZYKN:I6NNNIM*W+)X(FX"GJ]EZ M`3^.!A_AXPR6_9@-8-EKL^Q'\S%?CI;,!()UN)S&>CVWIZAK? MK$/4ZG:QFK[G3:@!8JC-3;R<92(I+5"3*U.P<%MV=`@9D3WTM[N2!>7'L\5T ML'(4"4<%E(-8;;@(E`I$CR5#BS0UY]VRT5TB:_'IJI-XR58-/XO(&BAA2P.? M(/L@]9G+&;^/!\]%J=[`L&Y+=P31!9\-@.30Y M)R@CC*K#2BR'MPO)XR=!!Y,H%^OQIJ3!NQ0[9-O`"1DATMZ_J3^_9MNNR%*#K;K;]5LT[#.?*QR?945L"EB M?3DA?8[Y!'3MY;1$J[E5V-2,J\6Z^Y'J-FG;4BO$IS9IB6)0S):3+)N[;`UL MSD7VZYHP#3%8Z5O4+%UDTT%>Y,5&K@S-5=3%;?MT'+K2#A#S>41=_-EBX==7 MO`RB0,D\@!BS=I_;P1W!=AQ6.7Y$T"0(?Y3;Y49RH)8?"!HF0OADNUJQ8\T7(3^_^Z\WKK_^6?D/^^^YU^O_Y\=L?OO[K M=Z\[!^ZWO[U^]_4W__7Z;WP%X$#X]H?_>OWFVW?I6UK&J/_Z?W[Z[MMOY"=/ M];??_/C3Z_3M/]^^>_V]49M_^.G-C]^\?OO64_G[?[Q[_3_IW[]^^R[]X:>. M\^'-ZV_^\>;MM__]&OWZ^LV;']\0S+[Y_Y+/M&6WR`\_OOG^Z^^25Y4;=*K$ MHN)4-+!T:_[M]=^__L=W[YQJ'',/V011R;_?_C<988/L\MO;__KZC1PT%\*; M__?=CP2CG]Z\_OOK-RE]1?XQ\3.+_#_"(I%%?OS!1RQ17O29?`3=]C0G5ZWN M(:GA)!L4ZSDU3<;9@O6.Z7KJ9E_,UJN\R)2OO0V/"PT6X-#%<%`,LPF=M-@I M%[,-YA%<9!_D<2MW,G[]PS>OOTM?(U.1?_G;MV_I)S8JOMI_HP1X8TU%\>WK MM__\X9O_>O/C#S_^@T\I&DX1\.H8FDAUBOR7*CEUHH,9"NRW7B>:!Z88V<@O MN1?1XJ>N%BN7TK[MBHIK7F"L:#SEKV4V&9=X(F518I!0HTC#D%WM=A+W90^% MQSJD`-[D*[V%L\A6'P8370MQ7Q0S4FB]**0'`T7S7S/J9C01DI14HY-R0"$S M39\VHJ?V;(CNT@6KRX:7/OPN+?S*I@\%<+@M1(.8RCT1L4GD0_#.MG%*Z0RQ+R/SW>[FX'1G&TYE M',Q+-8-C%#T%5I%\VR1Z952#)X7+R";*-NG["E#.Q"R2=`VC6,YSLWFIO&2% MX@3QI0(9V5\+=GT_5JB7ZI2XOZ?NB?(F_;A!@@'L2@66BB';`IHJF#W$+_(, MO9^2SG'[6^'E2P.W./-T*T@F7N/-H&$D-ZJRM\:-`+MX;MP"FHG?:O78*,QX M):L)ZL(1RY2=".)(O#2_K-210]V3N!XTT@6?;"78$6H.UXM%5E#3(&J9M;0J M\?&99!^RB;OH,'S]9LX(<]DA\DA0$K"?[O(4Y(M0I:SE1;-&JAEN=/^0#U+? M6;+9??#$J&P`)8C/:O&11R=LA$\E*$%\&D"F(4S610.X5`%2-G,1IX'%WO:B MWX=6=4BE>.$<61.UJL!B"$?$)W5!!F%*I4>SNC2S=Q;LYNVCY%$MNMU+B5*) M(#76(0V1*^0P8[F>3([EZ9]86#?YY8I^G>E)EMFFX/=0EC7KL+.)>JGF9\7Y M%MIF,"X6L\%H.%AZJ>C?N3?*T[Q*_H$HEW4-A,WXD:-;Q*-Z&+HA9F!7?7#! M(A&:MA'-7GDZA0ALD[VCW+VJ"LJ0)>(5A2@299F8R>Q9S'G/?KN3$Z;%KK0R+65'/`KA<-HM4<,-LP*H,4`H;,CC!_!5'# M9\BF`.G9$9X=SM6M&&R];.6U&A0[Y<@N`;+E2&(X;AM#0DYJ=:3%O"HY%]FX M*5I&$5*A&45($[N-1(^2X@:S#3CF+U[S7.1';*D9!T=`<#F2#I>%\-5 M/M.'[MK;V?Y!"+V3N'J8@N(URB:9BRM#-6*M13UWQ!3)Q_D0!:&5K/0BSV?L M,$NC?D6/2_%N$;,#"0XUU2Y+D$/6I!Q$'0!DRCT)1+9YIAQ-MJI!\]2KM`OL M%R$<4403P,I4T5DQ(0VR,3K".X1A8)^%.DA9J)$(%!`;!7D^?ME--EPW$!#"LN8>!R)[(TA/ M;P"C1TEW;P!`'[OV@;X*?9S-67CU;)'=W4#ISAR$8J-UISP!UVY!-.Y/9`R3 MXN)J=JV5GYE;K,BN:_SJ"#G,Y65S0)*7NS9"L0_]DWE2 MP/:XT3PK.@-Q]UEB`)FW+:LQ59$;2V9=7D1RXVB;(*8I2P+)`JC M4XVOS11A56MS"XD*RYI]#L^:E5'(D![GZ'B\$R<[[P2TP"G[!V^!>L M(:+(<&#T`ZM@?U@./GC:OQ@,WU/SG7U#JW&`!T[R1_I=WG3D?IH,EBOYW53' MOX;";;^68B\.R]H#KU\9H M.^4E&,RNXC^6]G=A6Q%`=-8I2N9DVL[4P;&+R7MY.Y5*3DK61_2GN(#N(''N MW1RN%X1#)NMIP6^J`E=1\I%7U44_;-:AK2GCE.#([RZBF7F"5RH#3C%2H&ID M46X^U.QL?%<21K(M_2V9C%&'YDO4HT>L@/4R&_5^[CX%F>1SNA`Y(F:S?B4< M!K_T5;(:F[/3^81>@&:=W3:^LJ=>VDVIQ5^D=JX-;UDB3.,+$TLWY9?+!F_H M!H1W;V5)TWS&9]>XT"?*AK/9^SS321A@BE&R,F=)1?6VMP*`!)-@VMO-/EX"?$H M-E+,C-V0*J*T>/85E_T1I?FCK[!"6I06SZ"X)Q\QZ,0A_=&7;Q6VA^R7>B_1 M.J0_U%O5_B'[Q?(7LZG,L"$%)"I+`W5?D<13T5S!L2)4,-I['!`NV_K&J[&Q MI3\D1S!*L.Z6,*7#8MZ.T)R;2].%C::V7!=D4H\GU)&@E8`G*)"4CBXY^^"" M9=U%:HC$V61FQ&(#:E0JC6/%OUM._.AKTV"W"5`:1P[!DX&8^ZA$"LW7M#BG MV;"31-<;\PMAXXM3'T6H@H,8F6;\]D<6'N&OY[BL:'.T'F/U\,CH"CSV)*** MZI&(;PY5(7629-+\'1'3[N._` MEC]<.ES'B`=0A4@(6D4MJ]+K2G*"6JIV@U+O3(VL]'SO,M:B=ICT.F;"J#5I MU)S9:-)OF464`R>LB M$G5KA/N57_("KH+H=IUDY-BEI.[^`Z'6%-R$TBV[(%70@?>3K6?ZSCOF!+)? MZBQ7ACY;9%.B^=U,5&QQ.YAF/CVX8%_=>F3%ZRXIBNS:$SO`T5M-YUQ7N1$# MW29"#I6FV+K0\W`[RHRA`9:)EFT"C?.%2 M;3YVSMN``1B+.Q[D]"4S-+/R=\/2XPD+GPB41LJ+L%=JY00KNG@-)DC\ASOP M8_RZ$)A,5?!A,.,J%=9@4#9,D6!BN,@:Q+&3V-(V<4E:_]8N>AV#D\K?,UT8 MZ>EDV2'B@^UL@_J-H;E5^EM;W*('(\X^W*H8(\+1HI]WFO#%+$PTI/LVN,R' M7H>.2X30VEB\6#9!CS+BT&ZETVS*1T`*6!/E"[J,'7KNU*$OR=>M'45GM%YF MU-^J1:##.N7Y46WQ2D!^J`<3VJ:1;Q50-'G=2@=J(`VX%$ M$)KD1690K5P924,WT(>(3-Z/'S]N,O+:5,W*%J^(APEE*<'@"QLT,B7(H=V%/V/KH0V@X;DT\,AP,MK5T>O2(Q)@5 MD;AT/;@T-;#;(IPYV_AFH=_2!V7+BA[8A6G?<.^44S3*!>:"!]6P=NR.UG*T M6?NC4>A%USFP:S&:B8IALC'$0(^B6G/:JP;`1=:M'SJA3S>?HEF(;CM)J->1 MW>+SB0[VTF?C<8!%G(]J4QD*\`&4NB/$3`Q-%$V*6:[W)\Z!+]?="0.A6'+F M2>YQ-5'_PMS,=@B^%CJG-(&0K^CIKZUZ$Q5-G([+LSU!4P,2]"YR\R.%DLGW=F M>E5V;9_VE]Z"-!.TL?!EP6R:/`TAWJ@$1BAL&32[2&K0!XSDR&S94D\VE_C. MTC/+WMOF20?>@38;JYT!>L_8$-VW5^7'JXSNSY9O'3,"+;+KO`A:IO2.HG)% MK'HR<[NB(N;C>B*+LXXXX`+;VC2O$8UO"BSB1?2'Q1:S#6=8WQY0$P_;@Z"1 M,%IFYYM[]NUF(5+3K5.4V#SF*TQN)T:,T]N%Z0T[X/2&%3P4E\'@3=*>3*<3:>#(BZ2`%IEY0%#SN)K2'Y/\U$@5,HJOUYFBV#Y)0_[ MGUVP//(6BN)M*OV]9F%+/(BW=[&WB@66M`;'JT1C5B MS2,<*+PA&-,>LBN>G7CC-OG5C.H*=S0H5\99ID,CCI(HT2<5JYTKY$1UNV])"+0^9V*=H6+`4CV9TJ MM/G#1(0_C58*?H^2!C"UOLSQRCPT'_IW%!.+?.0XL3JDBWB+$RUN+F]Q. M91"DPC'J^.DIHFV,>=C,-H:=6-JH/@%E/O0XC&,I`:1;P>*0[CZR!P&8 M]>/KE=$_4)EM/P@1C(D-X2-NP4GCEQ#4]]XJ+[-LE4]PN9GBET=BJ\4K\;CO MV"_O(I`5>PGL9#+^>5DFS+EO*]`.]+*PO@#6D?\&*S+O1DM[-&+K@P6:G$I< M<^$EZ7)2EI.>!'XB""\-X<)%K0/==$O@XPT<$8$"T7_S9R^> M']&0#P4MY]#NQ'ZZBN.J5T/5P.YQ_U83#3EJ;IH[2Q MC9=9+AH.)$90+#;'L;&@WS#R*($'J]TG\,8XWC*!Z52AM)V"W.``MV4717G9 M\_F.&!&J`MNDS_:2D#'*,MNL0TZ/ZD#<="3[N(2^8=(VT\*S9\MH4,(6CW1K MDWU,@;@4G\0'D4A%E%O^_$PD">(]M%+(Y/SEFJ8U841LSN/G3*)8NI]F3 M:#:IB&UPHY1`O!DOIC[AZ`$*2VP\GR+)<(`P%J'%77(50D^&%Z4HQ6N'>,FC MNT=KC_#$F<90^U<+M"KYI-/[T4=,)4%`BWJ0$$X>+N>%'Q+*Q__*A@W&[`=CZC(0C1"0!BL_5X*/ES08?BRP;39K(C,WT MT7,[<3-8+2`8KV;OO?*N3-RQ^"B8OM*.$VADQ]_E)S:^DPSG*&.V.GP850MC MX,);TSEZXMGMTE2?9E/?-#O^"[>Z05YBCJ M/#/$;1C:?O(M,W,Y%\M"=H:9B]7L>N@+!3;LKM7L@K28B[Q8@:+3BR5/929) M`C+&TDNF@I-N>K'@&.$#/V>9;()!?="8,%O>Y,R?+1H(EM,+7V"PF7C'0`+V MI8G@-$Q.$AI.2E(SA.C4-(I.W-ENX-MLY)>,0Y=>;PITIO"NA5PI M[-1B5/\:W)_'=!WC:#P(?X3ZAW:Q5ZXX61:-#E-N>D:O:'3XBNN:O=PX M7-K6.M?Y:'45IW<(%43I$H/-48D2RFBVOIAD"3.01V6F5<%"8CWDS(K1O*&K M4&$WQY/98,7Q&^\(?DJXL^TJ2,')SI#0(J8;^,OQ;0!=&3-*]V](:H[1F@'DZ9&:1-!^V5R\M2['7WB"#7F,"$#YO$/U^]/T$F[V2$` M5ZB)7JSO03>\G8N86W*P[F4W?5WTS#,UI+?=V4:ZV[?-1=&=44.=:72T^I;I M*'`=[R"NUGDLD[B3G:2N@;R[CE",D=-KDHM!D\Q^N9BM:SNT%-(X;^PFNNA" M0[-'`.G:RMO!NK'#WJZ2W@+1N4!LCE_>6-H#-"^SQQ!',G^#$$;N,M)?S2 M:]!?%K<;O`,C$+?K/PW$77CP/!"(=S5CBN'>E"_&G&U(";^@_5W4'[.K$_"P M94'40UYH*:D?#.678-GU"K)&24C_M0R$UPWXR].+%V1HN"^`_!H[&Z*!^X[@ M7"-'0TIK+65CNJ1Y>","`CR#H8M'5O]0UMW@:9APGX,G1^(['@83U_L0C&OC M=$YD';S90!5?*YYQ\32`E!9S!LS$1)QG#!2\\IQ>`;O++6MKV7<*A.\UFN=J MY%#&5&8BR!ZYZG#$GB$.J0HHM5%GGH;2^C0&EJ!UC!R#1>FPB-*>8NQ0#X69 M\RM+0N=SQ!ZZ[(="PX^VL3WC,)_\Y52#FR;QM2ROI[\B*JJ]SOF*<)2:XL>1_B>3T5216>+V:17F; M/J3-:.+-B'VU\+&)OU4:^5FQTT:`7"M^4&D`9L6F8/5%K?Y5[QYLD^B<#6JO M9N\#`^H5(1H$C_WS=3HX#WB<7SQ3AE#82`B(P+?-("PS*`Y*^J\'?[S*IUF$ M,<:?U?&X0Y4_A"UJ3H(7E:E%33Y;CJ]':E%CK&C8$;LDH1<638B2.J/G1-B% M3^DW!(=WY[)MCM%B0&#V\?)?3P@6Y\EP,E@NDP%]&*QFB[X)7GX'X,[H[_-^ M:3%!E/-^$.%.HE^\8Q635P88V:]S>D2&-4(6Y?F0$JF_%<#<.KQ8C[<#/N?P MMP-\MDW@>9/0S1OK+*XD511#AL:)K.*;&B<#GSKHY!R?;9&H#DJSW4.I<8R< M%FBNE>U-WO%69^]6H6\)>*[D94ISU@H=TF@3,[2)`XW";,D\M9:FX1_3MW0Q MI_0B374@=#+G8'H`E+X\4\N^<^$@F$L-XREU#8O!@DI<(*YCF%K5YF%JR`U MPA6$+!!EE61PL!^;B(^].)L%9]Z"9CD]\U`FD892Z/0AP?0HV0T]MYC/"I6,))C4#10GA>>+P>5TD+!]N3%=O7RAOX.D(8\> ML;0ASB*'2V]5A;R:KR\F^?"4+='DVU8[^2WY1%Y]R!>K]6"2_!'X!CR>R?45 M34?1YN_Z!Y_ZLL6+P2C5,$X3WJH'$;.PBPSZG;8E1Y8EKVD=KF@VQX+JE:M! M,9IDBS;;K;-*K8OL9IX-5]G(+';@5*>9U5+U-FFY\/L'#"@HTT[E7K83=9VU"=5!BP.O!Y_,9LHR83&-DG@W7# MYM79/.EW(H]FBL=`HABLQ&VDB;&39C*<^9E,A9('TP;0,R.]`-%,JH40$(T:YTOMH\7:SA=K%N;G'1%Q],X*EVI$S:PQ<`Y>HW`"UY/ M0]B;C2Y_"DP)I$!3R9WZ+D[%)DC=VJEO34*J\G>.A!L@=6LD9)$4A(!P0DJ4 MX'Q4[[Q)L%B7X\%$B0J*F7$LI#IJHA4"B:?BV@=5@PO(P&/>H_D\U"3MKS&`2K#"[PB M&S\?IY,15[%P@1'70NX*2^./JQF[;J7*F("]6A1KC-O*(.CI9^8/`@#7]4W\RD/YO!6JX0,KO)>N07.U-/'^=CFDEM0\BU)94[1^X. M&Y<\!`^6<`@3VD&1SE(--23(/:-&$$L7=5'KX`D#!A^RQO(@):C9LO-86R(8 MK-.R*6*':Z944EB^,F[U5A4XKT*AS5X8>9@:7G):?4E3TI7YCB^5$R`:]!CL M/-8>Y80FC?%=D:.K%7@]6^T'TWBIF2!?7L.;%<$89"7=R6)Z0DG4$AQ>/!S"T M+QKP4SC+U;P893?QEI11=U&QLKEJ&(^7`&PY3/3;U8PFW>\H.DKHTPN$#KD`6S5/J\(*@1>Z_)$X/V=7"1!4YWV1Z'J.IH=H`1U$JU*J( M6BW,EJM%]4KTH$EY<34L]#1%A0'AES0%NVJ=E6SW8T,]:'$0?Q$;[D&#.D'H MQ7%TA/^#65(A;B>7R-$_S@AP@)(AI$$RT;3.E#'_U^#0N8(.3MT;P$ M>3(@_&>J[EPF>D?$(<[-$$4-XQH`.;`#;--O?Z3&\WL!BO[LHX78?7>T"-5L M*?W2MTK0(^K\(A9:[!J4LTX>T<+#V2@;?A"-YA?Y3+X1$;M+>?,+#2$>3P:7 M2_+R-V8XJ,MAV&4N:94,8P%?9C2A<6E0ET&#E2XM/LO&*X5Q:\;&G1Y3#/BE4^SH<<=D0'R4A>4U.*4SJN_'Q&]1YO(;+"4L"/ M*/\^GU^SXMW2LNLBIU>J2MCEP-G-04/1W6Y,C<'H7^OE:IQG$\9@O>1WTNW* M1O3O4=Q#QT&W=,R:.N9U(^8`/4^M:M.Q%S5IW?+I.1@101L_-[/96):/Z-AX MD$]D\5X,.H/YG!1^43XZ*SJ2Y1/C(B](N6ZO'"(O6#Y]U[0WY=.\@%&WU6YWZ&M:0.E8\I+%$L/:ZB.!3IX[B8N!*`Z;T\5=]"?)P=96703P*03PJ M@TA5O`7PU2MAM[+6.*UZGMXFKUZ)`H^=[B.@'U0!_<`/6G58,CLKD-/`ZHAQ M`0P.*]KLH:DH$%$@YHO\`V''4V2JB=EDXRF18.\_^8Z5\0->K$Q>3/(BXR>U MX'O%1X"0LL!#.5UL?@"R)#%J)"O!ZQ)A0;*59D6.\>8('VT9X:.:")NL%(&M MRA:"?.L)S!7KL0J/3?8\,ME:O&;,]2ENY8:L$%%U(V1RW.'`Z..!EB(3AQ._ MN:)G'85JM0_N&^.IU!>K(HI!U24+.)E?U#(*EE+()>SN9V\)REWD_V@)?2,# MHDF%I0"D!NDP0:RE,*>C/^Q"1X-^W9-JYC=6B,F28<^090P\D);9KRT,4GD# MBNMH.Q$-358--'3F:8>,EW@QG$WG@T5FMR6WEK'7YKZ>;%>9\&,:.*`*Y-1& M[;,?%)FBGSQZ1/=M@<6?CY/6`T)7VN+/Y-LOS*;HL9]MT[\N^C99X863OR1' M76(S=/L'5HUC^<:F!$=4TCPK+E=7*"W$,U3]N@P\`Y'@/GC[8S4$+-4O1*\ M*Q41$XH.775I^A45BQ9\^0:5Q6T-697#`1L*Q`9JX*SXQ7A;58\XRTNRGM*MBOV:RWQC\R'RI:,GK%L/XQ9(+=I>V`2PP9Y MWA+;LB+D>\!['Z/IFC(8#/1,Q##;X58-A0!NB,VP70,A`B>ZD1L_D'6U/(K` MN=;,&RK]4'-:X<&W2K0SW<`0V=L(+LFHD;!+5@(=*$H^91P<0Y/@4_\@TB*0 MF510HT!F-/;:!2+EL,\BN"Y7^-?E5L/>)KA7-L'U]HT"D2WWSHR":U3O-ZWV M]2WH+\AW0-D>WXS%WWJGM*Y_;>ZJWRKY M'PWUS`H)_9Q.!ZOAE:&Y'^CUI#;XR:K3D'@GME&`_MET];`E6#.VVMMI. M_0$<<8[TZ2GUBQ.0'>8K`[Z(R-VH&JFIEJN)B#5/17YH'E78+8\J=*O&-TG( M,,Y!)JEN3)HYN[DJ?61I9$%09ESW5*W2AHKL.BZA'2N(IK*C7T"&<_T+!_T+/0C6IR"RG%8AR^>T3B+SEL/1' M\0M&7(K,9Q1\>=?JE15-4?9)%NI%%UM24.\&&T#+^CO@\[^3EXIJCX,`K#Z M$@G"TZ=ZM757R^L?'(C]?['%8E8=]HDE_42=@GZ^$)^TRH2C2Y!5P)UVQ^/MD.(XV3&U"EI>32Y4!J M9^H>_W4]$V$\]&F1L32FGY)1_B'E,=>>NNIXK@:@7BDH$PW&/O4;`NN#C30@ M6_@R>>$>H=+4MY,;#6GSS&J<7J3#]8(>Y>>3"C]H+>X1(LP^=L]T%48.#/-( M*ZF1Q]=0'235D..O3C7/46J36(,5FFH+`69VEATN&;D5G9L9^0?L+LK-C_9! MO/BM3`PM9!1N$RUKQ"#!)G=-,9QVBALXDAOAZ+FH?F-\!X\I'82I]J=TK&[,6.""83=VE(ZHW)=GI5 MOULL'=XSO^5TX@@HD6,+38)8LR>-W^$>DE("__5.=\#;K:AKJ\7\V?T.5IQ" M:NANKVN-C%[?-MU$1T8;=V-[R51\/>!&GNC`^+YT`#<(Y4S9ZCALT@\K>87- M/;ES0_L&<\&YC;T6OCB7;!71#>@;Z@+.*+Z>),W0?+/.(`M5I:T;'0(N-YOC M&Z<;4?J[V;$(]JEANS'.#-:*_!X-'NAC3=5>8UB3VN/:4(]9DJ"@?]'(/S1Y M]F1@Y.7#$Q=J%]&S)UBV-2M)$9+5VFF?0#OI$2VU&!2CV11SJ<$\2TM9S(C8 M)2UGF>V(LQ,TT1O=V2XN6ADDDV2%S`R7[-6FB5^1!*_+3*+DM.XFC#H06SV< M!"Q!!G3,,BH>C@FC]%P!0L9<7))KJUL]K M/AQ,LC6M$RPJ9;I/)>A7P[411*WDA;1M1'XXXB-&>%A@G3$]](@T=I/ M7KAHF<4R64PUPG/237\(B>5+2E"I8--#8-+:Q?]5O3(\8K0\5 M,Z'\A\$$:19IY)"6]B)`/W:??;!0@`A,B(J[]-:?#Q:#Z<_/K0Z(R2`&WY34 M")@;TGS?]W$0^CCT?J%+`PU7"B@II0T&EVAJ00T1=Z?Q.".FC&#U'G^'IOCF*BVDL8+:RCX6_D"88SF&L!+VI2#]P"8FQI]^2Y/Z3CQ%ID M3'E0FDX+0']X3:3#9&B7+Z;9]`):J'9]=V&SR`00936R!7`<"N-%EIDU`Q<$ M#$M+NW$X_!)[<''F4V^!1N-P>O9Z6+?CB<,QJ;G)Y@R0]F#Y>%\.V`.IIG$^X69'B5:7O M9K!:+\&::["X;%N/=>:B(CTGZX7K"0JU@`!HO,U[R>`H=D\#ZP%[O>EMSTY&2^K)4;;Y'!N,4* MPVDO=XARJ=)?B/YPD@T6K*J])OLR>?HLPA/'6YJ^IV']FFXRR#_8]O3],JX6 M)/='6L?MZ'`VG1+=69(P?3@H9D5.Y#$55RQ#+)X^W4V=_O2E+>V]M*!:;#Y8 M786]W(P]D`_DYVSR`3H)-K)&V)\,@J0$;'%B$=,C'1/8T(?N+BAB6^;JDM84,E%:/\,E]UD$7A*!O.T0]T7;.!L$*T_WC7$;R, M0%"*=F=3QH#T*Q\,2KO0;I01J(I@[ M/^8&8R3!S-O9[A?F$/5?)=6;9\)M=2!N3'X=?TX=O-+H*RIN^>K)5^W^TJ;/AU>6M]+.QY5 MN9/6',^YX[R$_M/HV],,KZI[>]IZF1.I?WHJ3AWJ%\9)1W6,6ZPSD-.-V,E& M>:I19$,"[F-P_-"Z:\FY\8L>.`R5,8X%A@H:IP"M>ZGH/TX%>#POIKQU'`>K M@MZRY3T8%@U!QH%PAD&NRN+;84:,"'ZC%M]<:@\7*>@C`W-L/'AG::.:%:%=NLV:#P,F$D-CQ(RF_B M3&/IKJ$@T-D`W"\*BO:ZH/<>7EB7O@4O261&H;25XB]7Y%::O-M.5/=<0R=- MLFJM6.:1>8V>AJ0J4Z$L\A\HH4U>*>JS_S#?&L@V=).-I@!40'\668A0Z^TWY0A+TU]IRNE?'U.]Q/+*%/D?_*7"Z%=?^Y/)+6-@SPSS_'NI2K0/A]941\YQS!`<6\TCA\D]BI19 M-4^?U,B;$9TS8[!<9HL5R#I1?J.C50_+F6%#??K"6T!9['(#W=C73'E!=GV7 M:P/SC\2(=VUXNKO42:R84^GIG M>%9(?@6&EB>'>OJL.@-^F;RLF%/*O5:3L-5QQ9PQ)P=R#S,YXZ3,"07/#\2M M+BDWOWAYM=U)N4[=@71@9.\\9!>MS::I:[=AI7RFFP656`@V+K0V3.1$,)+7 MI%E-\7"2508B?=IJY2&P$2%D1)0*O%D:0AY4.DY:QSSKGHPS`\7-WNI:2@SS MDFS]8G=JE"G4)!ISM;;3*#(+F=YQ@`%1UB\.!3HHLNMT^>]`S^58B'L31/D* M1`@!B*$'&V2:@DL,M!A>$'="1KK=;IE]X-6(2B`?F"KTL0E'Q/^=51Y#=%L< MKD"6KS\]\\7#I2IWH"AW>AID8W:13;"-PX/R%I`)R)G>)MKTHT5JD1+-9@Z1 MII?=RM'OM\%%'0B,B#&P.,I%@]@_7&*;F=!:*CTA_:,\!Q\X_K24.FJ'5 MF(L7\B:Q3\'QB!AQ1-09D_3//C:VW*@U0BK@`Q^-X_,$?NCK,947F+TCC8N? M7],B4@IZU4S]$^M5`11"Y%IM$4KMD5[IZ<*`KQ[ MAQ5J*^*B+3(GA=V6#W@(K*V66#,.J\J&.)NP:QH+W1"L+@:TI#.^5D%6;P]L M!^HG%4&D9BPVIJ/L8GT)AA38,ADQ.I/?:"[:F]6"7GS]@L.L95VP=0ED=;Z6 M;J,C_HA9ONU$MBW8^U!`)K6`QDT+5*\Z0*H;'IX.#";L#B;9`79%E]L4F?G" MV]QJF8CS^H)7)/N;BY4OO#6^Z%2R:CM)[^28_?/].__^.&;=]_^ M^`,Q[3O)<;LM*(MR%6^7LRTZ(A4M,&9"$#LH8(EM@\B\T>ZJ8FMU]I5'AB%ER->'A/8"-%K[H:B- MEB+?$[;9J*^;0`C4/5<'>[.+O!B)>6E0B-+MC)>=K:XR=1(\T9];(*'K)^,# M1U8]/[0*XBAYJW,T;"!_>/`@GP1AD\%H1-AWV5*DXHY4#EX9#@^%]S0QAT75 MML@=A,$6\IAY)"Y$,#8JZ.I'&K!JOA74P*"N79ACGD(\;P7M)FX3X'OQI_Q. MR$\,.ULCRNX"(6[X]ZQ`ZF==R$.'K'IGN;(DH[[M>K$E?/M5K^,$\'DR5K^#DT> M1^G1376GV^R?58WBK@G(\!2PGL"_-2GH=D&KQLDJE&2NW@AJ6*LE4XATO6O( MB,H]0SM2:(BT$;>4]Y!/3(G7[=^#7>G?@Y+^N?LFW(->,FBX*Y=5?5C:J5!E MW);RN/E+*!_T_M=%4U;';2^_#`D2%'@]S^08E^"'5>':)D"\"HR[#92`B?KB M.&8'OYJ)2O'79NK7?-S835ILK(SK"UFGT[=L,`=$#$^()4`4ML!02T)]D9AJ MXO14"$TZ)\]/3YE(!)11QG)=G>%<2]C[K602O,CL-H MPV';ZZCS:))Q/H,*4._*`-CGJE5+WQDMGZ/4\_0,B@)_STHFEQ;$^T>(XO2R9P=-$3/VE% M=K(0^7IF;T_L?#ZQP&[(JJNP8-EI]=R"WH$@TS:?E:#F@NN9L?)X'RA3-S`_ M.*@7C4Q=.>9-814I[(=VO8A3!H;HCK^E>"3T4^43#;I:?%/YBCL`0&/5*\;? MO[S()K/Y$N'[V&I.C'VBGTFIE!1#C1,:=!'V&W'7\HWE:OYH>#(>M.AY)N8\ M_-CV;/=Y&CJOT@YY3LYHJ6IMG%7NC&BF:E]J$.U,T^Q30JVLD[BK;2&?<;$: MRVNR)LN]59MZXD>DHN>[]>KP06]:XG: MU,9V!-VZ3-_)]4(\D#,UCN.BRF7P44?:_4JO7?\MP=V"9=U_^_7WK]-W__SI=3D!:.^7-%O!8&EU M6_8Y49V&N)WQ4N?)JLM(X'SZYWD+=AOIQM_7Q5#UXDVV,OOPGZ]_>/WFZW<_ MOG'[0`N3)B^S0DRZ!6DW7V13&GSW(9^15O)9T6(-4`$S=C98QQ`W%+$@,F<" M=QDV8X;GUL',0JF<6-JSL;@T*C.F17BFI4J*;A MZJ>XL5THFD+6&0'^OF08JG43CDN'UT%Y_RYZ7KW+<)3_GB^6^NEM1IH9F?3X MZ[>QXWZ1;[W[#%U6F>%='0#O(86P9+]0_N'`=9E8PM8DIL5=`HJLCS+:?29U M"8WIQ5WEME&4D5+*Z`DR-C_^E+[^O__X^CO)Z)9RX+$/@O[2$O70'Z=D@#Z` M#6E1;N+SK_WDDX5)'`Y.ZS7:Q6RWNK3]X<=WNT/?!W=$WP?;H^]WK]^^3=_] MU]<_[`)]S^Z&O&?;I>[.L._9';'OV?;8]S_?O/[ZW>LW.\/!YW=#X?.M$WAG MF/C\CICX?'M,_--W_WB["Z1]=#>4?;0UPK[[]OO7.T'9P[NA[.'6*/NW;__[ MV[^]W@72?G4WI/UJ:Z1]^X^_OGOS]3?O=H&X1W=#W*.M$??['_^V"W3]C[NA MZW_8="6+YV?E$1;8XAF25[IXT.A]YF`'"2?(,W-)C++Q8#U9<;I36/ZN"A>\ MX7BA[Z2GLDJSY&M^6;`6RBC\CI\Y&6A'Q("YF`?64>Y!=2R&L_G'V)X;*(@7 M[#R2G1)I6`7K3*%QB@=$YQL)`4Z55P[EHN'UJ<,>H'UYV+;_4&& M7E.X3J]"'1.\T1'/XT*NT`=-60(\B0OB/_E,+G?DB(XI`M%6'/H\>U6YZMEQMUC;Y M^>A1W6Z/LDV:/CK:I-N;M4U^'AV5MFULUU:@?W5>K"E1P9\4$2O(UH\>,<&Z MBN_IWW(>#PUEERS$NJR")@:C4<[V1VZIIPJUA*4S4N.8/,)2,Y4SUB9=CNFG M'^%7'&V-M7Q9L)?Y;71EN;Y8+0;#VQS`T!@>W=H8PHXW,8Q'S2,NWW%EI\\3 M5Q%TG00^_JOJH'DZ78!._\OJ=.'M].N;N2%)@YW7AM*$=W`P'%*CKJSSI)%$ M!_TJJ;,,[AH[$+%G965H"MH6BU`X;8R4L0@[:VL[>%L$[.`?*SQ*`F,B1L M#3&94T)E8HA!2@&CF34N9XN/6T//:0D,M?,M&>4$HWF9*P@^Y<,Q(<1ZA[S5*SEUR&*\%B34G0*`^0,N MS1'Z&W<$?B-QRBN,%5JWUJA5<$=:_2OIWFOA'/E&^T8B.X?4K-6U"NX9YI@Q M^U?2O>^((?/N:E!4[QY2LU;WJOC'D/XA'5SD'_+!1*_695^M#]Z.0I/(J>3K MHUE,+^QM&2ILDZJVP9G3K5.>>QI8`&GZCN?T*A.:7F`1PI-YR&@C\?/>WUR5 M^:\:CIV1_F;C9Z9JU!(V\=Y'!L$33>KE5'DZHA;'^BI7Y=RXUOU4CFR_`HGC MG%B`XIAY5,S7*Y?BQNLX.IM5?`M@6$C2M@)Q373KDK:>L6^WSO?K*IO@/C"5 MS&4?D)KF+0;.X<%*7G2QIX\#%+0>8M5S`6 MMC7T2_VAM=I&Q[:R"-\)YC!!"%-B(X\_=WV>+Z\%BY+*>]2&.]^Q* MOO@(LQCDO@A9?>8@+G[O#8(BM^B](KLBJ" M\,RBDE&3TV&#T0N#P%&6'JO`:+*\357P*AO22ERF!K:2L"E#H:+P$:S1U,HV M0`;3P\W6MPG(DF@>(B>?::I"M9LPG:?SU4+(AF3<&X+2 MU\.AZ=JE+V?3K]E>5+6I@=;T=!,T#:59I0D`T=^,[6/=57B;\2ZK$(O7=>`8 M@R@!00:W_#DE"-1*Q[5!M)>E67VL%(41J+VZ]Q>.`ZY$J M&#@6V\::LXYANU=HK`VAEJK.YY`I62MB!I_2JB$1X07F&'Z;I97R!XQ@*NCL MV]QW53J%Y8LGP8[P6&W;@U<7`0N.$R,2@8JZ#:,V$OJ&$7VS1D3#VJ-8MV$L M]"2BX:%YJ4SMYBTXSBU%$:A(IWY=%.P8E^C>;]JP`<6Z\B3!=]*Q9-#QZDP7 M]P@)GI)8[)M7W7'EN-7:9QU4WF M&^T@^LX55=:GDKNQ,-39^[+0T-#HV#QC]!!EJ%T9H6K]Q/G:Z&V`]7>ESY6Z MC$]WH\L!B;`K749N61`(@4LQ'"*0Y9&Z$G85J]8JB`[(32VF0?'BI[ M"B6>0F2[M/K)CK0&W][XPL/1:"-[9\L*GL;#K%4U)*@ZW'$,A.>,0+A2V3JL MI+H3JAXN'A]R#W((6Z3D%UIN>:IM='MLI'3Q=E`>5M^1;FIT@E?EVEW^,ND^ MB;M&QC$3D9R/W.TCTH4KUG)80SC0''(<(&%&,CT(K2-NWG-X-[H!+;$H<>3) M+?FNY4F!7JU7UA@='M!E$9=R[`72(7DU*K@/MG(SYZWC1M#7+$@QUT\-H0W` M-X6QRT9A)A(;I^`TIE.<.6@3]`+%#9G!SPH.6F91A5*#X^L970<34$ZB\672 M>Q9WKU>4W(!A8,C!2-$YD8A;$L:-YY79>^SW!)[_.*-JAW:\Z"!K,L[NUU?Y M)$MD]ER>2X,"IJ2B&1K8ZS[[6;!KA3V;,?9>187^8M55M[W]\]2J1!2_5N/$ M&,.?)Z6F%C9]^PN[L2/A5WG(DCX5/IN`9 M`B@]V,%E/I"X9*K`J&5LBI,>YUUK/+PT-RLS8L?$9]H5&7DC8C/#=-4$T`FG M16_8/$/$+BO'-UHBC@N4RSPK7M_>AJHM2[Q"HC8NXO`\VZ`.2!K&-(ZT.>!G MSN%1^UCI$T%%M%J8F$%!%2^1`E(GN=]21PU59:G3`-O78WK\!%UYZZY]QN0< MM,1W6Y(Y%ADBT/0:HEQXE2K\P>B#-3P/D50CJ!!*#$NE.#IJR^Q1GSR>:S1P M(1Y%M#J*KL?4\#L=O7,V:MZJ7O%6^4A!6="X51!WOLV(U(`.[T-<0#]_3*Z*S MA;%%-E_,5D1V9".Z":]K'5(_'/_9/^#;C:>&.UU^U>4]AZR-[\1@U8K/(9H/I#4D9&<\G[![4'6Y6#7HZ'TG\A MC6?5\-'Y?+V\2FF;+5F&Y^T0"O]P=94OI6U=BII"[+`%G"<<1D4(CQXU`8(, M&P:%.7V?5Y]9B-L&3`=Y160)@K!`AO`%<"N6@6KY[ZQTINEX0=[LYRF\?/-S+CGU;;E"V;\6J)8GN1#D*3WS?MS=RA MN6=7UL=N8MQ$OTOD14?4`"N*BAX,$!MC1[<@<3%8^(R428OL0[989FE$)%6X MJ.<$<(CN%Z0>JO,)&X:[%@:*`/8Z,0 MI5M"="FSIZ2X]ZCYC1*2G&0M;0MYZM#M3M(\EX5JFDN*,TD!.@5%DJC"W:0^ MA%;3.166<@"A'*0^(_*9BT+R'QG^(]LX.G?Q>M@"&/"-YH1SDBWQ6%-'1VC+ M4`*SRJZ\X[UBWV0G5#4?7-`=!ZFCHY;>%JF(%*D;@Q0.%R#%1':OXJ7R'I'] MU]QP$9O2R^]INIC-)EH#OVI)`WI9QO)GJD76%F]%P^?RODEH'XW@$0+]L9@I M[*J*C^+)YT1O@CP/[@]Y'K28)XY1AM&D>MQ%(%2+&P*FH_%;UG?$R?E!8SW MF\]P1/D+.<5;.TA,>L8H_T6Y[K]5=;_7]]'ZWNUM"XGF,`=30J'U6@(^OQNB M[>GIHU:,6*P5L9:H"G7HM2RN7HO M-YNU1_:L+>]BH*D#K0UK$<*.-(FCAM&W0&%@LRFU2Y=3+WHG32RGK!-XAOM0 M?""O%]E@JB!%G&8LT54VQ#.^JF0U'Y;,X&#==A1N>+=\5]=V=>TN-&*'E!D$ZG M@\5[OD[C(57?IZ362!FF1BG""JU#!;F=_"59+=8964R,!Y-EQNTA%B4&*[43 M724Y/S<0J0S_$[)2;_C@>=,GT_2HP)7EJ1ZAUL-A7K0[)BE:K,MRM\JN+UZP M.YTM6.S-;WH<(U9H2IS*D=G0UQJ'8F/QH:E+?6MDOJ4?2)RA*L?)$")=6\,0+E]4+1`2^?Q@34^L2I/J0+;AM% M=NWE+"*V\FPQ!;L8!PG(V2,[4,GCCPN&.+=^];K6M*H.0,R[ZA75Q#P_^.W` MMY]"N%/Y&['8))O\9V#88+2&515JA<'7@.7609V!J]B9`-W`_D+,R%;J MX%'M#AXUV,$CV$%WW]MN$B4!%U4!+F&MY(^=F6S+/.IQ03=1S9KF%0V(:?,= MM&WDRS<>@P0Z[."?W>[8G^\&`<@SZSF!O/4NG^T. MNX-NW\)0[TZ_)Z+?BXA^AWL8NWX"VU>Q52*WL&+!"4/;KZP]]8`E#HT4=O+V M6S^JHGW!?5PM MY.Z%N(JCK+PA0L2??OR;&!?N#BMGKX2V>*5R MTOJ0+&W&)BPTK#Q4HA[@/SN5RFA$,UJ5TFHR*R[W-(KDISVQ8I0>I=*>5%7Y M:D^Q*.8:3V:#O5`O(=)HMKZ89'LJ1B#3;VF)Q6`2D)8:#G`E8IVJ"$Q[1B*`A4$YOI:- M(2+^FP:Z;+@Y&H`'UK?-];A)H&J]U!QZS8'4]E%SV%6"&8-@-8@5L*R-*OW, M=R@M:6-M\=D2'8J='UA1`=K.5IMXPP#]6Z2))\#7(DLLN`-_M\XHEO1Z[LA8 MUH!F@V3X,HFZO*K6/N7%8)D/04616;A\H]*N&)?(.+NA"9SIS>K+]7Q.A(EN M\TGY_A9:&TMI?$`#3PG)"YD,?+8FBGJ<+@;%I;P%B,K;Y#"E76#'>LP*DZRX M7%VEV6*AHDC-"E\FS\I/^W@09GO6Y7F4;!+'9HLFC#:E,;@(\':3I8$7POUJLL39-6*TW7Q7J9C=*T MW28?"3VNZ!"D@V*4#D:CI/6!)>.>F&`HE:?9M,,;IP<@9+J@RWQ)HYF-PO1J MY"6Q_.@@DO:74](RJ20`4S2^(+U^WT]N2(N3Y#^..__1^P*&>>"[,$GF[K\WNXP5?G( M!>A)CZ]@]`Q22Q&K&R(6Z5"^\%#![*W3-3J?RKHV9/=Y2D..DD_Q' MMY\L,V)8_\=QF(M^%5RTHF1Y)>@R9P\#\8FU'^063EO1%4U>!H9#X;UNV_RT MX@>_(V['QL2,(U.CHC9TH$F8)>@V:OV?GK M)-$G2>B?TJ0<8F*=]X!%[-9/3[D!_M$YI6$`9H@E`_I?X_@)#EK<7:ZN?$_4 MK](Z$6<_@O714QPE=8;F5?&)]5Q:'SEL$M&>K&4\.81W;"IY7,E@C?-$6W=E M`(SV;##\HP^8DX'!+'ZN*&<6*P6C`;A5.;LO\@]D,IVR=-GE!A,V(>F?-&'? M9'/Q1DRG$I:ZR(L17YR?GLY65U03OQED@_$`SRV` MS'P``(GB4B@"6":05\E1MQ0*Q6MP,$O0T::/U,ROY2U@NR M%KZ0,<5LKM`85S8=NO(4L?6^A[3;>F"QT$,-AA\&$%63OQ@6`\>7NC'5@3QB MX-";:WA==1"*_\F90^8^Z,3;=$C,D54F2&2AW>[[F6&4+^>S9>;V'W01X,NO MBK(7`JV'!NMT"`>VDS-UFQ1LCGI09_3NG4%;3]<`L\H*9H?D\/?+V%/0U>$6 M@!>TP)V.=`&6"<9B:"<07/B@&KWH0"E&UQ!TRK&U:>^XOG)0QRD%IYA"Z2T= M.WH1UG(RFRMNX?]J:C+G#?\I=0U#.;W*1T1KG(I'I7P4>%"J)8A`ND8HA4PD M/1H2'N,*=B!_WF*UU#E4@ZRL0!^@2O^5EB1`G'6?-ZL)71!N)W2&]T&KC^>M MHV[;5M4"W'2]HO+2)`3E3\(%\\EZV7=:-E0@,:-7'\D8S\F(S1:#R^QG1OS9 MN$5G,@V)EX^LC^"%`D-30G7;7SFO?U'#9K*=0,[2/5!.2MP?,X)J2N-P]'C. MVS:PE@V-78^S!ZV6J[6H+7/53NM=KO]\U'W%WFX2C"^/OLO M6LDOLLN\<,_GP9.%`AY`%8&3%:,8*&38J%8[.J?#8P(%@HW9,X/W2A[I"43% MZP-)G:-S4Z-`82I`I&1(1EH(!7HPO,J&[UM0X)")8`V`@L]N=^.BGDZ7<[-3 MMD/N"ZS4%VWG5C;^I]E/#MGMARM'9>.SK%C^"06Q-,@?' M8\:B]-\S`W%V]A-@8]B:="DOJTHP?Q%@3DO`@*EB]YR?B&&@X5A*,JA%N)/P M3J'(18ZI/-^*S5'"(TLX>\V;,=YWK><>KB;'Y&NKSRKPRW[?]_C-OA0`_7=N M*GLC*0'?<&6NCPYU#[[O8HK3[46@#[G9A1SKP6\V`-9Y4EZ<1&(//9D@H%\3 M$W/U*/!Q7]XR5OJ!C;!^`G@88\1,)84+1X)Q\?ON9J2Q4''>;8B0*5BIGE9V ML$=$D,5DUWG3T^:/*ZJ5G#6)0+720TT%I>1;CH(\]&@T8G`BQH'N'C!KI$SD M5^+P!V@$`O1DV@ZLE&N':6,/*0A?T>)ROR6^N$EI.AB&G!!_AI`E\I7::=MO M"#-+^P%J:*ZU6`J_?M8!3A4'-W7;HEG282DPG\(Q[_:6W3,: M=:[C9CH.N::;F%*>G&MQR/UA,KT6JM!LDLM:KI(OR:133E]3IAI\)-[9:;ZP M.:"G-F]":#@Q0:K!!\,=@!L/50^X#QR3ID/#M6#96L)"<9=XTG9U#!O,IK;M M4E,KFDWABP&S1I2]SFQU!W$,\PJ&?%1/P"HAMA^!%8-SVXEX;0V-+Z^PX'V& M$P2+.[I>K8$:1E@E*FTX-<57`,BR9*T^2`]^ M"2V4H]_7CVSQP<1I078DAU:%8A>[4]C=IN+ MLK$,?"7=Z!;WFI?A:"=W4K)&M]PWK?;/K-0OQKSS`7=@5Q#O3H.X1+0;'ZQL M'BEU.13)^:M2CX-3*,+AH/`O7.Q+\2[%N`37$BSC"&\@'F$+/*IDPLSG5'I6 M,F$>1=DP"G`%L"$CAL-3X]/JMH$]XX$$?; MVN/2,5?>0C'1FI$TC5`>-185>A=0HFHO)EA6$F2109I8(9MT4CL11(992SEV M.PG\J8!R*+BR89=]T^O?(:-J/T9$.]TXGN4&>UV>+:E=RK..U/,N>AXK)S-7 M+9U$O69.6P&>`G6MZ5+<`S/"P]L*-8:(F1BQ:I/1;=2>11R2?Q;A"$`&$P:L MQV:P8EI(4#=S/.-Z(9"SY&\<&<([AK M!%++CR*OSLJ7<)9`QYKFR@V+211GSL.^4)>,,=&A)]^/L)`$8)S5*[%NM"4, MN+^A1%!4[Z+E?[)J]DJ%8',$`?5Z;=]5!(@@[5F2M#&RN?[YHHE/(XY'T51-CR88`J+\AU8 M]Q&S;4.X5QE;>U3SR@009D2.VR4A"&;`M M+A?ZS3(-3+.@3E^M/=ZB@D509A+TPLNN..(C>^'.EJ75:F-CTBT5/89.[FTT M$!']OIN>^75[H[TU!S&L\S?HMH0.=&@4_D`NYF8D3=Z+$1`>G!DP#B,TP1O` M,33>-=T'GEY4\"54H6ZY8>K#IY35-W!*Q/5@VYZ_>AS@+*UYF)O]$@ODYXH9 MH;:,0;):4P=M)$HJ^XG93^1"(F._408<-T`ST(7PX&%DPE@*H5P'N9[3/^1_ MOQXUCSP`&D#=*D4JCF>+Z\%BY*#NYU<*P(FV=*+\W^I$-.E@?=,2%8&[1SS2 M$!@WVB4PF6&.!3P\TSGVA7`CZP5V+U;Z;G")G7,`'6I!IU.'H!V%%$X`B>Y1."40C`.X#$OYM;^1T=H"./OP9V__%X"PMS>.`' MB14!!I]Y!EZ\M.(D/7#8<2=_+,\X+]_'1G8:K<$-0(W9QP3\@AO4#!Y?B"@O MC?+ZDI=N.%[-?D9CHA"(L==19.#$C)@_-HQ%=1H7_@`EL6[9G,Z+[3!4+-A* MO=QH#!<1@PA0"4X5[HQ,9^.FYXP&O/'DL7%L6%I4`5^]ZQO/5@`M:MH&A<=0 MH%/:*'5-5^:*4OXW0&_.%R:23;-%//0Z7=^<+Q2P6$$0EDG1K,'YL9AM46H( MX$U)#@/7()MXEVIUI4ITT_7(TY1TD1`W,PPT6];AC@I3J#'^<)&MQ1XX=S36 M;EWB-"1CHI@#,SB<;%ZDE?4%73/%[Z'?WBM;A"7(H/$S5?$ M?^/]9'1^6QL11AX5QTV$+J*@>TJ]Y#XLN#ND\LQLG&10WA,;XP`ZY1U##I&> M0@='RSS/_1BF$^KH4ZD\04T3?8A"GI6T[XV/]GO9E^`F"<+O00CL#EQ:3\JV MJ)I\!K7$!<&2>9B444<0%N"3$A>D!'_W:6LDEC5"!-9,7(F"%FA)O_X=]47- M/=J)NT*[RDQMFMGMP;S?S'R[E-22VZ&:W">J0#U2@BDA?XI16`IF8.4VAE'9 M*!LS.G;(:>EH-3E<\O2H.JV/G="K*L7KBW'=80+VL3(&60E]=O4V^A\4LDUT M<&%T<'+K'6Q@@#'9%3>"V^SA@UUA862$']S""#^X2Q:^U0[>!0L_N`T6/KM+ M4SK8_;/M#V]SG:\\N+?8NYI&_"9S\_P6./=\9SGW?/MCVUSG*W/N+?;N#CCW M[#9D[JZ8#9AV^S@-NRB$LE[&T;#^0XS\/DMC&^3_:\N?V^S M@R$&WI(`W@(#JWC):M&29I?K=)0/(&M5>%L:=>CF!)ML,+6Q.7]H#N9YJZ0X MP3-W^3,^JE0F8VFH6[.H;IV=M4J*L^VX3<5.TYVS!L'LVV6VH@Q;8[RJ]`?X M-$?9))]NP\.]`]VDW:)7B3TIO]4'N80RZL9"6F\PN9PM\M75%%Q#>5R]9MP5 MB^5W,MH5XYN;#_(%:"J&F+H2\$SW;X5/WOJFE(*P;S) M]5TWX;$]T@>NO_2294;F]4A\(M]4Z3Y[D`7H$X7,;IQAWUND9*M-\S&P`N2Q MQW8W/\F20A&^Z_*C!E)MO^O1YPL`AUWA(:'0+[^96DQU^!^ZP__HG9OMT)]G MK`3]1IN8PR;FC]DOV-#\,?_)VX-7P_HH#+2^ZZSE"-`:M"Q%X$;VV?WT4=YO M*?3Y#4>/W_KS43RPZX!N!);RDQR.3_70/6L2VS.`[.^_:WG3>M#2'\YTA;;5 MI3/0(WYA9+U./:@Y!@GH%47Y1A"Y79N\YYLC0IXYS>J/<4/D$'AL0(W&QN5, M#TLY*@<2&1-V,AV\SU)3-$%,J+!CO$[^``(FD!:KH)")O''35B+\8M]G,=K. MUC[(W<<./?[.SV_1HU^:,N!E3Y-KKD9.W(-,SWREW/"&8+@(-X!0*4Z),C_D M`T9^D5>K*4WH=$B*4Y5QR%.RDW\NQ.,%OPEE.L>YJA1U$]]JV'(\6<`@JTUO M%[EIM\Q6DS9+2,4O;X)?^`'864%O>$Z7\VR8C_/A@*:O.;,@G">GIUX(B^S7 M=;[(IEFQ2C_D[.[964%O2;EAE+EQ0A'#^/8VQK>W=7R5U>N<,(9D.S\]U8=> MDTYWB`$]W\I^I?]#;V*B$;-D M##YDBU5.J;N:\8__]%'07G75_MM@*'JU"-%M<"@:P6"GAL*0K$PZ,>F9:GR9 M(>Q3MI:S85I+7[Y!1P1S6P\OF:G2MD\]TD&4I3)`U"TL@B`JD!H`G$W M!]<#EAKX,GE99R$6HI)4Z80N-,H9/!IKD4BR?9@&A;<)<9,OU)%C>S=C0T9@>\C4Q MN^,NZ4N,^#UW%!%^TYUHA/WF2V#6WJ'\PFUCY6_1_GWV%>>4-X-B-)M^/:27 MLFY"UP-)5QL@("_RR:`R2M)DP6JE`U8MAH#J9<+/^_!6V+D03AOVGFV@'QWQ M:T."=$PTP?6CI"D-T(PD-1"B=)TC*$9,C_Q#/ICHF7BH26:\$VD=^0-OB*,^ MS:;3V0>V-25HI@#06%-ZQNH=F;F'=,Z:I.")3BSLDT=(09\L#$W(P/RC.5AZ MFT_"`-L8*8M,EXBXV,_.E^F=Q*GF.I4Y2](%*ST2_"<-,45JC"MVF(`Z8]'N MT*]\7ID$,J:3?R+Y:10F@YJ]7G+40KN.+-AZ%^HI8]A-E(N;86(/#RM_$A+B MS]9KSML=42E-DZ-XN M![DS\UOJ7EE,R224>N,,(D_6@#^PSP06_^'.0C:8''5PJS%%&SQJE#B8;4W) M;1/49JQM4Q3G3YR&]>V<)I9I&,6\/@D-EKDFC)2C7J^$KL2<$V:E)KSSH`<, M+?TGG*8JEN!J;Y,3DYZ37@1_IJ/2.>'M,^#B;D[ MY'PRTNUZ%\)N-=E%>D<7=2FWD%853U=Q#N-PH@1(&$PORH_A_%U`..;ZO!(^ MUE)><)_C"A$^#[IRUZMU^L3\)!N[/1RJ!+P?3EEWS+W>D`JD*?6;Q,#`<*T^ MV`%?3!5D&O':U.`#(D">Q45.;5F`_'4VF[PC@E3%65F,P^X/'ZR&5P>H/G>V MK5Q\L#S+EX'=!:A+#4O6X#+$ZY#/WGBPN:E;$#7IX=\.6M8T.>,/R25J3>`D;6^ M*U$&YLY7"SK&*:GQPWJ*34=6V/8\TN^DO-H`ELNMZB2-%K0G7#D7?B+>LBJ$5;+DU3$/:OD*/*M^3BHJH.E.!]28 M*M9T*BJ1>T=85I,6;AU@$;0.70&_"W7+6!J>FV#LNBZHWRH;)<.KP0*X$)WW MGL4B)ZI1FI)WR$EKO$_T*8AAG\=]+K,5G(?DLU1-=NRF@SB.=A6D<90K(`RO M*#1Z2K4NJ=F.[HS5"P-]@:V%YE;Q0^8DG49*N5G,(>:?CY7T%`P;GV%6XL)5 M\XHVA@HFPMLNS_.ON(PQ^H/UIE8G0HRUS0[$88YSTF9XX6I2&1':R:]>]9RE MD'&W,#V;G"^GU!4.["/E0\%OJ47_S-J4SVM5[LFF>^5V5[>6X=7=EN4%^E`' MK]Z6\/*[/#1)$$_+ZU_7@TF^^EA^V*IZ`ZRC2`.5>AO'7+5I@GF?&J6)[6ZZ M79J8$3-=;4=V:::,0_7^E78I]*2_01E$7O]@*T#E[AB6$0N'6H.5A/DMV< M)6::E(S*&9SO8_EYK[+W*GNOLF^3)I;K!XHFX/SI`H=%CT.G![`/8:U#\[N2 M1&QG&2Q`:!Q`HQKY%F109Z\5MR"C-N*]!S%:,Y(3ZRR`&;M-LIM\.+M<#.97 MA$J35.6PW80!RWG1>$OA[)7DW2K)^"0B-97DIBE'[D!)-DH33$G>'DT"@HK; M[WQFZM<]!=LKR(1!;ZK1,Z\6Y;+*KM$#-;H^:6>DA]`K\'`'-M'0*N'+;LG( M,CANGIF]1&U0I3MZY()6P'OEX`,8$WI*O[J"=EPY4B^CQ6YX'ANC+GG?;1L!&=&\T834KBFP2_`KE2D;"O;-Y/J& M8GV;4OW69'I%B;Y?1.S=,GNW3/,TB1.G4&OQ"0[GK)(\\O:#&I?]]"K5:]IGMQ`CT/4P=.Y$48_#J%;V1=>EL.U6YSZQX<%9-;9-=)JT5K M,?D^;U/`+5G`=P5':7/V$$B`9]=W5HZM6B'$VSB*]@=?^XP]#/KHB$N) MA5/+FXTL/`Y_JTL*R<:*E@Z._C1^*`;,1.M(2XV,,%J*S!E2B/[77V8R*RY) M(?:/O]1X,AM06/Q??[G1;$U4"RDH?G#N0XM>4^13"E3^$G=RQ=_/Q``.HZ5? M8LBN=*[('BGYW)8PJ)$";Q22=XK1U/L:[%I[XCI(&,P*M'),TK4-M/*ZR(M\ M169N_N]L5%DS.[71:XVBSJ0!,NDCZ>`ED9)&:\WEL+6.-Y6>-86"']XO52VK M21PA=I4"MK:V(`S7"V;?ZM.QJ\5'X=R*4>Q\%X1`D38QF/Y4S9,O>A_#3FI$ M/DJ?VI`%I#Y^_+A-KZ+5DTUG?Z!M])/5U6)V36SQZ&3+OJ-TL8R[T9#APU75 M$LB7Z4\__HTO7^@Y>/)@+"U\O.9C\(Z$4B$-:>FDIZ>PMD\[ZU9$K$EOKTL6 M;9;181Q8-LZ_((TB3C;,QU;NMI&E(R\N0,Y55;BH0/1*&AP'WH[)$G;?P'MO M]T`9.(3EMS&(BK=V(X-Q]M-@=_>0M2GYL0FX28:%:D(^I\V8)_OK"WJ5;2$! MZ18ZC8C[,!6-<])4TF^B%^(3F?H'W4FW2]2]._.R! M\)^Y(*G$BY!839&J&J]B'"MX%!T\O/]^CV M&;8H,JAH$A15Y8^;H>5.^M>$.'*3K41*HVH>E(WEDT5R5%A%C$+I"&Q-%GD, M!<@<-D>6NTAJS\$F:!-T@_AF64C*?)GT3H[K.I)KAN#7\R-;?J4-`F4:"*FL3U.BH5X%UC[FYC](;:YEAQAP/PP=+=#A+5981[/2EG^UN@6CJ%=!-/`> M>%RE#A%#HV%)D*C!#W@F^3BB2MR@FQ;-%<8*6@!;&:G*OG#4KF>3CG?:(5D7 MH5EXRB%BKHY]!H&1[@H75I%+$5G8[2I*43T66% M@,+A?T4ZP'G*=L+9(#B6QQUV=4KI!:HHC"1F8"R'"UI%C*`@W+$P*YX]K\YH MV^E#!]QS6KTG.%)LV-\WL9,SE1D;>4J4!1 MP86Z4%:,T")TBT+APPH[\ZY.A`_]HX2L$9HW'A"[3(>L&C%Z\$X>T8`R+P"/ M'TN^DI=Z(T;B]T!/).@LM1A8S@>%#LI=A[HE>.>RY&G+JN%23$V.OC7I88^` ME2.FQA_N6$G^5=%9!LM:(R[0LG$0["Q%(H3?LJ$,5NA[3!4'8`3=WY92NAY#3A\]SMC0.\P[4-<[=L/J<8 M9'=4EJ8\4R#8[J0%AI()%CIWKL.@YB$-=L^O>Q1:@EDF16&8/]MU[J`ZM M8Z3:QTIX3[6AX(S$^RBXK1YW0TF\G4->Y4W=\G$O9SI99AP"*4VET6?ZY8.; M@AM+`<0^42EQ*DI]CZ3W*@-4ZG>B>,IGJY9J[DJU*@@Y&_UHO5TW)4%,: M2H^FWVQ68N\5A-FW2BTS,KZC;PC!Z?9DCUX_#<32(TNPPM)GT#J%#S%@2':(#QH*^19_/` M=S.@-2==I7%LZ`='@VQ(11_1(E1J/.&$&M-*4HV,X^6Z%IO8\Y>ET#\`XL@H@EU1V8".@"#"KM3KFA ML+<4;L52V&3EX\Z!P*ISQVR)P&KTUNP,=PF\C3'9P!YQ+([P"I]%;.#R*-Y` M":S.;>-E8H=F;_KO37_CCPL9P#[A?1>OO&E<:X27![5E M4P5O@&W.?-;""G<""RVR13$6-A9J:)P_N;G@G\FXO;?%&2VB?)>S1>2Z?:^: M]JK)4DWZR($I7\\3DMP0Z.MIHQ<*D3RSG[J6/=1%J]<$RERP\3?B7R-DU#0;Y8.B9;P;6$=)+ZSGH?=.H7?SJA.45FEDHO65 M?3)@+L6+-M#E%^S5T#IR0]YSCXK4I](`=U!QD=P[K46>WR:A1%\4>0@@&-,83;]]]E_[UVQ^^?O//].__ M^.&;=]_^^$/Z^LV;']^<:4.8`>[PCO$P>G4[XGA=#.GXU^4*YE%FW::\`9E# M?+E@$].^10GC$0@*J5"!53!(984OT,)!QHDZ]RGH2[,EB)\T#T&:#8Q+P($- MX^3HTT!HJ?*+QVJEYM_&]5Z!=-3D01U_,!/*C>/3QL%C_KHCX[P8;9CLTYBQ M]."/KZ`O`9QY28^F`PV#>Z`ZSK?)X[8Y*P4RR*DT''$F M-Q'O])Q81A;38NV5T#-O^9QGXV((O$+R-2;GYPGW#^AYK*N!S(3Z)7:WE.9J M9XBL,;QW5<5AJN5U3L]EN02DQ!@.B&8Y.=VH%0:CUP",;@,PCBD,<=3NU%2# M3+1'.VLP(87/0":D&IR$5476O9^+COB,GA3WHF:=>5BC$7L:U@71W1Q$["3< M+;NI_'ZKN[-5W057Q(5&AB?K80=?AOWX4_KZ__[CZ^_D,HPOOJI"=U9J\HRL MKZNJ+Q])7_A(U.A18'G9;+_8ZI>T%=L]TB\VDA\W/R).$(6^XLW*3*T9^1^XFT2UT:G)TVR:KC?PIVS"NQ;3,JYQ M^9:9/!&,&SY>;^9\3`:C?PV&M(-\ML1FG_6R("S*!LTZK^YE0UB1,:)=<:O; M*Y!`[J[*ZU_7@TF^^KC)KHJW!=99I(4M;::`*WSU[;QMW!ZQ!K[(;D"V<^7L M;U%;AWU3#@#?HO*0%W0<@\!P4J5%@S(&TT(N-JGD7YEJ@LN5!K@_F.[4;C)1 MZC\HNW=MXI@RW.I3A"3W\?LF5Y=K`UU:=.IL[Y?$4)]%_=S*_#?8& M"7'D7&]FLD??KP5V?FC^5Q%_P);7LPVTSLPH9@J7?BIVWA"K>IWLEG2? M!_XM:[[`KFQ\)]6N[*9X5]ML0=U_]-@J[QZ;H957+=Z)$K]L*7?*W:/9LE^V MU/NKSLKXWA#DXV@O6!S%+`_NP8;Z8.=9>2_X=UKPUV):*D-EML.F-0GX5ZCU-'5K0S>?1VCP;J.B.[67'AF9^KBU]N:IR3*:]"U/2)1 MM7HESI"JFSM>A&KAL[5]KA#=*M3=>>HUOYM65Q+S9,O`D=35GJ1N\OOO2K;H MUSW+P\2K<4"V_%E-5>PWOS."BECR4GNOV"4".&BXJ0L@AN>-!8V]% M]`5!G*?)ZTJ7&H:QA"[NR9+GMV(:$#T]-"H>JLS\$+([:BA3F)7\Z+@(T7>? M#LP`BZ[C-)2O2_8(<`6-[!SLBL[VP="8"KN8&8![#;_UO9!J&FB;VBNP$5)I M#Z1A0^"6=T%V37$)`>G7%2!0FLU9M?PPE`-UY@I31X//B9NOC,W2AG1]V,586UJ+#"&\5R MPG<\!]SQI/F=YZ/@N(C49ZR$.7ER,SY`SO5)]LD<@_#YB#AQ5;JDN%4)YJUI M+",^IY"E)J*5XD[KUK2ZPU'C=^>&AQ%%E:14N>0)10[!`Y7T#[?\_(;?SD@Z MIX.YZMR6Q1X`CR$*F_>,1>Z.@S,6"/:?U"\8VY6;_0G)V,TW57K)\GHP3Q># MXC);-N*ELB0"J0O66N)5#^-`P"W& M`JP",QH6@_$V:"\`Q."F#L:FX=48Y%ZU+US.OMU:_-O=%@,#:M3!J_=93ZQ: MP1W=OCD7Z>(`E[>3PC0#>TVWA>&;F$U&,DN[\;[(KDNB;AU'Q`:F MZS8LU^H10ELYI1[M<=A6_,X63ZJ7]2W9O;/J?J=TG8YZC>/:`#>U=3>-4U;R M0-+Z$+H4E%2(/POJ'GRQ!1D+1J[O@G4/PWQNDNPS9M4-`[8C#JUN'K(=/'EZ MIT';S05<5YGE40M0ME\,;#8YUX>S^<>-LW-4L>F3Q@R>_3JU(9-KGQ;H3Y`6 M*%8VA1=5'N,D^0N_/8G/]<]_RBCI,1.8U*QL,CS=7/?JX(/./L'>A\3@UEC8LHAPB`8\%,&PJ M;_BB`G##S5[Q%V^2W"LIN-_[K"HLS,D4R.%^N].)(N*?40*?!IT4="SR7]<- M;:_ZU@'OYH=\GE'Y*02#94>9;ENQB:R.PRA;#1R*`Q6ZNC+.:"\ M.+"F6[/4LH!+],?\+4((G^D?QYN@-N1.E`.1[8C&F:]YUL,8;[_2W_;!J3]' M,E@\/[Z[NJXLKKP&(GIABV#J:&F&:%[[K@/WN,-=Z.90^>#-&%"K5[B!HOJ5 MRIX[(IJ]6GD[=HEY2E=>3K!K)HK_\I5=-UU*./16;9^8AANSD"+OR[D=RRE8 MH_X(^>VQN[[PIM2A?J?7W01\\7>2YLT6HI4M:"?7@9QT0(YNU8RN)"!OQ[PN MKU3O6JN]=1[`;&NV:+3ZJ&Z:^I?5'+5MW"&X8X[2?6HU2QIKUZ=UH9[)H#`^ MJH2/Y='P9J[YJ\J9^(1IZF*_'>/F_45_];8<[NJBOPH3SM(#5>>?6QW?)_AK M/B(=9U083+AB8%.`JI(/V6))9IY3!+2!?4-GX04LB)CQ@KJKA3PRBNI7D`>8 MOJ2QG=H^E/3AZV&00)"V9J1,>?0(B#5,3+T9%*/9].OA,%LN<:+8)0!-D$\H M21:L7#I@!?TDD?T],XUAK$^*'GBOD+$6-JLX1[O!@'M%J%O!$*3.YZ`X=8$9 M0A4'5MW_HX?9G5V8U15TU@70Z);O)\FY:<*/-4*_C]!HH./.NBNGS#4XN[/*?)?R0JR2)]?`4?>7Y( MER#3>'/T;_ER-2",X+C/%K.5]Q2/APQ6V6D^&DVRR,+!I%D2R4-?";_#S%&L M'"O/-<.\--.]_L+"O^*&1O"4-8FN*"M81 M&#TV]-84ZX$YAJ%)#X'9@$2^?:0'S@SNN5.8=BW92M]$CE!0&=R(H.NBE&<9 MWO5=:*K77%!4T%Q@CF":1LZ4.JHK\6BO\-P)5(PX*ELZF_A?F0W[>5@_VY4/ MF&DEAC9`WU;;,*;EQI.<,F%#O0;YL:Q(<&#KPO5!_4/6J!-+NG`!M&:"A)6UU M<,1/B5([F!V)3=^#G)JP((T$/>ZS'W2U/F(_B;Z7$>E!X5S:J"?-J88 MKF@_$Y1,+I&,CA[*L1;745EY\DVC+?(`D=Z--&+G`RN8:FL5WJ_/8U](TU:0 M!Q,:/JU!V$XPI1G(@9>M[#S"%JA>MQ%#7WB-FAAB/#-%%3?1KF6GV$EWD.`_ MVYTO>4^\MVU':Z\7=?3H99J4!D"""O=SL9Y>9`M#MK(D#P=`[$QHV2_$XEERWN>%?Y@TNK];C\:1)0S`H>.Z9B18,*U!G6#$JY(9QU>5FB'7"-7Q47L_`D]09YD1>7 MS(*G:(MO>$R4*.R`H8[_:5[()1DL"'T]4YH%2)KZ?,)8B@]492N$J7',G_"# MYXP_^2(?J4-H*L.P#^0;!1*CL3,@ MJ+U'A4A$5:_VMH?VV![OE=Y,]J:*$7L%;#P+;BE-G?1R#->?R9=?C!'V;$+` MC4-V+;EP"@+,OF>8V9IK9>PD?L]QTGN`'(?O?W&X+.!?HDQ);3O/AGD$VT0J MH7O+7F&EM!&#?M8R^=[.N!V=:-JI8W\Y:>"9(:#E./_-]TWMUGN2>+?JU MM]H<9,NN\8LA*P#774!SF\I:?*@6W@T9`0M,`^Q0,U`N MJ1WR5I%-^%^5,QSF9?+Z6(>/L53;@7O10STF/$8LG;V@0<;E90258UPJC0^Y! M84;/*11J:+"(F>IP,/H@G*H@.H$T^55B7%.KXFK\!,5";B+3M@#:J,:1ZQV] MT2Y!M-RHBYI8'0'LJF1!G>4%SKWN,LO+QW:_TL%H,%_EOC32\9W;B),C6+D2 M,$XI4O%B/1Z;Z]"RNJ!57CE=YO_.^-).3Z2S5]9W&=:))<+IFC/%0)"7X(Q.\!<_*3>ZYA!"&-AQ`3>Y,!'A[KFD&)5N`E`-0K`=0S`8FX)3$:NMOZ M9Q>/P>UB8>[EPJA<'+D"R3\S`MQ32U@I3#H)I`ED)T\H2S!,KW87J@LV1X[Y M>]*N:9B",P2(=D:,U@.L_^N;;:2&YBGN@(@Z%)M*[T@79PMJ1'$2G)E]I.%@290Y: M_R*[S(M66["#Z!'KIEKJJ%[%V`)U.E7:IWHYR+$54Y-V87U5NE]&_7F74?XH M0'.R*27ISD-"1]U7A3W_FS=7&Y)L-'!`&8L+5BD$VTZQPQ M,R&P8T'S_,-L99R+1_QHZF:I,UV#`[&\7ZB/2U0AE0]3PZ=EEI99U'5+AA\+ M2(%[L/X=E0?$GIGRG1>-N"\%'!;RV&O-NX,B,+!]DS> MP?!S@9ZSO`[+U21=71';_VHVH4?MNL_Z4:<+C!DO\O-H)J#J>K`@9L8R6ZQ0 M1A"232;[%7<2(`751H0D$KM3DKSLP]T/`H+/++:M((;Q4)Z-EA_$8E"^A2\A M5+K\.02E"/#*8M"=-IL3J7Q7P>+O#8DJ&)>VG-A;.G=)6_-D2QI!R)B\!R'Z MVW=FF-E@N!&@6%`X]GY3"_'T8C!\3ZT73+4S2M"X_;ZDJ[`F)''TX@\7*E+3RCZ>-AP@#[88RWJV2LR%YA76W2E*]`-K/<8D1I#.7"5/-/ MQ)PU1.VV/);C;&'G(\\FI`E/V;(A<657`_,KRDZY10:)J^W7%+?%574GH$>U M;H/;&B%UXK,IFV#6F&LE:FG1<53%K7-Z?V\LJG8W(QDG321_L M-*OV';[$8;A5C66@9<3X\1`U-M+2MT'_H,;>XH"`F;_IP!B@*@U0B?AYF_\; M.,WI$ZUWV9(_192"?'RO+1F6=(AE=F%9(;O\U_DYC6)@J*B/MIOK)28\;R$>G3U+[N,PG M1J:$;RR!M\;,H_Q)K9\!<,%Y2)^']%#;@12=J$\N.G@W88J6;N=FHWQ0:"]8 MO,/\$,P!AYKMK[!(D2`L`:#;;K?5]+-9A])`D[;%#<[CCC7,CK-BN-[0.TIY M*;!LV1'^#KM`;Y?A+4FZ9WP_+,7XBF8:@J6.:LT'1ZG5FQ>F6;N9!^/^'Y^H M53PK5?C%,C+OAF\,).+XQZJR(WP4+%O!:=KU MGB4W)*(3#RS8D5,CL+3MEG8.K1*DG8MJ`BYP!.<)EJML#DX+&+DOKF?L,V&O M'A'_H*QYK-9>$;\"=6&6>9%@F]'#YT84#7@U#5;6>"T;]D(064FUMF(U(2;"AO,@=B(`3J\T(>`;+=3M^+WAU;IX+WOPO%_G`@DU&3BLK>_=`.[4V)7H`W8P.;''CIFW-B#M">;/_):*K.C;UW1` M(6I+)6XXXQSNCI0E7Q6GZ1;..`Z:N1P-[D+59^5,.\94`(>ODE[?"]0Y;R>! MJ]9B8%?T%?J8$+%T`H;-=MFS^@%@<.M7N?UR3_@5B)FM\JTC'+?`OQ%M-,3' MBEO!&AP=14BC2U6/HHX)X=@6'CZ_1QK/O$2#?-&X(>% M^V$XKB?$#\:Y&\TG?D+8M8#>.FXCK&Q"\N/G`OH$W#=A4EDV:LOUU.#N973A M(-Q^(=K=ECZX3S,L6BW361G;4O,3M_R@DMG/3>=WE?9V5`S@ MD&I&^?OS-V"28)-X[M+S//8RQ$W8X/:#96T(Y6P`Z0[`186E6P`*!@BT+)O- MO#,POT)P5JFA!RD8&AB_L@#R.QC/4DCX2:X['G[#KKU=-H@3QS7BK#;;"=R' M8?VYP[`0X1$3=5$AZ**IW!)XU-1VN-]C?GXFTV$?0W6?8ZCN;L;Z2FO=5?,T MJADO7BT&,IBA+>(DZG3P/DNO,C-_!H@R*CE3R$OJ>ZT37\91P[=#@8$:\+"2?W=JFYF1`Z1G\&KCEUP`#\K<;RW3M`_+NM\ M1TEX=1Y$TJG7[':N((,8COBHB MX(=3"1VX&Z\,8W&9)D"+)\$!#;3M]-%^@<"`\VZD7@J(M8%,@H^D,3K%:N M@]&_ULN5IVGE93SVK),-;-ZD.;,W#*HJ M4N8JN[.WAINTA@UW5(Q5["3=MFWCG36.2W9'4%)6,9P-4C9N0'M=8_?-H([W MF^TM[+V%_9E:V'OWZOUTK]ZNP>O9C#$+;Y&)P5(BLXJ'PL[Y M&2IU-W*XT3B,VY;/^TB+_5)@-Y<"&V@4JS/?=*Z/`T!_7*>=-7IQ>C[L"D((*`/5=VS!-R"9TMIB1W_8MTYF"B" MI.J*:(;ID43P$R+A105)CD\'[M6"L=?T@NO8#*HVSR4HJ\3?MUO[GMUF[M,ZI1/PJ]7?[XAB99HZ)]"<1T7HW2A>A4N=^ M2FK_'L\=2.YXJWLORG=7&'3(X>_*IC^C!S4T-C;)JXKZI,1'WJS(]XKX M]7R^M[B;$>?JEEYQ%,XK:8V<*(V+^6U8W,US"S%]7\7T;EK"XO[ M5L3QG]GI:ZL]#JVEU(=5YIS*.%\LNKU6?O^-[8]J?D(B4\*T;3 M-231TW300R:&B@-EM"=0X<2@G=3@5$4(5TRH,IYM68/<1K5:!!2%!)]KM=8I MI1.LH>FUUVGW3*?M^N+$X,O=7)S[>E^\S9N5_L?2Z*\7ZN]B(4YZVL]LX/&/U$QY;98#&\VM#- MLC]^8;Z;.L3"8\]WRNRSV6RW2M- M5FLRXD>T[4GI&.VY]TB<.JZJ[SQ5KWKJU8_KE3S5>@`>Y-V4&HB M5=I%#UOKYF3E7L=Z2RNC]Z=#7-0=KZ6GL;NUCF-WMW4>&W2U#EZ];>$%:,OP MTL]!Q$`UAIA5[7;.?W?C3U]K0L9*QLKMUVF^IAC=1([6SP_414C7:((@JX%; M/G=GIA7I:FG;Y7E2N-32KWM8%KX>R,_=U:X;E7T$)$SI.=Z;GN.<"=7O.O4- MYX[.Q&)%?,(CX+V.$KS&^VY'27,MO`S3D9ZDB$27YUWQ$AHN- MW6!B^$@\UX'3&PQGZY6ZQ-`!H!PEP<%%ZY4FD_=5C#@H;^[5=3OVFQ[,@T=+ ML+O7DM]_%Y_!56Q\,/IFZ4>@G&V!J6@0^X84.M72Y;7WT$ADJ97PD[`?@@`B?I@^U67UB`[LA_XY:"RBV(P$<1]H!)K*#P!81*G0PC) M1=W29YQZ,='.A.R`XXB:]O`T! MD.[(Z7WT+ML^YH!+FN[)HJQI;*U0+@:]"4D^<[%84A];=30O0]T8!.>FEKTH M;5"46I$*]U&D^KMP#T6K(T&#$D]U^VY$+*!\E*C5[AGG4P_QR8!S*RXH:O&R M00'7W**E*B5*PD'$B.4R&'&''02$#65U"!?J<(JYSA['QKE(/M1`FA4CC]#C M:S;VB^5U0B^HUU#(#!0+']]%ZF+RTU+IQ6#XGNYXX>%?$WEUA[W6$ARA>=$T(,;/:O$6GT3$%Y/_C0`PZ?U6*=68ML5H2OL7F'M`>&0H`^&`5:5O?2 M(X(FU%F#487^&?W`O4,8;CT$-Y>R$=25N-GTA;@!S]6G6YK5[EIJ/\L;F^6Q M(/PKM\],-NC%HT!028B]B-B6B/"[3WZ:Y06+Y#'<)P%KOPLJ6]Z MR_XFP!(+6R6GD.Q$ MB6,(Y'9V_!#E7J(J;A?@;'$XGDTY<\[8:$1YF_#&Z[?M-MB3+]^?1-'K`C3!5D)H/H7A>%D8H`T&1_2',F^K[0L&#_*L:]?Y MHSX^!VZ.`(:9:7OV#[,ME)QW/0W*C+VH.6)RN\'K-?F\)H=[>=M[S,&M8-QE MXWP.1I>[P(S;;'!@6SU\X`[5=HY`E;1SRR>A@*^;N[J%*SOSL:K6!=54_()]0`Y<'Z0_=8QS>`=V4G,8 M%[')47$S5=`M2M)X8VLO6O>B=7=$ZQT>H.[MY`'JWNZ8R1O*^N#9Z5*1;]7N M=H#@WT7)[\M`MO*;K]*VFN_O?;;K]_VZ[V^;:V+QM[%"EG#VB]"]&MZKX?TB=*<6H25+T(##L7Q? MR]8G3>HF6R]9-_;*#[>]"+QW&FB_,MRKI+U*VJ\,_RPKPT:W]J(WYZ+W!3\3 ME>DJQE%.3PQD+!B_$;78C%+<+\KV&G"O`?>+LGNU*-M$(=CBOY&U7)PK$7$; M>C)9W?:J[1XII_UZ;:^M]MIJOU[;K]4>T6Y7];MEW7-!H`&&]M8?^UPA.?]5'FAXOM5Y%XY M[I7C?A7YIUA%?EZ+R,]$=V-Y.OX^6]`,KF+)"9Z2Z>`FS2:,65K&!]%0)['> M!G-@P:)LOH`704$-*S));5?UMX:[S6?'A-,^PTH+6J*OY`(J( MYA4GZUENF.2BJGL5+0XU:N,<((?<[+(Q?S=@X.W:3*BK2'V,NTG5!E6IKXTZ M=>Y0F=[%U-2Z4&Z!J0G:;FANVG,Q+_:Z9J]KMJAK^+=V< M.Q%$53GK#BEHI@SS'%Q9@L'YEX$"_1.$?*"@4.#_:FNZ_O9)_*3#FRZO!W/: M6^J.^)>ZQ&.1?:#G=NB'W,B*#@A!+T^$CA.#;-P>5;AK>'+*HB!!_J:$2&5;B>ZQY)FG\/X_N8P_JR%H39!\HX0B;5EH@GKLQ>,0A#.22-[6VIO M2_TIQ0>3&,*8VL"68K)"@OF,18;'EFI&A.QMJ;TMM;>E=L.6$L;4YK84DXR= M>RX80Y%S2B2:&R3J>S+.BQ%O,IV-00"6QXWX=?^\:?T]?_]Q]??21D<'834J"][-@\34E'J(Z%4 M="C6]G8#[I1JS$XA/8DE'J$:X\*/S>LLJ1:25M)7\@9$<_5!"!.7SJRP)4MH MY[7.ZO7E*QW^Q>'0EU+&FX';KUC$%?QN)UCO&ML"'+EPR#(F>-6[OS+2_[3( M1E1*9+LBD$-0+)2EM;L7X<>R"@U;984J M2JPODY/CI[WDBZ_6R\57D]EP,/E*7/#SU>6C1T3R]GC MJR^2DV!T0A<3=#TS1H$?IB!B+:-WLCL?A%"SWE>1:SV/8(LY:S'FQ5/-A8/+ M#OJ6"SNPOH+7;ABK(45P(R+7[B'8>E;%U1(%G.JQZ]'+TGE=U:M7R3(;+(97 M>*2N%=2KUA2\*QJ<[DX782L8;6Q%&EL;Z1IB'Q20RM93P(U6_E3B_RGE0N0\ MD*MY/S\^K:O&[S]G&U=3T[_[Q>%1,29=8$5:GZC8=JR]P4L9K&U_YO7XD1P;\+!VMWR7@Y&K2;P[C6*-[6^1ME8>JG4B"`> MT>YYDK[)/K"?%:OV=%5^RY4"1&2_-]M)L-Z19>65I MO=P;8* M)$^MG96RD]Y5-PF\"-7"9VO;*R&Z5:B[\]3;G6T6PQ&HQ5+,O'LXH(+[5Q%Z8%^:Q5G^6<']A MI>4[5OP7_]7G%$)+-O,PZ;;I*D`%\](&.51N=%NA4I@>*"6D>O&6IO-:_;]L M\/['Q2A;Y,5E)1J[U<4H.QQPR\/!MOZ<4>FX@W*'HZ)4+2-X#+F13SRJT*,, MG?),J-IO@UK'`<$T#PIBJU'Z#O&V$Z0?;N:68_25B%>\808Z)D>2-X10C1<$ MV+QOB!L]PM\K*NXU]YK&D]O'"!LHR'(;UR^WHURDRTVI8)NU*]YY+'C,Q&/: MS3+&!V M$;4\Z*>^+*("H520E=A.OR&\)$M#\^A05'0S?=E6T*>#&,,&"]?T&I8UF-\U M)JLKDUV;)PTHCKO)PE)'77PF"5EV>$KK8$=>1F<(JS*SZ1^+=WP:$>TX8M&. MBWQU-:4AC[WDA-1\\CRJYG)%&4=7ZT;48C56P^$7I#1KZJ12I9,#RF?+^8`L M*`D*1$[0K4DARLX4'Z;?7`T6[P!CIN\80\(W7T](D^=\`XX59S\O!LM\*'IV M)L&HVJ+2Z2FO]B:;$SY^FQ*VF!)>GM#A955:?%-P8\34RTBTEOF_^?RJWQ>: MP9&"(7UIM5K%?+8D]A%]06/R2:%V^ROYQ""VV^0[659_E3QIIL]+P67V,P/0@@.2/$K,$=$O5+-\D+YR7O_2 MY_*B"5YU`7Q;<'M9Z'L&[U`\56%.:BOP3:7%>KAJ";A$E%YDEYU$/V;%2&I- M#H#F1!Z@2]FZT\J`S1%ZX&!%CTO+QF! M`J5STIJJ`-??#*IP+`B,1X]^2=BA(`*_;Q2A"LMZ^4EWAC#B(8TK8(M[(4J& MBXSP@SQ!.FCKJMP\8%T\/16)EA='YYQ2H\%JT&)Q&`0G^D\.:LIRDZRX7%W! M0[,<[D?2L0-H&S#5W.^;MOYO%DL(UJ0N3!YP8>)")I39;M];GRTHPR"&`Z*^ M\M5'&PB**88M_7-Y$U_-8'4]=)RSA;"%MXVD_#L4I+)5H*^\CCR)@?_)V^.Y M;:O9?Q>$Z=YC4"G&CQYYF)O_(2PN\;%>P1E*2!A//SE1!L5L=97ATX4"?)1T M[4G#_["I(X!9$ZC40$;G'&G<15H4'&5$`L]8BU@91@6!BP\$X#?RTRRE1UW_ M(BNXX572>OSX<=L1665(K:X6L^L^`E0PHQ*KGQI5@.!(9#7U)\%O7?GA9WSX M-TUDR..C(KNF(79%?PI*Y3!8W,QT@ MOX>XW5Z(0&:'+%ATM,DT1#B=4+O)(_J]:/- MBC6)QD036W,6]Z+/&W724*1V9(`6X8;"U;J(>/765\D:$,!*Y MR(6,?H.O92(HHFWTNQW\AU7((VR_$MO$L&R%3<(]@-!*`;G8J@\;MWP.)LK"V79[E)G?2,@<1"@*QVV*Y]%O`4TB]0>WD MT/+F*A/]S>`ZO?BXRI:<\HRDCT>9&(:LM[A>8N2D!NQ M!&ZC]GEE8M+%Q^!]2KZ/6GYV9XQ#0P](N6P$F9V\9TE.L]9Q)Z'_T]2!=>G] MM[0A6ODN^WM@XART1HE"ZSIO>GYV(B:/9"D^P>F#GM><0PU%E%W+"J#V(]$0 MW4$=\\ MOIT[%):+;)DM/IA2DKS#_'WD-9G[7.QI"<"$0ZD*@?S(@KM88[--P,BLR:8E15(X,\=^T(=8<*T2'4-!L MQ(YU7&XL2'UO&`ME,XB/_?)Q!#"[E!\@:F_S#9$E[ANT^1+A`'>;40\`8]*E1,_)VBLOA(K*Z5$V;EL&EP0NK)[$&\`3+SC,$G6$ M$MEHDRT=F#RDS5ETD>^[+L/3B+KCBM%JM^=L8/9)W06,LF2XC*5>!2$]D64X M_2&GG606BCG-#A+5-E\JDA),[DE"`YFKUCWG"8A(PV0N7M*1N0T9*$%`JSHXDSO!U'QQ8)&)C0>\16Z$F/4>JS68L9BBUN5,I:";K&V!+`V M^Z(W8>9&Y`AC4CN,1!;RF`3BJ[(&U.:WVJ^9-[DB*MO]*UU1Y5TGR5_ MH?\Y9<8%.Y^ZN$M/`6%1:K]Y'<.Q5Q5&%>!6$OT0)G MB;'/S4L/YG-^N+U@ZWJY5-8<"U99!0/!Q*0%)5L,F*%:M!M=D)3[N2MY?2O' MMC+KD4K]E@S((?W/NYT$/O8L%_E[++F568)4B0ESM6PPNN_]G@6?O>\!@2)/ M&;"!D/AR-`5V0;.MX>`2!(!Q0F^'!LT\.X(/FU6FYTO#;`^=$:(U8X?K::ML MCN7`A#7*D3FO9K&>_Y["L7%?BF-@U!<01ZS5,QG#A(DCLX1WV6RX.L=CWN,N M[;'F/1`NK'RLK'1'T*DC\7!"U-A;N"0PX\(,WXT`"":+/5O`+L6MAKY4VGXZ MX`AS9K9PJNBDFW@J51F][(VF%@/K'$8\5%6JV="?16@L9ZIUWWQ0*6+BSV"7P M6P.TH.N,LW6Z].Z9D<<^?E!^!TCUQJW2[1JU'= M"!B^-7JSK/NYPE`!T?V$I<&93 M*#NC,GBE&8"W"F+02)^!!PY`YT_&I\?&R'/_U-7RL;5]PXNJY30E*J>MW$7T ME5P`5)1/1^%P5TRB9A?KR#UGB,#P(L)"#VZ8#;J^$<5Q:_'\UP[GW3TG-+A* M"2^YS85&G`@ONOC:V5IN=H/K3;7>U- MK-:\"5_TBG626,*8X30I#%Q`#Z38*UX!Q_3>;2LH;^MI#[BK/A!];9G7;2ZC M##8"7@X:S7%N[KM3JJWIC8;I8E!<9M33X99R-ZR,,;)*2PL=;D(7EF-6EE&@ ML!V*9<>-V^HDP+\*!$2AQK69=`&&>5!YW-*W+&.J8V2P^%_[)8\&]@@!F5*% MYE_-QW8(,:TDDMFD4[H=8R-V3G0;8I!;K`OIL=D*]X M,#1Y$%/.W\CUD*'+V[G&&Y)ES+;`6]:<>%8MWH>YC#+$LG2%C,QHM6%T0Z?J M*SF3^$>[!3I]L%`,?IQ?`F$K("JXC?4!.W%^8TQE%BABSE5VN7M+M/1(0%2K MJ\),:6I,VAN`MWA9J%?W1$2S884G)2)$GP@DGXY^+I.,&]U;AL]', M&&0S>B!.R)3(&(LOP+PQ.8?^J:0UI-31$;%FX(:.Q6+W3CXMMBB@]+8ZSD.N MHA(LU'4%P`TW.Y'("K[5:\>?N8U?^'2R>8C M5%_=?\XP+S1O1`3Y]('#1 M\5F,.X`-+BQT=I?*8#"H-U$:@)=1+E$H$S^@CR8!OV*D# M)Y^0P3QR!\&O?VR[R:.`:#$BOAZ\^JQ4$!`TQ:QISO,L@VP1<^.3,>[R)H8I MF+:0P?'NZ']V*QQS^&I9$V4#)48H/#8/:JCPSV\PF`!O?BK=`R$>.S^YT/;. M3XLQ*DGGSTTP0V:ZFV7"EODE*#,8H^!F_^XS2%ZL*H^Y7$J'A40@CJXAA]8L M$,_E;%FDZH0-OEF1>L[5N,TNZ(.**LKU@6ZYL>!6@7%(K'I'HJ\YO&#Q^[3; MJ-L"V\6@W<;S6C*F9<@[)NKTZ MDVE1-ION>CHY1MXFVCAR-'1\G#&67G(*:OJR7=T!=9-P0%V<)NRZ&[9+OXC: M2"!M4>W!V1W*1^:9Y7Z9$A`IV]*;VU67*CVRX#_Q))E//&)'YLBZ1,0\L?B% M"A=%H)I/]D4'#]!T\Q;SFU%?I`1YQ,/.`A75+VP4"5X!W6BT3D\6PXAM.>8< M+7;%@PH"DK&((M1#I-(W;2(&$(2)\3L`V-M?C+M,Q"#2,_!/7M2Z&^9)^R]]WT\.LIM51MC]BV^^($P! M;L_!BA;K*;\V]=NWZ_F<)8!O$9F2G"4ODK^0G]WD[(P*F3;]]T4[.37>G9^3 M=RSTG=2?S*Y%_:Y=OXO4[]KU!Y/YU8#5[]GU>TC]GEU_E%_F*U;_Q*Y_@M0_ ML>O?:`!/;`!/$`!/;`#\&B!:_ZE=_RE2_ZE=?[[("][^,[O^,Z3^,[O^Y6(P MOV+UG]OUGR/UG]OU+R:#XCVK_\*N_P*I_\*N/RQ6BPFK_]*N_Q*I_]+I/[UX MBS.0PX%=C`6[#@\.)H2A.0B7"5$NU&QX\*E/9LOSIZ43*^4I'I-U04,2LU&R MO)HM5DRW'9)OM'QZT;=+IRDI<-)+0:'5C,V9N*)L>E(,7WI%@\*0HI(O.3%: MY$%G_>O;1>B<"Q;AHQHLPB=.L`@7#L$BG'V#1?@,"1=A3!0LPN=IL`B7A<$B M-WBO#\Q2?$ZYA8QB@@]8,>:9\L$37.`I>&`W/E@.\]Q7V``;+&D63B$2'NJD ML$>P#%%<$9J+HR$8..7,QXQ`II%3;ZNI8.AJ51B#5ZO"AKY:%4:/:E78A*A6 MA4V0BE7HA*E6A4V@:E48RU2KWP7V^O\C$S[>@2<39NR7(TN=6+]E=F M4D\3R/>#)3-*_SA>4T.-@R(V&ZO!$VV3E>%L3>3>K,B6_3)\7.@^4&>\PG$' M%OM-))](+!N0=Y,8<&MFP].J_>13;6PPZ'[,>$HI^KFT03T<54AA>K="!+@: M3,:""-H]XV#.,2#C3G-;D7;_M]7Z@_UHGY^WY,Q825_GQ6,(,";QE'D9EB#`+FAM"E`_HJ]D29& MHR!+F/%`20WALC6;Y*#Q?O)OK*?\/%\GF5Y0Y9KQ;@7J MB,ZCU;;2`T4V/U*B2)W^R*K!;@5&&79!W'_YBDRRU2(;3"_68Y4T3>P'G2>P MA]3%<9FM0HP+X?\H\NF]2F85&IBO@PV#!99@Z0TLD:#P6C=K9<#BZS927%*BM5 M+0_:MQ8#!WSE.5]?3/+A*0]VD)O<=#E#\UA?SA8?91YL7G=,U@)BRE*P,I^GK,@W;=@GF;USOX>A\NR&`!6LA9D<4VK44J93]8(0;>S0,BZ'4TZF@-^5046>%UX`95-E7!#O"Q%>(R0\P\/ MQ0U@[(U,$?4JCO9Q2(N'X6QZD1>^4>VK>4TC6-A/"K`EXLY$@TI2*$2]F/+7 M8$-#$\4%\R`2#*OTFXRT>M`":,@:-&K-2YUOF,4=&?N70,$H6VJUO1%8G@`L M+.RT(HB>'@4H4\#P7DYF%X,)K@4,"02YC:FB?"A&9[[(/Q!J"=7'%-0A2_?$ M-14$)3^^304([W>.%X:(]*3RV9@3U:J;1 M1"%N.'^?4JSDDDI*8?H>OG.F\>DIO8E%4(TPZR@5!L7/OU2I0TE7J88T4BI5 M$C9*I3K4FJF&F;![XBJ!NFS@@#2B`*#*TD+A^W0P&FE&T%I=R(='CTP^D4(! M`;3(Z-UX?EB"8]7]7A+FT9&5F`2>3W.O:1EEDXP8F3`K._US+EUQ[URQKT[Y M!)2#/#U`?S^$UXUD8QE=BY43%V+RHSG:&@L!4%_X[+**RL6GFD)0WZK['9AH M>)5\GP5>QAK$BU&3E1@H^IRQ8PAND/=7^#B\I#7I1BT5'%U82!76!(T^UB M*>'@&@/K,ZA`NQ%?7,JV^!I"L,57H%*M`D)"I&$U)'?)6JZ9P75-RS/KU!I( MF"&)X@M[R7(@A8QE%/%YVA)V(L]]P8T^?B^@)2M92T@[X>4.;=QH@W]_+-[@ M+7F/*P)FCL'"7-T9@EEC1"\,X1+ET$*N`X\G\%?\6L7@3$"K2`$G76Q8&2WG MP"$4V4UG(7H@IZ6L[FJDOCA*A1AWBB>J&8;:]S5?S%;$%,U&IZ[!SNEB2'KJ M67$$=KY8K0?1[FC M\*MBOG4!J[/C'=.``_:<9>0'C+RD$[O/C8` MJ4CH(:"`!!BR0M!G/EM6.8Q$BC/?O3XV=/*\4B4K1I1?W$%I0,\-$;%*BOY] MNAI/!I=+*J[>4@33L7@CDH%US\ZZS\1HR$U^6/%`#^O#E@F2WQYLO;K@LE&> MZ8-?6_!>*+**/V>7""F5B]3`* M+7;+-/WO[_1;7$L/-VOI87Q+_[M92_\;W](?[I`&QN\/=`"53:#GYX]$1DUG MHTS/SYEX4S(_945W?BJ0FA3@%<)U\NOF\Q-!ZO?M(%5A?B)(_>]VD*HP/S%* MO3*Q>AB%5NG\Q!AELY9\\Q,C]&8M^>8GTM(?[I`&QB]Z?I+_L[L1U/3,^8N2 MV2FJN9-3PM-DT&\0AA,?-Y^9+D*_;P&A"K/21>A_MX!0A1F)4.B5@='#&)1* MIR/"&9LTXYN+"'DW:<8W$=UF_G!&T3]FH5D()^';+'L_RA=Z$HH7SB14JSYI M)1]8&T%\62$B4/+)>I$EI^)K0N^#GJ_R60%<%69%:Z6=2!BFERCA:;E4W@^X MTF9K;5Y'K[9!(9"L)!%[^==7@U7+V,]E524]Q4Z']/T9*W=!0^:IX$D?J(NC M]Y012[Y")0[8*81)-<2V#ZE_,:67#)Y@'Q)KP*F:Q'ZFVU4 MJD)M9/]!@1IEPQ`0\CE8?9S?9*,0`%8@".(JNPD!()^#U7,69SN8A&#(,D%` MDXP=V/("H=^#`&;#8'WR.5A]D5]>!0&P`D$0RV&>%:M\G`?'5)<*`[N:7=,) M'P0ERI0"FL_R(M@Y52@"U+(38)3$A0+@J,#6PI,%0J+BB"9381+Q"T:0$,9PDBFXW#('B!$`BJE\(P1(D0D,O9S.K+,4X= M9:?+Y2X"5'ZB5VW2^%UIO#LL,I]C..GJ+&C27WV%,JJJ?I$7/#[2"X&4"$+( MBU#MDLJS]2I4FWP.5E\MUL4P!(`5P`=)VEU+_B_2C/B27&27]&X2_J1R*Z)% MA^L%*-H-%>7FG2S:XP?TNT\J^DB5'91]R`HS$1PQ69=D*4??R\WO?'JQME[1 MG%A$#*2ZOK3;5%S0+!\EK4-6@%BSD\G%8/B^G;0X&&6-/F1G0IV]C$5VF2^) MSEJ:;]N[0(*&-+Z=67G$DILOLF&^).9L'_EXG8]65V+3 M0WFTOD^E,:=C&OE!8X%(.LE5)CU!&_,;B]8ILAMU&%CV_/34[A)I3-T_P<_$ MRET'X]TB&^O#MFZ#+7\#-LT\22R=#J3#"[GS?BJ[TV)O.QSK%@4M[M"E@%MR M4#H089JEZS=IE2?6IK^]5Z:#7WAG=;U<'9?&-\[@0D!6/SKJR[`3239DF"2E ML+T\^DT7X.Q(*)-]"&WKC?(E,64R4(]^A0&RC)G^WVPQ,@^LTV(,I?DU^289 M8#+C@5RY?OD)6V>(4$8F#5):EII*+T08#&N,,3SYD0X6B\''G\W"O]@E1^OI M]"-\>2CKBR`@P9D,XB2?YI(W>>F'DAR7A$Z\6LN:N0>\>W2_B760L+`Z5VT3 ME06&B.FNUJ+&.O;;(C>%FK&+*>='WUC.\H+?"MC\Z0_X:"TC=5RF7(%3F`PY M67V<3S)B/7+6FJWQ]WF!OLX6"S6_K^&7:PC)^J)A61\T-+5Z%2X+*>JXW&-6 MG5Q8PWG$I:`5?H;4U9*3;ZJ9,0[@ZXQ9DEJ^J@G-"[R2`.07Y7XA%4$T`H[+ M,EN-&T/E]RW@TH'M3VD*AYK(/7R5_,$A8'BW1'/,)3;5F2+*NZ#FV[JP.\#@ M<`>*@X,%12M8,8.$^D593"OG6"A0?[/JUN7$\+.BHV4#),8[GKZ?/,72R<*- MV1!H[[AU$5/;0)N\RF)Z!8R71#VSWE`(I;T1PDQ%`BP_%D-2H$/6%5Y5E5MC+;,Z#NF0,5F\B72TSZ:8O:]LDJ@DB#XI.GR6)6 MH5$A=!MH5OKW*G?4<@Q6Z&=\DTXWZS:J?(^UN@F]EA7[&=DHVM%:S0KG:,U^ M+NOV,J)!3Q\K-\D=M]4["/V]5?H7V9S;O5H-*C]PY0[:'N0*?:S0J-/-VLT* MUWF@25]'#9][I7Y&-^EVL[Q1O%6Y,U6]G[)F!WB$7,]^?/_I]E9EKJ*5P@A$ MM\]VMRHCP&I5QP!'890-*R-`ZL#F[>V0Z.Y?93>5VR9U&FE[-JQ.>%*G:MMX MXVR#N'+SK!9$P-@[JJ8QU'9H=:VAJE9&A<5`E_O=:\1`B\L?>%X6<"=#7,"U M41.)AJYRD8W,KFG0A3Z]S M4$Y]EK[A(B\V!,`WANK0@'L.K5;8%\Y>QK%JL&7$+ROD>9_`[27J.V\#7BUC M%U'X&-?/T)S9+,N'_!%7C=ACO)K\$5=M-A[S:O)'_\#NJ<1PV)_$2B60[(\.=JMO/`Z0=J\09JU)S5J(EE=*I2'TO7Y*UO M`K!F+S9_S\Y;I:0LF\@,LC5J:O+B'\2D9+,([-XIEWZBI\^AB-K2[*?F`?\@ M;L$,?4UG\U5?PY9GYNEG8@02J3_J!QK/B_0BN^S[O@W7"^\W,@KX-WIQEAB%2C\RL*K#6KVKH-_O4QY+(,OH71;:9YB]UJ:'2`G/MS04/?@!)#"[Y:BD MXZ&4#0?H$,S9;AN\YLKL#OL>^$0)D2X''T+5*3V,,K)#_*OL"[X'*5HA/+J2 M.3K@>7B>K0."@GZUWXPYH?M--P%7W$O+N8#>]F5SBU,)W$P&"=<1\-IF1>MJ M,GI?E:C5T6W9EY+9W1;$5:@ZZ#DTAKVR$.)WQV6K2Q,3ZQ>[-"V`$Z6Q<#C# M$C*5P*>2D1QE1.#,/GJ&,C"2OE&A^H\':R@2\=$4K!NLR$,WCKU#SI'A`V\Q MBS$SG(IT*'0]:XB.E,PT:O,K_%2+YP",[2R&V,,Z1Z!._R`P_/SF-(?/'FF" M>O6)VY]'&I\83DZ+]602P<:A%R$]I8$-+ MF5[@>G#-QF)?9D7X/!?#SX3^0Z`)G6XH1<@4FO=1 M&+J) MQ^?I#,Z9?C8JI:$4'6U7%#Y0^""L)2U'&G=G'L[@-G'+A?H)P3UV?`":]D"! MP^Z4Y9=1'"CHO<@0&1;'G;*RLG]IQB`M!+BL$`^O4),@DF=!0\(H%O"D0.%- MR2?]S6A,WYV:K0Q>-T-]K#,HUIH4L1E,@>@2TV258_0#77TX'QE97B'&.[B1 M6T$9RSRFMLIRC7:-(K"7^"\CFR.AB[MUGSSD6_<.&>3Z(5U-YRW.Q7(7'V#+ M/W"P,@;`&2`"P1%&!F9F>(!/N%K=AAREPPG@8D=^S2;+S"TL$YOT':HY"UA- M0#*1*=?`%0F]!MB(UM`*7#:EA`"M*^X-+MH@UE'Z:6!#V7LB'2RQ#-V7,E0X M3:\''Q'+"ELDNCQ(9/GO^$QUL.<("3QXJP)B>5?HWJ+R2A$*S&\'8=HL:PU! M5,>74AP_%D,84RI`L+<\+D64=1PL1`8./@SR"2))#*X`4DIQ-"99S[1@#2P[ M0^L:M[CH;OQ"`E^'H\#.TVO( MW!:%#%Y>K*=SRJI4*[+:?Q'_GDJTB32%0MJ+G8#4]WWG<$+(;\C3BMRP]ZM9 M*EMH'?*Q:WM%N3E@:V(F+<83'B(6-6#.;*:=+NJ)]QM>UQ3O'M+.URO*[4/= M4L*OO_.47Q=\,%R?)X#HA>;VDI0N0'*X&GUE$%Q59D6!.3LVBI].A;)N4\\@G MT*H:==L:?:C24)U!W_"Y8R$"YM<<)EYD#'DT&)3[W?4$=>H*X8Y6I=Z$0-4L M5)-/Q.EKFPB7.,#%,&453 MD34"T-8?EX[1TEU$F]L/SJ(S>?#*!)=89K996A3N(R7*I:D!"MJNGYRI)`GA MWVQ7P1&:!\TU+%3ZJ,*'O"R:LY9Y]G(56:C:*SYDN5=QG2=Q4*VVCKKM=ARR M<$%ZAYCI1:B]`CWN(X/L6G)ZC6)7+:EY$V7J.EE:++L3F-P.X[AK&K3_!C@3 ME&?-4;)@`IYGL;JR5P=\\62L7D`E*GQH!G"O\Q,L9\#N!7`PTV:9^`3@`ALC MI^5\W8!#).!+ M6CHJ1Q>9D/3J0?U="Q([59>,OVL@++$LX#*Q(_>PZC*&SJDL/IA!?^`6K`2C M3`O68BG'=.IGZ%Q8"F?[X\6(.1Y$$@,B@)1G`*8IP%I"XMC";55OPYV`8M0, M#TY$Q4/K)A`@APXM&RX"VJ-'[+*A9B%&@P,;H(*65A8X&X`BNB\;G#.2?,SL MZ#$!A$B#EQ$QWZ8TD-*QNA`0P>[^6SI!A/6!A]Q.26:\NBP%Q(:.=./=)B8" M7.EQ.$1Q_:HM$4&VHW/N;Z0`.[H@4X)R;#18 MQ\V?7#&+Q.6:,E81,R^@K$U7`[)$]XVACIOVA3?QFH<2Q,/SVY'=+J*EX>2- MB/O<)^YS3-S+NOYK<`&$--7%:"E+_!@0(,KSP`Y/G?__=Z1%G-K4UZ\"ZD(#2B\=&78_B^)VE4GX< MW8S<*M98,R\$:Y;`8NX)_>$!_V*Y5VM3VQ>\LZ=Y&&!W-LVO;Q*U67TQ=F(W[,>="^LU_35>MWCVXZ]X]0+I' M;>*3\B6(X?F@3A;D6IS-3D$2V,`^GJGY9+[:`S'7D:R[3ZG^?JG3U[GE"V&3PF/#W MJ2M'=0NZGR*#<I@OCFB#U*G0A$@-[P%K3BW(/=[9I=5*B",` M*,T3_"4:9Z+*,][G3_;Y"-N(A4*DY7W)2.G-(/3"R7:P>XDU()=B0/]0]L[I-^+9$O7BRH]&?J M([M:MONV$6`Y):F]%^@@,P==2P(#8D1"7[E##;_KW+NY=="*OF##.KPJ'5+Q MRSC75)HIE2,B?A:#!77O&JAWQ#5%Z6@\6$]6@C9&;=AWF@66Q_2PS1ZCM)TS M'PH/CUC`(AB9D(AF%$8<&3+PK'K(P,F+J#IBSFYM%2S@$RJID#*^(O;G0OK3 MKY%+]Y+]"F$M+]HIH7GW:FOY"5^,Q$;R$SAI:01S6*NJL[.652!I':;I?-RVW[=A MA%,I2,D[$)QZ5P64SD,G`"7Z51L@HB#C3V#9N>@LN\/K\UH0(7K!3%O*D9:XY#&D_7R M"AYSM4YNK++)9-XJ@\+.=ZC3'7&E`P=7=-I"M44;,P`ZE-HT5:S5L[2R@H4_ MF>E,DPW6,$B@(#?+Q()%(BQKDK+R0BTS`XMEM/+6<#<-W":= M`7_!'Z*2UC6FDJ!M/\:TBKS\DVZ]KXOA8'UYM=(N.=/';>>#4X"EXT6DI5$O MCLYUYHA7KY*C+I)5B)2&/F2E[,"UEOP/G.PR^8@-!1KR.GMOWG96=84;Y@OS M\@UJ-8:+TR%;KV20HY8;NX&5\HD<&%1LL<_)V1DO]Y@[4&@YI?WTI$,"2]TD ML=&H6H4=1*T,QK?2N%#%I<2RH^7.`NX,#X#N.BH_Q%AF[!6)./@CNTWTX9W&[FTZ=LA$-]L.80M3O`[4KZX3&U;MD/+NK_S_^O^#_MK7Q?JKWN.7SQ58 MN_&J./,1?!*7@U63!]^XX3-H/>57TZ>+V9HFL%E]),MH[7#B;XTLF30$OMNQ M2JQFUX/%*/UWMIC1[(SNY[3(!HN,Y?'V5YXB178)B\&C849G MB/R9+:9.;\3K4'=$D<$%71>971&?B(06W[I&\XC,>#<_EU<4$]RR!9GY?%2, M5';@WF&V-LR7Z7*>#?/!A*SM09I,NPH!S_*;J],K6F1`>XQB0?-@@E/F$,#@ MI@(`'&OJ%AOEE[1?1F9.3Z'N<:"8H@#7FTZ.4+0PU9R7V2*R='8S&"*I7!UL M%X-1?L-1Q2B7S9?Y9+8A^3EW9XL%/%"UP3!,:?*$F_FL$-P;Z!XL&AP25GAP M$PT7%)5P`P-R-5C"*5TZ@+3\K^N<6$D_#'Z(K4"YB4RGXC*B$B)!*`C^@M0U M)$19PZ+P9+9R),%F[*0(LQD8@UR;@1($J":G2F9[-GSZ]&7D9+^@$RQ: MD$QGH_5DYA\I4'JU&,R7,6!7>?&QR)8$E6P\6V11W`>5,?S]RE6W_1@E1$MFNPL@:_JA)ZU<-& MT.5X7A>J5+A2,VM74)4&BD)-ZB+*`#F:U"7:L8_8J`+U MU-^KS<]*;7(F=/2F._A0RS`Q@:LK!@_1H)L!].C2S8!B6C4>8J1ZC9C_6KM& M%%;*%9>[]T>W^E00\WPWH8*8O[UD<%M'W=X+C$%XY;`.ZO:>1ZJ@YPVKH`@^ MN5T-Q,A54P.QNGL-]*?50&S\JVH@OC^&RG8&K[(&*@-82P.5`:VN@2#$K2SP MJJB@>[^^\^D@L-_4B"J".\!U-9(!8Z^8(A43I%I-_01![-74GU9-03:HJJV@ M/,'5`81>67=5`U]+DU5KHKI>0^#OU=NVU)L14-&(@C.#G$K&'1.R%H"P?NL] M?;KW_:&$JZGB3"![)?>G57(F(U15]B5KJKGHSU54>VL:= M*[UHMV(9T-U2>=?\X$ M7V4GB5=3SP7WIU5PD@6JJC8I/\*3NK(ZBP-;2X7%@:ZNMBRX]T=AW;-% M&C_%W8CWD9V_+O4[GO2>/WM.3XEABWL.(JRS&(!(9=5]&J>LGMQ?SR,C65V? M(ZN\UU-_6CW%&:"RGY%G?L#]NES]][V)R& MLE*%;.(_C-)4SYX^/8EU(7:?-:RI=F]991%O4R?B7GG]R967Q0FUW8@A)6&U M4=^16*&1S5R)%1K:P)FX6TKP,_4FTH1*3>@](;;"Z[)>]\GS)R].GCWQ+)=W]7A=. MRDV79'N-]:?66`8?U%Z.^36$`;_^4BRR@OU/ZT2HV-?U5EQM-'H^*?P:NL MO,H`UE)694"K*R<(\:Z5TN>_'&M,/YG9QS=9D,5HJ!94='1)]MU^31:@YJ:+ MLKT"^W,K,),1:B_+`LK";*'^PBRZBC=)U MVLM>[^3D>>_XY-F+IT^>/W_ZXOCY=\$56XQ21(%&JL1G)W$JL>L[IW9/5G`; M+^/VJO#/K0HU$]19T(44AX9<:VD7![KV(B\.?+WEWDZINC_'FF];"[]F5G]1 M2T!?%WA(T$F)+C M;X^?'/=>]$Z>/,\>"3`1>K(7J2=]F;HV6R%N(]._JRJ*H9N7#!U06'6%G_E8.LI>7*P5;790;,2/6U/R-768.)>WB;4&'B4MZ2 M,>X][O6>'C\_>?'T!?FG=]Q]0G39\0N$JNHW8Y[H8@B1+T=5]%OQT%;QE5PQWL-5Z+A!#]457'R%G!4'C_K/](@:>MY[\N+I4Z(43YX<4VWXLFS`XG5BR?@X2O'9R8MJ6I$P0;""I18) M_$IZD?+87C%&[!?6U(Y08H5B+&OJR6K@Z^\<1C=1<_=PKT`W5J!5KA@V;QAV M+YH]J'Z?,K^CF]^5+.`GI\F'?+%:#R;)G`POZ:3X/%LZUR@S&%RC\[*G!Y+\ MM+U1-A;M)SPC''G7M[[;>)V>$HG'2B;R1WF5^6S)J\@?Y55FXS&O(G_8541) MRC/TJCQ>Q.X=)PTGW,5Z[%Y3G^J/:"M^VI*JN:`JM8"ME/5JA]F^>B05II7FG&HZ-/$R0MB M7F9`]HCW7"JQ1MON"1+S]>IB,'S? M@D-8.D?7A3O_"14DJA^+H?516O#2<,PFD\LH&BT),2];LGI<:6G[DX$4AL/I M*?TRRA<2P'R1?R`+JM-(3?*JQ9>$MH&DT#&-P6!A[F!M8$GG+!%H+ZDIB*W? M!-U#JR"S2%-KH'K+&?/KZ2E<4U@+#+-B8.&9IGKIB:\M./E:8R6?%"L*3F)@60G%+C7XI:0/!Q!!:BN7 M=YE(6?X>:'&%%6?/``94O$2W;Q46K1O7IG`D.*>K$&9:+CD_-UQ:_(X56EBJ MA%M%NF&4[W[TF9*I-?I5Z!@<>XZ"AY"+C.Z$+.;DO:;F(3.7ZW+`)H@WA_:F M2F/&T60?3BTGH&?D.\I&`(5GGL*8UFE2)81;)Y5G1F50XSH,]*W-ATV$@S%U(+V4R MS(N^?CN3;V?K%?8Z6RRPUY/991_`OI;`KTWHUS/UWH0//I@M@`^\#=J*V!K0 M%N6W17&9&&3K'_`M0KIW M<\!GE=PX6D\[R8?!1.Z@D&=]#N/Z*B=%6D,N5%BI-MR<)V4?O8*U!7M2TB1G =9\D7I,1I\@7]2_[!!P`` ` end >Fix: >Release-Note: >Audit-Trail: >Unformatted: From schmid@snake.iap.physik.tu-darmstadt.de Sat Nov 11 13:57:00 2000 From: schmid@snake.iap.physik.tu-darmstadt.de (schmid@snake.iap.physik.tu-darmstadt.de) Date: Sat, 11 Nov 2000 13:57:00 -0000 Subject: libstdc++/106: complex abs does not compile Message-ID: <200011112150.WAA20365@snake.iap.physik.tu-darmstadt.de> >Number: 106 >Category: libstdc++ >Synopsis: complex abs does not compile >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Nov 11 13:57:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Peter Schmid >Release: 2.97 20001106 (experimental) >Organization: TU Darmstadt >Environment: System: Linux kiste 2.4.0-test10 #20 Thu Nov 2 03:02:57 CET 2000 i686 unknown Architecture: i686 GNU assembler 001002 GLIBC 2.1.3 g++ -v Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/specs Configured with: --enable-shared --disable-nls --enable-threads=posix --enable-long-long --enable-libstdcxx-v3 gcc version 2.97 20001106 (experimental) host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu >Description: The following program which computes the norm of a complex number via the abs() function does not compile. It did compile with previous snapshots of the c++-library. The compilation stops with the message that the call of overloaded `abs (double&)' is ambiguous. >How-To-Repeat: tabs.C #include #include using namespace std; int main() { complex c(1.0,2.0); cout << "Norm c: " << abs(c) << endl; } Compilation of the programm: g++ -v -o tabs tabs.C Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/specs Configured with: --enable-shared --disable-nls --enable-threads=posix --enable-long-long --enable-libstdcxx-v3 gcc version 2.97 20001106 (experimental) /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/cc1plus -lang-c++ -D__GNUG__=2 -v -D__GNUC__=2 -D__GNUC_MINOR__=97 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i686__ -D__tune_pentiumpro__ tabs.C -quiet -dumpbase tabs.C -version -o /tmp/cc1IcaEj.s GNU CPP version 2.97 20001106 (experimental) (cpplib) (i386 Linux/ELF) GNU C++ version 2.97 20001106 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.97 20001106 (experimental). #include "..." search starts here: #include <...> search starts here: /usr/local/include/g++-v3 /usr/local/include /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.97/include /usr/local/i686-pc-linux-gnu/include /usr/include End of search list. /usr/local/include/g++-v3/bits/std_complex.h: In function `_Tp std::abs(const std::complex<_Tp>&) [with _Tp = double]': tabs.C:8: instantiated from here /usr/local/include/g++-v3/bits/std_complex.h:898: call of overloaded `abs (double&)' is ambiguous /usr/local/include/g++-v3/bits/std_cstdlib.h:84: candidates are: int std::abs(int) /usr/local/include/g++-v3/bits/std_cstdlib.h:96: long long int std::abs(long long int) /usr/local/include/g++-v3/bits/std_complex.h:898: call of overloaded `abs (double&)' is ambiguous /usr/local/include/g++-v3/bits/std_cstdlib.h:84: candidates are: int std::abs(int) /usr/local/include/g++-v3/bits/std_cstdlib.h:96: long long int std::abs(long long int) Gzipped and uuencoded preprocessor source follows: begin 644 tabs.ii.gz M'XL("$"_#3H``W1A8G,N:6D`[?UK=QLWLBB`?M>OZ"1K^Y`298N47Y%DSU9N=B^*;$H]IIH,'Y8\B?/;+]XH``4T^D&)+%\_/7G>U_0AR?KY>+)=#8:3I_DQ6BZ'F=/+@\.#M\? M/\EGR]4B&UY_3HH=[Y65OLA7RR?+U3B5U1Y?\8I?),NY MC4WSBR>7H]$A_3=__O+YX9S^+M:WAY?%^LG@\9/FD([W5A_F&9F2 M29I>K//I*B_2]\-TFB]7Y`VI.)*/IQ3U_E&[3<(&$M#0T\HC0N?V7C&\SI;S MX2A+R(>]W_:29+W,B\ODY$3!_EAMW#B/,.!@Z$"G(.\-7OB^'R.5)]EPM5Y` M03AX=A0H@\%8?B"RD9#2`!)J:"`0?5FQ(3J>R]7Z`C;TXLORANQV3))FMZML M422??_UY\MO>GJL9J_$7H8/&KO_EE\U!:59=%\O\LLC&25ZLDF7^[RQE?*J4 M)-Z_O3V4;1B'47II2]B!?9T6:)GAQ]A\)]M?U<$R' M!:]HEY>EB3@H([T$81*"@'F98AV1A+(+&'3B2)#_]I^C0&"IM5/,("CY[_$` M!:*K\P(>TG@H2O[[_*F?H/Z14!6!I.?D3O;)K^%XO+"^RL$C/\?9>]@7P2\, M[!C_<.E^$+R4%S.\RO5LG.%?"C*'WL%/H&.SR<2LI)">6I]X^;F)&'^YE-(# MP7;YM+RYF+XSD`,?1T24O3.Q,+F*%YN,T^OA M\AVS0(["LNL8HP'YHV10@)+)>)G2>C_WCP9/DR=)YV6RSZ3Z;))T5+%N]Y=3 M+L(%R<;I,D-(]B[[X.F#,=7G(\D0[`\A!Z'4J%AY6(Q_%/,*8Y[)$JL/&$@6 M",*8Y-,P#%X@`(-,.OZH#T>Y+_SU4(2 MVJ-^YZLKLDX;VUKX.*8L9B!QJW%TE8$5UG/;^C$+'>]Q'J6SA+Y+Y\/%\-J8 MM>+](I\M\M4'-G?I+!C89@>*)M?CL@WQ-9T,ERLZ[9AY#"?JBAAO2]J$>)[G M!2U'3.93R*\VO'&V'"U2\7;??&VQNIB2OZDVQMEJ.+JB+6>@8=KG^6R:CUB' M,1JI4O1!U\R+JXS0B7V"\&9S!IX+7JHPUL/%F#Z!0@21=TS"L2F>).]G^9B* M/?7!@,#><@@?$]GEX4IQ'=)CWSA0,9AR0B<65=FGFV%.%F67L*'1K!C[&Q*D M75]??[`K:0Q14T$650(MU,!U2BS];/$>DOJ:M+(N5FA/KM/939$M8.%W>3$^ M#9/F6I!&]^-ZO M4(#<`8$NZW`G@[.`=9UEN:'EF#]J+0+7J2YS5 MGS12K66?,ACD>L\Q>>0"#;%#]%I/?^0&;>+:M_L37'HE<@I@?Q?(C4E3^YQ=$\:9I MTND(YD_I(NO_?I.FW6[WU*Y''1W!BO_EJ4A=',&*/WHJLHD1JO@W6=%C-ZW3 M.OUU053ON@NC.A5<&!4(`DFYR"[S)=$<)95O9HNQJ$[=M$%]A2FTK!CGPP+9 M/G0+>!=J#@Q[BND"8M/PRT&520\++;-I-EJ!ML*%_(M+&PZ&D2[D0XG#RB_) M.J=LW:M+F;.;"/_\DHSP[#H?X<:R6L1BBW?JB.I@GA>G<)>Y8+CWA2,CW.[V MD&-=+U4;+^U.:_$O#$;Z8CG/1JH[JA>K]V2A.#IU7A;B+5NF'V,2TT+3L;5@ MVX12AIM4^Z^$0\SZ2`B42"\546_.YH3%:*)M,:3L0](1;M#)>-G30,E"F!KH MSDNVVG#>9K>C;+YBK\W.T(_TYVR]ZB;$YI_=))TN=\Y5_CN%Z#\LY*5=`WLP MWTP7R-I@N4HL=@8]D27T_&).C_R2.4!!-^L-$NOJ1R8_L2D;)S\_+*^'HP4, MD>A_&5S!J!4@V-L6KM$$\Y%JSVF".U&U6S2!'E+'RM;^U02Z6MV66!'3'^NV M)@J9#E=&S&"$B+$BQ+8AT5HC;G96#%$:V<9JA:UUM?WP-KSE;\ZGNKDVU@ MBW35#)]LGA5TO<`5E-R&7,U&9"5!]9WY?K*8 M7=,O0&?5TUA:00NL!!\QI(AZ%CB2]L[Q0^I``U(`W9`W2V(R2_C\`X!`"=2Q;6ZV.@%48)^U;"7H M!$2INN%5M(G!4WLWP;/=6VFSUUD@@AE*YF:1\15#AXK`HIMTY+[E<''9[:E= MS-%5/AWS7#*J8#B^7N@0MWT!T2M/TV/&-&I2T.F,N0%GWR1J$;_%VI%>: M_:M%K4M$BC[[T8KLM[H%%YE;A^`I3L-+'XI1J"%];@K0-]+LQWJ:+1S`8EN1 M10'2I?) M<'I)WUV5LG)\[8CV\Z))^R6UT?87"P:$O,H6U"WEF9.&LR>(4E.`3/`/`OI] M4$<%:V>LZR)M=7_-\=+*EKUN9!Z/8*#_U.=+YGUWO%^NJ_E:K757U]*W+)X( MFX"GJ]EZ`3^.AQ_@XPR6_9`-8=D;L^P'\S%?CI?,!(OT\GI%UK5B-0M6 M.^33OXG]P0W&C\:2R=AK#4QKL+>:=,2#\$TNT`KCV?IBFB74F6%4XG7ZO<1X M/K*EJVM\LPY1J]O%ZOH=;T(-$$-M;N+E+!-):8&:7)F"A=NRIT/(B.RAO]V5 M+"@_F2VNARM'D7!40#F(5<-%H%0@>BP96J2I.>^6C>X268M?KWJ)EVS5\+.( MK($2MC3P";(/4I_)C2H@$!AIRK%(%Q@0.$`47B]N_!H/GH]6VX-EV9!L#Z8) M.AN&RY').4$9850=56(YO%U('C\)>IA$N5A/FI(&[U+LD&T")V2$2'O_IOYP M=N+!,**(SIOFEU6$]#GF$]"UE]$:8C!2M^B9NDBNQ[F15XT_+(83D.Q,JJ`O2Z(C'1Q3VPJB&*WRO$C@B9!^*/<+C?B4IX[,3F@ M\D=LSZ1TF10ZK6)'+3D4-DB$],UPL6;%FB]"_O'VO]Z\_NIOZ=?DOV]?I_^? M'[[Y_JN_?ONZM^=^^]OKMU]]_5^O_\97``Z$;[[_K]=OOGF;_DC+&/5?_\\_ MOOWF:_G)4_W'KW_XQ^OTQW_^^/;U=T9M_N$?;W[X^O6//WHJ?_?3V]?_D_[] MJQ_?IM__H^=\>//ZZY_>_/C-?[]&O[Y^\^:'-P2SK_^_Y#-MV2WR_0]OOOOJ MV^15Y0:=*K&H.!4-+-V:?WO]]Z]^^O:M4XUC[B&;("KY]YO_)B-LD%U^^_&_ MOGHC!\V%\.;_??L#P>@?;U[__?6;E+XB_YCXF47^'V&1R"(_?.\CEB@O^DP^ M@FY[FI.K5O>0U&B:#8OUG)HFDVS!>L=T/76S+V;K55YDRM?>A<>%A@MPZ&(T M+$;9E$Y:[)2+V0;S""ZR]_*XE3L9O_K^Z]??IJ^1J M)YH'IAC9R"^Y%]'AIZX6*Y?2ONV*BFM>8*QH/.6O93:=E'@B95%BD%"C2,.0 M7>WW$O?E`(7'.J0`WN8KO86SR%;OAU-="W%?%#-2:+THI`<#1?-?,^IF-!&2 ME%2CDW)`(3--GS:BI_9LB.[2!:O+AIR8:"M=W>2"4J*SXF-JO&_;.*5TAMB7D?E^ M=W-PNK,-IS(.YJ7:P3&*G@*K2+YM$[TRJL&3PF5D$V7;]'T%*&=B%DFZEE$L MY[G9O%1>LD)Q@OA2@8SLKP6[OA\KU$MU2MS?4_=$>9M^W"#!`':E`DO%D&T` M317,'N(7>8;>3TGGN/V=\/*E@5N<>;H1)!.O\6;0,)(;5=D[XT:`73PW;@#- MQ&^U>FP49KR2U01UX8AERE8$<21>FE]6ZLB^[DE<#UKI@D^V$NP(-4?KQ2(K MJ&D0M0KR1:A2UO*B72/5 M##=Z>,@'J>\LV>P^>&)4&D`)XK-:?.#1"8WPJ00EB$\+R+2$R;IH`9Y0\ MJD6W>RE1*A&DQCJD)7*%'&8LUY/)L3S]$POK)K]*_IU[HSS-J^0?B')9UT+8C!\YND4\KH>A M&V(&=M6'%RP2H6T;T>R5IU.(P#;9.\K=JZJ@#%DB7E&((E&6B9G,GL6<]^RW M.SEA6BRWR79CUT.8.Y1PD2\EJZBR&)NJOCXD8DVU!^QFT2):[0&S#:,R2"%@ MR.P(\U<0-7R&-`5(SX[P['"N;L5@ZV4KK]6BV"E'=@F0+4<2PW'3&!)R4JLC M+>95R;G()FW1,HJ0"LTH0IK8-<+MB^1I^"PA:C#3C&/V[C7/1;;/DI+U=`0` MFR/I9%V,5OE,'[KK;F;[!R'T5N+J80J*USB;9BZN#-6(M1;UW!%3))_D(Q2$ M5K+2BSR?L<,LK?H5/2[%^T7,#B38UU2[+$$.69-R$'4`D"GW-!#9YIER--FJ M!LU3K](NL%^$<$0130$K4T5GQ82TR,;H"&\1AH%]%NH@9:%&(E!`;,#1!R7^ M9].Q%1+@6^@H:'P]+"*CR6\(BSZ7F]T,#!8@XSE:803#K(CDDA!L/S'AMYB__J!4*_O`%)C8:X!/O9O`KR?/RRVVRT;B$@A&7- M/0I$]D:0GMX`1H^2;M\`@#[V[0-]%?HXF[/PZMDBN[^!TIW9"\5&ZTYY`J[= M@FCQ&*S\SMUB1W="2/>LUD2E6RK$F/<;LD'R*BB(5KY!?%C-3 MQCSK!^*E>;3V,R>>O%SM#5>3V4(H!N\6XBK7V?004YGJRN:A)2]6;(5B/]L#I_!:FBH`L^'4[:1[51"CSDC MV4Y8Z+T\*6![W&B>%9V!N/\\+F^X.!KP(C;+.$CJ]&^JF!X)9D&*WX(UL7R*I^T-`ST MSQZ*>OUIU*>\:*4[C9@*'B3KF4^UX1!`-=E,5P.LUI6'+"SR905Y8*?I_-,; MJ3:FY>8KEF["_9#QVT+<#Q?#9>9\X9>8 M!#YA[?`O6$-$D>'`Z`=6P?ZP'+[WM'\Q'+VCYCO[AE;C`/>AZ\=1FW M)9AEH.Z!81G$N.[E$F\_L1G!>BL&QWHKZ:Q?F^-OOW=@&R.O7\-A-]_*,1>' M9>T!UZ^-T7;*2S"87<5_+.WOPK8B@.BL4Y3,R;2=J8-C%]-W\G8JE9R4K(_H M3W$!W5[BW+LY6B\(ATS7UP6_J0I<15^SL_%=21C)MO2W9#)&'9HO48\>L0+6RVP\^+G_#&22S^E" MY)"8S?J5>=J4',?Z/)QTN(1[&18F;LAE01I<6SK[CLCRC-'WV%%=*BM'@&Q3WYB$$G]NF/4_E6 M8;O/?JGW$JU]^D.]5>WOLU\L?S&;R@P;4D"BLC10]Q5)/!7-%1PK0@6CO<((" M2>GHDK/W+EC67:2&2)Q-9D8L-J!&I=(X5OR[Y<2/OC8-=IL`I7'D$#P9B+F/ M2J30?$V+DETO0F_$#:^./51A"HXB)%IQF]_9.$1_GJ.RXHV1^LQ5@^/ MC*[`8T\BJJ@>B?CF4!4RC,^"5]3YA_']9#D:%@:)$YV:Q%S_P`_>^9NFE\5Z ME+X?IM-\N5(;5K)BH*?O)_,%^6T--XY*#"86*DC+0*U23AB."V<:]W0A#(!< M#_*U!9D3%@0NR.#"$6%%8+)1*(0AR;,)1Q412.$"Q@5$U'$($(:-YM5%EDGS M>TA$MX_[]FSYPZ7#38QX`%6(A*!5U+(JO:DD)ZBE:C[UW&6M0. MD][$3!BU)HV:,XTFS4W,K-%KY!ATJLZ<&W?J\($-SQZ3TVZB6(UM`3QS[IZQ M;AY5!I"\+B)1MT:X7_DE+^`JB'[?24:.74KJ[C\0:EV#FU#Z91>D"CKP?K+U MS*GSCCF![)@A/Y?+R(`=+TVQ=:'FX'>1'48#* M1,LV@<;YPJ7:?.*:\,4L M3#2D^S:\S$=>AXY+A-#:6+Q8MD&/,N+0;J77V34?`2E@390OZ#)VY+E3A[XD M7S=V%)W1>IE1?ZL6@0[KE.='M<4K`?F^'DQHG\+$U$4C&KBQ&;S3+.*K!HXZ MJ4'M1`&V`XD@-,V+S*!:N3*2AFZ@#Q&9O!\_?MQFY+6IFI4M7A$/$\I2@L$3 MF-]+)R%^[X-#$9E/':XPDD;!@R;QWE<8@Q(LZN/0?`1;)I#)7T48/9@AGVCC M&AS'T7.SY?'2_*XMCD.:]I+C7O*47V9M^%;?;P+/,KI6QOR(86X,_L-!VY:Q M[X<6YYK8S%?(T@9B&\FWL7@.$/*2NLUPO&[(K02I8QNI;4')',RQ1,IOL-I8 M;'SX:N"$*+,:A#%M">'$VR93PK(!A)>QF2%1#N4^[`E;'[T/#<>=B4>&@\&V MEDZ/'I$8LR(2E[X'E[8&=E.$,V<;WRST6_J@;%G1/;LP[1ONG7**1KG`7/"@ M&M:.W=%:CC9K?S0*O>@Z>W8M1C-1,4PVAACH451K3GO5`+C(NO5#)_3IYE,T M"]%M)PGU)K);?#[1P5[Z;#P.L(CS4365H0`?0*E[0LS$T$31I)CE>G_J'/AR MW9TP$(HE9Y[F'E<3]2_,S6R'X&NA6?;.-D]Z\`ZTV43M#-![QD;HOKTJ/UEE='^V?.N8$6B1W>1% MT#*E=Q25*V+5DYG;%14Q']<369QUQ`$7V-:F>8UH?%-@$2^B/RRVF#6<8:?V M@)IXV!X$C831,CO?/+!O-PN1FFZ=HL3F,5]A+DQOV`&G-ZS@H;@, M!F^3YISN+MEQFFC"@\#TP/ECFA-@D2T6T;1@8:FQ97E,:@Q?&\A47:Y2I*K7 MH4NQH5A8I$$DQ4HJZ)'[^QSZ>EC$11)`JZP\8,A9?(W([^M\'`B5LLJO ME]DB6'[)P_YG%RR/O(6B>)M*?Z]9V!(/XNU][&UBLD7B_KYUY#%_6^/P##1K M#8A-C]:H1JQYA`.%-P1CVD-VQ?-C;]PFOYI17>&.!N7*.,MT9,11$B7ZM&*U MXST:8;2<#T=90EZRHSKK94X,JI,3VH%3\*P"1Y-$=)J>+]'1EAT]Y.*0N5V* MM@5+P4AVIPIM?C\1X8_2!CQ]LLC]QCPX%_9S&!^'>.`XM3JHBW M"/'RUN(FMU,9!*EPC'I^>HIH&Z.<"(H'1[/MWO)YK"I!C*@XP:HPKW:5&J*- MF*(<=E3)0H*]XD?0>2?C,%I:=:/J(+C%U'L?HK$,)$?K^0D=JH91.U0>Z5:P M.*2[C^Q!`&;]^'IE]`]49ML/0@1C8D/XB#MPTO@E!/6]=\K++#OE$UQNIOCE MD=AJ\4H\[COVR[L(9,5>`CN9C']>E@ES[ML*M`.]+*PO@'7DO\&*S+O1T1Z- MV/I@@2:G$M=<>$FZG)3EI">!GPC"2T.X<%'K0#?=$OAX`T=$H(!873RY' MHT/Z;_[\Y?/#.?U=K&\/B07Y9/#XRQ?0C!IG$]",G33-P)2F3/.C@9QBIM0< MS=8%2Q0@3FR]'T[7[!BRRJ%!+;P7MC<#`%[*N\^!_6@=U56GE&Y&R]'\@SX, M9MK2-'V4-K;Q,LM%RX'$"(I%+C:?@(WQO&."4RG"J7M-<@- M#G!;]E&4EP.?[X@1H2JP)GVVEX2,4999LPXY/:H#L>E(GN(2^I9)VTP+SX$M MHT$)6SS2K4WV,07B4GP2'T0B%5%N^?-SD22(]]!*(9/S]7 ML^GL)EMXOZ[G<_KUHVY5'FOTBGVFP(P82SWNZ;3J..EF^<^FFZ4V8D5MS.#F M3ZM8NIQF3Z+9M"*VP8U2`O%VLKCV"4PEB$%O?)50@]&5Z4 MHA2O+>(EC^X>KSW"$V<:0^U?+="JY)-.[T;2<%WY(*!__ M*QNU<-?R*89-562&HU$V1S,I0&K-+V@.WP9@ZS,2CA"1!"@^5\,/EC<;?"RR M;#QM(S,VTTKP850MC($+;TWGZ(EGMTM3_3J[]DUS8Y)[[&S;]J/@/';?5FDO5.Q2Y/T+ MOOM'6F&.HLXS0]R%H>TGWS(SEW.Q+&1GF+E8S6Y&OE!@P^Y:S2Y(B[G(BQ4H M>GVQY*G,)$E`QEAZR51PTEU?+#A&^,#/62:;8%`?-";,EIN<^;-%`\'R^L(7 M&&PFWC&0@'UI(S@-DY.$AM.2U`PA.K6-HA-WMEWXL?003P/>-AOY)>/0I=>; M`ITIO&LA5PH[M1C5OQ;WYS%=QS@:#\(?H_ZA;>R5*TZ61:O#55S?T M.GS%3-@Z7MK7.33Y>7<7I'4(%4;K$8'-4HH0RGJTOIEG"#.1QF6E5L)!8 M#SFS8CQOZ2I4V,W)=#9<7ROVS=$=<<([6#2UB@U$;1?),?/O-O1QXY08PX3,F`>_W#] M_@2=M,T.`;A"3?1B_0"ZX>U>J2&]Z\ZVTMU3VUP4W1FW MU)E61^O4,AT%KI,MQ-4ZCV42=[J5U#60=]<1BC%R>DUR,6R3V2\7LW5MAY9" M&N>-[40776AH]@@@75MY.UBW=MC;5=(;(#H7B.WQB]N;&+5=>V"2NEUK47F' MK$B?`M\$)X;[N_&NEBOR^QCEMHP7FL/>O@0ZN'\ZMS>OO!%T1FB?)XY@[@0_ MAL`UWE+"+[T&_65QN\$[,`)QN_[30-R%!\\#@7A7,Z88[DWY8LS9AI3P"]K? M1?T)NSH!#UL61-WGA9:2^L%0?@F67:\@:Y2$]-_(0'C=@+\\O7A!AH;[`LAO ML+,A&KCO",X-&3U]V7=#9Z&"?'(DON-A M,'&]#\&X,4[G1-;!FPU4\;7B&1=/`TAI,6?`3$S$><9`P2O/Z16PN]RQMI9] MIT#X7J-YKD8.94QE)H+LD:L.1^P9XI"J@%(;=>9I**U/8V`)6L?(,5B4#HLH M[2G&#O50F#F_LB1T/D?LHL8O+*`"/[=4Z/R+!&R*(\'U$BG6X$,+<. M+]:3S8#/.?S-`)]M$GC>)G3SQCJ+*TD5Q9"A<2*K^+;&R<"G#CHYQV=3)*J# MTFS[4&H=(Z<%FFME*WF9TIRU0H>TVL0,;6)/HS!;,D^M MI6GXQ_1'NIA3>I&F.A`ZF7,P/0!*7YZI9=^YI3LEIY;S&>%2D823.H&BI/"\\7P\GJ8L'VY"5V] M?*Z_@Z0A!PRQ8OA.-4P3A+>J@<1L["+#/J=MB5'EB6OZ>RO M:#;'@NJ5JV$QGF:++MNMLTJMB^QVGHU6V=@LMN=4IYG54O4VZ;CP3_<84%"F MF[@W@Q2S1;9:+XHTI3>!N.VS=O3KI(.@*%J"I(:$ZD,J>C1C3T=5*V'W61M0W528<#JP.?Q&[.- MVDQ@9)\,U@V;5V?SI-^)/)HI'@.)8K`2=Y$FQDZ:R7#F9S(52AY,6T#/C/0" M1#.I%D)`'+;*L,+O"(;/Q^GDQ%7L7"!$=="[@I+XX^K&;MNI<4YV.:2:TA MY-J2RITC]X>-2QZ"!TLXA`GMH$AGJ89:$N2>42.(I8NZJ/7PA`'#]UEK>9`2 MU&S9>JPM$0S6:=DU8H=KIE126+XR;O56%3BO0J'-7AAYF%I>#U;[0?3>*F9)R[JX?J4/!1KSR4@H!U^ M+Y!5JZ=*7*PG``WR9*&!HE`?G,W*I,R_L\7,=!5X%]>PYL5H1AD)=W)8GI"2 M=02'%X\',+0O6O!3.,O5O!AGM_&6E%%W4;&RN6J83)9R9'-=SO'8,M#6??!5 MJUIMD^K$>`2'>Z910(P#0XD%3P*$4)U%1"R"RLRJN1"VUJSU`;E+ZFJPVO5! MVJ2IO^!L.;\PH$P5G.XRL["[-LCF^+V[7%_,[]9>M?CL?;98-F59W=/\DIW7 M$V.57P:*T^[/[]T%BJQS[A\I7.?/M]@WBY%QB]'%>'>R`-CRF>DW*YC-.UG0 M])51)H[='HUM8@%3SK1CUQB2+Z;#Z/C94CK1]O=+:JQF*[X^OQ;7R^,8)@+WH#3O&J=(M1.21R]\`%7((OF*75X0=`B]U\2IX?L:F&BBIQO,CV/T=10 M;8"C*!5J542M%F;+U:)Z)7K0I+RX&A9ZFJ+"@/!+FH)=MC%472%R&B2@P-^3:6(A7@17^,8/_@A0H*(!M%$RX;7].$4_7X# M"Y@@Y.W1O`1Y,B#\9ZKN7"9Z1\0ASLT010WC!@#9LP-LTV]^H,;S.P&*_CQ% M"['[[F@1JME2^N74*D&/J/.+6&BQ&U#..GE$"X]FXVST7C2:7^0S^49$["[E MS2\TA'@R'5XNR<7+EA9=CO*L6.63?,1A1W20C.0--:4XI>/*SV=4 M[_$6(BLL!?R(\N_R^0TKWB\MNRYR>J6JA%T.G-T<-!+=[Q3UT''1+1ZRI(UXW8@[0\]2J-AU[49/6+9^>PS$1M/%S M,YM-9/F(CDV&^506'\2@,YS/2>&7Y:.SHB-9/C$N\H*4ZP_*(?*"Y=-W37M3 M/LV)*"WH9.P_IT4_GN[%WK\H-:KGL*/G,`D[UO'VG&'%(WXF(@BL-F M-'!6JQ2L#2-4?S;GIW42@#="1VI3F(T^L@`ZO MKO(RB(B7L5M8:I]7`T]ODU2M1X+'3?03T9U5`?^8'K3HL MF9T5R&E@=<2X``:'%6WVT%04B"@0\T7^GK#C"3+5Q&RR\91(L/"1G"XV/P!9DA@UDI7@=8FP(-E*LR+'N#G"AQM& M^+`FPB8K16"KLH4@WP8"<\5ZK,)CDST/3;86KQES?8Q;N2$K1%3=")D<=S@P M^GB@I#5-Z`XCK:3D1#TU4+#9UYVB'C)5Z,9M?SX2*SVY);R]AK[)2E[Z6WH&*[FWB+"+D//J`6Z)$`";.%X MSNWQW&GM\QQWX`_%;UUX:[:$)!;BWROF%AB#`+-HR4+=[ON M+')PI($BF\"1;B:TA*(M'C&&D=]"G(+R"/U)N8)8RQ[>$,U3]N@Q\`Y'@/GC M[8S4$+-4O1*\*Q41$XH.775I^A45BQ9\^0:5Q5T-697#`1L*Q`9JX*SXQ7A; M58\XRTNR12!I$4@,ZF@1H',:.RU"T3*89]%<%.N\&_*K8:=3?"@;(*;S1L%(EON MO1D%-ZC>;UOMZYU%#Y51#7^'"O[&H\GO0I'?H!J[!86]6Y!O@;(]NIV(O_56 M:5W_VMQ5OU7R/QKJF142^CF]'JY&5X9R%KL?Z7>D-?C*J-&1>R2T4X+]V';U MJ"-8,;3;VNDZ]8=PQ#G2)R?4+TY`]IBO#/@B(G>C:J2F6JZF(M8\%?FA>51A MOSRJT*T:WR0APR0'F:3Z,6GF[.:J])&ED05!F7'=4[5*&RJRF[B$=JP@FLJ. M?@%Q^OXT=CH'ZYACB*>4T^$JE(U\">O4+CV+]H=S_G,%_W,]"]6D(K.<5B#* MY;>/(/*6P](?Q2\8<2DRSY'NJGQN'>89!F]8$CCXW('%>;XVG@-N7P6$D!() M68F-3TY$R+`\P,#>J<[(Y'%&Q9]_J5)5U1QGTVRE4G1U)0WQ8K0-O*"_#SK[ M.WFEJ/HH",#J2R0(3Y_JU=9=+:^_MR?V_]V>F-W@WXD"&&5=EUO9>\JG7F@_ M_U(+'I.]<>))B0MY<5B5A'WC:7Y1)V&?K(J6@3#48 M^]1O"*P/-M*`;.&+Y*5[A$I3WTYN-*+-,ZOQ^B(=K1?T*#^?5/A!:W&/$&'V MB7NFJS!R8)A'6DF-/+Z&ZB"IAAQ_=:IYCE*;Q!JNT%1;"#"SL^QPR=BMZ-S, MR#]@=U$V/]H'\>*W,C&TD%&X2[2L$8,$F]XWQ7#:*6[@2#;"T7-1?6-\!YUD'?G'W[-*T/[UZVEN.Q+E5M<^4ALI$^U.R5C]F)'!).) MVS0D]<9D,[VJWRV6#N^YWW(Z=@24R+&%)D&LV9/6[W`/22F!_WJK.^#M5M2U MU6+^;'\'*TXA-71WU[561N_4-MU$1\:-N[&Y9"J^'G`C3W1@\E`Z@!N$2C2+:@+ZA+N",XNM)T@[-FW4&6:@J M;=WJ$'"YV1[?.-V(TM_MCD6P3RW;C7%FL%;D#VCP0!]KJO8:PYK4'M>6>LR2 M!`7]BT;^H>GSIT,C+Q^>N%"[B)X_Q;*M64F*D*S63OL$VO&`:*G%L!C/KC&7 M&LRSM)3%C(A=TG*6V8XX.T$3O=&=[>*BE4$R25;(S'#)7C5-_(HD>%UF$B6G M=3=AU)[8ZN$D8`DRH&.647%_0ACMU'RU<%^Q1H`3ET`$H4GJU3B[M-XLL[D% MBO!V*AKX:'HR!9[T0)*#N"4I&+452.,3^;F>KEK0KM8E!1H[E!MPE.UQ`0`5 M>WE!HJEN_;SFP\$D6]LZP:)2IOM4@GXU7%M!U$I>2-M&Y(,QK?WTI8N662R3Q50C/"<-Q^]VN;[(?S[^)2R2IR5-J8)%"XU=QS;V MK_J-Z1&C]:%B)I1_/YPBS2*-[-/27@3HQ_[S]Q8*$($I47&7WOKSX6)X_?,+ MJP-B,HC!-R4U`N:6-'_J^S@,?1QYO]"E@88K!924T@:#2S2UH(:(N]-XDA%3 M1C#NQF0UP"_3^`692`FAUM!OY%H&/9C6H;!B^`W1V*)RL0$JQW:A41_,*\4> M`*7_]4E0>JE[X8IF+^H<7^_-44Q4>PFCA74T_$:>8#B#N1;PHB;UP!T@QI9V M3U_X0SJ.K47&-0]*TVD!Z`^OB;2?C.SRQ75V?0$M5+N^N[!99`*(LAK9`C@. MA;G-Y@R0]F#Y9%Z.N`.II MG$^X69'B5:7O9KA:+\&::[BX[%J/=>:B(R28R$II;=>CTGZT7K"0JU@`!HO,U[R>`H=D\-ZS%[O>EMSTY&2^ MK)4;;Y'!N,4*PVDO=XARJ=)?B/YHF@T7K*J])OLB>?8\PA/'6[I^1\/Z-=UD MD'^P[>MWR[A:D-P?:!VWHZ/9]371G24)TT?#8E;D1!Y3<<4RQ.+IT]W4Z<^^ MM*6]EQ94B\V'JZNPEYNQ!_*!_)Q-WT,G02-KA/W)($A*P`XG%C$]TDE!@Z2M M"VKLNVD8(24`HZHX))A8: M\JF^G>J8![\NE99JCE4S?)C"NU#7Y]P&Q2HC)I>ICJ.'`0%&=S2DF.#/*0"/ MM\')$&[(<(71@%OZ7]GS8GV=J=V0<5;,KJN2@H.<,IAPTX(#!F\LZ#&HXS22 M38(V/0T'6H]H_HOD^;.(X"/A-NJ@-Q8_+KY%/JF&OZ7^!7 M7T;=JWA]L9K=C)*.3,1A]F1^,PI?"[6Q2Z$L-&]&J]GU!5A+]E3JD#1EO_"E MK,".)O@@W5P&^AF^4G=S'96]-1$F^-`.+\MN_PUUYRYNG76Y<3%GQ\/1!=N< MO+#6@B\&7T9%J"27V6JYOIC-5_C%?3-VR!>YN(\_F857LW?$O,0#HYA4:"/^ MR9JI?"\U6Y&EFDL;\M*_DZD-<=S[C@OH?\T^O8TPZOJWIZV7N9$ZI^PY#I7CWA<>J]+H]]6](V'*/&_4$=3NFE\WPL:&=9DZH3L4V:S8H MO$P8B0T/DO*;.--8NFLH"'0V`/>+@J*]+NB]AQ?6I6_!2Q*942AMI?C+%;F5 M)N^V$]4]U]!)DZQ:*Y9Y9%ZCIR&IRE0HB_P'2FB35XKZ[#_,MP:R#=TFYZ^2 MH^0O[.=)N2)Y0HOQMT0SB9?_P5\JC'[UM3^=WC$&]LPPS[^7JD3[<&A-=>0->&I[M+O<2*&:7,BQ0EJI$"00[LE>^-'E3K*_O#<\*R:_`T/+D4,^>5V?`+Y(O*^:4W,-, MSC@I7FUW4JY3=R#M&=D[]]E%:[/KU+7;L%(^T\V"2BP$ M&Q=:&R9R(AC):]*LIG@XR2H#D3Y=M?(0V(@0,B)*!=XL#2$/*ITDG2.>=4_& MF8'B9F]U+26&>4FV?K$[-?GOGBX5*5.U"4.SD)LC&[R";8QOY>>0O(!.1,;Q/M M^H-%:I$2S68.D::7WMH%%W4@,"+&P.(H%PUB_W");69"ZZCTA/2/?B;5C.T:2&]2%VOFJ%_:J4BB%J(3*,= M6K$KVCLY41#@W3NL4%<1%VV1.2GLMGS`0V!MM<2:<5A5-L39A%W36.B&8'4Q MH"6=\;4*LGI[8#M0/ZH((C5CL3$=9Q?K2S"DP);)B-&9_$9ST=ZN%O3BZY<< M9BWK@JU+(*OSM707'?$#9OEV$]FV8.]]`9G4`AHW+5"]Z@"I;GAX.C""8.4,2=&9J7<-)7G6*L4J5YIFT$>6=!T#E M)$+QH-_H;@E1,J,IO0M>JBCJ!6BPG%-Z34H]05=B*5"^DWAP!#CU3X%V4XDH M.=OR?\3A:?EMOEJ,B-EJ*?$_89J.^;@(A4/]<'>S-+O)B+.:E02%*MS->=K:ZRM1) M\$1_[H"$KA^-#QQ9]?S(*HBCY*W.T;"!_.'!@WP2A$V&XS%AWV5'D8H[4CEX M93@\$M[3Q!P65=LB=Q`&6\ACYI&X$,'8J*"K'VG`JOE64`.#NG9ACGD*\;P3 MM)NX38#OQ9_P.R$_,NQLC2B["X2X<7N#WQIQFQGC+@F_M_-=[ANDF M[L$\['>3)Q">`,_Y>,KND[@S#Y` M,.SJZW1^>/X'K:$,*W`-C250SBBD M[4G"VEH+%+3U%OPD4-=OQ"T24&Z=(,-"+<['[NN0PBMKV>Q/*WC\X:7"/6O- M5I2FTGVH\G1H\CA*CS;5G6ZS?U8UBKLF(,-3P'H"_]:FH-L&K1HGJU"2N7HC MJ&&MEDPATO>N(2,J#PSM2*$ATD;<4CY`/C$E7K=_GVU+_SXKZ9^[;\(]Z"6# MAKMR6=5'I9T*5<9M*8^;OX3R0>]_731E==SV\LN0($&!U_-,CG$)?E@5KFT" MQ*O`N)M`"9BH+X]B=O"KF:@4?VVF?L7'C=VDQ<;*N+Z0=3K]D0WFD(CA*;$$ MB,(6&&I)J"\24TV?D^6+RA?LE8Y'+(^ZQ,?YX@'R+2'LES$7@QF$I>JW'Q,:B=VO MB%P_Z`S4UU?T#DXP$^2HL4$A]..!RF*(6.ESI#CW*[V""H*73>2*[&*X)$MG MCN2IWMN!K]D=\&RQ$R@C[^AFEV7SB&R3IH`!R]*"^+](T1Q>CFP`ZY=8.+F M5[Q9LQN\Z+&?M"([68A\`[.WQW8^GUA@MV3555BP[+1Z;D'O0)!IF\]*4'/! M#;P/E*E;F!\Q"D#0W3'WU(\%OJI\HD&72V^ MJ7S%'0"@L>H5X^]?7F33V7R)\'UL-2?&/M'/I%1*BJ'&"0VZ"/N-N&OYUG(U M?S`\&9]UZ'DFYCS\T/5L]WD:.J_2#GE.SFBI:FV<5>Z,:*9J7VH0[4S3[&-" MK:SCN*MM(9]QL1K+:[(FR[U5R>9":\O\\C3/S6&/[[]-OWZA^__^_6;M^GK-V]^ M>).`%1MMD6U4LHMR_R?-EVDQ6]%S1^_IP2K6LQG_^$^.P_]PCN6MR)TZ_L0F MWBL^\?@"'NT)8^1$1K?BI$C4OCD;SC3[E5Z[_EN"NP7+NO_C5]^]3M_^\Q^O MRPE`>[^DV0J&2ZO;LL^)ZC3$[8R7.D]6?48"Y],_SSNPVT@W_KXN1JH7;[*5 MV8?_?/W]ZS=?O?WAC=L'6I@T>9D58M(M2+OY(KNFP7?O\QEI)9\5'=8`%3`3 M9X-U`G%#$0LB4@A+]@OE'PYW%5N&T49*:6,GB!C\\,_TM?_]Z>OOI6,;BD''OL@ MZ"\M40_]<4H&Z`/8D!;E)C[_>II\M#")P\%IO4:[F.U6E[;?__!V>^C[V3W1 M][/-T??;US_^F+[]KZ^^WP;ZGMT/><\V2]VM8=^S>V+?L\VQ[W^^>?W5V]=O MMH:#S^^'PN<;)_#6,/'Y/3'Q^>:8^!_?_O3C-I#VX'XH>[`QPK[]YKO76T'9 M_?NA[/[&*/NW;_[[F[^]W@;2/KD?TC[9&&E__.FO;]]\]?7;;2#NX?T0]W!C MQ/WNA[]M`UW_XW[H^A\V7(;DE2X>-'J?.=A!P@GRS%P2XVPR M7$]7G.X4EK^KP@5O.%[H.^FIK-(L^9I?%JR%,@J_Y6=.AMH1,60NYJ%UE'M8 M'8O1;/XAMN<&"N(%.X]DIT0:U<&#G.Y>*A M]2F#7F#]N=AT?Y"AUQ2NTZM0QP2O7#3G%1K&EZZNAH6X6(=M>Y7P2T]15F'$ M4^`,V6+WHFMA!#"\J(XAVVW)5Q_:09`YDRZ2WW]G1&2NCWKX?B/V0@'.RB$Z MSM01NE(Y(.&0:KD>7VR+;9^6:`\?>I4V8-H*Z%%$"/_1?VJA,U]D1!&(MNK0 MY^"@=M.SY:I9V^3GP4'=;H^S)DT?'C;I=K.VR<_#P]*VC>W:"O2OSHLU)2KX MDR)B!=GZX(`)UE5\3_^6\WAH*+MD(=9E%30Q'(]SMC]R1SU5J"4LG9$:Q^0` M2\U4SEA-NAS33S_"KSC:&FOYLF`O\[OHRG)]L5H,1WG"V^G7MW-#D@8[KPVE*>_@ M<#2B1EU9YTDCB0[ZV:_#I6BG=;[SG\G;7UKII-(?JH_Q"RW9SYJSD%.'ZH3: M$'#6X.3A=I1,-$RL00@Y0"1C-K7,X6'S:&GM,2&&KG6^`D)#-LU0D[ M)H;8DE2ZL9;S;)1/\I'&TXB:`S5BO3+*"4;S,E<0?,J'8T*(]0YYJU=RZI#% M>"U(J#L%`/,'7)HC]#?N"/Q:XI17&"NT;JU1J^".M/I7TKW7PCGRM?:-1'8. MJ5FK:Q7<,\PQ8_:OI'O?$D/F[=6PJ-X]I&:M[E7QCR']0SJXR-_GPZE>KSF%[8VS)4V"95;8,SIULG//!CEH+,6ZY@+&QKZ)?Z0VNUC8YM91&^%Y&G62R#'Q MDR>R?35+8Z2/O[4X.13FSK_F8U*'><\Q4PK]'#%4/DFAAR+61`X-WI^[P MV"(K?HO2*[(J@O#,HI)1D].AP>B%0>`H2X]58#19WJ8J>)4-:24N4P-;2=B4 MH5!1^`C6:&ME&R"#Z>%FZ]L$9$DT#Y&3SS15H=I-N)ZG\]5"W*6V$(>< M;8D+1$,R[@U!Z:O1R'3MTI>SZZ_87E2UJ8'6]'03-`VE6:4)`-%OQO:Q[BJ\ MS7B758C%ZSIPC$&4@""#6_Z<$@1J+ND\6&"[-&Q;#/;8=J*TFW^EHK""%2 M>W'K+1X'7(]4P<"QV!IKSCJ&[4ZAL3:$6JHZGT.F9*V(&7Q*JX9$A!>88_AM MEE;*'S""J:"S;W/?5>D4EB^>!#O"8[5M#UY=!"PX3HQ(!"KJ-HS:2.@;1O3- M&A$-:X]BW8:QT).(AD?FI3*UF[?@.+<41:`BG?IU4;!C7*)[W[1A`XIUY4F" M[Z1CR:#CU9DN[A$2/"6QV#>ONN/*<:NUSSJLO,]J-E9A=U4V%2^Z9&-R_Z>: MW+%KQXH*NU[L5+/K59NH=NTX%L?;K%/77?:QKZ9/YNV<)[#FIQ'C,GVK)87, M*3L*91X"I'-TNH?=J0U^/;&%QZ.1AO9.UM6\#0>9JVJ(4'5X8YC M(#QG!,*5RM9A)=6=4/5P\?B0>Y!#V"(EO]!RPU.MT>VQD=+%VT%Y6'U+NJG1 M"5Z5:W?YBZ3_-.X:&<=,1'(^/2!>N6,MA#>%`<\BQAX09R?0@M(ZX><_A MW>@&M,2BQ)$GM^2[CB<%>K5>66.TOT>715S*L1=(A^35J.`^V,K-G'>.6D%? MLR#%7#^UA#8`WQ;&+AN%F4ALG(+3F$YQYJ!-T`L4&S*#GQ421\,@7/$$#IP0XN\X'$)5,%1BUC4YST..]:X^&EN5F9$3LF/M.NR,@; M$9L9IJLF@$XX+7K#YADB=EDYOM$2<5R@7.99\?KV-E1M6>(5$K5Q$8?GV09U M0-(PIG&DS1X_%YA*0:08508E@JQ>%A M5V:/^NCQ7*.!"_$HHM51=#VFAM_IZ)WC>#PPXY$J\1P^0(QG*L1SA'B'YV$K M:,+CHRZC`#HX29)-EYGU_>"@*W-@^0:OECVIQ@ZK767H/EWQ#--&-;4#W=GL MH[.7:ELD#`'[\,`^CR67"T'X$5Y%6>V:MZJ7O%6^4A!6="X51!WOLV(U)`.[ MT-<0C][1*Z*SA;%%-E_,5D1V9&.Z":]K[5,_'/]YNL>W&T\,=[K\JLLY?KYM MW'.CXNMV3GJ3KU"*='3/V%6!W>1$][#SB+WYC1JP6.4S0/5'I(R,YI+W#VH/ MMBH'O1R/I/]"&L^JX[I3N,3H!+.>-]C)V9K9G/<'![D@#2X#&LW^9O.^E1G_K-JF;-F,5TL4VXNT M%YK\OFEOY@[-/;NR/G83XR;Z72(O>J(&6%%4]&"`V!@[N@6)B\'"9Z1,6F3O ML\4R2R,BJ<)%/2>`>PQ9WXX,LE6@^M.#P4_IC]ET(+F7VE!3W'C6_54*2DZRC;2%/';K=29KGLE!-&< M9$L\UM3A(=HRE,"LLBOO>*_8-]D)5KPL*.W12HB1>K&((7#!4@Q MD3VH>*F\1V3_-3=H_% M;UG?$R?E!8SWF\]P1/D+.<5;VTM,>L8H_T6Y[K]3=;_3]]'ZWNUM!XGF,`=3 M0J'U.@(^OQNBZ^GIP2L/`CVRM MM-L2TRV,_V?W,0".>545Z_-[H3HG=RTNN2\J"YSK$;DITK4YXTPS1@S6RE@+ M-.5:E%HV5^]ELUE[:,_:\BX&FMK3VK`6(>Q(DSAJ&'T+%`8VFU*[=#GU,97E:SFHY(9'*S;C<(-[Y;OZMJ^ MKMVG9OADD6?%.+YG_1ZKZ>]7H&>R;E>>WS:6MJ+"?I)^E_*?+-#E[9R^8$M' M^LP0)2\(TNGUXF?TE6BW5&%A.3X729 M<7N(18G!2MU$5TG.SPU$*L/_B*S46SYXWO;)-#TJ<&5YHD>H\VB4%]V>28H. MZ[+E%JR" MK)5P+&S?Z,LO-R%D@P[04BEG^^_J2$K@M8-JB.D:/7^%;:]?/'H$6A1EX816 MY:%`^/WWO7`=QOP$MEM9??59,M&$_>Q^">O:ZYXSN_SGS%5-AN"?H8*?(S>Z M&B[DA[RXQ+R=6QH08/>Z,PL+OI[N9>=(",\@C)Y)HG0DW6,!P+04#IJ..I!P MDL&81K`B!(!./#N3'PT-REOKVB7U*/I$90E6ODB!DFK>&('R>J'H@"^?Q034 M^L2I/J0+;AM%=NWE+"*V\FQQ#78Q]A*0LT=VH)+''Q<,<6[]ZG6M:54=@)AW MU2NJB7F^]]N>;S^%<*?R-V*Q23;YS\"PP6@-JY@C0OR(4GW-W@6R2<`2#1)A MF&`J),,P*]9*B&&"B$J*859!$V/L)>X025M5[1=\HS[02?W1B,1T:X/#V/19 M',@V(?(CVMQO[YG9=)4EE+BW#9RY#,9Z!&/$3!3T)HC`!.Y$!8SF?<#SAMT, MJF&6LU,-XWD8BR8$\,$!K&G+5`\<$XPICUUZZ@8.#M2&2AEZ?#.#'O)IA)[: MUXA![_!0H8>-UL^_"-:PIM0CX'LGQ9$AX=L)0.*^%M'8$ZOEH:Y4`KBC0-B<;7L[H&1 M(R"-W:*%>C;R@FR"!I]M!PWH\H\`5=T7@FRC73]KH>?M#O[9W8[]^780@#RS MGA/(&^_RV?:P.^CV'0SU]O1[*OJ]B.AWN(>QZR>P?15;)7(+*Q:<,+3]RMI3 M#UCBT$AA)V^?USQY^S3FQ-%8N%54TN"8$[N43F)9I0_L/BN/:;3J0?5B;?L=F:QCFY&I)E*[^9%KN/ M_32JHGW!?5PMY.Z%N(KCK+PA0L1__/`W,2[<'5;.Y%[F.0.IZT$AQE+G_K&L M1ER\7@EM\4KEI/4A6=J,35AH6'FH1#W`?W8JE=&(8I*-DQVIRDFU+G;$JC#[ M;BB9:'S)CE`E4_!JMOC3DREZ\NVH%4&MO-B1*):A=K0JI=5T5ESN:!3)3SMB MQ2@]2J4=J:KRU8YB40J3Q;'TQS794BI!3.U)Y[IKWN1G!_2I_ M6GI]D1P?U7"88C16K/G-,J6!*)>9==,1]$"FW]`2B^$T("TU'.!*Q#I5$9CV MC$0`"X-R?"V-(2+^FQ:Z;+@Y6H`'UK?M];A-H&J]U!YZ[8'4]E%[V%6"&8-@ M-8@5L*R-*OW,=R@M:6-M\=D2'8J=[UE1`=K.5IMXPP#]6Z2))\#7(DLLN#U_ MM\XHEO1Z[LA8UH!F@V3X(HFZO*K6/N7%<)F/0$616;A\H]*N&)?(.+NE"9SI MS>K+]7Q.A(EN\VGY_A9:&TMIO$<#3PG)"YD,?+8FBGJ2+H;%I;P%B,K;9#^E M76#'>LP*TZRX7%VEV6*AHDC-"E\DS\M/^W@09GO6Y7F4;!+'9HLFC'9-8VX_ M:.)&'/\T:AVK[6(B()+T*_8MO9DMQNS.5':EM(P\`!_WTG2X(OA>K%=9FB:= M3IJNB_4R&Z=IMTL^$GI<]2\8]-<%0*E]GUSW>.#T`(=,% M7>9+&LUL%*97(R^)Y4<'D;2_O"8MDTH",$7C<]+K=Z?)+6EQFOS'4>\_!I_# M4`[C[R3Y_-7BL8(4OU[R^?7G+)4Y03Q8AWR?+3Y\;MZY('OP MT:8NO[<[3%4^<@%ZTN,K&#V#U%+$ZH>(13J4+SQ4,'OK=(W.I[*NC=A]WIQ? MEC?#.>@@U5&T8_,>UUEDDD_'!`GU6&0WJJ=L[E(R,RX1!>B1OO=4QI:18G0] M)XQ[227H,F`1>S63TZX`?[!.:5A`&:()4/Z7^/X M"0Y:W%VNKGQ/U*_2.A%G/X+UT5,<)75&YE7QB?5<6A\Y;!+1GJQE/#F$=VPJ M>5S)8(WS1%MW90",]FPP_*,/F).!P2Q^KBAG%BL%HP&X53F[+_+W9#*=L'39 MY083-B'IGS1AWV1S\49,IQ*6NLB+,5^W*7UQ:I?BLH06(72ZS@LAS449#>([8="=XA]' M0R+JB.FC/YL6QG=Z$BQ!`RRL5-7X+LV7I)GANVSR70J%X#2^F61".B0P?K'T(B90> M#U=#TKW5U6)V8P!3V4[8!)V31W[[J@!SGG1$0JQ^%VE&'SX'9W[XH"?LA+"W M00.MGTG97\IZ0=;"%S*FF,T5&N/*ID-?GB*VW@^0=CN?62ST2(/AAP%$U>0O MAL7`\:5N3'4@CQ@X].8:7E<=A.)_E!G].Z=85=/UP"SR@IF MA^3PGY:QIZ"KPRT`+VB!.QWI`RP3C,703B"X\$$U>MHRN(>B48VO3P5%] MY:".4PI.,872CW3LZ$58R^ELKKB%_ZNIR9PW_*?4-0SE]"H?$ZUQ(AZ5\E'@ M0:F.(`+I&J$4,I'T:$AXC"O8@?QYA]52YU`-LK("IP!5^J^T)`'BK/N\64WH M@G`[H3.\#UI]/.\<]KNVJA;@KM\:P/KV-#8Q5QS*-FAQ&(3:.[#[%&GXVH-6OMK!./KL_^BE?PBN\P+]WP>/%DHX`%4$3A9,8Z!0H:-:K7#0%2\?B:I>+LQ(>MENQ>F')U- M)KYN\2,8Q-8DQ.4IX9`EGKWDSQKN^]3S`U>2$?.VQ'H0VYV(<=Z\)L-@'6> ME!PA!>$K6ESNM\07-RE-!\.0 M$^+/$+)$OE([;?,-86;I:8`:FFLMEL*OGW6`4\7!3=UNJ'-&,]6!6%V47I9T M5`K,IW#,N[UE]XQ&G>NXF8Y#KNDFII0GYUH<4J08?B7=VFB]L#NBIS9L0&DY,D&KPP7`'X,9#U0/N`\>DZM%T=PP:SJ6V[U-2*9E/X8L"L$66O,UO=01S#O((A']43L$J([4=@Q>#< M=B)>6T/CRRLL>)_A!,'BSFT+>*@3L0WYFC#&IP1[@4X\_J5#$-N0TKPL('&)BG)Q`!SQJ-2TR5MVK-5##"*M$I0VG MIO@*`%F6K-4'Z<$OH85R]/OZD2W>FS@MZ,[&XE)XUMPZ(R(2V'TPP'8\ZAE3 MLD>K`M&K_6G,;G-1-I:!KZ0;W>)>\S(<[>1.2M;HEONFT_V9E?K%F'<^X`[L M"N+=:1"7B';CPY7-(Z4NAR(Y?U7J<7`*13@<%/Z%BWTIWJ48E^!:@F4:RP0!]09=WU4$B"`=6)*T-;*Y M_OERG1`D1QPU#"%]!WWR"%117^FJ!H:1#Y5RT6312^+DJE9MA/>4_4-%*+!T MMHRHRZ"';TN$C2*@UJP!QYR/ MHB@;'DPPA47Y'JQ[P&S;$.Y5QM8>U;PR`809D>-V28@N+-E:;7: MVICT2T6/H9,'C08BHM_WTS._;F^UM^8@AG5^@VY+Z$"'1N$/Y&)N1M+D@Q@! MX<&9`>,P0A.\!1Q#XUW3?>#I105?0A7JEANF/GQ*6;V!4R*N!YOV_-7C`&=I MSLCUG/XA__O-N'WD`=``ZE8I4G$R6]P,%V,'=3^_4@!.M*43Y?^C3D23 M#M>W'5$1N'O$(PV!<:-=`I,9YEC`PS.=8U\(-[)>8/=BI6^'E]@Y!]"A#G0Z M]1BZK)IATP8<9O=/096=`2<@UF?/*0&&3:E5"ROK(ZFT-G7;,1)NB'15R1;) M43#AB.8FE4X$)A8)DI6/+,).LK[-4\THTX@TOD'&95^)]*LXB**6HI%^9JC' MXNJ3=@%,S$E@A%/\6A)/V+7/XXAF[(`/%MOKCZ9$7$Q'(G0`"^.@R04Z4)V< MR6/JZG2Z.)3.C%<0\FH88/(=!6)'$8$C>)9/"$8A`.\`$O]N;N7W=(".//X: MV/W'XRTLS.&!'R16!!A\YAEX\=**D_3`8<>=_+$\D[Q\'QO9:;0&-P`U9A\3 M\`MN4#-X?"&BO#3*ZTM>NN%X-?L9C8E"(,9>1Y&!$S-B_M@P%M5I7/@#E,2Z MI3F=%YMAJ%BPE7K9:`P7$8,(4`E.%>Z,3&>3MN>,!MQX\M@XMBPMJH"OWO7& MLQ5`BYJV0>$Q$NB4-DI=TY6YHI3_#=#-^<)$LFVVB(=>I^O-^4(!BQ4$89D4 MS1J<'XO9!J6&`-Z6Y#!P#;*)=ZE65ZI$-UV//&U)%PFQF6&@V;(.=U280JWQ MAXML+?;`N:.U=NL2IR49$\4&\?'6*@$X+$" MV5XO))HBG5THI!KO%:0`_>U=-,*",U$2,CY>DHP\*4<6D!T.OB=KP_PH/'G@ M@C9M'K+E?8*[U=;T(^!!PSQ%0;KH@DG#X8J^'^S%,)]33IU)Y@IHV^A"%/"MIWQL?[?>R+\%-$H3? M@Q#8';BTGI1M437Y#.J("X(E\S`IHXX@+,`G)2Y("?[NX\9(+&N$"*R9N!(% M+="2?J?WU!9PR=.CZK0^=D*OJA2O+\9UAPG8Q\H89"7T MV=6[Z']0R+;1P871P>F==["%`<9D5]P(;K*'GVT+"R,C_-D=C/!G]\G"=]K! M^V#AS^Z"A<_NTY0.=O]L\\/;7N>>;RWGGF]^;-OK M?&7.OW0/GGMV%S-T6LP&32W>@5=OL?W7!>Y<=W(1=5")Y[\)H.-]B!CZ_ M@_%ML__5Y>]==C#$P!L2P!M@8!4O62U:TNQRG8[R`62M"F]+JP[=G&"3#:]M M;,X?F8-YWBDI3O#,7?Z,CRJ5R5A:ZM8LJEMG9YV2XFP[KJG8:;MSUB"8?;O, M5I1A:XQ7E?X`G^8XF^;7F_!P;T$W:;?H56)/RV_U02ZAC+JQD-8;3B]GBWQU M=0VNH3RJ7C/NBL3E:LJJT139H+WR.QGMBO'-S8?Y`C050TQ=";GDTKW@F6[? MBI\#=4TIA6#>Y/JVG_#8'ND#UU\&R3(C\WHL/I%OJO0I>Y`%Z!.%S&Z<8=\[ MI&2G2_,QL`+D<&?!N=F._3G&2M!O]$FYK")^6/V"S8T?\Q_\O;@U;`^"@.M[SIK.0*T!BU+ M$;B5?78_?9#W6PI]?LO1X[?^?!`/[#J@6X&E_"2'XV,]=,_:Q/8,(/O[[UK> M=#[KZ`]GND+7ZM(9Z!&_,+)>ISZK.08)Z!5%^580N5N;O.?-$2'/G&;UQ[@E M<@@\&E"CM7$YT\-2CLJ>1,:$G5P/WV6I*9H@)E38,5XG?P`!$TB'55#(1-ZX M:2L1?K'O\QAM9VL?Y.YCAQY_Y^>WZ-$O31GP^4FYX0S!< MA!M`J!2G1)GO\P$CO\BKU35-Z+1/BE.5L<]3LI-_+L3C!;\)Y7J.+*`05:;WBYRV^V8K29=EI"*7]X$O_`#L+."WO"<+N?9*)_DHR%-7W-F M03A/3DZ\$!;9K^M\D5UGQ2I]G[.[9V<%O27EEE'FU@E%#.,[:(SO8./X*JO7 M.6$,R79^'S%3I6R>>Z3#*0HDP>@ M:&41`%6!T`3B;@ZN!RPU\$7R99V%6(A*4J43NM`H9_!HK$4BR?9MMER^O1H6 M7S.76Q3YD"H5R;@G[\Z\8.;/L*LMQ(M3_7M8RC&0%L/;ATV+(:/%19`6*#64 M,<&1R.IQ2D_53_A=]5U^S)LC1U]TQ+PF4[GB>$5A6#I^41AR\1/$D-[J_*R- M2:GRP*C^_;!>V:_^EB]70\)$JL^@$.L'/?NO("5(^N!$)-$+"&T3YB);KJ?! M\F[&AI[&=)^OB=D==\FIQ(C?_9!OKA(;\V)$C'1!-D2$1?[V?DRO9,XU5RG,F=)NF"EQX+_I"&F M2(UQQ1834&DTN_`B:)R=7PZ6D1LI3YC"34GH@`0KI6U[LU*$F9SOO MY%`U.Y9``!M^@*[Z99Q4*/)[$@JZ=`<.K8\.\JK9TE6QM:85HF"K25=+'X7) MY:SM,972%AGZ=\M![LS\AKI7%M=D$DJ]<0:1)VO`[]EG`HO_<&D\R/:Y^'4W!UR/AGI=KT+8;>:["*]HXNZE#M(JXJGJSB'<3A1`B0,9A#E MQW#^+B`<"1]K*2^XSW&%")\'7;GKU3I]8GZ2QFX/ARH![X=3UAUSKS>D M`FE*_28Q,#!S.9V$P4AB2@]`F:ZDK/ZX#.(I2EYF4'<'G"=>A'3US8O)0-Z/ITGR]G#0OZ MG/&'I#+U!C"RUG_#%):D!C&C^ M)-KC=6#?2OPE`7GQC;G=?NZ=B>WX6Q"B,])01+2WQ<8B@O*&V:#)P(##QQ+2 MSYCA;5O*@=&H$RA@#&#`2T.*=5#>*/'3.(NZAT8/L$1V72]QI&B/!'PK<*,4 M*&.(N-4V16JW-;,<5]_1Y]7-240$]/[(,HHB/F,?.@PKPJ_(H MXBYC"I0561?Q?:\:XF/\(3>T)&:,#T-&>S388WNQ*$%J0<;`K1OI)_LJ;FR, M,Q*RDE%"CP__7#XX)>3W^Z+$"0+5#ENYZNM4#V1;IS:U,,0[))/I\;9&S"JYELY)4&P*M/S,8=R&I]Q:?F(2TG4IQGI*4YVRO[BLPT)PS&F M&R4X9`]*=SJ@QE2QIE-1B=Q;PK*:M'#K`(N@=>@*^%VH6\;2\-P$8]=U0?U6 MV3@970T7P(7HO/C.6+TPT!?86FAN%#]D3M)II)2;Q1QB_OE8 M24_!L/$99B4N7#6O:&.H8"*\Z_(\_XK+&*,_6&]J=2+$6)OL0!SF."1\>4U=X<`^4CX4_)9:],^L3?F\5N6!;'I0;G?U M:QE>_4U97J`/=?`:;`@OO\M#DP3QM+S^=3VMJC?`.HHT4*FW<\R4+0DS`@6"*8KCX\(]%-J;#D#U8P5>AMM5E`N*"O4GGY-5.@-;!*SPQ M#`)W]C4'ZTFRG;/$3).243F#\WTL/^]4]DYE[U3V7=+$QDP1&7]BE+TY8:R*@QZ8-NW/&YA.W\?^ MR%;)OIX'7E;U5"N9**'&`O,BT-B`'YR2NR7T/D'Z)2OZB2:1VI-BW@JW[$"5 M'>BR`UU6W-@LPY"NL^L1R_=D^RYZXNIGVGQ/@,83R]"[M)*_Z.TQ](HPO1D#ABXQWU;PW2'@!A@X1GO=.1]V'6[( M0//46<7_:KFL./>A1$N/;X8?6E--_"_>B$>.G49(T*JFQ&&_FB%ANQJ]KDBUXR0C6E*[BKYZ0#5>.Y/M8D0N. MQ\5(7:OXO0M>'QE.DH[LSRN)ZE^8C.Y80IJ\/NR3]_VN$9`1S1MM2.V:`KL$ MOU*9TE"P-Y/K#<7Z)J7ZG>3M M!S4N^QE4N$6'B3]ZA!QDWWX@1Z'J8.G,B+,/AU"E_+NO2V'*K=YM8] M."HFM\ANDDZ'UF+R?=ZE@#NR@.\*CM+FN"V)`X_,-9[^+2-`9Q]D9L;YC.B. M;"&.;,C'P_,_R'/[]%KM!AH?HS7*B2YKN=43_11#G`,,R8?+X@@ M%DUW'DDS/A9U\[Z,4`]T/ MOIXR]C#HHR,N)19.+6\VLO`X_*TN*20;*UHZ./K3^*$8,!.M)RTU,L)H*3)G M2"'Z7W^9Z:RX)(78/_Y2D^EL2&'Q?_WEQK,U42VDH/C!N0\M>D.13RE0^4O< MR15_/Q,#.(J6?HDAN]*Y(GNDY'-;PJ!&"KQQ2-XI1E/O:[!K[8GK(&$P*]#* M,4G7&FCE=9$7^8K,W/S?V;BR9G9JH]<:19U)`V321]+!2R(EC=;:RV%K'6\J M/6L*!3^\7ZI:5I,X0FPK!6QM;4$8K1?,OM6G8U>+#\*Y%:/8^2X(@2)M8C#] MJ9HG7_0^AIW4B'R4/K41"TA]_/AQEUY%JR>;SOY`VSA-5E>+V0VQQ:.3+?N. MTL4R;J,APX>KJB60+]-__/`WOGRAY^#)@[&T\/&:C\%[$DJ%-*2EDYZ>PMH\ M[:Q;$;$FO;TN6;191H=Q8-DX_X(TBCC9,!];N=M&EHZ\N``Y5U7AH@+1*VEP M['D[)DO8?0/OO=T#9>`0EM_&("K>V8T,QME/@]W=0]:FY,DJ:1OHA?B$YGZ!]W,U>#4CV.!P#4O&^"$ M\EP/>(K4N*P/81(@.P)>H5!%:M=,E>`?RKN:QKCZ2DK45^4L$S;)U:BWE'.B M!B'_#&2LD+/!]!^9N+*CM+8;"U^1EIL01N*!6]/MM8<=P94SS7?=<"@+Q5UW M)7(9PUKS*C=2R%K#E&@R3INP)C+55HDBPDD*?MKN983*.(4C=@1+DX/!0=/+S_?H]G)#&6/FZ'E7OK7ACARDZU$2J-J'I3&\LDB.2JL M(D:A=`0V)HL\A@)D#ILCRUTDM>=@&[0)ND%\LRPD9;Y(!L='=1W)-4/PZ_F1 M+;]2@T"95H+R`UXJZ],UT5"O`FL?<_,?I#;7LD,,N!^&CA;H\18KK*-9:(H=&P)$C4X`<\DWP<425NT$V+Y@IC!2V`C8Q495\X M:M>S2<<[[9"LC]`L/.40,3=`%P?!28<:6PZC#"I,-Q&$;`XA.O`4L#'+(E<( M@)V#>,N>`'UD/U"=%>7.P?870XJH),7;>B@MBR0D#A\)^0#G">LIUP-@B.Y5&/79U2>H$J"B.)&1C+X8)6$2,H M"'SB9"YGP6I;&) MK'#F576HY\4B&[X[-;&3,Y7+_X^0AEIU2"IJK>6&I,752XCY;JT^O:J*K@!D M)WH"WQX%(-35WGQ],:\]8RV)!5 M9TQWD9&WE*E`4<&%NE!6C-$B=(M"X<,*._.N3H0/_:.$K!&:-QD2NTR'K!HQ M>O!.'M&`,B\`CQ])OI*7>B-&XG=`3R3H++486,X'A0[*7?NZ)7CGLN1IRZKA M4DQ-CE-KTL,>`2M'3(T_W+&2_*NBLPR6M49MA)*3A,]SMS<. M\![7-LS=TGQ.,>1.HIMUXNKXP/SA8*+&X&.L&=O`;J85*QO-LE)\,U?9<`Z: MB5D,Z$J>0+Z(77##T)#W\&$[/?/U\HJUY^YH&\Q@"CYP5>75;)I]4XPSZH," MKU>SN7S[=BZ]4V(Y!XK1OWY',!GF1W5):D' M"F27G=0#$;&)54R!H\=24`C2;M<-OU(?Y;=R_"FK!UH.IC&O/JKF$ MQ@\PZYRGN-!9ZG)'N+(S^$G->EFTX\;P,%+!(D?.=5CT',2^KMEW[V(+4,ND M2"RS!_ON/52'UC%2[6,EO*?:4'!&XGT4W$:/NZ$DWLPAK_*F[OBXES.=+#,. M@92FTN@S_?+!3<'&4@"Q3U1*G(I2WR/IOKGFOF2KDJ## M\;_6RU5;,M24AM*CZ3>;E=A[!6&>6J66&1G?\=>$X'1[@C6H1*C2><4&-:2:J1<8Z-](W? M>S8(1!/B\K3N8BN)Y!K<`-\MP'8+,/AW:K"[SU9H6^]CCE[7`+P'BR!B274/ M)@*Z`(-*NU=N*.PLA3NQ%)JL?-PY$%AU;IDM$5B-WIF=X2Z!-S$F#>P1Q^(( MK_!9Q`8NC^(-E,#JW#9>FALJ)8OXJH9+)0_(IV:]U-+*+;&Z%C*"R:^'[[+J MNUDQ[&T)!Q'"9LQLHA('71'48.M9$5)CU;!+0?\AK7%(`#X9P,@V&EJB0G8\ M@DB`Z0&[`7>*F@%NLG$:XP9ZH?V:7`M_K+GW$CLT.]-_9_H;?US(`/8)[[MX MY4WK6B.\/*@MFRIX`VQSYI,65K@36&B1#8JQL+%00^/\RB$3VOB70X6&C%0N3/K&/=T#I*>F$]C[QW"KV= M5YV@M$HK$^U4V2=#YE*\Z`)=?L%>C:PC-^0]U^CLL@98V2TYTB7M3T/ZR0?" M6^H"+362I?9L//'C)5Z;0@_87LU!=N>P'G5VFXP:=5'L$81@0&,\\>/;;]._ M?O/]5V_^F?[]I^^_?OO-#]^GK]^\^>'-F3:$&>`>[Q@/HU>W(T[6Q8B.?UVN M8!YEUFW*&Y`YQ)<+-C'M6Y0P'H&@D`H56`6#5%;X`BT<9)RH#,2WHT'6@8W&>JXWQ+@IX+XD11-#()PM_$)9!R M[[VU*)/FD\:94$$S=-5&?H<*UZ)1:E[;&DF@*NGG6`(3)RL;9YY`[CA/'K?F MK!3((*?2<,29W$2\TW-B&5E,B[570L^\Y7.>C8LA\`K)UYB1,TZ\[!&(_8T MK`NBWQQ$["3<+KNI_'ZK^[-5W057Q(5&AB?K40]?AOWPC_3U__WIJV_E,HPO MOJI"=U9J\HRLKZNJ+Q](7_A(U.A18'G9;K_8ZI>T%=L]TB\VDA^:N02#?\"L MY+,!W2RG_ZC.UL_U>D^F^C:O'Q$GB$)?\69EIM:,_!/N)E%M]&KR-)NFZP;^ ME":\:S$MXQJ7;YG)$\&XX>/U9L['9#C^UW!$.\AG2VSV62\+PJ)LT*SSZEXV MA!49(]H5-[J]`@GD[JJ\_G4]G.:K#TUV5;PML,XB+6QH,P576WB6:P-?6W7J-'?*XRE. MHO_N97X;[`T2XLBYWLYDC[Y?"^S\T/RO(OZ`+:]CG?7V&FB=F5',%"[]5&R] M(5;U.MD-Z3X/_#O6?(%=V?A.JEW9IGA7VVQ!W7_TV"KO'INAE5$.3C:"]8',4L#^Y>0WVP]:R\$_Q;+?AK,2V5H3+; M8=N:`YA#4.R)8_JVL5^\WOC*`BEKS4WBMVB0`.&F[JP4LH]@%$ MM-4Y*SUG,0OT23NZ!EP?S/NG=CTJ<4?KA3B$!7IEA[[UM7+IZ^-8DG912&L] MY)#<\:"QMR+Z@B#.T^3UI4L-PUA"%_=DR?-;,0V(GNX;%?=59GX(V1TUE"G, M2GYT7(3HNX][9H!%WW$:RMP2X@D9V#K9%9_M@:$R%72#4- MM$GM%=@(J;0'TK(A<,>[(-NFN(2`].L*$"C-YJQ:?AC*`2Y%H`Q%!.O'+5%^ MY27@JBNB[]8-(C8I/FZ4T/>FEX,:V>J.J-[CNODA*.?(+?QOBE5V:8?]PYU+ MKH_]]T#&;^#+MA)U[;43#_E0]N]W@2^&8M@^+[!2&CP>_$Q=?.9NE+.C;L:J MPEI46.&-8CGA.YX#[GC2_,[S47!<1.HS5L*BX?5).Y>1J(PJ=7 MN[&[)!B85W`^(9`2?K6O?/QH*(V")Y_P2#%9!YPS1`B7XT3[:(Y!^'Q$G+@J M75+\8B=\?!&0L$^X_J%XSMRLW^A&1L\TV5 M0;*\&<[3Q;"XS):M>&D<_M"NFACAV#?3=M3WMO@@;,;KT@#?P<;QK>'-2&JY M,[30__J'[__[]9NW4MC?'09,&;![%/\GS9=I,6/W);[/%JN<4GR4%`0)TA*;+2%*'\)(E$4A]L-82 MKP88!P)N,19@%9C1L!B,MT%[`2`&-W4P-@VOQB#WJGWAA^Z%)14B#\+ZAY\L049"T:N[X)U#\-\:I+L$V;5A@';$8=6 MFX=L!T^>WFO0=GL!UU5F>=0"E.T7`YM-SO71;/ZA<7:.*C9]TIK!LUNGMF1R M[=("_0G2`L7*IO"BRF.<)'^!,S8Y,2ZRJN;7"`DQW';QB;56\@Y5%FY)&Q;0 M3K1MSD;Y,Q\J:T<(V$9+Y=D?N53YSZS@A!7KDTO^7,73`H"05Y>9__S]ML5Q MU%@`J+ZH/C]23/V?K[]__>:KMS^\4?RL"M6VM2\EA+MDXVHVMF%'$WP[GK1V MB+*A*1LP5H3R3'(D#5HRU(1D20J$3HX*C+@E4E;3N*!I6GF6UJ(70^#8G-8U M%R[7L_?MK%OP';.'GNA@6QAHMP+9K4!JRVWJ&T$N&"!S44=M8>L2&*4F#0[Z M_'$SZQ"O:&IG[>'9TG]P&2`>B'S:+2,V-)'=;.$;G<.^W5K#5.>3M6FL>05C M8=MW-7;[L[O]66RN?^I;7E&'B><2(YWB:@-9=Y*H4<9N MI8Z^G`/*BSUKNK5++0NX1'_"WR*$\)G^<;P):D/N1#D0V8YHG?G:9SV,\78K M_4T?G/IS)(/%\^.[J^O*XLIK(*(7M@BFCI9FB.:U[SIPCSOC`&U M>H4;**I?J>RY(Z+=JY4W8Y>8IW3EY03;9J+X+U_9=M.EA$/OU/:):;@U"RGR MOIR[L9R"->J/D-\>N^\+;TH=ZO=ZW4W`%W\O:=YL(5K9@G9R':OZJSOF6D,8WU2],![A8RUL%G%.=H&`^X5H6X%0Y`Z MGX/BU`5F"%4<6'7_CQYF=W9A5E=P[>X@A?KFS8`\UKJ8X/[1\,NA^'D)ZE1Q MW'M&M971;&D4MW?I4);Q4$[C4QFJ#M>R^H,9:.8+,T,X\O5Z-,W'V;!XDQ>7 MKZ<,<\*!V&L"ZW)$=)/GVW7)B3)/M8+?;Z#HP+,NJLLW/+6XR_,Z^8]$)5FD MCZ_@(\\/Z1+D.MX<_5N^7`T)(SCNL\5LY3W%XR?8Z'X^G663A8-(LB>2^ MKX3?8>8H5HZ5YYIA7IKI7G]AX5]Q0R-XRII$5Y03D]5GZFL?Z"^5Y.;@P+U5 MQ6T_4<\Z`F/`AMZ:8@,PQS`TZ2$P&Y#(MX_TP)G!`W<*TZXE&^F;R!$**H,; M$71=E/(LP[N^"TWUF@N*"IH+S!%,T\B94D=U)1[M%9X[@8H11V5+9Q/_*[-A M/PWK9[/R`3.MQ-`&Z-OI.H:9K"0MLY+*'K4KIAC+]RM^6UYG9"8#,SM`+Y7T MO3;.*,&I6C-RRC0?TA[_4 ME)M@K`!++XV.OMZTYE/E0,F-0SUGP(1Z!_)E6Y-@S]"![X3Z@ZI7)9!VYP1H MRP`-+6FK@V-^2I3:P>Q(;/H.Y-2$!6DDZ-$I^T%7ZV/VD^A[.5=97`&[9\C: MV<$]0W4J&7]?$=[2/+",]>X1V5'A3. MJ8%^VIABN*+]3%`RN40R.KHOQUI<1V7ER3>-ML@#1'HWTHB=#ZQ@JJU5>+\^ MC7TA35M!'DQH^+0&83O!E&8@!UZVLO,(6Z!ZW48,?>$U:F.(\^Y#WQWK8=K;U>U-&CEVE2&@`)*MS/Q?KZ(EL8LI4E>=@#8F=* MRSY]V>E*WXO'L>2ZS0W_,F]P>;6>3*9M&H)!P?/`3+1@6($ZPXI1(3>,JSXW M0ZP3KKF[>9#W$JC^3:Y@-X\HPZ]+X?HDE7>!P#]\SP#:J7&B6:*B)8\W^DCT M;\%7)+!@M#7`]Y*&;/5HL4-<2[U\'K< MNE!\M'8&!+7WJ!")J.K5WO;0'MGCO=*;R=Y4,6*O@(UGP2VE:R>]',/U9_+E M%V.$/9L0<..074LNG((`L^\89K;F6AD[B=]QG/0>(,?ANU\<+@OXERA34MO. MLV$>P3:12NC!LE=8*35BT$]:)C_8&;>E$TT[=>PO>RU,&L\$"2W'Z6>^;_J@ MSI,\L$6_]E:;@VS9-7XQ9(ZC&C6VAE=?NIZ0D/;D_]:RKP=4U47(CMFWD-E+ M-'3);&B6N"I-Y\/%*J==KA1#F%2*#$RP//[^LA7"!*WS;8B"Q>Z$H6#TBB/:D,7CL0)PW04TMZFLQ8=JX=V0$;#` M-,`.-0/EDMHA;Q79A/]5.<-A7B:OCW7X&$NU';@7/73SD#.`Q@D0X^YS,[RZ M=0Q!VE!63UO*%!Q.5F!95@ M?2N,#KD'A1D])U"HH<$B9JK#X?B]<*J"Z`32Y)/$N*96Q=7X"8J%W$2F;0&T M48TCUSMZHUV":+E1%S6Q.@385Q.\!<_*3>ZYA!"&-^Q`3>Y,!'A[KFT&)5N`E`#0H`30P`8FX M)3$:NMOZ9Q^/P>UC8>[EPJA<'+D"R3\S`MQ32U@I3'H)I`ED)T\H2S!,KW87 MJ@LV1X[Y>]*M:9B",P2(=D:,UCVL_^O;3:2&YBGN@(C:%YM*;TD79PMJ1'$2 MG)E]I.%@290Y:_R*[S(M.5["#Z!'KIEKJJ%[%V`)U.E7:IWHYR+$54YMV87U5NEM& M_7F74?XH0'.R*27ISD-"1]U7A3W_FS=7&Y)L-'!`&8L+5B MD$VTZQPQ,R&P8T'S_/UL99R+1_QHZF:I,UV#`[&\7ZB/2U0AE?=3PZ=EEI99 MU'5+AA\+2(%'L+X]E0?$GIGRO6\;,!Y*>"VEL->;=P9 M$(6#[9F\A^'G`CUG>1V6JVFZNB*V_]5L2H_:]9^?1ITN,&:\R,^CF8"JZ^&" MF!G+;+%"&4%(-IGL5]Q)@!14&Q&22.Q.2?+R%.Y^$!!\9K%M!3&,^_)LM/P@ M%H/R+7P)H=+ESSXH18!7%H/NM&E.I/)=!8N_&Q)5,"YM.;&W=.Z3MN;)EC2" MD#%Y#T+TM^_,,+/!<"-`L:!P[/VF%N+IQ7#TCEHOF&IGE*!Q^Z>2KL*:D,31 MRW%!82\'*9AT0K7`L7=.95="EY/=8E+3%W-?U.])_"MF...PJ"&XG`6)7'(4 MZTX.IS@LHMI*Q(GN%=;5)4[X":6:YQ8C2 M&,J%J>:?B#EKB-IM>2S'V<+.1YXFI`E/V;(A<657"_,KRDZY0P:)J^W7%'?% M574GH$>U;H+;6B%UXK,IVV#6F&LE:FG1253%K7-Z?V\LJG8W( MQDG321_L-*N>.GR)PW"K&LM`RXCQXR%J--+2=T'_H,;>X("`F=]T8`Q0E0:H M1/S\F/\;.,WI$ZUWV9$_192"?'RG+1F6=(AE=F%9(?O\U_DYC6)@J*B/OK?&6EQHSE(\YU``Y/ MGZ3V<9E/C$P)WU@";XV91_FC6C\#X(+SD#Z/Z*&V/2DZ49]<=/!NPA0MW<[- MQOFPT%ZP>(?Y/I@##C6[3[!(D2`L`:#?[7;5]+-9A])`D[;##:#H]3JS0O3K&WF MP7CXQR>JW'CB4-*]]N1;\NGMU;!H@-=!M:=+TCW4-/X$YE19IR"Z&A$E$*0]QO7+[]W M16!:'ND0;*AVQ7N]>>4A3'IO!4,QQD@$:UT7FZU-V8I&:%:#M7,-U\59TG\6 MLS@&"Q9MM7WT;#;:\:*H441C&EG@.TX`.^JS&RIKAE>*HM?9XC)+;_+5%3U9 MR*,%\=#W$OO0S83;B^!C$)_U5S1[A99J1"Z$[J':Z%C4M5CW,X@.0[)1H-5 M=[?>/O\9LGZH0:BLP;J[]G4WZ]WSE_"DE*,/V,'DQ!X[9M[:@+0GF#_S6RJR MXM2^I@,*45LJ<<,9YW!WI"SYJCA-MW#&<=#,Y6AP%ZH^*V?:,:8"V'^5#$Z] M0)WS=A*X:BT&=D5?H8\)$4LG8-ALECVK'P`&MWZ5VR\/A%^!F-DHWSK"<0/\ M&]%&2WRLN!6LP<$AR]8MCVJ M&MR]C"XE8@"'5#/*WY^_`9,$3>*Y2\_SV,L0-V&#VP^6M2&4LP&D.P`7%99N`2@8 M(-"R;#;SSL#\"L%9I88>I&!H8?S*`LCO83Q+(>$GN>YY^`V[]F[9($XKNID1.41^!J\Z=L$!_*3$\$"=1:%&5UMW91 M6W*[1-S.!-V9H%MH@K8@E4LF;8W;$9'-#U\F0HAYRM,DNW<<1=*HUNUWK"*" M&(_XJHB`'TXE=.!NO#*,Q66:`"V>!`'\$_E MOKE[1H3?0^=`^,Q!B&]B[*.MN??#V87T%U7PHZ5OC7%"<.JJ7@2.NHA%@8RB MWS?!:N4Z'/]KO5QYFE9>QB/?R@SL1#CD.+2([X/Q=@YRG'OH`S5T%'ULM@$# MT/J%?%$S/FXNUYFW)7/4J]5W=YC=\?I*$UX]T,%`UV@&=;S?;&=A[RSL3]3"WKE7'Z9[]6X-7L]FC%EH0U9QS4B!8G659E,V&%5W MX4A5/,HV(DC`GR'O6$6&(V#^+'GI5$)&8<&1;K,+&PG)M;DFC.9$994S+F'& MDLZU=@[7W.?;``_Q+NR"%?[4OAM+.FE.I5P3WA)K,5#ASB6DQ^#>B4P,EA*9 M53P4=L[/4*G[D<.MQF'15KLE@+;N11HH%',&8F9V]BEJ^C9,?MZU-E- MMD@O9NMBW,)=O_2/LQ)I_%$BKT^R+_IUSGT>,0;7+CQ''-&3]J=6U:OA=,+> M83=:6\F0V!G0(WWND];E:0CHE_.DKTXO1M^'34$``;VOZIXEX!8\6TI+[/@7 MZ\[!1!$D55=$,TP/)8(?$0DO*DAR?-QSKQ:,O:877,=F4+5]+D%9)?Z^W=KW M[+9SOZZ)W=MYT.7DN^U62\T?O_KN=?KVG_]XK>0EG;HU($+_%75>+4GU=+C< MF-?*3Y"*BP):I14#W_"Y&&SK"I70+8P5SSF5B%^E_NY>'"/3S#&1_B0B6N]& MZ2)4ZCQ,2>W?X[D'R1UO=>]$^9:+\O`2@PXY_%W9]&?TH(9&8Y.\JJA/2GSD M[8I\KXA?S^<[B[L=<:YNZ15'X;R2ULB)TKJ8WX3%W3Z7H*RR$],/54QOI\5M ML.V#L+CO1!S_F?OR]R>#_/% MF5G<&/:]-"7='D[3Q;"@R=ZC9ZD["ZVNW8=4YY4F/%HHO[Q:??*.[\:V/R47 M*>%9,9JN(8F>IH,>,C%4'"BC/8$*)P;MI`:G*D*X8D*5\6S'&N0NJM4BH"@D M^%RKM4XIG6`M3:^=3GM@.FW;%R<&7V[GXN0>E=?`?T"ZSKO8NRO=9\[.W6+O4U&,#W.U%Z$X[V2U=[['Z"(W'JN*J^\U2]&JA7/ZQ7\E3K'GB0=U-J('*. M]N'Q;'E7:1\];*V;DY4'/>LMK8S>GPYQ47>\EI[&[M`TV MA1>@+<-+/P<1`]488E:UNSG_W8\_?:T)&2L9*[=?I_F:8K2)'*V?'ZB/D*[5 M!$%6`W=\[LY,*]+7TK;/\Z1PJ:5?#[`L?`.0G[NO73(WW_9Z2YEKDEN4ABE0NH2O&MEWMQ&]_[_30 M3MIOK[3?*K5?]VBA9V0:U&SQ.&$3MC&KW/<1PL:ZT@!#?E)JDA$2?XU M'Y/A8F,WG!H^$L]UX/0&P]EZI2XQ=``H1TEP<-%ZIW7]GOUF M`//@T1+L[K7D]]_%9W`5&Q^,4[/T`2AG6V`J&L2^(85.M71YX[V")O+?9VE&C MB/1D<7TO*$32]$K8"=CW`2!1'VR_ZM(:9$_V`[\<5'91#":"N`]48@V%)R!, MXK0/(;FHFUMU+IV\W%!D-Z(-!O)5LIBMR(2W*8Z1ACN&///<@Y%N+G0'!$?< MI)>W(0#2'3F]C]YGV\<<<$G3`UF4-8VM%_C655W?8:RWG M.G/2,`RA`@(/]*@:^@@^#OYH+S42!MJPKS[\58H*C(%!RP;U)SJ7"7_)*^4NZ(29R M'`X*Y*D)<:`A#LHAHJX*"O'P4+R'#P/@\%DMUIFUR&9%^!J;=TA[8"@$Z(-1 MH&5U+STB:$*=-1A5Z)_1#]P[A.$V0'!S*1M!78F;35^(&_!VNI7:S MO+59'@O"OW+[Q&2#7CP*!)6$V(F(38D(O_OD'[.\8)$\AOLD8*V7&>LU7":5 MG27U36_9WP188B'+V;8A#;,X8%?:S50S,,66MM=8#%F>KOD;L-[#:):8\:Y" M\'XEJN)V`>>2VYN=9FRV8?+0-62H.SM-V9JF MM,B\%1K3$F_5-">:?@;>?4`O6B#`1IGLZOJV]EZYE\EB-V;\BE->_*$/_/-M M#4MDA4[\FQSB'/KGV]Q.=5<),`G'#OVG;\E`S!8TW(Z/UQDV$O2$$!]1^Q`/ M\,>0KX\OLLN\Z'3!GGSY_B2*7A^@";820O,I#,?+P@!M,#BB/Y1Y.UU?,'B0 M9UV[SA_U\2EP.'NI,K'OZ(SQEF@-H\2Q( MN*7Z->_[9(C\>Y`RPP_&N.^JZH%'D>`B+T;3]3A;UC^_&'UV<7<$<7<$<7N/ M(+9%Z]UI<^67Q<^:BZ9%&,)D2!9&I]K;F4]4M3ZHIN(7[`-RX/H@_:EGG,/; MLY.:P[B()D?%S51!=RA)XXVMG6C=B=;M$:WW>(!ZL)4'J`?;8R8WE/7!L].E M(M^JW>\!P;^-DM^7@6J9K=)UD=-;NYND`Z%_C5*",`"[;%2[;%0[#;9;'&S5 MX@!)167:^4WR9*C(FVW*POQ:#TXYNRJ8Q1`O^=Y;&=&MXM0K=J$5JR!`TX M',OWM6Q]TJ9NLO62=6.O_'#7B\`'IX%V*\.=2MJII-W*\,^R,FQU:R]Z)< MB8C;T)/)ZJY7;0](.>W6:SMMM=-6N_7:;KW6>+VV(37:>)FWC=K4T)E[5&[:A.W?+NIVBW"G*W;)NMZQK-P`TV%AC_;7%$9X/4^6%BN]6 MD3OEN%..NU7DGV(5^6DM(C\1W8WEZ?C[;$$SN(HE)WA*KH>W:39ES-(Q/HB& M>HGU-I@#"Q9E\P6\"`IJ6)%):KOB1D4U),]FC&MO"_>=SXH/IWF&E1:T1EW- M!U!$-*\X6<]RPR075=VK:'&H41OG`#GD9I?&_-V"@;=M,Z&N(O4Q;I.J+:I2 M7QMUZMRC,KV/J:EUH=P"4Q.TV]+8O7M?$(HA^0FR]*)D&NX>2E,`8"6H,_T"KR<[=!/9HO.Z:FZS`5M MF]?-N1-!5)6S;I^"9LHPS\&5)1B-/E MS7!.>TO=$?]2EW@LLO?TW`[]D!M9T0$AZ.6)T'%BD(W;HPIW#4].610DR/]4 MYP9!,^M>.R*DTNU$#UC2['(8/]PE MF&3L/7#!&(J<4R+1W"!1WY-)7HQYD^EL`@+@)(9&_%L2$?Z&N*`'J`]ZT-TK MBU.K%0ZVJ6BPK79X1P3QV/*X#;_V#_](7__?G[[Z5LK@Z""D5GW9LWF8D(I2 M'PBEHD.Q-K<;<*]48W8*Z4DL\0C5&!=^:%]G2;60=))3)6]`--O[QG686& MK;)"%276%\GQT;-!\OF3]7+Q9#H;#:=/Q`4_3RX/#@[?'S^Y($/P9+F:IL/I MY>SQU>?)<3`ZH8\)NH$9H\`/4Q"QEM$[V9T/0JA9[ZO(M8%'L,6AEZ;RNZM6K9)D- M%Z,K/%+7"NI5:PK>%0U.=Z>/L!6,-K8BC:V-=`WQ%!20RM93P(U6_ECB_RGE M0N0\D*MY/ST^K:O&'SYG&U=3T[^'Q>%1,29]8$5:GZC8=JR]P4L9K&U_YO7XD1P;\/!VM_P7@Y&K3;P'K2*-[6^QME$>JG4 MB"`>T?YYDK[)WK.?%:L.=%5^RY4"1&2?-=M)L.Z19 M>65I^JFP1>A&KAL['ME1#=*M3=>NIMSS:+X0C48BEF.8TVF6HK MAUHRE[.%/B#>K5QEX$O^THIW9PM$,ZQ7T0C<">^[WE"Y(^G4?%-E<]+^S@^& M;;EX\E411B\W&UWQ]698C&?77XU&V7))":Y$V-^$>2J"$TG;R_0JHR%&=A79 MXYZN1#V+7%S`5S3JK:`V\M&IW*2"GT=DD,;D:_]4/9Q10'RKB;TP+\QCK?XL MX?["2LMWK/@O_JO/*82.;.91TN_258`*YJ4-)'FLYK M]?^RX;L?%N-LD1>7E6CL5A>C['#`'0\'V_IS1J7G#LH]CHI2M8S@,>1&/O&H M0H\R=,HSH6J_#6H=!P33/"B(C4;I.\3;3)!^N)D[CM%7(E[QAAGHF!Q*WA!" M-5X08/.^)6[T"'^OJ'C0W&L:3VX?(VR@(,LUKE]N1[E(EYM2P39K5[SW6/"8 MB<>TFV\"EJ;TDI-K.5NLLG&%Y"H1ZYVM",_:)5>Q>*G\;`&W&/:1PDQZ3FTQ=1-95*AWO43Y; MSH=D04E0('*";DT*47:F^##]^FJX>`L8,WW+&!*^^6I*FCSG&W"L./MY,5SF M(]&S,PE&U1:53DYXM3?9G/#QCREABVO"RU,ZO*Q*AV\*-D9,O8Q$:YG_F\^O M^GVA&1PI&-*73J=3S&=+8A_1%S0FGQ3J=I_()P:QVR7?R;+Z2?*TG3YSJ;?) M#M-.G=)9T@*VF\23C`9!;_6!",8Y*3U;#"^SGQF`#AR0Y"`Q1T2_4,WR07KB MO/[EE,N+-GC5!?!-P>UEH>\9O'WQ5(4YJ:W`-Y46Z]&J(^`247J17?82_9@5 M8ZDU.0":$WF(+F5S&IMOQ=?Q+SKPD8MDT@;7#P0ZS[(\9,^L@4X7&I%RQ0'& MK=-]G'Y'?DQ8.F$N%B`Y:"?6DY_[1T>_Z'A)-3X)/U1ZI#^I#-`4K<\,M.AY M>K88?%81"O_9K&$8$WJPN0!%R8N9$*9[9YZZ[,%91C$ M:$C45[[Z8`-!,<6PI7\N;^*K&:RNAXYSMA"V\+:1E'_[@E2V"O25UY$G,?`_ M>GL\MVTU^^^",-T[#"K%^.#`P]S\#V%QB8_U"LY00L)X^LF),BQFJZL,GRX4 MX$'2MR<-_\.FC@!F3:!2`QF=41&1((M5V?J\WD'!)YQI)@\@LIN,ZHT4OU0Y%T- M],'@)T;C^8=T1$9BZ=%&NFL84_DXM8Q/O5R*3!G:$VA"V&C^S(O\$I;,9;*X MG>D`^3W$[?9"!#([9,&BITVF$<+IG'LDY<7Y%[;;%V2U*HP69K/"Y#&3PP0^ MD,4-24X$1GY9X(S'`(_`\(08+LQN!K-)0`BC*5B>-&13-3C51]?9JMT2%]1 M64IX"Y&Y>$'.L=M!$V!!];M1)0Y%R)48_;^%H5[=G@A3@AL'&NHEZ]-15RHT( M821RD0L9_09?RT101-OH]SOXCZJ01]A^);:)8=D*FX1[`*&5`G*Y09^%LCHD M]Q%KF!B#^?+PW#)*X-)$3]'5-7>,>0PBLL[TF#@&.%B1K!F)6,Z5B4D7'\-W*?D^[OC9G3$.#3T@Y;(Q9';RGB4YS3I'O83^3U,' MUJ7WW]*&:.7[[.^>B7/0&B4*K>^\&?C9B9@\DJ7X!*EYS#C44478C*X#: M!Z(AYM2D.)@`@/9>C&A-,6VYHYON&AZ@]6##5[,;0H'1E=GPH:BOVXW@A.3W MWV%/SA,Y=:I)Q)`L#*_]16ML@4;G`(U]Z^`R#WIU!)>"E)'F'^?O(:S+WN=C3$H`)AU(5`OF1!7>Y(&5L1(== MV<<)FV:+!>'0SWTE/^\ZH6/RK[((LLTQV*?1=%9DTA*CJ!P:XK]M0ZP]5H@. MH:#9B!WKN-Q8D/K>,!;*9A`?^^7C"&!V*3]`U-[F&R)+W#=H\R7"`>XVHQXX MAIDEU@#.GN$%<@]%`HX!QZ1/B9Z3M5=>"!65TZ-LW+8,+@E<6`.)-X`G7G"8 M)>H();+1)ELZ,'E(F[/H(M_W78:G$75'%:/5[L[9P.R3N@L89#Z+BBP6-3&D\XBMT)<:H]5BMQ8S%%K28`D%+75'@@%?M*8XV1+\LAHMAUZ:/-=W-)]%&`VM9;_(9?1!(^:UD_]:? M'>*T^>T\<&)-S=):,BR[I0>2TN5T-M>"3*VF:1=$U/AO9M\&9,;3B9FG@+`HM=^\CF.3]8$,+8A(#-NK9@F/G8HXJC"O@K"7 M:(&SQ-CGYJ6'\SD_W%ZP=;U<*FN.!:NL@H%@8M*"DBV&S%`MNJTN2,K]W)6\ MOI5C6YGU2*5^1P;DD/[G_5X"'P>6B_P=EMS*+$&JQ(2Y6C88W?=^QX+/W@V` M0)&G#-A`2'PYF@*[H-G6'<&'S2HS\*5AMH?."-&:L#@A:NPM7!*8<6&&[T8`!)/%GBU@E^).0U\J M;3_M<80Y,UNN:,OS3#W1_H``@[$M0`,+D.7`QJ6+L>W?YS:3WM)G9"]\J4WD M^"$!!+[4)G85W103;X5*H[>YD;1"0/WCB,>*"C5;NI-HK84,]O?,R&,?/RB_@N%BX,.E-$_4X!IJZ<$.:%PDDV?`^4A> MYT4'CKG<@.$1,ULUPM%!0-X`H`B"TCUQJW2W1 MJU'="!B^,WJS@\R?CTV-CY+E_ZFKYV-J^X475A"]ZQ3I)+&',<)H4!BZ@!U+L%:^`8WKO-A64M_&T!]Q5'XB^MLSK M+I=1!AL!+P>-YC@W]]TIU=;T1L-T,2PN,^KI<$NY&U;&&%FEI84.-Z$+RS$K MRRA0V`[%LN?&;?42X%\%`J)0X]I.N@##/*@\;NF/+&.J8V2P^%_[)8\&]@@! MF5*%YE_-)W8(,:TDDMFDUW0[QD;LG.X>@F4%)`WL*`NY9,^\@VQ3"G2!?3<[ M(%_Q8&CR(*:D*&9G1:L/H MED[55W(F\8]V"W3Z8*$8_#B_!,)60%1P&^L#=N+\UIC*+%#$G*OL.:.E` M0%2KJ\),:6I,VEN`MWA9J%B!.R)3(&(LOP+PQ.8?^J:0UI-3A(;%FX(:.Q6(/3CXM-BB@]+8Z MSD.NHA(LU'<%P"TW.Y'(B@CRZ0]A8#BV1\%#U;D2"BXY,86%CL\3.4Q&50:J(U`2ZB7*)4(GM%'D@'? ML%,'3CXA@WGD#H)?_]AVDT[H__)K7#,X:ME390-E!BA\-A\5D.%?WJ#P01X^U/I`0CQV/G) MA;9W?EJ,44DZ?VJ"&3+3_2P3-LPO09G!&`4W^[>?0?)B57G,Y5(Z+"0"<70M M.;1F@7@N9\LB52=L\,V*U'.NQFUV01]45%&N#W3+C06W"HQ#8M5[$GW-X06+ MWZ?=1MT6V"X&[3:>UY(Q+3L.H/F?9Z]<*(QGD"6U^VM+N6N#<9IWS8W],G;L M^_D1@S=@Q6&CTY%LUF1_F]V')6Z#DD MZP[J3*9%V6RZ[^GD&'E-M''D:.CX.&,LO>04U/1EN[H'ZB;A@+HX3=AW-VR7 M?A'52"!M4.W!V1W*1^:9Y7Z9$A`IF]*;FU67*CVRX#_Q))E//&)'YLBZ1,0\ ML?B%"A=%H)I/]D4'#]!T\Q;SFU%?I`1YQ,/.`A75+VP4"5X!W6BT3D\6PXAM M.>8<+7;%@PH"DK&((M1#I-(W;2(&$(2)\3L`V-M?C+M,Q"#2,_!/7]:Z&^9I M^KC+#[YU]_ M3I@"W)Z#%2W6U_S:U&]^7,_G+`%\A\B4Y"QYF?R%_.PG9V=4R'3IOR^[R8GQ M[ORAW?AP.P3)$<45H+HZ&8."4,Q\S`IE&3KVMIH*AJU5A#%ZM"AOZ:E48/:I5 M81.B6A4V02I6H1.F6A4V@:I582Q3K&B]@M,48K7\TX2R#WNDO3FZ-,(M;4]^OK'O_UXU4^8:8=72+.)AU9CB:W M>ME]8B;U-(%\-UPRH_2/HS4UU#@H8K.Q&CS1-ED9SM9$[LV*;'E:AH\+W0?J MC%4HI^+FU0#T<54IC> MK1`!KH;3B2""=L\XF',,R+C3W%:DW?_M=/Y@/[KGYQWYL4M-<]BUB.9925'P M%=LZ5@@]X@W07-;&^_-SP5.B@'`OM$+)J&&40#8REG4Q4.3Q'K=X.S\7WC&5 MV?#45])UXHJJ[[.1J,>?N<0)'_&0#F"=IHL]"XFK_'BLXQS>HV[P+E@?0*X( M6@3(M5R+`+E<;Q$@UR4M`N3F08L`N4)LC]*H3^-_2^A,+8''M]Z[SZD1ZR-9ODH/%^\F^LI_P\7R^YOJ#* M->/="M01G4>K;:0'BFQ^I$21.OV158/="HPR[(*X__(5F62K13:\OEA/5-(T ML1]TGL`>4A?'9;8*,2Z$_X/(I_?*`(F8"FRPA)B%9$9N,JORZ5'HT%F+508Y=H-8!.E56YB#96P4SLM M(`-U36S6#YL=*=[$1B)DM M*RE66:EJ>="^M1C8XRO/^?IBFH].>+"#W.2FRQF:Q_IRMO@@\V#SNA.R%A!+ M1OXB'\.G]!N"FHB(#+_PT7)@HE6R1CWC9E^&R5$ZP@@35,`:"Q5CA04EALI:EC@-)B]]% M3W_7_?A=^34B_F2'?N?H_JZ0Z4IVY88O^\G'M`/'%"]AL`"-=J%7G-O5LMLY MF3#YRJU(-2>+:UJ-4\I\LD8(NIT%0M;M:=+1'/"K*K#`Z\(+J&RJA!OB92G" M$X2>$;U5,UKVD$"_M)`79$W)EH4$D* MA:@74_X:;&AHHKA@/HL$PRK])B.M/NL`-&0-&K7FI<[7S.*.C/U+H&"4+76Z MW@@L3P`6%G9:$<1`CP*4*6!X+Z>SB^$4UP*&!(+.%X:(]*3RV9@3U]:T2Q\18X1TFB(:LDFX2_.,=7V_IYVCXLTYB^,DA5)@HEAU.>?!NOR- MKLN?Y>@:%HQTH7H^G)R(=A^BB6-/!GG2D%T$D2VR8I2)`S>`Q&RR<$Z$WS@) MV4A.+H!IAUG$J#(J??ZE2AY*N M4@UII%2J)&R42G6H-5,-,V'WQ%4"==G``6E$`4"5I87"=^EP/-:,H+6ZD`\' M!R:?2*&``%ID]&X\/RS!L>I^+PGS\-!*3`+/I[G7M(RS:4:,3)B5G?XYEZZX M=Z[85Z=\!,I!GAZ@OQ_!ZT:RB8RNQ)332&H M;]7]#DPTO$H^W_^<@_Z#@[8U@3DZ+.TB8`K8E7V->T3E#W95#T.&0$&AY86# M`41+TJQZ*GB:L+` M+C"DZ7:QE'!PC8'U&52@W8@O+F5;?`TAV.(K4*E6`2$ATK`:DKMD+=?,X+JF MXYEU:@TDS)!$\86]9-F30L8RBO@\[0@[D>>^X$8?OQ?0DI6L):2=\'*'-FZT MP;\_%F_PEKS'%0$SQV!AKNX,P:PQHA>&<(FR;R'7@\<3^"M^K6)P)J!5I("3 M+C:LC)9SX!"*[*:S$-V3TU)6=S72J3A*A1AWBB>J&8;:]S5?S%;$%,W&)Z[! MSNEB2'KJ67$$=KY8K8?1[FC\*MBOG4!J]>`ZC$"OI8U7@%PM#&><($AUS],^=!KKW_[>&K8Z)RH M-/WOQ30#`YT7X^S66IO*KS^F5_GEU0T!L"@;E'RL!BX?&^^<`!ZTXRXA/63D M(9W>?6P`4I'00T`!"3!DA:#/?+:L^>WULZ/A%I4I6C"B_N(/2@)X; M(F*5%/W[]6HR'5XNJ;CZD2*83L0;D0RL?W;6?RY&0V[RPXI[>E@?=4R0_/9@ MZ]4%EXWR3!_\VH'W0I%5_#F[1#AYE"#O+Y0_J@2IWS>#U.^-D/K?S2#UO\TH M]-6OI47Q+_]NLI?^-;^D/=T@#X_<'.H#*)M#S M\P" MFIXY?U$R.T4U=W)*>)H,^@W"<.)C\YGI(O3[!A"J,"M=A/YW`PA5F)$(A5X9 M&#V*0:ET.B*<_:".++"A&!DD_7BRPY$5\3>A_T?)7/"N"J,"M:*^U$PC"]1`E/ MRZ7R?L"5-EMK\SIZM0T*@60EB=C+O[D:KCK&?BZK*NDI=CJD[\]8N0L:,D\% M3_I`71R#9XQ8N@T)Y&==3#KQ/\I%H-P!,XT@N9;`]BGE-[;DDLD#Y$MZ%3!= MB]#?;*-2%>HB^P\*U#@;A8"0S\'JD_PV&X<`L`)!$%?9;0@`^1RLGK,XV^$T M!$.6"0*:9NS`EA<(_1X$,!L%ZY//P>J+_/(J"(`5"()8CO*L6.63/#BFNE08 MV-7LAD[X("A1IA30?)87P M"*1$$$)>A&J75)ZM5Z':Y'.P^FJQ+D8A`*P`/DC2[EKR?Y%FQ)?D(KND=Y/P M)Y5;$2TZ6B]`T7ZH*#?O9-$!/Z#??UK11ZKLH.Q]5IB)X(C)NB1+.?I>;G[G MUQ=KZQ7-B47$0*KK2[M-Q07-\G'2V6<%B#4[G5X,1^^Z28>#4=;H(W8FU-G+ M6&27^9+H?%6S8P*B^UI%3^90H*[YKKT+)&A(X]N9E4(A]O M\O'J2FQZ*(_6=ZDTYG1,(S]H+!!)I[G*I"=H8WYCT3I%=JL.`\N>GYS872*- MJ?LG^)E8N>M@O%MD$WW8UFVPXV_`IIDGB:73@71T(7?>3V1W.NQMCV/=H:#% M';H4<$<.2@\B3+-T_2:M\L3:]+?WRG3P"^^LKI>KX]+XQAE<",CJAX>G,NQ$ MD@T9)DDI;"^/?M,%.#L2RF3O0]MZXWQ)3)D,U*-?88`L8Z;_-UN,S0/KM!A# M:7Y#ODD&F,YX(%>N7W[$UADBE)%)@Y26I:;22Q$&PQIC#$]^I,/%8OCA9[/P M+W;)\?KZ^@-\N2_KBR`@P9D,XC2_SB5O\M*/)#DN"9UXM8XU<_=X]^A^$^L@ M86%UKMHF*@L,$=-=K46-=>PW16X*-6,74\Z/4V,YRPM^(V#SIS_@H[6,U'&9 M<@5.83+D9/5)/LV(]<1EX)6^!E25TM.OJEFQCB`KS-F26KYJB8T+_!*`I!?E/N% M5`31"#@NRVPU:0V5WS>`2P^V?TU3.-1$[M&KY`\.`<.[(YIC+K%KG2FBO`MJ MOJT+NP,,#G>@.#A84+2"%3-(J%^4Q;1RCH4"]3>K;EU.##\K.EHV0&*\X^G[ MR5,LG2S6T.:]HG:B/PI!=1N>-VRI%9J5_KW)'+<=@A7[&-^ETLVZCRO=8JYO0:UFQGY&-HAVM MU:QPCM;LY[)N+R,:]/2Q?;F]5 MYBI:*8Q`=/ML=ZLR`JQ6=0QP%,;9J#("I`YLWMX.B>[^579;N6U2IY6V9Z/J MA"=UJK:--\XVB"LWSVI!!(R]HVH:0VV'5M<:JFIE5%@,=+G?O48,M+C\@>=E M`7]M6\182?/R7OO MI4D7\O0Z!^749^D;+O*B(0"^,52'!MQS:+7"OG#V,HY5@RTC?EDAS_L$;B]1 MWWD;\&H9NXC"Q[A^AN;,9ED^Y(^X:L0>X]7DC[AJL\F$5Y,_3O?LGNH<=*P` M/?0MK@%`6K%'2U7KP7;/>=20R$\DFN6`#'^N9CL/G--`+=Y`C9JS&C6QC$Y5 MZF/IFKSU30#6[,7F[]EYIY2491.90;9&34U>_(.8E&P6@=T[Y=)/]/39%U%; MFOW4/.`?Q"V8H:_I;+XZU;#EF7GZF1B!1.J/3P.-YT5ZD5V>^KZ-U@OO-S(* M^#=Z<987*/WHA4H_,K"JPUJ]JZ#?[U(>2R#+Z%T6VF>8O=:FAT@)S[2V=T6Q%6H.N@Y-(:]LA#B=\=EJTL3$^L7NS0M M@!.EL7`XPQ(RE<#'DI$<9T3@S#YXAC(PDKY1H?J/!VLH$O'1%*P;K,A#-XZ\ M0\Z1X0-O,8LQ,YR*="AT/6N(#I7,-&KS*_Q4B^<`C.TLAMC#.H>@SNE>8/CY MS6D.GQUH@GKUB=N?`XU/#">GQ7HZC6#C4#G!A<8Y:?JGV9"8]2]KF><<@,F[ M0N2G-+"AHTPO<#VX9F.Q+[,B?)Z+X6="_Q'0!#D<'`T^.6"]/C6GA`1%[TXW ME")D"LW[*`S=Q#E04GY1J!#67OB'2P MQ#)T7\I0X32]&7Y`+"MLD>CR()'EO^,SU<&>(R3PX*T*B.5=H7N+RBM%*#"_ M&X1ILZPU!%$=7TIQ_%",8$RI`,'>\K@44=9QL!`9.'P_S*>()#&X`D@IQ=&8 M9#W3@C6P[`RM:]SBHKOQ"PE\'8X"0^:V*&3P\F)]/:>L2K4BJ_T7\>^)1)M(4RBDO=@)2*>^[QQ."/F& M/*W(#7N_FJ6RAXA M[7R]HMP^TBTE_/H[3_EUP0?#]7D"B%YH;B])Z0(DAZO15P;!5656%)BS8Z/X MZ40HZPZW;[H]:#X1@TCJ!\NHL@^["]/\9?_+05?#$+9;AYE%$!2W:REXS9W@ MB?"G?!*&*7P4934T89+*,LR40ZT[C9DP.J3M87<3F#<2>=.CVNF#-XIV&H@I MN`WBFG(>^01:5:-N6Z./5!JJ,^@;/GY]IEO8<@D.&M)_*)PQ4];CJNUC?SU M.^H4"+#$G)9%QT9NFP0&=NX;5^EB"C%%L+*7*^8(5U@>-Q];S$VVF+ML,?>Q M@%HM&\MC`>34+JEKS2D/-W#G`66\OEJ^'MQWPIN=UM,R% M2YQA8I@RBJ8B:P2@K3\N':.ENX@VMQ^<16?RV2L37&*9V69I4?@4*5$N30U0 MT';]Z$PE20C_9KL*CM`\:*YAH=)'%3[D9=&\2'+O8KK/(F# M:K5SV.]VXY"%"])[Q$PO0NT5Z-$I,LBN):?7*';5DIJW4::NDZ7%LCN!R>TP MCKNF0?MO@#-!>=8<)0LFX'D6JRM[=<`73\;J!52BPH=F`/``R\XIPW,OTB>'1W5W9^R3J?:JRL9M6'Z M+Q_I#CJ?9`^M,S9>$!]E7MAGFXB)5(%)(#%L^8:K42LR^%(&5X&&(GH$:QV[ M5\[7#3A$`KZDI:-R=)$)2:\>U-^U(+%3=!L`(KH MOFQPSDCR,;.CQP00(@V^C(CY-J6!E([5A8`(=O??T@DBK/<\Y'9*,N/592D@ M-G2D&^\V,1'@2H_#(8KK5VV)"+(=GG-_(P78TP69$I1CH\&:*RMCR#G1J,2N M+GT!G<4%F?(Z;O[DBEDD+M>4L8J8>0%E;;H:DB6Z;PQUW+0OO(G7W)<@'IW? MC>QV$2T-)V]%W.<^<9]CXE[6]5^#"R"DJ2Y&2UF:`Q'AMLPYX2$5RF*";M!1 MYW!@R&L,8.[1/H$6+!44U8Q?]80:,R.D4+5K.INAGEWD"#:^GA#!['R([>64%;%E**[ MV`U2P.J?VL0#!6CRAL.!@^<^O,WKHQ'\+FQ^!&/<+JB,\TBLIH.H^_#DOX!1 MD/VZ5C=7XG1.1$)?"\LJ^Z[2(T"0X84_,WG^]]^='G%F4UNS#JP+"2B]>&S4 M]2B.WUDJY;&&:KQDJ"@&#ZHDP6Y%J?9*4@"&]C',Y5;O*G]6L,X=:O$GW-T M;'5PQM%"'#.L\6.0O(_V&4BKJ'^M1BM:7VUDBO5U2E8BFHWL"NYX0-AD\)OQ=ZLI1W8+NI\A@7'(LCDX,=2S.+`E&AU_WRU]@Y20A5;E+=1NR M=?!8R#($&[WZIM`X3A0],VKA8@9\B)O5`/_DA2Y[$0*MR..")I^" MH"DA@1=*2'2>5,M>V)@13&PCHIO\)3DBXHV5X[:_DGK[/*:EZZ*.7/'^64QC M+J1?\$OB8Z!]WQ\JK)3Y7XW=R M8E"`$'6X7F9C?=?%YUB$I$W%9;;BF%B$U`S)T>-MV_S)_O\!.<>=[H@9Q.L:U@4NW?B4F-TB;23 M5ES'9F)^%3,MY>[4BZ<_=(/2PV2.9EC92PLC#TDY:@VX;!(-N-3>H`V0K\@1 MJM*:*A$GL%@2\-5#OB6N*TO%DN)ZN!&V,VK#O-`LL MC^EAFSU&:3MG/A0>'K&`13`R(1'-*(PX,F3@>?60@>.7477$G-W8*EC`)U12 M(65\1>S/A?2G7R.7[B6Y:7\P`!AM$WZ31XV(`[6`1BO?ZUH]Z%,(:7_13`?/ MNU-?R4NXQFD`L>K2!U-A5#>;,I[NPE%GU#/RWZO(2WG?`(P[5(D(K6U%5M$(4!RM MN$_>_D`OG`/K0&.]!!$'&WL&SUR:,4,E$=98CD$`L1#&,V)?46MY4J%9 MEOR3U:E$)MX6I<^DVF1A':N%*5\^B)N"TGDE38<:!&6DI4Y7STE2O,+-@I@W M%2.M<4B3Z7IY!8^Y6BK;1+SO1QV_G@ M%&#I>!%I:=2+PW.=.>+5J^2PCV05(J6A#UDI.W"M)?\#)[M,/F)#@8:\SMZ9 MMYU57>&&^<*\?(-:C>'B=,C6*QGDJ.7&=F"E?")[!A4[['-R=L;+/>8.%%I. M:3\]Z9#`4C=);#2J5F$'42N#\9TT+E1Q*;'L:+ES0+*[QED9$&UA?;]\RM4` MCQBF*G03DRAIAAVEG<+MSL=[>W``?,=1\3'>(F.W0,S)!\%]N@_G+&ZWZ=0I M&]%@/XP9U$Y/-C2?LF(\C>%5NP/+;VK$5J>@J;CSHKJ:V]0TOWAR.1H=TG_SYR^?'\[I[V)]>WA9 MK)\,'G_Y0H&U&Z^*,Q_!IW$Y6#5Y\(T;/H/6U_QJ^G0Q6],$-JL/9!FM'4[\ MK9$EDX;`]WM6B=7L9K@8I__.%C.:G=']G!;9<)&Q/-Z^RGDQH2YT>BOZP%.D MR"YA,7@TS.@,D3^SQ;73&_$ZU!U19'A!UT5F5\0G(J'%M[[1/"(SWL[/Y17% M!+=L068^'Q4CE1VX=YBM#?-ENIQGHWPX)6M[D";3KD+`L_SFZO2*%AG0'J-8 MT#R8X)0Y!#"\K0``QYJZQ<;Y)>V7D9G34ZA_%"BF*,#UII,C%"U,->=EMH@L MG=T.1T@J5P?;Q7"Q%2@WD>E47$94 M0B0(!<%?D+J&A"AK6!2>SI;+\$26)&C&3HHPS<`8Y&H&2A"@FIPJF>W9Z-FS M+R,G^P6=8-&"Y'HV7D]G_I$"I5>+X7P9`W:5%Q^*;$E0R2:S11;%?5`9P]^O M7'5[&J.$Z$BD0O>DFM5.H^L`QHJO9+%1?$7(-';'/!KUC-+ZO)I>Y8>G[1JL MK,&OJH1>];`1=#F>UX4JU:W+6HW3I2_C=.E@,[K4S-H55*6!HE"3NH@R0(XF M=8EVY",VJD`]]7=J\Y-2FYP)';WI#C[4,DQ,X.J*P4,T:#.`'EW:#"BF5>,A M1JK7B/FOM6M$8:5<<;G[<'2K3P4QSW<;*HCYVTL&MW/8'[S$&(17#NN@_N!% MI`IZT;(*BN"3N]5`C%PU-1"KN]-`?UH-Q,:_J@;B^V.H;&?P*FN@,H"U-%`9 MT.H:"$+6A;=R[THMV*Y8!W2Z5=\,/?K2B[`2LTI4X6_$^LO/7I7['X\&+YR_H*3%L<<]!A'46`Q"IK/K/XI35 MTX?K>60DJ^MS9)5W>NI/JZ*?>_JSJC5*MJDYC*=A0 MT4^A5=9>87"U]%089'6-!.!%JJ&-A]8VM,**[!O/4LP#B=V#?;M;A$&Z593N;&Z.Z7VIU5J;/RK*C.> M/AH5_PQ>9>55!K"6LBH#6ETY08CWK90^_>58:_K)S#[>9$$6HZ$Z4-'1)=FW MNS59@)I-%V4[!?;G5F`F(]1>E@64A=E"_859=!/-EF;1S318G&V3(OR$5V?M MJ4!][T;I.NW+P>#X^,7@Z/CYRV=/7[QX]O+HQ;?!%5N,4D2!1JK$Y\=Q*K'O M.Z?V0%9PC9=Q.U7XYU:%F@GJ+.A"BD-#KK6TBP-=>Y$7![[>SIET^/GV6'QR__ MCK"1`%-R_.WQTZ/!R\'QTQ?9@0`3H2<'D7K2EZFKV0IQ$YG^73W)R1>A&LE( M?#DX^G+PY5%V>/3"/Q*1NK'_^&A223T>]@>A.7.S495I.<%ZIJ1BY<<'7!(5;6?^4@:VFY M-E28N)2W9(P'CP>#9TTG^&1SUGQ)==O02X1P)KR2%Y.,77[YX_N5Q M__CIR^>#X_XSJM0XO`BE]BS6[^F3M@]!JPE"1J@U.CA'3Y\^/WKZ)1DD0M-^ M=MA_[A^;>/564;L=#4(118AZ.ZJBWXZ"MHRKX(YV&JY$PPE^J*KBY"W@J.80 M,"LKN1B@M=1<#.#JBLZ$NM-T&]WL:U'=P8OH2X;[^/'Q\T&?R-.GQ_T^638< M/SMZ/GB>'3[]\GCPK3=T*E+]]5]^^8)`_O+9\;,71/^]>/[L:)`=*-#WX@'= M0B4(:1JUP#MZ^71`U-"+P=.7SYX1I7C\](AJPR_+!BQ>)Y:,CZ,4GQ^_K*85 M"1,$*UAJD<"OI!+U7HX3>9D>$DGQ>?9TKE&F<'@ M&IV7/=F3Y*?MC;.):#_A&>'(NU/KNXW7R0F1>*QD(G^45YG/EKR*_%%>93:9 M\"KRAUU%E*0\0Z_*XT7LWG'2<,)=K"?N-?6I_HBVXJF.,%UJ1?T(K MYQJA?"7N6N<@0$WYU:Y,++OT,EOI-NT*%`8I1,J@C8_H#]`<>Y:T96RTF*VR MT2H;GTA2<_A+8A$FZ7?IY8C,I94L+'F.ER0JDCSF*_%H4*EC#P2[)/Y"2CEM ME:ZN\N7A.=46'59`3WG5.IG1&BDJ_$01)0+%_!%/?YB(N$V6`F9%)IRLI`RE M\'0*6A6_^&2F"G3Q07Z=+/*L&%N?5`V34QZ)M[,Y9XOS\XY5(.GLI^E\TK7? M=[NG54`*MC;`R7=50-%*A+@`D'K#P,3"H2*?W@A?5&B;)5&I6LE,P5*U-I&' MM1NL49>J^-KM&96KM)@T;K9>VTR'TUJ3"NUR`ZAJ+6`[5:WZ?I:/]VFE>:49 MAXH^39R\(.9E!F2/>,^E$FNTRTT=*;ND2:@ELI9^4FU+()F`4((P+:>L!-K% M4:4:K%,]0UND14_;'>1QG$WS:PU4]+HN[*Y-"UJ%E6,-L'#M.'_T5=W"D6FQR/"/A8GUBU1N-"1`M9`W3,INBR MO:=X7?:&K5B4O7ARDLTFG2[LHC$UYEGV+FIND!?CLJXK$,XTIK67L^M2XI4@ M,5^O+H:C=QTXA*5S=%VX\Y]00:+ZH1A9'Z4%+PW';#J]C*+1DA#SLB.KQY66 MMC\92&$XG)S0+^-\(0',%_E[LJ`ZB=0DKSI\26@;2`H=TQ@,%N8.UA:6=,X2 M@?:2FH+8^DW0/;0*,HNTM0:JMYPQOYZ3?3BQG(">D>\I&P$4GGD*8UJG3940;IU4GAF5<0EOTJ)3 MIN1,=]*)A2%W)?6LICNF&5[B/I*8=%G1#0O\FV64;NL*#_;3HS@/]JS,A4V' M@3!W(;V4R2@O3O7;F7P[6Z^PU]EB@;V>SBY/`>P;"?S&A'XS4^]-^."#V0+X MP-N@K8BM`6U1?E/DS,:;4:_B*7?YA^@ER<2)]`7Y[^>KX<7R\=?D!7GLA^J. M9H09LMO/22E"WY+":F!$+3HN?=;DTR""6+UC6SJBEBY#\)(;6PRV5M^NE1][2DVN*R3C6Z\>:I%Z`? M*$D=,_^JVK(!8#Z;#A=R*?)V_JB7Z-]=KXQ!\*A,-[O^52,`1((WJD^F<-/Z M_:.&(W&#U6=^AN9`C%&-AI6@P(1RBOIKAR*0,^O!6N9%H]$A]9LQZ/+7Q:H1 M@-6P60](?5\/]O:,B9Z88("1*"HB1IQIA5'A]GXX76>FF26J@T&E.UIOYYTN M8-!$O>R"W2H,MY\$;BYHU<&?E#2E?Q0Z4:YTF:$Q^A;)/K+*5B>KIODWD)C`/-@'TEF?SO?LY$Y.8$SPW!#T0]^%T,4;#B[#-@,^82: MQ?WCY]7MSE+K<8\+*BBFI)#B9V0<,24E"?_\*CEZ?#3I)?!)RR6Y;O2('V%T M2NXH*0WM5#7VXD";([3$X297:)G=A[.6O1&H^$H=Q!4[C"NV'U?LB2XF"1M2 M10X@KV!ZJV=F)8`!L82"E`ZB4GBN1&H&SQ5&M>#YQ9!>C1A"2#O@10@-J: M9^=6[P5UM`5>JS(($WQ4&TJIR8U6BVZ.8V=;V#%0J%GKPSI8D9BC=>M=!2MR M)2BT$?NP9S.\J>OV8$P#4W:$FQ6[<@8L`0?EL`F.?K'!F=:VSZ<1T%PBK MNL3W5T19]1+PH!47KH%,^M=15S(:W]%7,AC;K[`D**"Q^"M+>SCE#F(+'L86 MW(\M^`04K*2YD,XVU5T875J'&:G`*L&,5&*58#;29()7[U25:5]G;4TF3UEA M>D02**#+XJKS]R*`K0&@8'V*I^@YP<4'+PC(I7T\%";''V;2]QWU73>Z5K.5;*.'SFJ#OC M`))?YQDZ5.N"!/;+TD%XE8,:=0YKU-FO4>>)4\?6E4'9[J%1A,ZH`39*9]:` M&Z4W:\"-TITUX#;2GY#YMTN)!O6G<5094UX&J0*:M"*@\"@5I^#Y^I)R>8!B3ZW51_1#]W]^16C:/] MV7$B<3L8\[0J8`-JE?95-Y+C,DLISF=UH_EZZZ:X+6:4U*L;GN0=MZV M:QI7,:"KF5D*-,I)WD:T!K58IP&G4".+?Q48[]-0>XMY:N)Y4`G1`X!I^[@< M5L+E<*.X[%?"97^CN#RIA,N3,ES*=YE\:)8S/6+62'FASV7B$^#?C_G<5]O& MJ,S\]V,^C64INX<;[R-NP\9T\B"NEP=;T4W_C+1M2I=4&GX0;?%+6H%>$U6#"@,0*L:0IG6*LC`WW)&Q1 M!-FXK"^(+='0)-3="C5&.-&=.O3]18B.GZPS(0,!WJ>#>@ M5V?S#IV[\^64M(1:"VW*2TRQ($M=9/&H1F%^CZZ)/P:<3U[(%Z,N(Z]T#]%W&= M^T0-D;C./SA3I)0`1G]Y1+^IN]E9'F:H&,\Y[_")/$70H9YA=6B!'FM75D(` M!^333]704]]^,@8"XB7);*`G22NPC.(5>0#"=[@3\H$Y-!J)9!\^'(!!%E_@ MB)>1SV@=(15VK(DRCKD4XH1*($L).LGC6J&%3J595H;H01!3A>I!!/NWB=9A M'%J'3=&*Q6<_#A]31,HQC1"<[6#Y)`[+)RB6$1*NKF2I.FL\(L;N!RK1]3R* MT]<;[Q1^',_?*]S<$MV*-[(VWB_\1*"_7[BE)?H5;U]MOF/XJ42W8_J4+='$ ME.&D$(#ZYE!+`=R\D-QJ5!;ZZ<"J[-!.38/%/=,,/W19DV9VMTV:01`T>R"S M#6A#+E$[*%7M(1&V2O*$`D2):WYJ1_NQ]TI&>(R;6_2@/OGPPW M72XJ/D2?-:V/FU`V]X"2:+DVE3X(E&Z;HW2X@1$\;(EPAZ$5R,:'YINU,#CE<_%%3TB&J?D%1L)^?2(@9&&C_@F MS*D-XNOA90=-!#_F_&B.6E6>)D41TE%DVJ+:9VV.\F<&JK__#JGXV5WA6S[* M'!4$OV:C_%F3479)QT8YFFHP&Z3(Y5B:T[1I.MB>V;.N/S5-%>Q\B3U-[,[. M.B7%?-B1A)Z_KW;6&*J(9-L3QS52<1[(53_)#Q#W"%K*WN#.+ M??N`.K/@,IBFPJ8-\D66^/E!%)3!S.X+2\N4FG-^?JF]6>K)\(%@:5:#4NL/Y-4:%"@/UL MA`B>/A1!A;;.#L,^X3^)>.S3Y"X-FO=DQ[P[O@.3"$W"7B9&@F=@Y_&I9>N?GWF]"]ES#:(9DU.D_ M/NH-'LN;Z&A:[.3L+/G\>WIIZ^@D^9P^,9.A2W]EQ7A*\UO__P'[B6WM`AP( !```` ` end >Fix: >Release-Note: >Audit-Trail: >Unformatted: From jbernard@roanoke.edu Mon Nov 13 13:37:00 2000 From: jbernard@roanoke.edu (jon) Date: Mon, 13 Nov 2000 13:37:00 -0000 Subject: libstdc++/25 Message-ID: <20001113213700.25433.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/25; it has been noted by GNATS. From: jon To: libstdc++-gnats@sourceware.cygnus.com, Nicholas.Walker@desy.de, bkoz@cygnus.com Cc: Subject: Re: libstdc++/25 Date: Mon, 13 Nov 2000 16:38:16 -0500 --------------AAA28001546EBD4BEF271327 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit im having the same problem, I'm using Redhat 7.0 with this code: #include #include int main() { int num; istream IN; IN.open("filename"); IN >> num; ... return 0; } this segfaults on the IN.open() line every time I am compiling it with this command: $ g++ testcode.cc -o testcode $ ./testcode $ segmentation fault (core dumped) Does anyone know how I can fix this problem? thank you very much for your time Jon Bernard jbernard@roanoke.edu http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view&pr=25&database=libstdc++ -- .^. .--------------Jon Bernard---------------. /V\ | Email: jbernard@roanoke.edu | // \\ | URL: http://cs.roanoke.edu/~jbernard | /( )\ | IM: o0fenrir0o | ^^-^^ ^----------------------------------------^ --------------AAA28001546EBD4BEF271327 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit im having the same problem, I'm using Redhat 7.0
with this code:

#include<fstream.h>
#include<iostream.h>

int main()
{
    int num;
    
    istream IN;
    IN.open("filename");
    IN >> num;
    ...

return 0;
}

this segfaults on the IN.open() line every time
I am compiling it with this command:

$ g++ testcode.cc -o testcode
$ ./testcode
$ segmentation fault (core dumped)

Does anyone know how I can fix this problem?

thank you very much for your time

Jon Bernard
jbernard@roanoke.edu

-- 
     .^.      .--------------Jon Bernard---------------.
     /V\      |    Email: jbernard@roanoke.edu         | 
    // \\     |  URL:  http://cs.roanoke.edu/~jbernard   |
   /(   )\    |            IM: o0fenrir0o              |
    ^^-^^     ^----------------------------------------^
  --------------AAA28001546EBD4BEF271327-- From bkoz@redhat.com Wed Nov 15 12:37:00 2000 From: bkoz@redhat.com (Benjamin Kosnik) Date: Wed, 15 Nov 2000 12:37:00 -0000 Subject: libstdc++/103: no install.sh in archive Message-ID: <20001115203700.3830.qmail@sourceware.cygnus.com> The following reply was made to PR libstdc++/103; it has been noted by GNATS. From: Benjamin Kosnik To: Andrew.Pickin@aethos.co.uk Cc: libstdc++-gnats@sourceware.cygnus.com Subject: Re: libstdc++/103: no install.sh in archive Date: Wed, 15 Nov 2000 12:26:55 -0800 (PST) please read the release notes. The install/build instructions changed with this release. -benjamin From richarda@ixla.com.au Sun Nov 19 17:37:00 2000 From: richarda@ixla.com.au (richarda@ixla.com.au) Date: Sun, 19 Nov 2000 17:37:00 -0000 Subject: libstdc++/107: templated global operators in conflict with rel_ops Message-ID: <20001120013148.24135.qmail@sourceware.cygnus.com> >Number: 107 >Category: libstdc++ >Synopsis: templated global operators in conflict with rel_ops >Confidential: no >Severity: serious >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun Nov 19 17:37:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Richard Andrews >Release: unknown-1.0 >Organization: >Environment: ALL >Description: stl_iterator.h defines templated global operators. These conflict with the same operators defined in std::rel_ops (stl_relops.h) Logical errors in several operators eg. operator>() and operator<=(). >How-To-Repeat:  >Fix: remove templated global operators. Use rel_ops where necessary. The operators defined in should _ALL_ be members not global. >Release-Note: >Audit-Trail: >Unformatted:

http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view&pr=25&amp;database=libstdc++