Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tCGTV-00FBtx-Rd for pgsql-general@arkaria.postgresql.org; Sat, 16 Nov 2024 10:56:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tCGTS-00DscO-Db for pgsql-general@arkaria.postgresql.org; Sat, 16 Nov 2024 10:56:19 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tCGTR-00Dsc8-Ro for pgsql-general@lists.postgresql.org; Sat, 16 Nov 2024 10:56:18 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tCGTO-002Bf7-K2 for pgsql-general@lists.postgresql.org; Sat, 16 Nov 2024 10:56:17 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-4315baa51d8so12954875e9.0 for ; Sat, 16 Nov 2024 02:56:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731754572; x=1732359372; darn=lists.postgresql.org; h=mime-version:message-id:to:subject:from:date:from:to:cc:subject :date:message-id:reply-to; bh=olRU+1c2/1rIWxJz8whGY25Bcw6rJKVMkLmHUQ9s7N4=; b=UF/k0sSioGpG3UChSigC4Esm0Vkk5eh6QlfDPZKuADxiIpwEmhz43+mF/vkx5Bb3Xt TuGkR8TmykQHvlIjJM0BvzFEayc3KBJW9ri0q8rVhh8Kzi6qXotMEZ1zIdwDmEyqZ+W/ Elu/6n4mCOhKmtLvT5Z8RcwCUvcoX3LxGgDR+RItlBg8Hw1nMPFwyGcZBwcf4FTpIU2X l3A0OWUt7HR23OExT4pcmDKOwP9uEYM1zV5pKSeLDzQowToVWLo8Dv10q7BoTiWWo8q2 Wnj1uB6WFU86VtBT7+65bLqc2w7E8IRYaN8dz98eL9Its+tBM0g6E5F0POFVx/AVC3mJ 7VNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731754572; x=1732359372; h=mime-version:message-id:to:subject:from:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=olRU+1c2/1rIWxJz8whGY25Bcw6rJKVMkLmHUQ9s7N4=; b=Y389a7szYFreeVZ0yXa+uNiEppx1FUYAO8/1oWFBbW0rxjp4aFr0IjJvgWQC6oTyAm LE2LwmA2jVjRN7oXjfH76FWkGIfjCszS2MfQKSBpW4f9t6AMz4mq3sV15z9wUEi6OGlv ZL27sGjRLfXUErukjIWem3IXsi6UPrb2KsMT7ESZ3yXnxRWCtHOgm4IFtMRmcQzsxNyz CSgF2jWioY3yWKHTFnzI/Qxouvc2pWRvXIwsKOlmeHcFblrn26aGSpPNfDIiyV0ldUjd /6ZlBs77jOQR3CZ1bRptKwN+UXafyLtKpm5AdDRMYF3zyOXTi2tzmWyi7odusgKYa+ec EeuA== X-Gm-Message-State: AOJu0YwOlasoQIMG3VzJEtkiMEggz+ZNWduxXsn1VuLL7AGX44Nb26Ln vrtoGyolYvdwnK3royLW5dRxyKcocTMFRDYU6iEKkt0a1HtB25KsybnNcQ== X-Google-Smtp-Source: AGHT+IEID8jH+kliCNzBYyA0O7MSwtnRODBetdgXqGtE3/gQewDIoL6C2xT+3pNDkGmwWOXBLImgvg== X-Received: by 2002:a5d:5847:0:b0:381:f5c3:1d02 with SMTP id ffacd0b85a97d-38225a91e8bmr5792730f8f.44.1731754571989; Sat, 16 Nov 2024 02:56:11 -0800 (PST) Received: from ?IPv6:2a02:a31d:a1c4:4f80:3200:6a35:a179:eb94? ([2a02:a31d:a1c4:4f80:3200:6a35:a179:eb94]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3821adad9d9sm6995922f8f.43.2024.11.16.02.56.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 Nov 2024 02:56:11 -0800 (PST) Date: Sat, 16 Nov 2024 11:55:35 +0100 From: Max Ulidtko Subject: Getting error 42P02, despite query parameter being sent To: pgsql-general@lists.postgresql.org Message-Id: X-Mailer: geary/44.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-YUNuVVNIzo64+NnZQaQr" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-YUNuVVNIzo64+NnZQaQr Content-Type: multipart/alternative; boundary="=-fndHcmB0wdM6wKOeb+mh" --=-fndHcmB0wdM6wKOeb+mh Content-Type: text/plain; charset=windows-1251; format=flowed Content-Transfer-Encoding: quoted-printable Greetings, group! I'm trying to understand a low-level issue. Am evaluating a new client=20 library for Postgres; it's not particularly popular / mainstream, and=20 as I've understood so far, sports an independent implementation of PG=20 binary protocol. The issue I'm hitting with it is exemplified by server logs like this: 2024-11-16 10:28:19.927 UTC [46] LOG: statement: SET client_encoding =3D=20 'UTF8';SET client_min_messages TO WARNING; 2024-11-16 10:28:19.928 UTC [46] LOG: execute : CREATE VIEW=20 public.foobar (alg, hash) AS VALUES ('md5', $1); 2024-11-16 10:28:19.928 UTC [46] DETAIL: parameters: $1 =3D=20 'test-param-value' 2024-11-16 10:28:19.928 UTC [46] ERROR: there is no parameter $1 at=20 character 57 Of course, I /am/ passing a value for parameter $1; and I can trace=20 that the client lib sends it out on the wire as expected. (Attaching=20 packet captures.) Heck, even the PG server itself says, DETAIL: parameters: $1 =3D=20 'test-param-value' =97 so it sees the parameter! But then, immediately=20 unsees it. Am I being hit by a PG bug? Is this a known issue? I'd retested with master version of that client library, and against 6=20 latest major versions of PostgreSQL server (12 throughout to 17). No=20 difference across versions spotted; the result is consistently error=20 42P02. Is the client library doing something wrong? How can the server claim=20 there's no parameter $1 immediately after logging its value it has=20 received? I did minify a 100-line SSCCE that reproduces the issue and can be=20 shared. Any advice, or pointers on what to check next besides delving into PG=20 source, I'd greatly appreciate. Thanks in advance. Max --=-fndHcmB0wdM6wKOeb+mh Content-Type: text/html; charset=windows-1251 Content-Transfer-Encoding: quoted-printable
Greetings, group!

I'= m trying to understand a low-level issue. Am evaluating a new client librar= y for Postgres; it's not particularly popular / mainstream, and as I've und= erstood so far, sports an independent implementation of PG binary protocol.=

The issue I'm hitting with it is exemplified by s= erver logs like this:

202= 4-11-16 10:28:19.927 UTC [46] LOG: statement: SET client_encoding =3D 'UTF= 8';SET client_min_messages TO WARNING;
2024-11-16 10:28:19.928 UTC [46] LOG: execute <unnamed>: CREAT= E VIEW public.foobar (alg, hash) AS VALUES ('md5', $1);
2024-11-16 10:28:19.928 UTC [46] DETAIL: parameters= : $1 =3D 'test-param-value'
2024-= 11-16 10:28:19.928 UTC [46] ERROR: there is no parameter $1 at character 5= 7

Of course, I am passing a value fo= r parameter $1; and I can trace that the cl= ient lib sends it out on the wire as expected. (Attaching packet captures.)=

Heck, even the PG server itself says, DETAIL: parameters: $1 =3D 'test-param-va= lue' =97 so it sees the parameter! But then, immediately unsees= it.

Am I being hit by a PG bug? Is this a known i= ssue?

I'd retested with master version of that cli= ent library, and against 6 latest major versions of PostgreSQL server (12 t= hroughout to 17). No difference across versions spotted; the result is cons= istently error 42P02.

Is the client library doing = something wrong? How can the server claim there's no parameter $1 immediate= ly after logging its value it has received?

I did = minify a 100-line SSCCE that reproduces the issue and can be shared.
<= div>
Any advice, or pointers on what to check next besides de= lving into PG source, I'd greatly appreciate. Thanks in advance.
=
Max

--=-fndHcmB0wdM6wKOeb+mh-- --=-YUNuVVNIzo64+NnZQaQr Content-Type: multipart/mixed; boundary="=-pUFfiwPgwDtQSojGKx+1" --=-pUFfiwPgwDtQSojGKx+1 Content-Type: application/vnd.tcpdump.pcap Content-Disposition: attachment; filename=query42P02-with-prepstatement-on.pcap Content-Transfer-Encoding: base64 1MOyoQIABAAAAAAAAAAAAAAABAABAAAAEnM4Z7fTCQBKAAAASgAAAAAAAAAAAAAAAAAAAAgARQAA PFMhQABABumYfwAAAX8AAAGn2BU4nn3J0wAAAACgAv/X/jAAAAIE/9cEAggKgPex/QAAAAABAwMH EnM4Z8TTCQBKAAAASgAAAAAAAAAAAAAAAAAAAAgARQAAPAAAQABABjy6fwAAAX8AAAEVOKfYLaIr A559ydSgEv/L/jAAAAIE/9cEAggKgPex/YD3sf0BAwMHEnM4Z9nTCQBCAAAAQgAAAAAAAAAAAAAA AAAAAAgARQAANFMiQABABumffwAAAX8AAAGn2BU4nn3J1C2iKwSAEAIA/igAAAEBCAqA97H+gPex /RJzOGcK1QkASgAAAEoAAAAAAAAAAAAAAAAAAAAIAEUAADxTI0AAQAbpln8AAAF/AAABp9gVOJ59 ydQtoisEgBgCAP4wAAABAQgKgPex/oD3sf0AAAAIBNIWLxJzOGcS1QkAQgAAAEIAAAAAAAAAAAAA AAAAAAAIAEUAADTpnkAAQAZTI38AAAF/AAABFTin2C2iKwSefcncgBACAP4oAAABAQgKgPex/oD3 sf4Sczhn09cJAEMAAABDAAAAAAAAAAAAAAAAAAAACABFAAA16Z9AAEAGUyF/AAABfwAAARU4p9gt oisEnn3J3IAYAgD+KQAAAQEICoD3sf6A97H+ThJzOGfi1wkAQgAAAEIAAAAAAAAAAAAAAAAAAAAI AEUAADRTJEAAQAbpnX8AAAF/AAABp9gVOJ59ydwtoisFgBACAP4oAAABAQgKgPex/4D3sf4Sczhn 8dcJAGwAAABsAAAAAAAAAAAAAAAAAAAACABFAABeUyVAAEAG6XJ/AAABfwAAAafYFTiefcncLaIr BYAYAgD+UgAAAQEICoD3sf+A97H+AAAAKgADAAB1c2VyAHBvc3RncmVzAGRhdGFiYXNlAGN0cF9s b2NhbAAAEnM4Z4bcCQDcAQAA3AEAAAAAAAAAAAAAAAAAAAgARQABzumgQABABlGHfwAAAX8AAAEV OKfYLaIrBZ59ygaAGAIA/8IAAAEBCAqA97IAgPex/1IAAAAIAAAAAFMAAAAWYXBwbGljYXRpb25f bmFtZQAAUwAAABljbGllbnRfZW5jb2RpbmcAVVRGOABTAAAAF0RhdGVTdHlsZQBJU08sIE1EWQBT AAAAJmRlZmF1bHRfdHJhbnNhY3Rpb25fcmVhZF9vbmx5AG9mZgBTAAAAF2luX2hvdF9zdGFuZGJ5 AG9mZgBTAAAAGWludGVnZXJfZGF0ZXRpbWVzAG9uAFMAAAAbSW50ZXJ2YWxTdHlsZQBwb3N0Z3Jl cwBTAAAAFGlzX3N1cGVydXNlcgBvbgBTAAAAGXNlcnZlcl9lbmNvZGluZwBVVEY4AFMAAAAyc2Vy dmVyX3ZlcnNpb24AMTQuNSAoRGViaWFuIDE0LjUtMS5wZ2RnMTEwKzEpAFMAAAAjc2Vzc2lvbl9h dXRob3JpemF0aW9uAHBvc3RncmVzAFMAAAAjc3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmdzAG9u AFMAAAAVVGltZVpvbmUARXRjL1VUQwBLAAAADAAAACqkE2zCWgAAAAVJEnM4Z8bcCQCIAAAAiAAA AAAAAAAAAAAAAAAAAAgARQAAelMmQABABulVfwAAAX8AAAGn2BU4nn3KBi2iLJ+AGAIA/m4AAAEB CAqA97IAgPeyAFEAAABFU0VUIGNsaWVudF9lbmNvZGluZyA9ICdVVEY4JztTRVQgY2xpZW50X21p bl9tZXNzYWdlcyBUTyBXQVJOSU5HOwASczhnPd0JAFoAAABaAAAAAAAAAAAAAAAAAAAACABFAABM 6aFAAEAGUwh/AAABfwAAARU4p9gtoiyfnn3KTIAYAgD+QAAAAQEICoD3sgCA97IAQwAAAAhTRVQA QwAAAAhTRVQAWgAAAAVJEnM4Z4/dCQCRAAAAkQAAAAAAAAAAAAAAAAAAAAgARQAAg1MnQABABulL fwAAAX8AAAGn2BU4nn3KTC2iLLeAGAIA/ncAAAEBCAqA97IAgPeyAFAAAABJMABDUkVBVEUgVklF VyBwdWJsaWMuZm9vYmFyIChhbGcsIGhhc2gpIEFTIFZBTFVFUyAoJ21kNScsICQxKTsAAAEAAAAZ UwAAAAQSczhn+N0JAE0AAABNAAAAAAAAAAAAAAAAAAAACABFAAA/6aJAAEAGUxR/AAABfwAAARU4 p9gtoiy3nn3Km4AYAgD+MwAAAQEICoD3sgCA97IAMQAAAARaAAAABUkSczhnMN4JAH4AAAB+AAAA AAAAAAAAAAAAAAAACABFAABwUyhAAEAG6V1/AAABfwAAAafYFTiefcqbLaIswoAYAgD+ZAAAAQEI CoD3sgCA97IAQgAAACUAMAAAAQABAAEAAAAQdGVzdC1wYXJhbS12YWx1ZQABAAFEAAAABlAARQAA AAkAAAAAAFMAAAAEEnM4Z5DeCQCrAAAAqwAAAAAAAAAAAAAAAAAAAAgARQAAnemjQABABlK1fwAA AX8AAAEVOKfYLaIswp59yteAGAIA/pEAAAEBCAqA97IAgPeyADIAAAAEbgAAAARFAAAAXlNFUlJP UgBWRVJST1IAQzQyUDAyAE10aGVyZSBpcyBubyBwYXJhbWV0ZXIgJDEAUDU3AEZwYXJzZV9leHBy LmMATDg0MgBSdHJhbnNmb3JtUGFyYW1SZWYAABJzOGep3gkASAAAAEgAAAAAAAAAAAAAAAAAAAAI AEUAADrppEAAQAZTF38AAAF/AAABFTin2C2iLSuefcrXgBgCAP4uAAABAQgKgPeyAID3sgBaAAAA BUkSczhntd4JAEIAAABCAAAAAAAAAAAAAAAAAAAACABFAAA0UylAAEAG6Zh/AAABfwAAAafYFTie fcrXLaItMYAQAgD+KAAAAQEICoD3sgCA97IAEnM4Z8LeCQBHAAAARwAAAAAAAAAAAAAAAAAAAAgA RQAAOVMqQABABumSfwAAAX8AAAGn2BU4nn3K1y2iLTGAGAIA/i0AAAEBCAqA97IAgPeyAFgAAAAE EnM4Z8zeCQBCAAAAQgAAAAAAAAAAAAAAAAAAAAgARQAANFMrQABABumWfwAAAX8AAAGn2BU4nn3K 3C2iLTGAEQIA/igAAAEBCAqA97IAgPeyABJzOGfa4wkAQgAAAEIAAAAAAAAAAAAAAAAAAAAIAEUA ADTppUAAQAZTHH8AAAF/AAABFTin2C2iLTGefcrdgBECAP4oAAABAQgKgPeyAoD3sgASczhn6uMJ AEIAAABCAAAAAAAAAAAAAAAAAAAACABFAAA0UyxAAEAG6ZV/AAABfwAAAafYFTiefcrdLaItMoAQ AgD+KAAAAQEICoD3sgKA97IC --=-pUFfiwPgwDtQSojGKx+1 Content-Type: application/vnd.tcpdump.pcap Content-Disposition: attachment; filename=query42P02-with-prepstatement-off.pcap Content-Transfer-Encoding: base64 1MOyoQIABAAAAAAAAAAAAAAABAABAAAAw3M4Z1sYDgBKAAAASgAAAAAAAAAAAAAAAAAAAAgARQAA PIA9QABABrx8fwAAAX8AAAHFTBU47c+onQAAAACgAv/X/jAAAAIE/9cEAggKgPpmfQAAAAABAwMH w3M4Z3AYDgBKAAAASgAAAAAAAAAAAAAAAAAAAAgARQAAPAAAQABABjy6fwAAAX8AAAEVOMVMog3m DO3PqJ6gEv/L/jAAAAIE/9cEAggKgPpmfYD6Zn0BAwMHw3M4Z4AYDgBCAAAAQgAAAAAAAAAAAAAA AAAAAAgARQAANIA+QABABryDfwAAAX8AAAHFTBU47c+onqIN5g2AEAIA/igAAAEBCAqA+mZ9gPpm fcNzOGcvGg4ASgAAAEoAAAAAAAAAAAAAAAAAAAAIAEUAADyAP0AAQAa8en8AAAF/AAABxUwVOO3P qJ6iDeYNgBgCAP4wAAABAQgKgPpmfoD6Zn0AAAAIBNIWL8NzOGc5Gg4AQgAAAEIAAAAAAAAAAAAA AAAAAAAIAEUAADSAUUAAQAa8cH8AAAF/AAABFTjFTKIN5g3tz6imgBACAP4oAAABAQgKgPpmfoD6 Zn7DczhnTh4OAEMAAABDAAAAAAAAAAAAAAAAAAAACABFAAA1gFJAAEAGvG5/AAABfwAAARU4xUyi DeYN7c+opoAYAgD+KQAAAQEICoD6Zn+A+mZ+TsNzOGdfHg4AQgAAAEIAAAAAAAAAAAAAAAAAAAAI AEUAADSAQEAAQAa8gX8AAAF/AAABxUwVOO3PqKaiDeYOgBACAP4oAAABAQgKgPpmf4D6Zn/Dczhn dh4OAGwAAABsAAAAAAAAAAAAAAAAAAAACABFAABegEFAAEAGvFZ/AAABfwAAAcVMFTjtz6imog3m DoAYAgD+UgAAAQEICoD6Zn+A+mZ/AAAAKgADAAB1c2VyAHBvc3RncmVzAGRhdGFiYXNlAGN0cF9s b2NhbAAAw3M4Z5MmDgDcAQAA3AEAAAAAAAAAAAAAAAAAAAgARQABzoBTQABABrrUfwAAAX8AAAEV OMVMog3mDu3PqNCAGAIA/8IAAAEBCAqA+maBgPpmf1IAAAAIAAAAAFMAAAAWYXBwbGljYXRpb25f bmFtZQAAUwAAABljbGllbnRfZW5jb2RpbmcAVVRGOABTAAAAF0RhdGVTdHlsZQBJU08sIE1EWQBT AAAAJmRlZmF1bHRfdHJhbnNhY3Rpb25fcmVhZF9vbmx5AG9mZgBTAAAAF2luX2hvdF9zdGFuZGJ5 AG9mZgBTAAAAGWludGVnZXJfZGF0ZXRpbWVzAG9uAFMAAAAbSW50ZXJ2YWxTdHlsZQBwb3N0Z3Jl cwBTAAAAFGlzX3N1cGVydXNlcgBvbgBTAAAAGXNlcnZlcl9lbmNvZGluZwBVVEY4AFMAAAAyc2Vy dmVyX3ZlcnNpb24AMTQuNSAoRGViaWFuIDE0LjUtMS5wZ2RnMTEwKzEpAFMAAAAjc2Vzc2lvbl9h dXRob3JpemF0aW9uAHBvc3RncmVzAFMAAAAjc3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmdzAG9u AFMAAAAVVGltZVpvbmUARXRjL1VUQwBLAAAADAAAAC6CnJt8WgAAAAVJw3M4ZxonDgCIAAAAiAAA AAAAAAAAAAAAAAAAAAgARQAAeoBCQABABrw5fwAAAX8AAAHFTBU47c+o0KIN56iAGAIA/m4AAAEB CAqA+maBgPpmgVEAAABFU0VUIGNsaWVudF9lbmNvZGluZyA9ICdVVEY4JztTRVQgY2xpZW50X21p bl9tZXNzYWdlcyBUTyBXQVJOSU5HOwDDczhn7ScOAFoAAABaAAAAAAAAAAAAAAAAAAAACABFAABM gFRAAEAGvFV/AAABfwAAARU4xUyiDeeo7c+pFoAYAgD+QAAAAQEICoD6ZoGA+maBQwAAAAhTRVQA QwAAAAhTRVQAWgAAAAVJw3M4Z5YoDgDGAAAAxgAAAAAAAAAAAAAAAAAAAAgARQAAuIBDQABABrv6 fwAAAX8AAAHFTBU47c+pFqIN58CAGAIA/qwAAAEBCAqA+maBgPpmgVAAAABIAENSRUFURSBWSUVX IHB1YmxpYy5mb29iYXIgKGFsZywgaGFzaCkgQVMgVkFMVUVTICgnbWQ1JywgJDEpOwAAAQAAABlC AAAAJAAAAAEAAQABAAAAEHRlc3QtcGFyYW0tdmFsdWUAAQABRAAAAAZQAEUAAAAJAAAAAABTAAAA BMNzOGe1KQ4AsAAAALAAAAAAAAAAAAAAAAAAAAAIAEUAAKKAVUAAQAa7/n8AAAF/AAABFTjFTKIN 58Dtz6magBgCAP6WAAABAQgKgPpmgoD6ZoExAAAABDIAAAAEbgAAAARFAAAAXlNFUlJPUgBWRVJS T1IAQzQyUDAyAE10aGVyZSBpcyBubyBwYXJhbWV0ZXIgJDEAUDU3AEZwYXJzZV9leHByLmMATDg0 MgBSdHJhbnNmb3JtUGFyYW1SZWYAAMNzOGfeKQ4ASAAAAEgAAAAAAAAAAAAAAAAAAAAIAEUAADqA VkAAQAa8ZX8AAAF/AAABFTjFTKIN6C7tz6magBgCAP4uAAABAQgKgPpmgoD6ZoFaAAAABUnDczhn +CkOAEIAAABCAAAAAAAAAAAAAAAAAAAACABFAAA0gERAAEAGvH1/AAABfwAAAcVMFTjtz6maog3o NIAQAgD+KAAAAQEICoD6ZoKA+maCw3M4ZwoqDgBHAAAARwAAAAAAAAAAAAAAAAAAAAgARQAAOYBF QABABrx3fwAAAX8AAAHFTBU47c+pmqIN6DSAGAIA/i0AAAEBCAqA+maCgPpmglgAAAAEw3M4Zxcq DgBCAAAAQgAAAAAAAAAAAAAAAAAAAAgARQAANIBGQABABrx7fwAAAX8AAAHFTBU47c+pn6IN6DSA EQIA/igAAAEBCAqA+maCgPpmgsNzOGcEMg4AQgAAAEIAAAAAAAAAAAAAAAAAAAAIAEUAADSAV0AA QAa8an8AAAF/AAABFTjFTKIN6DTtz6mggBECAP4oAAABAQgKgPpmhID6ZoLDczhnIDIOAEIAAABC AAAAAAAAAAAAAAAAAAAACABFAAA0gEdAAEAGvHp/AAABfwAAAcVMFTjtz6mgog3oNYAQAgD+KAAA AQEICoD6ZoSA+maE --=-pUFfiwPgwDtQSojGKx+1-- --=-YUNuVVNIzo64+NnZQaQr--