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 1tW5Q7-00E4AM-KN for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jan 2025 03:10:48 +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 1tW5Q6-00BPNP-6s for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jan 2025 03:10:45 +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.94.2) (envelope-from ) id 1tW5Q5-00BPNG-MU for pgsql-hackers@lists.postgresql.org; Fri, 10 Jan 2025 03:10:45 +0000 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tW5Q1-000q1U-2M for pgsql-hackers@postgresql.org; Fri, 10 Jan 2025 03:10:44 +0000 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2ee76befe58so2680871a91.2 for ; Thu, 09 Jan 2025 19:10:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xzilla-net.20230601.gappssmtp.com; s=20230601; t=1736478640; x=1737083440; 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=/z55MNRjFDujOChzcKhvQV4f+bgBa4NkEduXQ78JO+k=; b=fd6En11qTuxV3MJYiWyQUQlGjY0aZXI57W8a7MoCy3GntvNdiiooFP5EaaxOednkB1 TZTl9zvNdmoNdLjRhz2bacWq+4EVWbMNTyVtYq6l/hZIq4kPy9UQUO4ACaBXKXm/Ml27 0yDllb+X410BeNi2kLp8wPphI/K/h30MbComktzKa6yarFedlAKH5vJSrUAx9yz8EoAK aFcbELDdUDoUEYMVyeKdDv7Ktf0BGR2BdGaDB5yCxvJu81vgNRgTWxOU7V0e9mRCNMbR o3SVdRxFg8aUmd49RDSOe2cu3pC903jUTK15rEwLtHl3xmQAPRyrV9SlUWkiFrqShRHh /YvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736478640; x=1737083440; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/z55MNRjFDujOChzcKhvQV4f+bgBa4NkEduXQ78JO+k=; b=v0yjFmCBaH2qsPNz/Zdvo1jK78PrUTwm/8QHGpLlC7Ki+cKOrT6neI16yrV/pGobSo lhi3w3b20TlxBdigI07SMZYCrVj1pmkkGYgnpJ4geBxQ+WydRjEv/2Fl1KXPxJ4z/hcv UPTcH6a8olOIFnD9iq9hVPOqmoSKG1hvlKUNAMxiurfYRfbursqLU2njKh3FM8B5wVtD vPuMNM93kX6P2xoJZN5hWoiN87lOFWtjcE+gblClvR+kc8AO5C2lDMwrk3eLNXcq9XIJ gRzGaW/ofawwCkr7l7owtnQXSmbhWgu3d0lWW5BR3hMUCHZV42XCdRJXs84liAa4Vbfw sKbA== X-Forwarded-Encrypted: i=1; AJvYcCUNtfPNG3T230Pk2Zrn68S6tlY1kpNDW6oFJBe1WpYfLuJMLxJ+pRG2XOIxzLdrCfm36a74rKrEnh4YRiJG@postgresql.org X-Gm-Message-State: AOJu0YzgMMncx7ZvDPiiNaMXnaLvxBmKG/ivPrZXvtLEMjpxLrCYFLJa 7lr2gvTRkB3JaB4J0meJkeEgeyhtaFk7zK1PDJKZNSqx32Q9vhinrA6aSLhyciaRu6BDoh+yjP6 428TXuJaoUmetPTd24xApyZ2WhvmhS23B3XAZuw== X-Gm-Gg: ASbGncsM9xxESKtDpxsr3sm88TkSpH6e81HOvq61tYrM9zf1UPXA94JRyEeK8u+XOJL 5Eiid4p2H0p7IsYnMQCOsTtUhh2Hb7LTUQEQFb44= X-Google-Smtp-Source: AGHT+IHLDTuLRM0mjSAim2kmPXF7pMEg0+OuZ7KY2GQkl4bJDeVCIt38Wybeoppz054k4UzGMWqd4YwwacQulyHAHBo= X-Received: by 2002:a17:90b:2e10:b0:2ea:4a6b:79d1 with SMTP id 98e67ed59e1d1-2f548eb3213mr13626120a91.11.1736478640022; Thu, 09 Jan 2025 19:10:40 -0800 (PST) MIME-Version: 1.0 References: <8f31307e0de000a103a9713e19db5ec07354ffb3.camel@cybertec.at> <222e84b3f258d5487de5b5a0f1119e00b84071bc.camel@cybertec.at> In-Reply-To: From: Robert Treat Date: Thu, 9 Jan 2025 22:10:25 -0500 X-Gm-Features: AbW1kvZyYhLDzcT2Gfquh7X4h5Vf8u4WUXQ2NylXea0Q9gAujp3934jxal5nQkA Message-ID: Subject: Re: Question about behavior of deletes with REPLICA IDENTITY NOTHING To: Peter Smith Cc: Amit Kapila , Laurenz Albe , James Coleman , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000800bf0062b517009" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000800bf0062b517009 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jan 9, 2025 at 2:46=E2=80=AFAM Peter Smith = wrote: > > On Sat, Jan 4, 2025 at 4:23=E2=80=AFAM Robert Treat wrot= e: > > > > On Wed, Dec 18, 2024 at 5:56=E2=80=AFAM Amit Kapila wrote: > > > > > > On Thu, Feb 8, 2024 at 9:57=E2=80=AFAM Laurenz Albe wrote: > > > > > > > > On Thu, 2024-02-08 at 13:40 +1100, Peter Smith wrote: > > > > > - how to set the replica identity. If a table without a replic= a identity is > > > > > + how to set the replica identity. If a table without a replic= a identity > > > > > + (or with replica identity behavior the same as NOTHI= NG) is > > > > > added to a publication that replicates UPDATE > > > > > or DELETE operations then > > > > > subsequent UPDATE or DELETE > > > > > > > > I had the impression that the root of the confusion was the perceiv= ed difference > > > > between "REPLICA IDENTITY NOTHING" and "no replica identity", and t= hat change > > > > doesn't improve that. > > > > > > > > How about: > > > > > > > > If a table without a replica identity (explicitly set to NOTHING, > > > > or set to a primary key or index that doesn't exist) is added ... > > > > > > > > > > Is it correct to say "set to a primary key or index that doesn't > > > exist"? Because when it is set to the primary key then it should work= . > > > > > > I think Peter's proposal along with Ashutosh's proposal is the simple= r > > > approach to clarify things in this area but I am fine if others find > > > some other way of updating docs better. > > > > > > > After reading this thread, I think part of the confusion here is that > > technically speaking there is no such thing as having "no replica > > identity"; when a table is created, by default it's "replica identity" > > is set to DEFAULT, and how it behaves at that point will be dependent > > on the structure of the table (PK or no PK), not whether it is being > > replicated/published. To that end, I've taken the above suggestions > > and re-worked them to remove that language, as well as add some > > additional clarity. > > > > Patch attached for this, I am going to update the commitfest with > > myself as author and will work this further if needed. Thanks all. > > > > Robert Treat > > https://xzilla.net > > Hi Robert. > > Thanks for picking up this patch. > > Some review comments for the 0001 patch. > > =3D=3D=3D=3D=3D=3D > doc/src/sgml/logical-replication.sgml > > 1. > fallback if no other solution is possible. If a replica identity oth= er > than FULL is set on the publisher side, a > replica identity > comprising the same or fewer columns must also be set on the subscrib= er > - side. See for de= tails on > - how to set the replica identity. If a table without a replica identi= ty is > + side. If a table with replica identity set to NOTHING > + (or set to use a primary key or index that doesn't exist) is > added to a publication that replicates UPDATE > or DELETE operations then > subsequent UPDATE or DELETE > operations will cause an error on the publisher. INSERT > operations can proceed regardless of any replica identity. > + See for details o= n > + how to set the replica identity. > > 1a. > That part "If a table with replica identity set to > NOTHING (or set to use a primary key or index that > doesn't exist) is added ..." is not very clear to me. > > IIUC, there are 3 ways for this to be a problem: > i) RI is set to NOTHING > ii) RI is set to DEFAULT but there is no valid PK =3D=3D> same as NOTHING > iii) RI is set USING INDEX but then that index gets dropped =3D=3D> same = as NOTHING > > To avoid any misunderstandings, why don't we just spell that out in > full? So, ... > > SUGGESTION > A replica identity behaves the same as NOTHING when > it is set to DEFAULT and there is no primary key, > or when it is set USING INDEX but the index no > longer exists. If a table with replica identity set to > NOTHING (or behaving the same as > NOTHING) is added to a publication that replicates > UPDATE or DELETE operations then > subsequent UPDATE or DELETE > operations will cause an error on the publisher. > ~ > This felt a little wordy, but incorporated it into an updated version. > 1b. > I've always thought that for this important topic of logical > replication it is unusual that there is not even a heading for this > topic anywhere. This makes it unnecessarily difficult to find this > information. IMO it would greatly help just to have a "Replica > Identity" subsection for all this paragraph, so then it will appear > nicely in the Chapter 29 table-of-contents making it much easier to > find. > > ~ > > 1c. > That great big slab of paragraph text is hard to read. I suspect it > was done that way simply to separate the RI topic visually from the > other (paragraph) topics of the sect1 heading. But now, after we > introduce the sect2 heading (my suggestion #1b above), we don't have > to do that anymore, so more blank lines can be added and it improves > the readability a lot. > Agreed. > =3D=3D=3D=3D=3D=3D > src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml > > 2. > > - Records the old values of the columns of the primary key, if an= y. > + Records the old values of the columns of the primary key. When = there > + is no primary key, the behavior is the same as > NOTHING. > This is the default for non-system tables. > > > Currently what "This" refers to seems ambiguous. It might be better to > rearrange to put that last sentence as second. > > SUGGESTION > Records the old values of the columns of the primary key. This is the > default for non-system tables. When there is no primary key, the > behavior is the same as NOTHING. > > =3D=3D=3D=3D=3D=3D > +1 > PSA a diff patch atop yours which makes my suggested changes > Updated patch incorporating your latest changes attached. Robert Treat https://xzilla.net --000000000000800bf0062b517009 Content-Type: application/octet-stream; name="v2-0001-Expand-and-clarify-Replica-Identity-information.patch" Content-Disposition: attachment; filename="v2-0001-Expand-and-clarify-Replica-Identity-information.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5q5mcf30 RnJvbSA4NDI1NWI2ZjcyYWIxYzM4OGI5NjQ3ODJjOGE5MjE5YTQwNDkyZmI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgVHJlYXQgPHJvYkB4emlsbGEubmV0PgpEYXRlOiBU aHUsIDkgSmFuIDIwMjUgMjE6MjM6MzEgLTA1MDAKU3ViamVjdDogW1BBVENIIHYyXSBFeHBhbmQg YW5kIGNsYXJpZnkgUmVwbGljYSBJZGVudGl0eSBpbmZvcm1hdGlvbgoKQmFzZWQgb24gZGlzY3Vz c2lvbiBmcm9tIEphbWVzIENvbGVtYW4sIFBldGVyIFNtaXRoLCBMYXVyZW56IEFsYmUsIGFuZCBB bWl0IEthcGFsYS4KLS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIHwg NzkgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Rh YmxlLnNnbWwgICAgIHwgIDUgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwg MzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXgg ODI5MGNkMWEwOC4uOGU3ZmNmMGY4ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwt cmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5z Z21sCkBAIC0xMjQsMzUgKzEyNCw2IEBACiAgICA8Y29tbWFuZD5UUlVOQ0FURTwvY29tbWFuZD4u IFNlZSA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXJvdy1maWx0ZXIiLz4pLgog ICA8L3BhcmE+CiAKLSAgPHBhcmE+Ci0gICBBIHB1Ymxpc2hlZCB0YWJsZSBtdXN0IGhhdmUgYSA8 Zmlyc3R0ZXJtPnJlcGxpY2EgaWRlbnRpdHk8L2ZpcnN0dGVybT4gY29uZmlndXJlZCBpbgotICAg b3JkZXIgdG8gYmUgYWJsZSB0byByZXBsaWNhdGUgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPgot ICAgYW5kIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4gb3BlcmF0aW9ucywgc28gdGhhdCBhcHBy b3ByaWF0ZSByb3dzIHRvCi0gICB1cGRhdGUgb3IgZGVsZXRlIGNhbiBiZSBpZGVudGlmaWVkIG9u IHRoZSBzdWJzY3JpYmVyIHNpZGUuICBCeSBkZWZhdWx0LAotICAgdGhpcyBpcyB0aGUgcHJpbWFy eSBrZXksIGlmIHRoZXJlIGlzIG9uZS4gIEFub3RoZXIgdW5pcXVlIGluZGV4ICh3aXRoCi0gICBj ZXJ0YWluIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzKSBjYW4gYWxzbyBiZSBzZXQgdG8gYmUgdGhl IHJlcGxpY2EKLSAgIGlkZW50aXR5LiAgSWYgdGhlIHRhYmxlIGRvZXMgbm90IGhhdmUgYW55IHN1 aXRhYmxlIGtleSwgdGhlbiBpdCBjYW4gYmUgc2V0Ci0gICB0byByZXBsaWNhIGlkZW50aXR5IDxs aXRlcmFsPkZVTEw8L2xpdGVyYWw+LCB3aGljaCBtZWFucyB0aGUgZW50aXJlIHJvdyBiZWNvbWVz Ci0gICB0aGUga2V5LiAgV2hlbiByZXBsaWNhIGlkZW50aXR5IDxsaXRlcmFsPkZVTEw8L2xpdGVy YWw+IGlzIHNwZWNpZmllZCwKLSAgIGluZGV4ZXMgY2FuIGJlIHVzZWQgb24gdGhlIHN1YnNjcmli ZXIgc2lkZSBmb3Igc2VhcmNoaW5nIHRoZSByb3dzLiAgQ2FuZGlkYXRlCi0gICBpbmRleGVzIG11 c3QgYmUgYnRyZWUgb3IgaGFzaCwgbm9uLXBhcnRpYWwsIGFuZCB0aGUgbGVmdG1vc3QgaW5kZXgg ZmllbGQgbXVzdAotICAgYmUgYSBjb2x1bW4gKG5vdCBhbiBleHByZXNzaW9uKSB0aGF0IHJlZmVy ZW5jZXMgdGhlIHB1Ymxpc2hlZCB0YWJsZSBjb2x1bW4uCi0gICBUaGVzZSByZXN0cmljdGlvbnMg b24gdGhlIG5vbi11bmlxdWUgaW5kZXggcHJvcGVydGllcyBhZGhlcmUgdG8gc29tZSBvZiB0aGUK LSAgIHJlc3RyaWN0aW9ucyB0aGF0IGFyZSBlbmZvcmNlZCBmb3IgcHJpbWFyeSBrZXlzLiAgSWYg dGhlcmUgYXJlIG5vIHN1Y2gKLSAgIHN1aXRhYmxlIGluZGV4ZXMsIHRoZSBzZWFyY2ggb24gdGhl IHN1YnNjcmliZXIgc2lkZSBjYW4gYmUgdmVyeSBpbmVmZmljaWVudCwKLSAgIHRoZXJlZm9yZSBy ZXBsaWNhIGlkZW50aXR5IDxsaXRlcmFsPkZVTEw8L2xpdGVyYWw+IHNob3VsZCBvbmx5IGJlIHVz ZWQgYXMgYQotICAgZmFsbGJhY2sgaWYgbm8gb3RoZXIgc29sdXRpb24gaXMgcG9zc2libGUuICBJ ZiBhIHJlcGxpY2EgaWRlbnRpdHkgb3RoZXIKLSAgIHRoYW4gPGxpdGVyYWw+RlVMTDwvbGl0ZXJh bD4gaXMgc2V0IG9uIHRoZSBwdWJsaXNoZXIgc2lkZSwgYSByZXBsaWNhIGlkZW50aXR5Ci0gICBj b21wcmlzaW5nIHRoZSBzYW1lIG9yIGZld2VyIGNvbHVtbnMgbXVzdCBhbHNvIGJlIHNldCBvbiB0 aGUgc3Vic2NyaWJlcgotICAgc2lkZS4gIFNlZSA8eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJ0YWJs ZS1yZXBsaWNhLWlkZW50aXR5Ii8+IGZvciBkZXRhaWxzIG9uCi0gICBob3cgdG8gc2V0IHRoZSBy ZXBsaWNhIGlkZW50aXR5LiAgSWYgYSB0YWJsZSB3aXRob3V0IGEgcmVwbGljYSBpZGVudGl0eSBp cwotICAgYWRkZWQgdG8gYSBwdWJsaWNhdGlvbiB0aGF0IHJlcGxpY2F0ZXMgPGNvbW1hbmQ+VVBE QVRFPC9jb21tYW5kPgotICAgb3IgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcGVyYXRpb25z IHRoZW4KLSAgIHN1YnNlcXVlbnQgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBvciA8Y29tbWFu ZD5ERUxFVEU8L2NvbW1hbmQ+Ci0gICBvcGVyYXRpb25zIHdpbGwgY2F1c2UgYW4gZXJyb3Igb24g dGhlIHB1Ymxpc2hlci4gIDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4KLSAgIG9wZXJhdGlvbnMg Y2FuIHByb2NlZWQgcmVnYXJkbGVzcyBvZiBhbnkgcmVwbGljYSBpZGVudGl0eS4KLSAgPC9wYXJh PgotCiAgIDxwYXJhPgogICAgRXZlcnkgcHVibGljYXRpb24gY2FuIGhhdmUgbXVsdGlwbGUgc3Vi c2NyaWJlcnMuCiAgIDwvcGFyYT4KQEAgLTE2OSw2ICsxNDAsNTYgQEAKICAgIHRyYW5zYWN0aW9u YWwsIHNvIHRoZSB0YWJsZSB3aWxsIHN0YXJ0IG9yIHN0b3AgcmVwbGljYXRpbmcgYXQgdGhlIGNv cnJlY3QKICAgIHNuYXBzaG90IG9uY2UgdGhlIHRyYW5zYWN0aW9uIGhhcyBjb21taXR0ZWQuCiAg IDwvcGFyYT4KKworICA8c2VjdDIgaWQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tcHVibGljYXRpb24t cmVwbGljYS1pZGVudGl0eSI+CisgICA8dGl0bGU+UmVwbGljYSBJZGVudGl0eTwvdGl0bGU+Cisg ICA8cGFyYT4KKyAgICBBIHB1Ymxpc2hlZCB0YWJsZSBtdXN0IGhhdmUgYSA8Zmlyc3R0ZXJtPnJl cGxpY2EgaWRlbnRpdHk8L2ZpcnN0dGVybT4gY29uZmlndXJlZCBpbgorICAgIG9yZGVyIHRvIGJl IGFibGUgdG8gcmVwbGljYXRlIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4KKyAgICBhbmQgPGNv bW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcGVyYXRpb25zLCBzbyB0aGF0IGFwcHJvcHJpYXRlIHJv d3MgdG8KKyAgICB1cGRhdGUgb3IgZGVsZXRlIGNhbiBiZSBpZGVudGlmaWVkIG9uIHRoZSBzdWJz Y3JpYmVyIHNpZGUuCisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBCeSBkZWZhdWx0LAorICAg IHRoaXMgaXMgdGhlIHByaW1hcnkga2V5LCBpZiB0aGVyZSBpcyBvbmUuIEFub3RoZXIgdW5pcXVl IGluZGV4ICh3aXRoCisgICAgY2VydGFpbiBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cykgY2FuIGFs c28gYmUgc2V0IHRvIGJlIHRoZSByZXBsaWNhCisgICAgaWRlbnRpdHkuICBJZiB0aGUgdGFibGUg ZG9lcyBub3QgaGF2ZSBhbnkgc3VpdGFibGUga2V5LCB0aGVuIGl0IGNhbiBiZSBzZXQKKyAgICB0 byByZXBsaWNhIGlkZW50aXR5IDxsaXRlcmFsPkZVTEw8L2xpdGVyYWw+LCB3aGljaCBtZWFucyB0 aGUgZW50aXJlIHJvdyBiZWNvbWVzCisgICAgdGhlIGtleS4gIFdoZW4gcmVwbGljYSBpZGVudGl0 eSA8bGl0ZXJhbD5GVUxMPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQsCisgICAgaW5kZXhlcyBjYW4g YmUgdXNlZCBvbiB0aGUgc3Vic2NyaWJlciBzaWRlIGZvciBzZWFyY2hpbmcgdGhlIHJvd3MuIENh bmRpZGF0ZQorICAgIGluZGV4ZXMgbXVzdCBiZSBidHJlZSBvciBoYXNoLCBub24tcGFydGlhbCwg YW5kIHRoZSBsZWZ0bW9zdCBpbmRleCBmaWVsZCBtdXN0CisgICAgYmUgYSBjb2x1bW4gKG5vdCBh biBleHByZXNzaW9uKSB0aGF0IHJlZmVyZW5jZXMgdGhlIHB1Ymxpc2hlZCB0YWJsZSBjb2x1bW4u CisgICAgVGhlc2UgcmVzdHJpY3Rpb25zIG9uIHRoZSBub24tdW5pcXVlIGluZGV4IHByb3BlcnRp ZXMgYWRoZXJlIHRvIHNvbWUgb2YgdGhlCisgICAgcmVzdHJpY3Rpb25zIHRoYXQgYXJlIGVuZm9y Y2VkIGZvciBwcmltYXJ5IGtleXMuICBJZiB0aGVyZSBhcmUgbm8gc3VjaAorICAgIHN1aXRhYmxl IGluZGV4ZXMsIHRoZSBzZWFyY2ggb24gdGhlIHN1YnNjcmliZXIgc2lkZSBjYW4gYmUgdmVyeSBp bmVmZmljaWVudCwKKyAgICB0aGVyZWZvcmUgcmVwbGljYSBpZGVudGl0eSA8bGl0ZXJhbD5GVUxM PC9saXRlcmFsPiBzaG91bGQgb25seSBiZSB1c2VkIGFzIGEKKyAgICBmYWxsYmFjayBpZiBubyBv dGhlciBzb2x1dGlvbiBpcyBwb3NzaWJsZS4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPgorICAgIElm IGEgcmVwbGljYSBpZGVudGl0eSBvdGhlcgorICAgIHRoYW4gPGxpdGVyYWw+RlVMTDwvbGl0ZXJh bD4gaXMgc2V0IG9uIHRoZSBwdWJsaXNoZXIgc2lkZSwgYSByZXBsaWNhIGlkZW50aXR5CisgICAg Y29tcHJpc2luZyB0aGUgc2FtZSBvciBmZXdlciBjb2x1bW5zIG11c3QgYWxzbyBiZSBzZXQgb24g dGhlIHN1YnNjcmliZXIKKyAgICBzaWRlLgorICAgPC9wYXJhPgorICAgPHBhcmE+CisgICAgSWYg YSB0YWJsZSB3aXRoIHJlcGxpY2EgaWRlbnRpdHkgc2V0IHRvIDxsaXRlcmFsPk5PVEhJTkc8L2xp dGVyYWw+CisgICAgKG9yIHNldCA8Y29tbWFuZD5ERUZBVUxUPC9jb21tYW5kPiBidXQgd2l0aCBu byBwcmltYXJ5IGtleSwgb3Igc2V0CisgICAgPGNvbW1hbmQ+VVNJTkcgSU5ERVg8L2NvbW1hbmQ+ IGJ1dCB0aGUgaW5kZXggaGFzIGJlZW4gZHJvcHBlZCkgaXMKKyAgICBhZGRlZCB0byBhIHB1Ymxp Y2F0aW9uIHRoYXQgcmVwbGljYXRlcyA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+CisgICAgb3Ig PGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcGVyYXRpb25zLAorICAgIHN1YnNlcXVlbnQgPGNv bW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBvciA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+CisgICAg b3BlcmF0aW9ucyB3aWxsIGNhdXNlIGFuIGVycm9yIG9uIHRoZSBwdWJsaXNoZXIuCisgICA8L3Bh cmE+CisgICA8cGFyYT4KKyAgICA8Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+CisgICAgb3BlcmF0 aW9ucyBjYW4gcHJvY2VlZCByZWdhcmRsZXNzIG9mIGFueSByZXBsaWNhIGlkZW50aXR5LgorICAg PC9wYXJhPgorICAgPHBhcmE+CisgICAgU2VlIDx4cmVmIGxpbmtlbmQ9InNxbC1hbHRlcnRhYmxl LXJlcGxpY2EtaWRlbnRpdHkiLz4gZm9yIGRldGFpbHMgb24KKyAgICBob3cgdG8gc2V0IHRoZSBy ZXBsaWNhIGlkZW50aXR5LgorICAgPC9wYXJhPgorICA8L3NlY3QyPgorCiAgPC9zZWN0MT4KIAog IDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1zdWJzY3JpcHRpb24iPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sCmluZGV4IGM4ZjdhYjdkOTUuLmFjNjdjM2YyNWYgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3RhYmxlLnNnbWwKQEAgLTkyNyw4ICs5MjcsOSBAQCBXSVRIICggTU9EVUxVUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4s IFJFTQogICAgICAgIDx0ZXJtPjxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+PC90ZXJtPgogICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICAgPHBhcmE+Ci0gICAgICAgICBSZWNvcmRzIHRoZSBvbGQg dmFsdWVzIG9mIHRoZSBjb2x1bW5zIG9mIHRoZSBwcmltYXJ5IGtleSwgaWYgYW55LgotICAgICAg ICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3Igbm9uLXN5c3RlbSB0YWJsZXMuCisgICAgICAgICBS ZWNvcmRzIHRoZSBvbGQgdmFsdWVzIG9mIHRoZSBjb2x1bW5zIG9mIHRoZSBwcmltYXJ5IGtleS4K KyAgICAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG5vbi1zeXN0ZW0gdGFibGVzLiBXaGVu IHRoZXJlCisgICAgICAgICBpcyBubyBwcmltYXJ5IGtleSwgdGhlIGJlaGF2aW9yIGlzIHRoZSBz YW1lIGFzIDxsaXRlcmFsPk5PVEhJTkc8L2xpdGVyYWw+LgogICAgICAgICA8L3BhcmE+CiAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgotLSAKMi4yNC4zIChBcHBsZSBH aXQtMTI4KQoK --000000000000800bf0062b517009--