Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UNpFG-0005NU-AG for pgsql-performance@arkaria.postgresql.org; Thu, 04 Apr 2013 18:50:46 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.72) (envelope-from ) id 1UNpFF-0002hN-Qy for pgsql-performance@arkaria.postgresql.org; Thu, 04 Apr 2013 18:50:45 +0000 Received: from makus.postgresql.org ([2001:4800:7903:4::125]) by malur.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UNpFE-0002hI-Ob for pgsql-performance@postgresql.org; Thu, 04 Apr 2013 18:50:45 +0000 Received: from smtp07.smtpout.orange.fr ([80.12.242.129] helo=smtp.smtpout.orange.fr) by makus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UNpF6-00050N-4s for pgsql-performance@postgresql.org; Thu, 04 Apr 2013 18:50:44 +0000 Received: from axege.com ([82.127.232.162]) by mwinf5d42 with ME id KuqZ1l00G3WtTCJ03uqZye; Thu, 04 Apr 2013 20:50:34 +0200 Received: from localhost (localhost [127.0.0.1]) by axege.com (Postfix) with ESMTP id 4DA0943DE06 for ; Thu, 4 Apr 2013 20:50:33 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at myhostname="axege.com." Received: from axege.com ([127.0.0.1]) by localhost (axege.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XbULUnVAAymb for ; Thu, 4 Apr 2013 20:49:27 +0200 (CEST) Received: from [10.0.1.8] (lns-bzn-48f-81-56-219-232.adsl.proxad.net [81.56.219.232]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by axege.com (Postfix) with ESMTPSA id 076CE43DE01 for ; Thu, 4 Apr 2013 20:49:25 +0200 (CEST) Message-ID: <515DCB34.6040801@axege.com> Date: Thu, 04 Apr 2013 20:49:24 +0200 From: Franck Routier User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4 MIME-Version: 1.0 To: pgsql-performance@postgresql.org Subject: Re: What happens between end of explain analyze and end of query execution ? References: <515D92BF.5000309@axege.com> <515D9FC5.7030105@axege.com> <18910.1365092713@sss.pgh.pa.us> In-Reply-To: <18910.1365092713@sss.pgh.pa.us> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms010604070703020709010708" X-Pg-Spam-Score: -1.1 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-performance Precedence: bulk Sender: pgsql-performance-owner@postgresql.org Ceci est un message signé cryptographiquement au format MIME. --------------ms010604070703020709010708 Content-Type: multipart/alternative; boundary="------------030200030809010902010508" This is a multi-part message in MIME format. --------------030200030809010902010508 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Le 04/04/2013 18:25, Tom Lane a =C3=A9crit : > Franck Routier writes: >> Right, explain alone takes 3.6 seconds, so the time really seems to go= >> query planning... > Well, you've not shown us the query, so it's all going to be > speculation. But maybe you have some extremely expensive function that= > the planner is evaluating to fold to a constant, or something like that= ? > The generated plan isn't terribly complicated, but we can't see what > was required to produce it. > > regards, tom lane > > The request is not using any function. It looks like this: SELECT * FROM sanrss LEFT JOIN sanrum ON sanrum.sanrum___rforefide =3D=20 sanrss.sanrss___rforefide AND sanrum.sanrum___rfovsnide =3D=20 sanrss.sanrss___rfovsnide AND sanrum.sanrum___sanrsside =3D sanrss.sanrss= ide LEFT JOIN sanact ON sanact.sanact___rforefide =3D=20 sanrum.sanrum___rforefide AND sanact.sanact___rfovsnide =3D=20 sanrum.sanrum___rfovsnide AND sanact.sanact___sanrsside =3D=20 sanrum.sanrum___sanrsside AND sanact.sanact___sanrumide =3D=20 sanrum.sanrumide AND sanact.sanact___sanrumide IS NOT NULL AND=20 sanact.sanact___rsanopide=3D'CCAM' LEFT JOIN sandia ON sandia.sandia___rforefide =3D=20 sanrum.sanrum___rforefide AND sandia.sandia___rfovsnide =3D=20 sanrum.sanrum___rfovsnide AND sandia.sandia___sanrsside =3D=20 sanrum.sanrum___sanrsside AND sandia.sandia___sanrumide =3D=20 sanrum.sanrumide AND sandia.sandiasig=3D1 LEFT JOIN saneds ON sanrss.sanrss___rforefide =3D=20 saneds.saneds___rforefide AND sanrss.sanrss___rfovsnide =3D=20 saneds.saneds___rfovsnide AND sanrss.sanrss___sanedside =3D saneds.saneds= ide LEFT JOIN rsaidp ON saneds.saneds___rforefide =3D=20 rsaidp.rsaidp___rforefide AND saneds.saneds___rsaidpide =3D rsaidp.rsaidp= ide WHERE sanrss.sanrss___rforefide =3D 'CHCL' AND=20 sanrss.sanrss___rfovsnide =3D '201012_600' AND sanrss.sanrsside =3D '1= 188100' ORDER BY sanrum.sanrumord, sanrum.sanrumide Schema looks like this : rsaidp | v sanrss -------- | | v v sanrum sandia | v sanact Primary keys are most made of several varchars. Foreign keys do exist.=20 Query is getting these data for one specific sanrss. This used to take around 50ms to execute, and is now taking 3.5 seconds. = And it looks like this is spent computing a query plan... I also tried: PREPARE qry(id) as select .... The prepare takes 3.5 seconds. Execute qry(value) takes a few=20 milliseconds... Regards, Franck --------------030200030809010902010508 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Le 04/04/2013 18:25, Tom Lane a =C3=A9= crit=C2=A0:
Franck Routier <franck.routier@axege.com> writes:
Right, explain alone takes 3.6 seconds, so the tim=
e really seems to go=20
query planning...
Well, you've not shown us the query, so it's all going to be
speculation.  But maybe you have some extremely expensive function that
the planner is evaluating to fold to a constant, or something like that?
The generated plan isn't terribly complicated, but we can't see what
was required to produce it.

			regards, tom lane


The request is not using any function. It looks like this:

SELECT *
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FROM sanrss
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 LEFT JOIN sanrum= =C2=A0 ON sanrum.sanrum___rforefide =3D sanrss.sanrss___rforefide AND sanrum.sanrum___rfovsnide =3D sanrss.sanrss___rfovsnide AND sanrum.sanrum___sanrsside =3D sanrss.sanrsside
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= LEFT JOIN sanact=C2=A0 ON sanact.sanact___rforefide =3D sanrum.sanrum___rforefide AND sanact.sanact___rfovsnide =3D sanrum.sanrum___rfovsnide AND sanact.sanact___sanrsside =3D sanrum.sanrum___sanrsside AND sanact.sanact___sanrumide =3D sanrum.sanrumide AND sanact.sanact___sanrumide=C2=A0=C2=A0 IS NOT= NULL AND sanact.sanact___rsanopide=3D'CCAM'
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= LEFT JOIN sandia=C2=A0 ON sandia.sandia___rforefide =3D sanrum.sanrum___rforefide AND sandia.sandia___rfovsnide =3D sanrum.sanrum___rfovsnide AND sandia.sandia___sanrsside =3D sanrum.sanrum___sanrsside AND sandia.sandia___sanrumide =3D sanrum.sanrumide AND sandia.sandiasig=3D1
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= LEFT JOIN saneds=C2=A0 ON sanrss.sanrss___rforefide =3D saneds.saneds___rforefide AND sanrss.sanrss___rfovsnide =3D saneds.saneds___rfovsnide AND sanrss.sanrss___sanedside =3D saneds.sanedside
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= LEFT JOIN rsaidp=C2=A0 ON saneds.saneds___rforefide =3D rsaidp.rsaidp___rforefide AND saneds.saneds___rsaidpide =3D rsaidp.rsaidpide
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 WHERE sanrss.sanrss___rforefide =3D=C2=A0 'CHCL'=C2=A0 AND sanrss.sanrss___rfovsnide =3D=C2=A0 '201012_600'=C2=A0 AND sanrss= =2Esanrsside =3D=C2=A0 '1188100'
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ORDER BY sanrum.= sanrumord, sanrum.sanrumide


Schema looks like this :
rsaidp
=C2=A0|
=C2=A0v
sanrss --------
=C2=A0|=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 |
=C2=A0v=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 v
sanrum=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sandia
=C2=A0|
=C2=A0v
sanact


Primary keys are most made of several varchars. Foreign keys do exist. Query is getting these data for one specific sanrss.
This used to take around 50ms to execute, and is now taking 3.5 seconds. And it looks like this is spent computing a query plan...

I also tried: PREPARE qry(id) as select ....
The prepare takes 3.5 seconds. Execute qry(value) takes a few milliseconds...

Regards,
Franck
--------------030200030809010902010508-- --------------ms010604070703020709010708 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: Signature cryptographique S/MIME MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIINYjCC BjQwggQcoAMCAQICAR4wDQYJKoZIhvcNAQEFBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoT DVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNp Z25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA3 MTAyNDIxMDE1NVoXDTE3MTAyNDIxMDE1NVowgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1T dGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWdu aW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENs aWVudCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMcJg8zOLdgasSmkLhOr lr6KMoOMpohBllVHrdRvEg/q6r8jR+EK75xCGhR8ToREoqe7zM9/UnC6TS2y9UKTpT1v7RSM zR0t6ndl0TWBuUr/UXBhPk+Kmy7bI4yW4urC+y7P3/1/X7U8ocb8VpH/Clt+4iq7nirMcNh6 qJR+xjOhV+VHzQMALuGYn5KZmc1NbJQYclsGkDxDz2UbFqE2+6vIZoL+jb9x4Pa5gNf1TwSD kOkikZB1xtB4ZqtXThaABSONdfmv/Z1pua3FYxnCFmdr/+N2JLKutIxMYqQOJebr/f/h5t95 m4JgrM3Y/w7YX9d7YAL9jvN4SydHsU6n65cCAwEAAaOCAa0wggGpMA8GA1UdEwEB/wQFMAMB Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRTcu2SnODaywFcfH6WNU7y1LhRgjAfBgNV HSMEGDAWgBROC+8apEBbpRdphzDKNGhD0EGu8jBmBggrBgEFBQcBAQRaMFgwJwYIKwYBBQUH MAGGG2h0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbS9jYTAtBggrBgEFBQcwAoYhaHR0cDovL3d3 dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6AloCOGIWh0dHA6Ly93d3cu c3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20v c2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysGAQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0 dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93 d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwDQYJKoZIhvcNAQEFBQADggIBAAqD CH14qywGXLhjjF6uHLkjd02hcdh9hrw+VUsv+q1eeQWB21jWj3kJ96AUlPCoEGZ/ynJNScWy 6QMVQjbbMXltUfO4n4bGGdKo3awPWp61tjAFgraLJgDk+DsSvUD6EowjMTNx25GQgyYJ5RPI zKKR9tQW8gGK+2+RHxkUCTbYFnL6kl8Ch507rUdPPipJ9CgJFws3kDS3gOS5WFMxcjO5DwKf KSETEPrHh7p5shuuNktvsv6hxHTLhiMKX893gxdT3XLS9OKmCv87vkINQcNEcIIoFWbP9HOR z9v3vQwR4e3ksLc2JZOAFK+ssS5XMEoznzpihEP0PLc4dCBYjbvSD7kxgDwZ+Aj8Q9PkbvE9 sIPP7ON0fz095HdThKjiVJe6vofq+n6b1NBc8XdrQvBmunwxD5nvtTW4vtN6VY7mUCmxsCie uoBJ9OlqmsVWQvifIYf40dJPZkk9YgGTzWLpXDSfLSplbY2LL9C9U0ptvjcDjefLTvqSFc7t w1sEhF0n/qpA2r0GpvkLRDmcSwVyPvmjFBGqUp/pNy8ZuPGQmHwFi2/14+xeSUDG2bwnsYJQ G2EdJCB6luQ57GEnTA/yKZSTKI8dDQa8Sd3zfXb19mOgSF0bBdXbuKhEpuP9wirslFe6fQ1t 5j5R0xi72MZ8ikMu1RQZKCyDbMwazlHiMIIHJjCCBg6gAwIBAgIDBNFnMA0GCSqGSIb3DQEB BQUAMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20g Q2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwHhcNMTIwODI5MjAxNTIz WhcNMTMwODMxMDg0MTExWjBnMRkwFwYDVQQNExBmQ0cxTUdlTUM1dkZVNVlKMSEwHwYDVQQD DBhmcmFuY2sucm91dGllckBheGVnZS5jb20xJzAlBgkqhkiG9w0BCQEWGGZyYW5jay5yb3V0 aWVyQGF4ZWdlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK5kIRjbP769 72PM00wgFczTGqmiU5dAY8XlSziUNq434SJZ3rFZoL0MY6hqVb/p5+u+u6TdhsVywJclPaZE v+FgGtk74JvlX6oeSWJTOiGLTrk0TRwy7Q+80kbneFdhL+yk/ZTxxcj15IEOeWMuyG/IyePq H4GtZMkCpsuCOL5bkq9g/H0JHyLSM0tWDbMuD4vKbSeBkzwiz4pSwuANCFMFeRr3d9iZQU0P VzyKvu/cEUcdoDcVGMuMxX6FwgqrS5c70v/RPM8FafOrqprYfIxVQwxK9IhPgqM9kT6riQo6 OM62d2a21Y6iAeWe/1rssTKn+Stj8jH706LmVJlEGtcCAwEAAaOCA7MwggOvMAkGA1UdEwQC MAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4E FgQUCfIkqGdMRvMTjM6TIpdcUPqdYW8wHwYDVR0jBBgwFoAUU3Ltkpzg2ssBXHx+ljVO8tS4 UYIwIwYDVR0RBBwwGoEYZnJhbmNrLnJvdXRpZXJAYXhlZ2UuY29tMIICIQYDVR0gBIICGDCC AhQwggIQBgsrBgEEAYG1NwECAjCCAf8wLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRz c2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t L2ludGVybWVkaWF0ZS5wZGYwgfcGCCsGAQUFBwICMIHqMCcWIFN0YXJ0Q29tIENlcnRpZmlj YXRpb24gQXV0aG9yaXR5MAMCAQEagb5UaGlzIGNlcnRpZmljYXRlIHdhcyBpc3N1ZWQgYWNj b3JkaW5nIHRvIHRoZSBDbGFzcyAxIFZhbGlkYXRpb24gcmVxdWlyZW1lbnRzIG9mIHRoZSBT dGFydENvbSBDQSBwb2xpY3ksIHJlbGlhbmNlIG9ubHkgZm9yIHRoZSBpbnRlbmRlZCBwdXJw b3NlIGluIGNvbXBsaWFuY2Ugb2YgdGhlIHJlbHlpbmcgcGFydHkgb2JsaWdhdGlvbnMuMIGc BggrBgEFBQcCAjCBjzAnFiBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTADAgEC GmRMaWFiaWxpdHkgYW5kIHdhcnJhbnRpZXMgYXJlIGxpbWl0ZWQhIFNlZSBzZWN0aW9uICJM ZWdhbCBhbmQgTGltaXRhdGlvbnMiIG9mIHRoZSBTdGFydENvbSBDQSBwb2xpY3kuMDYGA1Ud HwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuc3RhcnRzc2wuY29tL2NydHUxLWNybC5jcmwwgY4G CCsGAQUFBwEBBIGBMH8wOQYIKwYBBQUHMAGGLWh0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbS9z dWIvY2xhc3MxL2NsaWVudC9jYTBCBggrBgEFBQcwAoY2aHR0cDovL2FpYS5zdGFydHNzbC5j b20vY2VydHMvc3ViLmNsYXNzMS5jbGllbnQuY2EuY3J0MCMGA1UdEgQcMBqGGGh0dHA6Ly93 d3cuc3RhcnRzc2wuY29tLzANBgkqhkiG9w0BAQUFAAOCAQEAGSGlokCrFniLxjc6W072LqWy ISRKEqeC9u0pYSoQGVPAy1mNbu28ThrfAk8umOfFEDkzVH0TXH33TbsCViwsE/rCk6FC0U+Q AMOn1Ajjf/9z7w8+zCHgmbLyABtYrmBO6AhCD7YLKYPE1VXkJvgdcHCKzVLIkvdIyKSkRn+R lSorTXhg64lR8vQSX8C9EAY0T/hQyjFS9SDcEhsfOjkYdAiG7fVBft24Gj+3oDgk2479W47l phG1aHhkflrDeho0h6LnGxY0+PATPuUkvDsr/RFE2VviGFH9UDxjNJmikrmTibCvS4seQFOm ppHmJzqIcxcn5dqeBDVQYZmLhDkszjGCA90wggPZAgEBMIGUMIGMMQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlm aWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVy bWVkaWF0ZSBDbGllbnQgQ0ECAwTRZzAJBgUrDgMCGgUAoIICHTAYBgkqhkiG9w0BCQMxCwYJ KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMzA0MDQxODQ5MjRaMCMGCSqGSIb3DQEJBDEW BBTK8OMsSPAny70RPy8jwrBmZoDcQTBsBgkqhkiG9w0BCQ8xXzBdMAsGCWCGSAFlAwQBKjAL BglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFA MAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGlBgkrBgEEAYI3EAQxgZcwgZQwgYwxCzAJBgNV BAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRh bCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1h cnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQIDBNFnMIGnBgsqhkiG9w0BCRACCzGBl6CBlDCB jDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3Vy ZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNz IDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBAgME0WcwDQYJKoZIhvcNAQEBBQAE ggEAlgJgO8EMFSuDEdLfjV3IF+/hkc9cv7Vs4vKgP9S25ZUYgrtNri4mR25BzjnSbxGISV3c Ul9POiUBAQy3zDIyefcsG7RZ5aldg/JJKuKXZxAPAywMMKp8fpQqDsucclNb7bzXDYKZmz2Y kiY6T7TI7MmpcoYy7aQeBlXd1bNJvX5eIv7sbnbk2mB9+2NG79+LTgLYCni4H6usqy2IVrP4 qkhBRCtyCLWBfDEKLDy5Dl9Lt/Dsrq0XZBhM65YzGSCvpyAtNU6QBZgF7HDO3506Lc7Ql7lK hPzEcvML4WzMouR8fQaBEq6Nz1Wdync5ta6Jw2p/07BRXPnSCBKMkM+aOwAAAAAAAA== --------------ms010604070703020709010708--