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 1rrNiW-000HmI-9W for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Apr 2024 19:53:18 +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 1rrNhW-001D9z-4k for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Apr 2024 19:52:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rrNhV-001D9q-Dp for pgsql-hackers@lists.postgresql.org; Mon, 01 Apr 2024 19:52:14 +0000 Received: from mail-cpzbra01olkn2079.outbound.protection.outlook.com ([40.92.97.79] helo=BRA01-CPZ-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rrNhO-00027S-Fz for pgsql-hackers@postgresql.org; Mon, 01 Apr 2024 19:52:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hvlwyb2LzqK3+ap/CVsFjY3WzuJETJsYW9C2ms2eSJlYi3CkwyjOZ+P7FY90hGb7aNXIZHiFSmwF8QFXlDua3MAtV4itQ662HdE5o9uceQXIofCwWMT0YMStUFuPRML6XrZw1rxQuZNl1yg9xLAQ82VM7PSZ2/rS5AiYLFCRDYQW5tMumqEwC3Nh9oG5Fg23By9rE1JnYZDoG8IyLoboxxNppH20RXm1e5HvhkfMztBvN29UC5PYatOHc9MubvZnTPMYgBZXoTai3tlKYqhWBuaVjTjhQiJHhSD6eX3QTwzzliWiPqPzrAGkRDQIPDhtS5bOpPiu+ha+ArlSlR2ygg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Nh63UI6BO1biGxvisSjC/ptnKfL6WNTG363UBeJ3R5Q=; b=UJegy8zaP/+iIhmzWKiaGlXjA1gAhE1xMKJgx9OHz2nPebmenLOs7VPHWY7aSkjJplef3W1GjzIRcKMIg9piZ0Y0Gy+vyYhKkgdwZ/iw7dySmZffHZ/Iu+TqAYDFYEBQPMqC6jDZJQMuuoG8iAQL3IILHyth6Gx01NcwbKsdJMmdbKF8atZWp+wNtONeNe6WG8+MbXVxfU46OKDj3z7DzquUPMAAiT/1SJXNZCuZWYhIRTWrvxpdxJTBQ0Yk2qcSxHhvNcUsu+vtvZ+Wa9jLiw3SZnS/RScwQCPFemCC+OSLzrOiUntYlfz/QZqam2q79SgiH4VrNnta6wmutDkc4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=HOTMAIL.COM.BR; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Nh63UI6BO1biGxvisSjC/ptnKfL6WNTG363UBeJ3R5Q=; b=JoPxvkVR0NIcqMlcj2UBzdNFQfVpV3STqu8aREVQ2exWVqI4i1GF+rr96zmX2xy5nqFLMvyo8OGt6rgDk33aDaK9QcHL6PFZM/BRS+pjoRBiG7M+Qz8q0ql8cze33ACPt09qrXL+BOuAmvvmP5+rP7kAupQPj0Ea0nUYR6dBBiycKZ07isPF8t5dPtCuYRmph/TEz+06x9FZ2exgMC6yypGVI6n2Or2QJ3vVIkzhgG4FzK8+RmdPUMnGshvwuBrCQskNi4M8fy7NsFh53b20GezT7gfuF95+AHBAZJQqTe2afhgRcDnXmZW9DDC1znQo/ygrRxYi7D9xTTvkzpL7Lg== Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:2dc::11) by CP4P284MB2351.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:1ae::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Mon, 1 Apr 2024 19:51:57 +0000 Received: from CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf]) by CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM ([fe80::ce6:bf75:3d4a:97cf%2]) with mapi id 15.20.7409.042; Mon, 1 Apr 2024 19:51:57 +0000 From: Maiquel Grassi To: Alvaro Herrera CC: "Imseih (AWS), Sami" , Nathan Bossart , Jim Jones , Pavel Luzanov , Erik Wienhold , "pgsql-hackers@postgresql.org" Subject: RE: Psql meta-command conninfo+ Thread-Topic: Psql meta-command conninfo+ Thread-Index: AQHaWRQuU7L2MD2CX0quiO/hLxQK8bD9n9eAgAAOagCAABlrgoAABsOAgAABrYCAAAkRMoAAAaIAgABfmwKAAJe3AIAAHVoLgAAnEwCAADA+O4ABA4CAgAA4UGOAASa0gIAFGF5sgAMAW4CAAhkLZoAAKvw7gADbloCAAE0igIABWfsIgAuJhgCAB/CkKIAAC8uAgBw7NcOADZap04AAUMWAgAGR1mOAAHdjgIACiLFvgAAUk4CAAdeovIAA42QAgABCwhyAABnUgIAAM/Z8 Date: Mon, 1 Apr 2024 19:51:57 +0000 Message-ID: References: <202404011622.eppdne4344lo@alvherre.pgsql> In-Reply-To: <202404011622.eppdne4344lo@alvherre.pgsql> Accept-Language: pt-BR, en-US Content-Language: pt-BR X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [Cnrk8SuEZlRRf5jdIM6moDRME/t4RVT3jN9p40q2wuigI/YBwcs0/TdrpDOc/LUU] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CP8P284MB2496:EE_|CP4P284MB2351:EE_ x-ms-office365-filtering-correlation-id: a8e07e8c-6738-4cbb-c9f8-08dc5285307b x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jS4ZUnM3RXd9q0t8Bu6Vz7P7+I0fIZZp1XeB/Z6SVpxpNOftQY90Auk651DOaIh0s1OPgIruuDhSFHIAVsepVnjyvyC/HnMAz8iNGf9ZtYpRVwk5Xt5q19emazo49SH/VpQvvPrMkRcuAmuF+t+Dvz2wTAZk/8hHHzQfCZkRqsBMCQCFnQQZ6oWtaSSzgb9KkKwN07LQXWRJt+ptwMUpbU1Gx0QTSHZLfvTFeNiJ10tlXmvO1JWXyKmyO91B54/O84SMZG3QjJuL7FG1+cjVXtNHdKbhNZi+UlOJca2Sw6vGOt8M94weW9S5B6GfJlzXgovg7m6GDnmmhBP/1wUTcMQVn9aqNq5tNwU8TIsKh7KVLkEdCwwCg5eAfGl43dEDEHLuHZoktf2VRW0bt09IlZbWNhxWF133jn4n4lSqh12muYFFcIsa4kik8oSKVdCq/5DxfYxT8fK9sGtfy5cazI3Muihec+Ww9Xfnvz3b1eD+etN2cSmcO6ZcIRboptPPUycVQ5U1cRxY+hCDe36eBWMHtEsQwWLCHe8EEo9DYSJR78gdlBQWQ3T5maDfMd6975fibbiqnGF5BBFAwdiR16+au7RJz0AzwIWdXHG8WPBECYFXMHoJ/pYu/jF3MZ1A x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?7+xNTcn5o7/FPdEr7g0W0Q9SdjPlIrz6paCx1L650LyHzk1t+uP+KhPT7z?= =?iso-8859-1?Q?SXv1oznAmec0wV4ZBo4tgYsv6ouOgxNc1tq7gAygkndyHunEOCznYCHvyJ?= =?iso-8859-1?Q?IOje19VfJMsvWh7YoUFGLYNlrWE0son8vS+c2Gzj8wudhfzZMSTxD1l8hT?= =?iso-8859-1?Q?98SJ1c8hVrG21NtEweMOOOg8zSm18j8fYmadt3jtH7ZLzLBVxmgcHySnQA?= =?iso-8859-1?Q?/XoMD3cT8HNtYNp82yPImjrtxHgbxE9tG7/AJRI9WUYUujZESN7PK4EBKY?= =?iso-8859-1?Q?hfCt5v5noSgocAL/yXntEHe8mvFg831aB2U9kH7gSRkDi3vldd8E6vjSkN?= =?iso-8859-1?Q?+0JaiO95ATJM+WUuFTFpS0NjQ8655Ek5llmdoQpNfuLX1Sq6cB/YkzjkT3?= =?iso-8859-1?Q?NFdzdbnm/x0AJPVLqfcfjD4AE2MJ3otcDAu1XbeFvV/SPdx6sl7Y+mzttA?= =?iso-8859-1?Q?DFcWzgLgLntutV0eGwtfrYYM/ZiXlRrnwkHMQz5JpG685YSxGYMDz+wD3l?= =?iso-8859-1?Q?YtAPKHxi/YPXH6IA3+KrvHlRF/TFwU/rQVVTwfHuYS1EW96WIVKtWHqxDa?= =?iso-8859-1?Q?8DJxc5WvV9JqcInMbstI8IrQKkilvKvqmp0zkrRf76GE2MPi2SHnTtsXRy?= =?iso-8859-1?Q?5SYttZ8XhnArEprTG8DorKEGzo6zKYDPqO4WP3alVaZlQyI3SDcLVrk3vW?= =?iso-8859-1?Q?Wa4l4KQnTs1YqqP3koaBWAgoaLDDo1leQXtJ1r2UEeEAikYF9LzHj2Eapi?= =?iso-8859-1?Q?uaa+YuJkIo+9najioEolnbEk9NLHdjk3WdhdS9Fzdekg0Glx4WZouWF086?= =?iso-8859-1?Q?cvacZZ94qaHAAF72QcpT0cLS4k0bJb2p7P465X+6nFlsyMFc2SsI1xzTOP?= =?iso-8859-1?Q?cM6NA8r6kOFH8oE+w+ytKJX1KWbDbBoUm2aAewiZJ14z269moaDPHIXCZP?= =?iso-8859-1?Q?Wb/aq94aDnpN2mL72bhbtjdhqqsPBAerQRwgvuV9uGaZ3I3/Ol+MVfAVke?= =?iso-8859-1?Q?89uzBenXg1VTaalPVNKaQWZLexRJyxrdwTQR0jVnMxExoUBaM6IP8syMRf?= =?iso-8859-1?Q?xNIwLCwz15XFnsdSN9axv5zZPZ5vOcxcN7Ve82lNaLXPIyugRTFRuPHl6G?= =?iso-8859-1?Q?zLQkFVeJ2T8hgBLgnY2JWsv/DaD+sAOZl0St32jFBA3bzHiQdpIuo6PB3S?= =?iso-8859-1?Q?UZOvLnQHPMlAvAV2SSxrGiNCo4TqpTcWZrqI4yHZhxb2CQ24/JkKca0GMW?= =?iso-8859-1?Q?AWKmFxcQwqTrMrkghBhENj1BIinVXYYSHVKI3oTRIuJKIjYk1vEwh1omA6?= =?iso-8859-1?Q?+Oh/mXRw1xKnIf2eSnMb6pluHPAASj+KqkLduCzvThcFWrg=3D?= Content-Type: multipart/mixed; boundary="_004_CP8P284MB2496932B19ABB2394DECF69FEC3F2CP8P284MB2496BRAP_" MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-7dc52.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CP8P284MB2496.BRAP284.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: a8e07e8c-6738-4cbb-c9f8-08dc5285307b X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2024 19:51:57.7115 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CP4P284MB2351 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_CP8P284MB2496932B19ABB2394DECF69FEC3F2CP8P284MB2496BRAP_ Content-Type: multipart/alternative; boundary="_000_CP8P284MB2496932B19ABB2394DECF69FEC3F2CP8P284MB2496BRAP_" --_000_CP8P284MB2496932B19ABB2394DECF69FEC3F2CP8P284MB2496BRAP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Amigos, boa tarde! (v25) > if (pset.version >=3D 140000) > one thing; > else if (pset.version > 90500) > second thing; > else > third thing; > > This also appears where you add the GSSAPI columns; and it's also in t= he > final part where you append the FROM clause, though it looks a bit > different there. > > - You have three lines to output a semicolon at the end of the query > based on version number. Remove the first two, and just have a final > one where the semicolon is added unconditionally. Adjustment made. > - I don't think one for each item in the docs is reasonable. > There's too much vertical whitespace in the output. Maybe do this > instead: > > [...] > database connection. When + is appended, > more details about the connection are displayed in table > format: > > > > Database: The name of the current > database on this connection. > > > > Authenticated User: The authenticated > user at the time of psql connection with the server. > > > ... > Adjustment made. But I think it needs a review glance. > - This text is wrong to start with "Returns the": > > System User: Returns the authentication method and the identity (if > any) that the user presented during the authentication cycle before > they were assigned a database role. It is represented as > auth_method:identity or NULL if the user has not been authenticated. > > That minor point aside, I disagree with Sami about repeating the docs > for system_user() here. I would just say "The authentication data > provided for this connection; see the function system_user() for more > details." with a link to the appropriate section of the docs. Making > us edit this doc if we ever modify the behavior of the function is no= t > great. Here I considered your suggestion (Sami and =C1lvaro's). However, I haven't= yet added the links for the functions system_user(), current_user(), and sessio= n_user(). I'm not sure how to do it. Any suggestion on how to create/add the link? Regards, Maiquel Grassi. --_000_CP8P284MB2496932B19ABB2394DECF69FEC3F2CP8P284MB2496BRAP_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Amigos, boa tarde!

