Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iBE0T-0006Xx-7v for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Sep 2019 08:11:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iBE0R-0008F4-Nt for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Sep 2019 08:11:07 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iBE0R-0008Et-3E for pgsql-hackers@lists.postgresql.org; Fri, 20 Sep 2019 08:11:07 +0000 Received: from courriel.mines-paristech.fr ([77.158.173.149] helo=antispam-1.ensmp.fr) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1iBE0M-0007T4-P0 for pgsql-hackers@lists.postgresql.org; Fri, 20 Sep 2019 08:11:05 +0000 Received: from smtp-5.mines-paristech.fr (smtp.mines-paristech.fr [77.158.173.146]) (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 CF37955F16; Fri, 20 Sep 2019 10:10:58 +0200 (CEST) Received: from lancre-wln.cri.ensmp.fr (sfr-14.cri.mines-paristech.fr [77.158.180.238]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp-5.mines-paristech.fr (Postfix) with ESMTPSA id A152F20090; Fri, 20 Sep 2019 10:10:58 +0200 (CEST) Date: Fri, 20 Sep 2019 10:10:58 +0200 (CEST) From: Fabien COELHO X-X-Sender: fabien@lancre To: vignesh C cc: Alvaro Herrera , Kyotaro Horiguchi , daniel@manitou-mail.org, 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: <20190912193111.GA4044@alvherre.pgsql> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="8323329-1931601764-1568967058=:3955" X-CLAMAV-SCAN: ok X-VRSPAM-SCORE: -100 X-VRSPAM-STATE: legit X-VRSPAM-CAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrvddugdduvdekucetufdoteggodetrfcurfhrohhfihhlvgemucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpeffhffvufgjkfhffgggtgesmhdtreertdervdenucfhrhhomhephfgrsghivghnucevqffgnffjqfcuoegtohgvlhhhohestghrihdrvghnshhmphdrfhhrqeenucfkphepjeejrdduheekrddukedtrddvfeeknecurfgrrhgrmhepmhhouggvpehsmhhtphhouhht 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. --8323329-1931601764-1568967058=:3955 Content-Type: text/plain; charset=US-ASCII; format=flowed > Should we add function header for the below function to maintain the > common standard of this file: Yes. Attached v6 does that. -- Fabien. --8323329-1931601764-1568967058=:3955 Content-Type: text/x-diff; name=psql-always-show-results-6.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=psql-always-show-results-6.patch ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVj dGVkL3BnX3N0YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9leHBlY3RlZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0DQpp bmRleCA2Nzg3ZWMxZWZkLi5kZTU5YTVjZjY1IDEwMDY0NA0KLS0tIGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvcGdfc3RhdF9zdGF0 ZW1lbnRzLm91dA0KKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv ZXhwZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dA0KQEAgLTQ5LDE3ICs0 OSw0MiBAQCBCRUdJTiBcOw0KIFNFTEVDVCAyLjAgQVMgImZsb2F0IiBcOw0K IFNFTEVDVCAnd29ybGQnIEFTICJ0ZXh0IiBcOw0KIENPTU1JVDsNCisgZmxv YXQgDQorLS0tLS0tLQ0KKyAgIDIuMA0KKygxIHJvdykNCisNCisgdGV4dCAg DQorLS0tLS0tLQ0KKyB3b3JsZA0KKygxIHJvdykNCisNCiAtLSBjb21wb3Vu ZCB3aXRoIGVtcHR5IHN0YXRlbWVudHMgYW5kIHNwdXJpb3VzIGxlYWRpbmcg c3BhY2luZw0KLVw7XDsgICBTRUxFQ1QgMyArIDMgXDtcO1w7ICAgU0VMRUNU ICcgJyB8fCAnICEnIFw7XDsgICBTRUxFQ1QgMSArIDQgXDs7DQotID9jb2x1 bW4/IA0KLS0tLS0tLS0tLS0NCi0gICAgICAgIDUNCitcO1w7ICAgU0VMRUNU IDMgKyAzIEFTICIrIiBcO1w7XDsgICBTRUxFQ1QgJyAnIHx8ICcgIScgQVMg Inx8IiBcO1w7ICAgU0VMRUNUIDEgKyA0IEFTICIrIiBcOzsNCisgKyANCist LS0NCisgNg0KKygxIHJvdykNCisNCisgfHwgIA0KKy0tLS0tDQorICAgIQ0K KygxIHJvdykNCisNCisgKyANCistLS0NCisgNQ0KICgxIHJvdykNCiANCiAt LSBub24gOy10ZXJtaW5hdGVkIHN0YXRlbWVudHMNCiBTRUxFQ1QgMSArIDEg KyAxIEFTICJhZGQiIFxnc2V0DQogU0VMRUNUIDphZGQgKyAxICsgMSBBUyAi YWRkIiBcOw0KIFNFTEVDVCA6YWRkICsgMSArIDEgQVMgImFkZCIgXGdzZXQN CisgYWRkIA0KKy0tLS0tDQorICAgNQ0KKygxIHJvdykNCisNCiAtLSBzZXQg b3BlcmF0b3INCiBTRUxFQ1QgMSBBUyBpIFVOSU9OIFNFTEVDVCAyIE9SREVS IEJZIGk7DQogIGkgDQpAQCAtMTAyLDEyICsxMjcsMTIgQEAgU0VMRUNUIHF1 ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRF UiBCWSBxdWVyeSBDT0xMQVRFICJDIjsNCiAgU0VMRUNUICQxICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICA0IHwgICAg NA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgK3wgICAgICAgfCANCiAgICBBUyAidGV4dCIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgDQotIFNF TEVDVCAkMSArICQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgMiB8ICAgIDINCiAgU0VMRUNUICQxICsgJDIgKyAkMyBBUyAi YWRkIiAgICAgICAgICAgICAgICAgICAgICB8ICAgICAzIHwgICAgMw0KKyBT RUxFQ1QgJDEgKyAkMiBBUyAiKyIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDIgfCAgICAyDQogIFNFTEVDVCAkMSBBUyAiZmxvYXQiICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDENCiAg U0VMRUNUICQxIEFTICJpbnQiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAyIHwgICAgMg0KICBTRUxFQ1QgJDEgQVMgaSBVTklPTiBT RUxFQ1QgJDIgT1JERVIgQlkgaSAgICAgICAgIHwgICAgIDEgfCAgICAyDQot IFNFTEVDVCAkMSB8fCAkMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMSB8ICAgIDENCisgU0VMRUNUICQxIHx8ICQyIEFTICJ8 fCIgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxIHwgICAgMQ0K ICBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgICAgICAgICAg ICAgICAgIHwgICAgIDEgfCAgICAxDQogIFdJVEggdChmKSBBUyAoICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMSB8ICAgIDIN CiAgICBWQUxVRVMgKCQxKSwgKCQyKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICt8ICAgICAgIHwgDQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvc3FsL3BnX3N0YXRfc3RhdGVtZW50cy5zcWwgYi9j b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvcGdfc3RhdF9zdGF0ZW1l bnRzLnNxbA0KaW5kZXggOGI1MjcwNzBkNC4uZWEzYTMxMTc2ZSAxMDA2NDQN Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9wZ19zdGF0 X3N0YXRlbWVudHMuc3FsDQorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVt ZW50cy9zcWwvcGdfc3RhdF9zdGF0ZW1lbnRzLnNxbA0KQEAgLTI3LDcgKzI3 LDcgQEAgU0VMRUNUICd3b3JsZCcgQVMgInRleHQiIFw7DQogQ09NTUlUOw0K IA0KIC0tIGNvbXBvdW5kIHdpdGggZW1wdHkgc3RhdGVtZW50cyBhbmQgc3B1 cmlvdXMgbGVhZGluZyBzcGFjaW5nDQotXDtcOyAgIFNFTEVDVCAzICsgMyBc O1w7XDsgICBTRUxFQ1QgJyAnIHx8ICcgIScgXDtcOyAgIFNFTEVDVCAxICsg NCBcOzsNCitcO1w7ICAgU0VMRUNUIDMgKyAzIEFTICIrIiBcO1w7XDsgICBT RUxFQ1QgJyAnIHx8ICcgIScgQVMgInx8IiBcO1w7ICAgU0VMRUNUIDEgKyA0 IEFTICIrIiBcOzsNCiANCiAtLSBub24gOy10ZXJtaW5hdGVkIHN0YXRlbWVu dHMNCiBTRUxFQ1QgMSArIDEgKyAxIEFTICJhZGQiIFxnc2V0DQpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sDQppbmRleCA3Nzg5ZmM2MTc3Li40 ZTZhYjVhMGE1IDEwMDY0NA0KLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sDQorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNn bWwNCkBAIC0xMjcsMTggKzEyNywxMSBAQCBlY2hvICdceCBcXCBTRUxFQ1Qg KiBGUk9NIGZvbzsnIHwgcHNxbA0KICAgICAgICBjb21tYW5kcyBpbmNsdWRl ZCBpbiB0aGUgc3RyaW5nIHRvIGRpdmlkZSBpdCBpbnRvIG11bHRpcGxlDQog ICAgICAgIHRyYW5zYWN0aW9ucy4gIChTZWUgPHhyZWYgbGlua2VuZD0icHJv dG9jb2wtZmxvdy1tdWx0aS1zdGF0ZW1lbnQiLz4NCiAgICAgICAgZm9yIG1v cmUgZGV0YWlscyBhYm91dCBob3cgdGhlIHNlcnZlciBoYW5kbGVzIG11bHRp LXF1ZXJ5IHN0cmluZ3MuKQ0KLSAgICAgICBBbHNvLCA8YXBwbGljYXRpb24+ cHNxbDwvYXBwbGljYXRpb24+IG9ubHkgcHJpbnRzIHRoZQ0KLSAgICAgICBy ZXN1bHQgb2YgdGhlIGxhc3QgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBjb21t YW5kIGluIHRoZSBzdHJpbmcuDQotICAgICAgIFRoaXMgaXMgZGlmZmVyZW50 IGZyb20gdGhlIGJlaGF2aW9yIHdoZW4gdGhlIHNhbWUgc3RyaW5nIGlzIHJl YWQgZnJvbQ0KLSAgICAgICBhIGZpbGUgb3IgZmVkIHRvIDxhcHBsaWNhdGlv bj5wc3FsPC9hcHBsaWNhdGlvbj4ncyBzdGFuZGFyZCBpbnB1dCwNCi0gICAg ICAgYmVjYXVzZSB0aGVuIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlv bj4gc2VuZHMNCi0gICAgICAgZWFjaCA8YWNyb255bT5TUUw8L2Fjcm9ueW0+ IGNvbW1hbmQgc2VwYXJhdGVseS4NCiAgICAgICA8L3BhcmE+DQogICAgICAg PHBhcmE+DQotICAgICAgIEJlY2F1c2Ugb2YgdGhpcyBiZWhhdmlvciwgcHV0 dGluZyBtb3JlIHRoYW4gb25lIFNRTCBjb21tYW5kIGluIGENCi0gICAgICAg c2luZ2xlIDxvcHRpb24+LWM8L29wdGlvbj4gc3RyaW5nIG9mdGVuIGhhcyB1 bmV4cGVjdGVkIHJlc3VsdHMuDQotICAgICAgIEl0J3MgYmV0dGVyIHRvIHVz ZSByZXBlYXRlZCA8b3B0aW9uPi1jPC9vcHRpb24+IGNvbW1hbmRzIG9yIGZl ZWQNCi0gICAgICAgbXVsdGlwbGUgY29tbWFuZHMgdG8gPGFwcGxpY2F0aW9u PnBzcWw8L2FwcGxpY2F0aW9uPidzIHN0YW5kYXJkIGlucHV0LA0KKyAgICAg ICBJZiBoYXZpbmcgc2V2ZXJhbCBjb21tYW5kcyBleGVjdXRlZCBpbiBvbmUg dHJhbnNhY3Rpb24gaXMgbm90IGRlc2lyZWQsIA0KKyAgICAgICB1c2UgcmVw ZWF0ZWQgPG9wdGlvbj4tYzwvb3B0aW9uPiBjb21tYW5kcyBvciBmZWVkIG11 bHRpcGxlIGNvbW1hbmRzIHRvDQorICAgICAgIDxhcHBsaWNhdGlvbj5wc3Fs PC9hcHBsaWNhdGlvbj4ncyBzdGFuZGFyZCBpbnB1dCwNCiAgICAgICAgZWl0 aGVyIHVzaW5nIDxhcHBsaWNhdGlvbj5lY2hvPC9hcHBsaWNhdGlvbj4gYXMg aWxsdXN0cmF0ZWQgYWJvdmUsIG9yDQogICAgICAgIHZpYSBhIHNoZWxsIGhl cmUtZG9jdW1lbnQsIGZvciBleGFtcGxlOg0KIDxwcm9ncmFtbGlzdGluZz4N CkBAIC0zMzU1LDEwICszMzQ4LDggQEAgc2VsZWN0IDFcOyBzZWxlY3QgMlw7 IHNlbGVjdCAzOw0KICAgICAgICAgY29tbWFuZHMgaW5jbHVkZWQgaW4gdGhl IHN0cmluZyB0byBkaXZpZGUgaXQgaW50byBtdWx0aXBsZQ0KICAgICAgICAg dHJhbnNhY3Rpb25zLiAgKFNlZSA8eHJlZiBsaW5rZW5kPSJwcm90b2NvbC1m bG93LW11bHRpLXN0YXRlbWVudCIvPg0KICAgICAgICAgZm9yIG1vcmUgZGV0 YWlscyBhYm91dCBob3cgdGhlIHNlcnZlciBoYW5kbGVzIG11bHRpLXF1ZXJ5 IHN0cmluZ3MuKQ0KLSAgICAgICAgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxp Y2F0aW9uPiBwcmludHMgb25seSB0aGUgbGFzdCBxdWVyeSByZXN1bHQNCi0g ICAgICAgIGl0IHJlY2VpdmVzIGZvciBlYWNoIHJlcXVlc3Q7IGluIHRoaXMg ZXhhbXBsZSwgYWx0aG91Z2ggYWxsDQotICAgICAgICB0aHJlZSA8Y29tbWFu ZD5TRUxFQ1Q8L2NvbW1hbmQ+cyBhcmUgaW5kZWVkIGV4ZWN1dGVkLCA8YXBw bGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+DQotICAgICAgICBvbmx5IHBy aW50cyB0aGUgPGxpdGVyYWw+MzwvbGl0ZXJhbD4uDQorICAgICAgICA8YXBw bGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+IHByaW50cyBhbGwgcmVzdWx0 cyBpdCByZWNlaXZlcywgb25lDQorICAgICAgICBhZnRlciB0aGUgb3RoZXIu DQogICAgICAgICA8L3BhcmE+DQogICAgICAgICA8L2xpc3RpdGVtPg0KICAg ICAgIDwvdmFybGlzdGVudHJ5Pg0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYw0KaW5kZXggNGIy Njc5MzYwZi4uZGI2ZDAzMTEzMyAxMDA2NDQNCi0tLSBhL3NyYy9iaW4vcHNx bC9jb21tb24uYw0KKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jDQpAQCAt NDg2LDYgKzQ4NiwxOSBAQCBSZXNldENhbmNlbENvbm4odm9pZCkNCiAjZW5k aWYNCiB9DQogDQorLyoNCisgKiBTaG93IGVycm9yIG1lc3NhZ2UgZnJvbSBy ZXN1bHQsIGlmIGFueSwgYW5kIGNoZWNrIGNvbm5lY3Rpb24gaW4gcGFzc2lu Zy4NCisgKi8NCitzdGF0aWMgdm9pZA0KK1Nob3dFcnJvck1lc3NhZ2UoY29u c3QgUEdyZXN1bHQgKnJlc3VsdCkNCit7DQorCWNvbnN0IGNoYXIgKmVycm9y ID0gUFFlcnJvck1lc3NhZ2UocHNldC5kYik7DQorDQorCWlmIChzdHJsZW4o ZXJyb3IpKQ0KKwkJcGdfbG9nX2luZm8oIiVzIiwgZXJyb3IpOw0KKw0KKwlD aGVja0Nvbm5lY3Rpb24oKTsNCit9DQogDQogLyoNCiAgKiBBY2NlcHRSZXN1 bHQNCkBAIC00OTYsNyArNTA5LDcgQEAgUmVzZXRDYW5jZWxDb25uKHZvaWQp DQogICogUmV0dXJucyB0cnVlIGZvciB2YWxpZCByZXN1bHQsIGZhbHNlIGZv ciBlcnJvciBzdGF0ZS4NCiAgKi8NCiBzdGF0aWMgYm9vbA0KLUFjY2VwdFJl c3VsdChjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KK0FjY2VwdFJlc3VsdChj b25zdCBQR3Jlc3VsdCAqcmVzdWx0LCBib29sIHNob3dfZXJyb3IpDQogew0K IAlib29sCQlPSzsNCiANCkBAIC01MjcsMTUgKzU0MCw4IEBAIEFjY2VwdFJl c3VsdChjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KIAkJCQlicmVhazsNCiAJ CX0NCiANCi0JaWYgKCFPSykNCi0Jew0KLQkJY29uc3QgY2hhciAqZXJyb3Ig PSBQUWVycm9yTWVzc2FnZShwc2V0LmRiKTsNCi0NCi0JCWlmIChzdHJsZW4o ZXJyb3IpKQ0KLQkJCXBnX2xvZ19pbmZvKCIlcyIsIGVycm9yKTsNCi0NCi0J CUNoZWNrQ29ubmVjdGlvbigpOw0KLQl9DQorCWlmICghT0sgJiYgc2hvd19l cnJvcikNCisJCVNob3dFcnJvck1lc3NhZ2UocmVzdWx0KTsNCiANCiAJcmV0 dXJuIE9LOw0KIH0NCkBAIC03MTUsNyArNzIxLDcgQEAgUFNRTGV4ZWMoY29u c3QgY2hhciAqcXVlcnkpDQogDQogCVJlc2V0Q2FuY2VsQ29ubigpOw0KIA0K LQlpZiAoIUFjY2VwdFJlc3VsdChyZXMpKQ0KKwlpZiAoIUFjY2VwdFJlc3Vs dChyZXMsIHRydWUpKQ0KIAl7DQogCQlDbGVhck9yU2F2ZVJlc3VsdChyZXMp Ow0KIAkJcmVzID0gTlVMTDsNCkBAIC03NTcsNyArNzYzLDcgQEAgUFNRTGV4 ZWNXYXRjaChjb25zdCBjaGFyICpxdWVyeSwgY29uc3QgcHJpbnRRdWVyeU9w dCAqb3B0KQ0KIA0KIAlSZXNldENhbmNlbENvbm4oKTsNCiANCi0JaWYgKCFB Y2NlcHRSZXN1bHQocmVzKSkNCisJaWYgKCFBY2NlcHRSZXN1bHQocmVzLCB0 cnVlKSkNCiAJew0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzKTsNCiAJCXJl dHVybiAwOw0KQEAgLTEwMTMsMTk5ICsxMDE5LDExNCBAQCBsb29wX2V4aXQ6 DQogCXJldHVybiBzdWNjZXNzOw0KIH0NCiANCi0NCiAvKg0KLSAqIFByb2Nl c3NSZXN1bHQ6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBTZW5kUXVl cnkoKSBvbmx5DQotICoNCi0gKiBXaGVuIG91ciBjb21tYW5kIHN0cmluZyBj b250YWluZWQgYSBDT1BZIEZST00gU1RESU4gb3IgQ09QWSBUTyBTVERPVVQs DQotICogUFFleGVjKCkgaGFzIHN0b3BwZWQgYXQgdGhlIFBHcmVzdWx0IGFz c29jaWF0ZWQgd2l0aCB0aGUgZmlyc3Qgc3VjaA0KLSAqIGNvbW1hbmQuICBJ biB0aGF0IGV2ZW50LCB3ZSdsbCBtYXJzaGFsIGRhdGEgZm9yIHRoZSBDT1BZ IGFuZCB0aGVuIGN5Y2xlDQotICogdGhyb3VnaCBhbnkgc3Vic2VxdWVudCBQ R3Jlc3VsdCBvYmplY3RzLg0KLSAqDQotICogV2hlbiB0aGUgY29tbWFuZCBz dHJpbmcgY29udGFpbmVkIG5vIHN1Y2ggQ09QWSBjb21tYW5kLCB0aGlzIGZ1 bmN0aW9uDQotICogZGVnZW5lcmF0ZXMgdG8gYW4gQWNjZXB0UmVzdWx0KCkg Y2FsbC4NCi0gKg0KLSAqIENoYW5nZXMgaXRzIGFyZ3VtZW50IHRvIHBvaW50 IHRvIHRoZSBsYXN0IFBHcmVzdWx0IG9mIHRoZSBjb21tYW5kIHN0cmluZywN Ci0gKiBvciBOVUxMIGlmIHRoYXQgcmVzdWx0IHdhcyBmb3IgYSBDT1BZIFRP IFNURE9VVC4gIChSZXR1cm5pbmcgTlVMTCBwcmV2ZW50cw0KLSAqIHRoZSBj b21tYW5kIHN0YXR1cyBmcm9tIGJlaW5nIHByaW50ZWQsIHdoaWNoIHdlIHdh bnQgaW4gdGhhdCBjYXNlIHNvIHRoYXQNCi0gKiB0aGUgc3RhdHVzIGxpbmUg ZG9lc24ndCBnZXQgdGFrZW4gYXMgcGFydCBvZiB0aGUgQ09QWSBkYXRhLikN Ci0gKg0KLSAqIFJldHVybnMgdHJ1ZSBvbiBjb21wbGV0ZSBzdWNjZXNzLCBm YWxzZSBvdGhlcndpc2UuICBQb3NzaWJsZSBmYWlsdXJlIG1vZGVzDQotICog aW5jbHVkZSBwdXJlbHkgY2xpZW50LXNpZGUgcHJvYmxlbXM7IGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0dXMgZm9yIHRoZQ0KLSAqIHNlcnZlci1zaWRl IG9waW5pb24uDQorICogTWFyc2hhbCB0aGUgQ09QWSBkYXRhLiAgRWl0aGVy IHN1YnJvdXRpbmUgd2lsbCBnZXQgdGhlDQorICogY29ubmVjdGlvbiBvdXQg b2YgaXRzIENPUFkgc3RhdGUsIHRoZW4gY2FsbCBQUXJlc3VsdFN0YXR1cygp DQorICogb25jZSBhbmQgcmVwb3J0IGFueSBlcnJvci4gUmV0dXJuIHdoZXRo ZXIgYWxsIHdhcyBvay4NCisgKg0KKyAqIEZvciBDT1BZIE9VVCwgZGlyZWN0 IHRoZSBvdXRwdXQgdG8gcHNldC5jb3B5U3RyZWFtIGlmIGl0J3Mgc2V0LA0K KyAqIG90aGVyd2lzZSB0byBwc2V0LmdmbmFtZSBpZiBpdCdzIHNldCwgb3Ro ZXJ3aXNlIHRvIHF1ZXJ5Rm91dC4NCisgKiBGb3IgQ09QWSBJTiwgdXNlIHBz ZXQuY29weVN0cmVhbSBhcyBkYXRhIHNvdXJjZSBpZiBpdCdzIHNldCwNCisg KiBvdGhlcndpc2UgY3VyX2NtZF9zb3VyY2UuDQorICoNCisgKiBVcGRhdGUg cmVzdWx0IGlmIGZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBuZWNlc3NhcnksIG9y IE5VTEwgb3RoZXJ3aXNlLg0KKyAqIFJldHVybiBhIHJlc3VsdCB3aGVuIHF1 ZXJ5Rm91dCBjYW4gc2FmZWx5IG91dHB1dCBhIHJlc3VsdCBzdGF0dXM6DQor ICogb24gQ09QWSBJTiwgb3Igb24gQ09QWSBPVVQgaWYgd3JpdHRlbiB0byBz b21ldGhpbmcgb3RoZXIgaGFuIHBzZXQucXVlcnlGb3V0Lg0KKyAqIFJldHVy bmluZyBOVUxMIHByZXZlbnRzIHRoZSBjb21tYW5kIHN0YXR1cyBmcm9tIGJl aW5nIHByaW50ZWQsIHdoaWNoDQorICogd2Ugd2FudCBpZiB0aGUgc3RhdHVz IGxpbmUgZG9lc24ndCBnZXQgdGFrZW4gYXMgcGFydCBvZiB0aGUgQ09QWSBk YXRhLg0KICAqLw0KIHN0YXRpYyBib29sDQotUHJvY2Vzc1Jlc3VsdChQR3Jl c3VsdCAqKnJlc3VsdHMpDQorSGFuZGxlQ29weVJlc3VsdChQR3Jlc3VsdCAq KnJlc3VsdCkNCiB7DQotCWJvb2wJCXN1Y2Nlc3MgPSB0cnVlOw0KLQlib29s CQlmaXJzdF9jeWNsZSA9IHRydWU7DQorCWJvb2wJCXN1Y2Nlc3M7DQorCUZJ TEUJICAgKmNvcHlzdHJlYW07DQorCVBHcmVzdWx0ICAgKmNvcHlfcmVzdWx0 Ow0KKwlFeGVjU3RhdHVzVHlwZSByZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRT dGF0dXMoKnJlc3VsdCk7DQogDQotCWZvciAoOzspDQorCUFzc2VydChyZXN1 bHRfc3RhdHVzID09IFBHUkVTX0NPUFlfT1VUIHx8DQorCQkgICByZXN1bHRf c3RhdHVzID09IFBHUkVTX0NPUFlfSU4pOw0KKw0KKwlTZXRDYW5jZWxDb25u KCk7DQorCWlmIChyZXN1bHRfc3RhdHVzID09IFBHUkVTX0NPUFlfT1VUKQ0K IAl7DQotCQlFeGVjU3RhdHVzVHlwZSByZXN1bHRfc3RhdHVzOw0KLQkJYm9v bAkJaXNfY29weTsNCi0JCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0Ow0KKwkJ Ym9vbAkJbmVlZF9jbG9zZSA9IGZhbHNlOw0KKwkJYm9vbAkJaXNfcGlwZSA9 IGZhbHNlOw0KIA0KLQkJaWYgKCFBY2NlcHRSZXN1bHQoKnJlc3VsdHMpKQ0K KwkJaWYgKHBzZXQuY29weVN0cmVhbSkNCiAJCXsNCi0JCQkvKg0KLQkJCSAq IEZhaWx1cmUgYXQgdGhpcyBwb2ludCBpcyBhbHdheXMgYSBzZXJ2ZXItc2lk ZSBmYWlsdXJlIG9yIGENCi0JCQkgKiBmYWlsdXJlIHRvIHN1Ym1pdCB0aGUg Y29tbWFuZCBzdHJpbmcuICBFaXRoZXIgd2F5LCB3ZSdyZQ0KLQkJCSAqIGZp bmlzaGVkIHdpdGggdGhpcyBjb21tYW5kIHN0cmluZy4NCi0JCQkgKi8NCi0J CQlzdWNjZXNzID0gZmFsc2U7DQotCQkJYnJlYWs7DQorCQkJLyogaW52b2tl ZCBieSBcY29weSAqLw0KKwkJCWNvcHlzdHJlYW0gPSBwc2V0LmNvcHlTdHJl YW07DQogCQl9DQotDQotCQlyZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0 dXMoKnJlc3VsdHMpOw0KLQkJc3dpdGNoIChyZXN1bHRfc3RhdHVzKQ0KKwkJ ZWxzZSBpZiAocHNldC5nZm5hbWUpDQogCQl7DQotCQkJY2FzZSBQR1JFU19F TVBUWV9RVUVSWToNCi0JCQljYXNlIFBHUkVTX0NPTU1BTkRfT0s6DQotCQkJ Y2FzZSBQR1JFU19UVVBMRVNfT0s6DQotCQkJCWlzX2NvcHkgPSBmYWxzZTsN Ci0JCQkJYnJlYWs7DQotDQotCQkJY2FzZSBQR1JFU19DT1BZX09VVDoNCi0J CQljYXNlIFBHUkVTX0NPUFlfSU46DQotCQkJCWlzX2NvcHkgPSB0cnVlOw0K LQkJCQlicmVhazsNCi0NCi0JCQlkZWZhdWx0Og0KLQkJCQkvKiBBY2NlcHRS ZXN1bHQoKSBzaG91bGQgaGF2ZSBjYXVnaHQgYW55dGhpbmcgZWxzZS4gKi8N Ci0JCQkJaXNfY29weSA9IGZhbHNlOw0KLQkJCQlwZ19sb2dfZXJyb3IoInVu ZXhwZWN0ZWQgUFFyZXN1bHRTdGF0dXM6ICVkIiwgcmVzdWx0X3N0YXR1cyk7 DQotCQkJCWJyZWFrOw0KLQkJfQ0KLQ0KLQkJaWYgKGlzX2NvcHkpDQotCQl7 DQotCQkJLyoNCi0JCQkgKiBNYXJzaGFsIHRoZSBDT1BZIGRhdGEuICBFaXRo ZXIgc3Vicm91dGluZSB3aWxsIGdldCB0aGUNCi0JCQkgKiBjb25uZWN0aW9u IG91dCBvZiBpdHMgQ09QWSBzdGF0ZSwgdGhlbiBjYWxsIFBRcmVzdWx0U3Rh dHVzKCkNCi0JCQkgKiBvbmNlIGFuZCByZXBvcnQgYW55IGVycm9yLg0KLQkJ CSAqDQotCQkJICogRm9yIENPUFkgT1VULCBkaXJlY3QgdGhlIG91dHB1dCB0 byBwc2V0LmNvcHlTdHJlYW0gaWYgaXQncyBzZXQsDQotCQkJICogb3RoZXJ3 aXNlIHRvIHBzZXQuZ2ZuYW1lIGlmIGl0J3Mgc2V0LCBvdGhlcndpc2UgdG8g cXVlcnlGb3V0Lg0KLQkJCSAqIEZvciBDT1BZIElOLCB1c2UgcHNldC5jb3B5 U3RyZWFtIGFzIGRhdGEgc291cmNlIGlmIGl0J3Mgc2V0LA0KLQkJCSAqIG90 aGVyd2lzZSBjdXJfY21kX3NvdXJjZS4NCi0JCQkgKi8NCi0JCQlGSUxFCSAg ICpjb3B5c3RyZWFtOw0KLQkJCVBHcmVzdWx0ICAgKmNvcHlfcmVzdWx0Ow0K LQ0KLQkJCVNldENhbmNlbENvbm4oKTsNCi0JCQlpZiAocmVzdWx0X3N0YXR1 cyA9PSBQR1JFU19DT1BZX09VVCkNCisJCQkvKiBpbnZva2VkIGJ5IFxnICov DQorCQkJaWYgKG9wZW5RdWVyeU91dHB1dEZpbGUocHNldC5nZm5hbWUsDQor CQkJCQkJCQkJJmNvcHlzdHJlYW0sICZpc19waXBlKSkNCiAJCQl7DQotCQkJ CWJvb2wJCW5lZWRfY2xvc2UgPSBmYWxzZTsNCi0JCQkJYm9vbAkJaXNfcGlw ZSA9IGZhbHNlOw0KLQ0KLQkJCQlpZiAocHNldC5jb3B5U3RyZWFtKQ0KLQkJ CQl7DQotCQkJCQkvKiBpbnZva2VkIGJ5IFxjb3B5ICovDQotCQkJCQljb3B5 c3RyZWFtID0gcHNldC5jb3B5U3RyZWFtOw0KLQkJCQl9DQotCQkJCWVsc2Ug aWYgKHBzZXQuZ2ZuYW1lKQ0KLQkJCQl7DQotCQkJCQkvKiBpbnZva2VkIGJ5 IFxnICovDQotCQkJCQlpZiAob3BlblF1ZXJ5T3V0cHV0RmlsZShwc2V0Lmdm bmFtZSwNCi0JCQkJCQkJCQkJCSZjb3B5c3RyZWFtLCAmaXNfcGlwZSkpDQot CQkJCQl7DQotCQkJCQkJbmVlZF9jbG9zZSA9IHRydWU7DQotCQkJCQkJaWYg KGlzX3BpcGUpDQotCQkJCQkJCWRpc2FibGVfc2lncGlwZV90cmFwKCk7DQot CQkJCQl9DQotCQkJCQllbHNlDQotCQkJCQkJY29weXN0cmVhbSA9IE5VTEw7 CS8qIGRpc2NhcmQgQ09QWSBkYXRhIGVudGlyZWx5ICovDQotCQkJCX0NCi0J CQkJZWxzZQ0KLQkJCQl7DQotCQkJCQkvKiBmYWxsIGJhY2sgdG8gdGhlIGdl bmVyaWMgcXVlcnkgb3V0cHV0IHN0cmVhbSAqLw0KLQkJCQkJY29weXN0cmVh bSA9IHBzZXQucXVlcnlGb3V0Ow0KLQkJCQl9DQotDQotCQkJCXN1Y2Nlc3Mg PSBoYW5kbGVDb3B5T3V0KHBzZXQuZGIsDQotCQkJCQkJCQkJCWNvcHlzdHJl YW0sDQotCQkJCQkJCQkJCSZjb3B5X3Jlc3VsdCkNCi0JCQkJCSYmIHN1Y2Nl c3MNCi0JCQkJCSYmIChjb3B5c3RyZWFtICE9IE5VTEwpOw0KLQ0KLQkJCQkv Kg0KLQkJCQkgKiBTdXBwcmVzcyBzdGF0dXMgcHJpbnRpbmcgaWYgdGhlIHJl cG9ydCB3b3VsZCBnbyB0byB0aGUgc2FtZQ0KLQkJCQkgKiBwbGFjZSBhcyB0 aGUgQ09QWSBkYXRhIGp1c3Qgd2VudC4gIE5vdGUgdGhpcyBkb2Vzbid0DQot CQkJCSAqIHByZXZlbnQgZXJyb3IgcmVwb3J0aW5nLCBzaW5jZSBoYW5kbGVD b3B5T3V0IGRpZCB0aGF0Lg0KLQkJCQkgKi8NCi0JCQkJaWYgKGNvcHlzdHJl YW0gPT0gcHNldC5xdWVyeUZvdXQpDQotCQkJCXsNCi0JCQkJCVBRY2xlYXIo Y29weV9yZXN1bHQpOw0KLQkJCQkJY29weV9yZXN1bHQgPSBOVUxMOw0KLQkJ CQl9DQotDQotCQkJCWlmIChuZWVkX2Nsb3NlKQ0KLQkJCQl7DQotCQkJCQkv KiBjbG9zZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUgKi8NCi0JCQkJCWlmIChp c19waXBlKQ0KLQkJCQkJew0KLQkJCQkJCXBjbG9zZShjb3B5c3RyZWFtKTsN Ci0JCQkJCQlyZXN0b3JlX3NpZ3BpcGVfdHJhcCgpOw0KLQkJCQkJfQ0KLQkJ CQkJZWxzZQ0KLQkJCQkJew0KLQkJCQkJCWZjbG9zZShjb3B5c3RyZWFtKTsN Ci0JCQkJCX0NCi0JCQkJfQ0KKwkJCQluZWVkX2Nsb3NlID0gdHJ1ZTsNCisJ CQkJaWYgKGlzX3BpcGUpDQorCQkJCQlkaXNhYmxlX3NpZ3BpcGVfdHJhcCgp Ow0KIAkJCX0NCiAJCQllbHNlDQotCQkJew0KLQkJCQkvKiBDT1BZIElOICov DQotCQkJCWNvcHlzdHJlYW0gPSBwc2V0LmNvcHlTdHJlYW0gPyBwc2V0LmNv cHlTdHJlYW0gOiBwc2V0LmN1cl9jbWRfc291cmNlOw0KLQkJCQlzdWNjZXNz ID0gaGFuZGxlQ29weUluKHBzZXQuZGIsDQotCQkJCQkJCQkJICAgY29weXN0 cmVhbSwNCi0JCQkJCQkJCQkgICBQUWJpbmFyeVR1cGxlcygqcmVzdWx0cyks DQotCQkJCQkJCQkJICAgJmNvcHlfcmVzdWx0KSAmJiBzdWNjZXNzOw0KLQkJ CX0NCi0JCQlSZXNldENhbmNlbENvbm4oKTsNCi0NCi0JCQkvKg0KLQkJCSAq IFJlcGxhY2UgdGhlIFBHUkVTX0NPUFlfT1VUL0lOIHJlc3VsdCB3aXRoIENP UFkgY29tbWFuZCdzIGV4aXQNCi0JCQkgKiBzdGF0dXMsIG9yIHdpdGggTlVM TCBpZiB3ZSB3YW50IHRvIHN1cHByZXNzIHByaW50aW5nIGFueXRoaW5nLg0K LQkJCSAqLw0KLQkJCVBRY2xlYXIoKnJlc3VsdHMpOw0KLQkJCSpyZXN1bHRz ID0gY29weV9yZXN1bHQ7DQorCQkJCWNvcHlzdHJlYW0gPSBOVUxMOwkvKiBk aXNjYXJkIENPUFkgZGF0YSBlbnRpcmVseSAqLw0KIAkJfQ0KLQkJZWxzZSBp ZiAoZmlyc3RfY3ljbGUpDQorCQllbHNlDQogCQl7DQotCQkJLyogZmFzdCBw YXRoOiBubyBDT1BZIGNvbW1hbmRzOyBQUWV4ZWMgdmlzaXRlZCBhbGwgcmVz dWx0cyAqLw0KLQkJCWJyZWFrOw0KKwkJCS8qIGZhbGwgYmFjayB0byB0aGUg Z2VuZXJpYyBxdWVyeSBvdXRwdXQgc3RyZWFtICovDQorCQkJY29weXN0cmVh bSA9IHBzZXQucXVlcnlGb3V0Ow0KIAkJfQ0KIA0KKwkJc3VjY2VzcyA9IGhh bmRsZUNvcHlPdXQocHNldC5kYiwNCisJCQkJCQkJCWNvcHlzdHJlYW0sDQor CQkJCQkJCQkmY29weV9yZXN1bHQpDQorCQkJJiYgKGNvcHlzdHJlYW0gIT0g TlVMTCk7DQorDQogCQkvKg0KLQkJICogQ2hlY2sgUFFnZXRSZXN1bHQoKSBh Z2Fpbi4gIEluIHRoZSB0eXBpY2FsIGNhc2Ugb2YgYSBzaW5nbGUtY29tbWFu ZA0KLQkJICogc3RyaW5nLCBpdCB3aWxsIHJldHVybiBOVUxMLiAgT3RoZXJ3 aXNlLCB3ZSdsbCBoYXZlIG90aGVyIHJlc3VsdHMNCi0JCSAqIHRvIHByb2Nl c3MgdGhhdCBtYXkgaW5jbHVkZSBvdGhlciBDT1BZcy4gIFdlIGtlZXAgdGhl IGxhc3QgcmVzdWx0Lg0KKwkJICogU3VwcHJlc3Mgc3RhdHVzIHByaW50aW5n IGlmIHRoZSByZXBvcnQgd291bGQgZ28gdG8gdGhlIHNhbWUNCisJCSAqIHBs YWNlIGFzIHRoZSBDT1BZIGRhdGEganVzdCB3ZW50LiAgTm90ZSB0aGlzIGRv ZXNuJ3QNCisJCSAqIHByZXZlbnQgZXJyb3IgcmVwb3J0aW5nLCBzaW5jZSBo YW5kbGVDb3B5T3V0IGRpZCB0aGF0Lg0KIAkJICovDQotCQluZXh0X3Jlc3Vs dCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOw0KLQkJaWYgKCFuZXh0X3Jlc3Vs dCkNCi0JCQlicmVhazsNCisJCWlmIChjb3B5c3RyZWFtID09IHBzZXQucXVl cnlGb3V0KQ0KKwkJew0KKwkJCVBRY2xlYXIoY29weV9yZXN1bHQpOw0KKwkJ CWNvcHlfcmVzdWx0ID0gTlVMTDsNCisJCX0NCiANCi0JCVBRY2xlYXIoKnJl c3VsdHMpOw0KLQkJKnJlc3VsdHMgPSBuZXh0X3Jlc3VsdDsNCi0JCWZpcnN0 X2N5Y2xlID0gZmFsc2U7DQorCQlpZiAobmVlZF9jbG9zZSkNCisJCXsNCisJ CQkvKiBjbG9zZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUgKi8NCisJCQlpZiAo aXNfcGlwZSkNCisJCQl7DQorCQkJCXBjbG9zZShjb3B5c3RyZWFtKTsNCisJ CQkJcmVzdG9yZV9zaWdwaXBlX3RyYXAoKTsNCisJCQl9DQorCQkJZWxzZQ0K KwkJCXsNCisJCQkJZmNsb3NlKGNvcHlzdHJlYW0pOw0KKwkJCX0NCisJCX0N CiAJfQ0KKwllbHNlDQorCXsNCisJCS8qIENPUFkgSU4gKi8NCisJCWNvcHlz dHJlYW0gPSBwc2V0LmNvcHlTdHJlYW0gPyBwc2V0LmNvcHlTdHJlYW0gOiBw c2V0LmN1cl9jbWRfc291cmNlOw0KKwkJc3VjY2VzcyA9IGhhbmRsZUNvcHlJ bihwc2V0LmRiLA0KKwkJCQkJCQkgICBjb3B5c3RyZWFtLA0KKwkJCQkJCQkg ICBQUWJpbmFyeVR1cGxlcygqcmVzdWx0KSwNCisJCQkJCQkJICAgJmNvcHlf cmVzdWx0KTsNCisJfQ0KKwlSZXNldENhbmNlbENvbm4oKTsNCiANCi0JU2V0 UmVzdWx0VmFyaWFibGVzKCpyZXN1bHRzLCBzdWNjZXNzKTsNCi0NCi0JLyog bWF5IG5lZWQgdGhpcyB0byByZWNvdmVyIGZyb20gY29ubiBsb3NzIGR1cmlu ZyBDT1BZICovDQotCWlmICghZmlyc3RfY3ljbGUgJiYgIUNoZWNrQ29ubmVj dGlvbigpKQ0KLQkJcmV0dXJuIGZhbHNlOw0KKwlQUWNsZWFyKCpyZXN1bHQp Ow0KKwkqcmVzdWx0ID0gY29weV9yZXN1bHQ7DQogDQogCXJldHVybiBzdWNj ZXNzOw0KIH0NCiANCi0NCiAvKg0KICAqIFByaW50UXVlcnlTdGF0dXM6IHJl cG9ydCBjb21tYW5kIHN0YXR1cyBhcyByZXF1aXJlZA0KICAqDQotICogTm90 ZTogVXRpbGl0eSBmdW5jdGlvbiBmb3IgdXNlIGJ5IFByaW50UXVlcnlSZXN1 bHRzKCkgb25seS4NCisgKiBOb3RlOiBVdGlsaXR5IGZ1bmN0aW9uIGZvciB1 c2UgYnkgSGFuZGxlUXVlcnlSZXN1bHQoKSBvbmx5Lg0KICAqLw0KIHN0YXRp YyB2b2lkDQogUHJpbnRRdWVyeVN0YXR1cyhQR3Jlc3VsdCAqcmVzdWx0cykN CkBAIC0xMjMzLDQzICsxMTU0LDQ0IEBAIFByaW50UXVlcnlTdGF0dXMoUEdy ZXN1bHQgKnJlc3VsdHMpDQogDQogDQogLyoNCi0gKiBQcmludFF1ZXJ5UmVz dWx0czogcHJpbnQgb3V0IChvciBzdG9yZSBvciBleGVjdXRlKSBxdWVyeSBy ZXN1bHRzIGFzIHJlcXVpcmVkDQotICoNCi0gKiBOb3RlOiBVdGlsaXR5IGZ1 bmN0aW9uIGZvciB1c2UgYnkgU2VuZFF1ZXJ5KCkgb25seS4NCisgKiBIYW5k bGVRdWVyeVJlc3VsdDogcHJpbnQgb3V0LCBzdG9yZSBvciBleGVjdXRlIG9u ZSBxdWVyeSByZXN1bHQNCisgKiBhcyByZXF1aXJlZC4NCiAgKg0KICAqIFJl dHVybnMgdHJ1ZSBpZiB0aGUgcXVlcnkgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5 LCBmYWxzZSBvdGhlcndpc2UuDQogICovDQogc3RhdGljIGJvb2wNCi1Qcmlu dFF1ZXJ5UmVzdWx0cyhQR3Jlc3VsdCAqcmVzdWx0cykNCitIYW5kbGVRdWVy eVJlc3VsdChQR3Jlc3VsdCAqcmVzdWx0LCBib29sIGxhc3QpDQogew0KIAli b29sCQlzdWNjZXNzOw0KIAljb25zdCBjaGFyICpjbWRzdGF0dXM7DQogDQot CWlmICghcmVzdWx0cykNCisJaWYgKHJlc3VsdCA9PSBOVUxMKQ0KIAkJcmV0 dXJuIGZhbHNlOw0KIA0KLQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3Vs dHMpKQ0KKwlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkpDQogCXsN CiAJCWNhc2UgUEdSRVNfVFVQTEVTX09LOg0KIAkJCS8qIHN0b3JlIG9yIGV4 ZWN1dGUgb3IgcHJpbnQgdGhlIGRhdGEgLi4uICovDQotCQkJaWYgKHBzZXQu Z3NldF9wcmVmaXgpDQotCQkJCXN1Y2Nlc3MgPSBTdG9yZVF1ZXJ5VHVwbGUo cmVzdWx0cyk7DQotCQkJZWxzZSBpZiAocHNldC5nZXhlY19mbGFnKQ0KLQkJ CQlzdWNjZXNzID0gRXhlY1F1ZXJ5VHVwbGVzKHJlc3VsdHMpOw0KLQkJCWVs c2UgaWYgKHBzZXQuY3Jvc3N0YWJfZmxhZykNCi0JCQkJc3VjY2VzcyA9IFBy aW50UmVzdWx0c0luQ3Jvc3N0YWIocmVzdWx0cyk7DQorCQkJaWYgKGxhc3Qg JiYgcHNldC5nc2V0X3ByZWZpeCkNCisJCQkJc3VjY2VzcyA9IFN0b3JlUXVl cnlUdXBsZShyZXN1bHQpOw0KKwkJCWVsc2UgaWYgKGxhc3QgJiYgcHNldC5n ZXhlY19mbGFnKQ0KKwkJCQlzdWNjZXNzID0gRXhlY1F1ZXJ5VHVwbGVzKHJl c3VsdCk7DQorCQkJZWxzZSBpZiAobGFzdCAmJiBwc2V0LmNyb3NzdGFiX2Zs YWcpDQorCQkJCXN1Y2Nlc3MgPSBQcmludFJlc3VsdHNJbkNyb3NzdGFiKHJl c3VsdCk7DQogCQkJZWxzZQ0KLQkJCQlzdWNjZXNzID0gUHJpbnRRdWVyeVR1 cGxlcyhyZXN1bHRzKTsNCisJCQkJc3VjY2VzcyA9IFByaW50UXVlcnlUdXBs ZXMocmVzdWx0KTsNCisNCiAJCQkvKiBpZiBpdCdzIElOU0VSVC9VUERBVEUv REVMRVRFIFJFVFVSTklORywgYWxzbyBwcmludCBzdGF0dXMgKi8NCi0JCQlj bWRzdGF0dXMgPSBQUWNtZFN0YXR1cyhyZXN1bHRzKTsNCisJCQljbWRzdGF0 dXMgPSBQUWNtZFN0YXR1cyhyZXN1bHQpOw0KIAkJCWlmIChzdHJuY21wKGNt ZHN0YXR1cywgIklOU0VSVCIsIDYpID09IDAgfHwNCiAJCQkJc3RybmNtcChj bWRzdGF0dXMsICJVUERBVEUiLCA2KSA9PSAwIHx8DQogCQkJCXN0cm5jbXAo Y21kc3RhdHVzLCAiREVMRVRFIiwgNikgPT0gMCkNCi0JCQkJUHJpbnRRdWVy eVN0YXR1cyhyZXN1bHRzKTsNCisJCQkJUHJpbnRRdWVyeVN0YXR1cyhyZXN1 bHQpOw0KKw0KIAkJCWJyZWFrOw0KIA0KIAkJY2FzZSBQR1JFU19DT01NQU5E X09LOg0KLQkJCVByaW50UXVlcnlTdGF0dXMocmVzdWx0cyk7DQorCQkJUHJp bnRRdWVyeVN0YXR1cyhyZXN1bHQpOw0KIAkJCXN1Y2Nlc3MgPSB0cnVlOw0K IAkJCWJyZWFrOw0KIA0KQEAgLTEyNzksNyArMTIwMSw3IEBAIFByaW50UXVl cnlSZXN1bHRzKFBHcmVzdWx0ICpyZXN1bHRzKQ0KIA0KIAkJY2FzZSBQR1JF U19DT1BZX09VVDoNCiAJCWNhc2UgUEdSRVNfQ09QWV9JTjoNCi0JCQkvKiBu b3RoaW5nIHRvIGRvIGhlcmUgKi8NCisJCQkvKiBub3RoaW5nIHRvIGRvIGhl cmU6IGFscmVhZHkgcHJvY2Vzc2VkICovDQogCQkJc3VjY2VzcyA9IHRydWU7 DQogCQkJYnJlYWs7DQogDQpAQCAtMTI5Miw3ICsxMjE0LDcgQEAgUHJpbnRR dWVyeVJlc3VsdHMoUEdyZXN1bHQgKnJlc3VsdHMpDQogCQlkZWZhdWx0Og0K IAkJCXN1Y2Nlc3MgPSBmYWxzZTsNCiAJCQlwZ19sb2dfZXJyb3IoInVuZXhw ZWN0ZWQgUFFyZXN1bHRTdGF0dXM6ICVkIiwNCi0JCQkJCQkgUFFyZXN1bHRT dGF0dXMocmVzdWx0cykpOw0KKwkJCQkJCSBQUXJlc3VsdFN0YXR1cyhyZXN1 bHQpKTsNCiAJCQlicmVhazsNCiAJfQ0KIA0KQEAgLTEzMDEsNiArMTIyMywx NzYgQEAgUHJpbnRRdWVyeVJlc3VsdHMoUEdyZXN1bHQgKnJlc3VsdHMpDQog CXJldHVybiBzdWNjZXNzOw0KIH0NCiANCisvKg0KKyAqIERhdGEgc3RydWN0 dXJlIGFuZCBmdW5jdGlvbnMgdG8gcmVjb3JkIG5vdGljZXMgd2hpbGUgdGhl eSBhcmUNCisgKiBlbWl0dGVkLCBzbyB0aGF0IHRoZXkgY2FuIGJlIHNob3du IGxhdGVyLg0KKyAqDQorICogV2UgbmVlZCB0byBrbm93IHdoaWNoIHJlc3Vs dCBpcyBsYXN0LCB3aGljaCByZXF1aXJlcyB0byBleHRyYWN0DQorICogb25l IHJlc3VsdCBpbiBhZHZhbmNlLCBoZW5jZSB0d28gYnVmZmVycyBhcmUgbmVl ZGVkLg0KKyAqLw0KK3R5cGVkZWYgc3RydWN0IHsNCisJYm9vbAkJCWluX2Zs aXA7DQorCVBRRXhwQnVmZmVyRGF0YQlmbGlwOw0KKwlQUUV4cEJ1ZmZlckRh dGEJZmxvcDsNCit9IHRfbm90aWNlX21lc3NhZ2VzOw0KKw0KKy8qDQorICog U3RvcmUgbm90aWNlcyBpbiBhcHByb3ByaWF0ZSBidWZmZXIsIGZvciBsYXRl ciBkaXNwbGF5Lg0KKyAqLw0KK3N0YXRpYyB2b2lkDQorQXBwZW5kTm90aWNl TWVzc2FnZSh2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1zZykNCit7DQorCXRf bm90aWNlX21lc3NhZ2VzICpub3RlcyA9ICh0X25vdGljZV9tZXNzYWdlcyop IGFyZzsNCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIobm90ZXMtPmluX2ZsaXAg PyAmbm90ZXMtPmZsaXAgOiAmbm90ZXMtPmZsb3AsIG1zZyk7DQorfQ0KKw0K Ky8qDQorICogU2hvdyBub3RpY2VzIHN0b3JlZCBpbiBidWZmZXIsIHdoaWNo IGlzIHRoZW4gcmVzZXQuDQorICovDQorc3RhdGljIHZvaWQNCitTaG93Tm90 aWNlTWVzc2FnZSh0X25vdGljZV9tZXNzYWdlcyAqbm90ZXMpDQorew0KKwlQ UUV4cEJ1ZmZlckRhdGEJKmN1cnJlbnQgPSBub3Rlcy0+aW5fZmxpcCA/ICZu b3Rlcy0+ZmxpcCA6ICZub3Rlcy0+ZmxvcDsNCisJaWYgKGN1cnJlbnQtPmRh dGEgIT0gTlVMTCAmJiAqY3VycmVudC0+ZGF0YSAhPSAnXDAnKQ0KKwkJcGdf bG9nX2luZm8oIiVzIiwgY3VycmVudC0+ZGF0YSk7DQorCXJlc2V0UFFFeHBC dWZmZXIoY3VycmVudCk7DQorfQ0KKw0KKy8qDQorICogU2VuZFF1ZXJ5QW5k UHJvY2Vzc1Jlc3VsdHM6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBT ZW5kUXVlcnkoKSBvbmx5DQorICoNCisgKiBTZW5kcyBxdWVyeSBhbmQgY3lj bGVzIHRocm91Z2ggUEdyZXN1bHQgb2JqZWN0cy4NCisgKg0KKyAqIFdoZW4g b3VyIGNvbW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBhIENPUFkgRlJPTSBTVERJ TiBvciBDT1BZIFRPIFNURE9VVCwNCisgKiB0aGUgUEdyZXN1bHQgYXNzb2Np YXRlZCB3aXRoIHRoZXNlIGNvbW1hbmRzIG11c3QgYmUgcHJvY2Vzc2VkIGJ5 IHByb3ZpZGluZw0KKyAqIGFuIGlucHV0IG9yIG91dHB1dCBzdHJlYW0uICBJ biB0aGF0IGV2ZW50LCB3ZSdsbCBtYXJzaGFsIGRhdGEgZm9yIHRoZSBDT1BZ Lg0KKyAqDQorICogRm9yIG90aGVyIGNvbW1hbmRzLCB0aGUgcmVzdWx0cyBh cmUgcHJvY2Vzc2VkIG5vcm1hbGx5LCBkZXBlbmRpbmcgb24gdGhlaXINCisg KiBzdGF0dXMuDQorICoNCisgKiBSZXR1cm5zIHRydWUgb24gY29tcGxldGUg c3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLiAgUG9zc2libGUgZmFpbHVyZSBt b2Rlcw0KKyAqIGluY2x1ZGUgcHVyZWx5IGNsaWVudC1zaWRlIHByb2JsZW1z OyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdHVzIGZvciB0aGUNCisgKiBz ZXJ2ZXItc2lkZSBvcGluaW9uLg0KKyAqDQorICogTm90ZSB0aGF0IG9uIGEg Y29tYmluZWQgcXVlcnksIGZhaWx1cmUgZG9lcyBub3QgbWVhbiB0aGF0IG5v dGhpbmcgd2FzDQorICogY29tbWl0dGVkLg0KKyAqLw0KK3N0YXRpYyBib29s DQorU2VuZFF1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVl cnksIGRvdWJsZSAqcGVsYXBzZWRfbXNlYykNCit7DQorCWJvb2wJCQkJc3Vj Y2VzczsNCisJaW5zdHJfdGltZQkJCWJlZm9yZTsNCisJUEdyZXN1bHQJCSAg ICpyZXN1bHQ7DQorCXRfbm90aWNlX21lc3NhZ2VzCW5vdGVzOw0KKw0KKwlp ZiAocHNldC50aW1pbmcpDQorCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJl Zm9yZSk7DQorDQorCXN1Y2Nlc3MgPSBQUXNlbmRRdWVyeShwc2V0LmRiLCBx dWVyeSk7DQorCVJlc2V0Q2FuY2VsQ29ubigpOw0KKw0KKwlpZiAoIXN1Y2Nl c3MpDQorCQlyZXR1cm4gZmFsc2U7DQorDQorCS8qIGludGVyY2VwdCBub3Rp Y2VzICovDQorCW5vdGVzLmluX2ZsaXAgPSB0cnVlOw0KKwlpbml0UFFFeHBC dWZmZXIoJm5vdGVzLmZsaXApOw0KKwlpbml0UFFFeHBCdWZmZXIoJm5vdGVz LmZsb3ApOw0KKwlQUXNldE5vdGljZVByb2Nlc3Nvcihwc2V0LmRiLCBBcHBl bmROb3RpY2VNZXNzYWdlLCAmbm90ZXMpOw0KKw0KKwkvKiBmaXJzdCByZXN1 bHQgKi8NCisJcmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7DQorDQor CXdoaWxlIChyZXN1bHQgIT0gTlVMTCkNCisJew0KKwkJRXhlY1N0YXR1c1R5 cGUgcmVzdWx0X3N0YXR1czsNCisJCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0 Ow0KKwkJYm9vbAkJbGFzdDsNCisNCisJCWlmICghQWNjZXB0UmVzdWx0KHJl c3VsdCwgZmFsc2UpKQ0KKwkJew0KKwkJCS8qDQorCQkJICogU29tZSBlcnJv ciBvY2N1cmVkLCBlaXRoZXIgYSBzZXJ2ZXItc2lkZSBmYWlsdXJlIG9yDQor CQkJICogYSBmYWlsdXJlIHRvIHN1Ym1pdCB0aGUgY29tbWFuZCBzdHJpbmcu ICBSZWNvcmQgdGhhdC4NCisJCQkgKi8NCisJCQlTaG93Tm90aWNlTWVzc2Fn ZSgmbm90ZXMpOw0KKwkJCVNob3dFcnJvck1lc3NhZ2UocmVzdWx0KTsNCisJ CQlTZXRSZXN1bHRWYXJpYWJsZXMocmVzdWx0LCBmYWxzZSk7DQorCQkJQ2xl YXJPclNhdmVSZXN1bHQocmVzdWx0KTsNCisJCQlzdWNjZXNzID0gZmFsc2U7 DQorDQorCQkJLyogYW5kIHN3aXRjaCB0byBuZXh0IHJlc3VsdCAqLw0KKwkJ CXJlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOw0KKwkJCWNvbnRpbnVl Ow0KKwkJfQ0KKw0KKwkJLyogbXVzdCBoYW5kbGUgQ09QWSBiZWZvcmUgY2hh bmdpbmcgdGhlIGN1cnJlbnQgcmVzdWx0ICovDQorCQlyZXN1bHRfc3RhdHVz ID0gUFFyZXN1bHRTdGF0dXMocmVzdWx0KTsNCisJCWlmIChyZXN1bHRfc3Rh dHVzID09IFBHUkVTX0NPUFlfSU4gfHwNCisJCQlyZXN1bHRfc3RhdHVzID09 IFBHUkVTX0NPUFlfT1VUKQ0KKwkJew0KKwkJCVNob3dOb3RpY2VNZXNzYWdl KCZub3Rlcyk7DQorCQkJc3VjY2VzcyAmPSBIYW5kbGVDb3B5UmVzdWx0KCZy ZXN1bHQpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCSAqIENoZWNrIFBRZ2V0UmVz dWx0KCkgYWdhaW4uICBJbiB0aGUgdHlwaWNhbCBjYXNlIG9mIGEgc2luZ2xl LWNvbW1hbmQNCisJCSAqIHN0cmluZywgaXQgd2lsbCByZXR1cm4gTlVMTC4g IE90aGVyd2lzZSwgd2UnbGwgaGF2ZSBvdGhlciByZXN1bHRzDQorCQkgKiB0 byBwcm9jZXNzLg0KKwkJICovDQorCQlub3Rlcy5pbl9mbGlwID0gIW5vdGVz LmluX2ZsaXA7DQorCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQu ZGIpOw0KKwkJbm90ZXMuaW5fZmxpcCA9ICFub3Rlcy5pbl9mbGlwOw0KKwkJ bGFzdCA9IChuZXh0X3Jlc3VsdCA9PSBOVUxMKTsNCisNCisJCS8qDQorCQkg KiBHZXQgdGltaW5nIG1lYXN1cmUgYmVmb3JlIHByaW50aW5nIHRoZSBsYXN0 IHJlc3VsdC4NCisJCSAqDQorCQkgKiBJdCB3aWxsIGluY2x1ZGUgdGhlIGRp c3BsYXkgb2YgcHJldmlvdXMgcmVzdWx0cywgaWYgYW55Lg0KKwkJICogVGhp cyBjYW5ub3QgYmUgaGVscGVkIGJlY2F1c2UgdGhlIHNlcnZlciBnb2VzIG9u IHByb2Nlc3NpbmcNCisJCSAqIGZ1cnRoZXIgcXVlcmllcyBhbnl3YXkgd2hp bGUgdGhlIHByZXZpb3VzIG9uZXMgYXJlIGJlaW5nIGRpc3BsYXllZC4NCisJ CSAqIFRoZSBwYXJhbGxlbCBleGVjdXRpb24gb2YgdGhlIGNsaWVudCBkaXNw bGF5IGhpZGVzIHRoZSBzZXJ2ZXIgdGltZQ0KKwkJICogd2hlbiBpdCBpcyBz aG9ydGVyLg0KKwkJICoNCisJCSAqIFdpdGggY29tYmluZWQgcXVlcmllcywg dGltaW5nIG11c3QgYmUgdW5kZXJzdG9vZCBhcyBhbiB1cHBlciBib3VuZA0K KwkJICogb2YgdGhlIHRpbWUgc3BlbnQgcHJvY2Vzc2luZyB0aGVtLg0KKwkJ ICovDQorCQlpZiAobGFzdCAmJiBwc2V0LnRpbWluZykNCisJCXsNCisJCQlp bnN0cl90aW1lCW5vdzsNCisJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKG5v dyk7DQorCQkJSU5TVFJfVElNRV9TVUJUUkFDVChub3csIGJlZm9yZSk7DQor CQkJKnBlbGFwc2VkX21zZWMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhu b3cpOw0KKwkJfQ0KKw0KKwkJLyogbm90aWNlcyBhbHJlYWR5IHNob3cgYWJv dmUgZm9yIGNvcHkgKi8NCisJCVNob3dOb3RpY2VNZXNzYWdlKCZub3Rlcyk7 DQorDQorCQkvKiB0aGlzIG1heSBvciBtYXkgbm90IHByaW50IHNvbWV0aGlu ZyBkZXBlbmRpbmcgb24gc2V0dGluZ3MgKi8NCisJCWlmIChyZXN1bHQgIT0g TlVMTCkNCisJCQlzdWNjZXNzICY9IEhhbmRsZVF1ZXJ5UmVzdWx0KHJlc3Vs dCwgbGFzdCk7DQorDQorCQkvKiBzZXQgdmFyaWFibGVzIG9uIGxhc3QgcmVz dWx0IGlmIGFsbCB3ZW50IHdlbGwgKi8NCisJCWlmIChsYXN0ICYmIHN1Y2Nl c3MpDQorCQkJU2V0UmVzdWx0VmFyaWFibGVzKHJlc3VsdCwgdHJ1ZSk7DQor DQorCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHQpOw0KKwkJbm90ZXMuaW5f ZmxpcCA9ICFub3Rlcy5pbl9mbGlwOw0KKwkJcmVzdWx0ID0gbmV4dF9yZXN1 bHQ7DQorCX0NCisNCisJLyogcmVzZXQgbm90aWNlIGhvb2sgKi8NCisJUFFz ZXROb3RpY2VQcm9jZXNzb3IocHNldC5kYiwgTm90aWNlUHJvY2Vzc29yLCBO VUxMKTsNCisJdGVybVBRRXhwQnVmZmVyKCZub3Rlcy5mbGlwKTsNCisJdGVy bVBRRXhwQnVmZmVyKCZub3Rlcy5mbG9wKTsNCisNCisJLyogbWF5IG5lZWQg dGhpcyB0byByZWNvdmVyIGZyb20gY29ubiBsb3NzIGR1cmluZyBDT1BZICov DQorCWlmICghQ2hlY2tDb25uZWN0aW9uKCkpDQorCQlyZXR1cm4gZmFsc2U7 DQorDQorCXJldHVybiBzdWNjZXNzOw0KK30NCisNCiANCiAvKg0KICAqIFNl bmRRdWVyeTogc2VuZCB0aGUgcXVlcnkgc3RyaW5nIHRvIHRoZSBiYWNrZW5k DQpAQCAtMTMxNyw5ICsxNDA5LDkgQEAgUHJpbnRRdWVyeVJlc3VsdHMoUEdy ZXN1bHQgKnJlc3VsdHMpDQogYm9vbA0KIFNlbmRRdWVyeShjb25zdCBjaGFy ICpxdWVyeSkNCiB7DQotCVBHcmVzdWx0ICAgKnJlc3VsdHM7DQorCVBHcmVz dWx0ICAgKnJlc3VsdHMgPSBOVUxMOw0KIAlQR1RyYW5zYWN0aW9uU3RhdHVz VHlwZSB0cmFuc2FjdGlvbl9zdGF0dXM7DQotCWRvdWJsZQkJZWxhcHNlZF9t c2VjID0gMDsNCisJZG91YmxlCQllbGFwc2VkX21zZWMgPSAwLjA7DQogCWJv b2wJCU9LID0gZmFsc2U7DQogCWludAkJCWk7DQogCWJvb2wJCW9uX2Vycm9y X3JvbGxiYWNrX3NhdmVwb2ludCA9IGZhbHNlOw0KQEAgLTE0MjIsMjggKzE1 MTQsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpDQogCQkJIHBz ZXQuY3Jvc3N0YWJfZmxhZyB8fCAhaXNfc2VsZWN0X2NvbW1hbmQocXVlcnkp KQ0KIAl7DQogCQkvKiBEZWZhdWx0IGZldGNoLWl0LWFsbC1hbmQtcHJpbnQg bW9kZSAqLw0KLQkJaW5zdHJfdGltZQliZWZvcmUsDQotCQkJCQlhZnRlcjsN Ci0NCi0JCWlmIChwc2V0LnRpbWluZykNCi0JCQlJTlNUUl9USU1FX1NFVF9D VVJSRU5UKGJlZm9yZSk7DQotDQotCQlyZXN1bHRzID0gUFFleGVjKHBzZXQu ZGIsIHF1ZXJ5KTsNCi0NCi0JCS8qIHRoZXNlIG9wZXJhdGlvbnMgYXJlIGlu Y2x1ZGVkIGluIHRoZSB0aW1pbmcgcmVzdWx0OiAqLw0KLQkJUmVzZXRDYW5j ZWxDb25uKCk7DQotCQlPSyA9IFByb2Nlc3NSZXN1bHQoJnJlc3VsdHMpOw0K LQ0KLQkJaWYgKHBzZXQudGltaW5nKQ0KLQkJew0KLQkJCUlOU1RSX1RJTUVf U0VUX0NVUlJFTlQoYWZ0ZXIpOw0KLQkJCUlOU1RSX1RJTUVfU1VCVFJBQ1Qo YWZ0ZXIsIGJlZm9yZSk7DQotCQkJZWxhcHNlZF9tc2VjID0gSU5TVFJfVElN RV9HRVRfTUlMTElTRUMoYWZ0ZXIpOw0KLQkJfQ0KLQ0KLQkJLyogYnV0IHBy aW50aW5nIHJlc3VsdHMgaXNuJ3Q6ICovDQotCQlpZiAoT0sgJiYgcmVzdWx0 cykNCi0JCQlPSyA9IFByaW50UXVlcnlSZXN1bHRzKHJlc3VsdHMpOw0KKwkJ T0sgPSBTZW5kUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhxdWVyeSwgJmVsYXBz ZWRfbXNlYyk7DQogCX0NCiAJZWxzZQ0KIAl7DQpAQCAtMTYyMCw3ICsxNjkx LDcgQEAgRGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwgZG91Ymxl ICplbGFwc2VkX21zZWMpDQogCVBRY2xlYXIocmVzdWx0cyk7DQogDQogCXJl c3VsdHMgPSBQUWRlc2NyaWJlUHJlcGFyZWQocHNldC5kYiwgIiIpOw0KLQlP SyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzKSAmJg0KKwlPSyA9IEFjY2VwdFJl c3VsdChyZXN1bHRzLCB0cnVlKSAmJg0KIAkJKFBRcmVzdWx0U3RhdHVzKHJl c3VsdHMpID09IFBHUkVTX0NPTU1BTkRfT0spOw0KIAlpZiAoT0sgJiYgcmVz dWx0cykNCiAJew0KQEAgLTE2NjgsNyArMTczOSw3IEBAIERlc2NyaWJlUXVl cnkoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0K IAkJCVBRY2xlYXIocmVzdWx0cyk7DQogDQogCQkJcmVzdWx0cyA9IFBRZXhl Yyhwc2V0LmRiLCBidWYuZGF0YSk7DQotCQkJT0sgPSBBY2NlcHRSZXN1bHQo cmVzdWx0cyk7DQorCQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cywgdHJ1 ZSk7DQogDQogCQkJaWYgKHBzZXQudGltaW5nKQ0KIAkJCXsNCkBAIC0xNjc4 LDcgKzE3NDksNyBAQCBEZXNjcmliZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5 LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJCQl9DQogDQogCQkJaWYgKE9L ICYmIHJlc3VsdHMpDQotCQkJCU9LID0gUHJpbnRRdWVyeVJlc3VsdHMocmVz dWx0cyk7DQorCQkJCU9LID0gSGFuZGxlUXVlcnlSZXN1bHQocmVzdWx0cywg dHJ1ZSk7DQogDQogCQkJdGVybVBRRXhwQnVmZmVyKCZidWYpOw0KIAkJfQ0K QEAgLTE3MzcsNyArMTgwOCw3IEBAIEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKGNv bnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJaWYg KFBRdHJhbnNhY3Rpb25TdGF0dXMocHNldC5kYikgPT0gUFFUUkFOU19JRExF KQ0KIAl7DQogCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsICJCRUdJTiIp Ow0KLQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cykgJiYNCisJCU9LID0g QWNjZXB0UmVzdWx0KHJlc3VsdHMsIHRydWUpICYmDQogCQkJKFBRcmVzdWx0 U3RhdHVzKHJlc3VsdHMpID09IFBHUkVTX0NPTU1BTkRfT0spOw0KIAkJQ2xl YXJPclNhdmVSZXN1bHQocmVzdWx0cyk7DQogCQlpZiAoIU9LKQ0KQEAgLTE3 NTEsNyArMTgyMiw3IEBAIEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKGNvbnN0IGNo YXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJCQkJCSAgcXVl cnkpOw0KIA0KIAlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIGJ1Zi5kYXRh KTsNCi0JT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cykgJiYNCisJT0sgPSBB Y2NlcHRSZXN1bHQocmVzdWx0cywgdHJ1ZSkgJiYNCiAJCShQUXJlc3VsdFN0 YXR1cyhyZXN1bHRzKSA9PSBQR1JFU19DT01NQU5EX09LKTsNCiAJaWYgKCFP SykNCiAJCVNldFJlc3VsdFZhcmlhYmxlcyhyZXN1bHRzLCBPSyk7DQpAQCAt MTgyOCw3ICsxODk5LDcgQEAgRXhlY1F1ZXJ5VXNpbmdDdXJzb3IoY29uc3Qg Y2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0KIAkJCQlpc19w YWdlciA9IGZhbHNlOw0KIAkJCX0NCiANCi0JCQlPSyA9IEFjY2VwdFJlc3Vs dChyZXN1bHRzKTsNCisJCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzLCB0 cnVlKTsNCiAJCQlBc3NlcnQoIU9LKTsNCiAJCQlTZXRSZXN1bHRWYXJpYWJs ZXMocmVzdWx0cywgT0spOw0KIAkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3Vs dHMpOw0KQEAgLTE5MzcsNyArMjAwOCw3IEBAIGNsZWFudXA6DQogCXJlc3Vs dHMgPSBQUWV4ZWMocHNldC5kYiwgIkNMT1NFIF9wc3FsX2N1cnNvciIpOw0K IAlpZiAoT0spDQogCXsNCi0JCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdHMp ICYmDQorCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzLCB0cnVlKSAmJg0K IAkJCShQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSA9PSBQR1JFU19DT01NQU5E X09LKTsNCiAJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdHMpOw0KIAl9DQpA QCAtMTk0Nyw3ICsyMDE4LDcgQEAgY2xlYW51cDoNCiAJaWYgKHN0YXJ0ZWRf dHhuKQ0KIAl7DQogCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIE9LID8g IkNPTU1JVCIgOiAiUk9MTEJBQ0siKTsNCi0JCU9LICY9IEFjY2VwdFJlc3Vs dChyZXN1bHRzKSAmJg0KKwkJT0sgJj0gQWNjZXB0UmVzdWx0KHJlc3VsdHMs IHRydWUpICYmDQogCQkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdHMpID09IFBH UkVTX0NPTU1BTkRfT0spOw0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0 cyk7DQogCX0NCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jDQppbmRleCBkN2MwZmMwYzFl Li42YWU5NTI4ZGRmIDEwMDY0NA0KLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMNCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jDQpAQCAtMzcz NCw2ICszNzM0LDExIEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlw ZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBz aG93U3lzDQogCQkJdHJhbnNsYXRlX2NvbHVtbnNbY29sc19zb19mYXJdID0g dHJ1ZTsNCiAJCX0NCiANCisJCS8qDQorCQkgKiBXZSBkb24ndCBib3RoZXIg dG8gY291bnQgY29sc19zb19mYXIgYmVsb3cgaGVyZSwgYXMgdGhlcmUncyBu byBuZWVkDQorCQkgKiB0bzsgdGhpcyBtaWdodCBjaGFuZ2Ugd2l0aCBmdXR1 cmUgYWRkaXRpb25zIHRvIHRoZSBvdXRwdXQgY29sdW1ucy4NCisJCSAqLw0K Kw0KIAkJLyoNCiAJCSAqIFdlIGRvbid0IGJvdGhlciB0byBjb3VudCBjb2xz X3NvX2ZhciBiZWxvdyBoZXJlLCBhcyB0aGVyZSdzIG5vIG5lZWQNCiAJCSAq IHRvOyB0aGlzIG1pZ2h0IGNoYW5nZSB3aXRoIGZ1dHVyZSBhZGRpdGlvbnMg dG8gdGhlIG91dHB1dCBjb2x1bW5zLg0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb3B5Mi5vdXQNCmluZGV4IGM1M2VkM2ViZjUuLjljOGM4 MzYxZjggMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvcHkyLm91dA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j b3B5Mi5vdXQNCkBAIC00NzUsMTAgKzQ3NSwxMCBAQCBjb3B5IGNoZWNrX2Nv bl90YmwgZnJvbSBzdGRpbjsNCiBOT1RJQ0U6ICBpbnB1dCA9IHsiZjEiOjF9 DQogTk9USUNFOiAgaW5wdXQgPSB7ImYxIjpudWxsfQ0KIGNvcHkgY2hlY2tf Y29uX3RibCBmcm9tIHN0ZGluOw0KLU5PVElDRTogIGlucHV0ID0geyJmMSI6 MH0NCiBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJjaGVja19jb25f dGJsIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJjaGVja19jb25fdGJs X2NoZWNrIg0KIERFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwKS4N CiBDT05URVhUOiAgQ09QWSBjaGVja19jb25fdGJsLCBsaW5lIDE6ICIwIg0K K05PVElDRTogIGlucHV0ID0geyJmMSI6MH0NCiBzZWxlY3QgKiBmcm9tIGNo ZWNrX2Nvbl90Ymw7DQogIGYxIA0KIC0tLS0NCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHlkbWwub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jb3B5ZG1sLm91dA0KaW5kZXggMWI1MzM5NjJj Ni4uYjVhMjI1NjI4ZiAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29weWRtbC5vdXQNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29weWRtbC5vdXQNCkBAIC04NCwxMCArODQsMTAgQEAgZHJv cCBydWxlIHFxcSBvbiBjb3B5ZG1sX3Rlc3Q7DQogY3JlYXRlIGZ1bmN0aW9u IHFxcV90cmlnKCkgcmV0dXJucyB0cmlnZ2VyIGFzICQkDQogYmVnaW4NCiBp ZiB0Z19vcCBpbiAoJ0lOU0VSVCcsICdVUERBVEUnKSB0aGVuDQotICAgIHJh aXNlIG5vdGljZSAnJSAlJywgdGdfb3AsIG5ldy5pZDsNCisgICAgcmFpc2Ug bm90aWNlICclICUgJScsIHRnX3doZW4sIHRnX29wLCBuZXcuaWQ7DQogICAg IHJldHVybiBuZXc7DQogZWxzZQ0KLSAgICByYWlzZSBub3RpY2UgJyUgJScs IHRnX29wLCBvbGQuaWQ7DQorICAgIHJhaXNlIG5vdGljZSAnJSAlICUnLCB0 Z193aGVuLCB0Z19vcCwgb2xkLmlkOw0KICAgICByZXR1cm4gb2xkOw0KIGVu ZCBpZjsNCiBlbmQNCkBAIC05NywxNiArOTcsMTYgQEAgY3JlYXRlIHRyaWdn ZXIgcXFxYmVmIGJlZm9yZSBpbnNlcnQgb3IgdXBkYXRlIG9yIGRlbGV0ZSBv biBjb3B5ZG1sX3Rlc3QNCiBjcmVhdGUgdHJpZ2dlciBxcXFhZiBhZnRlciBp bnNlcnQgb3IgdXBkYXRlIG9yIGRlbGV0ZSBvbiBjb3B5ZG1sX3Rlc3QNCiAg ICAgZm9yIGVhY2ggcm93IGV4ZWN1dGUgcHJvY2VkdXJlIHFxcV90cmlnKCk7 DQogY29weSAoaW5zZXJ0IGludG8gY29weWRtbF90ZXN0ICh0KSB2YWx1ZXMg KCdmJykgcmV0dXJuaW5nIGlkKSB0byBzdGRvdXQ7DQotTk9USUNFOiAgSU5T RVJUIDgNCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIDgNCiA4DQotTk9USUNF OiAgSU5TRVJUIDgNCitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgOA0KIGNvcHkg KHVwZGF0ZSBjb3B5ZG1sX3Rlc3Qgc2V0IHQgPSAnZycgd2hlcmUgdCA9ICdm JyByZXR1cm5pbmcgaWQpIHRvIHN0ZG91dDsNCi1OT1RJQ0U6ICBVUERBVEUg OA0KK05PVElDRTogIEJFRk9SRSBVUERBVEUgOA0KIDgNCi1OT1RJQ0U6ICBV UERBVEUgOA0KK05PVElDRTogIEFGVEVSIFVQREFURSA4DQogY29weSAoZGVs ZXRlIGZyb20gY29weWRtbF90ZXN0IHdoZXJlIHQgPSAnZycgcmV0dXJuaW5n IGlkKSB0byBzdGRvdXQ7DQotTk9USUNFOiAgREVMRVRFIDgNCitOT1RJQ0U6 ICBCRUZPUkUgREVMRVRFIDgNCiA4DQotTk9USUNFOiAgREVMRVRFIDgNCitO T1RJQ0U6ICBBRlRFUiBERUxFVEUgOA0KIGRyb3AgdGFibGUgY29weWRtbF90 ZXN0Ow0KIGRyb3AgZnVuY3Rpb24gcXFxX3RyaWcoKTsNCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHlzZWxlY3Qub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5c2VsZWN0Lm91dA0KaW5k ZXggNzI4NjVmZTFlYi4uMzlhYjhmYzg3YSAxMDA2NDQNCi0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weXNlbGVjdC5vdXQNCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weXNlbGVjdC5vdXQNCkBAIC0x MjYsNyArMTI2LDcgQEAgY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dFw7IHNl bGVjdCAxLzA7CS0tIHJvdywgdGhlbiBlcnJvcg0KIEVSUk9SOiAgZGl2aXNp b24gYnkgemVybw0KIHNlbGVjdCAxLzBcOyBjb3B5IChzZWxlY3QgMSkgdG8g c3Rkb3V0OyAtLSBlcnJvciBvbmx5DQogRVJST1I6ICBkaXZpc2lvbiBieSB6 ZXJvDQotY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dFw7IGNvcHkgKHNlbGVj dCAyKSB0byBzdGRvdXRcOyBzZWxlY3QgMFw7IHNlbGVjdCAzOyAtLSAxIDIg Mw0KK2NvcHkgKHNlbGVjdCAxKSB0byBzdGRvdXRcOyBjb3B5IChzZWxlY3Qg MikgdG8gc3Rkb3V0XDsgc2VsZWN0IDNcOyBzZWxlY3QgNDsgLS0gMSAyIDMg NA0KIDENCiAyDQogID9jb2x1bW4/IA0KQEAgLTEzNCw4ICsxMzQsMTggQEAg Y29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dFw7IGNvcHkgKHNlbGVjdCAyKSB0 byBzdGRvdXRcOyBzZWxlY3QgMFw7IHNlbGVjdCAzOyAtLQ0KICAgICAgICAg Mw0KICgxIHJvdykNCiANCisgP2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAg ICAgICAgNA0KKygxIHJvdykNCisNCiBjcmVhdGUgdGFibGUgdGVzdDMgKGMg aW50KTsNCiBzZWxlY3QgMFw7IGNvcHkgdGVzdDMgZnJvbSBzdGRpblw7IGNv cHkgdGVzdDMgZnJvbSBzdGRpblw7IHNlbGVjdCAxOyAtLSAxDQorID9jb2x1 bW4/IA0KKy0tLS0tLS0tLS0NCisgICAgICAgIDANCisoMSByb3cpDQorDQog ID9jb2x1bW4/IA0KIC0tLS0tLS0tLS0NCiAgICAgICAgIDENCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dA0KaW5kZXggMjQyZjgx NzE2My4uYWU5ODdiNTQ4YyAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHNxbC5vdXQNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQNCkBAIC00ODA5LDMgKzQ4MDksODcgQEAgT3du aW5nIHRhYmxlOiAicGdfY2F0YWxvZy5wZ19zdGF0aXN0aWMiDQogSW5kZXhl czoNCiAgICAgInBnX3RvYXN0XzI2MTlfaW5kZXgiIFBSSU1BUlkgS0VZLCBi dHJlZSAoY2h1bmtfaWQsIGNodW5rX3NlcSkNCiANCistLQ0KKy0tIGNvbWJp bmVkIHF1ZXJpZXMNCistLQ0KK1xlY2hvICcjIGNvbWJpbmVkIHF1ZXJpZXMg dGVzdHMnDQorIyBjb21iaW5lZCBxdWVyaWVzIHRlc3RzDQorQ1JFQVRFIEZV TkNUSU9OIHdhcm4obXNnIFRFWFQpIFJFVFVSTlMgQk9PTEVBTiBBUyAkJA0K KyAgQkVHSU4gUkFJU0UgTk9USUNFICd3YXJuICUnLCBtc2cgOyBSRVRVUk4g VFJVRSA7IEVORA0KKyQkIExBTkdVQUdFIHBscGdzcWw7DQorLS0gc2hvdyBi b3RoDQorU0VMRUNUIDEgQVMgb25lIFw7IFNFTEVDVCB3YXJuKCcxLjUnKSBc OyBTRUxFQ1QgMiBBUyB0d28gOw0KKyBvbmUgDQorLS0tLS0NCisgICAxDQor KDEgcm93KQ0KKw0KK05PVElDRTogIHdhcm4gMS41DQorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIHdhcm4odGV4dCkgbGluZSAyIGF0IFJBSVNFDQor IHdhcm4gDQorLS0tLS0tDQorIHQNCisoMSByb3cpDQorDQorIHR3byANCist LS0tLQ0KKyAgIDINCisoMSByb3cpDQorDQorLS0gXGdzZXQgYXBwbGllcyB0 byBsYXN0IHF1ZXJ5IG9ubHkNCitTRUxFQ1QgMyBBUyB0aHJlZSBcOyBTRUxF Q1Qgd2FybignMy41JykgXDsgU0VMRUNUIDQgQVMgZm91ciBcZ3NldA0KKyB0 aHJlZSANCistLS0tLS0tDQorICAgICAzDQorKDEgcm93KQ0KKw0KK05PVElD RTogIHdhcm4gMy41DQorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHdh cm4odGV4dCkgbGluZSAyIGF0IFJBSVNFDQorIHdhcm4gDQorLS0tLS0tDQor IHQNCisoMSByb3cpDQorDQorXGVjaG8gOnRocmVlIDpmb3VyDQorOnRocmVl IDQNCistLSBzeW50YXggZXJyb3Igc3RvcHMgYWxsIHByb2Nlc3NpbmcNCitT RUxFQ1QgNSBcOyBTRUxFQ1QgNiArIFw7IFNFTEVDVCB3YXJuKCc2LjUnKSBc OyBTRUxFQ1QgNyA7DQorRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVh ciAiOyINCitMSU5FIDE6IFNFTEVDVCA1IDsgU0VMRUNUIDYgKyA7IFNFTEVD VCB3YXJuKCc2LjUnKSA7IFNFTEVDVCA3IDsNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeDQorLS0gd2l0aCBhYm9ydGVkIHRyYW5zYWN0aW9u LCBzdG9wIG9uIGZpcnN0IGVycm9yDQorQkVHSU4gXDsgU0VMRUNUIDggQVMg ZWlnaHQgXDsgU0VMRUNUIDkvMCBBUyBuaW5lIFw7IFJPTExCQUNLIFw7IFNF TEVDVCAxMCBBUyB0ZW4gOw0KKyBlaWdodCANCistLS0tLS0tDQorICAgICA4 DQorKDEgcm93KQ0KKw0KK0VSUk9SOiAgZGl2aXNpb24gYnkgemVybw0KKy0t IGNsb3NlIHByZXZpb3VzbHkgYWJvcnRlZCB0cmFuc2FjdGlvbg0KK1JPTExC QUNLOw0KKy0tIG1pc2MgU1FMIGNvbW1hbmRzDQorLS0gKG5vbiBTRUxFQ1Qg b3V0cHV0IGlzIHNlbnQgdG8gc3RkZXJyLCB0aHVzIGlzIG5vdCBzaG93biBp biBleHBlY3RlZCByZXN1bHRzKQ0KK1NFTEVDVCAnb2snIEFTICJiZWdpbiIg XDsNCitDUkVBVEUgVEFCTEUgcHNxbF9jb21pY3MocyBURVhUKSBcOw0KK0lO U0VSVCBJTlRPIHBzcWxfY29taWNzIFZBTFVFUyAoJ0NhbHZpbicpLCAoJ2hv YmJlcycpIFw7DQorQ09QWSBwc3FsX2NvbWljcyBGUk9NIFNURElOIFw7DQor VVBEQVRFIHBzcWxfY29taWNzIFNFVCBzID0gJ0hvYmJlcycgV0hFUkUgcyA9 ICdob2JiZXMnIFw7DQorREVMRVRFIEZST00gcHNxbF9jb21pY3MgV0hFUkUg cyA9ICdNb2UnIFw7DQorQ09QWSBwc3FsX2NvbWljcyBUTyBTVERPVVQgXDsN CitUUlVOQ0FURSBwc3FsX2NvbWljcyBcOw0KK0RST1AgVEFCTEUgcHNxbF9j b21pY3MgXDsNCitTRUxFQ1QgJ29rJyBBUyAiZG9uZSIgOw0KKyBiZWdpbiAN CistLS0tLS0tDQorIG9rDQorKDEgcm93KQ0KKw0KK0NhbHZpbg0KK1N1c2ll DQorSG9iYmVzDQorIGRvbmUgDQorLS0tLS0tDQorIG9rDQorKDEgcm93KQ0K Kw0KK0RST1AgRlVOQ1RJT04gd2FybihURVhUKTsNCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQNCmlu ZGV4IDFiMDMzMTAwMjkuLmUyYjU4ZTlmMjkgMTAwNjQ0DQotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQNCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJhbnNhY3Rpb25zLm91dA0K QEAgLTg2MCwxMSArODYwLDIxIEBAIERST1AgVEFCTEUgYWJjOw0KIC0tIHRl c3RzIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBwc3FsIHdpbGwgbm90IGJyZWFr IFNRTCBjb21tYW5kcyBhcGFydCBhdCBhDQogLS0gYmFja3NsYXNoLXF1b3Rl ZCBzZW1pY29sb24sIGJ1dCB3aWxsIHNlbmQgdGhlbSBhcyBvbmUgUXVlcnku DQogY3JlYXRlIHRlbXAgdGFibGUgaV90YWJsZSAoZjEgaW50KTsNCi0tLSBw c3FsIHdpbGwgc2hvdyBvbmx5IHRoZSBsYXN0IHJlc3VsdCBpbiBhIG11bHRp LXN0YXRlbWVudCBRdWVyeQ0KLVNFTEVDVCAxXDsgU0VMRUNUIDJcOyBTRUxF Q1QgMzsNCi0gP2NvbHVtbj8gDQotLS0tLS0tLS0tLQ0KLSAgICAgICAgMw0K Ky0tIHBzcWwgd2lsbCBzaG93IGFsbCByZXN1bHRzIG9mIGEgbXVsdGktc3Rh dGVtZW50IFF1ZXJ5DQorU0VMRUNUIDEgQVMgb25lXDsgU0VMRUNUIDIgQVMg dHdvXDsgU0VMRUNUIDMgQVMgdGhyZWU7DQorIG9uZSANCistLS0tLQ0KKyAg IDENCisoMSByb3cpDQorDQorIHR3byANCistLS0tLQ0KKyAgIDINCisoMSBy b3cpDQorDQorIHRocmVlIA0KKy0tLS0tLS0NCisgICAgIDMNCiAoMSByb3cp DQogDQogLS0gdGhpcyBpbXBsaWNpdGx5IGNvbW1pdHM6DQpAQCAtODc2LDYg Kzg4NiwxMiBAQCBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcygxKVw7IHNl bGVjdCAqIGZyb20gaV90YWJsZTsNCiANCiAtLSAxLzAgZXJyb3Igd2lsbCBj YXVzZSByb2xsaW5nIGJhY2sgdGhlIHdob2xlIGltcGxpY2l0IHRyYW5zYWN0 aW9uDQogaW5zZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoMilcOyBzZWxlY3Qg KiBmcm9tIGlfdGFibGVcOyBzZWxlY3QgMS8wOw0KKyBmMSANCistLS0tDQor ICAxDQorICAyDQorKDIgcm93cykNCisNCiBFUlJPUjogIGRpdmlzaW9uIGJ5 IHplcm8NCiBzZWxlY3QgKiBmcm9tIGlfdGFibGU7DQogIGYxIA0KQEAgLTg5 NCw5ICs5MTAsMTkgQEAgcm9sbGJhY2s7ICAtLSB3ZSBhcmUgbm90IGluIGEg dHJhbnNhY3Rpb24gYXQgdGhpcyBwb2ludA0KIFdBUk5JTkc6ICB0aGVyZSBp cyBubyB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcw0KIC0tIGJlZ2luIGNvbnZl cnRzIGltcGxpY2l0IHRyYW5zYWN0aW9uIGludG8gYSByZWd1bGFyIG9uZSB0 aGF0DQogLS0gY2FuIGV4dGVuZCBwYXN0IHRoZSBlbmQgb2YgdGhlIFF1ZXJ5 DQotc2VsZWN0IDFcOyBiZWdpblw7IGluc2VydCBpbnRvIGlfdGFibGUgdmFs dWVzKDUpOw0KK3NlbGVjdCAxIEFTIG9uZVw7IGJlZ2luXDsgaW5zZXJ0IGlu dG8gaV90YWJsZSB2YWx1ZXMoNSk7DQorIG9uZSANCistLS0tLQ0KKyAgIDEN CisoMSByb3cpDQorDQogY29tbWl0Ow0KLXNlbGVjdCAxXDsgYmVnaW5cOyBp bnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg2KTsNCitzZWxlY3QgMSBBUyBv bmVcOyBiZWdpblw7IGluc2VydCBpbnRvIGlfdGFibGUgdmFsdWVzKDYpOw0K KyBvbmUgDQorLS0tLS0NCisgICAxDQorKDEgcm93KQ0KKw0KIHJvbGxiYWNr Ow0KIC0tIGNvbW1pdCBpbiBpbXBsaWNpdC10cmFuc2FjdGlvbiBzdGF0ZSBj b21taXRzIGJ1dCBpc3N1ZXMgYSB3YXJuaW5nLg0KIGluc2VydCBpbnRvIGlf dGFibGUgdmFsdWVzKDcpXDsgY29tbWl0XDsgaW5zZXJ0IGludG8gaV90YWJs ZSB2YWx1ZXMoOClcOyBzZWxlY3QgMS8wOw0KQEAgLTkyMiwyMyArOTQ4LDUz IEBAIHNlbGVjdCAqIGZyb20gaV90YWJsZTsNCiByb2xsYmFjazsgIC0tIHdl IGFyZSBub3QgaW4gYSB0cmFuc2FjdGlvbiBhdCB0aGlzIHBvaW50DQogV0FS TklORzogIHRoZXJlIGlzIG5vIHRyYW5zYWN0aW9uIGluIHByb2dyZXNzDQog LS0gaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2sgaXMgc3RpbGwgYSB0cmFu c2FjdGlvbiBibG9jaywgZm9yIGUuZy4gVkFDVVVNDQotU0VMRUNUIDFcOyBW QUNVVU07DQorU0VMRUNUIDEgQVMgb25lXDsgVkFDVVVNOw0KKyBvbmUgDQor LS0tLS0NCisgICAxDQorKDEgcm93KQ0KKw0KIEVSUk9SOiAgVkFDVVVNIGNh bm5vdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2sNCi1TRUxFQ1Qg MVw7IENPTU1JVFw7IFZBQ1VVTTsNCitTRUxFQ1QgMiBBUyB0d29cOyBDT01N SVRcOyBWQUNVVU07DQogV0FSTklORzogIHRoZXJlIGlzIG5vIHRyYW5zYWN0 aW9uIGluIHByb2dyZXNzDQorIHR3byANCistLS0tLQ0KKyAgIDINCisoMSBy b3cpDQorDQogRVJST1I6ICBWQUNVVU0gY2Fubm90IHJ1biBpbnNpZGUgYSB0 cmFuc2FjdGlvbiBibG9jaw0KIC0tIHdlIGRpc2FsbG93IHNhdmVwb2ludC1y ZWxhdGVkIGNvbW1hbmRzIGluIGltcGxpY2l0LXRyYW5zYWN0aW9uIHN0YXRl DQotU0VMRUNUIDFcOyBTQVZFUE9JTlQgc3A7DQorU0VMRUNUIDMgQVMgdGhy ZWVcOyBTQVZFUE9JTlQgc3A7DQorIHRocmVlIA0KKy0tLS0tLS0NCisgICAg IDMNCisoMSByb3cpDQorDQogRVJST1I6ICBTQVZFUE9JTlQgY2FuIG9ubHkg YmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MNCi1TRUxFQ1QgMVw7IENP TU1JVFw7IFNBVkVQT0lOVCBzcDsNCitTRUxFQ1QgNCBBUyBmb3VyXDsgQ09N TUlUXDsgU0FWRVBPSU5UIHNwOw0KIFdBUk5JTkc6ICB0aGVyZSBpcyBubyB0 cmFuc2FjdGlvbiBpbiBwcm9ncmVzcw0KKyBmb3VyIA0KKy0tLS0tLQ0KKyAg ICA0DQorKDEgcm93KQ0KKw0KIEVSUk9SOiAgU0FWRVBPSU5UIGNhbiBvbmx5 IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzDQotUk9MTEJBQ0sgVE8g U0FWRVBPSU5UIHNwXDsgU0VMRUNUIDI7DQorUk9MTEJBQ0sgVE8gU0FWRVBP SU5UIHNwXDsgU0VMRUNUIDUgQVMgZml2ZTsNCiBFUlJPUjogIFJPTExCQUNL IFRPIFNBVkVQT0lOVCBjYW4gb25seSBiZSB1c2VkIGluIHRyYW5zYWN0aW9u IGJsb2Nrcw0KLVNFTEVDVCAyXDsgUkVMRUFTRSBTQVZFUE9JTlQgc3BcOyBT RUxFQ1QgMzsNCitTRUxFQ1QgNiBBUyBzaXhcOyBSRUxFQVNFIFNBVkVQT0lO VCBzcFw7IFNFTEVDVCA3IEFTIHNldmVuOw0KKyBzaXggDQorLS0tLS0NCisg ICA2DQorKDEgcm93KQ0KKw0KIEVSUk9SOiAgUkVMRUFTRSBTQVZFUE9JTlQg Y2FuIG9ubHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MNCiAtLSBi dXQgdGhpcyBpcyBPSywgYmVjYXVzZSB0aGUgQkVHSU4gY29udmVydHMgaXQg dG8gYSByZWd1bGFyIHhhY3QNCi1TRUxFQ1QgMVw7IEJFR0lOXDsgU0FWRVBP SU5UIHNwXDsgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwXDsgQ09NTUlUOw0K K1NFTEVDVCA4XDsgQkVHSU5cOyBTQVZFUE9JTlQgc3BcOyBST0xMQkFDSyBU TyBTQVZFUE9JTlQgc3BcOyBDT01NSVQ7DQorID9jb2x1bW4/IA0KKy0tLS0t LS0tLS0NCisgICAgICAgIDgNCisoMSByb3cpDQorDQogLS0gVGVzdHMgZm9y IEFORCBDSEFJTiBpbiBpbXBsaWNpdCB0cmFuc2FjdGlvbiBibG9ja3MNCiBT RVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZXDsgQ09NTUlUIEFORCBDSEFJTjsg IC0tIGVycm9yDQogRVJST1I6ICBDT01NSVQgQU5EIENIQUlOIGNhbiBvbmx5 IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzDQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weWRtbC5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb3B5ZG1sLnNxbA0KaW5kZXggOWEyOWY5YzlhYy4uNDU3 ODM0MjI1MyAxMDA2NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv cHlkbWwuc3FsDQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5ZG1s LnNxbA0KQEAgLTcwLDEwICs3MCwxMCBAQCBkcm9wIHJ1bGUgcXFxIG9uIGNv cHlkbWxfdGVzdDsNCiBjcmVhdGUgZnVuY3Rpb24gcXFxX3RyaWcoKSByZXR1 cm5zIHRyaWdnZXIgYXMgJCQNCiBiZWdpbg0KIGlmIHRnX29wIGluICgnSU5T RVJUJywgJ1VQREFURScpIHRoZW4NCi0gICAgcmFpc2Ugbm90aWNlICclICUn LCB0Z19vcCwgbmV3LmlkOw0KKyAgICByYWlzZSBub3RpY2UgJyUgJSAlJywg dGdfd2hlbiwgdGdfb3AsIG5ldy5pZDsNCiAgICAgcmV0dXJuIG5ldzsNCiBl bHNlDQotICAgIHJhaXNlIG5vdGljZSAnJSAlJywgdGdfb3AsIG9sZC5pZDsN CisgICAgcmFpc2Ugbm90aWNlICclICUgJScsIHRnX3doZW4sIHRnX29wLCBv bGQuaWQ7DQogICAgIHJldHVybiBvbGQ7DQogZW5kIGlmOw0KIGVuZA0KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHlzZWxlY3Quc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weXNlbGVjdC5zcWwNCmluZGV4 IDFkOThkYWQzYzguLmFiYzMzOTA0YzAgMTAwNjQ0DQotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jb3B5c2VsZWN0LnNxbA0KKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weXNlbGVjdC5zcWwNCkBAIC04NCw3ICs4NCw3IEBA IGRyb3AgdGFibGUgdGVzdDE7DQogLS0gcHNxbCBoYW5kbGluZyBvZiBDT1BZ IGluIG11bHRpLWNvbW1hbmQgc3RyaW5ncw0KIGNvcHkgKHNlbGVjdCAxKSB0 byBzdGRvdXRcOyBzZWxlY3QgMS8wOwktLSByb3csIHRoZW4gZXJyb3INCiBz ZWxlY3QgMS8wXDsgY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dDsgLS0gZXJy b3Igb25seQ0KLWNvcHkgKHNlbGVjdCAxKSB0byBzdGRvdXRcOyBjb3B5IChz ZWxlY3QgMikgdG8gc3Rkb3V0XDsgc2VsZWN0IDBcOyBzZWxlY3QgMzsgLS0g MSAyIDMNCitjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgY29weSAoc2Vs ZWN0IDIpIHRvIHN0ZG91dFw7IHNlbGVjdCAzXDsgc2VsZWN0IDQ7IC0tIDEg MiAzIDQNCiANCiBjcmVhdGUgdGFibGUgdGVzdDMgKGMgaW50KTsNCiBzZWxl Y3QgMFw7IGNvcHkgdGVzdDMgZnJvbSBzdGRpblw7IGNvcHkgdGVzdDMgZnJv bSBzdGRpblw7IHNlbGVjdCAxOyAtLSAxDQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcHNxbC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wc3FsLnNxbA0KaW5kZXggMjZhMGJjZjcxOC4uOTAzYzQxM2Y5MCAxMDA2 NDQNCi0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsDQorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbA0KQEAgLTExODIsMyAr MTE4MiwzOCBAQCBkcm9wIHJvbGUgcmVncmVzc19wYXJ0aXRpb25pbmdfcm9s ZTsNCiANCiAtLSBcZCBvbiB0b2FzdCB0YWJsZSAodXNlIHBnX3N0YXRpc3Rp YydzIHRvYXN0IHRhYmxlLCB3aGljaCBoYXMgYSBrbm93biBuYW1lKQ0KIFxk IHBnX3RvYXN0LnBnX3RvYXN0XzI2MTkNCisNCistLQ0KKy0tIGNvbWJpbmVk IHF1ZXJpZXMNCistLQ0KK1xlY2hvICcjIGNvbWJpbmVkIHF1ZXJpZXMgdGVz dHMnDQorQ1JFQVRFIEZVTkNUSU9OIHdhcm4obXNnIFRFWFQpIFJFVFVSTlMg Qk9PTEVBTiBBUyAkJA0KKyAgQkVHSU4gUkFJU0UgTk9USUNFICd3YXJuICUn LCBtc2cgOyBSRVRVUk4gVFJVRSA7IEVORA0KKyQkIExBTkdVQUdFIHBscGdz cWw7DQorLS0gc2hvdyBib3RoDQorU0VMRUNUIDEgQVMgb25lIFw7IFNFTEVD VCB3YXJuKCcxLjUnKSBcOyBTRUxFQ1QgMiBBUyB0d28gOw0KKy0tIFxnc2V0 IGFwcGxpZXMgdG8gbGFzdCBxdWVyeSBvbmx5DQorU0VMRUNUIDMgQVMgdGhy ZWUgXDsgU0VMRUNUIHdhcm4oJzMuNScpIFw7IFNFTEVDVCA0IEFTIGZvdXIg XGdzZXQNCitcZWNobyA6dGhyZWUgOmZvdXINCistLSBzeW50YXggZXJyb3Ig c3RvcHMgYWxsIHByb2Nlc3NpbmcNCitTRUxFQ1QgNSBcOyBTRUxFQ1QgNiAr IFw7IFNFTEVDVCB3YXJuKCc2LjUnKSBcOyBTRUxFQ1QgNyA7DQorLS0gd2l0 aCBhYm9ydGVkIHRyYW5zYWN0aW9uLCBzdG9wIG9uIGZpcnN0IGVycm9yDQor QkVHSU4gXDsgU0VMRUNUIDggQVMgZWlnaHQgXDsgU0VMRUNUIDkvMCBBUyBu aW5lIFw7IFJPTExCQUNLIFw7IFNFTEVDVCAxMCBBUyB0ZW4gOw0KKy0tIGNs b3NlIHByZXZpb3VzbHkgYWJvcnRlZCB0cmFuc2FjdGlvbg0KK1JPTExCQUNL Ow0KKy0tIG1pc2MgU1FMIGNvbW1hbmRzDQorLS0gKG5vbiBTRUxFQ1Qgb3V0 cHV0IGlzIHNlbnQgdG8gc3RkZXJyLCB0aHVzIGlzIG5vdCBzaG93biBpbiBl eHBlY3RlZCByZXN1bHRzKQ0KK1NFTEVDVCAnb2snIEFTICJiZWdpbiIgXDsN CitDUkVBVEUgVEFCTEUgcHNxbF9jb21pY3MocyBURVhUKSBcOw0KK0lOU0VS VCBJTlRPIHBzcWxfY29taWNzIFZBTFVFUyAoJ0NhbHZpbicpLCAoJ2hvYmJl cycpIFw7DQorQ09QWSBwc3FsX2NvbWljcyBGUk9NIFNURElOIFw7DQorVVBE QVRFIHBzcWxfY29taWNzIFNFVCBzID0gJ0hvYmJlcycgV0hFUkUgcyA9ICdo b2JiZXMnIFw7DQorREVMRVRFIEZST00gcHNxbF9jb21pY3MgV0hFUkUgcyA9 ICdNb2UnIFw7DQorQ09QWSBwc3FsX2NvbWljcyBUTyBTVERPVVQgXDsNCitU UlVOQ0FURSBwc3FsX2NvbWljcyBcOw0KK0RST1AgVEFCTEUgcHNxbF9jb21p Y3MgXDsNCitTRUxFQ1QgJ29rJyBBUyAiZG9uZSIgOw0KK01vZQ0KK1N1c2ll DQorXC4NCitEUk9QIEZVTkNUSU9OIHdhcm4oVEVYVCk7DQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJhbnNhY3Rpb25zLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyYW5zYWN0aW9ucy5zcWwNCmluZGV4IGJm MTAxNjQ4OWQuLjNhN2U1ZDQ1ODIgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC90cmFuc2FjdGlvbnMuc3FsDQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC90cmFuc2FjdGlvbnMuc3FsDQpAQCAtNDkzLDggKzQ5Myw4 IEBAIERST1AgVEFCTEUgYWJjOw0KIA0KIGNyZWF0ZSB0ZW1wIHRhYmxlIGlf dGFibGUgKGYxIGludCk7DQogDQotLS0gcHNxbCB3aWxsIHNob3cgb25seSB0 aGUgbGFzdCByZXN1bHQgaW4gYSBtdWx0aS1zdGF0ZW1lbnQgUXVlcnkNCi1T RUxFQ1QgMVw7IFNFTEVDVCAyXDsgU0VMRUNUIDM7DQorLS0gcHNxbCB3aWxs IHNob3cgYWxsIHJlc3VsdHMgb2YgYSBtdWx0aS1zdGF0ZW1lbnQgUXVlcnkN CitTRUxFQ1QgMSBBUyBvbmVcOyBTRUxFQ1QgMiBBUyB0d29cOyBTRUxFQ1Qg MyBBUyB0aHJlZTsNCiANCiAtLSB0aGlzIGltcGxpY2l0bHkgY29tbWl0czoN CiBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcygxKVw7IHNlbGVjdCAqIGZy b20gaV90YWJsZTsNCkBAIC01MTIsOSArNTEyLDkgQEAgcm9sbGJhY2s7ICAt LSB3ZSBhcmUgbm90IGluIGEgdHJhbnNhY3Rpb24gYXQgdGhpcyBwb2ludA0K IA0KIC0tIGJlZ2luIGNvbnZlcnRzIGltcGxpY2l0IHRyYW5zYWN0aW9uIGlu dG8gYSByZWd1bGFyIG9uZSB0aGF0DQogLS0gY2FuIGV4dGVuZCBwYXN0IHRo ZSBlbmQgb2YgdGhlIFF1ZXJ5DQotc2VsZWN0IDFcOyBiZWdpblw7IGluc2Vy dCBpbnRvIGlfdGFibGUgdmFsdWVzKDUpOw0KK3NlbGVjdCAxIEFTIG9uZVw7 IGJlZ2luXDsgaW5zZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoNSk7DQogY29t bWl0Ow0KLXNlbGVjdCAxXDsgYmVnaW5cOyBpbnNlcnQgaW50byBpX3RhYmxl IHZhbHVlcyg2KTsNCitzZWxlY3QgMSBBUyBvbmVcOyBiZWdpblw7IGluc2Vy dCBpbnRvIGlfdGFibGUgdmFsdWVzKDYpOw0KIHJvbGxiYWNrOw0KIA0KIC0t IGNvbW1pdCBpbiBpbXBsaWNpdC10cmFuc2FjdGlvbiBzdGF0ZSBjb21taXRz IGJ1dCBpc3N1ZXMgYSB3YXJuaW5nLg0KQEAgLTUyNywxNyArNTI3LDE3IEBA IHNlbGVjdCAqIGZyb20gaV90YWJsZTsNCiByb2xsYmFjazsgIC0tIHdlIGFy ZSBub3QgaW4gYSB0cmFuc2FjdGlvbiBhdCB0aGlzIHBvaW50DQogDQogLS0g aW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2sgaXMgc3RpbGwgYSB0cmFuc2Fj dGlvbiBibG9jaywgZm9yIGUuZy4gVkFDVVVNDQotU0VMRUNUIDFcOyBWQUNV VU07DQotU0VMRUNUIDFcOyBDT01NSVRcOyBWQUNVVU07DQorU0VMRUNUIDEg QVMgb25lXDsgVkFDVVVNOw0KK1NFTEVDVCAyIEFTIHR3b1w7IENPTU1JVFw7 IFZBQ1VVTTsNCiANCiAtLSB3ZSBkaXNhbGxvdyBzYXZlcG9pbnQtcmVsYXRl ZCBjb21tYW5kcyBpbiBpbXBsaWNpdC10cmFuc2FjdGlvbiBzdGF0ZQ0KLVNF TEVDVCAxXDsgU0FWRVBPSU5UIHNwOw0KLVNFTEVDVCAxXDsgQ09NTUlUXDsg U0FWRVBPSU5UIHNwOw0KLVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7IFNF TEVDVCAyOw0KLVNFTEVDVCAyXDsgUkVMRUFTRSBTQVZFUE9JTlQgc3BcOyBT RUxFQ1QgMzsNCitTRUxFQ1QgMyBBUyB0aHJlZVw7IFNBVkVQT0lOVCBzcDsN CitTRUxFQ1QgNCBBUyBmb3VyXDsgQ09NTUlUXDsgU0FWRVBPSU5UIHNwOw0K K1JPTExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7IFNFTEVDVCA1IEFTIGZpdmU7 DQorU0VMRUNUIDYgQVMgc2l4XDsgUkVMRUFTRSBTQVZFUE9JTlQgc3BcOyBT RUxFQ1QgNyBBUyBzZXZlbjsNCiANCiAtLSBidXQgdGhpcyBpcyBPSywgYmVj YXVzZSB0aGUgQkVHSU4gY29udmVydHMgaXQgdG8gYSByZWd1bGFyIHhhY3QN Ci1TRUxFQ1QgMVw7IEJFR0lOXDsgU0FWRVBPSU5UIHNwXDsgUk9MTEJBQ0sg VE8gU0FWRVBPSU5UIHNwXDsgQ09NTUlUOw0KK1NFTEVDVCA4XDsgQkVHSU5c OyBTQVZFUE9JTlQgc3BcOyBST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BcOyBD T01NSVQ7DQogDQogDQogLS0gVGVzdHMgZm9yIEFORCBDSEFJTiBpbiBpbXBs aWNpdCB0cmFuc2FjdGlvbiBibG9ja3MNCg== --8323329-1931601764-1568967058=:3955--