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 1wh6MY-0003Ey-1M for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2026 14:01:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wh6MW-000rSt-1w for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Jul 2026 14:01:25 +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 1wh6MW-000rSk-08 for pgsql-hackers@lists.postgresql.org; Tue, 07 Jul 2026 14:01:24 +0000 Received: from mail-lf1-x129.google.com ([2a00:1450:4864:20::129]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wh6MS-000000002p1-1uau for pgsql-hackers@lists.postgresql.org; Tue, 07 Jul 2026 14:01:24 +0000 Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-5aebd77cbb4so3516474e87.2 for ; Tue, 07 Jul 2026 07:01:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783432880; x=1784037680; darn=lists.postgresql.org; h=mime-version:subject:references:in-reply-to:message-id:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=6T59fFFkFEpzzv58SY5Ib4uSN8ITxQQEjnQokSwRUyQ=; b=okbTFMDVQrW8vS0hjcdB6rNNyoSr2YVxFQMVRbusrNyCmU8eE0inifKmeEnl1RSewW 3nFNYpxJkW15v1/Bp3/E45Z/KD7xzkvWlMOSvCsgHtEmbYSlKAM9BJeBHhYPPYRSTPAc UCXIgBOxbQh2Rd4541CQUZVofsr/Z5aU5uVaC1QN/5W1gw2smSCv6MdGwRRJE3Q0jmkB YxSu2+pM0qLMfs+oUsLk05khu9g/1fR8m9qliBa+vB98srVtAMnCiQkEjf7HuQ6zeFX0 E37/zZPuLerBbjxhBwrNWkDbPi0xzZMnLiW7joX4GCQUoFLTTUgnCYl8bIN2a6HjwSuB 6Few== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783432880; x=1784037680; h=mime-version:subject:references:in-reply-to:message-id:cc:to:from :date:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=6T59fFFkFEpzzv58SY5Ib4uSN8ITxQQEjnQokSwRUyQ=; b=kIP28snK9UZMp0Ebw/1OBqT0l5TdgAtNJWSdaO9P1rPRiqz0xnCN2CJKMXiUDt8+Pa Tke4c2xMp8QTJ9iVd0V8RPkT1gwMW0wX53oKvRNNgW01xvKBR0L6D8G+p+cmLNGQJTPj pa+O6fUQguvvRQmEDTrEVd2/aSYevW3j22aEWx9tYkmkRnJh0oZO3Jy1QhHLR0I7lnF+ 8WVeoYcsk/8H191/IO42/JKbYEj10q/wVMaTXAblNRe8CAK2fmFPhAzWVKBPlvgf8RK0 mk8maw/qAPuYUofdb9dz7nWyWs4KmhnUz5MZtIq+FWtxyrRpynvI8dwx6J/5BsZlobx3 3MHA== X-Gm-Message-State: AOJu0YwwK87+oUC73JbVnjTLX5ICnBuWWQRtjxGuna1EA9Ji4B1P6yfR rnuB8wuAMqeptM2KcNRK1rVgv7oV6UpdysTrippVZxTG26/67bfDUNGLDpoO5g== X-Gm-Gg: AfdE7cmnWce+LcQixVq6grHbtipE5YiAKjHODQs/8JzxM5v59nw4REyI9kLWwVG1dNO mOrEIih4d+RQoUSsoAq5K1tgJ0ryorznY4VertA7OCtjJ6TaZ5dDkUrj9j9FK1sBOnjuv4x6ZVa b+X5Jf193nlMRlDgjwNdGxnlCj1N3V8cXyStzAJURB5u0COMBMRDSUJb63b7T3q2/eWHco6f/Dz 4ew9Jac4lgUTEHI/Kj+eJOjBlgRUBJ0eMNAaokr7hm11vnCHs2JPStVj9Bhce9t9025PqkZng8c JJ5x4LcX6Td72BHaxL5oZ10e44mIJtIczvswVZNok6Iva4uWm9Nnpid5TyQT/ELwEqxhxVsNEvh 9u0SUberuCvUEpG+7Wl/x5iISkw0oy/Cg71D51z+WNRWdGQqt1AgCBR6DWyoY+A9QVPTrOTENCK qpav3pm9kFcpmOI7BC6sQ0AWjy6OT50g== X-Received: by 2002:a05:6512:8001:20b0:5ae:b8f2:a639 with SMTP id 2adb3069b0e04-5b007c2c03bmr954989e87.19.1783432877073; Tue, 07 Jul 2026 07:01:17 -0700 (PDT) Received: from [192.168.0.24] ([78.30.111.25]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5aed136f8dcsm3758987e87.11.2026.07.07.07.01.13 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Jul 2026 07:01:15 -0700 (PDT) Date: Tue, 7 Jul 2026 16:01:05 +0200 From: michal.dtz@gmail.com To: Tom Lane Cc: pgsql-hackers@lists.postgresql.org Message-ID: <66fa3fe6-8c99-4120-935c-f32f3b61fc30@Spark> In-Reply-To: <3856834.1783087886@sss.pgh.pa.us> References: <028117fa-439b-4762-b647-130bc19df89c@Spark> <3856834.1783087886@sss.pgh.pa.us> Subject: Re: Schema-qualify the equality operator when deparsing NULLIF/IS DISTINCT FROM X-Readdle-Message-ID: 66fa3fe6-8c99-4120-935c-f32f3b61fc30@Spark MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="6a4d06a8_62bbd95a_14ffe" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --6a4d06a8_62bbd95a_14ffe Content-Type: multipart/alternative; boundary="6a4d06a8_257130a3_14ffe" --6a4d06a8_257130a3_14ffe Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Tom Lane writes: > Don't like this approach one bit. =C2=A0While the output it produces mi= ght > be semantically equivalent (for non-volatile expressions anyway), > it's not equivalent performance-wise, especially not if the change > blocks any optimizations. =C2=A0Also, other cases such as JOIN USING re= ally > can't be fixed without new syntax. Thanks for the review. =C2=A0You are right that rewriting these construct= s into explicit-operator expressions at deparse time was a dead end: the rewritten forms evaluate their inputs more than once and stop being the construct the user wrote. =C2=A0v1 is withdrawn. Attached is v2, which takes the opposite approach: instead of teaching the deparser to avoid the constructs, it gives every construct that resolves an operator by unqualified name a place to write a schema-qualified one. =C2=A0That covers the full list you cataloged back = in 2018 (10492.1531515255=40sss.pgh.pa.us) -- IS =5BNOT=5D DISTINCT =46ROM, NULLI=46, simple CASE, row comparisons, ANY/ALL subquery comparisons -- plus JOIN USING / NATURAL JOIN, which has the same disease. Why bother=3F =C2=A0Trawling the lists turned up roughly eleven independe= nt field reports of this failure class since 2014. =C2=A0IS DISTINCT =46ROM accounts for seven of them, mostly via trigger WHEN clauses comparing extension types (citext, hstore, PostGIS), where the dump either fails to restore or the trigger definition changes meaning. =C2=A0JOIN USING appears twice, including the 2020 case of a citext join inside a materialized view that silently returned wrong results after dump/reload (CAC35HNnNGavaZ=3DP=3DrUcwTwYEhfoyXDg32REXCRDgxBmC3No3nA=40mail.gmail.com= ). NULLI=46 appears twice. =C2=A0And while writing the tests I found one more that nobody had reported: a multi-column (a, b) IN (SELECT ...) whose columns resolve equality operators from different schemas silently swaps one column's operator on reload *today* -- ruleutils prints only the first column's operator name and even has a comment admitting the approximation. =C2=A0Patch 0004 carries = a regression test whose setup, run on unpatched master, reproduces the corruption. The design is one principle applied six times. =C2=A0The parser always accepts an OPERATOR() decoration naming the operator(s) explicitly; ruleutils.c emits the decoration only when reparsing the undecorated form would not resolve the very same operator OIDs -- that is, when the operator is not reachable by its bare name under the prevailing search path, or is not named =22=3D=22 where =22=3D=22 is what an undecor= ated reparse would look up. =C2=A0Dumps of ordinary databases are byte-for-byt= e unchanged. =C2=A0Parse analysis produces exactly the same expression tree= s as before: v2 changes only what ruleutils emits -- the executor node trees are untouched, so plan shapes, the new PG 19 IS DISTINCT =46ROM simplifications, and evaluation counts are all unaffected, and no planner optimization is blocked. The syntax, per construct: =C2=A0 =C2=A0IS =5BNOT=5D DISTINCT =46ROM =C2=A0 a IS DISTINCT OPERATOR(s= .=3D) =46ROM b =C2=A0 =C2=A0NULLI=46 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 NULLI=46(a, b USING OPERATOR(s.=3D)) =C2=A0 =C2=A0JOIN USING =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = JOIN t USING (a, b) OPERATOR (s.=3D, s.=3D) =C2=A0 =C2=A0row comparison =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ROW(a, b) = OPERATOR(s.<, s.<) ROW(c, d) =C2=A0 =C2=A0ANY/ALL subquery =C2=A0 =C2=A0 =C2=A0 =C2=A0 (a, b) OPERATOR= (s.=3D, s.=3D) ANY (SELECT ...) =C2=A0 =C2=A0simple CASE =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= CASE x WHEN y USING OPERATOR(s.=3D) THEN ... No new keywords; the grammar reuses the existing OPERATOR() production and extends it to carry a comma-separated list where a construct compares multiple columns. =C2=A0bison 3.8.2 reports zero shift/reduce or= reduce/reduce conflicts (checked with counterexample analysis at every step, since several superficially nicer spellings do conflict), and the regression tests exercise the forms in combination: mixed bare/qualified lists, arity mismatches, non-boolean operators, and b=5Fexpr contexts. The patches, bisectable (the core regression suite is green at every step of the series; check-world at the tip): =C2=A00001 =C2=A0IS =5BNOT=5D DISTINCT =46ROM and NULLI=46, plus a contri= b/hstore =C2=A0 =C2=A0 =C2=A0 =C2=A0round-trip test against a real extension =22=3D= =22 and a trigger =C2=A0 =C2=A0 =C2=A0 =C2=A0WHEN-clause round-trip test. =C2=A0 =C2=A0 =C2=A0 =C2=A0(12 files changed, 658 insertions(+), 10 delet= ions(-)) =C2=A00002 =C2=A0JOIN USING and NATURAL JOIN; JoinExpr gains a usingOpera= tors =C2=A0 =C2=A0 =C2=A0 =C2=A0field, hence a catversion bump. =C2=A0 =C2=A0 =C2=A0 =C2=A0(9 files changed, 372 insertions(+), 29 deleti= ons(-)) =C2=A00003 =C2=A0Row comparisons; the single-name OPERATOR() decoration =C2=A0 =C2=A0 =C2=A0 =C2=A0generalizes to a per-column list. =C2=A0Contex= ts that accept an =C2=A0 =C2=A0 =C2=A0 =C2=A0operator name but not a list (CREATE OPERATOR,= DDL options) =C2=A0 =C2=A0 =C2=A0 =C2=A0reject lists with a uniform error message. =C2=A0 =C2=A0 =C2=A0 =C2=A0(12 files changed, 532 insertions(+), 27 delet= ions(-)) =C2=A00004 =C2=A0ANY/ALL and row-op-subquery sublinks; fixes the silent I= N =C2=A0 =C2=A0 =C2=A0 =C2=A0operator swap described above. =C2=A0Raw-parse= -only change, no =C2=A0 =C2=A0 =C2=A0 =C2=A0catversion bump. =C2=A0 =C2=A0 =C2=A0 =C2=A0(7 files changed, 524 insertions(+), 40 deleti= ons(-)) =C2=A00005 =C2=A0Simple CASE, one optional USING OPERATOR() per WHEN arm;= =C2=A0 =C2=A0 =C2=A0 =C2=A0CaseWhen gains a field, hence a catversion bum= p. =C2=A0 =C2=A0 =C2=A0 =C2=A0(9 files changed, 304 insertions(+), 8 deletio= ns(-)) The catversion bumps in 0002 and 0005 are included so that testers get a clean initdb; whoever commits this will of course re-bump. Some spellings are open to bikeshedding, and I am happy to rework them. =C2=A0In particular NULLI=46 could take the operator as a third argument, NULLI=46(a, b, OPERATOR(s.=3D)), and JOIN USING could attach operators per column, USING (a OPERATOR(s.=3D), b), instead of the trailing list; I validated both alternatives as conflict-free before settling on the attached forms, which keep the column list readable and match the row-comparison list style. =C2=A0Likewise, a row comparison= whose columns all use the same qualified operator currently prints the full repeated list rather than a single-element decoration; that is deliberate (explicit is better than clever) but easily changed. =46ull disclosure: this series was developed with substantial AI assistance (Claude). =C2=A0Every grammar candidate was validated with bison before adoption, every patch went through adversarial review, and the full check-world plus the pg=5Fupgrade dump/restore round-trip of the regression database (which keeps all the new views, and a trigger whose WHEN clause exercises the same deparse path, precisely so that 002=5Fpg=5Fupgrade re-parses them) are green locally on macOS. If the direction looks right I will register this in the next commitfest (PG 20-1). =C2=A0=46eedback on the syntax choices is especiall= y welcome for the simple CASE arm clause and the row-comparison operator lists, where the SQL committee gives us the least precedent to lean on. Best regards, Micha=C5=82 Pasternak -- Z uszanowaniem, Micha=C5=82 Pasternak =F0=9F=93=B1+48793668733 =F0=9F=93=A7 m=40iplweb.pl https://bpp.iplweb.pl/ =F0=9F=97=93=EF=B8=8F https://calendly.com/mpasternak/ On 3 lip 2026 o 16:11 +0200, Tom Lane , wrote: > michal.dtz=40gmail.com writes: > > A view that applies NULLI=46 or IS =5BNOT=5D DISTINCT =46ROM to a val= ue whose > > =22=3D=22 operator is not on the search=5Fpath (for example an hstore= column) > > cannot be dumped and restored. > > Yeah, this has been a known issue for a long time. I cataloged a > bunch of related cases at > > https://www.postgresql.org/message-id/10492.1531515255%40sss.pgh.pa.us > > but I missed JOIN USING, which also fails to mention exactly which > operator it resolved the semantics with. It doesn't seem hugely > helpful to fix one case without fixing them all, and fixing them all > is a lot of work :-( > > > > Proposed fix (in the deparser) > > ------------------------------ > > When the equality operator would not be found by its bare name under = the > > current search=5Fpath -- detected via generate=5Foperator=5Fname(), w= hich > > already decides when the OPERATOR(...) decoration is required -- emit= an > > equivalent expression that can carry the qualified operator, instead = of > > the normal syntax: > > > =C2=A0 =C2=A0NULLI=46(a, b) > > =C2=A0 =C2=A0 =C2=A0 =C2=A0-> CASE WHEN a IS NOT NULL AND b IS NOT NU= LL AND (a OPERATOR(s.=3D) b) > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0THEN NULL ELSE= a END > > Don't like this approach one bit. While the output it produces might > be semantically equivalent (for non-volatile expressions anyway), > it's not equivalent performance-wise, especially not if the change > blocks any optimizations. Also, other cases such as JOIN USING really > can't be fixed without new syntax. > > I'm kind of surprised that we haven't gotten more complaints since > 2018, but there really haven't been all that many, so we never got > to the point of putting in the work to fix this topic properly. > If you feel motivated, though, have at it. > > regards, tom lane --6a4d06a8_257130a3_14ffe Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
Tom Lane <tgl=40sss.pg= h.pa.us> writes:
> Don't like this approach one bit. &=23160;While the output it produc= es might
> be semantically equivalent (for non-volatile expressions anyway), > it's not equivalent performance-wise, especially not if the change > blocks any optimizations. &=23160;Also, other cases such as JOIN USI= NG really
> can't be fixed without new syntax.
&=23160;
Thanks for the review. &=23160;You are right that rewriting these co= nstructs
into explicit-operator expressions at deparse time was a dead end: the rewritten forms evaluate their inputs more than once and stop being
= the construct the user wrote. &=23160;v1 is withdrawn.
&=23160;
Attached is v2, which takes the opposite approach: instead of teachi= ng
the deparser to avoid the constructs, it gives every construct that
= resolves an operator by unqualified name a place to write a
schema-qualified one. &=23160;That covers the full list you cataloged bac= k in
2018 (10492.15315= 15255=40sss.pgh.pa.us) -- IS =5BNOT=5D DISTINCT =46ROM,
NULLI=46, simple CASE, row comparisons, ANY/ALL subquery comparisons -- plus JOIN USING / NATURAL JOIN, which has the same disease.
&=23160;
Why bother=3F &=23160;Trawling the lists turned up roughly eleven in= dependent
field reports of this failure class since 2014. &=23160;IS DISTINCT =46RO= M
accounts for seven of them, mostly via trigger WHEN clauses comparing
extension types (citext, hstore, PostGIS), where the dump either fails to restore or the trigger definition changes meaning. &=23160;JOIN USING<= br /> appears twice, including the 2020 case of a citext join inside a
materialized view that silently returned wrong results after
dump/reload
(CAC35HNnNGavaZ=3DP=3DrUcwTwYEhfoyXDg32REXCRDgxBmC= 3No3nA=40mail.gmail.com).
NULLI=46 appears twice. &=23160;And while writing the tests I
found one more that nobody had reported: a multi-column
(a, b) IN (SELECT ...) whose columns resolve equality operators from
different schemas silently swaps one column's operator on reload
*today* -- ruleutils prints only the first column's operator name and
even has a comment admitting the approximation. &=23160;Patch 0004 carrie= s a
regression test whose setup, run on unpatched master, reproduces the
corruption.
&=23160;
The design is one principle applied six times. &=23160;The parser al= ways
accepts an OPERATOR() decoration naming the operator(s) explicitly;
= ruleutils.c emits the decoration only when reparsing the undecorated
form would not resolve the very same operator OIDs -- that is, when
= the operator is not reachable by its bare name under the prevailing
= search path, or is not named =22=3D=22 where =22=3D=22 is what an undecor= ated
reparse would look up. &=23160;Dumps of ordinary databases are byte-for-b= yte
unchanged. &=23160;Parse analysis produces exactly the same expression tr= ees
as before: v2 changes only what ruleutils emits -- the executor node
trees are untouched, so plan shapes, the new PG 19 IS DISTINCT =46ROM
simplifications, and evaluation counts are all unaffected, and no
planner optimization is blocked.
&=23160;
The syntax, per construct:
&=23160;
&=23160; &=23160;IS =5BNOT=5D DISTINCT =46ROM &=23160; a IS DISTINCT= OPERATOR(s.=3D) =46ROM b
&=23160; &=23160;NULLI=46 &=23160; &=23160; &=23160; &=23160; &=23160; &=23= 160; &=23160; &=23160; &=23160; NULLI=46(a, b USING OPERATOR(s.=3D))
&=23160; &=23160;JOIN USING &=23160; &=23160; &=23160; &=23160; &=23160; = &=23160; &=23160; JOIN t USING (a, b) OPERATOR (s.=3D, s.=3D)
&=23160; &=23160;row comparison &=23160; &=23160; &=23160; &=23160; &=231= 60; ROW(a, b) OPERATOR(s.<, s.<) ROW(c, d)
&=23160; &=23160;ANY/ALL subquery &=23160; &=23160; &=23160; &=23160; (a,= b) OPERATOR(s.=3D, s.=3D) ANY (SELECT ...)
&=23160; &=23160;simple CASE &=23160; &=23160; &=23160; &=23160; &=23160;= &=23160; &=23160;CASE x WHEN y USING OPERATOR(s.=3D) THEN ...
&=23160;
No new keywords; the grammar reuses the existing OPERATOR() producti= on
and extends it to carry a comma-separated list where a construct
compares multiple columns. &=23160;bison 3.8.2 reports zero shift/reduce = or
reduce/reduce conflicts (checked with counterexample analysis at every step, since several superficially nicer spellings do conflict), and
= the regression tests exercise the forms in combination: mixed
bare/qualified lists, arity mismatches, non-boolean operators, and
b=5Fexpr contexts.
&=23160;
The patches, bisectable (the core regression suite is green at every=
step of the series; check-world at the tip):
&=23160;

&=23160;0001 &=23160;IS =5BNOT=5D DISTINCT =46ROM and NULLI=46, plus a co= ntrib/hstore
&=23160; &=23160; &=23160; &=23160;round-trip test against a real extensi= on =22=3D=22 and a trigger
&=23160; &=23160; &=23160; &=23160;WHEN-clause round-trip test.
&=23160; &=23160; &=23160; &=23160;(12 files changed, 658 insertions(+), = 10 deletions(-))
&=23160;0002 &=23160;JOIN USING and NATURAL JOIN; JoinExpr gains a usingO= perators
&=23160; &=23160; &=23160; &=23160;field, hence a catversion bump.
&=23160; &=23160; &=23160; &=23160;(9 files changed, 372 insertions(+), 2= 9 deletions(-))
&=23160;0003 &=23160;Row comparisons; the single-name OPERATOR() decorati= on
&=23160; &=23160; &=23160; &=23160;generalizes to a per-column list. &=23= 160;Contexts that accept an
&=23160; &=23160; &=23160; &=23160;operator name but not a list (CREATE O= PERATOR, DDL options)
&=23160; &=23160; &=23160; &=23160;reject lists with a uniform error mess= age.
&=23160; &=23160; &=23160; &=23160;(12 files changed, 532 insertions(+), = 27 deletions(-))
&=23160;0004 &=23160;ANY/ALL and row-op-subquery sublinks; fixes the sile= nt IN
&=23160; &=23160; &=23160; &=23160;operator swap described above. &=23160= ;Raw-parse-only change, no
&=23160; &=23160; &=23160; &=23160;catversion bump.
&=23160; &=23160; &=23160; &=23160;(7 files changed, 524 insertions(+), 4= 0 deletions(-))
&=23160;0005 &=23160;Simple CASE, one optional USING OPERATOR() per WHEN = arm;
&=23160; &=23160; &=23160; &=23160;CaseWhen gains a field, hence a catver= sion bump.
&=23160; &=23160; &=23160; &=23160;(9 files changed, 304 insertions(+), 8= deletions(-))
&=23160;
The catversion bumps in 0002 and 0005 are included so that testers g= et
a clean initdb; whoever commits this will of course re-bump.
&=23160;
Some spellings are open to bikeshedding, and I am happy to rework them. &=23160;In particular NULLI=46 could take the operator as a third argument, NULLI=46(a, b, OPERATOR(s.=3D)), and JOIN USING could attach operators per column, USING (a OPERATOR(s.=3D), b), instead of the
trailing list; I validated both alternatives as conflict-free before
settling on the attached forms, which keep the column list readable
= and match the row-comparison list style. &=23160;Likewise, a row comparis= on
whose columns all use the same qualified operator currently prints the full repeated list rather than a single-element decoration; that is
= deliberate (explicit is better than clever) but easily changed.
&=23160;
=46ull disclosure: this series was developed with substantial AI
assistance (Claude). &=23160;Every grammar candidate was validated with bison before adoption, every patch went through adversarial review,
= and the full check-world plus the pg=5Fupgrade dump/restore round-trip of the regression database (which keeps all the new views, and a
trigger whose WHEN clause exercises the same deparse path, precisely so that 002=5Fpg=5Fupgrade re-parses them) are green locally on macOS.
=
&=23160;
If the direction looks right I will register this in the next
commitfest (PG 20-1). &=23160;=46eedback on the syntax choices is especia= lly
welcome for the simple CASE arm clause and the row-comparison operator lists, where the SQL committee gives us the least precedent to lean
= on.
&=23160;
Best regards,
Micha=C5=82 Pasternak
&=23160;

--&=23160;
Z uszanowaniem, Micha=C5=82 Pasternak&=23160;
=F0=9F=93=B1+48793668733&=23160;
=F0=9F=93=A7 m=40iplweb.pl = https://bpp.iplweb.pl/&=23160;=
=F0=9F=97=93=EF=B8=8F https://calendly.com/mpasternak/
On 3 lip 2026 o 16:11 +0200, Tom La= ne <tgl=40sss.pgh.pa.us>, wrote:
michal.dtz=40gmail.com writes:
A view that applies NULLI=46 or IS =5BNOT=5D DISTINCT =46ROM to= a value whose
=22=3D=22 operator is not on the search=5Fpath (for example an hstore col= umn)
cannot be dumped and restored.

Yeah, this has been a known issue for a long time. I cataloged a
bunch of related cases at

https://www.postgresql.org/message-id/10492.1531515255%40sss.pgh.pa.us
but I missed JOIN USING, which also fails to mention exactly which
operator it resolved the semantics with. It doesn't seem hugely
helpful to fix one case without fixing them all, and fixing them all
is a lot of work :-(


Proposed fix (in the deparser)
------------------------------
When the equality operator would not be found by its bare name under the<= br /> current search=5Fpath -- detected via generate=5Foperator=5Fname(), which=
already decides when the OPERATOR(...) decoration is required -- emit an<= br /> equivalent expression that can carry the qualified operator, instead of the normal syntax:

&=23160; &=23160;NULLI=46(a, b)
&=23160; &=23160; &=23160; &=23160;-> CASE WHEN a IS NOT NULL AND b IS= NOT NULL AND (a OPERATOR(s.=3D) b)
&=23160; &=23160; &=23160; &=23160; &=23160; &=23160; &=23160; &=23160;TH= EN NULL ELSE a END

Don't like this approach one bit. While the output it produces might
be semantically equivalent (for non-volatile expressions anyway),
it's not equivalent performance-wise, especially not if the change
blocks any optimizations. Also, other cases such as JOIN USING really
can't be fixed without new syntax.

I'm kind of surprised that we haven't gotten more complaints since
2018, but there really haven't been all that many, so we never got
to the point of putting in the work to fix this topic properly.
If you feel motivated, though, have at it.

regards, tom lane
--6a4d06a8_257130a3_14ffe-- --6a4d06a8_62bbd95a_14ffe Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-Allow-schema-qualifying-the-operator-in-IS-DISTIN.patch" RnJvbSAyMzU1ZjRlY2JjOGNhYjQ2YTMyYmI1ZTk5Nzg3MGYwMGM0N2FlYmVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGE9QzU9ODI9MjBQYXN0ZXJuYWs/PSA8 bWljaGFsLmR0ekBnbWFpbC5jb20+CkRhdGU6IE1vbiwgNiBKdWwgMjAyNiAyMjoxNDowMCArMDIw MApTdWJqZWN0OiBbUEFUQ0ggdjIgMS81XSBBbGxvdyBzY2hlbWEtcXVhbGlmeWluZyB0aGUgb3Bl cmF0b3IgaW4gSVMgRElTVElOQ1QKIEZST00vTlVMTElGCgpUaGUgSVMgW05PVF0gRElTVElOQ1Qg RlJPTSBhbmQgTlVMTElGIGNvbnN0cnVjdHMgbG9vayB1cCB0aGVpciBlcXVhbGl0eQpvcGVyYXRv ciBieSB0aGUgdW5xdWFsaWZpZWQgbmFtZSAiPSIgYXQgcGFyc2UgdGltZSwgYW5kIHRoZWlyIHN5 bnRheCBoYXMKbm8gcGxhY2UgdG8gd3JpdGUgYSBzY2hlbWEtcXVhbGlmaWVkIG9wZXJhdG9yIG5h bWUuICBDb25zZXF1ZW50bHkgYSB2aWV3Cm9yIHJ1bGUgdXNpbmcgdGhlbSB3aXRoIGFuIG9wZXJh dG9yIHRoYXQgaXMgbm90IHJlYWNoYWJsZSB0aHJvdWdoIHRoZQpwcmV2YWlsaW5nIHNlYXJjaF9w YXRoIC0tIGZvciBleGFtcGxlIGFuIGV4dGVuc2lvbiB0eXBlJ3MgIj0iIHdoaWxlCnJlc3Rvcmlu ZyBhIGR1bXAgd2l0aCB0aGUgcmVzdHJpY3RlZCBzZWFyY2hfcGF0aCBwZ19kdW1wIHVzZXMgLS0g ZWl0aGVyCmZhaWxzIHRvIHJlbG9hZCBvciwgd29yc2UsIHNpbGVudGx5IHJlc29sdmVzIGEgZGlm ZmVyZW50IG9wZXJhdG9yLgoKUHJvdmlkZSB0aGUgbWlzc2luZyBzeW50YXg6IGEgSVMgW05PVF0g RElTVElOQ1QgT1BFUkFUT1Ioc2NoZW1hLj0pIEZST00gYgphbmQgTlVMTElGKGEsIGIgVVNJTkcg T1BFUkFUT1Ioc2NoZW1hLj0pKS4gIFRoZSBkZWNvcmF0aW9uIGlzIG9wdGlvbmFsOwpydWxldXRp bHMuYyBlbWl0cyBpdCBvbmx5IHdoZW4gcmVwYXJzaW5nIHRoZSB1bmRlY29yYXRlZCBjb25zdHJ1 Y3Qgd291bGQKbm90IHJlc29sdmUgdGhlIHNhbWUgb3BlcmF0b3IgLS0gaS5lLiB3aGVuIHRoZSBv cGVyYXRvciBpcyBub3QgcmVhY2hhYmxlCmJ5IHRoZSBiYXJlIG5hbWUgIj0iIHVuZGVyIHRoZSBw cmV2YWlsaW5nIHNlYXJjaCBwYXRoLCBvciBpcyBub3QgbmFtZWQKIj0iIGF0IGFsbC4gIFBhcnNl IGFuYWx5c2lzIGlzIHVuY2hhbmdlZDogQV9FeHByLm5hbWUgYWxyZWFkeSBjYXJyaWVzIGEKcG9z c2libHktcXVhbGlmaWVkIG5hbWUgbGlzdC4KClBlciBkaXNjdXNzaW9uLCB0aGlzIGlzIHRoZSBm aXJzdCBvZiBhIHNlcmllcyBjb3ZlcmluZyBhbGwgY29uc3RydWN0cwpjYXRhbG9nZWQgaW4gMTA0 OTIuMTUzMTUxNTI1NUBzc3MucGdoLnBhLnVzIHBsdXMgSk9JTiBVU0lORy4KCkRvY3VtZW50IHRo ZSBvcHRpb25hbCBkZWNvcmF0aW9uOiB0aGUgSVMgW05PVF0gRElTVElOQ1QgRlJPTSBwcmVkaWNh dGVzCmFuZCB0aGUgTlVMTElGIHNlY3Rpb24gZ2FpbiBpdCBpbiB0aGVpciBzeW5vcHNlcywgZWFj aCBub3RpbmcgdGhhdCB0aGUKIj0iIG9wZXJhdG9yIGlzIHJlc29sdmVkIHZpYSB0aGUgc2VhcmNo IHBhdGggYW5kIHRoYXQgcGdfZHVtcCBlbWl0cyB0aGUKZGVjb3JhdGlvbiB3aGVuIHRoZSBiYXJl IG5hbWUgd291bGQgbm90IHJlc29sdmUgYXQgcmVzdG9yZSB0aW1lIG9yIHRoZQpvcGVyYXRvciBp cyBub3QgbmFtZWQgIj0iIGF0IGFsbDsgdGhlIE9QRVJBVE9SKCkgZGlzY3Vzc2lvbiBpbiB0aGUK c3ludGF4IGNoYXB0ZXIgY3Jvc3MtcmVmZXJlbmNlcyBib3RoLgoKQWRkIGEgcm91bmQtdHJpcCB0 ZXN0IHRvIGNvbnRyaWIvaHN0b3JlLCBhIHJlYWwgZXh0ZW5zaW9uIHdob3NlICI9IiBsaXZlcwpv dXRzaWRlIHBnX2NhdGFsb2c6IHZpZXdzIG92ZXIgTlVMTElGIC8gSVMgW05PVF0gRElTVElOQ1Qg RlJPTSBvbiBoc3RvcmUKY29sdW1ucyBkZXBhcnNlIHdpdGggT1BFUkFUT1IocHVibGljLj0pIG9u Y2UgaHN0b3JlJ3Mgc2NoZW1hIGlzIG9mZiB0aGUKc2VhcmNoX3BhdGgsIGFuZCByZXBhcnNlIHN1 Y2Nlc3NmdWxseSB1bmRlciB0aGF0IHJlc3RyaWN0ZWQgcGF0aC4KCkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vMzg1NjgzNC4xNzgzMDg3ODg2QHNzcy5wZ2gucGEudXMKCi0tLQogY29u dHJpYi9oc3RvcmUvZXhwZWN0ZWQvaHN0b3JlLm91dCAgICAgICAgICAgIHwgIDg4ICsrKysrKwog Y29udHJpYi9oc3RvcmUvc3FsL2hzdG9yZS5zcWwgICAgICAgICAgICAgICAgIHwgIDQzICsrKwog ZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1jb21wYXJpc29uLnNnbWwgICAgICAgIHwgIDIzICstCiBk b2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWNvbmRpdGlvbmFsLnNnbWwgICAgICAgfCAgMTcgKy0KIGRv Yy9zcmMvc2dtbC9zeW50YXguc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArCiBzcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgMjAgKysKIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgNTAgKysrLQogc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA5ICstCiAuLi4vcmVn cmVzcy9leHBlY3RlZC9vcGVyYXRvcl9xdWFsaWZ5Lm91dCAgICAgfCAyNTAgKysrKysrKysrKysr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3FsICAgICB8IDE0 OCArKysrKysrKysrKwogMTIgZmlsZXMgY2hhbmdlZCwgNjU4IGluc2VydGlvbnMoKyksIDEwIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b3BlcmF0b3JfcXVhbGlmeS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNz L3NxbC9vcGVyYXRvcl9xdWFsaWZ5LnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaHN0b3JlL2V4 cGVjdGVkL2hzdG9yZS5vdXQgYi9jb250cmliL2hzdG9yZS9leHBlY3RlZC9oc3RvcmUub3V0Cmlu ZGV4IGFjZWE4ODA2YmEuLjE1OWI0MDk5MzQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaHN0b3JlL2V4 cGVjdGVkL2hzdG9yZS5vdXQKKysrIGIvY29udHJpYi9oc3RvcmUvZXhwZWN0ZWQvaHN0b3JlLm91 dApAQCAtMTYzMiwzICsxNjMyLDkxIEBAIFdIRVJFICBoc3RvcmVfaGFzaCh2KTo6Yml0KDMyKSAh PSBoc3RvcmVfaGFzaF9leHRlbmRlZCh2LCAwKTo6Yml0KDMyKQogLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCiAoMCByb3dzKQogCistLSBWaWV3cyB1c2luZyBOVUxM SUYgb3IgSVMgW05PVF0gRElTVElOQ1QgRlJPTSBvbiBoc3RvcmUgdmFsdWVzIG11c3QgYmUKKy0t IGRlcGFyc2VkIHdpdGggYSBzY2hlbWEtcXVhbGlmaWVkIGVxdWFsaXR5IG9wZXJhdG9yIHdoZW4g aHN0b3JlJ3MgIj0iCistLSBvcGVyYXRvciBpcyBub3QgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHNl YXJjaF9wYXRoLCBzbyB0aGF0IHRoZSBkdW1wZWQKKy0tIGRlZmluaXRpb24gcmVsb2FkcyBjb3Jy ZWN0bHkgKGUuZy4gd2l0aCB0aGUgcmVzdHJpY3RlZCBzZWFyY2hfcGF0aCBwZ19kdW1wCistLSB1 c2VzKS4KK0NSRUFURSBTQ0hFTUEgaHN0b3JlX3ZpZXdfdGVzdDsKK0NSRUFURSBUQUJMRSBoc3Rv cmVfdmlld190ZXN0LnQgKGlkIGludCwgYzEgaHN0b3JlLCBjMiBoc3RvcmUpOworQ1JFQVRFIFZJ RVcgaHN0b3JlX3ZpZXdfdGVzdC52X251bGxpZiBBUworICBTRUxFQ1QgaWQsIE5VTExJRihjMSwg YzIpIEFTIHIgRlJPTSBoc3RvcmVfdmlld190ZXN0LnQ7CitDUkVBVEUgVklFVyBoc3RvcmVfdmll d190ZXN0LnZfZGlzdGluY3QgQVMKKyAgU0VMRUNUIGlkLCBjMSBJUyBESVNUSU5DVCBGUk9NIGMy IEFTIHIgRlJPTSBoc3RvcmVfdmlld190ZXN0LnQ7CitDUkVBVEUgVklFVyBoc3RvcmVfdmlld190 ZXN0LnZfbm90ZGlzdCBBUworICBTRUxFQ1QgaWQsIGMxIElTIE5PVCBESVNUSU5DVCBGUk9NIGMy IEFTIHIgRlJPTSBoc3RvcmVfdmlld190ZXN0LnQ7CistLSBXaXRoIGhzdG9yZSdzIHNjaGVtYSAo cHVibGljKSBvbiB0aGUgc2VhcmNoX3BhdGggdGhlIG5vcm1hbCwgdW5xdWFsaWZpZWQKKy0tIHN5 bnRheCBpcyB1c2VkLgorU0VUIHNlYXJjaF9wYXRoID0gaHN0b3JlX3ZpZXdfdGVzdCwgcHVibGlj OworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdoc3RvcmVfdmlld190ZXN0LnZfbnVsbGlmJzo6cmVn Y2xhc3MsIHRydWUpOworICAgICBwZ19nZXRfdmlld2RlZiAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgKworICAgICBOVUxMSUYoYzEsIGMy KSBBUyByKworICAgIEZST00gdDsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdo c3RvcmVfdmlld190ZXN0LnZfZGlzdGluY3QnOjpyZWdjbGFzcywgdHJ1ZSk7CisgICAgICAgICBw Z19nZXRfdmlld2RlZiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAgICArCisgICAgIGMxIElTIERJU1RJTkNU IEZST00gYzIgQVMgcisKKyAgICBGUk9NIHQ7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfdmll d2RlZignaHN0b3JlX3ZpZXdfdGVzdC52X25vdGRpc3QnOjpyZWdjbGFzcywgdHJ1ZSk7CisgICAg ICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgIE5PVCBjMSBJUyBESVNUSU5DVCBGUk9NIGMyIEFTIHIrCisgICAgRlJPTSB0OworKDEgcm93 KQorCistLSBXaXRoIHB1YmxpYyBvZmYgdGhlIHNlYXJjaF9wYXRoIHRoZSBvcGVyYXRvciBtdXN0 IGJlIHNjaGVtYS1xdWFsaWZpZWQsCistLSB1c2luZyB0aGUgZGVkaWNhdGVkIE9QRVJBVE9SKCkg cG9zaXRpb25zIG9mIHRoZXNlIGNvbnN0cnVjdHMuCitTRVQgc2VhcmNoX3BhdGggPSBoc3RvcmVf dmlld190ZXN0OworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdoc3RvcmVfdmlld190ZXN0LnZfbnVs bGlmJzo6cmVnY2xhc3MsIHRydWUpOworICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICBOVUxMSUYoYzEsIGMyIFVTSU5HIE9QRVJBVE9SKHB1YmxpYy49KSkgQVMg cisKKyAgICBGUk9NIHQ7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignaHN0b3Jl X3ZpZXdfdGVzdC52X2Rpc3RpbmN0Jzo6cmVnY2xhc3MsIHRydWUpOworICAgICAgICAgICAgICAg ICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjMSBJUyBESVNUSU5DVCBPUEVS QVRPUihwdWJsaWMuPSkgRlJPTSBjMiBBUyByKworICAgIEZST00gdDsKKygxIHJvdykKKworU0VM RUNUIHBnX2dldF92aWV3ZGVmKCdoc3RvcmVfdmlld190ZXN0LnZfbm90ZGlzdCc6OnJlZ2NsYXNz LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgTk9UIGMxIElTIERJU1RJTkNUIE9QRVJBVE9SKHB1YmxpYy49KSBG Uk9NIGMyIEFTIHIrCisgICAgRlJPTSB0OworKDEgcm93KQorCistLSBUaGUgZGVwYXJzZWQgZGVm aW5pdGlvbnMgbXVzdCByZXBhcnNlIHN1Y2Nlc3NmdWxseSB1bmRlciB0aGF0IHNhbWUKKy0tIHJl c3RyaWN0ZWQgc2VhcmNoX3BhdGggKHRoaXMgaXMgd2hhdCBmYWlsZWQgYmVmb3JlKS4KK0RPICQk CitCRUdJTgorICBFWEVDVVRFICdDUkVBVEUgVklFVyBoc3RvcmVfdmlld190ZXN0LnZfbnVsbGlm X3JlbG9hZCBBUyAnCisgICAgICAgICAgfHwgcGdfZ2V0X3ZpZXdkZWYoJ2hzdG9yZV92aWV3X3Rl c3Qudl9udWxsaWYnOjpyZWdjbGFzcyk7CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIGhzdG9yZV92 aWV3X3Rlc3Qudl9kaXN0aW5jdF9yZWxvYWQgQVMgJworICAgICAgICAgIHx8IHBnX2dldF92aWV3 ZGVmKCdoc3RvcmVfdmlld190ZXN0LnZfZGlzdGluY3QnOjpyZWdjbGFzcyk7CisgIEVYRUNVVEUg J0NSRUFURSBWSUVXIGhzdG9yZV92aWV3X3Rlc3Qudl9ub3RkaXN0X3JlbG9hZCBBUyAnCisgICAg ICAgICAgfHwgcGdfZ2V0X3ZpZXdkZWYoJ2hzdG9yZV92aWV3X3Rlc3Qudl9ub3RkaXN0Jzo6cmVn Y2xhc3MpOworRU5EICQkOworUkVTRVQgc2VhcmNoX3BhdGg7CitEUk9QIFNDSEVNQSBoc3RvcmVf dmlld190ZXN0IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDcgb3RoZXIgb2Jq ZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBoc3RvcmVfdmlld190ZXN0LnQK K2Ryb3AgY2FzY2FkZXMgdG8gdmlldyBoc3RvcmVfdmlld190ZXN0LnZfbnVsbGlmCitkcm9wIGNh c2NhZGVzIHRvIHZpZXcgaHN0b3JlX3ZpZXdfdGVzdC52X2Rpc3RpbmN0Citkcm9wIGNhc2NhZGVz IHRvIHZpZXcgaHN0b3JlX3ZpZXdfdGVzdC52X25vdGRpc3QKK2Ryb3AgY2FzY2FkZXMgdG8gdmll dyBoc3RvcmVfdmlld190ZXN0LnZfbnVsbGlmX3JlbG9hZAorZHJvcCBjYXNjYWRlcyB0byB2aWV3 IGhzdG9yZV92aWV3X3Rlc3Qudl9kaXN0aW5jdF9yZWxvYWQKK2Ryb3AgY2FzY2FkZXMgdG8gdmll dyBoc3RvcmVfdmlld190ZXN0LnZfbm90ZGlzdF9yZWxvYWQKZGlmZiAtLWdpdCBhL2NvbnRyaWIv aHN0b3JlL3NxbC9oc3RvcmUuc3FsIGIvY29udHJpYi9oc3RvcmUvc3FsL2hzdG9yZS5zcWwKaW5k ZXggOGFlOTVlOGE1MS4uNDE2NTRkMDM3NCAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvc3Fs L2hzdG9yZS5zcWwKKysrIGIvY29udHJpYi9oc3RvcmUvc3FsL2hzdG9yZS5zcWwKQEAgLTM5Mywz ICszOTMsNDYgQEAgRlJPTSAgIChWQUxVRVMgKE5VTEw6OmhzdG9yZSksICgnJyksICgnImEga2V5 IiA9PjEnKSwgKCdjID0+IG51bGwnKSwKICAgICAgICAoJ2UgPT4gMDEyMzQ1JyksICgnZyA9PiAy LjM0NWUrNCcpKSB4KHYpCiBXSEVSRSAgaHN0b3JlX2hhc2godik6OmJpdCgzMikgIT0gaHN0b3Jl X2hhc2hfZXh0ZW5kZWQodiwgMCk6OmJpdCgzMikKICAgICAgICBPUiBoc3RvcmVfaGFzaCh2KTo6 Yml0KDMyKSA9IGhzdG9yZV9oYXNoX2V4dGVuZGVkKHYsIDEpOjpiaXQoMzIpOworCistLSBWaWV3 cyB1c2luZyBOVUxMSUYgb3IgSVMgW05PVF0gRElTVElOQ1QgRlJPTSBvbiBoc3RvcmUgdmFsdWVz IG11c3QgYmUKKy0tIGRlcGFyc2VkIHdpdGggYSBzY2hlbWEtcXVhbGlmaWVkIGVxdWFsaXR5IG9w ZXJhdG9yIHdoZW4gaHN0b3JlJ3MgIj0iCistLSBvcGVyYXRvciBpcyBub3QgcmVhY2hhYmxlIHRo cm91Z2ggdGhlIHNlYXJjaF9wYXRoLCBzbyB0aGF0IHRoZSBkdW1wZWQKKy0tIGRlZmluaXRpb24g cmVsb2FkcyBjb3JyZWN0bHkgKGUuZy4gd2l0aCB0aGUgcmVzdHJpY3RlZCBzZWFyY2hfcGF0aCBw Z19kdW1wCistLSB1c2VzKS4KK0NSRUFURSBTQ0hFTUEgaHN0b3JlX3ZpZXdfdGVzdDsKK0NSRUFU RSBUQUJMRSBoc3RvcmVfdmlld190ZXN0LnQgKGlkIGludCwgYzEgaHN0b3JlLCBjMiBoc3RvcmUp OworQ1JFQVRFIFZJRVcgaHN0b3JlX3ZpZXdfdGVzdC52X251bGxpZiBBUworICBTRUxFQ1QgaWQs IE5VTExJRihjMSwgYzIpIEFTIHIgRlJPTSBoc3RvcmVfdmlld190ZXN0LnQ7CitDUkVBVEUgVklF VyBoc3RvcmVfdmlld190ZXN0LnZfZGlzdGluY3QgQVMKKyAgU0VMRUNUIGlkLCBjMSBJUyBESVNU SU5DVCBGUk9NIGMyIEFTIHIgRlJPTSBoc3RvcmVfdmlld190ZXN0LnQ7CitDUkVBVEUgVklFVyBo c3RvcmVfdmlld190ZXN0LnZfbm90ZGlzdCBBUworICBTRUxFQ1QgaWQsIGMxIElTIE5PVCBESVNU SU5DVCBGUk9NIGMyIEFTIHIgRlJPTSBoc3RvcmVfdmlld190ZXN0LnQ7CisKKy0tIFdpdGggaHN0 b3JlJ3Mgc2NoZW1hIChwdWJsaWMpIG9uIHRoZSBzZWFyY2hfcGF0aCB0aGUgbm9ybWFsLCB1bnF1 YWxpZmllZAorLS0gc3ludGF4IGlzIHVzZWQuCitTRVQgc2VhcmNoX3BhdGggPSBoc3RvcmVfdmll d190ZXN0LCBwdWJsaWM7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ2hzdG9yZV92aWV3X3Rlc3Qu dl9udWxsaWYnOjpyZWdjbGFzcywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ2hzdG9y ZV92aWV3X3Rlc3Qudl9kaXN0aW5jdCc6OnJlZ2NsYXNzLCB0cnVlKTsKK1NFTEVDVCBwZ19nZXRf dmlld2RlZignaHN0b3JlX3ZpZXdfdGVzdC52X25vdGRpc3QnOjpyZWdjbGFzcywgdHJ1ZSk7CisK Ky0tIFdpdGggcHVibGljIG9mZiB0aGUgc2VhcmNoX3BhdGggdGhlIG9wZXJhdG9yIG11c3QgYmUg c2NoZW1hLXF1YWxpZmllZCwKKy0tIHVzaW5nIHRoZSBkZWRpY2F0ZWQgT1BFUkFUT1IoKSBwb3Np dGlvbnMgb2YgdGhlc2UgY29uc3RydWN0cy4KK1NFVCBzZWFyY2hfcGF0aCA9IGhzdG9yZV92aWV3 X3Rlc3Q7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ2hzdG9yZV92aWV3X3Rlc3Qudl9udWxsaWYn OjpyZWdjbGFzcywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ2hzdG9yZV92aWV3X3Rl c3Qudl9kaXN0aW5jdCc6OnJlZ2NsYXNzLCB0cnVlKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZign aHN0b3JlX3ZpZXdfdGVzdC52X25vdGRpc3QnOjpyZWdjbGFzcywgdHJ1ZSk7CisKKy0tIFRoZSBk ZXBhcnNlZCBkZWZpbml0aW9ucyBtdXN0IHJlcGFyc2Ugc3VjY2Vzc2Z1bGx5IHVuZGVyIHRoYXQg c2FtZQorLS0gcmVzdHJpY3RlZCBzZWFyY2hfcGF0aCAodGhpcyBpcyB3aGF0IGZhaWxlZCBiZWZv cmUpLgorRE8gJCQKK0JFR0lOCisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIGhzdG9yZV92aWV3X3Rl c3Qudl9udWxsaWZfcmVsb2FkIEFTICcKKyAgICAgICAgICB8fCBwZ19nZXRfdmlld2RlZignaHN0 b3JlX3ZpZXdfdGVzdC52X251bGxpZic6OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJ RVcgaHN0b3JlX3ZpZXdfdGVzdC52X2Rpc3RpbmN0X3JlbG9hZCBBUyAnCisgICAgICAgICAgfHwg cGdfZ2V0X3ZpZXdkZWYoJ2hzdG9yZV92aWV3X3Rlc3Qudl9kaXN0aW5jdCc6OnJlZ2NsYXNzKTsK KyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgaHN0b3JlX3ZpZXdfdGVzdC52X25vdGRpc3RfcmVsb2Fk IEFTICcKKyAgICAgICAgICB8fCBwZ19nZXRfdmlld2RlZignaHN0b3JlX3ZpZXdfdGVzdC52X25v dGRpc3QnOjpyZWdjbGFzcyk7CitFTkQgJCQ7CisKK1JFU0VUIHNlYXJjaF9wYXRoOworRFJPUCBT Q0hFTUEgaHN0b3JlX3ZpZXdfdGVzdCBDQVNDQURFOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2Z1bmMvZnVuYy1jb21wYXJpc29uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWNvbXBh cmlzb24uc2dtbAppbmRleCBlY2IxZDg5NDYzLi42NDlkNjcyYzYyIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvZnVuYy9mdW5jLWNvbXBhcmlzb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVu Yy9mdW5jLWNvbXBhcmlzb24uc2dtbApAQCAtMjAyLDcgKzIwMiw3IEBACiAKICAgICAgIDxyb3c+ CiAgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNf c2lnbmF0dXJlIj4KLSAgICAgICAgPHJlcGxhY2VhYmxlPmRhdGF0eXBlPC9yZXBsYWNlYWJsZT4g PGxpdGVyYWw+SVMgRElTVElOQ1QgRlJPTTwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmRhdGF0eXBl PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgPHJlcGxhY2VhYmxlPmRhdGF0eXBlPC9yZXBsYWNlYWJs ZT4gPGxpdGVyYWw+SVMgRElTVElOQ1Q8L2xpdGVyYWw+IDxvcHRpb25hbD4gPGxpdGVyYWw+T1BF UkFUT1IoPC9saXRlcmFsPjxyZXBsYWNlYWJsZT5vcGVyYXRvcjwvcmVwbGFjZWFibGU+PGxpdGVy YWw+KTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gPGxpdGVyYWw+RlJPTTwvbGl0ZXJhbD4gPHJlcGxh Y2VhYmxlPmRhdGF0eXBlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgPHJldHVybnZhbHVlPmJvb2xl YW48L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KQEAgLTIyMCw3 ICsyMjAsNyBAQAogCiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+Ci0gICAgICAgIDxyZXBsYWNlYWJs ZT5kYXRhdHlwZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPklTIE5PVCBESVNUSU5DVCBGUk9NPC9s aXRlcmFsPiA8cmVwbGFjZWFibGU+ZGF0YXR5cGU8L3JlcGxhY2VhYmxlPgorICAgICAgICA8cmVw bGFjZWFibGU+ZGF0YXR5cGU8L3JlcGxhY2VhYmxlPiA8bGl0ZXJhbD5JUyBOT1QgRElTVElOQ1Q8 L2xpdGVyYWw+IDxvcHRpb25hbD4gPGxpdGVyYWw+T1BFUkFUT1IoPC9saXRlcmFsPjxyZXBsYWNl YWJsZT5vcGVyYXRvcjwvcmVwbGFjZWFibGU+PGxpdGVyYWw+KTwvbGl0ZXJhbD4gPC9vcHRpb25h bD4gPGxpdGVyYWw+RlJPTTwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmRhdGF0eXBlPC9yZXBsYWNl YWJsZT4KICAgICAgICAgPHJldHVybnZhbHVlPmJvb2xlYW48L3JldHVybnZhbHVlPgogICAgICAg IDwvcGFyYT4KICAgICAgICA8cGFyYT4KQEAgLTQ1MCw4ICs0NTAsOCBAQAogICAgIHRoaXMgYmVo YXZpb3IgaXMgbm90IHN1aXRhYmxlLCB1c2UgdGhlCiAgICAgPGxpdGVyYWw+SVMgPG9wdGlvbmFs PiBOT1QgPC9vcHRpb25hbD4gRElTVElOQ1QgRlJPTTwvbGl0ZXJhbD4gcHJlZGljYXRlczoKIDxz eW5vcHNpcz4KLTxyZXBsYWNlYWJsZT5hPC9yZXBsYWNlYWJsZT4gSVMgRElTVElOQ1QgRlJPTSA8 cmVwbGFjZWFibGU+YjwvcmVwbGFjZWFibGU+Ci08cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+ IElTIE5PVCBESVNUSU5DVCBGUk9NIDxyZXBsYWNlYWJsZT5iPC9yZXBsYWNlYWJsZT4KKzxyZXBs YWNlYWJsZT5hPC9yZXBsYWNlYWJsZT4gSVMgRElTVElOQ1QgPG9wdGlvbmFsPiBPUEVSQVRPUig8 cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPikgPC9vcHRpb25hbD4gRlJPTSA8cmVw bGFjZWFibGU+YjwvcmVwbGFjZWFibGU+Cis8cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+IElT IE5PVCBESVNUSU5DVCA8b3B0aW9uYWw+IE9QRVJBVE9SKDxyZXBsYWNlYWJsZT5vcGVyYXRvcjwv cmVwbGFjZWFibGU+KSA8L29wdGlvbmFsPiBGUk9NIDxyZXBsYWNlYWJsZT5iPC9yZXBsYWNlYWJs ZT4KIDwvc3lub3BzaXM+CiAgICAgRm9yIG5vbi1udWxsIGlucHV0cywgPGxpdGVyYWw+SVMgRElT VElOQ1QgRlJPTTwvbGl0ZXJhbD4gaXMKICAgICB0aGUgc2FtZSBhcyB0aGUgPGxpdGVyYWw+Jmx0 OyZndDs8L2xpdGVyYWw+IG9wZXJhdG9yLiAgSG93ZXZlciwgaWYgYm90aApAQCAtNDYzLDYgKzQ2 MywyMSBAQAogICAgIHdlcmUgYSBub3JtYWwgZGF0YSB2YWx1ZSwgcmF0aGVyIHRoYW4gPHF1b3Rl PnVua25vd248L3F1b3RlPi4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgVGhlIGVxdWFs aXR5IHRlc3QgdW5kZXJseWluZyB0aGVzZSBwcmVkaWNhdGVzIHVzZXMgdGhlIG9wZXJhdG9yCisg ICAgbmFtZWQgPGxpdGVyYWw+PTwvbGl0ZXJhbD4sIHJlc29sdmVkIGJ5IG5hbWUgdGhyb3VnaCB0 aGUgY3VycmVudCBzZWFyY2gKKyAgICBwYXRoLiAgVG8gcGluIGEgc3BlY2lmaWMgb3BlcmF0b3Ig aW5zdGVhZCAmbWRhc2g7IGZvciBleGFtcGxlIG9uZSBiZWxvbmdpbmcKKyAgICB0byBhbiBleHRl bnNpb24gd2hvc2Ugc2NoZW1hIGlzIG5vdCBvbiB0aGUgc2VhcmNoIHBhdGggJm1kYXNoOyB3cml0 ZSBpdHMKKyAgICBuYW1lIHdpdGggdGhlIG9wdGlvbmFsIDxsaXRlcmFsPk9QRVJBVE9SKCk8L2xp dGVyYWw+IGRlY29yYXRpb24KKyAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9InNxbC1leHByZXNzaW9u cy1vcGVyYXRvci1jYWxscyIvPikuICBXaGVuIGEgdmlldyBvcgorICAgIHJ1bGUgdGhhdCB1c2Vz IHRoZXNlIHByZWRpY2F0ZXMgaXMgZHVtcGVkLAorICAgIDxhcHBsaWNhdGlvbj5wZ19kdW1wPC9h cHBsaWNhdGlvbj4gZW1pdHMgdGhpcyBkZWNvcmF0aW9uIGF1dG9tYXRpY2FsbHkKKyAgICB3aGVu ZXZlciB0aGUgYmFyZSBuYW1lIDxsaXRlcmFsPj08L2xpdGVyYWw+IHdvdWxkIG5vdCByZXNvbHZl IHRvIHRoZSBzYW1lCisgICAgb3BlcmF0b3IgdW5kZXIgdGhlIHNlYXJjaCBwYXRoIHVzZWQgYXQg cmVzdG9yZSB0aW1lLCBvciB0aGUgaW50ZW5kZWQKKyAgICBvcGVyYXRvciBpcyBub3QgbmFtZWQg PGxpdGVyYWw+PTwvbGl0ZXJhbD4gYXQgYWxsLCBzbyB0aGF0IHRoZSBkZWZpbml0aW9uCisgICAg cmVsb2FkcyB1bmFtYmlndW91c2x5LgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAgICA8aW5k ZXh0ZXJtPgogICAgICA8cHJpbWFyeT5JUyBOVUxMPC9wcmltYXJ5PgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2Z1bmMvZnVuYy1jb25kaXRpb25hbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMv ZnVuYy1jb25kaXRpb25hbC5zZ21sCmluZGV4IDdjYTUzZGJmMWEuLjEzN2Q1YzdlNDMgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtY29uZGl0aW9uYWwuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvZnVuYy9mdW5jLWNvbmRpdGlvbmFsLnNnbWwKQEAgLTIxMCw3ICsyMTAsNyBAQCBT RUxFQ1QgQ09BTEVTQ0UoZGVzY3JpcHRpb24sIHNob3J0X2Rlc2NyaXB0aW9uLCAnKG5vbmUpJykg Li4uCiAgIDwvaW5kZXh0ZXJtPgogCiA8c3lub3BzaXM+Ci08ZnVuY3Rpb24+TlVMTElGPC9mdW5j dGlvbj4oPHJlcGxhY2VhYmxlPnZhbHVlMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+dmFs dWUyPC9yZXBsYWNlYWJsZT4pCis8ZnVuY3Rpb24+TlVMTElGPC9mdW5jdGlvbj4oPHJlcGxhY2Vh YmxlPnZhbHVlMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+dmFsdWUyPC9yZXBsYWNlYWJs ZT4gPG9wdGlvbmFsPiBVU0lORyBPUEVSQVRPUig8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxh Y2VhYmxlPikgPC9vcHRpb25hbD4pCiA8L3N5bm9wc2lzPgogCiAgIDxwYXJhPgpAQCAtMjM1LDYg KzIzNSwyMSBAQCBTRUxFQ1QgTlVMTElGKHZhbHVlLCAnKG5vbmUpJykgLi4uCiAgICBzdWl0YWJs ZSA8bGl0ZXJhbD49PC9saXRlcmFsPiBvcGVyYXRvciBhdmFpbGFibGUuCiAgIDwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIFRoYXQgPGxpdGVyYWw+PTwvbGl0ZXJhbD4gb3BlcmF0b3IgaXMgcmVzb2x2 ZWQgYnkgbmFtZSB0aHJvdWdoIHRoZSBjdXJyZW50CisgICBzZWFyY2ggcGF0aC4gIFRvIHBpbiBh IHNwZWNpZmljIG9wZXJhdG9yIGluc3RlYWQgJm1kYXNoOyBmb3IgZXhhbXBsZSBvbmUKKyAgIGJl bG9uZ2luZyB0byBhbiBleHRlbnNpb24gd2hvc2Ugc2NoZW1hIGlzIG5vdCBvbiB0aGUgc2VhcmNo IHBhdGggJm1kYXNoOworICAgZ2l2ZSBpdHMgbmFtZSB3aXRoIHRoZSBvcHRpb25hbCA8bGl0ZXJh bD5VU0lORyBPUEVSQVRPUigpPC9saXRlcmFsPiBjbGF1c2UKKyAgIChzZWUgPHhyZWYgbGlua2Vu ZD0ic3FsLWV4cHJlc3Npb25zLW9wZXJhdG9yLWNhbGxzIi8+IGZvcgorICAgdGhlIDxsaXRlcmFs Pk9QRVJBVE9SKCk8L2xpdGVyYWw+IG5vdGF0aW9uKS4gIFdoZW4gYSB2aWV3IG9yIHJ1bGUgdGhh dAorICAgdXNlcyA8ZnVuY3Rpb24+TlVMTElGPC9mdW5jdGlvbj4gaXMgZHVtcGVkLAorICAgPGFw cGxpY2F0aW9uPnBnX2R1bXA8L2FwcGxpY2F0aW9uPiBlbWl0cyB0aGlzIGNsYXVzZSBhdXRvbWF0 aWNhbGx5IHdoZW5ldmVyCisgICB0aGUgYmFyZSBuYW1lIDxsaXRlcmFsPj08L2xpdGVyYWw+IHdv dWxkIG5vdCByZXNvbHZlIHRvIHRoZSBzYW1lIG9wZXJhdG9yCisgICB1bmRlciB0aGUgc2VhcmNo IHBhdGggdXNlZCBhdCByZXN0b3JlIHRpbWUsIG9yIHRoZSBpbnRlbmRlZCBvcGVyYXRvciBpcyBu b3QKKyAgIG5hbWVkIDxsaXRlcmFsPj08L2xpdGVyYWw+IGF0IGFsbCwgc28gdGhhdCB0aGUgZGVm aW5pdGlvbiByZWxvYWRzCisgICB1bmFtYmlndW91c2x5LgorICA8L3BhcmE+CisKICAgPHBhcmE+ CiAgICBUaGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBmaXJzdCBhcmd1bWVudCAm bWRhc2g7IGJ1dCB0aGVyZSBpcwogICAgYSBzdWJ0bGV0eS4gIFdoYXQgaXMgYWN0dWFsbHkgcmV0 dXJuZWQgaXMgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3N5bnRheC5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCmluZGV4IDY3NDgyOTk2 ODYuLmI1YWFkOGI0YzcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwKQEAgLTExMjgsNiArMTEyOCwxNyBAQCBTRUxFQ1Qg MyBPUEVSQVRPUihwZ19jYXRhbG9nLispIDQ7CiAgICAgd2hpY2ggc3BlY2lmaWMgb3BlcmF0b3Ig YXBwZWFycyBpbnNpZGUgPGxpdGVyYWw+T1BFUkFUT1IoKTwvbGl0ZXJhbD4uCiAgICA8L3BhcmE+ CiAKKyAgIDxwYXJhPgorICAgIEEgZmV3IGNvbnN0cnVjdHMgdGhhdCByZXNvbHZlIGFuIGVxdWFs aXR5IG9wZXJhdG9yIG9ubHkgYnkgaXRzIGJhcmUKKyAgICBuYW1lIGFjY2VwdCB0aGUgPGxpdGVy YWw+T1BFUkFUT1IoKTwvbGl0ZXJhbD4gZGVjb3JhdGlvbiBpbiBhIGRlZGljYXRlZAorICAgIHN5 bnRhY3RpYyBwb3NpdGlvbiBvZiB0aGVpciBvd24sIHNvIHRoYXQgYSBzY2hlbWEtcXVhbGlmaWVk IG9wZXJhdG9yLCBvcgorICAgIG9uZSB3aG9zZSBuYW1lIGlzIG5vdCA8bGl0ZXJhbD49PC9saXRl cmFsPiwgY2FuIGJlIHBpbm5lZCB0aGVyZSBhcworICAgIHdlbGw6IDxsaXRlcmFsPklTIDxvcHRp b25hbD4gTk9UIDwvb3B0aW9uYWw+IERJU1RJTkNUCisgICAgRlJPTTwvbGl0ZXJhbD4gKHNlZSA8 eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtY29tcGFyaXNvbi1wcmVkLXRhYmxlIi8+KQorICAgIGFu ZCA8ZnVuY3Rpb24+TlVMTElGPC9mdW5jdGlvbj4KKyAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImZ1 bmN0aW9ucy1udWxsaWYiLz4pLgorICAgPC9wYXJhPgorCiAgICA8bm90ZT4KICAgICA8cGFyYT4K ICAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB2ZXJzaW9ucyBiZWZv cmUgOS41IHVzZWQgc2xpZ2h0bHkgZGlmZmVyZW50CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBmZjRlMTM4OGM1 Li41NDUxMTMxM2RjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTE2MTM0LDYgKzE2MTM0LDE0IEBAIGFfZXhw cjoJCWNfZXhwcgkJCQkJCQkJCXsgJCQgPSAkMTsgfQogCQkJCXsKIAkJCQkJJCQgPSAoTm9kZSAq KSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX05PVF9ESVNUSU5DVCwgIj0iLCAkMSwgJDYsIEAyKTsK IAkJCQl9CisJCQl8IGFfZXhwciBJUyBESVNUSU5DVCBPUEVSQVRPUiAnKCcgYW55X29wZXJhdG9y ICcpJyBGUk9NIGFfZXhwcgklcHJlYyBJUworCQkJCXsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtl QV9FeHByKEFFWFBSX0RJU1RJTkNULCAkNiwgJDEsICQ5LCBAMik7CisJCQkJfQorCQkJfCBhX2V4 cHIgSVMgTk9UIERJU1RJTkNUIE9QRVJBVE9SICcoJyBhbnlfb3BlcmF0b3IgJyknIEZST00gYV9l eHByCSVwcmVjIElTCisJCQkJeworCQkJCQkkJCA9IChOb2RlICopIG1ha2VBX0V4cHIoQUVYUFJf Tk9UX0RJU1RJTkNULCAkNywgJDEsICQxMCwgQDIpOworCQkJCX0KIAkJCXwgYV9leHByIEJFVFdF RU4gb3B0X2FzeW1tZXRyaWMgYl9leHByIEFORCBhX2V4cHIJCSVwcmVjIEJFVFdFRU4KIAkJCQl7 CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9CRVRXRUVOLApAQCAt MTYzOTcsNiArMTY0MDUsMTQgQEAgYl9leHByOgkJY19leHByCiAJCQkJewogCQkJCQkkJCA9IChO b2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfTk9UX0RJU1RJTkNULCAiPSIsICQxLCAkNiwg QDIpOwogCQkJCX0KKwkJCXwgYl9leHByIElTIERJU1RJTkNUIE9QRVJBVE9SICcoJyBhbnlfb3Bl cmF0b3IgJyknIEZST00gYl9leHByCSVwcmVjIElTCisJCQkJeworCQkJCQkkJCA9IChOb2RlICop IG1ha2VBX0V4cHIoQUVYUFJfRElTVElOQ1QsICQ2LCAkMSwgJDksIEAyKTsKKwkJCQl9CisJCQl8 IGJfZXhwciBJUyBOT1QgRElTVElOQ1QgT1BFUkFUT1IgJygnIGFueV9vcGVyYXRvciAnKScgRlJP TSBiX2V4cHIJJXByZWMgSVMKKwkJCQl7CisJCQkJCSQkID0gKE5vZGUgKikgbWFrZUFfRXhwcihB RVhQUl9OT1RfRElTVElOQ1QsICQ3LCAkMSwgJDEwLCBAMik7CisJCQkJfQogCQkJfCBiX2V4cHIg SVMgRE9DVU1FTlRfUAkJCQkJJXByZWMgSVMKIAkJCQl7CiAJCQkJCSQkID0gbWFrZVhtbEV4cHIo SVNfRE9DVU1FTlQsIE5VTEwsIE5JTCwKQEAgLTE2OTEyLDYgKzE2OTI4LDEwIEBAIGZ1bmNfZXhw cl9jb21tb25fc3ViZXhwcjoKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVNpbXBsZUFf RXhwcihBRVhQUl9OVUxMSUYsICI9IiwgJDMsICQ1LCBAMSk7CiAJCQkJfQorCQkJfCBOVUxMSUYg JygnIGFfZXhwciAnLCcgYV9leHByIFVTSU5HIE9QRVJBVE9SICcoJyBhbnlfb3BlcmF0b3IgJykn ICcpJworCQkJCXsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlQV9FeHByKEFFWFBSX05VTExJRiwg JDksICQzLCAkNSwgQDEpOworCQkJCX0KIAkJCXwgQ09BTEVTQ0UgJygnIGV4cHJfbGlzdCAnKScK IAkJCQl7CiAJCQkJCUNvYWxlc2NlRXhwciAqYyA9IG1ha2VOb2RlKENvYWxlc2NlRXhwcik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA5YWRjOWQ0YzBmLi4wYzVlMWEzNDg3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKQEAgLTEwNTQsNiArMTA1NCwxMyBAQCB0cmFuc2Zvcm1BRXhwckRp c3RpbmN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9FeHByICphKQogCSAqIElmIGVpdGhlciBpbnB1 dCBpcyBhbiB1bmRlY29yYXRlZCBOVUxMIGxpdGVyYWwsIHRyYW5zZm9ybSB0byBhIE51bGxUZXN0 CiAJICogb24gdGhlIG90aGVyIGlucHV0LiBUaGF0J3Mgc2ltcGxlciB0byBwcm9jZXNzIHRoYW4g YSBmdWxsIERpc3RpbmN0RXhwciwKIAkgKiBhbmQgaXQgYXZvaWRzIG5lZWRpbmcgdG8gcmVxdWly ZSB0aGF0IHRoZSBkYXRhdHlwZSBoYXZlIGFuID0gb3BlcmF0b3IuCisJICoKKwkgKiBOb3RlIHRo YXQgYW55IG9wZXJhdG9yIGdpdmVuIGV4cGxpY2l0bHkgKGEtPm5hbWUsIGUuZy4gdmlhIHRoZQor CSAqIE9QRVJBVE9SKCkgZGVjb3JhdGlvbikgaXMgZGVsaWJlcmF0ZWx5IG5laXRoZXIgY29uc3Vs dGVkIG5vciB2YWxpZGF0ZWQKKwkgKiBpbiB0aGlzIHBhdGg6ICJ4IElTIERJU1RJTkNUIEZST00g TlVMTCIgaXMgZXF1aXZhbGVudCB0byAieCBJUyBOT1QKKwkgKiBOVUxMIiByZWdhcmRsZXNzIG9m IHRoZSBvcGVyYXRvciwgc28gdGhlIHJlc3VsdCBkb2VzIG5vdCBkZXBlbmQgb24gaXQKKwkgKiBh bmQgd2UgZG8gbm90IHJlcXVpcmUgdGhhdCBhbnkgc3VjaCBvcGVyYXRvciBldmVuIGV4aXN0IChz ZWUKKwkgKiBtYWtlX251bGx0ZXN0X2Zyb21fZGlzdGluY3QpLgogCSAqLwogCWlmIChleHBySXNO dWxsQ29uc3RhbnQocmV4cHIpKQogCQlyZXR1cm4gbWFrZV9udWxsdGVzdF9mcm9tX2Rpc3RpbmN0 KHBzdGF0ZSwgYSwgbGV4cHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDg4ZGU1 YzA0ODEuLjhhOTI2MGZjZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTk5NTgs MTEgKzk5NTgsMzcgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQsCiAJCQkJTGlzdAkgICAqYXJncyA9IGV4cHItPmFyZ3M7CiAJCQkJTm9kZQkgICAq YXJnMSA9IChOb2RlICopIGxpbml0aWFsKGFyZ3MpOwogCQkJCU5vZGUJICAgKmFyZzIgPSAoTm9k ZSAqKSBsc2Vjb25kKGFyZ3MpOworCQkJCWNoYXIJICAgKm9wbmFtZTsKKwkJCQlib29sCQlkZWNv cmF0ZTsKIAorCQkJCS8qCisJCQkJICogSVMgRElTVElOQ1QgRlJPTSByZXNvbHZlcyBpdHMgb3Bl cmF0b3IgYnkgdGhlIHVucXVhbGlmaWVkCisJCQkJICogbmFtZSAiPSIgd2hlbiBpdCBpcyBwYXJz ZWQgYmFjay4gIFdlIG11c3QgdGhlcmVmb3JlIHNob3cKKwkJCQkgKiB0aGUgb3BlcmF0b3IgZXhw bGljaXRseSAtLSBhIElTIERJU1RJTkNUIE9QRVJBVE9SKHMuPSkgRlJPTQorCQkJCSAqIGIgLS0g d2hlbmV2ZXIgcmVwYXJzaW5nIHRoZSBiYXJlIGZvcm0gd291bGQgbm90IHJlY292ZXIKKwkJCQkg KiB0aGlzIHNhbWUgb3BlcmF0b3IuICBUaGVyZSBhcmUgdHdvIHN1Y2ggY2FzZXM6IHRoZSBvcGVy YXRvcgorCQkJCSAqIGlzIG5vdCByZWFjaGFibGUgYnkgYW4gdW5xdWFsaWZpZWQgbG9va3VwIG9m IGl0cyBvd24gbmFtZQorCQkJCSAqICh0aGVuIGdlbmVyYXRlX29wZXJhdG9yX25hbWUoKSBhbHJl YWR5IHJldHVybnMgdGhlCisJCQkJICogT1BFUkFUT1IoLi4uKSBmb3JtKSwgb3IgaXRzIG5hbWUg aXMgc29tZXRoaW5nIG90aGVyIHRoYW4KKwkJCQkgKiAiPSIgKHRoZW4gYSBiYXJlIGNvbnN0cnVj dCB3b3VsZCB3cm9uZ2x5IHJlc29sdmUgIj0iOyB3cmFwCisJCQkJICogdGhlIGJhcmUgbmFtZSBp biBPUEVSQVRPUigpLCB3aGljaCBhbnlfb3BlcmF0b3Igc3ludGF4CisJCQkJICogYWNjZXB0cyku CisJCQkJICovCisJCQkJb3BuYW1lID0gZ2VuZXJhdGVfb3BlcmF0b3JfbmFtZShleHByLT5vcG5v LAorCQkJCQkJCQkJCQkJZXhwclR5cGUoYXJnMSksCisJCQkJCQkJCQkJCQlleHByVHlwZShhcmcy KSk7CisJCQkJZGVjb3JhdGUgPSAoc3RybmNtcChvcG5hbWUsICJPUEVSQVRPUigiLCA5KSA9PSAw KSB8fAorCQkJCQkoc3RyY21wKG9wbmFtZSwgIj0iKSAhPSAwKTsKIAkJCQlpZiAoIVBSRVRUWV9Q QVJFTihjb250ZXh0KSkKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKCcpOwogCQkJ CWdldF9ydWxlX2V4cHJfcGFyZW4oYXJnMSwgY29udGV4dCwgdHJ1ZSwgbm9kZSk7Ci0JCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgSVMgRElTVElOQ1QgRlJPTSAiKTsKKwkJCQlpZiAo IWRlY29yYXRlKQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBJUyBESVNUSU5D VCBGUk9NICIpOworCQkJCWVsc2UgaWYgKHN0cm5jbXAob3BuYW1lLCAiT1BFUkFUT1IoIiwgOSkg PT0gMCkKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgSVMgRElTVElOQ1QgJXMgRlJPTSAi LCBvcG5hbWUpOworCQkJCWVsc2UKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgSVMgRElT VElOQ1QgT1BFUkFUT1IoJXMpIEZST00gIiwKKwkJCQkJCQkJCSBvcG5hbWUpOwogCQkJCWdldF9y dWxlX2V4cHJfcGFyZW4oYXJnMiwgY29udGV4dCwgdHJ1ZSwgbm9kZSk7CiAJCQkJaWYgKCFQUkVU VFlfUEFSRU4oY29udGV4dCkpCiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsK QEAgLTk5NzIsOSArOTk5OCwzMSBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFyc2Vf Y29udGV4dCAqY29udGV4dCwKIAkJY2FzZSBUX051bGxJZkV4cHI6CiAJCQl7CiAJCQkJTnVsbElm RXhwciAqbnVsbGlmZXhwciA9IChOdWxsSWZFeHByICopIG5vZGU7CisJCQkJTm9kZQkgICAqYXJn MSA9IChOb2RlICopIGxpbml0aWFsKG51bGxpZmV4cHItPmFyZ3MpOworCQkJCU5vZGUJICAgKmFy ZzIgPSAoTm9kZSAqKSBsc2Vjb25kKG51bGxpZmV4cHItPmFyZ3MpOworCQkJCWNoYXIJICAgKm9w bmFtZTsKKwkJCQlib29sCQlkZWNvcmF0ZTsKIAorCQkJCS8qCisJCQkJICogQXMgYWJvdmUsIGJ1 dCBOVUxMSUYoYSwgYiBVU0lORyBPUEVSQVRPUihzLj0pKTogZGVjb3JhdGUKKwkJCQkgKiB3aGVu ZXZlciB0aGUgYmFyZSBmb3JtIHdvdWxkIHJlcGFyc2UgdG8gYSBkaWZmZXJlbnQKKwkJCQkgKiBv cGVyYXRvciwgaS5lLiB0aGUgb3BlcmF0b3IgaXMgbm90IHJlYWNoYWJsZSBieSBhbgorCQkJCSAq IHVucXVhbGlmaWVkIGxvb2t1cCBvZiBpdHMgb3duIG5hbWUsIG9yIGl0cyBuYW1lIGlzIG5vdCAi PSIuCisJCQkJICovCisJCQkJb3BuYW1lID0gZ2VuZXJhdGVfb3BlcmF0b3JfbmFtZShudWxsaWZl eHByLT5vcG5vLAorCQkJCQkJCQkJCQkJZXhwclR5cGUoYXJnMSksCisJCQkJCQkJCQkJCQlleHBy VHlwZShhcmcyKSk7CisJCQkJZGVjb3JhdGUgPSAoc3RybmNtcChvcG5hbWUsICJPUEVSQVRPUigi LCA5KSA9PSAwKSB8fAorCQkJCQkoc3RyY21wKG9wbmFtZSwgIj0iKSAhPSAwKTsKIAkJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIk5VTExJRigiKTsKIAkJCQlnZXRfcnVsZV9leHByKChO b2RlICopIG51bGxpZmV4cHItPmFyZ3MsIGNvbnRleHQsIHRydWUpOworCQkJCWlmIChkZWNvcmF0 ZSkKKwkJCQl7CisJCQkJCWlmIChzdHJuY21wKG9wbmFtZSwgIk9QRVJBVE9SKCIsIDkpID09IDAp CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBVU0lORyAlcyIsIG9wbmFtZSk7CisJCQkJ CWVsc2UKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIFVTSU5HIE9QRVJBVE9SKCVzKSIs IG9wbmFtZSk7CisJCQkJfQogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKIAkJ CX0KIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGUwMzU1NjM5OWEuLjRmYjQw MDE0NzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTMzNSw5ICszMzUsMTIgQEAgdHlwZWRl ZiBlbnVtIEFfRXhwcl9LaW5kCiAJQUVYUFJfT1AsCQkJCQkvKiBub3JtYWwgb3BlcmF0b3IgKi8K IAlBRVhQUl9PUF9BTlksCQkJCS8qIHNjYWxhciBvcCBBTlkgKGFycmF5KSAqLwogCUFFWFBSX09Q X0FMTCwJCQkJLyogc2NhbGFyIG9wIEFMTCAoYXJyYXkpICovCi0JQUVYUFJfRElTVElOQ1QsCQkJ CS8qIElTIERJU1RJTkNUIEZST00gLSBuYW1lIG11c3QgYmUgIj0iICovCi0JQUVYUFJfTk9UX0RJ U1RJTkNULAkJCS8qIElTIE5PVCBESVNUSU5DVCBGUk9NIC0gbmFtZSBtdXN0IGJlICI9IiAqLwot CUFFWFBSX05VTExJRiwJCQkJLyogTlVMTElGIC0gbmFtZSBtdXN0IGJlICI9IiAqLworCUFFWFBS X0RJU1RJTkNULAkJCQkvKiBJUyBESVNUSU5DVCBGUk9NIC0gbmFtZSBpcyAiPSIgb3IgYW4KKwkJ CQkJCQkJICogZXhwbGljaXRseSBnaXZlbiBlcXVhbGl0eSBvcGVyYXRvciAqLworCUFFWFBSX05P VF9ESVNUSU5DVCwJCQkvKiBJUyBOT1QgRElTVElOQ1QgRlJPTSAtIG5hbWUgaXMgIj0iIG9yIGFu CisJCQkJCQkJCSAqIGV4cGxpY2l0bHkgZ2l2ZW4gZXF1YWxpdHkgb3BlcmF0b3IgKi8KKwlBRVhQ Ul9OVUxMSUYsCQkJCS8qIE5VTExJRiAtIG5hbWUgaXMgIj0iIG9yIGFuIGV4cGxpY2l0bHkgZ2l2 ZW4KKwkJCQkJCQkJICogZXF1YWxpdHkgb3BlcmF0b3IgKi8KIAlBRVhQUl9JTiwJCQkJCS8qIFtO T1RdIElOIC0gbmFtZSBtdXN0IGJlICI9IiBvciAiPD4iICovCiAJQUVYUFJfTElLRSwJCQkJCS8q IFtOT1RdIExJS0UgLSBuYW1lIG11c3QgYmUgIn5+IiBvciAiIX5+IiAqLwogCUFFWFBSX0lMSUtF LAkJCQkvKiBbTk9UXSBJTElLRSAtIG5hbWUgbXVzdCBiZSAifn4qIiBvciAiIX5+KiIgKi8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3BlcmF0b3JfcXVhbGlmeS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wZXJhdG9yX3F1YWxpZnkub3V0Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE4MTI5NTNiMTEKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wZXJhdG9yX3F1YWxpZnkub3V0CkBAIC0w LDAgKzEsMjUwIEBACistLQorLS0gVmVyaWZ5IHRoYXQgY29uc3RydWN0cyB3aGljaCByZXNvbHZl IGFuIG9wZXJhdG9yIGJ5IHVucXVhbGlmaWVkIG5hbWUKKy0tIChJUyBbTk9UXSBESVNUSU5DVCBG Uk9NLCBOVUxMSUYsIC4uLikgZGVwYXJzZSB3aXRoIGEgc2NoZW1hLXF1YWxpZmllZAorLS0gT1BF UkFUT1IoKSBkZWNvcmF0aW9uIHdoZW4gdGhlIG9wZXJhdG9yIGlzIG5vdCByZWFjaGFibGUgdmlh IHNlYXJjaF9wYXRoLAorLS0gYW5kIHRoYXQgdGhlIGRlY29yYXRlZCBzeW50YXggcGFyc2VzIGJh Y2sgdG8gdGhlIHNhbWUgc2VtYW50aWNzLgorLS0KK0NSRUFURSBTQ0hFTUEgYWx0X29wczsKKy0t IEEgc2hhZG93ICI9IiBvdmVyIGludDQ6IHNhbWUgc2VtYW50aWNzIGFzIHBnX2NhdGFsb2cncyAo aW50NGVxKSwgYnV0IGEKKy0tIGRpc3RpbmN0IE9JRCwgc28gcmVzb2x1dGlvbiBkaWZmZXJlbmNl cyBhcmUgb2JzZXJ2YWJsZSB3aXRob3V0IGNvbnRyaWIuCitDUkVBVEUgT1BFUkFUT1IgYWx0X29w cy49ICgKKyAgICBsZWZ0YXJnID0gaW50NCwgcmlnaHRhcmcgPSBpbnQ0LCBwcm9jZWR1cmUgPSBp bnQ0ZXEsCisgICAgY29tbXV0YXRvciA9IG9wZXJhdG9yKGFsdF9vcHMuPSksIHJlc3RyaWN0ID0g ZXFzZWwsIGpvaW4gPSBlcWpvaW5zZWwsCisgICAgaGFzaGVzLCBtZXJnZXMKKyk7CistLSBhbHRf b3BzLj0gZGVjbGFyZXMgImhhc2hlcyIsIHNvIGJhY2sgdGhlIGRlY2xhcmF0aW9uIHVwOiBnaXZl IHRoZSBvcGVyYXRvcgorLS0gdGhlIGhhc2ggb3BmYW1pbHkgbWVtYmVyc2hpcCB0aGUgcGxhbm5l ciB3aWxsIGxvb2sgZm9yIHdoZW5ldmVyIGl0IGJ1aWxkcworLS0gYSBoYXNoIHRhYmxlIHdpdGgg aXQgKGUuZy4gZm9yIGEgaGFzaGVkIHN1YnBsYW4pLgorQ1JFQVRFIE9QRVJBVE9SIENMQVNTIGFs dF9vcHMuaW50NF9hbHRfaGFzaF9vcHMgRk9SIFRZUEUgaW50NCBVU0lORyBoYXNoIEFTCisgICAg T1BFUkFUT1IgMSBhbHRfb3BzLj0sCisgICAgRlVOQ1RJT04gMSBoYXNoaW50NChpbnQ0KTsKK0NS RUFURSBUQUJMRSBvcV90IChpZCBpbnQsIGEgaW50LCBiIGludCk7CistLSBWaWV3cyBjcmVhdGVk IHdoaWxlIGFsdF9vcHMuPSBzaGFkb3dzIHBnX2NhdGFsb2cuPQorU0VUIHNlYXJjaF9wYXRoID0g YWx0X29wcywgcGdfY2F0YWxvZzsKK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2Rpc3RpbmN0IEFT CisgIFNFTEVDVCBpZCwgYSBJUyBESVNUSU5DVCBGUk9NIGIgQVMgciBGUk9NIHB1YmxpYy5vcV90 OworQ1JFQVRFIFZJRVcgcHVibGljLm9xX3Zfbm90ZGlzdGluY3QgQVMKKyAgU0VMRUNUIGlkLCBh IElTIE5PVCBESVNUSU5DVCBGUk9NIGIgQVMgciBGUk9NIHB1YmxpYy5vcV90OworQ1JFQVRFIFZJ RVcgcHVibGljLm9xX3ZfbnVsbGlmIEFTCisgIFNFTEVDVCBpZCwgTlVMTElGKGEsIGIpIEFTIHIg RlJPTSBwdWJsaWMub3FfdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0gV2l0aCBhbHRfb3BzIG9m ZiB0aGUgc2VhcmNoX3BhdGgsIHRoZSBvcGVyYXRvciBtdXN0IGJlIHF1YWxpZmllZC4KK1NFTEVD VCBwZ19nZXRfdmlld2RlZignb3Ffdl9kaXN0aW5jdCc6OnJlZ2NsYXNzLCB0cnVlKTsKKyAgICAg ICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgYSBJUyBESVNUSU5D VCBPUEVSQVRPUihhbHRfb3BzLj0pIEZST00gYiBBUyByKworICAgIEZST00gb3FfdDsKKygxIHJv dykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X25vdGRpc3RpbmN0Jzo6cmVnY2xhc3Ms IHRydWUpOworICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICBOT1QgYSBJUyBESVNUSU5DVCBPUEVSQVRPUihhbHRfb3BzLj0pIEZST00g YiBBUyByKworICAgIEZST00gb3FfdDsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVm KCdvcV92X251bGxpZic6OnJlZ2NsYXNzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgcGdfZ2V0 X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgTlVMTElGKGEsIGIgVVNJTkcgT1BFUkFUT1IoYWx0X29wcy49 KSkgQVMgcisKKyAgICBGUk9NIG9xX3Q7CisoMSByb3cpCisKKy0tIFdpdGggYWx0X29wcyByZWFj aGFibGUgYWdhaW4sIHRoZSBwbGFpbiBzeW50YXggY29tZXMgYmFjay4KK1NFVCBzZWFyY2hfcGF0 aCA9IGFsdF9vcHMsIHBnX2NhdGFsb2csIHB1YmxpYzsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZign b3Ffdl9kaXN0aW5jdCc6OnJlZ2NsYXNzLCB0cnVlKTsKKyAgICAgICAgcGdfZ2V0X3ZpZXdkZWYg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAg ICAgICAgICAgICAgICAgICsKKyAgICAgYSBJUyBESVNUSU5DVCBGUk9NIGIgQVMgcisKKyAgICBG Uk9NIG9xX3Q7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignb3Ffdl9udWxsaWYn OjpyZWdjbGFzcywgdHJ1ZSk7CisgICAgcGdfZ2V0X3ZpZXdkZWYgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICArCisgICAgIE5VTExJRihhLCBiKSBB UyByKworICAgIEZST00gb3FfdDsKKygxIHJvdykKKworUkVTRVQgc2VhcmNoX3BhdGg7CistLSBB IGJhcmUtcmVzb2x2YWJsZSBvcGVyYXRvciB3aG9zZSBuYW1lIGlzIG5vdCAiPSIgbXVzdCBzdGls bCBiZSBkZWNvcmF0ZWQ6CistLSByZXBhcnNpbmcgdGhlIHVuZGVjb3JhdGVkIGNvbnN0cnVjdCB3 b3VsZCByZXNvbHZlICI9Iiwgbm90IHRoaXMgb3BlcmF0b3IuCistLSBwZ19jYXRhbG9nLjwgaXMg b24gdGhlIGRlZmF1bHQgc2VhcmNoX3BhdGgsIHNvIGl0cyBuYW1lIHByaW50cyB1bnF1YWxpZmll ZCwKKy0tIGJ1dCBpdCBpcyB3cmFwcGVkIGluIE9QRVJBVE9SKCkgc28gdGhlIHJlcGFyc2VkIHNl bWFudGljcyBzdGF5IGlkZW50aWNhbC4KK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2Rpc3RpbmN0 X2x0IEFTIFNFTEVDVCAxIElTIERJU1RJTkNUIE9QRVJBVE9SKDwpIEZST00gMiBBUyByOworQ1JF QVRFIFZJRVcgcHVibGljLm9xX3ZfbnVsbGlmX2x0IEFTIFNFTEVDVCBOVUxMSUYoMSwgMiBVU0lO RyBPUEVSQVRPUig8KSkgQVMgcjsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignb3Ffdl9kaXN0aW5j dF9sdCc6OnJlZ2NsYXNzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgIFNFTEVDVCAxIElTIERJU1RJTkNUIE9QRVJBVE9SKDwpIEZST00gMiBBUyBy OworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfbnVsbGlmX2x0Jzo6cmVn Y2xhc3MsIHRydWUpOworICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBT RUxFQ1QgTlVMTElGKDEsIDIgVVNJTkcgT1BFUkFUT1IoPCkpIEFTIHI7CisoMSByb3cpCisKKy0t IFRoZSBkZWNvcmF0ZWQgc3ludGF4IG11c3QgYmUgZGlyZWN0bHkgYWNjZXB0YWJsZSAoYV9leHBy IGFuZCBiX2V4cHIpLgorU0VMRUNUIDEgSVMgRElTVElOQ1QgT1BFUkFUT1IoYWx0X29wcy49KSBG Uk9NIDIgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgMSBJUyBOT1QgRElT VElOQ1QgT1BFUkFUT1IoYWx0X29wcy49KSBGUk9NIDIgQVMgZjsKKyBmIAorLS0tCisgZgorKDEg cm93KQorCitTRUxFQ1QgTlVMTElGKDEsIDIgVVNJTkcgT1BFUkFUT1IoYWx0X29wcy49KSkgQVMg b25lOworIG9uZSAKKy0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBOVUxMSUYoMiwgMiBV U0lORyBPUEVSQVRPUihhbHRfb3BzLj0pKSBBUyBuOworIG4gCistLS0KKyAgCisoMSByb3cpCisK Ky0tIGJfZXhwciBjb250ZXh0ICh0eXBtb2QtbGVzcyBjb250ZXh0cyB1c2UgYl9leHByKQorQ1JF QVRFIFRBQkxFIG9xX2JleHByX2NoZWNrICh4IGJvb2wgREVGQVVMVCAxIElTIERJU1RJTkNUIE9Q RVJBVE9SKHBnX2NhdGFsb2cuPSkgRlJPTSAyKTsKK0RST1AgVEFCTEUgb3FfYmV4cHJfY2hlY2s7 CistLSB1bnF1YWxpZmllZCBuYW1lIGluc2lkZSB0aGUgZGVjb3JhdGlvbiBpcyBmaW5lIHRvbwor U0VMRUNUIDEgSVMgRElTVElOQ1QgT1BFUkFUT1IoPSkgRlJPTSAyIEFTIHQ7CisgdCAKKy0tLQor IHQKKygxIHJvdykKKworLS0gU2VtYW50aWNzIGlkZW50aWNhbCB0byB0aGUgcGxhaW4gY29uc3Ry dWN0LCBpbmNsdWRpbmcgTlVMTCBoYW5kbGluZy4KK1NFTEVDVCB4IElTIERJU1RJTkNUIE9QRVJB VE9SKGFsdF9vcHMuPSkgRlJPTSB5IEFTIGRpc3QsCisgICAgICAgTlVMTElGKHgsIHkgVVNJTkcg T1BFUkFUT1IoYWx0X29wcy49KSkgQVMgbmlmCitGUk9NIChWQUxVRVMgKDEsIDEpLCAoMSwgMiks IChOVUxMOjppbnQsIDEpLCAoTlVMTDo6aW50LCBOVUxMOjppbnQpKSB2KHgsIHkpOworIGRpc3Qg fCBuaWYgCistLS0tLS0rLS0tLS0KKyBmICAgIHwgICAgCisgdCAgICB8ICAgMQorIHQgICAgfCAg ICAKKyBmICAgIHwgICAgCisoNCByb3dzKQorCistLSBBIG5vbi1ib29sZWFuIG9wZXJhdG9yIGlz IHJlamVjdGVkLCBzYW1lIGFzIHBhcnNlIGFuYWx5c2lzIHJlamVjdHMgdG9kYXkuCitDUkVBVEUg T1BFUkFUT1IgYWx0X29wcy4rIChsZWZ0YXJnID0gaW50NCwgcmlnaHRhcmcgPSBpbnQ0LCBwcm9j ZWR1cmUgPSBpbnQ0cGwpOworU0VMRUNUIE5VTExJRigxLCAyIFVTSU5HIE9QRVJBVE9SKGFsdF9v cHMuKykpOworRVJST1I6ICBOVUxMSUYgcmVxdWlyZXMgPSBvcGVyYXRvciB0byB5aWVsZCBib29s ZWFuCitMSU5FIDE6IFNFTEVDVCBOVUxMSUYoMSwgMiBVU0lORyBPUEVSQVRPUihhbHRfb3BzLisp KTsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCAxIElTIERJU1RJTkNUIE9QRVJBVE9SKGFsdF9v cHMuKykgRlJPTSAyOworRVJST1I6ICBJUyBESVNUSU5DVCBGUk9NIHJlcXVpcmVzID0gb3BlcmF0 b3IgdG8geWllbGQgYm9vbGVhbgorTElORSAxOiBTRUxFQ1QgMSBJUyBESVNUSU5DVCBPUEVSQVRP UihhbHRfb3BzLispIEZST00gMjsKKyAgICAgICAgICAgICAgICAgXgorLS0gV2hlbiBvbmUgc2lk ZSBpcyB0aGUgTlVMTCBsaXRlcmFsLCB0aGUgY29uc3RydWN0IGRlZ2VuZXJhdGVzIHRvIGEKKy0t IE51bGxUZXN0IGFuZCB0aGUgZ2l2ZW4gb3BlcmF0b3IgaXMgKGRlbGliZXJhdGVseSkgbm90IGNv bnN1bHRlZC4KK1NFTEVDVCAxIElTIERJU1RJTkNUIE9QRVJBVE9SKGFsdF9vcHMuPSkgRlJPTSBO VUxMIEFTIHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKworLS0gVGhlIGRlcGFyc2VkIGRlZmlu aXRpb25zIG11c3QgcmVwYXJzZSB1bmRlciBhIHJlc3RyaWN0ZWQgc2VhcmNoX3BhdGgKKy0tICh0 aGlzIGlzIHdoYXQgcGdfZHVtcCBkb2VzOyBpdCBmYWlsZWQgYmVmb3JlIHRoaXMgcGF0Y2gpLgor QkVHSU47CitTRVQgTE9DQUwgc2VhcmNoX3BhdGggPSBwZ19jYXRhbG9nOworRE8gJCQKK0JFR0lO CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2Rpc3RpbmN0X3JlbG9hZCBBUyAn CisgICAgICAgICAgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X2Rpc3RpbmN0Jzo6cmVn Y2xhc3MpOworICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9ub3RkaXN0aW5jdF9y ZWxvYWQgQVMgJworICAgICAgICAgIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9ub3Rk aXN0aW5jdCc6OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9xX3Zf bnVsbGlmX3JlbG9hZCBBUyAnCisgICAgICAgICAgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5v cV92X251bGxpZic6OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9x X3ZfZGlzdGluY3RfbHRfcmVsb2FkIEFTICcKKyAgICAgICAgICB8fCBwZ19nZXRfdmlld2RlZign cHVibGljLm9xX3ZfZGlzdGluY3RfbHQnOjpyZWdjbGFzcyk7CisgIEVYRUNVVEUgJ0NSRUFURSBW SUVXIHB1YmxpYy5vcV92X251bGxpZl9sdF9yZWxvYWQgQVMgJworICAgICAgICAgIHx8IHBnX2dl dF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9udWxsaWZfbHQnOjpyZWdjbGFzcyk7CitFTkQgJCQ7CitD T01NSVQ7CistLSBSZWxvYWRlZCB2aWV3cyByZXNvbHZlIHRoZSBzYW1lIG9wZXJhdG9yIE9JRHMg YXMgdGhlIG9yaWdpbmFscy4KK1NFTEVDVCBldl9jbGFzczo6cmVnY2xhc3MgRlJPTSBwZ19yZXdy aXRlCitXSEVSRSBldl9hY3Rpb24gTElLRSAnJTpvcG5vICcgfHwgJ2FsdF9vcHMuPShpbnQ0LGlu dDQpJzo6cmVnb3BlcmF0b3I6Om9pZCB8fCAnICUnCisgIEFORCBldl9jbGFzczo6cmVnY2xhc3M6 OnRleHQgTElLRSAnb3FfdiVyZWxvYWQnCitPUkRFUiBCWSAxOworICAgICAgICBldl9jbGFzcyAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG9xX3ZfZGlzdGluY3RfcmVsb2Fk Cisgb3Ffdl9ub3RkaXN0aW5jdF9yZWxvYWQKKyBvcV92X251bGxpZl9yZWxvYWQKKygzIHJvd3Mp CisKKy0tIEEgYmFyZS1idXQtbm9uLSI9IiBvcGVyYXRvciAoaGVyZSBwZ19jYXRhbG9nLjwpIHN1 cnZpdmVzIHRoZSByb3VuZC10cmlwIHRvbzoKKy0tIHRoZSBPUEVSQVRPUig8KSBkZWNvcmF0aW9u IHBpbnMgaW50NGx0IGluc3RlYWQgb2YgbGV0dGluZyAiPSIgcmVzb2x2ZS4KK1NFTEVDVCBldl9j bGFzczo6cmVnY2xhc3MgRlJPTSBwZ19yZXdyaXRlCitXSEVSRSBldl9hY3Rpb24gTElLRSAnJTpv cG5vICcgfHwgJ3BnX2NhdGFsb2cuPChpbnQ0LGludDQpJzo6cmVnb3BlcmF0b3I6Om9pZCB8fCAn ICUnCisgIEFORCBldl9jbGFzczo6cmVnY2xhc3M6OnRleHQgTElLRSAnb3FfdiVsdF9yZWxvYWQl JworT1JERVIgQlkgMTsKKyAgICAgICAgZXZfY2xhc3MgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBvcV92X2Rpc3RpbmN0X2x0X3JlbG9hZAorIG9xX3ZfbnVsbGlmX2x0X3Jl bG9hZAorKDIgcm93cykKKworRFJPUCBWSUVXIG9xX3ZfZGlzdGluY3RfcmVsb2FkLCBvcV92X25v dGRpc3RpbmN0X3JlbG9hZCwgb3Ffdl9udWxsaWZfcmVsb2FkLAorICAgICAgICAgIG9xX3ZfZGlz dGluY3RfbHRfcmVsb2FkLCBvcV92X251bGxpZl9sdF9yZWxvYWQ7CistLQorLS0gVHJpZ2dlciBX SEVOIGNsYXVzZXMgZGVwYXJzZSB0aHJvdWdoIHRoZSBzYW1lIGNvZGUgcGF0aAorLS0gKHBnX2dl dF90cmlnZ2VyZGVmKS4gIFRoaXMgaXMgdGhlIGRvbWluYW50IHJlYWwtd29ybGQgc2hhcGUgb2Yg dGhlCistLSBwcm9ibGVtOiBhIEJFRk9SRSBVUERBVEUgdHJpZ2dlciB3aG9zZSBXSEVOIHRlc3Qg dXNlcyBJUyBESVNUSU5DVCBGUk9NIG9uCistLSBhIGNvbHVtbiB3aG9zZSAiPSIgaXMgb2ZmIHRo ZSBzZWFyY2hfcGF0aCB1c2VkIGF0IHJlc3RvcmUgdGltZS4KKy0tCitDUkVBVEUgRlVOQ1RJT04g b3FfdHJnZm4oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbAorICBBUyAkJCBCRUdJ TiBSRVRVUk4gTkVXOyBFTkQgJCQ7CitTRVQgc2VhcmNoX3BhdGggPSBhbHRfb3BzLCBwZ19jYXRh bG9nOworQ1JFQVRFIFRSSUdHRVIgb3FfdHJnIEJFRk9SRSBVUERBVEUgT04gcHVibGljLm9xX3Qg Rk9SIEVBQ0ggUk9XCisgIFdIRU4gKE9MRC5hIElTIERJU1RJTkNUIEZST00gTkVXLmEpIEVYRUNV VEUgRlVOQ1RJT04gcHVibGljLm9xX3RyZ2ZuKCk7CitSRVNFVCBzZWFyY2hfcGF0aDsKKy0tIFdp dGggYWx0X29wcyBvZmYgdGhlIHNlYXJjaF9wYXRoIHRoZSBXSEVOIG9wZXJhdG9yIG11c3QgYmUg cXVhbGlmaWVkLgorU0VMRUNUIHBnX2dldF90cmlnZ2VyZGVmKG9pZCwgdHJ1ZSkgRlJPTSBwZ190 cmlnZ2VyIFdIRVJFIHRnbmFtZSA9ICdvcV90cmcnOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdHJpZ2dlcmRlZiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBUUklHR0VSIG9xX3Ry ZyBCRUZPUkUgVVBEQVRFIE9OIG9xX3QgRk9SIEVBQ0ggUk9XIFdIRU4gKG9sZC5hIElTIERJU1RJ TkNUIE9QRVJBVE9SKGFsdF9vcHMuPSkgRlJPTSBuZXcuYSkgRVhFQ1VURSBGVU5DVElPTiBvcV90 cmdmbigpCisoMSByb3cpCisKKy0tIFRoZSBkZXBhcnNlZCBkZWZpbml0aW9uIG11c3QgcmVjcmVh dGUgdGhlIHRyaWdnZXIgdW5kZXIgYSByZXN0cmljdGVkCistLSBzZWFyY2hfcGF0aCAoYXMgcGdf ZHVtcCBkb2VzIGF0IHJlc3RvcmUgdGltZSkuICBhbHRfb3BzIGlzIGRlbGliZXJhdGVseQorLS0g YWJzZW50IGJlbG93LCBzbyB0aGUgT1BFUkFUT1IoYWx0X29wcy49KSBkZWNvcmF0aW9uIGluIHRo ZSBXSEVOIGNsYXVzZSBpcworLS0gd2hhdCBwaW5zIHRoZSBjb3JyZWN0IG9wZXJhdG9yOyBwdWJs aWMgaXMgcHJlc2VudCBvbmx5IHNvIHRoZSB0cmlnZ2VyJ3MKKy0tIHRhYmxlIGFuZCBmdW5jdGlv biByZXNvbHZlLiAgQ2FwdHVyZSB0aGUgZGVmaW5pdGlvbiBiZWZvcmUgZHJvcHBpbmcuCitCRUdJ TjsKK1NFVCBMT0NBTCBzZWFyY2hfcGF0aCA9IHB1YmxpYywgcGdfY2F0YWxvZzsKK0RPICQkCitE RUNMQVJFIGRlZiB0ZXh0OworQkVHSU4KKyAgU0VMRUNUIHBnX2dldF90cmlnZ2VyZGVmKG9pZCkg SU5UTyBkZWYgRlJPTSBwZ190cmlnZ2VyCisgICAgV0hFUkUgdGduYW1lID0gJ29xX3RyZycgQU5E IHRncmVsaWQgPSAncHVibGljLm9xX3QnOjpyZWdjbGFzczsKKyAgRVhFQ1VURSAnRFJPUCBUUklH R0VSIG9xX3RyZyBPTiBwdWJsaWMub3FfdCc7CisgIEVYRUNVVEUgZGVmOworRU5EICQkOworQ09N TUlUOworLS0gVGhlIHJlbG9hZGVkIHRyaWdnZXIncyBXSEVOIGNvbmRpdGlvbiByZXNvbHZlcyB0 aGUgc2hhZG93IGFsdF9vcHMuPSAoaXRzCistLSBPSUQgYXBwZWFycyBpbiB0Z3F1YWwpLCBub3Qg cGdfY2F0YWxvZy49LgorU0VMRUNUIHRnbmFtZSBGUk9NIHBnX3RyaWdnZXIKK1dIRVJFIHRncXVh bCBMSUtFICclOm9wbm8gJyB8fCAnYWx0X29wcy49KGludDQsaW50NCknOjpyZWdvcGVyYXRvcjo6 b2lkIHx8ICcgJScKKyAgQU5EIHRnbmFtZSA9ICdvcV90cmcnOworIHRnbmFtZSAKKy0tLS0tLS0t Cisgb3FfdHJnCisoMSByb3cpCisKKy0tIE5PVEU6IG9xX3QsIHRoZSBvcV92Xyogdmlld3MsIGFu ZCB0aGUgb3FfdHJnIHRyaWdnZXIgKGJhY2tlZCBieSBvcV90cmdmbikKKy0tIGFyZSBpbnRlbnRp b25hbGx5IGtlcHQgKG5vdCBkcm9wcGVkKTogdGhlIHBnX3VwZ3JhZGUgdGVzdCBzdWl0ZQorLS0g ZHVtcC9yZXN0b3JlcyB0aGUgcmVncmVzc2lvbiBkYXRhYmFzZSBhbmQgdGhlcmVieSBleGVyY2lz ZXMgdGhlIHF1YWxpZmllZAorLS0gZGVwYXJzZSBlbmQtdG8tZW5kLgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKaW5kZXggOGZhMGE2YzQ3Zi4uZmUyNWI2YjJjYyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCkBAIC04MSw3ICs4MSw3IEBAIHRlc3Q6IGNyZWF0ZV90YWJsZV9saWtl IGFsdGVyX2dlbmVyaWMgYWx0ZXJfb3BlcmF0b3IgbWlzYyBhc3luYyBkYnNpemUgbWVyZ2UgbWlz CiAjIGNvbGxhdGUubGludXgudXRmOCBhbmQgY29sbGF0ZS5pY3UudXRmOCB0ZXN0cyBjYW5ub3Qg YmUgcnVuIGluIHBhcmFsbGVsIHdpdGggZWFjaCBvdGhlcgogIyBwc3FsIGRlcGVuZHMgb24gY3Jl YXRlX2FtCiAjIGFtdXRpbHMgZGVwZW5kcyBvbiBnZW9tZXRyeSwgY3JlYXRlX2luZGV4X3NwZ2lz dCwgaGFzaF9pbmRleCwgYnJpbgotdGVzdDogcnVsZXMgcHNxbCBwc3FsX2Nyb3NzdGFiIHBzcWxf cGlwZWxpbmUgYW11dGlscyBzdGF0c19leHQgY29sbGF0ZS5saW51eC51dGY4IGNvbGxhdGUud2lu ZG93cy53aW4xMjUyCit0ZXN0OiBydWxlcyBwc3FsIHBzcWxfY3Jvc3N0YWIgcHNxbF9waXBlbGlu ZSBhbXV0aWxzIHN0YXRzX2V4dCBjb2xsYXRlLmxpbnV4LnV0ZjggY29sbGF0ZS53aW5kb3dzLndp bjEyNTIgb3BlcmF0b3JfcXVhbGlmeQogCiAjIC0tLS0tLS0tLS0KICMgUnVuIHRoZXNlIGFsb25l IHNvIHRoZXkgZG9uJ3QgcnVuIG91dCBvZiBwYXJhbGxlbCB3b3JrZXJzCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9vcGVyYXRvcl9xdWFsaWZ5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjQxMTQ0YmE4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9vcGVyYXRvcl9xdWFsaWZ5LnNxbApAQCAtMCwwICsxLDE0OCBAQAorLS0KKy0tIFZlcmlm eSB0aGF0IGNvbnN0cnVjdHMgd2hpY2ggcmVzb2x2ZSBhbiBvcGVyYXRvciBieSB1bnF1YWxpZmll ZCBuYW1lCistLSAoSVMgW05PVF0gRElTVElOQ1QgRlJPTSwgTlVMTElGLCAuLi4pIGRlcGFyc2Ug d2l0aCBhIHNjaGVtYS1xdWFsaWZpZWQKKy0tIE9QRVJBVE9SKCkgZGVjb3JhdGlvbiB3aGVuIHRo ZSBvcGVyYXRvciBpcyBub3QgcmVhY2hhYmxlIHZpYSBzZWFyY2hfcGF0aCwKKy0tIGFuZCB0aGF0 IHRoZSBkZWNvcmF0ZWQgc3ludGF4IHBhcnNlcyBiYWNrIHRvIHRoZSBzYW1lIHNlbWFudGljcy4K Ky0tCitDUkVBVEUgU0NIRU1BIGFsdF9vcHM7CistLSBBIHNoYWRvdyAiPSIgb3ZlciBpbnQ0OiBz YW1lIHNlbWFudGljcyBhcyBwZ19jYXRhbG9nJ3MgKGludDRlcSksIGJ1dCBhCistLSBkaXN0aW5j dCBPSUQsIHNvIHJlc29sdXRpb24gZGlmZmVyZW5jZXMgYXJlIG9ic2VydmFibGUgd2l0aG91dCBj b250cmliLgorQ1JFQVRFIE9QRVJBVE9SIGFsdF9vcHMuPSAoCisgICAgbGVmdGFyZyA9IGludDQs IHJpZ2h0YXJnID0gaW50NCwgcHJvY2VkdXJlID0gaW50NGVxLAorICAgIGNvbW11dGF0b3IgPSBv cGVyYXRvcihhbHRfb3BzLj0pLCByZXN0cmljdCA9IGVxc2VsLCBqb2luID0gZXFqb2luc2VsLAor ICAgIGhhc2hlcywgbWVyZ2VzCispOworLS0gYWx0X29wcy49IGRlY2xhcmVzICJoYXNoZXMiLCBz byBiYWNrIHRoZSBkZWNsYXJhdGlvbiB1cDogZ2l2ZSB0aGUgb3BlcmF0b3IKKy0tIHRoZSBoYXNo IG9wZmFtaWx5IG1lbWJlcnNoaXAgdGhlIHBsYW5uZXIgd2lsbCBsb29rIGZvciB3aGVuZXZlciBp dCBidWlsZHMKKy0tIGEgaGFzaCB0YWJsZSB3aXRoIGl0IChlLmcuIGZvciBhIGhhc2hlZCBzdWJw bGFuKS4KK0NSRUFURSBPUEVSQVRPUiBDTEFTUyBhbHRfb3BzLmludDRfYWx0X2hhc2hfb3BzIEZP UiBUWVBFIGludDQgVVNJTkcgaGFzaCBBUworICAgIE9QRVJBVE9SIDEgYWx0X29wcy49LAorICAg IEZVTkNUSU9OIDEgaGFzaGludDQoaW50NCk7CitDUkVBVEUgVEFCTEUgb3FfdCAoaWQgaW50LCBh IGludCwgYiBpbnQpOworCistLSBWaWV3cyBjcmVhdGVkIHdoaWxlIGFsdF9vcHMuPSBzaGFkb3dz IHBnX2NhdGFsb2cuPQorU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdfY2F0YWxvZzsKK0NS RUFURSBWSUVXIHB1YmxpYy5vcV92X2Rpc3RpbmN0IEFTCisgIFNFTEVDVCBpZCwgYSBJUyBESVNU SU5DVCBGUk9NIGIgQVMgciBGUk9NIHB1YmxpYy5vcV90OworQ1JFQVRFIFZJRVcgcHVibGljLm9x X3Zfbm90ZGlzdGluY3QgQVMKKyAgU0VMRUNUIGlkLCBhIElTIE5PVCBESVNUSU5DVCBGUk9NIGIg QVMgciBGUk9NIHB1YmxpYy5vcV90OworQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfbnVsbGlmIEFT CisgIFNFTEVDVCBpZCwgTlVMTElGKGEsIGIpIEFTIHIgRlJPTSBwdWJsaWMub3FfdDsKK1JFU0VU IHNlYXJjaF9wYXRoOworCistLSBXaXRoIGFsdF9vcHMgb2ZmIHRoZSBzZWFyY2hfcGF0aCwgdGhl IG9wZXJhdG9yIG11c3QgYmUgcXVhbGlmaWVkLgorU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92 X2Rpc3RpbmN0Jzo6cmVnY2xhc3MsIHRydWUpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92 X25vdGRpc3RpbmN0Jzo6cmVnY2xhc3MsIHRydWUpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdv cV92X251bGxpZic6OnJlZ2NsYXNzLCB0cnVlKTsKKworLS0gV2l0aCBhbHRfb3BzIHJlYWNoYWJs ZSBhZ2FpbiwgdGhlIHBsYWluIHN5bnRheCBjb21lcyBiYWNrLgorU0VUIHNlYXJjaF9wYXRoID0g YWx0X29wcywgcGdfY2F0YWxvZywgcHVibGljOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92 X2Rpc3RpbmN0Jzo6cmVnY2xhc3MsIHRydWUpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92 X251bGxpZic6OnJlZ2NsYXNzLCB0cnVlKTsKK1JFU0VUIHNlYXJjaF9wYXRoOworCistLSBBIGJh cmUtcmVzb2x2YWJsZSBvcGVyYXRvciB3aG9zZSBuYW1lIGlzIG5vdCAiPSIgbXVzdCBzdGlsbCBi ZSBkZWNvcmF0ZWQ6CistLSByZXBhcnNpbmcgdGhlIHVuZGVjb3JhdGVkIGNvbnN0cnVjdCB3b3Vs ZCByZXNvbHZlICI9Iiwgbm90IHRoaXMgb3BlcmF0b3IuCistLSBwZ19jYXRhbG9nLjwgaXMgb24g dGhlIGRlZmF1bHQgc2VhcmNoX3BhdGgsIHNvIGl0cyBuYW1lIHByaW50cyB1bnF1YWxpZmllZCwK Ky0tIGJ1dCBpdCBpcyB3cmFwcGVkIGluIE9QRVJBVE9SKCkgc28gdGhlIHJlcGFyc2VkIHNlbWFu dGljcyBzdGF5IGlkZW50aWNhbC4KK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2Rpc3RpbmN0X2x0 IEFTIFNFTEVDVCAxIElTIERJU1RJTkNUIE9QRVJBVE9SKDwpIEZST00gMiBBUyByOworQ1JFQVRF IFZJRVcgcHVibGljLm9xX3ZfbnVsbGlmX2x0IEFTIFNFTEVDVCBOVUxMSUYoMSwgMiBVU0lORyBP UEVSQVRPUig8KSkgQVMgcjsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignb3Ffdl9kaXN0aW5jdF9s dCc6OnJlZ2NsYXNzLCB0cnVlKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignb3Ffdl9udWxsaWZf bHQnOjpyZWdjbGFzcywgdHJ1ZSk7CisKKy0tIFRoZSBkZWNvcmF0ZWQgc3ludGF4IG11c3QgYmUg ZGlyZWN0bHkgYWNjZXB0YWJsZSAoYV9leHByIGFuZCBiX2V4cHIpLgorU0VMRUNUIDEgSVMgRElT VElOQ1QgT1BFUkFUT1IoYWx0X29wcy49KSBGUk9NIDIgQVMgdDsKK1NFTEVDVCAxIElTIE5PVCBE SVNUSU5DVCBPUEVSQVRPUihhbHRfb3BzLj0pIEZST00gMiBBUyBmOworU0VMRUNUIE5VTExJRigx LCAyIFVTSU5HIE9QRVJBVE9SKGFsdF9vcHMuPSkpIEFTIG9uZTsKK1NFTEVDVCBOVUxMSUYoMiwg MiBVU0lORyBPUEVSQVRPUihhbHRfb3BzLj0pKSBBUyBuOworLS0gYl9leHByIGNvbnRleHQgKHR5 cG1vZC1sZXNzIGNvbnRleHRzIHVzZSBiX2V4cHIpCitDUkVBVEUgVEFCTEUgb3FfYmV4cHJfY2hl Y2sgKHggYm9vbCBERUZBVUxUIDEgSVMgRElTVElOQ1QgT1BFUkFUT1IocGdfY2F0YWxvZy49KSBG Uk9NIDIpOworRFJPUCBUQUJMRSBvcV9iZXhwcl9jaGVjazsKKy0tIHVucXVhbGlmaWVkIG5hbWUg aW5zaWRlIHRoZSBkZWNvcmF0aW9uIGlzIGZpbmUgdG9vCitTRUxFQ1QgMSBJUyBESVNUSU5DVCBP UEVSQVRPUig9KSBGUk9NIDIgQVMgdDsKKworLS0gU2VtYW50aWNzIGlkZW50aWNhbCB0byB0aGUg cGxhaW4gY29uc3RydWN0LCBpbmNsdWRpbmcgTlVMTCBoYW5kbGluZy4KK1NFTEVDVCB4IElTIERJ U1RJTkNUIE9QRVJBVE9SKGFsdF9vcHMuPSkgRlJPTSB5IEFTIGRpc3QsCisgICAgICAgTlVMTElG KHgsIHkgVVNJTkcgT1BFUkFUT1IoYWx0X29wcy49KSkgQVMgbmlmCitGUk9NIChWQUxVRVMgKDEs IDEpLCAoMSwgMiksIChOVUxMOjppbnQsIDEpLCAoTlVMTDo6aW50LCBOVUxMOjppbnQpKSB2KHgs IHkpOworCistLSBBIG5vbi1ib29sZWFuIG9wZXJhdG9yIGlzIHJlamVjdGVkLCBzYW1lIGFzIHBh cnNlIGFuYWx5c2lzIHJlamVjdHMgdG9kYXkuCitDUkVBVEUgT1BFUkFUT1IgYWx0X29wcy4rIChs ZWZ0YXJnID0gaW50NCwgcmlnaHRhcmcgPSBpbnQ0LCBwcm9jZWR1cmUgPSBpbnQ0cGwpOworU0VM RUNUIE5VTExJRigxLCAyIFVTSU5HIE9QRVJBVE9SKGFsdF9vcHMuKykpOworU0VMRUNUIDEgSVMg RElTVElOQ1QgT1BFUkFUT1IoYWx0X29wcy4rKSBGUk9NIDI7CisKKy0tIFdoZW4gb25lIHNpZGUg aXMgdGhlIE5VTEwgbGl0ZXJhbCwgdGhlIGNvbnN0cnVjdCBkZWdlbmVyYXRlcyB0byBhCistLSBO dWxsVGVzdCBhbmQgdGhlIGdpdmVuIG9wZXJhdG9yIGlzIChkZWxpYmVyYXRlbHkpIG5vdCBjb25z dWx0ZWQuCitTRUxFQ1QgMSBJUyBESVNUSU5DVCBPUEVSQVRPUihhbHRfb3BzLj0pIEZST00gTlVM TCBBUyB0OworCistLSBUaGUgZGVwYXJzZWQgZGVmaW5pdGlvbnMgbXVzdCByZXBhcnNlIHVuZGVy IGEgcmVzdHJpY3RlZCBzZWFyY2hfcGF0aAorLS0gKHRoaXMgaXMgd2hhdCBwZ19kdW1wIGRvZXM7 IGl0IGZhaWxlZCBiZWZvcmUgdGhpcyBwYXRjaCkuCitCRUdJTjsKK1NFVCBMT0NBTCBzZWFyY2hf cGF0aCA9IHBnX2NhdGFsb2c7CitETyAkJAorQkVHSU4KKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcg cHVibGljLm9xX3ZfZGlzdGluY3RfcmVsb2FkIEFTICcKKyAgICAgICAgICB8fCBwZ19nZXRfdmll d2RlZigncHVibGljLm9xX3ZfZGlzdGluY3QnOjpyZWdjbGFzcyk7CisgIEVYRUNVVEUgJ0NSRUFU RSBWSUVXIHB1YmxpYy5vcV92X25vdGRpc3RpbmN0X3JlbG9hZCBBUyAnCisgICAgICAgICAgfHwg cGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X25vdGRpc3RpbmN0Jzo6cmVnY2xhc3MpOworICBF WEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9udWxsaWZfcmVsb2FkIEFTICcKKyAgICAg ICAgICB8fCBwZ19nZXRfdmlld2RlZigncHVibGljLm9xX3ZfbnVsbGlmJzo6cmVnY2xhc3MpOwor ICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9kaXN0aW5jdF9sdF9yZWxvYWQgQVMg JworICAgICAgICAgIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9kaXN0aW5jdF9sdCc6 OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfbnVsbGlmX2x0 X3JlbG9hZCBBUyAnCisgICAgICAgICAgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X251 bGxpZl9sdCc6OnJlZ2NsYXNzKTsKK0VORCAkJDsKK0NPTU1JVDsKKy0tIFJlbG9hZGVkIHZpZXdz IHJlc29sdmUgdGhlIHNhbWUgb3BlcmF0b3IgT0lEcyBhcyB0aGUgb3JpZ2luYWxzLgorU0VMRUNU IGV2X2NsYXNzOjpyZWdjbGFzcyBGUk9NIHBnX3Jld3JpdGUKK1dIRVJFIGV2X2FjdGlvbiBMSUtF ICclOm9wbm8gJyB8fCAnYWx0X29wcy49KGludDQsaW50NCknOjpyZWdvcGVyYXRvcjo6b2lkIHx8 ICcgJScKKyAgQU5EIGV2X2NsYXNzOjpyZWdjbGFzczo6dGV4dCBMSUtFICdvcV92JXJlbG9hZCcK K09SREVSIEJZIDE7CistLSBBIGJhcmUtYnV0LW5vbi0iPSIgb3BlcmF0b3IgKGhlcmUgcGdfY2F0 YWxvZy48KSBzdXJ2aXZlcyB0aGUgcm91bmQtdHJpcCB0b286CistLSB0aGUgT1BFUkFUT1IoPCkg ZGVjb3JhdGlvbiBwaW5zIGludDRsdCBpbnN0ZWFkIG9mIGxldHRpbmcgIj0iIHJlc29sdmUuCitT RUxFQ1QgZXZfY2xhc3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0ZQorV0hFUkUgZXZfYWN0aW9u IExJS0UgJyU6b3BubyAnIHx8ICdwZ19jYXRhbG9nLjwoaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9y OjpvaWQgfHwgJyAlJworICBBTkQgZXZfY2xhc3M6OnJlZ2NsYXNzOjp0ZXh0IExJS0UgJ29xX3Yl bHRfcmVsb2FkJScKK09SREVSIEJZIDE7CitEUk9QIFZJRVcgb3Ffdl9kaXN0aW5jdF9yZWxvYWQs IG9xX3Zfbm90ZGlzdGluY3RfcmVsb2FkLCBvcV92X251bGxpZl9yZWxvYWQsCisgICAgICAgICAg b3Ffdl9kaXN0aW5jdF9sdF9yZWxvYWQsIG9xX3ZfbnVsbGlmX2x0X3JlbG9hZDsKKworLS0KKy0t IFRyaWdnZXIgV0hFTiBjbGF1c2VzIGRlcGFyc2UgdGhyb3VnaCB0aGUgc2FtZSBjb2RlIHBhdGgK Ky0tIChwZ19nZXRfdHJpZ2dlcmRlZikuICBUaGlzIGlzIHRoZSBkb21pbmFudCByZWFsLXdvcmxk IHNoYXBlIG9mIHRoZQorLS0gcHJvYmxlbTogYSBCRUZPUkUgVVBEQVRFIHRyaWdnZXIgd2hvc2Ug V0hFTiB0ZXN0IHVzZXMgSVMgRElTVElOQ1QgRlJPTSBvbgorLS0gYSBjb2x1bW4gd2hvc2UgIj0i IGlzIG9mZiB0aGUgc2VhcmNoX3BhdGggdXNlZCBhdCByZXN0b3JlIHRpbWUuCistLQorQ1JFQVRF IEZVTkNUSU9OIG9xX3RyZ2ZuKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGdzcWwKKyAg QVMgJCQgQkVHSU4gUkVUVVJOIE5FVzsgRU5EICQkOworU0VUIHNlYXJjaF9wYXRoID0gYWx0X29w cywgcGdfY2F0YWxvZzsKK0NSRUFURSBUUklHR0VSIG9xX3RyZyBCRUZPUkUgVVBEQVRFIE9OIHB1 YmxpYy5vcV90IEZPUiBFQUNIIFJPVworICBXSEVOIChPTEQuYSBJUyBESVNUSU5DVCBGUk9NIE5F Vy5hKSBFWEVDVVRFIEZVTkNUSU9OIHB1YmxpYy5vcV90cmdmbigpOworUkVTRVQgc2VhcmNoX3Bh dGg7CistLSBXaXRoIGFsdF9vcHMgb2ZmIHRoZSBzZWFyY2hfcGF0aCB0aGUgV0hFTiBvcGVyYXRv ciBtdXN0IGJlIHF1YWxpZmllZC4KK1NFTEVDVCBwZ19nZXRfdHJpZ2dlcmRlZihvaWQsIHRydWUp IEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z25hbWUgPSAnb3FfdHJnJzsKKy0tIFRoZSBkZXBhcnNl ZCBkZWZpbml0aW9uIG11c3QgcmVjcmVhdGUgdGhlIHRyaWdnZXIgdW5kZXIgYSByZXN0cmljdGVk CistLSBzZWFyY2hfcGF0aCAoYXMgcGdfZHVtcCBkb2VzIGF0IHJlc3RvcmUgdGltZSkuICBhbHRf b3BzIGlzIGRlbGliZXJhdGVseQorLS0gYWJzZW50IGJlbG93LCBzbyB0aGUgT1BFUkFUT1IoYWx0 X29wcy49KSBkZWNvcmF0aW9uIGluIHRoZSBXSEVOIGNsYXVzZSBpcworLS0gd2hhdCBwaW5zIHRo ZSBjb3JyZWN0IG9wZXJhdG9yOyBwdWJsaWMgaXMgcHJlc2VudCBvbmx5IHNvIHRoZSB0cmlnZ2Vy J3MKKy0tIHRhYmxlIGFuZCBmdW5jdGlvbiByZXNvbHZlLiAgQ2FwdHVyZSB0aGUgZGVmaW5pdGlv biBiZWZvcmUgZHJvcHBpbmcuCitCRUdJTjsKK1NFVCBMT0NBTCBzZWFyY2hfcGF0aCA9IHB1Ymxp YywgcGdfY2F0YWxvZzsKK0RPICQkCitERUNMQVJFIGRlZiB0ZXh0OworQkVHSU4KKyAgU0VMRUNU IHBnX2dldF90cmlnZ2VyZGVmKG9pZCkgSU5UTyBkZWYgRlJPTSBwZ190cmlnZ2VyCisgICAgV0hF UkUgdGduYW1lID0gJ29xX3RyZycgQU5EIHRncmVsaWQgPSAncHVibGljLm9xX3QnOjpyZWdjbGFz czsKKyAgRVhFQ1VURSAnRFJPUCBUUklHR0VSIG9xX3RyZyBPTiBwdWJsaWMub3FfdCc7CisgIEVY RUNVVEUgZGVmOworRU5EICQkOworQ09NTUlUOworLS0gVGhlIHJlbG9hZGVkIHRyaWdnZXIncyBX SEVOIGNvbmRpdGlvbiByZXNvbHZlcyB0aGUgc2hhZG93IGFsdF9vcHMuPSAoaXRzCistLSBPSUQg YXBwZWFycyBpbiB0Z3F1YWwpLCBub3QgcGdfY2F0YWxvZy49LgorU0VMRUNUIHRnbmFtZSBGUk9N IHBnX3RyaWdnZXIKK1dIRVJFIHRncXVhbCBMSUtFICclOm9wbm8gJyB8fCAnYWx0X29wcy49KGlu dDQsaW50NCknOjpyZWdvcGVyYXRvcjo6b2lkIHx8ICcgJScKKyAgQU5EIHRnbmFtZSA9ICdvcV90 cmcnOworLS0gTk9URTogb3FfdCwgdGhlIG9xX3ZfKiB2aWV3cywgYW5kIHRoZSBvcV90cmcgdHJp Z2dlciAoYmFja2VkIGJ5IG9xX3RyZ2ZuKQorLS0gYXJlIGludGVudGlvbmFsbHkga2VwdCAobm90 IGRyb3BwZWQpOiB0aGUgcGdfdXBncmFkZSB0ZXN0IHN1aXRlCistLSBkdW1wL3Jlc3RvcmVzIHRo ZSByZWdyZXNzaW9uIGRhdGFiYXNlIGFuZCB0aGVyZWJ5IGV4ZXJjaXNlcyB0aGUgcXVhbGlmaWVk CistLSBkZXBhcnNlIGVuZC10by1lbmQuCi0tIAoyLjU0LjAKCg== --6a4d06a8_62bbd95a_14ffe Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0002-Allow-schema-qualifying-the-operators-of-JOIN-USI.patch" RnJvbSBlNTBlMTUxYjFiZTFjODkwODVjMTQ3NGExZDkwMzYxNDc0MTQwYTM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGE9QzU9ODI9MjBQYXN0ZXJuYWs/PSA8 bWljaGFsLmR0ekBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNyBKdWwgMjAyNiAwMDowNzoxMCArMDIw MApTdWJqZWN0OiBbUEFUQ0ggdjIgMi81XSBBbGxvdyBzY2hlbWEtcXVhbGlmeWluZyB0aGUgb3Bl cmF0b3JzIG9mIEpPSU4gVVNJTkcKCkpPSU4gLi4uIFVTSU5HIHJlc29sdmVzIGVhY2ggY29sdW1u J3MgZXF1YWxpdHkgb3BlcmF0b3IgYnkgdGhlCnVucXVhbGlmaWVkIG5hbWUgIj0iIGF0IHBhcnNl IHRpbWUsIGFuZCBpdHMgc3ludGF4IGhhcyBubyBwbGFjZSB0bwp3cml0ZSBhIHNjaGVtYS1xdWFs aWZpZWQgb3BlcmF0b3IgbmFtZS4gIENvbnNlcXVlbnRseSBhIHZpZXcgb3IgcnVsZQp3aG9zZSBq b2luIG9wZXJhdG9yIGlzIG5vdCByZWFjaGFibGUgdGhyb3VnaCB0aGUgcHJldmFpbGluZyBzZWFy Y2hfcGF0aAotLSBmb3IgZXhhbXBsZSBhbiBleHRlbnNpb24gdHlwZSdzICI9IiB3aGlsZSByZXN0 b3JpbmcgYSBkdW1wIHdpdGggdGhlCnJlc3RyaWN0ZWQgc2VhcmNoX3BhdGggcGdfZHVtcCB1c2Vz IC0tIGVpdGhlciBmYWlscyB0byByZWxvYWQgb3IsIHdvcnNlLApzaWxlbnRseSByZXNvbHZlcyBh IGRpZmZlcmVudCBvcGVyYXRvci4gIEluIG9uZSByZWFsLXdvcmxkIGluY2lkZW50LCBhCm1hdGVy aWFsaXplZCB2aWV3IGpvaW5pbmcgb24gYSBkb21haW4gb3ZlciBjaXRleHQgc2lsZW50bHkgcmVz b2x2ZWQKdGV4dGVxIGFmdGVyIGR1bXAvcmVzdG9yZSBhbmQgcmV0dXJuZWQgd3JvbmcgcmVzdWx0 czoKaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUMzNUhObk5HYXZhWiUzRFAlM0RyVWN3VHdZRWhmb3lY RGczMlJFWENSRGd4Qm1DM05vM25BJTQwbWFpbC5nbWFpbC5jb20KClByb3ZpZGUgdGhlIG1pc3Np bmcgc3ludGF4OiBhbiBvcHRpb25hbCBwZXItY29sdW1uIG9wZXJhdG9yIGxpc3QKCiAgICBKT0lO IHRhYiBVU0lORyAoYSwgYikgT1BFUkFUT1IgKHNjaGVtYS49LCA9KSBbQVMgYWxpYXNdCgp3aG9z ZSBtZW1iZXJzIG1heSBiZSBzY2hlbWEtcXVhbGlmaWVkOyB0aGUgbid0aCBvcGVyYXRvciBpcyB1 c2VkIHRvCmNvbXBhcmUgdGhlIG4ndGggVVNJTkcgY29sdW1uLiAgTkFUVVJBTCBKT0lOIGhhcyBu byBzeW50YWN0aWMgc2xvdCBvZgppdHMgb3duLCBidXQgc2luY2UgcGFyc2UgYW5hbHlzaXMgY29u dmVydHMgaXQgdG8gdGhlIGVxdWl2YWxlbnQgVVNJTkcKZm9ybSwgc3VjaCBhIGpvaW4gZGVwYXJz ZXMgYXMgVVNJTkcgKC4uLikgT1BFUkFUT1IgKC4uLikgd2hlbmV2ZXIKcXVhbGlmaWNhdGlvbiBp cyBuZWVkZWQuICBUaGUgZGVjb3JhdGlvbiBpcyBvcHRpb25hbDsgcnVsZXV0aWxzLmMgZW1pdHMK dGhlIGxpc3Qgb25seSB3aGVuIHJlcGFyc2luZyBhIGJhcmUgVVNJTkcgY2xhdXNlIHdvdWxkIG5v dCByZWNvdmVyIHRoZQpzYW1lIG9wZXJhdG9ycyAtLSBpLmUuIHdoZW4gc29tZSBjb2x1bW4ncyBv cGVyYXRvciBpcyBub3QgcmVhY2hhYmxlIGJ5CmFuIHVucXVhbGlmaWVkIGxvb2t1cCBvZiBpdHMg bmFtZSwgb3IgaXMgbm90IG5hbWVkICI9IiBhdCBhbGwgKGEgYmFyZQpjbGF1c2UgYWx3YXlzIHJl cGFyc2VzIGFzICI9IikuICBUaGlzIG1pcnJvcnMgdGhlIHJ1bGUgdGhhdCBnb3Zlcm5zCnBsYWlu IE9wRXhwciBkZXBhcnNpbmcuCgpKb2luRXhwciBnYWlucyBhIHVzaW5nT3BlcmF0b3JzIGZpZWxk IGNhcnJ5aW5nIHRoZSBwZXItY29sdW1uIG9wZXJhdG9yCm5hbWVzLCBzbyBjYXR2ZXJzaW9uIGlz IGJ1bXBlZC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMzg1NjgzNC4xNzgzMDg3 ODg2QHNzcy5wZ2gucGEudXMKCi0tLQogZG9jL3NyYy9zZ21sL3F1ZXJpZXMuc2dtbCAgICAgICAg ICAgICAgICAgICAgIHwgIDEyICsrCiBkb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sICAgICAg ICAgICAgICAgICAgfCAgMTggKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAg ICAgICAgICAgICAgfCAgNDQgKysrKystLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVz ZS5jICAgICAgICAgICAgIHwgIDQ2ICsrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYyAgICAgICAgICAgICB8IDEyNCArKysrKysrKysrKysrKysrKy0KIHNyYy9pbmNsdWRl L2NhdGFsb2cvY2F0dmVyc2lvbi5oICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUv bm9kZXMvcHJpbW5vZGVzLmggICAgICAgICAgICAgICAgIHwgICA5ICsrCiAuLi4vcmVncmVzcy9l eHBlY3RlZC9vcGVyYXRvcl9xdWFsaWZ5Lm91dCAgICAgfCAgOTcgKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3FsICAgICB8ICA0OSArKysrKysr CiA5IGZpbGVzIGNoYW5nZWQsIDM3MiBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcXVlcmllcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3F1ZXJp ZXMuc2dtbAppbmRleCBkOGQ0YzNjNTNlLi40NTI5MzE3MTgzIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvcXVlcmllcy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9xdWVyaWVzLnNnbWwKQEAgLTM2 OSw2ICszNjksMTggQEAgRlJPTSA8cmVwbGFjZWFibGU+dGFibGVfcmVmZXJlbmNlPC9yZXBsYWNl YWJsZT4gPG9wdGlvbmFsPiwgPHJlcGxhY2VhYmxlPnRhYmxlX3IKICAgICAgICAgPSA8cmVwbGFj ZWFibGU+VDI8L3JlcGxhY2VhYmxlPi5iPC9saXRlcmFsPi4KICAgICAgICA8L3BhcmE+CiAKKyAg ICAgICA8cGFyYT4KKyAgICAgICAgQnkgZGVmYXVsdCBlYWNoIGNvbXBhcmlzb24gdXNlcyB0aGUg PGxpdGVyYWw+PTwvbGl0ZXJhbD4gb3BlcmF0b3IKKyAgICAgICAgZm91bmQgaW4gdGhlIHNlYXJj aCBwYXRoLiAgQW4gb3B0aW9uYWwgb3BlcmF0b3IgbGlzdCwgd3JpdHRlbiBhcworICAgICAgICA8 bGl0ZXJhbD5VU0lORyAoYSwgYikgT1BFUkFUT1IgKDxyZXBsYWNlYWJsZT5vcGVyYXRvcjwvcmVw bGFjZWFibGU+LAorICAgICAgICA8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPik8 L2xpdGVyYWw+LCBwaW5zIHRoZSBlcXVhbGl0eQorICAgICAgICBvcGVyYXRvciB1c2VkIGZvciBl YWNoIGpvaW4gY29sdW1uOiBvbmUgb3BlcmF0b3IgcGVyIGNvbHVtbiwgYW5kCisgICAgICAgIGVh Y2ggbmFtZSBjYW4gYmUgc2NoZW1hLXF1YWxpZmllZC4gIDxhcHBsaWNhdGlvbj5wZ19kdW1wPC9h cHBsaWNhdGlvbj4KKyAgICAgICAgZW1pdHMgdGhpcyBjbGF1c2Ugd2hlbiB0aGUgam9pbiB3b3Vs ZCBub3Qgb3RoZXJ3aXNlIHVzZSB0aGUgc2FtZQorICAgICAgICBvcGVyYXRvcnMsIGVpdGhlciBi ZWNhdXNlIGFuIG9wZXJhdG9yIGlzIG5vdCByZWFjaGFibGUgYnkgYW4KKyAgICAgICAgdW5xdWFs aWZpZWQgbmFtZSBvciBiZWNhdXNlIGl0IGlzIG5vdCBuYW1lZCA8bGl0ZXJhbD49PC9saXRlcmFs Pi4KKyAgICAgICA8L3BhcmE+CisKICAgICAgICA8cGFyYT4KICAgICAgICAgRnVydGhlcm1vcmUs IHRoZSBvdXRwdXQgb2YgPGxpdGVyYWw+Sk9JTiBVU0lORzwvbGl0ZXJhbD4gc3VwcHJlc3Nlcwog ICAgICAgICByZWR1bmRhbnQgY29sdW1uczogdGhlcmUgaXMgbm8gbmVlZCB0byBwcmludCBib3Ro IG9mIHRoZSBtYXRjaGVkCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbAppbmRleCAwOWI2Y2U4MDliLi5lMmEwMTUz NWI0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwKQEAgLTYwLDcgKzYwLDcgQEAgU0VMRUNUIFsgQUxMIHwg RElTVElOQ1QgWyBPTiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9u PC9yZXBsYWMKICAgICBbIExBVEVSQUwgXSBST1dTIEZST00oIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5mdW5jdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gKCBbIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5hcmd1bWVudDwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSApIFsgQVMg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2RlZmluaXRpb248L3JlcGxh Y2VhYmxlPiBbLCAuLi5dICkgXSBbLCAuLi5dICkKICAgICAgICAgICAgICAgICBbIFdJVEggT1JE SU5BTElUWSBdIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hbGlhczwv cmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2Fs aWFzPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gXQogICAgIEdSQVBIX1RBQkxFICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmdyYXBoX25hbWU8L3JlcGxhY2VhYmxlPiBNQVRDSCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Z3JhcGhfcGF0dGVybjwvcmVwbGFjZWFibGU+ IENPTFVNTlMgKCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT4gWyBBUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+IF0gfSBbLCAuLi5dICkgKSBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+YWxpYXM8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9hbGlhczwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIF0KLSAgICA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT4gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpvaW5fdHlwZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiB7IE9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qb2luX2NvbmRpdGlvbjwvcmVwbGFjZWFibGU+IHwg VVNJTkcgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+am9pbl9jb2x1bW48L3JlcGxh Y2VhYmxlPiBbLCAuLi5dICkgWyBBUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+am9p bl91c2luZ19hbGlhczwvcmVwbGFjZWFibGU+IF0gfQorICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+am9pbl90eXBlPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmZyb21faXRlbTwvcmVwbGFjZWFibGU+IHsgT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmpvaW5fY29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gfCBVU0lORyAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qb2luX2NvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLl0g KSBbIE9QRVJBVE9SICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gWyBBUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+am9pbl91c2luZ19hbGlhczwvcmVwbGFjZWFibGU+IF0gfQogICAgIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiBOQVRVUkFMIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qb2luX3R5cGU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT4KICAgICA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT4gQ1JPU1MgSk9J TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT4K IApAQCAtNzEyLDcgKzcxMiw3IEBAIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KICAgICAgPC92YXJsaXN0 ZW50cnk+CiAKICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgIDx0ZXJtPjxsaXRlcmFsPlVTSU5H ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpvaW5fY29sdW1uPC9yZXBsYWNlYWJs ZT4gWywgLi4uXSApIFsgQVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpvaW5fdXNp bmdfYWxpYXM8L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxs aXRlcmFsPlVTSU5HICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpvaW5fY29sdW1u PC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIFsgT1BFUkFUT1IgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSBbIEFTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qb2luX3VzaW5nX2FsaWFzPC9yZXBsYWNlYWJsZT4g XTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAg ICAgIEEgY2xhdXNlIG9mIHRoZSBmb3JtIDxsaXRlcmFsPlVTSU5HICggYSwgYiwgLi4uICk8L2xp dGVyYWw+IGlzCkBAIC03MjMsNiArNzIzLDIwIEBAIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KICAgICAg ICAgYm90aC4KICAgICAgICA8L3BhcmE+CiAKKyAgICAgICA8cGFyYT4KKyAgICAgICAgTm9ybWFs bHkgZWFjaCBjb2x1bW4ncyBjb21wYXJpc29uIHVzZXMgdGhlIDxsaXRlcmFsPj08L2xpdGVyYWw+ CisgICAgICAgIG9wZXJhdG9yIGZvdW5kIGluIHRoZSBzZWFyY2ggcGF0aC4gIFRoZSBvcHRpb25h bAorICAgICAgICA8bGl0ZXJhbD5PUEVSQVRPUjwvbGl0ZXJhbD4gY2xhdXNlIHBpbnMgdGhlIGVx dWFsaXR5IG9wZXJhdG9yIHVzZWQKKyAgICAgICAgZm9yIGVhY2ggam9pbiBjb2x1bW4gaW5zdGVh ZDogaXQgbXVzdCBsaXN0IGV4YWN0bHkgb25lCisgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IHBlcgorICAgICAgICA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+am9pbl9jb2x1bW48L3JlcGxhY2VhYmxlPiwgYW5kIGVhY2gK KyAgICAgICAgb3BlcmF0b3IgbmFtZSBjYW4gYmUgc2NoZW1hLXF1YWxpZmllZC4KKyAgICAgICAg PGFwcGxpY2F0aW9uPnBnX2R1bXA8L2FwcGxpY2F0aW9uPiBlbWl0cyB0aGlzIGNsYXVzZSB3aGVu IHRoZSBqb2luCisgICAgICAgIHdvdWxkIG5vdCBvdGhlcndpc2UgdXNlIHRoZSBzYW1lIG9wZXJh dG9ycywgZWl0aGVyIGJlY2F1c2UgYW4gb3BlcmF0b3IKKyAgICAgICAgaXMgbm90IHJlYWNoYWJs ZSBieSBhbiB1bnF1YWxpZmllZCBuYW1lIG9yIGJlY2F1c2UgaXQgaXMgbm90CisgICAgICAgIG5h bWVkIDxsaXRlcmFsPj08L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKwogICAgICAgIDxwYXJh PgogICAgICAgICBJZiBhIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qb2luX3VzaW5n X2FsaWFzPC9yZXBsYWNlYWJsZT4KICAgICAgICAgbmFtZSBpcyBzcGVjaWZpZWQsIGl0IHByb3Zp ZGVzIGEgdGFibGUgYWxpYXMgZm9yIHRoZSBqb2luIGNvbHVtbnMuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA1 NDUxMTMxM2RjLi4yZGY0MTkyZTJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQ5Miw2ICs0OTIsNyBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAldHlwZSA8bm9kZT4Jam9pbl9xdWFsCiAldHlwZSA8 anR5cGU+CWpvaW5fdHlwZQorJXR5cGUgPGxpc3Q+CW9wdF9qb2luX3VzaW5nX29wZXJhdG9ycyBh bnlfb3BlcmF0b3JfbGlzdAogCiAldHlwZSA8bGlzdD4JZXh0cmFjdF9saXN0IG92ZXJsYXlfbGlz dCBwb3NpdGlvbl9saXN0CiAldHlwZSA8bGlzdD4Jc3Vic3RyX2xpc3QgdHJpbV9saXN0CkBAIC0x NDU4MSw3ICsxNDU4Miw4IEBAIGpvaW5lZF90YWJsZToKIAkJCQkJewogCQkJCQkJIC8qIFVTSU5H IGNsYXVzZSAqLwogCQkJCQkJbi0+dXNpbmdDbGF1c2UgPSBsaW5pdGlhbF9ub2RlKExpc3QsIGNh c3ROb2RlKExpc3QsICQ1KSk7Ci0JCQkJCQluLT5qb2luX3VzaW5nX2FsaWFzID0gbHNlY29uZF9u b2RlKEFsaWFzLCBjYXN0Tm9kZShMaXN0LCAkNSkpOworCQkJCQkJbi0+dXNpbmdPcGVyYXRvcnMg PSBsc2Vjb25kX25vZGUoTGlzdCwgY2FzdE5vZGUoTGlzdCwgJDUpKTsKKwkJCQkJCW4tPmpvaW5f dXNpbmdfYWxpYXMgPSBsdGhpcmRfbm9kZShBbGlhcywgY2FzdE5vZGUoTGlzdCwgJDUpKTsKIAkJ CQkJfQogCQkJCQllbHNlCiAJCQkJCXsKQEAgLTE0NjAzLDcgKzE0NjA1LDggQEAgam9pbmVkX3Rh YmxlOgogCQkJCQl7CiAJCQkJCQkvKiBVU0lORyBjbGF1c2UgKi8KIAkJCQkJCW4tPnVzaW5nQ2xh dXNlID0gbGluaXRpYWxfbm9kZShMaXN0LCBjYXN0Tm9kZShMaXN0LCAkNCkpOwotCQkJCQkJbi0+ am9pbl91c2luZ19hbGlhcyA9IGxzZWNvbmRfbm9kZShBbGlhcywgY2FzdE5vZGUoTGlzdCwgJDQp KTsKKwkJCQkJCW4tPnVzaW5nT3BlcmF0b3JzID0gbHNlY29uZF9ub2RlKExpc3QsIGNhc3ROb2Rl KExpc3QsICQ0KSk7CisJCQkJCQluLT5qb2luX3VzaW5nX2FsaWFzID0gbHRoaXJkX25vZGUoQWxp YXMsIGNhc3ROb2RlKExpc3QsICQ0KSk7CiAJCQkJCX0KIAkJCQkJZWxzZQogCQkJCQl7CkBAIC0x NDY3MSwxMCArMTQ2NzQsMTMgQEAgb3B0X2FsaWFzX2NsYXVzZTogYWxpYXNfY2xhdXNlCQkJCQkJ eyAkJCA9ICQxOyB9CiAJCTsKIAogLyoKLSAqIFRoZSBhbGlhcyBjbGF1c2UgYWZ0ZXIgSk9JTiAu Li4gVVNJTkcgb25seSBhY2NlcHRzIHRoZSBBUyBDb2xJZCBzcGVsbGluZywKLSAqIHBlciBTUUwg c3RhbmRhcmQuICAoVGhlIGdyYW1tYXIgY291bGQgcGFyc2UgdGhlIG90aGVyIHZhcmlhbnRzLCBi dXQgdGhleQotICogZG9uJ3Qgc2VlbSB0byBiZSB1c2VmdWwsIGFuZCBpdCBtaWdodCBsZWFkIHRv IHBhcnNlciBwcm9ibGVtcyBpbiB0aGUKLSAqIGZ1dHVyZS4pCisgKiBBIEpPSU4gLi4uIFVTSU5H IGNsYXVzZSBpcyBzcGVsbGVkCisgKgkJVVNJTkcgKCBjb2x1bW4gbGlzdCApIFsgT1BFUkFUT1Ig KCBvcGVyYXRvciBsaXN0ICkgXSBbIEFTIGFsaWFzIF0KKyAqIFRoZSBvcHRpb25hbCBPUEVSQVRP UiBjbGF1c2UgKG9wdF9qb2luX3VzaW5nX29wZXJhdG9ycykgc2l0cyBiZXR3ZWVuIHRoZQorICog Y29sdW1uIGxpc3QgYW5kIHRoZSBhbGlhcy4gIFRoZSBhbGlhcyBjbGF1c2UgaXRzZWxmIG9ubHkg YWNjZXB0cyB0aGUgQVMKKyAqIENvbElkIHNwZWxsaW5nLCBwZXIgU1FMIHN0YW5kYXJkLiAgKFRo ZSBncmFtbWFyIGNvdWxkIHBhcnNlIHRoZSBvdGhlciBhbGlhcworICogdmFyaWFudHMsIGJ1dCB0 aGV5IGRvbid0IHNlZW0gdG8gYmUgdXNlZnVsLCBhbmQgaXQgbWlnaHQgbGVhZCB0byBwYXJzZXIK KyAqIHByb2JsZW1zIGluIHRoZSBmdXR1cmUuKQogICovCiBvcHRfYWxpYXNfY2xhdXNlX2Zvcl9q b2luX3VzaW5nOgogCQkJQVMgQ29sSWQKQEAgLTE0NzMyLDE5ICsxNDczOCwyMyBAQCBvcHRfb3V0 ZXI6IE9VVEVSX1AKIAogLyogSk9JTiBxdWFsaWZpY2F0aW9uIGNsYXVzZXMKICAqIFBvc3NpYmls aXRpZXMgYXJlOgotICoJVVNJTkcgKCBjb2x1bW4gbGlzdCApIFsgQVMgYWxpYXMgXQorICoJVVNJ TkcgKCBjb2x1bW4gbGlzdCApIFsgT1BFUkFUT1IgKCBvcGVyYXRvciBsaXN0ICkgXSBbIEFTIGFs aWFzIF0KICAqCQkJCQkJICBhbGxvd3Mgb25seSB1bnF1YWxpZmllZCBjb2x1bW4gbmFtZXMsCi0g KgkJCQkJCSAgd2hpY2ggbXVzdCBtYXRjaCBiZXR3ZWVuIHRhYmxlcy4KKyAqCQkJCQkJICB3aGlj aCBtdXN0IG1hdGNoIGJldHdlZW4gdGFibGVzLiAgVGhlIG9wdGlvbmFsCisgKgkJCQkJCSAgT1BF UkFUT1IgY2xhdXNlIHN1cHBsaWVzIGEgcGVyLWNvbHVtbiwgcG9zc2libHkKKyAqCQkJCQkJICBz Y2hlbWEtcXVhbGlmaWVkIGVxdWFsaXR5IG9wZXJhdG9yIG5hbWUgaW4gcGxhY2UKKyAqCQkJCQkJ ICBvZiB0aGUgaW1wbGljaXQgIj0iLgogICoJT04gZXhwciBhbGxvd3MgbW9yZSBnZW5lcmFsIHF1 YWxpZmljYXRpb25zLgogICoKLSAqIFdlIHJldHVybiBVU0lORyBhcyBhIHR3by1lbGVtZW50IExp c3QgKHRoZSBmaXJzdCBpdGVtIGJlaW5nIGEgc3ViLUxpc3QKLSAqIG9mIHRoZSBjb21tb24gY29s dW1uIG5hbWVzLCBhbmQgdGhlIHNlY29uZCBlaXRoZXIgYW4gQWxpYXMgaXRlbSBvciBOVUxMKS4K KyAqIFdlIHJldHVybiBVU0lORyBhcyBhIHRocmVlLWVsZW1lbnQgTGlzdCAodGhlIGZpcnN0IGl0 ZW0gYmVpbmcgYSBzdWItTGlzdAorICogb2YgdGhlIGNvbW1vbiBjb2x1bW4gbmFtZXMsIHRoZSBz ZWNvbmQgdGhlIHN1Yi1MaXN0IG9mIHBlci1jb2x1bW4gb3BlcmF0b3IKKyAqIG5hbWVzLCBvciBO SUwsIGFuZCB0aGUgdGhpcmQgZWl0aGVyIGFuIEFsaWFzIGl0ZW0gb3IgTlVMTCkuCiAgKiBBbiBP Ti1leHByIHdpbGwgbm90IGJlIGEgTGlzdCwgc28gaXQgY2FuIGJlIHRvbGQgYXBhcnQgdGhhdCB3 YXkuCiAgKi8KIAotam9pbl9xdWFsOiBVU0lORyAnKCcgbmFtZV9saXN0ICcpJyBvcHRfYWxpYXNf Y2xhdXNlX2Zvcl9qb2luX3VzaW5nCitqb2luX3F1YWw6IFVTSU5HICcoJyBuYW1lX2xpc3QgJykn IG9wdF9qb2luX3VzaW5nX29wZXJhdG9ycyBvcHRfYWxpYXNfY2xhdXNlX2Zvcl9qb2luX3VzaW5n CiAJCQkJewotCQkJCQkkJCA9IChOb2RlICopIGxpc3RfbWFrZTIoJDMsICQ1KTsKKwkJCQkJJCQg PSAoTm9kZSAqKSBsaXN0X21ha2UzKCQzLCAkNSwgJDYpOwogCQkJCX0KIAkJCXwgT04gYV9leHBy CiAJCQkJewpAQCAtMTQ3NTIsNiArMTQ3NjIsMTYgQEAgam9pbl9xdWFsOiBVU0lORyAnKCcgbmFt ZV9saXN0ICcpJyBvcHRfYWxpYXNfY2xhdXNlX2Zvcl9qb2luX3VzaW5nCiAJCQkJfQogCQk7CiAK K29wdF9qb2luX3VzaW5nX29wZXJhdG9yczoKKwkJCU9QRVJBVE9SICcoJyBhbnlfb3BlcmF0b3Jf bGlzdCAnKScJCXsgJCQgPSAkMzsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOSUw7 IH0KKwkJOworCithbnlfb3BlcmF0b3JfbGlzdDoKKwkJCWFueV9vcGVyYXRvcgkJCQkJCQl7ICQk ID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgYW55X29wZXJhdG9yX2xpc3QgJywnIGFueV9vcGVy YXRvcgl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKwogCiByZWxhdGlvbl9leHByOgog CQkJcXVhbGlmaWVkX25hbWUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9j bGF1c2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwppbmRleCA4ODFmYmEy ZTdiLi4xNjQyNDkyMDk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xh dXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCkBAIC01Nyw3ICs1 Nyw4IEBAIHN0YXRpYyBpbnQJZXh0cmFjdFJlbWFpbmluZ0NvbHVtbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkJTGlzdCAqKnJlc19jb2xuYW1lcywgTGlzdCAqKnJlc19jb2x2YXJzLAog CQkJCQkJCQkJUGFyc2VOYW1lc3BhY2VDb2x1bW4gKnJlc19uc2NvbHVtbnMpOwogc3RhdGljIE5v ZGUgKnRyYW5zZm9ybUpvaW5Vc2luZ0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkJ CQkgIExpc3QgKmxlZnRWYXJzLCBMaXN0ICpyaWdodFZhcnMpOworCQkJCQkJCQkJICBMaXN0ICps ZWZ0VmFycywgTGlzdCAqcmlnaHRWYXJzLAorCQkJCQkJCQkJICBMaXN0ICp1c2luZ09wZXJhdG9y cyk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSm9pbk9uQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgSm9pbkV4cHIgKmosCiAJCQkJCQkJCSAgIExpc3QgKm5hbWVzcGFjZSk7CiBzdGF0aWMgUGFy c2VOYW1lc3BhY2VJdGVtICp0cmFuc2Zvcm1UYWJsZUVudHJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwg UmFuZ2VWYXIgKnIpOwpAQCAtMzA5LDEyICszMTAsMTQgQEAgZXh0cmFjdFJlbWFpbmluZ0NvbHVt bnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogICovCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1Kb2lu VXNpbmdDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJIExpc3QgKmxlZnRWYXJzLCBM aXN0ICpyaWdodFZhcnMpCisJCQkJCQkgTGlzdCAqbGVmdFZhcnMsIExpc3QgKnJpZ2h0VmFycywK KwkJCQkJCSBMaXN0ICp1c2luZ09wZXJhdG9ycykKIHsKIAlOb2RlCSAgICpyZXN1bHQ7CiAJTGlz dAkgICAqYW5kYXJncyA9IE5JTDsKIAlMaXN0Q2VsbCAgICpsdmFycywKIAkJCSAgICpydmFyczsK KwlpbnQJCQlpOwogCiAJLyoKIAkgKiBXZSBjaGVhdCBhIGxpdHRsZSBiaXQgaGVyZSBieSBidWls ZGluZyBhbiB1bnRyYW5zZm9ybWVkIG9wZXJhdG9yIHRyZWUKQEAgLTMyNCwyMyArMzI3LDM3IEBA IHRyYW5zZm9ybUpvaW5Vc2luZ0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJICogaGF2ZSB0 byBtYXJrIHRoZSBjb2x1bW5zIGFzIHJlcXVpcmluZyBTRUxFQ1QgcHJpdmlsZWdlIGZvciBvdXJz ZWx2ZXM7CiAJICogdHJhbnNmb3JtRXhwcigpIHdvbid0IGRvIGl0LgogCSAqLworCWkgPSAwOwog CWZvcmJvdGgobHZhcnMsIGxlZnRWYXJzLCBydmFycywgcmlnaHRWYXJzKQogCXsKIAkJVmFyCQkg ICAqbHZhciA9IChWYXIgKikgbGZpcnN0KGx2YXJzKTsKIAkJVmFyCQkgICAqcnZhciA9IChWYXIg KikgbGZpcnN0KHJ2YXJzKTsKIAkJQV9FeHByCSAgICplOworCQlMaXN0CSAgICpvcG5hbWU7CiAK IAkJLyogUmVxdWlyZSByZWFkIGFjY2VzcyB0byB0aGUgam9pbiB2YXJpYWJsZXMgKi8KIAkJbWFy a1ZhckZvclNlbGVjdFByaXYocHN0YXRlLCBsdmFyKTsKIAkJbWFya1ZhckZvclNlbGVjdFByaXYo cHN0YXRlLCBydmFyKTsKIAotCQkvKiBOb3cgY3JlYXRlIHRoZSBsdmFyID0gcnZhciBqb2luIGNv bmRpdGlvbiAqLwotCQllID0gbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIj0iLAotCQkJCQkJ CSAoTm9kZSAqKSBjb3B5T2JqZWN0KGx2YXIpLCAoTm9kZSAqKSBjb3B5T2JqZWN0KHJ2YXIpLAot CQkJCQkJCSAtMSk7CisJCS8qCisJCSAqIENob29zZSB0aGUgb3BlcmF0b3IgbmFtZTogYW4gZXhw bGljaXQgVVNJTkcgLi4uIE9QRVJBVE9SICguLi4pCisJCSAqIGVudHJ5IGZvciB0aGlzIGNvbHVt biBpZiBvbmUgd2FzIGdpdmVuLCBlbHNlIHRoZSBpbXBsaWNpdCAiPSIuICBUaGUKKwkJICogY2Fs bGVyIGhhcyBhbHJlYWR5IGNoZWNrZWQgdGhhdCB1c2luZ09wZXJhdG9ycywgd2hlbiBwcmVzZW50 LCBoYXMKKwkJICogdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBjb2x1bW4gbGlzdC4KKwkJICovCisJ CWlmICh1c2luZ09wZXJhdG9ycyAhPSBOSUwpCisJCQlvcG5hbWUgPSAoTGlzdCAqKSBsaXN0X250 aCh1c2luZ09wZXJhdG9ycywgaSk7CisJCWVsc2UKKwkJCW9wbmFtZSA9IGxpc3RfbWFrZTEobWFr ZVN0cmluZygiPSIpKTsKKworCQkvKiBOb3cgY3JlYXRlIHRoZSBsdmFyIDxvcD4gcnZhciBqb2lu IGNvbmRpdGlvbiAqLworCQllID0gbWFrZUFfRXhwcihBRVhQUl9PUCwgb3BuYW1lLAorCQkJCQkg ICAoTm9kZSAqKSBjb3B5T2JqZWN0KGx2YXIpLCAoTm9kZSAqKSBjb3B5T2JqZWN0KHJ2YXIpLAor CQkJCQkgICAtMSk7CiAKIAkJLyogUHJlcGFyZSB0byBjb21iaW5lIGludG8gYW4gQU5EIGNsYXVz ZSwgaWYgbXVsdGlwbGUgam9pbiBjb2x1bW5zICovCiAJCWFuZGFyZ3MgPSBsYXBwZW5kKGFuZGFy Z3MsIGUpOworCQlpKys7CiAJfQogCiAJLyogT25seSBuZWVkIGFuIEFORCBpZiB0aGVyZSdzIG1v cmUgdGhhbiBvbmUgam9pbiBjb2x1bW4gKi8KQEAgLTE1NDIsMTAgKzE1NTksMjUgQEAgdHJhbnNm b3JtRnJvbUNsYXVzZUl0ZW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpuLAogCQkJCXJlc19j b2xuYW1lcyA9IGxhcHBlbmQocmVzX2NvbG5hbWVzLCBsZmlyc3QodWNvbCkpOwogCQkJfQogCisJ CQkvKgorCQkJICogSWYgYW4gZXhwbGljaXQgVVNJTkcgLi4uIE9QRVJBVE9SICguLi4pIGxpc3Qg d2FzIHN1cHBsaWVkLCBpdAorCQkJICogbXVzdCBwcm92aWRlIGV4YWN0bHkgb25lIG9wZXJhdG9y IHBlciBqb2luIGNvbHVtbi4gIChOQVRVUkFMCisJCQkgKiBqb2lucyBjYW4gbmV2ZXIgcmVhY2gg aGVyZSB3aXRoIGEgbm9uLU5JTCB1c2luZ09wZXJhdG9ycywgc2luY2UKKwkJCSAqIHRoZSBncmFt bWFyIGRvZXMgbm90IGFsbG93IHRoZSBPUEVSQVRPUiBjbGF1c2UgdGhlcmUuKQorCQkJICovCisJ CQlpZiAoai0+dXNpbmdPcGVyYXRvcnMgIT0gTklMICYmCisJCQkJbGlzdF9sZW5ndGgoai0+dXNp bmdPcGVyYXRvcnMpICE9IGxpc3RfbGVuZ3RoKGotPnVzaW5nQ2xhdXNlKSkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVy cm1zZygibnVtYmVyIG9mIEpPSU4vVVNJTkcgb3BlcmF0b3JzICglZCkgZG9lcyBub3QgbWF0Y2gg bnVtYmVyIG9mIGNvbHVtbnMgKCVkKSIsCisJCQkJCQkJCWxpc3RfbGVuZ3RoKGotPnVzaW5nT3Bl cmF0b3JzKSwKKwkJCQkJCQkJbGlzdF9sZW5ndGgoai0+dXNpbmdDbGF1c2UpKSkpOworCiAJCQkv KiBDb25zdHJ1Y3QgdGhlIGdlbmVyYXRlZCBKT0lOIE9OIGNsYXVzZSAqLwogCQkJai0+cXVhbHMg PSB0cmFuc2Zvcm1Kb2luVXNpbmdDbGF1c2UocHN0YXRlLAogCQkJCQkJCQkJCQkJbF91c2luZ3Zh cnMsCi0JCQkJCQkJCQkJCQlyX3VzaW5ndmFycyk7CisJCQkJCQkJCQkJCQlyX3VzaW5ndmFycywK KwkJCQkJCQkJCQkJCWotPnVzaW5nT3BlcmF0b3JzKTsKIAkJfQogCQllbHNlIGlmIChqLT5xdWFs cykKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDhhOTI2MGZjZDcuLmRiMTU0 YTFmNjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTUyMCw2ICs1MjAsNyBAQCBz dGF0aWMgdm9pZCBnZXRfZnJvbV9jbGF1c2UoUXVlcnkgKnF1ZXJ5LCBjb25zdCBjaGFyICpwcmVm aXgsCiAJCQkJCQkJZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGdldF9m cm9tX2NsYXVzZV9pdGVtKE5vZGUgKmp0bm9kZSwgUXVlcnkgKnF1ZXJ5LAogCQkJCQkJCQkgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyBMaXN0ICpnZXRfam9pbl91c2luZ19vcGV4 cHJzKEpvaW5FeHByICpqLCBpbnQgbnVzaW5nKTsKIHN0YXRpYyB2b2lkIGdldF9ydGVfYWxpYXMo UmFuZ2VUYmxFbnRyeSAqcnRlLCBpbnQgdmFybm8sIGJvb2wgdXNlX2FzLAogCQkJCQkJICBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X2NvbHVtbl9hbGlhc19saXN0 KGRlcGFyc2VfY29sdW1ucyAqY29saW5mbywKQEAgLTU0Myw2ICs1NDQsOCBAQCBzdGF0aWMgY2hh ciAqZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZShPaWQgZnVuY2lkLCBpbnQgbmFyZ3MsCiAJCQkJCQkJ CQlib29sIGhhc192YXJpYWRpYywgYm9vbCAqdXNlX3ZhcmlhZGljX3AsCiAJCQkJCQkJCQlib29s IGluR3JvdXBCeSk7CiBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfb3BlcmF0b3JfbmFtZShPaWQgb3Bl cmlkLCBPaWQgYXJnMSwgT2lkIGFyZzIpOworc3RhdGljIGNoYXIgKmdlbmVyYXRlX29wZXJhdG9y X25hbWVfZXh0ZW5kZWQoT2lkIG9wZXJpZCwgT2lkIGFyZzEsIE9pZCBhcmcyLAorCQkJCQkJCQkJ CQkgYm9vbCAqbmVlZHNfcXVhbCk7CiBzdGF0aWMgdm9pZCBhZGRfY2FzdF90byhTdHJpbmdJbmZv IGJ1ZiwgT2lkIHR5cGlkKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9xdWFsaWZpZWRfdHlwZV9u YW1lKE9pZCB0eXBpZCk7CiBzdGF0aWMgdGV4dCAqc3RyaW5nX3RvX3RleHQoY2hhciAqc3RyKTsK QEAgLTEzMDE0LDYgKzEzMDE3LDQzIEBAIGdldF9mcm9tX2NsYXVzZShRdWVyeSAqcXVlcnksIGNv bnN0IGNoYXIgKnByZWZpeCwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCX0KIH0KIAorLyoK KyAqIGdldF9qb2luX3VzaW5nX29wZXhwcnMKKyAqCQlFeHRyYWN0IHRoZSBwZXItY29sdW1uIGVx dWFsaXR5IGNvbXBhcmlzb25zIG9mIGEgSk9JTi9VU0lORyBjbGF1c2UKKyAqCQlmcm9tIGl0cyBz dG9yZWQgcXVhbHMsIGFzIGEgbGlzdCBvZiBPcEV4cHIgbm9kZXMuCisgKgorICogUmV0dXJucyBO SUwgaWYgdGhlIHF1YWxzIGRvIG5vdCBoYXZlIHRoZSBleHBlY3RlZCBzaGFwZSAoZS5nLiBhIGNv bHVtbidzCisgKiBjb21wYXJpc29uIGFjcXVpcmVkIGEgY29lcmNpb24gd2UgZG9uJ3QgcmVjb2du aXplKTsgY2FsbGVycyBtdXN0IHRoZW4KKyAqIGZhbGwgYmFjayB0byB1bmRlY29yYXRlZCBvdXRw dXQuCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldF9qb2luX3VzaW5nX29wZXhwcnMoSm9pbkV4cHIg KmosIGludCBudXNpbmcpCit7CisJTm9kZQkgICAqcXVhbHMgPSBqLT5xdWFsczsKKwlMaXN0CSAg ICpyZXN1bHQgPSBOSUw7CisJTGlzdAkgICAqYXJtczsKKwlMaXN0Q2VsbCAgICpsYzsKKworCWlm IChxdWFscyA9PSBOVUxMKQorCQlyZXR1cm4gTklMOworCWlmIChJc0EocXVhbHMsIEJvb2xFeHBy KSAmJiAoKEJvb2xFeHByICopIHF1YWxzKS0+Ym9vbG9wID09IEFORF9FWFBSKQorCQlhcm1zID0g KChCb29sRXhwciAqKSBxdWFscyktPmFyZ3M7CisJZWxzZQorCQlhcm1zID0gbGlzdF9tYWtlMShx dWFscyk7CisJaWYgKGxpc3RfbGVuZ3RoKGFybXMpICE9IG51c2luZykKKwkJcmV0dXJuIE5JTDsK Kwlmb3JlYWNoKGxjLCBhcm1zKQorCXsKKwkJTm9kZQkgICAqYXJtID0gc3RyaXBfaW1wbGljaXRf Y29lcmNpb25zKChOb2RlICopIGxmaXJzdChsYykpOworCisJCWlmICghSXNBKGFybSwgT3BFeHBy KSB8fAorCQkJbGlzdF9sZW5ndGgoKChPcEV4cHIgKikgYXJtKS0+YXJncykgIT0gMikKKwkJCXJl dHVybiBOSUw7CisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBhcm0pOworCX0KKwlyZXR1cm4g cmVzdWx0OworfQorCiBzdGF0aWMgdm9pZAogZ2V0X2Zyb21fY2xhdXNlX2l0ZW0oTm9kZSAqanRu b2RlLCBRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIHsKQEAgLTEzMjY1 LDYgKzEzMzA1LDkgQEAgZ2V0X2Zyb21fY2xhdXNlX2l0ZW0oTm9kZSAqanRub2RlLCBRdWVyeSAq cXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJewogCQkJTGlzdENlbGwgICAqbGM7 CiAJCQlib29sCQlmaXJzdCA9IHRydWU7CisJCQlMaXN0CSAgICpvcGV4cHJzOworCQkJTGlzdAkg ICAqb3BuYW1lcyA9IE5JTDsKKwkJCWJvb2wJCW5lZWRfb3BfbGlzdCA9IGZhbHNlOwogCiAJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBVU0lORyAoIik7CiAJCQkvKiBVc2UgdGhlIGFz c2lnbmVkIG5hbWVzLCBub3Qgd2hhdCdzIGluIHVzaW5nQ2xhdXNlICovCkBAIC0xMzI4MCw2ICsx MzMyMyw0OSBAQCBnZXRfZnJvbV9jbGF1c2VfaXRlbShOb2RlICpqdG5vZGUsIFF1ZXJ5ICpxdWVy eSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQkJfQogCQkJYXBwZW5kU3RyaW5nSW5mb0No YXIoYnVmLCAnKScpOwogCisJCQkvKgorCQkJICogQSBiYXJlIFVTSU5HIGNsYXVzZSByZXBhcnNl cyBlYWNoIGNvbHVtbidzIG9wZXJhdG9yIGJ5IHRoZQorCQkJICogdW5xdWFsaWZpZWQgbmFtZSAi PSIsIHNvIHdlIG11c3QgZGVjb3JhdGUgdGhlIGNsYXVzZSB3aXRoIGFuCisJCQkgKiBleHBsaWNp dCBwZXItY29sdW1uIG9wZXJhdG9yIGxpc3Qgd2hlbmV2ZXIgdGhhdCB3b3VsZCBub3QKKwkJCSAq IHJlY292ZXIgdGhlIHNhbWUgb3BlcmF0b3JzLiAgVGhpcyBpcyB0aGUgY2FzZSBpZiBhbnkgY29s dW1uJ3MKKwkJCSAqIG9wZXJhdG9yIGlzIG5vdCByZWFjaGFibGUgYnkgYW4gdW5xdWFsaWZpZWQg bG9va3VwIG9mIGl0cyBvd24KKwkJCSAqIG5hbWUgKHRoZW4gaXQgYXBwZWFycyBzY2hlbWEtcXVh bGlmaWVkIGluIHRoZSBsaXN0KSwgb3IgaXMKKwkJCSAqIG5hbWVkIHNvbWV0aGluZyBvdGhlciB0 aGFuICI9IiAodGhlbiBhIGJhcmUgY2xhdXNlIHdvdWxkCisJCQkgKiB3cm9uZ2x5IHJlc29sdmUg Ij0iOyBpdCBhcHBlYXJzIGJ5IGl0cyBiYXJlIG5hbWUgaW4gdGhlIGxpc3QpLgorCQkJICogSWYg d2UgY2Fubm90IHJlY292ZXIgdGhlIG9wZXJhdG9ycyBmcm9tIHRoZSBxdWFscywgcHJpbnQgdGhl CisJCQkgKiB0cmFkaXRpb25hbCB1bmRlY29yYXRlZCBmb3JtLCBhcyBiZWZvcmUuCisJCQkgKi8K KwkJCW9wZXhwcnMgPSBnZXRfam9pbl91c2luZ19vcGV4cHJzKGosCisJCQkJCQkJCQkJCSBsaXN0 X2xlbmd0aChjb2xpbmZvLT51c2luZ05hbWVzKSk7CisJCQlmb3JlYWNoKGxjLCBvcGV4cHJzKQor CQkJeworCQkJCU9wRXhwcgkgICAqb3BleHByID0gKE9wRXhwciAqKSBsZmlyc3QobGMpOworCQkJ CWJvb2wJCW5lZWRzX3F1YWw7CisJCQkJY2hhcgkgICAqb3BuYW1lOworCisJCQkJb3BuYW1lID0g Z2VuZXJhdGVfb3BlcmF0b3JfbmFtZV9leHRlbmRlZChvcGV4cHItPm9wbm8sCisJCQkJCQkJCQkJ CQkJCSBleHByVHlwZShsaW5pdGlhbChvcGV4cHItPmFyZ3MpKSwKKwkJCQkJCQkJCQkJCQkJIGV4 cHJUeXBlKGxzZWNvbmQob3BleHByLT5hcmdzKSksCisJCQkJCQkJCQkJCQkJCSAmbmVlZHNfcXVh bCk7CisJCQkJb3BuYW1lcyA9IGxhcHBlbmQob3BuYW1lcywgb3BuYW1lKTsKKwkJCQluZWVkX29w X2xpc3QgfD0gKG5lZWRzX3F1YWwgfHwgc3RyY21wKG9wbmFtZSwgIj0iKSAhPSAwKTsKKwkJCX0K KworCQkJaWYgKG5lZWRfb3BfbGlzdCkKKwkJCXsKKwkJCQlmaXJzdCA9IHRydWU7CisJCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgT1BFUkFUT1IgKCIpOworCQkJCWZvcmVhY2gobGMs IG9wbmFtZXMpCisJCQkJeworCQkJCQlpZiAoZmlyc3QpCisJCQkJCQlmaXJzdCA9IGZhbHNlOwor CQkJCQllbHNlCisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisJCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAoY2hhciAqKSBsZmlyc3QobGMpKTsKKwkJCQl9 CisJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOworCQkJfQorCiAJCQlpZiAoai0+ am9pbl91c2luZ19hbGlhcykKIAkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsCiAJ CQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGotPmpvaW5fdXNpbmdfYWxpYXMtPmFsaWFzbmFtZSkp OwpAQCAtMTQwNjQsMTIgKzE0MTUwLDM3IEBAIGdlbmVyYXRlX2Z1bmN0aW9uX25hbWUoT2lkIGZ1 bmNpZCwgaW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywgT2lkICphcmd0eXBlcywKICAqLwogc3Rh dGljIGNoYXIgKgogZ2VuZXJhdGVfb3BlcmF0b3JfbmFtZShPaWQgb3BlcmlkLCBPaWQgYXJnMSwg T2lkIGFyZzIpCit7CisJYm9vbAkJbmVlZHNfcXVhbDsKKwljaGFyCSAgICpvcHJuYW1lOworCisJ b3BybmFtZSA9IGdlbmVyYXRlX29wZXJhdG9yX25hbWVfZXh0ZW5kZWQob3BlcmlkLCBhcmcxLCBh cmcyLAorCQkJCQkJCQkJCQkgICZuZWVkc19xdWFsKTsKKwlpZiAobmVlZHNfcXVhbCkKKwkJb3By bmFtZSA9IHBzcHJpbnRmKCJPUEVSQVRPUiglcykiLCBvcHJuYW1lKTsKKworCXJldHVybiBvcHJu YW1lOworfQorCisvKgorICogZ2VuZXJhdGVfb3BlcmF0b3JfbmFtZV9leHRlbmRlZAorICoJCUd1 dHMgb2YgZ2VuZXJhdGVfb3BlcmF0b3JfbmFtZTogY29tcHV0ZSB0aGUgbmFtZSB0byBkaXNwbGF5 IGZvciBhbgorICoJCW9wZXJhdG9yIHNwZWNpZmllZCBieSBPSUQsIGdpdmVuIHRoZSBzcGVjaWZp ZWQgYWN0dWFsIGFyZyB0eXBlcy4KKyAqCisgKiBUaGUgcmVzdWx0IGluY2x1ZGVzIGFsbCBuZWNl c3NhcnkgcXVvdGluZyBhbmQgc2NoZW1hLXByZWZpeGluZywgYnV0IG5vdAorICogdGhlIE9QRVJB VE9SKCkgZGVjb3JhdGlvbiB0aGF0IGdlbmVyYXRlX29wZXJhdG9yX25hbWUgd291bGQgYWRkOyB0 aGlzCisgKiBmb3JtIGlzIHN1aXRhYmxlIGZvciBjb25zdHJ1Y3RzIHRoYXQgdGFrZSBhIGJhcmUg KGJ1dCBwb3NzaWJseQorICogcXVhbGlmaWVkKSBvcGVyYXRvciBuYW1lLCBzdWNoIGFzIEpPSU4v VVNJTkcncyBvcGVyYXRvciBsaXN0LiAgV2hldGhlcgorICogc2NoZW1hLXByZWZpeGluZyB3YXMg cmVxdWlyZWQgaXMgYWRkaXRpb25hbGx5IHJlcG9ydGVkIGluICpuZWVkc19xdWFsLgorICovCitz dGF0aWMgY2hhciAqCitnZW5lcmF0ZV9vcGVyYXRvcl9uYW1lX2V4dGVuZGVkKE9pZCBvcGVyaWQs IE9pZCBhcmcxLCBPaWQgYXJnMiwKKwkJCQkJCQkJYm9vbCAqbmVlZHNfcXVhbCkKIHsKIAlTdHJp bmdJbmZvRGF0YSBidWY7CiAJSGVhcFR1cGxlCW9wZXJ0dXA7CiAJRm9ybV9wZ19vcGVyYXRvciBv cGVyZm9ybTsKIAljaGFyCSAgICpvcHJuYW1lOwotCWNoYXIJICAgKm5zcG5hbWU7CiAJT3BlcmF0 b3IJcF9yZXN1bHQ7CiAKIAlpbml0U3RyaW5nSW5mbygmYnVmKTsKQEAgLTE0MTAyLDE4ICsxNDIx MywxNyBAQCBnZW5lcmF0ZV9vcGVyYXRvcl9uYW1lKE9pZCBvcGVyaWQsIE9pZCBhcmcxLCBPaWQg YXJnMikKIAl9CiAKIAlpZiAocF9yZXN1bHQgIT0gTlVMTCAmJiBvcHJpZChwX3Jlc3VsdCkgPT0g b3BlcmlkKQotCQluc3BuYW1lID0gTlVMTDsKKwkJKm5lZWRzX3F1YWwgPSBmYWxzZTsKIAllbHNl CiAJewotCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAob3BlcmZvcm0tPm9w cm5hbWVzcGFjZSk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIk9QRVJBVE9SKCVzLiIsIHF1 b3RlX2lkZW50aWZpZXIobnNwbmFtZSkpOworCQljaGFyCSAgICpuc3BuYW1lID0gZ2V0X25hbWVz cGFjZV9uYW1lX29yX3RlbXAob3BlcmZvcm0tPm9wcm5hbWVzcGFjZSk7CisKKwkJKm5lZWRzX3F1 YWwgPSB0cnVlOworCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICIlcy4iLCBxdW90ZV9pZGVudGlm aWVyKG5zcG5hbWUpKTsKIAl9CiAKIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsIG9wcm5h bWUpOwogCi0JaWYgKG5zcG5hbWUpCi0JCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7 Ci0KIAlpZiAocF9yZXN1bHQgIT0gTlVMTCkKIAkJUmVsZWFzZVN5c0NhY2hlKHBfcmVzdWx0KTsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggYi9zcmMvaW5j bHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAppbmRleCA3M2VkNmEwZmE0Li43NTcxYzVjZDA4IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApAQCAtNTcsNiArNTcsNiBAQAogICovCiAKIC8qCQkJ CQkJCXl5eXltbWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyNjA3MDIyCisj ZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDI2MDcwNjEKIAogI2VuZGlmCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oCmluZGV4IGJiMDVhZWViZWUuLjY5MGQyOTc2Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5o CkBAIC0yMzUyLDYgKzIzNTIsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgSm9pbkV4cHIKIAlOb2RlCSAg ICpyYXJnOwkJCS8qIHJpZ2h0IHN1YnRyZWUgKi8KIAkvKiBVU0lORyBjbGF1c2UsIGlmIGFueSAo bGlzdCBvZiBTdHJpbmcpICovCiAJTGlzdAkgICAqdXNpbmdDbGF1c2UgcGdfbm9kZV9hdHRyKHF1 ZXJ5X2p1bWJsZV9pZ25vcmUpOworCisJLyoKKwkgKiBVU0lORyAuLi4gT1BFUkFUT1IgKC4uLik6 IHBlci1jb2x1bW4gcG9zc2libHktcXVhbGlmaWVkIG9wZXJhdG9yIG5hbWVzCisJICogKGxpc3Qg b2YgU3RyaW5nIGxpc3RzKSwgb3IgTklMIGZvciB0aGUgaW1wbGljaXQgIj0iLiAgVGhpcyBpcyBj b25zdWx0ZWQKKwkgKiBvbmx5IGR1cmluZyBwYXJzZSBhbmFseXNpcyB0byBidWlsZCB0aGUgam9p biBxdWFsczsgcnVsZXV0aWxzLmMKKwkgKiByZS1kZXJpdmVzIHRoZSBvcGVyYXRvcnMgZnJvbSBx dWFscywgc28gdGhlc2UgcmF3IG5hbWVzIG1heSBnbyBzdGFsZQorCSAqIGhhcm1sZXNzbHkgKGUu Zy4gYWZ0ZXIgQUxURVIgT1BFUkFUT1IgU0VUIFNDSEVNQSkuCisJICovCisJTGlzdAkgICAqdXNp bmdPcGVyYXRvcnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIGFsaWFz IGF0dGFjaGVkIHRvIFVTSU5HIGNsYXVzZSwgaWYgYW55ICovCiAJQWxpYXMJICAgKmpvaW5fdXNp bmdfYWxpYXMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIHF1YWxpZmll cnMgb24gam9pbiwgaWYgYW55ICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL29wZXJhdG9yX3F1YWxpZnkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcGVy YXRvcl9xdWFsaWZ5Lm91dAppbmRleCBhODEyOTUzYjExLi40ZmE4ZGY2MmM0IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wZXJhdG9yX3F1YWxpZnkub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3BlcmF0b3JfcXVhbGlmeS5vdXQKQEAgLTI0OCwzICsy NDgsMTAwIEBAIFdIRVJFIHRncXVhbCBMSUtFICclOm9wbm8gJyB8fCAnYWx0X29wcy49KGludDQs aW50NCknOjpyZWdvcGVyYXRvcjo6b2lkIHx8ICcgJScKIC0tIGFyZSBpbnRlbnRpb25hbGx5IGtl cHQgKG5vdCBkcm9wcGVkKTogdGhlIHBnX3VwZ3JhZGUgdGVzdCBzdWl0ZQogLS0gZHVtcC9yZXN0 b3JlcyB0aGUgcmVncmVzc2lvbiBkYXRhYmFzZSBhbmQgdGhlcmVieSBleGVyY2lzZXMgdGhlIHF1 YWxpZmllZAogLS0gZGVwYXJzZSBlbmQtdG8tZW5kLgorLS0gSk9JTiBVU0lORyB3aXRoIGFuIG9m Zi1wYXRoIGVxdWFsaXR5IG9wZXJhdG9yCitDUkVBVEUgVEFCTEUgb3FfdDIgKGlkIGludCwgYSBp bnQpOworU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdfY2F0YWxvZzsKK0NSRUFURSBWSUVX IHB1YmxpYy5vcV92X3VzaW5nIEFTCisgIFNFTEVDVCB0LmlkIEZST00gcHVibGljLm9xX3QgdCBK T0lOIHB1YmxpYy5vcV90MiB1IFVTSU5HIChpZCwgYSk7CitDUkVBVEUgVklFVyBwdWJsaWMub3Ff dl9uYXR1cmFsIEFTCisgIFNFTEVDVCB0LmlkIEZST00gcHVibGljLm9xX3QgdCBOQVRVUkFMIEpP SU4gcHVibGljLm9xX3QyIHU7CistLSBNaXhlZCBsaXN0OiBwaW4gaWQncyBvcGVyYXRvciB0byBw Z19jYXRhbG9nLj0gYW5kIGEncyB0byB0aGUgc2hhZG93CistLSBhbHRfb3BzLj0uICBVbmRlciB0 aGUgZGVmYXVsdCBwYXRoIHRoZSBmb3JtZXIgcmVzb2x2ZXMgYmFyZSB3aGlsZSB0aGUKKy0tIGxh dHRlciBtdXN0IGJlIHF1YWxpZmllZCwgc28gdGhlIGVtaXR0ZWQgbGlzdCBpcyAiT1BFUkFUT1Ig KD0sIGFsdF9vcHMuPSkiLgorQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfdXNpbmdfbWl4ZWQgQVMK KyAgU0VMRUNUIHQuaWQgRlJPTSBwdWJsaWMub3FfdCB0IEpPSU4gcHVibGljLm9xX3QyIHUKKyAg ICBVU0lORyAoaWQsIGEpIE9QRVJBVE9SIChwZ19jYXRhbG9nLj0sIGFsdF9vcHMuPSk7CitSRVNF VCBzZWFyY2hfcGF0aDsKKy0tIEEgam9pbiBvcGVyYXRvciB3aG9zZSBuYW1lIGlzIG5vdCAiPSIg KGhlcmUgcGdfY2F0YWxvZy48LCBvbiB0aGUgZGVmYXVsdAorLS0gcGF0aCkgbXVzdCBzdGlsbCBm b3JjZSB0aGUgbGlzdDogYSBiYXJlIFVTSU5HIGNsYXVzZSB3b3VsZCByZXBhcnNlIGFzICI9Ii4K K0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X3VzaW5nX2x0IEFTCisgIFNFTEVDVCB0LmlkIEZST00g cHVibGljLm9xX3QgdCBKT0lOIHB1YmxpYy5vcV90MiB1IFVTSU5HIChpZCkgT1BFUkFUT1IgKDwp OworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X3VzaW5nJzo6cmVnY2xhc3MsIHRydWUpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIHQuaWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gb3FfdCB0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICBKT0lOIG9x X3QyIHUgVVNJTkcgKGlkLCBhKSBPUEVSQVRPUiAoYWx0X29wcy49LCBhbHRfb3BzLj0pOworKDEg cm93KQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfbmF0dXJhbCc6OnJlZ2NsYXNzLCB0 cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCB0LmlkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIG9xX3QgdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg Sk9JTiBvcV90MiB1IFVTSU5HIChpZCwgYSkgT1BFUkFUT1IgKGFsdF9vcHMuPSwgYWx0X29wcy49 KTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X3VzaW5nX21peGVkJzo6 cmVnY2xhc3MsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgdC5pZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gb3FfdCB0ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgSk9JTiBvcV90MiB1IFVTSU5HIChp ZCwgYSkgT1BFUkFUT1IgKD0sIGFsdF9vcHMuPSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRf dmlld2RlZignb3Ffdl91c2luZ19sdCc6OnJlZ2NsYXNzLCB0cnVlKTsKKyAgICAgICAgICAgICAg IHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgdC5pZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICBGUk9NIG9xX3QgdCAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICBKT0lOIG9xX3QyIHUgVVNJTkcgKGlkKSBPUEVSQVRPUiAoPCk7CisoMSByb3cpCisKKy0t IGV4cGxpY2l0IHN5bnRheCBwYXJzZXM7IG1peGVkIGJhcmUvcXVhbGlmaWVkIG5hbWVzIGFsbG93 ZWQKK1NFTEVDVCB0LmlkIEZST00gb3FfdCB0IEpPSU4gb3FfdDIgdSBVU0lORyAoaWQsIGEpIE9Q RVJBVE9SIChwZ19jYXRhbG9nLj0sIGFsdF9vcHMuPSkgV0hFUkUgZmFsc2U7CisgaWQgCistLS0t CisoMCByb3dzKQorCitTRUxFQ1QgdC5pZCBGUk9NIG9xX3QgdCBKT0lOIG9xX3QyIHUgVVNJTkcg KGlkLCBhKSBPUEVSQVRPUiAoPSwgYWx0X29wcy49KSBBUyBqIFdIRVJFIGZhbHNlOworIGlkIAor LS0tLQorKDAgcm93cykKKworLS0gYXJpdHkgbWlzbWF0Y2ggaXMgYW4gZXJyb3IKK1NFTEVDVCB0 LmlkIEZST00gb3FfdCB0IEpPSU4gb3FfdDIgdSBVU0lORyAoaWQsIGEpIE9QRVJBVE9SIChhbHRf b3BzLj0pIFdIRVJFIGZhbHNlOworRVJST1I6ICBudW1iZXIgb2YgSk9JTi9VU0lORyBvcGVyYXRv cnMgKDEpIGRvZXMgbm90IG1hdGNoIG51bWJlciBvZiBjb2x1bW5zICgyKQorLS0gcmVsb2FkIHJv dW5kLXRyaXAgdW5kZXIgcmVzdHJpY3RlZCBzZWFyY2hfcGF0aAorQkVHSU47IFNFVCBMT0NBTCBz ZWFyY2hfcGF0aCA9IHBnX2NhdGFsb2c7CitETyAkJCBCRUdJTgorICBFWEVDVVRFICdDUkVBVEUg VklFVyBwdWJsaWMub3Ffdl91c2luZ19yZWxvYWQgQVMgJyB8fCBwZ19nZXRfdmlld2RlZigncHVi bGljLm9xX3ZfdXNpbmcnOjpyZWdjbGFzcyk7CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIHB1Ymxp Yy5vcV92X25hdHVyYWxfcmVsb2FkIEFTICcgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92 X25hdHVyYWwnOjpyZWdjbGFzcyk7CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIHB1YmxpYy5vcV92 X3VzaW5nX21peGVkX3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl91 c2luZ19taXhlZCc6OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9x X3ZfdXNpbmdfbHRfcmVsb2FkIEFTICcgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X3Vz aW5nX2x0Jzo6cmVnY2xhc3MpOworRU5EICQkOyBDT01NSVQ7CistLSBSZWxvYWRlZCB2aWV3cyBy ZXNvbHZlIHRoZSBzYW1lIG9wZXJhdG9yIE9JRHMgYXMgdGhlIG9yaWdpbmFsczogYWx0X29wcy49 CistLSBmb3Igb3Ffdl91c2luZy9uYXR1cmFsIChib3RoIGNvbHVtbnMpIGFuZCB0aGUgbWl4ZWQg dmlldyAoY29sdW1uIGEgb25seSkuCitTRUxFQ1QgZXZfY2xhc3M6OnJlZ2NsYXNzIEZST00gcGdf cmV3cml0ZQorV0hFUkUgZXZfYWN0aW9uIExJS0UgJyU6b3BubyAnIHx8ICdhbHRfb3BzLj0oaW50 NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQgfHwgJyAlJworICBBTkQgZXZfY2xhc3M6OnJlZ2Ns YXNzOjp0ZXh0IExJS0UgJ29xX3YlcmVsb2FkJworT1JERVIgQlkgMTsKKyAgICAgICAgZXZfY2xh c3MgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBvcV92X3VzaW5nX3JlbG9h ZAorIG9xX3ZfbmF0dXJhbF9yZWxvYWQKKyBvcV92X3VzaW5nX21peGVkX3JlbG9hZAorKDMgcm93 cykKKworLS0gVGhlIG5vbi0iPSIgb3BlcmF0b3IgT1BFUkFUT1IoPCkgcGlucyBpbnQ0bHQgYWNy b3NzIHRoZSByZWxvYWQuCitTRUxFQ1QgZXZfY2xhc3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0 ZQorV0hFUkUgZXZfYWN0aW9uIExJS0UgJyU6b3BubyAnIHx8ICdwZ19jYXRhbG9nLjwoaW50NCxp bnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQgfHwgJyAlJworICBBTkQgZXZfY2xhc3M6OnJlZ2NsYXNz Ojp0ZXh0IExJS0UgJ29xX3YlcmVsb2FkJworT1JERVIgQlkgMTsKKyAgICAgICBldl9jbGFzcyAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBvcV92X3VzaW5nX2x0X3JlbG9hZAorKDEg cm93KQorCitEUk9QIFZJRVcgb3Ffdl91c2luZ19yZWxvYWQsIG9xX3ZfbmF0dXJhbF9yZWxvYWQs IG9xX3ZfdXNpbmdfbWl4ZWRfcmVsb2FkLAorICAgICAgICAgIG9xX3ZfdXNpbmdfbHRfcmVsb2Fk OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3BlcmF0b3JfcXVhbGlmeS5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcGVyYXRvcl9xdWFsaWZ5LnNxbAppbmRleCA0MTE0NGJh ODY3Li5jOGZhZGRkZGRlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcGVyYXRv cl9xdWFsaWZ5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcGVyYXRvcl9xdWFsaWZ5 LnNxbApAQCAtMTQ2LDMgKzE0Niw1MiBAQCBXSEVSRSB0Z3F1YWwgTElLRSAnJTpvcG5vICcgfHwg J2FsdF9vcHMuPShpbnQ0LGludDQpJzo6cmVnb3BlcmF0b3I6Om9pZCB8fCAnICUnCiAtLSBhcmUg aW50ZW50aW9uYWxseSBrZXB0IChub3QgZHJvcHBlZCk6IHRoZSBwZ191cGdyYWRlIHRlc3Qgc3Vp dGUKIC0tIGR1bXAvcmVzdG9yZXMgdGhlIHJlZ3Jlc3Npb24gZGF0YWJhc2UgYW5kIHRoZXJlYnkg ZXhlcmNpc2VzIHRoZSBxdWFsaWZpZWQKIC0tIGRlcGFyc2UgZW5kLXRvLWVuZC4KKworLS0gSk9J TiBVU0lORyB3aXRoIGFuIG9mZi1wYXRoIGVxdWFsaXR5IG9wZXJhdG9yCitDUkVBVEUgVEFCTEUg b3FfdDIgKGlkIGludCwgYSBpbnQpOworU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdfY2F0 YWxvZzsKK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X3VzaW5nIEFTCisgIFNFTEVDVCB0LmlkIEZS T00gcHVibGljLm9xX3QgdCBKT0lOIHB1YmxpYy5vcV90MiB1IFVTSU5HIChpZCwgYSk7CitDUkVB VEUgVklFVyBwdWJsaWMub3Ffdl9uYXR1cmFsIEFTCisgIFNFTEVDVCB0LmlkIEZST00gcHVibGlj Lm9xX3QgdCBOQVRVUkFMIEpPSU4gcHVibGljLm9xX3QyIHU7CistLSBNaXhlZCBsaXN0OiBwaW4g aWQncyBvcGVyYXRvciB0byBwZ19jYXRhbG9nLj0gYW5kIGEncyB0byB0aGUgc2hhZG93CistLSBh bHRfb3BzLj0uICBVbmRlciB0aGUgZGVmYXVsdCBwYXRoIHRoZSBmb3JtZXIgcmVzb2x2ZXMgYmFy ZSB3aGlsZSB0aGUKKy0tIGxhdHRlciBtdXN0IGJlIHF1YWxpZmllZCwgc28gdGhlIGVtaXR0ZWQg bGlzdCBpcyAiT1BFUkFUT1IgKD0sIGFsdF9vcHMuPSkiLgorQ1JFQVRFIFZJRVcgcHVibGljLm9x X3ZfdXNpbmdfbWl4ZWQgQVMKKyAgU0VMRUNUIHQuaWQgRlJPTSBwdWJsaWMub3FfdCB0IEpPSU4g cHVibGljLm9xX3QyIHUKKyAgICBVU0lORyAoaWQsIGEpIE9QRVJBVE9SIChwZ19jYXRhbG9nLj0s IGFsdF9vcHMuPSk7CitSRVNFVCBzZWFyY2hfcGF0aDsKKy0tIEEgam9pbiBvcGVyYXRvciB3aG9z ZSBuYW1lIGlzIG5vdCAiPSIgKGhlcmUgcGdfY2F0YWxvZy48LCBvbiB0aGUgZGVmYXVsdAorLS0g cGF0aCkgbXVzdCBzdGlsbCBmb3JjZSB0aGUgbGlzdDogYSBiYXJlIFVTSU5HIGNsYXVzZSB3b3Vs ZCByZXBhcnNlIGFzICI9Ii4KK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X3VzaW5nX2x0IEFTCisg IFNFTEVDVCB0LmlkIEZST00gcHVibGljLm9xX3QgdCBKT0lOIHB1YmxpYy5vcV90MiB1IFVTSU5H IChpZCkgT1BFUkFUT1IgKDwpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X3VzaW5nJzo6 cmVnY2xhc3MsIHRydWUpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X25hdHVyYWwnOjpy ZWdjbGFzcywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfdXNpbmdfbWl4ZWQn OjpyZWdjbGFzcywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfdXNpbmdfbHQn OjpyZWdjbGFzcywgdHJ1ZSk7CistLSBleHBsaWNpdCBzeW50YXggcGFyc2VzOyBtaXhlZCBiYXJl L3F1YWxpZmllZCBuYW1lcyBhbGxvd2VkCitTRUxFQ1QgdC5pZCBGUk9NIG9xX3QgdCBKT0lOIG9x X3QyIHUgVVNJTkcgKGlkLCBhKSBPUEVSQVRPUiAocGdfY2F0YWxvZy49LCBhbHRfb3BzLj0pIFdI RVJFIGZhbHNlOworU0VMRUNUIHQuaWQgRlJPTSBvcV90IHQgSk9JTiBvcV90MiB1IFVTSU5HIChp ZCwgYSkgT1BFUkFUT1IgKD0sIGFsdF9vcHMuPSkgQVMgaiBXSEVSRSBmYWxzZTsKKy0tIGFyaXR5 IG1pc21hdGNoIGlzIGFuIGVycm9yCitTRUxFQ1QgdC5pZCBGUk9NIG9xX3QgdCBKT0lOIG9xX3Qy IHUgVVNJTkcgKGlkLCBhKSBPUEVSQVRPUiAoYWx0X29wcy49KSBXSEVSRSBmYWxzZTsKKy0tIHJl bG9hZCByb3VuZC10cmlwIHVuZGVyIHJlc3RyaWN0ZWQgc2VhcmNoX3BhdGgKK0JFR0lOOyBTRVQg TE9DQUwgc2VhcmNoX3BhdGggPSBwZ19jYXRhbG9nOworRE8gJCQgQkVHSU4KKyAgRVhFQ1VURSAn Q1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfdXNpbmdfcmVsb2FkIEFTICcgfHwgcGdfZ2V0X3ZpZXdk ZWYoJ3B1YmxpYy5vcV92X3VzaW5nJzo6cmVnY2xhc3MpOworICBFWEVDVVRFICdDUkVBVEUgVklF VyBwdWJsaWMub3Ffdl9uYXR1cmFsX3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJs aWMub3Ffdl9uYXR1cmFsJzo6cmVnY2xhc3MpOworICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJs aWMub3Ffdl91c2luZ19taXhlZF9yZWxvYWQgQVMgJyB8fCBwZ19nZXRfdmlld2RlZigncHVibGlj Lm9xX3ZfdXNpbmdfbWl4ZWQnOjpyZWdjbGFzcyk7CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIHB1 YmxpYy5vcV92X3VzaW5nX2x0X3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMu b3Ffdl91c2luZ19sdCc6OnJlZ2NsYXNzKTsKK0VORCAkJDsgQ09NTUlUOworLS0gUmVsb2FkZWQg dmlld3MgcmVzb2x2ZSB0aGUgc2FtZSBvcGVyYXRvciBPSURzIGFzIHRoZSBvcmlnaW5hbHM6IGFs dF9vcHMuPQorLS0gZm9yIG9xX3ZfdXNpbmcvbmF0dXJhbCAoYm90aCBjb2x1bW5zKSBhbmQgdGhl IG1peGVkIHZpZXcgKGNvbHVtbiBhIG9ubHkpLgorU0VMRUNUIGV2X2NsYXNzOjpyZWdjbGFzcyBG Uk9NIHBnX3Jld3JpdGUKK1dIRVJFIGV2X2FjdGlvbiBMSUtFICclOm9wbm8gJyB8fCAnYWx0X29w cy49KGludDQsaW50NCknOjpyZWdvcGVyYXRvcjo6b2lkIHx8ICcgJScKKyAgQU5EIGV2X2NsYXNz OjpyZWdjbGFzczo6dGV4dCBMSUtFICdvcV92JXJlbG9hZCcKK09SREVSIEJZIDE7CistLSBUaGUg bm9uLSI9IiBvcGVyYXRvciBPUEVSQVRPUig8KSBwaW5zIGludDRsdCBhY3Jvc3MgdGhlIHJlbG9h ZC4KK1NFTEVDVCBldl9jbGFzczo6cmVnY2xhc3MgRlJPTSBwZ19yZXdyaXRlCitXSEVSRSBldl9h Y3Rpb24gTElLRSAnJTpvcG5vICcgfHwgJ3BnX2NhdGFsb2cuPChpbnQ0LGludDQpJzo6cmVnb3Bl cmF0b3I6Om9pZCB8fCAnICUnCisgIEFORCBldl9jbGFzczo6cmVnY2xhc3M6OnRleHQgTElLRSAn b3FfdiVyZWxvYWQnCitPUkRFUiBCWSAxOworRFJPUCBWSUVXIG9xX3ZfdXNpbmdfcmVsb2FkLCBv cV92X25hdHVyYWxfcmVsb2FkLCBvcV92X3VzaW5nX21peGVkX3JlbG9hZCwKKyAgICAgICAgICBv cV92X3VzaW5nX2x0X3JlbG9hZDsKLS0gCjIuNTQuMAoK --6a4d06a8_62bbd95a_14ffe Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0003-Allow-per-column-operator-lists-in-row-comparison.patch" RnJvbSA5YTNiNTRiYzk1YzJlYzcwMDMyMzA3ZGQxZGI2NGVjZmI4NWVjNDg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGE9QzU9ODI9MjBQYXN0ZXJuYWs/PSA8 bWljaGFsLmR0ekBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNyBKdWwgMjAyNiAwNzo1NDoyOCArMDIw MApTdWJqZWN0OiBbUEFUQ0ggdjIgMy81XSBBbGxvdyBwZXItY29sdW1uIG9wZXJhdG9yIGxpc3Rz IGluIHJvdyBjb21wYXJpc29ucwoKQSByb3ctY29uc3RydWN0b3IgY29tcGFyaXNvbiBzdWNoIGFz IFJPVyhhLCBiKSA8IFJPVyhjLCBkKSByZXNvbHZlcyB0aGUKd3JpdHRlbiBvcGVyYXRvciBuYW1l IGluZGVwZW5kZW50bHkgZm9yIGVhY2ggcGFpciBvZiBjb2x1bW5zLCBzbyB0aGUKc3BlY2lmaWMg b3BlcmF0b3IgY2hvc2VuIGZvciBvbmUgY29sdW1uIG1heSBsaXZlIGluIGEgZGlmZmVyZW50IHNj aGVtYQpmcm9tIHRoZSBvcGVyYXRvciBjaG9zZW4gZm9yIGFub3RoZXIuICBydWxldXRpbHMuYyBj b3VsZCBub3QgcmVwcm9kdWNlCnRoYXQ6IGl0IHByaW50ZWQgdGhlIGZpcnN0IGNvbHVtbidzIG9w ZXJhdG9yIG5hbWUgZm9yIHRoZSB3aG9sZSByb3cgYW5kCmFkbWl0dGVkIGFzIG11Y2ggLS0KCiAg ICBXZSBhc3N1bWUgdGhhdCB0aGUgbmFtZSBvZiB0aGUgZmlyc3QtY29sdW1uIG9wZXJhdG9yIHdp bGwgZG8gZm9yIGFsbAogICAgdGhlIHJlc3QgdG9vLiAgVGhpcyBpcyBkZWZpbml0ZWx5IG9wZW4g dG8gZmFpbHVyZSwgZWcgaWYgc29tZSBidXQgbm90CiAgICBhbGwgb3BlcmF0b3JzIHdlcmUgcmVu YW1lZCBzaW5jZSB0aGUgY29uc3RydWN0IHdhcyBwYXJzZWQsIGJ1dCB0aGVyZQogICAgc2VlbXMg bm8gd2F5IHRvIGJlIHBlcmZlY3QuCgpXaGVuIHRoZSBjb2x1bW5zJyBvcGVyYXRvcnMgZGlzYWdy ZWUgLS0gb3IgdGhlIGZpcnN0LWNvbHVtbiBuYW1lIHdvdWxkCnJlc29sdmUgdG8gYSBkaWZmZXJl bnQgb3BlcmF0b3Igb24gdGhlIHJlYWRlcidzIHNlYXJjaF9wYXRoIC0tIHRoYXQKYXBwcm94aW1h dGlvbiBzaWxlbnRseSBkZXBhcnNlcyB0byBhIHJvdyBjb21wYXJpc29uIHdpdGggZGlmZmVyZW50 CnNlbWFudGljcywgc28gYSBkdW1wZWQtYW5kLXJlbG9hZGVkIHZpZXcgY291bGQgY29tcGFyZSBy b3dzIHVzaW5nIHRoZQp3cm9uZyBvcGVyYXRvcnMuCgpHaXZlIHRoZSByb3ctY29tcGFyaXNvbiBz eW50YXggYW4gb3B0aW9uYWwgcGVyLWNvbHVtbiBvcGVyYXRvciBsaXN0LAoKICAgIFJPVyguLi4p IE9QRVJBVE9SKG9wMSwgb3AyLCAuLi4pIFJPVyguLi4pCgpvbmUgb3BlcmF0b3IgcGVyIGNvbHVt biwgZWFjaCBpbmRlcGVuZGVudGx5IHNjaGVtYS1xdWFsaWZpYWJsZS4gIFRoaXMgaXMKVG9tIExh bmUncyBvd24gc3VnZ2VzdGlvbiBmb3IgdGhlIHByb2JsZW0gKDEwNDkyLjE1MzE1MTUyNTVAc3Nz LnBnaC5wYS51cykuCm1ha2Vfcm93X2NvbXBhcmlzb25fb3AgcmVzb2x2ZXMgdGhlIG4ndGggbmFt ZSBhZ2FpbnN0IHRoZSBuJ3RoIGNvbHVtbjsKcnVsZXV0aWxzIGVtaXRzIHRoZSBsaXN0IHdoZW5l dmVyIGEgc2luZ2xlIHdyaXR0ZW4gbmFtZSBjb3VsZCBub3QgcmVjb3ZlcgpldmVyeSBjb2x1bW4n cyBvcGVyYXRvciAoc29tZSBjb2x1bW4gbmVlZHMgc2NoZW1hLXF1YWxpZmljYXRpb24sIG9yIHRo ZQpjb2x1bW5zIHVzZSBkaWZmZXJlbnRseS1uYW1lZCBvcGVyYXRvcnMpLCBhbmQgb3RoZXJ3aXNl IHByaW50cyB0aGUKdHJhZGl0aW9uYWwgc2luZ2xlLW9wZXJhdG9yIGZvcm0gYnl0ZS1mb3ItYnl0 ZSB1bmNoYW5nZWQuCgpUaGUgb3BlcmF0b3IgbGlzdCBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIHJv dyAoYW5kLCB3aXRoIHRoZSBuZXh0IHBhdGNoLApzdWJxdWVyeSkgY29tcGFyaXNvbnMuICBJdCBp cyByZWplY3RlZCBpbiBldmVyeSBvdGhlciBjb250ZXh0IHRoYXQKY29uc3VtZXMgYW4gb3BlcmF0 b3IgbmFtZSAtLSBzY2FsYXIgaW5maXgvcHJlZml4IG9wZXJhdG9ycywgQU5ZL0FMTCBvdmVyCmFu IGFycmF5LCBPUkRFUiBCWSAuLi4gVVNJTkcsIGFuZCBEREwgZGVmaW5pdGlvbiBpdGVtcyBzdWNo IGFzIGEgQ1JFQVRFCk9QRVJBVE9SIGNvbW11dGF0b3IgLS0gdGhyb3VnaCBhIHNpbmdsZSBzaGFy ZWQgaGVscGVyLApyZWplY3Rfb3BlcmF0b3JfbmFtZV9saXN0KCkuICBTdWJxdWVyeSBjb21wYXJp c29ucyByZWplY3QgaXQgdG9vIGZvciBub3c7CnRoYXQgcmVqZWN0aW9uIGlzIHRlbXBvcmFyeSBh bmQgbGlmdGVkIGJ5IHRoZSBmb2xsb3ctb24gcGF0Y2ggdGhhdCB0ZWFjaGVzCkFOWS9BTEwgYW5k IHJvdyBzdWJxdWVyaWVzIHRvIGhvbm9yIHRoZSBsaXN0LgoKT25seSB0aGUgcmF3LXBhcnNlIHJl cHJlc2VudGF0aW9uIGNoYW5nZXMgLS0gdGhlIEFfRXhwciwgU3ViTGluayBhbmQKU29ydEJ5IG9w ZXJhdG9yLW5hbWUgZmllbGRzIGFscmVhZHkgcm91bmQtdHJpcCBhIG5lc3RlZCBsaXN0IC0tIGFu ZCBzdG9yZWQKcnVsZXMga2VlcCB0aGUgc2FtZSBwb3N0LWFuYWx5c2lzIFJvd0NvbXBhcmVFeHBy LCBzbyBubyBjYXR2ZXJzaW9uIGJ1bXAgaXMKcmVxdWlyZWQuCgpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tLzM4NTY4MzQuMTc4MzA4Nzg4NkBzc3MucGdoLnBhLnVzCi0tLQogZG9jL3Ny Yy9zZ21sL2Z1bmMvZnVuYy1jb21wYXJpc29ucy5zZ21sICAgICAgIHwgIDE5ICsrKwogZG9jL3Ny Yy9zZ21sL3N5bnRheC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9kZWZpbmUuYyAgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICsrKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyAgICAgICAgICAgICB8ICAgOSArCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAgfCAxMTUgKysrKysrKysrKysrLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYyAgICAgICAgICAgICAgIHwgIDIyICsrKwog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDY2ICsrKysr KystCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfb3Blci5oICAgICAgICAgICAgICAgfCAgMjAg KysrCiAuLi4vcmVncmVzcy9leHBlY3RlZC9vcGVyYXRvcl9xdWFsaWZ5Lm91dCAgICAgfCAxNTYg KysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAg ICAgICAgICAgfCAgIDcgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnku c3FsICAgICB8IDEwNiArKysrKysrKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDUzMiBpbnNlcnRp b25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9m dW5jLWNvbXBhcmlzb25zLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWNvbXBhcmlzb25z LnNnbWwKaW5kZXggNmE2ZTBiZDQwMS4uNTI0NWYwMTJiYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2Z1bmMvZnVuYy1jb21wYXJpc29ucy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1 bmMtY29tcGFyaXNvbnMuc2dtbApAQCAtMjI5LDYgKzIyOSwyNSBAQCBBTkQKICAgIG9yIGhhcyBz ZW1hbnRpY3Mgc2ltaWxhciB0byBvbmUgb2YgdGhlc2UuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4K KyAgIE9yZGluYXJpbHkgYSBzaW5nbGUgPHJlcGxhY2VhYmxlPm9wZXJhdG9yPC9yZXBsYWNlYWJs ZT4gaXMgd3JpdHRlbiBhbmQgaXRzCisgICBiYXJlIG5hbWUgaXMgcmVzb2x2ZWQgaW5kZXBlbmRl bnRseSBmb3IgZWFjaCBwYWlyIG9mIGNvbHVtbnMuICBZb3UgY2FuCisgICBpbnN0ZWFkIHBpbiB0 aGUgb3BlcmF0b3IgdXNlZCBmb3IgZWFjaCBjb2x1bW4gYnkgd3JpdGluZyBhbiBleHBsaWNpdAor ICAgcGVyLWNvbHVtbiBvcGVyYXRvciBsaXN0IHdpdGggdGhlIDxsaXRlcmFsPk9QRVJBVE9SKCk8 L2xpdGVyYWw+IHN5bnRheCAoc2VlCisgICA8eHJlZiBsaW5rZW5kPSJzcWwtZXhwcmVzc2lvbnMt b3BlcmF0b3ItY2FsbHMiLz4pLCBnaXZpbmcgb25lIG9wZXJhdG9yIGZvcgorICAgZWFjaCBjb2x1 bW4gb2YgdGhlIHJvd3M6Cis8c3lub3BzaXM+Cis8cmVwbGFjZWFibGU+cm93X2NvbnN0cnVjdG9y PC9yZXBsYWNlYWJsZT4gT1BFUkFUT1IoPHJlcGxhY2VhYmxlPm9wZXJhdG9yPC9yZXBsYWNlYWJs ZT4gPG9wdGlvbmFsPiwgPHJlcGxhY2VhYmxlPm9wZXJhdG9yPC9yZXBsYWNlYWJsZT4gLi4uIDwv b3B0aW9uYWw+KSA8cmVwbGFjZWFibGU+cm93X2NvbnN0cnVjdG9yPC9yZXBsYWNlYWJsZT4KKzwv c3lub3BzaXM+CisgICBUaGUgbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSBvbmUgb3BlcmF0b3Ig cGVyIGNvbHVtbiwgYW5kIGVhY2ggb3BlcmF0b3IgbWF5CisgICBiZSBzY2hlbWEtcXVhbGlmaWVk IGluZGVwZW5kZW50bHkuICBUaGlzIGZvcm0gaXMgdXNlZnVsIHdoZW4gYSBzaW5nbGUKKyAgIHVu cXVhbGlmaWVkIG5hbWUgd291bGQgbm90IHJlc29sdmUgdG8gdGhlIGludGVuZGVkIG9wZXJhdG9y IGZvciBldmVyeSBjb2x1bW47CisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5h bWU+IGl0c2VsZiBmYWxscyBiYWNrIHRvIGl0IHdoZW4gZGVwYXJzaW5nIGEKKyAgIHN0b3JlZCBy b3cgY29tcGFyaXNvbiAoZm9yIGV4YW1wbGUgaW4gYSB2aWV3IGRlZmluaXRpb24pIHdob3NlIHBl ci1jb2x1bW4KKyAgIG9wZXJhdG9ycyBjYW5ub3QgYWxsIGJlIHJlY292ZXJlZCBmcm9tIG9uZSB3 cml0dGVuIG5hbWUuICBUaGUgc2VsZWN0ZWQKKyAgIG9wZXJhdG9ycyBtdXN0IHN0aWxsIG1lZXQg dGhlIEItdHJlZSByZXF1aXJlbWVudHMgZGVzY3JpYmVkIGFib3ZlLgorICA8L3BhcmE+CisKICAg PHBhcmE+CiAgICBUaGUgPGxpdGVyYWw+PTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPiZsdDsmZ3Q7 PC9saXRlcmFsPiBjYXNlcyB3b3JrIHNsaWdodGx5IGRpZmZlcmVudGx5CiAgICBmcm9tIHRoZSBv dGhlcnMuICBUd28gcm93cyBhcmUgY29uc2lkZXJlZApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3N5bnRheC5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCmluZGV4IGI1YWFkOGI0Yzcu LjA5NGMyYzJmZmIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwKQEAgLTExMzYsNyArMTEzNiwxMCBAQCBTRUxFQ1QgMyBP UEVSQVRPUihwZ19jYXRhbG9nLispIDQ7CiAgICAgd2VsbDogPGxpdGVyYWw+SVMgPG9wdGlvbmFs PiBOT1QgPC9vcHRpb25hbD4gRElTVElOQ1QKICAgICBGUk9NPC9saXRlcmFsPiAoc2VlIDx4cmVm IGxpbmtlbmQ9ImZ1bmN0aW9ucy1jb21wYXJpc29uLXByZWQtdGFibGUiLz4pCiAgICAgYW5kIDxm dW5jdGlvbj5OVUxMSUY8L2Z1bmN0aW9uPgotICAgIChzZWUgPHhyZWYgbGlua2VuZD0iZnVuY3Rp b25zLW51bGxpZiIvPikuCisgICAgKHNlZSA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtbnVsbGlm Ii8+KS4gIEEgcm93LWNvbnN0cnVjdG9yIGNvbXBhcmlzb24KKyAgICBnb2VzIGEgc3RlcCBmdXJ0 aGVyIGFuZCBhY2NlcHRzIGEgY29tbWEtc2VwYXJhdGVkIDxlbXBoYXNpcz5saXN0PC9lbXBoYXNp cz4KKyAgICBvZiBvcGVyYXRvcnMgaW5zaWRlIDxsaXRlcmFsPk9QRVJBVE9SKCk8L2xpdGVyYWw+ LCBvbmUgZm9yIGVhY2ggY29sdW1uIG9mCisgICAgdGhlIGNvbXBhcmVkIHJvd3MgKHNlZSA8eHJl ZiBsaW5rZW5kPSJyb3ctd2lzZS1jb21wYXJpc29uIi8+KS4KICAgIDwvcGFyYT4KIAogICAgPG5v dGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZWZpbmUuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2RlZmluZS5jCmluZGV4IDQxNzJjYzliYWMuLmIwNWJiOTU3MTkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2RlZmluZS5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1l c3BhY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJub2Rlcy9t YWtlZnVuY3MuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfb3Blci5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogCkBAIC01 MSw2ICs1Miw4IEBAIGRlZkdldFN0cmluZyhEZWZFbGVtICpkZWYpCiAJCWNhc2UgVF9UeXBlTmFt ZToKIAkJCXJldHVybiBUeXBlTmFtZVRvU3RyaW5nKChUeXBlTmFtZSAqKSBkZWYtPmFyZyk7CiAJ CWNhc2UgVF9MaXN0OgorCQkJLyogbXVzdCBiZSBhbiBvcGVyYXRvciBuYW1lICovCisJCQlyZWpl Y3Rfb3BlcmF0b3JfbmFtZV9saXN0KE5VTEwsIChMaXN0ICopIGRlZi0+YXJnLCAtMSk7CiAJCQly ZXR1cm4gTmFtZUxpc3RUb1N0cmluZygoTGlzdCAqKSBkZWYtPmFyZyk7CiAJCWNhc2UgVF9BX1N0 YXI6CiAJCQlyZXR1cm4gcHN0cmR1cCgiKiIpOwpAQCAtMjQ3LDYgKzI1MCw4IEBAIGRlZkdldFF1 YWxpZmllZE5hbWUoRGVmRWxlbSAqZGVmKQogCQljYXNlIFRfVHlwZU5hbWU6CiAJCQlyZXR1cm4g KChUeXBlTmFtZSAqKSBkZWYtPmFyZyktPm5hbWVzOwogCQljYXNlIFRfTGlzdDoKKwkJCS8qIG11 c3QgYmUgYW4gb3BlcmF0b3IgbmFtZSAqLworCQkJcmVqZWN0X29wZXJhdG9yX25hbWVfbGlzdChO VUxMLCAoTGlzdCAqKSBkZWYtPmFyZywgLTEpOwogCQkJcmV0dXJuIChMaXN0ICopIGRlZi0+YXJn OwogCQljYXNlIFRfU3RyaW5nOgogCQkJLyogQWxsb3cgcXVvdGVkIG5hbWUgZm9yIGJhY2t3YXJk cyBjb21wYXRpYmlsaXR5ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAyZGY0MTkyZTJhLi4zMGJkNjljMDFm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKQEAgLTE3NjI0LDI0ICsxNzYyNCw0MSBAQCBNYXRoT3A6CQkgJysnCQkJ CQkJCQkJeyAkJCA9ICIrIjsgfQogCQkJfCAnfCcJCQkJCQkJCQl7ICQkID0gInwiOyB9CiAJCTsK IAorLyoKKyAqIFRoZSBPUEVSQVRPUigpIGRlY29yYXRpb24gYWNjZXB0cyBhIGNvbW1hLXNlcGFy YXRlZCBsaXN0IG9mIG9wZXJhdG9yCisgKiBuYW1lcy4gIEEgb25lLWVsZW1lbnQgbGlzdCBpcyBj b2xsYXBzZWQgdG8gdGhlIHRyYWRpdGlvbmFsIHNpbmdsZQorICogcG9zc2libHktcXVhbGlmaWVk IG5hbWUgKGEgTGlzdCBvZiBTdHJpbmdzKTsgbXVsdGlwbGUgbmFtZXMgYXJlIGtlcHQKKyAqIGFz IGEgTGlzdCBvZiBzdWNoIHN1Yi1saXN0cywgd2hpY2ggcGFyc2UgYW5hbHlzaXMgYWNjZXB0cyBv bmx5IHdoZXJlIGEKKyAqIHBlci1jb2x1bW4gb3BlcmF0b3IgbGlzdCBpcyBtZWFuaW5nZnVsIChy b3cgYW5kIHN1YnF1ZXJ5IGNvbXBhcmlzb25zKQorICogYW5kIHJlamVjdHMgZXZlcnl3aGVyZSBl bHNlLiAgU2VlIE9wZXJhdG9yTmFtZUlzTGlzdCBpbiBwYXJzZV9vcGVyLmguCisgKi8KIHF1YWxf T3A6CU9wCiAJCQkJCXsgJCQgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcoJDEpKTsgfQotCQkJfCBP UEVSQVRPUiAnKCcgYW55X29wZXJhdG9yICcpJwotCQkJCQl7ICQkID0gJDM7IH0KKwkJCXwgT1BF UkFUT1IgJygnIGFueV9vcGVyYXRvcl9saXN0ICcpJworCQkJCQl7CisJCQkJCQkkJCA9IChsaXN0 X2xlbmd0aCgkMykgPT0gMSkgPworCQkJCQkJCShMaXN0ICopIGxpbml0aWFsKCQzKSA6ICQzOwor CQkJCQl9CiAJCTsKIAogcXVhbF9hbGxfT3A6CiAJCQlhbGxfT3AKIAkJCQkJeyAkJCA9IGxpc3Rf bWFrZTEobWFrZVN0cmluZygkMSkpOyB9Ci0JCQl8IE9QRVJBVE9SICcoJyBhbnlfb3BlcmF0b3Ig JyknCi0JCQkJCXsgJCQgPSAkMzsgfQorCQkJfCBPUEVSQVRPUiAnKCcgYW55X29wZXJhdG9yX2xp c3QgJyknCisJCQkJCXsKKwkJCQkJCSQkID0gKGxpc3RfbGVuZ3RoKCQzKSA9PSAxKSA/CisJCQkJ CQkJKExpc3QgKikgbGluaXRpYWwoJDMpIDogJDM7CisJCQkJCX0KIAkJOwogCiBzdWJxdWVyeV9P cDoKIAkJCWFsbF9PcAogCQkJCQl7ICQkID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKCQxKSk7IH0K LQkJCXwgT1BFUkFUT1IgJygnIGFueV9vcGVyYXRvciAnKScKLQkJCQkJeyAkJCA9ICQzOyB9CisJ CQl8IE9QRVJBVE9SICcoJyBhbnlfb3BlcmF0b3JfbGlzdCAnKScKKwkJCQkJeworCQkJCQkJJCQg PSAobGlzdF9sZW5ndGgoJDMpID09IDEpID8KKwkJCQkJCQkoTGlzdCAqKSBsaW5pdGlhbCgkMykg OiAkMzsKKwkJCQkJfQogCQkJfCBMSUtFCiAJCQkJCXsgJCQgPSBsaXN0X21ha2UxKG1ha2VTdHJp bmcoIn5+IikpOyB9CiAJCQl8IE5PVF9MQSBMSUtFCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfY2xhdXNlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMK aW5kZXggMTY0MjQ5MjA5OC4uOWJkZTVjM2IzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2NsYXVzZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2Uu YwpAQCAtMzY5NSw2ICszNjk1LDE1IEBAIGFkZFRhcmdldFRvU29ydExpc3QoUGFyc2VTdGF0ZSAq cHN0YXRlLCBUYXJnZXRFbnRyeSAqdGxlLAogCQkJYnJlYWs7CiAJCWNhc2UgU09SVEJZX1VTSU5H OgogCQkJQXNzZXJ0KHNvcnRieS0+dXNlT3AgIT0gTklMKTsKKworCQkJLyoKKwkJCSAqIFVTSU5H IHRha2VzIGEgc2luZ2xlIG9wZXJhdG9yOyBhIHBlci1jb2x1bW4gb3BlcmF0b3IgbGlzdCBpcwor CQkJICogb25seSBtZWFuaW5nZnVsIGluIHJvdyBhbmQgc3VicXVlcnkgY29tcGFyaXNvbnMuICBX ZSBwYXNzCisJCQkgKiBsb2NhdGlvbiAtMSBiZWNhdXNlIHRoZSBlcnJwb3NpdGlvbiBjYWxsYmFj ayBzZXQgdXAgYWJvdmUKKwkJCSAqIGFscmVhZHkgcG9pbnRzIHRoZSBlcnJvciBhdCB0aGUgb3Bl cmF0b3IuCisJCQkgKi8KKwkJCXJlamVjdF9vcGVyYXRvcl9uYW1lX2xpc3QocHN0YXRlLCBzb3J0 YnktPnVzZU9wLCAtMSk7CisKIAkJCXNvcnRvcCA9IGNvbXBhdGlibGVfb3Blcl9vcGlkKHNvcnRi eS0+dXNlT3AsCiAJCQkJCQkJCQkJICByZXN0eXBlLAogCQkJCQkJCQkJCSAgcmVzdHlwZSwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDBjNWUxYTM0ODcuLmJkMTZlNzNhODggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwpAQCAtMTAwMSw2ICsxMDAxLDEzIEBAIHRyYW5zZm9ybUFFeHByT3Ao UGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4cHIgKmEpCiAJCS8qIE9yZGluYXJ5IHNjYWxhciBvcGVy YXRvciAqLwogCQlOb2RlCSAgICpsYXN0X3NyZiA9IHBzdGF0ZS0+cF9sYXN0X3NyZjsKIAorCQkv KgorCQkgKiBBIHBlci1jb2x1bW4gb3BlcmF0b3IgbGlzdCBvbmx5IG1ha2VzIHNlbnNlIGZvciB0 aGUgcm93LWNvbXBhcmlzb24KKwkJICogY2FzZXMgYWJvdmUgKHRoaXMgYWxzbyBjb3ZlcnMgcHJl Zml4IG9wZXJhdG9ycywgd2hpY2ggY2Fycnkgbm8gcm93CisJCSAqIGNvbXBhcmlzb24gc2VtYW50 aWNzIGF0IGFsbCkuCisJCSAqLworCQlyZWplY3Rfb3BlcmF0b3JfbmFtZV9saXN0KHBzdGF0ZSwg YS0+bmFtZSwgYS0+bG9jYXRpb24pOworCiAJCWxleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2Uo cHN0YXRlLCBsZXhwcik7CiAJCXJleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBy ZXhwcik7CiAKQEAgLTEwMTgsOCArMTAyNSwxNyBAQCB0cmFuc2Zvcm1BRXhwck9wKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQV9FeHByICphKQogc3RhdGljIE5vZGUgKgogdHJhbnNmb3JtQUV4cHJPcEFu eShQYXJzZVN0YXRlICpwc3RhdGUsIEFfRXhwciAqYSkKIHsKLQlOb2RlCSAgICpsZXhwciA9IHRy YW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgYS0+bGV4cHIpOwotCU5vZGUJICAgKnJleHByID0g dHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBhLT5yZXhwcik7CisJTm9kZQkgICAqbGV4cHI7 CisJTm9kZQkgICAqcmV4cHI7CisKKwkvKgorCSAqIFRoZSBncmFtbWFyJ3Mgc3VicXVlcnlfT3Ag YWRtaXRzIGFuIG9wZXJhdG9yIGxpc3QsIGJ1dCBBTlkvQUxMIG92ZXIgYW4KKwkgKiBhcnJheSBj b21wYXJlcyB3aXRoIGEgc2luZ2xlIG9wZXJhdG9yLgorCSAqLworCXJlamVjdF9vcGVyYXRvcl9u YW1lX2xpc3QocHN0YXRlLCBhLT5uYW1lLCBhLT5sb2NhdGlvbik7CisKKwlsZXhwciA9IHRyYW5z Zm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgYS0+bGV4cHIpOworCXJleHByID0gdHJhbnNmb3JtRXhw clJlY3Vyc2UocHN0YXRlLCBhLT5yZXhwcik7CiAKIAlyZXR1cm4gKE5vZGUgKikgbWFrZV9zY2Fs YXJfYXJyYXlfb3AocHN0YXRlLAogCQkJCQkJCQkJCSBhLT5uYW1lLApAQCAtMTAzMiw4ICsxMDQ4 LDE0IEBAIHRyYW5zZm9ybUFFeHByT3BBbnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4cHIgKmEp CiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1BRXhwck9wQWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QV9FeHByICphKQogewotCU5vZGUJICAgKmxleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0 YXRlLCBhLT5sZXhwcik7Ci0JTm9kZQkgICAqcmV4cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShw c3RhdGUsIGEtPnJleHByKTsKKwlOb2RlCSAgICpsZXhwcjsKKwlOb2RlCSAgICpyZXhwcjsKKwor CS8qIEFzIGluIHRyYW5zZm9ybUFFeHByT3BBbnkgKi8KKwlyZWplY3Rfb3BlcmF0b3JfbmFtZV9s aXN0KHBzdGF0ZSwgYS0+bmFtZSwgYS0+bG9jYXRpb24pOworCisJbGV4cHIgPSB0cmFuc2Zvcm1F eHByUmVjdXJzZShwc3RhdGUsIGEtPmxleHByKTsKKwlyZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1 cnNlKHBzdGF0ZSwgYS0+cmV4cHIpOwogCiAJcmV0dXJuIChOb2RlICopIG1ha2Vfc2NhbGFyX2Fy cmF5X29wKHBzdGF0ZSwKIAkJCQkJCQkJCQkgYS0+bmFtZSwKQEAgLTEwNTAsNiArMTA3MiwxMyBA QCB0cmFuc2Zvcm1BRXhwckRpc3RpbmN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9FeHByICphKQog CU5vZGUJICAgKnJleHByID0gYS0+cmV4cHI7CiAJTm9kZQkgICAqcmVzdWx0OwogCisJLyoKKwkg KiBJUyBbTk9UXSBESVNUSU5DVCBGUk9NIHRha2VzIGEgc2luZ2xlIG9wZXJhdG9yIGV2ZW4gaW4g dGhlIHJvdyBjYXNlOworCSAqIGl0cyBPUEVSQVRPUigpIGRlY29yYXRpb24gaXMgZ3JhbW1hdGlj YWxseSByZXN0cmljdGVkIHRvIG9uZSBuYW1lLCBzbworCSAqIHRoaXMgaXMgbWVyZWx5IGRlZmVu c2l2ZS4KKwkgKi8KKwlyZWplY3Rfb3BlcmF0b3JfbmFtZV9saXN0KHBzdGF0ZSwgYS0+bmFtZSwg YS0+bG9jYXRpb24pOworCiAJLyoKIAkgKiBJZiBlaXRoZXIgaW5wdXQgaXMgYW4gdW5kZWNvcmF0 ZWQgTlVMTCBsaXRlcmFsLCB0cmFuc2Zvcm0gdG8gYSBOdWxsVGVzdAogCSAqIG9uIHRoZSBvdGhl ciBpbnB1dC4gVGhhdCdzIHNpbXBsZXIgdG8gcHJvY2VzcyB0aGFuIGEgZnVsbCBEaXN0aW5jdEV4 cHIsCkBAIC0xMTA0LDEwICsxMTMzLDE5IEBAIHRyYW5zZm9ybUFFeHByRGlzdGluY3QoUGFyc2VT dGF0ZSAqcHN0YXRlLCBBX0V4cHIgKmEpCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1BRXhwck51 bGxJZihQYXJzZVN0YXRlICpwc3RhdGUsIEFfRXhwciAqYSkKIHsKLQlOb2RlCSAgICpsZXhwciA9 IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgYS0+bGV4cHIpOwotCU5vZGUJICAgKnJleHBy ID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBhLT5yZXhwcik7CisJTm9kZQkgICAqbGV4 cHI7CisJTm9kZQkgICAqcmV4cHI7CiAJT3BFeHByCSAgICpyZXN1bHQ7CiAKKwkvKgorCSAqIE5V TExJRiB0YWtlcyBhIHNpbmdsZSBvcGVyYXRvcjsgaXRzIE9QRVJBVE9SKCkgZGVjb3JhdGlvbiBp cworCSAqIGdyYW1tYXRpY2FsbHkgcmVzdHJpY3RlZCB0byBvbmUgbmFtZSwgc28gdGhpcyBpcyBt ZXJlbHkgZGVmZW5zaXZlLgorCSAqLworCXJlamVjdF9vcGVyYXRvcl9uYW1lX2xpc3QocHN0YXRl LCBhLT5uYW1lLCBhLT5sb2NhdGlvbik7CisKKwlsZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNl KHBzdGF0ZSwgYS0+bGV4cHIpOworCXJleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRl LCBhLT5yZXhwcik7CisKIAlyZXN1bHQgPSAoT3BFeHByICopIG1ha2Vfb3AocHN0YXRlLAogCQkJ CQkJCQlhLT5uYW1lLAogCQkJCQkJCQlsZXhwciwKQEAgLTExNTYsNiArMTE5NCwxNCBAQCB0cmFu c2Zvcm1BRXhwckluKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9FeHByICphKQogCUxpc3RDZWxsICAg Kmw7CiAJYm9vbAkJaGFzX3J2YXJzID0gZmFsc2U7CiAKKwkvKgorCSAqIElOIGFsd2F5cyBjb21w YXJlcyB3aXRoIHRoZSBpbXBsaWNpdCAiPSIgKG9yICI8PiIgZm9yIE5PVCBJTik7IHRoZXJlIGlz CisJICogbm8gT1BFUkFUT1IoKSBkZWNvcmF0aW9uIGZvciBpdCBpbiB0aGUgZ3JhbW1hciwgc28g YW4gb3BlcmF0b3IgbGlzdAorCSAqIGNhbm5vdCBhcHBlYXIgaGVyZSAobm90IGV2ZW4gZm9yIHJv dy12YWx1ZWQgSU4gbGlzdHMpLiAgVGhpcyBpcyBtZXJlbHkKKwkgKiBkZWZlbnNpdmUsIGFuZCBh bHNvIHByb3RlY3RzIHRoZSBzdHJWYWwoKSBqdXN0IGJlbG93LgorCSAqLworCXJlamVjdF9vcGVy YXRvcl9uYW1lX2xpc3QocHN0YXRlLCBhLT5uYW1lLCBhLT5sb2NhdGlvbik7CisKIAkvKgogCSAq IElmIHRoZSBvcGVyYXRvciBpcyA8PiwgY29tYmluZSB3aXRoIEFORCBub3QgT1IuCiAJICovCkBA IC0xOTc0LDYgKzIwMjAsMTcgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUs IFN1YkxpbmsgKnN1YmxpbmspCiAJCUxpc3QJICAgKnJpZ2h0X2xpc3Q7CiAJCUxpc3RDZWxsICAg Kmw7CiAKKwkJLyoKKwkJICogVEVNUE9SQVJZOiByZWplY3QgYSBwZXItY29sdW1uIG9wZXJhdG9y IGxpc3QgaGVyZS4gIEEgbGF0ZXIgcGF0Y2gKKwkJICogdGVhY2hlcyB0aGlzIHBhdGggKGFuZCBy dWxldXRpbHMuYykgdG8gYXBwbHkgdGhlIG4ndGggbmFtZSB0byB0aGUKKwkJICogbid0aCBjb2x1 bW4sIGF0IHdoaWNoIHBvaW50IHRoaXMgY2hlY2sgZ29lcyBhd2F5LiAgTm90ZSB0aGlzIGFsc28K KwkJICogY2F0Y2hlcyBsaXN0cyBhcnJpdmluZyB2aWEgdHJhbnNmb3JtQUV4cHJPcCdzIGNvbnZl cnNpb24gb2YgInJvdyBvcAorCQkgKiAoc3Vic2VsZWN0KSIgdG8gYSBST1dDT01QQVJFIHN1Ymxp bmssIHdoaWNoIHBhc3NlcyB0aGUgQV9FeHByJ3MKKwkJICogbmFtZSB0aHJvdWdoIG9wZXJOYW1l LgorCQkgKi8KKwkJcmVqZWN0X29wZXJhdG9yX25hbWVfbGlzdChwc3RhdGUsIHN1YmxpbmstPm9w ZXJOYW1lLAorCQkJCQkJCQkgIHN1YmxpbmstPmxvY2F0aW9uKTsKKwogCQkvKgogCQkgKiBJZiB0 aGUgc291cmNlIHdhcyAieCBJTiAoc2VsZWN0KSIsIGNvbnZlcnQgdG8gInggPSBBTlkgKHNlbGVj dCkiLgogCQkgKi8KQEAgLTI4NTgsNiArMjkxNSwxMCBAQCB0cmFuc2Zvcm1Db2xsYXRlQ2xhdXNl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sbGF0ZUNsYXVzZSAqYykKICAqIEFzIHdpdGggY29lcmNl X3R5cGUsIHBzdGF0ZSBtYXkgYmUgTlVMTCBpZiBubyBzcGVjaWFsIHVua25vd24tUGFyYW0KICAq IHByb2Nlc3NpbmcgaXMgd2FudGVkLgogICoKKyAqIG9wbmFtZSBpcyBlaXRoZXIgYSBzaW5nbGUg cG9zc2libHktcXVhbGlmaWVkIG9wZXJhdG9yIG5hbWUsIGFwcGxpZWQgdG8KKyAqIGV2ZXJ5IGNv bHVtbiBwYWlyLCBvciBhIGxpc3Qgb2Ygc3VjaCBuYW1lcywgb25lIHBlciBjb2x1bW4gcGFpciAo c2VlCisgKiBPcGVyYXRvck5hbWVJc0xpc3QpLgorICoKICAqIFRoZSBvdXRwdXQgbWF5IGJlIGEg c2luZ2xlIE9wRXhwciwgYW4gQU5EIG9yIE9SIGNvbWJpbmF0aW9uIG9mIE9wRXhwcnMsCiAgKiBv ciBhIFJvd0NvbXBhcmVFeHByLiAgSW4gYWxsIGNhc2VzIGl0IGlzIGd1YXJhbnRlZWQgdG8gcmV0 dXJuIGJvb2xlYW4uCiAgKiBUaGUgQU5ELCBPUiwgYW5kIFJvd0NvbXBhcmVFeHByIGNhc2VzIGZ1 cnRoZXIgaW1wbHkgdGhpbmdzIGFib3V0IHRoZQpAQCAtMjg3Niw4ICsyOTM3LDEwIEBAIG1ha2Vf cm93X2NvbXBhcmlzb25fb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCiAJCQkg ICAqcjsKIAlMaXN0CSAgKipvcGluZm9fbGlzdHM7CiAJQml0bWFwc2V0ICAqY21wdHlwZXM7CisJ Ym9vbAkJbXVsdGkgPSBPcGVyYXRvck5hbWVJc0xpc3Qob3BuYW1lKTsKIAlpbnQJCQlub3BlcnM7 CiAJaW50CQkJaTsKKwlpbnQJCQliYWRwb3M7CiAKIAlub3BlcnMgPSBsaXN0X2xlbmd0aChsYXJn cyk7CiAJaWYgKG5vcGVycyAhPSBsaXN0X2xlbmd0aChyYXJncykpCkBAIC0yODk2LDE4ICsyOTU5 LDM0IEBAIG1ha2Vfcm93X2NvbXBhcmlzb25fb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpv cG5hbWUsCiAJCQkJIGVycm1zZygiY2Fubm90IGNvbXBhcmUgcm93cyBvZiB6ZXJvIGxlbmd0aCIp LAogCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKIAorCS8qCisJ ICogQSBwZXItY29sdW1uIG9wZXJhdG9yIGxpc3QgbXVzdCBzdXBwbHkgZXhhY3RseSBvbmUgb3Bl cmF0b3IgcGVyIGNvbHVtbi4KKwkgKi8KKwlpZiAobXVsdGkgJiYgbGlzdF9sZW5ndGgob3BuYW1l KSAhPSBub3BlcnMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCSBlcnJtc2coIm51bWJlciBvZiBvcGVyYXRvcnMgKCVkKSBkb2VzIG5v dCBtYXRjaCBudW1iZXIgb2YgY29sdW1ucyAoJWQpIiwKKwkJCQkJCWxpc3RfbGVuZ3RoKG9wbmFt ZSksIG5vcGVycyksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkp OworCiAJLyoKIAkgKiBJZGVudGlmeSBhbGwgdGhlIHBhaXJ3aXNlIG9wZXJhdG9ycywgdXNpbmcg bWFrZV9vcCBzbyB0aGF0IGJlaGF2aW9yIGlzCiAJICogdGhlIHNhbWUgYXMgaW4gdGhlIHNpbXBs ZSBzY2FsYXIgY2FzZS4KIAkgKi8KIAlvcGV4cHJzID0gTklMOworCWkgPSAwOwogCWZvcmJvdGgo bCwgbGFyZ3MsIHIsIHJhcmdzKQogCXsKIAkJTm9kZQkgICAqbGFyZyA9IChOb2RlICopIGxmaXJz dChsKTsKIAkJTm9kZQkgICAqcmFyZyA9IChOb2RlICopIGxmaXJzdChyKTsKKwkJTGlzdAkgICAq dGhpc19vcG5hbWU7CiAJCU9wRXhwcgkgICAqY21wOwogCi0JCWNtcCA9IGNhc3ROb2RlKE9wRXhw ciwgbWFrZV9vcChwc3RhdGUsIG9wbmFtZSwgbGFyZywgcmFyZywKKwkJLyogV2l0aCBhbiBvcGVy YXRvciBsaXN0LCB0aGUgbid0aCBuYW1lIGNvbXBhcmVzIHRoZSBuJ3RoIGNvbHVtbiAqLworCQl0 aGlzX29wbmFtZSA9IG11bHRpID8gKExpc3QgKikgbGlzdF9udGgob3BuYW1lLCBpKSA6IG9wbmFt ZTsKKwkJaSsrOworCisJCWNtcCA9IGNhc3ROb2RlKE9wRXhwciwgbWFrZV9vcChwc3RhdGUsIHRo aXNfb3BuYW1lLCBsYXJnLCByYXJnLAogCQkJCQkJCQkJICAgcHN0YXRlLT5wX2xhc3Rfc3JmLCBs b2NhdGlvbikpOwogCiAJCS8qCkBAIC0yOTQ3LDYgKzMwMjYsNyBAQCBtYWtlX3Jvd19jb21wYXJp c29uX29wKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLAogCW9waW5mb19saXN0cyA9 IHBhbGxvY19hcnJheShMaXN0ICosIG5vcGVycyk7CiAJY21wdHlwZXMgPSBOVUxMOwogCWkgPSAw OworCWJhZHBvcyA9IC0xOwogCWZvcmVhY2gobCwgb3BleHBycykKIAl7CiAJCU9pZAkJCW9wbm8g PSAoKE9wRXhwciAqKSBsZmlyc3QobCkpLT5vcG5vOwpAQCAtMjk3MCw2ICszMDUwLDE0IEBAIG1h a2Vfcm93X2NvbXBhcmlzb25fb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCiAJ CQljbXB0eXBlcyA9IHRoaXNfY21wdHlwZXM7CiAJCWVsc2UKIAkJCWNtcHR5cGVzID0gYm1zX2lu dF9tZW1iZXJzKGNtcHR5cGVzLCB0aGlzX2NtcHR5cGVzKTsKKworCQkvKgorCQkgKiBSZW1lbWJl ciB0aGUgZmlyc3QgY29sdW1uIGF0IHdoaWNoIHRoZSBydW5uaW5nIGludGVyc2VjdGlvbiB3ZW50 CisJCSAqIGVtcHR5OyBpZiB3ZSBmYWlsIGJlbG93LCB0aGF0IGNvbHVtbidzIG9wZXJhdG9yIGlz IHRoZSBvbmUgdG8KKwkJICogY29tcGxhaW4gYWJvdXQuCisJCSAqLworCQlpZiAoYmFkcG9zIDwg MCAmJiBibXNfaXNfZW1wdHkoY21wdHlwZXMpKQorCQkJYmFkcG9zID0gaTsKIAkJaSsrOwogCX0K IApAQCAtMjk4MSwxMSArMzA2OSwxNSBAQCBtYWtlX3Jvd19jb21wYXJpc29uX29wKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLAogCWkgPSBibXNfbmV4dF9tZW1iZXIoY21wdHlwZXMs IC0xKTsKIAlpZiAoaSA8IDApCiAJeworCQlMaXN0CSAgICpiYWRfb3BuYW1lOworCiAJCS8qIE5v IGNvbW1vbiBpbnRlcnByZXRhdGlvbiwgc28gZmFpbCAqLworCQlBc3NlcnQoIW11bHRpIHx8IGJh ZHBvcyA+PSAwKTsKKwkJYmFkX29wbmFtZSA9IG11bHRpID8gKExpc3QgKikgbGlzdF9udGgob3Bu YW1lLCBiYWRwb3MpIDogb3BuYW1lOwogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0 ZXJtaW5lIGludGVycHJldGF0aW9uIG9mIHJvdyBjb21wYXJpc29uIG9wZXJhdG9yICVzIiwKLQkJ CQkJCXN0clZhbChsbGFzdChvcG5hbWUpKSksCisJCQkJCQlzdHJWYWwobGxhc3QoYmFkX29wbmFt ZSkpKSwKIAkJCQkgZXJyaGludCgiUm93IGNvbXBhcmlzb24gb3BlcmF0b3JzIG11c3QgYmUgYXNz b2NpYXRlZCB3aXRoIGJ0cmVlIG9wZXJhdG9yIGZhbWlsaWVzLiIpLAogCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKIAl9CkBAIC0zMDIzLDEyICszMTE1LDE3IEBA IG1ha2Vfcm93X2NvbXBhcmlzb25fb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUs CiAJCWlmIChPaWRJc1ZhbGlkKG9wZmFtaWx5KSkKIAkJCW9wZmFtaWxpZXMgPSBsYXBwZW5kX29p ZChvcGZhbWlsaWVzLCBvcGZhbWlseSk7CiAJCWVsc2UJCQkJCS8qIHNob3VsZCBub3QgaGFwcGVu ICovCisJCXsKKwkJCUxpc3QJICAgKnRoaXNfb3BuYW1lOworCisJCQl0aGlzX29wbmFtZSA9IG11 bHRpID8gKExpc3QgKikgbGlzdF9udGgob3BuYW1lLCBpKSA6IG9wbmFtZTsKIAkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJ CQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSBpbnRlcnByZXRhdGlvbiBvZiByb3cgY29t cGFyaXNvbiBvcGVyYXRvciAlcyIsCi0JCQkJCQkJc3RyVmFsKGxsYXN0KG9wbmFtZSkpKSwKKwkJ CQkJCQlzdHJWYWwobGxhc3QodGhpc19vcG5hbWUpKSksCiAJCQkJCSBlcnJkZXRhaWwoIlRoZXJl IGFyZSBtdWx0aXBsZSBlcXVhbGx5LXBsYXVzaWJsZSBjYW5kaWRhdGVzLiIpLAogCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJCX0KIAl9CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9vcGVyLmMKaW5kZXggYTdlNWM2ODYzNi4uYTYyNmExYmViNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2Vfb3Blci5jCkBAIC04NCw2ICs4NCwyOCBAQCBzdGF0aWMgdm9pZCBJbnZhbGlkYXRl T3ByQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZWlkLAog CQkJCQkJCQkJICAgdWludDMyIGhhc2h2YWx1ZSk7CiAKIAorLyoKKyAqIHJlamVjdF9vcGVyYXRv cl9uYW1lX2xpc3QKKyAqCQlSZWplY3QgYSBwZXItY29sdW1uIG9wZXJhdG9yIG5hbWUgbGlzdCB3 aGVyZSBvbmx5IGEgc2luZ2xlIG5hbWUgaXMKKyAqCQltZWFuaW5nZnVsLgorICoKKyAqIFRoZSBn cmFtbWFyJ3MgT1BFUkFUT1IoKSBkZWNvcmF0aW9uIGFjY2VwdHMgYSBjb21tYS1zZXBhcmF0ZWQg bGlzdCBvZgorICogb3BlcmF0b3IgbmFtZXMsIGJ1dCBhIHBlci1jb2x1bW4gbGlzdCAoc2VlIE9w ZXJhdG9yTmFtZUlzTGlzdCkgaXMgb25seQorICogbWVhbmluZ2Z1bCBmb3Igcm93IGFuZCBzdWJx dWVyeSBjb21wYXJpc29ucy4gIEV2ZXJ5IG90aGVyIGNvbnN1bWVyIG9mIGFuCisgKiBvcGVyYXRv ciBuYW1lIGV4cGVjdHMgdGhlIHRyYWRpdGlvbmFsIHNpbmdsZSAocG9zc2libHktcXVhbGlmaWVk KSBuYW1lIGFuZAorICogbXVzdCBjYWxsIHRoaXMgYmVmb3JlIHJlc29sdmluZyBpdC4gIHBzdGF0 ZSBhbmQgbG9jYXRpb24gYXJlIHVzZWQgb25seSB0bworICogcmVwb3J0IHRoZSBlcnJvciBwb3Np dGlvbjsgcGFzcyBOVUxMLy0xIGlmIG5vdCBhdmFpbGFibGUuCisgKi8KK3ZvaWQKK3JlamVjdF9v cGVyYXRvcl9uYW1lX2xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsIGludCBs b2NhdGlvbikKK3sKKwlpZiAoT3BlcmF0b3JOYW1lSXNMaXN0KG9wbmFtZSkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2co ImEgbGlzdCBvZiBvcGVyYXRvcnMgaXMgb25seSBhbGxvd2VkIGluIHJvdyBhbmQgc3VicXVlcnkg Y29tcGFyaXNvbnMiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24p KSk7Cit9CisKIC8qCiAgKiBMb29rdXBPcGVyTmFtZQogICoJCUdpdmVuIGEgcG9zc2libHktcXVh bGlmaWVkIG9wZXJhdG9yIG5hbWUgYW5kIGV4YWN0IGlucHV0IGRhdGF0eXBlcywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYwppbmRleCBkYjE1NGExZjYzLi43Y2NhMTViYmI1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMDU3Niw2ICsxMDU3NiwxMyBAQCBnZXRfcnVsZV9leHBy KE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJY2FzZSBUX1Jvd0NvbXBh cmVFeHByOgogCQkJewogCQkJCVJvd0NvbXBhcmVFeHByICpyY2V4cHIgPSAoUm93Q29tcGFyZUV4 cHIgKikgbm9kZTsKKwkJCQlMaXN0Q2VsbCAgICpvcG5vX2NlbGw7CisJCQkJTGlzdENlbGwgICAq bGFyZ19jZWxsOworCQkJCUxpc3RDZWxsICAgKnJhcmdfY2VsbDsKKwkJCQlMaXN0CSAgICpvcG5h bWVzID0gTklMOworCQkJCWJvb2wJCW5lZWRfb3BfbGlzdCA9IGZhbHNlOworCQkJCWJvb2wJCWFs bF9zYW1lID0gdHJ1ZTsKKwkJCQljaGFyCSAgICpmaXJzdG5hbWUgPSBOVUxMOwogCiAJCQkJLyoK IAkJCQkgKiBTUUw5OSBhbGxvd3MgIlJPVyIgdG8gYmUgb21pdHRlZCB3aGVuIHRoZXJlIGlzIG1v cmUgdGhhbgpAQCAtMTA1ODUsMTggKzEwNTkyLDU5IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9k ZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCSAqLwogCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiKFJPVygiKTsKIAkJCQlnZXRfcnVsZV9saXN0X3RvcGxldmVsKHJjZXhw ci0+bGFyZ3MsIGNvbnRleHQsIHRydWUpOworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LCAiKSAiKTsKIAogCQkJCS8qCi0JCQkJICogV2UgYXNzdW1lIHRoYXQgdGhlIG5hbWUgb2YgdGhl IGZpcnN0LWNvbHVtbiBvcGVyYXRvciB3aWxsCi0JCQkJICogZG8gZm9yIGFsbCB0aGUgcmVzdCB0 b28uICBUaGlzIGlzIGRlZmluaXRlbHkgb3BlbiB0bwotCQkJCSAqIGZhaWx1cmUsIGVnIGlmIHNv bWUgYnV0IG5vdCBhbGwgb3BlcmF0b3JzIHdlcmUgcmVuYW1lZAotCQkJCSAqIHNpbmNlIHRoZSBj b25zdHJ1Y3Qgd2FzIHBhcnNlZCwgYnV0IHRoZXJlIHNlZW1zIG5vIHdheSB0bwotCQkJCSAqIGJl IHBlcmZlY3QuCisJCQkJICogVGhlIHVuZGVjb3JhdGVkIHN5bnRheCBST1coLi4uKSBvcCBST1co Li4uKSByZXBhcnNlcyBieQorCQkJCSAqIHJlc29sdmluZyBvbmUgd3JpdHRlbiBvcGVyYXRvciBu YW1lIGZvciBldmVyeSBjb2x1bW4gcGFpciwKKwkJCQkgKiBzbyBpdCBpcyBob25lc3Qgb25seSB3 aGVuIGEgc2luZ2xlIGJhcmUgbmFtZSByZWNvdmVycyBlYWNoCisJCQkJICogY29sdW1uJ3Mgb3Bl cmF0b3I6IG5vIGNvbHVtbiBuZWVkcyBzY2hlbWEtcXVhbGlmaWNhdGlvbiBhbmQKKwkJCQkgKiBl dmVyeSBjb2x1bW4gc2hhcmVzIHRoZSBzYW1lIG9wZXJhdG9yIG5hbWUuICBXaGVuIHRoYXQKKwkJ CQkgKiBob2xkcyB3ZSBwcmludCB0aGF0IHNoYXJlZCBuYW1lLCBleGFjdGx5IGFzIGJlZm9yZS4K KwkJCQkgKiBPdGhlcndpc2Ugd2UgZW1pdCB0aGUgZXhwbGljaXQgcGVyLWNvbHVtbiBvcGVyYXRv ciBsaXN0CisJCQkJICogUk9XKC4uLikgT1BFUkFUT1Iob3AxLCBvcDIsIC4uLikgUk9XKC4uLiks IHdoaWNoIHBpbnMgZWFjaAorCQkJCSAqIGNvbHVtbidzIG9wZXJhdG9yIGluZGVwZW5kZW50bHkg cmF0aGVyIHRoYW4gc2lsZW50bHkKKwkJCQkgKiBsZXR0aW5nIG9uZSBuYW1lIChtaXMpcmVzb2x2 ZSB0aGUgcmVzdC4KIAkJCQkgKi8KLQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIikgJXMgUk9X KCIsCi0JCQkJCQkJCSBnZW5lcmF0ZV9vcGVyYXRvcl9uYW1lKGxpbml0aWFsX29pZChyY2V4cHIt Pm9wbm9zKSwKLQkJCQkJCQkJCQkJCQkJZXhwclR5cGUobGluaXRpYWwocmNleHByLT5sYXJncykp LAotCQkJCQkJCQkJCQkJCQlleHByVHlwZShsaW5pdGlhbChyY2V4cHItPnJhcmdzKSkpKTsKKwkJ CQlmb3J0aHJlZShvcG5vX2NlbGwsIHJjZXhwci0+b3Bub3MsCisJCQkJCQkgbGFyZ19jZWxsLCBy Y2V4cHItPmxhcmdzLAorCQkJCQkJIHJhcmdfY2VsbCwgcmNleHByLT5yYXJncykKKwkJCQl7CisJ CQkJCWJvb2wJCW5lZWRzX3F1YWw7CisJCQkJCWNoYXIJICAgKm9wbmFtZTsKKworCQkJCQlvcG5h bWUgPSBnZW5lcmF0ZV9vcGVyYXRvcl9uYW1lX2V4dGVuZGVkKGxmaXJzdF9vaWQob3Bub19jZWxs KSwKKwkJCQkJCQkJCQkJCQkJCSBleHByVHlwZSgoTm9kZSAqKSBsZmlyc3QobGFyZ19jZWxsKSks CisJCQkJCQkJCQkJCQkJCQkgZXhwclR5cGUoKE5vZGUgKikgbGZpcnN0KHJhcmdfY2VsbCkpLAor CQkJCQkJCQkJCQkJCQkJICZuZWVkc19xdWFsKTsKKwkJCQkJb3BuYW1lcyA9IGxhcHBlbmQob3Bu YW1lcywgb3BuYW1lKTsKKwkJCQkJaWYgKG5lZWRzX3F1YWwpCisJCQkJCQluZWVkX29wX2xpc3Qg PSB0cnVlOworCQkJCQlpZiAoZmlyc3RuYW1lID09IE5VTEwpCisJCQkJCQlmaXJzdG5hbWUgPSBv cG5hbWU7CisJCQkJCWVsc2UgaWYgKHN0cmNtcChmaXJzdG5hbWUsIG9wbmFtZSkgIT0gMCkKKwkJ CQkJCWFsbF9zYW1lID0gZmFsc2U7CisJCQkJfQorCisJCQkJaWYgKG5lZWRfb3BfbGlzdCB8fCAh YWxsX3NhbWUpCisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJYm9vbAkJZmlyc3Qg PSB0cnVlOworCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiT1BFUkFUT1IoIik7 CisJCQkJCWZvcmVhY2gobGMsIG9wbmFtZXMpCisJCQkJCXsKKwkJCQkJCWlmIChmaXJzdCkKKwkJ CQkJCQlmaXJzdCA9IGZhbHNlOworCQkJCQkJZWxzZQorCQkJCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoYnVmLCAiLCAiKTsKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAoY2hh ciAqKSBsZmlyc3QobGMpKTsKKwkJCQkJfQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgIikgUk9XKCIpOworCQkJCX0KKwkJCQllbHNlCisJCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAiJXMgUk9XKCIsIGZpcnN0bmFtZSk7CisKIAkJCQlnZXRfcnVsZV9saXN0X3RvcGxldmVsKHJj ZXhwci0+cmFyZ3MsIGNvbnRleHQsIHRydWUpOwogCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco YnVmLCAiKSkiKTsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9v cGVyLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfb3Blci5oCmluZGV4IDk3ZjZhYTEzOWMu LjUzYjZjY2NiNTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9vcGVyLmgK KysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX29wZXIuaApAQCAtMjEsNiArMjEsMjYgQEAK IAogdHlwZWRlZiBIZWFwVHVwbGUgT3BlcmF0b3I7CiAKKy8qCisgKiBBbiBvcGVyYXRvciBuYW1l IExpc3QgYXMgcHJvZHVjZWQgYnkgdGhlIGdyYW1tYXIncyBPUEVSQVRPUigpIGRlY29yYXRpb24K KyAqIGlzIEVJVEhFUiBhIHNpbmdsZSBwb3NzaWJseS1xdWFsaWZpZWQgb3BlcmF0b3IgbmFtZSAo YSBMaXN0IG9mIFN0cmluZ3MsCisgKiB0aGUgdHJhZGl0aW9uYWwgc2hhcGUpIE9SIGEgbGlzdCBv ZiBzdWNoIG5hbWVzLCBvbmUgcGVyIGNvbHVtbiBvZiBhIHJvdworICogb3Igc3VicXVlcnkgY29t cGFyaXNvbiAoYSBMaXN0IG9mIHN1Y2ggc3ViLWxpc3RzKS4KKyAqCisgKiBEb2VzIHRoaXMgb3Bl cmF0b3IgbmFtZSBMaXN0IGNhcnJ5IG11bHRpcGxlIHBlci1jb2x1bW4gbmFtZXM/CisgKi8KKyNk ZWZpbmUgT3BlcmF0b3JOYW1lSXNMaXN0KG9wbmFtZSkgXAorCSgob3BuYW1lKSAhPSBOSUwgJiYg SXNBKGxpbml0aWFsKChMaXN0ICopIChvcG5hbWUpKSwgTGlzdCkpCisKKy8qCisgKiBSZWplY3Qg YSBwZXItY29sdW1uIG9wZXJhdG9yIG5hbWUgbGlzdCAoc2VlIE9wZXJhdG9yTmFtZUlzTGlzdCkg d2hlcmUgb25seSBhCisgKiBzaW5nbGUgb3BlcmF0b3IgbmFtZSBpcyBtZWFuaW5nZnVsLiAgUGFz cyBhIFBhcnNlU3RhdGUgYW5kIGxvY2F0aW9uIHdoZXJlCisgKiBhdmFpbGFibGUgc28gdGhlIGVy cm9yIGNhbiBwb2ludCBhdCB0aGUgb2ZmZW5kaW5nIGRlY29yYXRpb247IGNhbGxlcnMgd2l0aAor ICogbmVpdGhlciAoZS5nLiBEREwgZGVmaW5pdGlvbiBpdGVtcykgcGFzcyBOVUxMIGFuZCAtMS4K KyAqLworZXh0ZXJuIHZvaWQgcmVqZWN0X29wZXJhdG9yX25hbWVfbGlzdChQYXJzZVN0YXRlICpw c3RhdGUsIExpc3QgKm9wbmFtZSwKKwkJCQkJCQkJCSAgaW50IGxvY2F0aW9uKTsKKwogLyogUm91 dGluZXMgdG8gbG9vayB1cCBhbiBvcGVyYXRvciBnaXZlbiBuYW1lIGFuZCBleGFjdCBpbnB1dCB0 eXBlKHMpICovCiBleHRlcm4gT2lkCUxvb2t1cE9wZXJOYW1lKFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqb3Blcm5hbWUsCiAJCQkJCQkgICBPaWQgb3BybGVmdCwgT2lkIG9wcnJpZ2h0LApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcGVyYXRvcl9xdWFsaWZ5Lm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3BlcmF0b3JfcXVhbGlmeS5vdXQKaW5kZXggNGZh OGRmNjJjNC4uZjZkNzBlODg2ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vcGVyYXRvcl9xdWFsaWZ5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29w ZXJhdG9yX3F1YWxpZnkub3V0CkBAIC0zNDUsMyArMzQ1LDE1OSBAQCBPUkRFUiBCWSAxOwogCiBE Uk9QIFZJRVcgb3Ffdl91c2luZ19yZWxvYWQsIG9xX3ZfbmF0dXJhbF9yZWxvYWQsIG9xX3ZfdXNp bmdfbWl4ZWRfcmVsb2FkLAogICAgICAgICAgIG9xX3ZfdXNpbmdfbHRfcmVsb2FkOworLS0KKy0t IFJvdy1jb21wYXJpc29uIG9wZXJhdG9yIGxpc3RzOiB0aGUgT1BFUkFUT1IoKSBkZWNvcmF0aW9u IG1heSBjYXJyeSBhCistLSBjb21tYS1zZXBhcmF0ZWQgTElTVCBvZiBvcGVyYXRvcnMsIG9uZSBw ZXIgY29sdW1uIG9mIHRoZSBjb21wYXJlZCByb3dzLgorLS0KKy0tIG1ha2Vfcm93X2NvbXBhcmlz b25fb3AgaW50ZXJzZWN0cyB0aGUgcGVyLWNvbHVtbiBvcGVyYXRvcnMnIGJ0cmVlIG9wZmFtaWx5 CistLSBpbnRlcnByZXRhdGlvbnMsIHNvIGEgYmFyZSAiPCIgd2l0aCBubyBvcGVyYXRvciBjbGFz cyBmYWlscyBvdXRyaWdodCB3aXRoCistLSAiY291bGQgbm90IGRldGVybWluZSBpbnRlcnByZXRh dGlvbiBvZiByb3cgY29tcGFyaXNvbiBvcGVyYXRvciIuICBBIGJ0cmVlCistLSBvcGVyYXRvciBj bGFzcyBvdmVyIGludDQgaXMgdGhlcmVmb3JlIHJlcXVpcmVkLiAgYWx0X29wcy49IGFscmVhZHkg ZXhpc3RzCistLSBhYm92ZTsgYWRkIHRoZSByZXN0IG9mIHRoZSBzdHJhdGVneSBzZXQgYW5kIHdy YXAgdGhlbSBpbiBhIGNsYXNzLgorQ1JFQVRFIE9QRVJBVE9SIGFsdF9vcHMuPCAobGVmdGFyZyA9 IGludDQsIHJpZ2h0YXJnID0gaW50NCwgcHJvY2VkdXJlID0gaW50NGx0KTsKK0NSRUFURSBPUEVS QVRPUiBhbHRfb3BzLjw9IChsZWZ0YXJnID0gaW50NCwgcmlnaHRhcmcgPSBpbnQ0LCBwcm9jZWR1 cmUgPSBpbnQ0bGUpOworQ1JFQVRFIE9QRVJBVE9SIGFsdF9vcHMuPiAobGVmdGFyZyA9IGludDQs IHJpZ2h0YXJnID0gaW50NCwgcHJvY2VkdXJlID0gaW50NGd0KTsKK0NSRUFURSBPUEVSQVRPUiBh bHRfb3BzLj49IChsZWZ0YXJnID0gaW50NCwgcmlnaHRhcmcgPSBpbnQ0LCBwcm9jZWR1cmUgPSBp bnQ0Z2UpOworQ1JFQVRFIE9QRVJBVE9SIENMQVNTIGFsdF9vcHMuaW50NF9hbHRfb3BzIEZPUiBU WVBFIGludDQgVVNJTkcgYnRyZWUgQVMKKyAgICBPUEVSQVRPUiAxIGFsdF9vcHMuPCwKKyAgICBP UEVSQVRPUiAyIGFsdF9vcHMuPD0sCisgICAgT1BFUkFUT1IgMyBhbHRfb3BzLj0sCisgICAgT1BF UkFUT1IgNCBhbHRfb3BzLj49LAorICAgIE9QRVJBVE9SIDUgYWx0X29wcy4+LAorICAgIEZVTkNU SU9OIDEgYnRpbnQ0Y21wKGludDQsIGludDQpOworLS0gVmlldyBidWlsdCB3aGlsZSBhbHRfb3Bz IHNoYWRvd3MgcGdfY2F0YWxvZzogdGhlIHJvdyBjb21wYXJpc29uIHJlc29sdmVzIHRvCistLSBh bHRfb3BzLjwgZm9yIGJvdGggY29sdW1ucy4KK1NFVCBzZWFyY2hfcGF0aCA9IGFsdF9vcHMsIHBn X2NhdGFsb2c7CitDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9yb3djbXAgQVMKKyAgU0VMRUNUIFJP VyhhLCBiKSA8IFJPVyhiLCBhKSBBUyByIEZST00gcHVibGljLm9xX3Q7CitSRVNFVCBzZWFyY2hf cGF0aDsKKy0tIE9mZiB0aGUgcGF0aCwgYm90aCBjb2x1bW4gb3BlcmF0b3JzIG11c3QgYmUgcXVh bGlmaWVkOiB0aGUgZGVjb3JhdGlvbiBpcyBhCistLSBMSVNULCBvbmUgb3BlcmF0b3IgcGVyIGNv bHVtbiAoUk9XKC4uLikgT1BFUkFUT1IoYWx0X29wcy48LCBhbHRfb3BzLjwpIFJPVyguLi4pKS4K K1NFTEVDVCBwZ19nZXRfdmlld2RlZignb3Ffdl9yb3djbXAnOjpyZWdjbGFzcywgdHJ1ZSk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCAoUk9XKGEsIGIpIE9QRVJBVE9SKGFsdF9v cHMuPCwgYWx0X29wcy48KSBST1coYiwgYSkpIEFTIHIrCisgICAgRlJPTSBvcV90OworKDEgcm93 KQorCistLSBXaXRoIGFsdF9vcHMgcmVhY2hhYmxlIGFnYWluLCB0aGUgcGxhaW4gc2luZ2xlLW9w ZXJhdG9yIHN5bnRheCBjb21lcyBiYWNrLgorU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdf Y2F0YWxvZywgcHVibGljOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X3Jvd2NtcCc6OnJl Z2NsYXNzLCB0cnVlKTsKKyAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgKFJPVyhhLCBi KSA8IFJPVyhiLCBhKSkgQVMgcisKKyAgICBGUk9NIG9xX3Q7CisoMSByb3cpCisKK1JFU0VUIHNl YXJjaF9wYXRoOworLS0gTWl4ZWQtc2NoZW1hIGRlcGFyc2U6IGJ1aWxkICh1bmRlciB0aGUgZGVm YXVsdCBzZWFyY2hfcGF0aCkgYSB2aWV3IHdob3NlIHJvdworLS0gY29tcGFyaXNvbiBwaW5zIGNv bHVtbiAxIHRvIGFsdF9vcHMuPCAob2ZmIHRoZSBwYXRoIC0+IG11c3QgYmUgcXVhbGlmaWVkKSBh bmQKKy0tIGNvbHVtbiAyIHRvIHBnX2NhdGFsb2cuPCAocmVhY2hhYmxlIGJhcmUpLiAgQSBzaW5n bGUgd3JpdHRlbiBuYW1lIGNhbm5vdAorLS0gcmVjb3ZlciB0d28gZGlmZmVyZW50bHktc3BlbGxl ZCBvcGVyYXRvcnMsIHNvIHRoZSBkZXBhcnNlIGVtaXRzIHRoZSBwZXItY29sdW1uCistLSBsaXN0 IE9QRVJBVE9SKGFsdF9vcHMuPCwgPCk6IG9ubHkgY29sdW1uIDEgaXMgcXVhbGlmaWVkLCBidXQg dGhlIGxpc3QgZm9ybSBpcworLS0gZm9yY2VkIGJlY2F1c2UgdGhlIHR3byBjb2x1bW4gbmFtZXMg ZGlmZmVyLgorQ1JFQVRFIFZJRVcgcHVibGljLm9xX3Zfcm93Y21wX21peGVkIEFTCisgIFNFTEVD VCBST1coYSwgYikgT1BFUkFUT1IoYWx0X29wcy48LCBwZ19jYXRhbG9nLjwpIFJPVyhiLCBhKSBB UyByCisgIEZST00gcHVibGljLm9xX3Q7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3Zfcm93 Y21wX21peGVkJzo6cmVnY2xhc3MsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgIHBnX2dl dF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCAoUk9XKGEsIGIp IE9QRVJBVE9SKGFsdF9vcHMuPCwgPCkgUk9XKGIsIGEpKSBBUyByKworICAgIEZST00gb3FfdDsK KygxIHJvdykKKworLS0gVGhlIGxpc3Qgc3ludGF4IGlzIGRpcmVjdGx5IGFjY2VwdGFibGUgYW5k IE4gb3BlcmF0b3JzIGNvbXBhcmUgTiBjb2x1bW5zLgorU0VMRUNUIFJPVygxLDIpIE9QRVJBVE9S KHBnX2NhdGFsb2cuPCwgcGdfY2F0YWxvZy48KSBST1coMiwxKSBBUyB0OworIHQgCistLS0KKyB0 CisoMSByb3cpCisKKy0tIE1peGVkLXNjaGVtYSBsaXN0OiBjb2x1bW4gMSBwaW5uZWQgdG8gYWx0 X29wcy48LCBjb2x1bW4gMiB0byBwZ19jYXRhbG9nLjwuCitTRUxFQ1QgUk9XKDEsMikgT1BFUkFU T1IoYWx0X29wcy48LCBwZ19jYXRhbG9nLjwpIFJPVygyLDMpIEFTIHQ7CisgdCAKKy0tLQorIHQK KygxIHJvdykKKworLS0gQSBvbmUtZWxlbWVudCBsaXN0IGlzIGV4YWN0bHkgdG9kYXkncyBzaW5n bGUtb3BlcmF0b3Igc3ludGF4IChpbnZhcmlhbmNlCistLSBndWFyZDogdGhpcyBsaW5lIGlzIGFs cmVhZHkgYWNjZXB0ZWQgYmVmb3JlIHRoZSBsaXN0IGdyYW1tYXIgbGFuZHMpLgorU0VMRUNUIFJP VygxLDIpIE9QRVJBVE9SKHBnX2NhdGFsb2cuPCkgUk9XKDEsMykgQVMgdDsKKyB0IAorLS0tCisg dAorKDEgcm93KQorCistLSBBIG1peGVkLXNjaGVtYSBlcXVhbGl0eSBsaXN0IGlzIGFjY2VwdGVk OyBib3RoIGNvbHVtbnMgY29tcGFyZSBlcXVhbCAodCkuCitTRUxFQ1QgUk9XKDEsMikgT1BFUkFU T1IocGdfY2F0YWxvZy49LCBhbHRfb3BzLj0pIFJPVygxLDIpIEFTIHQ7CisgdCAKKy0tLQorIHQK KygxIHJvdykKKworLS0gRXJyb3JzIGJlbG93IHJ1biB1bmRlciB0ZXJzZSB2ZXJib3NpdHk6IG9u ZSBsaW5lIHBlciBlcnJvciwgdGhlIG1lc3NhZ2UKKy0tIHRleHQgcGx1cyAiYXQgY2hhcmFjdGVy IE4iIHBpbm5pbmcgdGhlIE9QRVJBVE9SKCkgZGVjb3JhdGlvbidzIHBvc2l0aW9uLgorXHNldCBW RVJCT1NJVFkgdGVyc2UKKy0tIFRvbyBtYW55IG9wZXJhdG9ycyBmb3IgdGhlIHJvdyB3aWR0aC4K K1NFTEVDVCBST1coMSwyKSBPUEVSQVRPUihwZ19jYXRhbG9nLjwsIHBnX2NhdGFsb2cuPCwgcGdf Y2F0YWxvZy48KSBST1coMiwxKTsKK0VSUk9SOiAgbnVtYmVyIG9mIG9wZXJhdG9ycyAoMykgZG9l cyBub3QgbWF0Y2ggbnVtYmVyIG9mIGNvbHVtbnMgKDIpIGF0IGNoYXJhY3RlciAxNworLS0gVG9v IGZldyBvcGVyYXRvcnMgZm9yIHRoZSByb3cgd2lkdGggKHR3byBvcGVyYXRvcnMsIHRocmVlIGNv bHVtbnMpLgorU0VMRUNUIFJPVygxLDIsMykgT1BFUkFUT1IocGdfY2F0YWxvZy48LCBwZ19jYXRh bG9nLjwpIFJPVygxLDIsNCk7CitFUlJPUjogIG51bWJlciBvZiBvcGVyYXRvcnMgKDIpIGRvZXMg bm90IG1hdGNoIG51bWJlciBvZiBjb2x1bW5zICgzKSBhdCBjaGFyYWN0ZXIgMTkKKy0tIEEgbGlz dCBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIHJvdyAoYW5kLCBsYXRlciwgc3VicXVlcnkpIGNvbXBh cmlzb25zLgorLS0gU2NhbGFyIGluZml4IHJlamVjdHMgaXQuCitTRUxFQ1QgMSBPUEVSQVRPUihw Z19jYXRhbG9nLj0sIHBnX2NhdGFsb2cuPSkgMjsKK0VSUk9SOiAgYSBsaXN0IG9mIG9wZXJhdG9y cyBpcyBvbmx5IGFsbG93ZWQgaW4gcm93IGFuZCBzdWJxdWVyeSBjb21wYXJpc29ucyBhdCBjaGFy YWN0ZXIgMTAKKy0tIFNjYWxhciBwcmVmaXggcmVqZWN0cyBpdCB0b28uCitTRUxFQ1QgT1BFUkFU T1IocGdfY2F0YWxvZy4tLCBwZ19jYXRhbG9nLi0pIDE7CitFUlJPUjogIGEgbGlzdCBvZiBvcGVy YXRvcnMgaXMgb25seSBhbGxvd2VkIGluIHJvdyBhbmQgc3VicXVlcnkgY29tcGFyaXNvbnMgYXQg Y2hhcmFjdGVyIDgKKy0tIFRoZSBhcnJheSBmb3JtIG9mIEFOWS9BTEwgcmVzb2x2ZXMgYSBzaW5n bGUgb3BlcmF0b3I7IGEgbGlzdCBpcyByZWplY3RlZC4KK1NFTEVDVCAxIE9QRVJBVE9SKHBnX2Nh dGFsb2cuPSwgcGdfY2F0YWxvZy49KSBBTlkgKEFSUkFZWzEsMl0pOworRVJST1I6ICBhIGxpc3Qg b2Ygb3BlcmF0b3JzIGlzIG9ubHkgYWxsb3dlZCBpbiByb3cgYW5kIHN1YnF1ZXJ5IGNvbXBhcmlz b25zIGF0IGNoYXJhY3RlciAxMAorLS0gT1JERVIgQlkgLi4uIFVTSU5HIHJlamVjdHMgaXQuCitT RUxFQ1QgMSBGUk9NIHB1YmxpYy5vcV90IE9SREVSIEJZIGEgVVNJTkcgT1BFUkFUT1IocGdfY2F0 YWxvZy48LCBwZ19jYXRhbG9nLjwpOworRVJST1I6ICBhIGxpc3Qgb2Ygb3BlcmF0b3JzIGlzIG9u bHkgYWxsb3dlZCBpbiByb3cgYW5kIHN1YnF1ZXJ5IGNvbXBhcmlzb25zIGF0IGNoYXJhY3RlciA0 NAorLS0gU3VibGlua3MgcmVqZWN0IG9wZXJhdG9yIGxpc3RzIGluIHRoaXMgcGF0Y2ggKGEgbGF0 ZXIgcGF0Y2ggZW5hYmxlcyB0aGVtKS4KK1NFTEVDVCAoMSwgMikgT1BFUkFUT1IocGdfY2F0YWxv Zy49LCBwZ19jYXRhbG9nLj0pIEFOWSAoU0VMRUNUIDEsIDIpOworRVJST1I6ICBhIGxpc3Qgb2Yg b3BlcmF0b3JzIGlzIG9ubHkgYWxsb3dlZCBpbiByb3cgYW5kIHN1YnF1ZXJ5IGNvbXBhcmlzb25z IGF0IGNoYXJhY3RlciAxNQorLS0gRERMIGRlZmluaXRpb24gaXRlbXMgKGhlcmUgYSBDUkVBVEUg T1BFUkFUT1IgY29tbXV0YXRvcikgdGFrZSBhIHNpbmdsZQorLS0gb3BlcmF0b3IgbmFtZS4gIGRl ZmluZS5jIGhhcyBubyBQYXJzZVN0YXRlLCBzbyB0aGlzIGVycm9yIGNhcnJpZXMgbm8gcG9zaXRp b24uCitDUkVBVEUgT1BFUkFUT1IgIyMjIChsZWZ0YXJnID0gaW50NCwgcmlnaHRhcmcgPSBpbnQ0 LCBwcm9jZWR1cmUgPSBpbnQ0ZXEsCisgICAgICAgICAgICAgICAgICAgICBjb21tdXRhdG9yID0g T1BFUkFUT1IocGdfY2F0YWxvZy49LCBhbHRfb3BzLj0pKTsKK0VSUk9SOiAgYSBsaXN0IG9mIG9w ZXJhdG9ycyBpcyBvbmx5IGFsbG93ZWQgaW4gcm93IGFuZCBzdWJxdWVyeSBjb21wYXJpc29ucwor XHNldCBWRVJCT1NJVFkgZGVmYXVsdAorLS0gVGhlIGRlcGFyc2VkIHJvdy1jb21wYXJpc29uIGxp c3QgbXVzdCByZXBhcnNlIHVuZGVyIGEgcmVzdHJpY3RlZCBzZWFyY2hfcGF0aAorLS0gKHRoZSBw Z19kdW1wIHNjZW5hcmlvKSwgcGlubmluZyB0aGUgc2FtZSBvcGVyYXRvciBPSURzIGFzIHRoZSBv cmlnaW5hbC4KK0JFR0lOOyBTRVQgTE9DQUwgc2VhcmNoX3BhdGggPSBwZ19jYXRhbG9nOworRE8g JCQgQkVHSU4KKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9xX3Zfcm93Y21wX3JlbG9h ZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9yb3djbXAnOjpyZWdjbGFzcyk7 CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X3Jvd2NtcF9taXhlZF9yZWxvYWQg QVMgJyB8fCBwZ19nZXRfdmlld2RlZigncHVibGljLm9xX3Zfcm93Y21wX21peGVkJzo6cmVnY2xh c3MpOworRU5EICQkOyBDT01NSVQ7CistLSBUaGUgcmVsb2FkZWQgdmlldyByZXNvbHZlcyBhbHRf b3BzLjwgZm9yIGJvdGggY29sdW1ucywgc2FtZSBhcyB0aGUgb3JpZ2luYWwuCitTRUxFQ1QgZXZf Y2xhc3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0ZQorV0hFUkUgZXZfYWN0aW9uIExJS0UgJyUo byAnIHx8ICdhbHRfb3BzLjwoaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQgfHwgJyAlJwor ICBBTkQgZXZfY2xhc3M6OnJlZ2NsYXNzOjp0ZXh0ID0gJ29xX3Zfcm93Y21wX3JlbG9hZCcKK09S REVSIEJZIDE7CisgICAgICBldl9jbGFzcyAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBv cV92X3Jvd2NtcF9yZWxvYWQKKygxIHJvdykKKworLS0gVGhlIHJlbG9hZGVkIG1peGVkIHZpZXcg cGlucyB0aGUgcGVyLWNvbHVtbiBvcGVyYXRvcnMgaW4gb3JkZXI6IGFsdF9vcHMuPCBmb3IKKy0t IGNvbHVtbiAxIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IHBnX2NhdGFsb2cncyBpbnQ0bHQgZm9y IGNvbHVtbiAyLCBleGFjdGx5IGFzCistLSB0aGUgZGVwYXJzZWQgT1BFUkFUT1IoYWx0X29wcy48 LCA8KSBsaXN0IGVuY29kZXMgdGhlbS4KK1NFTEVDVCBldl9jbGFzczo6cmVnY2xhc3MgRlJPTSBw Z19yZXdyaXRlCitXSEVSRSBldl9hY3Rpb24gTElLRSAnJShvICcgfHwgJ2FsdF9vcHMuPChpbnQ0 LGludDQpJzo6cmVnb3BlcmF0b3I6Om9pZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 fCAnICcgfHwgJ3BnX2NhdGFsb2cuPChpbnQ0LGludDQpJzo6cmVnb3BlcmF0b3I6Om9pZCB8fCAn JScKKyAgQU5EIGV2X2NsYXNzOjpyZWdjbGFzczo6dGV4dCA9ICdvcV92X3Jvd2NtcF9taXhlZF9y ZWxvYWQnCitPUkRFUiBCWSAxOworICAgICAgICAgZXZfY2xhc3MgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgb3Ffdl9yb3djbXBfbWl4ZWRfcmVsb2FkCisoMSByb3cpCisK K0RST1AgVklFVyBvcV92X3Jvd2NtcF9yZWxvYWQ7CitEUk9QIFZJRVcgb3Ffdl9yb3djbXBfbWl4 ZWRfcmVsb2FkOworLS0gTk9URTogb3Ffdl9yb3djbXAgYW5kIG9xX3Zfcm93Y21wX21peGVkIGFy ZSBpbnRlbnRpb25hbGx5IGtlcHQgKGxpa2UgdGhlIG90aGVyCistLSBvcV92Xyogdmlld3MpIHNv IHRoZSBwZ191cGdyYWRlIHN1aXRlIGR1bXAvcmVzdG9yZXMgdGhlbSBhbmQgZXhlcmNpc2VzIHRo ZQorLS0gcXVhbGlmaWVkIGRlcGFyc2UuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRl eCBmZTI1YjZiMmNjLi44ZTA1NzQyZjI4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTgxLDcgKzgxLDcgQEAgdGVzdDogY3JlYXRlX3RhYmxlX2xpa2UgYWx0ZXJfZ2VuZXJpYyBh bHRlcl9vcGVyYXRvciBtaXNjIGFzeW5jIGRic2l6ZSBtZXJnZSBtaXMKICMgY29sbGF0ZS5saW51 eC51dGY4IGFuZCBjb2xsYXRlLmljdS51dGY4IHRlc3RzIGNhbm5vdCBiZSBydW4gaW4gcGFyYWxs ZWwgd2l0aCBlYWNoIG90aGVyCiAjIHBzcWwgZGVwZW5kcyBvbiBjcmVhdGVfYW0KICMgYW11dGls cyBkZXBlbmRzIG9uIGdlb21ldHJ5LCBjcmVhdGVfaW5kZXhfc3BnaXN0LCBoYXNoX2luZGV4LCBi cmluCi10ZXN0OiBydWxlcyBwc3FsIHBzcWxfY3Jvc3N0YWIgcHNxbF9waXBlbGluZSBhbXV0aWxz IHN0YXRzX2V4dCBjb2xsYXRlLmxpbnV4LnV0ZjggY29sbGF0ZS53aW5kb3dzLndpbjEyNTIgb3Bl cmF0b3JfcXVhbGlmeQordGVzdDogcnVsZXMgcHNxbCBwc3FsX2Nyb3NzdGFiIHBzcWxfcGlwZWxp bmUgYW11dGlscyBzdGF0c19leHQgY29sbGF0ZS5saW51eC51dGY4IGNvbGxhdGUud2luZG93cy53 aW4xMjUyCiAKICMgLS0tLS0tLS0tLQogIyBSdW4gdGhlc2UgYWxvbmUgc28gdGhleSBkb24ndCBy dW4gb3V0IG9mIHBhcmFsbGVsIHdvcmtlcnMKQEAgLTEwMSw4ICsxMDEsMTEgQEAgdGVzdDogcHVi bGljYXRpb24gc3Vic2NyaXB0aW9uCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBw YXJhbGxlbCB0ZXN0cwogIyBzZWxlY3Rfdmlld3MgZGVwZW5kcyBvbiBjcmVhdGVfdmlldworIyBv cGVyYXRvcl9xdWFsaWZ5IGNyZWF0ZXMgYSAobm9uLWRlZmF1bHQpIGJ0cmVlIG9wZXJhdG9yIGNs YXNzIG92ZXIgaW50NCwKKyMgd2hpY2ggd291bGQgc2hvdyB1cCBpbiBwc3FsJ3MgIlxkQWYgYnRy ZWUgaW50NCI7IGl0IG11c3QgcnVuIGFmdGVyIHRoZSBwc3FsCisjIGdyb3VwLCBhbmQgbm8gdGVz dCBpbiB0aGlzIGdyb3VwIGVudW1lcmF0ZXMgb3BlcmF0b3JzIG9yIG9wZXJhdG9yIGNsYXNzZXMu CiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHNlbGVjdF92aWV3cyBwb3J0YWxzX3AyIGZvcmVpZ25fa2V5 IGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21ib2NpZCB0c2VhcmNoIHRzZGljdHMgZm9yZWln bl9kYXRhIHdpbmRvdyB4bWxtYXAgZnVuY3Rpb25hbF9kZXBzIGFkdmlzb3J5X2xvY2sgaW5kaXJl Y3RfdG9hc3QgZXF1aXZjbGFzcyBzdGF0c19yZXdyaXRlIGdyYXBoX3RhYmxlCit0ZXN0OiBzZWxl Y3Rfdmlld3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBkZXBlbmRlbmN5IGd1YyBiaXRtYXBvcHMg Y29tYm9jaWQgdHNlYXJjaCB0c2RpY3RzIGZvcmVpZ25fZGF0YSB3aW5kb3cgeG1sbWFwIGZ1bmN0 aW9uYWxfZGVwcyBhZHZpc29yeV9sb2NrIGluZGlyZWN0X3RvYXN0IGVxdWl2Y2xhc3Mgc3RhdHNf cmV3cml0ZSBncmFwaF90YWJsZSBvcGVyYXRvcl9xdWFsaWZ5CiAKICMgLS0tLS0tLS0tLQogIyBB bm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzIChKU09OIHJlbGF0ZWQpCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcGVyYXRvcl9xdWFsaWZ5LnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3FsCmluZGV4IGM4ZmFkZGRkZGUuLjc0YTk0Mjhk NDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3FsCkBAIC0xOTUs MyArMTk1LDEwOSBAQCBXSEVSRSBldl9hY3Rpb24gTElLRSAnJTpvcG5vICcgfHwgJ3BnX2NhdGFs b2cuPChpbnQ0LGludDQpJzo6cmVnb3BlcmF0b3I6Om9pZCB8fAogT1JERVIgQlkgMTsKIERST1Ag VklFVyBvcV92X3VzaW5nX3JlbG9hZCwgb3Ffdl9uYXR1cmFsX3JlbG9hZCwgb3Ffdl91c2luZ19t aXhlZF9yZWxvYWQsCiAgICAgICAgICAgb3Ffdl91c2luZ19sdF9yZWxvYWQ7CisKKy0tCistLSBS b3ctY29tcGFyaXNvbiBvcGVyYXRvciBsaXN0czogdGhlIE9QRVJBVE9SKCkgZGVjb3JhdGlvbiBt YXkgY2FycnkgYQorLS0gY29tbWEtc2VwYXJhdGVkIExJU1Qgb2Ygb3BlcmF0b3JzLCBvbmUgcGVy IGNvbHVtbiBvZiB0aGUgY29tcGFyZWQgcm93cy4KKy0tCistLSBtYWtlX3Jvd19jb21wYXJpc29u X29wIGludGVyc2VjdHMgdGhlIHBlci1jb2x1bW4gb3BlcmF0b3JzJyBidHJlZSBvcGZhbWlseQor LS0gaW50ZXJwcmV0YXRpb25zLCBzbyBhIGJhcmUgIjwiIHdpdGggbm8gb3BlcmF0b3IgY2xhc3Mg ZmFpbHMgb3V0cmlnaHQgd2l0aAorLS0gImNvdWxkIG5vdCBkZXRlcm1pbmUgaW50ZXJwcmV0YXRp b24gb2Ygcm93IGNvbXBhcmlzb24gb3BlcmF0b3IiLiAgQSBidHJlZQorLS0gb3BlcmF0b3IgY2xh c3Mgb3ZlciBpbnQ0IGlzIHRoZXJlZm9yZSByZXF1aXJlZC4gIGFsdF9vcHMuPSBhbHJlYWR5IGV4 aXN0cworLS0gYWJvdmU7IGFkZCB0aGUgcmVzdCBvZiB0aGUgc3RyYXRlZ3kgc2V0IGFuZCB3cmFw IHRoZW0gaW4gYSBjbGFzcy4KK0NSRUFURSBPUEVSQVRPUiBhbHRfb3BzLjwgKGxlZnRhcmcgPSBp bnQ0LCByaWdodGFyZyA9IGludDQsIHByb2NlZHVyZSA9IGludDRsdCk7CitDUkVBVEUgT1BFUkFU T1IgYWx0X29wcy48PSAobGVmdGFyZyA9IGludDQsIHJpZ2h0YXJnID0gaW50NCwgcHJvY2VkdXJl ID0gaW50NGxlKTsKK0NSRUFURSBPUEVSQVRPUiBhbHRfb3BzLj4gKGxlZnRhcmcgPSBpbnQ0LCBy aWdodGFyZyA9IGludDQsIHByb2NlZHVyZSA9IGludDRndCk7CitDUkVBVEUgT1BFUkFUT1IgYWx0 X29wcy4+PSAobGVmdGFyZyA9IGludDQsIHJpZ2h0YXJnID0gaW50NCwgcHJvY2VkdXJlID0gaW50 NGdlKTsKK0NSRUFURSBPUEVSQVRPUiBDTEFTUyBhbHRfb3BzLmludDRfYWx0X29wcyBGT1IgVFlQ RSBpbnQ0IFVTSU5HIGJ0cmVlIEFTCisgICAgT1BFUkFUT1IgMSBhbHRfb3BzLjwsCisgICAgT1BF UkFUT1IgMiBhbHRfb3BzLjw9LAorICAgIE9QRVJBVE9SIDMgYWx0X29wcy49LAorICAgIE9QRVJB VE9SIDQgYWx0X29wcy4+PSwKKyAgICBPUEVSQVRPUiA1IGFsdF9vcHMuPiwKKyAgICBGVU5DVElP TiAxIGJ0aW50NGNtcChpbnQ0LCBpbnQ0KTsKKworLS0gVmlldyBidWlsdCB3aGlsZSBhbHRfb3Bz IHNoYWRvd3MgcGdfY2F0YWxvZzogdGhlIHJvdyBjb21wYXJpc29uIHJlc29sdmVzIHRvCistLSBh bHRfb3BzLjwgZm9yIGJvdGggY29sdW1ucy4KK1NFVCBzZWFyY2hfcGF0aCA9IGFsdF9vcHMsIHBn X2NhdGFsb2c7CitDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9yb3djbXAgQVMKKyAgU0VMRUNUIFJP VyhhLCBiKSA8IFJPVyhiLCBhKSBBUyByIEZST00gcHVibGljLm9xX3Q7CitSRVNFVCBzZWFyY2hf cGF0aDsKKy0tIE9mZiB0aGUgcGF0aCwgYm90aCBjb2x1bW4gb3BlcmF0b3JzIG11c3QgYmUgcXVh bGlmaWVkOiB0aGUgZGVjb3JhdGlvbiBpcyBhCistLSBMSVNULCBvbmUgb3BlcmF0b3IgcGVyIGNv bHVtbiAoUk9XKC4uLikgT1BFUkFUT1IoYWx0X29wcy48LCBhbHRfb3BzLjwpIFJPVyguLi4pKS4K K1NFTEVDVCBwZ19nZXRfdmlld2RlZignb3Ffdl9yb3djbXAnOjpyZWdjbGFzcywgdHJ1ZSk7Cist LSBXaXRoIGFsdF9vcHMgcmVhY2hhYmxlIGFnYWluLCB0aGUgcGxhaW4gc2luZ2xlLW9wZXJhdG9y IHN5bnRheCBjb21lcyBiYWNrLgorU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdfY2F0YWxv ZywgcHVibGljOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X3Jvd2NtcCc6OnJlZ2NsYXNz LCB0cnVlKTsKK1JFU0VUIHNlYXJjaF9wYXRoOworCistLSBNaXhlZC1zY2hlbWEgZGVwYXJzZTog YnVpbGQgKHVuZGVyIHRoZSBkZWZhdWx0IHNlYXJjaF9wYXRoKSBhIHZpZXcgd2hvc2Ugcm93Cist LSBjb21wYXJpc29uIHBpbnMgY29sdW1uIDEgdG8gYWx0X29wcy48IChvZmYgdGhlIHBhdGggLT4g bXVzdCBiZSBxdWFsaWZpZWQpIGFuZAorLS0gY29sdW1uIDIgdG8gcGdfY2F0YWxvZy48IChyZWFj aGFibGUgYmFyZSkuICBBIHNpbmdsZSB3cml0dGVuIG5hbWUgY2Fubm90CistLSByZWNvdmVyIHR3 byBkaWZmZXJlbnRseS1zcGVsbGVkIG9wZXJhdG9ycywgc28gdGhlIGRlcGFyc2UgZW1pdHMgdGhl IHBlci1jb2x1bW4KKy0tIGxpc3QgT1BFUkFUT1IoYWx0X29wcy48LCA8KTogb25seSBjb2x1bW4g MSBpcyBxdWFsaWZpZWQsIGJ1dCB0aGUgbGlzdCBmb3JtIGlzCistLSBmb3JjZWQgYmVjYXVzZSB0 aGUgdHdvIGNvbHVtbiBuYW1lcyBkaWZmZXIuCitDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9yb3dj bXBfbWl4ZWQgQVMKKyAgU0VMRUNUIFJPVyhhLCBiKSBPUEVSQVRPUihhbHRfb3BzLjwsIHBnX2Nh dGFsb2cuPCkgUk9XKGIsIGEpIEFTIHIKKyAgRlJPTSBwdWJsaWMub3FfdDsKK1NFTEVDVCBwZ19n ZXRfdmlld2RlZignb3Ffdl9yb3djbXBfbWl4ZWQnOjpyZWdjbGFzcywgdHJ1ZSk7CisKKy0tIFRo ZSBsaXN0IHN5bnRheCBpcyBkaXJlY3RseSBhY2NlcHRhYmxlIGFuZCBOIG9wZXJhdG9ycyBjb21w YXJlIE4gY29sdW1ucy4KK1NFTEVDVCBST1coMSwyKSBPUEVSQVRPUihwZ19jYXRhbG9nLjwsIHBn X2NhdGFsb2cuPCkgUk9XKDIsMSkgQVMgdDsKKy0tIE1peGVkLXNjaGVtYSBsaXN0OiBjb2x1bW4g MSBwaW5uZWQgdG8gYWx0X29wcy48LCBjb2x1bW4gMiB0byBwZ19jYXRhbG9nLjwuCitTRUxFQ1Qg Uk9XKDEsMikgT1BFUkFUT1IoYWx0X29wcy48LCBwZ19jYXRhbG9nLjwpIFJPVygyLDMpIEFTIHQ7 CistLSBBIG9uZS1lbGVtZW50IGxpc3QgaXMgZXhhY3RseSB0b2RheSdzIHNpbmdsZS1vcGVyYXRv ciBzeW50YXggKGludmFyaWFuY2UKKy0tIGd1YXJkOiB0aGlzIGxpbmUgaXMgYWxyZWFkeSBhY2Nl cHRlZCBiZWZvcmUgdGhlIGxpc3QgZ3JhbW1hciBsYW5kcykuCitTRUxFQ1QgUk9XKDEsMikgT1BF UkFUT1IocGdfY2F0YWxvZy48KSBST1coMSwzKSBBUyB0OworLS0gQSBtaXhlZC1zY2hlbWEgZXF1 YWxpdHkgbGlzdCBpcyBhY2NlcHRlZDsgYm90aCBjb2x1bW5zIGNvbXBhcmUgZXF1YWwgKHQpLgor U0VMRUNUIFJPVygxLDIpIE9QRVJBVE9SKHBnX2NhdGFsb2cuPSwgYWx0X29wcy49KSBST1coMSwy KSBBUyB0OworCistLSBFcnJvcnMgYmVsb3cgcnVuIHVuZGVyIHRlcnNlIHZlcmJvc2l0eTogb25l IGxpbmUgcGVyIGVycm9yLCB0aGUgbWVzc2FnZQorLS0gdGV4dCBwbHVzICJhdCBjaGFyYWN0ZXIg TiIgcGlubmluZyB0aGUgT1BFUkFUT1IoKSBkZWNvcmF0aW9uJ3MgcG9zaXRpb24uCitcc2V0IFZF UkJPU0lUWSB0ZXJzZQorLS0gVG9vIG1hbnkgb3BlcmF0b3JzIGZvciB0aGUgcm93IHdpZHRoLgor U0VMRUNUIFJPVygxLDIpIE9QRVJBVE9SKHBnX2NhdGFsb2cuPCwgcGdfY2F0YWxvZy48LCBwZ19j YXRhbG9nLjwpIFJPVygyLDEpOworLS0gVG9vIGZldyBvcGVyYXRvcnMgZm9yIHRoZSByb3cgd2lk dGggKHR3byBvcGVyYXRvcnMsIHRocmVlIGNvbHVtbnMpLgorU0VMRUNUIFJPVygxLDIsMykgT1BF UkFUT1IocGdfY2F0YWxvZy48LCBwZ19jYXRhbG9nLjwpIFJPVygxLDIsNCk7CistLSBBIGxpc3Qg aXMgb25seSBtZWFuaW5nZnVsIGZvciByb3cgKGFuZCwgbGF0ZXIsIHN1YnF1ZXJ5KSBjb21wYXJp c29ucy4KKy0tIFNjYWxhciBpbmZpeCByZWplY3RzIGl0LgorU0VMRUNUIDEgT1BFUkFUT1IocGdf Y2F0YWxvZy49LCBwZ19jYXRhbG9nLj0pIDI7CistLSBTY2FsYXIgcHJlZml4IHJlamVjdHMgaXQg dG9vLgorU0VMRUNUIE9QRVJBVE9SKHBnX2NhdGFsb2cuLSwgcGdfY2F0YWxvZy4tKSAxOworLS0g VGhlIGFycmF5IGZvcm0gb2YgQU5ZL0FMTCByZXNvbHZlcyBhIHNpbmdsZSBvcGVyYXRvcjsgYSBs aXN0IGlzIHJlamVjdGVkLgorU0VMRUNUIDEgT1BFUkFUT1IocGdfY2F0YWxvZy49LCBwZ19jYXRh bG9nLj0pIEFOWSAoQVJSQVlbMSwyXSk7CistLSBPUkRFUiBCWSAuLi4gVVNJTkcgcmVqZWN0cyBp dC4KK1NFTEVDVCAxIEZST00gcHVibGljLm9xX3QgT1JERVIgQlkgYSBVU0lORyBPUEVSQVRPUihw Z19jYXRhbG9nLjwsIHBnX2NhdGFsb2cuPCk7CistLSBTdWJsaW5rcyByZWplY3Qgb3BlcmF0b3Ig bGlzdHMgaW4gdGhpcyBwYXRjaCAoYSBsYXRlciBwYXRjaCBlbmFibGVzIHRoZW0pLgorU0VMRUNU ICgxLCAyKSBPUEVSQVRPUihwZ19jYXRhbG9nLj0sIHBnX2NhdGFsb2cuPSkgQU5ZIChTRUxFQ1Qg MSwgMik7CistLSBEREwgZGVmaW5pdGlvbiBpdGVtcyAoaGVyZSBhIENSRUFURSBPUEVSQVRPUiBj b21tdXRhdG9yKSB0YWtlIGEgc2luZ2xlCistLSBvcGVyYXRvciBuYW1lLiAgZGVmaW5lLmMgaGFz IG5vIFBhcnNlU3RhdGUsIHNvIHRoaXMgZXJyb3IgY2FycmllcyBubyBwb3NpdGlvbi4KK0NSRUFU RSBPUEVSQVRPUiAjIyMgKGxlZnRhcmcgPSBpbnQ0LCByaWdodGFyZyA9IGludDQsIHByb2NlZHVy ZSA9IGludDRlcSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbW11dGF0b3IgPSBPUEVSQVRPUihw Z19jYXRhbG9nLj0sIGFsdF9vcHMuPSkpOworXHNldCBWRVJCT1NJVFkgZGVmYXVsdAorCistLSBU aGUgZGVwYXJzZWQgcm93LWNvbXBhcmlzb24gbGlzdCBtdXN0IHJlcGFyc2UgdW5kZXIgYSByZXN0 cmljdGVkIHNlYXJjaF9wYXRoCistLSAodGhlIHBnX2R1bXAgc2NlbmFyaW8pLCBwaW5uaW5nIHRo ZSBzYW1lIG9wZXJhdG9yIE9JRHMgYXMgdGhlIG9yaWdpbmFsLgorQkVHSU47IFNFVCBMT0NBTCBz ZWFyY2hfcGF0aCA9IHBnX2NhdGFsb2c7CitETyAkJCBCRUdJTgorICBFWEVDVVRFICdDUkVBVEUg VklFVyBwdWJsaWMub3Ffdl9yb3djbXBfcmVsb2FkIEFTICcgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1 YmxpYy5vcV92X3Jvd2NtcCc6OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVi bGljLm9xX3Zfcm93Y21wX21peGVkX3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJs aWMub3Ffdl9yb3djbXBfbWl4ZWQnOjpyZWdjbGFzcyk7CitFTkQgJCQ7IENPTU1JVDsKKy0tIFRo ZSByZWxvYWRlZCB2aWV3IHJlc29sdmVzIGFsdF9vcHMuPCBmb3IgYm90aCBjb2x1bW5zLCBzYW1l IGFzIHRoZSBvcmlnaW5hbC4KK1NFTEVDVCBldl9jbGFzczo6cmVnY2xhc3MgRlJPTSBwZ19yZXdy aXRlCitXSEVSRSBldl9hY3Rpb24gTElLRSAnJShvICcgfHwgJ2FsdF9vcHMuPChpbnQ0LGludDQp Jzo6cmVnb3BlcmF0b3I6Om9pZCB8fCAnICUnCisgIEFORCBldl9jbGFzczo6cmVnY2xhc3M6OnRl eHQgPSAnb3Ffdl9yb3djbXBfcmVsb2FkJworT1JERVIgQlkgMTsKKy0tIFRoZSByZWxvYWRlZCBt aXhlZCB2aWV3IHBpbnMgdGhlIHBlci1jb2x1bW4gb3BlcmF0b3JzIGluIG9yZGVyOiBhbHRfb3Bz LjwgZm9yCistLSBjb2x1bW4gMSBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBwZ19jYXRhbG9nJ3Mg aW50NGx0IGZvciBjb2x1bW4gMiwgZXhhY3RseSBhcworLS0gdGhlIGRlcGFyc2VkIE9QRVJBVE9S KGFsdF9vcHMuPCwgPCkgbGlzdCBlbmNvZGVzIHRoZW0uCitTRUxFQ1QgZXZfY2xhc3M6OnJlZ2Ns YXNzIEZST00gcGdfcmV3cml0ZQorV0hFUkUgZXZfYWN0aW9uIExJS0UgJyUobyAnIHx8ICdhbHRf b3BzLjwoaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfHwgJyAnIHx8ICdwZ19jYXRhbG9nLjwoaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9y OjpvaWQgfHwgJyUnCisgIEFORCBldl9jbGFzczo6cmVnY2xhc3M6OnRleHQgPSAnb3Ffdl9yb3dj bXBfbWl4ZWRfcmVsb2FkJworT1JERVIgQlkgMTsKK0RST1AgVklFVyBvcV92X3Jvd2NtcF9yZWxv YWQ7CitEUk9QIFZJRVcgb3Ffdl9yb3djbXBfbWl4ZWRfcmVsb2FkOworLS0gTk9URTogb3Ffdl9y b3djbXAgYW5kIG9xX3Zfcm93Y21wX21peGVkIGFyZSBpbnRlbnRpb25hbGx5IGtlcHQgKGxpa2Ug dGhlIG90aGVyCistLSBvcV92Xyogdmlld3MpIHNvIHRoZSBwZ191cGdyYWRlIHN1aXRlIGR1bXAv cmVzdG9yZXMgdGhlbSBhbmQgZXhlcmNpc2VzIHRoZQorLS0gcXVhbGlmaWVkIGRlcGFyc2UuCi0t IAoyLjU0LjAKCg== --6a4d06a8_62bbd95a_14ffe Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0004-Allow-per-column-operator-lists-in-ANY-ALL-subque.patch" RnJvbSBjNDhkMjI2Njc1ZDljYmNmNTY5ZTVkZjRiY2NlZTE4ODM2Yjc5NjNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGE9QzU9ODI9MjBQYXN0ZXJuYWs/PSA8 bWljaGFsLmR0ekBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNyBKdWwgMjAyNiAwOTo1MTo1NSArMDIw MApTdWJqZWN0OiBbUEFUQ0ggdjIgNC81XSBBbGxvdyBwZXItY29sdW1uIG9wZXJhdG9yIGxpc3Rz IGluIEFOWS9BTEwgc3VicXVlcnkKIGNvbXBhcmlzb25zCgpBIG11bHRpLWNvbHVtbiBzdWJxdWVy eSBjb21wYXJpc29uIHN1Y2ggYXMgKGEsIGIpID0gQU5ZIChTRUxFQ1QgLi4uKSBvcgpST1coYSwg YikgPCAoU0VMRUNUIC4uLikgcmVzb2x2ZXMgdGhlIHdyaXR0ZW4gb3BlcmF0b3IgbmFtZSBpbmRl cGVuZGVudGx5CmZvciBlYWNoIGNvbHVtbiBwYWlyLCBzbyB0aGUgb3BlcmF0b3IgY2hvc2VuIGZv ciBvbmUgY29sdW1uIG1heSBsaXZlIGluIGEKZGlmZmVyZW50IHNjaGVtYSBmcm9tIHRoZSBvcGVy YXRvciBjaG9zZW4gZm9yIGFub3RoZXIuICBydWxldXRpbHMuYyBjb3VsZApub3QgcmVwcm9kdWNl IHRoYXQ6IGl0IHByaW50ZWQgdGhlIGZpcnN0IGNvbHVtbidzIG9wZXJhdG9yIG5hbWUgZm9yIHRo ZQp3aG9sZSBjb21wYXJpc29uIGFuZCBhZG1pdHRlZCBhcyBtdWNoIC0tCgogICAgTm90ZSB0aGF0 IHdlIHByaW50IHRoZSBuYW1lIG9mIG9ubHkgdGhlIGZpcnN0IG9wZXJhdG9yLCB3aGVuIHRoZXJl CiAgICBhcmUgbXVsdGlwbGUgY29tYmluaW5nIG9wZXJhdG9ycy4gIFRoaXMgaXMgYW4gYXBwcm94 aW1hdGlvbiB0aGF0CiAgICBjb3VsZCBnbyB3cm9uZyBpbiB2YXJpb3VzIHNjZW5hcmlvcyAob3Bl cmF0b3JzIGluIGRpZmZlcmVudCBzY2hlbWFzLAogICAgcmVuYW1lZCBvcGVyYXRvcnMsIGV0Yykg YnV0IHRoZXJlIGlzIG5vdCBhIHdob2xlIGxvdCB3ZSBjYW4gZG8gYWJvdXQKICAgIGl0LCBzaW5j ZSB0aGUgc3ludGF4IGFsbG93cyBvbmx5IG9uZSBvcGVyYXRvciB0byBiZSBzaG93bi4KCldvcnNl LCBBTllfU1VCTElOSyB3YXMgZGlzcGxheWVkIGFzIElOIHdoZW5ldmVyIHRoZSBmaXJzdCBvcGVy YXRvcidzIG5hbWUKcmVzb2x2ZWQgYmFyZSB0byAiPSIsIGV2ZW4gaWYgYW5vdGhlciBjb2x1bW4n cyBlcXVhbGl0eSBvcGVyYXRvciB3YXMgbm90CnJlYWNoYWJsZSB0aGF0IHdheTsgYSBkdW1wZWQt YW5kLXJlbG9hZGVkIHZpZXcgdGhlbiBzaWxlbnRseSByZXBhcnNlZAp0aGF0IGNvbHVtbiB3aXRo IGEgZGlmZmVyZW50IG9wZXJhdG9yIC0tIGNoYW5nZWQgc2VtYW50aWNzLCBubyBlcnJvci4KCkV4 dGVuZCB0aGUgcHJldmlvdXMgY29tbWl0J3MgcGVyLWNvbHVtbiBvcGVyYXRvciBsaXN0IHRvIHN1 YnF1ZXJ5CmNvbXBhcmlzb25zLAoKICAgIChhLCBiKSBPUEVSQVRPUihvcDEsIG9wMikgQU5ZIChT RUxFQ1QgLi4uKQoKb25lIG9wZXJhdG9yIHBlciBjb2x1bW4gb2YgdGhlIHRlc3Qgcm93LCBlYWNo IGluZGVwZW5kZW50bHkKc2NoZW1hLXF1YWxpZmlhYmxlLCBhY2NlcHRlZCB0aHJvdWdoIGJvdGgg dGhlIHN1YnF1ZXJ5X09wIGdyYW1tYXIgcGF0aAphbmQgdHJhbnNmb3JtQUV4cHJPcCdzIGNvbnZl cnNpb24gb2YgInJvdyBvcCAoc3Vic2VsZWN0KSIgdG8gYSBST1dDT01QQVJFCnN1YmxpbmsuICB0 cmFuc2Zvcm1TdWJMaW5rIG5vdyBwYXNzZXMgdGhlIGxpc3QgdGhyb3VnaCB0bwptYWtlX3Jvd19j b21wYXJpc29uX29wLCB3aGljaCBhbHJlYWR5IHJlc29sdmVzIHRoZSBuJ3RoIG5hbWUgYWdhaW5z dCB0aGUKbid0aCBjb2x1bW4sIHNvIGl0cyB0ZW1wb3JhcnkgcmVqZWN0aW9uIGdvZXMgYXdheS4K CldoZW4gZGVwYXJzaW5nLCBnZXRfc3VibGlua19leHByIG5vdyBjb2xsZWN0cyBldmVyeSBjb2x1 bW4ncyBjb21iaW5pbmcKb3BlcmF0b3IgZnJvbSB0aGUgdGVzdGV4cHIgKGEgc2luZ2xlIE9wRXhw ciwgYW4gQU5EL09SIGNoYWluIG9mIE9wRXhwcnMsCm9yIGEgUm93Q29tcGFyZUV4cHIpIGFuZCBw cmludHMgYSBzaW5nbGUgYmFyZSBuYW1lIG9ubHkgd2hlbiB0aGF0IG5hbWUKYWxvbmUgcmVjb3Zl cnMgZXZlcnkgY29sdW1uJ3Mgb3BlcmF0b3I7IG90aGVyd2lzZSBpdCBlbWl0cyB0aGUgZXhwbGlj aXQKT1BFUkFUT1IoLi4uKSBsaXN0LiAgSU4gaXMgcHJpbnRlZCBvbmx5IHdoZW4gYSBwbGFpbiBJ TiAtLSB3aGljaCBjb21wYXJlcwp3aXRoIHRoZSBiYXJlIG5hbWUgIj0iIC0tIHdvdWxkIHJlcGFy c2UgdG8gdGhlIHZlcnkgc2FtZSBvcGVyYXRvcnMuCkRlcGFyc2Ugb3V0cHV0IGlzIHVuY2hhbmdl ZCB3aGVuZXZlciBhIHNpbmdsZSB3cml0dGVuIG5hbWUgYWxyZWFkeQpyZXByZXNlbnRlZCBldmVy eSBjb2x1bW4ncyBvcGVyYXRvciBleGFjdGx5OyBpbiBwYXJ0aWN1bGFyIG5vIGV4cGVjdGVkCm91 dHB1dCBvdXRzaWRlIHRoZSBuZXcgdGVzdHMgY2hhbmdlcy4KCk9ubHkgdGhlIHJhdy1wYXJzZSBy ZXByZXNlbnRhdGlvbiBjaGFuZ2VzIHNoYXBlIC0tIFN1Ykxpbmsub3Blck5hbWUKYWxyZWFkeSBy b3VuZC10cmlwcyBhIG5lc3RlZCBsaXN0LCBzdG9yZWQgcnVsZXMga2VlcCB0aGUgc2FtZQpwb3N0 LWFuYWx5c2lzIHRlc3RleHByLCBhbmQgbm90aGluZyByZWFkcyBvcGVyTmFtZSBmcm9tIHN0b3Jl ZCB0cmVlcyAtLQpzbyBubyBjYXR2ZXJzaW9uIGJ1bXAgaXMgcmVxdWlyZWQuCgpEaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tLzM4NTY4MzQuMTc4MzA4Nzg4NkBzc3MucGdoLnBhLnVzCi0t LQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1zdWJxdWVyeS5zZ21sICAgICAgICAgIHwgIDQwICsr KwogZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICst CiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAgfCAgMTEgLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgMTExICsrKysr Ky0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMTAg Ky0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL29wZXJhdG9yX3F1YWxpZnkub3V0ICAgICB8IDI1OSAr KysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnku c3FsICAgICB8IDEyOSArKysrKysrKy0KIDcgZmlsZXMgY2hhbmdlZCwgNTI0IGluc2VydGlvbnMo KyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMt c3VicXVlcnkuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtc3VicXVlcnkuc2dtbAppbmRl eCBmOTU0ZjNiZjEzLi5lZWYwZTgzODJmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9m dW5jLXN1YnF1ZXJ5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1zdWJxdWVyeS5z Z21sCkBAIC0yNjMsNiArMjYzLDI4IEBAIFdIRVJFIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSB0YWIy IFdIRVJFIGNvbDIgPSB0YWIxLmNvbDIpOwogICAgYW5kIGF0IGxlYXN0IG9uZSBjb21wYXJpc29u IHJldHVybnMgTlVMTC4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgQXMgaW4gYSBkaXJlY3Qg cm93LWNvbnN0cnVjdG9yIGNvbXBhcmlzb24sIHRoZSB3cml0dGVuCisgICA8cmVwbGFjZWFibGU+ b3BlcmF0b3I8L3JlcGxhY2VhYmxlPidzIGJhcmUgbmFtZSBpcyByZXNvbHZlZCBpbmRlcGVuZGVu dGx5CisgICBmb3IgZWFjaCBwYWlyIG9mIGNvbHVtbnMuICBZb3UgY2FuIGluc3RlYWQgcGluIHRo ZSBvcGVyYXRvciB1c2VkIGZvciBlYWNoCisgICBjb2x1bW4gYnkgd3JpdGluZyBhbiBleHBsaWNp dCBwZXItY29sdW1uIG9wZXJhdG9yIGxpc3Qgd2l0aCB0aGUKKyAgIDxsaXRlcmFsPk9QRVJBVE9S KCk8L2xpdGVyYWw+IHN5bnRheCAoc2VlCisgICA8eHJlZiBsaW5rZW5kPSJzcWwtZXhwcmVzc2lv bnMtb3BlcmF0b3ItY2FsbHMiLz4pLCBnaXZpbmcgb25lIG9wZXJhdG9yIGZvcgorICAgZWFjaCBj b2x1bW4gb2YgdGhlIHJvdzoKKzxzeW5vcHNpcz4KKzxyZXBsYWNlYWJsZT5yb3dfY29uc3RydWN0 b3I8L3JlcGxhY2VhYmxlPiBPUEVSQVRPUig8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2Vh YmxlPiA8b3B0aW9uYWw+LCA8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiAuLi4g PC9vcHRpb25hbD4pIEFOWSAoPHJlcGxhY2VhYmxlPnN1YnF1ZXJ5PC9yZXBsYWNlYWJsZT4pCis8 L3N5bm9wc2lzPgorICAgVGhlIGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgb25lIG9wZXJhdG9y IHBlciBjb2x1bW4sIGFuZCBlYWNoIG9wZXJhdG9yCisgICBtYXkgYmUgc2NoZW1hLXF1YWxpZmll ZCBpbmRlcGVuZGVudGx5LgorICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PiBpdHNlbGYgZmFsbHMgYmFjayB0byB0aGlzIGZvcm0gd2hlbgorICAgZGVwYXJzaW5nIGEgc3Rv cmVkIHN1YnF1ZXJ5IGNvbXBhcmlzb24gKGZvciBleGFtcGxlIGluIGEgdmlldyBkZWZpbml0aW9u KQorICAgd2hvc2UgcGVyLWNvbHVtbiBvcGVyYXRvcnMgY2Fubm90IGFsbCBiZSByZWNvdmVyZWQg ZnJvbSBvbmUgd3JpdHRlbiBuYW1lLgorICAgSW4gcGFydGljdWxhciwgYSByb3ctd2lzZSA8dG9r ZW4+SU48L3Rva2VuPiBpcyBkaXNwbGF5ZWQgYXMKKyAgIDxsaXRlcmFsPk9QRVJBVE9SKC4uLikg QU5ZPC9saXRlcmFsPiB3aGVuZXZlciBhIHBsYWluIDx0b2tlbj5JTjwvdG9rZW4+CisgICB3b3Vs ZCBub3QgcmVzb2x2ZSBldmVyeSBjb2x1bW4ncyBlcXVhbGl0eSBvcGVyYXRvciB0byB0aGUgb3Bl cmF0b3IKKyAgIG9yaWdpbmFsbHkgc2VsZWN0ZWQuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAg IFNlZSA8eHJlZiBsaW5rZW5kPSJyb3ctd2lzZS1jb21wYXJpc29uIi8+IGZvciBkZXRhaWxzIGFi b3V0IHRoZSBtZWFuaW5nCiAgICBvZiBhIHJvdyBjb25zdHJ1Y3RvciBjb21wYXJpc29uLgpAQCAt MzE5LDYgKzM0MSwxNSBAQCBXSEVSRSBFWElTVFMgKFNFTEVDVCAxIEZST00gdGFiMiBXSEVSRSBj b2wyID0gdGFiMS5jb2wyKTsKICAgIGFuZCBhdCBsZWFzdCBvbmUgY29tcGFyaXNvbiByZXR1cm5z IE5VTEwuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRoZSA8cmVwbGFjZWFibGU+b3BlcmF0 b3I8L3JlcGxhY2VhYmxlPiBjYW4gYWxzbyBiZSB3cml0dGVuIGFzIGFuIGV4cGxpY2l0CisgICBw ZXItY29sdW1uIG9wZXJhdG9yIGxpc3QsIGV4YWN0bHkgYXMgZGVzY3JpYmVkIGZvciA8dG9rZW4+ QU5ZPC90b2tlbj4KKyAgIChzZWUgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXN1YnF1ZXJ5LWFu eS1zb21lIi8+KToKKzxzeW5vcHNpcz4KKzxyZXBsYWNlYWJsZT5yb3dfY29uc3RydWN0b3I8L3Jl cGxhY2VhYmxlPiBPUEVSQVRPUig8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiA8 b3B0aW9uYWw+LCA8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiAuLi4gPC9vcHRp b25hbD4pIEFMTCAoPHJlcGxhY2VhYmxlPnN1YnF1ZXJ5PC9yZXBsYWNlYWJsZT4pCis8L3N5bm9w c2lzPgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBTZWUgPHhyZWYgbGlua2VuZD0icm93LXdp c2UtY29tcGFyaXNvbiIvPiBmb3IgZGV0YWlscyBhYm91dCB0aGUgbWVhbmluZwogICAgb2YgYSBy b3cgY29uc3RydWN0b3IgY29tcGFyaXNvbi4KQEAgLTM0Nyw2ICszNzgsMTUgQEAgV0hFUkUgRVhJ U1RTIChTRUxFQ1QgMSBGUk9NIHRhYjIgV0hFUkUgY29sMiA9IHRhYjEuY29sMik7CiAgICBjb21w YXJlZCByb3ctd2lzZSB0byB0aGUgc2luZ2xlIHN1YnF1ZXJ5IHJlc3VsdCByb3cuCiAgIDwvcGFy YT4KIAorICA8cGFyYT4KKyAgIFRoZSA8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxl PiBjYW4gYWxzbyBiZSB3cml0dGVuIGFzIGFuIGV4cGxpY2l0CisgICBwZXItY29sdW1uIG9wZXJh dG9yIGxpc3QsIGV4YWN0bHkgYXMgZGVzY3JpYmVkIGZvciA8dG9rZW4+QU5ZPC90b2tlbj4KKyAg IChzZWUgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXN1YnF1ZXJ5LWFueS1zb21lIi8+KToKKzxz eW5vcHNpcz4KKzxyZXBsYWNlYWJsZT5yb3dfY29uc3RydWN0b3I8L3JlcGxhY2VhYmxlPiBPUEVS QVRPUig8cmVwbGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCA8cmVw bGFjZWFibGU+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiAuLi4gPC9vcHRpb25hbD4pICg8cmVwbGFj ZWFibGU+c3VicXVlcnk8L3JlcGxhY2VhYmxlPikKKzwvc3lub3BzaXM+CisgIDwvcGFyYT4KKwog ICA8cGFyYT4KICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJyb3ctd2lzZS1jb21wYXJpc29uIi8+IGZv ciBkZXRhaWxzIGFib3V0IHRoZSBtZWFuaW5nCiAgICBvZiBhIHJvdyBjb25zdHJ1Y3RvciBjb21w YXJpc29uLgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sIGIvZG9jL3NyYy9z Z21sL3N5bnRheC5zZ21sCmluZGV4IDA5NGMyYzJmZmIuLjUxNjU1MzM4MTMgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwK QEAgLTExMzksNyArMTEzOSw5IEBAIFNFTEVDVCAzIE9QRVJBVE9SKHBnX2NhdGFsb2cuKykgNDsK ICAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1udWxsaWYiLz4pLiAgQSByb3ctY29u c3RydWN0b3IgY29tcGFyaXNvbgogICAgIGdvZXMgYSBzdGVwIGZ1cnRoZXIgYW5kIGFjY2VwdHMg YSBjb21tYS1zZXBhcmF0ZWQgPGVtcGhhc2lzPmxpc3Q8L2VtcGhhc2lzPgogICAgIG9mIG9wZXJh dG9ycyBpbnNpZGUgPGxpdGVyYWw+T1BFUkFUT1IoKTwvbGl0ZXJhbD4sIG9uZSBmb3IgZWFjaCBj b2x1bW4gb2YKLSAgICB0aGUgY29tcGFyZWQgcm93cyAoc2VlIDx4cmVmIGxpbmtlbmQ9InJvdy13 aXNlLWNvbXBhcmlzb24iLz4pLgorICAgIHRoZSBjb21wYXJlZCByb3dzIChzZWUgPHhyZWYgbGlu a2VuZD0icm93LXdpc2UtY29tcGFyaXNvbiIvPik7IHRoaXMKKyAgICBpbmNsdWRlcyByb3ctY29u c3RydWN0b3IgY29tcGFyaXNvbnMgYWdhaW5zdCBhIHN1YnF1ZXJ5CisgICAgKHNlZSA8eHJlZiBs aW5rZW5kPSJmdW5jdGlvbnMtc3VicXVlcnkiLz4pLgogICAgPC9wYXJhPgogCiAgICA8bm90ZT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IGJkMTZlNzNhODguLmE4NjMwZTZjMzQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMjAyMCwxNyArMjAyMCw2IEBAIHRyYW5zZm9ybVN1Ykxp bmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCQlMaXN0CSAgICpyaWdo dF9saXN0OwogCQlMaXN0Q2VsbCAgICpsOwogCi0JCS8qCi0JCSAqIFRFTVBPUkFSWTogcmVqZWN0 IGEgcGVyLWNvbHVtbiBvcGVyYXRvciBsaXN0IGhlcmUuICBBIGxhdGVyIHBhdGNoCi0JCSAqIHRl YWNoZXMgdGhpcyBwYXRoIChhbmQgcnVsZXV0aWxzLmMpIHRvIGFwcGx5IHRoZSBuJ3RoIG5hbWUg dG8gdGhlCi0JCSAqIG4ndGggY29sdW1uLCBhdCB3aGljaCBwb2ludCB0aGlzIGNoZWNrIGdvZXMg YXdheS4gIE5vdGUgdGhpcyBhbHNvCi0JCSAqIGNhdGNoZXMgbGlzdHMgYXJyaXZpbmcgdmlhIHRy YW5zZm9ybUFFeHByT3AncyBjb252ZXJzaW9uIG9mICJyb3cgb3AKLQkJICogKHN1YnNlbGVjdCki IHRvIGEgUk9XQ09NUEFSRSBzdWJsaW5rLCB3aGljaCBwYXNzZXMgdGhlIEFfRXhwcidzCi0JCSAq IG5hbWUgdGhyb3VnaCBvcGVyTmFtZS4KLQkJICovCi0JCXJlamVjdF9vcGVyYXRvcl9uYW1lX2xp c3QocHN0YXRlLCBzdWJsaW5rLT5vcGVyTmFtZSwKLQkJCQkJCQkJICBzdWJsaW5rLT5sb2NhdGlv bik7Ci0KIAkJLyoKIAkJICogSWYgdGhlIHNvdXJjZSB3YXMgInggSU4gKHNlbGVjdCkiLCBjb252 ZXJ0IHRvICJ4ID0gQU5ZIChzZWxlY3QpIi4KIAkJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKaW5kZXggN2NjYTE1YmJiNS4uNDg3ZWU0YjZlMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYwpAQCAtMTI1MjYsNyArMTI1MjYsMTEgQEAgZ2V0X3N1YmxpbmtfZXhwcihTdWJMaW5rICpz dWJsaW5rLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiB7CiAJU3RyaW5nSW5mbwlidWYgPSBj b250ZXh0LT5idWY7CiAJUXVlcnkJICAgKnF1ZXJ5ID0gKFF1ZXJ5ICopIChzdWJsaW5rLT5zdWJz ZWxlY3QpOworCUxpc3QJICAgKm9wbm9zID0gTklMOworCUxpc3QJICAgKmx0eXBlcyA9IE5JTDsK KwlMaXN0CSAgICpydHlwZXMgPSBOSUw7CiAJY2hhcgkgICAqb3BuYW1lID0gTlVMTDsKKwlib29s CQlhbGxfYmFyZV9lcSA9IHRydWU7CiAJYm9vbAkJbmVlZF9wYXJlbjsKIAogCWlmIChzdWJsaW5r LT5zdWJMaW5rVHlwZSA9PSBBUlJBWV9TVUJMSU5LKQpAQCAtMTI1MzUsMTEgKzEyNTM5LDExIEBA IGdldF9zdWJsaW5rX2V4cHIoU3ViTGluayAqc3VibGluaywgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0KQogCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CiAKIAkvKgotCSAqIE5vdGUg dGhhdCB3ZSBwcmludCB0aGUgbmFtZSBvZiBvbmx5IHRoZSBmaXJzdCBvcGVyYXRvciwgd2hlbiB0 aGVyZSBhcmUKLQkgKiBtdWx0aXBsZSBjb21iaW5pbmcgb3BlcmF0b3JzLiAgVGhpcyBpcyBhbiBh cHByb3hpbWF0aW9uIHRoYXQgY291bGQgZ28KLQkgKiB3cm9uZyBpbiB2YXJpb3VzIHNjZW5hcmlv cyAob3BlcmF0b3JzIGluIGRpZmZlcmVudCBzY2hlbWFzLCByZW5hbWVkCi0JICogb3BlcmF0b3Jz LCBldGMpIGJ1dCB0aGVyZSBpcyBub3QgYSB3aG9sZSBsb3Qgd2UgY2FuIGRvIGFib3V0IGl0LCBz aW5jZQotCSAqIHRoZSBzeW50YXggYWxsb3dzIG9ubHkgb25lIG9wZXJhdG9yIHRvIGJlIHNob3du LgorCSAqIERpc3NlY3QgdGhlIHRlc3RleHByIGludG8gdGhlIHBlci1jb2x1bW4gY29tYmluaW5n IG9wZXJhdG9ycywgcHJpbnRpbmcKKwkgKiB0aGUgbGVmdGhhbmQgZXhwcmVzc2lvbihzKSBhcyB3 ZSBnby4gIEhpc3RvcmljYWxseSB3ZSBwcmludGVkIG9ubHkgdGhlCisJICogZmlyc3Qgb3BlcmF0 b3IncyBuYW1lIGZvciB0aGUgd2hvbGUgY29tcGFyaXNvbjsgbm93IHRoYXQgdGhlIHN5bnRheAor CSAqIGFjY2VwdHMgYW4gZXhwbGljaXQgcGVyLWNvbHVtbiBvcGVyYXRvciBsaXN0IHdlIGNhbiBy ZXByZXNlbnQgdGhlCisJICogY29tYmluaW5nIG9wZXJhdG9ycyBleGFjdGx5IChzZWUgdGhlIGVt aXNzaW9uIHJ1bGUgYmVsb3cpLgogCSAqLwogCWlmIChzdWJsaW5rLT50ZXN0ZXhwcikKIAl7CkBA IC0xMjU0OSw5ICsxMjU1Myw5IEBAIGdldF9zdWJsaW5rX2V4cHIoU3ViTGluayAqc3VibGluaywg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQkJT3BFeHByCSAgICpvcGV4cHIgPSAoT3BFeHBy ICopIHN1YmxpbmstPnRlc3RleHByOwogCiAJCQlnZXRfcnVsZV9leHByKGxpbml0aWFsKG9wZXhw ci0+YXJncyksIGNvbnRleHQsIHRydWUpOwotCQkJb3BuYW1lID0gZ2VuZXJhdGVfb3BlcmF0b3Jf bmFtZShvcGV4cHItPm9wbm8sCi0JCQkJCQkJCQkJCWV4cHJUeXBlKGxpbml0aWFsKG9wZXhwci0+ YXJncykpLAotCQkJCQkJCQkJCQlleHByVHlwZShsc2Vjb25kKG9wZXhwci0+YXJncykpKTsKKwkJ CW9wbm9zID0gbGFwcGVuZF9vaWQob3Bub3MsIG9wZXhwci0+b3Bubyk7CisJCQlsdHlwZXMgPSBs YXBwZW5kX29pZChsdHlwZXMsIGV4cHJUeXBlKGxpbml0aWFsKG9wZXhwci0+YXJncykpKTsKKwkJ CXJ0eXBlcyA9IGxhcHBlbmRfb2lkKHJ0eXBlcywgZXhwclR5cGUobHNlY29uZChvcGV4cHItPmFy Z3MpKSk7CiAJCX0KIAkJZWxzZSBpZiAoSXNBKHN1YmxpbmstPnRlc3RleHByLCBCb29sRXhwcikp CiAJCXsKQEAgLTEyNTYzLDE0ICsxMjU2NywxNCBAQCBnZXRfc3VibGlua19leHByKFN1Ykxpbmsg KnN1YmxpbmssIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJCXNlcCA9ICIiOwogCQkJZm9y ZWFjaChsLCAoKEJvb2xFeHByICopIHN1YmxpbmstPnRlc3RleHByKS0+YXJncykKIAkJCXsKLQkJ CQlPcEV4cHIJICAgKm9wZXhwciA9IGxmaXJzdF9ub2RlKE9wRXhwciwgbCk7CisJCQkJTm9kZQkg ICAqYXJtID0gc3RyaXBfaW1wbGljaXRfY29lcmNpb25zKGxmaXJzdChsKSk7CisJCQkJT3BFeHBy CSAgICpvcGV4cHIgPSBjYXN0Tm9kZShPcEV4cHIsIGFybSk7CiAKIAkJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKGJ1Ziwgc2VwKTsKIAkJCQlnZXRfcnVsZV9leHByKGxpbml0aWFsKG9wZXhwci0+ YXJncyksIGNvbnRleHQsIHRydWUpOwotCQkJCWlmICghb3BuYW1lKQotCQkJCQlvcG5hbWUgPSBn ZW5lcmF0ZV9vcGVyYXRvcl9uYW1lKG9wZXhwci0+b3BubywKLQkJCQkJCQkJCQkJCQlleHByVHlw ZShsaW5pdGlhbChvcGV4cHItPmFyZ3MpKSwKLQkJCQkJCQkJCQkJCQlleHByVHlwZShsc2Vjb25k KG9wZXhwci0+YXJncykpKTsKKwkJCQlvcG5vcyA9IGxhcHBlbmRfb2lkKG9wbm9zLCBvcGV4cHIt Pm9wbm8pOworCQkJCWx0eXBlcyA9IGxhcHBlbmRfb2lkKGx0eXBlcywgZXhwclR5cGUobGluaXRp YWwob3BleHByLT5hcmdzKSkpOworCQkJCXJ0eXBlcyA9IGxhcHBlbmRfb2lkKHJ0eXBlcywgZXhw clR5cGUobHNlY29uZChvcGV4cHItPmFyZ3MpKSk7CiAJCQkJc2VwID0gIiwgIjsKIAkJCX0KIAkJ CWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKQEAgLTEyNTc5LDEyICsxMjU4MywyMCBA QCBnZXRfc3VibGlua19leHByKFN1YkxpbmsgKnN1YmxpbmssIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCkKIAkJewogCQkJLyogbXVsdGlwbGUgY29tYmluaW5nIG9wZXJhdG9ycywgPCA8PSA+ID49 IGNhc2VzICovCiAJCQlSb3dDb21wYXJlRXhwciAqcmNleHByID0gKFJvd0NvbXBhcmVFeHByICop IHN1YmxpbmstPnRlc3RleHByOworCQkJTGlzdENlbGwgICAqb3Bub19jZWxsOworCQkJTGlzdENl bGwgICAqbGFyZ19jZWxsOworCQkJTGlzdENlbGwgICAqcmFyZ19jZWxsOwogCiAJCQlhcHBlbmRT dHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CiAJCQlnZXRfcnVsZV9leHByKChOb2RlICopIHJjZXhw ci0+bGFyZ3MsIGNvbnRleHQsIHRydWUpOwotCQkJb3BuYW1lID0gZ2VuZXJhdGVfb3BlcmF0b3Jf bmFtZShsaW5pdGlhbF9vaWQocmNleHByLT5vcG5vcyksCi0JCQkJCQkJCQkJCWV4cHJUeXBlKGxp bml0aWFsKHJjZXhwci0+bGFyZ3MpKSwKLQkJCQkJCQkJCQkJZXhwclR5cGUobGluaXRpYWwocmNl eHByLT5yYXJncykpKTsKKwkJCWZvcnRocmVlKG9wbm9fY2VsbCwgcmNleHByLT5vcG5vcywKKwkJ CQkJIGxhcmdfY2VsbCwgcmNleHByLT5sYXJncywKKwkJCQkJIHJhcmdfY2VsbCwgcmNleHByLT5y YXJncykKKwkJCXsKKwkJCQlvcG5vcyA9IGxhcHBlbmRfb2lkKG9wbm9zLCBsZmlyc3Rfb2lkKG9w bm9fY2VsbCkpOworCQkJCWx0eXBlcyA9IGxhcHBlbmRfb2lkKGx0eXBlcywgZXhwclR5cGUoKE5v ZGUgKikgbGZpcnN0KGxhcmdfY2VsbCkpKTsKKwkJCQlydHlwZXMgPSBsYXBwZW5kX29pZChydHlw ZXMsIGV4cHJUeXBlKChOb2RlICopIGxmaXJzdChyYXJnX2NlbGwpKSk7CisJCQl9CiAJCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7CiAJCX0KIAkJZWxzZQpAQCAtMTI1OTIsNiArMTI2 MDQsNzEgQEAgZ2V0X3N1YmxpbmtfZXhwcihTdWJMaW5rICpzdWJsaW5rLCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQpCiAJCQkJIChpbnQpIG5vZGVUYWcoc3VibGluay0+dGVzdGV4cHIpKTsKIAl9 CiAKKwkvKgorCSAqIFJlc29sdmUgdGhlIHBlci1jb2x1bW4gb3BlcmF0b3IgbmFtZXMgYW5kIGRl Y2lkZSBob3cgdG8gc3BlbGwgdGhlCisJICogY29tYmluaW5nIG9wZXJhdG9yKHMpLiAgVGhlIHVu ZGVjb3JhdGVkIHN5bnRheCB3cml0ZXMgb25lIG9wZXJhdG9yIG5hbWUKKwkgKiB0aGF0IHJlcGFy c2VzIGJ5IHJlc29sdmluZyBpdCBpbmRlcGVuZGVudGx5IGZvciBldmVyeSBjb2x1bW4sIHNvIGl0 IGlzCisJICogaG9uZXN0IG9ubHkgd2hlbiBhIHNpbmdsZSBiYXJlIG5hbWUgcmVjb3ZlcnMgZWFj aCBjb2x1bW4ncyBvcGVyYXRvcjogbm8KKwkgKiBjb2x1bW4gbmVlZHMgc2NoZW1hLXF1YWxpZmlj YXRpb24gYW5kIGV2ZXJ5IGNvbHVtbiBzaGFyZXMgdGhlIHNhbWUKKwkgKiBvcGVyYXRvciBuYW1l LiAgSW4gdGhhdCBjYXNlIHdlIHByaW50IHRoYXQgc2hhcmVkIG5hbWUsIGFzIGJlZm9yZS4KKwkg KiBPdGhlcndpc2Ugd2UgZW1pdCBhbiBleHBsaWNpdCBwZXItY29sdW1uIG9wZXJhdG9yIGxpc3Qs IE9QRVJBVE9SKG9wMSwKKwkgKiBvcDIsIC4uLiksIHdoaWNoIHBpbnMgZWFjaCBjb2x1bW4ncyBv cGVyYXRvciBpbmRlcGVuZGVudGx5LiAgKEZvciBvbmUKKwkgKiBjb2x1bW4gdGhlIGxpc3QgZm9y bSBkZWdlbmVyYXRlcyB0byB0aGUgZmFtaWxpYXIgT1BFUkFUT1Iob3ApCisJICogZGVjb3JhdGlv bi4pICBMaWtld2lzZSwgQU5ZX1NVQkxJTksgaXMgZGlzcGxheWVkIGFzIElOIG9ubHkgaWYgYSBw bGFpbgorCSAqIElOIC0tIHdoaWNoIGNvbXBhcmVzIHdpdGggdGhlIGJhcmUgbmFtZSAiPSIgLS0g d291bGQgcmVwYXJzZSB0byB0aGUKKwkgKiB2ZXJ5IHNhbWUgb3BlcmF0b3JzLgorCSAqLworCWlm IChvcG5vcyAhPSBOSUwpCisJeworCQlMaXN0CSAgICpvcG5hbWVzID0gTklMOworCQlib29sCQlu ZWVkX29wX2xpc3QgPSBmYWxzZTsKKwkJY2hhcgkgICAqZmlyc3RuYW1lID0gTlVMTDsKKwkJTGlz dENlbGwgICAqbGMxOworCQlMaXN0Q2VsbCAgICpsYzI7CisJCUxpc3RDZWxsICAgKmxjMzsKKwor CQlmb3J0aHJlZShsYzEsIG9wbm9zLCBsYzIsIGx0eXBlcywgbGMzLCBydHlwZXMpCisJCXsKKwkJ CWJvb2wJCW5lZWRzX3F1YWw7CisJCQljaGFyCSAgICp0aGlzbmFtZTsKKworCQkJdGhpc25hbWUg PSBnZW5lcmF0ZV9vcGVyYXRvcl9uYW1lX2V4dGVuZGVkKGxmaXJzdF9vaWQobGMxKSwKKwkJCQkJ CQkJCQkJCQkgICBsZmlyc3Rfb2lkKGxjMiksCisJCQkJCQkJCQkJCQkJICAgbGZpcnN0X29pZChs YzMpLAorCQkJCQkJCQkJCQkJCSAgICZuZWVkc19xdWFsKTsKKwkJCW9wbmFtZXMgPSBsYXBwZW5k KG9wbmFtZXMsIHRoaXNuYW1lKTsKKwkJCWlmIChuZWVkc19xdWFsIHx8IHN0cmNtcCh0aGlzbmFt ZSwgIj0iKSAhPSAwKQorCQkJCWFsbF9iYXJlX2VxID0gZmFsc2U7CisJCQlpZiAoZmlyc3RuYW1l ID09IE5VTEwpCisJCQkJZmlyc3RuYW1lID0gdGhpc25hbWU7CisJCQllbHNlIGlmIChzdHJjbXAo Zmlyc3RuYW1lLCB0aGlzbmFtZSkgIT0gMCkKKwkJCQluZWVkX29wX2xpc3QgPSB0cnVlOworCQkJ aWYgKG5lZWRzX3F1YWwpCisJCQkJbmVlZF9vcF9saXN0ID0gdHJ1ZTsKKwkJfQorCisJCWlmIChu ZWVkX29wX2xpc3QpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIG9wYnVmOworCQkJYm9vbAkJZmly c3QgPSB0cnVlOworCisJCQlpbml0U3RyaW5nSW5mbygmb3BidWYpOworCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmb3BidWYsICJPUEVSQVRPUigiKTsKKwkJCWZvcmVhY2gobGMxLCBvcG5hbWVz KQorCQkJeworCQkJCWlmIChmaXJzdCkKKwkJCQkJZmlyc3QgPSBmYWxzZTsKKwkJCQllbHNlCisJ CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJm9wYnVmLCAiLCAiKTsKKwkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZvcGJ1ZiwgKGNoYXIgKikgbGZpcnN0KGxjMSkpOworCQkJfQorCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoJm9wYnVmLCAnKScpOworCQkJb3BuYW1lID0gb3BidWYuZGF0YTsK KwkJfQorCQllbHNlCisJCQlvcG5hbWUgPSBmaXJzdG5hbWU7CisJfQorCiAJbmVlZF9wYXJlbiA9 IHRydWU7CiAKIAlzd2l0Y2ggKHN1YmxpbmstPnN1YkxpbmtUeXBlKQpAQCAtMTI2MDEsNyArMTI2 NzgsNyBAQCBnZXRfc3VibGlua19leHByKFN1YkxpbmsgKnN1YmxpbmssIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCkKIAkJCWJyZWFrOwogCiAJCWNhc2UgQU5ZX1NVQkxJTks6Ci0JCQlpZiAoc3Ry Y21wKG9wbmFtZSwgIj0iKSA9PSAwKQkvKiBSZXByZXNlbnQgPSBBTlkgYXMgSU4gKi8KKwkJCWlm IChhbGxfYmFyZV9lcSkJLyogUmVwcmVzZW50ID0gQU5ZIGFzIElOICovCiAJCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsICIgSU4gIik7CiAJCQllbHNlCiAJCQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICIgJXMgQU5ZICIsIG9wbmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDY5MGQy OTc2Y2QuLmJmMzQzY2JlYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC05ODcsMTAgKzk4Nywx MiBAQCB0eXBlZGVmIHN0cnVjdCBCb29sRXhwcgogICogcGxhbm5pbmcuCiAgKgogICogTk9URTog aW4gdGhlIHJhdyBvdXRwdXQgb2YgZ3JhbS55LCB0ZXN0ZXhwciBjb250YWlucyBqdXN0IHRoZSBy YXcgZm9ybQotICogb2YgdGhlIGxlZnRoYW5kIGV4cHJlc3Npb24gKGlmIGFueSksIGFuZCBvcGVy TmFtZSBpcyB0aGUgU3RyaW5nIG5hbWUgb2YKLSAqIHRoZSBjb21iaW5pbmcgb3BlcmF0b3IuICBB bHNvLCBzdWJzZWxlY3QgaXMgYSByYXcgcGFyc2V0cmVlLiAgRHVyaW5nIHBhcnNlCi0gKiBhbmFs eXNpcywgdGhlIHBhcnNlciB0cmFuc2Zvcm1zIHRlc3RleHByIGludG8gYSBjb21wbGV0ZSBib29s ZWFuIGV4cHJlc3Npb24KLSAqIHRoYXQgY29tcGFyZXMgdGhlIGxlZnRoYW5kIHZhbHVlKHMpIHRv IFBBUkFNX1NVQkxJTksgbm9kZXMgcmVwcmVzZW50aW5nIHRoZQorICogb2YgdGhlIGxlZnRoYW5k IGV4cHJlc3Npb24gKGlmIGFueSksIGFuZCBvcGVyTmFtZSBpcyB0aGUgcG9zc2libHktcXVhbGlm aWVkCisgKiBuYW1lIG9mIHRoZSBjb21iaW5pbmcgb3BlcmF0b3IgKGEgTGlzdCBvZiBTdHJpbmcp LCBvciBhIExpc3Qgb2Ygc3VjaCBuYW1lcywKKyAqIG9uZSBwZXIgY29sdW1uLCB3aGVuIHRoZSBj b21wYXJpc29uIHdhcyB3cml0dGVuIHdpdGggYW4gZXhwbGljaXQgcGVyLWNvbHVtbgorICogb3Bl cmF0b3IgbGlzdC4gIEFsc28sIHN1YnNlbGVjdCBpcyBhIHJhdyBwYXJzZXRyZWUuICBEdXJpbmcg cGFyc2UgYW5hbHlzaXMsCisgKiB0aGUgcGFyc2VyIHRyYW5zZm9ybXMgdGVzdGV4cHIgaW50byBh IGNvbXBsZXRlIGJvb2xlYW4gZXhwcmVzc2lvbiB0aGF0CisgKiBjb21wYXJlcyB0aGUgbGVmdGhh bmQgdmFsdWUocykgdG8gUEFSQU1fU1VCTElOSyBub2RlcyByZXByZXNlbnRpbmcgdGhlCiAgKiBv dXRwdXQgY29sdW1ucyBvZiB0aGUgc3Vic2VsZWN0LiAgQW5kIHN1YnNlbGVjdCBpcyB0cmFuc2Zv cm1lZCB0byBhIFF1ZXJ5LgogICogVGhpcyBpcyB0aGUgcmVwcmVzZW50YXRpb24gc2VlbiBpbiBz YXZlZCBydWxlcyBhbmQgaW4gdGhlIHJld3JpdGVyLgogICoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvb3BlcmF0b3JfcXVhbGlmeS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL29wZXJhdG9yX3F1YWxpZnkub3V0CmluZGV4IGY2ZDcwZTg4NmUuLmMwODg3ZTYz MTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3BlcmF0b3JfcXVhbGlm eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcGVyYXRvcl9xdWFsaWZ5Lm91 dApAQCAtNDQ0LDcgKzQ0NCw3IEBAIEVSUk9SOiAgbnVtYmVyIG9mIG9wZXJhdG9ycyAoMykgZG9l cyBub3QgbWF0Y2ggbnVtYmVyIG9mIGNvbHVtbnMgKDIpIGF0IGNoYXJhY3RlCiAtLSBUb28gZmV3 IG9wZXJhdG9ycyBmb3IgdGhlIHJvdyB3aWR0aCAodHdvIG9wZXJhdG9ycywgdGhyZWUgY29sdW1u cykuCiBTRUxFQ1QgUk9XKDEsMiwzKSBPUEVSQVRPUihwZ19jYXRhbG9nLjwsIHBnX2NhdGFsb2cu PCkgUk9XKDEsMiw0KTsKIEVSUk9SOiAgbnVtYmVyIG9mIG9wZXJhdG9ycyAoMikgZG9lcyBub3Qg bWF0Y2ggbnVtYmVyIG9mIGNvbHVtbnMgKDMpIGF0IGNoYXJhY3RlciAxOQotLS0gQSBsaXN0IGlz IG9ubHkgbWVhbmluZ2Z1bCBmb3Igcm93IChhbmQsIGxhdGVyLCBzdWJxdWVyeSkgY29tcGFyaXNv bnMuCistLSBBIGxpc3QgaXMgb25seSBtZWFuaW5nZnVsIGZvciByb3cgYW5kIHN1YnF1ZXJ5IGNv bXBhcmlzb25zLgogLS0gU2NhbGFyIGluZml4IHJlamVjdHMgaXQuCiBTRUxFQ1QgMSBPUEVSQVRP UihwZ19jYXRhbG9nLj0sIHBnX2NhdGFsb2cuPSkgMjsKIEVSUk9SOiAgYSBsaXN0IG9mIG9wZXJh dG9ycyBpcyBvbmx5IGFsbG93ZWQgaW4gcm93IGFuZCBzdWJxdWVyeSBjb21wYXJpc29ucyBhdCBj aGFyYWN0ZXIgMTAKQEAgLTQ1Nyw5ICs0NTcsNiBAQCBFUlJPUjogIGEgbGlzdCBvZiBvcGVyYXRv cnMgaXMgb25seSBhbGxvd2VkIGluIHJvdyBhbmQgc3VicXVlcnkgY29tcGFyaXNvbnMgYXQgYwog LS0gT1JERVIgQlkgLi4uIFVTSU5HIHJlamVjdHMgaXQuCiBTRUxFQ1QgMSBGUk9NIHB1YmxpYy5v cV90IE9SREVSIEJZIGEgVVNJTkcgT1BFUkFUT1IocGdfY2F0YWxvZy48LCBwZ19jYXRhbG9nLjwp OwogRVJST1I6ICBhIGxpc3Qgb2Ygb3BlcmF0b3JzIGlzIG9ubHkgYWxsb3dlZCBpbiByb3cgYW5k IHN1YnF1ZXJ5IGNvbXBhcmlzb25zIGF0IGNoYXJhY3RlciA0NAotLS0gU3VibGlua3MgcmVqZWN0 IG9wZXJhdG9yIGxpc3RzIGluIHRoaXMgcGF0Y2ggKGEgbGF0ZXIgcGF0Y2ggZW5hYmxlcyB0aGVt KS4KLVNFTEVDVCAoMSwgMikgT1BFUkFUT1IocGdfY2F0YWxvZy49LCBwZ19jYXRhbG9nLj0pIEFO WSAoU0VMRUNUIDEsIDIpOwotRVJST1I6ICBhIGxpc3Qgb2Ygb3BlcmF0b3JzIGlzIG9ubHkgYWxs b3dlZCBpbiByb3cgYW5kIHN1YnF1ZXJ5IGNvbXBhcmlzb25zIGF0IGNoYXJhY3RlciAxNQogLS0g RERMIGRlZmluaXRpb24gaXRlbXMgKGhlcmUgYSBDUkVBVEUgT1BFUkFUT1IgY29tbXV0YXRvcikg dGFrZSBhIHNpbmdsZQogLS0gb3BlcmF0b3IgbmFtZS4gIGRlZmluZS5jIGhhcyBubyBQYXJzZVN0 YXRlLCBzbyB0aGlzIGVycm9yIGNhcnJpZXMgbm8gcG9zaXRpb24uCiBDUkVBVEUgT1BFUkFUT1Ig IyMjIChsZWZ0YXJnID0gaW50NCwgcmlnaHRhcmcgPSBpbnQ0LCBwcm9jZWR1cmUgPSBpbnQ0ZXEs CkBAIC01MDEsMyArNDk4LDI1NyBAQCBEUk9QIFZJRVcgb3Ffdl9yb3djbXBfbWl4ZWRfcmVsb2Fk OwogLS0gTk9URTogb3Ffdl9yb3djbXAgYW5kIG9xX3Zfcm93Y21wX21peGVkIGFyZSBpbnRlbnRp b25hbGx5IGtlcHQgKGxpa2UgdGhlIG90aGVyCiAtLSBvcV92Xyogdmlld3MpIHNvIHRoZSBwZ191 cGdyYWRlIHN1aXRlIGR1bXAvcmVzdG9yZXMgdGhlbSBhbmQgZXhlcmNpc2VzIHRoZQogLS0gcXVh bGlmaWVkIGRlcGFyc2UuCistLQorLS0gU3VicXVlcnkgY29tcGFyaXNvbnM6IEFOWS9BTEwgYW5k IHJvdy1vcC1zdWJxdWVyeSBzdWJsaW5rcyBhY2NlcHQgdGhlCistLSBwZXItY29sdW1uIG9wZXJh dG9yIGxpc3QgdG9vLCBhbmQgdGhlaXIgZGVwYXJzZSByZXByZXNlbnRzIHRoZSBjb21iaW5pbmcK Ky0tIG9wZXJhdG9ycyBleGFjdGx5IChpbiBwYXJ0aWN1bGFyLCBJTiBpcyBwcmludGVkIG9ubHkg d2hlbiBhIHBsYWluIElOCistLSB3b3VsZCByZXBhcnNlIHRvIHRoZSB2ZXJ5IHNhbWUgcGVyLWNv bHVtbiBvcGVyYXRvcnMpLgorLS0KKy0tIEEgbXVsdGktY29sdW1uIGNvbXBhcmlzb24gbXVzdCBm aW5kIGEgYnRyZWUgaW50ZXJwcmV0YXRpb24gZm9yIGV2ZXJ5CistLSBjb21iaW5pbmcgb3BlcmF0 b3IuICBBICI8PiIgaXMgaW50ZXJwcmV0ZWQgdGhyb3VnaCBpdHMgbmVnYXRvcidzIGJ0cmVlCist LSBlcXVhbGl0eSBtZW1iZXJzaGlwLCBzbyBsaW5rIGFsdF9vcHMuPD4gdG8gYWx0X29wcy49IChz dHJhdGVneSAzIG9mIHRoZQorLS0gb3BlcmF0b3IgY2xhc3MgYWJvdmUpIGluc3RlYWQgb2YgZXh0 ZW5kaW5nIHRoZSBjbGFzcy4KK0NSRUFURSBPUEVSQVRPUiBhbHRfb3BzLjw+IChsZWZ0YXJnID0g aW50NCwgcmlnaHRhcmcgPSBpbnQ0LCBwcm9jZWR1cmUgPSBpbnQ0bmUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmVnYXRvciA9IE9QRVJBVE9SKGFsdF9vcHMuPSkpOworLS0gVGhlIGxp c3Qgc3ludGF4IGlzIGRpcmVjdGx5IGFjY2VwdGFibGUgaW4gYWxsIHRocmVlIHN1YmxpbmsgZm9y bXMsIHdpdGgKKy0tIG1peGVkIGJhcmUvcXVhbGlmaWVkIG5hbWVzLgorU0VMRUNUICgxLCAyKSBP UEVSQVRPUihwZ19jYXRhbG9nLj0sIHBnX2NhdGFsb2cuPSkgQU5ZIChTRUxFQ1QgMSwgMikgQVMg dDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgKDEsIDIpIE9QRVJBVE9SKHBnX2Nh dGFsb2cuPSwgYWx0X29wcy49KSBBTlkgKFNFTEVDVCAxLCAyKSBBUyB0OworIHQgCistLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCAoMSwgMikgT1BFUkFUT1IoYWx0X29wcy48PiwgcGdfY2F0YWxv Zy48PikgQUxMIChTRUxFQ1QgMiwgMSkgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCist LSAicm93IG9wIChzdWJxdWVyeSkiIHJlYWNoZXMgdGhlIHN1YmxpbmsgdGhyb3VnaCB0cmFuc2Zv cm1BRXhwck9wJ3MKKy0tIFJPV0NPTVBBUkUgY29udmVyc2lvbjsgdGhlIGxpc3QgZmxvd3MgdGhy b3VnaCB0aGF0IHBhdGggYXMgd2VsbC4KK1NFTEVDVCAoMSwgMikgT1BFUkFUT1IoYWx0X29wcy48 LCBhbHRfb3BzLjwpIChTRUxFQ1QgMSwgMykgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQor CistLSBBIG9uZS1lbGVtZW50IGxpc3QgaXMgdGhlIHRyYWRpdGlvbmFsIHNpbmdsZS1vcGVyYXRv ciBmb3JtIChpbnZhcmlhbmNlCistLSBndWFyZDogdGhpcyBsaW5lIGlzIGFjY2VwdGVkIGJlZm9y ZSB0aGUgbGlzdCBncmFtbWFyIGxhbmRzKS4KK1NFTEVDVCAoMSwgMikgT1BFUkFUT1IocGdfY2F0 YWxvZy49KSBBTlkgKFNFTEVDVCAxLCAyKSBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisK Ky0tIFRoZSBvcGVyYXRvciBjb3VudCBtdXN0IG1hdGNoIHRoZSByb3cgd2lkdGguCitcc2V0IFZF UkJPU0lUWSB0ZXJzZQorU0VMRUNUICgxLCAyKSBPUEVSQVRPUihwZ19jYXRhbG9nLj0sIHBnX2Nh dGFsb2cuPSwgcGdfY2F0YWxvZy49KSBBTlkgKFNFTEVDVCAxLCAyKTsKK0VSUk9SOiAgbnVtYmVy IG9mIG9wZXJhdG9ycyAoMykgZG9lcyBub3QgbWF0Y2ggbnVtYmVyIG9mIGNvbHVtbnMgKDIpIGF0 IGNoYXJhY3RlciAxNQorXHNldCBWRVJCT1NJVFkgZGVmYXVsdAorLS0gVmlld3MgYnVpbHQgd2hp bGUgYWx0X29wcyBzaGFkb3dzIHBnX2NhdGFsb2c6IGV2ZXJ5IGNvbWJpbmluZyBvcGVyYXRvcgor LS0gcmVzb2x2ZXMgaW50byBhbHRfb3BzLgorU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdf Y2F0YWxvZzsKK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2FueSBBUworICBTRUxFQ1QgKGEsIGIp ID0gQU5ZIChTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5vcV90KSBBUyByIEZST00gcHVibGljLm9x X3Q7CitDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9pbiBBUworICBTRUxFQ1QgKGEsIGIpIElOIChT RUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5vcV90KSBBUyByIEZST00gcHVibGljLm9xX3Q7CitDUkVB VEUgVklFVyBwdWJsaWMub3Ffdl9uZV9hbGwgQVMKKyAgU0VMRUNUIChhLCBiKSA8PiBBTEwgKFNF TEVDVCBhLCBiIEZST00gcHVibGljLm9xX3QpIEFTIHIgRlJPTSBwdWJsaWMub3FfdDsKK0NSRUFU RSBWSUVXIHB1YmxpYy5vcV92X3Jvd2NtcF9zdWIgQVMKKyAgU0VMRUNUIChhLCBiKSA8IChTRUxF Q1QgYSwgYiBGUk9NIHB1YmxpYy5vcV90IExJTUlUIDEpIEFTIHIgRlJPTSBwdWJsaWMub3FfdDsK Ky0tIFNpbmdsZS1jb2x1bW4gY29tcGFyaXNvbjogb25lIG9mZi1wYXRoIG9wZXJhdG9yLCBubyBs aXN0IG5lZWRlZC4KK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2FueV9zY2FsYXIgQVMKKyAgU0VM RUNUIGEgPSBBTlkgKFNFTEVDVCBiIEZST00gcHVibGljLm9xX3QpIEFTIHIgRlJPTSBwdWJsaWMu b3FfdDsKKy0tIEFuIElOIHdob3NlIHBlci1jb2x1bW4gIj0iIGxvb2t1cHMgbGFuZCBpbiAqZGlm ZmVyZW50KiBzY2hlbWFzOiBjb2x1bW4gMQorLS0gY29tcGFyZXMgaW50OCAoYWx0X29wcyBoYXMg bm8gaW50OCBvcGVyYXRvciwgcGdfY2F0YWxvZy49IGFwcGxpZXMpIHdoaWxlCistLSBjb2x1bW4g MiBmaW5kcyBhbHRfb3BzLj0uICBCZWZvcmUgdGhpcyBwYXRjaCB0aGUgdmlldyBkZXBhcnNlZCBi YWNrIHRvIGEKKy0tIHBsYWluIElOLCBzbyBhIGR1bXAvcmVsb2FkIHVuZGVyIHRoZSBkZWZhdWx0 IHNlYXJjaF9wYXRoIHNpbGVudGx5IHJlcGxhY2VkCistLSBjb2x1bW4gMidzIG9wZXJhdG9yIHdp dGggcGdfY2F0YWxvZy49IC0tIGNoYW5nZWQgc2VtYW50aWNzLCBubyBlcnJvci4KK0NSRUFURSBW SUVXIHB1YmxpYy5vcV92X2luX21peGVkIEFTCisgIFNFTEVDVCAoYTo6aW50OCwgYikgSU4gKFNF TEVDVCBhOjppbnQ4LCBiIEZST00gcHVibGljLm9xX3QpIEFTIHIgRlJPTSBwdWJsaWMub3FfdDsK K1JFU0VUIHNlYXJjaF9wYXRoOworLS0gQSBtaXhlZCBleHBsaWNpdCBsaXN0LCB3cml0dGVuIHVu ZGVyIHRoZSBkZWZhdWx0IHBhdGguCitDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9hbnlfbWl4ZWQg QVMKKyAgU0VMRUNUIChhLCBiKSBPUEVSQVRPUihwZ19jYXRhbG9nLj0sIGFsdF9vcHMuPSkgQU5Z IChTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5vcV90KSBBUyByCisgIEZST00gcHVibGljLm9xX3Q7 CistLSBHdWFyZHM6IElOIG92ZXIgcGdfY2F0YWxvZyBvcGVyYXRvcnMgb25seSBtdXN0IGtlZXAg cHJpbnRpbmcgSU4uCitDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9pbl9jYXQgQVMKKyAgU0VMRUNU IChhLCBiKSBJTiAoU0VMRUNUIGEsIGIgRlJPTSBwdWJsaWMub3FfdCkgQVMgciBGUk9NIHB1Ymxp Yy5vcV90OworQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfaW5fc2NhbGFyX2NhdCBBUworICBTRUxF Q1QgYSBJTiAoU0VMRUNUIGIgRlJPTSBwdWJsaWMub3FfdCkgQVMgciBGUk9NIHB1YmxpYy5vcV90 OworLS0gT2ZmIHRoZSBwYXRoLCBJTiBtYXkgbm90IGJlIHByaW50ZWQ6IGEgcGxhaW4gSU4gd291 bGQgcmVwYXJzZSBldmVyeSBjb2x1bW4KKy0tIHdpdGggcGdfY2F0YWxvZy49LiAgVGhlIGhvbmVz dCBmb3JtIGlzIHRoZSBwZXItY29sdW1uIG9wZXJhdG9yIGxpc3QuCitTRUxFQ1QgcGdfZ2V0X3Zp ZXdkZWYoJ29xX3ZfYW55Jzo6cmVnY2xhc3MsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgIFNFTEVDVCAoKGEsIGIpIE9QRVJBVE9SKGFsdF9vcHMuPSwgYWx0X29wcy49 KSBBTlkgKCBTRUxFQ1Qgb3FfdF8xLmEsKworICAgICAgICAgICAgIG9xX3RfMS5iICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIEZS T00gb3FfdCBvcV90XzEpKSBBUyByICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgRlJPTSBvcV90OworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3Zf aW4nOjpyZWdjbGFzcywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg U0VMRUNUICgoYSwgYikgT1BFUkFUT1IoYWx0X29wcy49LCBhbHRfb3BzLj0pIEFOWSAoIFNFTEVD VCBvcV90XzEuYSwrCisgICAgICAgICAgICAgb3FfdF8xLmIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgRlJPTSBvcV90IG9xX3Rf MSkpIEFTIHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIG9x X3Q7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignb3Ffdl9uZV9hbGwnOjpyZWdj bGFzcywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVm ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVD VCAoKGEsIGIpIE9QRVJBVE9SKGFsdF9vcHMuPD4sIGFsdF9vcHMuPD4pIEFMTCAoIFNFTEVDVCBv cV90XzEuYSwrCisgICAgICAgICAgICAgb3FfdF8xLmIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICBGUk9NIG9xX3Qgb3FfdF8x KSkgQVMgciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBv cV90OworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3Zfcm93Y21wX3N1Yic6 OnJlZ2NsYXNzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdk ZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUICgoYSwg YikgT1BFUkFUT1IoYWx0X29wcy48LCBhbHRfb3BzLjwpICggU0VMRUNUIG9xX3RfMS5hLCsKKyAg ICAgICAgICAgICBvcV90XzEuYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgIEZST00gb3FfdCBvcV90XzEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICBMSU1JVCAxKSkgQVMgciAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIG9xX3Q7CisoMSByb3cp CisKKy0tIFRoZSBzaW5nbGUtY29sdW1uIGZvcm0gbmVlZHMgbm8gbGlzdCwganVzdCB0aGUgcXVh bGlmaWVkIG9wZXJhdG9yLgorU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X2FueV9zY2FsYXIn OjpyZWdjbGFzcywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgKGEgT1BFUkFUT1IoYWx0X29wcy49KSBBTlkgKCBT RUxFQ1Qgb3FfdF8xLmIrCisgICAgICAgICAgICBGUk9NIG9xX3Qgb3FfdF8xKSkgQVMgciAgICAg ICAgICAgICAgICAgICsKKyAgICBGUk9NIG9xX3Q7CisoMSByb3cpCisKKy0tIFRoZSBtaXhlZCB2 aWV3cyBwcmludCBhIGxpc3Qgb2Ygb25lIGJhcmUgYW5kIG9uZSBxdWFsaWZpZWQgbmFtZS4KK1NF TEVDVCBwZ19nZXRfdmlld2RlZignb3Ffdl9pbl9taXhlZCc6OnJlZ2NsYXNzLCB0cnVlKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg IFNFTEVDVCAoKGE6OmJpZ2ludCwgYikgT1BFUkFUT1IoPSwgYWx0X29wcy49KSBBTlkgKCBTRUxF Q1Qgb3FfdF8xLmE6OmJpZ2ludCBBUyBhLCsKKyAgICAgICAgICAgICBvcV90XzEuYiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAgRlJPTSBvcV90IG9xX3RfMSkpIEFTIHIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBvcV90OworKDEgcm93KQorCitT RUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfYW55X21peGVkJzo6cmVnY2xhc3MsIHRydWUpOwor ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUICgoYSwgYikgT1BFUkFUT1IoPSwgYWx0X29wcy49KSBB TlkgKCBTRUxFQ1Qgb3FfdF8xLmEsKworICAgICAgICAgICAgIG9xX3RfMS5iICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICBGUk9NIG9xX3Qgb3Ff dF8xKSkgQVMgciAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIG9xX3Q7Ciso MSByb3cpCisKKy0tIFRoZSBwZ19jYXRhbG9nLW9ubHkgdmlld3Mgc3RpbGwgcHJpbnQgSU4uCitT RUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfaW5fY2F0Jzo6cmVnY2xhc3MsIHRydWUpOworICAg ICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUICgoYSwgYikgSU4gKCBTRUxFQ1Qgb3FfdF8x LmEsKworICAgICAgICAgICAgIG9xX3RfMS5iICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICBGUk9NIG9xX3Qgb3FfdF8xKSkgQVMgciAgICsKKyAgICBGUk9NIG9xX3Q7CisoMSByb3cpCisK K1NFTEVDVCBwZ19nZXRfdmlld2RlZignb3Ffdl9pbl9zY2FsYXJfY2F0Jzo6cmVnY2xhc3MsIHRy dWUpOworICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIChhIElOICggU0VMRUNUIG9xX3RfMS5i ICAgKworICAgICAgICAgICAgRlJPTSBvcV90IG9xX3RfMSkpIEFTIHIrCisgICAgRlJPTSBvcV90 OworKDEgcm93KQorCistLSBXaXRoIGFsdF9vcHMgcmVhY2hhYmxlIGFnYWluLCBldmVyeSBjb2x1 bW4ncyBvcGVyYXRvciByZXNvbHZlcyBiYXJlIHRvICI9IgorLS0gYW5kIHRoZSByZWFkYWJsZSBJ TiBjb21lcyBiYWNrLgorU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdfY2F0YWxvZywgcHVi bGljOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X2luJzo6cmVnY2xhc3MsIHRydWUpOwor ICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUICgoYSwgYikgSU4gKCBTRUxFQ1Qgb3Ff dF8xLmEsKworICAgICAgICAgICAgIG9xX3RfMS5iICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICBGUk9NIG9xX3Qgb3FfdF8xKSkgQVMgciAgICsKKyAgICBGUk9NIG9xX3Q7CisoMSByb3cp CisKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0gVGhlIGRlcGFyc2VkIHN1YmxpbmtzIG11c3QgcmVw YXJzZSB1bmRlciBhIHJlc3RyaWN0ZWQgc2VhcmNoX3BhdGggKHRoZQorLS0gcGdfZHVtcCBzY2Vu YXJpbyksIHBpbm5pbmcgdGhlIHNhbWUgb3BlcmF0b3IgT0lEcyBhcyB0aGUgb3JpZ2luYWxzLgor QkVHSU47IFNFVCBMT0NBTCBzZWFyY2hfcGF0aCA9IHBnX2NhdGFsb2c7CitETyAkJCBCRUdJTgor ICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9hbnlfcmVsb2FkIEFTICcgfHwgcGdf Z2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X2FueSc6OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JF QVRFIFZJRVcgcHVibGljLm9xX3ZfaW5fcmVsb2FkIEFTICcgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1 YmxpYy5vcV92X2luJzo6cmVnY2xhc3MpOworICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMu b3Ffdl9uZV9hbGxfcmVsb2FkIEFTICcgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X25l X2FsbCc6OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9xX3Zfcm93 Y21wX3N1Yl9yZWxvYWQgQVMgJyB8fCBwZ19nZXRfdmlld2RlZigncHVibGljLm9xX3Zfcm93Y21w X3N1Yic6OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfYW55 X3NjYWxhcl9yZWxvYWQgQVMgJyB8fCBwZ19nZXRfdmlld2RlZigncHVibGljLm9xX3ZfYW55X3Nj YWxhcic6OnJlZ2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfaW5f bWl4ZWRfcmVsb2FkIEFTICcgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X2luX21peGVk Jzo6cmVnY2xhc3MpOworICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9hbnlfbWl4 ZWRfcmVsb2FkIEFTICcgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X2FueV9taXhlZCc6 OnJlZ2NsYXNzKTsKK0VORCAkJDsgQ09NTUlUOworLS0gRXZlcnkgcmVsb2FkZWQgdmlldyB0aGF0 IHBpbm5lZCBhbHRfb3BzLj0gc3RpbGwgcGlucyBpdCAodGhlID0gYW5kIDw+CistLSBmb3JtcyBk ZWNvbXBvc2UgaW50byBwZXItY29sdW1uIE9wRXhwcnMsIHNlcmlhbGl6ZWQgd2l0aCAiOm9wbm8i KS4KK1NFTEVDVCBldl9jbGFzczo6cmVnY2xhc3MgRlJPTSBwZ19yZXdyaXRlCitXSEVSRSBldl9h Y3Rpb24gTElLRSAnJTpvcG5vICcgfHwgJ2FsdF9vcHMuPShpbnQ0LGludDQpJzo6cmVnb3BlcmF0 b3I6Om9pZCB8fCAnICUnCisgIEFORCBldl9jbGFzczo6cmVnY2xhc3M6OnRleHQgTElLRSAnb3Ff diVyZWxvYWQnCitPUkRFUiBCWSAxOworICAgICAgICBldl9jbGFzcyAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBvcV92X2FueV9yZWxvYWQKKyBvcV92X2luX3JlbG9hZAorIG9x X3ZfYW55X3NjYWxhcl9yZWxvYWQKKyBvcV92X2luX21peGVkX3JlbG9hZAorIG9xX3ZfYW55X21p eGVkX3JlbG9hZAorKDUgcm93cykKKworLS0gVGhlIG1peGVkIHZpZXdzIHBpbiBwZ19jYXRhbG9n J3MgIj0iIGZvciBjb2x1bW4gMSAqZm9sbG93ZWQgYnkqIGFsdF9vcHMuPQorLS0gZm9yIGNvbHVt biAyOiB0aGUgY29tYmluaW5nIE9wRXhwcnMgYXJlIHNlcmlhbGl6ZWQgaW4gY29sdW1uIG9yZGVy LgorU0VMRUNUIGV2X2NsYXNzOjpyZWdjbGFzcyBGUk9NIHBnX3Jld3JpdGUKK1dIRVJFIGV2X2Fj dGlvbiBMSUtFICclOm9wbm8gJyB8fCAncGdfY2F0YWxvZy49KGludDgsaW50OCknOjpyZWdvcGVy YXRvcjo6b2lkCisgICAgICAgICAgICAgICAgICB8fCAnICU6b3BubyAnIHx8ICdhbHRfb3BzLj0o aW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQgfHwgJyAlJworICBBTkQgZXZfY2xhc3M6OnJl Z2NsYXNzOjp0ZXh0ID0gJ29xX3ZfaW5fbWl4ZWRfcmVsb2FkJzsKKyAgICAgICBldl9jbGFzcyAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBvcV92X2luX21peGVkX3JlbG9hZAorKDEg cm93KQorCitTRUxFQ1QgZXZfY2xhc3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0ZQorV0hFUkUg ZXZfYWN0aW9uIExJS0UgJyU6b3BubyAnIHx8ICdwZ19jYXRhbG9nLj0oaW50NCxpbnQ0KSc6OnJl Z29wZXJhdG9yOjpvaWQKKyAgICAgICAgICAgICAgICAgIHx8ICcgJTpvcG5vICcgfHwgJ2FsdF9v cHMuPShpbnQ0LGludDQpJzo6cmVnb3BlcmF0b3I6Om9pZCB8fCAnICUnCisgIEFORCBldl9jbGFz czo6cmVnY2xhc3M6OnRleHQgPSAnb3Ffdl9hbnlfbWl4ZWRfcmVsb2FkJzsKKyAgICAgICBldl9j bGFzcyAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG9xX3ZfYW55X21peGVkX3Jl bG9hZAorKDEgcm93KQorCistLSA8PiBBTEwga2VlcHMgYWx0X29wcy48PiAuLi4KK1NFTEVDVCBl dl9jbGFzczo6cmVnY2xhc3MgRlJPTSBwZ19yZXdyaXRlCitXSEVSRSBldl9hY3Rpb24gTElLRSAn JTpvcG5vICcgfHwgJ2FsdF9vcHMuPD4oaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQgfHwg JyAlJworICBBTkQgZXZfY2xhc3M6OnJlZ2NsYXNzOjp0ZXh0ID0gJ29xX3ZfbmVfYWxsX3JlbG9h ZCc7CisgICAgICBldl9jbGFzcyAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBvcV92X25l X2FsbF9yZWxvYWQKKygxIHJvdykKKworLS0gLi4uIGFuZCB0aGUgcm93IGNvbXBhcmlzb24ga2Vl cHMgYWx0X29wcy48IGZvciBib3RoIGNvbHVtbnMgKGEgc3VibGluaydzCistLSBSb3dDb21wYXJl RXhwciBzZXJpYWxpemVzIGl0cyBvcGVyYXRvcnMgYXMgb25lIG9pZCBsaXN0ICIobyAuLi4pIiku CitTRUxFQ1QgZXZfY2xhc3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0ZQorV0hFUkUgZXZfYWN0 aW9uIExJS0UgJyUobyAnIHx8ICdhbHRfb3BzLjwoaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpv aWQKKyAgICAgICAgICAgICAgICAgICB8fCAnICcgfHwgJ2FsdF9vcHMuPChpbnQ0LGludDQpJzo6 cmVnb3BlcmF0b3I6Om9pZCB8fCAnJScKKyAgQU5EIGV2X2NsYXNzOjpyZWdjbGFzczo6dGV4dCA9 ICdvcV92X3Jvd2NtcF9zdWJfcmVsb2FkJzsKKyAgICAgICAgZXZfY2xhc3MgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgb3Ffdl9yb3djbXBfc3ViX3JlbG9hZAorKDEgcm93KQor CitEUk9QIFZJRVcgb3Ffdl9hbnlfcmVsb2FkLCBvcV92X2luX3JlbG9hZCwgb3Ffdl9uZV9hbGxf cmVsb2FkLAorICAgICAgICAgIG9xX3Zfcm93Y21wX3N1Yl9yZWxvYWQsIG9xX3ZfYW55X3NjYWxh cl9yZWxvYWQsCisgICAgICAgICAgb3Ffdl9pbl9taXhlZF9yZWxvYWQsIG9xX3ZfYW55X21peGVk X3JlbG9hZDsKKy0tIE5PVEU6IHRoZSBuZXcgb3Ffdl8qIGJhc2Ugdmlld3MgYXJlIGludGVudGlv bmFsbHkga2VwdCAobGlrZSB0aGUgb3RoZXJzKQorLS0gc28gdGhlIHBnX3VwZ3JhZGUgc3VpdGUg ZHVtcC9yZXN0b3JlcyB0aGVtIGFuZCBleGVyY2lzZXMgdGhlIGRlcGFyc2UuCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcGVyYXRvcl9xdWFsaWZ5LnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3FsCmluZGV4IDc0YTk0MjhkNDMuLmYwMjlkMGVi NzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3FsCkBAIC0yNTks NyArMjU5LDcgQEAgU0VMRUNUIFJPVygxLDIpIE9QRVJBVE9SKHBnX2NhdGFsb2cuPSwgYWx0X29w cy49KSBST1coMSwyKSBBUyB0OwogU0VMRUNUIFJPVygxLDIpIE9QRVJBVE9SKHBnX2NhdGFsb2cu PCwgcGdfY2F0YWxvZy48LCBwZ19jYXRhbG9nLjwpIFJPVygyLDEpOwogLS0gVG9vIGZldyBvcGVy YXRvcnMgZm9yIHRoZSByb3cgd2lkdGggKHR3byBvcGVyYXRvcnMsIHRocmVlIGNvbHVtbnMpLgog U0VMRUNUIFJPVygxLDIsMykgT1BFUkFUT1IocGdfY2F0YWxvZy48LCBwZ19jYXRhbG9nLjwpIFJP VygxLDIsNCk7Ci0tLSBBIGxpc3QgaXMgb25seSBtZWFuaW5nZnVsIGZvciByb3cgKGFuZCwgbGF0 ZXIsIHN1YnF1ZXJ5KSBjb21wYXJpc29ucy4KKy0tIEEgbGlzdCBpcyBvbmx5IG1lYW5pbmdmdWwg Zm9yIHJvdyBhbmQgc3VicXVlcnkgY29tcGFyaXNvbnMuCiAtLSBTY2FsYXIgaW5maXggcmVqZWN0 cyBpdC4KIFNFTEVDVCAxIE9QRVJBVE9SKHBnX2NhdGFsb2cuPSwgcGdfY2F0YWxvZy49KSAyOwog LS0gU2NhbGFyIHByZWZpeCByZWplY3RzIGl0IHRvby4KQEAgLTI2OCw4ICsyNjgsNiBAQCBTRUxF Q1QgT1BFUkFUT1IocGdfY2F0YWxvZy4tLCBwZ19jYXRhbG9nLi0pIDE7CiBTRUxFQ1QgMSBPUEVS QVRPUihwZ19jYXRhbG9nLj0sIHBnX2NhdGFsb2cuPSkgQU5ZIChBUlJBWVsxLDJdKTsKIC0tIE9S REVSIEJZIC4uLiBVU0lORyByZWplY3RzIGl0LgogU0VMRUNUIDEgRlJPTSBwdWJsaWMub3FfdCBP UkRFUiBCWSBhIFVTSU5HIE9QRVJBVE9SKHBnX2NhdGFsb2cuPCwgcGdfY2F0YWxvZy48KTsKLS0t IFN1YmxpbmtzIHJlamVjdCBvcGVyYXRvciBsaXN0cyBpbiB0aGlzIHBhdGNoIChhIGxhdGVyIHBh dGNoIGVuYWJsZXMgdGhlbSkuCi1TRUxFQ1QgKDEsIDIpIE9QRVJBVE9SKHBnX2NhdGFsb2cuPSwg cGdfY2F0YWxvZy49KSBBTlkgKFNFTEVDVCAxLCAyKTsKIC0tIERETCBkZWZpbml0aW9uIGl0ZW1z IChoZXJlIGEgQ1JFQVRFIE9QRVJBVE9SIGNvbW11dGF0b3IpIHRha2UgYSBzaW5nbGUKIC0tIG9w ZXJhdG9yIG5hbWUuICBkZWZpbmUuYyBoYXMgbm8gUGFyc2VTdGF0ZSwgc28gdGhpcyBlcnJvciBj YXJyaWVzIG5vIHBvc2l0aW9uLgogQ1JFQVRFIE9QRVJBVE9SICMjIyAobGVmdGFyZyA9IGludDQs IHJpZ2h0YXJnID0gaW50NCwgcHJvY2VkdXJlID0gaW50NGVxLApAQCAtMzAxLDMgKzI5OSwxMjgg QEAgRFJPUCBWSUVXIG9xX3Zfcm93Y21wX21peGVkX3JlbG9hZDsKIC0tIE5PVEU6IG9xX3Zfcm93 Y21wIGFuZCBvcV92X3Jvd2NtcF9taXhlZCBhcmUgaW50ZW50aW9uYWxseSBrZXB0IChsaWtlIHRo ZSBvdGhlcgogLS0gb3Ffdl8qIHZpZXdzKSBzbyB0aGUgcGdfdXBncmFkZSBzdWl0ZSBkdW1wL3Jl c3RvcmVzIHRoZW0gYW5kIGV4ZXJjaXNlcyB0aGUKIC0tIHF1YWxpZmllZCBkZXBhcnNlLgorCist LQorLS0gU3VicXVlcnkgY29tcGFyaXNvbnM6IEFOWS9BTEwgYW5kIHJvdy1vcC1zdWJxdWVyeSBz dWJsaW5rcyBhY2NlcHQgdGhlCistLSBwZXItY29sdW1uIG9wZXJhdG9yIGxpc3QgdG9vLCBhbmQg dGhlaXIgZGVwYXJzZSByZXByZXNlbnRzIHRoZSBjb21iaW5pbmcKKy0tIG9wZXJhdG9ycyBleGFj dGx5IChpbiBwYXJ0aWN1bGFyLCBJTiBpcyBwcmludGVkIG9ubHkgd2hlbiBhIHBsYWluIElOCist LSB3b3VsZCByZXBhcnNlIHRvIHRoZSB2ZXJ5IHNhbWUgcGVyLWNvbHVtbiBvcGVyYXRvcnMpLgor LS0KKy0tIEEgbXVsdGktY29sdW1uIGNvbXBhcmlzb24gbXVzdCBmaW5kIGEgYnRyZWUgaW50ZXJw cmV0YXRpb24gZm9yIGV2ZXJ5CistLSBjb21iaW5pbmcgb3BlcmF0b3IuICBBICI8PiIgaXMgaW50 ZXJwcmV0ZWQgdGhyb3VnaCBpdHMgbmVnYXRvcidzIGJ0cmVlCistLSBlcXVhbGl0eSBtZW1iZXJz aGlwLCBzbyBsaW5rIGFsdF9vcHMuPD4gdG8gYWx0X29wcy49IChzdHJhdGVneSAzIG9mIHRoZQor LS0gb3BlcmF0b3IgY2xhc3MgYWJvdmUpIGluc3RlYWQgb2YgZXh0ZW5kaW5nIHRoZSBjbGFzcy4K K0NSRUFURSBPUEVSQVRPUiBhbHRfb3BzLjw+IChsZWZ0YXJnID0gaW50NCwgcmlnaHRhcmcgPSBp bnQ0LCBwcm9jZWR1cmUgPSBpbnQ0bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVn YXRvciA9IE9QRVJBVE9SKGFsdF9vcHMuPSkpOworCistLSBUaGUgbGlzdCBzeW50YXggaXMgZGly ZWN0bHkgYWNjZXB0YWJsZSBpbiBhbGwgdGhyZWUgc3VibGluayBmb3Jtcywgd2l0aAorLS0gbWl4 ZWQgYmFyZS9xdWFsaWZpZWQgbmFtZXMuCitTRUxFQ1QgKDEsIDIpIE9QRVJBVE9SKHBnX2NhdGFs b2cuPSwgcGdfY2F0YWxvZy49KSBBTlkgKFNFTEVDVCAxLCAyKSBBUyB0OworU0VMRUNUICgxLCAy KSBPUEVSQVRPUihwZ19jYXRhbG9nLj0sIGFsdF9vcHMuPSkgQU5ZIChTRUxFQ1QgMSwgMikgQVMg dDsKK1NFTEVDVCAoMSwgMikgT1BFUkFUT1IoYWx0X29wcy48PiwgcGdfY2F0YWxvZy48PikgQUxM IChTRUxFQ1QgMiwgMSkgQVMgdDsKKy0tICJyb3cgb3AgKHN1YnF1ZXJ5KSIgcmVhY2hlcyB0aGUg c3VibGluayB0aHJvdWdoIHRyYW5zZm9ybUFFeHByT3AncworLS0gUk9XQ09NUEFSRSBjb252ZXJz aW9uOyB0aGUgbGlzdCBmbG93cyB0aHJvdWdoIHRoYXQgcGF0aCBhcyB3ZWxsLgorU0VMRUNUICgx LCAyKSBPUEVSQVRPUihhbHRfb3BzLjwsIGFsdF9vcHMuPCkgKFNFTEVDVCAxLCAzKSBBUyB0Owor LS0gQSBvbmUtZWxlbWVudCBsaXN0IGlzIHRoZSB0cmFkaXRpb25hbCBzaW5nbGUtb3BlcmF0b3Ig Zm9ybSAoaW52YXJpYW5jZQorLS0gZ3VhcmQ6IHRoaXMgbGluZSBpcyBhY2NlcHRlZCBiZWZvcmUg dGhlIGxpc3QgZ3JhbW1hciBsYW5kcykuCitTRUxFQ1QgKDEsIDIpIE9QRVJBVE9SKHBnX2NhdGFs b2cuPSkgQU5ZIChTRUxFQ1QgMSwgMikgQVMgdDsKKy0tIFRoZSBvcGVyYXRvciBjb3VudCBtdXN0 IG1hdGNoIHRoZSByb3cgd2lkdGguCitcc2V0IFZFUkJPU0lUWSB0ZXJzZQorU0VMRUNUICgxLCAy KSBPUEVSQVRPUihwZ19jYXRhbG9nLj0sIHBnX2NhdGFsb2cuPSwgcGdfY2F0YWxvZy49KSBBTlkg KFNFTEVDVCAxLCAyKTsKK1xzZXQgVkVSQk9TSVRZIGRlZmF1bHQKKworLS0gVmlld3MgYnVpbHQg d2hpbGUgYWx0X29wcyBzaGFkb3dzIHBnX2NhdGFsb2c6IGV2ZXJ5IGNvbWJpbmluZyBvcGVyYXRv cgorLS0gcmVzb2x2ZXMgaW50byBhbHRfb3BzLgorU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywg cGdfY2F0YWxvZzsKK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2FueSBBUworICBTRUxFQ1QgKGEs IGIpID0gQU5ZIChTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5vcV90KSBBUyByIEZST00gcHVibGlj Lm9xX3Q7CitDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9pbiBBUworICBTRUxFQ1QgKGEsIGIpIElO IChTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5vcV90KSBBUyByIEZST00gcHVibGljLm9xX3Q7CitD UkVBVEUgVklFVyBwdWJsaWMub3Ffdl9uZV9hbGwgQVMKKyAgU0VMRUNUIChhLCBiKSA8PiBBTEwg KFNFTEVDVCBhLCBiIEZST00gcHVibGljLm9xX3QpIEFTIHIgRlJPTSBwdWJsaWMub3FfdDsKK0NS RUFURSBWSUVXIHB1YmxpYy5vcV92X3Jvd2NtcF9zdWIgQVMKKyAgU0VMRUNUIChhLCBiKSA8IChT RUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5vcV90IExJTUlUIDEpIEFTIHIgRlJPTSBwdWJsaWMub3Ff dDsKKy0tIFNpbmdsZS1jb2x1bW4gY29tcGFyaXNvbjogb25lIG9mZi1wYXRoIG9wZXJhdG9yLCBu byBsaXN0IG5lZWRlZC4KK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2FueV9zY2FsYXIgQVMKKyAg U0VMRUNUIGEgPSBBTlkgKFNFTEVDVCBiIEZST00gcHVibGljLm9xX3QpIEFTIHIgRlJPTSBwdWJs aWMub3FfdDsKKy0tIEFuIElOIHdob3NlIHBlci1jb2x1bW4gIj0iIGxvb2t1cHMgbGFuZCBpbiAq ZGlmZmVyZW50KiBzY2hlbWFzOiBjb2x1bW4gMQorLS0gY29tcGFyZXMgaW50OCAoYWx0X29wcyBo YXMgbm8gaW50OCBvcGVyYXRvciwgcGdfY2F0YWxvZy49IGFwcGxpZXMpIHdoaWxlCistLSBjb2x1 bW4gMiBmaW5kcyBhbHRfb3BzLj0uICBCZWZvcmUgdGhpcyBwYXRjaCB0aGUgdmlldyBkZXBhcnNl ZCBiYWNrIHRvIGEKKy0tIHBsYWluIElOLCBzbyBhIGR1bXAvcmVsb2FkIHVuZGVyIHRoZSBkZWZh dWx0IHNlYXJjaF9wYXRoIHNpbGVudGx5IHJlcGxhY2VkCistLSBjb2x1bW4gMidzIG9wZXJhdG9y IHdpdGggcGdfY2F0YWxvZy49IC0tIGNoYW5nZWQgc2VtYW50aWNzLCBubyBlcnJvci4KK0NSRUFU RSBWSUVXIHB1YmxpYy5vcV92X2luX21peGVkIEFTCisgIFNFTEVDVCAoYTo6aW50OCwgYikgSU4g KFNFTEVDVCBhOjppbnQ4LCBiIEZST00gcHVibGljLm9xX3QpIEFTIHIgRlJPTSBwdWJsaWMub3Ff dDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0gQSBtaXhlZCBleHBsaWNpdCBsaXN0LCB3cml0dGVu IHVuZGVyIHRoZSBkZWZhdWx0IHBhdGguCitDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9hbnlfbWl4 ZWQgQVMKKyAgU0VMRUNUIChhLCBiKSBPUEVSQVRPUihwZ19jYXRhbG9nLj0sIGFsdF9vcHMuPSkg QU5ZIChTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5vcV90KSBBUyByCisgIEZST00gcHVibGljLm9x X3Q7CistLSBHdWFyZHM6IElOIG92ZXIgcGdfY2F0YWxvZyBvcGVyYXRvcnMgb25seSBtdXN0IGtl ZXAgcHJpbnRpbmcgSU4uCitDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9pbl9jYXQgQVMKKyAgU0VM RUNUIChhLCBiKSBJTiAoU0VMRUNUIGEsIGIgRlJPTSBwdWJsaWMub3FfdCkgQVMgciBGUk9NIHB1 YmxpYy5vcV90OworQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfaW5fc2NhbGFyX2NhdCBBUworICBT RUxFQ1QgYSBJTiAoU0VMRUNUIGIgRlJPTSBwdWJsaWMub3FfdCkgQVMgciBGUk9NIHB1YmxpYy5v cV90OworCistLSBPZmYgdGhlIHBhdGgsIElOIG1heSBub3QgYmUgcHJpbnRlZDogYSBwbGFpbiBJ TiB3b3VsZCByZXBhcnNlIGV2ZXJ5IGNvbHVtbgorLS0gd2l0aCBwZ19jYXRhbG9nLj0uICBUaGUg aG9uZXN0IGZvcm0gaXMgdGhlIHBlci1jb2x1bW4gb3BlcmF0b3IgbGlzdC4KK1NFTEVDVCBwZ19n ZXRfdmlld2RlZignb3Ffdl9hbnknOjpyZWdjbGFzcywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0X3Zp ZXdkZWYoJ29xX3ZfaW4nOjpyZWdjbGFzcywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYo J29xX3ZfbmVfYWxsJzo6cmVnY2xhc3MsIHRydWUpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdv cV92X3Jvd2NtcF9zdWInOjpyZWdjbGFzcywgdHJ1ZSk7CistLSBUaGUgc2luZ2xlLWNvbHVtbiBm b3JtIG5lZWRzIG5vIGxpc3QsIGp1c3QgdGhlIHF1YWxpZmllZCBvcGVyYXRvci4KK1NFTEVDVCBw Z19nZXRfdmlld2RlZignb3Ffdl9hbnlfc2NhbGFyJzo6cmVnY2xhc3MsIHRydWUpOworLS0gVGhl IG1peGVkIHZpZXdzIHByaW50IGEgbGlzdCBvZiBvbmUgYmFyZSBhbmQgb25lIHF1YWxpZmllZCBu YW1lLgorU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X2luX21peGVkJzo6cmVnY2xhc3MsIHRy dWUpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X2FueV9taXhlZCc6OnJlZ2NsYXNzLCB0 cnVlKTsKKy0tIFRoZSBwZ19jYXRhbG9nLW9ubHkgdmlld3Mgc3RpbGwgcHJpbnQgSU4uCitTRUxF Q1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfaW5fY2F0Jzo6cmVnY2xhc3MsIHRydWUpOworU0VMRUNU IHBnX2dldF92aWV3ZGVmKCdvcV92X2luX3NjYWxhcl9jYXQnOjpyZWdjbGFzcywgdHJ1ZSk7Cist LSBXaXRoIGFsdF9vcHMgcmVhY2hhYmxlIGFnYWluLCBldmVyeSBjb2x1bW4ncyBvcGVyYXRvciBy ZXNvbHZlcyBiYXJlIHRvICI9IgorLS0gYW5kIHRoZSByZWFkYWJsZSBJTiBjb21lcyBiYWNrLgor U0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdfY2F0YWxvZywgcHVibGljOworU0VMRUNUIHBn X2dldF92aWV3ZGVmKCdvcV92X2luJzo6cmVnY2xhc3MsIHRydWUpOworUkVTRVQgc2VhcmNoX3Bh dGg7CisKKy0tIFRoZSBkZXBhcnNlZCBzdWJsaW5rcyBtdXN0IHJlcGFyc2UgdW5kZXIgYSByZXN0 cmljdGVkIHNlYXJjaF9wYXRoICh0aGUKKy0tIHBnX2R1bXAgc2NlbmFyaW8pLCBwaW5uaW5nIHRo ZSBzYW1lIG9wZXJhdG9yIE9JRHMgYXMgdGhlIG9yaWdpbmFscy4KK0JFR0lOOyBTRVQgTE9DQUwg c2VhcmNoX3BhdGggPSBwZ19jYXRhbG9nOworRE8gJCQgQkVHSU4KKyAgRVhFQ1VURSAnQ1JFQVRF IFZJRVcgcHVibGljLm9xX3ZfYW55X3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJs aWMub3Ffdl9hbnknOjpyZWdjbGFzcyk7CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIHB1YmxpYy5v cV92X2luX3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9pbic6OnJl Z2NsYXNzKTsKKyAgRVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfbmVfYWxsX3JlbG9h ZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9uZV9hbGwnOjpyZWdjbGFzcyk7 CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X3Jvd2NtcF9zdWJfcmVsb2FkIEFT ICcgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X3Jvd2NtcF9zdWInOjpyZWdjbGFzcyk7 CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2FueV9zY2FsYXJfcmVsb2FkIEFT ICcgfHwgcGdfZ2V0X3ZpZXdkZWYoJ3B1YmxpYy5vcV92X2FueV9zY2FsYXInOjpyZWdjbGFzcyk7 CisgIEVYRUNVVEUgJ0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2luX21peGVkX3JlbG9hZCBBUyAn IHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9pbl9taXhlZCc6OnJlZ2NsYXNzKTsKKyAg RVhFQ1VURSAnQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfYW55X21peGVkX3JlbG9hZCBBUyAnIHx8 IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9hbnlfbWl4ZWQnOjpyZWdjbGFzcyk7CitFTkQg JCQ7IENPTU1JVDsKKy0tIEV2ZXJ5IHJlbG9hZGVkIHZpZXcgdGhhdCBwaW5uZWQgYWx0X29wcy49 IHN0aWxsIHBpbnMgaXQgKHRoZSA9IGFuZCA8PgorLS0gZm9ybXMgZGVjb21wb3NlIGludG8gcGVy LWNvbHVtbiBPcEV4cHJzLCBzZXJpYWxpemVkIHdpdGggIjpvcG5vIikuCitTRUxFQ1QgZXZfY2xh c3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0ZQorV0hFUkUgZXZfYWN0aW9uIExJS0UgJyU6b3Bu byAnIHx8ICdhbHRfb3BzLj0oaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQgfHwgJyAlJwor ICBBTkQgZXZfY2xhc3M6OnJlZ2NsYXNzOjp0ZXh0IExJS0UgJ29xX3YlcmVsb2FkJworT1JERVIg QlkgMTsKKy0tIFRoZSBtaXhlZCB2aWV3cyBwaW4gcGdfY2F0YWxvZydzICI9IiBmb3IgY29sdW1u IDEgKmZvbGxvd2VkIGJ5KiBhbHRfb3BzLj0KKy0tIGZvciBjb2x1bW4gMjogdGhlIGNvbWJpbmlu ZyBPcEV4cHJzIGFyZSBzZXJpYWxpemVkIGluIGNvbHVtbiBvcmRlci4KK1NFTEVDVCBldl9jbGFz czo6cmVnY2xhc3MgRlJPTSBwZ19yZXdyaXRlCitXSEVSRSBldl9hY3Rpb24gTElLRSAnJTpvcG5v ICcgfHwgJ3BnX2NhdGFsb2cuPShpbnQ4LGludDgpJzo6cmVnb3BlcmF0b3I6Om9pZAorICAgICAg ICAgICAgICAgICAgfHwgJyAlOm9wbm8gJyB8fCAnYWx0X29wcy49KGludDQsaW50NCknOjpyZWdv cGVyYXRvcjo6b2lkIHx8ICcgJScKKyAgQU5EIGV2X2NsYXNzOjpyZWdjbGFzczo6dGV4dCA9ICdv cV92X2luX21peGVkX3JlbG9hZCc7CitTRUxFQ1QgZXZfY2xhc3M6OnJlZ2NsYXNzIEZST00gcGdf cmV3cml0ZQorV0hFUkUgZXZfYWN0aW9uIExJS0UgJyU6b3BubyAnIHx8ICdwZ19jYXRhbG9nLj0o aW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQKKyAgICAgICAgICAgICAgICAgIHx8ICcgJTpv cG5vICcgfHwgJ2FsdF9vcHMuPShpbnQ0LGludDQpJzo6cmVnb3BlcmF0b3I6Om9pZCB8fCAnICUn CisgIEFORCBldl9jbGFzczo6cmVnY2xhc3M6OnRleHQgPSAnb3Ffdl9hbnlfbWl4ZWRfcmVsb2Fk JzsKKy0tIDw+IEFMTCBrZWVwcyBhbHRfb3BzLjw+IC4uLgorU0VMRUNUIGV2X2NsYXNzOjpyZWdj bGFzcyBGUk9NIHBnX3Jld3JpdGUKK1dIRVJFIGV2X2FjdGlvbiBMSUtFICclOm9wbm8gJyB8fCAn YWx0X29wcy48PihpbnQ0LGludDQpJzo6cmVnb3BlcmF0b3I6Om9pZCB8fCAnICUnCisgIEFORCBl dl9jbGFzczo6cmVnY2xhc3M6OnRleHQgPSAnb3Ffdl9uZV9hbGxfcmVsb2FkJzsKKy0tIC4uLiBh bmQgdGhlIHJvdyBjb21wYXJpc29uIGtlZXBzIGFsdF9vcHMuPCBmb3IgYm90aCBjb2x1bW5zIChh IHN1YmxpbmsncworLS0gUm93Q29tcGFyZUV4cHIgc2VyaWFsaXplcyBpdHMgb3BlcmF0b3JzIGFz IG9uZSBvaWQgbGlzdCAiKG8gLi4uKSIpLgorU0VMRUNUIGV2X2NsYXNzOjpyZWdjbGFzcyBGUk9N IHBnX3Jld3JpdGUKK1dIRVJFIGV2X2FjdGlvbiBMSUtFICclKG8gJyB8fCAnYWx0X29wcy48KGlu dDQsaW50NCknOjpyZWdvcGVyYXRvcjo6b2lkCisgICAgICAgICAgICAgICAgICAgfHwgJyAnIHx8 ICdhbHRfb3BzLjwoaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQgfHwgJyUnCisgIEFORCBl dl9jbGFzczo6cmVnY2xhc3M6OnRleHQgPSAnb3Ffdl9yb3djbXBfc3ViX3JlbG9hZCc7CitEUk9Q IFZJRVcgb3Ffdl9hbnlfcmVsb2FkLCBvcV92X2luX3JlbG9hZCwgb3Ffdl9uZV9hbGxfcmVsb2Fk LAorICAgICAgICAgIG9xX3Zfcm93Y21wX3N1Yl9yZWxvYWQsIG9xX3ZfYW55X3NjYWxhcl9yZWxv YWQsCisgICAgICAgICAgb3Ffdl9pbl9taXhlZF9yZWxvYWQsIG9xX3ZfYW55X21peGVkX3JlbG9h ZDsKKy0tIE5PVEU6IHRoZSBuZXcgb3Ffdl8qIGJhc2Ugdmlld3MgYXJlIGludGVudGlvbmFsbHkg a2VwdCAobGlrZSB0aGUgb3RoZXJzKQorLS0gc28gdGhlIHBnX3VwZ3JhZGUgc3VpdGUgZHVtcC9y ZXN0b3JlcyB0aGVtIGFuZCBleGVyY2lzZXMgdGhlIGRlcGFyc2UuCi0tIAoyLjU0LjAKCg== --6a4d06a8_62bbd95a_14ffe Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0005-Allow-schema-qualifying-the-comparison-operator-o.patch" RnJvbSBiMGNkY2U4NGY3ODI1NjUxYTZiZGExYTM3MWJjYzI0NTgzMTE1NDVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGE9QzU9ODI9MjBQYXN0ZXJuYWs/PSA8 bWljaGFsLmR0ekBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNyBKdWwgMjAyNiAxMDozMDo0MCArMDIw MApTdWJqZWN0OiBbUEFUQ0ggdjIgNS81XSBBbGxvdyBzY2hlbWEtcXVhbGlmeWluZyB0aGUgY29t cGFyaXNvbiBvcGVyYXRvciBvZiBhCiBzaW1wbGUgQ0FTRQoKQSBzaW1wbGUgQ0FTRSwgQ0FTRSB4 IFdIRU4geSBUSEVOIC4uLiwgaXMgZGVmaW5lZCB0byBjb21wYXJlIHRoZSB0ZXN0CmV4cHJlc3Np b24gYWdhaW5zdCBlYWNoIFdIRU4gdmFsdWUgZXhhY3RseSBhcyBpZiAieCA9IHkiIGhhZCBiZWVu IHdyaXR0ZW4sCmFuZCBlYWNoIG9mIHRob3NlICI9IiBvcGVyYXRvcnMgaXMgcmVzb2x2ZWQgaW5k ZXBlbmRlbnRseSBieSB1bnF1YWxpZmllZApuYW1lLiAgVHdvIGFybXMgb2Ygb25lIENBU0UgY2Fu IHRoZXJlZm9yZSByZXNvbHZlIHRvIGRpZmZlcmVudCBvcGVyYXRvcnM6CmluCgogICAgQ0FTRSB4 IFdIRU4gNCBUSEVOIC4uLiBXSEVOIDUuMCBUSEVOIC4uLiBFTkQKCnRoZSBmaXJzdCBhcm0gcmVz b2x2ZXMgaW50ZWdlciBlcXVhbGl0eSB3aGlsZSB0aGUgc2Vjb25kIHJlc29sdmVzIG51bWVyaWMK ZXF1YWxpdHksIGFuZCBlaXRoZXIgY291bGQgYmVsb25nIHRvIGEgc2NoZW1hIHRoYXQgaXMgbm90 IG9uIHRoZSBzZWFyY2gKcGF0aC4gIHJ1bGV1dGlscy5jIGNvdWxkIG5vdCByZXByb2R1Y2UgdGhh dCBhdCBhbGw6IHdoZW4gaXQgcmVjb2duaXplZCB0aGUKaW1wbGljaXQgIkNhc2VUZXN0RXhwciA9 IFJIUyIgZm9ybSBpdCBwcmludGVkIGp1c3QgdGhlIFJIUyBhbmQgc2lsZW50bHkKZHJvcHBlZCB0 aGUgb3BlcmF0b3IsIHNvIGEgZHVtcGVkLWFuZC1yZWxvYWRlZCB2aWV3IHJlcGFyc2VkIGV2ZXJ5 IGFybSB3aXRoCndoYXRldmVyICI9IiB0aGUgcmVzdG9yZS10aW1lIHNlYXJjaCBwYXRoIGhhcHBl bmVkIHRvIHJlc29sdmUgLS0gY2hhbmdlZApzZW1hbnRpY3MsIG5vIGVycm9yLgoKR2l2ZSB0aGUg c2ltcGxlIENBU0UgYW4gb3B0aW9uYWwgcGVyLWFybSBvcGVyYXRvciBzeW50YXggbWlycm9yaW5n IHRoZSBvbmUKYWRkZWQgZm9yIE5VTExJRiBhbmQgSVMgW05PVF0gRElTVElOQ1QgRlJPTSwKCiAg ICBDQVNFIHggV0hFTiB5IFVTSU5HIE9QRVJBVE9SKHNjaGVtYS49KSBUSEVOIC4uLgoKd2hpY2gg cGlucyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBmb3IgdGhhdCBhcm0gKGFuZCBvbmx5IHRoYXQg YXJtKS4gIEEgbmV3CnJhdy1vbmx5IExpc3QgZmllbGQgQ2FzZVdoZW4ub3BuYW1lIGNhcnJpZXMg dGhlIHdyaXR0ZW4gbmFtZSBmcm9tIHRoZQpncmFtbWFyIHRvIHBhcnNlIGFuYWx5c2lzLCB3aGVy ZSB0cmFuc2Zvcm1DYXNlRXhwciBleHBhbmRzIHRoZSBhcm0gaW50byB0aGUKY2hvc2VuIG9wZXJh dG9yIGluc3RlYWQgb2YgYSBiYXJlICI9IjsgdGhlIGZpZWxkIGlzIHJlc2V0IHRvIE5JTCBpbiBh bmFseXplZAp0cmVlcywgYW5kIHVzaW5nIHRoZSBjbGF1c2Ugb24gYSBzZWFyY2hlZCBDQVNFICh3 aGljaCBoYXMgbm8gdGVzdCBleHByZXNzaW9uKQppcyByZWplY3RlZC4KCldoZW4gZGVwYXJzaW5n LCBlYWNoIHJlY29nbml6ZWQgYXJtIG5vdyBlbWl0cyBVU0lORyBPUEVSQVRPUigpIGhvbmVzdGx5 Ogp3aGVuZXZlciBhIGJhcmUgIldIRU4gdmFsdWUiIHdvdWxkIG5vdCByZXBhcnNlIHRvIHRoZSBz YW1lIG9wZXJhdG9yIC0tIHRoZQpvcGVyYXRvciBpcyBub3QgcmVhY2hhYmxlIGJ5IGFuIHVucXVh bGlmaWVkIGxvb2t1cCBvZiBpdHMgb3duIG5hbWUsIG9yIGlzCm5vdCBuYW1lZCAiPSIgLS0gdGhl IGNsYXVzZSBpcyBwcmludGVkLCBzY2hlbWEtcXVhbGlmaWVkIGFzIG5lZWRlZCwgcGVyIGFybS4K T3V0cHV0IGlzIHVuY2hhbmdlZCB3aGVuZXZlciB0aGUgYmFyZSBmb3JtIGFscmVhZHkgcmVjb3Zl cmVkIHRoZSBvcGVyYXRvci4KCkNhc2VXaGVuIG5vdyBzZXJpYWxpemVzIGFuIGFkZGl0aW9uYWwg ZmllbGQsIHNvIGJ1bXAgdGhlIGNhdGFsb2cgdmVyc2lvbi4KCkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vMzg1NjgzNC4xNzgzMDg3ODg2QHNzcy5wZ2gucGEudXMKLS0tCiBkb2Mvc3Jj L3NnbWwvZnVuYy9mdW5jLWNvbmRpdGlvbmFsLnNnbWwgICAgICAgfCAgMjIgKystCiBkb2Mvc3Jj L3NnbWwvc3ludGF4LnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAxMCArKwogc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgIDIzICsrLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDI5ICsrKysKIHNyYy9pbmNs dWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICAgICAgICAgIHwgICA2ICsKIC4uLi9yZWdyZXNz L2V4cGVjdGVkL29wZXJhdG9yX3F1YWxpZnkub3V0ICAgICB8IDEzOSArKysrKysrKysrKysrKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3FsICAgICB8ICA3NSAr KysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDMwNCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtY29uZGl0aW9uYWwuc2dt bCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtY29uZGl0aW9uYWwuc2dtbAppbmRleCAxMzdkNWM3 ZTQzLi42NzI5Nzg4ZTNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWNvbmRp dGlvbmFsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1jb25kaXRpb25hbC5zZ21s CkBAIC05OSw3ICs5OSw3IEBAIFNFTEVDVCBhLAogCiA8c3lub3BzaXM+CiBDQVNFIDxyZXBsYWNl YWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KLSAgICBXSEVOIDxyZXBsYWNlYWJsZT52YWx1 ZTwvcmVwbGFjZWFibGU+IFRIRU4gPHJlcGxhY2VhYmxlPnJlc3VsdDwvcmVwbGFjZWFibGU+Cisg ICAgV0hFTiA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IFVTSU5H IE9QRVJBVE9SKDxyZXBsYWNlYWJsZT5vcGVyYXRvcjwvcmVwbGFjZWFibGU+KSA8L29wdGlvbmFs PiBUSEVOIDxyZXBsYWNlYWJsZT5yZXN1bHQ8L3JlcGxhY2VhYmxlPgogICAgIDxvcHRpb25hbD5X SEVOIC4uLjwvb3B0aW9uYWw+CiAgICAgPG9wdGlvbmFsPkVMU0UgPHJlcGxhY2VhYmxlPnJlc3Vs dDwvcmVwbGFjZWFibGU+PC9vcHRpb25hbD4KIEVORApAQCAtMTE0LDYgKzExNCwyNiBAQCBFTkQK ICAgIHRvIHRoZSA8ZnVuY3Rpb24+c3dpdGNoPC9mdW5jdGlvbj4gc3RhdGVtZW50IGluIEMuCiAg IDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIEVhY2ggY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgZXhh Y3RseSBhcyBpZiB5b3UgaGFkCisgICB3cml0dGVuIDxsaXRlcmFsPjxyZXBsYWNlYWJsZT5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4KKyAgID0gPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJs ZT48L2xpdGVyYWw+LCBzbyBhCisgICBzdWl0YWJsZSA8bGl0ZXJhbD49PC9saXRlcmFsPiBvcGVy YXRvciBtdXN0IGJlIGF2YWlsYWJsZSwgYW5kIGl0IGlzCisgICByZXNvbHZlZCBieSBuYW1lIHRo cm91Z2ggdGhlIGN1cnJlbnQgc2VhcmNoIHBhdGggaW5kZXBlbmRlbnRseSBmb3IgZWFjaAorICAg PHRva2VuPldIRU48L3Rva2VuPiBjbGF1c2UuICBUbyBwaW4gYSBzcGVjaWZpYyBvcGVyYXRvciBm b3IgYQorICAgZ2l2ZW4gY2xhdXNlIGluc3RlYWQgJm1kYXNoOyBmb3IgZXhhbXBsZSBvbmUgYmVs b25naW5nIHRvIGFuIGV4dGVuc2lvbiB3aG9zZQorICAgc2NoZW1hIGlzIG5vdCBvbiB0aGUgc2Vh cmNoIHBhdGggJm1kYXNoOyBnaXZlIGl0cyBuYW1lIHdpdGggdGhlCisgICBvcHRpb25hbCA8bGl0 ZXJhbD5VU0lORyBPUEVSQVRPUigpPC9saXRlcmFsPiBjbGF1c2UgKHNlZQorICAgPHhyZWYgbGlu a2VuZD0ic3FsLWV4cHJlc3Npb25zLW9wZXJhdG9yLWNhbGxzIi8+IGZvcgorICAgdGhlIDxsaXRl cmFsPk9QRVJBVE9SKCk8L2xpdGVyYWw+IG5vdGF0aW9uKS4gIFdoZW4gYSB2aWV3IG9yIHJ1bGUg dGhhdCB1c2VzCisgICB0aGUgc2ltcGxlIDx0b2tlbj5DQVNFPC90b2tlbj4gZm9ybSBpcyBkdW1w ZWQsCisgICA8YXBwbGljYXRpb24+cGdfZHVtcDwvYXBwbGljYXRpb24+IGVtaXRzIHRoaXMgY2xh dXNlIGF1dG9tYXRpY2FsbHkgZm9yIGFueQorICAgY2xhdXNlIHdob3NlIGJhcmUgbmFtZSA8bGl0 ZXJhbD49PC9saXRlcmFsPiB3b3VsZCBub3QgcmVzb2x2ZSB0byB0aGUgc2FtZQorICAgb3BlcmF0 b3IgdW5kZXIgdGhlIHNlYXJjaCBwYXRoIHVzZWQgYXQgcmVzdG9yZSB0aW1lLCBvciB3aG9zZSBp bnRlbmRlZAorICAgb3BlcmF0b3IgaXMgbm90IG5hbWVkIDxsaXRlcmFsPj08L2xpdGVyYWw+IGF0 IGFsbCwgc28gdGhhdCB0aGUgZGVmaW5pdGlvbgorICAgcmVsb2FkcyB1bmFtYmlndW91c2x5Lgor ICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIFRoZSBleGFtcGxlIGFib3ZlIGNhbiBiZSB3cml0 dGVuIHVzaW5nIHRoZSBzaW1wbGUKICAgICA8dG9rZW4+Q0FTRTwvdG9rZW4+IHN5bnRheDoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbCBiL2RvYy9zcmMvc2dtbC9zeW50YXgu c2dtbAppbmRleCA1MTY1NTMzODEzLi5mMDZiOThlNzI4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvc3ludGF4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCkBAIC0xMTQxLDcg KzExNDEsMTEgQEAgU0VMRUNUIDMgT1BFUkFUT1IocGdfY2F0YWxvZy4rKSA0OwogICAgIG9mIG9w ZXJhdG9ycyBpbnNpZGUgPGxpdGVyYWw+T1BFUkFUT1IoKTwvbGl0ZXJhbD4sIG9uZSBmb3IgZWFj aCBjb2x1bW4gb2YKICAgICB0aGUgY29tcGFyZWQgcm93cyAoc2VlIDx4cmVmIGxpbmtlbmQ9InJv dy13aXNlLWNvbXBhcmlzb24iLz4pOyB0aGlzCiAgICAgaW5jbHVkZXMgcm93LWNvbnN0cnVjdG9y IGNvbXBhcmlzb25zIGFnYWluc3QgYSBzdWJxdWVyeQotICAgIChzZWUgPHhyZWYgbGlua2VuZD0i ZnVuY3Rpb25zLXN1YnF1ZXJ5Ii8+KS4KKyAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9u cy1zdWJxdWVyeSIvPikuICBUaGUgc2ltcGxlCisgICAgPHRva2VuPkNBU0U8L3Rva2VuPiBmb3Jt IGFjY2VwdHMgdGhlIGRlY29yYXRpb24gb24gZWFjaAorICAgIDx0b2tlbj5XSEVOPC90b2tlbj4g Y2xhdXNlIHdpdGggPGxpdGVyYWw+VVNJTkcgT1BFUkFUT1IoKTwvbGl0ZXJhbD4sCisgICAgcGlu bmluZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBmb3IgdGhhdCBhcm0KKyAgICAoc2VlIDx4cmVm IGxpbmtlbmQ9ImZ1bmN0aW9ucy1jYXNlIi8+KS4KICAgIDwvcGFyYT4KIAogICAgPG5vdGU+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQppbmRleCAzMGJkNjljMDFmLi5mMjhhZGMyYjU1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTE3 OTAwLDYgKzE3OTAwLDE2IEBAIHdoZW5fY2xhdXNlOgogCQkJCQl3LT5sb2NhdGlvbiA9IEAxOwog CQkJCQkkJCA9IChOb2RlICopIHc7CiAJCQkJfQorCQkJfCBXSEVOIGFfZXhwciBVU0lORyBPUEVS QVRPUiAnKCcgYW55X29wZXJhdG9yICcpJyBUSEVOIGFfZXhwcgorCQkJCXsKKwkJCQkJQ2FzZVdo ZW4gICAqdyA9IG1ha2VOb2RlKENhc2VXaGVuKTsKKworCQkJCQl3LT5vcG5hbWUgPSAkNjsKKwkJ CQkJdy0+ZXhwciA9IChFeHByICopICQyOworCQkJCQl3LT5yZXN1bHQgPSAoRXhwciAqKSAkOTsK KwkJCQkJdy0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSB3OworCQkJCX0KIAkJ OwogCiBjYXNlX2RlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCBhODYzMGU2YzM0 Li4wOWQ5MWM0Mzc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTE3NjYsMTIgKzE3NjYs MjUgQEAgdHJhbnNmb3JtQ2FzZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDYXNlRXhwciAqYykK IAkJd2FyZyA9IChOb2RlICopIHctPmV4cHI7CiAJCWlmIChwbGFjZWhvbGRlcikKIAkJewotCQkJ Lyogc2hvcnRoYW5kIGZvcm0gd2FzIHNwZWNpZmllZCwgc28gZXhwYW5kLi4uICovCi0JCQl3YXJn ID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIj0iLAotCQkJCQkJCQkJCQkg KE5vZGUgKikgcGxhY2Vob2xkZXIsCi0JCQkJCQkJCQkJCSB3YXJnLAotCQkJCQkJCQkJCQkgdy0+ bG9jYXRpb24pOworCQkJLyoKKwkJCSAqIFNob3J0aGFuZCBmb3JtIHdhcyBzcGVjaWZpZWQsIHNv IGV4cGFuZCBpdCBpbnRvIGFuIGVxdWFsaXR5CisJCQkgKiBjb21wYXJpc29uIGJldHdlZW4gdGhl IENBU0UgdGVzdCBleHByZXNzaW9uIGFuZCB0aGUgV0hFTiB2YWx1ZS4KKwkJCSAqIFRoZSBjb21w YXJpc29uIG9wZXJhdG9yIGRlZmF1bHRzIHRvICI9IiwgYnV0IHRoZSB1c2VyIG1heSBwaW4gYQor CQkJICogc3BlY2lmaWMgKHBvc3NpYmx5IHNjaGVtYS1xdWFsaWZpZWQpIG9wZXJhdG9yIHdpdGgg dGhlIG9wdGlvbmFsCisJCQkgKiBVU0lORyBPUEVSQVRPUigpIGNsYXVzZS4KKwkJCSAqLworCQkJ d2FyZyA9IChOb2RlICopIG1ha2VBX0V4cHIoQUVYUFJfT1AsCisJCQkJCQkJCQkgICB3LT5vcG5h bWUgPyB3LT5vcG5hbWUgOgorCQkJCQkJCQkJICAgbGlzdF9tYWtlMShtYWtlU3RyaW5nKCI9Iikp LAorCQkJCQkJCQkJICAgKE5vZGUgKikgcGxhY2Vob2xkZXIsIHdhcmcsCisJCQkJCQkJCQkgICB3 LT5sb2NhdGlvbik7CiAJCX0KKwkJZWxzZSBpZiAody0+b3BuYW1lICE9IE5JTCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVy cm1zZygiQ0FTRS9XSEVOIC4uLiBVU0lORyBPUEVSQVRPUiByZXF1aXJlcyBhIENBU0UgdGVzdCBl eHByZXNzaW9uIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCB3LT5sb2NhdGlv bikpKTsKKwkJbmV3dy0+b3BuYW1lID0gTklMOwkJLyogcmF3LW9ubHk7IGtlZXAgYW5hbHl6ZWQg dHJlZXMgY2xlYW4gKi8KIAkJbmV3dy0+ZXhwciA9IChFeHByICopIHRyYW5zZm9ybUV4cHJSZWN1 cnNlKHBzdGF0ZSwgd2FyZyk7CiAKIAkJbmV3dy0+ZXhwciA9IChFeHByICopIGNvZXJjZV90b19i b29sZWFuKHBzdGF0ZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA0ODdlZTRiNmUw Li5hZWE5NjI4MTA2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMDQzMyw2ICsx MDQzMyw3IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0LAogCQkJCXsKIAkJCQkJQ2FzZVdoZW4gICAqd2hlbiA9IChDYXNlV2hlbiAqKSBsZmlyc3Qo dGVtcCk7CiAJCQkJCU5vZGUJICAgKncgPSAoTm9kZSAqKSB3aGVuLT5leHByOworCQkJCQlPcEV4 cHIJICAgKnVzaW5nb3AgPSBOVUxMOwogCiAJCQkJCWlmIChjYXNlZXhwci0+YXJnKQogCQkJCQl7 CkBAIC0xMDQ1NSw3ICsxMDQ1NiwxMCBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFy c2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJCQlpZiAobGlzdF9sZW5ndGgoYXJncykgPT0gMiAm JgogCQkJCQkJCQlJc0Eoc3RyaXBfaW1wbGljaXRfY29lcmNpb25zKGxpbml0aWFsKGFyZ3MpKSwK IAkJCQkJCQkJCUNhc2VUZXN0RXhwcikpCisJCQkJCQkJeworCQkJCQkJCQl1c2luZ29wID0gKE9w RXhwciAqKSB3OwogCQkJCQkJCQl3ID0gKE5vZGUgKikgbHNlY29uZChhcmdzKTsKKwkJCQkJCQl9 CiAJCQkJCQl9CiAJCQkJCX0KIApAQCAtMTA0NjQsNiArMTA0NjgsMzEgQEAgZ2V0X3J1bGVfZXhw cihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCWFwcGVuZENvbnRl eHRLZXl3b3JkKGNvbnRleHQsICJXSEVOICIsCiAJCQkJCQkJCQkJIDAsIDAsIDApOwogCQkJCQln ZXRfcnVsZV9leHByKHcsIGNvbnRleHQsIGZhbHNlKTsKKworCQkJCQkvKgorCQkJCQkgKiBJZiB3 ZSByZWNvZ25pemVkIHRoZSBpbXBsaWNpdC1lcXVhbGl0eSBXSEVOIGZvcm0sIHRoZQorCQkJCQkg KiBjb21wYXJpc29uIG9wZXJhdG9yIHdhcyByZXNvbHZlZCBmcm9tIHRoZSBiYXJlIG5hbWUgIj0i CisJCQkJCSAqIGFnYWluc3QgdGhlIENBU0UgdGVzdCBleHByZXNzaW9uIGFuZCB0aGUgV0hFTiB2 YWx1ZS4gIEEKKwkJCQkJICogYmFyZSAiV0hFTiB2YWx1ZSIgcmVwYXJzZXMgYnkgcmVzb2x2aW5n ICI9IiBhZ2Fpbiwgc28KKwkJCQkJICogd2UgbXVzdCBlbWl0IGFuIGV4cGxpY2l0IFVTSU5HIE9Q RVJBVE9SKCkgY2xhdXNlCisJCQkJCSAqIHdoZW5ldmVyIHRoYXQgd291bGQgbm90IHJlY292ZXIg dGhlIHNhbWUgb3BlcmF0b3I6IGkuZS4KKwkJCQkJICogdGhlIG9wZXJhdG9yIGlzIG5vdCByZWFj aGFibGUgYnkgYW4gdW5xdWFsaWZpZWQgbG9va3VwCisJCQkJCSAqIG9mIGl0cyBvd24gbmFtZSAo dGhlbiBpdCBhcHBlYXJzIHNjaGVtYS1xdWFsaWZpZWQpLCBvcgorCQkJCQkgKiBpdCBpcyBuYW1l ZCBzb21ldGhpbmcgb3RoZXIgdGhhbiAiPSIuCisJCQkJCSAqLworCQkJCQlpZiAodXNpbmdvcCkK KwkJCQkJeworCQkJCQkJYm9vbAkJbmVlZHNfcXVhbDsKKwkJCQkJCWNoYXIJICAgKm9wbmFtZTsK KworCQkJCQkJb3BuYW1lID0gZ2VuZXJhdGVfb3BlcmF0b3JfbmFtZV9leHRlbmRlZCh1c2luZ29w LT5vcG5vLAorCQkJCQkJCQkJCQkJCQkJCSBleHByVHlwZShsaW5pdGlhbCh1c2luZ29wLT5hcmdz KSksCisJCQkJCQkJCQkJCQkJCQkJIGV4cHJUeXBlKGxzZWNvbmQodXNpbmdvcC0+YXJncykpLAor CQkJCQkJCQkJCQkJCQkJCSAmbmVlZHNfcXVhbCk7CisJCQkJCQlpZiAobmVlZHNfcXVhbCB8fCBz dHJjbXAob3BuYW1lLCAiPSIpICE9IDApCisJCQkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIg VVNJTkcgT1BFUkFUT1IoJXMpIiwgb3BuYW1lKTsKKwkJCQkJfQorCiAJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLCAiIFRIRU4gIik7CiAJCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikg d2hlbi0+cmVzdWx0LCBjb250ZXh0LCB0cnVlKTsKIAkJCQl9CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lv bi5oCmluZGV4IDc1NzFjNWNkMDguLjc5MjkxYWFhZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvY2F0dmVyc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lv bi5oCkBAIC01Nyw2ICs1Nyw2IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGROICovCi0jZGVm aW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDI2MDcwNjEKKyNkZWZpbmUgQ0FUQUxPR19WRVJTSU9O X05PCTIwMjYwNzA3MQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggYmYzNDNjYmVj MC4uMDBmMzdjMjI5NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTEzNDAsNiArMTM0MCwxMiBA QCB0eXBlZGVmIHN0cnVjdCBDYXNlRXhwcgogdHlwZWRlZiBzdHJ1Y3QgQ2FzZVdoZW4KIHsKIAlF eHByCQl4cHI7CisKKwkvKgorCSAqIHBvc3NpYmx5LXF1YWxpZmllZCBvcGVyYXRvciBuYW1lIGdp dmVuIHdpdGggVVNJTkcgT1BFUkFUT1IoKSwgb3IgTklMOworCSAqIGNvbnN1bWVkIGJ5IHBhcnNl IGFuYWx5c2lzLCBhbHdheXMgTklMIGluIGFuYWx5emVkIHRyZWVzCisJICovCisJTGlzdAkgICAq b3BuYW1lIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAlFeHByCSAgICpleHBy OwkJCS8qIGNvbmRpdGlvbiBleHByZXNzaW9uICovCiAJRXhwcgkgICAqcmVzdWx0OwkJCS8qIHN1 YnN0aXR1dGlvbiByZXN1bHQgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0 aW9uLCBvciAtMSBpZiB1bmtub3duICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29wZXJhdG9yX3F1YWxpZnkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9v cGVyYXRvcl9xdWFsaWZ5Lm91dAppbmRleCBjMDg4N2U2MzExLi5mMTM0OTZlZjc4IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wZXJhdG9yX3F1YWxpZnkub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3BlcmF0b3JfcXVhbGlmeS5vdXQKQEAgLTc1Miwz ICs3NTIsMTQyIEBAIERST1AgVklFVyBvcV92X2FueV9yZWxvYWQsIG9xX3ZfaW5fcmVsb2FkLCBv cV92X25lX2FsbF9yZWxvYWQsCiAgICAgICAgICAgb3Ffdl9pbl9taXhlZF9yZWxvYWQsIG9xX3Zf YW55X21peGVkX3JlbG9hZDsKIC0tIE5PVEU6IHRoZSBuZXcgb3Ffdl8qIGJhc2Ugdmlld3MgYXJl IGludGVudGlvbmFsbHkga2VwdCAobGlrZSB0aGUgb3RoZXJzKQogLS0gc28gdGhlIHBnX3VwZ3Jh ZGUgc3VpdGUgZHVtcC9yZXN0b3JlcyB0aGVtIGFuZCBleGVyY2lzZXMgdGhlIGRlcGFyc2UuCist LQorLS0gU2ltcGxlIENBU0U6IGVhY2ggIkNBU0UgeCBXSEVOIHkiIGFybSByZXNvbHZlcyBpdHMg b3duICI9IiBvcGVyYXRvciBieQorLS0gdW5xdWFsaWZpZWQgbmFtZSwgaW5kZXBlbmRlbnRseSBw ZXIgV0hFTiBjbGF1c2UuICBUaGUgY29tcGFyaXNvbiBvcGVyYXRvcgorLS0gY2FuIGJlIHBpbm5l ZCBwZXIgYXJtIHdpdGggVVNJTkcgT1BFUkFUT1IoKTsgdGhlIGRlcGFyc2UgZGVjb3JhdGVzIG9u bHkgdGhlCistLSBhcm1zIHdob3NlIGJhcmUgIj0iIHdvdWxkIG5vdCByZWNvdmVyIHRoZSBzYW1l IG9wZXJhdG9yIGF0IHJlc3RvcmUgdGltZS4KKy0tCistLSBCdWlsdCB3aGlsZSBhbHRfb3BzIHNo YWRvd3MgcGdfY2F0YWxvZzogdGhlIGltcGxpY2l0ICI9IiByZXNvbHZlcyBhbHRfb3BzLj0uCitT RVQgc2VhcmNoX3BhdGggPSBhbHRfb3BzLCBwZ19jYXRhbG9nOworQ1JFQVRFIFZJRVcgcHVibGlj Lm9xX3ZfY2FzZSBBUworICBTRUxFQ1QgQ0FTRSBhIFdIRU4gYiBUSEVOICdlcScgRUxTRSAnbmUn IEVORCBBUyByIEZST00gcHVibGljLm9xX3Q7CitSRVNFVCBzZWFyY2hfcGF0aDsKKy0tIE9mZiB0 aGUgcGF0aCwgdGhlIGFybSdzIG9wZXJhdG9yIG11c3QgYmUgcXVhbGlmaWVkOiB0aGUgYmFyZSBm b3JtIHdvdWxkCistLSByZXBhcnNlICI9IiAocGdfY2F0YWxvZy49KSwgYSBkaWZmZXJlbnQgb3Bl cmF0b3IuCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfY2FzZSc6OnJlZ2NsYXNzLCB0cnVl KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENBU0UgYSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgV0hFTiBiIFVTSU5H IE9QRVJBVE9SKGFsdF9vcHMuPSkgVEhFTiAnZXEnOjp0ZXh0KworICAgICAgICAgICAgIEVMU0Ug J25lJzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIEVO RCBBUyByICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg RlJPTSBvcV90OworKDEgcm93KQorCistLSBXaXRoIGFsdF9vcHMgcmVhY2hhYmxlIGFnYWluLCB0 aGUgcGxhaW4gc2ltcGxlLUNBU0Ugc3ludGF4IGNvbWVzIGJhY2suCitTRVQgc2VhcmNoX3BhdGgg PSBhbHRfb3BzLCBwZ19jYXRhbG9nLCBwdWJsaWM7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29x X3ZfY2FzZSc6OnJlZ2NsYXNzLCB0cnVlKTsKKyAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENBU0UgYSAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAgIFdIRU4gYiBUSEVOICdlcSc6OnRleHQrCisgICAgICAgICAg ICAgRUxTRSAnbmUnOjp0ZXh0ICAgICAgICsKKyAgICAgICAgIEVORCBBUyByICAgICAgICAgICAg ICAgICAgKworICAgIEZST00gb3FfdDsKKygxIHJvdykKKworUkVTRVQgc2VhcmNoX3BhdGg7Cist LSBBIGJhcmUtcmVzb2x2YWJsZSBvcGVyYXRvciB3aG9zZSBuYW1lIGlzIG5vdCAiPSIgbXVzdCBz dGlsbCBiZSBkZWNvcmF0ZWQ6CistLSByZXBhcnNpbmcgIldIRU4gYiIgd291bGQgcmVzb2x2ZSAi PSIsIG5vdCB0aGlzIG9wZXJhdG9yLiAgcGdfY2F0YWxvZy48IGlzIG9uCistLSB0aGUgZGVmYXVs dCBzZWFyY2hfcGF0aCwgc28gaXRzIG5hbWUgcHJpbnRzIHVucXVhbGlmaWVkLCBidXQgaXQgaXMg d3JhcHBlZCBpbgorLS0gT1BFUkFUT1IoKSBzbyB0aGUgcmVwYXJzZWQgc2VtYW50aWNzIHN0YXkg aWRlbnRpY2FsLgorQ1JFQVRFIFZJRVcgcHVibGljLm9xX3ZfY2FzZV9sdCBBUworICBTRUxFQ1Qg Q0FTRSBhIFdIRU4gYiBVU0lORyBPUEVSQVRPUig8KSBUSEVOICdsdCcgRUxTRSAnZ2UnIEVORCBB UyByCisgIEZST00gcHVibGljLm9xX3Q7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfY2Fz ZV9sdCc6OnJlZ2NsYXNzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdk ZWYgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENBU0UgYSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgIFdIRU4gYiBVU0lORyBPUEVSQVRPUig8 KSBUSEVOICdsdCc6OnRleHQrCisgICAgICAgICAgICAgRUxTRSAnZ2UnOjp0ZXh0ICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgIEVORCBBUyByICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgIEZST00gb3FfdDsKKygxIHJvdykKKworLS0gUGVyLWFybSBv cGVyYXRvcnMgbWF5IGRpZmZlciB3aXRoaW4gb25lIENBU0UuICBCdWlsdCB1bmRlciB0aGUgYWx0 X29wcyBwYXRoOgorLS0gdGhlIGZpcnN0IGFybSdzIGltcGxpY2l0ICI9IiByZXNvbHZlcyBhbHRf b3BzLj0gKG9mZiB0aGUgZGVmYXVsdCBwYXRoIC0+IG11c3QKKy0tIGJlIHF1YWxpZmllZCksIHdo aWxlIHRoZSBzZWNvbmQgYXJtIHBpbnMgcGdfY2F0YWxvZy49IGV4cGxpY2l0bHkgKHJlYWNoYWJs ZQorLS0gYmFyZSAtPiBzdGF5cyB1bmRlY29yYXRlZCkuICBUaGUgZGVwYXJzZSBkZWNvcmF0ZXMg b25seSB0aGUgZmlyc3QgYXJtLgorU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdfY2F0YWxv ZzsKK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2Nhc2VfbWl4ZWQgQVMKKyAgU0VMRUNUIENBU0Ug YSBXSEVOIGIgVEhFTiAneCcKKyAgICAgICAgICAgICAgICBXSEVOIGlkIFVTSU5HIE9QRVJBVE9S KHBnX2NhdGFsb2cuPSkgVEhFTiAneScKKyAgICAgICAgICAgICAgICBFTFNFICd6JyBFTkQgQVMg cgorICBGUk9NIHB1YmxpYy5vcV90OworUkVTRVQgc2VhcmNoX3BhdGg7CitTRUxFQ1QgcGdfZ2V0 X3ZpZXdkZWYoJ29xX3ZfY2FzZV9taXhlZCc6OnJlZ2NsYXNzLCB0cnVlKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgU0VMRUNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgIENBU0UgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICBXSEVOIGIgVVNJTkcgT1BFUkFUT1IoYWx0X29wcy49 KSBUSEVOICd4Jzo6dGV4dCsKKyAgICAgICAgICAgICBXSEVOIGlkIFRIRU4gJ3knOjp0ZXh0ICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICBFTFNFICd6Jzo6dGV4dCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIEVORCBBUyByICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIG9xX3Q7CisoMSBy b3cpCisKKy0tIFRoZSBkZWNvcmF0ZWQgc3ludGF4IGlzIGRpcmVjdGx5IGFjY2VwdGFibGUsIGFu ZCBpdCBwaW5zIHRoZSBnaXZlbiBvcGVyYXRvci4KK1NFTEVDVCBDQVNFIDEgV0hFTiAyIFVTSU5H IE9QRVJBVE9SKGFsdF9vcHMuPSkgVEhFTiAneCcgRUxTRSAneScgRU5EIEFTIHk7CisgeSAKKy0t LQorIHkKKygxIHJvdykKKworU0VMRUNUIENBU0UgMSBXSEVOIDEgVVNJTkcgT1BFUkFUT1IocGdf Y2F0YWxvZy49KSBUSEVOICd4JyBFTFNFICd5JyBFTkQgQVMgeDsKKyB4IAorLS0tCisgeAorKDEg cm93KQorCistLSBhbiB1bnF1YWxpZmllZCBuYW1lIGluc2lkZSB0aGUgZGVjb3JhdGlvbiBpcyBm aW5lIHRvbworU0VMRUNUIENBU0UgMSBXSEVOIDEgVVNJTkcgT1BFUkFUT1IoPSkgVEhFTiAneCcg RUxTRSAneScgRU5EIEFTIHg7CisgeCAKKy0tLQorIHgKKygxIHJvdykKKworLS0gVVNJTkcgT1BF UkFUT1IoKSBvbmx5IG1ha2VzIHNlbnNlIGZvciB0aGUgc2ltcGxlIGZvcm07IHRoZSBzZWFyY2hl ZCBDQVNFCistLSAobm8gQ0FTRSB0ZXN0IGV4cHJlc3Npb24pIHJlamVjdHMgaXQsIHBvaW50aW5n IGF0IHRoZSBvZmZlbmRpbmcgV0hFTi4KK1NFTEVDVCBDQVNFIFdIRU4gMT0xIFVTSU5HIE9QRVJB VE9SKD0pIFRIRU4gMSBFTkQ7CitFUlJPUjogIENBU0UvV0hFTiAuLi4gVVNJTkcgT1BFUkFUT1Ig cmVxdWlyZXMgYSBDQVNFIHRlc3QgZXhwcmVzc2lvbgorTElORSAxOiBTRUxFQ1QgQ0FTRSBXSEVO IDE9MSBVU0lORyBPUEVSQVRPUig9KSBUSEVOIDEgRU5EOworICAgICAgICAgICAgICAgICAgICBe CistLSBUaGUgZGVwYXJzZWQgc2ltcGxlLUNBU0UgZGVmaW5pdGlvbnMgbXVzdCByZXBhcnNlIHVu ZGVyIGEgcmVzdHJpY3RlZAorLS0gc2VhcmNoX3BhdGggKHRoZSBwZ19kdW1wIHNjZW5hcmlvKSwg cGlubmluZyB0aGUgc2FtZSBvcGVyYXRvciBPSURzLgorQkVHSU47IFNFVCBMT0NBTCBzZWFyY2hf cGF0aCA9IHBnX2NhdGFsb2c7CitETyAkJCBCRUdJTgorICBFWEVDVVRFICdDUkVBVEUgVklFVyBw dWJsaWMub3Ffdl9jYXNlX3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ff dl9jYXNlJzo6cmVnY2xhc3MpOworICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9j YXNlX2x0X3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9jYXNlX2x0 Jzo6cmVnY2xhc3MpOworICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9jYXNlX21p eGVkX3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9jYXNlX21peGVk Jzo6cmVnY2xhc3MpOworRU5EICQkOyBDT01NSVQ7CistLSBUaGUgcmVsb2FkZWQgdmlld3MgcGlu IGFsdF9vcHMuPSBmb3IgdGhlIGFybXMgdGhhdCB3ZXJlIGRlY29yYXRlZDogdGhlIHdob2xlCist LSBDQVNFIHZpZXcgKGFybSAxKSBhbmQgdGhlIG1peGVkIHZpZXcgKGFybSAxKS4gIFRoZSBzaW1w bGUgQ0FTRSBleHBhbmRzIGVhY2gKKy0tIGFybSBpbnRvIGFuIE9wRXhwciwgc2VyaWFsaXplZCB3 aXRoICI6b3BubyIuCitTRUxFQ1QgZXZfY2xhc3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0ZQor V0hFUkUgZXZfYWN0aW9uIExJS0UgJyU6b3BubyAnIHx8ICdhbHRfb3BzLj0oaW50NCxpbnQ0KSc6 OnJlZ29wZXJhdG9yOjpvaWQgfHwgJyAlJworICBBTkQgZXZfY2xhc3M6OnJlZ2NsYXNzOjp0ZXh0 IExJS0UgJ29xX3ZfY2FzZSVyZWxvYWQnCitPUkRFUiBCWSAxOworICAgICAgICBldl9jbGFzcyAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBvcV92X2Nhc2VfcmVsb2FkCisgb3Ff dl9jYXNlX21peGVkX3JlbG9hZAorKDIgcm93cykKKworLS0gVGhlIG5vbi0iPSIgb3BlcmF0b3Ig T1BFUkFUT1IoPCkgcGlucyBpbnQ0bHQgYWNyb3NzIHRoZSByZWxvYWQuCitTRUxFQ1QgZXZfY2xh c3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0ZQorV0hFUkUgZXZfYWN0aW9uIExJS0UgJyU6b3Bu byAnIHx8ICdwZ19jYXRhbG9nLjwoaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQgfHwgJyAl JworICBBTkQgZXZfY2xhc3M6OnJlZ2NsYXNzOjp0ZXh0IExJS0UgJ29xX3ZfY2FzZSVsdF9yZWxv YWQnCitPUkRFUiBCWSAxOworICAgICAgZXZfY2xhc3MgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBvcV92X2Nhc2VfbHRfcmVsb2FkCisoMSByb3cpCisKK0RST1AgVklFVyBvcV92X2Nh c2VfcmVsb2FkLCBvcV92X2Nhc2VfbHRfcmVsb2FkLCBvcV92X2Nhc2VfbWl4ZWRfcmVsb2FkOwor LS0gTk9URTogdGhlIG9xX3ZfY2FzZSogYmFzZSB2aWV3cyBhcmUgaW50ZW50aW9uYWxseSBrZXB0 IChsaWtlIHRoZSBvdGhlcnMpIHNvCistLSB0aGUgcGdfdXBncmFkZSBzdWl0ZSBkdW1wL3Jlc3Rv cmVzIHRoZW0gYW5kIGV4ZXJjaXNlcyB0aGUgZGVwYXJzZS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL29wZXJhdG9yX3F1YWxpZnkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv b3BlcmF0b3JfcXVhbGlmeS5zcWwKaW5kZXggZjAyOWQwZWI3My4uYTJiMzVlM2IwYiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3BlcmF0b3JfcXVhbGlmeS5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvb3BlcmF0b3JfcXVhbGlmeS5zcWwKQEAgLTQyNCwzICs0MjQsNzgg QEAgRFJPUCBWSUVXIG9xX3ZfYW55X3JlbG9hZCwgb3Ffdl9pbl9yZWxvYWQsIG9xX3ZfbmVfYWxs X3JlbG9hZCwKICAgICAgICAgICBvcV92X2luX21peGVkX3JlbG9hZCwgb3Ffdl9hbnlfbWl4ZWRf cmVsb2FkOwogLS0gTk9URTogdGhlIG5ldyBvcV92XyogYmFzZSB2aWV3cyBhcmUgaW50ZW50aW9u YWxseSBrZXB0IChsaWtlIHRoZSBvdGhlcnMpCiAtLSBzbyB0aGUgcGdfdXBncmFkZSBzdWl0ZSBk dW1wL3Jlc3RvcmVzIHRoZW0gYW5kIGV4ZXJjaXNlcyB0aGUgZGVwYXJzZS4KKworLS0KKy0tIFNp bXBsZSBDQVNFOiBlYWNoICJDQVNFIHggV0hFTiB5IiBhcm0gcmVzb2x2ZXMgaXRzIG93biAiPSIg b3BlcmF0b3IgYnkKKy0tIHVucXVhbGlmaWVkIG5hbWUsIGluZGVwZW5kZW50bHkgcGVyIFdIRU4g Y2xhdXNlLiAgVGhlIGNvbXBhcmlzb24gb3BlcmF0b3IKKy0tIGNhbiBiZSBwaW5uZWQgcGVyIGFy bSB3aXRoIFVTSU5HIE9QRVJBVE9SKCk7IHRoZSBkZXBhcnNlIGRlY29yYXRlcyBvbmx5IHRoZQor LS0gYXJtcyB3aG9zZSBiYXJlICI9IiB3b3VsZCBub3QgcmVjb3ZlciB0aGUgc2FtZSBvcGVyYXRv ciBhdCByZXN0b3JlIHRpbWUuCistLQorLS0gQnVpbHQgd2hpbGUgYWx0X29wcyBzaGFkb3dzIHBn X2NhdGFsb2c6IHRoZSBpbXBsaWNpdCAiPSIgcmVzb2x2ZXMgYWx0X29wcy49LgorU0VUIHNlYXJj aF9wYXRoID0gYWx0X29wcywgcGdfY2F0YWxvZzsKK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2Nh c2UgQVMKKyAgU0VMRUNUIENBU0UgYSBXSEVOIGIgVEhFTiAnZXEnIEVMU0UgJ25lJyBFTkQgQVMg ciBGUk9NIHB1YmxpYy5vcV90OworUkVTRVQgc2VhcmNoX3BhdGg7CistLSBPZmYgdGhlIHBhdGgs IHRoZSBhcm0ncyBvcGVyYXRvciBtdXN0IGJlIHF1YWxpZmllZDogdGhlIGJhcmUgZm9ybSB3b3Vs ZAorLS0gcmVwYXJzZSAiPSIgKHBnX2NhdGFsb2cuPSksIGEgZGlmZmVyZW50IG9wZXJhdG9yLgor U0VMRUNUIHBnX2dldF92aWV3ZGVmKCdvcV92X2Nhc2UnOjpyZWdjbGFzcywgdHJ1ZSk7CistLSBX aXRoIGFsdF9vcHMgcmVhY2hhYmxlIGFnYWluLCB0aGUgcGxhaW4gc2ltcGxlLUNBU0Ugc3ludGF4 IGNvbWVzIGJhY2suCitTRVQgc2VhcmNoX3BhdGggPSBhbHRfb3BzLCBwZ19jYXRhbG9nLCBwdWJs aWM7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfY2FzZSc6OnJlZ2NsYXNzLCB0cnVlKTsK K1JFU0VUIHNlYXJjaF9wYXRoOworCistLSBBIGJhcmUtcmVzb2x2YWJsZSBvcGVyYXRvciB3aG9z ZSBuYW1lIGlzIG5vdCAiPSIgbXVzdCBzdGlsbCBiZSBkZWNvcmF0ZWQ6CistLSByZXBhcnNpbmcg IldIRU4gYiIgd291bGQgcmVzb2x2ZSAiPSIsIG5vdCB0aGlzIG9wZXJhdG9yLiAgcGdfY2F0YWxv Zy48IGlzIG9uCistLSB0aGUgZGVmYXVsdCBzZWFyY2hfcGF0aCwgc28gaXRzIG5hbWUgcHJpbnRz IHVucXVhbGlmaWVkLCBidXQgaXQgaXMgd3JhcHBlZCBpbgorLS0gT1BFUkFUT1IoKSBzbyB0aGUg cmVwYXJzZWQgc2VtYW50aWNzIHN0YXkgaWRlbnRpY2FsLgorQ1JFQVRFIFZJRVcgcHVibGljLm9x X3ZfY2FzZV9sdCBBUworICBTRUxFQ1QgQ0FTRSBhIFdIRU4gYiBVU0lORyBPUEVSQVRPUig8KSBU SEVOICdsdCcgRUxTRSAnZ2UnIEVORCBBUyByCisgIEZST00gcHVibGljLm9xX3Q7CitTRUxFQ1Qg cGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfY2FzZV9sdCc6OnJlZ2NsYXNzLCB0cnVlKTsKKworLS0gUGVy LWFybSBvcGVyYXRvcnMgbWF5IGRpZmZlciB3aXRoaW4gb25lIENBU0UuICBCdWlsdCB1bmRlciB0 aGUgYWx0X29wcyBwYXRoOgorLS0gdGhlIGZpcnN0IGFybSdzIGltcGxpY2l0ICI9IiByZXNvbHZl cyBhbHRfb3BzLj0gKG9mZiB0aGUgZGVmYXVsdCBwYXRoIC0+IG11c3QKKy0tIGJlIHF1YWxpZmll ZCksIHdoaWxlIHRoZSBzZWNvbmQgYXJtIHBpbnMgcGdfY2F0YWxvZy49IGV4cGxpY2l0bHkgKHJl YWNoYWJsZQorLS0gYmFyZSAtPiBzdGF5cyB1bmRlY29yYXRlZCkuICBUaGUgZGVwYXJzZSBkZWNv cmF0ZXMgb25seSB0aGUgZmlyc3QgYXJtLgorU0VUIHNlYXJjaF9wYXRoID0gYWx0X29wcywgcGdf Y2F0YWxvZzsKK0NSRUFURSBWSUVXIHB1YmxpYy5vcV92X2Nhc2VfbWl4ZWQgQVMKKyAgU0VMRUNU IENBU0UgYSBXSEVOIGIgVEhFTiAneCcKKyAgICAgICAgICAgICAgICBXSEVOIGlkIFVTSU5HIE9Q RVJBVE9SKHBnX2NhdGFsb2cuPSkgVEhFTiAneScKKyAgICAgICAgICAgICAgICBFTFNFICd6JyBF TkQgQVMgcgorICBGUk9NIHB1YmxpYy5vcV90OworUkVTRVQgc2VhcmNoX3BhdGg7CitTRUxFQ1Qg cGdfZ2V0X3ZpZXdkZWYoJ29xX3ZfY2FzZV9taXhlZCc6OnJlZ2NsYXNzLCB0cnVlKTsKKworLS0g VGhlIGRlY29yYXRlZCBzeW50YXggaXMgZGlyZWN0bHkgYWNjZXB0YWJsZSwgYW5kIGl0IHBpbnMg dGhlIGdpdmVuIG9wZXJhdG9yLgorU0VMRUNUIENBU0UgMSBXSEVOIDIgVVNJTkcgT1BFUkFUT1Io YWx0X29wcy49KSBUSEVOICd4JyBFTFNFICd5JyBFTkQgQVMgeTsKK1NFTEVDVCBDQVNFIDEgV0hF TiAxIFVTSU5HIE9QRVJBVE9SKHBnX2NhdGFsb2cuPSkgVEhFTiAneCcgRUxTRSAneScgRU5EIEFT IHg7CistLSBhbiB1bnF1YWxpZmllZCBuYW1lIGluc2lkZSB0aGUgZGVjb3JhdGlvbiBpcyBmaW5l IHRvbworU0VMRUNUIENBU0UgMSBXSEVOIDEgVVNJTkcgT1BFUkFUT1IoPSkgVEhFTiAneCcgRUxT RSAneScgRU5EIEFTIHg7CisKKy0tIFVTSU5HIE9QRVJBVE9SKCkgb25seSBtYWtlcyBzZW5zZSBm b3IgdGhlIHNpbXBsZSBmb3JtOyB0aGUgc2VhcmNoZWQgQ0FTRQorLS0gKG5vIENBU0UgdGVzdCBl eHByZXNzaW9uKSByZWplY3RzIGl0LCBwb2ludGluZyBhdCB0aGUgb2ZmZW5kaW5nIFdIRU4uCitT RUxFQ1QgQ0FTRSBXSEVOIDE9MSBVU0lORyBPUEVSQVRPUig9KSBUSEVOIDEgRU5EOworCistLSBU aGUgZGVwYXJzZWQgc2ltcGxlLUNBU0UgZGVmaW5pdGlvbnMgbXVzdCByZXBhcnNlIHVuZGVyIGEg cmVzdHJpY3RlZAorLS0gc2VhcmNoX3BhdGggKHRoZSBwZ19kdW1wIHNjZW5hcmlvKSwgcGlubmlu ZyB0aGUgc2FtZSBvcGVyYXRvciBPSURzLgorQkVHSU47IFNFVCBMT0NBTCBzZWFyY2hfcGF0aCA9 IHBnX2NhdGFsb2c7CitETyAkJCBCRUdJTgorICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMu b3Ffdl9jYXNlX3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9jYXNl Jzo6cmVnY2xhc3MpOworICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9jYXNlX2x0 X3JlbG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9jYXNlX2x0Jzo6cmVn Y2xhc3MpOworICBFWEVDVVRFICdDUkVBVEUgVklFVyBwdWJsaWMub3Ffdl9jYXNlX21peGVkX3Jl bG9hZCBBUyAnIHx8IHBnX2dldF92aWV3ZGVmKCdwdWJsaWMub3Ffdl9jYXNlX21peGVkJzo6cmVn Y2xhc3MpOworRU5EICQkOyBDT01NSVQ7CistLSBUaGUgcmVsb2FkZWQgdmlld3MgcGluIGFsdF9v cHMuPSBmb3IgdGhlIGFybXMgdGhhdCB3ZXJlIGRlY29yYXRlZDogdGhlIHdob2xlCistLSBDQVNF IHZpZXcgKGFybSAxKSBhbmQgdGhlIG1peGVkIHZpZXcgKGFybSAxKS4gIFRoZSBzaW1wbGUgQ0FT RSBleHBhbmRzIGVhY2gKKy0tIGFybSBpbnRvIGFuIE9wRXhwciwgc2VyaWFsaXplZCB3aXRoICI6 b3BubyIuCitTRUxFQ1QgZXZfY2xhc3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0ZQorV0hFUkUg ZXZfYWN0aW9uIExJS0UgJyU6b3BubyAnIHx8ICdhbHRfb3BzLj0oaW50NCxpbnQ0KSc6OnJlZ29w ZXJhdG9yOjpvaWQgfHwgJyAlJworICBBTkQgZXZfY2xhc3M6OnJlZ2NsYXNzOjp0ZXh0IExJS0Ug J29xX3ZfY2FzZSVyZWxvYWQnCitPUkRFUiBCWSAxOworLS0gVGhlIG5vbi0iPSIgb3BlcmF0b3Ig T1BFUkFUT1IoPCkgcGlucyBpbnQ0bHQgYWNyb3NzIHRoZSByZWxvYWQuCitTRUxFQ1QgZXZfY2xh c3M6OnJlZ2NsYXNzIEZST00gcGdfcmV3cml0ZQorV0hFUkUgZXZfYWN0aW9uIExJS0UgJyU6b3Bu byAnIHx8ICdwZ19jYXRhbG9nLjwoaW50NCxpbnQ0KSc6OnJlZ29wZXJhdG9yOjpvaWQgfHwgJyAl JworICBBTkQgZXZfY2xhc3M6OnJlZ2NsYXNzOjp0ZXh0IExJS0UgJ29xX3ZfY2FzZSVsdF9yZWxv YWQnCitPUkRFUiBCWSAxOworRFJPUCBWSUVXIG9xX3ZfY2FzZV9yZWxvYWQsIG9xX3ZfY2FzZV9s dF9yZWxvYWQsIG9xX3ZfY2FzZV9taXhlZF9yZWxvYWQ7CistLSBOT1RFOiB0aGUgb3Ffdl9jYXNl KiBiYXNlIHZpZXdzIGFyZSBpbnRlbnRpb25hbGx5IGtlcHQgKGxpa2UgdGhlIG90aGVycykgc28K Ky0tIHRoZSBwZ191cGdyYWRlIHN1aXRlIGR1bXAvcmVzdG9yZXMgdGhlbSBhbmQgZXhlcmNpc2Vz IHRoZSBkZXBhcnNlLgotLSAKMi41NC4wCgo= --6a4d06a8_62bbd95a_14ffe Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0000-cover-letter.patch" RnJvbSBiMGNkY2U4NGY3ODI1NjUxYTZiZGExYTM3MWJjYzI0NTgzMTE1NDVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGE9QzU9ODI9MjBQYXN0ZXJuYWs/PSA8 bWljaGFsLmR0ekBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNyBKdWwgMjAyNiAxNTowOTozNiArMDIw MApTdWJqZWN0OiBbUEFUQ0ggdjIgMC81XSBTY2hlbWEtcXVhbGlmaWFibGUgb3BlcmF0b3Igc3lu dGF4IGZvcgogaW1wbGljaXQtb3BlcmF0b3IgY29uc3RydWN0cyAod2FzOiBTY2hlbWEtcXVhbGlm eSB0aGUgZXF1YWxpdHkKIG9wZXJhdG9yIHdoZW4gZGVwYXJzaW5nIE5VTExJRi9JUyBESVNUSU5D VCBGUk9NKQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJz ZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKU2V2ZXJhbCBTUUwgY29u c3RydWN0cyByZXNvbHZlIGFuIG9wZXJhdG9yIGJ5IHVucXVhbGlmaWVkIG5hbWUgYXQgcGFyc2UK dGltZSBhbmQgcHJvdmlkZSBubyBwbGFjZSBpbiB0aGVpciBzeW50YXggdG8gd3JpdGUgYSBzY2hl bWEtcXVhbGlmaWVkCm9wZXJhdG9yIG5hbWU6IElTIFtOT1RdIERJU1RJTkNUIEZST00sIE5VTExJ Riwgc2ltcGxlIENBU0UsIHJvdwpjb21wYXJpc29ucywgYW5kIEFOWS9BTEwgc3VicXVlcnkgY29t cGFyaXNvbnMgLS0gdGhlIGNsYXNzZXMgVG9tCmNhdGFsb2dlZCBpbiAxMDQ5Mi4xNTMxNTE1MjU1 QHNzcy5wZ2gucGEudXMgLS0gcGx1cyBKT0lOIFVTSU5HIC8KTkFUVVJBTCBKT0lOLiAgV2hlbiBz dWNoIGEgY29uc3RydWN0IGVuZHMgdXAgYm91bmQgdG8gYW4gb3BlcmF0b3IgdGhhdAppcyBub3Qg cmVhY2hhYmxlIHRocm91Z2ggdGhlIHNlYXJjaF9wYXRoIGluIGVmZmVjdCBhdCByZWxvYWQgdGlt ZQoodHlwaWNhbGx5IHBnX2R1bXAncyByZXN0cmljdGVkIHNlYXJjaF9wYXRoKSwgdGhlIGR1bXBl ZCBkZWZpbml0aW9uCmVpdGhlciBmYWlscyB0byByZXN0b3JlIG9yLCB3b3JzZSwgc2lsZW50bHkg cmVwYXJzZXMgd2l0aCBhIGRpZmZlcmVudApvcGVyYXRvci4KClRoaXMgc2VyaWVzIGdpdmVzIGVh Y2ggY29uc3RydWN0IGFuIG9wdGlvbmFsIE9QRVJBVE9SKCkgZGVjb3JhdGlvbiwKb25lIGNvbnN0 cnVjdCBwZXIgcGF0Y2guICBUaGUgcGFyc2VyIGFsd2F5cyBhY2NlcHRzIHRoZSBkZWNvcmF0aW9u OwpydWxldXRpbHMuYyBlbWl0cyBpdCBvbmx5IHdoZW4gcmVwYXJzaW5nIHRoZSB1bmRlY29yYXRl ZCBmb3JtIHdvdWxkCm5vdCByZXNvbHZlIHRoZSB2ZXJ5IHNhbWUgb3BlcmF0b3IgT0lEKHMpLiAg UG9zdC1hbmFseXNpcyBleHByZXNzaW9uCnRyZWVzIGFuZCBleGVjdXRvciBub2RlcyBhcmUgdW50 b3VjaGVkLgoKICAwMDAxOiBhIElTIFtOT1RdIERJU1RJTkNUIE9QRVJBVE9SKHMuPSkgRlJPTSBi IGFuZAogICAgICAgIE5VTExJRihhLCBiIFVTSU5HIE9QRVJBVE9SKHMuPSkpCiAgMDAwMjogSk9J TiAuLi4gVVNJTkcgKGEsIGIpIE9QRVJBVE9SIChzLj0sIHMuPSksIG9uZSBvcGVyYXRvciBwZXIK ICAgICAgICBVU0lORyBjb2x1bW47IE5BVFVSQUwgSk9JTiBkZXBhcnNlcyB2aWEgdGhlIHNhbWUg cGF0aAogIDAwMDM6IFJPVyhhLCBiKSBPUEVSQVRPUihzLjwsIHMuPCkgUk9XKGMsIGQpLCBnZW5l cmFsaXppbmcgdGhlCiAgICAgICAgZXhpc3Rpbmcgc2luZ2xlLW5hbWUgZGVjb3JhdGlvbiB0byBh IHBlci1jb2x1bW4gbGlzdAogIDAwMDQ6IChhLCBiKSBPUEVSQVRPUihvcDEsIG9wMikgQU5ZIChT RUxFQ1QgLi4uKSwgbGlrZXdpc2UgZm9yCiAgICAgICAgQU5ZL0FMTCBhbmQgcm93LW9wLXN1YnF1 ZXJ5IHN1YmxpbmtzOyBmaXhlcyB0b2RheSdzIHNpbGVudAogICAgICAgIG9wZXJhdG9yIHN3YXAg d2hlbiBhIG11bHRpLWNvbHVtbiBJTiBpcyBkdW1wZWQgYW5kIHJlbG9hZGVkCiAgMDAwNTogQ0FT RSB4IFdIRU4geSBVU0lORyBPUEVSQVRPUihzLj0pIFRIRU4gLi4uLCBwZXIgV0hFTiBhcm0KClRo ZSB3aG9sZSBzZXJpZXMgd2VpZ2hzIGluIGF0IDIyIGZpbGVzIGNoYW5nZWQsIDIzNjYgaW5zZXJ0 aW9ucygrKSwKOTAgZGVsZXRpb25zKC0pLCBvZiB3aGljaCBhYm91dCAxNTMwIGxpbmVzIGFyZSBy ZWdyZXNzaW9uIHRlc3RzIGFuZApleHBlY3RlZCBvdXRwdXQgYW5kIGFib3V0IDE2NSBsaW5lcyBh cmUgZG9jdW1lbnRhdGlvbi4KCk1pY2hhxYIgUGFzdGVybmFrICg1KToKICBBbGxvdyBzY2hlbWEt cXVhbGlmeWluZyB0aGUgb3BlcmF0b3IgaW4gSVMgRElTVElOQ1QgRlJPTS9OVUxMSUYKICBBbGxv dyBzY2hlbWEtcXVhbGlmeWluZyB0aGUgb3BlcmF0b3JzIG9mIEpPSU4gVVNJTkcKICBBbGxvdyBw ZXItY29sdW1uIG9wZXJhdG9yIGxpc3RzIGluIHJvdyBjb21wYXJpc29ucwogIEFsbG93IHBlci1j b2x1bW4gb3BlcmF0b3IgbGlzdHMgaW4gQU5ZL0FMTCBzdWJxdWVyeSBjb21wYXJpc29ucwogIEFs bG93IHNjaGVtYS1xdWFsaWZ5aW5nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIG9mIGEgc2ltcGxl IENBU0UKCiBjb250cmliL2hzdG9yZS9leHBlY3RlZC9oc3RvcmUub3V0ICAgICAgICAgICAgfCAg ODggKysKIGNvbnRyaWIvaHN0b3JlL3NxbC9oc3RvcmUuc3FsICAgICAgICAgICAgICAgICB8ICA0 MyArCiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWNvbXBhcmlzb24uc2dtbCAgICAgICAgfCAgMjMg Ky0KIGRvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtY29tcGFyaXNvbnMuc2dtbCAgICAgICB8ICAxOSAr CiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWNvbmRpdGlvbmFsLnNnbWwgICAgICAgfCAgMzkgKy0K IGRvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtc3VicXVlcnkuc2dtbCAgICAgICAgICB8ICA0MCArCiBk b2Mvc3JjL3NnbWwvcXVlcmllcy5zZ21sICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKwogZG9j L3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbCAgICAgICAgICAgICAgICAgIHwgIDE4ICstCiBkb2Mv c3JjL3NnbWwvc3ludGF4LnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMjAgKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZGVmaW5lLmMgICAgICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8IDEwMyArLQogc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jICAgICAgICAgICAgIHwgIDU1ICstCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAgfCAxMzQgKystCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2Vfb3Blci5jICAgICAgICAgICAgICAgfCAgMjIgKwogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgMzgwICsrKysrKystCiBzcmMvaW5j bHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgOSArLQogc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICAgICAgICAgIHwgIDI1ICstCiBzcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2Vfb3Blci5oICAgICAgICAgICAgICAgfCAgMjAgKwogLi4uL3JlZ3Jlc3Mv ZXhwZWN0ZWQvb3BlcmF0b3JfcXVhbGlmeS5vdXQgICAgIHwgODkzICsrKysrKysrKysrKysrKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICA1ICst CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9vcGVyYXRvcl9xdWFsaWZ5LnNxbCAgICAgfCA1MDEgKysr KysrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgMjM2NiBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wZXJh dG9yX3F1YWxpZnkub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwv b3BlcmF0b3JfcXVhbGlmeS5zcWwKCi0tIAoyLjU0LjAKCg== --6a4d06a8_62bbd95a_14ffe--