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 1w2VcU-000M08-1d for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 14:42:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2VcS-002DmM-19 for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 14:42:04 +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 1w2VcR-002DmE-3A for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 14:42:04 +0000 Received: from mail-yx1-xb135.google.com ([2607:f8b0:4864:20::b135]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2VcP-00000000cNS-1p4W for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 14:42:03 +0000 Received: by mail-yx1-xb135.google.com with SMTP id 956f58d0204a3-64c9a398bc7so6478259d50.2 for ; Tue, 17 Mar 2026 07:42:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773758519; cv=none; d=google.com; s=arc-20240605; b=gMQd24raFazrC/zklO7TNP7dBsvvatt5aviUm59P/mXlRaPkZAENv9jWaptyKZ/uX4 ZKR18RGYVLU5JKyczQR1BkqKm1rC+phVd5Mu+DsD+qDtn68RDlA0A1y0niPi3E0CTj8C RmOpe/eHzkB1DacuN0h+w/jTKLi5dHXEsv7xono+frmHZRFxUafk8Xcxo+oqK83ZKNR2 9N9fR49DAoW0ZwNFxgMGXvXFJLKOK3ye/ww1eOwOk87dSlL3igfQ/TvK9r6aKSZnE4lt hvzOTzz1csA+OOYj4e1Jn6MUwhmI7O3n3W+afVabT+aZ3gvFgiPIU1/eP0UWS6ptof3y XdYw== 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=orpeOAJK8ZWXtc509w+lGa4KkZ6uuejatsrXQA3r4jc=; fh=eg1v1tbo8qzwuzBb95PPCm7pJ1Ilc0OrPAXQBwwUjfo=; b=dMnQ0tW9WAbJccX6ox/8XPybfnR0bYG1mxSFvpVnINuvoyAoQEsZL/F1xSGiCLI/u7 RjcvRHpZgBZfbfNmrfXS9EKUEFg4VMCw/aSqQOiDYrWNAap8fK37gdzbPPoUpx/08Nlj Z26zI3aXNAlb39Mr2OhoNM/IT/GT0iNKZK+jCIdUWGsRQ/Su9ytNQTnQFXuxf6ewGgn/ gVw79kBlKE+ABtaz+RZKBD3b3W5TRf1dsPlrV+9EclDUIPoALi48zJcCTJd7getVpSXs sGYce3aiCSlxRl/fbbkG429UhgVnRdHLSe7hwHgfZmOvo2/vpkSdPjFYAfhDx4GGTG1L dWxQ==; 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=20230601; t=1773758519; x=1774363319; 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=orpeOAJK8ZWXtc509w+lGa4KkZ6uuejatsrXQA3r4jc=; b=QyrnxUv1R5FT1jPJmAeTp/39sGiAoJ2K2ItkdaFfrq/Hm2CRSmyVhgUgJDVQPd/wrE zV9X9djh8fMceY9qINXkyY02htGs3+RmwdE9bD3vpOuxcQdjxK2x0X36u+uCB/G1tBOF olr0eJ+5UeYgKw3MaHA3Jg4Wt1Ycs7BV66NrTR6fLzHiB4b4oOKOJys3ZXYL3bkcStYe ZqXY8Swp0K1mDCiHYUhZYmltIVlnmWK0OVRFMPpdWKiquRlqEw3xdF8MRhCWarvXADSB JWfkpnW3j9mtcKCUslbyjctMgGJY9kZMPnVhUdxEbtHTf66xrB7agYdpHNgr2/2Lj14C WmJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773758519; x=1774363319; 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=orpeOAJK8ZWXtc509w+lGa4KkZ6uuejatsrXQA3r4jc=; b=GPWuh+CNVutDINsLy9OHrRW+ShPcJyWqRLSfAIbxZbGH/3BXrk6l0yOurEGloZ+twV s/Gu+XCDDP9UdnirNEiZbb3WclNDjS34SfFAjyaf0Cw1LUgvbeu6IkBpGXhZuml3I+Vu UDXpw9/PPm+aaBoNLU1vra0xaKZhQFHfn7CuDTTsmZrRFmbUXz2YQfXgqreXF8ikh90K RsX3NGs8FK5nohMjIqhmGZgps2c7m8cEk4aoR2OBmV84UZO1SDOeI34ns6OMQcx6MzSO FCqeTAXWRk3SgqxECSZU/EpHIqKQGdrT3fO24kyVxUVEGECxIx5xNxOWoaZeSkWrV8Gc 3neg== X-Forwarded-Encrypted: i=1; AJvYcCUncQbJADkJr0BWSYD0Oj0ieW7NCneLiyNbmbXPo1mlv92VrjxuWZtqGJLriz4oj78bpCZ7dRtWynL9K+l1@lists.postgresql.org X-Gm-Message-State: AOJu0YwgbMsEtmmBf7Rit4zibwOT/GpLyDGnofvSTQT7h5P/nWhktahX +CFXN2zUUvYY6voCFTM7rgkGcQEUrKGmrTPi17HqNJZizNuZ9sxRi6I86fCyeJ0Rp0Ekp/08VNn rjiqgI2mwKjacPuaHaYvqaJ2UCJ91Gdk= X-Gm-Gg: ATEYQzxVNhP5RhypQgFQ/KdeRID++2PX3155K0ehpe6QkT7q5CxlQy/xyDzwDZdd2+2 /XXVLHoKTpGrp+gI2q2QYEre/dyy8wjlRlJ/9Se2qGLhU+QaiEz/Uiv3+mH3snGuEv3Tm5vYiSs SEAM+riRXXWYbrQqhVSmvp1RFes+yrQsKgOMV6peDE25fYwfdfbGGjSzQ9zwIUoqz6TsnOpj5J6 ljDGvsNVrWcF/PUB8xUUeCyu12pn7tQ82Qv3t/QN29S1DIeTacq2WR+2gXAaMFnWF0DtfIAUsgV ElrQ7aL20tlCr+sk X-Received: by 2002:a05:690e:e20:b0:644:444f:3bd1 with SMTP id 956f58d0204a3-64e63086424mr13018634d50.68.1773758519346; Tue, 17 Mar 2026 07:41:59 -0700 (PDT) MIME-Version: 1.0 References: <2155281.1767900170@sss.pgh.pa.us> <431484.1768433414@sss.pgh.pa.us> In-Reply-To: From: Dave Cramer Date: Tue, 17 Mar 2026 10:41:41 -0400 X-Gm-Features: AaiRm52djcG-6b6rqKWeEPD9xMnfge2_I1-rKs_fKsmS0Esmwh7_DW1JbpDhWhk Message-ID: Subject: Re: Proposal to allow setting cursor options on Portals To: Hannu Krosing Cc: Robert Haas , Tom Lane , Jelte Fennema-Nio , Jacob Champion , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="00000000000076c48b064d39567b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000076c48b064d39567b Content-Type: multipart/alternative; boundary="00000000000076c489064d395679" --00000000000076c489064d395679 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Patch rebased, now ready for review Dave Cramer On Wed, 4 Mar 2026 at 10:35, Dave Cramer wrote: > > > On Wed, 4 Mar 2026 at 09:26, Dave Cramer wrote: > >> >> >> On Thu, 15 Jan 2026 at 16:06, Hannu Krosing wrote: >> >>> First, let me say that I very much support getting this into the wire >>> protocol. >>> >>> As for ways to extend the protocol, I have been myself working on >>> another patch + extension where one can return extra info in >>> ReadyForQuery message >>> >>> The first things to add are >>> * CommitLSN so we can make use of ability to WAIT FOR LSN on replica >>> and two connection-pooling helpers >>> * a flag telling that there are HOLD CURSORS >>> * a flag telling that there are temp tables >>> >>> This extra feedback is enabled by setting a flag, so no flag -- >>> nothing to confuse the client. >>> The extras themselves are uniform (length, tag, data) so client can >>> ignore any tag they do not recognize. >>> >>> On Thu, Jan 15, 2026 at 8:11=E2=80=AFPM Dave Cramer >>> wrote: >>> > >>> > >>> > On Thu, 15 Jan 2026 at 14:00, Robert Haas >>> wrote: >>> >> >>> ... >>> >> I think what I like least about this proposal is the feeling that >>> >> we're about to embark on a long slippery slope of changing the >>> >> protocol a little bit in every new PG version. The cancel key thing = is >>> >> a small change, look here's another. If we just keep doing that, we'= ll >>> >> end up with either a lot of minor version bumps or a lot of >>> >> extensions. I don't foresee a good outcome either way. This is a >>> >> widely used, widely adopted protocol. The idea that we can just star= t >>> >> tweaking it a little bit every year and have nothing bad happened >>> >> seems wild, regardless of how we do the tweaking. >>> >>> I think "tweaking ait little bit" and only whhere needed is exactly >>> the right approach, if it can be cleanly isolated. >>> >>> My approach to protocol extension modulation *is* the ability to >>> enable different parts of the protocol individually. >>> >>> For example the protocol extension to allow cursor/portal flags could >>> be implemented this way >>> >>> Client has to set a flag to PROTOCOL_PORTAL_OPTIONS=3Dtrue to tell the >>> server that new protocol messages are coming >>> - If flag setting fails, client will not send the new protocol messages >>> - If flag setting succeeds, then it is ok to send the new messages >>> corresponding to the flag. >>> >>> This way the extra packets are disconnected from protocol version and >>> can be enabled/disabled individually and per connection >>> >>> And it also lets one cleanly backport the change as needed without >>> affecting anything else. >>> >>> > This leaves us with an all or nothing solution, which practically >>> means we do nothing, since we have to wait until we have a sufficient >>> backlog of >>> > changes or features to change the protocol. I see that as untenable, >>> unless you are now advocating for using extensions for everything ? >>> > >>> > Dave >>> >> >> I have modified the patch to use protocol options instead of protocol >> version >> > > resending with a different patch name as I think the commitfest app won't > pick it up with the same name > > >> >> See new version attached >> > --00000000000076c489064d395679 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Patch rebased, now ready for review


Dave Cramer


On Wed, 4 Mar 2026 at 10:35, Dave Cramer <davecramer@gmail.com> wrote:

On Wed, 4 Mar 2026 at 09:26, Dave Cramer <davecramer@gmail.com> wrote:
<= /div>


On Thu, 15 Jan 2026 at 16:06, Hannu Krosing <hannuk@google.com> wrote= :
First, let me = say that I very much support getting this into the wire protocol.

As for ways to extend the protocol, I have been myself working on
another patch + extension where one can return extra info in
ReadyForQuery message

The first things to add are
* CommitLSN so we can make use of ability to WAIT FOR LSN on replica
and two connection-pooling helpers
* a flag telling that there are HOLD CURSORS
* a flag telling that there are temp tables

This extra feedback is enabled by setting a flag, so no flag --
nothing to confuse the client.
The extras themselves are uniform (length, tag, data) so client can
ignore any tag they do not recognize.

On Thu, Jan 15, 2026 at 8:11=E2=80=AFPM Dave Cramer <davecramer@gmail.com> wrote:<= br> >
>
> On Thu, 15 Jan 2026 at 14:00, Robert Haas <robertmhaas@gmail.com> wrote:
>>
...
>> I think what I like least about this proposal is the feeling that<= br> >> we're about to embark on a long slippery slope of changing the=
>> protocol a little bit in every new PG version. The cancel key thin= g is
>> a small change, look here's another. If we just keep doing tha= t, we'll
>> end up with either a lot of minor version bumps or a lot of
>> extensions. I don't foresee a good outcome either way. This is= a
>> widely used, widely adopted protocol. The idea that we can just st= art
>> tweaking it a little bit every year and have nothing bad happened<= br> >> seems wild, regardless of how we do the tweaking.

I think "tweaking ait=C2=A0 little bit" and only whhere needed is= exactly
the right approach, if it can be cleanly isolated.

My approach to protocol extension modulation *is* the ability to
enable different parts of the protocol individually.

For example the protocol extension to allow cursor/portal flags could
be implemented this way

Client has to set a flag to PROTOCOL_PORTAL_OPTIONS=3Dtrue to tell the
server that new protocol messages are coming
- If flag setting fails, client will not send the new protocol messages
- If flag setting succeeds, then it is ok to send the new messages
corresponding to the flag.

This way the extra packets are disconnected from protocol version and
can be enabled/disabled individually and per connection

And it also lets one cleanly backport the change as needed without
affecting anything else.

> This leaves us with an all or nothing solution, which practically mean= s we do nothing, since we have to wait until we have a sufficient backlog o= f
> changes or features to change the protocol. I see that as untenable, u= nless you are now advocating for using extensions for everything ?
>
> Dave

I have modified the patch to = use protocol options instead of protocol version

resending with a different patch name as I think th= e commitfest app won't pick it up with the same name
=C2=A0

See new version attached=C2=A0
--00000000000076c489064d395679-- --00000000000076c48b064d39567b Content-Type: application/octet-stream; name="0001-holdable-portals.patch" Content-Disposition: attachment; filename="0001-holdable-portals.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmuq0guj0 RnJvbSA3NjJjN2YwZmE2YTViYmU3OWVhZjk3MDBjNjMwZTEyMGU4ZDY4ZDRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENyYW1lciA8ZGF2ZWNyYW1lckBnbWFpbC5jb20+CkRh dGU6IFR1ZSwgMyBNYXIgMjAyNiAwOToxNjo1OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBB ZGQgX3BxXy5ob2xkYWJsZV9wb3J0YWwgcHJvdG9jb2wgb3B0aW9uIGZvciBob2xkYWJsZQogY3Vy c29ycwoKSW1wbGVtZW50IHN1cHBvcnQgZm9yIGNyZWF0aW5nIGhvbGRhYmxlIHBvcnRhbHMgdmlh IHRoZSBleHRlbmRlZCBxdWVyeQpwcm90b2NvbCB1c2luZyBhIG5ldyBwcm90b2NvbCBvcHRpb24g aW5zdGVhZCBvZiBidW1waW5nIHRoZSBwcm90b2NvbAp2ZXJzaW9uLiBUaGlzIGFsbG93cyBjbGll bnRzIHRvIG9wdC1pbiB0byBzZW5kaW5nIGN1cnNvciBvcHRpb25zIGluCkJpbmQgbWVzc2FnZXMu CgpQcm90b2NvbCBPcHRpb246CiAgX3BxXy5ob2xkYWJsZV9wb3J0YWw9dHJ1ZQoKV2hlbiBlbmFi bGVkLCBjbGllbnRzIGNhbiBpbmNsdWRlIGFuIG9wdGlvbmFsIEludDMyIGN1cnNvciBvcHRpb25z CmZpZWxkIGF0IHRoZSBlbmQgb2YgQmluZCBtZXNzYWdlcy4gVGhlIENVUlNPUl9PUFRfSE9MRCBi aXQgKDB4MDAyMCkKY3JlYXRlcyBhIGhvbGRhYmxlIHBvcnRhbCB0aGF0IHN1cnZpdmVzIHRyYW5z YWN0aW9uIGNvbW1pdC4KCkJlbmVmaXRzOgotIEJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBwcm90 b2NvbCAzLjIKLSBPcHQtaW4gZmVhdHVyZSB2aWEgY29ubmVjdGlvbiBwYXJhbWV0ZXIKLSBVc2Vz IHN0YW5kYXJkIF9wcV8uIHByb3RvY29sIG9wdGlvbiBtZWNoYW5pc20KLSBTZXJ2ZXIgY2FuIG5l Z290aWF0ZSBzdXBwb3J0IHZpYSBOZWdvdGlhdGVQcm90b2NvbFZlcnNpb24KCkJhY2tlbmQgQ2hh bmdlczoKLSBBZGQgaG9sZGFibGVfcG9ydGFsX2VuYWJsZWQgZmxhZyB0byBQb3J0IHN0cnVjdHVy ZQotIFBhcnNlIF9wcV8uaG9sZGFibGVfcG9ydGFsIGluIHN0YXJ0dXAgcGFja2V0IChiYWNrZW5k X3N0YXJ0dXAuYykKLSBDaGVjayBvcHRpb24gZmxhZyBpbnN0ZWFkIG9mIHByb3RvY29sIHZlcnNp b24gaW4gZXhlY19iaW5kX21lc3NhZ2UoKQotIFJlYWQgY3Vyc29yIG9wdGlvbnMgZnJvbSBCaW5k IG1lc3NhZ2Ugb25seSB3aGVuIGVuYWJsZWQKCkNsaWVudCAobGlicHEpIENoYW5nZXM6Ci0gQWRk IGhvbGRhYmxlX3BvcnRhbCBjb25uZWN0aW9uIHBhcmFtZXRlciAoZGVmYXVsdCAiMCIpCi0gQWRk IGhvbGRhYmxlX3BvcnRhbF9lbmFibGVkIGZsYWcgdG8gUEdjb25uIHN0cnVjdHVyZQotIFNlbmQg X3BxXy5ob2xkYWJsZV9wb3J0YWw9dHJ1ZSBpbiBzdGFydHVwIHBhY2tldCB3aGVuIGVuYWJsZWQK LSBJbmNsdWRlIGN1cnNvciBvcHRpb25zIGluIEJpbmQgbWVzc2FnZSB3aGVuIGVuYWJsZWQKLSBV cGRhdGUgUFFzZW5kUXVlcnlQcmVwYXJlZFdpdGhDdXJzb3JPcHRpb25zKCkgYW5kCiAgUFFzZW5k QmluZFdpdGhDdXJzb3JPcHRpb25zKCkgdG8gdXNlIG9wdGlvbiBmbGFnCgpEb2N1bWVudGF0aW9u OgotIERvY3VtZW50IF9wcV8uaG9sZGFibGVfcG9ydGFsIGluIHByb3RvY29sIG9wdGlvbnMgdGFi bGUKLSBEZXNjcmliZSBjdXJzb3Igb3B0aW9ucyBmaWVsZCBpbiBCaW5kIG1lc3NhZ2UgZm9ybWF0 Ci0gRXhwbGFpbiBob2xkYWJsZSBwb3J0YWwgbGlmZWN5Y2xlIGFuZCBiZWhhdmlvcgoKVXNhZ2U6 CiAgY29ubiA9IFBRY29ubmVjdGRiKCJkYm5hbWU9cG9zdGdyZXMgaG9sZGFibGVfcG9ydGFsPTEi KTsKICBQUXNlbmRRdWVyeVByZXBhcmVkV2l0aEN1cnNvck9wdGlvbnMoY29ubiwgc3RtdE5hbWUs IC4uLiwgMHgwMDIwKTsKClRoaXMgcmVwbGFjZXMgdGhlIHByZXZpb3VzIGFwcHJvYWNoIG9mIHVz aW5nIHByb3RvY29sIHZlcnNpb24gMy4zLgotLS0KIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s ICAgICAgICAgIHwgNDIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5k L3Rjb3AvYmFja2VuZF9zdGFydHVwLmMgIHwgMjEgKysrKysrKysrKysrLS0tCiBzcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICB8ICA1ICsrLS0KIHNyYy9pbmNsdWRlL2xpYnBxL2xp YnBxLWJlLmggICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvbGlicHEvcHFjb21tLmggICAgICAg ICAgfCAgMiArLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jICAgfCAgNCArKysK IHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYyAgICAgIHwgIDggKysrLS0tCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYyB8ICA3ICsrKysrCiBzcmMvaW50ZXJmYWNlcy9s aWJwcS9saWJwcS1pbnQuaCAgICB8ICAyICsrCiA5IGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlv bnMoKyksIDMwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggZmMyYjI4YWYyYjUuLjZl OTgwZmIxZDUxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtMTgsNyArMTgsNyBAQAogIDwvcGFyYT4KIAog IDxwYXJhPgotICBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB2ZXJzaW9uIDMuMyBvZiB0aGUgcHJv dG9jb2wsIGludHJvZHVjZWQgaW4KKyAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdmVyc2lvbiAz LjIgb2YgdGhlIHByb3RvY29sLCBpbnRyb2R1Y2VkIGluCiAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3Jl U1FMPC9wcm9kdWN0bmFtZT4gdmVyc2lvbiAxOC4gVGhlIHNlcnZlciBhbmQgdGhlIGxpYnBxCiAg IGNsaWVudCBsaWJyYXJ5IGFyZSBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIHByb3RvY29sIHZl cnNpb24gMy4wLAogICBpbXBsZW1lbnRlZCBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+IDcuNCBhbmQgbGF0ZXIuCkBAIC0xOTIsNyArMTkyLDcgQEAKICAgIDx0aXRsZT5Q cm90b2NvbCBWZXJzaW9uczwvdGl0bGU+CiAKICAgIDxwYXJhPgotICAgIFRoZSBjdXJyZW50LCBs YXRlc3QgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wgaXMgdmVyc2lvbiAzLjMuIEhvd2V2ZXIsIGZv cgorICAgIFRoZSBjdXJyZW50LCBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wgaXMgdmVy c2lvbiAzLjIuIEhvd2V2ZXIsIGZvcgogICAgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgg b2xkIHNlcnZlciB2ZXJzaW9ucyBhbmQgbWlkZGxld2FyZSB0aGF0IGRvbid0CiAgICAgc3VwcG9y dCB0aGUgdmVyc2lvbiBuZWdvdGlhdGlvbiB5ZXQsIGxpYnBxIHN0aWxsIHVzZXMgcHJvdG9jb2wg dmVyc2lvbiAzLjAKICAgICBieSBkZWZhdWx0LgpAQCAtMjE3LDcgKzIxNyw3IEBACiAgICAgdGhp cyB3b3VsZCBvY2N1ciBpZiB0aGUgY2xpZW50IHJlcXVlc3RlZCBwcm90b2NvbCB2ZXJzaW9uIDQu MCwgd2hpY2ggZG9lcwogICAgIG5vdCBleGlzdCBhcyBvZiB0aGlzIHdyaXRpbmcpLiAgSWYgdGhl IG1pbm9yIHZlcnNpb24gcmVxdWVzdGVkIGJ5IHRoZQogICAgIGNsaWVudCBpcyBub3Qgc3VwcG9y dGVkIGJ5IHRoZSBzZXJ2ZXIgKGUuZy4sIHRoZSBjbGllbnQgcmVxdWVzdHMgdmVyc2lvbgotICAg IDMuMywgYnV0IHRoZSBzZXJ2ZXIgc3VwcG9ydHMgb25seSAzLjApLCB0aGUgc2VydmVyIG1heSBl aXRoZXIgcmVqZWN0IHRoZQorICAgIDMuMiwgYnV0IHRoZSBzZXJ2ZXIgc3VwcG9ydHMgb25seSAz LjApLCB0aGUgc2VydmVyIG1heSBlaXRoZXIgcmVqZWN0IHRoZQogICAgIGNvbm5lY3Rpb24gb3Ig bWF5IHJlc3BvbmQgd2l0aCBhIE5lZ290aWF0ZVByb3RvY29sVmVyc2lvbiBtZXNzYWdlCiAgICAg Y29udGFpbmluZyB0aGUgaGlnaGVzdCBtaW5vciBwcm90b2NvbCB2ZXJzaW9uIHdoaWNoIGl0IHN1 cHBvcnRzLiAgVGhlCiAgICAgY2xpZW50IG1heSB0aGVuIGNob29zZSBlaXRoZXIgdG8gY29udGlu dWUgd2l0aCB0aGUgY29ubmVjdGlvbiB1c2luZyB0aGUKQEAgLTI1MSwxOCArMjUxLDEwIEBACiAg ICAgIDwvdGhlYWQ+CiAKICAgICAgPHRib2R5PgotICAgICAgPHJvdz4KLSAgICAgIDxlbnRyeT4z LjM8L2VudHJ5PgotICAgICAgPGVudHJ5PlBvc3RncmVTUUwgMTggYW5kIGxhdGVyPC9lbnRyeT4K LSAgICAgIDxlbnRyeT5DdXJyZW50IGxhdGVzdCB2ZXJzaW9uLiBUaGUgQmluZCBtZXNzYWdlIG5v dyBzdXBwb3J0cyBhbiBvcHRpb25hbAotICAgICAgICBjdXJzb3Igb3B0aW9ucyBmaWVsZCB0byBj b250cm9sIHBvcnRhbCBiZWhhdmlvciwgaW5jbHVkaW5nIHRoZSBhYmlsaXR5Ci0gICAgICAgIHRv IGNyZWF0ZSBob2xkYWJsZSBwb3J0YWxzIHRoYXQgc3Vydml2ZSB0cmFuc2FjdGlvbiBjb21taXQu Ci0gICAgICA8L2VudHJ5PgotICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAgICAgPGVudHJ5 PjMuMjwvZW50cnk+CiAgICAgICA8ZW50cnk+UG9zdGdyZVNRTCAxOCBhbmQgbGF0ZXI8L2VudHJ5 PgotICAgICAgPGVudHJ5PlRoZSBzZWNyZXQga2V5IHVzZWQgaW4gcXVlcnkKKyAgICAgIDxlbnRy eT5DdXJyZW50IGxhdGVzdCB2ZXJzaW9uLiBUaGUgc2VjcmV0IGtleSB1c2VkIGluIHF1ZXJ5CiAg ICAgICAgIGNhbmNlbGxhdGlvbiB3YXMgZW5sYXJnZWQgZnJvbSA0IGJ5dGVzIHRvIGEgdmFyaWFi bGUgbGVuZ3RoIGZpZWxkLiBUaGUKICAgICAgICAgQmFja2VuZEtleURhdGEgbWVzc2FnZSB3YXMg Y2hhbmdlZCB0byBhY2NvbW1vZGF0ZSB0aGF0LCBhbmQgdGhlIENhbmNlbFJlcXVlc3QKICAgICAg ICAgbWVzc2FnZSB3YXMgcmVkZWZpbmVkIHRvIGhhdmUgYSB2YXJpYWJsZSBsZW5ndGggcGF5bG9h ZC4KQEAgLTM3NCw2ICszNjYsMTYgQEAKICAgICAgPC90aGVhZD4KIAogICAgICA8dGJvZHk+Cisg ICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPl9wcV8uaG9sZGFibGVfcG9ydGFsPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+RW5hYmxlcyBzdXBwb3J0IGZvciBjdXJzb3Ig b3B0aW9ucyBpbiB0aGUgQmluZCBtZXNzYWdlLgorICAgICAgICBXaGVuIHNldCB0byA8bGl0ZXJh bD50cnVlPC9saXRlcmFsPiwgdGhlIGNsaWVudCBtYXkgaW5jbHVkZSBhbgorICAgICAgICBvcHRp b25hbCBjdXJzb3Igb3B0aW9ucyBmaWVsZCBpbiBCaW5kIG1lc3NhZ2VzIHRvIGNvbnRyb2wgcG9y dGFsCisgICAgICAgIGJlaGF2aW9yLCBzdWNoIGFzIGNyZWF0aW5nIGhvbGRhYmxlIHBvcnRhbHMg dGhhdCBzdXJ2aXZlIHRyYW5zYWN0aW9uCisgICAgICAgIGNvbW1pdC4gU2VlIDx4cmVmIGxpbmtl bmQ9InByb3RvY29sLWZsb3ctZXh0LXF1ZXJ5Ii8+IGZvciBkZXRhaWxzLgorICAgICAgPC9lbnRy eT4KKyAgICAgIDwvcm93PgorCiAgICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaXRlcmFsPl9w cV8uPHJlcGxhY2VhYmxlPltuYW1lXTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvZW50cnk+CiAg ICAgICA8ZW50cnk+QW55IG90aGVyIHBhcmFtZXRlciBuYW1lcyBiZWdpbm5pbmcgd2l0aCA8bGl0 ZXJhbD5fcHFfLjwvbGl0ZXJhbD4sCkBAIC0xMTA5LDkgKzExMTEsOSBAQCBTRUxDVCAxLzA7PCEt LSB0aGlzIHR5cG8gaXMgaW50ZW50aW9uYWwgLS0+CiAgICAgcGFzcyBOVUxMIHZhbHVlcyBmb3Ig dGhlbSBpbiB0aGUgQmluZCBtZXNzYWdlLikKICAgICBCaW5kIGFsc28gc3BlY2lmaWVzIHRoZSBm b3JtYXQgdG8gdXNlIGZvciBhbnkgZGF0YSByZXR1cm5lZAogICAgIGJ5IHRoZSBxdWVyeTsgdGhl IGZvcm1hdCBjYW4gYmUgc3BlY2lmaWVkIG92ZXJhbGwsIG9yIHBlci1jb2x1bW4uCi0gICAgSW4g cHJvdG9jb2wgMy4zIGFuZCBsYXRlciwgQmluZCBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGN1cnNv ciBvcHRpb25zCi0gICAgdG8gY29udHJvbCBwb3J0YWwgYmVoYXZpb3IsIHN1Y2ggYXMgY3JlYXRp bmcgYSBob2xkYWJsZSBwb3J0YWwgdGhhdAotICAgIHN1cnZpdmVzIHRyYW5zYWN0aW9uIGNvbW1p dC4KKyAgICBJZiB0aGUgPGxpdGVyYWw+X3BxXy5ob2xkYWJsZV9wb3J0YWw8L2xpdGVyYWw+IHBy b3RvY29sIG9wdGlvbiBpcyBlbmFibGVkLAorICAgIEJpbmQgY2FuIG9wdGlvbmFsbHkgaW5jbHVk ZSBjdXJzb3Igb3B0aW9ucyB0byBjb250cm9sIHBvcnRhbCBiZWhhdmlvciwKKyAgICBzdWNoIGFz IGNyZWF0aW5nIGEgaG9sZGFibGUgcG9ydGFsIHRoYXQgc3Vydml2ZXMgdHJhbnNhY3Rpb24gY29t bWl0LgogICAgIFRoZSByZXNwb25zZSBpcyBlaXRoZXIgQmluZENvbXBsZXRlIG9yIEVycm9yUmVz cG9uc2UuCiAgICA8L3BhcmE+CiAKQEAgLTExMzYsOCArMTEzOCw5IEBAIFNFTENUIDEvMDs8IS0t IHRoaXMgdHlwbyBpcyBpbnRlbnRpb25hbCAtLT4KIAogICAgPHBhcmE+CiAgICAgSWYgc3VjY2Vz c2Z1bGx5IGNyZWF0ZWQsIGEgbmFtZWQgcG9ydGFsIG9iamVjdCBsYXN0cyB0aWxsIHRoZSBlbmQg b2YgdGhlCi0gICAgY3VycmVudCB0cmFuc2FjdGlvbiwgdW5sZXNzIGV4cGxpY2l0bHkgZGVzdHJv eWVkLiAgSG93ZXZlciwgYSBwb3J0YWwKLSAgICBjcmVhdGVkIHdpdGggdGhlIENVUlNPUl9PUFRf SE9MRCBvcHRpb24gKHByb3RvY29sIDMuMyBhbmQgbGF0ZXIpIGlzCisgICAgY3VycmVudCB0cmFu c2FjdGlvbiwgdW5sZXNzIGV4cGxpY2l0bHkgZGVzdHJveWVkLiAgSG93ZXZlciwgaWYgdGhlCisg ICAgPGxpdGVyYWw+X3BxXy5ob2xkYWJsZV9wb3J0YWw8L2xpdGVyYWw+IHByb3RvY29sIG9wdGlv biBpcyBlbmFibGVkIGFuZAorICAgIHRoZSBwb3J0YWwgaXMgY3JlYXRlZCB3aXRoIHRoZSBDVVJT T1JfT1BUX0hPTEQgb3B0aW9uLCB0aGUgcG9ydGFsIGJlY29tZXMKICAgICA8Zmlyc3R0ZXJtPmhv bGRhYmxlPC9maXJzdHRlcm0+IGFuZCBzdXJ2aXZlcyB0cmFuc2FjdGlvbiBjb21taXQsIHJlbWFp bmluZwogICAgIHZhbGlkIHVudGlsIGV4cGxpY2l0bHkgY2xvc2VkIG9yIHRoZSBzZXNzaW9uIGVu ZHMuICBBbiB1bm5hbWVkIHBvcnRhbCBpcwogICAgIGRlc3Ryb3llZCBhdCB0aGUgZW5kIG9mIHRo ZSB0cmFuc2FjdGlvbiwgb3IgYXMgc29vbiBhcyB0aGUgbmV4dCBCaW5kCkBAIC00NDMwLDggKzQ0 MzMsOSBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJ REVOVElGWV9TWVNURU07IgogICAgICAgIDx0ZXJtPkludDMyPC90ZXJtPgogICAgICAgIDxsaXN0 aXRlbT4KICAgICAgICAgPHBhcmE+Ci0gICAgICAgICBDdXJzb3Igb3B0aW9ucyAocHJvdG9jb2wg My4zIGFuZCBsYXRlcikuICBBIGJpdG1hc2sgb2Ygb3B0aW9ucwotICAgICAgICAgZm9yIHRoZSBw b3J0YWwgYmVpbmcgY3JlYXRlZC4gIEN1cnJlbnRseSBkZWZpbmVkIGJpdHMgYXJlOgorICAgICAg ICAgQ3Vyc29yIG9wdGlvbnMgKG9wdGlvbmFsLCBvbmx5IGlmIDxsaXRlcmFsPl9wcV8uaG9sZGFi bGVfcG9ydGFsPC9saXRlcmFsPgorICAgICAgICAgaXMgZW5hYmxlZCkuICBBIGJpdG1hc2sgb2Yg b3B0aW9ucyBmb3IgdGhlIHBvcnRhbCBiZWluZyBjcmVhdGVkLgorICAgICAgICAgQ3VycmVudGx5 IGRlZmluZWQgYml0cyBhcmU6CiAgICAgICAgICA8bGl0ZXJhbD4weDAwMDE8L2xpdGVyYWw+IChD VVJTT1JfT1BUX0JJTkFSWSwgc2FtZSBhcyBzZXR0aW5nCiAgICAgICAgICByZXN1bHQgZm9ybWF0 IGNvZGVzIHRvIGJpbmFyeSksCiAgICAgICAgICA8bGl0ZXJhbD4weDAwMjA8L2xpdGVyYWw+IChD VVJTT1JfT1BUX0hPTEQsIGNyZWF0ZXMgYSBob2xkYWJsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFy dHVwLmMKaW5kZXggYzUxNzExNTkyN2MuLjA1NWJlZTI4N2Y1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL2JhY2tlbmRfc3RhcnR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2Vu ZF9zdGFydHVwLmMKQEAgLTc3OSwxMSArNzc5LDI0IEBAIFByb2Nlc3NTdGFydHVwUGFja2V0KFBv cnQgKnBvcnQsIGJvb2wgc3NsX2RvbmUsIGJvb2wgZ3NzX2RvbmUpCiAJCQl7CiAJCQkJLyoKIAkJ CQkgKiBBbnkgb3B0aW9uIGJlZ2lubmluZyB3aXRoIF9wcV8uIGlzIHJlc2VydmVkIGZvciB1c2Ug YXMgYQotCQkJCSAqIHByb3RvY29sLWxldmVsIG9wdGlvbiwgYnV0IGF0IHByZXNlbnQgbm8gc3Vj aCBvcHRpb25zIGFyZQotCQkJCSAqIGRlZmluZWQuCisJCQkJICogcHJvdG9jb2wtbGV2ZWwgb3B0 aW9uLgogCQkJCSAqLwotCQkJCXVucmVjb2duaXplZF9wcm90b2NvbF9vcHRpb25zID0KLQkJCQkJ bGFwcGVuZCh1bnJlY29nbml6ZWRfcHJvdG9jb2xfb3B0aW9ucywgcHN0cmR1cChuYW1lcHRyKSk7 CisJCQkJaWYgKHN0cmNtcChuYW1lcHRyLCAiX3BxXy5ob2xkYWJsZV9wb3J0YWwiKSA9PSAwKQor CQkJCXsKKwkJCQkJLyogRW5hYmxlIGhvbGRhYmxlIHBvcnRhbCBzdXBwb3J0IHZpYSBCaW5kIG1l c3NhZ2UgKi8KKwkJCQkJaWYgKCFwYXJzZV9ib29sKHZhbHB0ciwgJnBvcnQtPmhvbGRhYmxlX3Bv cnRhbF9lbmFibGVkKSkKKwkJCQkJCWVyZXBvcnQoRkFUQUwsCisJCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlk IHZhbHVlIGZvciBwYXJhbWV0ZXIgXCIlc1wiOiBcIiVzXCIiLAorCQkJCQkJCQkJCSJfcHFfLmhv bGRhYmxlX3BvcnRhbCIsCisJCQkJCQkJCQkJdmFscHRyKSkpOworCQkJCX0KKwkJCQllbHNlCisJ CQkJeworCQkJCQkvKiBVbnJlY29nbml6ZWQgcHJvdG9jb2wgb3B0aW9uICovCisJCQkJCXVucmVj b2duaXplZF9wcm90b2NvbF9vcHRpb25zID0KKwkJCQkJCWxhcHBlbmQodW5yZWNvZ25pemVkX3By b3RvY29sX29wdGlvbnMsIHBzdHJkdXAobmFtZXB0cikpOworCQkJCX0KIAkJCX0KIAkJCWVsc2UK IAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAxMGJiODk4ZTYxMi4uNGU0ZGU4MjIxNGIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKQEAgLTIwMTAsOCArMjAxMCw5IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmlu Z0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCXJmb3JtYXRzW2ldID0gcHFfZ2V0bXNnaW50KGlucHV0 X21lc3NhZ2UsIDIpOwogCX0KIAotCS8qIEdldCBjdXJzb3Igb3B0aW9ucyBpZiBwcmVzZW50IChw cm90b2NvbCAzLjMrKSAqLwotCWlmIChpbnB1dF9tZXNzYWdlLT5jdXJzb3IgPCBpbnB1dF9tZXNz YWdlLT5sZW4pCisJLyogR2V0IGN1cnNvciBvcHRpb25zIGlmIHByZXNlbnQgKF9wcV8uaG9sZGFi bGVfcG9ydGFsIGVuYWJsZWQpICovCisJaWYgKE15UHJvY1BvcnQtPmhvbGRhYmxlX3BvcnRhbF9l bmFibGVkICYmCisJCWlucHV0X21lc3NhZ2UtPmN1cnNvciA8IGlucHV0X21lc3NhZ2UtPmxlbikK IAl7CiAJCWN1cnNvck9wdGlvbnMgPSBwcV9nZXRtc2dpbnQoaW5wdXRfbWVzc2FnZSwgNCk7CiAJ CWVsb2coREVCVUcxLCAiZXhlY19iaW5kX21lc3NhZ2U6IHJlYWQgY3Vyc29yT3B0aW9ucz0weCUw NHggZnJvbSBtZXNzYWdlIiwgY3Vyc29yT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9saWJwcS9saWJwcS1iZS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaAppbmRleCA5 MjFiMmRhYTRmZi4uMWMxMWQ3MDZlZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xp YnBxLWJlLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaApAQCAtMTUxLDYgKzE1 MSw3IEBAIHR5cGVkZWYgc3RydWN0IFBvcnQKIAljaGFyCSAgICp1c2VyX25hbWU7CiAJY2hhcgkg ICAqY21kbGluZV9vcHRpb25zOwogCUxpc3QJICAgKmd1Y19vcHRpb25zOworCWJvb2wJICAgIGhv bGRhYmxlX3BvcnRhbF9lbmFibGVkOwkvKiBfcHFfLmhvbGRhYmxlX3BvcnRhbCBvcHRpb24gKi8K IAogCS8qCiAJICogVGhlIHN0YXJ0dXAgcGFja2V0IGFwcGxpY2F0aW9uIG5hbWUsIG9ubHkgdXNl ZCBoZXJlIGZvciB0aGUgImNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBx L3BxY29tbS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvcHFjb21tLmgKaW5kZXggMjhlNzk0NGNkZjQu LmEyOWM5Yzk0ZDc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9wcWNvbW0uaAorKysg Yi9zcmMvaW5jbHVkZS9saWJwcS9wcWNvbW0uaApAQCAtOTIsNyArOTIsNyBAQCBpc191bml4c29j a19wYXRoKGNvbnN0IGNoYXIgKnBhdGgpCiAgKiBUaGUgZWFybGllc3QgYW5kIGxhdGVzdCBmcm9u dGVuZC9iYWNrZW5kIHByb3RvY29sIHZlcnNpb24gc3VwcG9ydGVkLgogICovCiAjZGVmaW5lIFBH X1BST1RPQ09MX0VBUkxJRVNUCVBHX1BST1RPQ09MKDMsMCkKLSNkZWZpbmUgUEdfUFJPVE9DT0xf TEFURVNUCQlQR19QUk9UT0NPTCgzLDMpCisjZGVmaW5lIFBHX1BST1RPQ09MX0xBVEVTVAkJUEdf UFJPVE9DT0woMywyKQogCiAvKgogICogUmVzZXJ2ZWQgcHJvdG9jb2wgbnVtYmVycywgd2hpY2gg aGF2ZSBzcGVjaWFsIHNlbWFudGljczoKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWNvbm5lY3QuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwppbmRleCA2 N2ZhODNjYTE1OS4uYTA2MjI4MjBkN2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWNvbm5lY3QuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKQEAg LTQxNyw2ICs0MTcsMTAgQEAgc3RhdGljIGNvbnN0IGludGVybmFsUFFjb25uaW5mb09wdGlvbiBQ UWNvbm5pbmZvT3B0aW9uc1tdID0gewogCQkiU1NMLUtleS1Mb2ctRmlsZSIsICJEIiwgNjQsCiAJ b2Zmc2V0b2Yoc3RydWN0IHBnX2Nvbm4sIHNzbGtleWxvZ2ZpbGUpfSwKIAorCXsiaG9sZGFibGVf cG9ydGFsIiwgTlVMTCwgIjAiLCBOVUxMLAorCQkiSG9sZGFibGUtUG9ydGFsIiwgIiIsIDEsCisJ b2Zmc2V0b2Yoc3RydWN0IHBnX2Nvbm4sIGhvbGRhYmxlX3BvcnRhbCl9LAorCiAJLyogVGVybWlu YXRpbmcgZW50cnkgLS0tIE1VU1QgQkUgTEFTVCAqLwogCXtOVUxMLCBOVUxMLCBOVUxMLCBOVUxM LAogCU5VTEwsIE5VTEwsIDB9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1l eGVjLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKaW5kZXggNmY4NTM4MjgxOWYu LjlmYWNiNjA2ZjIwIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMK KysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCkBAIC0xNzUwLDggKzE3NTAsOCBA QCBQUXNlbmRRdWVyeVByZXBhcmVkV2l0aEN1cnNvck9wdGlvbnMoUEdjb25uICpjb25uLAogCQlw cVB1dEludChyZXN1bHRGb3JtYXQsIDIsIGNvbm4pIDwgMCkKIAkJZ290byBzZW5kRmFpbGVkOwog Ci0JLyogU2VuZCBjdXJzb3Igb3B0aW9ucyBpZiBwcm90b2NvbCAzLjMrICovCi0JaWYgKGNvbm4t PnB2ZXJzaW9uID49IFBHX1BST1RPQ09MKDMsIDMpKQorCS8qIFNlbmQgY3Vyc29yIG9wdGlvbnMg aWYgX3BxXy5ob2xkYWJsZV9wb3J0YWwgZW5hYmxlZCAqLworCWlmIChjb25uLT5ob2xkYWJsZV9w b3J0YWxfZW5hYmxlZCkKIAl7CiAJCWlmIChwcVB1dEludChjdXJzb3JPcHRpb25zLCA0LCBjb25u KSA8IDApCiAJCQlnb3RvIHNlbmRGYWlsZWQ7CkBAIC0xODY2LDggKzE4NjYsOCBAQCBQUXNlbmRC aW5kV2l0aEN1cnNvck9wdGlvbnMoUEdjb25uICpjb25uLAogCQlwcVB1dEludChyZXN1bHRGb3Jt YXQsIDIsIGNvbm4pIDwgMCkKIAkJZ290byBzZW5kRmFpbGVkOwogCi0JLyogU2VuZCBjdXJzb3Ig b3B0aW9ucyBpZiBwcm90b2NvbCAzLjMrICovCi0JaWYgKGNvbm4tPnB2ZXJzaW9uID49IFBHX1BS T1RPQ09MKDMsIDMpKQorCS8qIFNlbmQgY3Vyc29yIG9wdGlvbnMgaWYgX3BxXy5ob2xkYWJsZV9w b3J0YWwgZW5hYmxlZCAqLworCWlmIChjb25uLT5ob2xkYWJsZV9wb3J0YWxfZW5hYmxlZCkKIAl7 CiAJCWlmIChwcVB1dEludChjdXJzb3JPcHRpb25zLCA0LCBjb25uKSA8IDApCiAJCQlnb3RvIHNl bmRGYWlsZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMu YyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCmluZGV4IDhjMWZkYTVjYWYw Li5iNjRhMjMwNDhlZiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9j b2wzLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKQEAgLTI1MjEs NiArMjUyMSwxMyBAQCBidWlsZF9zdGFydHVwX3BhY2tldChjb25zdCBQR2Nvbm4gKmNvbm4sIGNo YXIgKnBhY2tldCwKIAlpZiAoY29ubi0+cHZlcnNpb24gPT0gUEdfUFJPVE9DT0xfR1JFQVNFKQog CQlBRERfU1RBUlRVUF9PUFRJT04oIl9wcV8udGVzdF9wcm90b2NvbF9uZWdvdGlhdGlvbiIsICIi KTsKIAorCS8qIEFkZCBfcHFfLmhvbGRhYmxlX3BvcnRhbCBvcHRpb24gaWYgZW5hYmxlZCAqLwor CWlmIChjb25uLT5ob2xkYWJsZV9wb3J0YWwgJiYgY29ubi0+aG9sZGFibGVfcG9ydGFsWzBdID09 ICcxJykKKwl7CisJCUFERF9TVEFSVFVQX09QVElPTigiX3BxXy5ob2xkYWJsZV9wb3J0YWwiLCAi dHJ1ZSIpOworCQljb25uLT5ob2xkYWJsZV9wb3J0YWxfZW5hYmxlZCA9IHRydWU7CisJfQorCiAJ LyogQWRkIGFueSBlbnZpcm9ubWVudC1kcml2ZW4gR1VDIHNldHRpbmdzIG5lZWRlZCAqLwogCWZv ciAobmV4dF9lbyA9IG9wdGlvbnM7IG5leHRfZW8tPmVudk5hbWU7IG5leHRfZW8rKykKIAl7CmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaCBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWludC5oCmluZGV4IGJkN2ViNTlmNWY4Li43ZmRkOTJmMjA0NCAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysrIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTQzMCw2ICs0MzAsNyBAQCBzdHJ1Y3QgcGdfY29u bgogCWNoYXIJICAgKnNjcmFtX2NsaWVudF9rZXk7CS8qIGJhc2U2NC1lbmNvZGVkIFNDUkFNIGNs aWVudCBrZXkgKi8KIAljaGFyCSAgICpzY3JhbV9zZXJ2ZXJfa2V5OwkvKiBiYXNlNjQtZW5jb2Rl ZCBTQ1JBTSBzZXJ2ZXIga2V5ICovCiAJY2hhcgkgICAqc3Nsa2V5bG9nZmlsZTsJLyogd2hlcmUg c2hvdWxkIHRoZSBjbGllbnQgd3JpdGUgc3NsIGtleWxvZ3MgKi8KKwljaGFyCSAgICpob2xkYWJs ZV9wb3J0YWw7CS8qIGVuYWJsZSBfcHFfLmhvbGRhYmxlX3BvcnRhbCBvcHRpb24gKi8KIAogCWJv b2wJCWNhbmNlbFJlcXVlc3Q7CS8qIHRydWUgaWYgdGhpcyBjb25uZWN0aW9uIGlzIHVzZWQgdG8g c2VuZCBhCiAJCQkJCQkJCSAqIGNhbmNlbCByZXF1ZXN0LCBpbnN0ZWFkIG9mIGJlaW5nIGEgbm9y bWFsCkBAIC01MDQsNiArNTA1LDcgQEAgc3RydWN0IHBnX2Nvbm4KIAlpbnQJCQlzdmVyc2lvbjsJ CS8qIHNlcnZlciB2ZXJzaW9uLCBlLmcuIDcwNDAxIGZvciA3LjQuMSAqLwogCWJvb2wJCXB2ZXJz aW9uX25lZ290aWF0ZWQ7CS8qIHRydWUgaWYgTmVnb3RpYXRlUHJvdG9jb2xWZXJzaW9uCiAJCQkJ CQkJCQkJICogd2FzIHJlY2VpdmVkICovCisJYm9vbAkJaG9sZGFibGVfcG9ydGFsX2VuYWJsZWQ7 CS8qIF9wcV8uaG9sZGFibGVfcG9ydGFsIG9wdGlvbiAqLwogCWJvb2wJCWF1dGhfcmVxX3JlY2Vp dmVkOwkvKiB0cnVlIGlmIGFueSB0eXBlIG9mIGF1dGggcmVxIHJlY2VpdmVkICovCiAJYm9vbAkJ cGFzc3dvcmRfbmVlZGVkOwkvKiB0cnVlIGlmIHNlcnZlciBkZW1hbmRlZCBhIHBhc3N3b3JkICov CiAJYm9vbAkJZ3NzYXBpX3VzZWQ7CS8qIHRydWUgaWYgYXV0aGVudGljYXRlZCB2aWEgZ3NzYXBp ICovCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000076c48b064d39567b--