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.96) (envelope-from ) id 1wAoUq-000NPi-1S for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 12:28:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAoUo-005hou-1h for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 12:28:31 +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.96) (envelope-from ) id 1wAoUo-005hom-0I for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 12:28:31 +0000 Received: from mail-oo1-xc30.google.com ([2607:f8b0:4864:20::c30]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAoUm-00000000AEY-3WGY for pgsql-hackers@postgresql.org; Thu, 09 Apr 2026 12:28:30 +0000 Received: by mail-oo1-xc30.google.com with SMTP id 006d021491bc7-688a8e5fe5eso459189eaf.1 for ; Thu, 09 Apr 2026 05:28:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775737708; cv=none; d=google.com; s=arc-20240605; b=GJNoqaRb79/t13/CwIiIfkVtDO1zBV54ZgLtqKMuNr20fLQdg/TlcA+t3HA4Esft9p 2RlSorEFm7Z77KGgrJzcYOGf7MavgyTf8N8lr3ogNt0uCLlHMI9TxH6pXrxvmKHXRskl dZqosSO24D/OhrxLA5Y2H3nVZSo/FPbWoql+X3wfVkmslo7urIS0WF5DlDshsCTr/FM0 SRhbXQK4nE0UT6bLASObwYPpp6vBWTD/0G19WjGte3bmmFdU3AhmqD+zglIRFaEkNRyi mYICupqpnDW7ybHY75SlW8drPNuyDipevLfB3uXA8rARTqz8xX5dqgqoFkCY/EXI2lJK q+5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=8hz8QBZJyt3JZwxP1XvAELK8G+t+Sn68iw1LPzwR1hg=; fh=1Q4se2+ZtKH+pntiEB2gbVzP6WI+afqX8lVApHRe3rQ=; b=NnRnxyzVwFgO2itKQHKYGi//dZNz6g6PHz/VvNSc+diPm1YrfUqa9OjlpAiWqZzru0 oDok7KBma72KPgB+2d6kOK+wYsTHN/B4RyKVqQAHF6q3JMcl2SsruzQ8z+ty68yIL90M 20FkfwnjFKug3OkIGbBIMKQZA83Rxu7RBPoTWet2OjNpGPA6wZZuLgyuUdIxLD346jGs aBjEevsqNqv2E9i12+JL6Y/A7py3in7KoYvh6GFhU8jdSgNPGC0FHkCE5l5P65aM+y87 9BF/4gcrGmfNvcLihZT/7S1yDrsX1DhBreOQiSEVpVpLmCBOlEHFeeqniixZrOMS4s4e Bd2g==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775737708; x=1776342508; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=8hz8QBZJyt3JZwxP1XvAELK8G+t+Sn68iw1LPzwR1hg=; b=N2EoAZnh8qfRib3Jyphk2V2c+f7qqgLKviKNmQgA0AGj0Y39A9H2zQJkqibe74llm8 MuKqOZ9Nw6KdrBpqS93QpCI8Hmbo+Wv/lJLEMv4I4dSDQk7ZtDNW9dHs2UiXdBI8I5Pn 81cIGhU0BlRJpynjVL7eIA0TycB20AxPRbP+WnsiCCe/KXPcc1ryrElbx0439CvjxVkz BfzF6X37qNgmYy/vwhbCzLSGfQPP6q6ckKa9N4eD6Mfv5GqWrEWNI7lIHZ28ODC86UBk qUBKDI/eDgV6dvCifCsRxdwyK1vr8u4ByGiJJVjlR+wfm5gn+9Bq3+XcG4/kRtMuREv/ ieWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775737708; x=1776342508; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=8hz8QBZJyt3JZwxP1XvAELK8G+t+Sn68iw1LPzwR1hg=; b=tRQFgzn/6+EtGfT6IETTL+vSLcNKIHKopxkD3W/Hu8NxeUueb7tZYWfJ46ixn4uTAa MRryxfdfEXFxRCCVrk5+nxz/M8yNofs/6/mdXYhsJQNqx+5uV1EJXgeMGQk4zYJZLz2B glm5cuwIUzbM8KS0BKTrqLj+eCimwaOeSqM1RUPJetVGliSM0UlnkVtX9180jgTaHQum whVnq9J07nh5v4UEjFk6Fjea1QRnxGBDO5AendqAVWGdGD2OgxM0nETfq4blITlUyaAJ 4SU/EZtaSOI7/s0EsoddqPzykxlHdQsgAzSjjtidrrvx3Ps+gjeXza9h4Y95VMYWoRCD GBxg== X-Forwarded-Encrypted: i=1; AJvYcCXGDDJ2EyVwCLJlxnVo1dTp6eaJS90hlUSAIv1zOQYFXpnAQ/sQ1j84Jc9/QFwd5FdsuqjHsf530fJKHE+v@postgresql.org X-Gm-Message-State: AOJu0YyhyIbz66M74nxVFiyM+y3rJj+6+ZwaFsF9B0AmlzvjSAogNWAt F/uyxj+PcdF/TZR9i2JfVvOwAVuAdCcUiaiplBgAM5kSTV9NFOg99lrdU9FhieK8uhnbElRL22Z efcFFsd1ZQS43JmTGSzB0A77g2X5hBtc= X-Gm-Gg: AeBDies67aQHqLYyfz5mGf9sCpqeRkAlYL92WSvvi7MIdhZWD/fmKs5aJE9S1zAfIbk QAw33I22o+EztmY5RH2YZN8aqlqA6dlqudwx5Qgyixsuvaas56YinkQRIMuSAeQHbaKPV0tu8gc u7M31IoJ3mXxnANa75QBgUkjYv7IWoDNYkKHdvAag0jRdELJRgIDjBwgn7fSQkZH3Kxc0D1s/Mt YcAYK/D6XXFgHGSIMt1GAFfW9//7Z8m2EjXrWy/u1EsOLqfMLDg/Bn4Iuif/cGNxksEWylN/tN/ qDg935jUpPGousOx8QhxdY/VC3rNWTMpGlJOYUK/yBmVfTvtnlhY6p8OmsO4KPaPtW8pzZa4/5M jJTBRblVeavSc3ycFcazF8PGCKNWdxcQRVqCf8Gg= X-Received: by 2002:a05:6820:f07:b0:680:322:4f36 with SMTP id 006d021491bc7-6821e261e79mr13892944eaf.25.1775737708576; Thu, 09 Apr 2026 05:28:28 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alexander Korotkov Date: Thu, 9 Apr 2026 15:28:16 +0300 X-Gm-Features: AQROBzA9Z5yEBXUZ2BjvtRTG1VxWrI0ARmif7y9n0tPUGhZU6WFhL2mX6IHlXTs Message-ID: Subject: Re: Bug: WAIT FOR LSN crashes with assertion failure inside PL/pgSQL DO blocks and procedures To: SATYANARAYANA NARLAPURAM Cc: PostgreSQL Hackers , PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000055a455064f062776" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000055a455064f062776 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 9, 2026 at 10:27=E2=80=AFAM SATYANARAYANA NARLAPURAM wrote: > On Wed, Apr 8, 2026 at 11:00=E2=80=AFPM Alexander Korotkov wrote: >> On Thu, Apr 9, 2026 at 5:03=E2=80=AFAM SATYANARAYANA NARLAPURAM >> wrote: >> > An assertion failure (server crash in assert-enabled builds) occurs wh= en WAIT FOR LSN ... INTO is used inside PL/pgSQL DO blocks or within void p= rocedures. >> > >> > Repro: >> > >> > -- Run this on a standby >> > >> > CREATE PROCEDURE test_wait() >> > LANGUAGE plpgsql AS $$ >> > DECLARE >> > result text; >> > BEGIN >> > WAIT FOR LSN '0/1234' INTO result; >> > RAISE NOTICE '%', result; >> > END; >> > $$; >> > CALL test_wait(); >> > >> > >> > The WAIT FOR itself succeeds, but the very next PL/pgSQL statement tha= t requires a snapshot crashes the backend with: >> > >> > TRAP: failed Assert("portal->portalSnapshot =3D=3D NULL"), >> > File: "pquery.c", Line: 1776 >> > >> > Attached patches for both the test case and a potential fix. Please re= view. >> >> Thank you for reporting. But I doubt the fix is correct. Even that >> this particular might work OK, I don't think it's safe to release >> snapshots belonging to functions/procedures: it might affect them. I >> tend to think we must forbid wrapping WAIT FOR LSN with >> functions/procedures. I'll explore more on this today. > > > Agreed, attached a v2 patch with your suggestion on preventing it running > from procedures. Thank you. I've slightly revised your patch. I'm going to push it if no objections. ------ Regards, Alexander Korotkov Supabase --00000000000055a455064f062776 Content-Type: application/octet-stream; name="v3-0001-Explicitly-forbid-WAIT-FOR-inside-functions-and-p.patch" Content-Disposition: attachment; filename="v3-0001-Explicitly-forbid-WAIT-FOR-inside-functions-and-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnrgd1ih0 RnJvbSAwZDNiM2ExMjM1N2Y2NWRjNmZmMGFmNTRhYWJkYWY4OGRiY2QyYTliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogVGh1LCA5IEFwciAyMDI2IDE1OjAyOjMyICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2M10gRXhwbGljaXRseSBmb3JiaWQgV0FJVCBGT1IgaW5zaWRlIGZ1bmN0aW9ucyBhbmQg cHJvY2VkdXJlcwoKUHJldmlvdXNseSB3ZSB3ZXJlIHJlbHlpbmcgb24gc25hcHNob3QtYmFzZWQg Y2hlY2sgdG8gZGV0ZWN0IHN1Y2ggY2FzZXMuCkhvd2V2ZXIsIGl0IGFwcGVhcnMgdGhhdCB3aGVu IFdBSVQgRk9SIGlzIHdyYXBwZWQgaW50byBhIHN0b3JlZCBwcm9jZWR1cmUKaXQgY291bGQgcGFz cyB0aGlzIGNoZWNrIGNhdXNpbmcgYW4gZXJyb3IgZWxzZXdoZXJlLiAgVGhpcyBjb21taXQgaW1w bG1lbnRzCmFuIGV4cGxpY2l0IGlzVG9wTGV2ZWwgY2hlY2sgdG8gcmVqZWN0IFdBSVQgRk9SIHdo ZW4gY2FsbGVkIGZyb20gd2l0aGluCmEgZnVuY3Rpb24gb3IgcHJvY2VkdXJlLiAgVGhlIGlzVG9w TGV2ZWwgY2hlY2sgY2F0Y2hlcyB0aGlzIGNhc2UgZWFybHkgd2l0aAphIGNsZWFyIGVycm9yIG1l c3NhZ2UsIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIHVzZWQgYnkgb3RoZXIgdXRpbGl0eSBjb21tYW5k cwpsaWtlIFZBQ1VVTSBhbmQgUkVJTkRFWC4gIFRoZSBzbmFwc2hvdCBjaGVjayBpcyByZXRhaW5l ZCBmb3IgdGhlIHJlbWFpbmluZwpjYXNlOiB0cmFuc2FjdGlvbnMgd2l0aCBpc29sYXRpb24gbGV2 ZWwgaGlnaGVyIHRoYW4gUkVBRCBDT01NSVRURUQuCgpBbHNvIGFkZCBhIHRlc3QgZm9yIFdBSVQg Rk9SIExTTiB3cmFwcGVkIGluIGEgcHJvY2VkdXJlLCBjb21wbGVtZW50aW5nCnRoZSBleGlzdGlu ZyB0ZXN0IHRoYXQgdXNlcyBhIGZ1bmN0aW9uIHdyYXBwZXIuCgpSZXBvcnRlZC1ieTogU2F0eWFu YXJheWFuYSBOYXJsYXB1cmFtIDxzYXR5YW5hcmxhcHVyYW1AZ21haWwuY29tPgpEaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSGclMkJRRGNOLW4zTlVxZ1J0aiUzREJRYjlmRlFtSDgt RGVFUk9DciUzRFBEYndfQkJSS09ZQSU0MG1haWwuZ21haWwuY29tCkF1dGhvcjogU2F0eWFuYXJh eWFuYSBOYXJsYXB1cmFtIDxzYXR5YW5hcmxhcHVyYW1AZ21haWwuY29tPgpSZXZpZXdlZC1ieTog QWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy93YWl0LmMgICAgICAgICAgICAgfCAxNSArKysrKysrKysrKysrLS0KIHNyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICAgICB8ICAzICsrLQogc3JjL2luY2x1ZGUv Y29tbWFuZHMvd2FpdC5oICAgICAgICAgICAgIHwgIDMgKystCiBzcmMvdGVzdC9yZWNvdmVyeS90 LzA0OV93YWl0X2Zvcl9sc24ucGwgfCAyMSArKysrKysrKysrKysrKysrKysrLS0KIDQgZmlsZXMg Y2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMK aW5kZXggODVmY2Q0NjNiNGMuLmVjMTMyZTEyNWE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy93YWl0LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCkBAIC0zMSw3 ICszMSw4IEBACiAKIAogdm9pZAotRXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2Fp dFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKK0V4ZWNXYWl0U3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIFdhaXRTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwsCisJCQkgRGVzdFJlY2Vp dmVyICpkZXN0KQogewogCVhMb2dSZWNQdHIJbHNuOwogCWludDY0CQl0aW1lb3V0ID0gMDsKQEAg LTEzNSw2ICsxMzYsMTYgQEAgRXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2FpdFN0 bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKIAkJfQogCX0KIAorCS8qCisJICogV0FJVCBG T1IgbXVzdCBub3QgcnVuIGluc2lkZSBhIGZ1bmN0aW9uIG9yIHByb2NlZHVyZS4gRm9yYmlkIHRo aXMgY2FzZQorCSAqIHVwZnJvbnQuCisJICovCisJaWYgKCFpc1RvcExldmVsKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkgZXJybXNnKCIlcyBjYW5ub3QgYmUgZXhlY3V0ZWQgZnJvbSBhIGZ1bmN0aW9uIG9yIHByb2Nl ZHVyZSIsCisJCQkJCQkiV0FJVCBGT1IiKSkpOworCiAJLyoKIAkgKiBXZSBhcmUgZ29pbmcgdG8g d2FpdCBmb3IgdGhlIExTTi4gIFdlIHNob3VsZCBmaXJzdCBjYXJlIHRoYXQgd2UgZG9uJ3QKIAkg KiBob2xkIGEgc25hcHNob3QgYW5kIGNvcnJlc3BvbmRpbmdseSBvdXIgTXlQcm9jLT54bWluIGlz IGludmFsaWQuCkBAIC0xNjEsNyArMTcyLDcgQEAgRXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAogCQkJCWVycm1zZygiV0FJVCBGT1IgbXVzdCBiZSBjYWxsZWQgd2l0aG91dCBhbiBhY3RpdmUg b3IgcmVnaXN0ZXJlZCBzbmFwc2hvdCIpLAotCQkJCWVycmRldGFpbCgiV0FJVCBGT1IgY2Fubm90 IGJlIGV4ZWN1dGVkIGZyb20gYSBmdW5jdGlvbiBvciBwcm9jZWR1cmUsIG5vciB3aXRoaW4gYSB0 cmFuc2FjdGlvbiB3aXRoIGFuIGlzb2xhdGlvbiBsZXZlbCBoaWdoZXIgdGhhbiBSRUFEIENPTU1J VFRFRC4iKSk7CisJCQkJZXJyZGV0YWlsKCJXQUlUIEZPUiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2l0 aGluIGEgdHJhbnNhY3Rpb24gd2l0aCBhbiBpc29sYXRpb24gbGV2ZWwgaGlnaGVyIHRoYW4gUkVB RCBDT01NSVRURUQuIikpOwogCiAJLyoKIAkgKiBBcyB0aGUgcmVzdWx0IHdlIHNob3VsZCBob2xk IG5vIHNuYXBzaG90LCBhbmQgY29ycmVzcG9uZGluZ2x5IG91ciB4bWluCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmlu ZGV4IDFkMzRjMTk5MTNlLi43M2E1NmYxZGYxZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTEwNjIsNyAr MTA2Miw4IEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAog CQljYXNlIFRfV2FpdFN0bXQ6CiAJCQl7Ci0JCQkJRXhlY1dhaXRTdG10KHBzdGF0ZSwgKFdhaXRT dG10ICopIHBhcnNldHJlZSwgZGVzdCk7CisJCQkJRXhlY1dhaXRTdG10KHBzdGF0ZSwgKFdhaXRT dG10ICopIHBhcnNldHJlZSwgaXNUb3BMZXZlbCwKKwkJCQkJCQkgZGVzdCk7CiAJCQl9CiAJCQli cmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvd2FpdC5oCmluZGV4IDUyMWEzMTI5MDhkLi5hNTYzNTc5Njk1YyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3dhaXQuaApAQCAtMTYsNyArMTYsOCBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9u b2RlLmgiCiAjaW5jbHVkZSAidGNvcC9kZXN0LmgiCiAKLWV4dGVybiB2b2lkIEV4ZWNXYWl0U3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3Qp OworZXh0ZXJuIHZvaWQgRXhlY1dhaXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2FpdFN0bXQg KnN0bXQsIGJvb2wgaXNUb3BMZXZlbCwKKwkJCQkJCSBEZXN0UmVjZWl2ZXIgKmRlc3QpOwogZXh0 ZXJuIFR1cGxlRGVzYyBXYWl0U3RtdFJlc3VsdERlc2MoV2FpdFN0bXQgKnN0bXQpOwogCiAjZW5k aWYJCQkJCQkJLyogV0FJVF9IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0 OV93YWl0X2Zvcl9sc24ucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24u cGwKaW5kZXggYmY2MWI4YzQ3Y2YuLmUxMDgzMDFjY2RiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w NDlfd2FpdF9mb3JfbHNuLnBsCkBAIC0yMTUsMTAgKzIxNSwyNyBAQCAkbm9kZV9zdGFuZGJ5LT5w c3FsKAogCSdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwZ193YWxfcmVwbGF5X3dhaXRfd3JhcCgnJHts c24zfScpOyIsCiAJc3RkZXJyID0+IFwkc3RkZXJyKTsKLW9rKCAkc3RkZXJyID1+Ci0JICAvV0FJ VCBGT1IgbXVzdCBiZSBjYWxsZWQgd2l0aG91dCBhbiBhY3RpdmUgb3IgcmVnaXN0ZXJlZCBzbmFw c2hvdC8sCitvaygkc3RkZXJyID1+IC9XQUlUIEZPUiBjYW5ub3QgYmUgZXhlY3V0ZWQgZnJvbSBh IGZ1bmN0aW9uIG9yIHByb2NlZHVyZS8sCiAJImdldCBhbiBlcnJvciB3aGVuIHJ1bm5pbmcgd2l0 aGluIGFub3RoZXIgZnVuY3Rpb24iKTsKIAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxWworQ1JFQVRFIFBST0NFRFVSRSBwZ193YWxfcmVwbGF5X3dhaXRfcHJvYyh0 YXJnZXRfbHNuIHBnX2xzbikgQVMgXCRcJAorICBCRUdJTgorICAgIEVYRUNVVEUgZm9ybWF0KCdX QUlUIEZPUiBMU04gJUw7JywgdGFyZ2V0X2xzbik7CisgIEVORAorXCRcJAorTEFOR1VBR0UgcGxw Z3NxbDsKK10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5k YnkpOworJG5vZGVfc3RhbmRieS0+cHNxbCgKKwkncG9zdGdyZXMnLAorCSJDQUxMIHBnX3dhbF9y ZXBsYXlfd2FpdF9wcm9jKCcke2xzbjN9Jyk7IiwKKwlzdGRlcnIgPT4gXCRzdGRlcnIpOworb2so JHN0ZGVyciA9fiAvV0FJVCBGT1IgY2Fubm90IGJlIGV4ZWN1dGVkIGZyb20gYSBmdW5jdGlvbiBv ciBwcm9jZWR1cmUvLAorCSJnZXQgYW4gZXJyb3Igd2hlbiBydW5uaW5nIHdpdGhpbiBhIHByb2Nl ZHVyZSIpOworCiAjIDYuIENoZWNrIHBhcmFtZXRlciB2YWxpZGF0aW9uIGVycm9yIGNhc2VzIG9u IHN0YW5kYnkgYmVmb3JlIHByb21vdGlvbgogbXkgJHRlc3RfbHNuID0KICAgJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5zZXJ0X2xz bigpIik7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --00000000000055a455064f062776--