Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v1DxQ-005wAS-Mm for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Sep 2025 01:06:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v1DxP-009KZq-DE for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Sep 2025 01:06:07 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v1DxO-009KZi-Ig for pgsql-hackers@lists.postgresql.org; Wed, 24 Sep 2025 01:06:07 +0000 Received: from mail-pj1-x1043.google.com ([2607:f8b0:4864:20::1043]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v1DxL-0025jM-2r for pgsql-hackers@postgresql.org; Wed, 24 Sep 2025 01:06:05 +0000 Received: by mail-pj1-x1043.google.com with SMTP id 98e67ed59e1d1-33255011eafso2760537a91.1 for ; Tue, 23 Sep 2025 18:06:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758675963; x=1759280763; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=9eRSN+qu9rg3mAI/2KbFx8CIyz/IT2TnVm/Mv2R8iaY=; b=iY8ewNR6uoH0vm5v2FdctWgksYvjpXxNlhuDF416NMO93hYHH+6YOBtx/KZNZ5WZkt pEHF+btJQgL4+121pk5RYSCJMs9IQrJp8t4LwepD/nU1u7ZdbrCiKUe3jyvrUuVG+CG9 d+VETVMWJkTO5fDG5Sodhp0vcj2YDIdpoOalU8QF0mBZ5k5vtAw0MVaub2Qk9L7UpsRu tJqELSGw3N07XulJ5bX04LPvKfrNq+v0C10MXDoUHaNFcI69bBJ44iMW+RVrpBOLsJJZ Z2qhHI5aiB9oXWDYwOOfy86kem/NrzwI81NlsmxR6LW2sxAyX+SK5XuXgHUzvZNihFiV JreQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758675963; x=1759280763; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=9eRSN+qu9rg3mAI/2KbFx8CIyz/IT2TnVm/Mv2R8iaY=; b=hPo1mjHy7f9c/8SMGOvHw4E1H1a3kcXnzFRdOsIykfw+ecqh+pZUnmxLhk6Vmfed4Y iTUgvTTmN4kkT8cXPAOKwjKGqIGO6fJLdqqg3xUbfBMQqlnuvjjbNmmna+nHENsWVeTn f0FoJd6sPBOoFstHr122YBfjEOR7I3ARvgvsOnG9ctU9TBEQpLkYZ/JO++1WFXE3lnyG OV/oJSrInRgisPc17E1NUm/zCZ3aThw0J5UP+ok6NYveWi3vq2fyDMc/2Bgxr5FDZXyM cmBR6bf5hBRnlw7ocSYSo+Zm1ZMW92ISRyui1Bs3V88n4wuJPXTwiLo9a546+8pvMr3W F1Og== X-Gm-Message-State: AOJu0Yycb8lSYDE6bGh436lM3kZrZC9r3D7+dXvSHP2XFB1YUEXByJAj uX6SkbjIv/kEwdeOq69qOlMQ2acFnkJ9SCFIuxayRiXTyjgPKjHKpfJ4SfdoFwybVP9wMpsfd5/ KNZfLeKYqMDSiaA/VbB1AnPA6tX+34J0= X-Gm-Gg: ASbGncub8bl6ZIMyp9GFRu3dh0zcG00s/AlvrFoglIB7RsV6KvCfgGIR0vVkGRh0n8E Md1/tnOZOXzH5kOEsTwcWyJK9/8tKPDeFD1VWkvLERmuUX7eY5cwZiojop3VrexshC6NZUS9MkO zP0f9QSwkFbI8YzxyKgCbEyBaE0kl5BjyUYqiQS+mWN74NcFqn3aNXngvLs1XWC0DBtfN264Ram CWgwGbvlQ== X-Google-Smtp-Source: AGHT+IGOU+ggrARvIZjZ0++VipEPYGC5p+DUMfI2VRYv0lLGVnOXRz4kE6/1yoj95l6OD6S+Nl/1tyDbSaRFFE7CdWU= X-Received: by 2002:a17:90b:3fcc:b0:32e:96b1:fb6e with SMTP id 98e67ed59e1d1-332a95be2fdmr4730923a91.18.1758675962851; Tue, 23 Sep 2025 18:06:02 -0700 (PDT) MIME-Version: 1.0 References: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> <290418A2-3A9B-4304-AAAD-4A40CFF1CB93@gmail.com> <98C6F445-773B-4C82-8198-7F5CD56D5252@gmail.com> <052E941B-C905-448F-AE3A-753C12AAC938@gmail.com> <8CB9A1EC-2D14-44FF-A600-6669353A14C2@gmail.com> <826F61C4-AE01-4070-8F78-CEE8781EACEB@gmail.com> In-Reply-To: From: Alexandra Wang Date: Tue, 23 Sep 2025 18:05:26 -0700 X-Gm-Features: AS18NWDpSmFeDCQ19EmjlyAqAHA77MOuoDdGc9GWN0oTzjxBNzZcFtCZ1t84Ul4 Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: Chao Li Cc: PostgreSQL Hackers , Nikita Glukhov , jian he , Nikita Malakhov , Vik Fearing , Mark Dilger , Matheus Alcantara , Peter Eisentraut , Andrew Dunstan , "David E. Wheeler" Content-Type: multipart/mixed; boundary="0000000000000af497063f81a8e7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000af497063f81a8e7 Content-Type: multipart/alternative; boundary="0000000000000af495063f81a8e5" --0000000000000af495063f81a8e5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Chao, Thanks for reviewing. I'm glad you like the new approach of introducing "transform_partial". I've attached v22, which addresses some of your feedback, and I ran pgindent again. See detailed replies below. On Mon, Sep 22, 2025 at 10:48=E2=80=AFPM Chao Li w= rote: > The new approach of introducing =E2=80=9Ctransform_partial=E2=80=9D looks= like a better > solution, which leads to less code change to hstore_subs and arraysubs. > However, when I tested the v21, I encountered errors when combine composi= te > type, array and jsonb together. > > Prepare test data: > ``` > drop table if exists people; > drop type if exists person; > CREATE TYPE person AS ( > name text, > size int[], > meta jsonb[] > ); > > CREATE TABLE people ( > p person > ); > > INSERT INTO people VALUES (ROW('Alice', array[10, 20], array['{"a": > 30}'::jsonb, '{"a": 40}'::jsonb])); > ``` > > Then run the test: > ``` > # old jsonb accessor works to extract a jsonb field from an array item of > a composite field > evantest=3D# select (p).meta[1]->'a' from people; > ?column? > ---------- > 30 > (1 row) > > # dot notation also works > evantest=3D# select (p).meta[1].a from people; > a > ---- > 30 > (1 row) > > # but index accessor doesn=E2=80=99t work > evantest=3D# select (p).meta[1]['a'] from people; > ERROR: invalid input syntax for type integer: "a" > LINE 1: select (p).meta[1]['a'] from people; > ^ > This is the expected behavior for array subscripting, and my patch doesn't change that. I don't think this is a problem. With or without my patch, you can avoid the ERROR by adding parentheses: test=3D# select ((p).meta[1])['a'] from people; meta ------ 30 (1 row) On Mon, Sep 22, 2025 at 10:48=E2=80=AFPM Chao Li w= rote: > 2 - 0002 > ``` > + /* Collect leading A_Indices subscripts */ > + foreach(lc, indirection) > + { > + Node *n =3D lfirst(lc); > + > + if (IsA(n, A_Indices)) > + { > + A_Indices *ai =3D (A_Indices *) n; > + > + subscriptlist =3D lappend(subscriptlist, n); > + if (ai->is_slice) > + isSlice =3D true; > + } > + else > + break; > ``` > > We can break after =E2=80=9CisSlice=3Dtrue=E2=80=9D. > Why? We still want to get the whole prefix list of A_Indices. On Mon, Sep 22, 2025 at 10:48=E2=80=AFPM Chao Li w= rote: > 6 - 0002 > ``` > + /* This should not happen with well-behaved transform functions */ > + elog(ERROR, "subscripting transform function failed to consume any > indirection elements=E2=80=9D); > ``` > > I don=E2=80=99t see an existing error message uses =E2=80=9Cindirection= =E2=80=9D and =E2=80=9Ctransform=E2=80=9D. > This error message looks more like a log message rather than a message to > show to end users. > This is a defensive elog message that should not happen. So it is a log message for developers. That said, I'm open to suggestions for better wording. The rest of your feedback I've made changes accordingly as you suggested. Best, Alex --0000000000000af495063f81a8e5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Chao,

Thanks for reviewin= g. I'm glad you like the new approach of
introducing "transform= _partial". I've attached v22, which addresses
some of your feed= back, and I ran pgindent again.

See detailed r= eplies below.=C2=A0

On Mon, Sep 22, 2025 at 10:48=E2= =80=AFPM Chao Li <li.evan.chao= @gmail.com> wrote:
The new approach of introducing =E2=80=9Ctransform_partial=E2=80= =9D looks like a better solution, which leads to less code change to hstore= _subs and arraysubs. However, when I tested the v21, I encountered errors w= hen combine composite type, array and jsonb together.

Pr= epare test data:
```
drop table if exists people;<= /div>
drop type if exists person;
CREATE TYPE person AS (
=C2=A0 =C2=A0 name text,
=C2=A0 =C2=A0 size int[],
=C2=A0 =C2=A0 meta jsonb[]
);

CREATE = TABLE people (
=C2=A0 =C2=A0 p person
);

=
INSERT INTO people VALUES (ROW('Alice', array[10, 20], a= rray['{"a": 30}'::jsonb, '{"a": 40}'::j= sonb]));
```

Then run the test:
```
# old jsonb accessor works to extract a jsonb field fro= m an array item of a composite field
evantest=3D# select (p)= .meta[1]->'a' from people;
=C2=A0?column?
--= --------
=C2=A030
(1 row)

# dot notation also works
evantest=3D# select (p).meta[1].= a from people;
=C2=A0a
----
=C2=A030
(1 row)

# but index accessor doesn=E2=80= =99t work
evantest=3D# select (p).meta[1]['a'] from = people;
ERROR: =C2=A0invalid input syntax for type integer: "= ;a"
LINE 1: select (p).meta[1]['a'] from people;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^

This is the expected behavior for array subscripting, and my patch<= br>doesn't change that. I don't think this is a problem. With or wi= thout
my patch, you can avoid the ERROR by adding parentheses:
=

test=3D# select ((p).meta[1])['a'] from people;= meta ------ 30 (1 row)

On Mon, Sep 22, 2025 at 10:48=E2=80=AFPM Chao Li <li.evan.chao@gmail.com> wrote:
2 - 0002
```
+ /= * Collect leading A_Indices subscripts */
+ foreach(lc, indirection)
+ {
+ Node =C2=A0 *n= =3D lfirst(lc);
+
+ if (IsA(n, A_Indices))
+ {
+ A_Indices =C2=A0*ai =3D (A_Indices *) n;
+
+ subscriptlist =3D lappend(subscrip= tlist, n);
+ if (a= i->is_slice)
+ isSlice =3D true;
+ }
+ else
+ break;
`= ``

We can break after =E2=80=9CisSlice=3Dtrue=E2= =80=9D.

Why? We sti= ll want to get the whole prefix list of A_Indices.=C2=A0
=C2=A0
On Mon, Sep 22, 2025 at 10:48=E2=80=AFPM Chao Li <li.evan.chao@gmail.com> wrote:
6 - 0002
```
+ /* This = should not happen with well-behaved transform functions */
+ elog(ERROR, "subscripting tra= nsform function failed to consume any indirection elements=E2=80=9D);
=
```

I don=E2=80=99t see an existing err= or message uses =E2=80=9Cindirection=E2=80=9D and =E2=80=9Ctransform=E2=80= =9D. This error message looks more like a log message rather than a message= to show to end users.

This is = a defensive elog message that should not happen. So it is a
log message = for developers. That said, I'm open to suggestions for
better wordin= g.

The rest of your feedback I've made cha= nges accordingly=C2=A0as you suggested.

Best,
Alex

