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 1waSg0-001oqf-2t for pgsql-bugs@arkaria.postgresql.org; Fri, 19 Jun 2026 06:26:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1waSfz-00FDqr-2Z for pgsql-bugs@arkaria.postgresql.org; Fri, 19 Jun 2026 06:26:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1waSfz-00FDqj-1V for pgsql-bugs@lists.postgresql.org; Fri, 19 Jun 2026 06:26:03 +0000 Received: from mail-oi1-x230.google.com ([2607:f8b0:4864:20::230]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1waSfw-00000001E6r-3Eq1 for pgsql-bugs@lists.postgresql.org; Fri, 19 Jun 2026 06:26:02 +0000 Received: by mail-oi1-x230.google.com with SMTP id 5614622812f47-489e2b1b41aso120721b6e.1 for ; Thu, 18 Jun 2026 23:26:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781850359; cv=none; d=google.com; s=arc-20240605; b=iE2r71y+hRGjQhhFy98kJJz97GhoH1oJ82J5a7NwROaSUkFCEpSaZLEECkOTSByQIF jRo1ccxhhevjUrBr13C3EztKu7Cd7Smc0kHBozxBMyUrARpU0Cm2dP8vOB/2DacYzWii hfMgRt7JEIl/yg9Kca5cAcxUdvxQu7rCwj9O0K1ynNpAzrHYb3G+Z1RB09dKiNkVWiwd uRvi1HD0/1zU1P1q4m2csX3pVbkipjK4YGvGQwRdw1hXLC+xqxagmJ+/3siJiY5Hb6d6 1DN63og+Ez4b/kwZHsyQ3ZhjOZUvoDzAvAhMnvFWdCYZySvm6hpWcaeCErNeA0JwdLq6 wdTA== 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=DljeKoSoLclRdomhd/ZAy69Ys4Qs11HM+58ajUnAM50=; fh=n/JDz/2Z9cKg8EtrZqvM/Jnt1oou4uWrLIKM13aWl3s=; b=ayHWhxC5jm0KC+MaGVVRblx/uZxO/N85xt4vfTD/KKQJxShjNLayEkCi4FgPkUous+ imhid6jyQtNXJLX2Ctkxr9j2Zd0CAAJhR70fKVwFbo1VdkIiW6QJDBFF+W3yrs9deNJb EoOVplahN7rpqnLdsHg1ucFhrAZQlV2MCsUcRIu/+ecicwuFu8W+DAUU8hycy82tySyo emAovya0lmNu1d4YVVnSW0ysU0Cf7gYJldi+4VWKRfKDcy+0Cskrjuw09Tfro922Io33 T3NOypquRcc76Edu2PCxP4u76QKOMeqKqotsT01oNjhM9viFP4r30asbqccYNnK53WgO MDlw==; 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=1781850359; x=1782455159; 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=DljeKoSoLclRdomhd/ZAy69Ys4Qs11HM+58ajUnAM50=; b=KAUUAapgCoAa/sv2Cm5ICjkQtCQxzSJeoDuuKrlz2xR1cHevNoeXJcm5XMZAUei/rC yOfI+IhSZVV4wgjMWbOzqHMmaTNqIp0CB8R419s17U+tVwAL/KgmTVEdxfM+Wump6+H8 QdG7nE8mfUTnidz2guQho33BjJ+C1yRi4gF+eda9JKNpSd94fX2ydY24NDktzPtnkhbS A8kBZuvfSMDYwD71V79e5HhLpbsRv2zSSPub3uB6e2+ew7CWUJ9zmzS94rzthhWtglBP j+Gj5H3dpwyStxtPF9DTJxVK4sO5KLg3V9t70/mjrKaY98S++cUfjzi/n+ZqhLOQ4/ku RVmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781850359; x=1782455159; 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=DljeKoSoLclRdomhd/ZAy69Ys4Qs11HM+58ajUnAM50=; b=GwglFjy3wUWLjSDd+Ao884FtGmOb/MUivkpzKsO86HVjSEYbeLJyAAFKWlETFnhdhw 74ezT21jatB7H3FxvmwY+l2whVhGB/FDfltwRW/XNMMJwsMcAnejplpoDS6LPBIO9S4+ TWgQe/3U3UN9BpRR4bY4UwR1cUkSFTSHJaI85LbV0zgv1Tjysy4Xw9McPk0y/iinFEFK rgY7txam6LINu+TZwJNJdG7TLXMhnZgINXBa505g+hTl1wzzeZU3FmaPTGJabg7iY800 9USFzkS1ByIK3gK2vQUV/7FgIaw9rIkt6AjPF6yk0GAK71TvHz/9u6VJJL6rFZkpor+M WJQQ== X-Forwarded-Encrypted: i=1; AFNElJ8wj/4GAntrhFLan3HgjXiFzSmBCgaBDkpGVnxsDh4pKxlQREjOatQTZr3UwzwlmTCqEaLzvwt+I0dl@lists.postgresql.org X-Gm-Message-State: AOJu0Yxr1jQNPZdNYDQWv27mMnP384xqrcYGd8yDNkizUmeXTW1swy7e 8IlAequA6zj57b9IOlK6BF5111eN5wXs6WIZGtnsOn2YX7cVQqijDREsFEAyPAYDuHWGyz7jf25 TVWKwx+Ohug4c2m4ooMfcGVPR6VbKn335oPFK X-Gm-Gg: AfdE7clmYL1kMaDuaJoKI5DOGAX0K9PWmk6u079oitusTKVYXwJZm2TQTeQ+A+BN70j ROjzn25IDqptRGtDTV0LXzwhmU+51yjIB9cf9Wd8Iu2OB5e3LsRhEiFysURv24eN3lyt4HoPznt qUZp2MxA7veelhnVRCwbAU8f1fD2AbLMkW/82NEinr5Gwy8rc9F3L+TqBlQuZ5k97eUOgVe6z4O g2jVMgSnYvrvOsEyTcsPvusUojrh9aVo6rORYY7hthSCRr7umPlmgeMKsxKDqIOevKYQ/dM33m6 dKmsG8y7HTHACKNLSTIBz5w28jqjCOrQh0Gt1p7QEUMTq6OMdWljAqyTMmc2oOXMGwPaWsKTW9H YuU1pdi7/6nPINEnX X-Received: by 2002:a05:6808:13d5:b0:485:6029:90e7 with SMTP id 5614622812f47-4896c441fa1mr1289690b6e.10.1781850358894; Thu, 18 Jun 2026 23:25:58 -0700 (PDT) MIME-Version: 1.0 References: <19483-80de42dc4e62cfd6@postgresql.org> <104812.1780847519@sss.pgh.pa.us> In-Reply-To: From: =?UTF-8?Q?H=C3=BCseyin_Demir?= Date: Fri, 19 Jun 2026 08:25:47 +0200 X-Gm-Features: AVVi8CeKBF-_EhqO_WrwcLW6FHBee_5qQCVoZmVTRwMAQMHsx1ycQOWQhpCTk7I Message-ID: Subject: Re: BUG #19483: pg_upgrade fails with orphan records in pg_init_priv catalog table To: Tom Lane Cc: Greg Sabino Mullane , pgsql-bugs@lists.postgresql.org, Laurenz Albe Content-Type: multipart/mixed; boundary="000000000000afa0dc0654955d02" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000afa0dc0654955d02 Content-Type: multipart/alternative; boundary="000000000000afa0da0654955d00" --000000000000afa0da0654955d00 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I simplified the patch and only changed the SQL query. The v2 patch correctly filters `pg_init_privs` entries whose grantee OID has no corresponding row in `pg_authid`, without affecting valid entries. Regards, Demir. H=C3=BCseyin Demir , 12 Haz 2026 Cum, 18:22 tarihind= e =C5=9Funu yazd=C4=B1: > Hi, > > I worked on pg_dump and discussed it with Laurenz Albe. Created the > attached patch. > > The fix filters dangling grantees out of each initprivs array at query > time, using NULLIF/ARRAY/NOT EXISTS against pg_authid. Entries for > grantee =3D 0 (PUBLIC) are never filtered. If all entries for an object > are dangling, NULL is returned and no ACL statement is emitted. Since > we cannot restore grants to non-existent roles. correct outcome, > > The patch includes a TAP test (008_pg_dump_dangling_initprivs.pl) that > reproduces the scenario using allow_system_table_mods to create a > dangling pg_init_privs entry, then verifies pg_dump exits cleanly and > emits no invalid GRANT. > > I have not prepared backpatch branches yet. > > Regards. > > H=C3=BCseyin Demir , 11 Haz 2026 Per, 07:49 > tarihinde =C5=9Funu yazd=C4=B1: > > > > > The orphaned-rows problem shouldn't exist in v17 and later (see > > > 534287403, 35dd40d34, and related commits). The OP is apparently > > > complaining about an upgrade from v14, where such rows could exist. > > > > Yes I was working on upgrading the PostgreSQL version from v14 to v18 > > and was able to solve the problem by removing the danling records from > > pg_init_privs. > > > > > I wonder if it'd be sane for pg_dump to just skip dangling role > > > references in pg_init_privs. > > > > It will change the behavior of pg_dump and it's a general purpose tool > > because when we instruct pg_dump to filter orphan records it will > > change the content in the system catalogs. > > > > For now I suppose we have two options: either pg_upgrade or pg_dump. > > > > Regards. > > > > > > Tom Lane , 7 Haz 2026 Paz, 17:52 tarihinde =C5=9Funu > yazd=C4=B1: > > > > > > Greg Sabino Mullane writes: > > > >> 5. Verify orphan records remain in pg_init_privs: > > > > > > > Thanks for providing a failing use case. I ran this on a 18.3 serve= r > and > > > > found no orphaned rows - but I used the pg_stat_statements extensio= n > > > > instead of pg_wait_sampling. Could you try your experiment using > > > > pg_stat_statements? And could you also show us the contents of the > errant > > > > rows in pg_init_privs for the failing case? > > > > > > The orphaned-rows problem shouldn't exist in v17 and later (see > > > 534287403, 35dd40d34, and related commits). The OP is apparently > > > complaining about an upgrade from v14, where such rows could exist. > > > > > > I don't especially care for the proposed fix of making pg_upgrade > > > refuse to run. Manually correcting such situations would be tedious > > > and error-prone. Plus, it's inconsistent with what we did about > > > related issues with role GRANTs (see 29d75b25b and 74b4438a7). > > > I wonder if it'd be sane for pg_dump to just skip dangling role > > > references in pg_init_privs. > > > > > > regards, tom lane > --000000000000afa0da0654955d00 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I simplified the patch and only changed the SQL query= .=C2=A0


The v2 patch correctly filters `= pg_init_privs` entries whose grantee OID has no corresponding row in `pg_au= thid`, without affecting valid entries.

Regards,
Demir.

H=C3=BCseyin Demir <huseyin.d3r@gmail.com>, 12 Haz 2026 Cum, 18:22 ta= rihinde =C5=9Funu yazd=C4=B1:
Hi,

I worked on pg_dump and discussed it with Laurenz Albe. Created the
attached patch.

The fix filters dangling grantees out of each initprivs array at query
time, using NULLIF/ARRAY/NOT EXISTS against pg_authid. Entries for
grantee =3D 0 (PUBLIC) are never filtered. If all entries for an object
are dangling, NULL is returned and no ACL statement is emitted. Since
we cannot restore grants to non-existent roles. correct outcome,

The patch includes a TAP test (008_pg_dump_dangling_initpriv= s.pl) that
reproduces the scenario using allow_system_table_mods to create a
dangling pg_init_privs entry, then verifies pg_dump exits cleanly and
emits no invalid GRANT.

I have not prepared backpatch branches yet.

Regards.

H=C3=BCseyin Demir <huseyin.d3r@gmail.com>, 11 Haz 2026 Per, 07:49
tarihinde =C5=9Funu yazd=C4=B1:
>
> > The orphaned-rows problem shouldn't exist in v17 and later (s= ee
> > 534287403, 35dd40d34, and related commits).=C2=A0 The OP is appar= ently
> > complaining about an upgrade from v14, where such rows could exis= t.
>
> Yes I was working on upgrading the PostgreSQL version from v14 to v18<= br> > and was able to solve the problem by removing the danling records from=
> pg_init_privs.
>
> > I wonder if it'd be sane for pg_dump to just skip dangling ro= le
> > references in pg_init_privs.
>
> It will change the behavior of pg_dump and it's a general purpose = tool
> because when we instruct pg_dump to filter orphan records it will
> change the content in the system catalogs.
>
> For now I suppose we have two options: either pg_upgrade or pg_dump. >
> Regards.
>
>
> Tom Lane <tg= l@sss.pgh.pa.us>, 7 Haz 2026 Paz, 17:52 tarihinde =C5=9Funu yazd=C4= =B1:
> >
> > Greg Sabino Mullane <htamfids@gmail.com> writes:
> > >> 5. Verify orphan records remain in pg_init_privs:
> >
> > > Thanks for providing a failing use case. I ran this on a 18.= 3 server and
> > > found no orphaned rows - but I used the pg_stat_statements e= xtension
> > > instead of pg_wait_sampling. Could you try your experiment u= sing
> > > pg_stat_statements? And could you also show us the contents = of the errant
> > > rows in pg_init_privs for the failing case?
> >
> > The orphaned-rows problem shouldn't exist in v17 and later (s= ee
> > 534287403, 35dd40d34, and related commits).=C2=A0 The OP is appar= ently
> > complaining about an upgrade from v14, where such rows could exis= t.
> >
> > I don't especially care for the proposed fix of making pg_upg= rade
> > refuse to run.=C2=A0 Manually correcting such situations would be= tedious
> > and error-prone.=C2=A0 Plus, it's inconsistent with what we d= id about
> > related issues with role GRANTs (see 29d75b25b and 74b4438a7). > > I wonder if it'd be sane for pg_dump to just skip dangling ro= le
> > references in pg_init_privs.
> >
> >=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=A0regards, tom lane
--000000000000afa0da0654955d00-- --000000000000afa0dc0654955d02 Content-Type: application/octet-stream; name="v2-0001-pg_dump-skip-dangling-initprivs.patch" Content-Disposition: attachment; filename="v2-0001-pg_dump-skip-dangling-initprivs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqkjohzn0 RnJvbSBiMGE2ZDM3OTk3MmFlZTVjYWQzZjdhZWVkNTc2ZjE3NDVkZGY2MTc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIdXNleWluIERlbWlyIDxodXNleWluLmQzckBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTkgSnVuIDIwMjYgMDc6Mzk6MjIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw Z19kdW1wOiBza2lwIHBnX2luaXRfcHJpdnMgZW50cmllcyBmb3Igbm9uLWV4aXN0ZW50IHJvbGVz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpwZ19pbml0X3ByaXZzLCBpbnRyb2R1 Y2VkIGluIFBvc3RncmVTUUwgOS42LCByZWNvcmRzIHRoZSAiaW5pdGlhbCIKcHJpdmlsZWdlIHN0 YXRlIG9mIG9iamVjdHMg4oCUIGVpdGhlciBzZXQgYnkgaW5pdGRiIChwcml2dHlwZSAnaScpIG9y IGJ5CkNSRUFURSBFWFRFTlNJT04gc2NyaXB0cyAocHJpdnR5cGUgJ2UnKS4gIHBnX2R1bXAgcmVh ZHMgdGhpcyBjYXRhbG9nIHRvCmRldGVybWluZSB3aGljaCBBQ0wgY2hhbmdlcyB0aGUgdXNlciBt YWRlIG9uIHRvcCBvZiB0aGUgZGVmYXVsdHMsIHNvIGl0CmNhbiBlbWl0IHRoZSByaWdodCBHUkFO VC9SRVZPS0Ugc3RhdGVtZW50cy4KCkJlZm9yZSBjb21taXQgNTM0Mjg3NDAzOTEsIFBvc3RncmVT UUwgZGlkIG5vdCByZWNvcmQgcm9sZSBkZXBlbmRlbmNpZXMKZm9yIHBnX2luaXRfcHJpdnMgZW50 cmllcyBpbiBwZ19zaGRlcGVuZCwgbWVhbmluZyBEUk9QIFJPTEUgY291bGQgbGVhdmUKYmVoaW5k IEFDTCBlbnRyaWVzIHdob3NlIGdyYW50ZWUgT0lEIG5vIGxvbmdlciBleGlzdHMgaW4gcGdfYXV0 aGlkLgpDcm9zcy1jbHVzdGVyIHJlc3RvcmVzIChkdW1waW5nIGZyb20gb25lIHN5c3RlbSB3aGVy ZSBhIHJvbGUgZXhpc3RlZCwKcmVzdG9yaW5nIHRvIGFub3RoZXIgd2hlcmUgaXQgZG9lcyBub3Qp IGNhbiBwcm9kdWNlIHRoZSBzYW1lIHNpdHVhdGlvbgpldmVuIG9uIG1vZGVybiByZWxlYXNlcy4K ClRoZSBvbGQgY29kZSBwYXNzZWQgdGhlc2UgZGFuZ2xpbmcgYWNsaXRlbSBlbnRyaWVzIHRocm91 Z2ggdW5jaGFuZ2VkLApjYXVzaW5nIHBnX2R1bXAgdG8gZW1pdCBzdGF0ZW1lbnRzIHN1Y2ggYXMK CiAgICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIGZvbygpIFRPICI4Nzg2OCI7Cgp3aGVyZSAi ODc4NjgiIGlzIGEgbnVtZXJpYyBPSUQg4oCUIGludmFsaWQgU1FMIHRoYXQgd291bGQgZmFpbCBv biByZXN0b3JlLgoKRml4IGJ5IGZpbHRlcmluZyBkYW5nbGluZyBncmFudGVlcyBvdXQgb2YgZWFj aCBpbml0cHJpdnMgYXJyYXkgYXQgcXVlcnkKdGltZTogZm9yIGV2ZXJ5IGFjbGl0ZW0gd2hvc2Ug Z3JhbnRlZSBPSUQgZG9lcyBub3QgYXBwZWFyIGluIHBnX2F1dGhpZAooZXhjbHVkaW5nIGdyYW50 ZWUgPSAwLCB3aGljaCBtZWFucyBQVUJMSUMpLCB0aGUgZW50cnkgaXMgc2lsZW50bHkKZHJvcHBl ZC4gIElmIGFsbCBlbnRyaWVzIGZvciBhbiBvYmplY3QgYXJlIGRhbmdsaW5nIHRoZSByZXN1bHQg aXMgTlVMTAphbmQgbm8gQUNMIGlzIGVtaXR0ZWQsIHdoaWNoIGlzIGNvcnJlY3Qg4oCUIHdlIGNh bm5vdCByZXN0b3JlIGdyYW50cyB0bwpyb2xlcyB0aGF0IGRvIG5vdCBleGlzdC4KCkEgc2ltaWxh ciBpc3N1ZSBpbiBwZ19kdW1wYWxsIHdhcyBmaXhlZCBieSBjb21taXQgNzRiNDQzOGE3MGIuCgpU aGlzIGJ1ZyBoYXMgZXhpc3RlZCBzaW5jZSBwZ19pbml0X3ByaXZzIHdhcyBpbnRyb2R1Y2VkIGlu IDkuNi4KQmFja3BhdGNoIHRvIDE0IChvbGRlc3QgY3VycmVudGx5IHN1cHBvcnRlZCBicmFuY2gp LgoKQXV0aG9yOiBIdXNleWluIERlbWlyIDxodXNleWluLmQzckBnbWFpbC5jb20+CkRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vMTk0ODMtODBkZTQyZGM0ZTYyY2ZkNiU0MHBvc3RncmVz cWwub3JnCkJhY2twYXRjaC10aHJvdWdoOiAxNAotLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKy0KIC4uLi90LzAwOF9wZ19kdW1wX2Rhbmds aW5nX2luaXRwcml2cy5wbCAgICAgICB8IDc2ICsrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMg Y2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvYmluL3BnX2R1bXAvdC8wMDhfcGdfZHVtcF9kYW5nbGluZ19pbml0cHJpdnMucGwK CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYwppbmRleCBhMGY3ZjhlMjE2OC4uNDQ2N2Q1ZDYzODkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpA QCAtMTA5MDAsOCArMTA5MDAsMTggQEAgZ2V0QWRkaXRpb25hbEFDTHMoQXJjaGl2ZSAqZm91dCkK IAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSA5MDYwMCkKIAl7CiAJCXByaW50ZlBRRXhwQnVm ZmVyKHF1ZXJ5LAotCQkJCQkJICAiU0VMRUNUIG9iam9pZCwgY2xhc3NvaWQsIG9ianN1YmlkLCBw cml2dHlwZSwgaW5pdHByaXZzICIKLQkJCQkJCSAgIkZST00gcGdfaW5pdF9wcml2cyIpOworCQkJ CQkJICAiU0VMRUNUIHBpcC5vYmpvaWQsIHBpcC5jbGFzc29pZCwgcGlwLm9ianN1YmlkLCBwaXAu cHJpdnR5cGUsXG4iCisJCQkJCQkgICIgIE5VTExJRihcbiIKKwkJCQkJCSAgIiAgICBBUlJBWShc biIKKwkJCQkJCSAgIiAgICAgIFNFTEVDVCBlbHQgRlJPTSBwZ19jYXRhbG9nLnVubmVzdChwaXAu aW5pdHByaXZzKSBBUyBlbHRcbiIKKwkJCQkJCSAgIiAgICAgIFdIRVJFIE5PVCBFWElTVFMgKFxu IgorCQkJCQkJICAiICAgICAgICBTRUxFQ1QgMSBGUk9NIHBnX2NhdGFsb2cuYWNsZXhwbG9kZShB UlJBWVtlbHRdKSBhY2VcbiIKKwkJCQkJCSAgIiAgICAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cu cGdfYXV0aGlkIGEgT04gYS5vaWQgPSBhY2UuZ3JhbnRlZVxuIgorCQkJCQkJICAiICAgICAgICBX SEVSRSBhY2UuZ3JhbnRlZSA8PiAwIEFORCBhLm9pZCBJUyBOVUxMXG4iCisJCQkJCQkgICIgICAg ICApXG4iCisJCQkJCQkgICIgICAgKSwgQVJSQVlbXTo6cGdfY2F0YWxvZy5hY2xpdGVtW11cbiIK KwkJCQkJCSAgIiAgKSBBUyBpbml0cHJpdnNcbiIKKwkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5w Z19pbml0X3ByaXZzIHBpcCIpOwogCiAJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVy eS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3QvMDA4X3BnX2R1bXBfZGFuZ2xpbmdfaW5pdHByaXZzLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3Qv MDA4X3BnX2R1bXBfZGFuZ2xpbmdfaW5pdHByaXZzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5mNGU5MGNhZGNhNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4v cGdfZHVtcC90LzAwOF9wZ19kdW1wX2RhbmdsaW5nX2luaXRwcml2cy5wbApAQCAtMCwwICsxLDc2 IEBACisjIENvcHlyaWdodCAoYykgMjAyNC0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorIworIyBUZXN0cyB0aGF0IHBnX2R1bXAgc2lsZW50bHkgc2tpcHMgcGdfaW5p dF9wcml2cyBlbnRyaWVzIHRoYXQgcmVmZXJlbmNlCisjIHJvbGVzIG5vIGxvbmdlciBwcmVzZW50 IGluIHBnX2F1dGhpZCwgcmF0aGVyIHRoYW4gZW1pdHRpbmcgaW52YWxpZCBHUkFOVAorIyBzdGF0 ZW1lbnRzIHdpdGggbnVtZXJpYyBPSURzIGFzIHJvbGUgbmFtZXMuCisKK3VzZSBzdHJpY3Q7Cit1 c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215 ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtYWluJyk7Ciskbm9kZS0+ aW5pdDsKKyRub2RlLT5zdGFydDsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JF QVRFIERBVEFCQVNFIHJlZ3Jlc3NfZGFuZ2xpbmcnKTsKKworIyBTaW11bGF0ZSBhbiBleHRlbnNp b24taW5zdGFsbGVkIG9iamVjdCB3aG9zZSBpbml0cHJpdnMgcmVmZXJlbmNlZCBhIHJvbGUKKyMg dGhhdCB3YXMgbGF0ZXIgZHJvcHBlZCAob3IgbmV2ZXIgZXhpc3RlZCBvbiB0aGlzIGNsdXN0ZXIp LiAgV2UgY2Fubm90IHVzZQorIyBub3JtYWwgRFJPUCBST0xFIGJlY2F1c2UgcGdfc2hkZXBlbmQg d291bGQgYmxvY2sgaXQsIHNvIHdlIGRlbGV0ZSB0aGUgcm9sZQorIyBkaXJlY3RseSBmcm9tIHBn X2F1dGhpZCB3aXRoIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzLCBsZWF2aW5nIGEgZGFuZ2xpbmcK KyMgZ3JhbnRlZSBPSUQgaW4gcGdfaW5pdF9wcml2cy4KKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Jl Z3Jlc3NfZGFuZ2xpbmcnLAorCXF7CitTRVQgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMgPSB0cnVl OworCitDUkVBVEUgUk9MRSBnaG9zdF9yb2xlOworCitDUkVBVEUgRlVOQ1RJT04gcHVibGljLnRl c3RfZnVuYygpIFJFVFVSTlMgaW50IExBTkdVQUdFIHNxbCBBUyAnU0VMRUNUIDEnOworCitJTlNF UlQgSU5UTyBwZ19pbml0X3ByaXZzIChvYmpvaWQsIGNsYXNzb2lkLCBvYmpzdWJpZCwgcHJpdnR5 cGUsIGluaXRwcml2cykKK1NFTEVDVCBwLm9pZCwKKyAgICAgICAoU0VMRUNUIG9pZCBGUk9NIHBn X2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAncGdfcHJvYycpLAorICAgICAgIDAsCisgICAgICAgJ2Un LAorICAgICAgIEFSUkFZWygnZ2hvc3Rfcm9sZT1YLycgfHwgY3VycmVudF91c2VyKTo6YWNsaXRl bV0KK0ZST00gICBwZ19wcm9jIHAKK1dIRVJFICBwLnByb25hbWUgPSAndGVzdF9mdW5jJworQU5E ICAgIHAucHJvbmFtZXNwYWNlID0gJ3B1YmxpYyc6OnJlZ25hbWVzcGFjZTsKKworREVMRVRFIEZS T00gcGdfYXV0aGlkIFdIRVJFIHJvbG5hbWUgPSAnZ2hvc3Rfcm9sZSc7Cit9KTsKKworbXkgJHRl bXBkaXIgICA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOworbXkgJGR1bXBfZmls ZSA9ICIkdGVtcGRpci9kYW5nbGluZy5zcWwiOworCisjIHBnX2R1bXAgbXVzdCBzdWNjZWVkIGV2 ZW4gdGhvdWdoIHBnX2luaXRfcHJpdnMgaGFzIGEgZGFuZ2xpbmcgZ3JhbnRlZSBPSUQuCitjb21t YW5kX29rKAorCVsKKwkJJ3BnX2R1bXAnLAorCQknLS1wb3J0JyAgICAgICAgPT4gJG5vZGUtPnBv cnQsCisJCSctLXNjaGVtYS1vbmx5JywKKwkJJy1mJyAgICAgICAgICAgID0+ICRkdW1wX2ZpbGUs CisJCSdyZWdyZXNzX2RhbmdsaW5nJywKKwldLAorCSdwZ19kdW1wIHN1Y2NlZWRzIHdpdGggZGFu Z2xpbmcgcGdfaW5pdF9wcml2cyBlbnRyaWVzJyk7CisKK215ICRkdW1wID0gc2x1cnBfZmlsZSgk ZHVtcF9maWxlKTsKKworIyBUaGUgZnVuY3Rpb24gaXRzZWxmIG11c3Qgc3RpbGwgYXBwZWFyIGlu IHRoZSBkdW1wLgorbGlrZSgkZHVtcCwgcXIvQ1JFQVRFIEZVTkNUSU9OIHB1YmxpY1wudGVzdF9m dW5jLywKKwknZnVuY3Rpb24gaXMgcHJlc2VudCBpbiBkdW1wJyk7CisKKyMgTm8gR1JBTlQgc3Rh dGVtZW50IHNob3VsZCByZWZlcmVuY2UgYSBiYXJlIG51bWVyaWMgT0lEIGFzIGEgcm9sZSBuYW1l LgordW5saWtlKCRkdW1wLCBxci9HUkFOVFxiLipcYlRPXHMrIlswLTldKyIvLAorCSdubyBHUkFO VCB3aXRoIG51bWVyaWMgT0lEIGFzIHJvbGUgbmFtZScpOworCisjIE5vIEdSQU5UIGF0IGFsbCBm b3IgdGVzdF9mdW5jOiBhbGwgaW5pdHByaXZzIGVudHJpZXMgd2VyZSBkYW5nbGluZyBhbmQKKyMg cHJvYWNsIGlzIE5VTEwsIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gZW1pdC4KK3VubGlrZSgkZHVt cCwgcXIvR1JBTlRcYi4qXGJ0ZXN0X2Z1bmMvLAorCSdubyBHUkFOVCBmb3IgdGVzdF9mdW5jIHdo ZW4gYWxsIGluaXRwcml2cyBlbnRyaWVzIGFyZSBkYW5nbGluZycpOworCitkb25lX3Rlc3Rpbmco KTsKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000afa0dc0654955d02--