From A.Gaab@scanlab.de Wed Apr 13 09:26:19 2011 Received: from maia.hub.org (maia-2.hub.org [200.46.204.251]) by mail.postgresql.org (Postfix) with ESMTP id 421501337B68 for ; Wed, 13 Apr 2011 06:26:19 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.251]) (amavisd-maia, port 10024) with ESMTP id 24534-09 for ; Wed, 13 Apr 2011 09:25:41 +0000 (UTC) X-Greylist: delayed 00:09:58.856868 by SQLgrey-1.7.6 Received: from mail.scanlab.de (mail.scanlab.de [62.138.55.241]) by mail.postgresql.org (Postfix) with ESMTP id 1E2811337B83 for ; Wed, 13 Apr 2011 06:25:39 -0300 (ADT) Received: from unknown (HELO Exchange-Server.scanlab-intern.de) ([172.16.20.15]) by mail.scanlab-intern.de with ESMTP; 13 Apr 2011 11:15:39 +0200 Received: from Exchange-Server.scanlab-intern.de ([127.0.0.1]) by Exchange-Server ([127.0.0.1]) with mapi; Wed, 13 Apr 2011 11:15:39 +0200 From: Andreas Gaab To: pgsql sql CC: =?iso-8859-1?Q?Hans_Joachim_M=FCnzer?= Date: Wed, 13 Apr 2011 11:15:38 +0200 Subject: unnesting of array of different size explodes memory Thread-Topic: unnesting of array of different size explodes memory Thread-Index: Acv5u1r7QBhrzDL6ShWUbpGxcEyEcQ== Message-ID: <48DA836F3865C54B8FBF424A3B775AF667239FFDEF@Exchange-Server> Accept-Language: de-DE Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: de-DE Content-Type: multipart/alternative; boundary="_000_48DA836F3865C54B8FBF424A3B775AF667239FFDEFExchangeServe_" MIME-Version: 1.0 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.909 tagged_above=-5 required=5 tests=BAYES_00=-1.9, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01 X-Spam-Level: X-Archive-Number: 201104/9 X-Sequence-Number: 35256 --_000_48DA836F3865C54B8FBF424A3B775AF667239FFDEFExchangeServe_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, I need to sum up the elements of two arrays. Most arrays were of the same s= ize, thus I just unnested the arrays in one table and grouped the results i= n a loop for every row. When two arrays of different size (1200 and 1300) w= ere processed, the memory usage exploded and the query was killed by the ke= rnel. As I now understand, the following query leads to 12 results, not just 4 (o= r 3...): SELECT unnest(ARRAY[1,2,3]), unnest(ARRAY[4,5,6,7]); Why could postgres use as much memory till the kernel complained when unnes= ting 1200 and 1300 elements resulting in 1.6e6 rows. Are there settings to = prevent this such as "work_mem"? Regards, Andreas ___________________________________________________________________________ SCANLAB AG Dr. Andreas Simon Gaab Entwicklung * R & D Siemensstr. 2a * 82178 Puchheim * Germany Tel. +49 (89) 800 746-513 * Fax +49 (89) 800 746-199 mailto:a.gaab@scanlab.de * www.scanlab.de Amtsgericht M=FCnchen: HRB 124707 * USt-IdNr.: DE 129 456 351 Vorstand: Georg Hofner (Sprecher), Christian Huttenloher, Norbert Petschik Aufsichtsrat (Vorsitz): Dr. Hans J. Langer ___________________________________________________________________________ Besuchen Sie uns auf der / Meet us at LASER World of PHOTONICS 2011 Munich, Germany May 23 - 26, 2011 Hall C2, Booth 461 --_000_48DA836F3865C54B8FBF424A3B775AF667239FFDEFExchangeServe_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi,<= /o:p>

 

<= p class=3DMsoNormal>I need to sum up the elements of two arrays. M= ost arrays were of the same size, thus I just unnested the arrays in one ta= ble and grouped the results in a loop for every row. When two arrays of dif= ferent size (1200 and 1300) were processed, the memory usage exploded and t= he query was killed by the kernel.

 

As I n= ow understand, the following query leads to 12 results, not just 4 (or 3= 230;):

 

SELECT unnest(ARRAY[1,2,3]), unn= est(ARRAY[4,5,6,7]);

<= o:p> 

