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 1w2vCL-000jQz-08 for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Mar 2026 18:00:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2vCK-00DBU1-07 for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Mar 2026 18:00:48 +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 1w2vCJ-00DBTs-1W for pgsql-hackers@lists.postgresql.org; Wed, 18 Mar 2026 18:00:47 +0000 Received: from mail-oo1-xc2f.google.com ([2607:f8b0:4864:20::c2f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2vCF-00000000OsF-3R7c for pgsql-hackers@lists.postgresql.org; Wed, 18 Mar 2026 18:00:46 +0000 Received: by mail-oo1-xc2f.google.com with SMTP id 006d021491bc7-662efd1bdd4so45509eaf.0 for ; Wed, 18 Mar 2026 11:00:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773856845; cv=none; d=google.com; s=arc-20240605; b=brtw15Z0+nvF3JRh7FsrYgXC4s2IJ0j98O6Zt3Zxn7peX9AxuJTBbQhbgcNCJftMDs SQUJ4rkUJZ5L6RFD5ljNpWp9iU/olajY6mFrSMlqmUWFmj5by9ZZWPClIAf4RyW5ekjR Q4ONHjzbV6MV7JGNoBPF2IdUG8ctzpfIQLEGKwKaSbEam+iLLe9gFnjr6QAqB88L8JLM +66cv/NiNf/JzFIoFG6Z3iN6mo3rGCibE6EJyB8NaXzaYOVG+JzmSlRwb1muJpZtJCW8 VDDmorQTsADKMKjOngRQxsGc3l7Y8qwic0+s+nMFdpC3WfCfUn11JGfnVrFkwCuHQeWS xGew== 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=uCwVDePrRoJ3nb0bbMA9M8pdROeOl9zLhtVNIX/gitQ=; fh=MSWiy/+r0KH8GRAqR6IszoVveaeHA7q3iygDp1gV0Xk=; b=SS+i17MdrG2bhYqHDnmm5LHyZZYJ4HRCmjxRGyDPel3KJyRwd3WhJ+nIupHSIL5I8K TIDdHUggCkA5YzO2kJiyMQ47rPdiW8ePK4kdk2T03EnhJA4IeU6V2TsWhF1cdq3z5Y7c rOWNboWCAHysMCE9Yir5LElrG9VBFJEhOEW9JFnVmdTPSNFdaAfOABv9w0+s6A8P8igw vZf5b3Xd9vDAtcj62TS1Kv65TbgiWSC/ZntkMqHzn3t38PptzmWY4U2W0QwHWkeMEyOL SAAMRro0MWr8Zb5aSUj6+SbNyy5vFVZTJTChVycBhrVU+9xgn92kSGMa89zAqa2CltsF sLdA==; 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=1773856845; x=1774461645; 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=uCwVDePrRoJ3nb0bbMA9M8pdROeOl9zLhtVNIX/gitQ=; b=hcgTOkQH/cTJI/HM9kwbE4H9cWhfsWRF3jDBGN5wGgYTsn3kGfRkhV66pgyvPZgg0E JK1uEB12efOYshz0xb6CYQyFFRE7S+a/iBc3LT1D2dz9+Zdz4K9jPJOYGR7RbR9o10Ua BWhJjWlnVKFEkIQZHUKqICBy0aUzDNYAIXNU7IqL32TS6R6MAhzfET+Zqn3xRxOyp3Gl Lz/HNkTu1CEfehvzvYYx6x9aWedalPkGHvzHKg0Mj+Y/1HGKj9slMkHDhZGcE0mqEVB5 STVigXWTaEQgNKxjouiPhYpJ2cnzWAVsJLGkWqZi0RFyqRo0xMwJjhObjQwsPKLdH1Zw kWCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773856845; x=1774461645; 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=uCwVDePrRoJ3nb0bbMA9M8pdROeOl9zLhtVNIX/gitQ=; b=XsM5JopMTX+j4yDKCbNN8aHCs236+ZJaCmr7OkZl/k8vkIC5PYK33l/Pxgr1n2udX8 ofxkFKwcmb7XbR8SkDQ/Xp2pZLETw3btfTXuF0bKe+fIFmTBZJxWx3NSPdR/S30rIvef XZt9Tz+sWgcoC5znMJ9Vnb9QgJV8G5SITadVlrQ6MuMQT6dlFKM2ncF5e7Io1LPPEMYG 3hCdtCiOtGVxBwiItogsyuIttcxQOg2UY53spwP0/Sveq7j+479iIJW6LBOZXGuop+IZ jjWGXEIyCiD1GEP1JSVugu8rr11AxIP/fOsWUf2rbrAib/Xp9wN0N69oH8Q/sYucpzQ/ G2Lg== X-Forwarded-Encrypted: i=1; AJvYcCUA9sqc/q3hpxMo5ZJTodc41pWGeqYZsRVlhi+L3VcAamvJKJMLjVjSTMCPJap8/3m81NkJhJaTlHeZFT0I@lists.postgresql.org X-Gm-Message-State: AOJu0YxO0FZO3NlPh/nu8+bbZdLZAclEu/VBskltnkTrB/pSy2y9eB1U De9VfhcTPPhqf+U8SIFseV+PagTcsqjgmLwmdngb212hQGVRy7Olzp1e5fy+ffcgKvnhr0krgbh 8y6hJTiUGn0xcmzlNXxlQJ3PSPCcHmOg= X-Gm-Gg: ATEYQzw/eSSNwyvsoEUNi4TOR5MxFFGmpu+fQ2HO1BzwhP8PaVi/ND36AAbuTwFiGnH LBVDkl1i3UcCashKazz7sjOGeRzHvu+8QAN5/wtmj2iZztYObhngxoTrvVCEpXwrcHQuuX52fm9 kIwHf2zahoi5OL8RQlg69Y3BzkEg75XcewjCqclBjrQNVohnOw/P3gcjLpzAQPVSCMIr9yY3ll4 KQ0rREngw1YmwPkbENeAS9clSLx9UduQ/EbWV3rxGzUno1dWNQH+/ITwVTyu8UdBucudzGpi4Dn oROJig== X-Received: by 2002:a05:6820:7095:10b0:67b:cb13:9b33 with SMTP id 006d021491bc7-67c1843330emr287421eaf.30.1773856844619; Wed, 18 Mar 2026 11:00:44 -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: Wed, 18 Mar 2026 14:00:25 -0400 X-Gm-Features: AaiRm505JdkXCE3KbpimRgbeaZ0debXnc3GUlVdovPsaybMiambYkqRiez0lW-Y 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="0000000000001b79b4064d503b2f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001b79b4064d503b2f Content-Type: multipart/alternative; boundary="0000000000001b79b3064d503b2d" --0000000000001b79b3064d503b2d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 17 Mar 2026 at 10:41, Dave Cramer wrote: > 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 sta= rt >>>> >> 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 message= s >>>> - 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 >> > Apparently that patch does not apply. Checked this one against master Dave > --0000000000001b79b3064d503b2d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Tue, = 17 Mar 2026 at 10:41, Dave Cramer <davecramer@gmail.com> wrote:
Patch rebased, now ready for r= eview


Dave Cramer


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


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

<= /div>
On Th= u, 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
<= /blockquote>
=C2=A0
Apparently that patch = does not apply. Checked this one against master

Da= ve
--0000000000001b79b3064d503b2d-- --0000000000001b79b4064d503b2f Content-Type: application/octet-stream; name="0002-holdable-portals.patch" Content-Disposition: attachment; filename="0002-holdable-portals.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmwcjkma0 RnJvbSBkYjEyNjQyOWE4N2EyODQ5YjllMGQzZDc4ZWQyNDUwNWExNzg3NTcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENyYW1lciA8ZGF2ZWNyYW1lckBnbWFpbC5jb20+CkRh dGU6IEZyaSwgNSBEZWMgMjAyNSAxODoyMDoyMyAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBf cHFfLmhvbGRhYmxlX3BvcnRhbCBwcm90b2NvbCBvcHRpb24gZm9yIGhvbGRhYmxlIGN1cnNvcnMK CkltcGxlbWVudCBzdXBwb3J0IGZvciBjcmVhdGluZyBob2xkYWJsZSBwb3J0YWxzIHZpYSB0aGUg ZXh0ZW5kZWQgcXVlcnkKcHJvdG9jb2wgdXNpbmcgYSBuZXcgcHJvdG9jb2wgb3B0aW9uIGluc3Rl YWQgb2YgYnVtcGluZyB0aGUgcHJvdG9jb2wKdmVyc2lvbi4gVGhpcyBhbGxvd3MgY2xpZW50cyB0 byBvcHQtaW4gdG8gc2VuZGluZyBjdXJzb3Igb3B0aW9ucyBpbgpCaW5kIG1lc3NhZ2VzLgoKUHJv dG9jb2wgT3B0aW9uOgogIF9wcV8uaG9sZGFibGVfcG9ydGFsPXRydWUKCldoZW4gZW5hYmxlZCwg Y2xpZW50cyBjYW4gaW5jbHVkZSBhbiBvcHRpb25hbCBJbnQzMiBjdXJzb3Igb3B0aW9ucwpmaWVs ZCBhdCB0aGUgZW5kIG9mIEJpbmQgbWVzc2FnZXMuIFRoZSBDVVJTT1JfT1BUX0hPTEQgYml0ICgw eDAwMjApCmNyZWF0ZXMgYSBob2xkYWJsZSBwb3J0YWwgdGhhdCBzdXJ2aXZlcyB0cmFuc2FjdGlv biBjb21taXQuCgpCZW5lZml0czoKLSBCYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggcHJvdG9jb2wg My4yCi0gT3B0LWluIGZlYXR1cmUgdmlhIGNvbm5lY3Rpb24gcGFyYW1ldGVyCi0gVXNlcyBzdGFu ZGFyZCBfcHFfLiBwcm90b2NvbCBvcHRpb24gbWVjaGFuaXNtCi0gU2VydmVyIGNhbiBuZWdvdGlh dGUgc3VwcG9ydCB2aWEgTmVnb3RpYXRlUHJvdG9jb2xWZXJzaW9uCgpCYWNrZW5kIENoYW5nZXM6 Ci0gQWRkIGhvbGRhYmxlX3BvcnRhbF9lbmFibGVkIGZsYWcgdG8gUG9ydCBzdHJ1Y3R1cmUKLSBQ YXJzZSBfcHFfLmhvbGRhYmxlX3BvcnRhbCBpbiBzdGFydHVwIHBhY2tldCAoYmFja2VuZF9zdGFy dHVwLmMpCi0gQ2hlY2sgb3B0aW9uIGZsYWcgaW5zdGVhZCBvZiBwcm90b2NvbCB2ZXJzaW9uIGlu IGV4ZWNfYmluZF9tZXNzYWdlKCkKLSBSZWFkIGN1cnNvciBvcHRpb25zIGZyb20gQmluZCBtZXNz YWdlIG9ubHkgd2hlbiBlbmFibGVkCgpDbGllbnQgKGxpYnBxKSBDaGFuZ2VzOgotIEFkZCBob2xk YWJsZV9wb3J0YWwgY29ubmVjdGlvbiBwYXJhbWV0ZXIgKGRlZmF1bHQgIjAiKQotIEFkZCBob2xk YWJsZV9wb3J0YWxfZW5hYmxlZCBmbGFnIHRvIFBHY29ubiBzdHJ1Y3R1cmUKLSBTZW5kIF9wcV8u aG9sZGFibGVfcG9ydGFsPXRydWUgaW4gc3RhcnR1cCBwYWNrZXQgd2hlbiBlbmFibGVkCi0gSW5j bHVkZSBjdXJzb3Igb3B0aW9ucyBpbiBCaW5kIG1lc3NhZ2Ugd2hlbiBlbmFibGVkCi0gVXBkYXRl IFBRc2VuZFF1ZXJ5UHJlcGFyZWRXaXRoQ3Vyc29yT3B0aW9ucygpIGFuZAogIFBRc2VuZEJpbmRX aXRoQ3Vyc29yT3B0aW9ucygpIHRvIHVzZSBvcHRpb24gZmxhZwoKRG9jdW1lbnRhdGlvbjoKLSBE b2N1bWVudCBfcHFfLmhvbGRhYmxlX3BvcnRhbCBpbiBwcm90b2NvbCBvcHRpb25zIHRhYmxlCi0g RGVzY3JpYmUgY3Vyc29yIG9wdGlvbnMgZmllbGQgaW4gQmluZCBtZXNzYWdlIGZvcm1hdAotIEV4 cGxhaW4gaG9sZGFibGUgcG9ydGFsIGxpZmVjeWNsZSBhbmQgYmVoYXZpb3IKClVzYWdlOgogIGNv bm4gPSBQUWNvbm5lY3RkYigiZGJuYW1lPXBvc3RncmVzIGhvbGRhYmxlX3BvcnRhbD0xIik7CiAg UFFzZW5kUXVlcnlQcmVwYXJlZFdpdGhDdXJzb3JPcHRpb25zKGNvbm4sIHN0bXROYW1lLCAuLi4s IDB4MDAyMCk7Ci0tLQogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgICAgICAgICAgICAgICAg ICAgIHwgIDM2ICsrLQogc3JjL2JhY2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYyAgICAgICAg ICAgIHwgIDIxICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAg ICAgfCAgMzcgKysrCiBzcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS5oICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQgICAgICAgICAgICAg IHwgICAyICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyAgICAgICAgICAgICB8 ICAxMyArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMgICAgICAgICAgICAgICAgfCAy MjIgKysrKysrKysrKysrKysrKysrCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMu YyAgICAgICAgICAgfCAgIDQgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCAgICAg ICAgICAgICAgIHwgICA4ICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oICAgICAg ICAgICAgICB8ICAgMiArCiAuLi4vbW9kdWxlcy9saWJwcV9waXBlbGluZS9saWJwcV9waXBlbGlu ZS5jICAgfCAgOTAgKysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgNDMxIGluc2VydGlvbnMoKyks IDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCA0OWY4MTY3NjcxMi4uNmU5ODBmYjFk NTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9wcm90b2NvbC5zZ21sCkBAIC0zNjYsNiArMzY2LDE2IEBACiAgICAgIDwvdGhlYWQ+CiAK ICAgICAgPHRib2R5PgorICAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5fcHFfLmhv bGRhYmxlX3BvcnRhbDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PkVuYWJsZXMgc3Vw cG9ydCBmb3IgY3Vyc29yIG9wdGlvbnMgaW4gdGhlIEJpbmQgbWVzc2FnZS4KKyAgICAgICAgV2hl biBzZXQgdG8gPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIHRoZSBjbGllbnQgbWF5IGluY2x1ZGUg YW4KKyAgICAgICAgb3B0aW9uYWwgY3Vyc29yIG9wdGlvbnMgZmllbGQgaW4gQmluZCBtZXNzYWdl cyB0byBjb250cm9sIHBvcnRhbAorICAgICAgICBiZWhhdmlvciwgc3VjaCBhcyBjcmVhdGluZyBo b2xkYWJsZSBwb3J0YWxzIHRoYXQgc3Vydml2ZSB0cmFuc2FjdGlvbgorICAgICAgICBjb21taXQu IFNlZSA8eHJlZiBsaW5rZW5kPSJwcm90b2NvbC1mbG93LWV4dC1xdWVyeSIvPiBmb3IgZGV0YWls cy4KKyAgICAgIDwvZW50cnk+CisgICAgICA8L3Jvdz4KKwogICAgICAgPHJvdz4KICAgICAgIDxl bnRyeT48bGl0ZXJhbD5fcHFfLjxyZXBsYWNlYWJsZT5bbmFtZV08L3JlcGxhY2VhYmxlPjwvbGl0 ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PkFueSBvdGhlciBwYXJhbWV0ZXIgbmFtZXMgYmVn aW5uaW5nIHdpdGggPGxpdGVyYWw+X3BxXy48L2xpdGVyYWw+LApAQCAtMTEwMSw2ICsxMTExLDkg QEAgU0VMQ1QgMS8wOzwhLS0gdGhpcyB0eXBvIGlzIGludGVudGlvbmFsIC0tPgogICAgIHBhc3Mg TlVMTCB2YWx1ZXMgZm9yIHRoZW0gaW4gdGhlIEJpbmQgbWVzc2FnZS4pCiAgICAgQmluZCBhbHNv IHNwZWNpZmllcyB0aGUgZm9ybWF0IHRvIHVzZSBmb3IgYW55IGRhdGEgcmV0dXJuZWQKICAgICBi eSB0aGUgcXVlcnk7IHRoZSBmb3JtYXQgY2FuIGJlIHNwZWNpZmllZCBvdmVyYWxsLCBvciBwZXIt Y29sdW1uLgorICAgIElmIHRoZSA8bGl0ZXJhbD5fcHFfLmhvbGRhYmxlX3BvcnRhbDwvbGl0ZXJh bD4gcHJvdG9jb2wgb3B0aW9uIGlzIGVuYWJsZWQsCisgICAgQmluZCBjYW4gb3B0aW9uYWxseSBp bmNsdWRlIGN1cnNvciBvcHRpb25zIHRvIGNvbnRyb2wgcG9ydGFsIGJlaGF2aW9yLAorICAgIHN1 Y2ggYXMgY3JlYXRpbmcgYSBob2xkYWJsZSBwb3J0YWwgdGhhdCBzdXJ2aXZlcyB0cmFuc2FjdGlv biBjb21taXQuCiAgICAgVGhlIHJlc3BvbnNlIGlzIGVpdGhlciBCaW5kQ29tcGxldGUgb3IgRXJy b3JSZXNwb25zZS4KICAgIDwvcGFyYT4KIApAQCAtMTEyNSw3ICsxMTM4LDExIEBAIFNFTENUIDEv MDs8IS0tIHRoaXMgdHlwbyBpcyBpbnRlbnRpb25hbCAtLT4KIAogICAgPHBhcmE+CiAgICAgSWYg c3VjY2Vzc2Z1bGx5IGNyZWF0ZWQsIGEgbmFtZWQgcG9ydGFsIG9iamVjdCBsYXN0cyB0aWxsIHRo ZSBlbmQgb2YgdGhlCi0gICAgY3VycmVudCB0cmFuc2FjdGlvbiwgdW5sZXNzIGV4cGxpY2l0bHkg ZGVzdHJveWVkLiAgQW4gdW5uYW1lZCBwb3J0YWwgaXMKKyAgICBjdXJyZW50IHRyYW5zYWN0aW9u LCB1bmxlc3MgZXhwbGljaXRseSBkZXN0cm95ZWQuICBIb3dldmVyLCBpZiB0aGUKKyAgICA8bGl0 ZXJhbD5fcHFfLmhvbGRhYmxlX3BvcnRhbDwvbGl0ZXJhbD4gcHJvdG9jb2wgb3B0aW9uIGlzIGVu YWJsZWQgYW5kCisgICAgdGhlIHBvcnRhbCBpcyBjcmVhdGVkIHdpdGggdGhlIENVUlNPUl9PUFRf SE9MRCBvcHRpb24sIHRoZSBwb3J0YWwgYmVjb21lcworICAgIDxmaXJzdHRlcm0+aG9sZGFibGU8 L2ZpcnN0dGVybT4gYW5kIHN1cnZpdmVzIHRyYW5zYWN0aW9uIGNvbW1pdCwgcmVtYWluaW5nCisg ICAgdmFsaWQgdW50aWwgZXhwbGljaXRseSBjbG9zZWQgb3IgdGhlIHNlc3Npb24gZW5kcy4gIEFu IHVubmFtZWQgcG9ydGFsIGlzCiAgICAgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5z YWN0aW9uLCBvciBhcyBzb29uIGFzIHRoZSBuZXh0IEJpbmQKICAgICBzdGF0ZW1lbnQgc3BlY2lm eWluZyB0aGUgdW5uYW1lZCBwb3J0YWwgYXMgZGVzdGluYXRpb24gaXMgaXNzdWVkLiAgKE5vdGUK ICAgICB0aGF0IGEgc2ltcGxlIFF1ZXJ5IG1lc3NhZ2UgYWxzbyBkZXN0cm95cyB0aGUgdW5uYW1l ZCBwb3J0YWwuKSAgTmFtZWQKQEAgLTQ0MTEsNiArNDQyOCwyMyBAQCBwc3FsICJkYm5hbWU9cG9z dGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAg ICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisg ICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDMyPC90ZXJtPgorICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBDdXJzb3Igb3B0aW9ucyAob3B0aW9u YWwsIG9ubHkgaWYgPGxpdGVyYWw+X3BxXy5ob2xkYWJsZV9wb3J0YWw8L2xpdGVyYWw+CisgICAg ICAgICBpcyBlbmFibGVkKS4gIEEgYml0bWFzayBvZiBvcHRpb25zIGZvciB0aGUgcG9ydGFsIGJl aW5nIGNyZWF0ZWQuCisgICAgICAgICBDdXJyZW50bHkgZGVmaW5lZCBiaXRzIGFyZToKKyAgICAg ICAgIDxsaXRlcmFsPjB4MDAwMTwvbGl0ZXJhbD4gKENVUlNPUl9PUFRfQklOQVJZLCBzYW1lIGFz IHNldHRpbmcKKyAgICAgICAgIHJlc3VsdCBmb3JtYXQgY29kZXMgdG8gYmluYXJ5KSwKKyAgICAg ICAgIDxsaXRlcmFsPjB4MDAyMDwvbGl0ZXJhbD4gKENVUlNPUl9PUFRfSE9MRCwgY3JlYXRlcyBh IGhvbGRhYmxlCisgICAgICAgICBwb3J0YWwgdGhhdCBzdXJ2aXZlcyB0cmFuc2FjdGlvbiBjb21t aXQpLgorICAgICAgICAgVGhpcyBmaWVsZCBpcyBvcHRpb25hbDsgaWYgbm90IHByZXNlbnQsIG5v IGN1cnNvciBvcHRpb25zIGFyZSBzZXQuCisgICAgICAgICBOYW1lZCBwb3J0YWxzIGFyZSByZXF1 aXJlZCB3aGVuIHVzaW5nIENVUlNPUl9PUFRfSE9MRC4KKyAgICAgICAgPC9wYXJhPgorICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgPC92YXJpYWJsZWxpc3Q+ CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9z dGFydHVwLmMKaW5kZXggNWFiZjI3NmM4OTguLmI1NTFmMzQ3MGU2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL2JhY2tlbmRfc3RhcnR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFj a2VuZF9zdGFydHVwLmMKQEAgLTc3OSwxMSArNzc5LDI0IEBAIFByb2Nlc3NTdGFydHVwUGFja2V0 KFBvcnQgKnBvcnQsIGJvb2wgc3NsX2RvbmUsIGJvb2wgZ3NzX2RvbmUpCiAJCQl7CiAJCQkJLyoK IAkJCQkgKiBBbnkgb3B0aW9uIGJlZ2lubmluZyB3aXRoIF9wcV8uIGlzIHJlc2VydmVkIGZvciB1 c2UgYXMgYQotCQkJCSAqIHByb3RvY29sLWxldmVsIG9wdGlvbiwgYnV0IGF0IHByZXNlbnQgbm8g c3VjaCBvcHRpb25zIGFyZQotCQkJCSAqIGRlZmluZWQuCisJCQkJICogcHJvdG9jb2wtbGV2ZWwg b3B0aW9uLgogCQkJCSAqLwotCQkJCXVucmVjb2duaXplZF9wcm90b2NvbF9vcHRpb25zID0KLQkJ CQkJbGFwcGVuZCh1bnJlY29nbml6ZWRfcHJvdG9jb2xfb3B0aW9ucywgcHN0cmR1cChuYW1lcHRy KSk7CisJCQkJaWYgKHN0cmNtcChuYW1lcHRyLCAiX3BxXy5ob2xkYWJsZV9wb3J0YWwiKSA9PSAw KQorCQkJCXsKKwkJCQkJLyogRW5hYmxlIGhvbGRhYmxlIHBvcnRhbCBzdXBwb3J0IHZpYSBCaW5k IG1lc3NhZ2UgKi8KKwkJCQkJaWYgKCFwYXJzZV9ib29sKHZhbHB0ciwgJnBvcnQtPmhvbGRhYmxl X3BvcnRhbF9lbmFibGVkKSkKKwkJCQkJCWVyZXBvcnQoRkFUQUwsCisJCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZh bGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgXCIlc1wiOiBcIiVzXCIiLAorCQkJCQkJCQkJCSJfcHFf LmhvbGRhYmxlX3BvcnRhbCIsCisJCQkJCQkJCQkJdmFscHRyKSkpOworCQkJCX0KKwkJCQllbHNl CisJCQkJeworCQkJCQkvKiBVbnJlY29nbml6ZWQgcHJvdG9jb2wgb3B0aW9uICovCisJCQkJCXVu cmVjb2duaXplZF9wcm90b2NvbF9vcHRpb25zID0KKwkJCQkJCWxhcHBlbmQodW5yZWNvZ25pemVk X3Byb3RvY29sX29wdGlvbnMsIHBzdHJkdXAobmFtZXB0cikpOworCQkJCX0KIAkJCX0KIAkJCWVs c2UKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCBiMzU2MzExMzIxOS4uYTIyOGEyZjYyNWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKQEAgLTE2MzQsNiArMTYzNCw3IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0 cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAlpbnQJCQludW1QYXJhbXM7CiAJaW50CQkJbnVtUkZv cm1hdHM7CiAJaW50MTYJICAgKnJmb3JtYXRzID0gTlVMTDsKKwlpbnQJCQljdXJzb3JPcHRpb25z ID0gMDsKIAlDYWNoZWRQbGFuU291cmNlICpwc3JjOwogCUNhY2hlZFBsYW4gKmNwbGFuOwogCVBv cnRhbAkJcG9ydGFsOwpAQCAtMjAxMCw2ICsyMDExLDEzIEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0 cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCXJmb3JtYXRzW2ldID0gcHFfZ2V0bXNnaW50KGlu cHV0X21lc3NhZ2UsIDIpOwogCX0KIAorCS8qIEdldCBjdXJzb3Igb3B0aW9ucyBpZiBwcmVzZW50 IChfcHFfLmhvbGRhYmxlX3BvcnRhbCBlbmFibGVkKSAqLworCWlmIChNeVByb2NQb3J0LT5ob2xk YWJsZV9wb3J0YWxfZW5hYmxlZCAmJgorCQlpbnB1dF9tZXNzYWdlLT5jdXJzb3IgPCBpbnB1dF9t ZXNzYWdlLT5sZW4pCisJeworCQljdXJzb3JPcHRpb25zID0gcHFfZ2V0bXNnaW50KGlucHV0X21l c3NhZ2UsIDQpOworCQllbG9nKERFQlVHMSwgImV4ZWNfYmluZF9tZXNzYWdlOiByZWFkIGN1cnNv ck9wdGlvbnM9MHglMDR4IGZyb20gbWVzc2FnZSIsIGN1cnNvck9wdGlvbnMpOworCX0KIAlwcV9n ZXRtc2dlbmQoaW5wdXRfbWVzc2FnZSk7CiAKIAkvKgpAQCAtMjA1OCw2ICsyMDY2LDI2IEBAIGV4 ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkgKi8KIAlQb3J0YWxT ZXRSZXN1bHRGb3JtYXQocG9ydGFsLCBudW1SRm9ybWF0cywgcmZvcm1hdHMpOwogCisJLyogQXBw bHkgY3Vyc29yIG9wdGlvbnMgKi8KKwlpZiAoY3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfSE9M RCkKKwl7CisJCWVsb2coREVCVUcxLCAiZXhlY19iaW5kX21lc3NhZ2U6IGFwcGx5aW5nIENVUlNP Ul9PUFRfSE9MRCB0byBwb3J0YWwgJyVzJyIsIHBvcnRhbF9uYW1lKTsKKworCQlpZiAocG9ydGFs X25hbWVbMF0gPT0gJ1wwJykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9DVVJTT1JfTkFNRSksCisJCQkJCSBlcnJtc2coImhvbGRhYmxlIGN1cnNvcnMg cmVxdWlyZSBhIG5hbWVkIHBvcnRhbCIpKSk7CisJCWlmIChJblNlY3VyaXR5UmVzdHJpY3RlZE9w ZXJhdGlvbigpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNV RkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0ZSBjdXJzb3Ig V0lUSCBIT0xEIGluIHJlc3RyaWN0ZWQgb3BlcmF0aW9uIikpKTsKKworCQllbG9nKERFQlVHMSwg ImV4ZWNfYmluZF9tZXNzYWdlOiBDVVJTT1JfT1BUX0hPTEQgdmFsaWRhdGlvbiBwYXNzZWQgZm9y IHBvcnRhbCAnJXMnIiwgcG9ydGFsX25hbWUpOworCX0KKworCXBvcnRhbC0+Y3Vyc29yT3B0aW9u cyA9IGN1cnNvck9wdGlvbnM7CisJZWxvZyhERUJVRzEsICJleGVjX2JpbmRfbWVzc2FnZTogcG9y dGFsICclcycgY3Vyc29yT3B0aW9ucyBzZXQgdG8gMHglMDR4IiwgcG9ydGFsX25hbWUsIGN1cnNv ck9wdGlvbnMpOworCiAJLyoKIAkgKiBEb25lIGJpbmRpbmc7IHJlbW92ZSB0aGUgcGFyYW1ldGVy cyBlcnJvciBjYWxsYmFjay4gIEVudHJpZXMgZW1pdHRlZAogCSAqIGxhdGVyIGRldGVybWluZSBp bmRlcGVuZGVudGx5IHdoZXRoZXIgdG8gbG9nIHRoZSBwYXJhbWV0ZXJzIG9yIG5vdC4KQEAgLTQ5 NDMsNyArNDk3MSwxNiBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBj aGFyICp1c2VybmFtZSkKIAogCQkJCQkJCQlwb3J0YWwgPSBHZXRQb3J0YWxCeU5hbWUoY2xvc2Vf dGFyZ2V0KTsKIAkJCQkJCQkJaWYgKFBvcnRhbElzVmFsaWQocG9ydGFsKSkKKwkJCQkJCQkJewor CQkJCQkJCQkJZWxvZyhERUJVRzEsICJDbG9zZSBtZXNzYWdlOiBjbG9zaW5nIHBvcnRhbCAnJXMn IChjdXJzb3JPcHRpb25zPTB4JTA0eCkiLAorCQkJCQkJCQkJCSBjbG9zZV90YXJnZXQsIHBvcnRh bC0+Y3Vyc29yT3B0aW9ucyk7CiAJCQkJCQkJCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOwor CQkJCQkJCQkJZWxvZyhERUJVRzEsICJDbG9zZSBtZXNzYWdlOiBwb3J0YWwgJyVzJyBjbG9zZWQg c3VjY2Vzc2Z1bGx5IiwgY2xvc2VfdGFyZ2V0KTsKKwkJCQkJCQkJfQorCQkJCQkJCQllbHNlCisJ CQkJCQkJCXsKKwkJCQkJCQkJCWVsb2coREVCVUcxLCAiQ2xvc2UgbWVzc2FnZTogcG9ydGFsICcl cycgbm90IGZvdW5kIiwgY2xvc2VfdGFyZ2V0KTsKKwkJCQkJCQkJfQogCQkJCQkJCX0KIAkJCQkJ CQlicmVhazsKIAkJCQkJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9s aWJwcS1iZS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaAppbmRleCA5MjFiMmRhYTRm Zi4uMWMxMWQ3MDZlZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmgK KysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaApAQCAtMTUxLDYgKzE1MSw3IEBAIHR5 cGVkZWYgc3RydWN0IFBvcnQKIAljaGFyCSAgICp1c2VyX25hbWU7CiAJY2hhcgkgICAqY21kbGlu ZV9vcHRpb25zOwogCUxpc3QJICAgKmd1Y19vcHRpb25zOworCWJvb2wJICAgIGhvbGRhYmxlX3Bv cnRhbF9lbmFibGVkOwkvKiBfcHFfLmhvbGRhYmxlX3BvcnRhbCBvcHRpb24gKi8KIAogCS8qCiAJ ICogVGhlIHN0YXJ0dXAgcGFja2V0IGFwcGxpY2F0aW9uIG5hbWUsIG9ubHkgdXNlZCBoZXJlIGZv ciB0aGUgImNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9y dHMudHh0IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKaW5kZXggMWUzZDViZDU4 NjcuLjU3MmU0NmRiN2I0IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRz LnR4dAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dApAQCAtMjExLDMgKzIx MSw1IEBAIFBRZGVmYXVsdEF1dGhEYXRhSG9vayAgICAgMjA4CiBQUWZ1bGxQcm90b2NvbFZlcnNp b24gICAgIDIwOQogYXBwZW5kUFFFeHBCdWZmZXJWQSAgICAgICAyMTAKIFBRZ2V0VGhyZWFkTG9j ayAgICAgICAgICAgMjExCitQUXNlbmRRdWVyeVByZXBhcmVkV2l0aEN1cnNvck9wdGlvbnMgMjEy CitQUXNlbmRCaW5kV2l0aEN1cnNvck9wdGlvbnMgMjEzCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0 LmMKaW5kZXggZGI5YjRjOGVkYmYuLjkzYjFjYTUyMWFkIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1jb25uZWN0LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29u bmVjdC5jCkBAIC00MTcsNiArNDE3LDEwIEBAIHN0YXRpYyBjb25zdCBpbnRlcm5hbFBRY29ubmlu Zm9PcHRpb24gUFFjb25uaW5mb09wdGlvbnNbXSA9IHsKIAkJIlNTTC1LZXktTG9nLUZpbGUiLCAi RCIsIDY0LAogCW9mZnNldG9mKHN0cnVjdCBwZ19jb25uLCBzc2xrZXlsb2dmaWxlKX0sCiAKKwl7 ImhvbGRhYmxlX3BvcnRhbCIsIE5VTEwsICIwIiwgTlVMTCwKKwkJIkhvbGRhYmxlLVBvcnRhbCIs ICIiLCAxLAorCW9mZnNldG9mKHN0cnVjdCBwZ19jb25uLCBob2xkYWJsZV9wb3J0YWwpfSwKKwog CS8qIFRlcm1pbmF0aW5nIGVudHJ5IC0tLSBNVVNUIEJFIExBU1QgKi8KIAl7TlVMTCwgTlVMTCwg TlVMTCwgTlVMTCwKIAlOVUxMLCBOVUxMLCAwfQpAQCAtMzczMiw2ICszNzM2LDEwIEBAIGtlZXBf Z29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwog CQkJCSAqIHByb2NlZWQgd2l0aG91dC4KIAkJCQkgKi8KIAorCQkJCS8qIFNldCBob2xkYWJsZV9w b3J0YWxfZW5hYmxlZCBmbGFnIGJhc2VkIG9uIGNvbm5lY3Rpb24gcGFyYW1ldGVyICovCisJCQkJ aWYgKGNvbm4tPmhvbGRhYmxlX3BvcnRhbCAmJiBjb25uLT5ob2xkYWJsZV9wb3J0YWxbMF0gPT0g JzEnKQorCQkJCQljb25uLT5ob2xkYWJsZV9wb3J0YWxfZW5hYmxlZCA9IHRydWU7CisKIAkJCQkv KiBCdWlsZCB0aGUgc3RhcnR1cCBwYWNrZXQuICovCiAJCQkJc3RhcnRwYWNrZXQgPSBwcUJ1aWxk U3RhcnR1cFBhY2tldDMoY29ubiwgJnBhY2tldGxlbiwKIAkJCQkJCQkJCQkJCQlFbnZpcm9ubWVu dE9wdGlvbnMpOwpAQCAtODM2OSw2ICs4Mzc3LDExIEBAIHBxUGFyc2VQcm90b2NvbFZlcnNpb24o Y29uc3QgY2hhciAqdmFsdWUsIFByb3RvY29sVmVyc2lvbiAqcmVzdWx0LCBQR2Nvbm4gKmNvbm4s CiAJCSpyZXN1bHQgPSBQR19QUk9UT0NPTCgzLCAyKTsKIAkJcmV0dXJuIHRydWU7CiAJfQorCWlm IChzdHJjbXAodmFsdWUsICIzLjMiKSA9PSAwKQorCXsKKwkJKnJlc3VsdCA9IFBHX1BST1RPQ09M KDMsIDMpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CiAKIAlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAiaW52YWxpZCAlcyB2YWx1ZTogXCIlc1wiIiwKIAkJCQkJCQljb250ZXh0LCB2YWx1ZSk7 CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1leGVjLmMKaW5kZXggMjAzZDM4OGJkYmYuLjlmYWNiNjA2ZjIwIDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKKysrIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtZXhlYy5jCkBAIC0xNjgyLDYgKzE2ODIsMjI4IEBAIFBRc2VuZFF1ZXJ5UHJl cGFyZWQoUEdjb25uICpjb25uLAogCQkJCQkJICAgcmVzdWx0Rm9ybWF0KTsKIH0KIAoraW50CitQ UXNlbmRRdWVyeVByZXBhcmVkV2l0aEN1cnNvck9wdGlvbnMoUEdjb25uICpjb25uLAorCQkJCQkJ CQkJIGNvbnN0IGNoYXIgKnN0bXROYW1lLAorCQkJCQkJCQkJIGludCBuUGFyYW1zLAorCQkJCQkJ CQkJIGNvbnN0IGNoYXIgKmNvbnN0ICpwYXJhbVZhbHVlcywKKwkJCQkJCQkJCSBjb25zdCBpbnQg KnBhcmFtTGVuZ3RocywKKwkJCQkJCQkJCSBjb25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKwkJCQkJ CQkJCSBpbnQgcmVzdWx0Rm9ybWF0LAorCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnBvcnRhbE5hbWUs CisJCQkJCQkJCQkgaW50IGN1cnNvck9wdGlvbnMpCit7CisJUEdjbWRRdWV1ZUVudHJ5ICplbnRy eTsKKworCWlmICghUFFzZW5kUXVlcnlTdGFydChjb25uLCB0cnVlKSkKKwkJcmV0dXJuIDA7CisK KwlpZiAoIXN0bXROYW1lKQorCXsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInN0 YXRlbWVudCBuYW1lIGlzIGEgbnVsbCBwb2ludGVyIik7CisJCXJldHVybiAwOworCX0KKworCWlm ICgoY3Vyc29yT3B0aW9ucyAmIDB4MDAyMCkgJiYgKCFwb3J0YWxOYW1lIHx8IHBvcnRhbE5hbWVb MF0gPT0gJ1wwJykpCisJeworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiaG9sZGFi bGUgY3Vyc29ycyByZXF1aXJlIGEgbmFtZWQgcG9ydGFsIik7CisJCXJldHVybiAwOworCX0KKwor CWVudHJ5ID0gcHFBbGxvY0NtZFF1ZXVlRW50cnkoY29ubik7CisJaWYgKGVudHJ5ID09IE5VTEwp CisJCXJldHVybiAwOworCisJaWYgKHBxUHV0TXNnU3RhcnQoUHFNc2dfQmluZCwgY29ubikgPCAw IHx8CisJCXBxUHV0cyhwb3J0YWxOYW1lID8gcG9ydGFsTmFtZSA6ICIiLCBjb25uKSA8IDAgfHwK KwkJcHFQdXRzKHN0bXROYW1lLCBjb25uKSA8IDApCisJCWdvdG8gc2VuZEZhaWxlZDsKKworCWlm IChuUGFyYW1zID4gMCAmJiBwYXJhbUZvcm1hdHMpCisJeworCQlpZiAocHFQdXRJbnQoblBhcmFt cywgMiwgY29ubikgPCAwKQorCQkJZ290byBzZW5kRmFpbGVkOworCQlmb3IgKGludCBpID0gMDsg aSA8IG5QYXJhbXM7IGkrKykKKwkJCWlmIChwcVB1dEludChwYXJhbUZvcm1hdHNbaV0sIDIsIGNv bm4pIDwgMCkKKwkJCQlnb3RvIHNlbmRGYWlsZWQ7CisJfQorCWVsc2UgaWYgKHBxUHV0SW50KDAs IDIsIGNvbm4pIDwgMCkKKwkJZ290byBzZW5kRmFpbGVkOworCisJaWYgKHBxUHV0SW50KG5QYXJh bXMsIDIsIGNvbm4pIDwgMCkKKwkJZ290byBzZW5kRmFpbGVkOworCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBuUGFyYW1zOyBpKyspCisJeworCQlpZiAocGFyYW1WYWx1ZXMgJiYgcGFyYW1WYWx1ZXNb aV0pCisJCXsKKwkJCWludCBsZW4gPSBwYXJhbUxlbmd0aHMgPyBwYXJhbUxlbmd0aHNbaV0gOiBz dHJsZW4ocGFyYW1WYWx1ZXNbaV0pOworCQkJaWYgKHBxUHV0SW50KGxlbiwgNCwgY29ubikgPCAw IHx8CisJCQkJcHFQdXRuY2hhcihwYXJhbVZhbHVlc1tpXSwgbGVuLCBjb25uKSA8IDApCisJCQkJ Z290byBzZW5kRmFpbGVkOworCQl9CisJCWVsc2UgaWYgKHBxUHV0SW50KC0xLCA0LCBjb25uKSA8 IDApCisJCQlnb3RvIHNlbmRGYWlsZWQ7CisJfQorCisJaWYgKHBxUHV0SW50KDEsIDIsIGNvbm4p IDwgMCB8fAorCQlwcVB1dEludChyZXN1bHRGb3JtYXQsIDIsIGNvbm4pIDwgMCkKKwkJZ290byBz ZW5kRmFpbGVkOworCisJLyogU2VuZCBjdXJzb3Igb3B0aW9ucyBpZiBfcHFfLmhvbGRhYmxlX3Bv cnRhbCBlbmFibGVkICovCisJaWYgKGNvbm4tPmhvbGRhYmxlX3BvcnRhbF9lbmFibGVkKQorCXsK KwkJaWYgKHBxUHV0SW50KGN1cnNvck9wdGlvbnMsIDQsIGNvbm4pIDwgMCkKKwkJCWdvdG8gc2Vu ZEZhaWxlZDsKKwl9CisKKwlpZiAocHFQdXRNc2dFbmQoY29ubikgPCAwKQorCQlnb3RvIHNlbmRG YWlsZWQ7CisKKwlpZiAocHFQdXRNc2dTdGFydChQcU1zZ19EZXNjcmliZSwgY29ubikgPCAwIHx8 CisJCXBxUHV0YygnUCcsIGNvbm4pIDwgMCB8fAorCQlwcVB1dHMocG9ydGFsTmFtZSA/IHBvcnRh bE5hbWUgOiAiIiwgY29ubikgPCAwIHx8CisJCXBxUHV0TXNnRW5kKGNvbm4pIDwgMCkKKwkJZ290 byBzZW5kRmFpbGVkOworCisJaWYgKHBxUHV0TXNnU3RhcnQoUHFNc2dfRXhlY3V0ZSwgY29ubikg PCAwIHx8CisJCXBxUHV0cyhwb3J0YWxOYW1lID8gcG9ydGFsTmFtZSA6ICIiLCBjb25uKSA8IDAg fHwKKwkJcHFQdXRJbnQoMCwgNCwgY29ubikgPCAwIHx8CisJCXBxUHV0TXNnRW5kKGNvbm4pIDwg MCkKKwkJZ290byBzZW5kRmFpbGVkOworCisJaWYgKGNvbm4tPnBpcGVsaW5lU3RhdHVzID09IFBR X1BJUEVMSU5FX09GRikKKwl7CisJCWlmIChwcVB1dE1zZ1N0YXJ0KFBxTXNnX1N5bmMsIGNvbm4p IDwgMCB8fAorCQkJcHFQdXRNc2dFbmQoY29ubikgPCAwKQorCQkJZ290byBzZW5kRmFpbGVkOwor CX0KKworCWVudHJ5LT5xdWVyeWNsYXNzID0gUEdRVUVSWV9FWFRFTkRFRDsKKworCWlmIChwcVBp cGVsaW5lRmx1c2goY29ubikgPCAwKQorCQlnb3RvIHNlbmRGYWlsZWQ7CisKKwljb25uLT5hc3lu Y1N0YXR1cyA9IFBHQVNZTkNfQlVTWTsKKwlyZXR1cm4gMTsKKworc2VuZEZhaWxlZDoKKwlwcVJl Y3ljbGVDbWRRdWV1ZUVudHJ5KGNvbm4sIGVudHJ5KTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAq IFBRc2VuZEJpbmRXaXRoQ3Vyc29yT3B0aW9ucworICoJTGlrZSBQUXNlbmRRdWVyeVByZXBhcmVk V2l0aEN1cnNvck9wdGlvbnMgYnV0IHNlbmRzIG9ubHkgQmluZCtEZXNjcmliZSwKKyAqCW5vdCBF eGVjdXRlLiBUaGlzIGFsbG93cyBjcmVhdGluZyBhIHBvcnRhbCB0aGF0IGNhbiBiZSBleGVjdXRl ZCBsYXRlciwKKyAqCXdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgdGVzdGluZyBob2xkYWJsZSBwb3J0 YWxzIChleGVjdXRlIGFmdGVyIGNvbW1pdCkuCisgKi8KK2ludAorUFFzZW5kQmluZFdpdGhDdXJz b3JPcHRpb25zKFBHY29ubiAqY29ubiwKKwkJCQkJCQkgY29uc3QgY2hhciAqc3RtdE5hbWUsCisJ CQkJCQkJIGludCBuUGFyYW1zLAorCQkJCQkJCSBjb25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1 ZXMsCisJCQkJCQkJIGNvbnN0IGludCAqcGFyYW1MZW5ndGhzLAorCQkJCQkJCSBjb25zdCBpbnQg KnBhcmFtRm9ybWF0cywKKwkJCQkJCQkgaW50IHJlc3VsdEZvcm1hdCwKKwkJCQkJCQkgY29uc3Qg Y2hhciAqcG9ydGFsTmFtZSwKKwkJCQkJCQkgaW50IGN1cnNvck9wdGlvbnMpCit7CisJUEdjbWRR dWV1ZUVudHJ5ICplbnRyeTsKKworCWlmICghUFFzZW5kUXVlcnlTdGFydChjb25uLCB0cnVlKSkK KwkJcmV0dXJuIDA7CisKKwlpZiAoIXN0bXROYW1lKQorCXsKKwkJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgInN0YXRlbWVudCBuYW1lIGlzIGEgbnVsbCBwb2ludGVyIik7CisJCXJldHVy biAwOworCX0KKworCWlmICgoY3Vyc29yT3B0aW9ucyAmIDB4MDAyMCkgJiYgKCFwb3J0YWxOYW1l IHx8IHBvcnRhbE5hbWVbMF0gPT0gJ1wwJykpCisJeworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAiaG9sZGFibGUgY3Vyc29ycyByZXF1aXJlIGEgbmFtZWQgcG9ydGFsIik7CisJCXJl dHVybiAwOworCX0KKworCWVudHJ5ID0gcHFBbGxvY0NtZFF1ZXVlRW50cnkoY29ubik7CisJaWYg KGVudHJ5ID09IE5VTEwpCisJCXJldHVybiAwOworCisJaWYgKHBxUHV0TXNnU3RhcnQoUHFNc2df QmluZCwgY29ubikgPCAwIHx8CisJCXBxUHV0cyhwb3J0YWxOYW1lID8gcG9ydGFsTmFtZSA6ICIi LCBjb25uKSA8IDAgfHwKKwkJcHFQdXRzKHN0bXROYW1lLCBjb25uKSA8IDApCisJCWdvdG8gc2Vu ZEZhaWxlZDsKKworCWlmIChuUGFyYW1zID4gMCAmJiBwYXJhbUZvcm1hdHMpCisJeworCQlpZiAo cHFQdXRJbnQoblBhcmFtcywgMiwgY29ubikgPCAwKQorCQkJZ290byBzZW5kRmFpbGVkOworCQlm b3IgKGludCBpID0gMDsgaSA8IG5QYXJhbXM7IGkrKykKKwkJCWlmIChwcVB1dEludChwYXJhbUZv cm1hdHNbaV0sIDIsIGNvbm4pIDwgMCkKKwkJCQlnb3RvIHNlbmRGYWlsZWQ7CisJfQorCWVsc2Ug aWYgKHBxUHV0SW50KDAsIDIsIGNvbm4pIDwgMCkKKwkJZ290byBzZW5kRmFpbGVkOworCisJaWYg KHBxUHV0SW50KG5QYXJhbXMsIDIsIGNvbm4pIDwgMCkKKwkJZ290byBzZW5kRmFpbGVkOworCisJ Zm9yIChpbnQgaSA9IDA7IGkgPCBuUGFyYW1zOyBpKyspCisJeworCQlpZiAocGFyYW1WYWx1ZXMg JiYgcGFyYW1WYWx1ZXNbaV0pCisJCXsKKwkJCWludCBsZW4gPSBwYXJhbUxlbmd0aHMgPyBwYXJh bUxlbmd0aHNbaV0gOiBzdHJsZW4ocGFyYW1WYWx1ZXNbaV0pOworCQkJaWYgKHBxUHV0SW50KGxl biwgNCwgY29ubikgPCAwIHx8CisJCQkJcHFQdXRuY2hhcihwYXJhbVZhbHVlc1tpXSwgbGVuLCBj b25uKSA8IDApCisJCQkJZ290byBzZW5kRmFpbGVkOworCQl9CisJCWVsc2UgaWYgKHBxUHV0SW50 KC0xLCA0LCBjb25uKSA8IDApCisJCQlnb3RvIHNlbmRGYWlsZWQ7CisJfQorCisJaWYgKHBxUHV0 SW50KDEsIDIsIGNvbm4pIDwgMCB8fAorCQlwcVB1dEludChyZXN1bHRGb3JtYXQsIDIsIGNvbm4p IDwgMCkKKwkJZ290byBzZW5kRmFpbGVkOworCisJLyogU2VuZCBjdXJzb3Igb3B0aW9ucyBpZiBf cHFfLmhvbGRhYmxlX3BvcnRhbCBlbmFibGVkICovCisJaWYgKGNvbm4tPmhvbGRhYmxlX3BvcnRh bF9lbmFibGVkKQorCXsKKwkJaWYgKHBxUHV0SW50KGN1cnNvck9wdGlvbnMsIDQsIGNvbm4pIDwg MCkKKwkJCWdvdG8gc2VuZEZhaWxlZDsKKwl9CisKKwlpZiAocHFQdXRNc2dFbmQoY29ubikgPCAw KQorCQlnb3RvIHNlbmRGYWlsZWQ7CisKKwlpZiAocHFQdXRNc2dTdGFydChQcU1zZ19EZXNjcmli ZSwgY29ubikgPCAwIHx8CisJCXBxUHV0YygnUCcsIGNvbm4pIDwgMCB8fAorCQlwcVB1dHMocG9y dGFsTmFtZSA/IHBvcnRhbE5hbWUgOiAiIiwgY29ubikgPCAwIHx8CisJCXBxUHV0TXNnRW5kKGNv bm4pIDwgMCkKKwkJZ290byBzZW5kRmFpbGVkOworCisJLyogTm8gRXhlY3V0ZSBtZXNzYWdlIC0g cG9ydGFsIGlzIGNyZWF0ZWQgYnV0IG5vdCBleGVjdXRlZCAqLworCisJaWYgKGNvbm4tPnBpcGVs aW5lU3RhdHVzID09IFBRX1BJUEVMSU5FX09GRikKKwl7CisJCWlmIChwcVB1dE1zZ1N0YXJ0KFBx TXNnX1N5bmMsIGNvbm4pIDwgMCB8fAorCQkJcHFQdXRNc2dFbmQoY29ubikgPCAwKQorCQkJZ290 byBzZW5kRmFpbGVkOworCX0KKworCWVudHJ5LT5xdWVyeWNsYXNzID0gUEdRVUVSWV9FWFRFTkRF RDsKKworCWlmIChwcVBpcGVsaW5lRmx1c2goY29ubikgPCAwKQorCQlnb3RvIHNlbmRGYWlsZWQ7 CisKKwljb25uLT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfQlVTWTsKKwlyZXR1cm4gMTsKKworc2Vu ZEZhaWxlZDoKKwlwcVJlY3ljbGVDbWRRdWV1ZUVudHJ5KGNvbm4sIGVudHJ5KTsKKwlyZXR1cm4g MDsKK30KKwogLyoKICAqIFBRc2VuZFF1ZXJ5U3RhcnQKICAqCUNvbW1vbiBzdGFydHVwIGNvZGUg Zm9yIFBRc2VuZFF1ZXJ5IGFuZCBzaWJsaW5nIHJvdXRpbmVzCmRpZmYgLS1naXQgYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXBy b3RvY29sMy5jCmluZGV4IDhjMWZkYTVjYWYwLi45ODVmMjA5ZDkxNSAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtcHJvdG9jb2wzLmMKQEAgLTI1MjEsNiArMjUyMSwxMCBAQCBidWlsZF9zdGFydHVwX3Bh Y2tldChjb25zdCBQR2Nvbm4gKmNvbm4sIGNoYXIgKnBhY2tldCwKIAlpZiAoY29ubi0+cHZlcnNp b24gPT0gUEdfUFJPVE9DT0xfR1JFQVNFKQogCQlBRERfU1RBUlRVUF9PUFRJT04oIl9wcV8udGVz dF9wcm90b2NvbF9uZWdvdGlhdGlvbiIsICIiKTsKIAorCS8qIEFkZCBfcHFfLmhvbGRhYmxlX3Bv cnRhbCBvcHRpb24gaWYgZW5hYmxlZCAqLworCWlmIChjb25uLT5ob2xkYWJsZV9wb3J0YWwgJiYg Y29ubi0+aG9sZGFibGVfcG9ydGFsWzBdID09ICcxJykKKwkJQUREX1NUQVJUVVBfT1BUSU9OKCJf cHFfLmhvbGRhYmxlX3BvcnRhbCIsICJ0cnVlIik7CisKIAkvKiBBZGQgYW55IGVudmlyb25tZW50 LWRyaXZlbiBHVUMgc2V0dGluZ3MgbmVlZGVkICovCiAJZm9yIChuZXh0X2VvID0gb3B0aW9uczsg bmV4dF9lby0+ZW52TmFtZTsgbmV4dF9lbysrKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWZlLmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCmlu ZGV4IGYwNmU3YTk3MmMzLi5jNzViY2YxYjgwNCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMv bGlicHEvbGlicHEtZmUuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCkBA IC01MzUsNiArNTM1LDE0IEBAIGV4dGVybiBpbnQJUFFzZW5kUXVlcnlQcmVwYXJlZChQR2Nvbm4g KmNvbm4sCiAJCQkJCQkJCWNvbnN0IGludCAqcGFyYW1MZW5ndGhzLAogCQkJCQkJCQljb25zdCBp bnQgKnBhcmFtRm9ybWF0cywKIAkJCQkJCQkJaW50IHJlc3VsdEZvcm1hdCk7CitleHRlcm4gaW50 CVBRc2VuZFF1ZXJ5UHJlcGFyZWRXaXRoQ3Vyc29yT3B0aW9ucyhQR2Nvbm4gKmNvbm4sIGNvbnN0 IGNoYXIgKnN0bXROYW1lLAorCQkJCQkJCQlpbnQgblBhcmFtcywgY29uc3QgY2hhciAqY29uc3Qg KnBhcmFtVmFsdWVzLAorCQkJCQkJCQljb25zdCBpbnQgKnBhcmFtTGVuZ3RocywgY29uc3QgaW50 ICpwYXJhbUZvcm1hdHMsCisJCQkJCQkJCWludCByZXN1bHRGb3JtYXQsIGNvbnN0IGNoYXIgKnBv cnRhbE5hbWUsIGludCBjdXJzb3JPcHRpb25zKTsKK2V4dGVybiBpbnQJUFFzZW5kQmluZFdpdGhD dXJzb3JPcHRpb25zKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqc3RtdE5hbWUsCisJCQkJCQkJ CWludCBuUGFyYW1zLCBjb25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMsCisJCQkJCQkJCWNv bnN0IGludCAqcGFyYW1MZW5ndGhzLCBjb25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKwkJCQkJCQkJ aW50IHJlc3VsdEZvcm1hdCwgY29uc3QgY2hhciAqcG9ydGFsTmFtZSwgaW50IGN1cnNvck9wdGlv bnMpOwogZXh0ZXJuIGludAlQUXNldFNpbmdsZVJvd01vZGUoUEdjb25uICpjb25uKTsKIGV4dGVy biBpbnQJUFFzZXRDaHVua2VkUm93c01vZGUoUEdjb25uICpjb25uLCBpbnQgY2h1bmtTaXplKTsK IGV4dGVybiBQR3Jlc3VsdCAqUFFnZXRSZXN1bHQoUEdjb25uICpjb25uKTsKZGlmZiAtLWdpdCBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv bGlicHEtaW50LmgKaW5kZXggYmQ3ZWI1OWY1ZjguLjdmZGQ5MmYyMDQ0IDEwMDY0NAotLS0gYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9saWJwcS1pbnQuaApAQCAtNDMwLDYgKzQzMCw3IEBAIHN0cnVjdCBwZ19jb25uCiAJY2hhcgkg ICAqc2NyYW1fY2xpZW50X2tleTsJLyogYmFzZTY0LWVuY29kZWQgU0NSQU0gY2xpZW50IGtleSAq LwogCWNoYXIJICAgKnNjcmFtX3NlcnZlcl9rZXk7CS8qIGJhc2U2NC1lbmNvZGVkIFNDUkFNIHNl cnZlciBrZXkgKi8KIAljaGFyCSAgICpzc2xrZXlsb2dmaWxlOwkvKiB3aGVyZSBzaG91bGQgdGhl IGNsaWVudCB3cml0ZSBzc2wga2V5bG9ncyAqLworCWNoYXIJICAgKmhvbGRhYmxlX3BvcnRhbDsJ LyogZW5hYmxlIF9wcV8uaG9sZGFibGVfcG9ydGFsIG9wdGlvbiAqLwogCiAJYm9vbAkJY2FuY2Vs UmVxdWVzdDsJLyogdHJ1ZSBpZiB0aGlzIGNvbm5lY3Rpb24gaXMgdXNlZCB0byBzZW5kIGEKIAkJ CQkJCQkJICogY2FuY2VsIHJlcXVlc3QsIGluc3RlYWQgb2YgYmVpbmcgYSBub3JtYWwKQEAgLTUw NCw2ICs1MDUsNyBAQCBzdHJ1Y3QgcGdfY29ubgogCWludAkJCXN2ZXJzaW9uOwkJLyogc2VydmVy IHZlcnNpb24sIGUuZy4gNzA0MDEgZm9yIDcuNC4xICovCiAJYm9vbAkJcHZlcnNpb25fbmVnb3Rp YXRlZDsJLyogdHJ1ZSBpZiBOZWdvdGlhdGVQcm90b2NvbFZlcnNpb24KIAkJCQkJCQkJCQkgKiB3 YXMgcmVjZWl2ZWQgKi8KKwlib29sCQlob2xkYWJsZV9wb3J0YWxfZW5hYmxlZDsJLyogX3BxXy5o b2xkYWJsZV9wb3J0YWwgb3B0aW9uICovCiAJYm9vbAkJYXV0aF9yZXFfcmVjZWl2ZWQ7CS8qIHRy dWUgaWYgYW55IHR5cGUgb2YgYXV0aCByZXEgcmVjZWl2ZWQgKi8KIAlib29sCQlwYXNzd29yZF9u ZWVkZWQ7CS8qIHRydWUgaWYgc2VydmVyIGRlbWFuZGVkIGEgcGFzc3dvcmQgKi8KIAlib29sCQln c3NhcGlfdXNlZDsJLyogdHJ1ZSBpZiBhdXRoZW50aWNhdGVkIHZpYSBnc3NhcGkgKi8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYyBi L3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYwppbmRleCBh YTBhNmJiZTc2Mi4uODc0ODRkY2ZiNjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGli cHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBx X3BpcGVsaW5lL2xpYnBxX3BpcGVsaW5lLmMKQEAgLTIxMDAsNiArMjEwMCw5MyBAQCBwcm9jZXNz X3Jlc3VsdChQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByZXN1bHRzLCBpbnQgbnVt c2VudCkKIAlyZXR1cm4gZ290X2Vycm9yOwogfQogCisvKgorICogVGVzdCBob2xkYWJsZSBjdXJz b3JzIHVzaW5nIHByb3RvY29sIDMuMyBjdXJzb3Igb3B0aW9ucyBpbiBCaW5kIG1lc3NhZ2UuCisg Ki8KK3N0YXRpYyB2b2lkCit0ZXN0X2hvbGRhYmxlX2N1cnNvcihQR2Nvbm4gKmNvbm4pCit7CisJ UEdyZXN1bHQgICAqcmVzOworCisJZnByaW50ZihzdGRlcnIsICJob2xkYWJsZSBjdXJzb3IuLi4g Iik7CisKKwkvKiBWZXJpZnkgcHJvdG9jb2wgMy4zICovCisJaWYgKFBRZnVsbFByb3RvY29sVmVy c2lvbihjb25uKSA8IDMwMDAzKQorCQlwZ19mYXRhbCgicHJvdG9jb2wgMy4zIHJlcXVpcmVkLCBn b3QgJWQiLCBQUWZ1bGxQcm90b2NvbFZlcnNpb24oY29ubikpOworCisJLyogU3RhcnQgdHJhbnNh Y3Rpb24gKi8KKwlyZXMgPSBQUWV4ZWMoY29ubiwgIkJFR0lOIik7CisJaWYgKFBRcmVzdWx0U3Rh dHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKKwkJcGdfZmF0YWwoIkJFR0lOIGZhaWxlZDog JXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJUFFjbGVhcihyZXMpOworCisJLyogQ3JlYXRl IHRlc3QgdGFibGUgKi8KKwlyZXMgPSBQUWV4ZWMoY29ubiwgIkNSRUFURSBURU1QIFRBQkxFIGhv bGRhYmxlX3Rlc3QoaWQgaW50KSIpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVT X0NPTU1BTkRfT0spCisJCXBnX2ZhdGFsKCJDUkVBVEUgVEFCTEUgZmFpbGVkOiAlcyIsIFBRZXJy b3JNZXNzYWdlKGNvbm4pKTsKKwlQUWNsZWFyKHJlcyk7CisKKwlyZXMgPSBQUWV4ZWMoY29ubiwg IklOU0VSVCBJTlRPIGhvbGRhYmxlX3Rlc3QgVkFMVUVTICgxKSwgKDIpLCAoMykiKTsKKwlpZiAo UFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCQlwZ19mYXRhbCgiSU5T RVJUIGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJUFFjbGVhcihyZXMpOwor CisJLyogUHJlcGFyZSBzdGF0ZW1lbnQgKi8KKwlyZXMgPSBQUXByZXBhcmUoY29ubiwgImhvbGRz dG10IiwgIlNFTEVDVCAqIEZST00gaG9sZGFibGVfdGVzdCIsIDAsIE5VTEwpOworCWlmIChQUXJl c3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJCXBnX2ZhdGFsKCJQUkVQQVJF IGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJUFFjbGVhcihyZXMpOworCisJ LyogRW50ZXIgcGlwZWxpbmUgbW9kZSAqLworCWlmIChQUWVudGVyUGlwZWxpbmVNb2RlKGNvbm4p ICE9IDEpCisJCXBnX2ZhdGFsKCJmYWlsZWQgdG8gZW50ZXIgcGlwZWxpbmUgbW9kZTogJXMiLCBQ UWVycm9yTWVzc2FnZShjb25uKSk7CisKKwkvKiBDcmVhdGUgaG9sZGFibGUgcG9ydGFsIHVzaW5n IEJpbmQgd2l0aCBjdXJzb3Igb3B0aW9ucyAobm8gRXhlY3V0ZSkgKi8KKwlpZiAoUFFzZW5kQmlu ZFdpdGhDdXJzb3JPcHRpb25zKGNvbm4sICJob2xkc3RtdCIsIDAsIE5VTEwsIE5VTEwsIE5VTEws IDAsICJob2xkcG9ydGFsIiwgMHgwMDIwKSAhPSAxKQorCQlwZ19mYXRhbCgiUFFzZW5kQmluZFdp dGhDdXJzb3JPcHRpb25zIGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisKKwkv KiBDb21taXQgLSBwb3J0YWwgc2hvdWxkIHN1cnZpdmUgKi8KKwlpZiAoUFFzZW5kUXVlcnlQYXJh bXMoY29ubiwgIkNPTU1JVCIsIDAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDApICE9IDEpCisJ CXBnX2ZhdGFsKCJDT01NSVQgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwor CS8qIEV4ZWN1dGUgcG9ydGFsIGFmdGVyIGNvbW1pdCB1c2luZyBGRVRDSCAocG9ydGFscyBjcmVh dGVkIHZpYSBCaW5kIGFyZSBjdXJzb3JzKSAqLworCWlmIChQUXNlbmRRdWVyeVBhcmFtcyhjb25u LCAiRkVUQ0ggQUxMIEZST00gaG9sZHBvcnRhbCIsIDAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEws IDApICE9IDEpCisJCXBnX2ZhdGFsKCJGRVRDSCBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOworCisJLyogQ2xvc2UgcG9ydGFsICovCisJaWYgKFBRc2VuZFF1ZXJ5UGFyYW1zKGNv bm4sICJDTE9TRSBob2xkcG9ydGFsIiwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgMCkgIT0g MSkKKwkJcGdfZmF0YWwoIkNMT1NFIGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7 CisKKwlpZiAoUFFwaXBlbGluZVN5bmMoY29ubikgIT0gMSkKKwkJcGdfZmF0YWwoInBpcGVsaW5l IHN5bmMgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKworCS8qIEdldCByZXN1 bHRzICovCisJcmVzID0gY29uZmlybV9yZXN1bHRfc3RhdHVzKGNvbm4sIFBHUkVTX1RVUExFU19P Syk7CS8qIFJvd0Rlc2NyaXB0aW9uIGZyb20gQmluZCtEZXNjcmliZSAqLworCWlmIChQUW5maWVs ZHMocmVzKSAhPSAxKQorCQlwZ19mYXRhbCgiZXhwZWN0ZWQgMSBmaWVsZCwgZ290ICVkIiwgUFFu ZmllbGRzKHJlcykpOworCVBRY2xlYXIocmVzKTsKKwljb25zdW1lX251bGxfcmVzdWx0KGNvbm4p OworCisJLyogQ09NTUlUIHJlc3VsdCBzZWVtcyB0byBiZSBza2lwcGVkL2NvbWJpbmVkIC0gdGhp cyBpcyBhIGxpYnBxIGJlaGF2aW9yICovCisKKwlyZXMgPSBjb25maXJtX3Jlc3VsdF9zdGF0dXMo Y29ubiwgUEdSRVNfVFVQTEVTX09LKTsJLyogRkVUQ0ggYWZ0ZXIgY29tbWl0ICovCisJaWYgKFBR bnR1cGxlcyhyZXMpICE9IDMpCisJCXBnX2ZhdGFsKCJleHBlY3RlZCAzIHJvd3MgYWZ0ZXIgY29t bWl0LCBnb3QgJWQiLCBQUW50dXBsZXMocmVzKSk7CisJUFFjbGVhcihyZXMpOworCWNvbnN1bWVf bnVsbF9yZXN1bHQoY29ubik7CisKKwljb25zdW1lX3Jlc3VsdF9zdGF0dXMoY29ubiwgUEdSRVNf Q09NTUFORF9PSyk7CS8qIENMT1NFICovCisJY29uc3VtZV9udWxsX3Jlc3VsdChjb25uKTsKKwor CWNvbnN1bWVfcmVzdWx0X3N0YXR1cyhjb25uLCBQR1JFU19QSVBFTElORV9TWU5DKTsKKwljb25z dW1lX251bGxfcmVzdWx0KGNvbm4pOworCisJaWYgKFBRZXhpdFBpcGVsaW5lTW9kZShjb25uKSAh PSAxKQorCQlwZ19mYXRhbCgiZmFpbGVkIHRvIGV4aXQgcGlwZWxpbmUgbW9kZTogJXMiLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7CisKKwlmcHJpbnRmKHN0ZGVyciwgIm9rXG4iKTsKK30KKwogCiBz dGF0aWMgdm9pZAogdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCkBAIC0yMTE4LDYgKzIyMDUs NyBAQCBwcmludF90ZXN0X2xpc3Qodm9pZCkKIHsKIAlwcmludGYoImNhbmNlbFxuIik7CiAJcHJp bnRmKCJkaXNhbGxvd2VkX2luX3BpcGVsaW5lXG4iKTsKKwlwcmludGYoImhvbGRhYmxlX2N1cnNv clxuIik7CiAJcHJpbnRmKCJtdWx0aV9waXBlbGluZXNcbiIpOwogCXByaW50Zigibm9zeW5jXG4i KTsKIAlwcmludGYoInBpcGVsaW5lX2Fib3J0XG4iKTsKQEAgLTIyMjUsNiArMjMxMyw4IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl0ZXN0X2NhbmNlbChjb25uKTsKIAllbHNlIGlm IChzdHJjbXAodGVzdG5hbWUsICJkaXNhbGxvd2VkX2luX3BpcGVsaW5lIikgPT0gMCkKIAkJdGVz dF9kaXNhbGxvd2VkX2luX3BpcGVsaW5lKGNvbm4pOworCWVsc2UgaWYgKHN0cmNtcCh0ZXN0bmFt ZSwgImhvbGRhYmxlX2N1cnNvciIpID09IDApCisJCXRlc3RfaG9sZGFibGVfY3Vyc29yKGNvbm4p OwogCWVsc2UgaWYgKHN0cmNtcCh0ZXN0bmFtZSwgIm11bHRpX3BpcGVsaW5lcyIpID09IDApCiAJ CXRlc3RfbXVsdGlfcGlwZWxpbmVzKGNvbm4pOwogCWVsc2UgaWYgKHN0cmNtcCh0ZXN0bmFtZSwg Im5vc3luYyIpID09IDApCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000001b79b4064d503b2f--