--0000000000000af495063f81a8e5-- --0000000000000af497063f81a8e7 Content-Type: application/octet-stream; name="v22-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Disposition: attachment; filename="v22-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfxa830m1 RnJvbSBiZTk2ODNmODlmOGZiNDg0MTEyZjczOGI3N2ZiZTcyYmZlNjI1YTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgNS81XSBJbXBsZW1lbnQgcmVhZC1vbmx5IGRvdCBub3RhdGlvbiBmb3IganNvbmIK ClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBKU09OQiBtZW1iZXIgYWNjZXNzIHVzaW5nIGRvdCBub3Rh dGlvbiB0aGF0CmFsaWducyB3aXRoIHRoZSBKU09OIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3BlY2lm aWVkIGluIFNRTDoyMDIzLgoKRXhhbXBsZXM6CgotLSBTZXR1cApjcmVhdGUgdGFibGUgdCh4IGlu dCwgeSBqc29uYik7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAxLCAiYiI6IDQyfSc6 Ompzb25iOwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJhIjogMiwgImIiOiB7ImMiOiA0Mn19 Jzo6anNvbmI7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAzLCAiYiI6IHsiYyI6ICI0 MiJ9LCAiZCI6WzExLCAxMl19Jzo6anNvbmI7CgotLSBFeGlzdGluZyBzeW50YXggaW4gUG9zdGdy ZVNRTCB0aGF0IHByZWRhdGVzIHRoZSBTUUwgc3RhbmRhcmQ6CnNlbGVjdCAodC55KS0+J2InIGZy b20gdDsKc2VsZWN0ICh0LnkpLT4nYictPidjJyBmcm9tIHQ7CnNlbGVjdCAodC55KS0+J2QnLT4w IGZyb20gdDsKCi0tIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzcGVjaWZpZWQgYnkgdGhlIFNR TCBzdGFuZGFyZDoKc2VsZWN0ICh0LnkpLmIgZnJvbSB0OwpzZWxlY3QgKHQueSkuYi5jIGZyb20g dDsKc2VsZWN0ICh0LnkpLmRbMF0gZnJvbSB0OwoKVGhlIFNRTCBzdGFuZGFyZCBzdGF0ZXMgdGhh dCBzaW1wbGlmaWVkIGFjY2VzcyBpcyBlcXVpdmFsZW50IHRvOgpKU09OX1FVRVJZIChWRVAsICds YXggJC5KQycgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVM TCBPTiBFUlJPUikKCndoZXJlOgogIFZFUCA9IDx2YWx1ZSBleHByZXNzaW9uIHByaW1hcnk+CiAg SkMgPSA8SlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIG9wIGNoYWluPgoKRm9yIGV4YW1wbGUsIHRo ZSBKU09OX1FVRVJZIGVxdWl2YWxlbnRzIG9mIHRoZSBhYm92ZSBxdWVyaWVzIGFyZToKCnNlbGVj dCBqc29uX3F1ZXJ5KHksICdsYXggJC5iJyBXSVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIg TlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBmcm9tIHQ7CnNlbGVjdCBqc29uX3F1ZXJ5KHks ICdsYXggJC5iLmMnIFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZ IE5VTEwgT04gRVJST1IpIGZyb20gdDsKc2VsZWN0IGpzb25fcXVlcnkoeSwgJ2xheCAkLmRbMF0n IFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJS T1IpIGZyb20gdDsKCkltcGxlbWVudGF0aW9uIGRldGFpbHM6CgpUaGlzIHBhdGNoIGV4dGVuZHMg dGhlIGV4aXN0aW5nIGNvbnRhaW5lciBzdWJzY3JpcHRpbmcgaW50ZXJmYWNlIHRvCnN1cHBvcnQg Y29udGFpbmVyLXNwZWNpZmljIGluZm9ybWF0aW9uLCBuYW1lbHkgYSBKU09OUGF0aCBleHByZXNz aW9uCmZvciBqc29uYi4KCkR1cmluZyBxdWVyeSB0cmFuc2Zvcm1hdGlvbiwgaWYgZG90LW5vdGF0 aW9uIGlzIHByZXNlbnQsIGEgSlNPTlBhdGgKZXhwcmVzc2lvbiBpcyBjb25zdHJ1Y3RlZCB0byBy ZXByZXNlbnQgdGhlIGFjY2VzcyBjaGFpbi4KClRoZW4gZHVyaW5nIGV4ZWN1dGlvbiwgaWYgYSBK U09OUGF0aCBleHByZXNzaW9uIGlzIHByZXNlbnQgaW4KSnNvbmJTdWJXb3Jrc3BhY2UsIGV4ZWN1 dGVzIGl0IHZpYSBKc29uUGF0aFF1ZXJ5KCkuCgpOb3RlIHRoYXQgd2UgY2Fubm90IHNpbXBseSBy ZXdyaXRlIHRoZSBhY2Nlc3NvcnMgaW50byBKU09OX1FVRVJZKCkKZHVyaW5nIHRyYW5zZm9ybWF0 aW9uLCBiZWNhdXNlIHRoZSBvcmlnaW5hbCBxdWVyeSBzdHJ1Y3R1cmUgbXVzdCBiZQpwcmVzZXJ2 ZWQgZm9yIEVYUExBSU4gYW5kIENSRUFURSBWSUVXLgoKQ28tYXV0aG9yZWQtYnk6IE5pa2l0YSBH bHVraG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbGV4YW5kcmEg V2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBE dW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRh cmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hcmsgRGlsZ2VyIDxt YXJrLmRpbGdlckBlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdlZC1ieTogSmlhbiBIZSA8amlhbi51 bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogVmlrIEZlYXJpbmcgPHZpa0Bwb3N0 Z3Jlc2ZyaWVuZHMub3JnPgpSZXZpZXdlZC1ieTogTmlraXRhIE1hbGFraG92IDxodWt1dG9jQGdt YWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVyIEVpc2VudHJhdXQgPHBldGVyQGVpc2VudHJhdXQu b3JnPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KVGVzdGVk LWJ5OiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5sPgotLS0KIGRvYy9zcmMv c2dtbC9qc29uLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICB8IDMwMSArKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAgICAgICAgICB8ICAgNCArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgICAgIHwgIDgxICsrLS0K IHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAxNCArCiBz cmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMgICAgICAgICAgICAgfCAzMDIgKysrKysr KysrKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAg NDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICA1 NCArKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYyAgICAgICAgICB8IDEx MiArKysrLQogLi4uL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRlcnIgICAgIHwg MTAwICsrKysKIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rkb3V0ICAgICB8 ICAgNyArCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjICAgICAgfCAg MzMgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0ICAgICAgICAgICB8IDQ1 MCArKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCAgICAg ICAgICAgICAgICB8IDExNSArKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgIHwgICAxICsKIDE0IGZpbGVzIGNoYW5nZWQsIDE1MzUgaW5zZXJ0aW9ucygr KSwgODIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2pzb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9qc29uLnNnbWwKaW5kZXggMjA2ZWFkYjhmN2IuLjQ0MDU1NzBkNjZlIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvanNvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9qc29u LnNnbWwKQEAgLTcxMiw2ICs3MTIsMzA3IEBAIFVQREFURSB0YWJsZV9uYW1lIFNFVCBqc29uYl9m aWVsZFsxXVsnYSddID0gJzEnOwogICA8L3BhcmE+CiAgPC9zZWN0Mj4KIAorIDxzZWN0MiBpZD0i anNvbmItc2ltcGxpZmllZC1hY2Nlc3NvciI+CisgIDx0aXRsZT5KU09OIFNpbXBsaWZpZWQgQWNj ZXNzb3I8L3RpdGxlPgorICA8cGFyYT4KKyAgIFBvc3RncmVTUUwgaW1wbGVtZW50cyB0aGUgSlNP TiBzaW1wbGlmaWVkIGFjY2Vzc29yIGFzIHNwZWNpZmllZCBpbiBTUUw6MjAyMy4KKyAgIFRoZSBT UUwgc3RhbmRhcmQgZGVmaW5lcyB0aGUgc2ltcGxpZmllZCBhY2Nlc3NvciBhcyBhIGNoYWluIG9m IG9wZXJhdGlvbnMKKyAgIHRoYXQgY2FuIGluY2x1ZGUgSlNPTiBtZW1iZXIgYWNjZXNzb3JzIChk b3Qgbm90YXRpb24gZm9yIG9iamVjdCBmaWVsZHMpCisgICBhbmQgSlNPTiBhcnJheSBhY2Nlc3Nv cnMgKGludGVnZXIgc3Vic2NyaXB0cyBmb3IgYXJyYXkgZWxlbWVudHMpLgorICAgVGhpcyBwcm92 aWRlcyBhIHN0YW5kYXJkaXplZCB3YXkgdG8gYWNjZXNzIEpTT04gZGF0YSB0aGF0IGNvbXBsZW1l bnRzCisgICBQb3N0Z3JlU1FMJ3MgcHJlLXN0YW5kYXJkIHN1YnNjcmlwdGluZyBhbmQgb3BlcmF0 b3ItYmFzZWQgYWNjZXNzIG1ldGhvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSBT UUw6MjAyMyBzaW1wbGlmaWVkIGFjY2Vzc29yIHN5bnRheCBpbmNsdWRlczoKKyAgIDxpdGVtaXpl ZGxpc3Q+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIDxlbXBoYXNpcz5KU09O IG1lbWJlciBhY2Nlc3Nvcjo8L2VtcGhhc2lzPiA8bGl0ZXJhbD5qc29uYl9jb2x1bW4uZmllbGRf bmFtZTwvbGl0ZXJhbD4KKyAgICAgIGZvciBhY2Nlc3Npbmcgb2JqZWN0IGZpZWxkcworICAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAg ICAgPGVtcGhhc2lzPkpTT04gYXJyYXkgYWNjZXNzb3I6PC9lbXBoYXNpcz4gPGxpdGVyYWw+anNv bmJfY29sdW1uW2luZGV4XTwvbGl0ZXJhbD4KKyAgICAgIGZvciBhY2Nlc3NpbmcgYXJyYXkgZWxl bWVudHMgYnkgaW50ZWdlciBpbmRleAorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvaXRlbWl6ZWRsaXN0PgorICAgVGhlc2UgY2FuIGJlIGNoYWluZWQgdG9nZXRoZXI6IDxsaXRl cmFsPmpzb25iX2NvbHVtbi5maWVsZF9uYW1lWzBdLm5lc3RlZF9maWVsZDwvbGl0ZXJhbD4uCisg ICBXaGVuIGRvdCBub3RhdGlvbiBpcyBwcmVzZW50IGluIHRoZSBhY2Nlc3NvciBjaGFpbiwgdGhl IGVudGlyZSBjaGFpbiBmb2xsb3dzCisgICBTUUw6MjAyMyBzZW1hbnRpY3Mgd2l0aCBsYXggbW9k ZSBiZWhhdmlvciBhbmQgY29uZGl0aW9uYWwgYXJyYXkgd3JhcHBlci4KKyAgPC9wYXJhPgorCisg IDxwYXJhPgorICAgVGhlIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBpcyBzZW1hbnRpY2FsbHkg ZXF1aXZhbGVudCB0byB1c2luZworICAgPGZ1bmN0aW9uPkpTT05fUVVFUlk8L2Z1bmN0aW9uPiB3 aXRoIHRoZSA8bGl0ZXJhbD5sYXg8L2xpdGVyYWw+IG1vZGUgYW5kCisgICA8bGl0ZXJhbD5XSVRI IENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SPC9s aXRlcmFsPgorICAgb3B0aW9ucy4gRm9yIGV4YW1wbGUsIDxsaXRlcmFsPmpzb25fY29sLmZpZWxk PC9saXRlcmFsPiBpcyBlcXVpdmFsZW50IHRvCisgICA8bGl0ZXJhbD5KU09OX1FVRVJZKGpzb25f Y29sLCAnbGF4ICQuZmllbGQnIFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9O IEVNUFRZIE5VTEwgT04gRVJST1IpPC9saXRlcmFsPi4KKyAgIFRoZSBjb25kaXRpb25hbCBhcnJh eSB3cmFwcGVyIHdyYXBzIG11bHRpcGxlIHJlc3VsdHMgaW4gYW4gYXJyYXkKKyAgIGJ1dCBsZWF2 ZXMgYSBzaW5nbGUgcmVzdWx0IGFzLWlzIHdpdGhvdXQgd3JhcHBpbmcuCisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIEV4YW1wbGVzIG9mIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXg6 CisKKzxwcm9ncmFtbGlzdGluZz4KKworLS0gQmFzaWMgZmllbGQgYWNjZXNzCitTRUxFQ1QgKCd7 ImNvbG9yIjogInJlZCIsICJyZ2IiOiBbMjU1LCAwLCAwXX0nOjpqc29uYikuY29sb3I7CisKKy0t IE5lc3RlZCBmaWVsZCBhY2Nlc3MKK1NFTEVDVCAoJ3sidXNlciI6IHsicHJvZmlsZSI6IHsic2V0 dGluZ3MiOiB7InRoZW1lIjogImRhcmsifX19fSc6Ompzb25iKS51c2VyLnByb2ZpbGUuc2V0dGlu Z3MudGhlbWU7CisKKy0tIEpTT04gbWVtYmVyIGFjY2Vzc29yIGZvbGxvd2VkIGJ5IEpTT04gYXJy YXkgYWNjZXNzb3IgKGJvdGggcGFydCBvZiBzaW1wbGlmaWVkIGFjY2Vzc29yKQorU0VMRUNUICgn eyJyZXBlcnRvaXJlIjogW3sidGl0bGUiOiAiU3dhbiBMYWtlIn0sIHsidGl0bGUiOiAiVGhlIE51 dGNyYWNrZXIifV19Jzo6anNvbmIpLnJlcGVydG9pcmVbMV0udGl0bGU7CisKKy0tIEluIFdIRVJF IGNsYXVzZXMKK1NFTEVDVCAqIEZST00gdXNlcnMgV0hFUkUgcHJvZmlsZS5wcmVmZXJlbmNlcy50 aGVtZSA9ICciZGFyayInOworCistLSBDb21wYXJpc29uIHdpdGggb3RoZXIgYWNjZXNzIG1ldGhv ZHMgKE5PVCBlcXVpdmFsZW50IC0gZGlmZmVyZW50IHNlbWFudGljcyk6CitTRUxFQ1QganNvbl9j b2xbJ2FkZHJlc3MnXVsnY2l0eSddOyAgICAgICAgICAgLS0gU3Vic2NyaXB0aW5nCitTRUxFQ1Qg anNvbl9jb2wtPidhZGRyZXNzJy0+J2NpdHknOyAgICAgICAgICAgLS0gT3BlcmF0b3IKK1NFTEVD VCBqc29uX2NvbC5hZGRyZXNzLmNpdHk7ICAgICAgICAgICAgICAgICAtLSBTaW1wbGlmaWVkIGFj Y2Vzc29yIChkaWZmZXJlbnQgYmVoYXZpb3IpCis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+ CisKKyAgPHNlY3QzIGlkPSJqc29uYi1hY2Nlc3MtbWV0aG9kLWNvbXBhcmlzb24iPgorICAgPHRp dGxlPkNvbXBhcmlzb24gb2YgSlNPTiBBY2Nlc3MgTWV0aG9kczwvdGl0bGU+CisgICA8cGFyYT4K KyAgICBQb3N0Z3JlU1FMIHByb3ZpZGVzIHRocmVlIGRpZmZlcmVudCBhcHByb2FjaGVzIGZvciBh Y2Nlc3NpbmcgSlNPTiBkYXRhLCBlYWNoIHdpdGgKKyAgICBkaXN0aW5jdCBzZW1hbnRpY3MgYW5k IGJlaGF2aW9yczoKKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgPGVtcGhhc2lzPlNRTDoy MDIzIEpTT04gU2ltcGxpZmllZCBBY2Nlc3Nvcjo8L2VtcGhhc2lzPgorICAgIDxpdGVtaXplZGxp c3Q+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFN5bnRheDogPGxpdGVy YWw+anNvbl9jb2wuZmllbGRfbmFtZTwvbGl0ZXJhbD4gKG1lbWJlciBhY2Nlc3NvcikgYW5kCisg ICAgICAgPGxpdGVyYWw+anNvbl9jb2xbaW5kZXhdPC9saXRlcmFsPiAoYXJyYXkgYWNjZXNzb3Ig d2hlbiB1c2VkIHdpdGggZG90IG5vdGF0aW9uKQorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3Rp dGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBTdGFuZGFyZCBTUUw6 MjAyMyBiZWhhdmlvciB3aXRoIDxsaXRlcmFsPmxheDwvbGl0ZXJhbD4gbW9kZSBzZW1hbnRpY3MK KyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAg PHBhcmE+CisgICAgICAgQXV0b21hdGljIGFycmF5IHdyYXBwaW5nL3Vud3JhcHBpbmcgYXMgc3Bl Y2lmaWVkIGluIHRoZSBTUUwgc3RhbmRhcmQKKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRl bT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgV2hlbiBhY2Nlc3Npbmcg YSBmaWVsZCBmcm9tIGFuIGFycmF5LCBvcGVyYXRlcyBvbiBlYWNoIGFycmF5IGVsZW1lbnQgYW5k IHdyYXBzIHJlc3VsdHMgaW4gYW4gYXJyYXk7CisgICAgICAgd2hlbiBhY2Nlc3NpbmcgYW4gYXJy YXkgaW5kZXggZnJvbSBhIG5vbi1hcnJheSwgd3JhcHMgdGhlIHZhbHVlIGFzIGFuIGFycmF5IGZp cnN0CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFRyaWdnZXJlZCB3aGVuIGRvdCBub3RhdGlvbiBpcyBwcmVzZW50 IGFueXdoZXJlIGluIHRoZSBhY2Nlc3NvciBjaGFpbgorICAgICAgPC9wYXJhPgorICAgICA8L2xp c3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBSZWFkLW9ubHkg YWNjZXNzCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxp c3Q+CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5QcmUtc3RhbmRhcmQg SlNPTkIgU3Vic2NyaXB0aW5nOjwvZW1waGFzaXM+CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAg PGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgU3ludGF4OiA8bGl0ZXJhbD5qc29uX2Nv bFsnZmllbGRfbmFtZSddPC9saXRlcmFsPiAodGV4dC1iYXNlZCkgYW5kCisgICAgICAgPGxpdGVy YWw+anNvbl9jb2xbaW5kZXhdPC9saXRlcmFsPiAoaW50ZWdlci1iYXNlZCB3aGVuIG5vIGRvdCBu b3RhdGlvbiBwcmVzZW50KQorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8 bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBQb3N0Z3JlU1FMJ3Mgb3JpZ2luYWwgSlNP TkIgc3Vic2NyaXB0aW5nIGJlaGF2aW9yIChhdmFpbGFibGUgc2luY2UgdmVyc2lvbiAxNCkKKyAg ICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBh cmE+CisgICAgICAgRGlyZWN0IG9iamVjdCBmaWVsZCBhbmQgYXJyYXkgZWxlbWVudCBhY2Nlc3Mg d2l0aG91dCBhcnJheSB3cmFwcGluZy91bndyYXBwaW5nCisgICAgICA8L3BhcmE+CisgICAgIDwv bGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFN1cHBvcnRz IGJvdGggcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucworICAgICAgPC9wYXJhPgorICAgICA8L2xp c3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAg ICA8ZW1waGFzaXM+QXJyb3cgT3BlcmF0b3JzOjwvZW1waGFzaXM+CisgICAgPGl0ZW1pemVkbGlz dD4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgU3ludGF4OiA8bGl0ZXJh bD5qc29uX2NvbC0+J2ZpZWxkX25hbWUnPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+anNvbl9jb2wt Pj4nZmllbGRfbmFtZSc8L2xpdGVyYWw+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+ CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBvc3RncmVTUUwncyBKU09O IG9wZXJhdG9ycyB0aGF0IHdvcmsgd2l0aCBib3RoIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGFu ZCA8bGl0ZXJhbD5qc29uYjwvbGl0ZXJhbD4gdHlwZXMKKyAgICAgIDwvcGFyYT4KKyAgICAgPC9s aXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgRGlyZWN0IG9i amVjdCBmaWVsZCBhbmQgYXJyYXkgZWxlbWVudCBhY2Nlc3Mgd2l0aG91dCBhcnJheSB3cmFwcGlu Zy91bndyYXBwaW5nCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0 aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxsaXRlcmFsPi0+PC9saXRlcmFsPiByZXR1cm5z IGpzb25iLCA8bGl0ZXJhbD4tPj48L2xpdGVyYWw+IHJldHVybnMgdGV4dAorICAgICAgPC9wYXJh PgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAg ICBSZWFkLW9ubHkgYWNjZXNzCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAg PC9pdGVtaXplZGxpc3Q+CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5L ZXkgU2VtYW50aWMgRGlmZmVyZW5jZXM6PC9lbXBoYXNpcz4gVGhlIG1vc3QgaW1wb3J0YW50IGRp c3RpbmN0aW9ucyBhcmUKKyAgICBob3cgdGhlc2UgbWV0aG9kcyBoYW5kbGUgbWVtYmVyIGFjY2Vz cyBmcm9tIGFycmF5cyBhbmQgYXJyYXkgYWNjZXNzIGZyb20gbm9uLWFycmF5IHZhbHVlcy4KKyAg IDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgPGVtcGhhc2lzPk1lbWJlciBBY2Nlc3MgZnJvbSBB cnJheXM6PC9lbXBoYXNpcz4KKzxwcm9ncmFtbGlzdGluZz4KKy0tIFNldHVwIGRhdGEKK0lOU0VS VCBJTlRPIHRlc3RfdGFibGUgVkFMVUVTCisgICgneyJicmlnaHRuZXNzIjogODB9JyksICAgICAg ICAgICAgICAgICAgICAgIC0tIE9iamVjdCBjYXNlCisgICgnW3siYnJpZ2h0bmVzcyI6IDQ1fSwg eyJicmlnaHRuZXNzIjogOTB9XScpOyAtLSBBcnJheSBjYXNlCisKKy0tIERpZmZlcmVudCBiZWhh dmlvcnM6CitTRUxFQ1QgZGF0YS5icmlnaHRuZXNzIEZST00gdGVzdF90YWJsZTsgICAgICAgICAt LSBTaW1wbGlmaWVkIGFjY2Vzc29yCistLSBSZXN1bHRzOiA4MCwgWzQ1LCA5MF0gIChhcnJheSBl bGVtZW50cyB1bndyYXBwZWQsIHJlc3VsdHMgd3JhcHBlZCkKKworU0VMRUNUIGRhdGFbJ2JyaWdo dG5lc3MnXSBGUk9NIHRlc3RfdGFibGU7ICAgICAgLS0gUHJlLXN0YW5kYXJkIHN1YnNjcmlwdGlu ZworLS0gUmVzdWx0czogODAsIE5VTEwgICAgKG5vIGFycmF5IGhhbmRsaW5nKQorCitTRUxFQ1Qg ZGF0YS0+J2JyaWdodG5lc3MnIEZST00gdGVzdF90YWJsZTsgICAgICAtLSBBcnJvdyBvcGVyYXRv cgorLS0gUmVzdWx0czogODAsIE5VTEwgICAgKG5vIGFycmF5IGhhbmRsaW5nKQorPC9wcm9ncmFt bGlzdGluZz4KKworICAgIEluIHRoZSBhcnJheSBjYXNlLCB0aGUgc2ltcGxpZmllZCBhY2Nlc3Nv ciBhcHBsaWVzIHRoZSBmaWVsZCBhY2Nlc3MgdG8gZWFjaCBhcnJheSBlbGVtZW50CisgICAgKHVu d3JhcHBpbmcpIGFuZCBjb25kaXRpb25hbGx5IHdyYXBzIHRoZSByZXN1bHRzIGluIGFuIGFycmF5 LCB3aGlsZSBzdWJzY3JpcHRpbmcgYW5kIGFycm93IG9wZXJhdG9ycworICAgIGF0dGVtcHQgZGly ZWN0IGZpZWxkIGFjY2VzcyBvbiB0aGUgYXJyYXkgaXRzZWxmICh3aGljaCByZXR1cm5zIE5VTEwg c2luY2UKKyAgICBhcnJheXMgZG9uJ3QgaGF2ZSBuYW1lZCBmaWVsZHMpLgorICAgPC9wYXJhPgor CisgICA8cGFyYT4KKyAgICA8ZW1waGFzaXM+QXJyYXkgQWNjZXNzIGZyb20gT2JqZWN0cyAoTGF4 IE1vZGUgQmVoYXZpb3IpOjwvZW1waGFzaXM+Cis8cHJvZ3JhbWxpc3Rpbmc+CistLSBTZXR1cCBk YXRhCitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIFZBTFVFUyAoJ3sid2VhdGhlciI6ICJzdW5ueSIs ICJ0ZW1wZXJhdHVyZSI6ICI3MkYifScpOworCistLSBEaWZmZXJlbnQgYmVoYXZpb3JzIHdoZW4g YWNjZXNzaW5nIFswXSBvbiBhIG5vbi1hcnJheSB2YWx1ZToKK1NFTEVDVCBkYXRhWzBdIEZST00g dGVzdF90YWJsZTsgICAgICAgICAgICAgICAgIC0tIFNpbXBsaWZpZWQgYWNjZXNzb3IgKGxheCBt b2RlLCBpZiBkb3RzIHByZXNlbnQgZWxzZXdoZXJlKQorLS0gUmVzdWx0OiB7IndlYXRoZXIiOiAi c3VubnkiLCAidGVtcGVyYXR1cmUiOiAiNzJGIn0gIChvYmplY3Qgd3JhcHBlZCBhcyBhcnJheSwg WzBdIHJldHVybnMgZW50aXJlIG9iamVjdCkKKworU0VMRUNUIGRhdGFbMF0gRlJPTSB0ZXN0X3Rh YmxlOyAgICAgICAgICAgICAgICAgLS0gUHJlLXN0YW5kYXJkIHN1YnNjcmlwdGluZyAoc3RyaWN0 IG1vZGUsIG5vIGRvdHMpCistLSBSZXN1bHQ6IE5VTEwgIChubyB3cmFwcGluZywgZGlyZWN0IGFy cmF5IGFjY2VzcyBvbiBvYmplY3QgZmFpbHMpCisKK1NFTEVDVCBkYXRhLT4wIEZST00gdGVzdF90 YWJsZTsgICAgICAgICAgICAgICAgIC0tIEFycm93IG9wZXJhdG9yIChzdHJpY3QgbW9kZSkKKy0t IFJlc3VsdDogTlVMTCAgKG5vIHdyYXBwaW5nLCBkaXJlY3QgYXJyYXkgYWNjZXNzIG9uIG9iamVj dCBmYWlscykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICBJbiBsYXggbW9kZSAoc2ltcGxpZmll ZCBhY2Nlc3NvciksIHdoZW4gYW4gYXJyYXkgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBvbiBhIG5v bi1hcnJheSB2YWx1ZSwKKyAgICB0aGUgdmFsdWUgaXMgZmlyc3Qgd3JhcHBlZCBpbiBhbiBhcnJh eSwgdGhlbiB0aGUgb3BlcmF0aW9uIHByb2NlZWRzLiBJbiBzdHJpY3QgbW9kZQorICAgIChwcmUt c3RhbmRhcmQgbWV0aG9kcyksIHRoZSBvcGVyYXRpb24gZmFpbHMgYW5kIHJldHVybnMgTlVMTC4K KyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgPGVtcGhhc2lzPldoZW4gdG8gVXNlIEVhY2gg TWV0aG9kOjwvZW1waGFzaXM+CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgPGxpc3RpdGVtPgor ICAgICAgPHBhcmE+CisgICAgICAgVXNlIDxlbXBoYXNpcz5TUUw6MjAyMyBzaW1wbGlmaWVkIGFj Y2Vzc29yPC9lbXBoYXNpcz4gZm9yIHN0YW5kYXJkIGNvbXBsaWFuY2UgYW5kIHdoZW4geW91IHdh bnQgbGF4IG1vZGUgYW5kIGNvbmRpdGlvbmFsIGFycmF5IHdyYXBwZXIKKyAgICAgIDwvcGFyYT4K KyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAg VXNlIDxlbXBoYXNpcz5wcmUtc3RhbmRhcmQgc3Vic2NyaXB0aW5nPC9lbXBoYXNpcz4gZm9yIHdy aXRlIG9wZXJhdGlvbnMgb3Igd2hlbiB5b3UgbmVlZCBkaXJlY3QgZmllbGQgYWNjZXNzIHdpdGhv dXQgYXJyYXkgcHJvY2Vzc2luZworICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAg ICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBVc2UgPGVtcGhhc2lzPmFycm93IG9w ZXJhdG9yczwvZW1waGFzaXM+IHdoZW4geW91IG5lZWQgdGV4dCBvdXRwdXQgKDxsaXRlcmFsPi0+ PjwvbGl0ZXJhbD4pIG9yIHdoZW4gd29ya2luZyB3aXRoIGJvdGggPGxpdGVyYWw+anNvbjwvbGl0 ZXJhbD4gYW5kIDxsaXRlcmFsPmpzb25iPC9saXRlcmFsPiB0eXBlcworICAgICAgPC9wYXJhPgor ICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgPC9wYXJhPgorICA8L3Nl Y3QzPgorCisgIDxzZWN0MyBpZD0ianNvbmItYWNjZXNzb3ItYmVzdC1wcmFjdGljZXMiPgorICAg PHRpdGxlPkJlc3QgUHJhY3RpY2VzOiBBdm9pZCBNaXhpbmcgQWNjZXNzIE1ldGhvZHM8L3RpdGxl PgorICAgPHBhcmE+CisgICAgPGVtcGhhc2lzPkltcG9ydGFudDo8L2VtcGhhc2lzPiBEbyBub3Qg bWl4IFNRTDoyMDIzIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4CisgICAgd2l0aCBwcmUtc3Rh bmRhcmQgc3Vic2NyaXB0aW5nIHN5bnRheCBpbiB0aGUgc2FtZSBhY2Nlc3NvciBjaGFpbi4gVGhl c2UKKyAgICBtZXRob2RzIGhhdmUgc3VidGx5IGRpZmZlcmVudCBzZW1hbnRpY3MgYW5kIGFyZSBu b3QgaW50ZXJjaGFuZ2VhYmxlIGFsaWFzZXMuCisgICAgTWl4aW5nIHRoZW0gY2FuIGxlYWQgdG8g Y29uZnVzaW9uIGFuZCBjb2RlIHRoYXQgaXMgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQuCisgICA8 L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5SZWNvbW1lbmRlZCAtIENvbnNpc3Rl bnQgc2ltcGxpZmllZCBhY2Nlc3Nvcjo8L2VtcGhhc2lzPgorPHByb2dyYW1saXN0aW5nPgorLS0g QWxsIHBhcnRzIHVzZSBzaW1wbGlmaWVkIGFjY2Vzc29yIChzdGFuZGFyZCBiZWhhdmlvcikKK1NF TEVDVCBkYXRhLmxvY2F0aW9uLmNvb3JkaW5hdGVzLmxhdGl0dWRlIEZST00gdGFibGU7ICAtLSBH b29kCitTRUxFQ1QgZGF0YS5yZXBlcnRvaXJlWzBdLnRpdGxlIEZST00gdGFibGU7ICAgICAgICAg ICAtLSBHb29kCitTRUxFQ1QgZGF0YS51c2Vyc1sxXS5wcm9maWxlLmVtYWlsIEZST00gdGFibGU7 ICAgICAgICAtLSBHb29kCis8L3Byb2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgorCisgICA8cGFy YT4KKyAgICA8ZW1waGFzaXM+UmVjb21tZW5kZWQgLSBDb25zaXN0ZW50IHByZS1zdGFuZGFyZCBz dWJzY3JpcHRpbmc6PC9lbXBoYXNpcz4KKzxwcm9ncmFtbGlzdGluZz4KKy0tIEFsbCBwYXJ0cyB1 c2UgcHJlLXN0YW5kYXJkIHN1YnNjcmlwdGluZworU0VMRUNUIGRhdGFbJ2xvY2F0aW9uJ11bJ2Nv b3JkaW5hdGVzJ11bJ2xhdGl0dWRlJ10gRlJPTSB0YWJsZTsgLS0gR29vZAorU0VMRUNUIGRhdGFb MF1bJ3RpdGxlJ10gRlJPTSB0YWJsZTsgICAgICAgICAgICAgICAgICAgIC0tIEdvb2QgKHdoZW4g bm8gZG90cyBwcmVzZW50KQorU0VMRUNUIGRhdGFbJ3VzZXJzJ11bMV1bJ3Byb2ZpbGUnXVsnZW1h aWwnXSBGUk9NIHRhYmxlOyAtLSBHb29kCis8L3Byb2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgor CisgICA8cGFyYT4KKyAgICA8ZW1waGFzaXM+Tm90IHJlY29tbWVuZGVkIC0gTWl4ZWQgc3ludGF4 OjwvZW1waGFzaXM+Cis8cHJvZ3JhbWxpc3Rpbmc+CistLSBNaXhpbmcgc2ltcGxpZmllZCBhY2Nl c3NvciB3aXRoIHByZS1zdGFuZGFyZCBzdWJzY3JpcHRpbmcKK1NFTEVDVCBkYXRhLmxvY2F0aW9u WydsYXRpdHVkZSddIEZST00gdGFibGU7ICAgICAgIC0tIEF2b2lkCitTRUxFQ1QgZGF0YVsncmVw ZXJ0b2lyZSddWzBdLnRpdGxlIEZST00gdGFibGU7ICAgIC0tIEF2b2lkCis8L3Byb2dyYW1saXN0 aW5nPgorICAgIFdoaWxlIHRoZXNlIG1peGVkIGZvcm1zIHdvcmsgYXMgZGVzaWduZWQsIHRoZXkg Y2FuIGJlIHZlcnkgY29uZnVzaW5nCisgICAgYmVjYXVzZSB0aGUgc2ltcGxpZmllZCBhY2Nlc3Nv ciBjYW5ub3QgaGFuZGxlIHRleHQtYmFzZWQgc3Vic2NyaXB0cyBsaWtlIGBbJ2ZpZWxkJ11gLgor ICAgIFRoaXMgZm9yY2VzIGEgZmFsbGJhY2sgdG8gcHJlLXN0YW5kYXJkIHNlbWFudGljcyBmb3Ig dGhvc2Ugc3BlY2lmaWMgcGFydHMsCisgICAgY3JlYXRpbmcgYSBjaGFpbiB0aGF0IHN3aXRjaGVz IGJldHdlZW4gbGF4IG1vZGUgKGZvciBkb3Qgbm90YXRpb24pIGFuZAorICAgIHN0cmljdCBtb2Rl IChmb3IgdGV4dCBzdWJzY3JpcHRzKSB3aXRoaW4gdGhlIHNhbWUgYWNjZXNzb3IgZXhwcmVzc2lv bi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgQ2hvb3NlIG9uZSBhcHByb2FjaCBjb25z aXN0ZW50bHkgdGhyb3VnaG91dCB5b3VyIGFjY2Vzc29yIGNoYWluIHRvIGVuc3VyZQorICAgIHBy ZWRpY3RhYmxlIGFuZCBtYWludGFpbmFibGUgY29kZS4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+ CisgICAgPGVtcGhhc2lzPkN1cnJlbnQgSW1wbGVtZW50YXRpb246PC9lbXBoYXNpcz4gVGhlIGN1 cnJlbnQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMKKyAgICBKU09OIG1lbWJlciBhY2Nlc3NvcnMg KGRvdCBub3RhdGlvbikgYW5kIEpTT04gYXJyYXkgYWNjZXNzb3JzIChpbnRlZ2VyIHN1YnNjcmlw dHMpCisgICAgYXMgZGVmaW5lZCBpbiB0aGUgU1FMOjIwMjMgc2ltcGxpZmllZCBhY2Nlc3NvciBz cGVjaWZpY2F0aW9uLgorICAgIEFkdmFuY2VkIGZlYXR1cmVzIGZyb20gdGhlIFNRTDoyMDIzIHNw ZWNpZmljYXRpb24sIHN1Y2ggYXMgd2lsZGNhcmQgbWVtYmVyCisgICAgYWNjZXNzb3JzIGFuZCBp dGVtIG1ldGhvZCBhY2Nlc3NvcnMsIGFyZSBub3QgeWV0IGltcGxlbWVudGVkLgorICAgPC9wYXJh PgorICA8L3NlY3QzPgorIDwvc2VjdDI+CisKICA8c2VjdDIgaWQ9ImRhdGF0eXBlLWpzb24tdHJh bnNmb3JtcyI+CiAgIDx0aXRsZT5UcmFuc2Zvcm1zPC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z cWxfZmVhdHVyZXMudHh0CmluZGV4IGViZTg1MzM3YzI4Li40NTdlOTkzMzA1ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dApAQCAtNTY4LDggKzU2OCw4IEBAIFQ4MzgJSlNPTl9U QUJMRTogUExBTiBERUZBVUxUIGNsYXVzZQkJCU5PCiBUODM5CUZvcm1hdHRlZCBjYXN0IG9mIGRh dGV0aW1lcyB0by9mcm9tIGNoYXJhY3RlciBzdHJpbmdzCQkJTk8JCiBUODQwCUhleCBpbnRlZ2Vy IGxpdGVyYWxzIGluIFNRTC9KU09OIHBhdGggbGFuZ3VhZ2UJCQlZRVMJCiBUODUxCVNRTC9KU09O OiBvcHRpb25hbCBrZXl3b3JkcyBmb3IgZGVmYXVsdCBzeW50YXgJCQlZRVMJCi1UODYwCVNRTC9K U09OIHNpbXBsaWZpZWQgYWNjZXNzb3I6IGNvbHVtbiByZWZlcmVuY2Ugb25seQkJCU5PCQotVDg2 MQlTUUwvSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yOiBjYXNlLXNlbnNpdGl2ZSBKU09OIG1lbWJl ciBhY2Nlc3NvcgkJCU5PCQorVDg2MAlTUUwvSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yOiBjb2x1 bW4gcmVmZXJlbmNlIG9ubHkJCQlZRVMJCitUODYxCVNRTC9KU09OIHNpbXBsaWZpZWQgYWNjZXNz b3I6IGNhc2Utc2Vuc2l0aXZlIEpTT04gbWVtYmVyIGFjY2Vzc29yCQkJWUVTCQogVDg2MglTUUwv SlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yOiB3aWxkY2FyZCBtZW1iZXIgYWNjZXNzb3IJCQlOTwkK IFQ4NjMJU1FML0pTT04gc2ltcGxpZmllZCBhY2Nlc3Nvcjogc2luZ2xlLXF1b3RlZCBzdHJpbmcg bGl0ZXJhbCBhcyBtZW1iZXIgYWNjZXNzb3IJCQlOTwkKIFQ4NjQJU1FML0pTT04gc2ltcGxpZmll ZCBhY2Nlc3NvcgkJCU5PCQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggZjE1Njk4NzliNTIu LjM4NWM4ZDBjZWZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTMzMjAsNTAgKzMzMjAs NTkgQEAgRXhlY0luaXRTdWJzY3JpcHRpbmdSZWYoRXhwckV2YWxTdGVwICpzY3JhdGNoLCBTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZiwKIAkJCQkJCQkJICAgc3RhdGUtPnN0ZXBzX2xlbiAtIDEpOwog CX0KIAotCS8qIEV2YWx1YXRlIHVwcGVyIHN1YnNjcmlwdHMgKi8KLQlpID0gMDsKLQlmb3JlYWNo KGxjLCBzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcikKKwkvKiBFdmFsdWF0ZSB1cHBlciBzdWJzY3Jp cHRzLCB1bmxlc3MgcmVmanNvbmJwYXRoIGlzIHVzZWQgZm9yIGV4ZWN1dGlvbiAqLworCWlmICgh c2JzcmVmLT5yZWZqc29uYnBhdGgpCiAJewotCQlFeHByCSAgICplID0gKEV4cHIgKikgbGZpcnN0 KGxjKTsKLQotCQkvKiBXaGVuIHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBj YW4gYmUgb21pdHRlZCAqLwotCQlpZiAoIWUpCi0JCXsKLQkJCXNic3JlZnN0YXRlLT51cHBlcnBy b3ZpZGVkW2ldID0gZmFsc2U7Ci0JCQlzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleG51bGxbaV0gPSB0 cnVlOwotCQl9Ci0JCWVsc2UKKwkJaSA9IDA7CisJCWZvcmVhY2gobGMsIHNic3JlZi0+cmVmdXBw ZXJpbmRleHByKQogCQl7Ci0JCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92aWRlZFtpXSA9IHRydWU7 Ci0JCQkvKiBFYWNoIHN1YnNjcmlwdCBpcyBldmFsdWF0ZWQgaW50byBhcHByb3ByaWF0ZSBhcnJh eSBlbnRyeSAqLwotCQkJRXhlY0luaXRFeHByUmVjKGUsIHN0YXRlLAotCQkJCQkJCSZzYnNyZWZz dGF0ZS0+dXBwZXJpbmRleFtpXSwKLQkJCQkJCQkmc2JzcmVmc3RhdGUtPnVwcGVyaW5kZXhudWxs W2ldKTsKKwkJCUV4cHIgKmUgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCQkvKiBXaGVuIHNs aWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAqLworCQkJ aWYgKCFlKQorCQkJeworCQkJCXNic3JlZnN0YXRlLT51cHBlcnByb3ZpZGVkW2ldID0gZmFsc2U7 CisJCQkJc2JzcmVmc3RhdGUtPnVwcGVyaW5kZXhudWxsW2ldID0gdHJ1ZTsKKwkJCX0KKwkJCWVs c2UKKwkJCXsKKwkJCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92aWRlZFtpXSA9IHRydWU7CisJCQkJ LyogRWFjaCBzdWJzY3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50 cnkgKi8KKwkJCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJCQkJCSZzYnNyZWZzdGF0 ZS0+dXBwZXJpbmRleFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT51cHBlcmluZGV4bnVsbFtp XSk7CisJCQl9CisJCQlpKys7CiAJCX0KLQkJaSsrOwogCX0KIAotCS8qIEV2YWx1YXRlIGxvd2Vy IHN1YnNjcmlwdHMgc2ltaWxhcmx5ICovCi0JaSA9IDA7Ci0JZm9yZWFjaChsYywgc2JzcmVmLT5y ZWZsb3dlcmluZGV4cHIpCisJLyoKKwkgKiBFdmFsdWF0ZSBsb3dlciBzdWJzY3JpcHRzIHNpbWls YXJseSwgdW5sZXNzIHJlZmpzb25icGF0aCBpcyB1c2VkIGZvcgorCSAqIGV4ZWN1dGlvbgorCSAq LworCWlmICghc2JzcmVmLT5yZWZqc29uYnBhdGgpCiAJewotCQlFeHByCSAgICplID0gKEV4cHIg KikgbGZpcnN0KGxjKTsKLQotCQkvKiBXaGVuIHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0 IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAqLwotCQlpZiAoIWUpCi0JCXsKLQkJCXNic3JlZnN0YXRl LT5sb3dlcnByb3ZpZGVkW2ldID0gZmFsc2U7Ci0JCQlzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleG51 bGxbaV0gPSB0cnVlOwotCQl9Ci0JCWVsc2UKKwkJaSA9IDA7CisJCWZvcmVhY2gobGMsIHNic3Jl Zi0+cmVmbG93ZXJpbmRleHByKQogCQl7Ci0JCQlzYnNyZWZzdGF0ZS0+bG93ZXJwcm92aWRlZFtp XSA9IHRydWU7Ci0JCQkvKiBFYWNoIHN1YnNjcmlwdCBpcyBldmFsdWF0ZWQgaW50byBhcHByb3By aWF0ZSBhcnJheSBlbnRyeSAqLwotCQkJRXhlY0luaXRFeHByUmVjKGUsIHN0YXRlLAotCQkJCQkJ CSZzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleFtpXSwKLQkJCQkJCQkmc2JzcmVmc3RhdGUtPmxvd2Vy aW5kZXhudWxsW2ldKTsKKwkJCUV4cHIJICAgKmUgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJ CQkvKiBXaGVuIHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21p dHRlZCAqLworCQkJaWYgKCFlKQorCQkJeworCQkJCXNic3JlZnN0YXRlLT5sb3dlcnByb3ZpZGVk W2ldID0gZmFsc2U7CisJCQkJc2JzcmVmc3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldID0gdHJ1ZTsK KwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlzYnNyZWZzdGF0ZS0+bG93ZXJwcm92aWRlZFtpXSA9 IHRydWU7CisJCQkJLyogRWFjaCBzdWJzY3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlh dGUgYXJyYXkgZW50cnkgKi8KKwkJCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJCQkJ CSZzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT5sb3dl cmluZGV4bnVsbFtpXSk7CisJCQl9CisJCQlpKys7CiAJCX0KLQkJaSsrOwogCX0KIAogCS8qIFNC U1JFRl9TVUJTQ1JJUFRTIGNoZWNrcyBhbmQgY29udmVydHMgYWxsIHRoZSBzdWJzY3JpcHRzIGF0 IG9uY2UgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggN2JjODIzNTA3ZjEuLmNhYjVkOGQ5ZjMy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjg0LDYgKzI4NCwxNSBAQCBleHByVHlwZShjb25z dCBOb2RlICpleHByKQogCQljYXNlIFRfUGxhY2VIb2xkZXJWYXI6CiAJCQl0eXBlID0gZXhwclR5 cGUoKE5vZGUgKikgKChjb25zdCBQbGFjZUhvbGRlclZhciAqKSBleHByKS0+cGhleHByKTsKIAkJ CWJyZWFrOworCQljYXNlIFRfRmllbGRBY2Nlc3NvckV4cHI6CisKKwkJCS8qCisJCQkgKiBGaWVs ZEFjY2Vzc29yRXhwciBpcyBub3QgZXZhbHVhYmxlLiBUcmVhdCBpdCBhcyBURVhUIGZvcgorCQkJ ICogY29sbGF0aW9uLCBkZXBhcnNpbmcsIGFuZCBzaW1pbGFyIHB1cnBvc2VzLCBzaW5jZSBpdCBy ZXByZXNlbnRzCisJCQkgKiBhIEpTT04gZmllbGQgbmFtZS4KKwkJCSAqLworCQkJdHlwZSA9IFRF WFRPSUQ7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWcoZXhwcikpOwogCQkJdHlwZSA9IEludmFs aWRPaWQ7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAgLTExNDYsNiArMTE1NSw5IEBAIGV4 cHJTZXRDb2xsYXRpb24oTm9kZSAqZXhwciwgT2lkIGNvbGxhdGlvbikKIAkJY2FzZSBUX01lcmdl U3VwcG9ydEZ1bmM6CiAJCQkoKE1lcmdlU3VwcG9ydEZ1bmMgKikgZXhwciktPm1zZmNvbGxpZCA9 IGNvbGxhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfRmllbGRBY2Nlc3NvckV4cHI6CisJCQko KEZpZWxkQWNjZXNzb3JFeHByICopIGV4cHIpLT5mYWVjb2xsaWQgPSBjb2xsYXRpb247CisJCQli cmVhazsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCSgoU3Vic2NyaXB0aW5nUmVmICop IGV4cHIpLT5yZWZjb2xsaWQgPSBjb2xsYXRpb247CiAJCQlicmVhazsKQEAgLTIxMjksNiArMjE0 MSw3IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQljYXNlIFRf U29ydEdyb3VwQ2xhdXNlOgogCQljYXNlIFRfQ1RFU2VhcmNoQ2xhdXNlOgogCQljYXNlIFRfTWVy Z2VTdXBwb3J0RnVuYzoKKwkJY2FzZSBUX0ZpZWxkQWNjZXNzb3JFeHByOgogCQkJLyogcHJpbWl0 aXZlIG5vZGUgdHlwZXMgd2l0aCBubyBleHByZXNzaW9uIHN1Ym5vZGVzICovCiAJCQlicmVhazsK IAkJY2FzZSBUX1dpdGhDaGVja09wdGlvbjoKQEAgLTMwMDgsNiArMzAyMSw3IEBAIGV4cHJlc3Np b25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJY2FzZSBUX1NvcnRHcm91cENsYXVz ZToKIAkJY2FzZSBUX0NURVNlYXJjaENsYXVzZToKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6 CisJCWNhc2UgVF9GaWVsZEFjY2Vzc29yRXhwcjoKIAkJCXJldHVybiBjb3B5T2JqZWN0KG5vZGUp OwogCQljYXNlIFRfV2l0aENoZWNrT3B0aW9uOgogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vi cy5jCmluZGV4IDU3NTczMzRmNGViLi4zMDhlNjZlOGQ0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u YnN1YnMuYwpAQCAtMTUsMjEgKzE1LDMwIEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgi CiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvc3Vic2NyaXB0 aW5nLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgogI2luY2x1ZGUgInBhcnNl ci9wYXJzZV9leHByLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1 dGlscy9qc29uYi5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAKIAotLyogU3Vic2Ny aXB0aW5nUmVmU3RhdGUud29ya3NwYWNlIGZvciBqc29uYiBzdWJzY3JpcHRpbmcgZXhlY3V0aW9u ICovCisvKgorICogU3Vic2NyaXB0aW5nUmVmU3RhdGUud29ya3NwYWNlIGZvciBnZW5lcmljIGpz b25iIHN1YnNjcmlwdGluZyBleGVjdXRpb24uCisgKgorICogU3RvcmVzIHN0YXRlIGZvciBib3Ro IGpzb25iIHNpbXBsZSBzdWJzY3JpcHRpbmcgYW5kIGRvdCBub3RhdGlvbiBhY2Nlc3MuCisgKiBE b3Qgbm90YXRpb24gYWRkaXRpb25hbGx5IHVzZXMgYGpzb25wYXRoYCBmb3IgSnNvblBhdGggZXZh bHVhdGlvbi4KKyAqLwogdHlwZWRlZiBzdHJ1Y3QgSnNvbmJTdWJXb3Jrc3BhY2UKIHsKIAlib29s CQlleHBlY3RBcnJheTsJLyoganNvbmIgcm9vdCBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheSAq LwogCU9pZAkJICAgKmluZGV4T2lkOwkJLyogT0lEIG9mIGNvZXJjZWQgc3Vic2NyaXB0IGV4cHJl c3Npb24sIGNvdWxkCiAJCQkJCQkJCSAqIGJlIG9ubHkgaW50ZWdlciBvciB0ZXh0ICovCiAJRGF0 dW0JICAgKmluZGV4OwkJCS8qIFN1YnNjcmlwdCB2YWx1ZXMgaW4gRGF0dW0gZm9ybWF0ICovCisJ SnNvblBhdGggICAqanNvbnBhdGg7CQkvKiBKc29uUGF0aCBmb3IgZG90IG5vdGF0aW9uIGV4ZWN1 dGlvbiB2aWEKKwkJCQkJCQkJICogSnNvblBhdGhRdWVyeSgpICovCiB9IEpzb25iU3ViV29ya3Nw YWNlOwogCiBzdGF0aWMgTm9kZSAqCkBAIC05Niw2ICsxMDUsMjMzIEBAIGNvZXJjZV9qc29ucGF0 aF9zdWJzY3JpcHRfdG9faW50NF9vcl90ZXh0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqc3Vi RXhwcikKIAlyZXR1cm4gc3ViRXhwcjsKIH0KIAorLyoKKyAqIER1cmluZyB0cmFuc2Zvcm1hdGlv biwgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gYnVpbGQgYSBKc29uUGF0aAorICogZm9yIEpzb25QYXRo UXVlcnkoKSBleGVjdXRpb24uCisgKgorICogSnNvblBhdGggaXMgbmVlZGVkIGlmIHRoZSBpbmRp cmVjdGlvbiBsaXN0IGluY2x1ZGVzOgorICogLSBTdHJpbmctYmFzZWQgYWNjZXNzIChkb3Qgbm90 YXRpb24pCisgKiAtIFNsaWNlLWJhc2VkIHN1YnNjcmlwdGluZyAod2hlbiBpc1NsaWNlIGlzIHRy dWUpCisgKgorICogT3RoZXJ3aXNlLCBzaW1wbGUganNvbmIgc3Vic2NyaXB0aW5nIGlzIGVub3Vn aC4KKyAqLworc3RhdGljIGJvb2wKK2pzb25iX2NoZWNrX2pzb25wYXRoX25lZWRlZChMaXN0ICpp bmRpcmVjdGlvbikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGluZGlyZWN0 aW9uKQorCXsKKwkJTm9kZQkgICAqYWNjZXNzb3IgPSBsZmlyc3QobGMpOworCisJCWlmIChJc0Eo YWNjZXNzb3IsIFN0cmluZykpCisJCQlyZXR1cm4gdHJ1ZTsKKwkJZWxzZQorCQkJQXNzZXJ0KElz QShhY2Nlc3NvciwgQV9JbmRpY2VzKSk7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisvKgor ICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgY29uc3RydWN0aW5nIEpzb25QYXRoIGV4cHJlc3Npb25z LgorICoKKyAqIFRoZSBtYWtlX2pzb25wYXRoX2l0ZW1fKiBmdW5jdGlvbnMgY3JlYXRlIHZhcmlv dXMgdHlwZXMgb2YgSnNvblBhdGhQYXJzZUl0ZW0KKyAqIG5vZGVzLCB3aGljaCBhcmUgdXNlZCB0 byBidWlsZCBKc29uUGF0aCBleHByZXNzaW9ucyBmb3IganNvbmIgc2ltcGxpZmllZAorICogYWNj ZXNzb3IuCisgKi8KKworc3RhdGljIEpzb25QYXRoUGFyc2VJdGVtICoKK21ha2VfanNvbnBhdGhf aXRlbShKc29uUGF0aEl0ZW1UeXBlIHR5cGUpCit7CisJSnNvblBhdGhQYXJzZUl0ZW0gKnYgPSBw YWxsb2Moc2l6ZW9mKCp2KSk7CisKKwl2LT50eXBlID0gdHlwZTsKKwl2LT5uZXh0ID0gTlVMTDsK KworCXJldHVybiB2OworfQorCisvKgorICogQ29udmVydCBhIGNvbnN0YW50IGludGVnZXIgZXhw cmVzc2lvbiBpbnRvIGEgSnNvblBhdGhQYXJzZUl0ZW0uCisgKgorICogVGhlIGlucHV0IGV4cHJl c3Npb24gbXVzdCBiZSBhIG5vbi1udWxsIGNvbnN0YW50IG9mIHR5cGUgSU5UNC4gUmV0dXJucyBO VUxMIG90aGVyd2lzZS4KKyAqIFRoaXMgZnVuY3Rpb24gY29uc3RydWN0cyBhIGpwaU51bWVyaWMg aXRlbSBmb3IgdXNlIGluIEpzb25QYXRoIGFuZCBhcHBlbmRzIGEgbWF0Y2hpbmcKKyAqIENvbnN0 KElOVDQpIG5vZGUgdG8gdGhlIGdpdmVuIGV4cHJlc3Npb24gbGlzdCBmb3IgdXNlIGluIEVYUExB SU4sIHZpZXdzLCBldGMuCisgKgorICogUGFyYW1ldGVyczoKKyAqIC0gcHN0YXRlOiBwYXJzZSBz dGF0ZSBjb250ZXh0CisgKiAtIGV4cHI6IGlucHV0IGV4cHJlc3Npb24gbm9kZQorICogLSBleHBy czogbGlzdCBvZiBleHByZXNzaW9uIG5vZGVzICh1cGRhdGVkIGluIHBsYWNlKQorICovCitzdGF0 aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBOb2RlICpleHByLCBMaXN0ICoqZXhwcnMpCit7CisJQ29uc3QJICAgKmNuc3Q7 CisKKwlleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGV4cHIsIHBzdGF0ZS0+cF9leHByX2tp bmQpOworCisJaWYgKElzQShleHByLCBDb25zdCkpCisJeworCQljbnN0ID0gKENvbnN0ICopIGV4 cHI7CisJCWlmIChjbnN0LT5jb25zdHR5cGUgPT0gSU5UNE9JRCAmJiAhKGNuc3QtPmNvbnN0aXNu dWxsKSkKKwkJeworCQkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaSA9IG1ha2VfanNvbnBhdGhfaXRl bShqcGlOdW1lcmljKTsKKworCQkJanBpLT52YWx1ZS5udW1lcmljID0KKwkJCQlEYXR1bUdldE51 bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMShpbnQ0X251bWVyaWMsIEludDMyR2V0RGF0dW0oY25z dC0+Y29uc3R2YWx1ZSkpKTsKKworCQkJKmV4cHJzID0gbGFwcGVuZCgqZXhwcnMsIG1ha2VDb25z dChJTlQ0T0lELCAtMSwgSW52YWxpZE9pZCwgNCwKKwkJCQkJCQkJCQkJICAgSW50MzJHZXREYXR1 bShjbnN0LT5jb25zdHZhbHVlKSwgZmFsc2UsIHRydWUpKTsKKworCQkJcmV0dXJuIGpwaTsKKwkJ fQorCX0KKworCXJldHVybiBOVUxMOworfQorCisvKgorICogQ29uc3RydWN0cyBhIEpzb25QYXRo IGV4cHJlc3Npb24gZnJvbSBhIGxpc3Qgb2YgaW5kaXJlY3Rpb25zLgorICogVGhpcyBmdW5jdGlv biBpcyB1c2VkIHdoZW4ganNvbmIgc3Vic2NyaXB0aW5nIGludm9sdmVzIGRvdCBub3RhdGlvbiwK KyAqIHJlcXVpcmluZyBKc29uUGF0aC1iYXNlZCBldmFsdWF0aW9uLgorICoKKyAqIFRoZSBmdW5j dGlvbiBtb2RpZmllcyB0aGUgaW5kaXJlY3Rpb24gbGlzdCBpbiBwbGFjZSwgcmVtb3ZpbmcgcHJv Y2Vzc2VkCisgKiBlbGVtZW50cyBhcyBpdCBjb252ZXJ0cyB0aGVtIGludG8gSnNvblBhdGggY29t cG9uZW50cywgYXMgZm9sbG93czoKKyAqIC0gU3RyaW5nIGtleXMgKGRvdCBub3RhdGlvbikgLT4g anBpS2V5IGl0ZW1zLgorICogLSBBcnJheSBpbmRpY2VzIC0+IGpwaUluZGV4QXJyYXkgaXRlbXMu CisgKgorICogSW4gYWRkaXRpb24gdG8gYnVpbGRpbmcgdGhlIEpzb25QYXRoIGV4cHJlc3Npb24s IHRoaXMgZnVuY3Rpb24gcG9wdWxhdGVzCisgKiB0aGUgZm9sbG93aW5nIGZpZWxkcyBvZiB0aGUg Z2l2ZW4gU3Vic2NyaXB0aW5nUmVmOgorICogLSByZWZqc29uYnBhdGg6IHRoZSBnZW5lcmF0ZWQg SnNvblBhdGgKKyAqIC0gcmVmdXBwZXJpbmRleHByOiB1cHBlciBpbmRleCBleHByZXNzaW9ucyAo b2JqZWN0IGtleXMgb3IgYXJyYXkgaW5kZXhlcykKKyAqIC0gcmVmbG93ZXJpbmRleHByOiBsb3dl ciBpbmRleCBleHByZXNzaW9ucywgcmVtYWlucyBOSUwgYXMgc2xpY2VzIGFyZSBub3Qgc3VwcG9y dGVkLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKiAtIHBzdGF0ZTogUGFyc2Ugc3RhdGUgY29udGV4 dC4KKyAqIC0gaW5kaXJlY3Rpb246IExpc3Qgb2Ygc3Vic2NyaXB0aW5nIGV4cHJlc3Npb25zICht b2RpZmllZCBpbi1wbGFjZSkuCisgKiAtIHNic3JlZjogU3Vic2NyaXB0aW5nUmVmIG5vZGUgdG8g dXBkYXRlCisgKi8KK3N0YXRpYyBpbnQKK2pzb25iX3N1YnNjcmlwdF9tYWtlX2pzb25wYXRoKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqaW5kaXJlY3Rpb24sIFN1YnNjcmlwdGluZ1JlZiAqc2Jz cmVmKQoreworCUpzb25QYXRoUGFyc2VSZXN1bHQganByZXM7CisJSnNvblBhdGhQYXJzZUl0ZW0g KnBhdGggPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpUm9vdCk7CisJTGlzdENlbGwgICAqbGM7CisJ RGF0dW0JCWpzcDsKKwlpbnQJCQlwYXRobGVuID0gMDsKKworCXNic3JlZi0+cmVmdXBwZXJpbmRl eHByID0gTklMOworCXNic3JlZi0+cmVmbG93ZXJpbmRleHByID0gTklMOworCXNic3JlZi0+cmVm anNvbmJwYXRoID0gTlVMTDsKKworCWpwcmVzLmV4cHIgPSBwYXRoOworCWpwcmVzLmxheCA9IHRy dWU7CisKKwlmb3JlYWNoKGxjLCBpbmRpcmVjdGlvbikKKwl7CisJCU5vZGUJICAgKmFjY2Vzc29y ID0gbGZpcnN0KGxjKTsKKwkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaTsKKworCQlpZiAoSXNBKGFj Y2Vzc29yLCBTdHJpbmcpKQorCQl7CisJCQljaGFyCSAgICpmaWVsZCA9IHN0clZhbChhY2Nlc3Nv cik7CisJCQlGaWVsZEFjY2Vzc29yRXhwciAqYWNjZXNzb3JfZXhwcjsKKworCQkJanBpID0gbWFr ZV9qc29ucGF0aF9pdGVtKGpwaUtleSk7CisJCQlqcGktPnZhbHVlLnN0cmluZy52YWwgPSBmaWVs ZDsKKwkJCWpwaS0+dmFsdWUuc3RyaW5nLmxlbiA9IHN0cmxlbihmaWVsZCk7CisKKwkJCWFjY2Vz c29yX2V4cHIgPSBtYWtlTm9kZShGaWVsZEFjY2Vzc29yRXhwcik7CisJCQlhY2Nlc3Nvcl9leHBy LT50eXBlID0gVF9GaWVsZEFjY2Vzc29yRXhwcjsKKwkJCWFjY2Vzc29yX2V4cHItPmZpZWxkbmFt ZSA9IGZpZWxkOworCisJCQlzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciA9IGxhcHBlbmQoc2JzcmVm LT5yZWZ1cHBlcmluZGV4cHIsIGFjY2Vzc29yX2V4cHIpOworCQl9CisJCWVsc2UgaWYgKElzQShh Y2Nlc3NvciwgQV9JbmRpY2VzKSkKKwkJeworCQkJQV9JbmRpY2VzICAqYWkgPSBjYXN0Tm9kZShB X0luZGljZXMsIGFjY2Vzc29yKTsKKworCQkJaWYgKCFhaS0+aXNfc2xpY2UpCisJCQl7CisJCQkJ SnNvblBhdGhQYXJzZUl0ZW0gKmpwaV9mcm9tID0gTlVMTDsKKworCQkJCUFzc2VydChhaS0+dWlk eCAmJiAhYWktPmxpZHgpOworCQkJCWpwaV9mcm9tID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIo cHN0YXRlLCBhaS0+dWlkeCwgJnNic3JlZi0+cmVmdXBwZXJpbmRleHByKTsKKwkJCQlpZiAoanBp X2Zyb20gPT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEJyZWFrIG91dCBvZiB0aGUg bG9vcCBpZiB0aGUgc3Vic2NyaXB0IGlzIG5vdCBhCisJCQkJCSAqIG5vbi1udWxsIGludGVnZXIg Y29uc3RhbnQsIHNvIHRoYXQgd2UgY2FuIGZhbGwgYmFjayB0bworCQkJCQkgKiBqc29uYiBzdWJz Y3JpcHRpbmcgbG9naWMuCisJCQkJCSAqCisJCQkJCSAqIFRoaXMgaXMgbmVlZGVkIHRvIGhhbmRs ZSBjYXNlcyB3aXRoIG1peGVkIHVzYWdlIG9mIFNRTAorCQkJCQkgKiBzdGFuZGFyZCBqc29uIHNp bXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4IGFuZCBQb3N0Z3JlU1FMCisJCQkJCSAqIGpzb25iIHN1 YnNjcmlwdGluZyBzeW50YXgsIGUuZzoKKwkJCQkJICoKKwkJCQkJICogc2VsZWN0IChqYikuYVsn YiddLmMgZnJvbSBqc29uYl90YWJsZTsKKwkJCQkJICoKKwkJCQkJICogd2hlcmUgZG90LW5vdGF0 aW9uICguYSBhbmQgLmMpIGlzIHRoZSBTUUwgc3RhbmRhcmQganNvbgorCQkJCQkgKiBzaW1wbGlm aWVkIGFjY2Vzc29yIHN5bnRheCwgYW5kIHRoZSBbJ2InXSBzdWJzY3JpcHQgaXMKKwkJCQkJICog dGhlIFBvc3RncmVTUUwganNvbmIgc3Vic2NyaXB0aW5nIHN5bnRheCwgYmVjYXVzZSAnYicKKwkJ CQkJICogaXMgbm90IGEgbm9uLW51bGwgY29uc3RhbnQgaW50ZWdlciBhbmQgY2Fubm90IGJlIHVz ZWQKKwkJCQkJICogZm9yIGpzb24gYXJyYXkgYWNjZXNzLgorCQkJCQkgKgorCQkJCQkgKiBJbiB0 aGlzIGNhc2UsIHdlIGNhbm5vdCBjcmVhdGUgYSBKc29uUGF0aCBpdGVtLCBzbyB3ZQorCQkJCQkg KiBicmVhayBvdXQgb2YgdGhlIGxvb3AgYW5kIGxldAorCQkJCQkgKiBqc29uYl9zdWJzY3JpcHRf dHJhbnNmb3JtKCkgaGFuZGxlIHRoaXMgaW5kaXJlY3Rpb24gYXMKKwkJCQkJICogYSBQb3N0Z3Jl U1FMIGpzb25iIHN1YnNjcmlwdC4KKwkJCQkJICovCisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJ CWpwaSA9IG1ha2VfanNvbnBhdGhfaXRlbShqcGlJbmRleEFycmF5KTsKKwkJCQlqcGktPnZhbHVl LmFycmF5Lm5lbGVtcyA9IDE7CisJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtcyA9IHBhbGxvYyhz aXplb2YoanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXSkpOworCisJCQkJanBpLT52YWx1ZS5hcnJh eS5lbGVtc1swXS5mcm9tID0ganBpX2Zyb207CisJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1sw XS50byA9IE5VTEw7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJTm9kZQkgICAqZXhwciA9IGFp LT51aWR4ID8gYWktPnVpZHggOiBhaS0+bGlkeDsKKworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCSBlcnJtc2coImpz b25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcyIpLAorCQkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihleHByKSkpKTsKKwkJCX0KKwkJfQorCQll bHNlCisJCXsKKwkJCS8qCisJCQkgKiBVbmV4cGVjdGVkIG5vZGUgdHlwZSBpbiBpbmRpcmVjdGlv biBsaXN0LiBUaGlzIHNob3VsZCBub3QKKwkJCSAqIGhhcHBlbiB3aXRoIGN1cnJlbnQgZ3JhbW1h ciwgYnV0IHdlIGhhbmRsZSBpdCBkZWZlbnNpdmVseSBieQorCQkJICogYnJlYWtpbmcgb3V0IG9m IHRoZSBsb29wIHJhdGhlciB0aGFuIGNyYXNoaW5nLiBJbiBjYXNlIG9mCisJCQkgKiBmdXR1cmUg Z3JhbW1hciBjaGFuZ2VzIHRoYXQgbWlnaHQgaW50cm9kdWNlIG5ldyBub2RlIHR5cGVzLAorCQkJ ICogdGhpcyBhbGxvd3MgdXMgdG8gY3JlYXRlIGEganNvbnBhdGggZnJvbSBhcyBtYW55IGluZGly ZWN0aW9uCisJCQkgKiBlbGVtZW50cyBhcyB3ZSBjYW4gYW5kIGxldCB0cmFuc2Zvcm1JbmRpcmVj dGlvbigpIGZhbGxiYWNrIHRvCisJCQkgKiBhbHRlcm5hdGl2ZSBsb2dpYyB0byBoYW5kbGUgdGhl IHJlbWFpbmluZyBpbmRpcmVjdGlvbiBlbGVtZW50cy4KKwkJCSAqLworCQkJQXNzZXJ0KGZhbHNl KTsJCS8qIG5vdCByZWFjaGFibGUgKi8KKwkJCWJyZWFrOworCQl9CisKKwkJLyogYXBwZW5kIHBh dGggaXRlbSAqLworCQlwYXRoLT5uZXh0ID0ganBpOworCQlwYXRoID0ganBpOworCQlwYXRobGVu Kys7CisJfQorCisJaWYgKHBhdGhsZW4gIT0gMCkKKwl7CisJCWpzcCA9IGpzb25QYXRoRnJvbVBh cnNlUmVzdWx0KCZqcHJlcywgMCwgTlVMTCk7CisJCXNic3JlZi0+cmVmanNvbmJwYXRoID0gKE5v ZGUgKikgbWFrZUNvbnN0KEpTT05QQVRIT0lELCAtMSwgSW52YWxpZE9pZCwgLTEsIGpzcCwgZmFs c2UsIGZhbHNlKTsKKwl9CisKKwlyZXR1cm4gcGF0aGxlbjsKK30KKwogLyoKICAqIEZpbmlzaCBw YXJzZSBhbmFseXNpcyBvZiBhIFN1YnNjcmlwdGluZ1JlZiBleHByZXNzaW9uIGZvciBhIGpzb25i LgogICoKQEAgLTExNCw5ICszNTAsMjkgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZiwKIAlMaXN0CSAgICp1cHBlckluZGV4cHIgPSBOSUw7CiAJTGlz dENlbGwgICAqaWR4OwogCisJLyogRGV0ZXJtaW5lIHRoZSByZXN1bHQgdHlwZSBvZiB0aGUgc3Vi c2NyaXB0aW5nIG9wZXJhdGlvbjsgYWx3YXlzIGpzb25iICovCisJc2JzcmVmLT5yZWZyZXN0eXBl ID0gSlNPTkJPSUQ7CisJc2JzcmVmLT5yZWZ0eXBtb2QgPSAtMTsKKworCWlmIChqc29uYl9jaGVj a19qc29ucGF0aF9uZWVkZWQoaW5kaXJlY3Rpb24pKQorCXsKKwkJaW50CQkJcGF0aGxlbjsKKwor CQlwYXRobGVuID0ganNvbmJfc3Vic2NyaXB0X21ha2VfanNvbnBhdGgocHN0YXRlLCBpbmRpcmVj dGlvbiwgc2JzcmVmKTsKKwkJaWYgKHNic3JlZi0+cmVmanNvbmJwYXRoKQorCQkJcmV0dXJuIHBh dGhsZW47CisJfQorCiAJLyoKLQkgKiBUcmFuc2Zvcm0gYW5kIGNvbnZlcnQgdGhlIHN1YnNjcmlw dCBleHByZXNzaW9ucy4gSnNvbmIgc3Vic2NyaXB0aW5nCi0JICogZG9lcyBub3Qgc3VwcG9ydCBz bGljZXMsIGxvb2sgb25seSBhdCB0aGUgdXBwZXIgaW5kZXguCisJICogV2UgcmVhY2ggaGVyZSBv bmx5IGluIHR3byBjYXNlczogKGEpIHRoZSBKU09OIHNpbXBsaWZpZWQgYWNjZXNzb3IgaXMKKwkg KiBub3QgbmVlZGVkIGF0IGFsbCAoZm9yIGV4YW1wbGUsIGEgcGxhaW4gYXJyYXkgc3Vic2NyaXB0 IGxpa2UgWzFdIG9yCisJICogb2JqZWN0IGtleSBhY2Nlc3MgbGlrZSBbJ2EnXSksIG9yIChiKSBq c29uYl9zdWJzY3JpcHRfbWFrZV9qc29ucGF0aCgpCisJICogd2FzIGNhbGxlZCBidXQgY291bGQg bm90IGNvbXBsZXRlIHRoZSBKc29uUGF0aCBjb25zdHJ1Y3Rpb24gKGZvcgorCSAqIGV4YW1wbGUs IHdoZW4gbWl4aW5nIGRvdCBub3RhdGlvbiB3aXRoIG5vbi1pbnRlZ2VyIHN1YnNjcmlwdHMgbGlr ZQorCSAqIChqYilbJ2EnXS5iIHdoZXJlICdhJyBpcyBub3QgYSBjb25zdGFudCBpbnRlZ2VyKS4K KwkgKgorCSAqIEluIGJvdGggY2FzZXMgd2UgZmFsbCBiYWNrIHRvIHByZS1zdGFuZGFyZCBqc29u YiBzdWJzY3JpcHRpbmcsIGNvZXJjaW5nCisJICogZWFjaCBzdWJzY3JpcHQgdG8gYXJyYXkgaW5k ZXggb3Igb2JqZWN0IGtleSBhcyBuZWVkZWQuCiAJICovCiAJZm9yZWFjaChpZHgsIGluZGlyZWN0 aW9uKQogCXsKQEAgLTE2MywxMCArNDE5LDYgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShT dWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciA9IHVwcGVy SW5kZXhwcjsKIAlzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciA9IE5JTDsKIAotCS8qIERldGVybWlu ZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb247IGFsd2F5cyBq c29uYiAqLwotCXNic3JlZi0+cmVmcmVzdHlwZSA9IEpTT05CT0lEOwotCXNic3JlZi0+cmVmdHlw bW9kID0gLTE7Ci0KIAlyZXR1cm4gbGlzdF9sZW5ndGgodXBwZXJJbmRleHByKTsKIH0KIApAQCAt MjE5LDcgKzQ3MSw3IEBAIGpzb25iX3N1YnNjcmlwdF9jaGVja19zdWJzY3JpcHRzKEV4cHJTdGF0 ZSAqc3RhdGUsCiAJCQkgKiBGb3IganNvbmIgZmV0Y2ggYW5kIGFzc2lnbiBmdW5jdGlvbnMgd2Ug bmVlZCB0byBwcm92aWRlIHBhdGggaW4KIAkJCSAqIHRleHQgZm9ybWF0LiBDb252ZXJ0IGlmIGl0 J3Mgbm90IGFscmVhZHkgdGV4dC4KIAkJCSAqLwotCQkJaWYgKHdvcmtzcGFjZS0+aW5kZXhPaWRb aV0gPT0gSU5UNE9JRCkKKwkJCWlmICghd29ya3NwYWNlLT5qc29ucGF0aCAmJiB3b3Jrc3BhY2Ut PmluZGV4T2lkW2ldID09IElOVDRPSUQpCiAJCQl7CiAJCQkJRGF0dW0JCWRhdHVtID0gc2JzcmVm c3RhdGUtPnVwcGVyaW5kZXhbaV07CiAJCQkJY2hhcgkgICAqY3MgPSBEYXR1bUdldENTdHJpbmco RGlyZWN0RnVuY3Rpb25DYWxsMShpbnQ0b3V0LCBkYXR1bSkpOwpAQCAtMjQ3LDE3ICs0OTksMzIg QEAganNvbmJfc3Vic2NyaXB0X2ZldGNoKEV4cHJTdGF0ZSAqc3RhdGUsCiB7CiAJU3Vic2NyaXB0 aW5nUmVmU3RhdGUgKnNic3JlZnN0YXRlID0gb3AtPmQuc2JzcmVmLnN0YXRlOwogCUpzb25iU3Vi V29ya3NwYWNlICp3b3Jrc3BhY2UgPSAoSnNvbmJTdWJXb3Jrc3BhY2UgKikgc2JzcmVmc3RhdGUt PndvcmtzcGFjZTsKLQlKc29uYgkgICAqanNvbmJTb3VyY2U7CiAKIAkvKiBTaG91bGQgbm90IGdl dCBoZXJlIGlmIHNvdXJjZSBqc29uYiAob3IgYW55IHN1YnNjcmlwdCkgaXMgbnVsbCAqLwogCUFz c2VydCghKCpvcC0+cmVzbnVsbCkpOwogCi0JanNvbmJTb3VyY2UgPSBEYXR1bUdldEpzb25iUCgq b3AtPnJlc3ZhbHVlKTsKLQkqb3AtPnJlc3ZhbHVlID0ganNvbmJfZ2V0X2VsZW1lbnQoanNvbmJT b3VyY2UsCi0JCQkJCQkJCQkgIHdvcmtzcGFjZS0+aW5kZXgsCi0JCQkJCQkJCQkgIHNic3JlZnN0 YXRlLT5udW11cHBlciwKLQkJCQkJCQkJCSAgb3AtPnJlc251bGwsCi0JCQkJCQkJCQkgIGZhbHNl KTsKKwlpZiAod29ya3NwYWNlLT5qc29ucGF0aCkKKwl7CisJCWJvb2wJCWVtcHR5ID0gZmFsc2U7 CisJCWJvb2wJCWVycm9yID0gZmFsc2U7CisKKwkJKm9wLT5yZXN2YWx1ZSA9IEpzb25QYXRoUXVl cnkoKm9wLT5yZXN2YWx1ZSwgd29ya3NwYWNlLT5qc29ucGF0aCwKKwkJCQkJCQkJCSAgSlNXX0NP TkRJVElPTkFMLAorCQkJCQkJCQkJICAmZW1wdHksICZlcnJvciwgTlVMTCwKKwkJCQkJCQkJCSAg TlVMTCk7CisKKwkJKm9wLT5yZXNudWxsID0gZW1wdHkgfHwgZXJyb3I7CisJfQorCWVsc2UKKwl7 CisJCUpzb25iCSAgICpqc29uYlNvdXJjZSA9IERhdHVtR2V0SnNvbmJQKCpvcC0+cmVzdmFsdWUp OworCisJCSpvcC0+cmVzdmFsdWUgPSBqc29uYl9nZXRfZWxlbWVudChqc29uYlNvdXJjZSwKKwkJ CQkJCQkJCQkgIHdvcmtzcGFjZS0+aW5kZXgsCisJCQkJCQkJCQkJICBzYnNyZWZzdGF0ZS0+bnVt dXBwZXIsCisJCQkJCQkJCQkJICBvcC0+cmVzbnVsbCwKKwkJCQkJCQkJCQkgIGZhbHNlKTsKKwl9 CiB9CiAKIC8qCkBAIC0zNjUsNyArNjMyLDcgQEAganNvbmJfZXhlY19zZXR1cChjb25zdCBTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZiwKIHsKIAlKc29uYlN1YldvcmtzcGFjZSAqd29ya3NwYWNlOwog CUxpc3RDZWxsICAgKmxjOwotCWludAkJCW51cHBlciA9IHNic3JlZi0+cmVmdXBwZXJpbmRleHBy LT5sZW5ndGg7CisJaW50CQkJbnVwcGVyID0gbGlzdF9sZW5ndGgoc2JzcmVmLT5yZWZ1cHBlcmlu ZGV4cHIpOwogCWNoYXIJICAgKnB0cjsKIAogCS8qIEFsbG9jYXRlIHR5cGUtc3BlY2lmaWMgd29y a3NwYWNlIHdpdGggc3BhY2UgZm9yIHBlci1zdWJzY3JpcHQgZGF0YSAqLwpAQCAtMzc0LDYgKzY0 MSw5IEBAIGpzb25iX2V4ZWNfc2V0dXAoY29uc3QgU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJ d29ya3NwYWNlLT5leHBlY3RBcnJheSA9IGZhbHNlOwogCXB0ciA9ICgoY2hhciAqKSB3b3Jrc3Bh Y2UpICsgTUFYQUxJR04oc2l6ZW9mKEpzb25iU3ViV29ya3NwYWNlKSk7CiAKKwlpZiAoc2JzcmVm LT5yZWZqc29uYnBhdGgpCisJCXdvcmtzcGFjZS0+anNvbnBhdGggPSBEYXR1bUdldEpzb25QYXRo UChjYXN0Tm9kZShDb25zdCwgc2JzcmVmLT5yZWZqc29uYnBhdGgpLT5jb25zdHZhbHVlKTsKKwog CS8qCiAJICogVGhpcyBjb2RpbmcgYXNzdW1lcyBzaXplb2YoRGF0dW0pID49IHNpemVvZihPaWQp LCBlbHNlIHdlIG1pZ2h0CiAJICogbWlzYWxpZ24gdGhlIGluZGV4T2lkIHBvaW50ZXIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAwNDA4YTk1OTQxZC4uNzYxOTE4Zjg5OWUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTkzMjksMTAgKzkzMjksMTMgQEAgZ2V0X3J1bGVf ZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJICogUGFyZW50 aGVzaXplIHRoZSBhcmd1bWVudCB1bmxlc3MgaXQncyBhIHNpbXBsZSBWYXIgb3IgYQogCQkJCSAq IEZpZWxkU2VsZWN0LiAgKEluIHBhcnRpY3VsYXIsIGlmIGl0J3MgYW5vdGhlcgogCQkJCSAqIFN1 YnNjcmlwdGluZ1JlZiwgd2UgKm11c3QqIHBhcmVudGhlc2l6ZSB0byBhdm9pZAotCQkJCSAqIGNv bmZ1c2lvbi4pCisJCQkJICogY29uZnVzaW9uLikgQWx3YXlzIGFkZCBwYXJlbnRoZXNpcyBpZiBK U09OIHNpbXBsaWZpZWQKKwkJCQkgKiBhY2Nlc3NvciBpcyB1c2VkLCBmb3Igbm93LgogCQkJCSAq LwotCQkJCW5lZWRfcGFyZW5zID0gIUlzQShzYnNyZWYtPnJlZmV4cHIsIFZhcikgJiYKLQkJCQkJ IUlzQShzYnNyZWYtPnJlZmV4cHIsIEZpZWxkU2VsZWN0KTsKKwkJCQluZWVkX3BhcmVucyA9ICgh SXNBKHNic3JlZi0+cmVmZXhwciwgVmFyKSAmJgorCQkJCQkJCSAgICFJc0Eoc2JzcmVmLT5yZWZl eHByLCBGaWVsZFNlbGVjdCkpIHx8CisJCQkJCXNic3JlZi0+cmVmanNvbmJwYXRoOworCiAJCQkJ aWYgKG5lZWRfcGFyZW5zKQogCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CiAJ CQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBzYnNyZWYtPnJlZmV4cHIsIGNvbnRleHQsIHNob3dp bXBsaWNpdCk7CkBAIC0xMzAwNSwxNyArMTMwMDgsMzUgQEAgcHJpbnRTdWJzY3JpcHRzKFN1YnNj cmlwdGluZ1JlZiAqc2JzcmVmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJbG93bGlzdF9p dGVtID0gbGlzdF9oZWFkKHNic3JlZi0+cmVmbG93ZXJpbmRleHByKTsJLyogY291bGQgYmUgTlVM TCAqLwogCWZvcmVhY2godXBsaXN0X2l0ZW0sIHNic3JlZi0+cmVmdXBwZXJpbmRleHByKQogCXsK LQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnWycpOwotCQlpZiAobG93bGlzdF9pdGVtKQor CQlOb2RlCSAgICp1cHBlciA9IChOb2RlICopIGxmaXJzdCh1cGxpc3RfaXRlbSk7CisKKwkJaWYg KHVwcGVyICYmIElzQSh1cHBlciwgRmllbGRBY2Nlc3NvckV4cHIpKQogCQl7CisJCQlGaWVsZEFj Y2Vzc29yRXhwciAqZmFlID0gKEZpZWxkQWNjZXNzb3JFeHByICopIHVwcGVyOworCisJCQkvKiBV c2UgZG90LW5vdGF0aW9uIGZvciBmaWVsZCBhY2Nlc3MgKi8KKwkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJy4nKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVu dGlmaWVyKGZhZS0+ZmllbGRuYW1lKSk7CisKKwkJCS8qIFNraXAgbWF0Y2hpbmcgbG93IGluZGV4 IOKAlCBmaWVsZCBhY2Nlc3MgZG9lc24ndCB1c2Ugc2xpY2VzICovCisJCQlpZiAobG93bGlzdF9p dGVtKQorCQkJCWxvd2xpc3RfaXRlbSA9IGxuZXh0KHNic3JlZi0+cmVmbG93ZXJpbmRleHByLCBs b3dsaXN0X2l0ZW0pOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogVXNlIEpTT05CIGFycmF5IHN1 YnNjcmlwdGluZyAqLworCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnWycpOworCQkJaWYg KGxvd2xpc3RfaXRlbSkKKwkJCXsKKwkJCQkvKiBJZiBzdWJleHByZXNzaW9uIGlzIE5VTEwsIGdl dF9ydWxlX2V4cHIgcHJpbnRzIG5vdGhpbmcgKi8KKwkJCQlnZXRfcnVsZV9leHByKChOb2RlICop IGxmaXJzdChsb3dsaXN0X2l0ZW0pLCBjb250ZXh0LCBmYWxzZSk7CisJCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoYnVmLCAnOicpOworCQkJCWxvd2xpc3RfaXRlbSA9IGxuZXh0KHNic3JlZi0+cmVm bG93ZXJpbmRleHByLCBsb3dsaXN0X2l0ZW0pOworCQkJfQogCQkJLyogSWYgc3ViZXhwcmVzc2lv biBpcyBOVUxMLCBnZXRfcnVsZV9leHByIHByaW50cyBub3RoaW5nICovCi0JCQlnZXRfcnVsZV9l eHByKChOb2RlICopIGxmaXJzdChsb3dsaXN0X2l0ZW0pLCBjb250ZXh0LCBmYWxzZSk7Ci0JCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICc6Jyk7Ci0JCQlsb3dsaXN0X2l0ZW0gPSBsbmV4dChz YnNyZWYtPnJlZmxvd2VyaW5kZXhwciwgbG93bGlzdF9pdGVtKTsKKwkJCWdldF9ydWxlX2V4cHIo dXBwZXIsIGNvbnRleHQsIGZhbHNlKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ10n KTsKIAkJfQotCQkvKiBJZiBzdWJleHByZXNzaW9uIGlzIE5VTEwsIGdldF9ydWxlX2V4cHIgcHJp bnRzIG5vdGhpbmcgKi8KLQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsZmlyc3QodXBsaXN0X2l0 ZW0pLCBjb250ZXh0LCBmYWxzZSk7Ci0JCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ10nKTsK IAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggNmRmY2EzY2IzNWIuLjRmNTE5ZjUwMzFm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtNzA4LDE4ICs3MDgsMzAgQEAgdHlwZWRlZiBzdHJ1 Y3QgU3Vic2NyaXB0aW5nUmVmCiAJaW50MzIJCXJlZnR5cG1vZCBwZ19ub2RlX2F0dHIocXVlcnlf anVtYmxlX2lnbm9yZSk7CiAJLyogY29sbGF0aW9uIG9mIHJlc3VsdCwgb3IgSW52YWxpZE9pZCBp ZiBub25lICovCiAJT2lkCQkJcmVmY29sbGlkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdu b3JlKTsKLQkvKiBleHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIHVwcGVyIGNvbnRhaW5lciBp bmRleGVzICovCisKKwkvKgorCSAqIGV4cHJlc3Npb25zIHRoYXQgZXZhbHVhdGUgdG8gdXBwZXIg Y29udGFpbmVyIGluZGV4ZXMgb3IgZXhwcmVzc2lvbnMKKwkgKiB0aGF0IGFyZSBjb2xsZWN0ZWQg YnV0IG5vdCBldmFsdWF0ZWQgd2hlbiByZWZqc29uYnBhdGggaXMgc2V0LgorCSAqLwogCUxpc3QJ ICAgKnJlZnVwcGVyaW5kZXhwcjsKIAogCS8qCi0JICogZXhwcmVzc2lvbnMgdGhhdCBldmFsdWF0 ZSB0byBsb3dlciBjb250YWluZXIgaW5kZXhlcywgb3IgTklMIGZvciBzaW5nbGUKLQkgKiBjb250 YWluZXIgZWxlbWVudC4KKwkgKiBleHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIGxvd2VyIGNv bnRhaW5lciBpbmRleGVzLCBvciBOSUwgZm9yIGEKKwkgKiBzaW5nbGUgY29udGFpbmVyIGVsZW1l bnQsIG9yIGV4cHJlc3Npb25zIHRoYXQgYXJlIGNvbGxlY3RlZCBidXQgbm90CisJICogZXZhbHVh dGVkIHdoZW4gcmVmanNvbmJwYXRoIGlzIHNldC4KIAkgKi8KIAlMaXN0CSAgICpyZWZsb3dlcmlu ZGV4cHI7CiAJLyogdGhlIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBjb250YWluZXIg dmFsdWUgKi8KIAlFeHByCSAgICpyZWZleHByOwogCS8qIGV4cHJlc3Npb24gZm9yIHRoZSBzb3Vy Y2UgdmFsdWUsIG9yIE5VTEwgaWYgZmV0Y2ggKi8KIAlFeHByCSAgICpyZWZhc3NnbmV4cHI7CisK KwkvKgorCSAqIGNvbnRhaW5lci1zcGVjaWZpYyBleHRyYSBpbmZvcm1hdGlvbiwgY3VycmVudGx5 IHVzZWQgb25seSBieSBqc29uYi4KKwkgKiBzdG9yZXMgYSBKc29uUGF0aCBleHByZXNzaW9uIHdo ZW4ganNvbmIgZG90IG5vdGF0aW9uIGlzIHVzZWQuIE5VTEwgZm9yCisJICogc2ltcGxlIHN1YnNj cmlwdGluZy4KKwkgKi8KKwlOb2RlCSAgICpyZWZqc29uYnBhdGg7CiB9IFN1YnNjcmlwdGluZ1Jl ZjsKIAogLyoKQEAgLTIzNzEsNCArMjM4Myw0MCBAQCB0eXBlZGVmIHN0cnVjdCBPbkNvbmZsaWN0 RXhwcgogCUxpc3QJICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhlIEVYQ0xVREVEIHBz ZXVkbyByZWxhdGlvbiAqLwogfSBPbkNvbmZsaWN0RXhwcjsKIAorLyoKKyAqIEZpZWxkQWNjZXNz b3JFeHByIC0gcmVwcmVzZW50cyBhIHNpbmdsZSBvYmplY3QgbWVtYmVyIGFjY2VzcyB1c2luZyBk b3Qtbm90YXRpb24KKyAqCQlpbiBKU09OIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4IChlLmcu LCBqc29uYl9jb2wuYSkuCisgKgorICogVGhlc2Ugbm9kZXMgYXBwZWFyIGFzIGxpc3QgZWxlbWVu dHMgaW4gU3Vic2NyaXB0aW5nUmVmLnJlZnVwcGVyaW5kZXhwciB0bworICogaW5kaWNhdGUgSlNP TiBvYmplY3Qga2V5IGFjY2Vzcy4gVGhleSBhcmUgbm90IGV2YWx1YWJsZSBleHByZXNzaW9ucyBi eQorICogdGhlbXNlbHZlcyBidXQgc2VydmUgYXMgcGxhY2Vob2xkZXJzIHRvIHByZXNlcnZlIHNv dXJjZS1sZXZlbCBzeW50YXggZm9yCisgKiBydWxlIHJld3JpdGluZyBhbmQgZGVwYXJzaW5nIChl LmcuLCBpbiBFWFBMQUlOIGFuZCB2aWV3IGRlZmluaXRpb25zKS4KKyAqIEV4ZWN1dGlvbiBpcyBo YW5kbGVkIGJ5IHRoZSBlbmNsb3NpbmcgU3Vic2NyaXB0aW5nUmVmLgorICoKKyAqIElmIGRvdC1u b3RhdGlvbiBpcyB1c2VkIGluIGEgU3Vic2NyaXB0aW5nUmVmLCB0aGUgSlNPTiBwYXRoIGlzIHJl cHJlc2VudGVkCisgKiBhcyBhIGZsYXQgbGlzdCBvZiBGaWVsZEFjY2Vzc29yRXhwciBub2RlcyAo Zm9yIG9iamVjdCBmaWVsZCBhY2Nlc3MpLCBDb25zdAorICogbm9kZXMgKGZvciBhcnJheSBpbmRl eGVzKSwgYW5kIE5VTExzIChmb3Igb21pdHRlZCBzbGljZSBib3VuZHMpLCByYXRoZXIgdGhhbgor ICogdGhyb3VnaCBuZXN0ZWQgZXhwcmVzc2lvbiB0cmVlcy4KKyAqCisgKiBOb3RlOiBUaGUgZmxh dCByZXByZXNlbnRhdGlvbiBhdm9pZHMgbmVzdGVkIEZpZWxkQWNjZXNzb3JFeHByIGNoYWlucywK KyAqIHNpbXBsaWZ5aW5nIGV2YWx1YXRpb24gYW5kIGVuYWJsaW5nIHN0YW5kYXJkLWNvbXBsaWFu dCBiZWhhdmlvciBzdWNoIGFzCisgKiBjb25kaXRpb25hbCBhcnJheSB3cmFwcGluZy4gVGhpcyBh dm9pZHMgdGhlIG5lZWQgZm9yIHBvc2l0aW9uLWF3YXJlCisgKiB3cmFwcGluZy91bndyYXBwaW5n IGxvZ2ljIGR1cmluZyBleGVjdXRpb24uCisgKgorICogRm9yIGV4YW1wbGUsIGluIHRoZSBleHBy ZXNzaW9uOgorICoJCSgneyJhIjogW3siYiI6IDF9XX0nOjpqc29uYikuYVswXS5iCisgKiB0aGUg U3Vic2NyaXB0aW5nUmVmIHdpbGwgY29udGFpbjoKKyAqCQktIHJlZmV4cHI6IHRoZSBiYXNlIGV4 cHJlc3Npb24gKHRoZSBqc29uYiB2YWx1ZSkKKyAqCQktIHJlZnVwcGVyaW5kZXhwcjogW0ZpZWxk QWNjZXNzb3JFeHByKCJhIiksIENvbnN0KDApLAorICoJCQlGaWVsZEFjY2Vzc29yRXhwcigiYiIp XQorICoJCS0gcmVmbG93ZXJpbmRleHByOiBbTlVMTCwgTlVMTCwgTlVMTF0gKHNsaWNlIGxvd2Vy IGJvdW5kcyBub3QgdXNlZCBoZXJlKQorICovCit0eXBlZGVmIHN0cnVjdCBGaWVsZEFjY2Vzc29y RXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkgICAqZmllbGRuYW1lOwkJLyogbmFtZSBv ZiB0aGUgSlNPTkIgb2JqZWN0IGZpZWxkIGFjY2Vzc2VkIHZpYQorCQkJCQkJCQkgKiBkb3Qgbm90 YXRpb24gKi8KKwlPaWQJCQlmYWVjb2xsaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25v cmUpOworfSBGaWVsZEFjY2Vzc29yRXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RFU19I ICovCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNx bGpzb24uYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5j CmluZGV4IDM5MjIxZjllYTVkLi5lNmE3ZWNlNmRhYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFj ZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMKKysrIGIvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMKQEAgLTQxNywxMiArNDE3LDEyMiBAQCBp ZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQogCSAgZm9yIChpbnQgaSA9IDA7IGkg PCBzaXplb2YoaXNfanNvbik7IGkrKykKIAkJICBwcmludGYoIkZvdW5kIGlzX2pzb25bJWRdOiAl c1xuIiwgaSwgaXNfanNvbltpXSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCi0gIHsgRUNQR2Rpc2Nv bm5lY3QoX19MSU5FX18sICJDVVJSRU5UIik7CisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5V TEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAx LCBcImNcIjogMn19JyA6OiBqc29uYiApIC4gXCJhXCIgKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0 X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlF Q1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKICNsaW5l IDExOCAic3FsanNvbi5wZ2MiCiAKIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9 CiAjbGluZSAxMTggInNxbGpzb24ucGdjIgogCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBq c29uKTsKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFs LCAic2VsZWN0IGpzb24gKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfX0nIDo6IGpzb25i IC4gXCJhXCIgKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQs KGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwg LCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDEyMSAic3FsanNvbi5wZ2MiCisKK2lm IChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMjEgInNxbGpzb24ucGdj IgorCisJLy8gZXJyb3IKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BH c3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9 fScgOjoganNvbmIgKSAuIGEgKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChs b25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FU T1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDEyNCAic3FsanNvbi5w Z2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMjQgInNx bGpzb24ucGdjIgorCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCXsgRUNQ R2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24g KCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9fScgOjoganNvbmIgKSAuIGEgLiBiICki LCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEw MjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAw TCwgRUNQR3RfRU9SVCk7CisjbGluZSAxMjcgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3Fs Y29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTI3ICJzcWxqc29uLnBnYyIKKworCXByaW50 ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwg TlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggY29hbGVzY2UgKCBqc29uICgg KCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfX0nIDo6IGpzb25iICkgLiBjICkgLCAnbnVs bCcgKSApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiksKGxvbmcpMTAyNCwobG9u ZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElDQVRPUiwgTlVMTCAsIDBM LCAwTCwgMEwsIEVDUEd0X0VPUlQpOworI2xpbmUgMTMwICJzcWxqc29uLnBnYyIKKworaWYgKHNx bGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDEzMCAic3FsanNvbi5wZ2MiCisK KwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJeyBFQ1BHZG8oX19MSU5FX18s IDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjog e1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtc InlcIjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgMCBdICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BH dF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJ RUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGlu ZSAxMzMgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7 fQorI2xpbmUgMTMzICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwg anNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1h bCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6 IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIg LiB4ICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25n KTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEws IDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxMzYgInNxbGpzb24ucGdjIgorCitpZiAoc3Fs Y2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTM2ICJzcWxqc29uLnBnYyIKKwor CXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywg MCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7 XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wi eVwiOjF9XX1dfScgOjoganNvbmIgKSBbICdiJyBdIFsgMCBdICkiLCBFQ1BHdF9FT0lULCAKKwlF Q1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwg CisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7Cisj bGluZSAxMzkgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50 KCk7fQorI2xpbmUgMTM5ICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0lc1xu IiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25v cm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJi XCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAu IGIgWyAxIF0gLiB4IFsgMCA6IF0gKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24p LChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJ Q0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDE0MiAic3FsanNv bi5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxNDIg InNxbGpzb24ucGdjIgorCisJLy8gZXJyb3IKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBO VUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjog MSwgXCJjXCI6IDJ9LCBcImJcIjogW3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6MX1d fV19JyA6OiBqc29uYiApIC4gKiApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiks KGxvbmcpMTAyNCwobG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElD QVRPUiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOworI2xpbmUgMTQ1ICJzcWxqc29u LnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDE0NSAi c3FsanNvbi5wZ2MiCisKKwkvLyBlcnJvcgorCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5V TEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAx LCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjoxfV19 XX0nIDo6IGpzb25iICkgWyAnYicgXSBbIDAgOiBdICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9j aGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQ R3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAx NDggInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQor I2xpbmUgMTQ4ICJzcWxqc29uLnBnYyIKKworCS8vIGVycm9yCisKKyAgeyBFQ1BHZGlzY29ubmVj dChfX0xJTkVfXywgIkNVUlJFTlQiKTsKKyNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCisKK2lmIChz cWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxNTEgInNxbGpzb24ucGdjIgor CiAKICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv ZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3RkZXJyIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4 cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVycgppbmRleCBlNTVhOTVkZDcxMS4uMTlmOGM1OGFmMDYg MTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNv bi5zdGRlcnIKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxq c29uLnN0ZGVycgpAQCAtMjY4LDUgKzI2OCwxMDUgQEAgU1FMIGVycm9yOiBjYW5ub3QgdXNlIHR5 cGUganNvbmIgaW4gUkVUVVJOSU5HIGNsYXVzZSBvZiBKU09OX1NFUklBTElaRSgpIG9uIGxpbmUK IFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCiBbTk9fUElEXTogZWNwZ19n ZXRfZGF0YSBvbiBsaW5lIDEwMjogUkVTVUxUOiBmIG9mZnNldDogLTE7IGFycmF5OiBubwogW05P X1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1 dGUgb24gbGluZSAxMTg6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJj IjogMn19JyA6OiBqc29uYiApIC4gImEiICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVj dGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAw MDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDExODogdXNpbmcgUFFleGVjCitb Tk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJv Y2Vzc19vdXRwdXQgb24gbGluZSAxMTg6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZp ZWxkcworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBl Y3BnX2dldF9kYXRhIG9uIGxpbmUgMTE4OiBSRVNVTFQ6IHsiYiI6IDEsICJjIjogMn0gb2Zmc2V0 OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAor W05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyMTogcXVlcnk6IHNlbGVjdCBqc29uICgg J3siYSI6IHsiYiI6IDEsICJjIjogMn19JyA6OiBqc29uYiAuICJhIiApOyB3aXRoIDAgcGFyYW1l dGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMjE6 IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tO T19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTIxOiBiYWQgcmVzcG9uc2UgLSBF UlJPUjogIHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IHNlbGVjdCBqc29u ICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn19JyA6OiBqc29uYiAuICJhIiApCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElEXTogc3Fs Y2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3RhdGUgM0Yw MDAgKHNxbGNvZGUgLTQwMCk6IHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0IG9uIGxpbmUg MTIxCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiAzRjAwMAorU1FMIGVycm9y OiBzY2hlbWEgImpzb25iIiBkb2VzIG5vdCBleGlzdCBvbiBsaW5lIDEyMQorW05PX1BJRF06IGVj cGdfZXhlY3V0ZSBvbiBsaW5lIDEyNDogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJi IjogMSwgImMiOiAyfX0nIDo6IGpzb25iICkgLiBhICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24g Y29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0 YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyNDogdXNpbmcgUFFl eGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVj cGdfcHJvY2Vzc19vdXRwdXQgb24gbGluZSAxMjQ6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0 aCAxIGZpZWxkcworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19Q SURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTI0OiBSRVNVTFQ6IHsiYiI6IDEsICJjIjogMn0g b2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAw MDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyNzogcXVlcnk6IHNlbGVjdCBq c29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfX0nIDo6IGpzb25iICkgLiBhIC4gYiApOyB3 aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJ RF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUg b24gbGluZSAxMjc6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0 ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTI3OiBjb3Jy ZWN0bHkgZ290IDEgdHVwbGVzIHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTog MCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDEyNzogUkVT VUxUOiAxIG9mZnNldDogLTE7IGFycmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBz dGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzA6IHF1ZXJ5OiBz ZWxlY3QganNvbiAoIGNvYWxlc2NlICgganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn19 JyA6OiBqc29uYiApIC4gYyApICwgJ251bGwnICkgKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBj b25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3Rh dGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTMwOiB1c2luZyBQUWV4 ZWMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNw Z19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDEzMDogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRo IDEgZmllbGRzCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJ RF06IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAxMzA6IFJFU1VMVDogbnVsbCBvZmZzZXQ6IC0xOyBh cnJheTogbm8KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElE XTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTMzOiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEi OiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1d fScgOjoganNvbmIgKSAuIGIgWyAwIF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0 aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAw MDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTMzOiB1c2luZyBQUWV4ZWMKK1tO T19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19wcm9j ZXNzX291dHB1dCBvbiBsaW5lIDEzMzogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEgZmll bGRzCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVj cGdfZ2V0X2RhdGEgb24gbGluZSAxMzM6IFJFU1VMVDogeyJ4IjogMX0gb2Zmc2V0OiAtMTsgYXJy YXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06 IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEzNjogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjog eyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0n IDo6IGpzb25iICkgLiBiIC4geCApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24g ZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAK K1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzY6IHVzaW5nIFBRZXhlYworW05PX1BJ RF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nlc3Nf b3V0cHV0IG9uIGxpbmUgMTM2OiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGggMSBmaWVsZHMK K1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19n ZXRfZGF0YSBvbiBsaW5lIDEzNjogUkVTVUxUOiBbMSwgWzEyLCB7InkiOiAxfV1dIG9mZnNldDog LTE7IGFycmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tO T19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzk6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICgg J3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6 MX1dfV19JyA6OiBqc29uYiApIFsgJ2InIF0gWyAwIF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBv biBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwg c3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTM5OiB1c2luZyBQ UWV4ZWMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTog ZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDEzOTogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3 aXRoIDEgZmllbGRzCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05P X1BJRF06IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAxMzk6IFJFU1VMVDogeyJ4IjogMX0gb2Zmc2V0 OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAor W05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0MjogcXVlcnk6IHNlbGVjdCBqc29uICgg KCAneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5 IjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgMSBdIC4geCBbIDAgOiBdICk7IHdpdGggMCBwYXJh bWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6 IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0 MjogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAor W05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24gbGluZSAxNDI6IGJhZCByZXNwb25zZSAt IEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCitMSU5FIDE6 IC4uLiwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyAxIF0gLiB4IFsg MCA6IF0gKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAw CitbTk9fUElEXTogcmFpc2luZyBzcWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIg c3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQyCitbTk9fUElEXTog c3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiA0MjgwNAorU1FMIGVycm9yOiBqc29uYiBzdWJzY3Jp cHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDIKK1tOT19QSURdOiBlY3BnX2V4 ZWN1dGUgb24gbGluZSAxNDU6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEs ICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29u YiApIC4gKiApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVz c2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBl Y3BnX2V4ZWN1dGUgb24gbGluZSAxNDU6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0IG9uIGxp bmUgMTQ1OiBiYWQgcmVzcG9uc2UgLSBFUlJPUjogIHJvdyBleHBhbnNpb24gdmlhICIqIiBpcyBu b3Qgc3VwcG9ydGVkIGhlcmUKK0xJTkUgMTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIiOiAx LCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4Li4uCisgICAgICAgICAgICAgICAgICAgICAg ICBeCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJh aXNpbmcgc3Fsc3RhdGUgMEEwMDAgKHNxbGNvZGUgLTQwMCk6IHJvdyBleHBhbnNpb24gdmlhICIq IiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUgb24gbGluZSAxNDUKK1tOT19QSURdOiBzcWxjYTogY29k ZTogLTQwMCwgc3RhdGU6IDBBMDAwCitTUUwgZXJyb3I6IHJvdyBleHBhbnNpb24gdmlhICIqIiBp cyBub3Qgc3VwcG9ydGVkIGhlcmUgb24gbGluZSAxNDUKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUg b24gbGluZSAxNDg6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjog Mn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIFsg J2InIF0gWyAwIDogXSApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFf cmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19Q SURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNDg6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNx bGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0 IG9uIGxpbmUgMTQ4OiBiYWQgcmVzcG9uc2UgLSBFUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2Vz IG5vdCBzdXBwb3J0IHNsaWNlcworTElORSAxOiAuLi54IjogMX0sIHsieCI6IFsxMiwgeyJ5Ijox fV19XX0nIDo6IGpzb25iICkgWyAnYicgXSBbIDAgOiBdICkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElEXTog c3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3RhdGUg NDI4MDQgKHNxbGNvZGUgLTQwMCk6IGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNs aWNlcyBvbiBsaW5lIDE0OAorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAtNDAwLCBzdGF0ZTogNDI4 MDQKK1NRTCBlcnJvcjoganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9u IGxpbmUgMTQ4CiBbTk9fUElEXTogZWNwZ19maW5pc2g6IGNvbm5lY3Rpb24gZWNwZzFfcmVncmVz c2lvbiBjbG9zZWQKIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCmRpZmYg LS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rk b3V0IGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZG91 dAppbmRleCA4M2Y4ZGYxM2U1YS4uNDQyZDM2OTMxZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRvdXQKKysrIGIvc3JjL2ludGVy ZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZG91dApAQCAtMjgsMyArMjgs MTAgQEAgRm91bmQgaXNfanNvbls0XTogZmFsc2UKIEZvdW5kIGlzX2pzb25bNV06IGZhbHNlCiBG b3VuZCBpc19qc29uWzZdOiB0cnVlCiBGb3VuZCBpc19qc29uWzddOiBmYWxzZQorRm91bmQganNv bj17ImIiOiAxLCAiYyI6IDJ9CitGb3VuZCBqc29uPXsiYiI6IDEsICJjIjogMn0KK0ZvdW5kIGpz b249MQorRm91bmQganNvbj1udWxsCitGb3VuZCBqc29uPXsieCI6IDF9CitGb3VuZCBqc29uPVsx LCBbMTIsIHsieSI6IDF9XV0KK0ZvdW5kIGpzb249eyJ4IjogMX0KZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5wZ2MgYi9zcmMvaW50ZXJmYWNlcy9lY3Bn L3Rlc3Qvc3FsL3NxbGpzb24ucGdjCmluZGV4IGRkY2JjYzNiM2NiLi41N2E5YmZmNDI0ZCAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9zcWxqc29uLnBnYworKysgYi9z cmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCkBAIC0xMTUsNiArMTE1LDM5 IEBAIEVYRUMgU1FMIEVORCBERUNMQVJFIFNFQ1RJT047CiAJICBmb3IgKGludCBpID0gMDsgaSA8 IHNpemVvZihpc19qc29uKTsgaSsrKQogCQkgIHByaW50ZigiRm91bmQgaXNfanNvblslZF06ICVz XG4iLCBpLCBpc19qc29uW2ldID8gInRydWUiIDogImZhbHNlIik7CiAKKwlFWEVDIFNRTCBTRUxF Q1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn19Jzo6anNvbmIpLiJhIikgSU5UTyA6anNv bjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VMRUNU IEpTT04oJ3siYSI6IHsiYiI6IDEsICJjIjogMn19Jzo6anNvbmIuImEiKSBJTlRPIDpqc29uOwor CS8vIGVycm9yCisKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjog Mn19Jzo6anNvbmIpLmEpIElOVE8gOmpzb247CisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBq c29uKTsKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfX0n Ojpqc29uYikuYS5iKSBJTlRPIDpqc29uOworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNv bik7CisKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTihDT0FMRVNDRShKU09OKCgneyJhIjogeyJiIjog MSwgImMiOiAyfX0nOjpqc29uYikuYyksICdudWxsJykpIElOVE8gOmpzb247CisJcHJpbnRmKCJG b3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjog eyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0n Ojpqc29uYikuYlswXSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpz b24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAi YiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKS5iLngpIElOVE8g Ompzb247CisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNF TEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6 IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYilbJ2InXVswXSkgSU5UTyA6anNvbjsKKwlwcmludGYo IkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEi OiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1d fSc6Ompzb25iKS5iWzFdLnhbMDpdKSBJTlRPIDpqc29uOworCS8vIGVycm9yCisKKwlFWEVDIFNR TCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7 IngiOiBbMTIsIHsieSI6MX1dfV19Jzo6anNvbmIpLiopIElOVE8gOmpzb247CisJLy8gZXJyb3IK KworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBb eyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYilbJ2InXVswOl0pIElOVE8g Ompzb247CisJLy8gZXJyb3IKKwogICBFWEVDIFNRTCBESVNDT05ORUNUOwogCiAgIHJldHVybiAw OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCBmYjQ3YzhhODkzYS4uMDk0N2Y4 MzZkZTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC00OTg5LDYgKzQ5ODks MTIgQEAgc2VsZWN0ICgnMTIzJzo6anNvbmIpWydhJ107CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAo JzEyMyc6Ompzb25iKS5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnMTIzJzo6 anNvbmIpWzBdOwogIGpzb25iIAogLS0tLS0tLQpAQCAtNTAwMSwxMiArNTAwNywyNCBAQCBzZWxl Y3QgKCcxMjMnOjpqc29uYilbTlVMTF07CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJzEyMyc6Ompz b25iKS5OVUxMOworIG51bGwgCistLS0tLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjog MX0nOjpqc29uYilbJ2EnXTsKICBqc29uYiAKIC0tLS0tLS0KICAxCiAoMSByb3cpCiAKK3NlbGVj dCAoJ3siYSI6IDF9Jzo6anNvbmIpLmE7CisgYSAKKy0tLQorIDEKKygxIHJvdykKKwogc2VsZWN0 ICgneyJhIjogMX0nOjpqc29uYilbMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDE5LDYgKzUw MzcsMTIgQEAgc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ25vdF9leGlzdCddOwogIAogKDEg cm93KQogCitzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKS4ibm90X2V4aXN0IjsKKyBub3RfZXhp c3QgCistLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25i KVtOVUxMXTsKICBqc29uYiAKIC0tLS0tLS0KQEAgLTUwMzEsNiArNTA1NSwxMiBAQCBzZWxlY3Qg KCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsnYSddOwogIAogKDEgcm93KQogCitzZWxlY3QgKCdb MSwgIjIiLCBudWxsXSc6Ompzb25iKS5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0 ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDQz LDYgKzUwNzMsMTIgQEAgc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbJzEnXTsKICAi MiIKICgxIHJvdykKIAorc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuIjEiOworIDEg CistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMS4w XTsKIEVSUk9SOiAgc3Vic2NyaXB0IHR5cGUgbnVtZXJpYyBpcyBub3Qgc3VwcG9ydGVkCiBMSU5F IDE6IHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzEuMF07CkBAIC01MDcyLDYgKzUx MDgsMTIgQEAgc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV1bJ2EnXTsKICAKICgx IHJvdykKIAorc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV0uYTsKKyBhIAorLS0t CisgCisoMSByb3cpCisKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdWzBdOwog IGpzb25iIAogLS0tLS0tLQpAQCAtNTA4NCw1NCArNTEyNiwxMjYgQEAgc2VsZWN0ICgneyJhIjog MSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnYiddOwogICJjIgogKDEgcm93 KQogCitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIp LmI7CisgIGIgIAorLS0tLS0KKyAiYyIKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMSwgImIi OiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddOwogICAganNvbmIgICAKIC0tLS0t LS0tLS0tCiAgWzEsIDIsIDNdCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMi LCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZDsKKyAgICAgZCAgICAgCistLS0tLS0tLS0tLQor IFsxLCAyLCAzXQorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBb MSwgMiwgM119Jzo6anNvbmIpWydkJ11bMV07CiAganNvbmIgCiAtLS0tLS0tCiAgMgogKDEgcm93 KQogCitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIp LmRbMV07CisgZCAKKy0tLQorIDIKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAi YyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddWydhJ107CiAganNvbmIgCiAtLS0tLS0t CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAz XX0nOjpqc29uYikuZFsnYSddOworIGQgCistLS0KKyAKKygxIHJvdykKKworc2VsZWN0ICgneyJh IjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kLmE7CisgYSAKKy0tLQor IAorKDEgcm93KQorCitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiB7ImEiOiBbMSwg MiwgM119fSc6Ompzb25iKS5kWydhJ11bMF07CisgZCAKKy0tLQorIDEKKygxIHJvdykKKworc2Vs ZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogeyJhIjogWzEsIDIsIDNdfX0nOjpqc29uYiku ZC5hWzBdOworIGEgCistLS0KKyAxCisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IHsiYTEiOiB7 ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYilbJ2EnXVsnYTEn XTsKICAgICAganNvbmIgICAgIAogLS0tLS0tLS0tLS0tLS0tCiAgeyJhMiI6ICJhYWEifQogKDEg cm93KQogCitzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIs ICJjIjogImNjYyJ9Jzo6anNvbmIpLmEuYTE7CisgICAgICBhMSAgICAgICAKKy0tLS0tLS0tLS0t LS0tLQorIHsiYTIiOiAiYWFhIn0KKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsi YTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSdd WydhMiddOwogIGpzb25iIAogLS0tLS0tLQogICJhYWEiCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3si YSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29u YikuYS5hMS5hMjsKKyAgYTIgICAKKy0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCiBzZWxlY3Qg KCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6 anNvbmIpWydhJ11bJ2ExJ11bJ2EyJ11bJ2EzJ107CiAganNvbmIgCiAtLS0tLS0tCiAgCiAoMSBy b3cpCiAKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwg ImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMS5hMi5hMzsKKyBhMyAKKy0tLS0KKyAKKygxIHJvdykK Kwogc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwg ImIiOiAiYmIifSc6Ompzb25iKVsnYSddWzFdWydiMSddOwogICAgICAgICAganNvbmIgICAgICAg ICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgWyJhYWEiLCAiYmJiIiwgImNjYyJdCiAoMSBy b3cpCiAKK3NlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJd fV0sICJiIjogImJiIn0nOjpqc29uYikuYVsxXS5iMTsKKyAgICAgICAgICBiMSAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsiYWFhIiwgImJiYiIsICJjY2MiXQorKDEgcm93 KQorCiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1d LCAiYiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ11bMl07CiAganNvbmIgCiAtLS0tLS0t CiAgImNjYyIKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIs ICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIxWzJdOworICBiMSAg IAorLS0tLS0tLQorICJjY2MiCisoMSByb3cpCisKIC0tIHNsaWNlcyBhcmUgbm90IHN1cHBvcnRl ZAogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107CiBFUlJPUjogIGpzb25iIHN1 YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwpAQCAtNTg0MSw3ICs1OTU1LDcgQEAgc2Vs ZWN0IGpzb25iX3R5cGVvZigneyJhIjoxfSc6Ompzb25iKTsKIHNlbGVjdCAoJ3siYSI6MX0nOjpq c29uYikuanNvbmJfdHlwZW9mOwogIGpzb25iX3R5cGVvZiAKIC0tLS0tLS0tLS0tLS0tCi0gb2Jq ZWN0CisgCiAoMSByb3cpCiAKIHNlbGVjdCBqc29uYl9hcnJheV9sZW5ndGgoJ1siYSIsICJiIiwg ImMiXSc6Ompzb25iKTsKQEAgLTU4NTMsNyArNTk2Nyw3IEBAIHNlbGVjdCBqc29uYl9hcnJheV9s ZW5ndGgoJ1siYSIsICJiIiwgImMiXSc6Ompzb25iKTsKIHNlbGVjdCAoJ1siYSIsICJiIiwgImMi XSc6Ompzb25iKS5qc29uYl9hcnJheV9sZW5ndGg7CiAganNvbmJfYXJyYXlfbGVuZ3RoIAogLS0t LS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAgIDMKKyAKICgxIHJvdykKIAogc2Vs ZWN0IGpzb25iX29iamVjdF9rZXlzKCd7ImEiOjEsICJiIjoyfSc6Ompzb25iKTsKQEAgLTU4NjYs OSArNTk4MCw4IEBAIHNlbGVjdCBqc29uYl9vYmplY3Rfa2V5cygneyJhIjoxLCAiYiI6Mn0nOjpq c29uYik7CiBzZWxlY3QgKCd7ImEiOjEsICJiIjoyfSc6Ompzb25iKS5qc29uYl9vYmplY3Rfa2V5 czsKICBqc29uYl9vYmplY3Rfa2V5cyAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSBhCi0gYgotKDIg cm93cykKKyAKKygxIHJvdykKIAogLS0gY2FzdCBqc29uYiB0byBvdGhlciB0eXBlcyBhcyAoanNv bmIpOjp0eXBlIGFuZCAoanNvbmIpLnR5cGUKIHNlbGVjdCAoJzEyMy40NSc6Ompzb25iKTo6bnVt ZXJpYzsKQEAgLTU4ODAsNyArNTk5Myw3IEBAIHNlbGVjdCAoJzEyMy40NSc6Ompzb25iKTo6bnVt ZXJpYzsKIHNlbGVjdCAoJzEyMy40NSc6Ompzb25iKS5udW1lcmljOwogIG51bWVyaWMgCiAtLS0t LS0tLS0KLSAgMTIzLjQ1CisgCiAoMSByb3cpCiAKIHNlbGVjdCAoJ1t7Im5hbWUiOiAiYWxpY2Ui fSwgeyJuYW1lIjogImJvYiJ9XSc6Ompzb25iKTo6bmFtZTsKQEAgLTU4OTAsOSArNjAwMyw5IEBA IHNlbGVjdCAoJ1t7Im5hbWUiOiAiYWxpY2UifSwgeyJuYW1lIjogImJvYiJ9XSc6Ompzb25iKTo6 bmFtZTsKICgxIHJvdykKIAogc2VsZWN0ICgnW3sibmFtZSI6ICJhbGljZSJ9LCB7Im5hbWUiOiAi Ym9iIn1dJzo6anNvbmIpLm5hbWU7Ci0gICAgICAgICAgICAgICAgIG5hbWUgICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBbeyJuYW1lIjog ImFsaWNlIn0sIHsibmFtZSI6ICJib2IifV0KKyAgICAgICBuYW1lICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tCisgWyJhbGljZSIsICJib2IiXQogKDEgcm93KQogCiBzZWxlY3QgKCd0cnVlJzo6 anNvbmIpOjpib29sOwpAQCAtNTkwNCw3ICs2MDE3LDcgQEAgc2VsZWN0ICgndHJ1ZSc6Ompzb25i KTo6Ym9vbDsKIHNlbGVjdCAoJ3RydWUnOjpqc29uYikuYm9vbDsKICBib29sIAogLS0tLS0tCi0g dAorIAogKDEgcm93KQogCiBzZWxlY3QgKCd7InRleHQiOiAiaGVsbG8ifSc6Ompzb25iKTo6dGV4 dDsKQEAgLTU5MTQsOCArNjAyNywzMTkgQEAgc2VsZWN0ICgneyJ0ZXh0IjogImhlbGxvIn0nOjpq c29uYik6OnRleHQ7CiAoMSByb3cpCiAKIHNlbGVjdCAoJ3sidGV4dCI6ICJoZWxsbyJ9Jzo6anNv bmIpLnRleHQ7Ci0gICAgICAgdGV4dCAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tCi0geyJ0 ZXh0IjogImhlbGxvIn0KKyAgdGV4dCAgIAorLS0tLS0tLS0tCisgImhlbGxvIgorKDEgcm93KQor CistLSBkb3Qgbm90YXRpb24KK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiBB UworU0VMRUNUICd7ImEiOiBbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwg IngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XSwgImIiOiBbMywgNCwgeyJiIjogImciLCAi eCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dfSc6Ompzb25iIGpiOworU0VMRUNUIChqYiku YSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6 IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dCisoMSByb3cpCisKK1NFTEVDVCAoamIpLiJhIiBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBkb3VibGUgcXVvdGUgc2hvdWxkIHdvcmsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMSwgMiwgeyJiIjogImMifSwg eyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XQorKDEg cm93KQorCitTRUxFQ1QgKGpiKS4nYScgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0g c2luZ2xlIHF1b3RlIHNob3VsZCBub3Qgd29yaworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3Ig bmVhciAiJ2EnIgorTElORSAxOiBTRUxFQ1QgKGpiKS4nYScgRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgXgorc2VsZWN0IChqYilbMF0uYSBmcm9tIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIHNhbWUgcmVzdWx0IGFzIChqYikuYQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsxLCAyLCB7ImIiOiAiYyJ9LCB7 ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dCisoMSBy b3cpCisKK3NlbGVjdCAoamIpWzBdWydhJ10gZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsg LS0gcmV0dXJucyBOVUxMCisgamIgCistLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCAoamIpWzFd LmEgZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJucyBOVUxMCisgYSAKKy0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CisgICAgICAgICAgICAgICAgICAgICAgICAgYiAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsz LCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV0KKygxIHJvdykK KworU0VMRUNUIChqYikuYyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworIGMgCistLS0K KyAKKygxIHJvdykKKworU0VMRUNUIChqYikuYS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CisgICAgIGIgICAgICAKKy0tLS0tLS0tLS0tLQorIFsiYyIsICJkIl0KKygxIHJvdykKKwor U0VMRUNUIChqYikuYVsyXS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgIGIgIAor LS0tLS0KKyAiYyIKKygxIHJvdykKKworU0VMRUNUIChqYikuYS54LnkgRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKKyAgIHkgICAKKy0tLS0tLS0KKyAieXl5IgorKDEgcm93KQorCitTRUxF Q1QgKGpiKS5iLngueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgeiAgIAorLS0t LS0tLQorICJaWloiCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEuYi5jIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CisgYyAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKChqYikuYilb Ol0ueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7IC0tIGZhaWxzCitFUlJPUjogIGpz b25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcworU0VMRUNUIChqYikuYS4qIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIGZhaWxzCitFUlJPUjogIHR5cGUganNvbmIg aXMgbm90IGNvbXBvc2l0ZQorLS0gYXNzaWdubWVudCBpcyBub3Qgc3VwcG9ydGVkCitVUERBVEUg dGVzdF9qc29uYl9kb3Rfbm90YXRpb24gU0VUIGpiLmEgPSAnMSc7CitFUlJPUjogIGNhbm5vdCBh c3NpZ24gdG8gZmllbGQgImEiIG9mIGNvbHVtbiAiamIiIGJlY2F1c2UgaXRzIHR5cGUganNvbmIg aXMgbm90IGEgY29tcG9zaXRlIHR5cGUKK0xJTkUgMTogVVBEQVRFIHRlc3RfanNvbmJfZG90X25v dGF0aW9uIFNFVCBqYi5hID0gJzEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK1VQREFURSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiBTRVQgKGpiKS5hID0g JzEnOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiLiIKK0xJTkUgMTogVVBEQVRF IHRlc3RfanNvbmJfZG90X25vdGF0aW9uIFNFVCAoamIpLmEgPSAnMSc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIGV4cGxhaW5zIHNob3VsZCB3 b3JrCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodC5qYikuYSBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQKKyAg IE91dHB1dDogKGpiKS5hCisoMiByb3dzKQorCitTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXki LCAieiI6ICJ6enoifX1dCisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJf ZG90X25vdGF0aW9uCisgICBPdXRwdXQ6IChqYikuYVsxXQorKDIgcm93cykKKworU0VMRUNUIChq YikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworIGEgCistLS0KKyAyCisoMSBy b3cpCisKKy0tIHZpZXdzIHNob3VsZCB3b3JrCitDUkVBVEUgVklFVyB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbl92MSBBUyBTRUxFQ1QgKGpiKS5hWzNdLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFD RSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAoamIp LmFbM10ueC55IEFTIHkKKyAgIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKy0tIG1peGVk IHN5bnRheAorRFJPUCBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYSddLmIgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2Fu IG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiAoamJbJ2EnOjp0 ZXh0XSkuYgorKDIgcm93cykKKworU0VMRUNUIChqYilbJ2EnXS5iIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIHJldHVybnMgYW4gYXJyYXkgZHVlIHRvIGxheCBtb2RlCisgICAgIGIg ICAgICAKKy0tLS0tLS0tLS0tLQorIFsiYyIsICJkIl0KKygxIHJvdykKKworQ1JFQVRFIFZJRVcg cHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsnYSddLmIg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjEgQVMKKyBTRUxFQ1QgKGpiWydhJzo6dGV4dF0pLmIgQVMgYgorICAgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92 MTsKKyAgICAgYiAgICAgIAorLS0tLS0tLS0tLS0tCisgWyJjIiwgImQiXQorKDEgcm93KQorCitE Uk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9u IHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiAoKGpiKS5hKVsnYic6 OnRleHRdCisoMiByb3dzKQorCitTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsgLS0gcmV0dXJucyBOVUxMIGJlY2F1c2UgWydiJ10gbG9va3MgZm9yIHN0cmlj dCBtYXRjaCBpbiBhbiBvYmplY3QKKyBhIAorLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBWSUVX IHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYikuYVsnYidd IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjEKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0 aW9uX3YxIEFTCisgU0VMRUNUICgoamIpLmEpWydiJzo6dGV4dF0gQVMgYQorICAgRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bl92MTsKKyBhIAorLS0tCisgCisoMSByb3cpCisKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29u Yl9kb3Rfbm90YXRpb25fdjE7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAo amIpLmIueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rf bm90YXRpb24KKyAgIE91dHB1dDogKChqYikuYi54KVsneic6OnRleHRdCisoMiByb3dzKQorCitT RUxFQ1QgKGpiKS5iLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSB3YXJu aW5ncworICAgeCAgIAorLS0tLS0tLQorICJaWloiCisoMSByb3cpCisKK0NSRUFURSBWSUVXIHB1 YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYikuYi54Wyd6J10g RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjEgQVMKKyBTRUxFQ1QgKChqYikuYi54KVsneic6OnRleHRdIEFTIHgKKyAgIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb24KK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjE7CisgICB4ICAgCistLS0tLS0tCisgIlpaWiIKKygxIHJvdykKKworRFJPUCBWSUVXIHB1 YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUIChqYilbJ2InXS54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1Ymxp Yy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiAoKGpiWydiJzo6dGV4dF0pLngp Wyd6Jzo6dGV4dF0KKygyIHJvd3MpCisKK1NFTEVDVCAoamIpWydiJ10ueFsneiddIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247ICAtLSB3YXJuaW5ncworICAgeCAgIAorLS0tLS0tLQorICJa WloiCisoMSByb3cpCisKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlv bl92MSBBUworU0VMRUNUIChqYilbJ2InXS54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0Ug VklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKKyBTRUxFQ1QgKChqYlsn Yic6OnRleHRdKS54KVsneic6OnRleHRdIEFTIHgKKyAgIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb24KK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisgICB4ICAg CistLS0tLS0tCisgIlpaWiIKKygxIHJvdykKKworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChq YikuYlsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9u b3RhdGlvbgorICAgT3V0cHV0OiAoKChqYikuYilbJ3gnOjp0ZXh0XSkuegorKDIgcm93cykKKwor U0VMRUNUIChqYikuYlsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0 dXJucyBOVUxMCisgeiAKKy0tLQorIAorKDEgcm93KQorCitDUkVBVEUgVklFVyBwdWJsaWMudGVz dF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmJbJ3gnXS56IEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK0NS RUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFT CisgU0VMRUNUICgoKGpiKS5iKVsneCc6OnRleHRdKS56IEFTIHoKKyAgIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb24KK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7 CisgeiAKKy0tLQorIAorKDEgcm93KQorCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90 X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5i Wyd4J11bJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25v dGF0aW9uCisgICBPdXRwdXQ6ICgoamIpLmIpWyd4Jzo6dGV4dF1bJ3onOjp0ZXh0XQorKDIgcm93 cykKKworU0VMRUNUIChqYikuYlsneCddWyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsgLS0gcmV0dXJucyBOVUxMCisgYiAKKy0tLQorIAorKDEgcm93KQorCitDUkVBVEUgVklFVyBw dWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmJbJ3gnXVsn eiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90 YXRpb25fdjEKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25v dGF0aW9uX3YxIEFTCisgU0VMRUNUICgoamIpLmIpWyd4Jzo6dGV4dF1bJ3onOjp0ZXh0XSBBUyBi CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxOworIGIgCistLS0KKyAKKygxIHJvdykKKworRFJPUCBWSUVXIHB1 YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikgU0VMRUNUIChqYilbJ2InXVsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1Ymxp Yy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiAoamJbJ2InOjp0ZXh0XVsneCc6 OnRleHRdKS56CisoMiByb3dzKQorCitTRUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIE5VTEwKKyB6IAorLS0tCisgCisoMSByb3cp CisKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VM RUNUIChqYilbJ2InXVsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMu dGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKKyBTRUxFQ1QgKGpiWydiJzo6dGV4dF1bJ3gn Ojp0ZXh0XSkueiBBUyB6CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxFQ1Qg KiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworIHogCistLS0KKyAKICgxIHJvdykK IAorRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKy0tIGNsZWFu IHVwCitEUk9QIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIu c3FsCmluZGV4IDk3MGVkMWNmZmNhLi5iZDg5Njc4YzcxOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNx bApAQCAtMTMwNCwzMCArMTMwNCw0OSBAQCBzZWxlY3QganNvbmJfaW5zZXJ0KCd7ImEiOiB7ImIi OiAidmFsdWUifX0nLCAne2EsIGJ9JywgJyJuZXdfdmFsdWUiJywgdHJ1ZSk7CiAKIC0tIGpzb25i IHN1YnNjcmlwdAogc2VsZWN0ICgnMTIzJzo6anNvbmIpWydhJ107CitzZWxlY3QgKCcxMjMnOjpq c29uYikuYTsKIHNlbGVjdCAoJzEyMyc6Ompzb25iKVswXTsKIHNlbGVjdCAoJzEyMyc6Ompzb25i KVtOVUxMXTsKK3NlbGVjdCAoJzEyMyc6Ompzb25iKS5OVUxMOwogc2VsZWN0ICgneyJhIjogMX0n Ojpqc29uYilbJ2EnXTsKK3NlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpLmE7CiBzZWxlY3QgKCd7 ImEiOiAxfSc6Ompzb25iKVswXTsKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWydub3RfZXhp c3QnXTsKK3NlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpLiJub3RfZXhpc3QiOwogc2VsZWN0ICgn eyJhIjogMX0nOjpqc29uYilbTlVMTF07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25i KVsnYSddOworc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuYTsKIHNlbGVjdCAoJ1sx LCAiMiIsIG51bGxdJzo6anNvbmIpWzBdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29u YilbJzEnXTsKK3NlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpLiIxIjsKIHNlbGVjdCAo J1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzEuMF07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6 Ompzb25iKVsyXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzNdOwogc2VsZWN0 ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbLTJdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0n Ojpqc29uYilbMV1bJ2EnXTsKK3NlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdLmE7 CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxXVswXTsKIHNlbGVjdCAoJ3siYSI6 IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2InXTsKK3NlbGVjdCAoJ3si YSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuYjsKIHNlbGVjdCAoJ3si YSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2QnXTsKK3NlbGVjdCAo J3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZDsKIHNlbGVjdCAo J3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2QnXVsxXTsKK3Nl bGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZFsxXTsK IHNlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2Qn XVsnYSddOworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompz b25iKS5kWydhJ107CitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119 Jzo6anNvbmIpLmQuYTsKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IHsiYSI6IFsx LCAyLCAzXX19Jzo6anNvbmIpLmRbJ2EnXVswXTsKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMi LCAiZCI6IHsiYSI6IFsxLCAyLCAzXX19Jzo6anNvbmIpLmQuYVswXTsKIHNlbGVjdCAoJ3siYSI6 IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYilb J2EnXVsnYTEnXTsKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAi YmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMTsKIHNlbGVjdCAoJ3siYSI6IHsiYTEiOiB7 ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYilbJ2EnXVsnYTEn XVsnYTInXTsKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJi IiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMS5hMjsKIHNlbGVjdCAoJ3siYSI6IHsiYTEiOiB7 ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYilbJ2EnXVsnYTEn XVsnYTInXVsnYTMnXTsKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIi OiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMS5hMi5hMzsKIHNlbGVjdCAoJ3siYSI6 IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpqc29u YilbJ2EnXVsxXVsnYjEnXTsKK3NlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAi YmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpqc29uYikuYVsxXS5iMTsKIHNlbGVjdCAoJ3si YSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpq c29uYilbJ2EnXVsxXVsnYjEnXVsyXTsKK3NlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJh YWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpqc29uYikuYVsxXS5iMVsyXTsKIAog LS0gc2xpY2VzIGFyZSBub3Qgc3VwcG9ydGVkCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsn YSc6J2InXTsKQEAgLTE2MDgsMyArMTYyNyw5OSBAQCBzZWxlY3QgKCd0cnVlJzo6anNvbmIpOjpi b29sOwogc2VsZWN0ICgndHJ1ZSc6Ompzb25iKS5ib29sOwogc2VsZWN0ICgneyJ0ZXh0IjogImhl bGxvIn0nOjpqc29uYik6OnRleHQ7CiBzZWxlY3QgKCd7InRleHQiOiAiaGVsbG8ifSc6Ompzb25i KS50ZXh0OworCistLSBkb3Qgbm90YXRpb24KK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbiBBUworU0VMRUNUICd7ImEiOiBbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAi ZSI6ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XSwgImIiOiBbMywgNCwgeyJi IjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dfSc6Ompzb25iIGpiOworCitT RUxFQ1QgKGpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4i YSIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gZG91YmxlIHF1b3RlIHNob3VsZCB3 b3JrCitTRUxFQ1QgKGpiKS4nYScgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gc2lu Z2xlIHF1b3RlIHNob3VsZCBub3Qgd29yaworc2VsZWN0IChqYilbMF0uYSBmcm9tIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIHNhbWUgcmVzdWx0IGFzIChqYikuYQorc2VsZWN0 IChqYilbMF1bJ2EnXSBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIE5V TEwKK3NlbGVjdCAoamIpWzFdLmEgZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0 dXJucyBOVUxMCitTRUxFQ1QgKGpiKS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitT RUxFQ1QgKGpiKS5jIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5h LmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbMl0uYiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS54LnkgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmIueC56IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CitTRUxFQ1QgKGpiKS5hLmIuYyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OyAt LSBmYWlscworU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0t IGZhaWxzCisKKy0tIGFzc2lnbm1lbnQgaXMgbm90IHN1cHBvcnRlZAorVVBEQVRFIHRlc3RfanNv bmJfZG90X25vdGF0aW9uIFNFVCBqYi5hID0gJzEnOworVVBEQVRFIHRlc3RfanNvbmJfZG90X25v dGF0aW9uIFNFVCAoamIpLmEgPSAnMSc7CisKKy0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodC5qYikuYSBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbiB0OworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hWzFdIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247CisKKy0tIHZpZXdzIHNob3VsZCB3b3JrCitDUkVBVEUgVklFVyB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUyBTRUxFQ1QgKGpiKS5hWzNdLngueSBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCisK Ky0tIG1peGVkIHN5bnRheAorRFJPUCBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOwor CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpWydhJ10uYiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYilbJ2EnXS5iIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgYW4gYXJyYXkgZHVlIHRvIGxheCBtb2RlCitDUkVB VEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIp WydhJ10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90 X25vdGF0aW9uX3YxCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOwor RFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbJ2InXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOyAtLSByZXR1cm5zIE5VTEwgYmVjYXVzZSBbJ2InXSBsb29rcyBmb3Igc3RyaWN0IG1hdGNo IGluIGFuIG9iamVjdAorQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9u X3YxIEFTCitTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MTsKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjE7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYi54Wyd6 J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmIueFsneiddIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHdhcm5pbmdzCitDUkVBVEUgVklFVyBwdWJs aWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmIueFsneiddIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25f djEKK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitEUk9QIFZJRVcg cHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAoamIpWydiJ10ueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CitTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOyAgLS0gd2FybmluZ3MKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MSBBUworU0VMRUNUIChqYilbJ2InXS54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb25fdjE7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChq YikuYlsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmJb J3gnXS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVMTAorQ1JF QVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpi KS5iWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJf ZG90X25vdGF0aW9uX3YxCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3Yx OworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5iWyd4J11bJ3onXSBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYlsneCddWyd6J10gRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJucyBOVUxMCitDUkVBVEUgVklFVyBwdWJsaWMudGVz dF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmJbJ3gnXVsneiddIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEK K1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitEUk9QIFZJRVcgcHVi bGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoamIpWydiJ11bJ3gnXS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CitTRUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OyAtLSByZXR1cm5zIE5VTEwKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MSBBUworU0VMRUNUIChqYilbJ2InXVsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb25fdjE7CisKKy0tIGNsZWFuIHVwCitEUk9QIFRBQkxFIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAzYzgwZDQ5YjY3ZS4uOTY1 Y2FjMjFkODQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cisr KyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC04MDUsNiArODA1LDcgQEAg RmR3Um91dGluZQogRmV0Y2hEaXJlY3Rpb24KIEZldGNoRGlyZWN0aW9uS2V5d29yZHMKIEZldGNo U3RtdAorRmllbGRBY2Nlc3NvckV4cHIKIEZpZWxkU2VsZWN0CiBGaWVsZFN0b3JlCiBGaWxlCi0t IAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000000af497063f81a8e7 Content-Type: application/octet-stream; name="v22-0004-Extract-coerce_jsonpath_subscript.patch" Content-Disposition: attachment; filename="v22-0004-Extract-coerce_jsonpath_subscript.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfxa830o2 RnJvbSAxNDY3NzQ0YjIzNzc1NjI0ZjI3MDMxYTZiYzhiNzFmMzNiZDFjMjcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MjIgNC81XSBFeHRyYWN0IGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQoKQoKVGhpcyBp cyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGEgZnV0dXJlIGNvbW1pdCB0aGF0IHdpbGwgcmV1c2Ug dGhlCmFmb3JlbWVudGlvbmVkIGZ1bmN0aW9uLgoKQ28tYXV0aG9yZWQtYnk6IE5pa2l0YSBHbHVr aG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbGV4YW5kcmEgV2Fu ZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5z dGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEg PG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4udW5p dmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0Bn bWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIHwgMTI4ICsr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY0IGluc2VydGlv bnMoKyksIDY0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYnN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYwppbmRleCBi NDgyNGQ0NmE1Yi4uNTc1NzMzNGY0ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYnN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMKQEAg LTMyLDYgKzMyLDY5IEBAIHR5cGVkZWYgc3RydWN0IEpzb25iU3ViV29ya3NwYWNlCiAJRGF0dW0J ICAgKmluZGV4OwkJCS8qIFN1YnNjcmlwdCB2YWx1ZXMgaW4gRGF0dW0gZm9ybWF0ICovCiB9IEpz b25iU3ViV29ya3NwYWNlOwogCitzdGF0aWMgTm9kZSAqCitjb2VyY2VfanNvbnBhdGhfc3Vic2Ny aXB0X3RvX2ludDRfb3JfdGV4dChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnN1YkV4cHIpCit7 CisJT2lkCQkJc3ViRXhwclR5cGUgPSBleHByVHlwZShzdWJFeHByKTsKKwlPaWQJCQl0YXJnZXRU eXBlID0gSW52YWxpZE9pZDsKKworCWlmIChzdWJFeHByVHlwZSAhPSBVTktOT1dOT0lEKQorCXsK KwkJY29uc3QgT2lkCXRhcmdldHNbXSA9IHtJTlQ0T0lELCBURVhUT0lEfTsKKworCQkvKgorCQkg KiBKc29uYiBjYW4gaGFuZGxlIG11bHRpcGxlIHN1YnNjcmlwdCB0eXBlcywgYnV0IGNhc2VzIHdo ZW4gYQorCQkgKiBzdWJzY3JpcHQgY291bGQgYmUgY29lcmNlZCB0byBtdWx0aXBsZSB0YXJnZXQg dHlwZXMgbXVzdCBiZQorCQkgKiBhdm9pZGVkLCBzaW1pbGFyIHRvIG92ZXJsb2FkZWQgZnVuY3Rp b25zLiBJdCBjb3VsZCBiZSBwb3NzaWJseQorCQkgKiBleHRlbmQgd2l0aCBqc29ucGF0aCBpbiB0 aGUgZnV0dXJlLgorCQkgKi8KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGhvZih0YXJnZXRz KTsgaSsrKQorCQl7CisJCQlpZiAoY2FuX2NvZXJjZV90eXBlKDEsICZzdWJFeHByVHlwZSwgJnRh cmdldHNbaV0sIENPRVJDSU9OX0lNUExJQ0lUKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE9uZSB0 eXBlIGhhcyBhbHJlYWR5IHN1Y2NlZWRlZCwgaXQgbWVhbnMgdGhlcmUgYXJlIHR3bworCQkJCSAq IGNvZXJjaW9uIHRhcmdldHMgcG9zc2libGUsIGZhaWx1cmUuCisJCQkJICovCisJCQkJaWYgKE9p ZElzVmFsaWQodGFyZ2V0VHlwZSkpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkJIGVycm1zZygic3Vic2NyaXB0 IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZvcm1hdF90eXBlX2JlKHN1YkV4cHJUeXBlKSks CisJCQkJCQkJIGVycmhpbnQoImpzb25iIHN1YnNjcmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBv bmx5IG9uZSB0eXBlLCBpbnRlZ2VyIG9yIHRleHQuIiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKworCQkJCXRhcmdldFR5cGUg PSB0YXJnZXRzW2ldOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogTm8gc3VpdGFibGUgdHlwZXMg d2VyZSBmb3VuZCwgZmFpbHVyZS4KKwkJICovCisJCWlmICghT2lkSXNWYWxpZCh0YXJnZXRUeXBl KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlT TUFUQ0gpLAorCQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBub3Qgc3VwcG9ydGVk IiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKKwkJCQkJIGVycmhpbnQoImpzb25iIHN1 YnNjcmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBlaXRoZXIgaW50ZWdlciBvciB0ZXh0LiIpLAor CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHN1YkV4cHIpKSkp OworCX0KKwllbHNlCisJCXRhcmdldFR5cGUgPSBURVhUT0lEOworCisJLyoKKwkgKiBXZSBrbm93 biBmcm9tIGNhbl9jb2VyY2VfdHlwZSB0aGF0IGNvZXJjaW9uIHdpbGwgc3VjY2VlZCwgc28KKwkg KiBjb2VyY2VfdHlwZSBjb3VsZCBiZSB1c2VkLiBOb3RlIHRoZSBpbXBsaWNpdCBjb2VyY2lvbiBj b250ZXh0LCB3aGljaCBpcworCSAqIHJlcXVpcmVkIHRvIGhhbmRsZSBzdWJzY3JpcHRzIG9mIGRp ZmZlcmVudCB0eXBlcywgc2ltaWxhciB0byBvdmVybG9hZGVkCisJICogZnVuY3Rpb25zLgorCSAq LworCXN1YkV4cHIgPSBjb2VyY2VfdHlwZShwc3RhdGUsCisJCQkJCQkgIHN1YkV4cHIsIHN1YkV4 cHJUeXBlLAorCQkJCQkJICB0YXJnZXRUeXBlLCAtMSwKKwkJCQkJCSAgQ09FUkNJT05fSU1QTElD SVQsCisJCQkJCQkgIENPRVJDRV9JTVBMSUNJVF9DQVNULAorCQkJCQkJICAtMSk7CisKKwlyZXR1 cm4gc3ViRXhwcjsKK30KIAogLyoKICAqIEZpbmlzaCBwYXJzZSBhbmFseXNpcyBvZiBhIFN1YnNj cmlwdGluZ1JlZiBleHByZXNzaW9uIGZvciBhIGpzb25iLgpAQCAtNzcsNzEgKzE0MCw4IEBAIGpz b25iX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAKIAkJaWYg KGFpLT51aWR4KQogCQl7Ci0JCQlPaWQJCQlzdWJFeHByVHlwZSA9IEludmFsaWRPaWQsCi0JCQkJ CQl0YXJnZXRUeXBlID0gVU5LTk9XTk9JRDsKLQogCQkJc3ViRXhwciA9IHRyYW5zZm9ybUV4cHIo cHN0YXRlLCBhaS0+dWlkeCwgcHN0YXRlLT5wX2V4cHJfa2luZCk7Ci0JCQlzdWJFeHByVHlwZSA9 IGV4cHJUeXBlKHN1YkV4cHIpOwotCi0JCQlpZiAoc3ViRXhwclR5cGUgIT0gVU5LTk9XTk9JRCkK LQkJCXsKLQkJCQlPaWQJCQl0YXJnZXRzWzJdID0ge0lOVDRPSUQsIFRFWFRPSUR9OwotCi0JCQkJ LyoKLQkJCQkgKiBKc29uYiBjYW4gaGFuZGxlIG11bHRpcGxlIHN1YnNjcmlwdCB0eXBlcywgYnV0 IGNhc2VzIHdoZW4gYQotCQkJCSAqIHN1YnNjcmlwdCBjb3VsZCBiZSBjb2VyY2VkIHRvIG11bHRp cGxlIHRhcmdldCB0eXBlcyBtdXN0IGJlCi0JCQkJICogYXZvaWRlZCwgc2ltaWxhciB0byBvdmVy bG9hZGVkIGZ1bmN0aW9ucy4gSXQgY291bGQgYmUKLQkJCQkgKiBwb3NzaWJseSBleHRlbmQgd2l0 aCBqc29ucGF0aCBpbiB0aGUgZnV0dXJlLgotCQkJCSAqLwotCQkJCWZvciAoaW50IGkgPSAwOyBp IDwgMjsgaSsrKQotCQkJCXsKLQkJCQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgxLCAmc3ViRXhwclR5 cGUsICZ0YXJnZXRzW2ldLCBDT0VSQ0lPTl9JTVBMSUNJVCkpCi0JCQkJCXsKLQkJCQkJCS8qCi0J CQkJCQkgKiBPbmUgdHlwZSBoYXMgYWxyZWFkeSBzdWNjZWVkZWQsIGl0IG1lYW5zIHRoZXJlIGFy ZQotCQkJCQkJICogdHdvIGNvZXJjaW9uIHRhcmdldHMgcG9zc2libGUsIGZhaWx1cmUuCi0JCQkJ CQkgKi8KLQkJCQkJCWlmICh0YXJnZXRUeXBlICE9IFVOS05PV05PSUQpCi0JCQkJCQkJZXJlcG9y dChFUlJPUiwKLQkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAot CQkJCQkJCQkJIGVycm1zZygic3Vic2NyaXB0IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZv cm1hdF90eXBlX2JlKHN1YkV4cHJUeXBlKSksCi0JCQkJCQkJCQkgZXJyaGludCgianNvbmIgc3Vi c2NyaXB0IG11c3QgYmUgY29lcmNpYmxlIHRvIG9ubHkgb25lIHR5cGUsIGludGVnZXIgb3IgdGV4 dC4iKSwKLQkJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24o c3ViRXhwcikpKSk7Ci0KLQkJCQkJCXRhcmdldFR5cGUgPSB0YXJnZXRzW2ldOwotCQkJCQl9Ci0J CQkJfQotCi0JCQkJLyoKLQkJCQkgKiBObyBzdWl0YWJsZSB0eXBlcyB3ZXJlIGZvdW5kLCBmYWls dXJlLgotCQkJCSAqLwotCQkJCWlmICh0YXJnZXRUeXBlID09IFVOS05PV05PSUQpCi0JCQkJCWVy ZXBvcnQoRVJST1IsCi0JCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks Ci0JCQkJCQkJIGVycm1zZygic3Vic2NyaXB0IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZv cm1hdF90eXBlX2JlKHN1YkV4cHJUeXBlKSksCi0JCQkJCQkJIGVycmhpbnQoImpzb25iIHN1YnNj cmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBlaXRoZXIgaW50ZWdlciBvciB0ZXh0LiIpLAotCQkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oc3ViRXhwcikpKSk7 Ci0JCQl9Ci0JCQllbHNlCi0JCQkJdGFyZ2V0VHlwZSA9IFRFWFRPSUQ7Ci0KLQkJCS8qCi0JCQkg KiBXZSBrbm93biBmcm9tIGNhbl9jb2VyY2VfdHlwZSB0aGF0IGNvZXJjaW9uIHdpbGwgc3VjY2Vl ZCwgc28KLQkJCSAqIGNvZXJjZV90eXBlIGNvdWxkIGJlIHVzZWQuIE5vdGUgdGhlIGltcGxpY2l0 IGNvZXJjaW9uIGNvbnRleHQsCi0JCQkgKiB3aGljaCBpcyByZXF1aXJlZCB0byBoYW5kbGUgc3Vi c2NyaXB0cyBvZiBkaWZmZXJlbnQgdHlwZXMsCi0JCQkgKiBzaW1pbGFyIHRvIG92ZXJsb2FkZWQg ZnVuY3Rpb25zLgotCQkJICovCi0JCQlzdWJFeHByID0gY29lcmNlX3R5cGUocHN0YXRlLAotCQkJ CQkJCQkgIHN1YkV4cHIsIHN1YkV4cHJUeXBlLAotCQkJCQkJCQkgIHRhcmdldFR5cGUsIC0xLAot CQkJCQkJCQkgIENPRVJDSU9OX0lNUExJQ0lULAotCQkJCQkJCQkgIENPRVJDRV9JTVBMSUNJVF9D QVNULAotCQkJCQkJCQkgIC0xKTsKLQkJCWlmIChzdWJFeHByID09IE5VTEwpCi0JCQkJZXJlcG9y dChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAotCQkJ CQkJIGVycm1zZygianNvbmIgc3Vic2NyaXB0IG11c3QgaGF2ZSB0ZXh0IHR5cGUiKSwKLQkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oc3ViRXhwcikpKSk7CisJ CQlzdWJFeHByID0gY29lcmNlX2pzb25wYXRoX3N1YnNjcmlwdF90b19pbnQ0X29yX3RleHQocHN0 YXRlLCBzdWJFeHByKTsKIAkJfQogCQllbHNlCiAJCXsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1 NCkKCg== --0000000000000af497063f81a8e7 Content-Type: application/octet-stream; name="v22-0001-Add-test-coverage-for-indirection-transformation.patch" Content-Disposition: attachment; filename="v22-0001-Add-test-coverage-for-indirection-transformation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfxa830i0 RnJvbSBiZWQwZGI5NTdiOWQ1NDRkMTU4YjFiZjdmN2NjMmM0ODA5MDIxMzdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVGh1LCAxOCBTZXAgMjAyNSAxNTo1NDoyNCAtMDcwMApTdWJqZWN0OiBb UEFUQ0ggdjIyIDEvNV0gQWRkIHRlc3QgY292ZXJhZ2UgZm9yIGluZGlyZWN0aW9uIHRyYW5zZm9y bWF0aW9uCgpUaGVzZSB0ZXN0cyBjb3ZlciBuZXN0ZWQgYXJyYXlzIG9mIGNvbXBvc2l0ZSBkYXRh IHR5cGVzLApzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb25zLCBhbmQgY2FzdGluZyB1c2luZyBkb3Qt bm90YXRpb24sIHByb3ZpZGluZyBhCmJhc2VsaW5lIGZvciBmdXR1cmUgZW5oYW5jZW1lbnRzIHRv IGpzb25iIGRvdC1ub3RhdGlvbiBzdXBwb3J0LgotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvYXJyYXlzLm91dCB8IDI2ICsrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pz b25iLm91dCAgfCA4OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9hcnJheXMuc3FsICAgICAgfCAgNyArKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pz b25iLnNxbCAgICAgICB8IDE4ICsrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9u cygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2FycmF5cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FycmF5cy5vdXQKaW5k ZXggNjllYTJjZjVhZDguLmUxYWI2ZGMyNzhhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2FycmF5cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hcnJh eXMub3V0CkBAIC0xNzgyLDE3ICsxNzgyLDE3IEBAIFNFTEVDVCBtYXgoZjEpLCBtaW4oZjEpLCBt YXgoZjIpLCBtaW4oZjIpLCBtYXgoZjMpLCBtaW4oZjMpIEZST00gYXJyYWdndGVzdDsKICgxIHJv dykKIAogLS0gQSBmZXcgc2ltcGxlIHRlc3RzIGZvciBhcnJheXMgb2YgY29tcG9zaXRlIHR5cGVz Ci1jcmVhdGUgdHlwZSBjb21wdHlwZSBhcyAoZjEgaW50LCBmMiB0ZXh0KTsKK2NyZWF0ZSB0eXBl IGNvbXB0eXBlIGFzIChmMSBpbnQsIGYyIHRleHQsIGYzIGludFtdKTsKIGNyZWF0ZSB0YWJsZSBj b21wdGFibGUgKGMxIGNvbXB0eXBlLCBjMiBjb21wdHlwZVtdKTsKIC0tIFhYWCB3b3VsZCBsaWtl IHRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgcm93KCkgY29uc3RydWN0IHR5cGVzIGhlcmUgLi4uCiBp bnNlcnQgaW50byBjb21wdGFibGUKLSAgdmFsdWVzIChyb3coMSwnZm9vJyksIGFycmF5W3Jvdygy LCdiYXInKTo6Y29tcHR5cGUsIHJvdygzLCdiYXonKTo6Y29tcHR5cGVdKTsKKyAgdmFsdWVzIChy b3coMSwnZm9vJyxhcnJheVsxMCwyMF0pLCBhcnJheVtyb3coMiwnYmFyJyxhcnJheVszMCw0MF0p Ojpjb21wdHlwZSwgcm93KDMsJ2JheicsYXJyYXlbNTAsNjBdKTo6Y29tcHR5cGVdKTsKIC0tIGNo ZWNrIHRoYXQgaW1wbGljaXRseSBuYW1lZCBhcnJheSB0eXBlIF9jb21wdHlwZSBpc24ndCBhIHBy b2JsZW0KIGNyZWF0ZSB0eXBlIF9jb21wdHlwZSBhcyBlbnVtKCdmb29leScpOwogc2VsZWN0ICog ZnJvbSBjb21wdGFibGU7Ci0gICBjMSAgICB8ICAgICAgICAgIGMyICAgICAgICAgICAKLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICgxLGZvbykgfCB7IigyLGJhcikiLCIoMyxi YXopIn0KKyAgICAgICAgYzEgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIGMyICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSxmb28sInsxMCwyMH0iKSB8IHsiKDIs YmFyLFwiezMwLDQwfVwiKSIsIigzLGJheixcIns1MCw2MH1cIikifQogKDEgcm93KQogCiBzZWxl Y3QgYzJbMl0uZjIgZnJvbSBjb21wdGFibGU7CkBAIC0xODAxLDYgKzE4MDEsMjIgQEAgc2VsZWN0 IGMyWzJdLmYyIGZyb20gY29tcHRhYmxlOwogIGJhegogKDEgcm93KQogCitzZWxlY3QgYzJbMl0u ZjMgZnJvbSBjb21wdGFibGU7CisgICBmMyAgICAKKy0tLS0tLS0tLQorIHs1MCw2MH0KKygxIHJv dykKKworc2VsZWN0IGMyWzJdLmYzWzE6Ml0gZnJvbSBjb21wdGFibGU7CisgICBmMyAgICAKKy0t LS0tLS0tLQorIHs1MCw2MH0KKygxIHJvdykKKworc2VsZWN0IGMyWzE6Ml0uZjNbMToyXSBmcm9t IGNvbXB0YWJsZTsKK0VSUk9SOiAgY29sdW1uIG5vdGF0aW9uIC5mMyBhcHBsaWVkIHRvIHR5cGUg Y29tcHR5cGVbXSwgd2hpY2ggaXMgbm90IGEgY29tcG9zaXRlIHR5cGUKK0xJTkUgMTogc2VsZWN0 IGMyWzE6Ml0uZjNbMToyXSBmcm9tIGNvbXB0YWJsZTsKKyAgICAgICAgICAgICAgIF4KIGRyb3Ag dHlwZSBfY29tcHR5cGU7CiBkcm9wIHRhYmxlIGNvbXB0YWJsZTsKIGRyb3AgdHlwZSBjb21wdHlw ZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKaW5kZXggNWExZWIxOGFiYTIuLmZiNDdj OGE4OTNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApAQCAtNTgzMSwzICs1ODMx LDkxIEBAIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwNSc6Ompzb25iOjppbnQ4OwogIDEyMzQ1CiAoMSByb3cpCiAKKy0tIHNpbmdsZSBh cmd1bWVudCBqc29uYiBmdW5jdGlvbnMgYXMganNvbmJfZnVuY3Rpb24oanNvbmIpIGFuZCBqc29u Yi5qc29uYl9mdW5jdGlvbgorc2VsZWN0IGpzb25iX3R5cGVvZigneyJhIjoxfSc6Ompzb25iKTsK KyBqc29uYl90eXBlb2YgCistLS0tLS0tLS0tLS0tLQorIG9iamVjdAorKDEgcm93KQorCitzZWxl Y3QgKCd7ImEiOjF9Jzo6anNvbmIpLmpzb25iX3R5cGVvZjsKKyBqc29uYl90eXBlb2YgCistLS0t LS0tLS0tLS0tLQorIG9iamVjdAorKDEgcm93KQorCitzZWxlY3QganNvbmJfYXJyYXlfbGVuZ3Ro KCdbImEiLCAiYiIsICJjIl0nOjpqc29uYik7CisganNvbmJfYXJyYXlfbGVuZ3RoIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgIDMKKygxIHJvdykKKworc2VsZWN0ICgn WyJhIiwgImIiLCAiYyJdJzo6anNvbmIpLmpzb25iX2FycmF5X2xlbmd0aDsKKyBqc29uYl9hcnJh eV9sZW5ndGggCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgMworKDEg cm93KQorCitzZWxlY3QganNvbmJfb2JqZWN0X2tleXMoJ3siYSI6MSwgImIiOjJ9Jzo6anNvbmIp OworIGpzb25iX29iamVjdF9rZXlzIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIGEKKyBiCisoMiBy b3dzKQorCitzZWxlY3QgKCd7ImEiOjEsICJiIjoyfSc6Ompzb25iKS5qc29uYl9vYmplY3Rfa2V5 czsKKyBqc29uYl9vYmplY3Rfa2V5cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBhCisgYgorKDIg cm93cykKKworLS0gY2FzdCBqc29uYiB0byBvdGhlciB0eXBlcyBhcyAoanNvbmIpOjp0eXBlIGFu ZCAoanNvbmIpLnR5cGUKK3NlbGVjdCAoJzEyMy40NSc6Ompzb25iKTo6bnVtZXJpYzsKKyBudW1l cmljIAorLS0tLS0tLS0tCisgIDEyMy40NQorKDEgcm93KQorCitzZWxlY3QgKCcxMjMuNDUnOjpq c29uYikubnVtZXJpYzsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgIDEyMy40NQorKDEgcm93KQor CitzZWxlY3QgKCdbeyJuYW1lIjogImFsaWNlIn0sIHsibmFtZSI6ICJib2IifV0nOjpqc29uYik6 Om5hbWU7CisgICAgICAgICAgICAgICAgIG5hbWUgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbeyJuYW1lIjogImFsaWNlIn0sIHsibmFt ZSI6ICJib2IifV0KKygxIHJvdykKKworc2VsZWN0ICgnW3sibmFtZSI6ICJhbGljZSJ9LCB7Im5h bWUiOiAiYm9iIn1dJzo6anNvbmIpLm5hbWU7CisgICAgICAgICAgICAgICAgIG5hbWUgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbeyJu YW1lIjogImFsaWNlIn0sIHsibmFtZSI6ICJib2IifV0KKygxIHJvdykKKworc2VsZWN0ICgndHJ1 ZSc6Ompzb25iKTo6Ym9vbDsKKyBib29sIAorLS0tLS0tCisgdAorKDEgcm93KQorCitzZWxlY3Qg KCd0cnVlJzo6anNvbmIpLmJvb2w7CisgYm9vbCAKKy0tLS0tLQorIHQKKygxIHJvdykKKworc2Vs ZWN0ICgneyJ0ZXh0IjogImhlbGxvIn0nOjpqc29uYik6OnRleHQ7CisgICAgICAgdGV4dCAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ0ZXh0IjogImhlbGxvIn0KKygxIHJvdykKKwor c2VsZWN0ICgneyJ0ZXh0IjogImhlbGxvIn0nOjpqc29uYikudGV4dDsKKyAgICAgICB0ZXh0ICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7InRleHQiOiAiaGVsbG8ifQorKDEgcm93KQor CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hcnJheXMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYXJyYXlzLnNxbAppbmRleCA0N2Q2MmMxZDM4ZC4uNDUwMzg5ODMxYTAgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FycmF5cy5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYXJyYXlzLnNxbApAQCAtNTU1LDE5ICs1NTUsMjIgQEAgU0VMRUNUIG1heChm MSksIG1pbihmMSksIG1heChmMiksIG1pbihmMiksIG1heChmMyksIG1pbihmMykgRlJPTSBhcnJh Z2d0ZXN0OwogCiAtLSBBIGZldyBzaW1wbGUgdGVzdHMgZm9yIGFycmF5cyBvZiBjb21wb3NpdGUg dHlwZXMKIAotY3JlYXRlIHR5cGUgY29tcHR5cGUgYXMgKGYxIGludCwgZjIgdGV4dCk7CitjcmVh dGUgdHlwZSBjb21wdHlwZSBhcyAoZjEgaW50LCBmMiB0ZXh0LCBmMyBpbnRbXSk7CiAKIGNyZWF0 ZSB0YWJsZSBjb21wdGFibGUgKGMxIGNvbXB0eXBlLCBjMiBjb21wdHlwZVtdKTsKIAogLS0gWFhY IHdvdWxkIGxpa2UgdG8gbm90IGhhdmUgdG8gc3BlY2lmeSByb3coKSBjb25zdHJ1Y3QgdHlwZXMg aGVyZSAuLi4KIGluc2VydCBpbnRvIGNvbXB0YWJsZQotICB2YWx1ZXMgKHJvdygxLCdmb28nKSwg YXJyYXlbcm93KDIsJ2JhcicpOjpjb21wdHlwZSwgcm93KDMsJ2JheicpOjpjb21wdHlwZV0pOwor ICB2YWx1ZXMgKHJvdygxLCdmb28nLGFycmF5WzEwLDIwXSksIGFycmF5W3JvdygyLCdiYXInLGFy cmF5WzMwLDQwXSk6OmNvbXB0eXBlLCByb3coMywnYmF6JyxhcnJheVs1MCw2MF0pOjpjb21wdHlw ZV0pOwogCiAtLSBjaGVjayB0aGF0IGltcGxpY2l0bHkgbmFtZWQgYXJyYXkgdHlwZSBfY29tcHR5 cGUgaXNuJ3QgYSBwcm9ibGVtCiBjcmVhdGUgdHlwZSBfY29tcHR5cGUgYXMgZW51bSgnZm9vZXkn KTsKIAogc2VsZWN0ICogZnJvbSBjb21wdGFibGU7CiBzZWxlY3QgYzJbMl0uZjIgZnJvbSBjb21w dGFibGU7CitzZWxlY3QgYzJbMl0uZjMgZnJvbSBjb21wdGFibGU7CitzZWxlY3QgYzJbMl0uZjNb MToyXSBmcm9tIGNvbXB0YWJsZTsKK3NlbGVjdCBjMlsxOjJdLmYzWzE6Ml0gZnJvbSBjb21wdGFi bGU7CiAKIGRyb3AgdHlwZSBfY29tcHR5cGU7CiBkcm9wIHRhYmxlIGNvbXB0YWJsZTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2pzb25iLnNxbAppbmRleCA1N2MxMWFjZGRmZS4uOTcwZWQxY2ZmY2EgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9qc29uYi5zcWwKQEAgLTE1OTAsMyArMTU5MCwyMSBAQCBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6ZmxvYXQ4Owog c2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDA1Jzo6anNvbmI6OmludDI7CiBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50NDsKIHNlbGVjdCAnMTIzNDUuMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQ4 OworCistLSBzaW5nbGUgYXJndW1lbnQganNvbmIgZnVuY3Rpb25zIGFzIGpzb25iX2Z1bmN0aW9u KGpzb25iKSBhbmQganNvbmIuanNvbmJfZnVuY3Rpb24KK3NlbGVjdCBqc29uYl90eXBlb2YoJ3si YSI6MX0nOjpqc29uYik7CitzZWxlY3QgKCd7ImEiOjF9Jzo6anNvbmIpLmpzb25iX3R5cGVvZjsK K3NlbGVjdCBqc29uYl9hcnJheV9sZW5ndGgoJ1siYSIsICJiIiwgImMiXSc6Ompzb25iKTsKK3Nl bGVjdCAoJ1siYSIsICJiIiwgImMiXSc6Ompzb25iKS5qc29uYl9hcnJheV9sZW5ndGg7CitzZWxl Y3QganNvbmJfb2JqZWN0X2tleXMoJ3siYSI6MSwgImIiOjJ9Jzo6anNvbmIpOworc2VsZWN0ICgn eyJhIjoxLCAiYiI6Mn0nOjpqc29uYikuanNvbmJfb2JqZWN0X2tleXM7CisKKy0tIGNhc3QganNv bmIgdG8gb3RoZXIgdHlwZXMgYXMgKGpzb25iKTo6dHlwZSBhbmQgKGpzb25iKS50eXBlCitzZWxl Y3QgKCcxMjMuNDUnOjpqc29uYik6Om51bWVyaWM7CitzZWxlY3QgKCcxMjMuNDUnOjpqc29uYiku bnVtZXJpYzsKK3NlbGVjdCAoJ1t7Im5hbWUiOiAiYWxpY2UifSwgeyJuYW1lIjogImJvYiJ9XSc6 Ompzb25iKTo6bmFtZTsKK3NlbGVjdCAoJ1t7Im5hbWUiOiAiYWxpY2UifSwgeyJuYW1lIjogImJv YiJ9XSc6Ompzb25iKS5uYW1lOworc2VsZWN0ICgndHJ1ZSc6Ompzb25iKTo6Ym9vbDsKK3NlbGVj dCAoJ3RydWUnOjpqc29uYikuYm9vbDsKK3NlbGVjdCAoJ3sidGV4dCI6ICJoZWxsbyJ9Jzo6anNv bmIpOjp0ZXh0Oworc2VsZWN0ICgneyJ0ZXh0IjogImhlbGxvIn0nOjpqc29uYikudGV4dDsKLS0g CjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --0000000000000af497063f81a8e7 Content-Type: application/octet-stream; name="v22-0002-Add-an-alternative-transform-function-in-Subscri.patch" Content-Disposition: attachment; filename="v22-0002-Add-an-alternative-transform-function-in-Subscri.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfxa830r4 RnJvbSA2ZDQ2YjZkMTBjYjA3N2JmYzJhYjI2MWZiZDc0MzA0ZDhiMTlkMzNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVGh1LCAxOCBTZXAgMjAyNSAxNjozNDo0NyAtMDcwMApTdWJqZWN0OiBb UEFUQ0ggdjIyIDIvNV0gQWRkIGFuIGFsdGVybmF0aXZlIHRyYW5zZm9ybSBmdW5jdGlvbiBpbgog U3Vic2NyaXB0Um91dGluZXMKCkFkZCBhIHRyYW5zZm9ybV9wYXJ0aWFsKCkgZnVuY3Rpb24gcG9p bnRlciB0byBlbmFibGUgcHJvY2Vzc2luZyBhCnByZWZpeCBvZiBpbmRpcmVjdGlvbiBsaXN0cy4g RGF0YSB0eXBlcyB0aGF0IHN1cHBvcnQgc3Vic2NyaXB0aW5nIGNhbgpvcHQgdG8gdXNlIHRoZSB0 cmFuc2Zvcm0oKSBmdW5jdGlvbiB0aGF0IHRyYW5zZm9ybXMgdGhlIGZ1bGwgaW5wdXQKaW5kaXJl Y3Rpb24gbGlzdCAoZS5nLiwgYXJyYXlzLCBoc3RvcmUpLCBvciBjYW4gb3B0IHRvIHVzZSB0aGUK dHJhbnNmb3JtX3BhcnRpYWwoKSBmdW5jdGlvbiB0byBiZSBtb3JlIGZsZXhpYmxlIG9uIGluZGly ZWN0aW9uIG5vZGUKdHlwZXMsIGFuZCBtYWtlIGJlc3QgZWZmb3J0IGluIHRyYW5zZm9ybWluZyBv bmx5IGEgcHJlZml4IG9mIHRoZQppbmRpcmVjdGlvbiBsaXN0LCBsZXR0aW5nIHRoZSBjYWxsZXIg aGFuZGxlIHRoZSByZW1haW5pbmcKaW5kaXJlY3Rpb25zLgoKVGhpcyBhbGxvd3MgdHJhbnNmb3Jt IGZ1bmN0aW9ucyB0byBhY2NlcHQgZG90IG5vdGF0aW9uIGluZGlyZWN0aW9uIGFzCmlucHV0LCBw cmVwYXJpbmcgZm9yIGZ1dHVyZSBKU09OQiBkb3Qgbm90YXRpb24gc3VwcG9ydC4KLS0tCiBjb250 cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jICAgfCA3NiArKysrKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2Vfbm9kZS5jICAgfCA5MiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgfCAgNiArLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jIHwgIDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25ic3Vicy5jIHwgMjYgKysrKysrLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9zdWJzY3JpcHRpbmcu aCAgfCAyNCArKysrKysrLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgIHwgIDMg Ky0KIDggZmlsZXMgY2hhbmdlZCwgMTY4IGluc2VydGlvbnMoKyksIDYyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9zdWJzLmMgYi9jb250cmliL2hzdG9y ZS9oc3RvcmVfc3Vicy5jCmluZGV4IDNkMDNmNjZmYTBkLi5kNjc4ZGM1NmY4NiAxMDA2NDQKLS0t IGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX3N1YnMuYworKysgYi9jb250cmliL2hzdG9yZS9oc3Rv cmVfc3Vicy5jCkBAIC0yODcsNiArMjg3LDcgQEAgaHN0b3JlX3N1YnNjcmlwdF9oYW5kbGVyKFBH X0ZVTkNUSU9OX0FSR1MpCiB7CiAJc3RhdGljIGNvbnN0IFN1YnNjcmlwdFJvdXRpbmVzIHNic3Jv dXRpbmVzID0gewogCQkudHJhbnNmb3JtID0gaHN0b3JlX3N1YnNjcmlwdF90cmFuc2Zvcm0sCisJ CS50cmFuc2Zvcm1fcGFydGlhbCA9IE5VTEwsCiAJCS5leGVjX3NldHVwID0gaHN0b3JlX2V4ZWNf c2V0dXAsCiAJCS5mZXRjaF9zdHJpY3QgPSB0cnVlLAkvKiBmZXRjaCByZXR1cm5zIE5VTEwgZm9y IE5VTEwgaW5wdXRzICovCiAJCS5mZXRjaF9sZWFrcHJvb2YgPSB0cnVlLAkvKiBmZXRjaCByZXR1 cm5zIE5VTEwgZm9yIGJhZCBzdWJzY3JpcHQgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4 IGUxOTc5YTgwYzE5Li45NWNlMzMwZTUwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC00 MzYsNDQgKzQzNiw2NSBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUs IEFfSW5kaXJlY3Rpb24gKmluZCkKIHsKIAlOb2RlCSAgICpsYXN0X3NyZiA9IHBzdGF0ZS0+cF9s YXN0X3NyZjsKIAlOb2RlCSAgICpyZXN1bHQgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUs IGluZC0+YXJnKTsKLQlMaXN0CSAgICpzdWJzY3JpcHRzID0gTklMOworCUxpc3QJICAgKmluZGly ZWN0aW9ucyA9IE5JTDsKIAlpbnQJCQlsb2NhdGlvbiA9IGV4cHJMb2NhdGlvbihyZXN1bHQpOwog CUxpc3RDZWxsICAgKmk7CiAKIAkvKgotCSAqIFdlIGhhdmUgdG8gc3BsaXQgYW55IGZpZWxkLXNl bGVjdGlvbiBvcGVyYXRpb25zIGFwYXJ0IGZyb20KLQkgKiBzdWJzY3JpcHRpbmcuICBBZGphY2Vu dCBBX0luZGljZXMgbm9kZXMgaGF2ZSB0byBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlCisJICogQ29t YmluZSBmaWVsZCBuYW1lcyBhbmQgc3Vic2NyaXB0cyBpbnRvIGEgc2luZ2xlIGluZGlyZWN0aW9u IGxpc3QsIGFzCisJICogc29tZSBzdWJzY3JpcHRpbmcgY29udGFpbmVycywgc3VjaCBhcyBqc29u Yiwgc3VwcG9ydCBmaWVsZCBhY2Nlc3MgdXNpbmcKKwkgKiBkb3Qgbm90YXRpb24uIEFkamFjZW50 IEFfSW5kaWNlcyBub2RlcyBoYXZlIHRvIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUKIAkgKiBtdWx0 aWRpbWVuc2lvbmFsIHN1YnNjcmlwdCBvcGVyYXRpb24uCiAJICovCiAJZm9yZWFjaChpLCBpbmQt PmluZGlyZWN0aW9uKQogCXsKIAkJTm9kZQkgICAqbiA9IGxmaXJzdChpKTsKIAotCQlpZiAoSXNB KG4sIEFfSW5kaWNlcykpCi0JCQlzdWJzY3JpcHRzID0gbGFwcGVuZChzdWJzY3JpcHRzLCBuKTsK LQkJZWxzZSBpZiAoSXNBKG4sIEFfU3RhcikpCisJCWlmIChJc0EobiwgQV9JbmRpY2VzKSB8fCBJ c0EobiwgU3RyaW5nKSkKKwkJCWluZGlyZWN0aW9ucyA9IGxhcHBlbmQoaW5kaXJlY3Rpb25zLCBu KTsKKwkJZWxzZQogCQl7CisJCQlBc3NlcnQoSXNBKG4sIEFfU3RhcikpOwogCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJ CQkgZXJybXNnKCJyb3cgZXhwYW5zaW9uIHZpYSBcIipcIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUi KSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwogCQl9Ci0J CWVsc2UKKwl9CisKKwl3aGlsZSAoaW5kaXJlY3Rpb25zKQorCXsKKwkJLyogdHJ5IHByb2Nlc3Np bmcgY29udGFpbmVyIHN1YnNjcmlwdHMgZmlyc3QgKi8KKwkJaW50CQkJdHJhbnNmb3JtZWRfY291 bnQgPSAwOworCQlOb2RlCSAgICpuZXdyZXN1bHQgPSAoTm9kZSAqKQorCQkJdHJhbnNmb3JtQ29u dGFpbmVyU3Vic2NyaXB0cyhwc3RhdGUsCisJCQkJCQkJCQkJIHJlc3VsdCwKKwkJCQkJCQkJCQkg ZXhwclR5cGUocmVzdWx0KSwKKwkJCQkJCQkJCQkgZXhwclR5cG1vZChyZXN1bHQpLAorCQkJCQkJ CQkJCSBpbmRpcmVjdGlvbnMsCisJCQkJCQkJCQkJIGZhbHNlLAorCQkJCQkJCQkJCSAmdHJhbnNm b3JtZWRfY291bnQpOworCisJCWlmICghbmV3cmVzdWx0KQogCQl7Ci0JCQlOb2RlCSAgICpuZXdy ZXN1bHQ7CisJCQkvKgorCQkJICogZ2VuZXJpYyBzdWJzY3JpcHRpbmcgZmFpbGVkOyBmYWxsaW5n IGJhY2sgdG8gZmllbGQgc2VsZWN0aW9uCisJCQkgKiBmb3IgYSBjb21wb3NpdGUgdHlwZSwgb3Ig YSBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb24uCisJCQkgKi8KKwkJCU5vZGUJICAgKm47CisKKwkJ CUFzc2VydChpbmRpcmVjdGlvbnMpOwogCi0JCQlBc3NlcnQoSXNBKG4sIFN0cmluZykpOworCQkJ biA9IGxpbml0aWFsKGluZGlyZWN0aW9ucyk7CiAKLQkJCS8qIHByb2Nlc3Mgc3Vic2NyaXB0cyBi ZWZvcmUgdGhpcyBmaWVsZCBzZWxlY3Rpb24gKi8KLQkJCWlmIChzdWJzY3JpcHRzKQotCQkJCXJl c3VsdCA9IChOb2RlICopIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMocHN0YXRlLAotCQkJ CQkJCQkJCQkJCQkJICAgcmVzdWx0LAotCQkJCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0 KSwKLQkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBtb2QocmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkJ CSAgIHN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJCQkJCQkgICBmYWxzZSk7Ci0JCQlzdWJzY3JpcHRz ID0gTklMOworCQkJaWYgKCFJc0EobiwgU3RyaW5nKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkgZXJybXNnKCJj YW5ub3Qgc3Vic2NyaXB0IHR5cGUgJXMgYmVjYXVzZSBpdCBkb2VzIG5vdCBzdXBwb3J0IHN1YnNj cmlwdGluZyIsCisJCQkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJUeXBlKHJlc3VsdCkpKSwKKwkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24ocmVzdWx0KSkpKTsK IAorCQkJLyogdHJ5IHRvIHBhcnNlIGZ1bmN0aW9uIG9yIGZpZWxkIHNlbGVjdGlvbiAqLwogCQkJ bmV3cmVzdWx0ID0gUGFyc2VGdW5jT3JDb2x1bW4ocHN0YXRlLAogCQkJCQkJCQkJCSAgbGlzdF9t YWtlMShuKSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEocmVzdWx0KSwKQEAgLTQ4MSwxOSArNTAy LDE4IEBAIHRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVj dGlvbiAqaW5kKQogCQkJCQkJCQkJCSAgTlVMTCwKIAkJCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJ CQkJCSAgbG9jYXRpb24pOwotCQkJaWYgKG5ld3Jlc3VsdCA9PSBOVUxMKQorCisJCQlpZiAoIW5l d3Jlc3VsdCkKIAkJCQl1bmtub3duX2F0dHJpYnV0ZShwc3RhdGUsIHJlc3VsdCwgc3RyVmFsKG4p LCBsb2NhdGlvbik7Ci0JCQlyZXN1bHQgPSBuZXdyZXN1bHQ7CisJCQllbHNlCisJCQkJdHJhbnNm b3JtZWRfY291bnQgPSAxOwogCQl9CisKKwkJLyogcmVtb3ZlIHRoZSBwcm9jZXNzZWQgaW5kaXJl Y3Rpb25zICovCisJCWluZGlyZWN0aW9ucyA9IGxpc3RfZGVsZXRlX2ZpcnN0X24oaW5kaXJlY3Rp b25zLCB0cmFuc2Zvcm1lZF9jb3VudCk7CisKKwkJcmVzdWx0ID0gbmV3cmVzdWx0OwogCX0KLQkv KiBwcm9jZXNzIHRyYWlsaW5nIHN1YnNjcmlwdHMsIGlmIGFueSAqLwotCWlmIChzdWJzY3JpcHRz KQotCQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0 ZSwKLQkJCQkJCQkJCQkJCQkgICByZXN1bHQsCi0JCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVz dWx0KSwKLQkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJ ICAgc3Vic2NyaXB0cywKLQkJCQkJCQkJCQkJCQkgICBmYWxzZSk7CiAKIAlyZXR1cm4gcmVzdWx0 OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX25vZGUuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMKaW5kZXggMjAzYjdhMzIxNzguLjgwMzA4OWFiNmZj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMKQEAgLTIzOCwyMCArMjM4LDIyIEBAIHRyYW5zZm9y bUNvbnRhaW5lclR5cGUoT2lkICpjb250YWluZXJUeXBlLCBpbnQzMiAqY29udGFpbmVyVHlwbW9k KQogICogY29udGFpbmVyVHlwTW9kCXR5cG1vZCBmb3IgdGhlIGNvbnRhaW5lcgogICogaW5kaXJl Y3Rpb24JCVVudHJhbnNmb3JtZWQgbGlzdCBvZiBzdWJzY3JpcHRzIChtdXN0IG5vdCBiZSBOSUwp CiAgKiBpc0Fzc2lnbm1lbnQJCVRydWUgaWYgdGhpcyB3aWxsIGJlY29tZSBhIGNvbnRhaW5lciBh c3NpZ25tZW50LgotICovCisgKiBuU3Vic2NyaXB0cwkJT3V0cHV0IHBhcmFtZXRlciBmb3IgbnVt YmVyIG9mIHRyYW5zZm9ybWVkIHN1YnNjcmlwdHMuCisqLwogU3Vic2NyaXB0aW5nUmVmICoKIHRy YW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSBO b2RlICpjb250YWluZXJCYXNlLAogCQkJCQkJCSBPaWQgY29udGFpbmVyVHlwZSwKIAkJCQkJCQkg aW50MzIgY29udGFpbmVyVHlwTW9kLAogCQkJCQkJCSBMaXN0ICppbmRpcmVjdGlvbiwKLQkJCQkJ CQkgYm9vbCBpc0Fzc2lnbm1lbnQpCisJCQkJCQkJIGJvb2wgaXNBc3NpZ25tZW50LAorCQkJCQkJ CSBpbnQgKm5TdWJzY3JpcHRzKQogewogCVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmOwogCWNvbnN0 IFN1YnNjcmlwdFJvdXRpbmVzICpzYnNyb3V0aW5lczsKIAlPaWQJCQllbGVtZW50VHlwZTsKLQli b29sCQlpc1NsaWNlID0gZmFsc2U7Ci0JTGlzdENlbGwgICAqaWR4OworCisJKm5TdWJzY3JpcHRz ID0gMDsKIAogCS8qCiAJICogRGV0ZXJtaW5lIHRoZSBhY3R1YWwgY29udGFpbmVyIHR5cGUsIHNt YXNoaW5nIGFueSBkb21haW4uICBJbiB0aGUKQEAgLTI2NywyOCArMjY5LDE1IEBAIHRyYW5zZm9y bUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqLwogCXNic3JvdXRp bmVzID0gZ2V0U3Vic2NyaXB0aW5nUm91dGluZXMoY29udGFpbmVyVHlwZSwgJmVsZW1lbnRUeXBl KTsKIAlpZiAoIXNic3JvdXRpbmVzKQorCXsKKwkJaWYgKCFpc0Fzc2lnbm1lbnQpCisJCQlyZXR1 cm4gTlVMTDsKKwogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZ UEVfTUlTTUFUQ0gpLAogCQkJCSBlcnJtc2coImNhbm5vdCBzdWJzY3JpcHQgdHlwZSAlcyBiZWNh dXNlIGl0IGRvZXMgbm90IHN1cHBvcnQgc3Vic2NyaXB0aW5nIiwKIAkJCQkJCWZvcm1hdF90eXBl X2JlKGNvbnRhaW5lclR5cGUpKSwKIAkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhw ckxvY2F0aW9uKGNvbnRhaW5lckJhc2UpKSkpOwotCi0JLyoKLQkgKiBEZXRlY3Qgd2hldGhlciBh bnkgb2YgdGhlIGluZGlyZWN0aW9uIGl0ZW1zIGFyZSBzbGljZSBzcGVjaWZpZXJzLgotCSAqCi0J ICogQSBsaXN0IGNvbnRhaW5pbmcgb25seSBzaW1wbGUgc3Vic2NyaXB0cyByZWZlcnMgdG8gYSBz aW5nbGUgY29udGFpbmVyCi0JICogZWxlbWVudC4gIElmIGFueSBvZiB0aGUgaXRlbXMgYXJlIHNs aWNlIHNwZWNpZmllcnMgKGxvd2VyOnVwcGVyKSwgdGhlbgotCSAqIHRoZSBzdWJzY3JpcHQgZXhw cmVzc2lvbiBtZWFucyBhIGNvbnRhaW5lciBzbGljZSBvcGVyYXRpb24uCi0JICovCi0JZm9yZWFj aChpZHgsIGluZGlyZWN0aW9uKQotCXsKLQkJQV9JbmRpY2VzICAqYWkgPSBsZmlyc3Rfbm9kZShB X0luZGljZXMsIGlkeCk7Ci0KLQkJaWYgKGFpLT5pc19zbGljZSkKLQkJewotCQkJaXNTbGljZSA9 IHRydWU7Ci0JCQlicmVhazsKLQkJfQogCX0KIAogCS8qCkBAIC0zMDksOCArMjk4LDY1IEBAIHRy YW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqIENhbGwg dGhlIGNvbnRhaW5lci10eXBlLXNwZWNpZmljIGxvZ2ljIHRvIHRyYW5zZm9ybSB0aGUgc3Vic2Ny aXB0cyBhbmQKIAkgKiBkZXRlcm1pbmUgdGhlIHN1YnNjcmlwdGluZyByZXN1bHQgdHlwZS4KIAkg Ki8KLQlzYnNyb3V0aW5lcy0+dHJhbnNmb3JtKHNic3JlZiwgaW5kaXJlY3Rpb24sIHBzdGF0ZSwK LQkJCQkJCSAgIGlzU2xpY2UsIGlzQXNzaWdubWVudCk7CisJQXNzZXJ0KChzYnNyb3V0aW5lcy0+ dHJhbnNmb3JtX3BhcnRpYWwgPT0gTlVMTCkgXiAoc2Jzcm91dGluZXMtPnRyYW5zZm9ybSA9PSBO VUxMKSk7CisJaWYgKHNic3JvdXRpbmVzLT50cmFuc2Zvcm1fcGFydGlhbCAhPSBOVUxMKQorCXsK KwkJLyoKKwkJICogSWYgdGhlIGNvbnRhaW5lciB0eXBlIHByb3ZpZGVzIGEgcGFydGlhbCB0cmFu c2Zvcm0gZnVuY3Rpb24sIHVzZSBpdAorCQkgKiBoZXJlLiBUaGlzIGZ1bmN0aW9uIGNhbiBhY2Nl cHQgYW55IG5vZGUgdHlwZXMgaW4gdGhlIGluZGlyZWN0aW9uCisJCSAqIGxpc3QgYXMgaW5wdXQs IGFuZCBpcyByZXNwb25zaWJsZSBmb3IgaWRlbnRpZnlpbmcgYW5kIHRyYW5zZm9ybWluZworCQkg KiBhcyBtYW55IGxlYWRpbmcgZWxlbWVudHMgYXMgaXQgY2FuIGhhbmRsZSwgd2hpY2ggbWF5IGJl IG9ubHkgYQorCQkgKiBwcmVmaXggb2YgdGhlIGluZGlyZWN0aW9uIGxpc3QuIEZvciBleGFtcGxl LCBpdCBtaWdodCBwcm9jZXNzCisJCSAqIEFfSW5kaWNlcyBub2RlcywgU3RyaW5nIG5vZGVzIChm b3IganNvbmIgZG90LW5vdGF0aW9uKSwgb3Igb3RoZXIKKwkJICogbm9kZSB0eXBlcywgZGVwZW5k aW5nIG9uIHRoZSBjb250YWluZXIncyByZXF1aXJlbWVudHMuIEl0IHJldHVybnMKKwkJICogdGhl IG51bWJlciBvZiBlbGVtZW50cyBpdCB0cmFuc2Zvcm1lZC4KKwkJICovCisJCSpuU3Vic2NyaXB0 cyA9IHNic3JvdXRpbmVzLT50cmFuc2Zvcm1fcGFydGlhbChzYnNyZWYsIGluZGlyZWN0aW9uLCBw c3RhdGUsIGlzQXNzaWdubWVudCk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEZ1bGwgdHJh bnNmb3JtIG9ubHkgYWNjZXB0cyBicmFja2V0IHN1YnNjcmlwdHMgKEFfSW5kaWNlcyBub2Rlcyku CisJCSAqIFdlIHByZS1jb2xsZWN0IHRoZSBsZWFkaW5nIEFfSW5kaWNlcyBub2RlcyBmcm9tIHRo ZSBpbmRpcmVjdGlvbgorCQkgKiBsaXN0LCB0aGVuIGNhbGwgdGhlIHRyYW5zZm9ybSBmdW5jdGlv biB0byBwcm9jZXNzIHRoaXMgcHJlZml4IG9mCisJCSAqIHN1YnNjcmlwdHMuCisJCSAqLworCQlM aXN0CSAgICpzdWJzY3JpcHRsaXN0ID0gTklMOworCQlMaXN0Q2VsbCAgICpsYzsKKwkJYm9vbAkJ aXNTbGljZSA9IGZhbHNlOworCisJCS8qIENvbGxlY3QgbGVhZGluZyBBX0luZGljZXMgc3Vic2Ny aXB0cyAqLworCQlmb3JlYWNoKGxjLCBpbmRpcmVjdGlvbikKKwkJeworCQkJTm9kZQkgICAqbiA9 IGxmaXJzdChsYyk7CisKKwkJCWlmIChJc0EobiwgQV9JbmRpY2VzKSkKKwkJCXsKKwkJCQlBX0lu ZGljZXMgICphaSA9IChBX0luZGljZXMgKikgbjsKKworCQkJCXN1YnNjcmlwdGxpc3QgPSBsYXBw ZW5kKHN1YnNjcmlwdGxpc3QsIG4pOworCQkJCWlmIChhaS0+aXNfc2xpY2UpCisJCQkJCWlzU2xp Y2UgPSB0cnVlOworCQkJfQorCQkJZWxzZQorCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKHN1YnNj cmlwdGxpc3QpCisJCQlzYnNyb3V0aW5lcy0+dHJhbnNmb3JtKHNic3JlZiwgc3Vic2NyaXB0bGlz dCwgcHN0YXRlLCBpc1NsaWNlLCBpc0Fzc2lnbm1lbnQpOworCisJCSpuU3Vic2NyaXB0cyA9IGxp c3RfbGVuZ3RoKHN1YnNjcmlwdGxpc3QpOworCX0KKworCWlmICgqblN1YnNjcmlwdHMgPT0gMCkK Kwl7CisJCS8qIEZhbGxiYWNrIHRvIGZpZWxkIHNlbGVjdGlvbiBpbiBjYWxsZXIgKi8KKwkJaWYg KCFpc0Fzc2lnbm1lbnQpCisJCQlyZXR1cm4gTlVMTDsKKworCQkvKiBUaGlzIHNob3VsZCBub3Qg aGFwcGVuIHdpdGggd2VsbC1iZWhhdmVkIHRyYW5zZm9ybSBmdW5jdGlvbnMgKi8KKwkJZWxvZyhF UlJPUiwgInN1YnNjcmlwdGluZyB0cmFuc2Zvcm0gZnVuY3Rpb24gZmFpbGVkIHRvIGNvbnN1bWUg YW55IGluZGlyZWN0aW9uIGVsZW1lbnRzIik7CisJfQogCiAJLyoKIAkgKiBWZXJpZnkgd2UgZ290 IGEgdmFsaWQgdHlwZSAodGhpcyBkZWZlbmRzLCBmb3IgZXhhbXBsZSwgYWdhaW5zdCBzb21lb25l CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKaW5kZXggOTA1Yzk3NWQ4M2IuLmExNGY4ZmI4NWJm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC05MjIsNiArOTIyLDcgQEAgdHJhbnNm b3JtQXNzaWdubWVudFN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCU9pZAkJCXR5cGVO ZWVkZWQ7CiAJaW50MzIJCXR5cG1vZE5lZWRlZDsKIAlPaWQJCQljb2xsYXRpb25OZWVkZWQ7CisJ aW50CQkJblN1YnNjcmlwdHMgPSAwOwogCiAJQXNzZXJ0KHN1YnNjcmlwdHMgIT0gTklMKTsKIApA QCAtOTM2LDcgKzkzNywxMCBAQCB0cmFuc2Zvcm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJICBjb250YWluZXJUeXBlLAogCQkJCQkJCQkJCSAgY29u dGFpbmVyVHlwTW9kLAogCQkJCQkJCQkJCSAgc3Vic2NyaXB0cywKLQkJCQkJCQkJCQkgIHRydWUp OworCQkJCQkJCQkJCSAgdHJ1ZSwKKwkJCQkJCQkJCQkgICZuU3Vic2NyaXB0cyk7CisKKwlBc3Nl cnQoblN1YnNjcmlwdHMgPT0gbGlzdF9sZW5ndGgoc3Vic2NyaXB0cykpOwogCiAJdHlwZU5lZWRl ZCA9IHNic3JlZi0+cmVmcmVzdHlwZTsKIAl0eXBtb2ROZWVkZWQgPSBzYnNyZWYtPnJlZnR5cG1v ZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwppbmRleCAyOTQwZmI4ZThkNy4uMDA0OTkwN2I5 NDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJzLmMKQEAgLTU0MSw2ICs1NDEsNyBAQCBhcnJh eV9zdWJzY3JpcHRfaGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQogewogCXN0YXRpYyBjb25zdCBT dWJzY3JpcHRSb3V0aW5lcyBzYnNyb3V0aW5lcyA9IHsKIAkJLnRyYW5zZm9ybSA9IGFycmF5X3N1 YnNjcmlwdF90cmFuc2Zvcm0sCisJCS50cmFuc2Zvcm1fcGFydGlhbCA9IE5VTEwsCiAJCS5leGVj X3NldHVwID0gYXJyYXlfZXhlY19zZXR1cCwKIAkJLmZldGNoX3N0cmljdCA9IHRydWUsCS8qIGZl dGNoIHJldHVybnMgTlVMTCBmb3IgTlVMTCBpbnB1dHMgKi8KIAkJLmZldGNoX2xlYWtwcm9vZiA9 IHRydWUsCS8qIGZldGNoIHJldHVybnMgTlVMTCBmb3IgYmFkIHN1YnNjcmlwdCAqLwpAQCAtNTY4 LDYgKzU2OSw3IEBAIHJhd19hcnJheV9zdWJzY3JpcHRfaGFuZGxlcihQR19GVU5DVElPTl9BUkdT KQogewogCXN0YXRpYyBjb25zdCBTdWJzY3JpcHRSb3V0aW5lcyBzYnNyb3V0aW5lcyA9IHsKIAkJ LnRyYW5zZm9ybSA9IGFycmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0sCisJCS50cmFuc2Zvcm1fcGFy dGlhbCA9IE5VTEwsCiAJCS5leGVjX3NldHVwID0gYXJyYXlfZXhlY19zZXR1cCwKIAkJLmZldGNo X3N0cmljdCA9IHRydWUsCS8qIGZldGNoIHJldHVybnMgTlVMTCBmb3IgTlVMTCBpbnB1dHMgKi8K IAkJLmZldGNoX2xlYWtwcm9vZiA9IHRydWUsCS8qIGZldGNoIHJldHVybnMgTlVMTCBmb3IgYmFk IHN1YnNjcmlwdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vi cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCmluZGV4IGU4NjI2ZDNiNGZj Li5iNDgyNGQ0NmE1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vi cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYwpAQCAtMzYsMTQgKzM2 LDE2IEBAIHR5cGVkZWYgc3RydWN0IEpzb25iU3ViV29ya3NwYWNlCiAvKgogICogRmluaXNoIHBh cnNlIGFuYWx5c2lzIG9mIGEgU3Vic2NyaXB0aW5nUmVmIGV4cHJlc3Npb24gZm9yIGEganNvbmIu CiAgKgotICogVHJhbnNmb3JtIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbnMsIGNvZXJjZSB0aGVt IHRvIHRleHQsCi0gKiBhbmQgZGV0ZXJtaW5lIHRoZSByZXN1bHQgdHlwZSBvZiB0aGUgU3Vic2Ny aXB0aW5nUmVmIG5vZGUuCisgKiBUaGlzIGlzIGEgcGFydGlhbCB0cmFuc2Zvcm0gZnVuY3Rpb24g dGhhdCB0cmFuc2Zvcm1zIHRoZSBzdWJzY3JpcHQKKyAqIGV4cHJlc3Npb25zLCBjb2VyY2VzIHRo ZW0gdG8gdGV4dCwgYW5kIGRldGVybWluZXMgdGhlIHJlc3VsdCB0eXBlCisgKiBvZiB0aGUgU3Vi c2NyaXB0aW5nUmVmIG5vZGUuCisgKgorICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGluZGlyZWN0 aW9uIGVsZW1lbnRzIHByb2Nlc3NlZC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIGpz b25iX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJCQkJCQkg IExpc3QgKmluZGlyZWN0aW9uLAogCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkg IGJvb2wgaXNTbGljZSwKIAkJCQkJCSAgYm9vbCBpc0Fzc2lnbm1lbnQpCiB7CiAJTGlzdAkgICAq dXBwZXJJbmRleHByID0gTklMOwpAQCAtNTUsMTAgKzU3LDE1IEBAIGpzb25iX3N1YnNjcmlwdF90 cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJICovCiAJZm9yZWFjaChpZHgsIGlu ZGlyZWN0aW9uKQogCXsKLQkJQV9JbmRpY2VzICAqYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMs IGlkeCk7CisJCUFfSW5kaWNlcyAgKmFpOwogCQlOb2RlCSAgICpzdWJFeHByOwogCi0JCWlmIChp c1NsaWNlKQorCQlpZiAoIUlzQShsZmlyc3QoaWR4KSwgQV9JbmRpY2VzKSkKKwkJCWJyZWFrOwor CisJCWFpID0gbGZpcnN0X25vZGUoQV9JbmRpY2VzLCBpZHgpOworCisJCWlmIChhaS0+aXNfc2xp Y2UpCiAJCXsKIAkJCU5vZGUJICAgKmV4cHIgPSBhaS0+dWlkeCA/IGFpLT51aWR4IDogYWktPmxp ZHg7CiAKQEAgLTE0Miw3ICsxNDksNyBAQCBqc29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNj cmlwdGluZ1JlZiAqc2JzcmVmLAogCQkJICogU2xpY2Ugd2l0aCBvbWl0dGVkIHVwcGVyIGJvdW5k LiBTaG91bGQgbm90IGhhcHBlbiBhcyB3ZSBhbHJlYWR5CiAJCQkgKiBlcnJvcmVkIG91dCBvbiBz bGljZSBlYXJsaWVyLCBidXQgaGFuZGxlIHRoaXMganVzdCBpbiBjYXNlLgogCQkJICovCi0JCQlB c3NlcnQoaXNTbGljZSAmJiBhaS0+aXNfc2xpY2UpOworCQkJQXNzZXJ0KGFpLT5pc19zbGljZSk7 CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01B VENIKSwKIAkJCQkJIGVycm1zZygianNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xp Y2VzIiksCkBAIC0xNTksNiArMTY2LDggQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZiwKIAkvKiBEZXRlcm1pbmUgdGhlIHJlc3VsdCB0eXBlIG9mIHRo ZSBzdWJzY3JpcHRpbmcgb3BlcmF0aW9uOyBhbHdheXMganNvbmIgKi8KIAlzYnNyZWYtPnJlZnJl c3R5cGUgPSBKU09OQk9JRDsKIAlzYnNyZWYtPnJlZnR5cG1vZCA9IC0xOworCisJcmV0dXJuIGxp c3RfbGVuZ3RoKHVwcGVySW5kZXhwcik7CiB9CiAKIC8qCkBAIC00MDIsNyArNDExLDggQEAgRGF0 dW0KIGpzb25iX3N1YnNjcmlwdF9oYW5kbGVyKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJc3RhdGlj IGNvbnN0IFN1YnNjcmlwdFJvdXRpbmVzIHNic3JvdXRpbmVzID0gewotCQkudHJhbnNmb3JtID0g anNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybSwKKwkJLnRyYW5zZm9ybSA9IE5VTEwsCQkvKiBqc29u YiB1c2VzIHBhcnRpYWwgdHJhbnNmb3JtIGluc3RlYWQgKi8KKwkJLnRyYW5zZm9ybV9wYXJ0aWFs ID0ganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybSwKIAkJLmV4ZWNfc2V0dXAgPSBqc29uYl9leGVj X3NldHVwLAogCQkuZmV0Y2hfc3RyaWN0ID0gdHJ1ZSwJLyogZmV0Y2ggcmV0dXJucyBOVUxMIGZv ciBOVUxMIGlucHV0cyAqLwogCQkuZmV0Y2hfbGVha3Byb29mID0gdHJ1ZSwJLyogZmV0Y2ggcmV0 dXJucyBOVUxMIGZvciBiYWQgc3Vic2NyaXB0ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9zdWJzY3JpcHRpbmcuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3N1YnNjcmlwdGluZy5oCmlu ZGV4IGU5OTFmNGJmODI2Li4wMDgwNzZiOGI1NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvc3Vic2NyaXB0aW5nLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvc3Vic2NyaXB0aW5nLmgK QEAgLTk4LDYgKzk4LDI1IEBAIHR5cGVkZWYgdm9pZCAoKlN1YnNjcmlwdFRyYW5zZm9ybSkgKFN1 YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCQkJCQkJCQkJYm9vbCBpc1NsaWNlLAogCQkJCQkJCQkJ Ym9vbCBpc0Fzc2lnbm1lbnQpOwogCisvKgorICogU3Vic2NyaXB0VHJhbnNmb3JtUGFydGlhbCBp cyBhbiBhbHRlcm5hdGl2ZSB0byBTdWJzY3JpcHRUcmFuc2Zvcm0gZm9yCisgKiBjb250YWluZXIg dHlwZXMgdGhhdCBjYW4gYWNjZXB0IG5vbi1BX0luZGljZXMgaW5kaXJlY3Rpb24gYXMgaW5wdXQK KyAqIChlLmcuLCBKU09OQiBhY2NlcHRzIGRvdC1ub3RhdGlvbiAoU3RyaW5nIG5vZGUpIGZvciBm aWVsZCBhY2Nlc3MpLgorCisgKiBJdCBtYXkgdHJhbnNmb3JtIGEgcHJlZml4IG9mIHRoZSBpbmRp cmVjdGlvbiBsaXN0IGFuZCBsZWF2ZSB0aGUgcmVzdAorICogdW5wcm9jZXNzZWQuIEl0IHJldHVy bnMgdGhlIG51bWJlciBvZiBpbmRpcmVjdGlvbnMgaXQgdHJhbnNmb3JtZWQuCisgKiBUaGUgY2Fs bGVyIHdpbGwgdGhlbiByZW1vdmUgdGhhdCBtYW55IGl0ZW1zIGZyb20gdGhlIGhlYWQgb2YgdGhl CisgKiBsaXN0LCBhbmQgaGFuZGxlIHRoZSByZW1haW5pbmcgaW5kaXJlY3Rpb25zIGRpZmZlcmVu dGx5IG9yIHRvIHJhaXNlCisgKiBhbiBlcnJvciBhcyBuZWVkZWQuCisgKgorICogSWYgdHJhbnNm b3JtX3BhcnRpYWwgaXMgTlVMTCwgdGhlIGNvbXBsZXRlIHRyYW5zZm9ybSBmdW5jdGlvbiBpcyB1 c2VkLAorICogd2hpY2ggYWNjZXB0cyBvbmx5IEFfSW5kaWNlcyAoYnJhY2tldCkgbm9kZXMuCisg Ki8KK3R5cGVkZWYgaW50ICgqU3Vic2NyaXB0VHJhbnNmb3JtUGFydGlhbCkgKFN1YnNjcmlwdGlu Z1JlZiAqc2JzcmVmLAorCQkJCQkJCQkJCSAgTGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJCQkJCQkJ ICBQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJICBib29sIGlzQXNzaWdubWVudCk7CisK IC8qCiAgKiBUaGUgZXhlY19zZXR1cCBtZXRob2QgaXMgY2FsbGVkIGR1cmluZyBleGVjdXRvci1z dGFydHVwIGNvbXBpbGF0aW9uIG9mIGEKICAqIFN1YnNjcmlwdGluZ1JlZiBub2RlIGluIGFuIGV4 cHJlc3Npb24uICBJdCBtdXN0IGZpbGwgKm1ldGhvZHMgd2l0aCBwb2ludGVycwpAQCAtMTU3LDcg KzE3NiwxMCBAQCB0eXBlZGVmIHZvaWQgKCpTdWJzY3JpcHRFeGVjU2V0dXApIChjb25zdCBTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZiwKIC8qIFN0cnVjdCByZXR1cm5lZCBieSB0aGUgU1FMLXZpc2li bGUgc3Vic2NyaXB0IGhhbmRsZXIgZnVuY3Rpb24gKi8KIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlw dFJvdXRpbmVzCiB7Ci0JU3Vic2NyaXB0VHJhbnNmb3JtIHRyYW5zZm9ybTsJLyogcGFyc2UgYW5h bHlzaXMgZnVuY3Rpb24gKi8KKwlTdWJzY3JpcHRUcmFuc2Zvcm0gdHJhbnNmb3JtOwkvKiBwYXJz ZSBhbmFseXNpcyBmdW5jdGlvbiwgb3IgTlVMTCAqLworCVN1YnNjcmlwdFRyYW5zZm9ybVBhcnRp YWwgdHJhbnNmb3JtX3BhcnRpYWw7CS8qIGFsdGVybmF0aXZlIHBhcnNlCisJCQkJCQkJCQkJCQkJ ICogYW5hbHlzaXMgZnVuY3Rpb24sIG9yCisJCQkJCQkJCQkJCQkJICogTlVMTCAqLwogCVN1YnNj cmlwdEV4ZWNTZXR1cCBleGVjX3NldHVwOwkvKiBleHByZXNzaW9uIGNvbXBpbGF0aW9uIGZ1bmN0 aW9uICovCiAJYm9vbAkJZmV0Y2hfc3RyaWN0OwkvKiBpcyBmZXRjaCBTdWJzY3JpcHRSZWYgc3Ry aWN0PyAqLwogCWJvb2wJCWZldGNoX2xlYWtwcm9vZjsJLyogaXMgZmV0Y2ggU3Vic2NyaXB0UmVm IGxlYWtwcm9vZj8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2Rl LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IGY3ZDA3Yzg0NTQyLi44 MGY0ODZhY2ZmMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAor KysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC0zNjIsNyArMzYyLDggQEAg ZXh0ZXJuIFN1YnNjcmlwdGluZ1JlZiAqdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkJIE9pZCBjb250YWluZXJUeXBlLAogCQkJCQkJ CQkJCQkJCSBpbnQzMiBjb250YWluZXJUeXBNb2QsCiAJCQkJCQkJCQkJCQkJIExpc3QgKmluZGly ZWN0aW9uLAotCQkJCQkJCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCk7CisJCQkJCQkJCQkJCQkJ IGJvb2wgaXNBc3NpZ25tZW50LAorCQkJCQkJCQkJCQkJCSBpbnQgKmNvbnN1bWVkX2NvdW50KTsK IGV4dGVybiBDb25zdCAqbWFrZV9jb25zdChQYXJzZVN0YXRlICpwc3RhdGUsIEFfQ29uc3QgKmFj b25zdCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQQVJTRV9OT0RFX0ggKi8KLS0gCjIuMzkuNSAoQXBw bGUgR2l0LTE1NCkKCg== --0000000000000af497063f81a8e7 Content-Type: application/octet-stream; name="v22-0003-Export-jsonPathFromParseResult.patch" Content-Disposition: attachment; filename="v22-0003-Export-jsonPathFromParseResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfxa830q3 RnJvbSA2ZDQ4Y2ViMjA2MzkzMmI2NzllNjgxZWQ4NGQzY2NlOWI5MjE1ZGNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djIyIDMvNV0gRXhwb3J0IGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCkKClRoaXMgaXMgYSBwcmVw YXJhdGlvbiBzdGVwIGZvciBhIGZ1dHVyZSBjb21taXQgdGhhdCB3aWxsIHJldXNlIHRoZQphZm9y ZW1lbnRpb25lZCBmdW5jdGlvbi4KCkF1dGhvcmVkLWJ5OiBOaWtpdGEgR2x1a2hvdiA8Z2x1a2hv di5uLmFAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxleGFuZHJhIFdhbmcgPGFsZXhhbmRyYS53 YW5nLm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1 bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5 N0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIHwgMTkgKysrKysrKysrKysrKysrLS0t LQogc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaCAgICAgfCAgNCArKysrCiAyIGZpbGVzIGNo YW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGguYwppbmRleCA3NjJmN2U4YTA5ZC4uYzgzNzc0YjJhMTYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29ucGF0aC5jCkBAIC0xNjYsMTUgKzE2NiwxMyBAQCBqc29ucGF0aF9zZW5kKFBHX0ZVTkNUSU9O X0FSR1MpCiAgKiBDb252ZXJ0cyBDLXN0cmluZyB0byBhIGpzb25wYXRoIHZhbHVlLgogICoKICAq IFVzZXMganNvbnBhdGggcGFyc2VyIHRvIHR1cm4gc3RyaW5nIGludG8gYW4gQVNULCB0aGVuCi0g KiBmbGF0dGVuSnNvblBhdGhQYXJzZUl0ZW0oKSBkb2VzIHNlY29uZCBwYXNzIHR1cm5pbmcgQVNU IGludG8gYmluYXJ5CisgKiBqc29uUGF0aEZyb21QYXJzZVJlc3VsdCgpIGRvZXMgc2Vjb25kIHBh c3MgdHVybmluZyBBU1QgaW50byBiaW5hcnkKICAqIHJlcHJlc2VudGF0aW9uIG9mIGpzb25wYXRo LgogICovCiBzdGF0aWMgRGF0dW0KIGpzb25QYXRoRnJvbUNzdHJpbmcoY2hhciAqaW4sIGludCBs ZW4sIHN0cnVjdCBOb2RlICplc2NvbnRleHQpCiB7CiAJSnNvblBhdGhQYXJzZVJlc3VsdCAqanNv bnBhdGggPSBwYXJzZWpzb25wYXRoKGluLCBsZW4sIGVzY29udGV4dCk7Ci0JSnNvblBhdGggICAq cmVzOwotCVN0cmluZ0luZm9EYXRhIGJ1ZjsKIAogCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVz Y29udGV4dCkpCiAJCXJldHVybiAoRGF0dW0pIDA7CkBAIC0xODUsOCArMTgzLDIxIEBAIGpzb25Q YXRoRnJvbUNzdHJpbmcoY2hhciAqaW4sIGludCBsZW4sIHN0cnVjdCBOb2RlICplc2NvbnRleHQp CiAJCQkJIGVycm1zZygiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIs ICJqc29ucGF0aCIsCiAJCQkJCQlpbikpKTsKIAorCXJldHVybiBqc29uUGF0aEZyb21QYXJzZVJl c3VsdChqc29ucGF0aCwgNCAqIGxlbiwgZXNjb250ZXh0KTsKK30KKworLyoKKyAqIENvbnZlcnRz IGpzb25wYXRoIEFic3RyYWN0IFN5bnRheCBUcmVlIChBU1QpIGludG8ganNvbnBhdGggdmFsdWUg aW4gYmluYXJ5LgorICovCitEYXR1bQoranNvblBhdGhGcm9tUGFyc2VSZXN1bHQoY29uc3QgSnNv blBhdGhQYXJzZVJlc3VsdCAqanNvbnBhdGgsIGludCBlc3RpbWF0ZWRfbGVuLAorCQkJCQkJc3Ry dWN0IE5vZGUgKmVzY29udGV4dCkKK3sKKwlKc29uUGF0aCAgICpyZXM7CisJU3RyaW5nSW5mb0Rh dGEgYnVmOworCiAJaW5pdFN0cmluZ0luZm8oJmJ1Zik7Ci0JZW5sYXJnZVN0cmluZ0luZm8oJmJ1 ZiwgNCAqIGxlbiAvKiBlc3RpbWF0aW9uICovICk7CisJZW5sYXJnZVN0cmluZ0luZm8oJmJ1Ziwg ZXN0aW1hdGVkX2xlbik7CiAKIAlhcHBlbmRTdHJpbmdJbmZvU3BhY2VzKCZidWYsIEpTT05QQVRI X0hEUlNaKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKaW5kZXggMjNhNzZkMjMzZTkuLjA5NThiYzIyYmI2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL2pzb25wYXRoLmgKQEAgLTI4MSw2ICsyODEsMTAgQEAgZXh0ZXJuIEpzb25QYXRo UGFyc2VSZXN1bHQgKnBhcnNlanNvbnBhdGgoY29uc3QgY2hhciAqc3RyLCBpbnQgbGVuLAogZXh0 ZXJuIGJvb2wganNwQ29udmVydFJlZ2V4RmxhZ3ModWludDMyIHhmbGFncywgaW50ICpyZXN1bHQs CiAJCQkJCQkJCSBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KTsKIAorZXh0ZXJuIERhdHVtIGpzb25Q YXRoRnJvbVBhcnNlUmVzdWx0KGNvbnN0IEpzb25QYXRoUGFyc2VSZXN1bHQgKmpzb25wYXRoLAor CQkJCQkJCQkJIGludCBlc3RpbWF0ZWRfbGVuLAorCQkJCQkJCQkJIHN0cnVjdCBOb2RlICplc2Nv bnRleHQpOworCiAvKgogICogU3RydWN0IGZvciBkZXRhaWxzIGFib3V0IGV4dGVybmFsIHZhcmlh YmxlcyBwYXNzZWQgaW50byBqc29ucGF0aCBleGVjdXRvcgogICovCi0tIAoyLjM5LjUgKEFwcGxl IEdpdC0xNTQpCgo= --0000000000000af497063f81a8e7--