Why could postgres= use as much memory till the kernel complained when unnesting 1200 and 1300= elements resulting in 1.6e6 rows. Are there settings to prevent this such = as “work_mem”?

Regards,<= /o:p>

Andreas

=

 

______________________________________= _____________________________________

 

SCANLAB AG

Dr. Andr= eas Simon Gaab

Entwicklung • R & D=

 = ;

Sie= mensstr. 2a • 82178 Puchheim • Germany

Tel. +49&= nbsp;(89) 800 746-513 • Fax +49 (89) 800&nbs= p;746-199

mailto:a.gaab@scanlab.de= • www.scanlab.de

 

Amtsge= richt M=FCnchen: HRB 124707 • USt-IdNr.: DE 129 4= 56 351

Vorstand: Georg Hofner (Sprecher), Christian Hut= tenloher, Norbert Petschik

<= span style=3D'font-size:10.0pt'>Aufsichtsrat (Vorsitz): Dr. Hans&= nbsp;J. Langer

_____________________________________________________= ______________________

 = ;

Besuchen Sie uns auf der / Meet us at
LASER World of PHOTONICS 2011
Munich, Germany
May 23 - 26, 2011
Hall C2, Booth 461
--_000_48DA836F3865C54B8FBF424A3B775AF667239FFDEFExchangeServe_-- From tgl@sss.pgh.pa.us Wed Apr 13 14:53:23 2011 Received: from maia.hub.org (maia-2.hub.org [200.46.204.251]) by mail.postgresql.org (Postfix) with ESMTP id D35171337BA8 for ; Wed, 13 Apr 2011 11:53:23 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.251]) (amavisd-maia, port 10024) with ESMTP id 97965-03 for ; Wed, 13 Apr 2011 14:52:33 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by mail.postgresql.org (Postfix) with ESMTP id 78AA81337B93 for ; Wed, 13 Apr 2011 11:52:32 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id p3DEqWoE004786; Wed, 13 Apr 2011 10:52:32 -0400 (EDT) To: Andreas Gaab cc: pgsql sql , =?iso-8859-1?Q?Hans_Joachim_M=FCnzer?= Subject: Re: unnesting of array of different size explodes memory In-reply-to: <48DA836F3865C54B8FBF424A3B775AF667239FFDEF@Exchange-Server> References: <48DA836F3865C54B8FBF424A3B775AF667239FFDEF@Exchange-Server> Comments: In-reply-to Andreas Gaab message dated "Wed, 13 Apr 2011 11:15:38 +0200" Date: Wed, 13 Apr 2011 10:52:32 -0400 Message-ID: <4785.1302706352@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.91 tagged_above=-5 required=5 tests=BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01 X-Spam-Level: X-Archive-Number: 201104/10 X-Sequence-Number: 35257 Andreas Gaab writes: > As I now understand, the following query leads to 12 results, not just 4 (or 3...): > SELECT unnest(ARRAY[1,2,3]), unnest(ARRAY[4,5,6,7]); > Why could postgres use as much memory till the kernel complained when unnesting 1200 and 1300 elements resulting in 1.6e6 rows. Are there settings to prevent this such as "work_mem"? Multiple SRFs in a targetlist are a good thing to avoid. The behavior is ... um ... peculiar, and the fact that we can't reclaim memory partway through is really the least of the problems with it. Try doing it like this instead: SELECT * from unnest(ARRAY[1,2,3]) a, unnest(ARRAY[4,5,6,7]) b; This has saner behavior and is less likely to leak memory. Not to mention less likely to be deprecated or de-implemented altogether in the far future. regards, tom lane From scorpdaddy@hotmail.com Wed Apr 13 16:21:58 2011 Received: from maia.hub.org (maia-2.hub.org [200.46.204.251]) by mail.postgresql.org (Postfix) with ESMTP id CD6B91337BC4 for ; Wed, 13 Apr 2011 13:21:58 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.251]) (amavisd-maia, port 10024) with ESMTP id 28257-04 for ; Wed, 13 Apr 2011 16:21:30 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from blu0-omc1-s33.blu0.hotmail.com (blu0-omc1-s33.blu0.hotmail.com [65.55.116.44]) by mail.postgresql.org (Postfix) with ESMTP id 0B1A61337B80 for ; Wed, 13 Apr 2011 13:21:29 -0300 (ADT) Received: from BLU0-SMTP147 ([65.55.116.9]) by blu0-omc1-s33.blu0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Wed, 13 Apr 2011 09:21:28 -0700 X-Originating-IP: [142.166.23.178] X-Originating-Email: [scorpdaddy@hotmail.com] Message-ID: Received: from [192.168.2.109] ([142.166.23.178]) by BLU0-SMTP147.blu0.hotmail.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Wed, 13 Apr 2011 09:21:26 -0700 To: "=?utf-8?B?QW5kcmVhcyBHYWFi?=" , "=?utf-8?B?cGdzcWwgc3Fs?=" From: Charlie CC: "=?utf-8?B?SGFucyBKb2FjaGltIE3DvG56ZXI=?=" Subject: =?utf-8?B?UmU6IFtTUUxdIHVubmVzdGluZyBvZiBhcnJheSBvZiBkaWZmZXJlbnQgc2l6ZSBleHBsb2RlcyBtZW1vcnk=?= Date: Wed, 13 Apr 2011 13:21:27 -0300 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_0_1302711687576" X-OriginalArrivalTime: 13 Apr 2011 16:21:27.0350 (UTC) FILETIME=[D6EFC560:01CBF9F6] X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-0.928 tagged_above=-5 required=5 tests=BAYES_00=-1.9, FREEMAIL_FROM=0.001, FROM_EXCESS_BASE64=0.979, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RFC_ABUSE_POST=0.001, T_RP_MATCHES_RCVD=-0.01 X-Spam-Level: X-Archive-Number: 201104/14 X-Sequence-Number: 35261 ------=_Part_0_1302711687576 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Content-Disposition: inline QW5vdGhlciBhcHByb2FjaCB0byBjb25zaWRlciBpcyB1c2luZyBzdHJpbmdzLiAgRS5nLiBUaGUg ZnVuY3Rpb24gYXNzZW1ibGVzIHRoZSB1bmRlcmx5aW5nIHF1ZXJ5IGFzIGEgc3RyaW5nIGFuZCBy ZXR1cm5zIHRoZSByZXN1bHRzIG9mIGV4ZWN1dGluZyB0aGUgc3RyaW5nLiAgUGFzc2luZyB0aGUg Z3JvdXBzIGluIGEgc3RyaW5nIG1heSBiZSBzdHJhaWdodGZvcndhcmQgaW4geW91ciBhcHBsaWNh dGlvbiwgb3Igbm90LgoKVGhlcmUgd2FzIGEgdGhyZWFkIGluIHRoZSBub3ZpY2UgZm9ydW0gbGFz dCB5ZWFyIGFib3V0IHRoZSByZWxhdGl2ZSBzcGVlZCBvZiBmdW5jdGlvbnMgdGhhdCBhc3NlbWJs ZSBhbmQgZXhlY3V0ZSBzdHJpbmdzIHZzIGZ1bmN0aW9ucyB0aGF0IGVuY29kZSB0aGUgdW5kZXJs eWluZyBxdWVyeS4gIFRoZSBzdHJpbmcgZXhlY3V0aW9uIGlzIGZhc3Rlci4gIElmIEkgcmVjYWxs IHRoZSBleHBsYW5hdGlvbiwgdGhlIGV4ZWN1dGVkIHN0cmluZyBpcyByZW1lbWJlcmVkIGJ5IHRo ZSBwbGFubmVyIGFuZCBzcGVlZHMgdXAuICBCdXQgdGhlIHBsYW5uZXIgaGFzIG5vIGtub3dsZWRn ZSBvZiB0aGUgcXVlcnkgc3RydWN0dXJlIGVuY29kZWQgaW4gdGhlIGZ1bmN0aW9uLCBhbmQgc28g c3RhcnRzIGZyb20gc2NyYXRjaCBlYWNoIHRpbWUgLSB2ZXJ5IHNsb3cuCgpJIGdvdCBteSBmdW5j dGlvbiB0aW1lcyBmcm9tIDEwIHNlY3MgdG8gMzAwIG1zIGJ5IGFzc2VtYmxpbmcgcXVlcnkgc3Ry aW5ncyBpbiB0aGUgZnVuY3Rpb24uCgpDaGFybGllCgoKCi0tLS0tIFJlcGx5IG1lc3NhZ2UgLS0t LS0KRnJvbTogIkFuZHJlYXMgR2FhYiIgPEEuR2FhYkBzY2FubGFiLmRlPgpEYXRlOiBXZWQsIEFw ciAxMywgMjAxMSA2OjE1IGFtClN1YmplY3Q6IFtTUUxdIHVubmVzdGluZyBvZiBhcnJheSBvZiBk aWZmZXJlbnQgc2l6ZSBleHBsb2RlcyBtZW1vcnkKVG86ICJwZ3NxbCBzcWwiIDxwZ3NxbC1zcWxA cG9zdGdyZXNxbC5vcmc+CkNjOiAiSGFucyBKb2FjaGltIE3DvG56ZXIiIDxILk11ZW56ZXJAc2Nh bmxhYi5kZT4KCgpIaSwKCkkgbmVlZCB0byBzdW0gdXAgdGhlIGVsZW1lbnRzIG9mIHR3byBhcnJh eXMuIE1vc3QgYXJyYXlzIHdlcmUgb2YgdGhlIHNhbWUgc2l6ZSwgdGh1cyBJIGp1c3QgdW5uZXN0 ZWQgdGhlIGFycmF5cyBpbiBvbmUgdGFibGUgYW5kIGdyb3VwZWQgdGhlIHJlc3VsdHMgaW4gYSBs b29wIGZvciBldmVyeSByb3cuIFdoZW4gdHdvIGFycmF5cyBvZiBkaWZmZXJlbnQgc2l6ZSAoMTIw MCBhbmQgMTMwMCkgd2VyZSBwcm9jZXNzZWQsIHRoZSBtZW1vcnkgdXNhZ2UgZXhwbG9kZWQgYW5k IHRoZSBxdWVyeSB3YXMga2lsbGVkIGJ5IHRoZSBrZXJuZWwuCgpBcyBJIG5vdyB1bmRlcnN0YW5k LCB0aGUgZm9sbG93aW5nIHF1ZXJ5IGxlYWRzIHRvIDEyIHJlc3VsdHMsIG5vdCBqdXN0IDQgKG9y IDMuLi4pOgoKU0VMRUNUIHVubmVzdChBUlJBWVsxLDIsM10pLCB1bm5lc3QoQVJSQVlbNCw1LDYs N10pOwoKV2h5IGNvdWxkIHBvc3RncmVzIHVzZSBhcyBtdWNoIG1lbW9yeSB0aWxsIHRoZSBrZXJu ZWwgY29tcGxhaW5lZCB3aGVuIHVubmVzdGluZyAxMjAwIGFuZCAxMzAwIGVsZW1lbnRzIHJlc3Vs dGluZyBpbiAxLjZlNiByb3dzLiBBcmUgdGhlcmUgc2V0dGluZ3MgdG8gcHJldmVudCB0aGlzIHN1 Y2ggYXMgIndvcmtfbWVtIj8KClJlZ2FyZHMsCkFuZHJlYXMKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoK U0NBTkxBQiBBRwpEci4gQW5kcmVhcyBTaW1vbiBHYWFiCkVudHdpY2tsdW5nICogUiAmIEQKClNp ZW1lbnNzdHIuIDJhICogODIxNzggUHVjaGhlaW0gKiBHZXJtYW55ClRlbC4gKzQ5ICg4OSkgODAw IDc0Ni01MTMgKiBGYXggKzQ5ICg4OSkgODAwIDc0Ni0xOTkKbWFpbHRvOmEuZ2FhYkBzY2FubGFi LmRlICogd3d3LnNjYW5sYWIuZGU8aHR0cDovL3d3dy5zY2FubGFiLmRlPgoKQW10c2dlcmljaHQg TcO8bmNoZW46IEhSQiAxMjQ3MDcgKiBVU3QtSWROci46IERFIDEyOSA0NTYgMzUxClZvcnN0YW5k OiBHZW9yZyBIb2ZuZXIgKFNwcmVjaGVyKSwgQ2hyaXN0aWFuIEh1dHRlbmxvaGVyLCBOb3JiZXJ0 IFBldHNjaGlrCkF1ZnNpY2h0c3JhdCAoVm9yc2l0eik6IERyLiBIYW5zIEouIExhbmdlcgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KCkJlc3VjaGVuIFNpZSB1bnMgYXVmIGRlciAvIE1lZXQgdXMgYXQKTEFT RVIgV29ybGQgb2YgUEhPVE9OSUNTIDIwMTEKTXVuaWNoLCBHZXJtYW55Ck1heSAyMyAtIDI2LCAy MDExCkhhbGwgQzIsIEJvb3RoIDQ2MQoK ------=_Part_0_1302711687576 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 Content-Disposition: inline QW5vdGhlciBhcHByb2FjaCB0byBjb25zaWRlciBpcyB1c2luZyBzdHJpbmdzLiAmbmJzcDtFLmcu IFRoZSBmdW5jdGlvbiBhc3NlbWJsZXMgdGhlIHVuZGVybHlpbmcgcXVlcnkgYXMgYSBzdHJpbmcg YW5kIHJldHVybnMgdGhlIHJlc3VsdHMgb2YgZXhlY3V0aW5nIHRoZSBzdHJpbmcuICZuYnNwO1Bh c3NpbmcgdGhlIGdyb3VwcyBpbiBhIHN0cmluZyBtYXkgYmUgc3RyYWlnaHRmb3J3YXJkIGluIHlv dXIgYXBwbGljYXRpb24sIG9yIG5vdC48YnI+PGJyPlRoZXJlIHdhcyBhIHRocmVhZCBpbiB0aGUg bm92aWNlIGZvcnVtIGxhc3QgeWVhciBhYm91dCB0aGUgcmVsYXRpdmUgc3BlZWQgb2YgZnVuY3Rp b25zIHRoYXQgYXNzZW1ibGUgYW5kIGV4ZWN1dGUgc3RyaW5ncyB2cyBmdW5jdGlvbnMgdGhhdCBl bmNvZGUgdGhlIHVuZGVybHlpbmcgcXVlcnkuICZuYnNwO1RoZSBzdHJpbmcgZXhlY3V0aW9uIGlz IGZhc3Rlci4gJm5ic3A7SWYgSSByZWNhbGwgdGhlIGV4cGxhbmF0aW9uLCB0aGUgZXhlY3V0ZWQg c3RyaW5nIGlzIHJlbWVtYmVyZWQgYnkgdGhlIHBsYW5uZXIgYW5kIHNwZWVkcyB1cC4gJm5ic3A7 QnV0IHRoZSBwbGFubmVyIGhhcyBubyBrbm93bGVkZ2Ugb2YgdGhlIHF1ZXJ5IHN0cnVjdHVyZSBl bmNvZGVkIGluIHRoZSBmdW5jdGlvbiwgYW5kIHNvIHN0YXJ0cyBmcm9tIHNjcmF0Y2ggZWFjaCB0 aW1lIC0gdmVyeSBzbG93Ljxicj48YnI+SSBnb3QgbXkgZnVuY3Rpb24gdGltZXMgZnJvbSAxMCBz ZWNzIHRvIDMwMCBtcyBieSBhc3NlbWJsaW5nIHF1ZXJ5IHN0cmluZ3MgaW4gdGhlIGZ1bmN0aW9u Ljxicj48YnI+Q2hhcmxpZTxicj48YnI+PGJyPjxicj4tLS0tLSBSZXBseSBtZXNzYWdlIC0tLS0t PGJyPkZyb206ICZxdW90O0FuZHJlYXMgR2FhYiZxdW90OyAmbHQ7QS5HYWFiQHNjYW5sYWIuZGUm Z3Q7PGJyPkRhdGU6IFdlZCwgQXByIDEzLCAyMDExIDY6MTUgYW08YnI+U3ViamVjdDogW1NRTF0g dW5uZXN0aW5nIG9mIGFycmF5IG9mIGRpZmZlcmVudCBzaXplIGV4cGxvZGVzIG1lbW9yeTxicj5U bzogJnF1b3Q7cGdzcWwgc3FsJnF1b3Q7ICZsdDtwZ3NxbC1zcWxAcG9zdGdyZXNxbC5vcmcmZ3Q7 PGJyPkNjOiAmcXVvdDtIYW5zIEpvYWNoaW0gTcO8bnplciZxdW90OyAmbHQ7SC5NdWVuemVyQHNj YW5sYWIuZGUmZ3Q7PGJyPjxicj48YnI+SGksPGJyPjxicj5JIG5lZWQgdG8gc3VtIHVwIHRoZSBl bGVtZW50cyBvZiB0d28gYXJyYXlzLiBNb3N0IGFycmF5cyB3ZXJlIG9mIHRoZSBzYW1lIHNpemUs IHRodXMgSSBqdXN0IHVubmVzdGVkIHRoZSBhcnJheXMgaW4gb25lIHRhYmxlIGFuZCBncm91cGVk IHRoZSByZXN1bHRzIGluIGEgbG9vcCBmb3IgZXZlcnkgcm93LiBXaGVuIHR3byBhcnJheXMgb2Yg ZGlmZmVyZW50IHNpemUgKDEyMDAgYW5kIDEzMDApIHdlcmUgcHJvY2Vzc2VkLCB0aGUgbWVtb3J5 IHVzYWdlIGV4cGxvZGVkIGFuZCB0aGUgcXVlcnkgd2FzIGtpbGxlZCBieSB0aGUga2VybmVsLjxi cj48YnI+QXMgSSBub3cgdW5kZXJzdGFuZCwgdGhlIGZvbGxvd2luZyBxdWVyeSBsZWFkcyB0byAx MiByZXN1bHRzLCBub3QganVzdCA0IChvciAzLi4uKTo8YnI+PGJyPlNFTEVDVCB1bm5lc3QoQVJS QVlbMSwyLDNdKSwgdW5uZXN0KEFSUkFZWzQsNSw2LDddKTs8YnI+PGJyPldoeSBjb3VsZCBwb3N0 Z3JlcyB1c2UgYXMgbXVjaCBtZW1vcnkgdGlsbCB0aGUga2VybmVsIGNvbXBsYWluZWQgd2hlbiB1 bm5lc3RpbmcgMTIwMCBhbmQgMTMwMCBlbGVtZW50cyByZXN1bHRpbmcgaW4gMS42ZTYgcm93cy4g QXJlIHRoZXJlIHNldHRpbmdzIHRvIHByZXZlbnQgdGhpcyBzdWNoIGFzICZxdW90O3dvcmtfbWVt JnF1b3Q7Pzxicj48YnI+UmVnYXJkcyw8YnI+QW5kcmVhczxicj48YnI+X19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fPGJyPjxicj5TQ0FOTEFCIEFHPGJyPkRyLiBBbmRyZWFzIFNpbW9uIEdhYWI8YnI+RW50d2lj a2x1bmcgKiBSICZhbXA7IEQ8YnI+PGJyPlNpZW1lbnNzdHIuIDJhICogODIxNzggUHVjaGhlaW0g KiBHZXJtYW55PGJyPlRlbC4gKzQ5ICg4OSkgODAwIDc0Ni01MTMgKiBGYXggKzQ5ICg4OSkgODAw IDc0Ni0xOTk8YnI+bWFpbHRvOmEuZ2FhYkBzY2FubGFiLmRlICogd3d3LnNjYW5sYWIuZGUmbHQ7 PGEgaHJlZj0iaHR0cDovL3d3dy5zY2FubGFiLmRlIj5odHRwOi8vd3d3LnNjYW5sYWIuZGU8L2E+ Jmd0Ozxicj48YnI+QW10c2dlcmljaHQgTcO8bmNoZW46IEhSQiAxMjQ3MDcgKiBVU3QtSWROci46 IERFIDEyOSA0NTYgMzUxPGJyPlZvcnN0YW5kOiBHZW9yZyBIb2ZuZXIgKFNwcmVjaGVyKSwgQ2hy aXN0aWFuIEh1dHRlbmxvaGVyLCBOb3JiZXJ0IFBldHNjaGlrPGJyPkF1ZnNpY2h0c3JhdCAoVm9y c2l0eik6IERyLiBIYW5zIEouIExhbmdlcjxicj5fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+PGJyPkJl c3VjaGVuIFNpZSB1bnMgYXVmIGRlciAvIE1lZXQgdXMgYXQ8YnI+TEFTRVIgV29ybGQgb2YgUEhP VE9OSUNTIDIwMTE8YnI+TXVuaWNoLCBHZXJtYW55PGJyPk1heSAyMyAtIDI2LCAyMDExPGJyPkhh bGwgQzIsIEJvb3RoIDQ2MTxicj48YnI+PGJyPjxicj4= ------=_Part_0_1302711687576--