(v25)

>    if (pset.version >=3D 140000)
>      one thing;
>    else if (pset.version > 90500)
>      second thing;
>   else
>      third thing;
>
>    This also appears where you add the GSSAPI columns; and i= t's also in the
>    final part where you append the FROM clause, though = it looks a bit
>    different there.
>
>    - You have three lines to output a semicolon at the = end of the query
>    based on version number.  Remove the first two,= and just have a final
>    one where the semicolon is added unconditionally.
Adjustment made.

>      - I don't think one <para> for eac= h item in the docs is reasonable.
>      There's too much vertical whitespace in = the output.  Maybe do this
>      instead:
>
>        [...]
>        database connection. When &l= t;literal>+</literal> is appended,
>        more details about the conne= ction are displayed in table
>        format:
>
>        <simplelist>
>         <member>
>          <term>Data= base:</term> The name of the current
>          database on this= connection.
>         </member>
>
>         <member>
>           <term&g= t;Authenticated User:</term> The authenticated
>           user at th= e time of psql connection with the server.
>         </member>
>        
>         ...
>        </simplelist>

Adjustment made. But I think it needs a review glance.

>      - This text is wrong to start with "= ;Returns the":
>
>      System User: Returns the authentication metho= d and the identity (if
>      any) that the user presented during the authentica= tion cycle before
>      they were assigned a database role. It is rep= resented as
>      auth_method:identity or NULL if the user has = not been authenticated.
>
>     That minor point aside, I disagree with Sami about = repeating the docs
>     for system_user() here.  I would just say &quo= t;The authentication data
>     provided for this connection; see the function= system_user() for more
>     details." with a link to the appropriate secti= on of the docs.  Making
>     us edit this doc if we ever modify the behavio= r of the function is not
>     great.

