Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jhZwK-0002R0-Ih for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Jun 2020 14:36:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jhZwI-0005pG-Tr for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Jun 2020 14:36:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jhZwI-0005p9-IO for pgsql-hackers@lists.postgresql.org; Sat, 06 Jun 2020 14:36:50 +0000 Received: from courriel-2.mines-paristech.fr ([77.158.173.19] helo=antispam-1.ensmp.fr) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jhZwF-0007LV-AC for pgsql-hackers@lists.postgresql.org; Sat, 06 Jun 2020 14:36:50 +0000 Received: from smtp-4.mines-paristech.fr (smtp-4.ensmp.fr [77.158.173.143]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by antispam-1.ensmp.fr (antispam.mines-paristech.fr) with ESMTPS id 3727F5628A; Sat, 6 Jun 2020 16:36:45 +0200 (CEST) Received: from pseudo (159.237.219.88.rev.sfr.net [88.219.237.159]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp-4.mines-paristech.fr (Postfix) with ESMTPSA id 436832C0049; Sat, 6 Jun 2020 16:36:43 +0200 (CEST) Date: Sat, 6 Jun 2020 16:36:41 +0200 (CEST) From: Fabien COELHO X-X-Sender: fabien@pseudo Reply-To: Fabien COELHO To: Tomas Vondra , Tom Lane cc: Daniel Verite , Alvaro Herrera , vignesh C , Kyotaro Horiguchi , peter.eisentraut@2ndquadrant.com, iwata.aya@jp.fujitsu.com, PostgreSQL Developers Subject: Re: psql - add SHOW_ALL_RESULTS option In-Reply-To: Message-ID: References: <325.1579288226@sss.pgh.pa.us> <20200201120136.fnlbfcrybgzk75pc@development> User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="2056645051-745699099-1591454204=:32228" X-CLAMAV-SCAN: ok X-VRSPAM-SCORE: -100 X-VRSPAM-STATE: legit X-VRSPAM-CAUSE: gggruggvucftvghtrhhoucdtuddrgeduhedrudeghedgkedvucetufdoteggodetrfcurfhrohhfihhlvgemucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpeffhfhrvffujgfkfhgfgggtsehmtderredtredvnecuhfhrohhmpefhrggsihgvnhcuvefqgffnjffquceotghovghlhhhosegtrhhirdgvnhhsmhhprdhfrheqnecuggftrfgrthhtvghrnhepleejgeffgfdvgefgudffueffvdeugfeitdejfefhheffieeiffefgeekiefgkeehnecukfhppeekkedrvdduledrvdefjedrudehleenucfrrghrrghmpehmohguvgepshhmthhpohhuth X-VRSPAM-EXTCAUSE: mhhouggvpehsmhhtphhouhht List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --2056645051-745699099-1591454204=:32228 Content-Type: text/plain; charset=US-ASCII; format=flowed Hello, >> This patch was marked as ready for committer, but clearly there's an >> ongoin discussion about what should be the default behavoir, if this >> breaks existing apps etc. So I've marked it as "needs review" and moved >> it to the next CF. > > The issue is that root (aka Tom) seems to be against the feature, and would > like the keep it as current. Although my opinion is that the previous > behavior is close to insane, I'm ready to resurect the guc to control the > behavior so that it would be possible, or even the default. > > Right now I'm waiting for a "I will not veto it on principle" from Tom (I'm > okay with a reject based on bad implementation) before spending more time on > it: Although my time is given for free, it is not a good reason to send it > down the drain if there is a reject coming whatever I do. > > Tom, would you consider the feature acceptable with a guc to control it? Tom, I would appreciate if you could answer this question. For me, the current behavior is both stupid and irritating: why would pg decide to drop the result of a query that I carefully typed?. It makes the multi-query feature basically useless from psql, so I did not resurrect the guc, but I will if it would remove a veto. In the meantime, here is a v9 which also fixes the behavior when using \watch, so that now one can issue several \;-separated queries and have their progress shown. I just needed that a few days ago and was disappointed but unsurprised that it did not work. Watch does not seem to be tested anywhere, I kept it that way. Sigh. -- Fabien. --2056645051-745699099-1591454204=:32228 Content-Type: text/x-diff; name=psql-always-show-results-9.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=psql-always-show-results-9.patch ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVj dGVkL3BnX3N0YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9leHBlY3RlZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0DQpp bmRleCBmNjE1ZjhjMmJmLi4yZjczOTQ0NWZmIDEwMDY0NA0KLS0tIGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvcGdfc3RhdF9zdGF0 ZW1lbnRzLm91dA0KKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv ZXhwZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dA0KQEAgLTQ5LDE3ICs0 OSw0MiBAQCBCRUdJTiBcOw0KIFNFTEVDVCAyLjAgQVMgImZsb2F0IiBcOw0K IFNFTEVDVCAnd29ybGQnIEFTICJ0ZXh0IiBcOw0KIENPTU1JVDsNCisgZmxv YXQgDQorLS0tLS0tLQ0KKyAgIDIuMA0KKygxIHJvdykNCisNCisgdGV4dCAg DQorLS0tLS0tLQ0KKyB3b3JsZA0KKygxIHJvdykNCisNCiAtLSBjb21wb3Vu ZCB3aXRoIGVtcHR5IHN0YXRlbWVudHMgYW5kIHNwdXJpb3VzIGxlYWRpbmcg c3BhY2luZw0KLVw7XDsgICBTRUxFQ1QgMyArIDMgXDtcO1w7ICAgU0VMRUNU ICcgJyB8fCAnICEnIFw7XDsgICBTRUxFQ1QgMSArIDQgXDs7DQotID9jb2x1 bW4/IA0KLS0tLS0tLS0tLS0NCi0gICAgICAgIDUNCitcO1w7ICAgU0VMRUNU IDMgKyAzIEFTICIrIiBcO1w7XDsgICBTRUxFQ1QgJyAnIHx8ICcgIScgQVMg Inx8IiBcO1w7ICAgU0VMRUNUIDEgKyA0IEFTICIrIiBcOzsNCisgKyANCist LS0NCisgNg0KKygxIHJvdykNCisNCisgfHwgIA0KKy0tLS0tDQorICAgIQ0K KygxIHJvdykNCisNCisgKyANCistLS0NCisgNQ0KICgxIHJvdykNCiANCiAt LSBub24gOy10ZXJtaW5hdGVkIHN0YXRlbWVudHMNCiBTRUxFQ1QgMSArIDEg KyAxIEFTICJhZGQiIFxnc2V0DQogU0VMRUNUIDphZGQgKyAxICsgMSBBUyAi YWRkIiBcOw0KIFNFTEVDVCA6YWRkICsgMSArIDEgQVMgImFkZCIgXGdzZXQN CisgYWRkIA0KKy0tLS0tDQorICAgNQ0KKygxIHJvdykNCisNCiAtLSBzZXQg b3BlcmF0b3INCiBTRUxFQ1QgMSBBUyBpIFVOSU9OIFNFTEVDVCAyIE9SREVS IEJZIGk7DQogIGkgDQpAQCAtMTAyLDEyICsxMjcsMTIgQEAgU0VMRUNUIHF1 ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRF UiBCWSBxdWVyeSBDT0xMQVRFICJDIjsNCiAgU0VMRUNUICQxICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICt8ICAgICA0IHwgICAgNA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgK3wgICAgICAgfCANCiAgICBBUyAidGV4dCIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgDQotIFNFTEVDVCAkMSAr ICQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgMiB8ICAgIDINCiAgU0VMRUNU ICQxICsgJDIgKyAkMyBBUyAiYWRkIiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAzIHwgICAgMw0KKyBT RUxFQ1QgJDEgKyAkMiBBUyAiKyIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgfCAgICAy DQogIFNFTEVDVCAkMSBBUyAiZmxvYXQiICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8 ICAgIDENCiAgU0VMRUNUICQxIEFTICJpbnQiICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAyIHwgICAgMg0KICBTRUxFQ1QgJDEgQVMgaSBVTklPTiBTRUxFQ1QgJDIg T1JERVIgQlkgaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIDEgfCAgICAyDQotIFNFTEVDVCAkMSB8fCAkMiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMSB8ICAgIDENCisgU0VMRUNUICQxIHx8ICQyIEFTICJ8 fCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAxIHwgICAgMQ0KICBTRUxFQ1QgcGdfc3RhdF9z dGF0ZW1lbnRzX3Jlc2V0KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIDEgfCAgICAxDQogIFNFTEVDVCBxdWVy eSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIg QlkgcXVlcnkgQ09MTEFURSAiQyIgfCAgICAgMCB8ICAgIDANCiAgV0lUSCB0 KGYpIEFTICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICAxIHwgICAgMg0KZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9wZ19z dGF0X3N0YXRlbWVudHMuc3FsIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvc3FsL3BnX3N0YXRfc3RhdGVtZW50cy5zcWwNCmluZGV4IDc1YzEwNTU0 YTguLjgzNTQ5N2IyODYgMTAwNjQ0DQotLS0gYS9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9zcWwvcGdfc3RhdF9zdGF0ZW1lbnRzLnNxbA0KKysrIGIv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3BnX3N0YXRfc3RhdGVt ZW50cy5zcWwNCkBAIC0yNyw3ICsyNyw3IEBAIFNFTEVDVCAnd29ybGQnIEFT ICJ0ZXh0IiBcOw0KIENPTU1JVDsNCiANCiAtLSBjb21wb3VuZCB3aXRoIGVt cHR5IHN0YXRlbWVudHMgYW5kIHNwdXJpb3VzIGxlYWRpbmcgc3BhY2luZw0K LVw7XDsgICBTRUxFQ1QgMyArIDMgXDtcO1w7ICAgU0VMRUNUICcgJyB8fCAn ICEnIFw7XDsgICBTRUxFQ1QgMSArIDQgXDs7DQorXDtcOyAgIFNFTEVDVCAz ICsgMyBBUyAiKyIgXDtcO1w7ICAgU0VMRUNUICcgJyB8fCAnICEnIEFTICJ8 fCIgXDtcOyAgIFNFTEVDVCAxICsgNCBBUyAiKyIgXDs7DQogDQogLS0gbm9u IDstdGVybWluYXRlZCBzdGF0ZW1lbnRzDQogU0VMRUNUIDEgKyAxICsgMSBB UyAiYWRkIiBcZ3NldA0KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv cHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dt bA0KaW5kZXggNjJmZWU1YTdkZC4uZjAyYTQ5ZDc4MSAxMDA2NDQNCi0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbA0KKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sDQpAQCAtMTI3LDE4ICsxMjcsMTEg QEAgZWNobyAnXHggXFwgU0VMRUNUICogRlJPTSBmb287JyB8IHBzcWwNCiAg ICAgICAgY29tbWFuZHMgaW5jbHVkZWQgaW4gdGhlIHN0cmluZyB0byBkaXZp ZGUgaXQgaW50byBtdWx0aXBsZQ0KICAgICAgICB0cmFuc2FjdGlvbnMuICAo U2VlIDx4cmVmIGxpbmtlbmQ9InByb3RvY29sLWZsb3ctbXVsdGktc3RhdGVt ZW50Ii8+DQogICAgICAgIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgaG93IHRo ZSBzZXJ2ZXIgaGFuZGxlcyBtdWx0aS1xdWVyeSBzdHJpbmdzLikNCi0gICAg ICAgQWxzbywgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPiBvbmx5 IHByaW50cyB0aGUNCi0gICAgICAgcmVzdWx0IG9mIHRoZSBsYXN0IDxhY3Jv bnltPlNRTDwvYWNyb255bT4gY29tbWFuZCBpbiB0aGUgc3RyaW5nLg0KLSAg ICAgICBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBiZWhhdmlvciB3aGVu IHRoZSBzYW1lIHN0cmluZyBpcyByZWFkIGZyb20NCi0gICAgICAgYSBmaWxl IG9yIGZlZCB0byA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+J3Mg c3RhbmRhcmQgaW5wdXQsDQotICAgICAgIGJlY2F1c2UgdGhlbiA8YXBwbGlj YXRpb24+cHNxbDwvYXBwbGljYXRpb24+IHNlbmRzDQotICAgICAgIGVhY2gg PGFjcm9ueW0+U1FMPC9hY3JvbnltPiBjb21tYW5kIHNlcGFyYXRlbHkuDQog ICAgICAgPC9wYXJhPg0KICAgICAgIDxwYXJhPg0KLSAgICAgICBCZWNhdXNl IG9mIHRoaXMgYmVoYXZpb3IsIHB1dHRpbmcgbW9yZSB0aGFuIG9uZSBTUUwg Y29tbWFuZCBpbiBhDQotICAgICAgIHNpbmdsZSA8b3B0aW9uPi1jPC9vcHRp b24+IHN0cmluZyBvZnRlbiBoYXMgdW5leHBlY3RlZCByZXN1bHRzLg0KLSAg ICAgICBJdCdzIGJldHRlciB0byB1c2UgcmVwZWF0ZWQgPG9wdGlvbj4tYzwv b3B0aW9uPiBjb21tYW5kcyBvciBmZWVkDQotICAgICAgIG11bHRpcGxlIGNv bW1hbmRzIHRvIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4ncyBz dGFuZGFyZCBpbnB1dCwNCisgICAgICAgSWYgaGF2aW5nIHNldmVyYWwgY29t bWFuZHMgZXhlY3V0ZWQgaW4gb25lIHRyYW5zYWN0aW9uIGlzIG5vdCBkZXNp cmVkLCANCisgICAgICAgdXNlIHJlcGVhdGVkIDxvcHRpb24+LWM8L29wdGlv bj4gY29tbWFuZHMgb3IgZmVlZCBtdWx0aXBsZSBjb21tYW5kcyB0bw0KKyAg ICAgICA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+J3Mgc3RhbmRh cmQgaW5wdXQsDQogICAgICAgIGVpdGhlciB1c2luZyA8YXBwbGljYXRpb24+ ZWNobzwvYXBwbGljYXRpb24+IGFzIGlsbHVzdHJhdGVkIGFib3ZlLCBvcg0K ICAgICAgICB2aWEgYSBzaGVsbCBoZXJlLWRvY3VtZW50LCBmb3IgZXhhbXBs ZToNCiA8cHJvZ3JhbWxpc3Rpbmc+DQpAQCAtMzQ3MCwxMCArMzQ2Myw4IEBA IHNlbGVjdCAxXDsgc2VsZWN0IDJcOyBzZWxlY3QgMzsNCiAgICAgICAgIGNv bW1hbmRzIGluY2x1ZGVkIGluIHRoZSBzdHJpbmcgdG8gZGl2aWRlIGl0IGlu dG8gbXVsdGlwbGUNCiAgICAgICAgIHRyYW5zYWN0aW9ucy4gIChTZWUgPHhy ZWYgbGlua2VuZD0icHJvdG9jb2wtZmxvdy1tdWx0aS1zdGF0ZW1lbnQiLz4N CiAgICAgICAgIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgaG93IHRoZSBzZXJ2 ZXIgaGFuZGxlcyBtdWx0aS1xdWVyeSBzdHJpbmdzLikNCi0gICAgICAgIDxh cHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gcHJpbnRzIG9ubHkgdGhl IGxhc3QgcXVlcnkgcmVzdWx0DQotICAgICAgICBpdCByZWNlaXZlcyBmb3Ig ZWFjaCByZXF1ZXN0OyBpbiB0aGlzIGV4YW1wbGUsIGFsdGhvdWdoIGFsbA0K LSAgICAgICAgdGhyZWUgPGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPnMgYXJl IGluZGVlZCBleGVjdXRlZCwgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0 aW9uPg0KLSAgICAgICAgb25seSBwcmludHMgdGhlIDxsaXRlcmFsPjM8L2xp dGVyYWw+Lg0KKyAgICAgICAgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0 aW9uPiBwcmludHMgYWxsIHJlc3VsdHMgaXQgcmVjZWl2ZXMsIG9uZQ0KKyAg ICAgICAgYWZ0ZXIgdGhlIG90aGVyLg0KICAgICAgICAgPC9wYXJhPg0KICAg ICAgICAgPC9saXN0aXRlbT4NCiAgICAgICA8L3Zhcmxpc3RlbnRyeT4NCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbW9uLmMgYi9zcmMvYmluL3Bz cWwvY29tbW9uLmMNCmluZGV4IDA2ZjgwMTc2NGIuLjczNWE3N2MwMWYgMTAw NjQ0DQotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9uLmMNCisrKyBiL3NyYy9i aW4vcHNxbC9jb21tb24uYw0KQEAgLTMzLDYgKzMzLDcgQEAgc3RhdGljIGJv b2wgRGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICpl bGFwc2VkX21zZWMpOw0KIHN0YXRpYyBib29sIEV4ZWNRdWVyeVVzaW5nQ3Vy c29yKGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYyk7 DQogc3RhdGljIGJvb2wgY29tbWFuZF9ub19iZWdpbihjb25zdCBjaGFyICpx dWVyeSk7DQogc3RhdGljIGJvb2wgaXNfc2VsZWN0X2NvbW1hbmQoY29uc3Qg Y2hhciAqcXVlcnkpOw0KK3N0YXRpYyBpbnQgU2VuZFF1ZXJ5QW5kUHJvY2Vz c1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqcGVsYXBzZWRf bXNlYywgYm9vbCBpc193YXRjaCk7DQogDQogDQogLyoNCkBAIC0zMzgsNiAr MzM5LDE5IEBAIENoZWNrQ29ubmVjdGlvbih2b2lkKQ0KIH0NCiANCiANCisv Kg0KKyAqIFNob3cgZXJyb3IgbWVzc2FnZSBmcm9tIHJlc3VsdCwgaWYgYW55 LCBhbmQgY2hlY2sgY29ubmVjdGlvbiBpbiBwYXNzaW5nLg0KKyAqLw0KK3N0 YXRpYyB2b2lkDQorU2hvd0Vycm9yTWVzc2FnZShjb25zdCBQR3Jlc3VsdCAq cmVzdWx0KQ0KK3sNCisJY29uc3QgY2hhciAqZXJyb3IgPSBQUWVycm9yTWVz c2FnZShwc2V0LmRiKTsNCisNCisJaWYgKHN0cmxlbihlcnJvcikpDQorCQlw Z19sb2dfaW5mbygiJXMiLCBlcnJvcik7DQorDQorCUNoZWNrQ29ubmVjdGlv bigpOw0KK30NCiANCiANCiAvKg0KQEAgLTM0OSw3ICszNjMsNyBAQCBDaGVj a0Nvbm5lY3Rpb24odm9pZCkNCiAgKiBSZXR1cm5zIHRydWUgZm9yIHZhbGlk IHJlc3VsdCwgZmFsc2UgZm9yIGVycm9yIHN0YXRlLg0KICAqLw0KIHN0YXRp YyBib29sDQotQWNjZXB0UmVzdWx0KGNvbnN0IFBHcmVzdWx0ICpyZXN1bHQp DQorQWNjZXB0UmVzdWx0KGNvbnN0IFBHcmVzdWx0ICpyZXN1bHQsIGJvb2wg c2hvd19lcnJvcikNCiB7DQogCWJvb2wJCU9LOw0KIA0KQEAgLTM4MCwxNSAr Mzk0LDggQEAgQWNjZXB0UmVzdWx0KGNvbnN0IFBHcmVzdWx0ICpyZXN1bHQp DQogCQkJCWJyZWFrOw0KIAkJfQ0KIA0KLQlpZiAoIU9LKQ0KLQl7DQotCQlj b25zdCBjaGFyICplcnJvciA9IFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpOw0K LQ0KLQkJaWYgKHN0cmxlbihlcnJvcikpDQotCQkJcGdfbG9nX2luZm8oIiVz IiwgZXJyb3IpOw0KLQ0KLQkJQ2hlY2tDb25uZWN0aW9uKCk7DQotCX0NCisJ aWYgKCFPSyAmJiBzaG93X2Vycm9yKQ0KKwkJU2hvd0Vycm9yTWVzc2FnZShy ZXN1bHQpOw0KIA0KIAlyZXR1cm4gT0s7DQogfQ0KQEAgLTQ2OCw2ICs0NzUs MTYgQEAgQ2xlYXJPclNhdmVSZXN1bHQoUEdyZXN1bHQgKnJlc3VsdCkNCiAJ fQ0KIH0NCiANCisvKiBjb25zdW1lIGFsbCByZXN1bHRzICovDQorc3RhdGlj IHZvaWQNCitDbGVhck9yU2F2ZUFsbFJlc3VsdHMoKQ0KK3sNCisJUEdyZXN1 bHQJKnJlc3VsdDsNCisNCisJd2hpbGUgKChyZXN1bHQgPSBQUWdldFJlc3Vs dChwc2V0LmRiKSkgIT0gTlVMTCkNCisJCUNsZWFyT3JTYXZlUmVzdWx0KHJl c3VsdCk7DQorfQ0KKw0KIA0KIC8qDQogICogUHJpbnQgbWljcm90aW1pbmcg b3V0cHV0LiAgQWx3YXlzIHByaW50IHJhdyBtaWxsaXNlY29uZHM7IGlmIHRo ZSBpbnRlcnZhbA0KQEAgLTU2OCw3ICs1ODUsNyBAQCBQU1FMZXhlYyhjb25z dCBjaGFyICpxdWVyeSkNCiANCiAJUmVzZXRDYW5jZWxDb25uKCk7DQogDQot CWlmICghQWNjZXB0UmVzdWx0KHJlcykpDQorCWlmICghQWNjZXB0UmVzdWx0 KHJlcywgdHJ1ZSkpDQogCXsNCiAJCUNsZWFyT3JTYXZlUmVzdWx0KHJlcyk7 DQogCQlyZXMgPSBOVUxMOw0KQEAgLTU5MCwxMCArNjA3LDggQEAgUFNRTGV4 ZWMoY29uc3QgY2hhciAqcXVlcnkpDQogaW50DQogUFNRTGV4ZWNXYXRjaChj b25zdCBjaGFyICpxdWVyeSwgY29uc3QgcHJpbnRRdWVyeU9wdCAqb3B0KQ0K IHsNCi0JUEdyZXN1bHQgICAqcmVzOw0KIAlkb3VibGUJCWVsYXBzZWRfbXNl YyA9IDA7DQotCWluc3RyX3RpbWUJYmVmb3JlOw0KLQlpbnN0cl90aW1lCWFm dGVyOw0KKwlpbnQJCQlyZXM7DQogDQogCWlmICghcHNldC5kYikNCiAJew0K QEAgLTYwMiw3NSArNjE3LDE2IEBAIFBTUUxleGVjV2F0Y2goY29uc3QgY2hh ciAqcXVlcnksIGNvbnN0IHByaW50UXVlcnlPcHQgKm9wdCkNCiAJfQ0KIA0K IAlTZXRDYW5jZWxDb25uKHBzZXQuZGIpOw0KLQ0KLQlpZiAocHNldC50aW1p bmcpDQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJlZm9yZSk7DQotDQot CXJlcyA9IFBRZXhlYyhwc2V0LmRiLCBxdWVyeSk7DQotDQorCXJlcyA9IFNl bmRRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKHF1ZXJ5LCAmZWxhcHNlZF9tc2Vj LCB0cnVlKTsNCiAJUmVzZXRDYW5jZWxDb25uKCk7DQogDQotCWlmICghQWNj ZXB0UmVzdWx0KHJlcykpDQotCXsNCi0JCUNsZWFyT3JTYXZlUmVzdWx0KHJl cyk7DQotCQlyZXR1cm4gMDsNCi0JfQ0KLQ0KLQlpZiAocHNldC50aW1pbmcp DQotCXsNCi0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoYWZ0ZXIpOw0KLQkJ SU5TVFJfVElNRV9TVUJUUkFDVChhZnRlciwgYmVmb3JlKTsNCi0JCWVsYXBz ZWRfbXNlYyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGFmdGVyKTsNCi0J fQ0KLQ0KLQkvKg0KLQkgKiBJZiBTSUdJTlQgaXMgc2VudCB3aGlsZSB0aGUg cXVlcnkgaXMgcHJvY2Vzc2luZywgdGhlIGludGVycnVwdCB3aWxsIGJlDQot CSAqIGNvbnN1bWVkLiAgVGhlIHVzZXIncyBpbnRlbnRpb24sIHRob3VnaCwg aXMgdG8gY2FuY2VsIHRoZSBlbnRpcmUgd2F0Y2gNCi0JICogcHJvY2Vzcywg c28gZGV0ZWN0IGEgc2VudCBjYW5jZWxsYXRpb24gcmVxdWVzdCBhbmQgZXhp dCBpbiB0aGlzIGNhc2UuDQotCSAqLw0KLQlpZiAoY2FuY2VsX3ByZXNzZWQp DQotCXsNCi0JCVBRY2xlYXIocmVzKTsNCi0JCXJldHVybiAwOw0KLQl9DQot DQotCXN3aXRjaCAoUFFyZXN1bHRTdGF0dXMocmVzKSkNCi0Jew0KLQkJY2Fz ZSBQR1JFU19UVVBMRVNfT0s6DQotCQkJcHJpbnRRdWVyeShyZXMsIG9wdCwg cHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOw0KLQkJCWJy ZWFrOw0KLQ0KLQkJY2FzZSBQR1JFU19DT01NQU5EX09LOg0KLQkJCWZwcmlu dGYocHNldC5xdWVyeUZvdXQsICIlc1xuJXNcblxuIiwgb3B0LT50aXRsZSwg UFFjbWRTdGF0dXMocmVzKSk7DQotCQkJYnJlYWs7DQotDQotCQljYXNlIFBH UkVTX0VNUFRZX1FVRVJZOg0KLQkJCXBnX2xvZ19lcnJvcigiXFx3YXRjaCBj YW5ub3QgYmUgdXNlZCB3aXRoIGFuIGVtcHR5IHF1ZXJ5Iik7DQotCQkJUFFj bGVhcihyZXMpOw0KLQkJCXJldHVybiAtMTsNCi0NCi0JCWNhc2UgUEdSRVNf Q09QWV9PVVQ6DQotCQljYXNlIFBHUkVTX0NPUFlfSU46DQotCQljYXNlIFBH UkVTX0NPUFlfQk9USDoNCi0JCQlwZ19sb2dfZXJyb3IoIlxcd2F0Y2ggY2Fu bm90IGJlIHVzZWQgd2l0aCBDT1BZIik7DQotCQkJUFFjbGVhcihyZXMpOw0K LQkJCXJldHVybiAtMTsNCi0NCi0JCWRlZmF1bHQ6DQotCQkJcGdfbG9nX2Vy cm9yKCJ1bmV4cGVjdGVkIHJlc3VsdCBzdGF0dXMgZm9yIFxcd2F0Y2giKTsN Ci0JCQlQUWNsZWFyKHJlcyk7DQotCQkJcmV0dXJuIC0xOw0KLQl9DQotDQot CVBRY2xlYXIocmVzKTsNCi0NCiAJZmZsdXNoKHBzZXQucXVlcnlGb3V0KTsN CiANCiAJLyogUG9zc2libGUgbWljcm90aW1pbmcgb3V0cHV0ICovDQogCWlm IChwc2V0LnRpbWluZykNCiAJCVByaW50VGltaW5nKGVsYXBzZWRfbXNlYyk7 DQogDQotCXJldHVybiAxOw0KKwlyZXR1cm4gcmVzOw0KIH0NCiANCiANCkBA IC04NzQsMTk5ICs4MzAsMTE1IEBAIGxvb3BfZXhpdDoNCiAJcmV0dXJuIHN1 Y2Nlc3M7DQogfQ0KIA0KLQ0KIC8qDQotICogUHJvY2Vzc1Jlc3VsdDogdXRp bGl0eSBmdW5jdGlvbiBmb3IgdXNlIGJ5IFNlbmRRdWVyeSgpIG9ubHkNCi0g Kg0KLSAqIFdoZW4gb3VyIGNvbW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBhIENP UFkgRlJPTSBTVERJTiBvciBDT1BZIFRPIFNURE9VVCwNCi0gKiBQUWV4ZWMo KSBoYXMgc3RvcHBlZCBhdCB0aGUgUEdyZXN1bHQgYXNzb2NpYXRlZCB3aXRo IHRoZSBmaXJzdCBzdWNoDQotICogY29tbWFuZC4gIEluIHRoYXQgZXZlbnQs IHdlJ2xsIG1hcnNoYWwgZGF0YSBmb3IgdGhlIENPUFkgYW5kIHRoZW4gY3lj bGUNCi0gKiB0aHJvdWdoIGFueSBzdWJzZXF1ZW50IFBHcmVzdWx0IG9iamVj dHMuDQotICoNCi0gKiBXaGVuIHRoZSBjb21tYW5kIHN0cmluZyBjb250YWlu ZWQgbm8gc3VjaCBDT1BZIGNvbW1hbmQsIHRoaXMgZnVuY3Rpb24NCi0gKiBk ZWdlbmVyYXRlcyB0byBhbiBBY2NlcHRSZXN1bHQoKSBjYWxsLg0KLSAqDQot ICogQ2hhbmdlcyBpdHMgYXJndW1lbnQgdG8gcG9pbnQgdG8gdGhlIGxhc3Qg UEdyZXN1bHQgb2YgdGhlIGNvbW1hbmQgc3RyaW5nLA0KLSAqIG9yIE5VTEwg aWYgdGhhdCByZXN1bHQgd2FzIGZvciBhIENPUFkgVE8gU1RET1VULiAgKFJl dHVybmluZyBOVUxMIHByZXZlbnRzDQotICogdGhlIGNvbW1hbmQgc3RhdHVz IGZyb20gYmVpbmcgcHJpbnRlZCwgd2hpY2ggd2Ugd2FudCBpbiB0aGF0IGNh c2Ugc28gdGhhdA0KLSAqIHRoZSBzdGF0dXMgbGluZSBkb2Vzbid0IGdldCB0 YWtlbiBhcyBwYXJ0IG9mIHRoZSBDT1BZIGRhdGEuKQ0KLSAqDQotICogUmV0 dXJucyB0cnVlIG9uIGNvbXBsZXRlIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lz ZS4gIFBvc3NpYmxlIGZhaWx1cmUgbW9kZXMNCi0gKiBpbmNsdWRlIHB1cmVs eSBjbGllbnQtc2lkZSBwcm9ibGVtczsgY2hlY2sgdGhlIHRyYW5zYWN0aW9u IHN0YXR1cyBmb3IgdGhlDQotICogc2VydmVyLXNpZGUgb3Bpbmlvbi4NCisg KiBNYXJzaGFsIHRoZSBDT1BZIGRhdGEuICBFaXRoZXIgc3Vicm91dGluZSB3 aWxsIGdldCB0aGUNCisgKiBjb25uZWN0aW9uIG91dCBvZiBpdHMgQ09QWSBz dGF0ZSwgdGhlbiBjYWxsIFBRcmVzdWx0U3RhdHVzKCkNCisgKiBvbmNlIGFu ZCByZXBvcnQgYW55IGVycm9yLiBSZXR1cm4gd2hldGhlciBhbGwgd2FzIG9r Lg0KKyAqDQorICogRm9yIENPUFkgT1VULCBkaXJlY3QgdGhlIG91dHB1dCB0 byBwc2V0LmNvcHlTdHJlYW0gaWYgaXQncyBzZXQsDQorICogb3RoZXJ3aXNl IHRvIHBzZXQuZ2ZuYW1lIGlmIGl0J3Mgc2V0LCBvdGhlcndpc2UgdG8gcXVl cnlGb3V0Lg0KKyAqIEZvciBDT1BZIElOLCB1c2UgcHNldC5jb3B5U3RyZWFt IGFzIGRhdGEgc291cmNlIGlmIGl0J3Mgc2V0LA0KKyAqIG90aGVyd2lzZSBj dXJfY21kX3NvdXJjZS4NCisgKg0KKyAqIFVwZGF0ZSByZXN1bHQgaWYgZnVy dGhlciBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeSwgb3IgTlVMTCBvdGhlcndp c2UuDQorICogUmV0dXJuIGEgcmVzdWx0IHdoZW4gcXVlcnlGb3V0IGNhbiBz YWZlbHkgb3V0cHV0IGEgcmVzdWx0IHN0YXR1czoNCisgKiBvbiBDT1BZIElO LCBvciBvbiBDT1BZIE9VVCBpZiB3cml0dGVuIHRvIHNvbWV0aGluZyBvdGhl ciBoYW4gcHNldC5xdWVyeUZvdXQuDQorICogUmV0dXJuaW5nIE5VTEwgcHJl dmVudHMgdGhlIGNvbW1hbmQgc3RhdHVzIGZyb20gYmVpbmcgcHJpbnRlZCwg d2hpY2gNCisgKiB3ZSB3YW50IGlmIHRoZSBzdGF0dXMgbGluZSBkb2Vzbid0 IGdldCB0YWtlbiBhcyBwYXJ0IG9mIHRoZSBDT1BZIGRhdGEuDQogICovDQog c3RhdGljIGJvb2wNCi1Qcm9jZXNzUmVzdWx0KFBHcmVzdWx0ICoqcmVzdWx0 cykNCitIYW5kbGVDb3B5UmVzdWx0KFBHcmVzdWx0ICoqcmVzdWx0KQ0KIHsN Ci0JYm9vbAkJc3VjY2VzcyA9IHRydWU7DQotCWJvb2wJCWZpcnN0X2N5Y2xl ID0gdHJ1ZTsNCisJYm9vbAkJc3VjY2VzczsNCisJRklMRQkgICAqY29weXN0 cmVhbTsNCisJUEdyZXN1bHQgICAqY29weV9yZXN1bHQ7DQorCUV4ZWNTdGF0 dXNUeXBlIHJlc3VsdF9zdGF0dXMgPSBQUXJlc3VsdFN0YXR1cygqcmVzdWx0 KTsNCiANCi0JZm9yICg7OykNCisJQXNzZXJ0KHJlc3VsdF9zdGF0dXMgPT0g UEdSRVNfQ09QWV9PVVQgfHwNCisJCSAgIHJlc3VsdF9zdGF0dXMgPT0gUEdS RVNfQ09QWV9JTik7DQorDQorCVNldENhbmNlbENvbm4ocHNldC5kYik7DQor DQorCWlmIChyZXN1bHRfc3RhdHVzID09IFBHUkVTX0NPUFlfT1VUKQ0KIAl7 DQotCQlFeGVjU3RhdHVzVHlwZSByZXN1bHRfc3RhdHVzOw0KLQkJYm9vbAkJ aXNfY29weTsNCi0JCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0Ow0KKwkJYm9v bAkJbmVlZF9jbG9zZSA9IGZhbHNlOw0KKwkJYm9vbAkJaXNfcGlwZSA9IGZh bHNlOw0KIA0KLQkJaWYgKCFBY2NlcHRSZXN1bHQoKnJlc3VsdHMpKQ0KKwkJ aWYgKHBzZXQuY29weVN0cmVhbSkNCiAJCXsNCi0JCQkvKg0KLQkJCSAqIEZh aWx1cmUgYXQgdGhpcyBwb2ludCBpcyBhbHdheXMgYSBzZXJ2ZXItc2lkZSBm YWlsdXJlIG9yIGENCi0JCQkgKiBmYWlsdXJlIHRvIHN1Ym1pdCB0aGUgY29t bWFuZCBzdHJpbmcuICBFaXRoZXIgd2F5LCB3ZSdyZQ0KLQkJCSAqIGZpbmlz aGVkIHdpdGggdGhpcyBjb21tYW5kIHN0cmluZy4NCi0JCQkgKi8NCi0JCQlz dWNjZXNzID0gZmFsc2U7DQotCQkJYnJlYWs7DQorCQkJLyogaW52b2tlZCBi eSBcY29weSAqLw0KKwkJCWNvcHlzdHJlYW0gPSBwc2V0LmNvcHlTdHJlYW07 DQogCQl9DQotDQotCQlyZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMo KnJlc3VsdHMpOw0KLQkJc3dpdGNoIChyZXN1bHRfc3RhdHVzKQ0KKwkJZWxz ZSBpZiAocHNldC5nZm5hbWUpDQogCQl7DQotCQkJY2FzZSBQR1JFU19FTVBU WV9RVUVSWToNCi0JCQljYXNlIFBHUkVTX0NPTU1BTkRfT0s6DQotCQkJY2Fz ZSBQR1JFU19UVVBMRVNfT0s6DQotCQkJCWlzX2NvcHkgPSBmYWxzZTsNCi0J CQkJYnJlYWs7DQotDQotCQkJY2FzZSBQR1JFU19DT1BZX09VVDoNCi0JCQlj YXNlIFBHUkVTX0NPUFlfSU46DQotCQkJCWlzX2NvcHkgPSB0cnVlOw0KLQkJ CQlicmVhazsNCi0NCi0JCQlkZWZhdWx0Og0KLQkJCQkvKiBBY2NlcHRSZXN1 bHQoKSBzaG91bGQgaGF2ZSBjYXVnaHQgYW55dGhpbmcgZWxzZS4gKi8NCi0J CQkJaXNfY29weSA9IGZhbHNlOw0KLQkJCQlwZ19sb2dfZXJyb3IoInVuZXhw ZWN0ZWQgUFFyZXN1bHRTdGF0dXM6ICVkIiwgcmVzdWx0X3N0YXR1cyk7DQot CQkJCWJyZWFrOw0KLQkJfQ0KLQ0KLQkJaWYgKGlzX2NvcHkpDQotCQl7DQot CQkJLyoNCi0JCQkgKiBNYXJzaGFsIHRoZSBDT1BZIGRhdGEuICBFaXRoZXIg c3Vicm91dGluZSB3aWxsIGdldCB0aGUNCi0JCQkgKiBjb25uZWN0aW9uIG91 dCBvZiBpdHMgQ09QWSBzdGF0ZSwgdGhlbiBjYWxsIFBRcmVzdWx0U3RhdHVz KCkNCi0JCQkgKiBvbmNlIGFuZCByZXBvcnQgYW55IGVycm9yLg0KLQkJCSAq DQotCQkJICogRm9yIENPUFkgT1VULCBkaXJlY3QgdGhlIG91dHB1dCB0byBw c2V0LmNvcHlTdHJlYW0gaWYgaXQncyBzZXQsDQotCQkJICogb3RoZXJ3aXNl IHRvIHBzZXQuZ2ZuYW1lIGlmIGl0J3Mgc2V0LCBvdGhlcndpc2UgdG8gcXVl cnlGb3V0Lg0KLQkJCSAqIEZvciBDT1BZIElOLCB1c2UgcHNldC5jb3B5U3Ry ZWFtIGFzIGRhdGEgc291cmNlIGlmIGl0J3Mgc2V0LA0KLQkJCSAqIG90aGVy d2lzZSBjdXJfY21kX3NvdXJjZS4NCi0JCQkgKi8NCi0JCQlGSUxFCSAgICpj b3B5c3RyZWFtOw0KLQkJCVBHcmVzdWx0ICAgKmNvcHlfcmVzdWx0Ow0KLQ0K LQkJCVNldENhbmNlbENvbm4ocHNldC5kYik7DQotCQkJaWYgKHJlc3VsdF9z dGF0dXMgPT0gUEdSRVNfQ09QWV9PVVQpDQorCQkJLyogaW52b2tlZCBieSBc ZyAqLw0KKwkJCWlmIChvcGVuUXVlcnlPdXRwdXRGaWxlKHBzZXQuZ2ZuYW1l LA0KKwkJCQkJCQkJCSZjb3B5c3RyZWFtLCAmaXNfcGlwZSkpDQogCQkJew0K LQkJCQlib29sCQluZWVkX2Nsb3NlID0gZmFsc2U7DQotCQkJCWJvb2wJCWlz X3BpcGUgPSBmYWxzZTsNCi0NCi0JCQkJaWYgKHBzZXQuY29weVN0cmVhbSkN Ci0JCQkJew0KLQkJCQkJLyogaW52b2tlZCBieSBcY29weSAqLw0KLQkJCQkJ Y29weXN0cmVhbSA9IHBzZXQuY29weVN0cmVhbTsNCi0JCQkJfQ0KLQkJCQll bHNlIGlmIChwc2V0LmdmbmFtZSkNCi0JCQkJew0KLQkJCQkJLyogaW52b2tl ZCBieSBcZyAqLw0KLQkJCQkJaWYgKG9wZW5RdWVyeU91dHB1dEZpbGUocHNl dC5nZm5hbWUsDQotCQkJCQkJCQkJCQkmY29weXN0cmVhbSwgJmlzX3BpcGUp KQ0KLQkJCQkJew0KLQkJCQkJCW5lZWRfY2xvc2UgPSB0cnVlOw0KLQkJCQkJ CWlmIChpc19waXBlKQ0KLQkJCQkJCQlkaXNhYmxlX3NpZ3BpcGVfdHJhcCgp Ow0KLQkJCQkJfQ0KLQkJCQkJZWxzZQ0KLQkJCQkJCWNvcHlzdHJlYW0gPSBO VUxMOwkvKiBkaXNjYXJkIENPUFkgZGF0YSBlbnRpcmVseSAqLw0KLQkJCQl9 DQotCQkJCWVsc2UNCi0JCQkJew0KLQkJCQkJLyogZmFsbCBiYWNrIHRvIHRo ZSBnZW5lcmljIHF1ZXJ5IG91dHB1dCBzdHJlYW0gKi8NCi0JCQkJCWNvcHlz dHJlYW0gPSBwc2V0LnF1ZXJ5Rm91dDsNCi0JCQkJfQ0KLQ0KLQkJCQlzdWNj ZXNzID0gaGFuZGxlQ29weU91dChwc2V0LmRiLA0KLQkJCQkJCQkJCQljb3B5 c3RyZWFtLA0KLQkJCQkJCQkJCQkmY29weV9yZXN1bHQpDQotCQkJCQkmJiBz dWNjZXNzDQotCQkJCQkmJiAoY29weXN0cmVhbSAhPSBOVUxMKTsNCi0NCi0J CQkJLyoNCi0JCQkJICogU3VwcHJlc3Mgc3RhdHVzIHByaW50aW5nIGlmIHRo ZSByZXBvcnQgd291bGQgZ28gdG8gdGhlIHNhbWUNCi0JCQkJICogcGxhY2Ug YXMgdGhlIENPUFkgZGF0YSBqdXN0IHdlbnQuICBOb3RlIHRoaXMgZG9lc24n dA0KLQkJCQkgKiBwcmV2ZW50IGVycm9yIHJlcG9ydGluZywgc2luY2UgaGFu ZGxlQ29weU91dCBkaWQgdGhhdC4NCi0JCQkJICovDQotCQkJCWlmIChjb3B5 c3RyZWFtID09IHBzZXQucXVlcnlGb3V0KQ0KLQkJCQl7DQotCQkJCQlQUWNs ZWFyKGNvcHlfcmVzdWx0KTsNCi0JCQkJCWNvcHlfcmVzdWx0ID0gTlVMTDsN Ci0JCQkJfQ0KLQ0KLQkJCQlpZiAobmVlZF9jbG9zZSkNCi0JCQkJew0KLQkJ CQkJLyogY2xvc2UgXGcgYXJndW1lbnQgZmlsZS9waXBlICovDQotCQkJCQlp ZiAoaXNfcGlwZSkNCi0JCQkJCXsNCi0JCQkJCQlwY2xvc2UoY29weXN0cmVh bSk7DQotCQkJCQkJcmVzdG9yZV9zaWdwaXBlX3RyYXAoKTsNCi0JCQkJCX0N Ci0JCQkJCWVsc2UNCi0JCQkJCXsNCi0JCQkJCQlmY2xvc2UoY29weXN0cmVh bSk7DQotCQkJCQl9DQotCQkJCX0NCisJCQkJbmVlZF9jbG9zZSA9IHRydWU7 DQorCQkJCWlmIChpc19waXBlKQ0KKwkJCQkJZGlzYWJsZV9zaWdwaXBlX3Ry YXAoKTsNCiAJCQl9DQogCQkJZWxzZQ0KLQkJCXsNCi0JCQkJLyogQ09QWSBJ TiAqLw0KLQkJCQljb3B5c3RyZWFtID0gcHNldC5jb3B5U3RyZWFtID8gcHNl dC5jb3B5U3RyZWFtIDogcHNldC5jdXJfY21kX3NvdXJjZTsNCi0JCQkJc3Vj Y2VzcyA9IGhhbmRsZUNvcHlJbihwc2V0LmRiLA0KLQkJCQkJCQkJCSAgIGNv cHlzdHJlYW0sDQotCQkJCQkJCQkJICAgUFFiaW5hcnlUdXBsZXMoKnJlc3Vs dHMpLA0KLQkJCQkJCQkJCSAgICZjb3B5X3Jlc3VsdCkgJiYgc3VjY2VzczsN Ci0JCQl9DQotCQkJUmVzZXRDYW5jZWxDb25uKCk7DQotDQotCQkJLyoNCi0J CQkgKiBSZXBsYWNlIHRoZSBQR1JFU19DT1BZX09VVC9JTiByZXN1bHQgd2l0 aCBDT1BZIGNvbW1hbmQncyBleGl0DQotCQkJICogc3RhdHVzLCBvciB3aXRo IE5VTEwgaWYgd2Ugd2FudCB0byBzdXBwcmVzcyBwcmludGluZyBhbnl0aGlu Zy4NCi0JCQkgKi8NCi0JCQlQUWNsZWFyKCpyZXN1bHRzKTsNCi0JCQkqcmVz dWx0cyA9IGNvcHlfcmVzdWx0Ow0KKwkJCQljb3B5c3RyZWFtID0gTlVMTDsJ LyogZGlzY2FyZCBDT1BZIGRhdGEgZW50aXJlbHkgKi8NCiAJCX0NCi0JCWVs c2UgaWYgKGZpcnN0X2N5Y2xlKQ0KKwkJZWxzZQ0KIAkJew0KLQkJCS8qIGZh c3QgcGF0aDogbm8gQ09QWSBjb21tYW5kczsgUFFleGVjIHZpc2l0ZWQgYWxs IHJlc3VsdHMgKi8NCi0JCQlicmVhazsNCisJCQkvKiBmYWxsIGJhY2sgdG8g dGhlIGdlbmVyaWMgcXVlcnkgb3V0cHV0IHN0cmVhbSAqLw0KKwkJCWNvcHlz dHJlYW0gPSBwc2V0LnF1ZXJ5Rm91dDsNCiAJCX0NCiANCisJCXN1Y2Nlc3Mg PSBoYW5kbGVDb3B5T3V0KHBzZXQuZGIsDQorCQkJCQkJCQljb3B5c3RyZWFt LA0KKwkJCQkJCQkJJmNvcHlfcmVzdWx0KQ0KKwkJCSYmIChjb3B5c3RyZWFt ICE9IE5VTEwpOw0KKw0KIAkJLyoNCi0JCSAqIENoZWNrIFBRZ2V0UmVzdWx0 KCkgYWdhaW4uICBJbiB0aGUgdHlwaWNhbCBjYXNlIG9mIGEgc2luZ2xlLWNv bW1hbmQNCi0JCSAqIHN0cmluZywgaXQgd2lsbCByZXR1cm4gTlVMTC4gIE90 aGVyd2lzZSwgd2UnbGwgaGF2ZSBvdGhlciByZXN1bHRzDQotCQkgKiB0byBw cm9jZXNzIHRoYXQgbWF5IGluY2x1ZGUgb3RoZXIgQ09QWXMuICBXZSBrZWVw IHRoZSBsYXN0IHJlc3VsdC4NCisJCSAqIFN1cHByZXNzIHN0YXR1cyBwcmlu dGluZyBpZiB0aGUgcmVwb3J0IHdvdWxkIGdvIHRvIHRoZSBzYW1lDQorCQkg KiBwbGFjZSBhcyB0aGUgQ09QWSBkYXRhIGp1c3Qgd2VudC4gIE5vdGUgdGhp cyBkb2Vzbid0DQorCQkgKiBwcmV2ZW50IGVycm9yIHJlcG9ydGluZywgc2lu Y2UgaGFuZGxlQ29weU91dCBkaWQgdGhhdC4NCiAJCSAqLw0KLQkJbmV4dF9y ZXN1bHQgPSBQUWdldFJlc3VsdChwc2V0LmRiKTsNCi0JCWlmICghbmV4dF9y ZXN1bHQpDQotCQkJYnJlYWs7DQorCQlpZiAoY29weXN0cmVhbSA9PSBwc2V0 LnF1ZXJ5Rm91dCkNCisJCXsNCisJCQlQUWNsZWFyKGNvcHlfcmVzdWx0KTsN CisJCQljb3B5X3Jlc3VsdCA9IE5VTEw7DQorCQl9DQogDQotCQlQUWNsZWFy KCpyZXN1bHRzKTsNCi0JCSpyZXN1bHRzID0gbmV4dF9yZXN1bHQ7DQotCQlm aXJzdF9jeWNsZSA9IGZhbHNlOw0KKwkJaWYgKG5lZWRfY2xvc2UpDQorCQl7 DQorCQkJLyogY2xvc2UgXGcgYXJndW1lbnQgZmlsZS9waXBlICovDQorCQkJ aWYgKGlzX3BpcGUpDQorCQkJew0KKwkJCQlwY2xvc2UoY29weXN0cmVhbSk7 DQorCQkJCXJlc3RvcmVfc2lncGlwZV90cmFwKCk7DQorCQkJfQ0KKwkJCWVs c2UNCisJCQl7DQorCQkJCWZjbG9zZShjb3B5c3RyZWFtKTsNCisJCQl9DQor CQl9DQorCX0NCisJZWxzZQ0KKwl7DQorCQkvKiBDT1BZIElOICovDQorCQlj b3B5c3RyZWFtID0gcHNldC5jb3B5U3RyZWFtID8gcHNldC5jb3B5U3RyZWFt IDogcHNldC5jdXJfY21kX3NvdXJjZTsNCisJCXN1Y2Nlc3MgPSBoYW5kbGVD b3B5SW4ocHNldC5kYiwNCisJCQkJCQkJICAgY29weXN0cmVhbSwNCisJCQkJ CQkJICAgUFFiaW5hcnlUdXBsZXMoKnJlc3VsdCksDQorCQkJCQkJCSAgICZj b3B5X3Jlc3VsdCk7DQogCX0NCiANCi0JU2V0UmVzdWx0VmFyaWFibGVzKCpy ZXN1bHRzLCBzdWNjZXNzKTsNCi0NCi0JLyogbWF5IG5lZWQgdGhpcyB0byBy ZWNvdmVyIGZyb20gY29ubiBsb3NzIGR1cmluZyBDT1BZICovDQotCWlmICgh Zmlyc3RfY3ljbGUgJiYgIUNoZWNrQ29ubmVjdGlvbigpKQ0KLQkJcmV0dXJu IGZhbHNlOw0KKwlSZXNldENhbmNlbENvbm4oKTsNCisJUFFjbGVhcigqcmVz dWx0KTsNCisJKnJlc3VsdCA9IGNvcHlfcmVzdWx0Ow0KIA0KIAlyZXR1cm4g c3VjY2VzczsNCiB9DQogDQotDQogLyoNCiAgKiBQcmludFF1ZXJ5U3RhdHVz OiByZXBvcnQgY29tbWFuZCBzdGF0dXMgYXMgcmVxdWlyZWQNCiAgKg0KLSAq IE5vdGU6IFV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBQcmludFF1ZXJ5 UmVzdWx0cygpIG9ubHkuDQorICogTm90ZTogVXRpbGl0eSBmdW5jdGlvbiBm b3IgdXNlIGJ5IEhhbmRsZVF1ZXJ5UmVzdWx0KCkgb25seS4NCiAgKi8NCiBz dGF0aWMgdm9pZA0KIFByaW50UXVlcnlTdGF0dXMoUEdyZXN1bHQgKnJlc3Vs dHMpDQpAQCAtMTA5NCw0MyArOTY2LDQ0IEBAIFByaW50UXVlcnlTdGF0dXMo UEdyZXN1bHQgKnJlc3VsdHMpDQogDQogDQogLyoNCi0gKiBQcmludFF1ZXJ5 UmVzdWx0czogcHJpbnQgb3V0IChvciBzdG9yZSBvciBleGVjdXRlKSBxdWVy eSByZXN1bHRzIGFzIHJlcXVpcmVkDQotICoNCi0gKiBOb3RlOiBVdGlsaXR5 IGZ1bmN0aW9uIGZvciB1c2UgYnkgU2VuZFF1ZXJ5KCkgb25seS4NCisgKiBI YW5kbGVRdWVyeVJlc3VsdDogcHJpbnQgb3V0LCBzdG9yZSBvciBleGVjdXRl IG9uZSBxdWVyeSByZXN1bHQNCisgKiBhcyByZXF1aXJlZC4NCiAgKg0KICAq IFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVlcnkgZXhlY3V0ZWQgc3VjY2Vzc2Z1 bGx5LCBmYWxzZSBvdGhlcndpc2UuDQogICovDQogc3RhdGljIGJvb2wNCi1Q cmludFF1ZXJ5UmVzdWx0cyhQR3Jlc3VsdCAqcmVzdWx0cykNCitIYW5kbGVR dWVyeVJlc3VsdChQR3Jlc3VsdCAqcmVzdWx0LCBib29sIGxhc3QpDQogew0K IAlib29sCQlzdWNjZXNzOw0KIAljb25zdCBjaGFyICpjbWRzdGF0dXM7DQog DQotCWlmICghcmVzdWx0cykNCisJaWYgKHJlc3VsdCA9PSBOVUxMKQ0KIAkJ cmV0dXJuIGZhbHNlOw0KIA0KLQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJl c3VsdHMpKQ0KKwlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkpDQog CXsNCiAJCWNhc2UgUEdSRVNfVFVQTEVTX09LOg0KIAkJCS8qIHN0b3JlIG9y IGV4ZWN1dGUgb3IgcHJpbnQgdGhlIGRhdGEgLi4uICovDQotCQkJaWYgKHBz ZXQuZ3NldF9wcmVmaXgpDQotCQkJCXN1Y2Nlc3MgPSBTdG9yZVF1ZXJ5VHVw bGUocmVzdWx0cyk7DQotCQkJZWxzZSBpZiAocHNldC5nZXhlY19mbGFnKQ0K LQkJCQlzdWNjZXNzID0gRXhlY1F1ZXJ5VHVwbGVzKHJlc3VsdHMpOw0KLQkJ CWVsc2UgaWYgKHBzZXQuY3Jvc3N0YWJfZmxhZykNCi0JCQkJc3VjY2VzcyA9 IFByaW50UmVzdWx0c0luQ3Jvc3N0YWIocmVzdWx0cyk7DQorCQkJaWYgKGxh c3QgJiYgcHNldC5nc2V0X3ByZWZpeCkNCisJCQkJc3VjY2VzcyA9IFN0b3Jl UXVlcnlUdXBsZShyZXN1bHQpOw0KKwkJCWVsc2UgaWYgKGxhc3QgJiYgcHNl dC5nZXhlY19mbGFnKQ0KKwkJCQlzdWNjZXNzID0gRXhlY1F1ZXJ5VHVwbGVz KHJlc3VsdCk7DQorCQkJZWxzZSBpZiAobGFzdCAmJiBwc2V0LmNyb3NzdGFi X2ZsYWcpDQorCQkJCXN1Y2Nlc3MgPSBQcmludFJlc3VsdHNJbkNyb3NzdGFi KHJlc3VsdCk7DQogCQkJZWxzZQ0KLQkJCQlzdWNjZXNzID0gUHJpbnRRdWVy eVR1cGxlcyhyZXN1bHRzKTsNCisJCQkJc3VjY2VzcyA9IFByaW50UXVlcnlU dXBsZXMocmVzdWx0KTsNCisNCiAJCQkvKiBpZiBpdCdzIElOU0VSVC9VUERB VEUvREVMRVRFIFJFVFVSTklORywgYWxzbyBwcmludCBzdGF0dXMgKi8NCi0J CQljbWRzdGF0dXMgPSBQUWNtZFN0YXR1cyhyZXN1bHRzKTsNCisJCQljbWRz dGF0dXMgPSBQUWNtZFN0YXR1cyhyZXN1bHQpOw0KIAkJCWlmIChzdHJuY21w KGNtZHN0YXR1cywgIklOU0VSVCIsIDYpID09IDAgfHwNCiAJCQkJc3RybmNt cChjbWRzdGF0dXMsICJVUERBVEUiLCA2KSA9PSAwIHx8DQogCQkJCXN0cm5j bXAoY21kc3RhdHVzLCAiREVMRVRFIiwgNikgPT0gMCkNCi0JCQkJUHJpbnRR dWVyeVN0YXR1cyhyZXN1bHRzKTsNCisJCQkJUHJpbnRRdWVyeVN0YXR1cyhy ZXN1bHQpOw0KKw0KIAkJCWJyZWFrOw0KIA0KIAkJY2FzZSBQR1JFU19DT01N QU5EX09LOg0KLQkJCVByaW50UXVlcnlTdGF0dXMocmVzdWx0cyk7DQorCQkJ UHJpbnRRdWVyeVN0YXR1cyhyZXN1bHQpOw0KIAkJCXN1Y2Nlc3MgPSB0cnVl Ow0KIAkJCWJyZWFrOw0KIA0KQEAgLTExNDAsNyArMTAxMyw3IEBAIFByaW50 UXVlcnlSZXN1bHRzKFBHcmVzdWx0ICpyZXN1bHRzKQ0KIA0KIAkJY2FzZSBQ R1JFU19DT1BZX09VVDoNCiAJCWNhc2UgUEdSRVNfQ09QWV9JTjoNCi0JCQkv KiBub3RoaW5nIHRvIGRvIGhlcmUgKi8NCisJCQkvKiBub3RoaW5nIHRvIGRv IGhlcmU6IGFscmVhZHkgcHJvY2Vzc2VkICovDQogCQkJc3VjY2VzcyA9IHRy dWU7DQogCQkJYnJlYWs7DQogDQpAQCAtMTE1Myw3ICsxMDI2LDcgQEAgUHJp bnRRdWVyeVJlc3VsdHMoUEdyZXN1bHQgKnJlc3VsdHMpDQogCQlkZWZhdWx0 Og0KIAkJCXN1Y2Nlc3MgPSBmYWxzZTsNCiAJCQlwZ19sb2dfZXJyb3IoInVu ZXhwZWN0ZWQgUFFyZXN1bHRTdGF0dXM6ICVkIiwNCi0JCQkJCQkgUFFyZXN1 bHRTdGF0dXMocmVzdWx0cykpOw0KKwkJCQkJCSBQUXJlc3VsdFN0YXR1cyhy ZXN1bHQpKTsNCiAJCQlicmVhazsNCiAJfQ0KIA0KQEAgLTExNjIsNiArMTAz NSwxOTkgQEAgUHJpbnRRdWVyeVJlc3VsdHMoUEdyZXN1bHQgKnJlc3VsdHMp DQogCXJldHVybiBzdWNjZXNzOw0KIH0NCiANCisvKg0KKyAqIERhdGEgc3Ry dWN0dXJlIGFuZCBmdW5jdGlvbnMgdG8gcmVjb3JkIG5vdGljZXMgd2hpbGUg dGhleSBhcmUNCisgKiBlbWl0dGVkLCBzbyB0aGF0IHRoZXkgY2FuIGJlIHNo b3duIGxhdGVyLg0KKyAqDQorICogV2UgbmVlZCB0byBrbm93IHdoaWNoIHJl c3VsdCBpcyBsYXN0LCB3aGljaCByZXF1aXJlcyB0byBleHRyYWN0DQorICog b25lIHJlc3VsdCBpbiBhZHZhbmNlLCBoZW5jZSB0d28gYnVmZmVycyBhcmUg bmVlZGVkLg0KKyAqLw0KK3R5cGVkZWYgc3RydWN0IHsNCisJYm9vbAkJCWlu X2ZsaXA7DQorCVBRRXhwQnVmZmVyRGF0YQlmbGlwOw0KKwlQUUV4cEJ1ZmZl ckRhdGEJZmxvcDsNCit9IHRfbm90aWNlX21lc3NhZ2VzOw0KKw0KKy8qDQor ICogU3RvcmUgbm90aWNlcyBpbiBhcHByb3ByaWF0ZSBidWZmZXIsIGZvciBs YXRlciBkaXNwbGF5Lg0KKyAqLw0KK3N0YXRpYyB2b2lkDQorQXBwZW5kTm90 aWNlTWVzc2FnZSh2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1zZykNCit7DQor CXRfbm90aWNlX21lc3NhZ2VzICpub3RlcyA9ICh0X25vdGljZV9tZXNzYWdl cyopIGFyZzsNCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIobm90ZXMtPmluX2Zs aXAgPyAmbm90ZXMtPmZsaXAgOiAmbm90ZXMtPmZsb3AsIG1zZyk7DQorfQ0K Kw0KKy8qDQorICogU2hvdyBub3RpY2VzIHN0b3JlZCBpbiBidWZmZXIsIHdo aWNoIGlzIHRoZW4gcmVzZXQuDQorICovDQorc3RhdGljIHZvaWQNCitTaG93 Tm90aWNlTWVzc2FnZSh0X25vdGljZV9tZXNzYWdlcyAqbm90ZXMpDQorew0K KwlQUUV4cEJ1ZmZlckRhdGEJKmN1cnJlbnQgPSBub3Rlcy0+aW5fZmxpcCA/ ICZub3Rlcy0+ZmxpcCA6ICZub3Rlcy0+ZmxvcDsNCisJaWYgKGN1cnJlbnQt PmRhdGEgIT0gTlVMTCAmJiAqY3VycmVudC0+ZGF0YSAhPSAnXDAnKQ0KKwkJ cGdfbG9nX2luZm8oIiVzIiwgY3VycmVudC0+ZGF0YSk7DQorCXJlc2V0UFFF eHBCdWZmZXIoY3VycmVudCk7DQorfQ0KKw0KKy8qDQorICogU2VuZFF1ZXJ5 QW5kUHJvY2Vzc1Jlc3VsdHM6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBi eSBTZW5kUXVlcnkoKQ0KKyAqIGFuZCBQU1FMZXhlY1dhdGNoKCkuDQorICoN CisgKiBTZW5kcyBxdWVyeSBhbmQgY3ljbGVzIHRocm91Z2ggUEdyZXN1bHQg b2JqZWN0cy4NCisgKg0KKyAqIFdoZW4gbm90IHVuZGVyIFx3YXRjaCBhbmQg aWYgb3VyIGNvbW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBhIENPUFkgRlJPTSBT VERJTg0KKyAqIG9yIENPUFkgVE8gU1RET1VULCB0aGUgUEdyZXN1bHQgYXNz b2NpYXRlZCB3aXRoIHRoZXNlIGNvbW1hbmRzIG11c3QgYmUNCisgKiBwcm9j ZXNzZWQgYnkgcHJvdmlkaW5nIGFuIGlucHV0IG9yIG91dHB1dCBzdHJlYW0u ICBJbiB0aGF0IGV2ZW50LCB3ZSdsbA0KKyAqIG1hcnNoYWwgZGF0YSBmb3Ig dGhlIENPUFkuDQorICoNCisgKiBGb3Igb3RoZXIgY29tbWFuZHMsIHRoZSBy ZXN1bHRzIGFyZSBwcm9jZXNzZWQgbm9ybWFsbHksIGRlcGVuZGluZyBvbiB0 aGVpcg0KKyAqIHN0YXR1cy4NCisgKg0KKyAqIFJldHVybnMgMSBvbiBjb21w bGV0ZSBzdWNjZXNzLCAwIG9uIGludGVycnVwdCBhbmQgLTEgb3IgZXJyb3Jz LiAgUG9zc2libGUNCisgKiBmYWlsdXJlIG1vZGVzIGluY2x1ZGUgcHVyZWx5 IGNsaWVudC1zaWRlIHByb2JsZW1zOyBjaGVjayB0aGUgdHJhbnNhY3Rpb24N CisgKiBzdGF0dXMgZm9yIHRoZSBzZXJ2ZXItc2lkZSBvcGluaW9uLg0KKyAq DQorICogTm90ZSB0aGF0IG9uIGEgY29tYmluZWQgcXVlcnksIGZhaWx1cmUg ZG9lcyBub3QgbWVhbiB0aGF0IG5vdGhpbmcgd2FzDQorICogY29tbWl0dGVk Lg0KKyAqLw0KK3N0YXRpYyBpbnQNCitTZW5kUXVlcnlBbmRQcm9jZXNzUmVz dWx0cyhjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICpwZWxhcHNlZF9tc2Vj LCBib29sIGlzX3dhdGNoKQ0KK3sNCisJYm9vbAkJCQlzdWNjZXNzOw0KKwlp bnN0cl90aW1lCQkJYmVmb3JlOw0KKwlQR3Jlc3VsdAkJICAgKnJlc3VsdDsN CisJdF9ub3RpY2VfbWVzc2FnZXMJbm90ZXM7DQorDQorCWlmIChwc2V0LnRp bWluZykNCisJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoYmVmb3JlKTsNCisN CisJc3VjY2VzcyA9IFBRc2VuZFF1ZXJ5KHBzZXQuZGIsIHF1ZXJ5KTsNCisJ UmVzZXRDYW5jZWxDb25uKCk7DQorDQorCWlmICghc3VjY2VzcykNCisJCXJl dHVybiAtMTsNCisNCisJLyoNCisJICogSWYgU0lHSU5UIGlzIHNlbnQgd2hp bGUgdGhlIHF1ZXJ5IGlzIHByb2Nlc3NpbmcsIHRoZSBpbnRlcnJ1cHQgd2ls bCBiZQ0KKwkgKiBjb25zdW1lZC4gIFRoZSB1c2VyJ3MgaW50ZW50aW9uLCB0 aG91Z2gsIGlzIHRvIGNhbmNlbCB0aGUgZW50aXJlIHdhdGNoDQorCSAqIHBy b2Nlc3MsIHNvIGRldGVjdCBhIHNlbnQgY2FuY2VsbGF0aW9uIHJlcXVlc3Qg YW5kIGV4aXQgaW4gdGhpcyBjYXNlLg0KKwkgKi8NCisJaWYgKGlzX3dhdGNo ICYmIGNhbmNlbF9wcmVzc2VkKQ0KKwl7DQorCQlDbGVhck9yU2F2ZUFsbFJl c3VsdHMoKTsNCisJCXJldHVybiAwOw0KKwl9DQorDQorCS8qIGludGVyY2Vw dCBub3RpY2VzICovDQorCW5vdGVzLmluX2ZsaXAgPSB0cnVlOw0KKwlpbml0 UFFFeHBCdWZmZXIoJm5vdGVzLmZsaXApOw0KKwlpbml0UFFFeHBCdWZmZXIo Jm5vdGVzLmZsb3ApOw0KKwlQUXNldE5vdGljZVByb2Nlc3Nvcihwc2V0LmRi LCBBcHBlbmROb3RpY2VNZXNzYWdlLCAmbm90ZXMpOw0KKw0KKwkvKiBmaXJz dCByZXN1bHQgKi8NCisJcmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7 DQorDQorCXdoaWxlIChyZXN1bHQgIT0gTlVMTCkNCisJew0KKwkJRXhlY1N0 YXR1c1R5cGUgcmVzdWx0X3N0YXR1czsNCisJCVBHcmVzdWx0ICAgKm5leHRf cmVzdWx0Ow0KKwkJYm9vbAkJbGFzdDsNCisNCisJCWlmICghQWNjZXB0UmVz dWx0KHJlc3VsdCwgZmFsc2UpKQ0KKwkJew0KKwkJCS8qDQorCQkJICogU29t ZSBlcnJvciBvY2N1cmVkLCBlaXRoZXIgYSBzZXJ2ZXItc2lkZSBmYWlsdXJl IG9yDQorCQkJICogYSBmYWlsdXJlIHRvIHN1Ym1pdCB0aGUgY29tbWFuZCBz dHJpbmcuICBSZWNvcmQgdGhhdC4NCisJCQkgKi8NCisJCQlTaG93Tm90aWNl TWVzc2FnZSgmbm90ZXMpOw0KKwkJCVNob3dFcnJvck1lc3NhZ2UocmVzdWx0 KTsNCisJCQlpZiAoIWlzX3dhdGNoKQ0KKwkJCQlTZXRSZXN1bHRWYXJpYWJs ZXMocmVzdWx0LCBmYWxzZSk7DQorCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVz dWx0KTsNCisJCQlzdWNjZXNzID0gZmFsc2U7DQorDQorCQkJLyogYW5kIHN3 aXRjaCB0byBuZXh0IHJlc3VsdCAqLw0KKwkJCXJlc3VsdCA9IFBRZ2V0UmVz dWx0KHBzZXQuZGIpOw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KKw0KKwkJLyog bXVzdCBoYW5kbGUgQ09QWSBiZWZvcmUgY2hhbmdpbmcgdGhlIGN1cnJlbnQg cmVzdWx0ICovDQorCQlyZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMo cmVzdWx0KTsNCisJCUFzc2VydChyZXN1bHRfc3RhdHVzICE9IFBHUkVTX0NP UFlfQk9USCk7DQorCQlpZiAocmVzdWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZ X0lOIHx8DQorCQkJcmVzdWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZX09VVCkN CisJCXsNCisJCQlTaG93Tm90aWNlTWVzc2FnZSgmbm90ZXMpOw0KKw0KKwkJ CWlmIChpc193YXRjaCkNCisJCQl7DQorCQkJCUNsZWFyT3JTYXZlQWxsUmVz dWx0cygpOw0KKwkJCQlwZ19sb2dfZXJyb3IoIlxcd2F0Y2ggY2Fubm90IGJl IHVzZWQgd2l0aCBDT1BZIik7DQorCQkJCXJldHVybiAtMTsNCisJCQl9DQor DQorCQkJc3VjY2VzcyAmPSBIYW5kbGVDb3B5UmVzdWx0KCZyZXN1bHQpOw0K KwkJfQ0KKw0KKwkJLyoNCisJCSAqIENoZWNrIFBRZ2V0UmVzdWx0KCkgYWdh aW4uICBJbiB0aGUgdHlwaWNhbCBjYXNlIG9mIGEgc2luZ2xlLWNvbW1hbmQN CisJCSAqIHN0cmluZywgaXQgd2lsbCByZXR1cm4gTlVMTC4gIE90aGVyd2lz ZSwgd2UnbGwgaGF2ZSBvdGhlciByZXN1bHRzDQorCQkgKiB0byBwcm9jZXNz Lg0KKwkJICovDQorCQlub3Rlcy5pbl9mbGlwID0gIW5vdGVzLmluX2ZsaXA7 DQorCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOw0KKwkJ bm90ZXMuaW5fZmxpcCA9ICFub3Rlcy5pbl9mbGlwOw0KKwkJbGFzdCA9IChu ZXh0X3Jlc3VsdCA9PSBOVUxMKTsNCisNCisJCS8qDQorCQkgKiBHZXQgdGlt aW5nIG1lYXN1cmUgYmVmb3JlIHByaW50aW5nIHRoZSBsYXN0IHJlc3VsdC4N CisJCSAqDQorCQkgKiBJdCB3aWxsIGluY2x1ZGUgdGhlIGRpc3BsYXkgb2Yg cHJldmlvdXMgcmVzdWx0cywgaWYgYW55Lg0KKwkJICogVGhpcyBjYW5ub3Qg YmUgaGVscGVkIGJlY2F1c2UgdGhlIHNlcnZlciBnb2VzIG9uIHByb2Nlc3Np bmcNCisJCSAqIGZ1cnRoZXIgcXVlcmllcyBhbnl3YXkgd2hpbGUgdGhlIHBy ZXZpb3VzIG9uZXMgYXJlIGJlaW5nIGRpc3BsYXllZC4NCisJCSAqIFRoZSBw YXJhbGxlbCBleGVjdXRpb24gb2YgdGhlIGNsaWVudCBkaXNwbGF5IGhpZGVz IHRoZSBzZXJ2ZXIgdGltZQ0KKwkJICogd2hlbiBpdCBpcyBzaG9ydGVyLg0K KwkJICoNCisJCSAqIFdpdGggY29tYmluZWQgcXVlcmllcywgdGltaW5nIG11 c3QgYmUgdW5kZXJzdG9vZCBhcyBhbiB1cHBlciBib3VuZA0KKwkJICogb2Yg dGhlIHRpbWUgc3BlbnQgcHJvY2Vzc2luZyB0aGVtLg0KKwkJICovDQorCQlp ZiAobGFzdCAmJiBwc2V0LnRpbWluZykNCisJCXsNCisJCQlpbnN0cl90aW1l CW5vdzsNCisJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKG5vdyk7DQorCQkJ SU5TVFJfVElNRV9TVUJUUkFDVChub3csIGJlZm9yZSk7DQorCQkJKnBlbGFw c2VkX21zZWMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhub3cpOw0KKwkJ fQ0KKw0KKwkJLyogbm90aWNlcyBhbHJlYWR5IHNob3duIGFib3ZlIGZvciBj b3B5ICovDQorCQlTaG93Tm90aWNlTWVzc2FnZSgmbm90ZXMpOw0KKw0KKwkJ LyogdGhpcyBtYXkgb3IgbWF5IG5vdCBwcmludCBzb21ldGhpbmcgZGVwZW5k aW5nIG9uIHNldHRpbmdzICovDQorCQlpZiAocmVzdWx0ICE9IE5VTEwpDQor CQkJc3VjY2VzcyAmPSBIYW5kbGVRdWVyeVJlc3VsdChyZXN1bHQsIGxhc3Qp Ow0KKw0KKwkJLyogc2V0IHZhcmlhYmxlcyBvbiBsYXN0IHJlc3VsdCBpZiBh bGwgd2VudCB3ZWxsICovDQorCQlpZiAoIWlzX3dhdGNoICYmIGxhc3QgJiYg c3VjY2VzcykNCisJCQlTZXRSZXN1bHRWYXJpYWJsZXMocmVzdWx0LCB0cnVl KTsNCisNCisJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7DQorCQlub3Rl cy5pbl9mbGlwID0gIW5vdGVzLmluX2ZsaXA7DQorCQlyZXN1bHQgPSBuZXh0 X3Jlc3VsdDsNCisJfQ0KKw0KKwkvKiByZXNldCBub3RpY2UgaG9vayAqLw0K KwlQUXNldE5vdGljZVByb2Nlc3Nvcihwc2V0LmRiLCBOb3RpY2VQcm9jZXNz b3IsIE5VTEwpOw0KKwl0ZXJtUFFFeHBCdWZmZXIoJm5vdGVzLmZsaXApOw0K Kwl0ZXJtUFFFeHBCdWZmZXIoJm5vdGVzLmZsb3ApOw0KKw0KKwkvKiBtYXkg bmVlZCB0aGlzIHRvIHJlY292ZXIgZnJvbSBjb25uIGxvc3MgZHVyaW5nIENP UFkgKi8NCisJaWYgKCFDaGVja0Nvbm5lY3Rpb24oKSkNCisJCXJldHVybiAt MTsNCisNCisJcmV0dXJuIHN1Y2Nlc3MgPyAxIDogLTE7DQorfQ0KKw0KIA0K IC8qDQogICogU2VuZFF1ZXJ5OiBzZW5kIHRoZSBxdWVyeSBzdHJpbmcgdG8g dGhlIGJhY2tlbmQNCkBAIC0xMTc4LDkgKzEyNDQsOSBAQCBQcmludFF1ZXJ5 UmVzdWx0cyhQR3Jlc3VsdCAqcmVzdWx0cykNCiBib29sDQogU2VuZFF1ZXJ5 KGNvbnN0IGNoYXIgKnF1ZXJ5KQ0KIHsNCi0JUEdyZXN1bHQgICAqcmVzdWx0 czsNCisJUEdyZXN1bHQgICAqcmVzdWx0cyA9IE5VTEw7DQogCVBHVHJhbnNh Y3Rpb25TdGF0dXNUeXBlIHRyYW5zYWN0aW9uX3N0YXR1czsNCi0JZG91Ymxl CQllbGFwc2VkX21zZWMgPSAwOw0KKwlkb3VibGUJCWVsYXBzZWRfbXNlYyA9 IDAuMDsNCiAJYm9vbAkJT0sgPSBmYWxzZTsNCiAJaW50CQkJaTsNCiAJYm9v bAkJb25fZXJyb3Jfcm9sbGJhY2tfc2F2ZXBvaW50ID0gZmFsc2U7DQpAQCAt MTI4MywyOCArMTM0OSw4IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVy eSkNCiAJCQkgcHNldC5jcm9zc3RhYl9mbGFnIHx8ICFpc19zZWxlY3RfY29t bWFuZChxdWVyeSkpDQogCXsNCiAJCS8qIERlZmF1bHQgZmV0Y2gtaXQtYWxs LWFuZC1wcmludCBtb2RlICovDQotCQlpbnN0cl90aW1lCWJlZm9yZSwNCi0J CQkJCWFmdGVyOw0KLQ0KLQkJaWYgKHBzZXQudGltaW5nKQ0KLQkJCUlOU1RS X1RJTUVfU0VUX0NVUlJFTlQoYmVmb3JlKTsNCi0NCi0JCXJlc3VsdHMgPSBQ UWV4ZWMocHNldC5kYiwgcXVlcnkpOw0KLQ0KLQkJLyogdGhlc2Ugb3BlcmF0 aW9ucyBhcmUgaW5jbHVkZWQgaW4gdGhlIHRpbWluZyByZXN1bHQ6ICovDQot CQlSZXNldENhbmNlbENvbm4oKTsNCi0JCU9LID0gUHJvY2Vzc1Jlc3VsdCgm cmVzdWx0cyk7DQotDQotCQlpZiAocHNldC50aW1pbmcpDQotCQl7DQotCQkJ SU5TVFJfVElNRV9TRVRfQ1VSUkVOVChhZnRlcik7DQotCQkJSU5TVFJfVElN RV9TVUJUUkFDVChhZnRlciwgYmVmb3JlKTsNCi0JCQllbGFwc2VkX21zZWMg PSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhhZnRlcik7DQotCQl9DQotDQot CQkvKiBidXQgcHJpbnRpbmcgcmVzdWx0cyBpc24ndDogKi8NCi0JCWlmIChP SyAmJiByZXN1bHRzKQ0KLQkJCU9LID0gUHJpbnRRdWVyeVJlc3VsdHMocmVz dWx0cyk7DQorCQlpbnQgcmVzID0gU2VuZFF1ZXJ5QW5kUHJvY2Vzc1Jlc3Vs dHMocXVlcnksICZlbGFwc2VkX21zZWMsIGZhbHNlKTsNCisJCU9LID0gKHJl cyA+PSAwKTsNCiAJfQ0KIAllbHNlDQogCXsNCkBAIC0xNDg1LDcgKzE1MzEs NyBAQCBEZXNjcmliZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUg KmVsYXBzZWRfbXNlYykNCiAJUFFjbGVhcihyZXN1bHRzKTsNCiANCiAJcmVz dWx0cyA9IFBRZGVzY3JpYmVQcmVwYXJlZChwc2V0LmRiLCAiIik7DQotCU9L ID0gQWNjZXB0UmVzdWx0KHJlc3VsdHMpICYmDQorCU9LID0gQWNjZXB0UmVz dWx0KHJlc3VsdHMsIHRydWUpICYmDQogCQkoUFFyZXN1bHRTdGF0dXMocmVz dWx0cykgPT0gUEdSRVNfQ09NTUFORF9PSyk7DQogCWlmIChPSyAmJiByZXN1 bHRzKQ0KIAl7DQpAQCAtMTUzMyw3ICsxNTc5LDcgQEAgRGVzY3JpYmVRdWVy eShjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICplbGFwc2VkX21zZWMpDQog CQkJUFFjbGVhcihyZXN1bHRzKTsNCiANCiAJCQlyZXN1bHRzID0gUFFleGVj KHBzZXQuZGIsIGJ1Zi5kYXRhKTsNCi0JCQlPSyA9IEFjY2VwdFJlc3VsdChy ZXN1bHRzKTsNCisJCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzLCB0cnVl KTsNCiANCiAJCQlpZiAocHNldC50aW1pbmcpDQogCQkJew0KQEAgLTE1NDMs NyArMTU4OSw3IEBAIERlc2NyaWJlUXVlcnkoY29uc3QgY2hhciAqcXVlcnks IGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0KIAkJCX0NCiANCiAJCQlpZiAoT0sg JiYgcmVzdWx0cykNCi0JCQkJT0sgPSBQcmludFF1ZXJ5UmVzdWx0cyhyZXN1 bHRzKTsNCisJCQkJT0sgPSBIYW5kbGVRdWVyeVJlc3VsdChyZXN1bHRzLCB0 cnVlKTsNCiANCiAJCQl0ZXJtUFFFeHBCdWZmZXIoJmJ1Zik7DQogCQl9DQpA QCAtMTYwMiw3ICsxNjQ4LDcgQEAgRXhlY1F1ZXJ5VXNpbmdDdXJzb3IoY29u c3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0KIAlpZiAo UFF0cmFuc2FjdGlvblN0YXR1cyhwc2V0LmRiKSA9PSBQUVRSQU5TX0lETEUp DQogCXsNCiAJCXJlc3VsdHMgPSBQUWV4ZWMocHNldC5kYiwgIkJFR0lOIik7 DQotCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzKSAmJg0KKwkJT0sgPSBB Y2NlcHRSZXN1bHQocmVzdWx0cywgdHJ1ZSkgJiYNCiAJCQkoUFFyZXN1bHRT dGF0dXMocmVzdWx0cykgPT0gUEdSRVNfQ09NTUFORF9PSyk7DQogCQlDbGVh ck9yU2F2ZVJlc3VsdChyZXN1bHRzKTsNCiAJCWlmICghT0spDQpAQCAtMTYx Niw3ICsxNjYyLDcgQEAgRXhlY1F1ZXJ5VXNpbmdDdXJzb3IoY29uc3QgY2hh ciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0KIAkJCQkJICBxdWVy eSk7DQogDQogCXJlc3VsdHMgPSBQUWV4ZWMocHNldC5kYiwgYnVmLmRhdGEp Ow0KLQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzKSAmJg0KKwlPSyA9IEFj Y2VwdFJlc3VsdChyZXN1bHRzLCB0cnVlKSAmJg0KIAkJKFBRcmVzdWx0U3Rh dHVzKHJlc3VsdHMpID09IFBHUkVTX0NPTU1BTkRfT0spOw0KIAlpZiAoIU9L KQ0KIAkJU2V0UmVzdWx0VmFyaWFibGVzKHJlc3VsdHMsIE9LKTsNCkBAIC0x Njg5LDcgKzE3MzUsNyBAQCBFeGVjUXVlcnlVc2luZ0N1cnNvcihjb25zdCBj aGFyICpxdWVyeSwgZG91YmxlICplbGFwc2VkX21zZWMpDQogCQkJCWlzX3Bh Z2VyID0gZmFsc2U7DQogCQkJfQ0KIA0KLQkJCU9LID0gQWNjZXB0UmVzdWx0 KHJlc3VsdHMpOw0KKwkJCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdHMsIHRy dWUpOw0KIAkJCUFzc2VydCghT0spOw0KIAkJCVNldFJlc3VsdFZhcmlhYmxl cyhyZXN1bHRzLCBPSyk7DQogCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0 cyk7DQpAQCAtMTc5OCw3ICsxODQ0LDcgQEAgY2xlYW51cDoNCiAJcmVzdWx0 cyA9IFBRZXhlYyhwc2V0LmRiLCAiQ0xPU0UgX3BzcWxfY3Vyc29yIik7DQog CWlmIChPSykNCiAJew0KLQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cykg JiYNCisJCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdHMsIHRydWUpICYmDQog CQkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdHMpID09IFBHUkVTX0NPTU1BTkRf T0spOw0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0cyk7DQogCX0NCkBA IC0xODA4LDcgKzE4NTQsNyBAQCBjbGVhbnVwOg0KIAlpZiAoc3RhcnRlZF90 eG4pDQogCXsNCiAJCXJlc3VsdHMgPSBQUWV4ZWMocHNldC5kYiwgT0sgPyAi Q09NTUlUIiA6ICJST0xMQkFDSyIpOw0KLQkJT0sgJj0gQWNjZXB0UmVzdWx0 KHJlc3VsdHMpICYmDQorCQlPSyAmPSBBY2NlcHRSZXN1bHQocmVzdWx0cywg dHJ1ZSkgJiYNCiAJCQkoUFFyZXN1bHRTdGF0dXMocmVzdWx0cykgPT0gUEdS RVNfQ09NTUFORF9PSyk7DQogCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHRz KTsNCiAJfQ0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29weTIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5 Mi5vdXQNCmluZGV4IGU0MDI4N2QyNWEuLjFiMzFlZGM5ZWEgMTAwNjQ0DQot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dA0KKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQNCkBAIC00 NzUsMTAgKzQ3NSwxMCBAQCBjb3B5IGNoZWNrX2Nvbl90YmwgZnJvbSBzdGRp bjsNCiBOT1RJQ0U6ICBpbnB1dCA9IHsiZjEiOjF9DQogTk9USUNFOiAgaW5w dXQgPSB7ImYxIjpudWxsfQ0KIGNvcHkgY2hlY2tfY29uX3RibCBmcm9tIHN0 ZGluOw0KLU5PVElDRTogIGlucHV0ID0geyJmMSI6MH0NCiBFUlJPUjogIG5l dyByb3cgZm9yIHJlbGF0aW9uICJjaGVja19jb25fdGJsIiB2aW9sYXRlcyBj aGVjayBjb25zdHJhaW50ICJjaGVja19jb25fdGJsX2NoZWNrIg0KIERFVEFJ TDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwKS4NCiBDT05URVhUOiAgQ09Q WSBjaGVja19jb25fdGJsLCBsaW5lIDE6ICIwIg0KK05PVElDRTogIGlucHV0 ID0geyJmMSI6MH0NCiBzZWxlY3QgKiBmcm9tIGNoZWNrX2Nvbl90Ymw7DQog IGYxIA0KIC0tLS0NCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NvcHlkbWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb3B5ZG1sLm91dA0KaW5kZXggMWI1MzM5NjJjNi4uYjVhMjI1NjI4ZiAx MDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weWRt bC5vdXQNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weWRt bC5vdXQNCkBAIC04NCwxMCArODQsMTAgQEAgZHJvcCBydWxlIHFxcSBvbiBj b3B5ZG1sX3Rlc3Q7DQogY3JlYXRlIGZ1bmN0aW9uIHFxcV90cmlnKCkgcmV0 dXJucyB0cmlnZ2VyIGFzICQkDQogYmVnaW4NCiBpZiB0Z19vcCBpbiAoJ0lO U0VSVCcsICdVUERBVEUnKSB0aGVuDQotICAgIHJhaXNlIG5vdGljZSAnJSAl JywgdGdfb3AsIG5ldy5pZDsNCisgICAgcmFpc2Ugbm90aWNlICclICUgJScs IHRnX3doZW4sIHRnX29wLCBuZXcuaWQ7DQogICAgIHJldHVybiBuZXc7DQog ZWxzZQ0KLSAgICByYWlzZSBub3RpY2UgJyUgJScsIHRnX29wLCBvbGQuaWQ7 DQorICAgIHJhaXNlIG5vdGljZSAnJSAlICUnLCB0Z193aGVuLCB0Z19vcCwg b2xkLmlkOw0KICAgICByZXR1cm4gb2xkOw0KIGVuZCBpZjsNCiBlbmQNCkBA IC05NywxNiArOTcsMTYgQEAgY3JlYXRlIHRyaWdnZXIgcXFxYmVmIGJlZm9y ZSBpbnNlcnQgb3IgdXBkYXRlIG9yIGRlbGV0ZSBvbiBjb3B5ZG1sX3Rlc3QN CiBjcmVhdGUgdHJpZ2dlciBxcXFhZiBhZnRlciBpbnNlcnQgb3IgdXBkYXRl IG9yIGRlbGV0ZSBvbiBjb3B5ZG1sX3Rlc3QNCiAgICAgZm9yIGVhY2ggcm93 IGV4ZWN1dGUgcHJvY2VkdXJlIHFxcV90cmlnKCk7DQogY29weSAoaW5zZXJ0 IGludG8gY29weWRtbF90ZXN0ICh0KSB2YWx1ZXMgKCdmJykgcmV0dXJuaW5n IGlkKSB0byBzdGRvdXQ7DQotTk9USUNFOiAgSU5TRVJUIDgNCitOT1RJQ0U6 ICBCRUZPUkUgSU5TRVJUIDgNCiA4DQotTk9USUNFOiAgSU5TRVJUIDgNCitO T1RJQ0U6ICBBRlRFUiBJTlNFUlQgOA0KIGNvcHkgKHVwZGF0ZSBjb3B5ZG1s X3Rlc3Qgc2V0IHQgPSAnZycgd2hlcmUgdCA9ICdmJyByZXR1cm5pbmcgaWQp IHRvIHN0ZG91dDsNCi1OT1RJQ0U6ICBVUERBVEUgOA0KK05PVElDRTogIEJF Rk9SRSBVUERBVEUgOA0KIDgNCi1OT1RJQ0U6ICBVUERBVEUgOA0KK05PVElD RTogIEFGVEVSIFVQREFURSA4DQogY29weSAoZGVsZXRlIGZyb20gY29weWRt bF90ZXN0IHdoZXJlIHQgPSAnZycgcmV0dXJuaW5nIGlkKSB0byBzdGRvdXQ7 DQotTk9USUNFOiAgREVMRVRFIDgNCitOT1RJQ0U6ICBCRUZPUkUgREVMRVRF IDgNCiA4DQotTk9USUNFOiAgREVMRVRFIDgNCitOT1RJQ0U6ICBBRlRFUiBE RUxFVEUgOA0KIGRyb3AgdGFibGUgY29weWRtbF90ZXN0Ow0KIGRyb3AgZnVu Y3Rpb24gcXFxX3RyaWcoKTsNCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvcHlzZWxlY3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb3B5c2VsZWN0Lm91dA0KaW5kZXggNzI4NjVmZTFlYi4u MzlhYjhmYzg3YSAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weXNlbGVjdC5vdXQNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29weXNlbGVjdC5vdXQNCkBAIC0xMjYsNyArMTI2LDcgQEAg Y29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dFw7IHNlbGVjdCAxLzA7CS0tIHJv dywgdGhlbiBlcnJvcg0KIEVSUk9SOiAgZGl2aXNpb24gYnkgemVybw0KIHNl bGVjdCAxLzBcOyBjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0OyAtLSBlcnJv ciBvbmx5DQogRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvDQotY29weSAoc2Vs ZWN0IDEpIHRvIHN0ZG91dFw7IGNvcHkgKHNlbGVjdCAyKSB0byBzdGRvdXRc OyBzZWxlY3QgMFw7IHNlbGVjdCAzOyAtLSAxIDIgMw0KK2NvcHkgKHNlbGVj dCAxKSB0byBzdGRvdXRcOyBjb3B5IChzZWxlY3QgMikgdG8gc3Rkb3V0XDsg c2VsZWN0IDNcOyBzZWxlY3QgNDsgLS0gMSAyIDMgNA0KIDENCiAyDQogID9j b2x1bW4/IA0KQEAgLTEzNCw4ICsxMzQsMTggQEAgY29weSAoc2VsZWN0IDEp IHRvIHN0ZG91dFw7IGNvcHkgKHNlbGVjdCAyKSB0byBzdGRvdXRcOyBzZWxl Y3QgMFw7IHNlbGVjdCAzOyAtLQ0KICAgICAgICAgMw0KICgxIHJvdykNCiAN CisgP2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAgNA0KKygxIHJv dykNCisNCiBjcmVhdGUgdGFibGUgdGVzdDMgKGMgaW50KTsNCiBzZWxlY3Qg MFw7IGNvcHkgdGVzdDMgZnJvbSBzdGRpblw7IGNvcHkgdGVzdDMgZnJvbSBz dGRpblw7IHNlbGVjdCAxOyAtLSAxDQorID9jb2x1bW4/IA0KKy0tLS0tLS0t LS0NCisgICAgICAgIDANCisoMSByb3cpDQorDQogID9jb2x1bW4/IA0KIC0t LS0tLS0tLS0NCiAgICAgICAgIDENCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wc3FsLm91dA0KaW5kZXggN2QyZDYzMjhmYy4uMGM3NDZkZTNm ZSAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNx bC5vdXQNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5v dXQNCkBAIC01MDEyLDMgKzUwMTIsODcgQEAgTGlzdCBvZiBhY2Nlc3MgbWV0 aG9kcw0KICBoYXNoICB8IHV1aWRfb3BzICAgICAgICB8IHV1aWQgICAgICAg ICAgfCB1dWlkICAgICAgICAgICB8ICAgICAgMiB8IHV1aWRfaGFzaF9leHRl bmRlZA0KICg1IHJvd3MpDQogDQorLS0NCistLSBjb21iaW5lZCBxdWVyaWVz DQorLS0NCitcZWNobyAnIyBjb21iaW5lZCBxdWVyaWVzIHRlc3RzJw0KKyMg Y29tYmluZWQgcXVlcmllcyB0ZXN0cw0KK0NSRUFURSBGVU5DVElPTiB3YXJu KG1zZyBURVhUKSBSRVRVUk5TIEJPT0xFQU4gQVMgJCQNCisgIEJFR0lOIFJB SVNFIE5PVElDRSAnd2FybiAlJywgbXNnIDsgUkVUVVJOIFRSVUUgOyBFTkQN CiskJCBMQU5HVUFHRSBwbHBnc3FsOw0KKy0tIHNob3cgYm90aA0KK1NFTEVD VCAxIEFTIG9uZSBcOyBTRUxFQ1Qgd2FybignMS41JykgXDsgU0VMRUNUIDIg QVMgdHdvIDsNCisgb25lIA0KKy0tLS0tDQorICAgMQ0KKygxIHJvdykNCisN CitOT1RJQ0U6ICB3YXJuIDEuNQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5j dGlvbiB3YXJuKHRleHQpIGxpbmUgMiBhdCBSQUlTRQ0KKyB3YXJuIA0KKy0t LS0tLQ0KKyB0DQorKDEgcm93KQ0KKw0KKyB0d28gDQorLS0tLS0NCisgICAy DQorKDEgcm93KQ0KKw0KKy0tIFxnc2V0IGFwcGxpZXMgdG8gbGFzdCBxdWVy eSBvbmx5DQorU0VMRUNUIDMgQVMgdGhyZWUgXDsgU0VMRUNUIHdhcm4oJzMu NScpIFw7IFNFTEVDVCA0IEFTIGZvdXIgXGdzZXQNCisgdGhyZWUgDQorLS0t LS0tLQ0KKyAgICAgMw0KKygxIHJvdykNCisNCitOT1RJQ0U6ICB3YXJuIDMu NQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiB3YXJuKHRleHQpIGxp bmUgMiBhdCBSQUlTRQ0KKyB3YXJuIA0KKy0tLS0tLQ0KKyB0DQorKDEgcm93 KQ0KKw0KK1xlY2hvIDp0aHJlZSA6Zm91cg0KKzp0aHJlZSA0DQorLS0gc3lu dGF4IGVycm9yIHN0b3BzIGFsbCBwcm9jZXNzaW5nDQorU0VMRUNUIDUgXDsg U0VMRUNUIDYgKyBcOyBTRUxFQ1Qgd2FybignNi41JykgXDsgU0VMRUNUIDcg Ow0KK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIjsiDQorTElO RSAxOiBTRUxFQ1QgNSA7IFNFTEVDVCA2ICsgOyBTRUxFQ1Qgd2FybignNi41 JykgOyBTRUxFQ1QgNyA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXg0KKy0tIHdpdGggYWJvcnRlZCB0cmFuc2FjdGlvbiwgc3RvcCBvbiBm aXJzdCBlcnJvcg0KK0JFR0lOIFw7IFNFTEVDVCA4IEFTIGVpZ2h0IFw7IFNF TEVDVCA5LzAgQVMgbmluZSBcOyBST0xMQkFDSyBcOyBTRUxFQ1QgMTAgQVMg dGVuIDsNCisgZWlnaHQgDQorLS0tLS0tLQ0KKyAgICAgOA0KKygxIHJvdykN CisNCitFUlJPUjogIGRpdmlzaW9uIGJ5IHplcm8NCistLSBjbG9zZSBwcmV2 aW91c2x5IGFib3J0ZWQgdHJhbnNhY3Rpb24NCitST0xMQkFDSzsNCistLSBt aXNjIFNRTCBjb21tYW5kcw0KKy0tIChub24gU0VMRUNUIG91dHB1dCBpcyBz ZW50IHRvIHN0ZGVyciwgdGh1cyBpcyBub3Qgc2hvd24gaW4gZXhwZWN0ZWQg cmVzdWx0cykNCitTRUxFQ1QgJ29rJyBBUyAiYmVnaW4iIFw7DQorQ1JFQVRF IFRBQkxFIHBzcWxfY29taWNzKHMgVEVYVCkgXDsNCitJTlNFUlQgSU5UTyBw c3FsX2NvbWljcyBWQUxVRVMgKCdDYWx2aW4nKSwgKCdob2JiZXMnKSBcOw0K K0NPUFkgcHNxbF9jb21pY3MgRlJPTSBTVERJTiBcOw0KK1VQREFURSBwc3Fs X2NvbWljcyBTRVQgcyA9ICdIb2JiZXMnIFdIRVJFIHMgPSAnaG9iYmVzJyBc Ow0KK0RFTEVURSBGUk9NIHBzcWxfY29taWNzIFdIRVJFIHMgPSAnTW9lJyBc Ow0KK0NPUFkgcHNxbF9jb21pY3MgVE8gU1RET1VUIFw7DQorVFJVTkNBVEUg cHNxbF9jb21pY3MgXDsNCitEUk9QIFRBQkxFIHBzcWxfY29taWNzIFw7DQor U0VMRUNUICdvaycgQVMgImRvbmUiIDsNCisgYmVnaW4gDQorLS0tLS0tLQ0K KyBvaw0KKygxIHJvdykNCisNCitDYWx2aW4NCitTdXNpZQ0KK0hvYmJlcw0K KyBkb25lIA0KKy0tLS0tLQ0KKyBvaw0KKygxIHJvdykNCisNCitEUk9QIEZV TkNUSU9OIHdhcm4oVEVYVCk7DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0DQppbmRleCAxYjAzMzEw MDI5Li5lMmI1OGU5ZjI5IDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0DQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQNCkBAIC04NjAsMTEg Kzg2MCwyMSBAQCBEUk9QIFRBQkxFIGFiYzsNCiAtLSB0ZXN0cyByZWx5IG9u IHRoZSBmYWN0IHRoYXQgcHNxbCB3aWxsIG5vdCBicmVhayBTUUwgY29tbWFu ZHMgYXBhcnQgYXQgYQ0KIC0tIGJhY2tzbGFzaC1xdW90ZWQgc2VtaWNvbG9u LCBidXQgd2lsbCBzZW5kIHRoZW0gYXMgb25lIFF1ZXJ5Lg0KIGNyZWF0ZSB0 ZW1wIHRhYmxlIGlfdGFibGUgKGYxIGludCk7DQotLS0gcHNxbCB3aWxsIHNo b3cgb25seSB0aGUgbGFzdCByZXN1bHQgaW4gYSBtdWx0aS1zdGF0ZW1lbnQg UXVlcnkNCi1TRUxFQ1QgMVw7IFNFTEVDVCAyXDsgU0VMRUNUIDM7DQotID9j b2x1bW4/IA0KLS0tLS0tLS0tLS0NCi0gICAgICAgIDMNCistLSBwc3FsIHdp bGwgc2hvdyBhbGwgcmVzdWx0cyBvZiBhIG11bHRpLXN0YXRlbWVudCBRdWVy eQ0KK1NFTEVDVCAxIEFTIG9uZVw7IFNFTEVDVCAyIEFTIHR3b1w7IFNFTEVD VCAzIEFTIHRocmVlOw0KKyBvbmUgDQorLS0tLS0NCisgICAxDQorKDEgcm93 KQ0KKw0KKyB0d28gDQorLS0tLS0NCisgICAyDQorKDEgcm93KQ0KKw0KKyB0 aHJlZSANCistLS0tLS0tDQorICAgICAzDQogKDEgcm93KQ0KIA0KIC0tIHRo aXMgaW1wbGljaXRseSBjb21taXRzOg0KQEAgLTg3Niw2ICs4ODYsMTIgQEAg aW5zZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoMSlcOyBzZWxlY3QgKiBmcm9t IGlfdGFibGU7DQogDQogLS0gMS8wIGVycm9yIHdpbGwgY2F1c2Ugcm9sbGlu ZyBiYWNrIHRoZSB3aG9sZSBpbXBsaWNpdCB0cmFuc2FjdGlvbg0KIGluc2Vy dCBpbnRvIGlfdGFibGUgdmFsdWVzKDIpXDsgc2VsZWN0ICogZnJvbSBpX3Rh YmxlXDsgc2VsZWN0IDEvMDsNCisgZjEgDQorLS0tLQ0KKyAgMQ0KKyAgMg0K KygyIHJvd3MpDQorDQogRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvDQogc2Vs ZWN0ICogZnJvbSBpX3RhYmxlOw0KICBmMSANCkBAIC04OTQsOSArOTEwLDE5 IEBAIHJvbGxiYWNrOyAgLS0gd2UgYXJlIG5vdCBpbiBhIHRyYW5zYWN0aW9u IGF0IHRoaXMgcG9pbnQNCiBXQVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNh Y3Rpb24gaW4gcHJvZ3Jlc3MNCiAtLSBiZWdpbiBjb252ZXJ0cyBpbXBsaWNp dCB0cmFuc2FjdGlvbiBpbnRvIGEgcmVndWxhciBvbmUgdGhhdA0KIC0tIGNh biBleHRlbmQgcGFzdCB0aGUgZW5kIG9mIHRoZSBRdWVyeQ0KLXNlbGVjdCAx XDsgYmVnaW5cOyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg1KTsNCitz ZWxlY3QgMSBBUyBvbmVcOyBiZWdpblw7IGluc2VydCBpbnRvIGlfdGFibGUg dmFsdWVzKDUpOw0KKyBvbmUgDQorLS0tLS0NCisgICAxDQorKDEgcm93KQ0K Kw0KIGNvbW1pdDsNCi1zZWxlY3QgMVw7IGJlZ2luXDsgaW5zZXJ0IGludG8g aV90YWJsZSB2YWx1ZXMoNik7DQorc2VsZWN0IDEgQVMgb25lXDsgYmVnaW5c OyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg2KTsNCisgb25lIA0KKy0t LS0tDQorICAgMQ0KKygxIHJvdykNCisNCiByb2xsYmFjazsNCiAtLSBjb21t aXQgaW4gaW1wbGljaXQtdHJhbnNhY3Rpb24gc3RhdGUgY29tbWl0cyBidXQg aXNzdWVzIGEgd2FybmluZy4NCiBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVl cyg3KVw7IGNvbW1pdFw7IGluc2VydCBpbnRvIGlfdGFibGUgdmFsdWVzKDgp XDsgc2VsZWN0IDEvMDsNCkBAIC05MjIsMjMgKzk0OCw1MyBAQCBzZWxlY3Qg KiBmcm9tIGlfdGFibGU7DQogcm9sbGJhY2s7ICAtLSB3ZSBhcmUgbm90IGlu IGEgdHJhbnNhY3Rpb24gYXQgdGhpcyBwb2ludA0KIFdBUk5JTkc6ICB0aGVy ZSBpcyBubyB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcw0KIC0tIGltcGxpY2l0 IHRyYW5zYWN0aW9uIGJsb2NrIGlzIHN0aWxsIGEgdHJhbnNhY3Rpb24gYmxv Y2ssIGZvciBlLmcuIFZBQ1VVTQ0KLVNFTEVDVCAxXDsgVkFDVVVNOw0KK1NF TEVDVCAxIEFTIG9uZVw7IFZBQ1VVTTsNCisgb25lIA0KKy0tLS0tDQorICAg MQ0KKygxIHJvdykNCisNCiBFUlJPUjogIFZBQ1VVTSBjYW5ub3QgcnVuIGlu c2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrDQotU0VMRUNUIDFcOyBDT01NSVRc OyBWQUNVVU07DQorU0VMRUNUIDIgQVMgdHdvXDsgQ09NTUlUXDsgVkFDVVVN Ow0KIFdBUk5JTkc6ICB0aGVyZSBpcyBubyB0cmFuc2FjdGlvbiBpbiBwcm9n cmVzcw0KKyB0d28gDQorLS0tLS0NCisgICAyDQorKDEgcm93KQ0KKw0KIEVS Uk9SOiAgVkFDVVVNIGNhbm5vdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24g YmxvY2sNCiAtLSB3ZSBkaXNhbGxvdyBzYXZlcG9pbnQtcmVsYXRlZCBjb21t YW5kcyBpbiBpbXBsaWNpdC10cmFuc2FjdGlvbiBzdGF0ZQ0KLVNFTEVDVCAx XDsgU0FWRVBPSU5UIHNwOw0KK1NFTEVDVCAzIEFTIHRocmVlXDsgU0FWRVBP SU5UIHNwOw0KKyB0aHJlZSANCistLS0tLS0tDQorICAgICAzDQorKDEgcm93 KQ0KKw0KIEVSUk9SOiAgU0FWRVBPSU5UIGNhbiBvbmx5IGJlIHVzZWQgaW4g dHJhbnNhY3Rpb24gYmxvY2tzDQotU0VMRUNUIDFcOyBDT01NSVRcOyBTQVZF UE9JTlQgc3A7DQorU0VMRUNUIDQgQVMgZm91clw7IENPTU1JVFw7IFNBVkVQ T0lOVCBzcDsNCiBXQVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNhY3Rpb24g aW4gcHJvZ3Jlc3MNCisgZm91ciANCistLS0tLS0NCisgICAgNA0KKygxIHJv dykNCisNCiBFUlJPUjogIFNBVkVQT0lOVCBjYW4gb25seSBiZSB1c2VkIGlu IHRyYW5zYWN0aW9uIGJsb2Nrcw0KLVJPTExCQUNLIFRPIFNBVkVQT0lOVCBz cFw7IFNFTEVDVCAyOw0KK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7IFNF TEVDVCA1IEFTIGZpdmU7DQogRVJST1I6ICBST0xMQkFDSyBUTyBTQVZFUE9J TlQgY2FuIG9ubHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MNCi1T RUxFQ1QgMlw7IFJFTEVBU0UgU0FWRVBPSU5UIHNwXDsgU0VMRUNUIDM7DQor U0VMRUNUIDYgQVMgc2l4XDsgUkVMRUFTRSBTQVZFUE9JTlQgc3BcOyBTRUxF Q1QgNyBBUyBzZXZlbjsNCisgc2l4IA0KKy0tLS0tDQorICAgNg0KKygxIHJv dykNCisNCiBFUlJPUjogIFJFTEVBU0UgU0FWRVBPSU5UIGNhbiBvbmx5IGJl IHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzDQogLS0gYnV0IHRoaXMgaXMg T0ssIGJlY2F1c2UgdGhlIEJFR0lOIGNvbnZlcnRzIGl0IHRvIGEgcmVndWxh ciB4YWN0DQotU0VMRUNUIDFcOyBCRUdJTlw7IFNBVkVQT0lOVCBzcFw7IFJP TExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7IENPTU1JVDsNCitTRUxFQ1QgOFw7 IEJFR0lOXDsgU0FWRVBPSU5UIHNwXDsgUk9MTEJBQ0sgVE8gU0FWRVBPSU5U IHNwXDsgQ09NTUlUOw0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAg ICAgICA4DQorKDEgcm93KQ0KKw0KIC0tIFRlc3RzIGZvciBBTkQgQ0hBSU4g aW4gaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2tzDQogU0VUIFRSQU5TQUNU SU9OIFJFQUQgT05MWVw7IENPTU1JVCBBTkQgQ0hBSU47ICAtLSBlcnJvcg0K IEVSUk9SOiAgQ09NTUlUIEFORCBDSEFJTiBjYW4gb25seSBiZSB1c2VkIGlu IHRyYW5zYWN0aW9uIGJsb2Nrcw0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NvcHlkbWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y29weWRtbC5zcWwNCmluZGV4IDlhMjlmOWM5YWMuLjQ1NzgzNDIyNTMgMTAw NjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5ZG1sLnNxbA0K KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weWRtbC5zcWwNCkBAIC03 MCwxMCArNzAsMTAgQEAgZHJvcCBydWxlIHFxcSBvbiBjb3B5ZG1sX3Rlc3Q7 DQogY3JlYXRlIGZ1bmN0aW9uIHFxcV90cmlnKCkgcmV0dXJucyB0cmlnZ2Vy IGFzICQkDQogYmVnaW4NCiBpZiB0Z19vcCBpbiAoJ0lOU0VSVCcsICdVUERB VEUnKSB0aGVuDQotICAgIHJhaXNlIG5vdGljZSAnJSAlJywgdGdfb3AsIG5l dy5pZDsNCisgICAgcmFpc2Ugbm90aWNlICclICUgJScsIHRnX3doZW4sIHRn X29wLCBuZXcuaWQ7DQogICAgIHJldHVybiBuZXc7DQogZWxzZQ0KLSAgICBy YWlzZSBub3RpY2UgJyUgJScsIHRnX29wLCBvbGQuaWQ7DQorICAgIHJhaXNl IG5vdGljZSAnJSAlICUnLCB0Z193aGVuLCB0Z19vcCwgb2xkLmlkOw0KICAg ICByZXR1cm4gb2xkOw0KIGVuZCBpZjsNCiBlbmQNCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5c2VsZWN0LnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NvcHlzZWxlY3Quc3FsDQppbmRleCAxZDk4ZGFkM2M4 Li5hYmMzMzkwNGMwIDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY29weXNlbGVjdC5zcWwNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHlzZWxlY3Quc3FsDQpAQCAtODQsNyArODQsNyBAQCBkcm9wIHRhYmxl IHRlc3QxOw0KIC0tIHBzcWwgaGFuZGxpbmcgb2YgQ09QWSBpbiBtdWx0aS1j b21tYW5kIHN0cmluZ3MNCiBjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsg c2VsZWN0IDEvMDsJLS0gcm93LCB0aGVuIGVycm9yDQogc2VsZWN0IDEvMFw7 IGNvcHkgKHNlbGVjdCAxKSB0byBzdGRvdXQ7IC0tIGVycm9yIG9ubHkNCi1j b3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgY29weSAoc2VsZWN0IDIpIHRv IHN0ZG91dFw7IHNlbGVjdCAwXDsgc2VsZWN0IDM7IC0tIDEgMiAzDQorY29w eSAoc2VsZWN0IDEpIHRvIHN0ZG91dFw7IGNvcHkgKHNlbGVjdCAyKSB0byBz dGRvdXRcOyBzZWxlY3QgM1w7IHNlbGVjdCA0OyAtLSAxIDIgMyA0DQogDQog Y3JlYXRlIHRhYmxlIHRlc3QzIChjIGludCk7DQogc2VsZWN0IDBcOyBjb3B5 IHRlc3QzIGZyb20gc3RkaW5cOyBjb3B5IHRlc3QzIGZyb20gc3RkaW5cOyBz ZWxlY3QgMTsgLS0gMQ0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BzcWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwN CmluZGV4IGJkMTBhZWM2ZDYuLjhkYmUyMzIyYWIgMTAwNjQ0DQotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbA0KKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHNxbC5zcWwNCkBAIC0xMjA3LDMgKzEyMDcsMzggQEAg ZHJvcCByb2xlIHJlZ3Jlc3NfcGFydGl0aW9uaW5nX3JvbGU7DQogXGRBbyAq IHBnX2NhdGFsb2cuanNvbmJfcGF0aF9vcHMNCiBcZEFwIGJ0cmVlIGZsb2F0 X29wcw0KIFxkQXAgKiBwZ19jYXRhbG9nLnV1aWRfb3BzDQorDQorLS0NCist LSBjb21iaW5lZCBxdWVyaWVzDQorLS0NCitcZWNobyAnIyBjb21iaW5lZCBx dWVyaWVzIHRlc3RzJw0KK0NSRUFURSBGVU5DVElPTiB3YXJuKG1zZyBURVhU KSBSRVRVUk5TIEJPT0xFQU4gQVMgJCQNCisgIEJFR0lOIFJBSVNFIE5PVElD RSAnd2FybiAlJywgbXNnIDsgUkVUVVJOIFRSVUUgOyBFTkQNCiskJCBMQU5H VUFHRSBwbHBnc3FsOw0KKy0tIHNob3cgYm90aA0KK1NFTEVDVCAxIEFTIG9u ZSBcOyBTRUxFQ1Qgd2FybignMS41JykgXDsgU0VMRUNUIDIgQVMgdHdvIDsN CistLSBcZ3NldCBhcHBsaWVzIHRvIGxhc3QgcXVlcnkgb25seQ0KK1NFTEVD VCAzIEFTIHRocmVlIFw7IFNFTEVDVCB3YXJuKCczLjUnKSBcOyBTRUxFQ1Qg NCBBUyBmb3VyIFxnc2V0DQorXGVjaG8gOnRocmVlIDpmb3VyDQorLS0gc3lu dGF4IGVycm9yIHN0b3BzIGFsbCBwcm9jZXNzaW5nDQorU0VMRUNUIDUgXDsg U0VMRUNUIDYgKyBcOyBTRUxFQ1Qgd2FybignNi41JykgXDsgU0VMRUNUIDcg Ow0KKy0tIHdpdGggYWJvcnRlZCB0cmFuc2FjdGlvbiwgc3RvcCBvbiBmaXJz dCBlcnJvcg0KK0JFR0lOIFw7IFNFTEVDVCA4IEFTIGVpZ2h0IFw7IFNFTEVD VCA5LzAgQVMgbmluZSBcOyBST0xMQkFDSyBcOyBTRUxFQ1QgMTAgQVMgdGVu IDsNCistLSBjbG9zZSBwcmV2aW91c2x5IGFib3J0ZWQgdHJhbnNhY3Rpb24N CitST0xMQkFDSzsNCistLSBtaXNjIFNRTCBjb21tYW5kcw0KKy0tIChub24g U0VMRUNUIG91dHB1dCBpcyBzZW50IHRvIHN0ZGVyciwgdGh1cyBpcyBub3Qg c2hvd24gaW4gZXhwZWN0ZWQgcmVzdWx0cykNCitTRUxFQ1QgJ29rJyBBUyAi YmVnaW4iIFw7DQorQ1JFQVRFIFRBQkxFIHBzcWxfY29taWNzKHMgVEVYVCkg XDsNCitJTlNFUlQgSU5UTyBwc3FsX2NvbWljcyBWQUxVRVMgKCdDYWx2aW4n KSwgKCdob2JiZXMnKSBcOw0KK0NPUFkgcHNxbF9jb21pY3MgRlJPTSBTVERJ TiBcOw0KK1VQREFURSBwc3FsX2NvbWljcyBTRVQgcyA9ICdIb2JiZXMnIFdI RVJFIHMgPSAnaG9iYmVzJyBcOw0KK0RFTEVURSBGUk9NIHBzcWxfY29taWNz IFdIRVJFIHMgPSAnTW9lJyBcOw0KK0NPUFkgcHNxbF9jb21pY3MgVE8gU1RE T1VUIFw7DQorVFJVTkNBVEUgcHNxbF9jb21pY3MgXDsNCitEUk9QIFRBQkxF IHBzcWxfY29taWNzIFw7DQorU0VMRUNUICdvaycgQVMgImRvbmUiIDsNCitN b2UNCitTdXNpZQ0KK1wuDQorRFJPUCBGVU5DVElPTiB3YXJuKFRFWFQpOw0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyYW5zYWN0aW9u cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmFuc2FjdGlvbnMuc3Fs DQppbmRleCBiZjEwMTY0ODlkLi4zYTdlNWQ0NTgyIDEwMDY0NA0KLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJhbnNhY3Rpb25zLnNxbA0KKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJhbnNhY3Rpb25zLnNxbA0KQEAgLTQ5 Myw4ICs0OTMsOCBAQCBEUk9QIFRBQkxFIGFiYzsNCiANCiBjcmVhdGUgdGVt cCB0YWJsZSBpX3RhYmxlIChmMSBpbnQpOw0KIA0KLS0tIHBzcWwgd2lsbCBz aG93IG9ubHkgdGhlIGxhc3QgcmVzdWx0IGluIGEgbXVsdGktc3RhdGVtZW50 IFF1ZXJ5DQotU0VMRUNUIDFcOyBTRUxFQ1QgMlw7IFNFTEVDVCAzOw0KKy0t IHBzcWwgd2lsbCBzaG93IGFsbCByZXN1bHRzIG9mIGEgbXVsdGktc3RhdGVt ZW50IFF1ZXJ5DQorU0VMRUNUIDEgQVMgb25lXDsgU0VMRUNUIDIgQVMgdHdv XDsgU0VMRUNUIDMgQVMgdGhyZWU7DQogDQogLS0gdGhpcyBpbXBsaWNpdGx5 IGNvbW1pdHM6DQogaW5zZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoMSlcOyBz ZWxlY3QgKiBmcm9tIGlfdGFibGU7DQpAQCAtNTEyLDkgKzUxMiw5IEBAIHJv bGxiYWNrOyAgLS0gd2UgYXJlIG5vdCBpbiBhIHRyYW5zYWN0aW9uIGF0IHRo aXMgcG9pbnQNCiANCiAtLSBiZWdpbiBjb252ZXJ0cyBpbXBsaWNpdCB0cmFu c2FjdGlvbiBpbnRvIGEgcmVndWxhciBvbmUgdGhhdA0KIC0tIGNhbiBleHRl bmQgcGFzdCB0aGUgZW5kIG9mIHRoZSBRdWVyeQ0KLXNlbGVjdCAxXDsgYmVn aW5cOyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg1KTsNCitzZWxlY3Qg MSBBUyBvbmVcOyBiZWdpblw7IGluc2VydCBpbnRvIGlfdGFibGUgdmFsdWVz KDUpOw0KIGNvbW1pdDsNCi1zZWxlY3QgMVw7IGJlZ2luXDsgaW5zZXJ0IGlu dG8gaV90YWJsZSB2YWx1ZXMoNik7DQorc2VsZWN0IDEgQVMgb25lXDsgYmVn aW5cOyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg2KTsNCiByb2xsYmFj azsNCiANCiAtLSBjb21taXQgaW4gaW1wbGljaXQtdHJhbnNhY3Rpb24gc3Rh dGUgY29tbWl0cyBidXQgaXNzdWVzIGEgd2FybmluZy4NCkBAIC01MjcsMTcg KzUyNywxNyBAQCBzZWxlY3QgKiBmcm9tIGlfdGFibGU7DQogcm9sbGJhY2s7 ICAtLSB3ZSBhcmUgbm90IGluIGEgdHJhbnNhY3Rpb24gYXQgdGhpcyBwb2lu dA0KIA0KIC0tIGltcGxpY2l0IHRyYW5zYWN0aW9uIGJsb2NrIGlzIHN0aWxs IGEgdHJhbnNhY3Rpb24gYmxvY2ssIGZvciBlLmcuIFZBQ1VVTQ0KLVNFTEVD VCAxXDsgVkFDVVVNOw0KLVNFTEVDVCAxXDsgQ09NTUlUXDsgVkFDVVVNOw0K K1NFTEVDVCAxIEFTIG9uZVw7IFZBQ1VVTTsNCitTRUxFQ1QgMiBBUyB0d29c OyBDT01NSVRcOyBWQUNVVU07DQogDQogLS0gd2UgZGlzYWxsb3cgc2F2ZXBv aW50LXJlbGF0ZWQgY29tbWFuZHMgaW4gaW1wbGljaXQtdHJhbnNhY3Rpb24g c3RhdGUNCi1TRUxFQ1QgMVw7IFNBVkVQT0lOVCBzcDsNCi1TRUxFQ1QgMVw7 IENPTU1JVFw7IFNBVkVQT0lOVCBzcDsNCi1ST0xMQkFDSyBUTyBTQVZFUE9J TlQgc3BcOyBTRUxFQ1QgMjsNCi1TRUxFQ1QgMlw7IFJFTEVBU0UgU0FWRVBP SU5UIHNwXDsgU0VMRUNUIDM7DQorU0VMRUNUIDMgQVMgdGhyZWVcOyBTQVZF UE9JTlQgc3A7DQorU0VMRUNUIDQgQVMgZm91clw7IENPTU1JVFw7IFNBVkVQ T0lOVCBzcDsNCitST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BcOyBTRUxFQ1Qg NSBBUyBmaXZlOw0KK1NFTEVDVCA2IEFTIHNpeFw7IFJFTEVBU0UgU0FWRVBP SU5UIHNwXDsgU0VMRUNUIDcgQVMgc2V2ZW47DQogDQogLS0gYnV0IHRoaXMg aXMgT0ssIGJlY2F1c2UgdGhlIEJFR0lOIGNvbnZlcnRzIGl0IHRvIGEgcmVn dWxhciB4YWN0DQotU0VMRUNUIDFcOyBCRUdJTlw7IFNBVkVQT0lOVCBzcFw7 IFJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7IENPTU1JVDsNCitTRUxFQ1Qg OFw7IEJFR0lOXDsgU0FWRVBPSU5UIHNwXDsgUk9MTEJBQ0sgVE8gU0FWRVBP SU5UIHNwXDsgQ09NTUlUOw0KIA0KIA0KIC0tIFRlc3RzIGZvciBBTkQgQ0hB SU4gaW4gaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2tzDQo= --2056645051-745699099-1591454204=:32228--