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 1w5QX4-003EzO-2Z for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 15:52:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5QX1-00Erpp-0u for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 15:52: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 1w5QX0-00Erpg-2o for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 15:52:31 +0000 Received: from mail-vs1-xe2b.google.com ([2607:f8b0:4864:20::e2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5QWz-00000000zUk-1FHE for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 15:52:30 +0000 Received: by mail-vs1-xe2b.google.com with SMTP id ada2fe7eead31-5ff05af29b4so1627910137.1 for ; Wed, 25 Mar 2026 08:52:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774453948; cv=none; d=google.com; s=arc-20240605; b=FGWbrV6+n+rmMqtoKNqFksJdEQs+HjR2z2C5Qvesi7hp558enYj8XF1lsNMBuGynTo wWol0ELD4BheQ81atVCMsn+NLmCBEEj0aTKdqHFZKr83nhND4Z/0LsdS1CZalsM7aJd+ taJt+cXQAGn3TMz1mtJ4rMBJgcTqvc79Ltk62Ss+Tz1Ne09otPOI7Z5O7c6TP8Mvg4M7 nHPsCGiQsE6h0Mej7AF3+6KicUtNl7giO/Ah94N76uhc6KfzC/du5FFZxrMCWddkQqG0 jCzbOlmVa4iYwCN2bXBL6isCLpVDSagRs+9ywrVsRLbwe2sLEI8zl5hdwY9EoT0KNqWI 2QPQ== 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=FK0F+UCSYkfV/U5JXz8eqmyALKkVv2XeQPgPQ7PAwU0=; fh=pm81JVf+WgGtUQHyviFqkFL8UQhzeY9qeK57XmPIxiw=; b=bFcss9Q/K0xPakAAKRvvw56tEOEjAIlfhSooo9EiGLh8reOAKkjQWLYB3umwK3HwuE V2TKBNidR8htBkHk2lvz65PEoaRg0zKmgB1R+hsxkzSYcQPBP0QkqnJcswVVUrnn2m+q EUsn98yPtU2dakNhFXg9ZuW5CrqqHloEKteN6NszAhbKqq2yh0U/ei3x0FHYJuZH439d 1Pn1h5BHGCUp1DMOjavtm3oI9L0t/B9780XU2OAtFPSnMXcaricCferHcko5Utt5X99+ ffltOODTi7VUjIOW6eKLWgB1Hdi4Sb+p90HmZQctKDTxK/PLKibyqbP67GWV31u4JaDG R7ew==; darn=lists.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=1774453948; x=1775058748; darn=lists.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=FK0F+UCSYkfV/U5JXz8eqmyALKkVv2XeQPgPQ7PAwU0=; b=HsPXtb5Mtd5bPYEst/lor+pAT7jAiDB1TxOZPpXZnoQvKO1uJUyP4Ow48o8WHEMMyw B4T5UwfFjyRhSZZNxp860+Oxvt6/tTaITSxV8yOgyj8/GZz7R6a3d/GUqimOqTCwgvwf QXKT1p9WuYhVgLXjvHaO3hNLLxCkZJ3FrxcZLrKA5h4++NCC8YMRzAp6IJX/mRUGsOns bi2eLyYWge0eCxdc20TkeDo+qnlmwwKoaRj1MAwtXamWqX9sLoUTmVtFqlbQraHDe4HO JmdZ3nzHO43NU7RqKfBrbafU6+SdkghZrTCxRldNulun57Ff70stt5FJYwlPjh+U/lqw xwyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774453948; x=1775058748; 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=FK0F+UCSYkfV/U5JXz8eqmyALKkVv2XeQPgPQ7PAwU0=; b=I54nFxjVzsSx4Go+AHeIygh2145NkjMWBuq8BdLqq9WFtdY9qTgGflSaiuWVhrZI4q jcpRBVy1iJMpVs37gCfaUkQavcQH+JrWKkDfET+SDtnsS1+J3k0AhkJq4IS690hmlWDT Q/C/HpPLy6O3Pfb1rWPckutTBx1yXtyovAQ1RA6qxfmtl3kHO7ltUY3jWJVMjIxfomxU vp4KBOP9TQWoqEJTnZtC9dH00HBxJ2ZoUVYNdLCw1zBaPvlvLl5s0IDleMYUjtkDFtKf 4il+RS+Tu7Aj+huR8kyWgrlN4wGtejcf0nkZd98slqrhpEqyeUY0ZnXhHTNMCnpJVIkA OHXg== X-Forwarded-Encrypted: i=1; AJvYcCUu1v5YwYWmb+fqbNcwXZX07b4KAudy6dlC8s7SlbjFZ8x427Y80rGG3YFQJVN7TNMEvKi+jCGKRWjhRXPf@lists.postgresql.org X-Gm-Message-State: AOJu0YxVhHSG5QoHcPf7IcxydfBujc0YCE7wboXuN/L5/5ixQ8got1Xc PuCppWvXJIN/5Mxg431MJj3Vf2r/zGgC1dHaNVM1/zN/gvq4T5u26rTPMze74NO6hON91c53r5h I69icOn96pE1fzHBooHGCnzNh8DjcQXE= X-Gm-Gg: ATEYQzwF4Kz+0aIzdwIYm3KRTskhDrcSEORfsDmMJ/24Jqwgry74yDR5zsTuyIsWNZi pJsAVcH6JalHEHDGBfS1ynY3S+5BX+ErY6K3rCo4burygOQtyzWr0KZHw2AIl5a/Lm0YKhUN67t o/5cqhiiEqZcBy71Mgb9kj/69/43F3mCWfAZUV8nZ2j9Z1sjX8WPfP37ZS9Bjw9VzUwjGhRYSD9 gaASuLKQdsuY/zLdo84yMWrhjoYGAtPFVNoJJPio1T61oTuVk1u7ceAdysST9gbbivfjZfJzbMW nC5rmNxrWtYIL1ATLxeKMSmxaqaF76y6Tm9l4+f7HVjNY0xPF6DxHgvHQF3zQA0CNhuM5jozI1o MNgNUGnvU8zbuMkwJeo6OerhQTA== X-Received: by 2002:a05:6102:8029:b0:600:11e1:2a49 with SMTP id ada2fe7eead31-60378fd6b42mr1888076137.7.1774453948319; Wed, 25 Mar 2026 08:52:28 -0700 (PDT) MIME-Version: 1.0 References: <202603242222.5i7awkn7jpdr@alvherre.pgsql> <23099.1774429249@localhost> In-Reply-To: <23099.1774429249@localhost> From: Srinath Reddy Sadipiralla Date: Wed, 25 Mar 2026 21:22:16 +0530 X-Gm-Features: AQROBzC152LTW9T5FxR3J6Y2SRli_i6wtKDFOJpVGlRsK60cRwduzEyQ4yL1BAU Message-ID: Subject: Re: Adding REPACK [concurrently] To: Antonin Houska Cc: Alvaro Herrera , Mihail Nikalayeu , Matthias van de Meent , Pg Hackers , Robert Treat Content-Type: multipart/mixed; boundary="00000000000042ad3e064ddb4105" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000042ad3e064ddb4105 Content-Type: multipart/alternative; boundary="00000000000042ad3d064ddb4103" --00000000000042ad3d064ddb4103 Content-Type: text/plain; charset="UTF-8" Hello, While reviewing/testing V44 patch set , i found that if we run REPACK (CONCURRENTLY) without a table name inside a transaction block throws the error "REPACK CONCURRENTLY requires explicit table name" instead of the expected transaction block error. This occurs because ExecRepack() validates the parsed options and missing relation before verifying the transaction state. I attached a patch below to maintain consistency with other commands like VACUUM, REINDEX , and more and also not to confuse the user , because if user runs REPACK (CONCURRENTLY) without a table name inside a transaction block, if user gets "REPACK CONCURRENTLY requires explicit table name" and then to correct the mistake the user gives table and again runs the in transaction block , just to find out a new error "cannot run inside a transaction block". psql (19devel) Type "help" for help. postgres=# BEGIN; SET TRANSACTION READ ONLY; BEGIN SET postgres=*# REPACK (concurrently); ERROR: REPACK CONCURRENTLY requires explicit table name psql (19devel) Type "help" for help. postgres=# BEGIN; SET TRANSACTION READ ONLY; BEGIN SET postgres=*# REPACK (concurrently) stress_victim; ERROR: REPACK (CONCURRENTLY) cannot run inside a transaction block After the fix: psql (19devel) Type "help" for help. postgres=# BEGIN; SET TRANSACTION READ ONLY; BEGIN SET postgres=*# REPACK (concurrently); ERROR: REPACK (CONCURRENTLY) cannot run inside a transaction block Thoughts? -- Thanks, Srinath Reddy Sadipiralla EDB: https://www.enterprisedb.com/ --00000000000042ad3d064ddb4103 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

While reviewing/testing V= 44 patch set , i found that if we run REPACK (CONCURRENTLY)
without a ta= ble name inside a transaction block throws the error "REPACK CONCURREN= TLY requires explicit
table name" instead of the expected transac= tion block error. This occurs
because ExecRepack() validates the parsed = options and missing relation
before verifying the transaction state.
=
I attached a patch below to maintain consistency with other commands li= ke VACUUM, REINDEX , and more
and also not to confuse the user , because= if user runs REPACK (CONCURRENTLY)
without a table name inside a tran= saction block, if user gets "REPACK CONCURRENTLY requires explicit
= table name" and then to correct the mistake the user gives table and a= gain runs the in
transaction block , just to find out a new error "= cannot run inside a transaction block".

psql (19devel)
Type = "help" for help.

postgres=3D# BEGIN;
SET TRANSACTION RE= AD ONLY;
BEGIN
SET
postgres=3D*# REPACK (concurrently);
ERROR: = =C2=A0REPACK CONCURRENTLY requires explicit table name

psql (19devel= )
Type "help" for help.

postgres=3D# BEGIN; =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
SET TRANSACTION READ ONLY;=
BEGIN
SET
postgres=3D*# REPACK (concurrently) stress_victim;
E= RROR: =C2=A0REPACK (CONCURRENTLY) cannot run inside a transaction block
=
After the fix:

psql (19devel)
Type "help" for help.=

postgres=3D# BEGIN; =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 =C2=A0 =C2=A0 =C2=A0
SET T= RANSACTION READ ONLY;
BEGIN
SET
postgres=3D*# REPACK (concurrently= );
ERROR: =C2=A0REPACK (CONCURRENTLY) cannot run inside a transaction bl= ock

Thoughts?

--
Thanks,
Srinath Reddy Sadipiralla
E= DB:=C2=A0https://www.enterprisedb.com/
--00000000000042ad3d064ddb4103-- --00000000000042ad3e064ddb4105 Content-Type: application/octet-stream; name="0001-Check-for-transaction-block-early-in-ExecRepack.patch" Content-Disposition: attachment; filename="0001-Check-for-transaction-block-early-in-ExecRepack.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn681x2d0 RnJvbSA2ZTRkOTQxY2FiYmMxNmM2MGQ3NzgzNDU1NTg2MTIyMDhkNzhkODgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTcmluYXRoIFJlZGR5IFNhZGlwaXJhbGxhIDxzcmluYXRoMjEz M0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMjA6NTM6MDkgKzA1MzAKU3ViamVj dDogW1BBVENIIDEvMV0gQ2hlY2sgZm9yIHRyYW5zYWN0aW9uIGJsb2NrIGVhcmx5IGluIEV4ZWNS ZXBhY2sKCkN1cnJlbnRseSwgZXhlY3V0aW5nIFJFUEFDSyAoQ09OQ1VSUkVOVExZKSB3aXRob3V0 IGEgdGFibGUgbmFtZSBpbnNpZGUgYQp0cmFuc2FjdGlvbiBibG9jayB0aHJvd3MgdGhlIGVycm9y ICJSRVBBQ0sgQ09OQ1VSUkVOVExZIHJlcXVpcmVzIGV4cGxpY2l0CnRhYmxlIG5hbWUiIGluc3Rl YWQgb2YgdGhlIGV4cGVjdGVkIHRyYW5zYWN0aW9uIGJsb2NrIGVycm9yLiBUaGlzIG9jY3Vycwpi ZWNhdXNlIEV4ZWNSZXBhY2soKSB2YWxpZGF0ZXMgdGhlIHBhcnNlZCBvcHRpb25zIGFuZCBtaXNz aW5nIHJlbGF0aW9uCmJlZm9yZSB2ZXJpZnlpbmcgdGhlIHRyYW5zYWN0aW9uIHN0YXRlLgoKVGhp cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgd2l0aCBvdGhlciB1dGlsaXR5IGNvbW1hbmRzIGxp a2UgVkFDVVVNCixSRUlOREVYLCBldGM7IHdoaWNoIGludm9rZSBQcmV2ZW50SW5UcmFuc2FjdGlv bkJsb2NrKCkgYXQgdGhlIHZlcnkgc3RhcnQKb2YgdGhlaXIgZXhlY3V0aW9uIHRvIHByb3Blcmx5 IHJlamVjdCBleGVjdXRpb24gaW5zaWRlIHVzZXIgdHJhbnNhY3Rpb25zCmJlZm9yZSB2YWxpZGF0 aW5nIHRhcmdldHMuCgpBZGQgUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayB0byB0aGUgdG9wIG9m IEV4ZWNSZXBhY2soKSB0byBlbmZvcmNlIHRoZQp0cmFuc2FjdGlvbiBibG9jayByZXN0cmljdGlv biBlYXJseS4gVGhpcyBwcmV2ZW50cyB0aGUgdXNlciBmcm9tIGZpeGluZwphIG1pc3NpbmcgdGFi bGUgZXJyb3Igb25seSB0byBpbW1lZGlhdGVseSBoaXQgYSB0cmFuc2FjdGlvbiBibG9jayBlcnJv ciwKYW5kIGFsc28gZW5zdXJlcyBjb25zaXN0ZW5jeSB3aXRoIHJlc3Qgb2YgdGhlIGNvbW1hbmRz LgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyB8IDM5ICsrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAx NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVy LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKaW5kZXggNDIzY2VhMjZiMGIuLjM4 YzU4ZjZkZjZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCkBAIC0zNjksNiArMzY5LDI4IEBAIEV4 ZWNSZXBhY2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZXBhY2tTdG10ICpzdG10LCBib29sIGlzVG9w TGV2ZWwpCiAJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG9wdC0+bG9jYXRpb24pKTsK IAl9CiAKKwlpZiAocGFyYW1zLm9wdGlvbnMgJiBDTFVPUFRfQ09OQ1VSUkVOVCkKKwl7CisJCS8q CisJCSAqIE1ha2Ugc3VyZSB3ZSdyZSBub3QgaW4gYSB0cmFuc2FjdGlvbiBibG9jay4KKwkJICoK KwkJICogVGhlIHJlYXNvbiBpcyB0aGF0IHJlcGFja19zZXR1cF9sb2dpY2FsX2RlY29kaW5nKCkg Y291bGQgZGVhZGxvY2sKKwkJICogaWYgdGhlcmUncyBhbiBYSUQgYWxyZWFkeSBhc3NpZ25lZC4g IEl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIHJ1biBpbgorCQkgKiBhIHRyYW5zYWN0aW9uIGJsb2Nr IGlmIHdlIGhhZCBubyBYSUQsIGJ1dCB0aGlzIHJlc3RyaWN0aW9uIGlzCisJCSAqIHNpbXBsZXIg Zm9yIHVzZXJzIHRvIHVuZGVyc3RhbmQgYW5kIHdlIGRvbid0IGxvc2UgYW55dGhpbmcuCisJCSAq LworCQlQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2ZWwsICJSRVBBQ0sgKENPTkNV UlJFTlRMWSkiKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogSW4gb3JkZXIgdG8gYXZvaWQg aG9sZGluZyBsb2NrcyBmb3IgdG9vIGxvbmcsIHdlIHdhbnQgdG8gcHJvY2VzcworCQkgKiBlYWNo IHRhYmxlIGluIGl0cyBvd24gdHJhbnNhY3Rpb24uICBUaGlzIGZvcmNlcyB1cyB0byBkaXNhbGxv dworCQkgKiBydW5uaW5nIGluc2lkZSBhIHVzZXIgdHJhbnNhY3Rpb24gYmxvY2suCisJCSAqLwor CQlQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2ZWwsIFJlcGFja0NvbW1hbmRBc1N0 cmluZyhzdG10LT5jb21tYW5kKSk7CisJfQorCiAJLyogRGV0ZXJtaW5lIHRoZSBsb2NrIG1vZGUg dG8gdXNlLiAqLwogCWxvY2ttb2RlID0gUmVwYWNrTG9ja0xldmVsKChwYXJhbXMub3B0aW9ucyAm IENMVU9QVF9DT05DVVJSRU5UKSAhPSAwKTsKIApAQCAtNDEzLDEzICs0MzUsNiBAQCBFeGVjUmVw YWNrKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVwYWNrU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVs KQogCQkJCQllcnJtc2coIlJFUEFDSyBDT05DVVJSRU5UTFkgcmVxdWlyZXMgZXhwbGljaXQgdGFi bGUgbmFtZSIpKTsKIAl9CiAKLQkvKgotCSAqIEluIG9yZGVyIHRvIGF2b2lkIGhvbGRpbmcgbG9j a3MgZm9yIHRvbyBsb25nLCB3ZSB3YW50IHRvIHByb2Nlc3MgZWFjaAotCSAqIHRhYmxlIGluIGl0 cyBvd24gdHJhbnNhY3Rpb24uICBUaGlzIGZvcmNlcyB1cyB0byBkaXNhbGxvdyBydW5uaW5nCi0J ICogaW5zaWRlIGEgdXNlciB0cmFuc2FjdGlvbiBibG9jay4KLQkgKi8KLQlQcmV2ZW50SW5UcmFu c2FjdGlvbkJsb2NrKGlzVG9wTGV2ZWwsIFJlcGFja0NvbW1hbmRBc1N0cmluZyhzdG10LT5jb21t YW5kKSk7Ci0KIAkvKiBBbHNvLCB3ZSBuZWVkIGEgbWVtb3J5IGNvbnRleHQgdG8gaG9sZCBvdXIg bGlzdCBvZiByZWxhdGlvbnMgKi8KIAlyZXBhY2tfY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENy ZWF0ZShQb3J0YWxDb250ZXh0LAogCQkJCQkJCQkJCSAgICJSZXBhY2siLApAQCAtNjA1LDE2ICs2 MjAsNiBAQCBjbHVzdGVyX3JlbChSZXBhY2tDb21tYW5kIGNtZCwgUmVsYXRpb24gT2xkSGVhcCwg T2lkIGluZGV4T2lkLAogCSAqLwogCWlmIChjb25jdXJyZW50KQogCXsKLQkJLyoKLQkJICogTWFr ZSBzdXJlIHdlJ3JlIG5vdCBpbiBhIHRyYW5zYWN0aW9uIGJsb2NrLgotCQkgKgotCQkgKiBUaGUg cmVhc29uIGlzIHRoYXQgcmVwYWNrX3NldHVwX2xvZ2ljYWxfZGVjb2RpbmcoKSBjb3VsZCBkZWFk bG9jawotCQkgKiBpZiB0aGVyZSdzIGFuIFhJRCBhbHJlYWR5IGFzc2lnbmVkLiAgSXQgd291bGQg YmUgcG9zc2libGUgdG8gcnVuIGluCi0JCSAqIGEgdHJhbnNhY3Rpb24gYmxvY2sgaWYgd2UgaGFk IG5vIFhJRCwgYnV0IHRoaXMgcmVzdHJpY3Rpb24gaXMKLQkJICogc2ltcGxlciBmb3IgdXNlcnMg dG8gdW5kZXJzdGFuZCBhbmQgd2UgZG9uJ3QgbG9zZSBhbnl0aGluZy4KLQkJICovCi0JCVByZXZl bnRJblRyYW5zYWN0aW9uQmxvY2soaXNUb3BMZXZlbCwgIlJFUEFDSyAoQ09OQ1VSUkVOVExZKSIp OwotCiAJCWNoZWNrX3JlcGFja19jb25jdXJyZW50bHlfcmVxdWlyZW1lbnRzKE9sZEhlYXAsICZp ZGVudF9pZHgpOwogCX0KIAotLSAKMi40My4wCgo= --00000000000042ad3e064ddb4105--