Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNLRI-0002VA-Pi for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jun 2017 15:51:37 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dNLRI-0003OT-Af for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jun 2017 15:51:36 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dNLRG-0003NO-9a for pgsql-hackers@postgresql.org; Tue, 20 Jun 2017 15:51:34 +0000 Received: from verite.pro ([195.154.189.246] helo=genius-map.net) by makus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNLRA-0001Yl-QW for pgsql-hackers@postgresql.org; Tue, 20 Jun 2017 15:51:33 +0000 Received: by genius-map.net (Postfix, from userid 1001) id 43F8F38A1910; Tue, 20 Jun 2017 17:51:26 +0200 (CEST) MIME-Version: 1.0 Subject: Re: PATCH: Batch/pipelining support for libpq From: "Daniel Verite" To: "Andres Freund" Cc: "Vaishnavi Prabakaran" ,"Michael Paquier" ,"David Steele" ,"Craig Ringer" ,"Prabakaran, Vaishnavi" ,"Haribabu Kommi" ,"Tsunakawa, Takayuki" ,"Dmitry Igrishin" ,"PostgreSQL Hackers" ,"Manuel Kniep" ,"fujita.etsuro@lab.ntt.co.jp" ,"Iwata, Aya" In-Reply-To: <20170619224938.hbwcwszgc4lu27v2@alap3.anarazel.de> Date: Tue, 20 Jun 2017 17:51:23 +0200 Message-Id: X-Mailer: Manitou v1.6.0 Content-type: multipart/mixed; boundary="----------=_1497973886-9495-13" List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format... ------------=_1497973886-9495-13 Content-Type: text/plain; charset="iso-8859-15" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Andres Freund wrote: > FWIW, I still think this needs a pgbench or similar example integration, > so we can actually properly measure the benefits. Here's an updated version of the patch I made during review, adding \beginbatch and \endbatch to pgbench. The performance improvement appears clearly with a custom script of this kind: \beginbatch UPDATE pgbench_branches SET bbalance =3D bbalance + 1 WHERE bid =3D 0; ..above repeated 1000 times... \endbatch versus the same with a BEGIN; END; pair instead of \beginbatch \endbatch On localhost on my desktop I tend to see a 30% difference in favor of the batch mode with that kind of test. On slower networks there are much bigger differences. The latest main patch (v10) must also be slightly updated for HEAD, because of this: error: patch failed: src/interfaces/libpq/exports.txt:171 v11 attached without any other change. Best regards, --=20 Daniel V=E9rit=E9 PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite ------------=_1497973886-9495-13 Content-Type: text-x-patch; name="0001-Pipelining-batch-support-for-libpq-code-v11.patch" Content-Disposition: attachment; filename="0001-Pipelining-batch-support-for-libpq-code-v11.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2xpYnBxLnNnbWwKaW5kZXggYzNiZDRmOS4uMzY2ZjI3OCAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2xpYnBxLnNnbWwKQEAgLTQ2NTYsNiArNDY1Niw1MjYgQEAgaW50 IFBRZmx1c2goUEdjb25uICpjb25uKTsKIAogIDwvc2VjdDE+CiAKKyA8c2Vj dDEgaWQ9ImxpYnBxLWJhdGNoLW1vZGUiPgorICA8dGl0bGU+QmF0Y2ggbW9k ZSBhbmQgcXVlcnkgcGlwZWxpbmluZzwvdGl0bGU+CisKKyAgPGluZGV4dGVy bSB6b25lPSJsaWJwcS1iYXRjaC1tb2RlIj4KKyAgIDxwcmltYXJ5PmxpYnBx PC9wcmltYXJ5PgorICAgPHNlY29uZGFyeT5iYXRjaCBtb2RlPC9zZWNvbmRh cnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxpbmRleHRlcm0gem9uZT0ibGli cHEtYmF0Y2gtbW9kZSI+CisgICA8cHJpbWFyeT5saWJwcTwvcHJpbWFyeT4K KyAgIDxzZWNvbmRhcnk+cGlwZWxpbmluZzwvc2Vjb25kYXJ5PgorICA8L2lu ZGV4dGVybT4KKworICA8cGFyYT4KKyAgIDxhcHBsaWNhdGlvbj5saWJwcTwv YXBwbGljYXRpb24+IHN1cHBvcnRzIHF1ZXVlaW5nIHVwIHF1ZXJpZXMgaW50 bworICAgYSBwaXBlbGluZSB0byBiZSBleGVjdXRlZCBhcyBhIGJhdGNoIG9u IHRoZSBzZXJ2ZXIuIEJhdGNoaW5nIHF1ZXJpZXMgYWxsb3dzCisgICBhcHBs aWNhdGlvbnMgdG8gYXZvaWQgYSBjbGllbnQvc2VydmVyIHJvdW5kLXRyaXAg YWZ0ZXIgZWFjaCBxdWVyeSB0byBnZXQKKyAgIHRoZSByZXN1bHRzIGJlZm9y ZSBpc3N1aW5nIHRoZSBuZXh0IHF1ZXJ5LgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBBbiBleGFtcGxlIG9mIGJhdGNoIHVzZSBtYXkgYmUgZm91bmQg aW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gaW4KKyAgIDxmaWxlbmFtZT5z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfbGlicHEvdGVzdGxpYnBxYmF0Y2guYzwv ZmlsZW5hbWU+LgorICA8L3BhcmE+CisKKyAgPHNlY3QyPgorICAgPHRpdGxl PldoZW4gdG8gdXNlIGJhdGNoaW5nPC90aXRsZT4KKworICAgPHBhcmE+Cisg ICAgTXVjaCBsaWtlIGFzeW5jaHJvbm91cyBxdWVyeSBtb2RlLCB0aGVyZSBp cyBubyBwZXJmb3JtYW5jZSBkaXNhZHZhbnRhZ2UgdG8KKyAgICB1c2luZyBi YXRjaGluZyBhbmQgcGlwZWxpbmluZy4gSXQgaW5jcmVhc2VzIGNsaWVudCBh cHBsaWNhdGlvbiBjb21wbGV4aXR5CisgICAgYW5kIGV4dHJhIGNhdXRpb24g aXMgcmVxdWlyZWQgdG8gcHJldmVudCBjbGllbnQvc2VydmVyIGRlYWRsb2Nr cyBidXQKKyAgICBjYW4gc29tZXRpbWVzIG9mZmVyIGNvbnNpZGVyYWJsZSBw ZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCisgICA8L3BhcmE+CisKKyAgIDxw YXJhPgorICAgIEJhdGNoaW5nIGlzIG1vc3QgdXNlZnVsIHdoZW4gdGhlIHNl cnZlciBpcyBkaXN0YW50LCBpLmUuIG5ldHdvcmsgbGF0ZW5jeQorICAgICg8 cXVvdGU+cGluZyB0aW1lPC9xdW90ZT4pIGlzIGhpZ2gsIGFuZCB3aGVuIG1h bnkgc21hbGwgb3BlcmF0aW9ucyBhcmUgYmVpbmcgcGVyZm9ybWVkIGluCisg ICAgcmFwaWQgc2VxdWVuY2UuIFRoZXJlIGlzIHVzdWFsbHkgbGVzcyBiZW5l Zml0IGluIHVzaW5nIGJhdGNoZXMgd2hlbiBlYWNoCisgICAgcXVlcnkgdGFr ZXMgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGNsaWVudC9zZXJ2ZXIgcm91bmQt dHJpcCB0aW1lIHRvIGV4ZWN1dGUuCisgICAgQSAxMDAtc3RhdGVtZW50IG9w ZXJhdGlvbiBydW4gb24gYSBzZXJ2ZXIgMzAwbXMgcm91bmQtdHJpcC10aW1l IGF3YXkgd291bGQgdGFrZQorICAgIDMwIHNlY29uZHMgaW4gbmV0d29yayBs YXRlbmN5IGFsb25lIHdpdGhvdXQgYmF0Y2hpbmc7IHdpdGggYmF0Y2hpbmcg aXQgbWF5IHNwZW5kCisgICAgYXMgbGl0dGxlIGFzIDAuM3Mgd2FpdGluZyBm b3IgcmVzdWx0cyBmcm9tIHRoZSBzZXJ2ZXIuCisgICA8L3BhcmE+CisKKyAg IDxwYXJhPgorICAgIFVzZSBiYXRjaGVzIHdoZW4geW91ciBhcHBsaWNhdGlv biBkb2VzIGxvdHMgb2Ygc21hbGwKKyAgICA8bGl0ZXJhbD5JTlNFUlQ8L2xp dGVyYWw+LCA8bGl0ZXJhbD5VUERBVEU8L2xpdGVyYWw+IGFuZAorICAgIDxs aXRlcmFsPkRFTEVURTwvbGl0ZXJhbD4gb3BlcmF0aW9ucyB0aGF0IGNhbid0 IGVhc2lseSBiZSB0cmFuc2Zvcm1lZCBpbnRvCisgICAgb3BlcmF0aW9ucyBv biBzZXRzIG9yIGludG8gYQorICAgIDxsaW5rIGxpbmtlbmQ9ImxpYnBxLWNv cHkiPjxsaXRlcmFsPkNPUFk8L2xpdGVyYWw+PC9saW5rPiBvcGVyYXRpb24u CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEJhdGNoaW5nIGlzIGxl c3MgdXNlZnVsIHdoZW4gaW5mb3JtYXRpb24gZnJvbSBvbmUgb3BlcmF0aW9u IGlzIHJlcXVpcmVkIGJ5IHRoZQorICAgIGNsaWVudCBiZWZvcmUgaXQga25v d3MgZW5vdWdoIHRvIHNlbmQgdGhlIG5leHQgb3BlcmF0aW9uLiBUaGUgY2xp ZW50IG11c3QKKyAgICBpbnRyb2R1Y2UgYSBzeW5jaHJvbmlzYXRpb24gcG9p bnQgYW5kIHdhaXQgZm9yIGEgZnVsbCBjbGllbnQvc2VydmVyCisgICAgcm91 bmQtdHJpcCB0byBnZXQgdGhlIHJlc3VsdHMgaXQgbmVlZHMuIEhvd2V2ZXIs IGl0J3Mgb2Z0ZW4gcG9zc2libGUgdG8KKyAgICBhZGp1c3QgdGhlIGNsaWVu dCBkZXNpZ24gdG8gZXhjaGFuZ2UgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9u IHNlcnZlci1zaWRlLgorICAgIFJlYWQtbW9kaWZ5LXdyaXRlIGN5Y2xlcyBh cmUgZXNwZWNpYWxseSBnb29kIGNhbmRpZGF0ZXM7IGZvciBleGFtcGxlOgor ICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgICAgQkVHSU47CisgICAgIFNFTEVD VCB4IEZST00gbXl0YWJsZSBXSEVSRSBpZCA9IDQyIEZPUiBVUERBVEU7Cisg ICAgIC0tIHJlc3VsdDogeD0yCisgICAgIC0tIGNsaWVudCBhZGRzIDEgdG8g eDoKKyAgICAgVVBEQVRFIG15dGFibGUgU0VUIHggPSAzIFdIRVJFIGlkID0g NDI7CisgICAgIENPTU1JVDsKKyAgICA8L3Byb2dyYW1saXN0aW5nPgorICAg IGNvdWxkIGJlIG11Y2ggbW9yZSBlZmZpY2llbnRseSBkb25lIHdpdGg6Cisg ICAgPHByb2dyYW1saXN0aW5nPgorICAgICBVUERBVEUgbXl0YWJsZSBTRVQg eCA9IHggKyAxIFdIRVJFIGlkID0gNDI7CisgICAgPC9wcm9ncmFtbGlzdGlu Zz4KKyAgIDwvcGFyYT4KKworICAgPG5vdGU+CisgICAgPHBhcmE+CisgICAg IFRoZSBiYXRjaCBBUEkgd2FzIGludHJvZHVjZWQgaW4gUG9zdGdyZVNRTCAx MC4wLCBidXQgY2xpZW50cyB1c2luZyBQb3N0Z3Jlc1NRTCAxMC4wIHZlcnNp b24gb2YgbGlicHEgY2FuCisgICAgIHVzZSBiYXRjaGVzIG9uIHNlcnZlciB2 ZXJzaW9ucyA4LjQgYW5kIG5ld2VyLiBCYXRjaGluZyB3b3JrcyBvbiBhbnkg c2VydmVyCisgICAgIHRoYXQgc3VwcG9ydHMgdGhlIHYzIGV4dGVuZGVkIHF1 ZXJ5IHByb3RvY29sLgorICAgIDwvcGFyYT4KKyAgIDwvbm90ZT4KKworICA8 L3NlY3QyPgorCisgIDxzZWN0MiBpZD0ibGlicHEtYmF0Y2gtdXNpbmciPgor ICAgPHRpdGxlPlVzaW5nIGJhdGNoIG1vZGU8L3RpdGxlPgorCisgICA8cGFy YT4KKyAgICBUbyBpc3N1ZSBiYXRjaGVzIHRoZSBhcHBsaWNhdGlvbiBtdXN0 IHN3aXRjaAorICAgIGEgY29ubmVjdGlvbiBpbnRvIGJhdGNoIG1vZGUuIEVu dGVyIGJhdGNoIG1vZGUgd2l0aCA8bGluaworICAgIGxpbmtlbmQ9ImxpYnBx LVBRZW50ZXJCYXRjaE1vZGUiPjxmdW5jdGlvbj5QUWVudGVyQmF0Y2hNb2Rl KGNvbm4pPC9mdW5jdGlvbj48L2xpbms+IG9yIHRlc3QKKyAgICB3aGV0aGVy IGJhdGNoIG1vZGUgaXMgYWN0aXZlIHdpdGggPGxpbmsKKyAgICBsaW5rZW5k PSJsaWJwcS1QUWJhdGNoU3RhdHVzIj48ZnVuY3Rpb24+UFFiYXRjaFN0YXR1 cyhjb25uKTwvZnVuY3Rpb24+PC9saW5rPi4gSW4gYmF0Y2ggbW9kZSBvbmx5 IDxsaW5rCisgICAgbGlua2VuZD0ibGlicHEtYXN5bmMiPmFzeW5jaHJvbm91 cyBvcGVyYXRpb25zPC9saW5rPiBhcmUgcGVybWl0dGVkLCBhbmQKKyAgICA8 bGl0ZXJhbD5DT1BZPC9saXRlcmFsPiBpcyBub3QgcmVjb21tZW5kZWQgYXMg aXQgbW9zdCBsaWtlbHkgd2lsbCB0cmlnZ2VyIGZhaWx1cmUgaW4gYmF0Y2gg cHJvY2Vzc2luZy4gCisgICAgVXNpbmcgYW55IHN5bmNocm9ub3VzIGNvbW1h bmQgZXhlY3V0aW9uIGZ1bmN0aW9ucyBzdWNoIGFzIDxmdW5jdGlvbj5QUWZu PC9mdW5jdGlvbj4sCisgICAgPGZ1bmN0aW9uPlBRZXhlYzwvZnVuY3Rpb24+ IG9yIG9uZSBvZiBpdHMgc2libGluZyBmdW5jdGlvbnMgYXJlIGVycm9yIGNv bmRpdGlvbnMuCisgICAgRnVuY3Rpb25zIGFsbG93ZWQgaW4gYmF0Y2ggbW9k ZSBhcmUgZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWJhdGNo LXNlbmRpbmciPi4gCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRo ZSBjbGllbnQgdXNlcyBsaWJwcSdzIGFzeW5jaHJvbm91cyBxdWVyeSBmdW5j dGlvbnMgdG8gZGlzcGF0Y2ggd29yaywKKyAgICBtYXJraW5nIHRoZSBlbmQg b2YgZWFjaCBiYXRjaCB3aXRoIDxmdW5jdGlvbj5QUWJhdGNoU3luY1F1ZXVl PC9mdW5jdGlvbj4uCisgICAgQW5kIHRvIGdldCByZXN1bHRzLCBpdCB1c2Vz IDxmdW5jdGlvbj5QUWdldFJlc3VsdDwvZnVuY3Rpb24+IGFuZAorICAgIDxm dW5jdGlvbj5QUWJhdGNoUHJvY2Vzc1F1ZXVlPC9mdW5jdGlvbj4uIEl0IG1h eSBldmVudHVhbGx5IGV4aXQKKyAgICBiYXRjaCBtb2RlIHdpdGggPGZ1bmN0 aW9uPlBRZXhpdEJhdGNoTW9kZTwvZnVuY3Rpb24+IG9uY2UgYWxsIHJlc3Vs dHMgYXJlCisgICAgcHJvY2Vzc2VkLgorICAgPC9wYXJhPgorCisgICA8bm90 ZT4KKyAgICA8cGFyYT4KKyAgICAgSXQgaXMgYmVzdCB0byB1c2UgYmF0Y2gg bW9kZSB3aXRoIDxhcHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+IGlu CisgICAgIDxsaW5rIGxpbmtlbmQ9ImxpYnBxLXBxc2V0bm9uYmxvY2tpbmci Pm5vbi1ibG9ja2luZyBtb2RlPC9saW5rPi4gSWYgdXNlZCBpbgorICAgICBi bG9ja2luZyBtb2RlIGl0IGlzIHBvc3NpYmxlIGZvciBhIGNsaWVudC9zZXJ2 ZXIgZGVhZGxvY2sgdG8gb2NjdXIuIFRoZQorICAgICBjbGllbnQgd2lsbCBi bG9jayB0cnlpbmcgdG8gc2VuZCBxdWVyaWVzIHRvIHRoZSBzZXJ2ZXIsIGJ1 dCB0aGUgc2VydmVyIHdpbGwKKyAgICAgYmxvY2sgdHJ5aW5nIHRvIHNlbmQg cmVzdWx0cyBmcm9tIHF1ZXJpZXMgaXQgaGFzIGFscmVhZHkgcHJvY2Vzc2Vk IHRvIHRoZQorICAgICBjbGllbnQuIFRoaXMgb25seSBvY2N1cnMgd2hlbiB0 aGUgY2xpZW50IHNlbmRzIGVub3VnaCBxdWVyaWVzIHRvIGZpbGwgaXRzCisg ICAgIG91dHB1dCBidWZmZXIgYW5kIHRoZSBzZXJ2ZXIncyByZWNlaXZlIGJ1 ZmZlciBiZWZvcmUgc3dpdGNoaW5nIHRvCisgICAgIHByb2Nlc3NpbmcgaW5w dXQgZnJvbSB0aGUgc2VydmVyLCBidXQgaXQncyBoYXJkIHRvIHByZWRpY3Qg ZXhhY3RseSB3aGVuCisgICAgIHRoYXQnbGwgaGFwcGVuIHNvIGl0J3MgYmVz dCB0byBhbHdheXMgdXNlIG5vbi1ibG9ja2luZyBtb2RlLgorICAgIDwvcGFy YT4KKyAgIDwvbm90ZT4KKworICAgPHNlY3QzIGlkPSJsaWJwcS1iYXRjaC1z ZW5kaW5nIj4KKyAgICA8dGl0bGU+SXNzdWluZyBxdWVyaWVzPC90aXRsZT4K KworICAgIDxwYXJhPgorICAgICBBZnRlciBlbnRlcmluZyBiYXRjaCBtb2Rl IHRoZSBhcHBsaWNhdGlvbiBkaXNwYXRjaGVzIHJlcXVlc3RzCisgICAgIHVz aW5nIG5vcm1hbCBhc3luY2hyb25vdXMgPGFwcGxpY2F0aW9uPmxpYnBxPC9h cHBsaWNhdGlvbj4gZnVuY3Rpb25zIHN1Y2ggYXMgCisgICAgIDxmdW5jdGlv bj5QUXNlbmRRdWVyeVBhcmFtczwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+UFFz ZW5kUHJlcGFyZTwvZnVuY3Rpb24+LAorICAgICA8ZnVuY3Rpb24+UFFzZW5k UXVlcnlQcmVwYXJlZDwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+UFFzZW5kRGVz Y3JpYmVQb3J0YWw8L2Z1bmN0aW9uPiwKKyAgICAgPGZ1bmN0aW9uPlBRc2Vu ZERlc2NyaWJlUHJlcGFyZWQ8L2Z1bmN0aW9uPi4KKyAgICAgVGhlIGFzeW5j aHJvbm91cyByZXF1ZXN0cyBhcmUgZm9sbG93ZWQgYnkgYSA8bGluaworICAg ICBsaW5rZW5kPSJsaWJwcS1QUWJhdGNoU3luY1F1ZXVlIj48ZnVuY3Rpb24+ UFFiYXRjaFN5bmNRdWV1ZShjb25uKTwvZnVuY3Rpb24+PC9saW5rPiBjYWxs IHRvIG1hcmsKKyAgICAgdGhlIGVuZCBvZiB0aGUgYmF0Y2guIFRoZSBjbGll bnQgPGVtcGhhc2lzPmRvZXMgbm90PC9lbXBoYXNpcz4gbmVlZCB0byBjYWxs CisgICAgIDxmdW5jdGlvbj5QUWdldFJlc3VsdDwvZnVuY3Rpb24+IGltbWVk aWF0ZWx5IGFmdGVyIGRpc3BhdGNoaW5nIGVhY2gKKyAgICAgb3BlcmF0aW9u LiA8bGluayBsaW5rZW5kPSJsaWJwcS1iYXRjaC1yZXN1bHRzIj5SZXN1bHQg cHJvY2Vzc2luZzwvbGluaz4KKyAgICAgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5 LgorICAgIDwvcGFyYT4KKyAgICAKKyAgICA8cGFyYT4KKyAgICAgQmF0Y2hl ZCBvcGVyYXRpb25zIHdpbGwgYmUgZXhlY3V0ZWQgYnkgdGhlIHNlcnZlciBp biB0aGUgb3JkZXIgdGhlIGNsaWVudAorICAgICBzZW5kcyB0aGVtLiBUaGUg c2VydmVyIHdpbGwgc2VuZCB0aGUgcmVzdWx0cyBpbiB0aGUgb3JkZXIgdGhl IHN0YXRlbWVudHMKKyAgICAgZXhlY3V0ZWQuIFRoZSBzZXJ2ZXIgbWF5IGJl Z2luIGV4ZWN1dGluZyB0aGUgYmF0Y2ggYmVmb3JlIGFsbCBjb21tYW5kcwor ICAgICBpbiB0aGUgYmF0Y2ggYXJlIHF1ZXVlZCBhbmQgdGhlIGVuZCBvZiBi YXRjaCBjb21tYW5kIGlzIHNlbnQuIElmIGFueQorICAgICBzdGF0ZW1lbnQg ZW5jb3VudGVycyBhbiBlcnJvciB0aGUgc2VydmVyIGFib3J0cyB0aGUgY3Vy cmVudCB0cmFuc2FjdGlvbiBhbmQKKyAgICAgc2tpcHMgcHJvY2Vzc2luZyB0 aGUgcmVzdCBvZiB0aGUgYmF0Y2guIFF1ZXJ5IHByb2Nlc3NpbmcgcmVzdW1l cyBhZnRlciB0aGUKKyAgICAgZW5kIG9mIHRoZSBmYWlsZWQgYmF0Y2guCisg ICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIEl0J3MgZmluZSBmb3Ig b25lIG9wZXJhdGlvbiB0byBkZXBlbmQgb24gdGhlIHJlc3VsdHMgb2YgYQor ICAgICBwcmlvciBvbmUuIE9uZSBxdWVyeSBtYXkgZGVmaW5lIGEgdGFibGUg dGhhdCB0aGUgbmV4dCBxdWVyeSBpbiB0aGUgc2FtZQorICAgICBiYXRjaCB1 c2VzOyBzaW1pbGFybHksIGFuIGFwcGxpY2F0aW9uIG1heSBjcmVhdGUgYSBu YW1lZCBwcmVwYXJlZCBzdGF0ZW1lbnQKKyAgICAgdGhlbiBleGVjdXRlIGl0 IHdpdGggbGF0ZXIgc3RhdGVtZW50cyBpbiB0aGUgc2FtZSBiYXRjaC4KKyAg ICA8L3BhcmE+CisKKyAgIDwvc2VjdDM+CisKKyAgIDxzZWN0MyBpZD0ibGli cHEtYmF0Y2gtcmVzdWx0cyI+CisgICAgPHRpdGxlPlByb2Nlc3NpbmcgcmVz dWx0czwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGNsaWVudCA8 bGluayBsaW5rZW5kPSJsaWJwcS1iYXRjaC1pbnRlcmxlYXZlIj5pbnRlcmxl YXZlcyByZXN1bHQKKyAgICAgcHJvY2Vzc2luZzwvbGluaz4gd2l0aCBzZW5k aW5nIGJhdGNoIHF1ZXJpZXMsIG9yIGZvciBzbWFsbCBiYXRjaGVzIG1heQor ICAgICBwcm9jZXNzIGFsbCByZXN1bHRzIGFmdGVyIHNlbmRpbmcgdGhlIHdo b2xlIGJhdGNoLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBU byBnZXQgdGhlIHJlc3VsdCBvZiB0aGUgZmlyc3QgYmF0Y2ggZW50cnkgdGhl IGNsaWVudCBtdXN0IGNhbGwgPGxpbmsKKyAgICAgbGlua2VuZD0ibGlicHEt UFFiYXRjaFByb2Nlc3NRdWV1ZSI+PGZ1bmN0aW9uPlBRYmF0Y2hQcm9jZXNz UXVldWU8L2Z1bmN0aW9uPjwvbGluaz4uIEl0IG11c3QgdGhlbiBjYWxsCisg ICAgIDxmdW5jdGlvbj5QUWdldFJlc3VsdDwvZnVuY3Rpb24+IGFuZCBoYW5k bGUgdGhlIHJlc3VsdHMgdW50aWwKKyAgICAgPGZ1bmN0aW9uPlBRZ2V0UmVz dWx0PC9mdW5jdGlvbj4gcmV0dXJucyBudWxsLiBUaGUgcmVzdWx0IGZyb20g dGhlIG5leHQgYmF0Y2ggZW50cnkgCisgICAgIG1heSB0aGVuIGJlIHJldHJp ZXZlZCB1c2luZyA8ZnVuY3Rpb24+UFFiYXRjaFByb2Nlc3NRdWV1ZTwvZnVu Y3Rpb24+IGFuZCB0aGUgY3ljbGUgcmVwZWF0ZWQuICBUaGUKKyAgICAgYXBw bGljYXRpb24gaGFuZGxlcyBpbmRpdmlkdWFsIHN0YXRlbWVudCByZXN1bHRz IGFzIG5vcm1hbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAg VG8gZW50ZXIgc2luZ2xlLXJvdyBtb2RlLCBjYWxsIDxmdW5jdGlvbj5QUXNl dFNpbmdsZVJvd01vZGU8L2Z1bmN0aW9uPiBpbW1lZGlhdGVseSBhZnRlciBh CisgICAgIHN1Y2Nlc3NmdWwgY2FsbCBvZiA8ZnVuY3Rpb24+UFFiYXRjaFBy b2Nlc3NRdWV1ZTwvZnVuY3Rpb24+LiBUaGlzIG1vZGUgc2VsZWN0aW9uIGlz IGVmZmVjdGl2ZSAKKyAgICAgb25seSBmb3IgdGhlIHF1ZXJ5IGN1cnJlbnRs eSBiZWluZyBwcm9jZXNzZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRo ZSB1c2Ugb2YgPGZ1bmN0aW9uPlBRc2V0U2luZ2xlUm93TW9kZQorICAgICA8 L2Z1bmN0aW9uPiwgcmVmZXIgdG8gPHhyZWYgbGlua2VuZD0ibGlicHEtc2lu Z2xlLXJvdy1tb2RlIj4uCisgICAgIAorICAgIDwvcGFyYT4KKworICAgIDxw YXJhPgorICAgICA8ZnVuY3Rpb24+UFFnZXRSZXN1bHQ8L2Z1bmN0aW9uPiBi ZWhhdmVzIHRoZSBzYW1lIGFzIGZvciBub3JtYWwgYXN5bmNocm9ub3VzCisg ICAgIHByb2Nlc3NpbmcgZXhjZXB0IHRoYXQgaXQgbWF5IGNvbnRhaW4gdGhl IG5ldyA8dHlwZT5QR3Jlc3VsdDwvdHlwZT4gdHlwZXMKKyAgICAgPGxpdGVy YWw+UEdSRVNfQkFUQ0hfRU5EPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+UEdS RVNfQkFUQ0hfQUJPUlRFRDwvbGl0ZXJhbD4uCisgICAgIDxsaXRlcmFsPlBH UkVTX0JBVENIX0VORDwvbGl0ZXJhbD4gaXMgcmVwb3J0ZWQgZXhhY3RseSBv bmNlIGZvciBlYWNoCisgICAgIDxmdW5jdGlvbj5QUWJhdGNoU3luY1F1ZXVl PC9mdW5jdGlvbj4gY2FsbCBhdCB0aGUgY29ycmVzcG9uZGluZyBwb2ludCBp bgorICAgICB0aGUgcmVzdWx0IHN0cmVhbSBhbmQgYXQgbm8gb3RoZXIgdGlt ZS4gPGxpdGVyYWw+UEdSRVNfQkFUQ0hfQUJPUlRFRDwvbGl0ZXJhbD4KKyAg ICAgaXMgZW1pdHRlZCBkdXJpbmcgZXJyb3IgaGFuZGxpbmc7IHNlZSA8bGlu ayBsaW5rZW5kPSJsaWJwcS1iYXRjaC1lcnJvcnMiPgorICAgICBlcnJvciBo YW5kbGluZzwvbGluaz4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+Cisg ICAgIDxmdW5jdGlvbj5QUWlzQnVzeTwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+ UFFjb25zdW1lSW5wdXQ8L2Z1bmN0aW9uPiwgZXRjCisgICAgIG9wZXJhdGUg YXMgbm9ybWFsIHdoZW4gcHJvY2Vzc2luZyBiYXRjaCByZXN1bHRzLgorICAg IDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICA8YXBwbGljYXRpb24+bGli cHE8L2FwcGxpY2F0aW9uPiBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1h dGlvbiB0byB0aGUKKyAgICAgYXBwbGljYXRpb24gYWJvdXQgdGhlIHF1ZXJ5 IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuIFRoZSBhcHBsaWNhdGlvbgor ICAgICBtdXN0IGtlZXAgdHJhY2sgb2YgdGhlIG9yZGVyIGluIHdoaWNoIGl0 IHNlbnQgcXVlcmllcyBhbmQgdGhlIGV4cGVjdGVkCisgICAgIHJlc3VsdHMu IEFwcGxpY2F0aW9ucyB3aWxsIHR5cGljYWxseSB1c2UgYSBzdGF0ZSBtYWNo aW5lIG9yIGEgRklGTyBxdWV1ZQorICAgICBmb3IgdGhpcy4KKyAgICA8L3Bh cmE+CisKKyAgIDwvc2VjdDM+CisKKyAgIDxzZWN0MyBpZD0ibGlicHEtYmF0 Y2gtZXJyb3JzIj4KKyAgICA8dGl0bGU+RXJyb3IgaGFuZGxpbmc8L3RpdGxl PgorCisgICAgPHBhcmE+CisgICAgIFdoZW4gYSBxdWVyeSBpbiBhIGJhdGNo IGNhdXNlcyBhbiA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gdGhlIHNlcnZl cgorICAgICBza2lwcyBwcm9jZXNzaW5nIGFsbCBzdWJzZXF1ZW50IG1lc3Nh Z2VzIHVudGlsIHRoZSBlbmQtb2YtYmF0Y2ggbWVzc2FnZS4KKyAgICAgVGhl IG9wZW4gdHJhbnNhY3Rpb24gaXMgYWJvcnRlZC4KKyAgICA8L3BhcmE+CisK KyAgICA8cGFyYT4KKyAgICAgRnJvbSB0aGUgY2xpZW50IHBlcnNwZWN0aXZl LCBhZnRlciB0aGUgY2xpZW50IGdldHMgYQorICAgICA8bGl0ZXJhbD5QR1JF U19GQVRBTF9FUlJPUjwvbGl0ZXJhbD4gcmV0dXJuIGZyb20KKyAgICAgPGZ1 bmN0aW9uPlBRcmVzdWx0U3RhdHVzPC9mdW5jdGlvbj4gdGhlIGJhdGNoIGlz IGZsYWdnZWQgYXMgYWJvcnRlZC4KKyAgICAgPGFwcGxpY2F0aW9uPmxpYnBx PC9hcHBsaWNhdGlvbj4gd2lsbCByZXBvcnQKKyAgICAgPGxpdGVyYWw+UEdS RVNfQkFUQ0hfQUJPUlRFRDwvbGl0ZXJhbD4gcmVzdWx0IGZvciBlYWNoIHJl bWFpbmluZyBxdWV1ZWQKKyAgICAgb3BlcmF0aW9uIGluIGFuIGFib3J0ZWQg YmF0Y2guIFRoZSByZXN1bHQgZm9yCisgICAgIDxmdW5jdGlvbj5QUWJhdGNo U3luY1F1ZXVlPC9mdW5jdGlvbj4gaXMgcmVwb3J0ZWQgYXMKKyAgICAgPGxp dGVyYWw+UEdSRVNfQkFUQ0hfRU5EPC9saXRlcmFsPiB0byBzaWduYWwgdGhl IGVuZCBvZiB0aGUgYWJvcnRlZCBiYXRjaAorICAgICBhbmQgcmVzdW1wdGlv biBvZiBub3JtYWwgcmVzdWx0IHByb2Nlc3NpbmcuCisgICAgPC9wYXJhPgor CisgICAgPHBhcmE+CisgICAgIFRoZSBjbGllbnQgPGVtcGhhc2lzPm11c3Q8 L2VtcGhhc2lzPiBwcm9jZXNzIHJlc3VsdHMgd2l0aAorICAgICA8ZnVuY3Rp b24+UFFiYXRjaFByb2Nlc3NRdWV1ZSguLi4pPC9mdW5jdGlvbj4gYW5kCisg ICAgIDxmdW5jdGlvbj5QUWdldFJlc3VsdDwvZnVuY3Rpb24+IGR1cmluZyBl cnJvciByZWNvdmVyeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAg ICAgSWYgdGhlIGJhdGNoIHVzZWQgYW4gaW1wbGljaXQgdHJhbnNhY3Rpb24g dGhlbiBvcGVyYXRpb25zIHRoYXQgaGF2ZQorICAgICBhbHJlYWR5IGV4ZWN1 dGVkIGFyZSByb2xsZWQgYmFjayBhbmQgb3BlcmF0aW9ucyB0aGF0IHdlcmUg cXVldWVkIGZvciBhZnRlcgorICAgICB0aGUgZmFpbGVkIG9wZXJhdGlvbiBh cmUgc2tpcHBlZCBlbnRpcmVseS4gVGhlIHNhbWUgYmVoYXZpb3VyIGhvbGRz IGlmIHRoZQorICAgICBiYXRjaCBzdGFydHMgYW5kIGNvbW1pdHMgYSBzaW5n bGUgZXhwbGljaXQgdHJhbnNhY3Rpb24gKGkuZS4gdGhlIGZpcnN0CisgICAg IHN0YXRlbWVudCBpcyA8bGl0ZXJhbD5CRUdJTjwvbGl0ZXJhbD4gYW5kIHRo ZSBsYXN0IGlzCisgICAgIDxsaXRlcmFsPkNPTU1JVDwvbGl0ZXJhbD4pIGV4 Y2VwdCB0aGF0IHRoZSBzZXNzaW9uIHJlbWFpbnMgaW4gYW4gYWJvcnRlZAor ICAgICB0cmFuc2FjdGlvbiBzdGF0ZSBhdCB0aGUgZW5kIG9mIHRoZSBiYXRj aC4gSWYgYSBiYXRjaCBjb250YWlucyA8ZW1waGFzaXM+CisgICAgIG11bHRp cGxlIGV4cGxpY2l0IHRyYW5zYWN0aW9uczwvZW1waGFzaXM+LCBhbGwgdHJh bnNhY3Rpb25zIHRoYXQgY29tbWl0dGVkCisgICAgIHByaW9yIHRvIHRoZSBl cnJvciByZW1haW4gY29tbWl0dGVkLCB0aGUgY3VycmVudGx5IGluLXByb2dy ZXNzIHRyYW5zYWN0aW9uCisgICAgIGlzIGFib3J0ZWQgYW5kIGFsbCBzdWJz ZXF1ZW50IG9wZXJhdGlvbnMgaW4gdGhlIGN1cnJlbnQgYW5kIGFsbCBsYXRl cgorICAgICB0cmFuc2FjdGlvbnMgaW4gdGhlIHNhbWUgYmF0Y2ggYXJlIHNr aXBwZWQgY29tcGxldGVseS4KKyAgICA8L3BhcmE+CisKKyAgICA8bm90ZT4K KyAgICAgPHBhcmE+CisgICAgICBUaGUgY2xpZW50IG11c3Qgbm90IGFzc3Vt ZSB0aGF0IHdvcmsgaXMgY29tbWl0dGVkIHdoZW4gaXQKKyAgICAgIDxlbXBo YXNpcz5zZW5kczwvZW1waGFzaXM+IGEgPGxpdGVyYWw+Q09NTUlUPC9saXRl cmFsPiwgb25seSB3aGVuIHRoZQorICAgICAgY29ycmVzcG9uZGluZyByZXN1 bHQgaXMgcmVjZWl2ZWQgdG8gY29uZmlybSB0aGUgY29tbWl0IGlzIGNvbXBs ZXRlLgorICAgICAgQmVjYXVzZSBlcnJvcnMgYXJyaXZlIGFzeW5jaHJvbm91 c2x5IHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBiZSBhYmxlIHRvCisgICAg ICByZXN0YXJ0IGZyb20gdGhlIGxhc3QgPGVtcGhhc2lzPnJlY2VpdmVkPC9l bXBoYXNpcz4gY29tbWl0dGVkIGNoYW5nZSBhbmQKKyAgICAgIHJlc2VuZCB3 b3JrIGRvbmUgYWZ0ZXIgdGhhdCBwb2ludCBpZiBzb21ldGhpbmcgZ29lcyB3 cm9uZy4KKyAgICAgPC9wYXJhPgorICAgIDwvbm90ZT4KKworICAgPC9zZWN0 Mz4KKworICAgPHNlY3QzIGlkPSJsaWJwcS1iYXRjaC1pbnRlcmxlYXZlIj4K KyAgICA8dGl0bGU+SW50ZXJsZWF2aW5nIHJlc3VsdCBwcm9jZXNzaW5nIGFu ZCBxdWVyeSBkaXNwYXRjaDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAg VG8gYXZvaWQgZGVhZGxvY2tzIG9uIGxhcmdlIGJhdGNoZXMgdGhlIGNsaWVu dCBzaG91bGQgYmUgc3RydWN0dXJlZCBhcm91bmQKKyAgICAgYSBub25ibG9j a2luZyBJL08gbG9vcCB1c2luZyBhIGZ1bmN0aW9uIGxpa2UgPGZ1bmN0aW9u PnNlbGVjdDwvZnVuY3Rpb24+LAorICAgICA8ZnVuY3Rpb24+cG9sbDwvZnVu Y3Rpb24+LCA8ZnVuY3Rpb24+ZXBvbGw8L2Z1bmN0aW9uPiwKKyAgICAgPGZ1 bmN0aW9uPldhaXRGb3JNdWx0aXBsZU9iamVjdEV4PC9mdW5jdGlvbj4sIGV0 Yy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGNsaWVu dCBhcHBsaWNhdGlvbiBzaG91bGQgZ2VuZXJhbGx5IG1haW50YWluIGEgcXVl dWUgb2Ygd29yayBzdGlsbCB0bworICAgICBiZSBkaXNwYXRjaGVkIGFuZCBh IHF1ZXVlIG9mIHdvcmsgdGhhdCBoYXMgYmVlbiBkaXNwYXRjaGVkIGJ1dCBu b3QgeWV0IGhhZAorICAgICBpdHMgcmVzdWx0cyBwcm9jZXNzZWQuIFdoZW4g dGhlIHNvY2tldCBpcyB3cml0YWJsZSBpdCBzaG91bGQgZGlzcGF0Y2ggbW9y ZQorICAgICB3b3JrLiBXaGVuIHRoZSBzb2NrZXQgaXMgcmVhZGFibGUgaXQg c2hvdWxkIHJlYWQgcmVzdWx0cyBhbmQgcHJvY2VzcyB0aGVtLAorICAgICBt YXRjaGluZyB0aGVtIHVwIHRvIHRoZSBuZXh0IGVudHJ5IGluIGl0cyBleHBl Y3RlZCByZXN1bHRzIHF1ZXVlLiBCYXRjaGVzCisgICAgIHNob3VsZCBiZSBz Y29wZWQgdG8gbG9naWNhbCB1bml0cyBvZiB3b3JrLCB1c3VhbGx5IChidXQg bm90IGFsd2F5cykgb25lCisgICAgIHRyYW5zYWN0aW9uIHBlciBiYXRjaC4g VGhlcmUncyBubyBuZWVkIHRvIGV4aXQgYmF0Y2ggbW9kZSBhbmQgcmUtZW50 ZXIgaXQKKyAgICAgYmV0d2VlbiBiYXRjaGVzIG9yIHRvIHdhaXQgZm9yIG9u ZSBiYXRjaCB0byBmaW5pc2ggYmVmb3JlIHNlbmRpbmcgdGhlIG5leHQuCisg ICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIEFuIGV4YW1wbGUgdXNp bmcgPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4gYW5kIGEgc2ltcGxl IHN0YXRlIG1hY2hpbmUKKyAgICAgdG8gdHJhY2sgc2VudCBhbmQgcmVjZWl2 ZWQgd29yayBpcyBpbgorICAgICA8ZmlsZW5hbWU+c3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2xpYnBxL3Rlc3RsaWJwcWJhdGNoLmM8L2ZpbGVuYW1lPiBpbiB0 aGUgUG9zdGdyZVNRTAorICAgICBzb3VyY2UgZGlzdHJpYnV0aW9uLgorICAg IDwvcGFyYT4KKworICAgPC9zZWN0Mz4KKworICAgPHNlY3QzIGlkPSJsaWJw cS1iYXRjaC1lbmQiPgorICAgIDx0aXRsZT5FbmRpbmcgYmF0Y2ggbW9kZTwv dGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgT25jZSBhbGwgZGlzcGF0Y2hl ZCBjb21tYW5kcyBoYXZlIGhhZCB0aGVpciByZXN1bHRzIHByb2Nlc3NlZCBh bmQgdGhlIGVuZCBiYXRjaAorICAgICByZXN1bHQgaGFzIGJlZW4gY29uc3Vt ZWQgdGhlIGFwcGxpY2F0aW9uIG1heSByZXR1cm4gdG8gbm9uLWJhdGNoZWQg bW9kZSB3aXRoCisgICAgIDxsaW5rIGxpbmtlbmQ9ImxpYnBxLVBRZXhpdEJh dGNoTW9kZSI+PGZ1bmN0aW9uPlBRZXhpdEJhdGNoTW9kZShjb25uKTwvZnVu Y3Rpb24+PC9saW5rPi4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QzPgorCisg IDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJsaWJwcS1mdW5jcy1iYXRjaCI+ CisgICA8dGl0bGU+RnVuY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBiYXRjaCBt b2RlPC90aXRsZT4KKworICAgPHZhcmlhYmxlbGlzdD4KKworICAgIDx2YXJs aXN0ZW50cnkgaWQ9ImxpYnBxLVBRYmF0Y2hTdGF0dXMiPgorICAgICA8dGVy bT4KKyAgICAgIDxmdW5jdGlvbj5QUWJhdGNoU3RhdHVzPC9mdW5jdGlvbj4K KyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+UFFiYXRjaFN0 YXR1czwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICA8L3Rl cm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICBS ZXR1cm5zIGN1cnJlbnQgYmF0Y2ggbW9kZSBzdGF0dXMgb2YgdGhlIDxhcHBs aWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+IGNvbm5lY3Rpb24uCis8c3lu b3BzaXM+CitpbnQgUFFiYXRjaFN0YXR1cyhQR2Nvbm4gKmNvbm4pOworPC9z eW5vcHNpcz4KKyAgICAgIDwvcGFyYT4JCQkKKyAgICAgIDx2YXJpYWJsZWxp c3Q+CisgICAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWJhdGNo U3RhdHVzLTEiPgorICAgICAgICAgICA8dGVybT4KKyAgICAgICAgICAgICA8 bGl0ZXJhbD5QUUJBVENIX01PREVfT048L2xpdGVyYWw+CisgICAgICAgICAg IDwvdGVybT4KKyAKKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAg IDxwYXJhPgorICAgICAgICAgICAgIFJldHVybnMgPGxpdGVyYWw+UFFCQVRD SF9NT0RFX09OPC9saXRlcmFsPiBpZiA8YXBwbGljYXRpb24+bGlicHE8L2Fw cGxpY2F0aW9uPiBjb25uZWN0aW9uIGlzIGluIDxsaW5rCisgICAgICAgICAg ICAgbGlua2VuZD0ibGlicHEtYmF0Y2gtbW9kZSI+YmF0Y2ggbW9kZTwvbGlu az4uCisgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVt PgorICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICA8dmFybGlz dGVudHJ5IGlkPSJsaWJwcS1QUWJhdGNoU3RhdHVzLTIiPgorICAgICAgICAg IDx0ZXJtPgorICAgICAgICAgICAgPGxpdGVyYWw+UFFCQVRDSF9NT0RFX09G RjwvbGl0ZXJhbD4KKyAgICAgICAgICA8L3Rlcm0+CisgIAorICAgICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFJl dHVybnMgPGxpdGVyYWw+UFFCQVRDSF9NT0RFX09GRjwvbGl0ZXJhbD4gaWYg PGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNhdGlvbj4gY29ubmVjdGlvbiBp cyBub3QgaW4gPGxpbmsKKyAgICAgICAgICAgIGxpbmtlbmQ9ImxpYnBxLWJh dGNoLW1vZGUiPmJhdGNoIG1vZGU8L2xpbms+LgorICAgICAgICAgIDwvcGFy YT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWJh dGNoU3RhdHVzLTMiPgorICAgICAgICAgIDx0ZXJtPgorICAgICAgICAgICAg PGxpdGVyYWw+UFFCQVRDSF9NT0RFX0FCT1JURUQ8L2xpdGVyYWw+CisgICAg ICAgICAgPC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFJldHVybnMgPGxpdGVyYWw+ UFFCQVRDSF9NT0RFX0FCT1JURUQ8L2xpdGVyYWw+IGlmIDxhcHBsaWNhdGlv bj5saWJwcTwvYXBwbGljYXRpb24+IGNvbm5lY3Rpb24gaXMgaW4gCisgICAg ICAgICAgICAgICAgYWJvcnRlZCBzdGF0dXMuIFRoZSBhYm9ydGVkIGZsYWcg aXMgY2xlYXJlZCBhcyBzb29uIGFzIHRoZSByZXN1bHQgb2YgdGhlIAorICAg ICAgICAgICAgICAgIDxmdW5jdGlvbj5QUWJhdGNoU3luY1F1ZXVlPC9mdW5j dGlvbj4gYXQgdGhlIGVuZCBvZiB0aGUgYWJvcnRlZCBiYXRjaCBpcyAKKyAg ICAgICAgICAgICAgICBwcm9jZXNzZWQuIENsaWVudHMgZG9uJ3QgdXN1YWxs eSBuZWVkIHRoaXMgZnVuY3Rpb24gdG8gdmVyaWZ5IGFib3J0ZWQgc3RhdHVz IAorICAgICAgICAgICAgICAgIGFzIHRoZXkgY2FuIHRlbGwgdGhhdCB0aGUg YmF0Y2ggaXMgYWJvcnRlZCBmcm9tIDxsaXRlcmFsPlBHUkVTX0JBVENIX0FC T1JURUQ8L2xpdGVyYWw+IAorICAgICAgICAgICAgICAgIHJlc3VsdCBjb2Rl cy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVt PgorICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgCisgICAgICAgPC92YXJp YWJsZWxpc3Q+CisKKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRZW50ZXJC YXRjaE1vZGUiPgorICAgICA8dGVybT4KKyAgICAgIDxmdW5jdGlvbj5QUWVu dGVyQmF0Y2hNb2RlPC9mdW5jdGlvbj4KKyAgICAgIDxpbmRleHRlcm0+Cisg ICAgICAgPHByaW1hcnk+UFFlbnRlckJhdGNoTW9kZTwvcHJpbWFyeT4KKyAg ICAgIDwvaW5kZXh0ZXJtPgorICAgICA8L3Rlcm0+CisKKyAgICAgPGxpc3Rp dGVtPgorICAgICAgPHBhcmE+CisgICAgICBDYXVzZXMgYSBjb25uZWN0aW9u IHRvIGVudGVyIGJhdGNoIG1vZGUgaWYgaXQgaXMgY3VycmVudGx5IGlkbGUg b3IKKyAgICAgIGFscmVhZHkgaW4gYmF0Y2ggbW9kZS4KKworPHN5bm9wc2lz PgoraW50IFBRZW50ZXJCYXRjaE1vZGUoUEdjb25uICpjb25uKTsKKzwvc3lu b3BzaXM+CisKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBSZXR1cm5zIDEgZm9yIHN1Y2Nlc3MuIFJldHVybnMgMCBhbmQg aGFzIG5vIAorICAgICAgICAgIGVmZmVjdCBpZiB0aGUgY29ubmVjdGlvbiBp cyBub3QgY3VycmVudGx5IGlkbGUsIGkuZS4gaXQgaGFzIGEgcmVzdWx0IAor ICAgICAgICAgIHJlYWR5LCBpcyB3YWl0aW5nIGZvciBtb3JlIGlucHV0IGZy b20gdGhlIHNlcnZlciwgZXRjLiBUaGlzIGZ1bmN0aW9uIAorICAgICAgICAg IGRvZXMgbm90IGFjdHVhbGx5IHNlbmQgYW55dGhpbmcgdG8gdGhlIHNlcnZl ciwgaXQganVzdCBjaGFuZ2VzIHRoZSAKKyAgICAgICAgICA8YXBwbGljYXRp b24+bGlicHE8L2FwcGxpY2F0aW9uPiBjb25uZWN0aW9uIHN0YXRlLgorCisg ICAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRZXhp dEJhdGNoTW9kZSI+CisgICAgIDx0ZXJtPgorICAgICAgPGZ1bmN0aW9uPlBR ZXhpdEJhdGNoTW9kZTwvZnVuY3Rpb24+CisgICAgICA8aW5kZXh0ZXJtPgor ICAgICAgIDxwcmltYXJ5PlBRZXhpdEJhdGNoTW9kZTwvcHJpbWFyeT4KKyAg ICAgIDwvaW5kZXh0ZXJtPgorICAgICA8L3Rlcm0+CisKKyAgICAgPGxpc3Rp dGVtPgorICAgICAgPHBhcmE+CisgICAgICBDYXVzZXMgYSBjb25uZWN0aW9u IHRvIGV4aXQgYmF0Y2ggbW9kZSBpZiBpdCBpcyBjdXJyZW50bHkgaW4gYmF0 Y2ggbW9kZQorICAgICAgd2l0aCBhbiBlbXB0eSBxdWV1ZSBhbmQgbm8gcGVu ZGluZyByZXN1bHRzLgorPHN5bm9wc2lzPgoraW50IFBRZXhpdEJhdGNoTW9k ZShQR2Nvbm4gKmNvbm4pOworPC9zeW5vcHNpcz4KKyAgICAgICAgPC9wYXJh PgorICAgICAgICA8cGFyYT5SZXR1cm5zIDEgZm9yIHN1Y2Nlc3MuCisgICAg ICBSZXR1cm5zIDEgYW5kIHRha2VzIG5vIGFjdGlvbiBpZiBub3QgaW4gYmF0 Y2ggbW9kZS4gSWYgdGhlIGNvbm5lY3Rpb24gaGFzCisgICAgICBwZW5kaW5n IGJhdGNoIGl0ZW1zIGluIHRoZSBxdWV1ZSBmb3IgcmVhZGluZyB3aXRoCisg ICAgICA8ZnVuY3Rpb24+UFFiYXRjaFByb2Nlc3NRdWV1ZTwvZnVuY3Rpb24+ LCB0aGUgY3VycmVudCBzdGF0ZW1lbnQgaXNuJ3QgZmluaXNoZWQKKyAgICAg IHByb2Nlc3Npbmcgb3IgdGhlcmUgYXJlIHJlc3VsdHMgcGVuZGluZyBmb3Ig Y29sbGVjdGlvbiB3aXRoCisgICAgICA8ZnVuY3Rpb24+UFFnZXRSZXN1bHQ8 L2Z1bmN0aW9uPiwgcmV0dXJucyAwIGFuZCBkb2VzIG5vdGhpbmcuCisKKyAg ICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRYmF0Y2hT eW5jUXVldWUiPgorICAgICA8dGVybT4KKyAgICAgIDxmdW5jdGlvbj5QUWJh dGNoU3luY1F1ZXVlPC9mdW5jdGlvbj4KKyAgICAgIDxpbmRleHRlcm0+Cisg ICAgICAgPHByaW1hcnk+UFFiYXRjaFN5bmNRdWV1ZTwvcHJpbWFyeT4KKyAg ICAgIDwvaW5kZXh0ZXJtPgorICAgICA8L3Rlcm0+CisKKyAgICAgPGxpc3Rp dGVtPgorICAgICAgPHBhcmE+CisgICAgICBEZWxpbWl0cyB0aGUgZW5kIG9m IGEgc2V0IG9mIGEgYmF0Y2hlZCBjb21tYW5kcyBieSBzZW5kaW5nIGEgPGxp bmsKKyAgICAgIGxpbmtlbmQ9InByb3RvY29sLWZsb3ctZXh0LXF1ZXJ5Ij5z eW5jIG1lc3NhZ2U8L2xpbms+IGFuZCBmbHVzaGluZworICAgICAgdGhlIHNl bmQgYnVmZmVyLiBUaGUgZW5kIG9mIGEgYmF0Y2ggc2VydmVzIGFzIAorICAg ICAgdGhlIGRlbGltaXRlciBvZiBhbiBpbXBsaWNpdCB0cmFuc2FjdGlvbiBh bmQKKyAgICAgIGFuIGVycm9yIHJlY292ZXJ5IHBvaW50OyBzZWUgPGxpbmsg bGlua2VuZD0ibGlicHEtYmF0Y2gtZXJyb3JzIj4KKyAgICAgIGVycm9yIGhh bmRsaW5nPC9saW5rPi4KKworPHN5bm9wc2lzPgoraW50IFBRYmF0Y2hTeW5j UXVldWUoUEdjb25uICpjb25uKTsKKzwvc3lub3BzaXM+CisgICAgICAgIDwv cGFyYT4KKyAgICAgICAgPHBhcmE+UmV0dXJucyAxIGZvciBzdWNjZXNzLiBS ZXR1cm5zIDAgaWYgdGhlIGNvbm5lY3Rpb24gaXMgbm90IGluIGJhdGNoIG1v ZGUKKyAgICAgICAgICAgICAgb3Igc2VuZGluZyBhIDxsaW5rIGxpbmtlbmQ9 InByb3RvY29sLWZsb3ctZXh0LXF1ZXJ5Ij5zeW5jIG1lc3NhZ2U8L2xpbms+ IGlzIGZhaWxlZC4KKworICAgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0 ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5 IGlkPSJsaWJwcS1QUWJhdGNoUHJvY2Vzc1F1ZXVlIj4KKyAgICAgPHRlcm0+ CisgICAgICA8ZnVuY3Rpb24+UFFiYXRjaFByb2Nlc3NRdWV1ZTwvZnVuY3Rp b24+CisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5PlBRYmF0 Y2hQcm9jZXNzUXVldWU8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4K KyAgICAgPC90ZXJtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJh PgorICAgICAgQ2F1c2VzIHRoZSBjb25uZWN0aW9uIHRvIHN0YXJ0IHByb2Nl c3NpbmcgdGhlIG5leHQgcXVldWVkIHF1ZXJ5J3MKKyAgICAgIHJlc3VsdHMu IAorICAgICA8L3BhcmE+CisKKzxzeW5vcHNpcz4KK2ludCBQUWJhdGNoUHJv Y2Vzc1F1ZXVlKFBHY29ubiAqY29ubik7Cis8L3N5bm9wc2lzPgorCisgICAg IDxwYXJhPgorICAgICAgUmV0dXJucyAxIGlmIGEgbmV3IHF1ZXJ5IHdhcyBw b3BwZWQgZnJvbSB0aGUgcmVzdWx0IHF1ZXVlCisgICAgICBmb3IgcHJvY2Vz c2luZy4gUmV0dXJucyAwIGFuZCBoYXMgbm8gZWZmZWN0IGlmIHRoZXJlIGFy ZSBubyBxdWVyeSByZXN1bHRzCisgICAgICBwZW5kaW5nLCBiYXRjaCBtb2Rl IGlzIG5vdCBlbmFibGVkLCBvciBpZiB0aGUgcXVlcnkgY3VycmVudGx5IHBy b2Nlc3NlZAorICAgICAgaXMgaW5jb21wbGV0ZSBvciBzdGlsbCBoYXMgcGVu ZGluZyByZXN1bHRzLiBSZWFzb24gZm9yIHRoZXNlIGZhaWx1cmVzIGNhbiAK KyAgICAgIGJlIHZlcmlmaWVkIHdpdGggPGZ1bmN0aW9uPlBRYmF0Y2hRdWV1 ZUNvdW50PC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5QUWJhdGNoU3RhdHVzCisg ICAgICA8L2Z1bmN0aW9uPiBhbmQgPGZ1bmN0aW9uPlBRZ2V0UmVzdWx0PC9m dW5jdGlvbj4uCisgICAgICBTZWUgPGxpbmsgbGlua2VuZD0ibGlicHEtYmF0 Y2gtcmVzdWx0cyI+cHJvY2Vzc2luZyByZXN1bHRzPC9saW5rPi4KKworICAg ICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVu dHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFiYXRjaFF1 ZXVlQ291bnQiPgorICAgICA8dGVybT4KKyAgICAgIDxmdW5jdGlvbj5QUWJh dGNoUXVldWVDb3VudDwvZnVuY3Rpb24+CisgICAgICA8aW5kZXh0ZXJtPgor ICAgICAgIDxwcmltYXJ5PlBRYmF0Y2hRdWV1ZUNvdW50PC9wcmltYXJ5Pgor ICAgICAgPC9pbmRleHRlcm0+CisgICAgIDwvdGVybT4KKworICAgICA8bGlz dGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgIFJldHVybnMgdGhlIG51bWJl ciBvZiBxdWVyaWVzIHN0aWxsIGluIHRoZSBxdWV1ZSBmb3IgdGhpcyBiYXRj aCwgbm90CisgICAgICBpbmNsdWRpbmcgYW55IHF1ZXJ5IHRoYXQncyBjdXJy ZW50bHkgaGF2aW5nIHJlc3VsdHMgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAg VGhpcyBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIDxmdW5jdGlvbj5QUWJhdGNo UHJvY2Vzc1F1ZXVlPC9mdW5jdGlvbj4gaGFzIHRvIGJlCisgICAgICBjYWxs ZWQgYmVmb3JlIHRoZSBxdWVyeSBxdWV1ZSBpcyBlbXB0eSBhZ2Fpbi4KKwor PHN5bm9wc2lzPgoraW50IFBRYmF0Y2hRdWV1ZUNvdW50KFBHY29ubiAqY29u bik7Cis8L3N5bm9wc2lzPgorCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlz dGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKworICAgPC92YXJpYWJs ZWxpc3Q+CisKKyAgPC9zZWN0Mj4KKworIDwvc2VjdDE+CisKICA8c2VjdDEg aWQ9ImxpYnBxLXNpbmdsZS1yb3ctbW9kZSI+CiAgIDx0aXRsZT5SZXRyaWV2 aW5nIFF1ZXJ5IFJlc3VsdHMgUm93LUJ5LVJvdzwvdGl0bGU+CiAKQEAgLTQ2 OTYsNiArNTIxNiwxNCBAQCBpbnQgUFFmbHVzaChQR2Nvbm4gKmNvbm4pOwog ICAgRWFjaCBvYmplY3Qgc2hvdWxkIGJlIGZyZWVkIHdpdGggPGZ1bmN0aW9u PlBRY2xlYXI8L2Z1bmN0aW9uPiBhcyB1c3VhbC4KICAgPC9wYXJhPgogCisg IDxub3RlPgorICAgIDxwYXJhPgorICAgICBPbiB1c2luZyBiYXRjaCBtb2Rl LCBjYWxsIDxmdW5jdGlvbj5QUXNldFNpbmdsZVJvd01vZGU8L2Z1bmN0aW9u PgorICAgICBpbW1lZGlhdGVseSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBv ZiA8ZnVuY3Rpb24+UFFiYXRjaFByb2Nlc3NRdWV1ZTwvZnVuY3Rpb24+Cisg ICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1iYXRjaC1tb2RlIj4gZm9y IG1vcmUgaW5mb3JtYXRpb24uCisgICAgPC9wYXJhPgorICAgPC9ub3RlPgor CiAgIDxwYXJhPgogICAgPHZhcmlhYmxlbGlzdD4KICAgICA8dmFybGlzdGVu dHJ5IGlkPSJsaWJwcS1wcXNldHNpbmdsZXJvd21vZGUiPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2xvYmouc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2Jq LnNnbWwKaW5kZXggNzc1N2UxZS4uZGI4NTIzZCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2xvYmouc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9iai5z Z21sCkBAIC0xMzAsNiArMTMwLDEwIEBACiAgICAgPGFwcGxpY2F0aW9uPmxp YnBxPC9hcHBsaWNhdGlvbj4gbGlicmFyeS4KICAgIDwvcGFyYT4KIAorICAg PHBhcmE+CisgICAgQ2xpZW50IGFwcGxpY2F0aW9ucyBjYW5ub3QgdXNlIHRo ZXNlIGZ1bmN0aW9ucyB3aGlsZSBsaWJwcSBjb25uZWN0aW9uIGlzIGluIGJh dGNoIG1vZGUuCisgICA8L3BhcmE+CisKICAgIDxzZWN0MiBpZD0ibG8tY3Jl YXRlIj4KICAgICA8dGl0bGU+Q3JlYXRpbmcgYSBMYXJnZSBPYmplY3Q8L3Rp dGxlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s aWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNl aXZlci5jCmluZGV4IGY2ZmEwZTQuLmQ0ZWU1NzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3 YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xp YnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC05MzYsNiAr OTM2LDkgQEAgbGlicHFyY3ZfZXhlYyhXYWxSZWNlaXZlckNvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJd2FscmVzLT5zdGF0dXMgPSBXQUxS Q1ZfRVJST1I7CiAJCQl3YWxyZXMtPmVyciA9IHBjaG9tcChQUWVycm9yTWVz c2FnZShjb25uLT5zdHJlYW1Db25uKSk7CiAJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJLyogVGhpcyBpcyBqdXN0IHRvIGtlZXAgY29tcGlsZXIgcXVpZXQg Ki8KKwkJCWJyZWFrOwogCX0KIAogCVBRY2xlYXIocGdyZXMpOwpkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dAppbmRleCBkNmEzOGQwLi40 OTg3MWY1IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBv cnRzLnR4dAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4 dApAQCAtMTcyLDMgKzE3Miw5IEBAIFBRc3NsQXR0cmlidXRlICAgICAgICAg ICAgMTY5CiBQUXNldEVycm9yQ29udGV4dFZpc2liaWxpdHkgMTcwCiBQUXJl c3VsdFZlcmJvc2VFcnJvck1lc3NhZ2UgMTcxCiBQUWVuY3J5cHRQYXNzd29y ZENvbm4gICAgIDE3MgorUFFiYXRjaFF1ZXVlQ291bnQJICAxNzMKK1BRZW50 ZXJCYXRjaE1vZGUJICAxNzQKK1BRZXhpdEJhdGNoTW9kZSAgICAgICAgICAg MTc1CitQUWJhdGNoU3luY1F1ZXVlCSAgMTc2CitQUWJhdGNoUHJvY2Vzc1F1 ZXVlCSAgMTc3CitQUWJhdGNoU3RhdHVzCQkgIDE3OApkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCmluZGV4IDAyZWM4ZjAuLmE5MmY0 YmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5l Y3QuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMK QEAgLTM0ODMsNiArMzQ4MywyNSBAQCBzZW5kVGVybWluYXRlQ29ubihQR2Nv bm4gKmNvbm4pCiB9CiAKIC8qCisgKiBQUWZyZWVDb21tYW5kUXVldWUKKyAq IEZyZWUgYWxsIHRoZSBlbnRyaWVzIG9mIFBHY29tbWFuZFF1ZXVlRW50cnkg cXVldWUgcGFzc2VkLgorICovCitzdGF0aWMgdm9pZAorUFFmcmVlQ29tbWFu ZFF1ZXVlKFBHY29tbWFuZFF1ZXVlRW50cnkgKnF1ZXVlKQoreworCisJd2hp bGUgKHF1ZXVlICE9IE5VTEwpCisJeworCQlQR2NvbW1hbmRRdWV1ZUVudHJ5 ICpwcmV2ID0gcXVldWU7CisKKwkJcXVldWUgPSBxdWV1ZS0+bmV4dDsKKwkJ aWYgKHByZXYtPnF1ZXJ5KQorCQkJZnJlZShwcmV2LT5xdWVyeSk7CisJCWZy ZWUocHJldik7CisJfQorfQorCisvKgogICogY2xvc2VQR2Nvbm4KICAqCSAt IHByb3Blcmx5IGNsb3NlIGEgY29ubmVjdGlvbiB0byB0aGUgYmFja2VuZAog ICoKQEAgLTM0OTQsNiArMzUxMyw3IEBAIHN0YXRpYyB2b2lkCiBjbG9zZVBH Y29ubihQR2Nvbm4gKmNvbm4pCiB7CiAJUEdub3RpZnkgICAqbm90aWZ5Owor CVBHY29tbWFuZFF1ZXVlRW50cnkgKnF1ZXVlOwogCXBnUGFyYW1ldGVyU3Rh dHVzICpwc3RhdHVzOwogCiAJc2VuZFRlcm1pbmF0ZUNvbm4oY29ubik7CkBA IC0zNTI2LDYgKzM1NDYsMTQgQEAgY2xvc2VQR2Nvbm4oUEdjb25uICpjb25u KQogCQlmcmVlKHByZXYpOwogCX0KIAljb25uLT5ub3RpZnlIZWFkID0gY29u bi0+bm90aWZ5VGFpbCA9IE5VTEw7CisJcXVldWUgPSBjb25uLT5jbWRfcXVl dWVfaGVhZDsKKwlQUWZyZWVDb21tYW5kUXVldWUocXVldWUpOworCWNvbm4t PmNtZF9xdWV1ZV9oZWFkID0gY29ubi0+Y21kX3F1ZXVlX3RhaWwgPSBOVUxM OworCisJcXVldWUgPSBjb25uLT5jbWRfcXVldWVfcmVjeWNsZTsKKwlQUWZy ZWVDb21tYW5kUXVldWUocXVldWUpOworCisJY29ubi0+Y21kX3F1ZXVlX3Jl Y3ljbGUgPSBOVUxMOwogCXBzdGF0dXMgPSBjb25uLT5wc3RhdHVzOwogCXdo aWxlIChwc3RhdHVzICE9IE5VTEwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jIGIvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtZXhlYy5jCmluZGV4IDlkZWNkNTMuLjJhMzkyOGIgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYworKysgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKQEAgLTM5LDcgKzM5LDkgQEAg Y2hhcgkgICAqY29uc3QgcGdyZXNTdGF0dXNbXSA9IHsKIAkiUEdSRVNfTk9O RkFUQUxfRVJST1IiLAogCSJQR1JFU19GQVRBTF9FUlJPUiIsCiAJIlBHUkVT X0NPUFlfQk9USCIsCi0JIlBHUkVTX1NJTkdMRV9UVVBMRSIKKwkiUEdSRVNf U0lOR0xFX1RVUExFIiwKKwkiUEdSRVNfQkFUQ0hfRU5EIiwKKwkiUEdSRVNf QkFUQ0hfQUJPUlRFRCIKIH07CiAKIC8qCkBAIC02OSw2ICs3MSw5IEBAIHN0 YXRpYyBQR3Jlc3VsdCAqUFFleGVjRmluaXNoKFBHY29ubiAqY29ubik7CiBz dGF0aWMgaW50IFBRc2VuZERlc2NyaWJlKFBHY29ubiAqY29ubiwgY2hhciBk ZXNjX3R5cGUsCiAJCQkgICBjb25zdCBjaGFyICpkZXNjX3RhcmdldCk7CiBz dGF0aWMgaW50CWNoZWNrX2ZpZWxkX251bWJlcihjb25zdCBQR3Jlc3VsdCAq cmVzLCBpbnQgZmllbGRfbnVtKTsKK3N0YXRpYyBQR2NvbW1hbmRRdWV1ZUVu dHJ5ICpQUW1ha2VQaXBlbGluZWRDb21tYW5kKFBHY29ubiAqY29ubik7Citz dGF0aWMgdm9pZCBQUWFwcGVuZFBpcGVsaW5lZENvbW1hbmQoUEdjb25uICpj b25uLCBQR2NvbW1hbmRRdWV1ZUVudHJ5ICogZW50cnkpOworc3RhdGljIHZv aWQgUFFyZWN5Y2xlUGlwZWxpbmVkQ29tbWFuZChQR2Nvbm4gKmNvbm4sIFBH Y29tbWFuZFF1ZXVlRW50cnkgKiBlbnRyeSk7CiAKIAogLyogLS0tLS0tLS0t LS0tLS0tLQpAQCAtMTEwOCw3ICsxMTEzLDcgQEAgcHFSb3dQcm9jZXNzb3Io UEdjb25uICpjb25uLCBjb25zdCBjaGFyICoqZXJybXNncCkKIAkJY29ubi0+ bmV4dF9yZXN1bHQgPSBjb25uLT5yZXN1bHQ7CiAJCWNvbm4tPnJlc3VsdCA9 IHJlczsKIAkJLyogQW5kIG1hcmsgdGhlIHJlc3VsdCByZWFkeSB0byByZXR1 cm4gKi8KLQkJY29ubi0+YXN5bmNTdGF0dXMgPSBQR0FTWU5DX1JFQURZOwor CQljb25uLT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfUkVBRFlfTU9SRTsKIAl9 CiAKIAlyZXR1cm4gMTsKQEAgLTExMzEsNiArMTEzNiwxMyBAQCBmYWlsOgog aW50CiBQUXNlbmRRdWVyeShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1 ZXJ5KQogeworCWlmIChjb25uLT5iYXRjaF9zdGF0dXMgIT0gUFFCQVRDSF9N T0RFX09GRikKKwl7CisJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJv ck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoImNhbm5vdCBQUXNl bmRRdWVyeSBpbiBiYXRjaCBtb2RlLCB1c2UgUFFzZW5kUXVlcnlQYXJhbXNc biIpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCWlmICghUFFzZW5kUXVl cnlTdGFydChjb25uKSkKIAkJcmV0dXJuIDA7CiAKQEAgLTEyMjksNiArMTI0 MSwxMCBAQCBQUXNlbmRQcmVwYXJlKFBHY29ubiAqY29ubiwKIAkJCSAgY29u c3QgY2hhciAqc3RtdE5hbWUsIGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJICBp bnQgblBhcmFtcywgY29uc3QgT2lkICpwYXJhbVR5cGVzKQogeworCVBHY29t bWFuZFF1ZXVlRW50cnkgKnBpcGVDbWQgPSBOVUxMOworCWNoYXIJICAqKmxh c3RfcXVlcnk7CisJUEdRdWVyeUNsYXNzICpxdWVyeWNsYXNzOworCiAJaWYg KCFQUXNlbmRRdWVyeVN0YXJ0KGNvbm4pKQogCQlyZXR1cm4gMDsKIApAQCAt MTI4NywxOCArMTMwMywzNCBAQCBQUXNlbmRQcmVwYXJlKFBHY29ubiAqY29u biwKIAkJZ290byBzZW5kRmFpbGVkOwogCiAJLyogY29uc3RydWN0IHRoZSBT eW5jIG1lc3NhZ2UgKi8KLQlpZiAocHFQdXRNc2dTdGFydCgnUycsIGZhbHNl LCBjb25uKSA8IDAgfHwKLQkJcHFQdXRNc2dFbmQoY29ubikgPCAwKQotCQln b3RvIHNlbmRGYWlsZWQ7CisJaWYgKGNvbm4tPmJhdGNoX3N0YXR1cyA9PSBQ UUJBVENIX01PREVfT0ZGKQorCXsKKwkJaWYgKHBxUHV0TXNnU3RhcnQoJ1Mn LCBmYWxzZSwgY29ubikgPCAwIHx8CisJCQlwcVB1dE1zZ0VuZChjb25uKSA8 IDApCisJCQlnb3RvIHNlbmRGYWlsZWQ7CisKKwkJbGFzdF9xdWVyeSA9ICZj b25uLT5sYXN0X3F1ZXJ5OworCQlxdWVyeWNsYXNzID0gJmNvbm4tPnF1ZXJ5 Y2xhc3M7CisJfQorCWVsc2UKKwl7CisJCXBpcGVDbWQgPSBQUW1ha2VQaXBl bGluZWRDb21tYW5kKGNvbm4pOworCisJCWlmIChwaXBlQ21kID09IE5VTEwp CisJCQlyZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgIC8qIGVycm9y IG1zZyBhbHJlYWR5IHNldCAqLworCisJCWxhc3RfcXVlcnkgPSAmcGlwZUNt ZC0+cXVlcnk7CisJCXF1ZXJ5Y2xhc3MgPSAmcGlwZUNtZC0+cXVlcnljbGFz czsKKwl9CiAKIAkvKiByZW1lbWJlciB3ZSBhcmUgZG9pbmcganVzdCBhIFBh cnNlICovCi0JY29ubi0+cXVlcnljbGFzcyA9IFBHUVVFUllfUFJFUEFSRTsK KwkqcXVlcnljbGFzcyA9IFBHUVVFUllfUFJFUEFSRTsKIAogCS8qIGFuZCBy ZW1lbWJlciB0aGUgcXVlcnkgdGV4dCB0b28sIGlmIHBvc3NpYmxlICovCiAJ LyogaWYgaW5zdWZmaWNpZW50IG1lbW9yeSwgbGFzdF9xdWVyeSBqdXN0IHdp bmRzIHVwIE5VTEwgKi8KLQlpZiAoY29ubi0+bGFzdF9xdWVyeSkKLQkJZnJl ZShjb25uLT5sYXN0X3F1ZXJ5KTsKLQljb25uLT5sYXN0X3F1ZXJ5ID0gc3Ry ZHVwKHF1ZXJ5KTsKKwlpZiAoKmxhc3RfcXVlcnkpCisJCWZyZWUoKmxhc3Rf cXVlcnkpOworCSpsYXN0X3F1ZXJ5ID0gc3RyZHVwKHF1ZXJ5KTsKIAogCS8q CiAJICogR2l2ZSB0aGUgZGF0YSBhIHB1c2guICBJbiBub25ibG9jayBtb2Rl LCBkb24ndCBjb21wbGFpbiBpZiB3ZSdyZSB1bmFibGUKQEAgLTEzMDgsMTAg KzEzNDAsMTQgQEAgUFFzZW5kUHJlcGFyZShQR2Nvbm4gKmNvbm4sCiAJCWdv dG8gc2VuZEZhaWxlZDsKIAogCS8qIE9LLCBpdCdzIGxhdW5jaGVkISAqLwot CWNvbm4tPmFzeW5jU3RhdHVzID0gUEdBU1lOQ19CVVNZOworCWlmIChjb25u LT5iYXRjaF9zdGF0dXMgIT0gUFFCQVRDSF9NT0RFX09GRikKKwkJUFFhcHBl bmRQaXBlbGluZWRDb21tYW5kKGNvbm4sIHBpcGVDbWQpOworCWVsc2UKKwkJ Y29ubi0+YXN5bmNTdGF0dXMgPSBQR0FTWU5DX0JVU1k7CiAJcmV0dXJuIDE7 CiAKIHNlbmRGYWlsZWQ6CisJUFFyZWN5Y2xlUGlwZWxpbmVkQ29tbWFuZChj b25uLCBwaXBlQ21kKTsKIAlwcUhhbmRsZVNlbmRGYWlsdXJlKGNvbm4pOwog CXJldHVybiAwOwogfQpAQCAtMTM1OSw3ICsxMzk1LDgwIEBAIFBRc2VuZFF1 ZXJ5UHJlcGFyZWQoUEdjb25uICpjb25uLAogfQogCiAvKgotICogQ29tbW9u IHN0YXJ0dXAgY29kZSBmb3IgUFFzZW5kUXVlcnkgYW5kIHNpYmxpbmcgcm91 dGluZXMKKyAqIFBRbWFrZVBpcGVsaW5lZENvbW1hbmQKKyAqCUdldCBhIG5l dyBjb21tYW5kIHF1ZXVlIGVudHJ5LCBhbGxvY2F0aW5nIGl0IGlmIHJlcXVp cmVkLiBEb2Vzbid0IGFkZCBpdCB0bworICoJdGhlIHRhaWwgb2YgdGhlIHF1 ZXVlIHlldCwgdXNlIFBRYXBwZW5kUGlwZWxpbmVkQ29tbWFuZCBvbmNlIHRo ZSBjb21tYW5kIGhhcworICoJYmVlbiB3cml0dGVuIGZvciB0aGF0LiBJZiBh IGNvbW1hbmQgZmFpbHMgb25jZSBpdCdzIGNhbGxlZCB0aGlzLCBpdCBzaG91 bGQKKyAqCXVzZSBQUXJlY3ljbGVQaXBlbGluZWRDb21tYW5kIHRvIHB1dCBp dCBvbiB0aGUgZnJlZWxpc3Qgb3IgcmVsZWFzZSBpdC4KKyAqCisgKiBJZiBh bGxvY2F0aW9uIGZhaWxzIHNldHMgdGhlIGVycm9yIG1lc3NhZ2UgYW5kIHJl dHVybnMgbnVsbC4KKyAqLworc3RhdGljIFBHY29tbWFuZFF1ZXVlRW50cnkg KgorUFFtYWtlUGlwZWxpbmVkQ29tbWFuZChQR2Nvbm4gKmNvbm4pCit7CisJ UEdjb21tYW5kUXVldWVFbnRyeSAqZW50cnk7CisKKwlpZiAoY29ubi0+Y21k X3F1ZXVlX3JlY3ljbGUgPT0gTlVMTCkKKwl7CisJCWVudHJ5ID0gKFBHY29t bWFuZFF1ZXVlRW50cnkgKikgbWFsbG9jKHNpemVvZihQR2NvbW1hbmRRdWV1 ZUVudHJ5KSk7CisJCWlmIChlbnRyeSA9PSBOVUxMKQorCQl7CisJCQlwcmlu dGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSAg bGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQkJcmV0dXJu IE5VTEw7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJZW50cnkgPSBjb25uLT5j bWRfcXVldWVfcmVjeWNsZTsKKwkJY29ubi0+Y21kX3F1ZXVlX3JlY3ljbGUg PSBlbnRyeS0+bmV4dDsKKwl9CisJZW50cnktPm5leHQgPSBOVUxMOworCWVu dHJ5LT5xdWVyeSA9IE5VTEw7CisKKwlyZXR1cm4gZW50cnk7Cit9CisKKy8q CisgKiBQUWFwcGVuZFBpcGVsaW5lZENvbW1hbmQKKyAqCUFwcGVuZCBhIHBy ZWNyZWF0ZWQgY29tbWFuZCBxdWV1ZSBlbnRyeSB0byB0aGUgcXVldWUgYWZ0 ZXIgaXQncyBiZWVuCisgKglzZW50IHN1Y2Nlc3NmdWxseS4KKyAqLworc3Rh dGljIHZvaWQKK1BRYXBwZW5kUGlwZWxpbmVkQ29tbWFuZChQR2Nvbm4gKmNv bm4sIFBHY29tbWFuZFF1ZXVlRW50cnkgKiBlbnRyeSkKK3sKKwlpZiAoY29u bi0+Y21kX3F1ZXVlX2hlYWQgPT0gTlVMTCkKKwkJY29ubi0+Y21kX3F1ZXVl X2hlYWQgPSBlbnRyeTsKKwllbHNlCisJCWNvbm4tPmNtZF9xdWV1ZV90YWls LT5uZXh0ID0gZW50cnk7CisJY29ubi0+Y21kX3F1ZXVlX3RhaWwgPSBlbnRy eTsKK30KKworLyoKKyAqIFBRcmVjeWNsZVBpcGVsaW5lZENvbW1hbmQKKyAq CVB1c2ggYSBjb21tYW5kIHF1ZXVlIGVudHJ5IG9udG8gdGhlIGZyZWVsaXN0 LiBJdCBtdXN0IGJlIGEgZGFuZ2xpbmcgZW50cnkKKyAqCXdpdGggbnVsbCBu ZXh0IHBvaW50ZXIgYW5kIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBvdGhlciBl bnRyeSdzIG5leHQgcG9pbnRlci4KKyAqLworc3RhdGljIHZvaWQKK1BRcmVj eWNsZVBpcGVsaW5lZENvbW1hbmQoUEdjb25uICpjb25uLCBQR2NvbW1hbmRR dWV1ZUVudHJ5ICogZW50cnkpCit7CisJaWYgKGVudHJ5ID09IE5VTEwpCisJ CXJldHVybjsKKwlpZiAoZW50cnktPm5leHQgIT0gTlVMTCkKKwl7CisJCWZw cmludGYoc3RkZXJyLCBsaWJwcV9nZXR0ZXh0KCJ0cmllZCB0byByZWN5Y2xl IG5vbi1kYW5nbGluZyBjb21tYW5kIHF1ZXVlIGVudHJ5IikpOworCQlhYm9y dCgpOworCX0KKwlpZiAoZW50cnktPnF1ZXJ5KQorCQlmcmVlKGVudHJ5LT5x dWVyeSk7CisKKwllbnRyeS0+bmV4dCA9IGNvbm4tPmNtZF9xdWV1ZV9yZWN5 Y2xlOworCWNvbm4tPmNtZF9xdWV1ZV9yZWN5Y2xlID0gZW50cnk7Cit9CisK Ky8qCisgKiBQUXNlbmRRdWVyeVN0YXJ0CisgKglDb21tb24gc3RhcnR1cCBj b2RlIGZvciBQUXNlbmRRdWVyeSBhbmQgc2libGluZyByb3V0aW5lcwogICov CiBzdGF0aWMgYm9vbAogUFFzZW5kUXVlcnlTdGFydChQR2Nvbm4gKmNvbm4p CkBAIC0xMzc3LDIwICsxNDg2LDYwIEBAIFBRc2VuZFF1ZXJ5U3RhcnQoUEdj b25uICpjb25uKQogCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJubyBjb25uZWN0 aW9uIHRvIHRoZSBzZXJ2ZXJcbiIpKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0K LQkvKiBDYW4ndCBzZW5kIHdoaWxlIGFscmVhZHkgYnVzeSwgZWl0aGVyLiAq LwotCWlmIChjb25uLT5hc3luY1N0YXR1cyAhPSBQR0FTWU5DX0lETEUpCisK KwkvKiBDYW4ndCBzZW5kIHdoaWxlIGFscmVhZHkgYnVzeSwgZWl0aGVyLCB1 bmxlc3MgZW5xdWV1aW5nIGZvciBsYXRlciAqLworCWlmIChjb25uLT5hc3lu Y1N0YXR1cyAhPSBQR0FTWU5DX0lETEUgJiYgY29ubi0+YmF0Y2hfc3RhdHVz ID09IFBRQkFUQ0hfTU9ERV9PRkYpCiAJewogCQlwcmludGZQUUV4cEJ1ZmZl cigmY29ubi0+ZXJyb3JNZXNzYWdlLAogCQkJCSAgbGlicHFfZ2V0dGV4dCgi YW5vdGhlciBjb21tYW5kIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3NcbiIpKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCS8qIGluaXRpYWxpemUgYXN5bmMg cmVzdWx0LWFjY3VtdWxhdGlvbiBzdGF0ZSAqLwotCXBxQ2xlYXJBc3luY1Jl c3VsdChjb25uKTsKKwlpZiAoY29ubi0+YmF0Y2hfc3RhdHVzICE9IFBRQkFU Q0hfTU9ERV9PRkYpCisJeworCQkvKgorCQkgKiBXaGVuIGVucXVldWluZyBh IG1lc3NhZ2Ugd2UgZG9uJ3QgY2hhbmdlIG11Y2ggb2YgdGhlIGNvbm5lY3Rp b24KKwkJICogc3RhdGUgc2luY2UgaXQncyBhbHJlYWR5IGluIHVzZSBmb3Ig dGhlIGN1cnJlbnQgY29tbWFuZC4gVGhlCisJCSAqIGNvbm5lY3Rpb24gc3Rh dGUgd2lsbCBnZXQgdXBkYXRlZCB3aGVuIFBRYmF0Y2hRdWV1ZVByb2Nlc3Mo Li4uKQorCQkgKiBhZHZhbmNlcyB0byBzdGFydCBwcm9jZXNzaW5nIHRoZSBx dWV1ZWQgbWVzc2FnZS4KKwkJICoKKwkJICogSnVzdCBtYWtlIHN1cmUgd2Ug Y2FuIHNhZmVseSBlbnF1ZXVlIGdpdmVuIHRoZSBjdXJyZW50IGNvbm5lY3Rp b24KKwkJICogc3RhdGUuIFdlIGNhbiBlbnF1ZXVlIGJlaGluZCBhbm90aGVy IHF1ZXVlIGl0ZW0sIG9yIGJlaGluZCBhCisJCSAqIG5vbi1xdWV1ZSBjb21t YW5kIChvbmUgdGhhdCBzZW5kcyBpdHMgb3duIHN5bmMpLCBidXQgd2UgY2Fu J3QKKwkJICogZW5xdWV1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyBpbiBhIGNv cHkgc3RhdGUuCisJCSAqLworCQlzd2l0Y2ggKGNvbm4tPmFzeW5jU3RhdHVz KQorCQl7CisJCQljYXNlIFBHQVNZTkNfUVVFVUVEOgorCQkJY2FzZSBQR0FT WU5DX1JFQURZOgorCQkJY2FzZSBQR0FTWU5DX1JFQURZX01PUkU6CisJCQlj YXNlIFBHQVNZTkNfQlVTWToKKwkJCQkvKiBvayB0byBxdWV1ZSAqLworCQkJ CWJyZWFrOworCQkJY2FzZSBQR0FTWU5DX0NPUFlfSU46CisJCQljYXNlIFBH QVNZTkNfQ09QWV9PVVQ6CisJCQljYXNlIFBHQVNZTkNfQ09QWV9CT1RIOgor CQkJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJ CQkJCSAgIGxpYnBxX2dldHRleHQoImNhbm5vdCBxdWV1ZSBjb21tYW5kcyBk dXJpbmcgQ09QWVxuIikpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCQlicmVh azsKKwkJCWNhc2UgUEdBU1lOQ19JRExFOgorCQkJCXByaW50ZlBRRXhwQnVm ZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJCSAgbGlicHFfZ2V0 dGV4dF9ub29wKCJpbnRlcm5hbCBlcnJvciwgaWRsZSBzdGF0ZSBpbiBiYXRj aCBtb2RlIikpOworCQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJ CS8qIFRoaXMgY29tbWFuZCdzIHJlc3VsdHMgd2lsbCBjb21lIGluIGltbWVk aWF0ZWx5LgorCQkgKiBJbml0aWFsaXplIGFzeW5jIHJlc3VsdC1hY2N1bXVs YXRpb24gc3RhdGUKKwkJICovCisJCXBxQ2xlYXJBc3luY1Jlc3VsdChjb25u KTsKIAotCS8qIHJlc2V0IHNpbmdsZS1yb3cgcHJvY2Vzc2luZyBtb2RlICov Ci0JY29ubi0+c2luZ2xlUm93TW9kZSA9IGZhbHNlOworCQkvKiByZXNldCBz aW5nbGUtcm93IHByb2Nlc3NpbmcgbW9kZSAqLworCQljb25uLT5zaW5nbGVS b3dNb2RlID0gZmFsc2U7CiAKKwl9CiAJLyogcmVhZHkgdG8gc2VuZCBjb21t YW5kIG1lc3NhZ2UgKi8KIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTE0MTQsNiAr MTU2MywxMCBAQCBQUXNlbmRRdWVyeUd1dHMoUEdjb25uICpjb25uLAogCQkJ CWludCByZXN1bHRGb3JtYXQpCiB7CiAJaW50CQkJaTsKKwlQR2NvbW1hbmRR dWV1ZUVudHJ5ICpwaXBlQ21kID0gTlVMTDsKKwljaGFyCSAgKipsYXN0X3F1 ZXJ5OworCVBHUXVlcnlDbGFzcyAqcXVlcnljbGFzczsKKwogCiAJLyogVGhp cyBpc24ndCBnb25uYSB3b3JrIG9uIGEgMi4wIHNlcnZlciAqLwogCWlmIChQ R19QUk9UT0NPTF9NQUpPUihjb25uLT5wdmVyc2lvbikgPCAzKQpAQCAtMTQy Myw2ICsxNTc2LDIzIEBAIFBRc2VuZFF1ZXJ5R3V0cyhQR2Nvbm4gKmNvbm4s CiAJCXJldHVybiAwOwogCX0KIAorCWlmIChjb25uLT5iYXRjaF9zdGF0dXMg IT0gUFFCQVRDSF9NT0RFX09GRikKKwl7CisJCXBpcGVDbWQgPSBQUW1ha2VQ aXBlbGluZWRDb21tYW5kKGNvbm4pOworCisJCWlmIChwaXBlQ21kID09IE5V TEwpCisJCQlyZXR1cm4gMDsJCQkvKiBlcnJvciBtc2cgYWxyZWFkeSBzZXQg Ki8KKworCQlsYXN0X3F1ZXJ5ID0gJnBpcGVDbWQtPnF1ZXJ5OworCQlxdWVy eWNsYXNzID0gJnBpcGVDbWQtPnF1ZXJ5Y2xhc3M7CisJfQorCWVsc2UKKwl7 CisJCWxhc3RfcXVlcnkgPSAmY29ubi0+bGFzdF9xdWVyeTsKKwkJcXVlcnlj bGFzcyA9ICZjb25uLT5xdWVyeWNsYXNzOworCX0KKworCiAJLyoKIAkgKiBX ZSB3aWxsIHNlbmQgUGFyc2UgKGlmIG5lZWRlZCksIEJpbmQsIERlc2NyaWJl IFBvcnRhbCwgRXhlY3V0ZSwgU3luYywKIAkgKiB1c2luZyBzcGVjaWZpZWQg c3RhdGVtZW50IG5hbWUgYW5kIHRoZSB1bm5hbWVkIHBvcnRhbC4KQEAgLTE1 MzUsMjIgKzE3MDUsMjUgQEAgUFFzZW5kUXVlcnlHdXRzKFBHY29ubiAqY29u biwKIAkJcHFQdXRNc2dFbmQoY29ubikgPCAwKQogCQlnb3RvIHNlbmRGYWls ZWQ7CiAKLQkvKiBjb25zdHJ1Y3QgdGhlIFN5bmMgbWVzc2FnZSAqLwotCWlm IChwcVB1dE1zZ1N0YXJ0KCdTJywgZmFsc2UsIGNvbm4pIDwgMCB8fAotCQlw cVB1dE1zZ0VuZChjb25uKSA8IDApCi0JCWdvdG8gc2VuZEZhaWxlZDsKKwlp ZiAoY29ubi0+YmF0Y2hfc3RhdHVzID09IFBRQkFUQ0hfTU9ERV9PRkYpCisJ eworCQkvKiBjb25zdHJ1Y3QgdGhlIFN5bmMgbWVzc2FnZSAqLworCQlpZiAo cHFQdXRNc2dTdGFydCgnUycsIGZhbHNlLCBjb25uKSA8IDAgfHwKKwkJCXBx UHV0TXNnRW5kKGNvbm4pIDwgMCkKKwkJCWdvdG8gc2VuZEZhaWxlZDsKKwl9 CiAKIAkvKiByZW1lbWJlciB3ZSBhcmUgdXNpbmcgZXh0ZW5kZWQgcXVlcnkg cHJvdG9jb2wgKi8KLQljb25uLT5xdWVyeWNsYXNzID0gUEdRVUVSWV9FWFRF TkRFRDsKKwkqcXVlcnljbGFzcyA9IFBHUVVFUllfRVhURU5ERUQ7CiAKIAkv KiBhbmQgcmVtZW1iZXIgdGhlIHF1ZXJ5IHRleHQgdG9vLCBpZiBwb3NzaWJs ZSAqLwogCS8qIGlmIGluc3VmZmljaWVudCBtZW1vcnksIGxhc3RfcXVlcnkg anVzdCB3aW5kcyB1cCBOVUxMICovCi0JaWYgKGNvbm4tPmxhc3RfcXVlcnkp Ci0JCWZyZWUoY29ubi0+bGFzdF9xdWVyeSk7CisJaWYgKCpsYXN0X3F1ZXJ5 KQorCQlmcmVlKCpsYXN0X3F1ZXJ5KTsKIAlpZiAoY29tbWFuZCkKLQkJY29u bi0+bGFzdF9xdWVyeSA9IHN0cmR1cChjb21tYW5kKTsKKwkJKmxhc3RfcXVl cnkgPSBzdHJkdXAoY29tbWFuZCk7CiAJZWxzZQotCQljb25uLT5sYXN0X3F1 ZXJ5ID0gTlVMTDsKKwkJKmxhc3RfcXVlcnkgPSBOVUxMOwogCiAJLyoKIAkg KiBHaXZlIHRoZSBkYXRhIGEgcHVzaC4gIEluIG5vbmJsb2NrIG1vZGUsIGRv bid0IGNvbXBsYWluIGlmIHdlJ3JlIHVuYWJsZQpAQCAtMTU2MCwxMCArMTcz MywxNCBAQCBQUXNlbmRRdWVyeUd1dHMoUEdjb25uICpjb25uLAogCQlnb3Rv IHNlbmRGYWlsZWQ7CiAKIAkvKiBPSywgaXQncyBsYXVuY2hlZCEgKi8KLQlj b25uLT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfQlVTWTsKKwlpZiAoY29ubi0+ YmF0Y2hfc3RhdHVzICE9IFBRQkFUQ0hfTU9ERV9PRkYpCisJCVBRYXBwZW5k UGlwZWxpbmVkQ29tbWFuZChjb25uLCBwaXBlQ21kKTsKKwllbHNlCisJCWNv bm4tPmFzeW5jU3RhdHVzID0gUEdBU1lOQ19CVVNZOwogCXJldHVybiAxOwog CiBzZW5kRmFpbGVkOgorCVBRcmVjeWNsZVBpcGVsaW5lZENvbW1hbmQoY29u biwgcGlwZUNtZCk7CiAJcHFIYW5kbGVTZW5kRmFpbHVyZShjb25uKTsKIAly ZXR1cm4gMDsKIH0KQEAgLTE2OTAsNiArMTg2NywzMDIgQEAgUFFpc0J1c3ko UEdjb25uICpjb25uKQogCXJldHVybiBjb25uLT5hc3luY1N0YXR1cyA9PSBQ R0FTWU5DX0JVU1k7CiB9CiAKKy8qCisgKiBQUWJhdGNoUXVldWVDb3VudAor ICogCVJldHVybiBudW1iZXIgb2YgcXVlcmllcyBjdXJyZW50bHkgcGVuZGlu ZyBpbiBiYXRjaCBtb2RlCisgKi8KK2ludAorUFFiYXRjaFF1ZXVlQ291bnQo UEdjb25uICpjb25uKQoreworCWludAkJCWNvdW50ID0gMDsKKwlQR2NvbW1h bmRRdWV1ZUVudHJ5ICplbnRyeTsKKworCWlmIChQUWJhdGNoU3RhdHVzKGNv bm4pID09IFBRQkFUQ0hfTU9ERV9PRkYpCisJCXJldHVybiAwOworCisJZW50 cnkgPSBjb25uLT5jbWRfcXVldWVfaGVhZDsKKwl3aGlsZSAoZW50cnkgIT0g TlVMTCkKKwl7CisJCSsrY291bnQ7CisJCWVudHJ5ID0gZW50cnktPm5leHQ7 CisJfQorCXJldHVybiBjb3VudDsKK30KKworLyoKKyAqIFBRYmF0Y2hTdGF0 dXMKKyAqIAlSZXR1cm5zIGN1cnJlbnQgYmF0Y2ggbW9kZSBzdGF0dXMKKyAq LworaW50CitQUWJhdGNoU3RhdHVzKFBHY29ubiAqY29ubikKK3sKKwlpZiAo IWNvbm4pCisJCXJldHVybiBGQUxTRTsKKworCXJldHVybiBjb25uLT5iYXRj aF9zdGF0dXM7Cit9CisKKy8qCisgKiBQUWJhdGNoQmVnaW4KKyAqIAlQdXQg YW4gaWRsZSBjb25uZWN0aW9uIGluIGJhdGNoIG1vZGUuIENvbW1hbmRzIHN1 Ym1pdHRlZCBhZnRlciB0aGlzCisgKiAJY2FuIGJlIHBpcGVsaW5lZCBvbiB0 aGUgY29ubmVjdGlvbiwgdGhlcmUncyBubyByZXF1aXJlbWVudCB0byB3YWl0 IGZvcgorICogCW9uZSB0byBmaW5pc2ggYmVmb3JlIHRoZSBuZXh0IGlzIGRp c3BhdGNoZWQuCisgKgorICogCVF1ZXVpbmcgb2YgbmV3IHF1ZXJ5IG9yIHN5 bmNpbmcgZHVyaW5nIENPUFkgaXMgbm90IGFsbG93ZWQuCisgKgorICogCUEg c2V0IG9mIGNvbW1hbmRzIGlzIHRlcm1pbmF0ZWQgYnkgYSBQUWJhdGNoUXVl dWVTeW5jLiBNdWx0aXBsZSBzZXRzIG9mIGJhdGNoZWQKKyAqIAljb21tYW5k cyBtYXkgYmUgc2VudCB3aGlsZSBpbiBiYXRjaCBtb2RlLiBCYXRjaCBtb2Rl IGNhbiBiZSBleGl0ZWQgYnkKKyAqIAljYWxsaW5nIFBRYmF0Y2hFbmQoKSBv bmNlIGFsbCByZXN1bHRzIGFyZSBwcm9jZXNzZWQuCisgKgorICogCVRoaXMg ZG9lc24ndCBhY3R1YWxseSBzZW5kIGFueXRoaW5nIG9uIHRoZSB3aXJlLCBp dCBqdXN0IHB1dHMgbGlicHEKKyAqIAlpbnRvIGEgc3RhdGUgd2hlcmUgaXQg Y2FuIHBpcGVsaW5lIHdvcmsuCisgKi8KK2ludAorUFFlbnRlckJhdGNoTW9k ZShQR2Nvbm4gKmNvbm4pCit7CisJaWYgKCFjb25uKQorCQlyZXR1cm4gZmFs c2U7CisKKwlpZiAoY29ubi0+YmF0Y2hfc3RhdHVzICE9IFBRQkFUQ0hfTU9E RV9PRkYpCisJCXJldHVybiB0cnVlOworCisJaWYgKGNvbm4tPmFzeW5jU3Rh dHVzICE9IFBHQVNZTkNfSURMRSkKKwkJcmV0dXJuIGZhbHNlOworCisJY29u bi0+YmF0Y2hfc3RhdHVzID0gUFFCQVRDSF9NT0RFX09OOworCWNvbm4tPmFz eW5jU3RhdHVzID0gUEdBU1lOQ19RVUVVRUQ7CisKKwlyZXR1cm4gdHJ1ZTsK K30KKworLyoKKyAqIFBRYmF0Y2hFbmQKKyAqIAlFbmQgYmF0Y2ggbW9kZSBh bmQgcmV0dXJuIHRvIG5vcm1hbCBjb21tYW5kIG1vZGUuCisgKgorICogCUhh cyBubyBlZmZlY3QgdW5sZXNzIHRoZSBjbGllbnQgaGFzIHByb2Nlc3NlZCBh bGwgcmVzdWx0cworICogCWZyb20gYWxsIG91dHN0YW5kaW5nIGJhdGNoZXMg YW5kIHRoZSBjb25uZWN0aW9uIGlzIGlkbGUuCisgKgorICogCVJldHVybnMg dHJ1ZSBpZiBiYXRjaCBtb2RlIGVuZGVkLgorICovCitpbnQKK1BRZXhpdEJh dGNoTW9kZShQR2Nvbm4gKmNvbm4pCit7CisJaWYgKCFjb25uKQorCQlyZXR1 cm4gZmFsc2U7CisKKwlpZiAoY29ubi0+YmF0Y2hfc3RhdHVzID09IFBRQkFU Q0hfTU9ERV9PRkYpCisJCXJldHVybiB0cnVlOworCisJc3dpdGNoIChjb25u LT5hc3luY1N0YXR1cykKKwl7CisJCWNhc2UgUEdBU1lOQ19JRExFOgorCQkJ cHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkg ICBsaWJwcV9nZXR0ZXh0X25vb3AoImludGVybmFsIGVycm9yLCBJRExFIGlu IGJhdGNoIG1vZGUiKSk7CisJCQlicmVhazsKKwkJY2FzZSBQR0FTWU5DX0NP UFlfSU46CisJCWNhc2UgUEdBU1lOQ19DT1BZX09VVDoKKwkJY2FzZSBQR0FT WU5DX0NPUFlfQk9USDoKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5l cnJvck1lc3NhZ2UsCisJCQkJICAgbGlicHFfZ2V0dGV4dF9ub29wKCJpbnRl cm5hbCBlcnJvciwgQ09QWSBpbiBiYXRjaCBtb2RlIikpOworCQkJYnJlYWs7 CisJCWNhc2UgUEdBU1lOQ19SRUFEWToKKwkJY2FzZSBQR0FTWU5DX1JFQURZ X01PUkU6CisJCWNhc2UgUEdBU1lOQ19CVVNZOgorCQkJLyogY2FuJ3QgZW5k IGJhdGNoIHdoaWxlIGJ1c3kgKi8KKwkJCXJldHVybiBmYWxzZTsKKwkJY2Fz ZSBQR0FTWU5DX1FVRVVFRDoKKwkJCWJyZWFrOworCX0KKworCS8qIHN0aWxs IHdvcmsgdG8gcHJvY2VzcyAqLworCWlmIChjb25uLT5jbWRfcXVldWVfaGVh ZCAhPSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwljb25uLT5iYXRjaF9z dGF0dXMgPSBQUUJBVENIX01PREVfT0ZGOworCWNvbm4tPmFzeW5jU3RhdHVz ID0gUEdBU1lOQ19JRExFOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisg KiBQUWJhdGNoUXVldWVTeW5jCisgKiAJRW5kIGEgYmF0Y2ggc3VibWlzc2lv biBieSBzZW5kaW5nIGEgcHJvdG9jb2wgc3luYy4gVGhlIGNvbm5lY3Rpb24g d2lsbAorICogCXJlbWFpbiBpbiBiYXRjaCBtb2RlIGFuZCB1bmF2YWlsYWJs ZSBmb3IgbmV3IG5vbi1iYXRjaCBjb21tYW5kcyB1bnRpbCBhbGwKKyAqIAly ZXN1bHRzIGZyb20gdGhlIGJhdGNoIGFyZSBwcm9jZXNzZWQgYnkgdGhlIGNs aWVudC4KKyAqCisgKiAJSXQncyBsZWdhbCB0byBzdGFydCBzdWJtaXR0aW5n IGFub3RoZXIgYmF0Y2ggaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZwor ICogCWZvciB0aGUgcmVzdWx0cyBvZiB0aGUgY3VycmVudCBiYXRjaC4gVGhl cmUncyBubyBuZWVkIHRvIGVuZCBiYXRjaCBtb2RlCisgKiAJYW5kIHN0YXJ0 IGl0IGFnYWluLgorICoKKyAqIAlJZiBhIGNvbW1hbmQgaW4gYSBiYXRjaCBm YWlscywgZXZlcnkgc3Vic2VxdWVudCBjb21tYW5kIHVwIHRvIGFuZCBpbmNs dWRpbmcKKyAqIAl0aGUgUFFiYXRjaFF1ZXVlU3luYyBjb21tYW5kIHJlc3Vs dCBnZXRzIHNldCB0byBQR1JFU19CQVRDSF9BQk9SVEVEIHN0YXRlLiBJZiB0 aGUKKyAqIAl3aG9sZSBiYXRjaCBpcyBwcm9jZXNzZWQgd2l0aG91dCBlcnJv ciwgYSBQR3Jlc3VsdCB3aXRoIFBHUkVTX0JBVENIX0VORCBpcworICogCXBy b2R1Y2VkLgorICovCitpbnQKK1BRYmF0Y2hTeW5jUXVldWUoUEdjb25uICpj b25uKQoreworCVBHY29tbWFuZFF1ZXVlRW50cnkgKmVudHJ5OworCisJaWYg KCFjb25uKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoY29ubi0+YmF0Y2hf c3RhdHVzID09IFBRQkFUQ0hfTU9ERV9PRkYpCisJCXJldHVybiBmYWxzZTsK KworCXN3aXRjaCAoY29ubi0+YXN5bmNTdGF0dXMpCisJeworCQljYXNlIFBH QVNZTkNfSURMRToKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJv ck1lc3NhZ2UsCisJCQkJICAgbGlicHFfZ2V0dGV4dF9ub29wKCJpbnRlcm5h bCBlcnJvciwgSURMRSBpbiBiYXRjaCBtb2RlIikpOworCQkJYnJlYWs7CisJ CWNhc2UgUEdBU1lOQ19DT1BZX0lOOgorCQljYXNlIFBHQVNZTkNfQ09QWV9P VVQ6CisJCWNhc2UgUEdBU1lOQ19DT1BZX0JPVEg6CisJCQlwcmludGZQUUV4 cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCSAgIGxpYnBxX2dl dHRleHRfbm9vcCgiaW50ZXJuYWwgZXJyb3IsIENPUFkgaW4gYmF0Y2ggbW9k ZSIpKTsKKwkJCWJyZWFrOworCQljYXNlIFBHQVNZTkNfUkVBRFk6CisJCWNh c2UgUEdBU1lOQ19SRUFEWV9NT1JFOgorCQljYXNlIFBHQVNZTkNfQlVTWToK KwkJY2FzZSBQR0FTWU5DX1FVRVVFRDoKKwkJCS8qIGNhbiBzZW5kIHN5bmMg dG8gZW5kIHRoaXMgYmF0Y2ggb2YgY21kcyAqLworCQkJYnJlYWs7CisJfQor CisJZW50cnkgPSBQUW1ha2VQaXBlbGluZWRDb21tYW5kKGNvbm4pOworCWlm IChlbnRyeSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CQkJLyogZXJyb3Ig bXNnIGFscmVhZHkgc2V0ICovCisKKwllbnRyeS0+cXVlcnljbGFzcyA9IFBH UVVFUllfU1lOQzsKKwllbnRyeS0+cXVlcnkgPSBOVUxMOworCisJLyogY29u c3RydWN0IHRoZSBTeW5jIG1lc3NhZ2UgKi8KKwlpZiAocHFQdXRNc2dTdGFy dCgnUycsIGZhbHNlLCBjb25uKSA8IDAgfHwKKwkJcHFQdXRNc2dFbmQoY29u bikgPCAwKQorCQlnb3RvIHNlbmRGYWlsZWQ7CisKKwlQUWFwcGVuZFBpcGVs aW5lZENvbW1hbmQoY29ubiwgZW50cnkpOworCisJLyoKKwkgKiBHaXZlIHRo ZSBkYXRhIGEgcHVzaC4gIEluIG5vbmJsb2NrIG1vZGUsIGRvbid0IGNvbXBs YWluIGlmIHdlJ3JlIHVuYWJsZQorCSAqIHRvIHNlbmQgaXQgYWxsOyBQUWdl dFJlc3VsdCgpIHdpbGwgZG8gYW55IGFkZGl0aW9uYWwgZmx1c2hpbmcgbmVl ZGVkLgorCSAqLworCWlmIChQUWZsdXNoKGNvbm4pIDwgMCkKKwkJZ290byBz ZW5kRmFpbGVkOworCisJcmV0dXJuIHRydWU7CisKK3NlbmRGYWlsZWQ6CisJ UFFyZWN5Y2xlUGlwZWxpbmVkQ29tbWFuZChjb25uLCBlbnRyeSk7CisJcHFI YW5kbGVTZW5kRmFpbHVyZShjb25uKTsKKwlyZXR1cm4gZmFsc2U7Cit9CisK Ky8qCisgKiBQUWJhdGNoUXVldWVQcm9jZXNzCisgKgkgSW4gYmF0Y2ggbW9k ZSwgc3RhcnQgcHJvY2Vzc2luZyB0aGUgbmV4dCBxdWVyeSBpbiB0aGUgcXVl dWUuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBuZXh0IHF1ZXJ5IHdh cyBwb3BwZWQgZnJvbSB0aGUgcXVldWUgYW5kIGNhbgorICogYmUgcHJvY2Vz c2VkIGJ5IFBRY29uc3VtZUlucHV0LCBQUWdldFJlc3VsdCwgZXRjLgorICoK KyAqIFJldHVybnMgZmFsc2UgaWYgdGhlIGN1cnJlbnQgcXVlcnkgaXNuJ3Qg ZG9uZSB5ZXQsIHRoZSBjb25uZWN0aW9uCisgKiBpcyBub3QgaW4gYSBiYXRj aCwgb3IgdGhlcmUgYXJlIG5vIG1vcmUgcXVlcmllcyB0byBwcm9jZXNzLgor ICovCitpbnQKK1BRYmF0Y2hQcm9jZXNzUXVldWUoUEdjb25uICpjb25uKQor eworCVBHY29tbWFuZFF1ZXVlRW50cnkgKm5leHRfcXVlcnk7CisKKwlpZiAo IWNvbm4pCisJCXJldHVybiBmYWxzZTsKKworCWlmIChjb25uLT5iYXRjaF9z dGF0dXMgPT0gUFFCQVRDSF9NT0RFX09GRikKKwkJcmV0dXJuIGZhbHNlOwor CisJc3dpdGNoIChjb25uLT5hc3luY1N0YXR1cykKKwl7CisJCWNhc2UgUEdB U1lOQ19DT1BZX0lOOgorCQljYXNlIFBHQVNZTkNfQ09QWV9PVVQ6CisJCWNh c2UgUEdBU1lOQ19DT1BZX0JPVEg6CisJCQlwcmludGZQUUV4cEJ1ZmZlcigm Y29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCSAgIGxpYnBxX2dldHRleHRfbm9v cCgiaW50ZXJuYWwgZXJyb3IsIENPUFkgaW4gYmF0Y2ggbW9kZSIpKTsKKwkJ CWJyZWFrOworCQljYXNlIFBHQVNZTkNfUkVBRFk6CisJCWNhc2UgUEdBU1lO Q19SRUFEWV9NT1JFOgorCQljYXNlIFBHQVNZTkNfQlVTWToKKwkJCS8qIGNs aWVudCBzdGlsbCBoYXMgdG8gcHJvY2VzcyBjdXJyZW50IHF1ZXJ5IG9yIHJl c3VsdHMgKi8KKwkJCXJldHVybiBmYWxzZTsKKwkJCWJyZWFrOworCQljYXNl IFBHQVNZTkNfSURMRToKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5l cnJvck1lc3NhZ2UsCisJCQkJICAgbGlicHFfZ2V0dGV4dF9ub29wKCJpbnRl cm5hbCBlcnJvciwgSURMRSBpbiBiYXRjaCBtb2RlIikpOworCQkJYnJlYWs7 CisJCWNhc2UgUEdBU1lOQ19RVUVVRUQ6CisJCQkvKiBuZXh0IHF1ZXJ5IHBs ZWFzZSAqLworCQkJYnJlYWs7CisJfQorCisJaWYgKGNvbm4tPmNtZF9xdWV1 ZV9oZWFkID09IE5VTEwpCisJeworCQkvKgorCQkgKiBJbiBiYXRjaCBtb2Rl IGJ1dCBub3RoaW5nIGxlZnQgb24gdGhlIHF1ZXVlOyBjYWxsZXIgY2FuIHN1 Ym1pdCBtb3JlCisJCSAqIHdvcmsgb3IgUFFiYXRjaEVuZCgpIG5vdy4KKwkJ ICovCisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKgorCSAqIFBvcCB0aGUg bmV4dCBxdWVyeSBmcm9tIHRoZSBxdWV1ZSBhbmQgc2V0IHVwIHRoZSBjb25u ZWN0aW9uIHN0YXRlIGFzIGlmCisJICogaXQnZCBqdXN0IGJlZW4gZGlzcGF0 Y2hlZCBmcm9tIGEgbm9uLWJhdGNoZWQgY2FsbAorCSAqLworCW5leHRfcXVl cnkgPSBjb25uLT5jbWRfcXVldWVfaGVhZDsKKwljb25uLT5jbWRfcXVldWVf aGVhZCA9IG5leHRfcXVlcnktPm5leHQ7CisJbmV4dF9xdWVyeS0+bmV4dCA9 IE5VTEw7CisKKwkvKiBUaGlzIGNvbW1hbmQncyByZXN1bHRzIHdpbGwgY29t ZSBpbiBpbW1lZGlhdGVseS4KKwkgKiBJbml0aWFsaXplIGFzeW5jIHJlc3Vs dC1hY2N1bXVsYXRpb24gc3RhdGUgKi8KKwlwcUNsZWFyQXN5bmNSZXN1bHQo Y29ubik7CisKKwkvKiByZXNldCBzaW5nbGUtcm93IHByb2Nlc3NpbmcgbW9k ZSAqLworCWNvbm4tPnNpbmdsZVJvd01vZGUgPSBmYWxzZTsKKworCisJY29u bi0+bGFzdF9xdWVyeSA9IG5leHRfcXVlcnktPnF1ZXJ5OworCW5leHRfcXVl cnktPnF1ZXJ5ID0gTlVMTDsKKwljb25uLT5xdWVyeWNsYXNzID0gbmV4dF9x dWVyeS0+cXVlcnljbGFzczsKKworCVBRcmVjeWNsZVBpcGVsaW5lZENvbW1h bmQoY29ubiwgbmV4dF9xdWVyeSk7CisKKwlpZiAoY29ubi0+YmF0Y2hfc3Rh dHVzID09IFBRQkFUQ0hfTU9ERV9BQk9SVEVEICYmIGNvbm4tPnF1ZXJ5Y2xh c3MgIT0gUEdRVUVSWV9TWU5DKQorCXsKKwkJLyoKKwkJICogSW4gYW4gYWJv cnRlZCBiYXRjaCB3ZSBkb24ndCBnZXQgYW55dGhpbmcgZnJvbSB0aGUgc2Vy dmVyIGZvciBlYWNoCisJCSAqIHJlc3VsdDsgd2UncmUganVzdCBkaXNjYXJk aW5nIGlucHV0IHVudGlsIHdlIGdldCB0byB0aGUgbmV4dCBzeW5jCisJCSAq IGZyb20gdGhlIHNlcnZlci4gVGhlIGNsaWVudCBuZWVkcyB0byBrbm93IGl0 cyBxdWVyaWVzIGdvdCBhYm9ydGVkCisJCSAqIHNvIHdlIGNyZWF0ZSBhIGZh a2UgUEdyZXN1bHQgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGZyb20KKwkJICog UFFnZXRSZXN1bHQuCisJCSAqLworCQljb25uLT5yZXN1bHQgPSBQUW1ha2VF bXB0eVBHcmVzdWx0KGNvbm4sCisJCQkJCQkJCQkJICAgUEdSRVNfQkFUQ0hf QUJPUlRFRCk7CisJCWlmICghY29ubi0+cmVzdWx0KQorCQl7CisJCQlwcmlu dGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSAg bGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeSIpKTsKKwkJCXBxU2F2ZUVy cm9yUmVzdWx0KGNvbm4pOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWNv bm4tPmFzeW5jU3RhdHVzID0gUEdBU1lOQ19SRUFEWTsKKwl9CisJZWxzZQor CXsKKwkJLyogYWxsb3cgcGFyc2luZyB0byBjb250aW51ZSAqLworCQljb25u LT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfQlVTWTsKKwl9CisKKwlyZXR1cm4g dHJ1ZTsKK30KKwogCiAvKgogICogUFFnZXRSZXN1bHQKQEAgLTE3NDksMTAg KzIyMjIsMzIgQEAgUFFnZXRSZXN1bHQoUEdjb25uICpjb25uKQogCXN3aXRj aCAoY29ubi0+YXN5bmNTdGF0dXMpCiAJewogCQljYXNlIFBHQVNZTkNfSURM RToKKwkJY2FzZSBQR0FTWU5DX1FVRVVFRDoKIAkJCXJlcyA9IE5VTEw7CQkJ LyogcXVlcnkgaXMgY29tcGxldGUgKi8KIAkJCWJyZWFrOwogCQljYXNlIFBH QVNZTkNfUkVBRFk6CiAJCQlyZXMgPSBwcVByZXBhcmVBc3luY1Jlc3VsdChj b25uKTsKKwkJCWlmIChjb25uLT5iYXRjaF9zdGF0dXMgIT0gUFFCQVRDSF9N T0RFX09GRikKKwkJCXsKKwkJCQkvKgorCQkJCSAqIGJhdGNoZWQgcXVlcmll cyBhcmVuJ3QgZm9sbG93ZWQgYnkgYSBTeW5jIHRvIHB1dCB1cyBiYWNrIGlu CisJCQkJICogUEdBU1lOQ19JRExFIHN0YXRlLCBhbmQgd2hlbiB3ZSBkbyBn ZXQgYSBzeW5jIHdlIGNvdWxkCisJCQkJICogc3RpbGwgaGF2ZSBhbm90aGVy IGJhdGNoIGNvbWluZyBhZnRlciB0aGlzIG9uZS4KKwkJCQkgKgorCQkJCSAq IFRoZSBjb25uZWN0aW9uIGlzbid0IGlkbGUgc2luY2Ugd2UgY2FuJ3Qgc3Vi bWl0IG5ldworCQkJCSAqIG5vbmJhdGNoZWQgY29tbWFuZHMuIEl0IGlzbid0 IGFsc28gYnVzeSBzaW5jZSB0aGUgY3VycmVudAorCQkJCSAqIGNvbW1hbmQg aXMgZG9uZSBhbmQgd2UgbmVlZCB0byBwcm9jZXNzIGEgbmV3IG9uZS4KKwkJ CQkgKi8KKwkJCQljb25uLT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfUVVFVUVE OworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qIFNldCB0aGUgc3RhdGUg YmFjayB0byBCVVNZLCBhbGxvd2luZyBwYXJzaW5nIHRvIHByb2NlZWQuICov CisJCQkJY29ubi0+YXN5bmNTdGF0dXMgPSBQR0FTWU5DX0JVU1k7CisJCQl9 CisJCQlicmVhazsKKwkJY2FzZSBQR0FTWU5DX1JFQURZX01PUkU6CisJCQly ZXMgPSBwcVByZXBhcmVBc3luY1Jlc3VsdChjb25uKTsKIAkJCS8qIFNldCB0 aGUgc3RhdGUgYmFjayB0byBCVVNZLCBhbGxvd2luZyBwYXJzaW5nIHRvIHBy b2NlZWQuICovCiAJCQljb25uLT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfQlVT WTsKIAkJCWJyZWFrOwpAQCAtMTkzMiw2ICsyNDI3LDEzIEBAIFBRZXhlY1N0 YXJ0KFBHY29ubiAqY29ubikKIAlpZiAoIWNvbm4pCiAJCXJldHVybiBmYWxz ZTsKIAorCWlmIChjb25uLT5hc3luY1N0YXR1cyA9PSBQR0FTWU5DX1FVRVVF RCB8fCBjb25uLT5iYXRjaF9zdGF0dXMgIT0gUFFCQVRDSF9NT0RFX09GRikK Kwl7CisJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2Us CisJCQkJCQkgIGxpYnBxX2dldHRleHQoIlN5bmNocm9ub3VzIGNvbW1hbmQg ZXhlY3V0aW9uIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gYmF0Y2gg bW9kZVxuIikpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJLyoKIAkgKiBT aWxlbnRseSBkaXNjYXJkIGFueSBwcmlvciBxdWVyeSByZXN1bHQgdGhhdCBh cHBsaWNhdGlvbiBkaWRuJ3QgZWF0LgogCSAqIFRoaXMgaXMgcHJvYmFibHkg cG9vciBkZXNpZ24sIGJ1dCBpdCdzIGhlcmUgZm9yIGJhY2t3YXJkIGNvbXBh dGliaWxpdHkuCkBAIC0yMTI2LDYgKzI2MjgsOSBAQCBQUXNlbmREZXNjcmli ZVBvcnRhbChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnBvcnRhbCkKIHN0 YXRpYyBpbnQKIFBRc2VuZERlc2NyaWJlKFBHY29ubiAqY29ubiwgY2hhciBk ZXNjX3R5cGUsIGNvbnN0IGNoYXIgKmRlc2NfdGFyZ2V0KQogeworCVBHY29t bWFuZFF1ZXVlRW50cnkgKnBpcGVDbWQgPSBOVUxMOworCVBHUXVlcnlDbGFz cyAqcXVlcnljbGFzczsKKwogCS8qIFRyZWF0IG51bGwgZGVzY190YXJnZXQg YXMgZW1wdHkgc3RyaW5nICovCiAJaWYgKCFkZXNjX3RhcmdldCkKIAkJZGVz Y190YXJnZXQgPSAiIjsKQEAgLTIxNDEsNiArMjY0NiwyMCBAQCBQUXNlbmRE ZXNjcmliZShQR2Nvbm4gKmNvbm4sIGNoYXIgZGVzY190eXBlLCBjb25zdCBj aGFyICpkZXNjX3RhcmdldCkKIAkJcmV0dXJuIDA7CiAJfQogCisJaWYgKGNv bm4tPmJhdGNoX3N0YXR1cyAhPSBQUUJBVENIX01PREVfT0ZGKQorCXsKKwkJ cGlwZUNtZCA9IFBRbWFrZVBpcGVsaW5lZENvbW1hbmQoY29ubik7CisKKwkJ aWYgKHBpcGVDbWQgPT0gTlVMTCkKKwkJCXJldHVybiAwOwkJCS8qIGVycm9y IG1zZyBhbHJlYWR5IHNldCAqLworCisJCXF1ZXJ5Y2xhc3MgPSAmcGlwZUNt ZC0+cXVlcnljbGFzczsKKwl9CisJZWxzZQorCXsKKwkJcXVlcnljbGFzcyA9 ICZjb25uLT5xdWVyeWNsYXNzOworCX0KKwogCS8qIGNvbnN0cnVjdCB0aGUg RGVzY3JpYmUgbWVzc2FnZSAqLwogCWlmIChwcVB1dE1zZ1N0YXJ0KCdEJywg ZmFsc2UsIGNvbm4pIDwgMCB8fAogCQlwcVB1dGMoZGVzY190eXBlLCBjb25u KSA8IDAgfHwKQEAgLTIxNDksMTUgKzI2NjgsMTggQEAgUFFzZW5kRGVzY3Jp YmUoUEdjb25uICpjb25uLCBjaGFyIGRlc2NfdHlwZSwgY29uc3QgY2hhciAq ZGVzY190YXJnZXQpCiAJCWdvdG8gc2VuZEZhaWxlZDsKIAogCS8qIGNvbnN0 cnVjdCB0aGUgU3luYyBtZXNzYWdlICovCi0JaWYgKHBxUHV0TXNnU3RhcnQo J1MnLCBmYWxzZSwgY29ubikgPCAwIHx8Ci0JCXBxUHV0TXNnRW5kKGNvbm4p IDwgMCkKLQkJZ290byBzZW5kRmFpbGVkOworCWlmIChjb25uLT5iYXRjaF9z dGF0dXMgPT0gUFFCQVRDSF9NT0RFX09GRikKKwl7CisJCWlmIChwcVB1dE1z Z1N0YXJ0KCdTJywgZmFsc2UsIGNvbm4pIDwgMCB8fAorCQkJcHFQdXRNc2dF bmQoY29ubikgPCAwKQorCQkJZ290byBzZW5kRmFpbGVkOworCX0KIAogCS8q IHJlbWVtYmVyIHdlIGFyZSBkb2luZyBhIERlc2NyaWJlICovCi0JY29ubi0+ cXVlcnljbGFzcyA9IFBHUVVFUllfREVTQ1JJQkU7CisJKnF1ZXJ5Y2xhc3Mg PSBQR1FVRVJZX0RFU0NSSUJFOwogCiAJLyogcmVzZXQgbGFzdC1xdWVyeSBz dHJpbmcgKG5vdCByZWxldmFudCBub3cpICovCi0JaWYgKGNvbm4tPmxhc3Rf cXVlcnkpCisJaWYgKGNvbm4tPmxhc3RfcXVlcnkgJiYgY29ubi0+YmF0Y2hf c3RhdHVzICE9IFBRQkFUQ0hfTU9ERV9PRkYpCiAJewogCQlmcmVlKGNvbm4t Pmxhc3RfcXVlcnkpOwogCQljb25uLT5sYXN0X3F1ZXJ5ID0gTlVMTDsKQEAg LTIxNzEsMTAgKzI2OTMsMTQgQEAgUFFzZW5kRGVzY3JpYmUoUEdjb25uICpj b25uLCBjaGFyIGRlc2NfdHlwZSwgY29uc3QgY2hhciAqZGVzY190YXJnZXQp CiAJCWdvdG8gc2VuZEZhaWxlZDsKIAogCS8qIE9LLCBpdCdzIGxhdW5jaGVk ISAqLwotCWNvbm4tPmFzeW5jU3RhdHVzID0gUEdBU1lOQ19CVVNZOworCWlm IChjb25uLT5iYXRjaF9zdGF0dXMgIT0gUFFCQVRDSF9NT0RFX09GRikKKwkJ UFFhcHBlbmRQaXBlbGluZWRDb21tYW5kKGNvbm4sIHBpcGVDbWQpOworCWVs c2UKKwkJY29ubi0+YXN5bmNTdGF0dXMgPSBQR0FTWU5DX0JVU1k7CiAJcmV0 dXJuIDE7CiAKIHNlbmRGYWlsZWQ6CisJUFFyZWN5Y2xlUGlwZWxpbmVkQ29t bWFuZChjb25uLCBwaXBlQ21kKTsKIAlwcUhhbmRsZVNlbmRGYWlsdXJlKGNv bm4pOwogCXJldHVybiAwOwogfQpAQCAtMjU2OSw2ICszMDk1LDEzIEBAIFBR Zm4oUEdjb25uICpjb25uLAogCS8qIGNsZWFyIHRoZSBlcnJvciBzdHJpbmcg Ki8KIAlyZXNldFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UpOwog CisJaWYgKGNvbm4tPmJhdGNoX3N0YXR1cyAhPSBQUUJBVENIX01PREVfT0ZG KQorCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKKwkJCQkJCWxpYnBxX2dldHRleHQoIlN5bmNocm9ub3VzIGNvbW1hbmQg ZXhlY3V0aW9uIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gYmF0Y2gg bW9kZVxuIikpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKIAlpZiAoY29ubi0+ c29jayA9PSBQR0lOVkFMSURfU09DS0VUIHx8IGNvbm4tPmFzeW5jU3RhdHVz ICE9IFBHQVNZTkNfSURMRSB8fAogCQljb25uLT5yZXN1bHQgIT0gTlVMTCkK IAl7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90 b2NvbDIuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMi5j CmluZGV4IDNiMDUwMGYuLmMwMWYxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMi5jCisrKyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLXByb3RvY29sMi5jCkBAIC00MTIsNiArNDEyLDEyIEBA IHBxUGFyc2VJbnB1dDIoUEdjb25uICpjb25uKQogewogCWNoYXIJCWlkOwog CisJaWYgKGNvbm4tPmFzeW5jU3RhdHVzID09IFBHQVNZTkNfUVVFVUVEIHx8 IGNvbm4tPmJhdGNoX3N0YXR1cyAhPSBQUUJBVENIX01PREVfT0ZGKQorCXsK KwkJZnByaW50ZihzdGRlcnIsICJpbnRlcm5hbCBlcnJvciwgYXR0ZW1wdCB0 byByZWFkIHYyIHByb3RvY29sIGluIGJhdGNoIG1vZGUiKTsKKwkJYWJvcnQo KTsKKwl9CisKIAkvKgogCSAqIExvb3AgdG8gcGFyc2Ugc3VjY2Vzc2l2ZSBj b21wbGV0ZSBtZXNzYWdlcyBhdmFpbGFibGUgaW4gdGhlIGJ1ZmZlci4KIAkg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3Rv Y29sMy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMK aW5kZXggNTM3NzZlMi4uZTI0ZDdjZSAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKKysrIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKQEAgLTIyMCwxMCArMjIwLDE4IEBA IHBxUGFyc2VJbnB1dDMoUEdjb25uICpjb25uKQogCQkJCQkJcmV0dXJuOwog CQkJCQljb25uLT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfUkVBRFk7CiAJCQkJ CWJyZWFrOwotCQkJCWNhc2UgJ1onOgkJLyogYmFja2VuZCBpcyByZWFkeSBm b3IgbmV3IHF1ZXJ5ICovCisJCQkJY2FzZSAnWic6CQkvKiBzeW5jIHJlc3Bv bnNlLCBiYWNrZW5kIGlzIHJlYWR5IGZvciBuZXcgcXVlcnkgKi8KIAkJCQkJ aWYgKGdldFJlYWR5Rm9yUXVlcnkoY29ubikpCiAJCQkJCQlyZXR1cm47Ci0J CQkJCWNvbm4tPmFzeW5jU3RhdHVzID0gUEdBU1lOQ19JRExFOworCQkJCQlp ZiAoY29ubi0+YmF0Y2hfc3RhdHVzICE9IFBRQkFUQ0hfTU9ERV9PRkYpCisJ CQkJCXsKKwkJCQkJCWNvbm4tPmJhdGNoX3N0YXR1cyA9IFBRQkFUQ0hfTU9E RV9PTjsKKwkJCQkJCWNvbm4tPnJlc3VsdCA9IFBRbWFrZUVtcHR5UEdyZXN1 bHQoY29ubiwKKwkJCQkJCQkJUEdSRVNfQkFUQ0hfRU5EKTsKKwkJCQkJCWNv bm4tPmFzeW5jU3RhdHVzID0gUEdBU1lOQ19SRUFEWTsKKwkJCQkJfQorCQkJ CQllbHNlCisJCQkJCQljb25uLT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfSURM RTsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSAnSSc6CQkvKiBlbXB0eSBxdWVy eSAqLwogCQkJCQlpZiAoY29ubi0+cmVzdWx0ID09IE5VTEwpCkBAIC04ODAs NiArODg4LDkgQEAgcHFHZXRFcnJvck5vdGljZTMoUEdjb25uICpjb25uLCBi b29sIGlzRXJyb3IpCiAJUFFFeHBCdWZmZXJEYXRhIHdvcmtCdWY7CiAJY2hh cgkJaWQ7CiAKKwlpZiAoaXNFcnJvciAmJiBjb25uLT5iYXRjaF9zdGF0dXMg IT0gUFFCQVRDSF9NT0RFX09GRikKKwkJY29ubi0+YmF0Y2hfc3RhdHVzID0g UFFCQVRDSF9NT0RFX0FCT1JURUQ7CisKIAkvKgogCSAqIFNpbmNlIHRoZSBm aWVsZHMgbWlnaHQgYmUgcHJldHR5IGxvbmcsIHdlIGNyZWF0ZSBhIHRlbXBv cmFyeQogCSAqIFBRRXhwQnVmZmVyIHJhdGhlciB0aGFuIHVzaW5nIGNvbm4t PndvcmtCdWZmZXIuICB3b3JrQnVmZmVyIGlzIGludGVuZGVkCmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaAppbmRleCBlNzQ5NmM1Li4zMjFm YzYwIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1m ZS5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKQEAg LTk1LDcgKzk1LDEwIEBAIHR5cGVkZWYgZW51bQogCVBHUkVTX05PTkZBVEFM X0VSUk9SLAkJLyogbm90aWNlIG9yIHdhcm5pbmcgbWVzc2FnZSAqLwogCVBH UkVTX0ZBVEFMX0VSUk9SLAkJCS8qIHF1ZXJ5IGZhaWxlZCAqLwogCVBHUkVT X0NPUFlfQk9USCwJCQkvKiBDb3B5IEluL091dCBkYXRhIHRyYW5zZmVyIGlu IHByb2dyZXNzICovCi0JUEdSRVNfU0lOR0xFX1RVUExFCQkJLyogc2luZ2xl IHR1cGxlIGZyb20gbGFyZ2VyIHJlc3VsdHNldCAqLworCVBHUkVTX1NJTkdM RV9UVVBMRSwJCQkvKiBzaW5nbGUgdHVwbGUgZnJvbSBsYXJnZXIgcmVzdWx0 c2V0ICovCisJUEdSRVNfQkFUQ0hfRU5ELAkJCS8qIGVuZCBvZiBhIGJhdGNo IG9mIGNvbW1hbmRzICovCisJUEdSRVNfQkFUQ0hfQUJPUlRFRCwJCS8qIENv bW1hbmQgZGlkbid0IHJ1biBiZWNhdXNlIG9mIGFuIGFib3J0CisJCQkJCQkJ CSAqIGVhcmxpZXIgaW4gYSBiYXRjaCAqLwogfSBFeGVjU3RhdHVzVHlwZTsK IAogdHlwZWRlZiBlbnVtCkBAIC0xMzQsNiArMTM3LDE3IEBAIHR5cGVkZWYg ZW51bQogCVBRUElOR19OT19BVFRFTVBUCQkJLyogY29ubmVjdGlvbiBub3Qg YXR0ZW1wdGVkIChiYWQgcGFyYW1zKSAqLwogfSBQR1Bpbmc7CiAKKy8qCisg KiBQUUJhdGNoU3RhdHVzIC0gQ3VycmVudCBzdGF0dXMgb2YgYmF0Y2ggbW9k ZQorICovCisKK3R5cGVkZWYgZW51bQoreworCVBRQkFUQ0hfTU9ERV9PRkYs CisJUFFCQVRDSF9NT0RFX09OLAorCVBRQkFUQ0hfTU9ERV9BQk9SVEVECit9 CVBRQmF0Y2hTdGF0dXM7CisKIC8qIFBHY29ubiBlbmNhcHN1bGF0ZXMgYSBj b25uZWN0aW9uIHRvIHRoZSBiYWNrZW5kLgogICogVGhlIGNvbnRlbnRzIG9m IHRoaXMgc3RydWN0IGFyZSBub3Qgc3VwcG9zZWQgdG8gYmUga25vd24gdG8g YXBwbGljYXRpb25zLgogICovCkBAIC00MjUsNiArNDM5LDE0IEBAIGV4dGVy biBQR3Jlc3VsdCAqUFFnZXRSZXN1bHQoUEdjb25uICpjb25uKTsKIGV4dGVy biBpbnQJUFFpc0J1c3koUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJUFFj b25zdW1lSW5wdXQoUEdjb25uICpjb25uKTsKIAorLyogUm91dGluZXMgZm9y IGJhdGNoIG1vZGUgbWFuYWdlbWVudCAqLworZXh0ZXJuIGludAlQUWJhdGNo U3RhdHVzKFBHY29ubiAqY29ubik7CitleHRlcm4gaW50CVBRYmF0Y2hRdWV1 ZUNvdW50KFBHY29ubiAqY29ubik7CitleHRlcm4gaW50CVBRZW50ZXJCYXRj aE1vZGUoUEdjb25uICpjb25uKTsKK2V4dGVybiBpbnQJUFFleGl0QmF0Y2hN b2RlKFBHY29ubiAqY29ubik7CitleHRlcm4gaW50CVBRYmF0Y2hTeW5jUXVl dWUoUEdjb25uICpjb25uKTsKK2V4dGVybiBpbnQJUFFiYXRjaFByb2Nlc3NR dWV1ZShQR2Nvbm4gKmNvbm4pOworCiAvKiBMSVNURU4vTk9USUZZIHN1cHBv cnQgKi8KIGV4dGVybiBQR25vdGlmeSAqUFFub3RpZmllcyhQR2Nvbm4gKmNv bm4pOwogCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJw cS1pbnQuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCmlu ZGV4IDMzNTU2OGIuLjYxOWY1YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWludC5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2xpYnBxLWludC5oCkBAIC0yMTUsMTAgKzIxNSwxNSBAQCB0eXBlZGVm IGVudW0KIHsKIAlQR0FTWU5DX0lETEUsCQkJCS8qIG5vdGhpbmcncyBoYXBw ZW5pbmcsIGR1ZGUgKi8KIAlQR0FTWU5DX0JVU1ksCQkJCS8qIHF1ZXJ5IGlu IHByb2dyZXNzICovCi0JUEdBU1lOQ19SRUFEWSwJCQkJLyogcmVzdWx0IHJl YWR5IGZvciBQUWdldFJlc3VsdCAqLworCVBHQVNZTkNfUkVBRFksCQkJCS8q IHF1ZXJ5IGRvbmUsIHdhaXRpbmcgZm9yIGNsaWVudCB0byBmZXRjaAorCQkJ CQkJCQkgKiByZXN1bHQgKi8KKwlQR0FTWU5DX1JFQURZX01PUkUsCQkJLyog cXVlcnkgZG9uZSwgd2FpdGluZyBmb3IgY2xpZW50IHRvIGZldGNoCisJCQkJ CQkJCSAqIHJlc3VsdCwgTW9yZSByZXN1bHRzIGV4cGVjdGVkIGZyb20gdGhp cworCQkJCQkJCQkgKiBxdWVyeSAqLwogCVBHQVNZTkNfQ09QWV9JTiwJCQkv KiBDb3B5IEluIGRhdGEgdHJhbnNmZXIgaW4gcHJvZ3Jlc3MgKi8KIAlQR0FT WU5DX0NPUFlfT1VULAkJCS8qIENvcHkgT3V0IGRhdGEgdHJhbnNmZXIgaW4g cHJvZ3Jlc3MgKi8KLQlQR0FTWU5DX0NPUFlfQk9USAkJCS8qIENvcHkgSW4v T3V0IGRhdGEgdHJhbnNmZXIgaW4gcHJvZ3Jlc3MgKi8KKwlQR0FTWU5DX0NP UFlfQk9USCwJCQkvKiBDb3B5IEluL091dCBkYXRhIHRyYW5zZmVyIGluIHBy b2dyZXNzICovCisJUEdBU1lOQ19RVUVVRUQJCQkJLyogQ3VycmVudCBxdWVy eSBkb25lLCBtb3JlIGluIHF1ZXVlICovCiB9IFBHQXN5bmNTdGF0dXNUeXBl OwogCiAvKiBQR1F1ZXJ5Q2xhc3MgdHJhY2tzIHdoaWNoIHF1ZXJ5IHByb3Rv Y29sIHdlIGFyZSBub3cgZXhlY3V0aW5nICovCkBAIC0yMjcsNyArMjMyLDgg QEAgdHlwZWRlZiBlbnVtCiAJUEdRVUVSWV9TSU1QTEUsCQkJCS8qIHNpbXBs ZSBRdWVyeSBwcm90b2NvbCAoUFFleGVjKSAqLwogCVBHUVVFUllfRVhURU5E RUQsCQkJLyogZnVsbCBFeHRlbmRlZCBwcm90b2NvbCAoUFFleGVjUGFyYW1z KSAqLwogCVBHUVVFUllfUFJFUEFSRSwJCQkvKiBQYXJzZSBvbmx5IChQUXBy ZXBhcmUpICovCi0JUEdRVUVSWV9ERVNDUklCRQkJCS8qIERlc2NyaWJlIFN0 YXRlbWVudCBvciBQb3J0YWwgKi8KKwlQR1FVRVJZX0RFU0NSSUJFLAkJCS8q IERlc2NyaWJlIFN0YXRlbWVudCBvciBQb3J0YWwgKi8KKwlQR1FVRVJZX1NZ TkMJCQkJLyogQSBwcm90b2NvbCBzeW5jIHRvIGVuZCBhIGJhdGNoICovCiB9 IFBHUXVlcnlDbGFzczsKIAogLyogUEdTZXRlbnZTdGF0dXNUeXBlIGRlZmlu ZXMgdGhlIHN0YXRlIG9mIHRoZSBQUVNldGVudiBzdGF0ZSBtYWNoaW5lICov CkBAIC0yOTcsNiArMzAzLDIyIEBAIHR5cGVkZWYgZW51bSBwZ19jb25uX2hv c3RfdHlwZQogCUNIVF9VTklYX1NPQ0tFVAogfSBwZ19jb25uX2hvc3RfdHlw ZTsKIAorLyogQW4gZW50cnkgaW4gdGhlIHBlbmRpbmcgY29tbWFuZCBxdWV1 ZS4gVXNlZCBieSBiYXRjaCBtb2RlIHRvIGtlZXAgdHJhY2sKKyAqIG9mIHRo ZSBleHBlY3RlZCByZXN1bHRzIG9mIGZ1dHVyZSBjb21tYW5kcyB3ZSd2ZSBk aXNwYXRjaGVkLgorICoKKyAqIE5vdGUgdGhhdCBlbnRyaWVzIGluIHRoaXMg bGlzdCBhcmUgcmV1c2VkIGJ5IGJlaW5nIHplcm9lZCBhbmQgYXBwZW5kZWQg dG8KKyAqIHRoZSB0YWlsIHdoZW4gcG9wcGVkIG9mZiB0aGUgaGVhZC4gVGhl IGVudHJ5IHdpdGggbnVsbCBuZXh0IHBvaW50ZXIgaXMgbm90CisgKiB0aGUg ZW5kIG9mIHRoZSBsaXN0IG9mIGV4cGVjdGVkIGNvbW1hbmRzLCB0aGF0J3Mg dGhlIHRhaWwgcG9pbnRlciBpbgorICogcGdfY29ubi4KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgcGdDb21tYW5kUXVldWVFbnRyeQoreworCVBHUXVlcnlDbGFz cyBxdWVyeWNsYXNzOwkvKiBRdWVyeSB0eXBlOyBQR1FVRVJZX1NZTkMgZm9y IHN5bmMgbXNnICovCisJY2hhcgkgICAqcXVlcnk7CQkJLyogU1FMIGNvbW1h bmQsIG9yIE5VTEwgaWYgdW5rbm93biAqLworCXN0cnVjdCBwZ0NvbW1hbmRR dWV1ZUVudHJ5ICpuZXh0OworfQlQR2NvbW1hbmRRdWV1ZUVudHJ5OworCisK IC8qCiAgKiBwZ19jb25uX2hvc3Qgc3RvcmVzIGFsbCBpbmZvcm1hdGlvbiBh Ym91dCBvbmUgb2YgcG9zc2libHkgc2V2ZXJhbCBob3N0cwogICogbWVudGlv bmVkIGluIHRoZSBjb25uZWN0aW9uIHN0cmluZy4gIERlcml2ZWQgYnkgc3Bs aXR0aW5nIHRoZSBwZ2hvc3QKQEAgLTM4NCw2ICs0MDYsNyBAQCBzdHJ1Y3Qg cGdfY29ubgogCWJvb2wJCW9wdGlvbnNfdmFsaWQ7CS8qIHRydWUgaWYgT0sg dG8gYXR0ZW1wdCBjb25uZWN0aW9uICovCiAJYm9vbAkJbm9uYmxvY2tpbmc7 CS8qIHdoZXRoZXIgdGhpcyBjb25uZWN0aW9uIGlzIHVzaW5nIG5vbmJsb2Nr CiAJCQkJCQkJCSAqIHNlbmRpbmcgc2VtYW50aWNzICovCisJUFFCYXRjaFN0 YXR1cyBiYXRjaF9zdGF0dXM7IC8qIEJhdGNoKHBpcGVsaW5pbmcpIG1vZGUg c3RhdHVzIG9mIGNvbm5lY3Rpb24gKi8KIAlib29sCQlzaW5nbGVSb3dNb2Rl OwkvKiByZXR1cm4gY3VycmVudCBxdWVyeSByZXN1bHQgcm93LWJ5LXJvdz8g Ki8KIAljaGFyCQljb3B5X2lzX2JpbmFyeTsgLyogMSA9IGNvcHkgYmluYXJ5 LCAwID0gY29weSB0ZXh0ICovCiAJaW50CQkJY29weV9hbHJlYWR5X2RvbmU7 CQkvKiAjIGJ5dGVzIGFscmVhZHkgcmV0dXJuZWQgaW4gQ09QWQpAQCAtMzk2 LDYgKzQxOSwxNiBAQCBzdHJ1Y3QgcGdfY29ubgogCWludAkJCXdoaWNoaG9z dDsJCS8qIGhvc3Qgd2UncmUgY3VycmVudGx5IGNvbnNpZGVyaW5nICovCiAJ cGdfY29ubl9ob3N0ICpjb25uaG9zdDsJCS8qIGRldGFpbHMgYWJvdXQgZWFj aCBwb3NzaWJsZSBob3N0ICovCiAKKwkvKgorCSAqIFRoZSBjb21tYW5kIHF1 ZXVlCisJICoKKwkgKiBoZWFkIGlzIHRoZSBuZXh0IHBlbmRpbmcgY21kLCB0 YWlsIGlzIHdoZXJlIHdlIGFwcGVuZCBuZXcgY29tbWFuZHMuCisJICogRnJl ZWQgZW50cmllcyBmb3IgcmVjeWNsaW5nIGdvIG9uIHRoZSByZWN5Y2xlIGxp bmtlZCBsaXN0LgorCSAqLworCVBHY29tbWFuZFF1ZXVlRW50cnkgKmNtZF9x dWV1ZV9oZWFkOworCVBHY29tbWFuZFF1ZXVlRW50cnkgKmNtZF9xdWV1ZV90 YWlsOworCVBHY29tbWFuZFF1ZXVlRW50cnkgKmNtZF9xdWV1ZV9yZWN5Y2xl OworCiAJLyogQ29ubmVjdGlvbiBkYXRhICovCiAJcGdzb2NrZXQJc29jazsJ CQkvKiBGRCBmb3Igc29ja2V0LCBQR0lOVkFMSURfU09DS0VUIGlmCiAJCQkJ CQkJCSAqIHVuY29ubmVjdGVkICovCkBAIC02ODQsNiArNzE3LDggQEAgZXh0 ZXJuIGNoYXIgKmxpYnBxX25nZXR0ZXh0KGNvbnN0IGNoYXIgKm1zZ2lkLCBj b25zdCBjaGFyICptc2dpZF9wbHVyYWwsIHVuc2lnbmUKICNkZWZpbmUgbGli cHFfbmdldHRleHQocywgcCwgbikgKChuKSA9PSAxID8gKHMpIDogKHApKQog I2VuZGlmCiAKKyNkZWZpbmUgbGlicHFfZ2V0dGV4dF9ub29wKHgpICh4KQor CiAvKgogICogVGhlc2UgbWFjcm9zIGFyZSBuZWVkZWQgdG8gbGV0IGVycm9y LWhhbmRsaW5nIGNvZGUgYmUgcG9ydGFibGUgYmV0d2VlbgogICogVW5peCBh bmQgV2luZG93cy4gICh1Z2gpCg== ------------=_1497973886-9495-13 Content-Type: text-x-patch; name="pgbench-batch-mode-v3.patch" Content-Disposition: attachment; filename="pgbench-batch-mode-v3.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDE0YWE1ODcuLjAxNjQ1NWUg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMjY5LDcgKzI2OSw4IEBA IHR5cGVkZWYgZW51bQogCSAqCiAJICogQ1NUQVRFX1NUQVJUX0NPTU1BTkQg c3RhcnRzIHRoZSBleGVjdXRpb24gb2YgYSBjb21tYW5kLiAgT24gYSBTUUwK IAkgKiBjb21tYW5kLCB0aGUgY29tbWFuZCBpcyBzZW50IHRvIHRoZSBzZXJ2 ZXIsIGFuZCB3ZSBtb3ZlIHRvCi0JICogQ1NUQVRFX1dBSVRfUkVTVUxUIHN0 YXRlLiAgT24gYSBcc2xlZXAgbWV0YS1jb21tYW5kLCB0aGUgdGltZXIgaXMg c2V0LAorCSAqIENTVEFURV9XQUlUX1JFU1VMVCBzdGF0ZSB1bmxlc3MgaW4g YmF0Y2ggbW9kZS4KKwkgKiBPbiBhIFxzbGVlcCBtZXRhLWNvbW1hbmQsIHRo ZSB0aW1lciBpcyBzZXQsCiAJICogYW5kIHdlIGVudGVyIHRoZSBDU1RBVEVf U0xFRVAgc3RhdGUgdG8gd2FpdCBmb3IgaXQgdG8gZXhwaXJlLiBPdGhlcgog CSAqIG1ldGEtY29tbWFuZHMgYXJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5Lgog CSAqCkBAIC0xODgyLDExICsxODgzLDI0IEBAIHNlbmRDb21tYW5kKENTdGF0 ZSAqc3QsIENvbW1hbmQgKmNvbW1hbmQpCiAJCQkJaWYgKGNvbW1hbmRzW2pd LT50eXBlICE9IFNRTF9DT01NQU5EKQogCQkJCQljb250aW51ZTsKIAkJCQlw cmVwYXJlZFN0YXRlbWVudE5hbWUobmFtZSwgc3QtPnVzZV9maWxlLCBqKTsK LQkJCQlyZXMgPSBQUXByZXBhcmUoc3QtPmNvbiwgbmFtZSwKLQkJCQkJCSAg Y29tbWFuZHNbal0tPmFyZ3ZbMF0sIGNvbW1hbmRzW2pdLT5hcmdjIC0gMSwg TlVMTCk7Ci0JCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNf Q09NTUFORF9PSykKLQkJCQkJZnByaW50ZihzdGRlcnIsICIlcyIsIFBRZXJy b3JNZXNzYWdlKHN0LT5jb24pKTsKLQkJCQlQUWNsZWFyKHJlcyk7CisJCQkJ aWYgKFBRYmF0Y2hTdGF0dXMoc3QtPmNvbikgPT0gUFFCQVRDSF9NT0RFX09G RikKKwkJCQl7CisJCQkJCXJlcyA9IFBRcHJlcGFyZShzdC0+Y29uLCBuYW1l LAorCQkJCQkJCQkJY29tbWFuZHNbal0tPmFyZ3ZbMF0sIGNvbW1hbmRzW2pd LT5hcmdjIC0gMSwgTlVMTCk7CisJCQkJCWlmIChQUXJlc3VsdFN0YXR1cyhy ZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJCQkJCQlmcHJpbnRmKHN0ZGVy ciwgIiVzIiwgUFFlcnJvck1lc3NhZ2Uoc3QtPmNvbikpOworCQkJCQlQUWNs ZWFyKHJlcyk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qCisJ CQkJCSAqIEluIGJhdGNoIG1vZGUsIHdlIHVzZSBhc3luY2hyb25vdXMgZnVu Y3Rpb25zLiBJZiBhIHNlcnZlci1zaWRlCisJCQkJCSAqIGVycm9yIG9jY3Vy cywgaXQgd2lsbCBiZSBwcm9jZXNzZWQgbGF0ZXIgYW1vbmcgdGhlIG90aGVy IHJlc3VsdHMuCisJCQkJCSAqLworCQkJCQlpZiAoIVBRc2VuZFByZXBhcmUo c3QtPmNvbiwgbmFtZSwKKwkJCQkJCQkJCSAgIGNvbW1hbmRzW2pdLT5hcmd2 WzBdLCBjb21tYW5kc1tqXS0+YXJnYyAtIDEsIE5VTEwpKQorCQkJCQkJZnBy aW50ZihzdGRlcnIsICIlcyIsIFBRZXJyb3JNZXNzYWdlKHN0LT5jb24pKTsK KwkJCQl9CiAJCQl9CiAJCQlzdC0+cHJlcGFyZWRbc3QtPnVzZV9maWxlXSA9 IHRydWU7CiAJCX0KQEAgLTIxNjUsNyArMjE3OSwxMyBAQCBkb0N1c3RvbShU U3RhdGUgKnRocmVhZCwgQ1N0YXRlICpzdCwgU3RhdHNEYXRhICphZ2cpCiAJ CQkJCQlyZXR1cm47CiAJCQkJCX0KIAkJCQkJZWxzZQotCQkJCQkJc3QtPnN0 YXRlID0gQ1NUQVRFX1dBSVRfUkVTVUxUOworCQkJCQl7CisJCQkJCQkvKiBX YWl0IGZvciByZXN1bHRzLCB1bmxlc3MgaW4gYmF0Y2ggbW9kZSAqLworCQkJ CQkJaWYgKFBRYmF0Y2hTdGF0dXMoc3QtPmNvbikgPT0gUFFCQVRDSF9NT0RF X09GRikKKwkJCQkJCQlzdC0+c3RhdGUgPSBDU1RBVEVfV0FJVF9SRVNVTFQ7 CisJCQkJCQllbHNlCisJCQkJCQkJc3QtPnN0YXRlID0gQ1NUQVRFX0VORF9D T01NQU5EOworCQkJCQl9CiAJCQkJfQogCQkJCWVsc2UgaWYgKGNvbW1hbmQt PnR5cGUgPT0gTUVUQV9DT01NQU5EKQogCQkJCXsKQEAgLTIyMDcsNyArMjIy Nyw1MSBAQCBkb0N1c3RvbShUU3RhdGUgKnRocmVhZCwgQ1N0YXRlICpzdCwg U3RhdHNEYXRhICphZ2cpCiAJCQkJCX0KIAkJCQkJZWxzZQogCQkJCQl7Ci0J CQkJCQlpZiAocGdfc3RyY2FzZWNtcChhcmd2WzBdLCAic2V0IikgPT0gMCkK KwkJCQkJCWlmIChwZ19zdHJjYXNlY21wKGFyZ3ZbMF0sICJiZWdpbmJhdGNo IikgPT0gMCkKKwkJCQkJCXsKKwkJCQkJCQkvKgorCQkJCQkJCSAqIEluIGJh dGNoIG1vZGUsIHdlIHVzZSBhIHdvcmtmbG93IGJhc2VkIG9uIGxpYnBxIGJh dGNoCisJCQkJCQkJICogZnVuY3Rpb25zLgorCQkJCQkJCSAqLworCQkJCQkJ CWlmIChxdWVyeW1vZGUgPT0gUVVFUllfU0lNUExFKQorCQkJCQkJCXsKKwkJ CQkJCQkJY29tbWFuZEZhaWxlZChzdCwgImNhbm5vdCB1c2UgYmF0Y2ggbW9k ZSB3aXRoIHRoZSBzaW1wbGUgcXVlcnkgcHJvdG9jb2wiKTsKKwkJCQkJCQkJ c3QtPnN0YXRlID0gQ1NUQVRFX0FCT1JURUQ7CisJCQkJCQkJCWJyZWFrOwor CQkJCQkJCX0KKworCQkJCQkJCWlmIChQUWJhdGNoU3RhdHVzKHN0LT5jb24p ICE9IFBRQkFUQ0hfTU9ERV9PRkYpCisJCQkJCQkJeworCQkJCQkJCQljb21t YW5kRmFpbGVkKHN0LCAiYWxyZWFkeSBpbiBiYXRjaCBtb2RlIik7CisJCQkJ CQkJCWJyZWFrOworCQkJCQkJCX0KKwkJCQkJCQlpZiAoUFFlbnRlckJhdGNo TW9kZShzdC0+Y29uKSA9PSAwKQorCQkJCQkJCXsKKwkJCQkJCQkJY29tbWFu ZEZhaWxlZChzdCwgImZhaWxlZCB0byBzdGFydCBhIGJhdGNoIik7CisJCQkJ CQkJCWJyZWFrOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCWVsc2UgaWYg KHBnX3N0cmNhc2VjbXAoYXJndlswXSwgImVuZGJhdGNoIikgPT0gMCkKKwkJ CQkJCXsKKwkJCQkJCQlpZiAoUFFiYXRjaFN0YXR1cyhzdC0+Y29uKSAhPSBQ UUJBVENIX01PREVfT04pCisJCQkJCQkJeworCQkJCQkJCQljb21tYW5kRmFp bGVkKHN0LCAibm90IGluIGJhdGNoIG1vZGUiKTsKKwkJCQkJCQkJYnJlYWs7 CisJCQkJCQkJfQorCQkJCQkJCWlmICghUFFiYXRjaFN5bmNRdWV1ZShzdC0+ Y29uKSkKKwkJCQkJCQl7CisJCQkJCQkJCWNvbW1hbmRGYWlsZWQoc3QsICJm YWlsZWQgdG8gZW5kIHRoZSBiYXRjaCIpOworCQkJCQkJCQlzdC0+c3RhdGUg PSBDU1RBVEVfQUJPUlRFRDsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJfQor CQkJCQkJCWlmIChQUWV4aXRCYXRjaE1vZGUoc3QtPmNvbikgPT0gMCkKKwkJ CQkJCQl7CisJCQkJCQkJCS8qIGNvbGxlY3QgcGVuZGluZyByZXN1bHRzIGJl Zm9yZSBnZXR0aW5nIG91dCBvZiBiYXRjaCBtb2RlICovCisJCQkJCQkJCXN0 LT5zdGF0ZSA9IENTVEFURV9XQUlUX1JFU1VMVDsKKwkJCQkJCQkJYnJlYWs7 CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQkJZWxzZSBpZiAocGdfc3RyY2Fz ZWNtcChhcmd2WzBdLCAic2V0IikgPT0gMCkKIAkJCQkJCXsKIAkJCQkJCQlQ Z0JlbmNoRXhwciAqZXhwciA9IGNvbW1hbmQtPmV4cHI7CiAJCQkJCQkJUGdC ZW5jaFZhbHVlIHJlc3VsdDsKQEAgLTIyNzksNiArMjM0Myw3IEBAIGRvQ3Vz dG9tKFRTdGF0ZSAqdGhyZWFkLCBDU3RhdGUgKnN0LCBTdGF0c0RhdGEgKmFn ZykKIAkJCQl9CiAJCQkJYnJlYWs7CiAKKwogCQkJCS8qCiAJCQkJICogV2Fp dCBmb3IgdGhlIGN1cnJlbnQgU1FMIGNvbW1hbmQgdG8gY29tcGxldGUKIAkJ CQkgKi8KQEAgLTIyOTUsNiArMjM2MCwxMyBAQCBkb0N1c3RvbShUU3RhdGUg KnRocmVhZCwgQ1N0YXRlICpzdCwgU3RhdHNEYXRhICphZ2cpCiAJCQkJaWYg KFBRaXNCdXN5KHN0LT5jb24pKQogCQkJCQlyZXR1cm47CQkvKiBkb24ndCBo YXZlIHRoZSB3aG9sZSByZXN1bHQgeWV0ICovCiAKKwkJCQlpZiAoUFFiYXRj aFN0YXR1cyhzdC0+Y29uKSA9PSBQUUJBVENIX01PREVfT04gJiYKKwkJCQkJ IVBRYmF0Y2hQcm9jZXNzUXVldWUoc3QtPmNvbikpCisJCQkJeworCQkJCQkv KiBubyBjb21wbGV0ZSByZXN1bHQgeWV0IGluIGJhdGNoIG1vZGUqLworCQkJ CQlyZXR1cm47CisJCQkJfQorCiAJCQkJLyoKIAkJCQkgKiBSZWFkIGFuZCBk aXNjYXJkIHRoZSBxdWVyeSByZXN1bHQ7CiAJCQkJICovCkBAIC0yMzA3LDcg KzIzNzksMjIgQEAgZG9DdXN0b20oVFN0YXRlICp0aHJlYWQsIENTdGF0ZSAq c3QsIFN0YXRzRGF0YSAqYWdnKQogCQkJCQkJLyogT0sgKi8KIAkJCQkJCVBR Y2xlYXIocmVzKTsKIAkJCQkJCWRpc2NhcmRfcmVzcG9uc2Uoc3QpOwotCQkJ CQkJc3QtPnN0YXRlID0gQ1NUQVRFX0VORF9DT01NQU5EOworCQkJCQkJLyoK KwkJCQkJCSAqIEluIG5vbi1iYXRjaCBtb2RlLCBvbmx5IG9uZSByZXN1bHQg cGVyIGNvbW1hbmQgaXMgZXhwZWN0ZWQuCisJCQkJCQkgKiBJbiBiYXRjaCBt b2RlLCBrZWVwIHdhaXRpbmcgZm9yIHJlc3VsdHMgdW50aWwgZ2V0dGluZwor CQkJCQkJICogUEdSRVNfQkFUQ0hfRU5ELgorCQkJCQkJICovCisJCQkJCQlp ZiAoUFFiYXRjaFN0YXR1cyhzdC0+Y29uKSAhPSBQUUJBVENIX01PREVfT04p CisJCQkJCQkJc3QtPnN0YXRlID0gQ1NUQVRFX0VORF9DT01NQU5EOworCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgUEdSRVNfQkFUQ0hfRU5EOgorCQkJCQkJ aWYgKFBRZXhpdEJhdGNoTW9kZShzdC0+Y29uKSA9PSAxKQorCQkJCQkJewor CQkJCQkJCS8qIGFsbCByZXN1bHRzIGNvbGxlY3RlZCwgZXhpdCBvdXQgb2Yg Y29tbWFuZCBhbmQgYmF0Y2ggbW9kZSAqLworCQkJCQkJCXN0LT5zdGF0ZSA9 IENTVEFURV9FTkRfQ09NTUFORDsKKwkJCQkJCX0KKwkJCQkJCWVsc2UKKwkJ CQkJCQlmcHJpbnRmKHN0ZGVyciwgImNsaWVudCAlZCB0byBleGl0IGJhdGNo IG1vZGUiLCBzdC0+aWQpOwogCQkJCQkJYnJlYWs7CiAJCQkJCWRlZmF1bHQ6 CiAJCQkJCQljb21tYW5kRmFpbGVkKHN0LCBQUWVycm9yTWVzc2FnZShzdC0+ Y29uKSk7CkBAIC0zMTczLDYgKzMyNjAsMTMgQEAgcHJvY2Vzc19iYWNrc2xh c2hfY29tbWFuZChQc3FsU2NhblN0YXRlIHNzdGF0ZSwgY29uc3QgY2hhciAq c291cmNlKQogCQkJc3ludGF4X2Vycm9yKHNvdXJjZSwgbGluZW5vLCBteV9j b21tYW5kLT5saW5lLCBteV9jb21tYW5kLT5hcmd2WzBdLAogCQkJCQkJICJt aXNzaW5nIGNvbW1hbmQiLCBOVUxMLCAtMSk7CiAJfQorCWVsc2UgaWYgKHBn X3N0cmNhc2VjbXAobXlfY29tbWFuZC0+YXJndlswXSwgImJlZ2luYmF0Y2gi KSA9PSAwIHx8CisJCQkgcGdfc3RyY2FzZWNtcChteV9jb21tYW5kLT5hcmd2 WzBdLCAiZW5kYmF0Y2giKSA9PSAwICkKKwl7CisJCWlmIChteV9jb21tYW5k LT5hcmdjID4gMSkKKwkJCXN5bnRheF9lcnJvcihzb3VyY2UsIGxpbmVubywg bXlfY29tbWFuZC0+bGluZSwgbXlfY29tbWFuZC0+YXJndlswXSwKKwkJCQkJ CSAidW5leHBlY3RlZCBhcmd1bWVudCIsIE5VTEwsIC0xKTsKKwl9CiAJZWxz ZQogCXsKIAkJc3ludGF4X2Vycm9yKHNvdXJjZSwgbGluZW5vLCBteV9jb21t YW5kLT5saW5lLCBteV9jb21tYW5kLT5hcmd2WzBdLAo= ------------=_1497973886-9495-13 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers ------------=_1497973886-9495-13--