Here I considered your suggestion (Sami and =C1lvaro's). However, I haven't= yet
added the links for the functions system_user(), current_user(), and sessio= n_user().
I'm not sure how to do it. Any suggestion on how to create/add the link?
Regards,
Maiquel Grassi.
--_000_CP8P284MB2496932B19ABB2394DECF69FEC3F2CP8P284MB2496BRAP_-- --_004_CP8P284MB2496932B19ABB2394DECF69FEC3F2CP8P284MB2496BRAP_ Content-Type: application/octet-stream; name="v25-0001-psql-meta-command-conninfo-plus.patch" Content-Description: v25-0001-psql-meta-command-conninfo-plus.patch Content-Disposition: attachment; filename="v25-0001-psql-meta-command-conninfo-plus.patch"; size=16070; creation-date="Mon, 01 Apr 2024 19:50:53 GMT"; modification-date="Mon, 01 Apr 2024 19:51:45 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCBjYzdkNzk3Li44MWQ0ZTZkIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCkBAIC0xMDI5LDEyICsxMDI5LDEyMSBAQCBJTlNFUlQgSU5UTyB0YmwxIFZBTFVF UyAoJDEsICQyKSBcYmluZCAnZmlyc3QgdmFsdWUnICdzZWNvbmQgdmFsdWUnIFxnCiAgICAgICA8 L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iYXBwLXBzcWwtbWV0YS1j b21tYW5kLWNvbm5pbmZvIj4KLSAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGNvbm5pbmZvPC9saXRl cmFsPjwvdGVybT4KLSAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICA8cGFyYT4KLSAgICAgICAg T3V0cHV0cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBkYXRhYmFzZSBjb25uZWN0aW9u LgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPHRlcm0+PGxp dGVyYWw+XGNvbm5pbmZvWytdPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgor ICAgICAgICBPdXRwdXRzIGEgc3RyaW5nIGRpc3BsYXlpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhl IGN1cnJlbnQKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbi4gV2hlbiA8bGl0ZXJhbD4rPC9s aXRlcmFsPiBpcyBhcHBlbmRlZCwKKyAgICAgICAgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBjb25u ZWN0aW9uIGFyZSBkaXNwbGF5ZWQgaW4gdGFibGUKKyAgICAgICAgZm9ybWF0OgorCisgICAgICAg IDxzaW1wbGVsaXN0PgorICAgICAgICAgPG1lbWJlcj4KKyAgICAgICAgICA8dGVybT5EYXRhYmFz ZTo8L3Rlcm0+IFRoZSBkYXRhYmFzZSBuYW1lIG9mIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAg PC9tZW1iZXI+CisKKyAgICAgICAgIDxtZW1iZXI+CisgICAgICAgICAgPHRlcm0+QXV0aGVudGlj YXRlZCBVc2VyOjwvdGVybT4gVGhlIGF1dGhlbnRpY2F0ZWQgZGF0YWJhc2UKKyAgICAgICAgICB1 c2VyIG9mIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAgPC9tZW1iZXI+CisKKyAgICAgICAgIDxt ZW1iZXI+CisgICAgICAgICAgPHRlcm0+U29ja2V0IERpcmVjdG9yeTo8L3Rlcm0+IFRoZSBVbml4 IHNvY2tldCBkaXJlY3Rvcnkgb2YKKyAgICAgICAgICB0aGUgY29ubmVjdGlvbi4gTlVMTCBpZiBo b3N0IG9yIGhvc3RhZGRyIGFyZSBzcGVjaWZpZWQuCisgICAgICAgICA8L21lbWJlcj4KKworICAg ICAgICAgPG1lbWJlcj4KKyAgICAgICAgICA8dGVybT5Ib3N0OjwvdGVybT4gVGhlIGhvc3QgbmFt ZSBvciBhZGRyZXNzIG9mIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAgIE5VTEwgaWYgYSBVbml4 IHNvY2tldCBpcyB1c2VkLgorICAgICAgICAgPC9tZW1iZXI+CisKKyAgICAgICAgIDxtZW1iZXI+ CisgICAgICAgICAgPHRlcm0+U2VydmVyIFBvcnQ6PC90ZXJtPiBUaGUgSVAgYWRkcmVzcyBvZiB0 aGUgY29ubmVjdGlvbi4KKyAgICAgICAgICBOVUxMIGlmIGEgVW5peCBzb2NrZXQgaXMgdXNlZC4K KyAgICAgICAgIDwvbWVtYmVyPgorCisgICAgICAgICA8bWVtYmVyPgorICAgICAgICAgIDx0ZXJt PlNlcnZlciBBZGRyZXNzOjwvdGVybT4gVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGhvc3QgbmFtZS4K KyAgICAgICAgICBOVUxMIGlmIGEgVW5peCBzb2NrZXQgaXMgdXNlZC4KKyAgICAgICAgIDwvbWVt YmVyPgorCisgICAgICAgICA8bWVtYmVyPgorICAgICAgICAgIDx0ZXJtPkNsaWVudCBBZGRyZXNz OjwvdGVybT4gVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGNsaWVudCBjb25uZWN0ZWQKKyAgICAgICAg ICB0byB0aGlzIGJhY2tlbmQuIE5VTEwgaWYgYSBVbml4IHNvY2tldCBpcyB1c2VkLgorICAgICAg ICAgPC9tZW1iZXI+CisKKyAgICAgICAgIDxtZW1iZXI+CisgICAgICAgICAgPHRlcm0+Q2xpZW50 IFBvcnQ6PC90ZXJtPiBUaGUgcG9ydCBvZiB0aGUgY2xpZW50IGNvbm5lY3RlZCB0byB0aGlzCisg ICAgICAgICAgYmFja2VuZC4gTlVMTCBpZiBhIFVuaXggc29ja2V0IGlzIHVzZWQuCisgICAgICAg ICA8L21lbWJlcj4KKworICAgICAgICAgPG1lbWJlcj4KKyAgICAgICAgICA8dGVybT5CYWNrZW5k IFBJRDo8L3Rlcm0+IFRoZSBwcm9jZXNzIGlkIG9mIHRoZSBiYWNrZW5kIGZvciB0aGUgY29ubmVj dGlvbi4KKyAgICAgICAgIDwvbWVtYmVyPgorCisgICAgICAgICA8bWVtYmVyPgorICAgICAgICAg IDx0ZXJtPlN5c3RlbSBVc2VyOjwvdGVybT4gVGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEgcHJvdmlk ZWQgZm9yIHRoaXMKKyAgICAgICAgICBjb25uZWN0aW9uOyBzZWUgdGhlIGZ1bmN0aW9uIHN5c3Rl bV91c2VyKCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgICAgIDwvbWVtYmVyPgorCisgICAgICAg ICA8bWVtYmVyPgorICAgICAgICAgIDx0ZXJtPkN1cnJlbnQgVXNlcjo8L3Rlcm0+IFRoZSB1c2Vy IG5hbWUgb2YgdGhlIGN1cnJlbnQKKyAgICAgICAgICBleGVjdXRpb24gY29udGV4dDsgc2VlIHRo ZSBmdW5jdGlvbiBjdXJyZW50X3VzZXIoKSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgICAgPC9t ZW1iZXI+CisKKyAgICAgICAgIDxtZW1iZXI+CisgICAgICAgICAgPHRlcm0+U2Vzc2lvbiBVc2Vy OjwvdGVybT4gVGhlIHNlc3Npb24gdXNlcidzIG5hbWU7IHNlZSB0aGUKKyAgICAgICAgICBmdW5j dGlvbiBzZXNzaW9uX3VzZXIoKSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgICAgPC9tZW1iZXI+ CisKKyAgICAgICAgIDxtZW1iZXI+CisgICAgICAgICAgPHRlcm0+QXBwbGljYXRpb24gTmFtZTo8 L3Rlcm0+IDxsaXRlcmFsPnBzcWw8L2xpdGVyYWw+IGlzIHRoZQorICAgICAgICAgIGRlZmF1bHQg Zm9yIGEgcHNxbCBjb25uZWN0aW9uIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkIGluCisgICAg ICAgICAgdGhlIDx4cmVmIGxpbmtlbmQ9Imd1Yy1hcHBsaWNhdGlvbi1uYW1lIi8+IGNvbmZpZ3Vy YXRpb24gcGFyYW1ldGVyLgorICAgICAgICAgPC9tZW1iZXI+CisKKyAgICAgICAgIDxtZW1iZXI+ CisgICAgICAgICAgPHRlcm0+U1NMIENvbm5lY3Rpb246PC90ZXJtPiBUcnVlIGlmIHRoZSBjdXJy ZW50IGNvbm5lY3Rpb24gdG8gdGhlCisgICAgICAgICAgc2VydmVyIHVzZXMgU1NMLCBhbmQgZmFs c2Ugb3RoZXJ3aXNlLgorICAgICAgICAgPC9tZW1iZXI+CisKKyAgICAgICAgIDxtZW1iZXI+Cisg ICAgICAgICAgPHRlcm0+U1NMIFByb3RvY29sOjwvdGVybT4gVGhlIG5hbWUgb2YgdGhlIHByb3Rv Y29sIHVzZWQgZm9yIHRoZSBTU0wKKyAgICAgICAgICBjb25uZWN0aW9uIChlLmcuLCBUTFN2MS4w LCBUTFN2MS4xLCBUTFN2MS4yIG9yIFRMU3YxLjMpLgorICAgICAgICAgPC9tZW1iZXI+CisKKyAg ICAgICAgIDxtZW1iZXI+CisgICAgICAgICAgPHRlcm0+U1NMIENpcGhlcjo8L3Rlcm0+IERpc3Bs YXlzIHRoZSBuYW1lIG9mIHRoZSBjaXBoZXIgdXNlZAorICAgICAgICAgIGZvciB0aGUgU1NMIGNv bm5lY3Rpb24gKGUuZy4sIERIRS1SU0EtQUVTMjU2LVNIQSkuCisgICAgICAgICA8L21lbWJlcj4K KworICAgICAgICAgPG1lbWJlcj4KKyAgICAgICAgICA8dGVybT5TTEwgQ29tcHJlc3Npb246PC90 ZXJtPiBPbiBpZiBTU0wgY29tcHJlc3Npb24gaXMgaW4gdXNlLCBvZmYKKyAgICAgICAgICBpZiBu b3QsIG9yIE5VTEwgaWYgU1NMIGlzIG5vdCBpbiB1c2Ugb24gdGhpcyBjb25uZWN0aW9uLgorICAg ICAgICAgPC9tZW1iZXI+CisKKyAgICAgICAgIDxtZW1iZXI+CisgICAgICAgICAgPHRlcm0+R1NT QVBJIEF1dGhlbnRpY2F0ZWQ6PC90ZXJtPiBUcnVlIGlmIEdTU0FQSSBpcyBpbiB1c2UsIG9yIGZh bHNlCisgICAgICAgICAgaWYgR1NTQVBJIGlzIG5vdCBpbiB1c2Ugb24gdGhpcyBjb25uZWN0aW9u LgorICAgICAgICAgPC9tZW1iZXI+CisKKyAgICAgICAgIDxtZW1iZXI+CisgICAgICAgICAgPHRl cm0+R1NTQVBJIFByaW5jaXBhbDo8L3Rlcm0+ICJQcmluY2lwYWwiIHVzZWQgdG8gYXV0aGVudGlj YXRlIHRoaXMKKyAgICAgICAgICBjb25uZWN0aW9uLCBvciBOVUxMIGlmIEdTU0FQSSB3YXMgbm90 IHVzZWQgdG8gYXV0aGVudGljYXRlIHRoaXMgY29ubmVjdGlvbi4KKyAgICAgICAgICBUaGlzIGZp ZWxkIGlzIHRydW5jYXRlZCBpZiB0aGUgcHJpbmNpcGFsIGlzIGxvbmdlciB0aGFuIE5BTUVEQVRB TEVOCisgICAgICAgICAgKDY0IGNoYXJhY3RlcnMgaW4gYSBzdGFuZGFyZCBidWlsZCkuCisgICAg ICAgICA8L21lbWJlcj4KKworICAgICAgICAgPG1lbWJlcj4KKyAgICAgICAgICA8dGVybT5HU1NB UEkgRW5jcnlwdGVkOjwvdGVybT4gVHJ1ZSBpZiBHU1NBUEkgZW5jcnlwdGlvbiBpcyBpbiB1c2Ug b24KKyAgICAgICAgICB0aGlzIGNvbm5lY3Rpb24sIG9yIGZhbHNlIGlmIGVuY3J5cHRpb24gaXMg bm90IGluIHVzZS4KKyAgICAgICAgIDwvbWVtYmVyPgorCisgICAgICAgICA8bWVtYmVyPgorICAg ICAgICAgIDx0ZXJtPkdTU0FQSSBDcmVkZW50aWFscyBEZWxlZ2F0ZWQ6PC90ZXJtPiBUcnVlIGlm IEdTU0FQSSBjcmVkZW50aWFscworICAgICAgICAgIHdlcmUgZGVsZWdhdGVkIG9uIHRoaXMgY29u bmVjdGlvbiwgb3IgZmFsc2UgaWYgd2VyZSBub3QgZGVsZWdhdGVkLgorICAgICAgICAgPC9tZW1i ZXI+CisgICAgICAgIDwvc2ltcGxlbGlzdD4KKyAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92 YXJsaXN0ZW50cnk+CiAKICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImFwcC1wc3FsLW1ldGEtY29t bWFuZHMtY29weSI+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jIGIvc3JjL2Jp bi9wc3FsL2NvbW1hbmQuYwppbmRleCA5YjBmYTA0Li5hZjM4OWQ0IDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKQEAgLTY4LDcg KzY4LDggQEAgc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfQyhQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW4KIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQg ZXhlY19jb21tYW5kX2Nvbm5lY3QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2 ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfY2QoUHNxbFNj YW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJCQkJCQkJCQkgICBjb25z dCBjaGFyICpjbWQpOwotc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfY29ubmlu Zm8oUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOworc3RhdGlj IGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfY29ubmluZm8oUHNxbFNjYW5TdGF0ZSBzY2Fu X3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCisJCQkJCQkJCQkJCSBjb25zdCBjaGFyICpjbWQp Owogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfY29weShQc3FsU2NhblN0YXRl IHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0 IGV4ZWNfY29tbWFuZF9jb3B5cmlnaHQoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFj dGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfY3Jvc3N0 YWJ2aWV3KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKQEAg LTMxNyw4ICszMTgsOCBAQCBleGVjX2NvbW1hbmQoY29uc3QgY2hhciAqY21kLAogCQlzdGF0dXMg PSBleGVjX2NvbW1hbmRfY29ubmVjdChzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNl IGlmIChzdHJjbXAoY21kLCAiY2QiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfY2Qo c2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCwgY21kKTsKLQllbHNlIGlmIChzdHJjbXAoY21kLCAi Y29ubmluZm8iKSA9PSAwKQotCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfY29ubmluZm8oc2Nhbl9z dGF0ZSwgYWN0aXZlX2JyYW5jaCk7CisJZWxzZSBpZiAoc3RyY21wKGNtZCwgImNvbm5pbmZvIikg PT0gMCB8fCBzdHJjbXAoY21kLCAiY29ubmluZm8rIikgPT0gMCkKKwkJc3RhdHVzID0gZXhlY19j b21tYW5kX2Nvbm5pbmZvKHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gsIGNtZCk7CiAJZWxzZSBp ZiAocGdfc3RyY2FzZWNtcChjbWQsICJjb3B5IikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21t YW5kX2NvcHkoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNt ZCwgImNvcHlyaWdodCIpID09IDApCkBAIC02NDMsNDcgKzY0NCw3OSBAQCBleGVjX2NvbW1hbmRf Y2QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNo YXIgKmNtZCkKIH0KIAogLyoKLSAqIFxjb25uaW5mbyAtLSBkaXNwbGF5IGluZm9ybWF0aW9uIGFi b3V0IHRoZSBjdXJyZW50IGNvbm5lY3Rpb24KKyAqIFxjb25uaW5mbywgXGNvbm5pbmZvKyAtLSBk aXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGNvbm5lY3Rpb24KICAqLwogc3Rh dGljIGJhY2tzbGFzaFJlc3VsdAotZXhlY19jb21tYW5kX2Nvbm5pbmZvKFBzcWxTY2FuU3RhdGUg c2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKQorZXhlY19jb21tYW5kX2Nvbm5pbmZvKFBz cWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpj bWQpCiB7CisJYm9vbAkJc3VjY2VzcyA9IHRydWU7CisKIAlpZiAoYWN0aXZlX2JyYW5jaCkKIAl7 CiAJCWNoYXIJICAgKmRiID0gUFFkYihwc2V0LmRiKTsKKwkJYm9vbAkJc2hvd192ZXJib3NlOwor CisJCXNob3dfdmVyYm9zZSA9IHN0cmNocihjbWQsICcrJykgPyB0cnVlIDogZmFsc2U7CiAKLQkJ aWYgKGRiID09IE5VTEwpCi0JCQlwcmludGYoXygiWW91IGFyZSBjdXJyZW50bHkgbm90IGNvbm5l Y3RlZCB0byBhIGRhdGFiYXNlLlxuIikpOworCQkvKgorCQkgKiBcY29ubmluZm8rCisJCSAqLwor CQlpZiAoc2hvd192ZXJib3NlKQorCQkJc3VjY2VzcyA9IGxpc3RDb25uZWN0aW9uSW5mb3JtYXRp b24oKTsKKworCQkvKgorCQkgKiBcY29ubmluZm8KKwkJICovCiAJCWVsc2UKIAkJewotCQkJY2hh cgkgICAqaG9zdCA9IFBRaG9zdChwc2V0LmRiKTsKLQkJCWNoYXIJICAgKmhvc3RhZGRyID0gUFFo b3N0YWRkcihwc2V0LmRiKTsKKwkJCVBHcmVzdWx0ICAgKnJlczsKKwkJCVBRRXhwQnVmZmVyRGF0 YSBidWY7CiAKLQkJCWlmIChpc191bml4c29ja19wYXRoKGhvc3QpKQotCQkJewotCQkJCS8qIGhv c3RhZGRyIG92ZXJyaWRlcyBob3N0ICovCi0JCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkcikK LQkJCQkJcHJpbnRmKF8oIllvdSBhcmUgY29ubmVjdGVkIHRvIGRhdGFiYXNlIFwiJXNcIiBhcyB1 c2VyIFwiJXNcIiBvbiBhZGRyZXNzIFwiJXNcIiBhdCBwb3J0IFwiJXNcIi5cbiIpLAotCQkJCQkJ ICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdGFkZHIsIFBRcG9ydChwc2V0LmRiKSk7Ci0JCQkJ ZWxzZQotCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wi IGFzIHVzZXIgXCIlc1wiIHZpYSBzb2NrZXQgaW4gXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiks Ci0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOwot CQkJfQorCQkJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLAorCQkJCQkJCSAgIlNFTEVDVCBpbmV0X3NlcnZlcl9hZGRyKCk7Iik7CisKKwkJCXJlcyA9 IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKworCQkJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCisJCQlp ZiAoIXJlcykKKwkJCQlyZXR1cm4gUFNRTF9DTURfRVJST1I7CiAJCQllbHNlCiAJCQl7Ci0JCQkJ aWYgKGhvc3RhZGRyICYmICpob3N0YWRkciAmJiBzdHJjbXAoaG9zdCwgaG9zdGFkZHIpICE9IDAp Ci0JCQkJCXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIgYXMg dXNlciBcIiVzXCIgb24gaG9zdCBcIiVzXCIgKGFkZHJlc3MgXCIlc1wiKSBhdCBwb3J0IFwiJXNc Ii5cbiIpLAotCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgaG9zdGFkZHIsIFBR cG9ydChwc2V0LmRiKSk7CisJCQkJY2hhcgkgICAqaG9zdCA9IFBRaG9zdChwc2V0LmRiKTsKKwkJ CQljaGFyCSAgICpob3N0YWRkciA9IFBRaG9zdGFkZHIocHNldC5kYik7CisKKwkJCQlpZiAoaXNf dW5peHNvY2tfcGF0aChob3N0KSkKKwkJCQl7CisJCQkJCS8qIGhvc3RhZGRyIG92ZXJyaWRlcyBo b3N0ICovCisJCQkJCWlmIChob3N0YWRkciAmJiAqaG9zdGFkZHIpCisJCQkJCQlwcmludGYoXygi WW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIG9uIGFk ZHJlc3MgXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiksCisJCQkJCQkJICAgZGIsIFBRdXNlcihw c2V0LmRiKSwgUFFnZXR2YWx1ZShyZXMsIDAsIDApLCBQUXBvcnQocHNldC5kYikpOworCQkJCQll bHNlCisJCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0YWJhc2UgXCIlc1wi IGFzIHVzZXIgXCIlc1wiIHZpYSBzb2NrZXQgaW4gXCIlc1wiIGF0IHBvcnQgXCIlc1wiLlxuIiks CisJCQkJCQkJICAgZGIsIFBRdXNlcihwc2V0LmRiKSwgaG9zdCwgUFFwb3J0KHBzZXQuZGIpKTsK KwkJCQl9CiAJCQkJZWxzZQotCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8gZGF0 YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIG9uIGhvc3QgXCIlc1wiIGF0IHBvcnQgXCIlc1wi LlxuIiksCi0JCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5k YikpOworCQkJCXsKKwkJCQkJaWYgKGhvc3RhZGRyICYmICpob3N0YWRkciAmJiBzdHJjbXAoaG9z dCwgaG9zdGFkZHIpICE9IDApCisJCQkJCQlwcmludGYoXygiWW91IGFyZSBjb25uZWN0ZWQgdG8g ZGF0YWJhc2UgXCIlc1wiIGFzIHVzZXIgXCIlc1wiIG9uIGhvc3QgXCIlc1wiIChhZGRyZXNzIFwi JXNcIikgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJCQkgICBkYiwgUFF1c2VyKHBzZXQuZGIp LCBob3N0LCBQUWdldHZhbHVlKHJlcywgMCwgMCksIFBRcG9ydChwc2V0LmRiKSk7CisJCQkJCWVs c2UKKwkJCQkJCXByaW50ZihfKCJZb3UgYXJlIGNvbm5lY3RlZCB0byBkYXRhYmFzZSBcIiVzXCIg YXMgdXNlciBcIiVzXCIgb24gaG9zdCBcIiVzXCIgYXQgcG9ydCBcIiVzXCIuXG4iKSwKKwkJCQkJ CQkgICBkYiwgUFF1c2VyKHBzZXQuZGIpLCBob3N0LCBQUXBvcnQocHNldC5kYikpOworCQkJCX0K KwkJCQlQUWNsZWFyKHJlcyk7CisJCQkJcHJpbnRTU0xJbmZvKCk7CisJCQkJcHJpbnRHU1NJbmZv KCk7CiAJCQl9Ci0JCQlwcmludFNTTEluZm8oKTsKLQkJCXByaW50R1NTSW5mbygpOwogCQl9CiAJ fQorCWVsc2UKKwkJaWdub3JlX3NsYXNoX29wdGlvbnMoc2Nhbl9zdGF0ZSk7CiAKLQlyZXR1cm4g UFNRTF9DTURfU0tJUF9MSU5FOworCXJldHVybiBzdWNjZXNzID8gUFNRTF9DTURfU0tJUF9MSU5F IDogUFNRTF9DTURfRVJST1I7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVz Y3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDY0MzM0OTcuLjYxNzBjODgg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9k ZXNjcmliZS5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiZmVfdXRpbHMvbWJwcmludC5o IgogI2luY2x1ZGUgImZlX3V0aWxzL3ByaW50LmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5n X3V0aWxzLmgiCisjaW5jbHVkZSAibGlicHEvcHFjb21tLmgiCiAjaW5jbHVkZSAic2V0dGluZ3Mu aCIKICNpbmNsdWRlICJ2YXJpYWJsZXMuaCIKIApAQCAtOTAxLDYgKzkwMiwxNjUgQEAgZXJyb3Jf cmV0dXJuOgogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIGxpc3RDb25uZWN0aW9uSW5mb3Jt YXRpb24KKyAqCisgKiBmb3IgXGNvbm5pbmZvKworICovCitib29sCitsaXN0Q29ubmVjdGlvbklu Zm9ybWF0aW9uKHZvaWQpCit7CisJUEdyZXN1bHQgICAqcmVzOworCVBRRXhwQnVmZmVyRGF0YSBi dWY7CisJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKworCWNoYXIJICAgKmhvc3Qg PSBQUWhvc3QocHNldC5kYik7CisJY2hhcgkgICAqaG9zdGFkZHIgPSBQUWhvc3RhZGRyKHBzZXQu ZGIpOworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1 ZiwKKwkJCQkJICAiU0VMRUNUXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5jdXJyZW50X2RhdGFi YXNlKCkgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgICclcycgQVMgXCIlc1wiLFxuIiwKKwkJCQkJ ICBfKCJEYXRhYmFzZSIpLAorCQkJCQkgIFBRdXNlcihwc2V0LmRiKSwKKwkJCQkJICBfKCJBdXRo ZW50aWNhdGVkIFVzZXIiKSk7CisJaWYgKGlzX3VuaXhzb2NrX3BhdGgoaG9zdCkgJiYgIShob3N0 YWRkciAmJiAqaG9zdGFkZHIpKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICIg ICclcycgQVMgXCIlc1wiLFxuIiwKKwkJCQkJICBob3N0LAorCQkJCQkgIF8oIlNvY2tldCBEaXJl Y3RvcnkiKSk7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICIgIE5V TEwgQVMgXCIlc1wiLFxuIiwKKwkJCQkJICBfKCJTb2NrZXQgRGlyZWN0b3J5IikpOworCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAgQ0FTRVxuIgorCQkJCQkgICIgICAgV0hFTlxu IgorCQkJCQkgICIgICAgICBwZ19jYXRhbG9nLmluZXRfc2VydmVyX2FkZHIoKSBJUyBOVUxMXG4i CisJCQkJCSAgIiAgICAgIEFORCBwZ19jYXRhbG9nLmluZXRfY2xpZW50X2FkZHIoKSBJUyBOVUxM XG4iCisJCQkJCSAgIiAgICBUSEVOIE5VTExcbiIKKwkJCQkJICAiICAgIEVMU0UgJyVzJ1xuIgor CQkJCQkgICIgIEVORCBBUyBcIiVzXCIsXG4iLAorCQkJCQkgIF8oIkhvc3QiKSwKKwkJCQkJICBo b3N0KTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICIgIHBnX2NhdGFsb2cuY3Vy cmVudF9zZXR0aW5nKCdwb3J0JykgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cu aW5ldF9zZXJ2ZXJfYWRkcigpIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLmlu ZXRfY2xpZW50X2FkZHIoKSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5pbmV0 X2NsaWVudF9wb3J0KCkgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfYmFj a2VuZF9waWQoKSBBUyBcIiVzXCIsXG4iLAorCQkJCQkgIF8oIlNlcnZlciBQb3J0IiksCisJCQkJ CSAgXygiU2VydmVyIEFkZHJlc3MiKSwKKwkJCQkJICBfKCJDbGllbnQgQWRkcmVzcyIpLAorCQkJ CQkgIF8oIkNsaWVudCBQb3J0IiksCisJCQkJCSAgXygiQmFja2VuZCBQSUQiKSk7CisJaWYgKHBz ZXQuc3ZlcnNpb24gPj0gMTYwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJ ICAiICBwZ19jYXRhbG9nLnN5c3RlbV91c2VyKCkgQVMgXCIlc1wiLFxuIiwKKwkJCQkJCSAgXygi U3lzdGVtIFVzZXIiKSk7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJ ICAiICBOVUxMIEFTIFwiJXNcIixcbiIsCisJCQkJCQkgIF8oIlN5c3RlbSBVc2VyIikpOworCWFw cGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5jdXJyZW50X3VzZXIo KSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5zZXNzaW9uX3VzZXIoKSBBUyBc IiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5jdXJyZW50X3NldHRpbmcoJ2FwcGxpY2F0 aW9uX25hbWUnKSBBUyBcIiVzXCIsXG4iLAorCQkJCQkgIF8oIkN1cnJlbnQgVXNlciIpLAorCQkJ CQkgIF8oIlNlc3Npb24gVXNlciIpLAorCQkJCQkgIF8oIkFwcGxpY2F0aW9uIE5hbWUiKSk7CisJ aWYgKHBzZXQuc3ZlcnNpb24gPj0gMTQwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJICAiICBzc2wuc3NsIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgc3NsLnZlcnNpb24g QVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBzc2wuY2lwaGVyIEFTIFwiJXNcIixcbiIKKwkJCQkJ CSAgIiAgTlVMTCBBUyBcIiVzXCIsXG4iLAorCQkJCQkJICBfKCJTU0wgQ29ubmVjdGlvbiIpLAor CQkJCQkJICBfKCJTU0wgUHJvdG9jb2wiKSwKKwkJCQkJCSAgXygiU1NMIENpcGhlciIpLAorCQkJ CQkJICBfKCJTU0wgQ29tcHJlc3Npb24iKSk7CisJZWxzZSBpZiAocHNldC5zdmVyc2lvbiA+PSA5 MDUwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAgc3NsLnNzbCBBUyBc IiVzXCIsXG4iCisJCQkJCQkgICIgIHNzbC52ZXJzaW9uIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAg IiAgc3NsLmNpcGhlciBBUyBcIiVzXCIsXG4iCisJCQkJCQkgICIgIHNzbC5jb21wcmVzc2lvbiBB UyBcIiVzXCIsXG4iLAorCQkJCQkJICBfKCJTU0wgQ29ubmVjdGlvbiIpLAorCQkJCQkJICBfKCJT U0wgUHJvdG9jb2wiKSwKKwkJCQkJCSAgXygiU1NMIENpcGhlciIpLAorCQkJCQkJICBfKCJTU0wg Q29tcHJlc3Npb24iKSk7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJ ICAiICBOVUxMIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgTlVMTCBBUyBcIiVzXCIsXG4iCisJ CQkJCQkgICIgIE5VTEwgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBOVUxMIEFTIFwiJXNcIixc biIsCisJCQkJCQkgIF8oIlNTTCBDb25uZWN0aW9uIiksCisJCQkJCQkgIF8oIlNTTCBQcm90b2Nv bCIpLAorCQkJCQkJICBfKCJTU0wgQ2lwaGVyIiksCisJCQkJCQkgIF8oIlNTTCBDb21wcmVzc2lv biIpKTsKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVy KCZidWYsCisJCQkJCQkgICIgIGdzc2FwaS5nc3NfYXV0aGVudGljYXRlZCBBUyBcIiVzXCIsXG4i CisJCQkJCQkgICIgIGdzc2FwaS5wcmluY2lwYWwgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBn c3NhcGkuXCJlbmNyeXB0ZWRcIiBBUyBcIiVzXCIsXG4iCisJCQkJCQkgICIgIGdzc2FwaS5jcmVk ZW50aWFsc19kZWxlZ2F0ZWQgQVMgXCIlc1wiXG4iLAorCQkJCQkJICBfKCJHU1NBUEkgQXV0aGVu dGljYXRlZCIpLAorCQkJCQkJICBfKCJHU1NBUEkgUHJpbmNpcGFsIiksCisJCQkJCQkgIF8oIkdT U0FQSSBFbmNyeXB0ZWQiKSwKKwkJCQkJCSAgXygiR1NTQVBJIENyZWRlbnRpYWxzIERlbGVnYXRl ZCIpKTsKKwllbHNlIGlmIChwc2V0LnN2ZXJzaW9uID49IDEyMDAwMCkKKwkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAgZ3NzYXBpLmdzc19hdXRoZW50aWNhdGVkIEFTIFwiJXNc IixcbiIKKwkJCQkJCSAgIiAgZ3NzYXBpLnByaW5jaXBhbCBBUyBcIiVzXCIsXG4iCisJCQkJCQkg ICIgIGdzc2FwaS5cImVuY3J5cHRlZFwiIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgTlVMTCBB UyBcIiVzXCJcbiIsCisJCQkJCQkgIF8oIkdTU0FQSSBBdXRoZW50aWNhdGVkIiksCisJCQkJCQkg IF8oIkdTU0FQSSBQcmluY2lwYWwiKSwKKwkJCQkJCSAgXygiR1NTQVBJIEVuY3J5cHRlZCIpLAor CQkJCQkJICBfKCJHU1NBUEkgQ3JlZGVudGlhbHMgRGVsZWdhdGVkIikpOworCWVsc2UKKwkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAgTlVMTCBBUyBcIiVzXCIsXG4iCisJCQkJ CQkgICIgIE5VTEwgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBOVUxMIEFTIFwiJXNcIixcbiIK KwkJCQkJCSAgIiAgTlVMTCBBUyBcIiVzXCJcbiIsCisJCQkJCQkgIF8oIkdTU0FQSSBBdXRoZW50 aWNhdGVkIiksCisJCQkJCQkgIF8oIkdTU0FQSSBQcmluY2lwYWwiKSwKKwkJCQkJCSAgXygiR1NT QVBJIEVuY3J5cHRlZCIpLAorCQkJCQkJICBfKCJHU1NBUEkgQ3JlZGVudGlhbHMgRGVsZWdhdGVk IikpOworCWlmIChwc2V0LnN2ZXJzaW9uID49IDEyMDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKKwkJCQkJCSAgIkZST01cbiIKKwkJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19zdGF0X3Nz bCBzc2xcbiIKKwkJCQkJCSAgIkxFRlQgSk9JTlxuIgorCQkJCQkJICAiICBwZ19jYXRhbG9nLnBn X3N0YXRfZ3NzYXBpIGdzc2FwaSBPTiBzc2wucGlkID0gZ3NzYXBpLnBpZFxuIgorCQkJCQkJICAi V0hFUkVcbiIKKwkJCQkJCSAgIiAgc3NsLnBpZCA9IHBnX2NhdGFsb2cucGdfYmFja2VuZF9waWQo KVxuIik7CisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gOTA1MDAgJiYgcHNldC5zdmVyc2lvbiA8IDEy MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIkZST01cbiIKKwkJCQkJ CSAgIiAgcGdfY2F0YWxvZy5wZ19zdGF0X3NzbCBzc2xcbiIKKwkJCQkJCSAgIldIRVJFXG4iCisJ CQkJCQkgICIgIHNzbC5waWQgPSBwZ19jYXRhbG9nLnBnX2JhY2tlbmRfcGlkKClcbiIpOworCWFw cGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIjsiKTsKKworCXJlcyA9IFBTUUxleGVjKGJ1 Zi5kYXRhKTsKKwl0ZXJtUFFFeHBCdWZmZXIoJmJ1Zik7CisJaWYgKCFyZXMpCisJCXJldHVybiBm YWxzZTsKKworCW15b3B0LnRpdGxlID0gXygiQ3VycmVudCBDb25uZWN0aW9uIEluZm9ybWF0aW9u Iik7CisJbXlvcHQudHJhbnNsYXRlX2hlYWRlciA9IHRydWU7CisKKwlwcmludFF1ZXJ5KHJlcywg Jm15b3B0LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisKKwlQUWNsZWFy KHJlcyk7CisJcmV0dXJuIHRydWU7Cit9CiAKIC8qCiAgKiBsaXN0QWxsRGJzCmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaCBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCmluZGV4 IDI3M2Y5NzQuLjhhNGU4M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCisr KyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCkBAIC02NCw2ICs2NCw5IEBAIGV4dGVybiBib29s IGxpc3RUU0RpY3Rpb25hcmllcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwog LyogXGRGdCAqLwogZXh0ZXJuIGJvb2wgbGlzdFRTVGVtcGxhdGVzKGNvbnN0IGNoYXIgKnBhdHRl cm4sIGJvb2wgdmVyYm9zZSk7CiAKKy8qIFxjb25uaW5mbyAqLworZXh0ZXJuIGJvb2wgbGlzdENv bm5lY3Rpb25JbmZvcm1hdGlvbih2b2lkKTsKKwogLyogXGwgKi8KIGV4dGVybiBib29sIGxpc3RB bGxEYnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKaW5kZXggNGU3OWE4MS4u MmM1NDI2ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2hlbHAuYworKysgYi9zcmMvYmluL3Bz cWwvaGVscC5jCkBAIC0zMTAsNyArMzEwLDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBp bnQgcGFnZXIpCiAJZWxzZQogCQlIRUxQMCgiICBcXGNbb25uZWN0XSB7W0RCTkFNRXwtIFVTRVJ8 LSBIT1NUfC0gUE9SVHwtXSB8IGNvbm5pbmZvfVxuIgogCQkJICAiICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbm5lY3QgdG8gbmV3IGRhdGFiYXNlIChjdXJyZW50bHkgbm8gY29ubmVjdGlvbilc biIpOwotCUhFTFAwKCIgIFxcY29ubmluZm8gICAgICAgICAgICAgIGRpc3BsYXkgaW5mb3JtYXRp b24gYWJvdXQgY3VycmVudCBjb25uZWN0aW9uXG4iKTsKKwlIRUxQMCgiICBcXGNvbm5pbmZvWytd ICAgICAgICAgICBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnQgY29ubmVjdGlvblxu Iik7CiAJSEVMUDAoIiAgXFxlbmNvZGluZyBbRU5DT0RJTkddICAgc2hvdyBvciBzZXQgY2xpZW50 IGVuY29kaW5nXG4iKTsKIAlIRUxQMCgiICBcXHBhc3N3b3JkIFtVU0VSTkFNRV0gICBzZWN1cmVs eSBjaGFuZ2UgdGhlIHBhc3N3b3JkIGZvciBhIHVzZXJcbiIpOwogCUhFTFAwKCJcbiIpOwo= --_004_CP8P284MB2496932B19ABB2394DECF69FEC3F2CP8P284MB2496BRAP_--