Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lyknj-0007yu-Mn for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Jul 2021 00:43:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lykng-0007B0-Oq for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Jul 2021 00:43:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lykne-0007As-Pr for pgsql-hackers@lists.postgresql.org; Thu, 01 Jul 2021 00:43:28 +0000 Received: from new1-smtp.messagingengine.com ([66.111.4.221]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lyknZ-0005re-Fe for pgsql-hackers@lists.postgresql.org; Thu, 01 Jul 2021 00:43:25 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailnew.nyi.internal (Postfix) with ESMTP id 0C626580B2A; Wed, 30 Jun 2021 20:43:20 -0400 (EDT) Received: from imap21 ([10.202.2.71]) by compute1.internal (MEProxy); Wed, 30 Jun 2021 20:43:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eulerto.com; h= mime-version:message-id:in-reply-to:references:date:from:to:cc :subject:content-type; s=fm2; bh=mlwRUJIC5Xtvu9ZxVJPX7g2xXxsQdB3 s14sJx5qqBjg=; b=JD5ba6kpR8xc+BF0RbU7aIYyn90xpWoPTeVSMrNM98YNG8R uyCPDx1Mr4whTwfOe2CcDoz8B0KrdHvlC9ocERwKwyY8U7CiE/LjBgCMIEiOa5En 0sn1KKUAXtNtahCfKB/GhTM80gfhUaG1OvLWyaYHtnlpA9dkn1VROtLmdCrQJQEt 8vf65HsfM3hmCKWN0o0QYRY1RAOpTGNn73nKshwr/QhilCqwkUt8dtCHMRcZyQVn FdQQ2BRvGf+m9AayRsR2GzRk/gYroRaARt4F2HB9sWkhAR8zUxmsOqMnxCQGyjgV QDX7hHknHXkq5FQRsMAuqbdytAV/OMWfxJ2GChQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=mlwRUJ IC5Xtvu9ZxVJPX7g2xXxsQdB3s14sJx5qqBjg=; b=r8eBsib0Od1ezNpV+OxzPb YXBJmH+/OjKlNLBIMyRfi4VHq/P78PWyAXJ+3hl5/Q+TfgI1DkX8D6eiCiBqetWp AnZON1mJNrBIQIX1WKdZKPsQNm9bb4xeKpIrB3v+N7O3QBYiOnUoJKzmhnN7lDOS On32u1hBhETy3+Epp3P4vVLAazDwde+i+DhTB7ApFFu04pBKjOECkJi0TKV6oJwH Z9nHbq7/PnqeyliWiFrk9qrC/sOx96Jjnl87k7C+97WB6N9nrwuGZvvrCj0Futkg zSnuxlslV6BI1QopXcAIr/Pnx7JqbEOG43bbfex8tnk8uItF1OEVADEcDHkShgwQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrfeeihedgfeeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepofgfggfkjghffffhvffutgesmhdtreerreertdenucfhrhhomhepfdfguhhl vghrucfvrghvvghirhgrfdcuoegvuhhlvghrsegvuhhlvghrthhordgtohhmqeenucggtf frrghtthgvrhhnpefhvdelgfekvdetjeejtefhudejfeeileetjeeufeetffegjedtvdeu kedtgeffgeenucffohhmrghinhepvghnthgvrhhprhhishgvuggsrdgtohhmnecuvehluh hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepvghulhgvrhesvghu lhgvrhhtohdrtghomh X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id 0555251C0060; Wed, 30 Jun 2021 20:43:18 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.5.0-alpha0-530-gd0c265785f-fm-20210616.002-gd0c26578 Mime-Version: 1.0 Message-Id: <0ca5b27f-edf8-4ef9-a9e2-533216890f62@www.fastmail.com> In-Reply-To: References: <8cf1ea71-b609-00e8-b8f0-c85ba61b7312@pgmasters.net> <4dbad191-9b40-4bb6-8940-d18f2e93c3ce@www.fastmail.com> <5b9fceed-8f91-467f-a64e-2134c5c3f496@www.fastmail.com> <52edc9d2-8e52-4cde-9a15-991961b78387@www.fastmail.com> <9d5ef845-391a-4c66-b298-0f594d9e6828@www.fastmail.com> <7e4b5c48-a3d3-4b7e-b455-2d50c60a0ab7@www.fastmail.com> <57373e8b-1264-cd37-404e-8edbcf7884cc@enterprisedb.com> <86d76e89-9a96-411a-8077-f8918cbae2e1@www.fastmail.com> <3dbf7241-a417-45c9-9a0e-04a079de9b9f@www.fastmail.com> Date: Wed, 30 Jun 2021 21:42:58 -0300 From: "Euler Taveira" To: "Amit Kapila" , "Peter Smith" Cc: "Rahila Syed" , "Peter Eisentraut" , =?UTF-8?Q?=C3=96nder_Kalac=C4=B1?= , japin , "Michael Paquier" , "David Steele" , "Craig Ringer" , "Tomas Vondra" , "Amit Langote" , "PostgreSQL Hackers" Subject: Re: row filtering for logical replication Content-Type: multipart/mixed; boundary=a84b75ce88ee417fb2e7d36602f8e43e List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --a84b75ce88ee417fb2e7d36602f8e43e Content-Type: multipart/alternative; boundary=ed7aecb0cfbc4f91b30d6cfd907c21d1 --ed7aecb0cfbc4f91b30d6cfd907c21d1 Content-Type: text/plain On Fri, Jun 18, 2021, at 8:40 AM, Amit Kapila wrote: > I have rebased the patch so that you can try it out. The main thing I > have done is to remove changes in worker.c and created a specialized > function to create estate for pgoutput.c as I don't think we need what > is done in worker.c. > > Euler, do let me know if you are not happy with the change in pgoutput.c? Amit, thanks for rebasing this patch. I already had a similar rebased patch in my local tree. A recent patch broke your version v15 so I rebased it. I like the idea of a simple create_estate_for_relation() function (I fixed an oversight regarding GetCurrentCommandId(false) because it is used only for read-only purposes). This patch also replaces all references to version 14. Commit ef948050 made some changes in the snapshot handling. Set the current active snapshot might not be required but future changes to allow functions will need it. As the previous patches, it includes commits (0002 and 0003) that are not intended to be committed. They are available for test-only purposes. -- Euler Taveira EDB https://www.enterprisedb.com/ --ed7aecb0cfbc4f91b30d6cfd907c21d1 Content-Type: text/html Content-Transfer-Encoding: quoted-printable
On Fri, Jun 18,= 2021, at 8:40 AM, Amit Kapila wrote:
I have rebased the patch so that you can try = it out. The main thing I
have done is to remove changes in= worker.c and created a specialized
function to create est= ate for pgoutput.c as I don't think we need what
is done i= n worker.c.

Euler, do let me know if you ar= e not happy with the change in pgoutput.c?
Am= it, thanks for rebasing this patch. I already had a similar rebased patc= h in
my local tree. A recent patch broke your version v15 = so I rebased it.

I like the idea of a simpl= e create_estate_for_relation() function (I fixed an
oversi= ght regarding GetCurrentCommandId(false) because it is used only for
=
read-only purposes). This patch also replaces all references = to version 14.

Commit ef948050 made some ch= anges in the snapshot handling. Set the current
active sna= pshot might not be required but future changes to allow functions
will need it.

As the previous patch= es, it includes commits (0002 and 0003) that are not
inten= ded to be committed. They are available for test-only purposes.


--
Euler Taveira
EDB   https://www.enterprisedb.com/

= --ed7aecb0cfbc4f91b30d6cfd907c21d1-- --a84b75ce88ee417fb2e7d36602f8e43e Content-Disposition: attachment;filename="0001-Row-filter-for-logical-replication.patch" Content-Type: text/x-patch; name="0001-Row-filter-for-logical-replication.patch" Content-Transfer-Encoding: BASE64 RnJvbSA5YzI3ZDExZWZkMmFjODI1N2NjMjY2NGU1ZGE4MmZkMTlmMDEyZWJjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTI6MDc6NTEgLTAzMDAK U3ViamVjdDogW1BBVENIIDEvM10gUm93IGZpbHRlciBmb3IgbG9naWNhbCByZXBsaWNhdGlv bgoKVGhpcyBmZWF0dXJlIGFkZHMgcm93IGZpbHRlciBmb3IgcHVibGljYXRpb24gdGFibGVz LiBXaGVuIHlvdSBkZWZpbmUgb3IgbW9kaWZ5CmEgcHVibGljYXRpb24geW91IGNhbiBvcHRp b25hbGx5IGZpbHRlciByb3dzIHRoYXQgZG9lcyBub3Qgc2F0aXNmeSBhIFdIRVJFCmNvbmRp dGlvbi4gSXQgYWxsb3dzIHlvdSB0byBwYXJ0aWFsbHkgcmVwbGljYXRlIGEgZGF0YWJhc2Ug b3Igc2V0IG9mIHRhYmxlcy4KVGhlIHJvdyBmaWx0ZXIgaXMgcGVyIHRhYmxlIHdoaWNoIG1l YW5zIHRoYXQgeW91IGNhbiBkZWZpbmUgZGlmZmVyZW50IHJvdwpmaWx0ZXJzIGZvciBkaWZm ZXJlbnQgdGFibGVzLiBBIG5ldyByb3cgZmlsdGVyIGNhbiBiZSBhZGRlZCBzaW1wbHkgYnkK aW5mb3JtaW5nIHRoZSBXSEVSRSBjbGF1c2UgYWZ0ZXIgdGhlIHRhYmxlIG5hbWUuIFRoZSBX SEVSRSBleHByZXNzaW9uIG11c3QgYmUKZW5jbG9zZWQgYnkgcGFyZW50aGVzZXMuCgpUaGUg V0hFUkUgY2xhdXNlIHNob3VsZCBwcm9iYWJseSBjb250YWluIG9ubHkgY29sdW1ucyB0aGF0 IGFyZSBwYXJ0IG9mIHRoZQpwcmltYXJ5IGtleSBvciB0aGF0IGFyZSBjb3ZlcmVkIGJ5IFJF UExJQ0EgSURFTlRJVFkuIE90aGVyd2lzZSwgYW5kIERFTEVURXMKd29uJ3QgYmUgcmVwbGlj YXRlZC4gREVMRVRFIHVzZXMgdGhlIG9sZCByb3cgdmVyc2lvbiAodGhhdCBpcyBsaW1pdGVk IHRvCnByaW1hcnkga2V5IG9yIFJFUExJQ0EgSURFTlRJVFkpIHRvIGV2YWx1YXRlIHRoZSBy b3cgZmlsdGVyLiBJTlNFUlQgYW5kIFVQREFURQp1c2UgdGhlIG5ldyByb3cgdmVyc2lvbiB0 byBldmFsdWF0ZSB0aGUgcm93IGZpbHRlciwgaGVuY2UsIHlvdSBjYW4gdXNlIGFueQpjb2x1 bW4uIElmIHRoZSByb3cgZmlsdGVyIGV2YWx1YXRlcyB0byBOVUxMLCBpdCByZXR1cm5zIGZh bHNlLiBGb3Igc2ltcGxpY2l0eSwKZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZDsgaXQgY291 bGQgcG9zc2libHkgYmUgYWRkcmVzc2VkIGluIGEgZnV0dXJlIHBhdGNoLgoKSWYgeW91IGNo b29zZSB0byBkbyB0aGUgaW5pdGlhbCB0YWJsZSBzeW5jaHJvbml6YXRpb24sIG9ubHkgZGF0 YSB0aGF0IHNhdGlzZmllcwp0aGUgcm93IGZpbHRlcnMgaXMgc2VudC4gSWYgdGhlIHN1YnNj cmlwdGlvbiBoYXMgc2V2ZXJhbCBwdWJsaWNhdGlvbnMgaW4gd2hpY2gKYSB0YWJsZSBoYXMg YmVlbiBwdWJsaXNoZWQgd2l0aCBkaWZmZXJlbnQgV0hFUkUgY2xhdXNlcywgcm93cyBtdXN0 IHNhdGlzZnkgYWxsCmV4cHJlc3Npb25zIHRvIGJlIGNvcGllZC4gSWYgc3Vic2NyaWJlciBp cyBhIHByZS0xNSB2ZXJzaW9uLCBkYXRhCnN5bmNocm9uaXphdGlvbiB3b24ndCB1c2Ugcm93 IGZpbHRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgcHVibGlzaGVyLgpQcmV2aW91 cyB2ZXJzaW9ucyBjYW5ub3QgaGFuZGxlIHJvdyBmaWx0ZXJzLgoKSWYgeW91ciBwdWJsaWNh dGlvbiBjb250YWlucyBwYXJ0aXRpb25lZCB0YWJsZSwgdGhlIHBhcmFtZXRlcgpwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCBkZXRlcm1pbmVzIGlmIGl0IHVzZXMgdGhlIHBhcnRpdGlv biByb3cgZmlsdGVyIChpZgp0aGUgcGFyYW1ldGVyIGlzIGZhbHNlIC0tIGRlZmF1bHQpIG9y IHRoZSBwYXJ0aXRpb25lZCB0YWJsZSByb3cgZmlsdGVyLgotLS0KIGRvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgfCAgIDggKwogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAgICB8ICAxMSArLQogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgICB8ICAzMiArKy0KIGRvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgfCAgNTAgKysrLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgICB8IDEyNSArKysrKystLS0tCiBzcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgIHwgIDI0ICstCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAgfCAgMTMgKysKIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyB8ICA5NCArKysrKysrLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8IDI0MSArKysr KysrKysrKysrKysrKystLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAg ICAgICAgICB8ICAyNCArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAg ICAgICAgIHwgIDE1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgg ICAgICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3Jl bC5oICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggICAgICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAg ICAgICB8ICAxMSArLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dCAgIHwgIDM0ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAg ICAgICB8ICAyMyArKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIwX3Jvd19maWx0ZXIu cGwgICB8IDIyMSArKysrKysrKysrKysrKysrKysKIDIzIGZpbGVzIGNoYW5nZWQsIDg3MiBp bnNlcnRpb25zKCspLCA5NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjBfcm93X2ZpbHRlci5wbAoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK aW5kZXggZjUxN2E3ZDRhZi4uZGJmMmY0NmMwMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTYy MzMsNiArNjIzMywxNCBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgIFJl ZmVyZW5jZSB0byByZWxhdGlvbgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0cnVjdGZpZWxk PnBycXVhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25vZGVfdHJlZTwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPkV4cHJlc3Npb24gdHJlZSAoaW4gPGZ1bmN0aW9uPm5v ZGVUb1N0cmluZygpPC9mdW5jdGlvbj4KKyAgICAgIHJlcHJlc2VudGF0aW9uKSBmb3IgdGhl IHJlbGF0aW9uJ3MgcXVhbGlmeWluZyBjb25kaXRpb248L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IGZhYTExNGIyYzYuLmNh MDkxYWFlMzMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwK QEAgLTIxLDggKzIxLDggQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lu b3BzaXNkaXY+CiA8c3lub3BzaXM+Ci1BTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IEFERCBUQUJMRSBbIE9OTFkg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+IFsgKiBdIFssIC4uLl0KLUFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gU0VUIFRBQkxFIFsgT05MWSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAqIF0gWywgLi4uXQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBREQgVEFCTEUgWyBPTkxZIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICog XSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uXQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgVEFCTEUgWyBP TkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbICogXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uXQogQUxURVIgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBE Uk9QIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWywgLi4uXQogQUxURVIgUFVCTElDQVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVy PC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVl PC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkKIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gT1dORVIgVE8geyA8 cmVwbGFjZWFibGU+bmV3X293bmVyPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1JPTEUgfCBD VVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIgfQpAQCAtOTIsNyArOTIsMTIgQEAgQUxURVIg UFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgICAgIHRhYmxlIG5hbWUsIG9ubHkgdGhhdCB0YWJs ZSBpcyBhZmZlY3RlZC4gIElmIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzIG5vdAogICAg ICAgc3BlY2lmaWVkLCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudCB0YWJsZXMg KGlmIGFueSkgYXJlCiAgICAgICBhZmZlY3RlZC4gIE9wdGlvbmFsbHksIDxsaXRlcmFsPio8 L2xpdGVyYWw+IGNhbiBiZSBzcGVjaWZpZWQgYWZ0ZXIgdGhlIHRhYmxlCi0gICAgICBuYW1l IHRvIGV4cGxpY2l0bHkgaW5kaWNhdGUgdGhhdCBkZXNjZW5kYW50IHRhYmxlcyBhcmUgaW5j bHVkZWQuCisgICAgICBuYW1lIHRvIGV4cGxpY2l0bHkgaW5kaWNhdGUgdGhhdCBkZXNjZW5k YW50IHRhYmxlcyBhcmUgaW5jbHVkZWQuIElmIHRoZQorICAgICAgb3B0aW9uYWwgPGxpdGVy YWw+V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSBpcyBzcGVjaWZpZWQsIHJvd3MgdGhhdCBkbyBu b3QKKyAgICAgIHNhdGlzZnkgdGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l eHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gd2lsbAorICAgICAgbm90IGJlIHB1Ymxpc2hlZC4g Tm90ZSB0aGF0IHBhcmVudGhlc2VzIGFyZSByZXF1aXJlZCBhcm91bmQgdGhlCisgICAgICBl eHByZXNzaW9uLiBUaGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPgorICAgICAgaXMgZXhlY3V0ZWQgd2l0aCB0aGUgcm9sZSB1c2Vk IGZvciB0aGUgcmVwbGljYXRpb24gY29ubmVjdGlvbi4KICAgICAgPC9wYXJhPgogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IGZmODJmYmNhNTUuLjVjMmI3ZDBiZDIgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjIsNyArMjIs NyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICA8cmVmc3lub3BzaXNkaXY+CiA8c3lu b3BzaXM+CiBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgotICAgIFsgRk9SIFRBQkxFIFsgT05MWSBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAq IF0gWywgLi4uXQorICAgIFsgRk9SIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBXSEVSRSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4gKSBdIFssIC4uLl0KICAgICAgIHwgRk9SIEFMTCBUQUJMRVMgXQogICAgIFsgV0lUSCAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8 L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8 L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKSBdCiA8L3N5bm9wc2lzPgpAQCAtNzEsNiArNzEs MTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gYSBw YXJ0aXRpb25lZCB0YWJsZSwgaG93ZXZlci4gIFRoZSBwYXJ0aXRpb25zIG9mCiAgICAgICBh IHBhcnRpdGlvbmVkIHRhYmxlIGFyZSBhbHdheXMgaW1wbGljaXRseSBjb25zaWRlcmVkIHBh cnQgb2YgdGhlCiAgICAgICBwdWJsaWNhdGlvbiwgc28gdGhleSBhcmUgbmV2ZXIgZXhwbGlj aXRseSBhZGRlZCB0byB0aGUgcHVibGljYXRpb24uCisgICAgICBJZiB0aGUgb3B0aW9uYWwg PGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSBpcyBzcGVjaWZpZWQsIHJvd3MgdGhh dCBkbyAKKyAgICAgIG5vdCBzYXRpc2Z5IHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IAorICAgICAgd2lsbCBub3QgYmUgcHVi bGlzaGVkLiBOb3RlIHRoYXQgcGFyZW50aGVzZXMgYXJlIHJlcXVpcmVkIGFyb3VuZCB0aGUg CisgICAgICBleHByZXNzaW9uLiBJdCBoYXMgbm8gZWZmZWN0IG9uIDxsaXRlcmFsPlRSVU5D QVRFPC9saXRlcmFsPiBjb21tYW5kcy4KICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpA QCAtMTMxLDkgKzEzNSw5IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgb24gaXRzIHBh cnRpdGlvbnMpIGNvbnRhaW5lZCBpbiB0aGUgcHVibGljYXRpb24gd2lsbCBiZSBwdWJsaXNo ZWQKICAgICAgICAgICB1c2luZyB0aGUgaWRlbnRpdHkgYW5kIHNjaGVtYSBvZiB0aGUgcGFy dGl0aW9uZWQgdGFibGUgcmF0aGVyIHRoYW4KICAgICAgICAgICB0aGF0IG9mIHRoZSBpbmRp dmlkdWFsIHBhcnRpdGlvbnMgdGhhdCBhcmUgYWN0dWFsbHkgY2hhbmdlZDsgdGhlCi0gICAg ICAgICAgbGF0dGVyIGlzIHRoZSBkZWZhdWx0LiAgRW5hYmxpbmcgdGhpcyBhbGxvd3MgdGhl IGNoYW5nZXMgdG8gYmUKLSAgICAgICAgICByZXBsaWNhdGVkIGludG8gYSBub24tcGFydGl0 aW9uZWQgdGFibGUgb3IgYSBwYXJ0aXRpb25lZCB0YWJsZQotICAgICAgICAgIGNvbnNpc3Rp bmcgb2YgYSBkaWZmZXJlbnQgc2V0IG9mIHBhcnRpdGlvbnMuCisgICAgICAgICAgbGF0dGVy IGlzIHRoZSBkZWZhdWx0ICg8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4pLiAgRW5hYmxpbmcg dGhpcworICAgICAgICAgIGFsbG93cyB0aGUgY2hhbmdlcyB0byBiZSByZXBsaWNhdGVkIGlu dG8gYSBub24tcGFydGl0aW9uZWQgdGFibGUgb3IgYQorICAgICAgICAgIHBhcnRpdGlvbmVk IHRhYmxlIGNvbnNpc3Rpbmcgb2YgYSBkaWZmZXJlbnQgc2V0IG9mIHBhcnRpdGlvbnMuCiAg ICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgIDxwYXJhPgpAQCAtMTgyLDYgKzE4NiwxNCBA QCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPgogICAgZGlzYWxsb3dlZCBvbiB0aG9zZSB0YWJsZXMuCiAgIDwv cGFyYT4KIAorICA8cGFyYT4KKyAgIFRoZSA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xh dXNlIHNob3VsZCBwcm9iYWJseSBjb250YWluIG9ubHkgY29sdW1ucworICAgdGhhdCBhcmUg cGFydCBvZiB0aGUgcHJpbWFyeSBrZXkgb3IgYmUgY292ZXJlZCAgYnkgPGxpdGVyYWw+UkVQ TElDQQorICAgSURFTlRJVFk8L2xpdGVyYWw+IG90aGVyd2lzZSwgPGNvbW1hbmQ+REVMRVRF PC9jb21tYW5kPiBvcGVyYXRpb25zIHdpbGwgbm90CisgICBiZSByZXBsaWNhdGVkLiBGb3Ig PGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiBhbmQgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5k PgorICAgb3BlcmF0aW9ucywgYW55IGNvbHVtbiBjYW4gYmUgdXNlZCBpbiB0aGUgPGxpdGVy YWw+V0hFUkU8L2xpdGVyYWw+IGNsYXVzZS4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAg Rm9yIGFuIDxjb21tYW5kPklOU0VSVCAuLi4gT04gQ09ORkxJQ1Q8L2NvbW1hbmQ+IGNvbW1h bmQsIHRoZSBwdWJsaWNhdGlvbiB3aWxsCiAgICBwdWJsaXNoIHRoZSBvcGVyYXRpb24gdGhh dCBhY3R1YWxseSByZXN1bHRzIGZyb20gdGhlIGNvbW1hbmQuICBTbyBkZXBlbmRpbmcKQEAg LTE5Nyw2ICsyMDksMTEgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgPHBhcmE+CiAgICA8YWNyb255 bT5EREw8L2Fjcm9ueW0+IG9wZXJhdGlvbnMgYXJlIG5vdCBwdWJsaXNoZWQuCiAgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIFRoZSA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNl IGV4cHJlc3Npb24gaXMgZXhlY3V0ZWQgd2l0aCB0aGUgcm9sZSB1c2VkCisgICBmb3IgdGhl IHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24uCisgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgogCiAg PHJlZnNlY3QxPgpAQCAtMjA5LDYgKzIyNiwxMyBAQCBDUkVBVEUgUFVCTElDQVRJT04gbXlw dWJsaWNhdGlvbiBGT1IgVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzOwogPC9wcm9ncmFtbGlz dGluZz4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24g dGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgZnJvbSBhY3RpdmUgZGVwYXJ0bWVudHM6Cis8 cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gYWN0aXZlX2RlcGFydG1lbnRz IEZPUiBUQUJMRSBkZXBhcnRtZW50cyBXSEVSRSAoYWN0aXZlIElTIFRSVUUpOworPC9wcm9n cmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQ3JlYXRlIGEgcHVibGlj YXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxlczoKIDxwcm9n cmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNj cmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNn bWwKaW5kZXggZTgxMmJlZWUzNy4uNzE4MzcwMGVkOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTEwMiw3ICsxMDIsMTYgQEAgQ1JFQVRF IFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0 aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNwZWNp ZmllcyB3aGV0aGVyIHRoZSBleGlzdGluZyBkYXRhIGluIHRoZSBwdWJsaWNhdGlvbnMgdGhh dCBhcmUKICAgICAgICAgICBiZWluZyBzdWJzY3JpYmVkIHRvIHNob3VsZCBiZSBjb3BpZWQg b25jZSB0aGUgcmVwbGljYXRpb24gc3RhcnRzLgotICAgICAgICAgIFRoZSBkZWZhdWx0IGlz IDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LgorICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIDxs aXRlcmFsPnRydWU8L2xpdGVyYWw+LiBJZiBhbnkgdGFibGUgaW4gdGhlCisgICAgICAgICAg cHVibGljYXRpb25zIGhhcyBhIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2UsIHJv d3MgdGhhdCBkbyBub3QKKyAgICAgICAgICBzYXRpc2Z5IHRoZSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgd2ls bCBub3QgYmUgY29waWVkLiBJZiB0aGUgc3Vic2NyaXB0aW9uIGhhcyBzZXZlcmFsIHB1Ymxp Y2F0aW9ucyBpbgorICAgICAgICAgIHdoaWNoIGEgdGFibGUgaGFzIGJlZW4gcHVibGlzaGVk IHdpdGggZGlmZmVyZW50CisgICAgICAgICAgPGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+IGNs YXVzZXMsIHJvd3MgbXVzdCBzYXRpc2Z5IGFsbCBleHByZXNzaW9ucworICAgICAgICAgIHRv IGJlIGNvcGllZC4gSWYgYW55IHRhYmxlIGluIHRoZSBwdWJsaWNhdGlvbnMgaGFzIGEKKyAg ICAgICAgICA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlLCBkYXRhIHN5bmNocm9u aXphdGlvbiBkb2VzIG5vdCB1c2UgaXQKKyAgICAgICAgICBpZiB0aGUgc3Vic2NyaWJlciBp cyBhIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gdmVyc2lvbgorICAg ICAgICAgIGJlZm9yZSAxNS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRl bT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uYwppbmRleCA4NmU0MTVhZjg5Li43OGY1NzgwZmI3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC0zMyw2ICszMyw5IEBACiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIKKyNpbmNsdWRlICJw YXJzZXIvcGFyc2VfY29sbGF0ZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlv bi5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRp bnMuaCIKICNpbmNsdWRlICJ1dGlscy9jYXRjYWNoZS5oIgpAQCAtMTQxLDE4ICsxNDQsMjAg QEAgcGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoUEdfRlVOQ1RJT05fQVJHUykKICAqIElu c2VydCBuZXcgcHVibGljYXRpb24gLyByZWxhdGlvbiBtYXBwaW5nLgogICovCiBPYmplY3RB ZGRyZXNzCi1wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBSZWxhdGlvbiB0 YXJnZXRyZWwsCitwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNh dGlvblJlbGF0aW9uSW5mbyAqdGFyZ2V0cmVsLAogCQkJCQkJIGJvb2wgaWZfbm90X2V4aXN0 cykKIHsKIAlSZWxhdGlvbglyZWw7CiAJSGVhcFR1cGxlCXR1cDsKIAlEYXR1bQkJdmFsdWVz W05hdHRzX3BnX3B1YmxpY2F0aW9uX3JlbF07CiAJYm9vbAkJbnVsbHNbTmF0dHNfcGdfcHVi bGljYXRpb25fcmVsXTsKLQlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQodGFyZ2V0 cmVsKTsKIAlPaWQJCQlwcnJlbGlkOwogCVB1YmxpY2F0aW9uICpwdWIgPSBHZXRQdWJsaWNh dGlvbihwdWJpZCk7CiAJT2JqZWN0QWRkcmVzcyBteXNlbGYsCiAJCQkJcmVmZXJlbmNlZDsK KwlQYXJzZVN0YXRlICpwc3RhdGU7CisJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07CisJ Tm9kZQkgICAqd2hlcmVjbGF1c2U7CiAKIAlyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9u UmVsUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKQEAgLTE2MSw3ICsxNjYsNyBA QCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBSZWxhdGlvbiB0YXJnZXRy ZWwsCiAJICogZHVwbGljYXRlcywgaXQncyBoZXJlIGp1c3QgdG8gcHJvdmlkZSBuaWNlciBl cnJvciBtZXNzYWdlIGluIGNvbW1vbgogCSAqIGNhc2UuIFRoZSByZWFsIHByb3RlY3Rpb24g aXMgdGhlIHVuaXF1ZSBrZXkgb24gdGhlIGNhdGFsb2cuCiAJICovCi0JaWYgKFNlYXJjaFN5 c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTlJFTE1BUCwgT2JqZWN0SWRHZXREYXR1bShyZWxp ZCksCisJaWYgKFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTlJFTE1BUCwgT2Jq ZWN0SWRHZXREYXR1bSh0YXJnZXRyZWwtPnJlbGlkKSwKIAkJCQkJCQkgIE9iamVjdElkR2V0 RGF0dW0ocHViaWQpKSkKIAl7CiAJCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9j ayk7CkBAIC0xNzIsMTAgKzE3NywyNyBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lk IHB1YmlkLCBSZWxhdGlvbiB0YXJnZXRyZWwsCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKIAkJCQkgZXJybXNnKCJyZWxhdGlv biBcIiVzXCIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRpb24gXCIlc1wiIiwKLQkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksIHB1Yi0+bmFtZSkpKTsK KwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbC0+cmVsYXRpb24pLCBw dWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHRh cmdldHJlbCk7CisJY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHRhcmdldHJlbC0+ cmVsYXRpb24pOworCisJLyogU2V0IHVwIGEgcHN0YXRlIHRvIHBhcnNlIHdpdGggKi8KKwlw c3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CisJcHN0YXRlLT5wX3NvdXJjZXRleHQg PSBub2RlVG9TdHJpbmcodGFyZ2V0cmVsLT53aGVyZUNsYXVzZSk7CisKKwluc2l0ZW0gPSBh ZGRSYW5nZVRhYmxlRW50cnlGb3JSZWxhdGlvbihwc3RhdGUsIHRhcmdldHJlbC0+cmVsYXRp b24sCisJCQkJCQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrLAorCQkJCQkJCQkJCSAgIE5VTEws IGZhbHNlLCBmYWxzZSk7CisJYWRkTlNJdGVtVG9RdWVyeShwc3RhdGUsIG5zaXRlbSwgZmFs c2UsIHRydWUsIHRydWUpOworCisJd2hlcmVjbGF1c2UgPSB0cmFuc2Zvcm1XaGVyZUNsYXVz ZShwc3RhdGUsCisJCQkJCQkJCQkgICBjb3B5T2JqZWN0KHRhcmdldHJlbC0+d2hlcmVDbGF1 c2UpLAorCQkJCQkJCQkJICAgRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFLAorCQkJCQkJ CQkJICAgIlBVQkxJQ0FUSU9OIik7CisKKwkvKiBGaXggdXAgY29sbGF0aW9uIGluZm9ybWF0 aW9uICovCisJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIHdoZXJlY2xhdXNlKTsK IAogCS8qIEZvcm0gYSB0dXBsZS4gKi8KIAltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFs dWVzKSk7CkBAIC0xODcsNyArMjA5LDEzIEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihP aWQgcHViaWQsIFJlbGF0aW9uIHRhcmdldHJlbCwKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNh dGlvbl9yZWxfcHJwdWJpZCAtIDFdID0KIAkJT2JqZWN0SWRHZXREYXR1bShwdWJpZCk7CiAJ dmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVsX3BycmVsaWQgLSAxXSA9Ci0JCU9iamVj dElkR2V0RGF0dW0ocmVsaWQpOworCQlPYmplY3RJZEdldERhdHVtKHRhcmdldHJlbC0+cmVs aWQpOworCisJLyogQWRkIHF1YWxpZmljYXRpb25zLCBpZiBhdmFpbGFibGUgKi8KKwlpZiAo d2hlcmVjbGF1c2UpCisJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnF1YWwg LSAxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0obm9kZVRvU3RyaW5nKHdoZXJlY2xhdXNlKSk7 CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnF1YWwgLSAxXSA9 IHRydWU7CiAKIAl0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihyZWwp LCB2YWx1ZXMsIG51bGxzKTsKIApAQCAtMjAyLDE0ICsyMzAsMjAgQEAgcHVibGljYXRpb25f YWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUmVsYXRpb24gdGFyZ2V0cmVsLAogCXJlY29yZERl cGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9BVVRPKTsKIAog CS8qIEFkZCBkZXBlbmRlbmN5IG9uIHRoZSByZWxhdGlvbiAqLwotCU9iamVjdEFkZHJlc3NT ZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCByZWxpZCk7CisJT2JqZWN0QWRk cmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIHRhcmdldHJlbC0+cmVs aWQpOwogCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5E RU5DWV9BVVRPKTsKIAorCS8qIEFkZCBkZXBlbmRlbmN5IG9uIHRoZSBvYmplY3RzIG1lbnRp b25lZCBpbiB0aGUgcXVhbGlmaWNhdGlvbnMgKi8KKwlpZiAod2hlcmVjbGF1c2UpCisJCXJl Y29yZERlcGVuZGVuY3lPbkV4cHIoJm15c2VsZiwgd2hlcmVjbGF1c2UsIHBzdGF0ZS0+cF9y dGFibGUsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCWZyZWVfcGFyc2VzdGF0ZShwc3RhdGUp OworCiAJLyogQ2xvc2UgdGhlIHRhYmxlLiAqLwogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhj bHVzaXZlTG9jayk7CiAKIAkvKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGlj YXRpb24gaW5mbyBpcyByZWJ1aWx0LiAqLwotCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlKHRh cmdldHJlbCk7CisJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGUodGFyZ2V0cmVsLT5yZWxhdGlv bik7CiAKIAlyZXR1cm4gbXlzZWxmOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYwppbmRleCA5NWMyNTNjOGUwLi45NjM3ZDNkZGJhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNDgsOCArNDgsOCBAQAogLyogU2Ft ZSBhcyBNQVhOVU1NRVNTQUdFUyBpbiBzaW52YWxhZHQuYyAqLwogI2RlZmluZSBNQVhfUkVM Q0FDSEVfSU5WQUxfTVNHUyA0MDk2CiAKLXN0YXRpYyBMaXN0ICpPcGVuVGFibGVMaXN0KExp c3QgKnRhYmxlcyk7Ci1zdGF0aWMgdm9pZCBDbG9zZVRhYmxlTGlzdChMaXN0ICpyZWxzKTsK K3N0YXRpYyBMaXN0ICpPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcywgYm9vbCBpc19kcm9w KTsKK3N0YXRpYyB2b2lkIENsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMsIGJvb2wgaXNfZHJv cCk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3Qg KnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJCQkJCQkJIEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10KTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHVi aWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vayk7CkBAIC0yMzIsOSArMjMyLDkgQEAg Q3JlYXRlUHVibGljYXRpb24oQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJCUFz c2VydChsaXN0X2xlbmd0aChzdG10LT50YWJsZXMpID4gMCk7CiAKLQkJcmVscyA9IE9wZW5U YWJsZUxpc3Qoc3RtdC0+dGFibGVzKTsKKwkJcmVscyA9IE9wZW5UYWJsZUxpc3Qoc3RtdC0+ dGFibGVzLCBmYWxzZSk7CiAJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVscywg dHJ1ZSwgTlVMTCk7Ci0JCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQlDbG9zZVRhYmxlTGlz dChyZWxzLCBmYWxzZSk7CiAJfQogCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVM b2NrKTsKQEAgLTM3Miw3ICszNzIsMTAgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgUmVsYXRpb24gcmVsLAogCiAJQXNzZXJ0KGxpc3Rf bGVuZ3RoKHN0bXQtPnRhYmxlcykgPiAwKTsKIAotCXJlbHMgPSBPcGVuVGFibGVMaXN0KHN0 bXQtPnRhYmxlcyk7CisJaWYgKHN0bXQtPnRhYmxlQWN0aW9uID09IERFRkVMRU1fRFJPUCkK KwkJcmVscyA9IE9wZW5UYWJsZUxpc3Qoc3RtdC0+dGFibGVzLCB0cnVlKTsKKwllbHNlCisJ CXJlbHMgPSBPcGVuVGFibGVMaXN0KHN0bXQtPnRhYmxlcywgZmFsc2UpOwogCiAJaWYgKHN0 bXQtPnRhYmxlQWN0aW9uID09IERFRkVMRU1fQUREKQogCQlQdWJsaWNhdGlvbkFkZFRhYmxl cyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOwpAQCAtMzg1LDMxICszODgsMjQgQEAgQWx0 ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgUmVsYXRp b24gcmVsLAogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRs YzsKIAotCQkvKiBDYWxjdWxhdGUgd2hpY2ggcmVsYXRpb25zIHRvIGRyb3AuICovCisJCS8q CisJCSAqIFJlbW92ZSBhbGwgcHVibGljYXRpb24tdGFibGUgbWFwcGluZ3MuICBXZSBjb3Vs ZCBwb3NzaWJseSByZW1vdmUgKGkpCisJCSAqIHRhYmxlcyB0aGF0IGFyZSBub3QgZm91bmQg aW4gdGhlIG5ldyB0YWJsZSBsaXN0IGFuZCAoaWkpIHRhYmxlcyB0aGF0CisJCSAqIGFyZSBi ZWluZyByZS1hZGRlZCB3aXRoIGEgZGlmZmVyZW50IHF1YWwgZXhwcmVzc2lvbi4gRm9yIChp aSksCisJCSAqIHNpbXBseSB1cGRhdGluZyB0aGUgZXhpc3RpbmcgdHVwbGUgaXMgbm90IGVu b3VnaCwgYmVjYXVzZSBvZiBxdWFsCisJCSAqIGV4cHJlc3Npb24gZGVwZW5kZW5jaWVzLgor CQkgKi8KIAkJZm9yZWFjaChvbGRsYywgb2xkcmVsaWRzKQogCQl7CiAJCQlPaWQJCQlvbGRy ZWxpZCA9IGxmaXJzdF9vaWQob2xkbGMpOwotCQkJTGlzdENlbGwgICAqbmV3bGM7Ci0JCQli b29sCQlmb3VuZCA9IGZhbHNlOworCQkJUHVibGljYXRpb25SZWxhdGlvbkluZm8gKm9sZHJl bDsKIAotCQkJZm9yZWFjaChuZXdsYywgcmVscykKLQkJCXsKLQkJCQlSZWxhdGlvbgluZXdy ZWwgPSAoUmVsYXRpb24pIGxmaXJzdChuZXdsYyk7Ci0KLQkJCQlpZiAoUmVsYXRpb25HZXRS ZWxpZChuZXdyZWwpID09IG9sZHJlbGlkKQotCQkJCXsKLQkJCQkJZm91bmQgPSB0cnVlOwot CQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0KLQkJCWlmICghZm91bmQpCi0JCQl7Ci0JCQkJ UmVsYXRpb24Jb2xkcmVsID0gdGFibGVfb3BlbihvbGRyZWxpZCwKLQkJCQkJCQkJCQkJCVNo YXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7Ci0KLQkJCQlkZWxyZWxzID0gbGFwcGVuZChkZWxy ZWxzLCBvbGRyZWwpOwotCQkJfQorCQkJb2xkcmVsID0gcGFsbG9jKHNpemVvZihQdWJsaWNh dGlvblJlbGF0aW9uSW5mbykpOworCQkJb2xkcmVsLT5yZWxpZCA9IG9sZHJlbGlkOworCQkJ b2xkcmVsLT53aGVyZUNsYXVzZSA9IE5VTEw7CisJCQlvbGRyZWwtPnJlbGF0aW9uID0gdGFi bGVfb3BlbihvbGRyZWwtPnJlbGlkLAorCQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNp dmVMb2NrKTsKKwkJCWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIG9sZHJlbCk7CiAJCX0K IAogCQkvKiBBbmQgZHJvcCB0aGVtLiAqLwpAQCAtNDIxLDEwICs0MTcsMTAgQEAgQWx0ZXJQ dWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgUmVsYXRpb24g cmVsLAogCQkgKi8KIAkJUHVibGljYXRpb25BZGRUYWJsZXMocHViaWQsIHJlbHMsIHRydWUs IHN0bXQpOwogCi0JCUNsb3NlVGFibGVMaXN0KGRlbHJlbHMpOworCQlDbG9zZVRhYmxlTGlz dChkZWxyZWxzLCBmYWxzZSk7CiAJfQogCi0JQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJQ2xv c2VUYWJsZUxpc3QocmVscywgZmFsc2UpOwogfQogCiAvKgpAQCAtNTAwLDI2ICs0OTYsNDIg QEAgUmVtb3ZlUHVibGljYXRpb25SZWxCeUlkKE9pZCBwcm9pZCkKIAogLyoKICAqIE9wZW4g cmVsYXRpb25zIHNwZWNpZmllZCBieSBhIFJhbmdlVmFyIGxpc3QuCisgKiBBbHRlclB1Ymxp Y2F0aW9uU3RtdC0+dGFibGVzIGhhcyBhIGRpZmZlcmVudCBsaXN0IGVsZW1lbnQsIGhlbmNl LCBpc19kcm9wCisgKiBpbmRpY2F0ZXMgaWYgaXQgaGFzIGEgUmFuZ2VWYXIgKHRydWUpIG9y IFB1YmxpY2F0aW9uVGFibGUgKGZhbHNlKS4KICAqIFRoZSByZXR1cm5lZCB0YWJsZXMgYXJl IGxvY2tlZCBpbiBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sgbW9kZSBpbiBvcmRlciB0bwog ICogYWRkIHRoZW0gdG8gYSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIExpc3QgKgotT3Bl blRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCitPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcywg Ym9vbCBpc19kcm9wKQogewogCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsKIAlMaXN0CSAgICpy ZWxzID0gTklMOwogCUxpc3RDZWxsICAgKmxjOworCVB1YmxpY2F0aW9uUmVsYXRpb25JbmZv ICpwcmk7CiAKIAkvKgogCSAqIE9wZW4sIHNoYXJlLWxvY2ssIGFuZCBjaGVjayBhbGwgdGhl IGV4cGxpY2l0bHktc3BlY2lmaWVkIHJlbGF0aW9ucwogCSAqLwogCWZvcmVhY2gobGMsIHRh YmxlcykKIAl7Ci0JCVJhbmdlVmFyICAgKnJ2ID0gY2FzdE5vZGUoUmFuZ2VWYXIsIGxmaXJz dChsYykpOwotCQlib29sCQlyZWN1cnNlID0gcnYtPmluaDsKKwkJUHVibGljYXRpb25UYWJs ZSAqdCA9IE5VTEw7CisJCVJhbmdlVmFyICAgKnJ2OworCQlib29sCQlyZWN1cnNlOwogCQlS ZWxhdGlvbglyZWw7CiAJCU9pZAkJCW15cmVsaWQ7CiAKKwkJaWYgKGlzX2Ryb3ApCisJCXsK KwkJCXJ2ID0gY2FzdE5vZGUoUmFuZ2VWYXIsIGxmaXJzdChsYykpOworCQl9CisJCWVsc2UK KwkJeworCQkJdCA9IGxmaXJzdChsYyk7CisJCQlydiA9IGNhc3ROb2RlKFJhbmdlVmFyLCB0 LT5yZWxhdGlvbik7CisJCX0KKworCQlyZWN1cnNlID0gcnYtPmluaDsKKwogCQkvKiBBbGxv dyBxdWVyeSBjYW5jZWwgaW4gY2FzZSB0aGlzIHRha2VzIGEgbG9uZyB0aW1lICovCiAJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKQEAgLTUzOCw4ICs1NTAsMTIgQEAgT3BlblRhYmxl TGlzdChMaXN0ICp0YWJsZXMpCiAJCQl0YWJsZV9jbG9zZShyZWwsIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CiAJCQljb250aW51ZTsKIAkJfQotCi0JCXJlbHMgPSBsYXBwZW5kKHJl bHMsIHJlbCk7CisJCXByaSA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxhdGlvbklu Zm8pKTsKKwkJcHJpLT5yZWxpZCA9IG15cmVsaWQ7CisJCXByaS0+cmVsYXRpb24gPSByZWw7 CisJCWlmICghaXNfZHJvcCkKKwkJCXByaS0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVz ZTsKKwkJcmVscyA9IGxhcHBlbmQocmVscywgcHJpKTsKIAkJcmVsaWRzID0gbGFwcGVuZF9v aWQocmVsaWRzLCBteXJlbGlkKTsKIAogCQkvKgpAQCAtNTcyLDcgKzU4OCwxMyBAQCBPcGVu VGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAogCQkJCS8qIGZpbmRfYWxsX2luaGVyaXRvcnMg YWxyZWFkeSBnb3QgbG9jayAqLwogCQkJCXJlbCA9IHRhYmxlX29wZW4oY2hpbGRyZWxpZCwg Tm9Mb2NrKTsKLQkJCQlyZWxzID0gbGFwcGVuZChyZWxzLCByZWwpOworCQkJCXByaSA9IHBh bGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxhdGlvbkluZm8pKTsKKwkJCQlwcmktPnJlbGlk ID0gY2hpbGRyZWxpZDsKKwkJCQlwcmktPnJlbGF0aW9uID0gcmVsOworCQkJCS8qIGNoaWxk IGluaGVyaXRzIFdIRVJFIGNsYXVzZSBmcm9tIHBhcmVudCAqLworCQkJCWlmICghaXNfZHJv cCkKKwkJCQkJcHJpLT53aGVyZUNsYXVzZSA9IHQtPndoZXJlQ2xhdXNlOworCQkJCXJlbHMg PSBsYXBwZW5kKHJlbHMsIHByaSk7CiAJCQkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRz LCBjaGlsZHJlbGlkKTsKIAkJCX0KIAkJfQpAQCAtNTg3LDE2ICs2MDksMjggQEAgT3BlblRh YmxlTGlzdChMaXN0ICp0YWJsZXMpCiAgKiBDbG9zZSBhbGwgcmVsYXRpb25zIGluIHRoZSBs aXN0LgogICovCiBzdGF0aWMgdm9pZAotQ2xvc2VUYWJsZUxpc3QoTGlzdCAqcmVscykKK0Ns b3NlVGFibGVMaXN0KExpc3QgKnJlbHMsIGJvb2wgaXNfZHJvcCkKIHsKIAlMaXN0Q2VsbCAg ICpsYzsKIAogCWZvcmVhY2gobGMsIHJlbHMpCiAJewotCQlSZWxhdGlvbglyZWwgPSAoUmVs YXRpb24pIGxmaXJzdChsYyk7CisJCWlmIChpc19kcm9wKQorCQl7CisJCQlSZWxhdGlvbiAg ICByZWwgPSAoUmVsYXRpb24pIGxmaXJzdChsYyk7CiAKLQkJdGFibGVfY2xvc2UocmVsLCBO b0xvY2spOworCQkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCQl9CisJCWVsc2UKKwkJ eworCQkJUHVibGljYXRpb25SZWxhdGlvbkluZm8gKnByaSA9IChQdWJsaWNhdGlvblJlbGF0 aW9uSW5mbyAqKSBsZmlyc3QobGMpOworCisJCQl0YWJsZV9jbG9zZShwcmktPnJlbGF0aW9u LCBOb0xvY2spOworCQl9CiAJfQorCisJaWYgKCFpc19kcm9wKQorCQlsaXN0X2ZyZWVfZGVl cChyZWxzKTsKIH0KIAogLyoKQEAgLTYxMiwxNSArNjQ2LDE1IEBAIFB1YmxpY2F0aW9uQWRk VGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCiAJ Zm9yZWFjaChsYywgcmVscykKIAl7Ci0JCVJlbGF0aW9uCXJlbCA9IChSZWxhdGlvbikgbGZp cnN0KGxjKTsKKwkJUHVibGljYXRpb25SZWxhdGlvbkluZm8gKnByaSA9IChQdWJsaWNhdGlv blJlbGF0aW9uSW5mbyAqKSBsZmlyc3QobGMpOwogCQlPYmplY3RBZGRyZXNzIG9iajsKIAog CQkvKiBNdXN0IGJlIG93bmVyIG9mIHRoZSB0YWJsZSBvciBzdXBlcnVzZXIuICovCi0JCWlm ICghcGdfY2xhc3Nfb3duZXJjaGVjayhSZWxhdGlvbkdldFJlbGlkKHJlbCksIEdldFVzZXJJ ZCgpKSkKLQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtp bmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+cmVsa2luZCksCi0JCQkJCQkgICBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpKTsKKwkJaWYgKCFwZ19jbGFzc19vd25lcmNoZWNrKHByaS0+ cmVsaWQsIEdldFVzZXJJZCgpKSkKKwkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9P V05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShwcmktPnJlbGF0aW9uLT5yZF9yZWwtPnJlbGtp bmQpLAorCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocHJpLT5yZWxhdGlvbikp OwogCi0JCW9iaiA9IHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwdWJpZCwgcmVsLCBpZl9u b3RfZXhpc3RzKTsKKwkJb2JqID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1YmlkLCBw cmksIGlmX25vdF9leGlzdHMpOwogCQlpZiAoc3RtdCkKIAkJewogCQkJRXZlbnRUcmlnZ2Vy Q29sbGVjdFNpbXBsZUNvbW1hbmQob2JqLCBJbnZhbGlkT2JqZWN0QWRkcmVzcywKQEAgLTY0 NCwxMSArNjc4LDEwIEBAIFB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3Qg KnJlbHMsIGJvb2wgbWlzc2luZ19vaykKIAogCWZvcmVhY2gobGMsIHJlbHMpCiAJewotCQlS ZWxhdGlvbglyZWwgPSAoUmVsYXRpb24pIGxmaXJzdChsYyk7Ci0JCU9pZAkJCXJlbGlkID0g UmVsYXRpb25HZXRSZWxpZChyZWwpOworCQlQdWJsaWNhdGlvblJlbGF0aW9uSW5mbyAqcHJp ID0gKFB1YmxpY2F0aW9uUmVsYXRpb25JbmZvICopIGxmaXJzdChsYyk7CiAKIAkJcHJpZCA9 IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwgQW51bV9wZ19wdWJsaWNhdGlv bl9yZWxfb2lkLAotCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJ CSAgIE9iamVjdElkR2V0RGF0dW0ocHJpLT5yZWxpZCksCiAJCQkJCQkJICAgT2JqZWN0SWRH ZXREYXR1bShwdWJpZCkpOwogCQlpZiAoIU9pZElzVmFsaWQocHJpZCkpCiAJCXsKQEAgLTY1 OCw3ICs2OTEsNyBAQCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpy ZWxzLCBib29sIG1pc3Npbmdfb2spCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAogCQkJCQkgZXJybXNnKCJyZWxhdGlvbiBc IiVzXCIgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIiwKLQkJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHByaS0+cmVsYXRpb24pKSkpOwogCQl9CiAKIAkJT2JqZWN0QWRkcmVzc1NldChvYmos IFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgcHJpZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBl YjI0MTk1NDM4Li5kODJlYTAwM2RiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQyNiwxNCArNDI2 LDE0IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJdHJhbnNmb3JtX2VsZW1l bnRfbGlzdCB0cmFuc2Zvcm1fdHlwZV9saXN0CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25zIFRy aWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1dW1f cmVsYXRpb25fbGlzdAotCQkJCWRyb3Bfb3B0aW9uX2xpc3QKKwkJCQlkcm9wX29wdGlvbl9s aXN0IHB1YmxpY2F0aW9uX3RhYmxlX2xpc3QKIAogJXR5cGUgPG5vZGU+CW9wdF9yb3V0aW5l X2JvZHkKICV0eXBlIDxncm91cGNsYXVzZT4gZ3JvdXBfY2xhdXNlCiAldHlwZSA8bGlzdD4J Z3JvdXBfYnlfbGlzdAogJXR5cGUgPG5vZGU+CWdyb3VwX2J5X2l0ZW0gZW1wdHlfZ3JvdXBp bmdfc2V0IHJvbGx1cF9jbGF1c2UgY3ViZV9jbGF1c2UKICV0eXBlIDxub2RlPglncm91cGlu Z19zZXRzX2NsYXVzZQotJXR5cGUgPG5vZGU+CW9wdF9wdWJsaWNhdGlvbl9mb3JfdGFibGVz IHB1YmxpY2F0aW9uX2Zvcl90YWJsZXMKKyV0eXBlIDxub2RlPglvcHRfcHVibGljYXRpb25f Zm9yX3RhYmxlcyBwdWJsaWNhdGlvbl9mb3JfdGFibGVzIHB1YmxpY2F0aW9uX3RhYmxlX2Vs ZW0KIAogJXR5cGUgPGxpc3Q+CW9wdF9mZHdfb3B0aW9ucyBmZHdfb3B0aW9ucwogJXR5cGUg PGRlZmVsdD4JZmR3X29wdGlvbgpAQCAtOTYxMiw3ICs5NjEyLDcgQEAgb3B0X3B1YmxpY2F0 aW9uX2Zvcl90YWJsZXM6CiAJCTsKIAogcHVibGljYXRpb25fZm9yX3RhYmxlczoKLQkJCUZP UiBUQUJMRSByZWxhdGlvbl9leHByX2xpc3QKKwkJCUZPUiBUQUJMRSBwdWJsaWNhdGlvbl90 YWJsZV9saXN0CiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopICQzOwogCQkJCX0KQEAgLTk2 NDMsNyArOTY0Myw3IEBAIEFsdGVyUHVibGljYXRpb25TdG10OgogCQkJCQluLT5vcHRpb25z ID0gJDU7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgQUxURVIgUFVCTElD QVRJT04gbmFtZSBBRERfUCBUQUJMRSByZWxhdGlvbl9leHByX2xpc3QKKwkJCXwgQUxURVIg UFVCTElDQVRJT04gbmFtZSBBRERfUCBUQUJMRSBwdWJsaWNhdGlvbl90YWJsZV9saXN0CiAJ CQkJewogCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyUHVi bGljYXRpb25TdG10KTsKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwpAQCAtOTY1MSw3ICs5NjUx LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4tPnRhYmxlQWN0aW9uID0gREVG RUxFTV9BREQ7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgQUxURVIgUFVC TElDQVRJT04gbmFtZSBTRVQgVEFCTEUgcmVsYXRpb25fZXhwcl9saXN0CisJCQl8IEFMVEVS IFBVQkxJQ0FUSU9OIG5hbWUgU0VUIFRBQkxFIHB1YmxpY2F0aW9uX3RhYmxlX2xpc3QKIAkJ CQl7CiAJCQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJQdWJs aWNhdGlvblN0bXQpOwogCQkJCQluLT5wdWJuYW1lID0gJDM7CkBAIC05NjY5LDYgKzk2Njks MjAgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAJCQkJfQogCQk7CiAKK3B1YmxpY2F0aW9u X3RhYmxlX2xpc3Q6CisJCQlwdWJsaWNhdGlvbl90YWJsZV9lbGVtCQkJCQkJCQkJeyAkJCA9 IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHB1YmxpY2F0aW9uX3RhYmxlX2xpc3QgJywnIHB1 YmxpY2F0aW9uX3RhYmxlX2VsZW0JCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOwor CitwdWJsaWNhdGlvbl90YWJsZV9lbGVtOiByZWxhdGlvbl9leHByIE9wdFdoZXJlQ2xhdXNl CisJCQkJeworCQkJCQlQdWJsaWNhdGlvblRhYmxlICpuID0gbWFrZU5vZGUoUHVibGljYXRp b25UYWJsZSk7CisJCQkJCW4tPnJlbGF0aW9uID0gJDE7CisJCQkJCW4tPndoZXJlQ2xhdXNl ID0gJDI7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKgogICogQ1JFQVRFIFNVQlNDUklQVElPTiBuYW1lIC4uLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IGEyNWY4ZDViOTguLjU2MTlhYzY5MDQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTU1MSw2ICs1NTEsMTMgQEAgY2hlY2tfYWdn bGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIp CiAJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g Q09QWSBGUk9NIFdIRVJFIGNvbmRpdGlvbnMiKTsKIAogCQkJYnJlYWs7CisJCWNhc2UgRVhQ Ul9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFOgorCQkJaWYgKGlzQWdnKQorCQkJCWVyciA9IF8o ImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHB1YmxpY2F0aW9uIFdI RVJFIGV4cHJlc3Npb25zIik7CisJCQllbHNlCisJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3Bl cmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lv bnMiKTsKKworCQkJYnJlYWs7CiAKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJ CWVycmtpbmQgPSB0cnVlOwpAQCAtOTUwLDYgKzk1Nyw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1 bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2Ug RVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOwor CQljYXNlIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKKwkJCWVyciA9IF8oIndpbmRv dyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJl c3Npb25zIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlv bmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMKaW5kZXggZjkyOGMzMjMxMS4uZmM0MTcwZTcyMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jCkBAIC0xMTksNiArMTE5LDEzIEBAIHRyYW5zZm9ybUV4cHJSZWN1 cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkvKiBHdWFyZCBhZ2FpbnN0 IHN0YWNrIG92ZXJmbG93IGR1ZSB0byBvdmVybHkgY29tcGxleCBleHByZXNzaW9ucyAqLwog CWNoZWNrX3N0YWNrX2RlcHRoKCk7CiAKKwkvKiBGdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IGluIHB1YmxpY2F0aW9uIFdIRVJFIGNsYXVzZXMgKi8KKwlpZiAocHN0YXRlLT5wX2V4cHJf a2luZCA9PSBFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkUgJiYgbm9kZVRhZyhleHByKSA9 PSBUX0Z1bmNDYWxsKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJmdW5jdGlvbnMgYXJlIG5v dCBhbGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb25zIiksCisJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihleHByKSkpKTsKKwogCXN3 aXRjaCAobm9kZVRhZyhleHByKSkKIAl7CiAJCWNhc2UgVF9Db2x1bW5SZWY6CkBAIC01MDks NiArNTE2LDcgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29s dW1uUmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lORF9DT1BZX1dIRVJFOgogCQljYXNlIEVY UFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJL OgorCQljYXNlIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKIAkJCS8qIG9rYXkgKi8K IAkJCWJyZWFrOwogCkBAIC0xNzY5LDYgKzE3NzcsOSBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBh cnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRf R0VORVJBVEVEX0NPTFVNTjoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4g Y29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQ Ul9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJx dWVyeSBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAog CQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBo ZXJlLCBzbyB0aGF0IHRoZQpAQCAtMzA4OSw2ICszMTAwLDggQEAgUGFyc2VFeHByS2luZE5h bWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJCXJldHVybiAiR0VORVJBVEVEIEFTIjsK IAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCXJldHVybiAiQ1lDTEUiOworCQlj YXNlIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKKwkJCXJldHVybiAicHVibGljYXRp b24gZXhwcmVzc2lvbiI7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5 IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZnVuYy5jCmluZGV4IDNjZWM4ZGU3ZGEuLmU5NDZmMTdjNjQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2Z1bmMuYwpAQCAtMjY1NSw2ICsyNjU1LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2Vt ZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikK IAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJ YnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFOgorCQkJZXJyID0g Xygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHB1YmxpY2F0 aW9uIFdIRVJFIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRo ZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5k ZXggNjgyYzEwN2U3NC4uOTgwODI2YTUwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC02OTEsMTkgKzY5MSwyMyBAQCBjb3B5X3Jl YWRfZGF0YSh2b2lkICpvdXRidWYsIGludCBtaW5yZWFkLCBpbnQgbWF4cmVhZCkKIAogLyoK ICAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCByZW1vdGUgcmVsYXRpb24gaW4gc2ltaWxhciBm YXNoaW9uIHRoZSBSRUxBVElPTgotICogbWVzc2FnZSBwcm92aWRlcyBkdXJpbmcgcmVwbGlj YXRpb24uCisgKiBtZXNzYWdlIHByb3ZpZGVzIGR1cmluZyByZXBsaWNhdGlvbi4gVGhpcyBm dW5jdGlvbiBhbHNvIHJldHVybnMgdGhlIHJlbGF0aW9uCisgKiBxdWFsaWZpY2F0aW9ucyB0 byBiZSB1c2VkIGluIENPUFkgY29tbWFuZC4KICAqLwogc3RhdGljIHZvaWQKIGZldGNoX3Jl bW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsCi0JCQkJCQlM b2dpY2FsUmVwUmVsYXRpb24gKmxyZWwpCisJCQkJCQlMb2dpY2FsUmVwUmVsYXRpb24gKmxy ZWwsIExpc3QgKipxdWFsKQogewogCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKIAlTdHJpbmdJ bmZvRGF0YSBjbWQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJT2lkCQkJdGFibGVSb3db XSA9IHtPSURPSUQsIENIQVJPSUQsIENIQVJPSUR9OwogCU9pZAkJCWF0dHJSb3dbXSA9IHtU RVhUT0lELCBPSURPSUQsIEJPT0xPSUR9OworCU9pZAkJCXF1YWxSb3dbXSA9IHtURVhUT0lE fTsKIAlib29sCQlpc251bGw7CiAJaW50CQkJbmF0dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwli b29sCQlmaXJzdDsKIAogCWxyZWwtPm5zcG5hbWUgPSBuc3BuYW1lOwogCWxyZWwtPnJlbG5h bWUgPSByZWxuYW1lOwpAQCAtNzk5LDYgKzgwMyw1NSBAQCBmZXRjaF9yZW1vdGVfdGFibGVf aW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCWxyZWwtPm5hdHRzID0gbmF0 dDsKIAogCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKKworCS8qIEdldCByZWxhdGlvbiBx dWFsICovCisJaWYgKHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZD b25uKSA+PSAxNTAwMDApCisJeworCQlyZXNldFN0cmluZ0luZm8oJmNtZCk7CisJCWFwcGVu ZFN0cmluZ0luZm8oJmNtZCwKKwkJCQkJCSAiU0VMRUNUIHBnX2dldF9leHByKHBycXVhbCwg cHJyZWxpZCkgIgorCQkJCQkJICIgIEZST00gcGdfcHVibGljYXRpb24gcCAiCisJCQkJCQkg IiAgSU5ORVIgSk9JTiBwZ19wdWJsaWNhdGlvbl9yZWwgcHIgIgorCQkJCQkJICIgICAgICAg T04gKHAub2lkID0gcHIucHJwdWJpZCkgIgorCQkJCQkJICIgV0hFUkUgcHIucHJyZWxpZCA9 ICV1ICIKKwkJCQkJCSAiICAgQU5EIHAucHVibmFtZSBJTiAoIiwgbHJlbC0+cmVtb3RlaWQp OworCisJCWZpcnN0ID0gdHJ1ZTsKKwkJZm9yZWFjaChsYywgTXlTdWJzY3JpcHRpb24tPnB1 YmxpY2F0aW9ucykKKwkJeworCQkJY2hhcgkgICAqcHVibmFtZSA9IHN0clZhbChsZmlyc3Qo bGMpKTsKKworCQkJaWYgKGZpcnN0KQorCQkJCWZpcnN0ID0gZmFsc2U7CisJCQllbHNlCisJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiLCAiKTsKKworCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmY21kLCBxdW90ZV9saXRlcmFsX2NzdHIocHVibmFtZSkpOworCQl9 CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZjbWQsICcpJyk7CisKKwkJcmVzID0gd2FscmN2 X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgY21kLmRhdGEsIDEsIHF1YWxSb3cpOwor CisJCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfVFVQTEVTKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycm1zZygiY291bGQgbm90IGZldGNoIHJlbGF0aW9uIHF1YWxpZmlj YXRpb25zIGZvciB0YWJsZSBcIiVzLiVzXCIgZnJvbSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJ CQluc3BuYW1lLCByZWxuYW1lLCByZXMtPmVycikpKTsKKworCQlzbG90ID0gTWFrZVNpbmds ZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsK KwkJd2hpbGUgKHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwgdHJ1 ZSwgZmFsc2UsIHNsb3QpKQorCQl7CisJCQlEYXR1bQkJcmYgPSBzbG90X2dldGF0dHIoc2xv dCwgMSwgJmlzbnVsbCk7CisKKwkJCWlmICghaXNudWxsKQorCQkJCSpxdWFsID0gbGFwcGVu ZCgqcXVhbCwgbWFrZVN0cmluZyhUZXh0RGF0dW1HZXRDU3RyaW5nKHJmKSkpOworCisJCQlF eGVjQ2xlYXJUdXBsZShzbG90KTsKKwkJfQorCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVT bG90KHNsb3QpOworCisJCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKKwl9CisKIAlwZnJl ZShjbWQuZGF0YSk7CiB9CiAKQEAgLTgxMiw2ICs4NjUsNyBAQCBjb3B5X3RhYmxlKFJlbGF0 aW9uIHJlbCkKIHsKIAlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbG1hcGVudHJ5OwogCUxv Z2ljYWxSZXBSZWxhdGlvbiBscmVsOworCUxpc3QJICAgKnF1YWwgPSBOSUw7CiAJV2FsUmN2 RXhlY1Jlc3VsdCAqcmVzOwogCVN0cmluZ0luZm9EYXRhIGNtZDsKIAlDb3B5RnJvbVN0YXRl IGNzdGF0ZTsKQEAgLTgyMCw3ICs4NzQsNyBAQCBjb3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkK IAogCS8qIEdldCB0aGUgcHVibGlzaGVyIHJlbGF0aW9uIGluZm8uICovCiAJZmV0Y2hfcmVt b3RlX3RhYmxlX2luZm8oZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNl KHJlbCkpLAotCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksICZscmVsKTsK KwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCAmbHJlbCwgJnF1YWwpOwog CiAJLyogUHV0IHRoZSByZWxhdGlvbiBpbnRvIHJlbG1hcC4gKi8KIAlsb2dpY2FscmVwX3Jl bG1hcF91cGRhdGUoJmxyZWwpOwpAQCAtODI5LDE2ICs4ODMsMjMgQEAgY29weV90YWJsZShS ZWxhdGlvbiByZWwpCiAJcmVsbWFwZW50cnkgPSBsb2dpY2FscmVwX3JlbF9vcGVuKGxyZWwu cmVtb3RlaWQsIE5vTG9jayk7CiAJQXNzZXJ0KHJlbCA9PSByZWxtYXBlbnRyeS0+bG9jYWxy ZWwpOwogCisJLyogTGlzdCBvZiBjb2x1bW5zIGZvciBDT1BZICovCisJYXR0bmFtZWxpc3Qg PSBtYWtlX2NvcHlfYXR0bmFtZWxpc3QocmVsbWFwZW50cnkpOworCiAJLyogU3RhcnQgY29w eSBvbiB0aGUgcHVibGlzaGVyLiAqLwogCWluaXRTdHJpbmdJbmZvKCZjbWQpOwotCWlmIChs cmVsLnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTikKKworCS8qIFJlZ3VsYXIgdGFibGUg d2l0aCBubyByb3cgZmlsdGVyICovCisJaWYgKGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1JF TEFUSU9OICYmIHF1YWwgPT0gTklMKQogCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJDT1BZ ICVzIFRPIFNURE9VVCIsCiAJCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobHJl bC5uc3BuYW1lLCBscmVsLnJlbG5hbWUpKTsKIAllbHNlCiAJewogCQkvKgogCQkgKiBGb3Ig bm9uLXRhYmxlcywgd2UgbmVlZCB0byBkbyBDT1BZIChTRUxFQ1QgLi4uKSwgYnV0IHdlIGNh bid0IGp1c3QKLQkJICogZG8gU0VMRUNUICogYmVjYXVzZSB3ZSBuZWVkIHRvIG5vdCBjb3B5 IGdlbmVyYXRlZCBjb2x1bW5zLgorCQkgKiBkbyBTRUxFQ1QgKiBiZWNhdXNlIHdlIG5lZWQg dG8gbm90IGNvcHkgZ2VuZXJhdGVkIGNvbHVtbnMuIEZvcgorCQkgKiB0YWJsZXMgd2l0aCBh bnkgcm93IGZpbHRlcnMsIGJ1aWxkIGEgU0VMRUNUIHF1ZXJ5IHdpdGggQU5EJ2VkIHJvdwor CQkgKiBmaWx0ZXJzIGZvciBDT1BZLgogCQkgKi8KIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmY21kLCAiQ09QWSAoU0VMRUNUICIpOwogCQlmb3IgKGludCBpID0gMDsgaSA8IGxyZWwu bmF0dHM7IGkrKykKQEAgLTg0Nyw4ICs5MDgsMjkgQEAgY29weV90YWJsZShSZWxhdGlvbiBy ZWwpCiAJCQlpZiAoaSA8IGxyZWwubmF0dHMgLSAxKQogCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmNtZCwgIiwgIik7CiAJCX0KLQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiIEZS T00gJXMpIFRPIFNURE9VVCIsCisJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIiBGUk9NICVz IiwKIAkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihscmVsLm5zcG5hbWUsIGxy ZWwucmVsbmFtZSkpOworCQkvKiBsaXN0IG9mIEFORCdlZCBmaWx0ZXJzICovCisJCWlmIChx dWFsICE9IE5JTCkKKwkJeworCQkJTGlzdENlbGwgICAqbGM7CisJCQlib29sCQlmaXJzdCA9 IHRydWU7CisKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiBXSEVSRSAiKTsK KwkJCWZvcmVhY2gobGMsIHF1YWwpCisJCQl7CisJCQkJY2hhcgkgICAqcSA9IHN0clZhbChs Zmlyc3QobGMpKTsKKworCQkJCWlmIChmaXJzdCkKKwkJCQkJZmlyc3QgPSBmYWxzZTsKKwkJ CQllbHNlCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiBBTkQgIik7CisJ CQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiJXMiLCBxKTsKKwkJCX0KKwkJCWxpc3RfZnJl ZV9kZWVwKHF1YWwpOworCQl9CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAi KSBUTyBTVERPVVQiKTsKIAl9CiAJcmVzID0gd2FscmN2X2V4ZWMoTG9nUmVwV29ya2VyV2Fs UmN2Q29ubiwgY21kLmRhdGEsIDAsIE5VTEwpOwogCXBmcmVlKGNtZC5kYXRhKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IGFiZDUy MTdhYjEuLjEwZjg1MzY1ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYwpAQCAtMTMsMTggKzEzLDI2IEBACiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiCisjaW5jbHVkZSAiYWNj ZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BhcnRpdGlvbi5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUg ImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm5v ZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbHByb3RvLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9u LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vcGdvdXRwdXQuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1 ZGUgInV0aWxzL2ludDguaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5j bHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvdmFybGVuYS5oIgogCkBAIC02MSw2ICs2OSwxMSBAQCBzdGF0aWMg dm9pZCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwKIHN0YXRpYyB2b2lkIHBnb3V0cHV0X3N0cmVhbV9jb21taXQoc3RydWN0IExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJICAgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLAogCQkJCQkJCQkgICBYTG9nUmVjUHRyIGNvbW1pdF9sc24pOworc3RhdGljIEVT dGF0ZSAqY3JlYXRlX2VzdGF0ZV9mb3JfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKK3N0YXRp YyBFeHByU3RhdGUgKnBnb3V0cHV0X3Jvd19maWx0ZXJfcHJlcGFyZV9leHByKE5vZGUgKnJm bm9kZSwgRVN0YXRlICplc3RhdGUpOworc3RhdGljIGJvb2wgcGdvdXRwdXRfcm93X2ZpbHRl cl9leGVjX2V4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0KTsK K3N0YXRpYyBib29sIHBnb3V0cHV0X3Jvd19maWx0ZXIoUmVsYXRpb24gcmVsYXRpb24sIEhl YXBUdXBsZSBvbGR0dXBsZSwKKwkJCQkJCQkJSGVhcFR1cGxlIG5ld3R1cGxlLCBMaXN0ICpy b3dmaWx0ZXIpOwogCiBzdGF0aWMgYm9vbCBwdWJsaWNhdGlvbnNfdmFsaWQ7CiBzdGF0aWMg Ym9vbCBpbl9zdHJlYW1pbmc7CkBAIC05OSw2ICsxMTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBS ZWxhdGlvblN5bmNFbnRyeQogCiAJYm9vbAkJcmVwbGljYXRlX3ZhbGlkOwogCVB1YmxpY2F0 aW9uQWN0aW9ucyBwdWJhY3Rpb25zOworCUxpc3QJICAgKnF1YWw7CiAKIAkvKgogCSAqIE9J RCBvZiB0aGUgcmVsYXRpb24gdG8gcHVibGlzaCBjaGFuZ2VzIGFzLiAgRm9yIGEgcGFydGl0 aW9uLCB0aGlzIG1heQpAQCAtMTIyLDcgKzEzNiw3IEBAIHN0YXRpYyBIVEFCICpSZWxhdGlv blN5bmNDYWNoZSA9IE5VTEw7CiAKIHN0YXRpYyB2b2lkIGluaXRfcmVsX3N5bmNfY2FjaGUo TWVtb3J5Q29udGV4dCBkZWNvZGluZ19jb250ZXh0KTsKIHN0YXRpYyB2b2lkIGNsZWFudXBf cmVsX3N5bmNfY2FjaGUoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgaXNfY29tbWl0KTsKLXN0 YXRpYyBSZWxhdGlvblN5bmNFbnRyeSAqZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0 YSAqZGF0YSwgT2lkIHJlbGlkKTsKK3N0YXRpYyBSZWxhdGlvblN5bmNFbnRyeSAqZ2V0X3Jl bF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsKTsKIHN0YXRp YyB2b2lkIHJlbF9zeW5jX2NhY2hlX3JlbGF0aW9uX2NiKERhdHVtIGFyZywgT2lkIHJlbGlk KTsKIHN0YXRpYyB2b2lkIHJlbF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFy ZywgaW50IGNhY2hlaWQsCiAJCQkJCQkJCQkJICB1aW50MzIgaGFzaHZhbHVlKTsKQEAgLTUy MCw2ICs1MzQsMTQ4IEBAIHNlbmRfcmVsYXRpb25fYW5kX2F0dHJzKFJlbGF0aW9uIHJlbGF0 aW9uLCBUcmFuc2FjdGlvbklkIHhpZCwKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIGZhbHNl KTsKIH0KIAorc3RhdGljIEVTdGF0ZSAqCitjcmVhdGVfZXN0YXRlX2Zvcl9yZWxhdGlvbihS ZWxhdGlvbiByZWwpCit7CisJRVN0YXRlCQkJKmVzdGF0ZTsKKwlSYW5nZVRibEVudHJ5CSpy dGU7CisKKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisKKwlydGUgPSBtYWtl Tm9kZShSYW5nZVRibEVudHJ5KTsKKwlydGUtPnJ0ZWtpbmQgPSBSVEVfUkVMQVRJT047CisJ cnRlLT5yZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwlydGUtPnJlbGtpbmQgPSBy ZWwtPnJkX3JlbC0+cmVsa2luZDsKKwlydGUtPnJlbGxvY2ttb2RlID0gQWNjZXNzU2hhcmVM b2NrOworCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGxpc3RfbWFrZTEocnRlKSk7CisK Kwllc3RhdGUtPmVzX291dHB1dF9jaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKGZhbHNlKTsK KworCXJldHVybiBlc3RhdGU7Cit9CisKK3N0YXRpYyBFeHByU3RhdGUgKgorcGdvdXRwdXRf cm93X2ZpbHRlcl9wcmVwYXJlX2V4cHIoTm9kZSAqcmZub2RlLCBFU3RhdGUgKmVzdGF0ZSkK K3sKKwlFeHByU3RhdGUgICpleHByc3RhdGU7CisJT2lkCQkJZXhwcnR5cGU7CisJRXhwcgkg ICAqZXhwcjsKKworCS8qIFByZXBhcmUgZXhwcmVzc2lvbiBmb3IgZXhlY3V0aW9uICovCisJ ZXhwcnR5cGUgPSBleHByVHlwZShyZm5vZGUpOworCWV4cHIgPSAoRXhwciAqKSBjb2VyY2Vf dG9fdGFyZ2V0X3R5cGUoTlVMTCwgcmZub2RlLCBleHBydHlwZSwgQk9PTE9JRCwgLTEsIENP RVJDSU9OX0FTU0lHTk1FTlQsIENPRVJDRV9JTVBMSUNJVF9DQVNULCAtMSk7CisKKwlpZiAo ZXhwciA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf Q0FOTk9UX0NPRVJDRSksCisJCQkJIGVycm1zZygicm93IGZpbHRlciByZXR1cm5zIHR5cGUg JXMgdGhhdCBjYW5ub3QgYmUgY29lcmNlZCB0byB0aGUgZXhwZWN0ZWQgdHlwZSAlcyIsCisJ CQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwZSksCisJCQkJCQlmb3JtYXRfdHlwZV9iZShC T09MT0lEKSksCisJCQkJIGVycmhpbnQoIllvdSB3aWxsIG5lZWQgdG8gcmV3cml0ZSB0aGUg cm93IGZpbHRlci4iKSkpOworCisJZXhwcnN0YXRlID0gRXhlY1ByZXBhcmVFeHByKGV4cHIs IGVzdGF0ZSk7CisKKwlyZXR1cm4gZXhwcnN0YXRlOworfQorCisvKgorICogRXZhbHVhdGVz IHJvdyBmaWx0ZXIuCisgKgorICogSWYgdGhlIHJvdyBmaWx0ZXIgZXZhbHVhdGVzIHRvIE5V TEwsIGl0IGlzIHRha2VuIGFzIGZhbHNlIGkuZS4gdGhlIGNoYW5nZQorICogaXNuJ3QgcmVw bGljYXRlZC4KKyAqLworc3RhdGljIGJvb2wKK3Bnb3V0cHV0X3Jvd19maWx0ZXJfZXhlY19l eHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwlEYXR1 bQkJcmV0OworCWJvb2wJCWlzbnVsbDsKKworCUFzc2VydChzdGF0ZSAhPSBOVUxMKTsKKwor CXJldCA9IEV4ZWNFdmFsRXhwclN3aXRjaENvbnRleHQoc3RhdGUsIGVjb250ZXh0LCAmaXNu dWxsKTsKKworCWVsb2coREVCVUczLCAicm93IGZpbHRlciBldmFsdWF0ZXMgdG8gJXMgKGlz bnVsbDogJXMpIiwKKwkJIERhdHVtR2V0Qm9vbChyZXQpID8gInRydWUiIDogImZhbHNlIiwK KwkJIGlzbnVsbCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCisJaWYgKGlzbnVsbCkKKwkJcmV0 dXJuIGZhbHNlOworCisJcmV0dXJuIERhdHVtR2V0Qm9vbChyZXQpOworfQorCisvKgorICog Q2hhbmdlIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgcm93IGZpbHRlciwgaWYgYW55LgorICoK KyAqIElmIGl0IHJldHVybnMgdHJ1ZSwgdGhlIGNoYW5nZSBpcyByZXBsaWNhdGVkLCBvdGhl cndpc2UsIGl0IGlzIG5vdC4KKyAqLworc3RhdGljIGJvb2wKK3Bnb3V0cHV0X3Jvd19maWx0 ZXIoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXBsZSwgSGVhcFR1cGxlIG5l d3R1cGxlLCBMaXN0ICpyb3dmaWx0ZXIpCit7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRVN0 YXRlCSAgICplc3RhdGU7CisJRXhwckNvbnRleHQgKmVjeHQ7CisJTWVtb3J5Q29udGV4dCBv bGRjeHQ7CisJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJcmVzdWx0ID0gdHJ1ZTsKKworCS8q IEJhaWwgb3V0IGlmIHRoZXJlIGlzIG5vIHJvdyBmaWx0ZXIgKi8KKwlpZiAocm93ZmlsdGVy ID09IE5JTCkKKwkJcmV0dXJuIHRydWU7CisKKwllbG9nKERFQlVHMywgInRhYmxlIFwiJXMu JXNcIiBoYXMgcm93IGZpbHRlciIsCisJCSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9u YW1lc3BhY2UoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpKSwKKwkJIGdldF9yZWxfbmFt ZShyZWxhdGlvbi0+cmRfaWQpKTsKKworCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJl bGF0aW9uKTsKKworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCisJZXN0YXRlID0gY3JlYXRlX2VzdGF0ZV9mb3JfcmVsYXRpb24ocmVsYXRpb24p OworCisJLyogUHJlcGFyZSBjb250ZXh0IHBlciB0dXBsZSAqLworCWVjeHQgPSBHZXRQZXJU dXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKwllY3h0LT5lY3h0X3NjYW50dXBsZSA9IEV4 ZWNJbml0RXh0cmFUdXBsZVNsb3QoZXN0YXRlLCB0dXBkZXNjLCAmVFRTT3BzSGVhcFR1cGxl KTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCUV4ZWNTdG9yZUhlYXBU dXBsZShuZXd0dXBsZSA/IG5ld3R1cGxlIDogb2xkdHVwbGUsIGVjeHQtPmVjeHRfc2NhbnR1 cGxlLCBmYWxzZSk7CisKKwkvKgorCSAqIElmIHRoZSBzdWJzY3JpcHRpb24gaGFzIG11bHRp cGxlIHB1YmxpY2F0aW9ucyBhbmQgdGhlIHNhbWUgdGFibGUgaGFzIGEKKwkgKiBkaWZmZXJl bnQgcm93IGZpbHRlciBpbiB0aGVzZSBwdWJsaWNhdGlvbnMsIGFsbCByb3cgZmlsdGVycyBt dXN0IGJlCisJICogbWF0Y2hlZCBpbiBvcmRlciB0byByZXBsaWNhdGUgdGhpcyBjaGFuZ2Uu CisJICovCisJZm9yZWFjaChsYywgcm93ZmlsdGVyKQorCXsKKwkJTm9kZQkgICAqcmZub2Rl ID0gKE5vZGUgKikgbGZpcnN0KGxjKTsKKwkJRXhwclN0YXRlICAqZXhwcnN0YXRlOworCisJ CS8qIFByZXBhcmUgZm9yIGV4cHJlc3Npb24gZXhlY3V0aW9uICovCisJCWV4cHJzdGF0ZSA9 IHBnb3V0cHV0X3Jvd19maWx0ZXJfcHJlcGFyZV9leHByKHJmbm9kZSwgZXN0YXRlKTsKKwor CQkvKiBFdmFsdWF0ZXMgcm93IGZpbHRlciAqLworCQlyZXN1bHQgPSBwZ291dHB1dF9yb3df ZmlsdGVyX2V4ZWNfZXhwcihleHByc3RhdGUsIGVjeHQpOworCisJCWVsb2coREVCVUczLCAi cm93IGZpbHRlciBcIiVzXCIgJXNtYXRjaGVkIiwKKwkJCSBUZXh0RGF0dW1HZXRDU3RyaW5n KERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4cHIsCisJCQkJCQkJCQkJCQkJIENTdHJp bmdHZXRUZXh0RGF0dW0obm9kZVRvU3RyaW5nKHJmbm9kZSkpLAorCQkJCQkJCQkJCQkJCSBP YmplY3RJZEdldERhdHVtKHJlbGF0aW9uLT5yZF9pZCkpKSwKKwkJCSByZXN1bHQgPyAiIiA6 ICJub3QgIik7CisKKwkJLyogSWYgdGhlIHR1cGxlIGRvZXMgbm90IG1hdGNoIG9uZSBvZiB0 aGUgcm93IGZpbHRlcnMsIGJhaWwgb3V0ICovCisJCWlmICghcmVzdWx0KQorCQkJYnJlYWs7 CisJfQorCisJLyogQ2xlYW51cCBhbGxvY2F0ZWQgcmVzb3VyY2VzICovCisJUmVzZXRFeHBy Q29udGV4dChlY3h0KTsKKwlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICogU2VuZHMgdGhl IGRlY29kZWQgRE1MIG92ZXIgd2lyZS4KICAqCkBAIC01NDcsNyArNzAzLDcgQEAgcGdvdXRw dXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLAogCWlmIChpbl9zdHJlYW1pbmcpCiAJCXhpZCA9IGNoYW5nZS0+dHhuLT54aWQ7 CiAKLQlyZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRyeShkYXRhLCBSZWxhdGlvbkdldFJl bGlkKHJlbGF0aW9uKSk7CisJcmVsZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwg cmVsYXRpb24pOwogCiAJLyogRmlyc3QgY2hlY2sgdGhlIHRhYmxlIGZpbHRlciAqLwogCXN3 aXRjaCAoY2hhbmdlLT5hY3Rpb24pCkBAIC01NzEsOCArNzI3LDYgQEAgcGdvdXRwdXRfY2hh bmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LAogCS8qIEF2b2lkIGxlYWtpbmcgbWVtb3J5IGJ5IHVzaW5nIGFuZCByZXNldHRpbmcgb3Vy IG93biBjb250ZXh0ICovCiAJb2xkID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGRhdGEtPmNv bnRleHQpOwogCi0JbWF5YmVfc2VuZF9zY2hlbWEoY3R4LCB0eG4sIGNoYW5nZSwgcmVsYXRp b24sIHJlbGVudHJ5KTsKLQogCS8qIFNlbmQgdGhlIGRhdGEgKi8KIAlzd2l0Y2ggKGNoYW5n ZS0+YWN0aW9uKQogCXsKQEAgLTU4MCw2ICs3MzQsMTYgQEAgcGdvdXRwdXRfY2hhbmdlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJ ewogCQkJCUhlYXBUdXBsZQl0dXBsZSA9ICZjaGFuZ2UtPmRhdGEudHAubmV3dHVwbGUtPnR1 cGxlOwogCisJCQkJLyogQ2hlY2sgcm93IGZpbHRlci4gKi8KKwkJCQlpZiAoIXBnb3V0cHV0 X3Jvd19maWx0ZXIocmVsYXRpb24sIE5VTEwsIHR1cGxlLCByZWxlbnRyeS0+cXVhbCkpCisJ CQkJCXJldHVybjsKKworCQkJCS8qCisJCQkJICogU2NoZW1hIHNob3VsZCBiZSBzZW50IGJl Zm9yZSB0aGUgbG9naWMgdGhhdCByZXBsYWNlcyB0aGUKKwkJCQkgKiByZWxhdGlvbiBiZWNh dXNlIGl0IGFsc28gc2VuZHMgdGhlIGFuY2VzdG9yJ3MgcmVsYXRpb24uCisJCQkJICovCisJ CQkJbWF5YmVfc2VuZF9zY2hlbWEoY3R4LCB0eG4sIGNoYW5nZSwgcmVsYXRpb24sIHJlbGVu dHJ5KTsKKwogCQkJCS8qIFN3aXRjaCByZWxhdGlvbiBpZiBwdWJsaXNoaW5nIHZpYSByb290 LiAqLwogCQkJCWlmIChyZWxlbnRyeS0+cHVibGlzaF9hc19yZWxpZCAhPSBSZWxhdGlvbkdl dFJlbGlkKHJlbGF0aW9uKSkKIAkJCQl7CkBAIC02MDMsNiArNzY3LDEyIEBAIHBnb3V0cHV0 X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAkJCQkmY2hhbmdlLT5kYXRhLnRwLm9sZHR1cGxlLT50dXBsZSA6IE5VTEw7CiAJ CQkJSGVhcFR1cGxlCW5ld3R1cGxlID0gJmNoYW5nZS0+ZGF0YS50cC5uZXd0dXBsZS0+dHVw bGU7CiAKKwkJCQkvKiBDaGVjayByb3cgZmlsdGVyLiAqLworCQkJCWlmICghcGdvdXRwdXRf cm93X2ZpbHRlcihyZWxhdGlvbiwgb2xkdHVwbGUsIG5ld3R1cGxlLCByZWxlbnRyeS0+cXVh bCkpCisJCQkJCXJldHVybjsKKworCQkJCW1heWJlX3NlbmRfc2NoZW1hKGN0eCwgdHhuLCBj aGFuZ2UsIHJlbGF0aW9uLCByZWxlbnRyeSk7CisKIAkJCQkvKiBTd2l0Y2ggcmVsYXRpb24g aWYgcHVibGlzaGluZyB2aWEgcm9vdC4gKi8KIAkJCQlpZiAocmVsZW50cnktPnB1Ymxpc2hf YXNfcmVsaWQgIT0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpCiAJCQkJewpAQCAtNjMx LDYgKzgwMSwxMiBAQCBwZ291dHB1dF9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQl7CiAJCQkJSGVhcFR1cGxlCW9sZHR1 cGxlID0gJmNoYW5nZS0+ZGF0YS50cC5vbGR0dXBsZS0+dHVwbGU7CiAKKwkJCQkvKiBDaGVj ayByb3cgZmlsdGVyLiAqLworCQkJCWlmICghcGdvdXRwdXRfcm93X2ZpbHRlcihyZWxhdGlv biwgb2xkdHVwbGUsIE5VTEwsIHJlbGVudHJ5LT5xdWFsKSkKKwkJCQkJcmV0dXJuOworCisJ CQkJbWF5YmVfc2VuZF9zY2hlbWEoY3R4LCB0eG4sIGNoYW5nZSwgcmVsYXRpb24sIHJlbGVu dHJ5KTsKKwogCQkJCS8qIFN3aXRjaCByZWxhdGlvbiBpZiBwdWJsaXNoaW5nIHZpYSByb290 LiAqLwogCQkJCWlmIChyZWxlbnRyeS0+cHVibGlzaF9hc19yZWxpZCAhPSBSZWxhdGlvbkdl dFJlbGlkKHJlbGF0aW9uKSkKIAkJCQl7CkBAIC02ODksMTIgKzg2NSwxMSBAQCBwZ291dHB1 dF90cnVuY2F0ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAlmb3IgKGkgPSAwOyBpIDwgbnJlbGF0aW9uczsgaSsrKQogCXsKIAkJUmVs YXRpb24JcmVsYXRpb24gPSByZWxhdGlvbnNbaV07Ci0JCU9pZAkJCXJlbGlkID0gUmVsYXRp b25HZXRSZWxpZChyZWxhdGlvbik7CiAKIAkJaWYgKCFpc19wdWJsaXNoYWJsZV9yZWxhdGlv bihyZWxhdGlvbikpCiAJCQljb250aW51ZTsKIAotCQlyZWxlbnRyeSA9IGdldF9yZWxfc3lu Y19lbnRyeShkYXRhLCByZWxpZCk7CisJCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5 KGRhdGEsIHJlbGF0aW9uKTsKIAogCQlpZiAoIXJlbGVudHJ5LT5wdWJhY3Rpb25zLnB1YnRy dW5jYXRlKQogCQkJY29udGludWU7CkBAIC03MDQsMTAgKzg3OSwxMCBAQCBwZ291dHB1dF90 cnVuY2F0ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAkJICogcm9vdCB0YWJsZXMgdGhyb3VnaCBpdC4KIAkJICovCiAJCWlmIChyZWxh dGlvbi0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbiAmJgotCQkJcmVsZW50cnktPnB1Ymxpc2hf YXNfcmVsaWQgIT0gcmVsaWQpCisJCQlyZWxlbnRyeS0+cHVibGlzaF9hc19yZWxpZCAhPSBy ZWxlbnRyeS0+cmVsaWQpCiAJCQljb250aW51ZTsKIAotCQlyZWxpZHNbbnJlbGlkcysrXSA9 IHJlbGlkOworCQlyZWxpZHNbbnJlbGlkcysrXSA9IHJlbGVudHJ5LT5yZWxpZDsKIAkJbWF5 YmVfc2VuZF9zY2hlbWEoY3R4LCB0eG4sIGNoYW5nZSwgcmVsYXRpb24sIHJlbGVudHJ5KTsK IAl9CiAKQEAgLTEwMDUsMTYgKzExODAsMjEgQEAgc2V0X3NjaGVtYV9zZW50X2luX3N0cmVh bWVkX3R4bihSZWxhdGlvblN5bmNFbnRyeSAqZW50cnksIFRyYW5zYWN0aW9uSWQgeGlkKQog ICogd2hlbiBwdWJsaXNoaW5nLgogICovCiBzdGF0aWMgUmVsYXRpb25TeW5jRW50cnkgKgot Z2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgT2lkIHJlbGlkKQorZ2V0 X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsKQogewog CVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKLQlib29sCQlhbV9wYXJ0aXRpb24gPSBnZXRf cmVsX3JlbGlzcGFydGl0aW9uKHJlbGlkKTsKLQljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9y ZWxraW5kKHJlbGlkKTsKKwlPaWQJCQlyZWxpZDsKKwlib29sCQlhbV9wYXJ0aXRpb247CisJ Y2hhcgkJcmVsa2luZDsKIAlib29sCQlmb3VuZDsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsK IAogCUFzc2VydChSZWxhdGlvblN5bmNDYWNoZSAhPSBOVUxMKTsKIAorCXJlbGlkID0gUmVs YXRpb25HZXRSZWxpZChyZWwpOworCWFtX3BhcnRpdGlvbiA9IGdldF9yZWxfcmVsaXNwYXJ0 aXRpb24ocmVsaWQpOworCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocmVsaWQpOworCiAJ LyogRmluZCBjYWNoZWQgcmVsYXRpb24gaW5mbywgY3JlYXRpbmcgaWYgbm90IGZvdW5kICov CiAJZW50cnkgPSAoUmVsYXRpb25TeW5jRW50cnkgKikgaGFzaF9zZWFyY2goUmVsYXRpb25T eW5jQ2FjaGUsCiAJCQkJCQkJCQkJCSAgKHZvaWQgKikgJnJlbGlkLApAQCAtMTAzMCw2ICsx MjEwLDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgT2lkIHJl bGlkKQogCQllbnRyeS0+cmVwbGljYXRlX3ZhbGlkID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1Ymluc2VydCA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSA9CiAJCQll bnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVu Y2F0ZSA9IGZhbHNlOworCQllbnRyeS0+cXVhbCA9IE5JTDsKIAkJZW50cnktPnB1Ymxpc2hf YXNfcmVsaWQgPSBJbnZhbGlkT2lkOwogCQllbnRyeS0+bWFwID0gTlVMTDsJCS8qIHdpbGwg YmUgc2V0IGJ5IG1heWJlX3NlbmRfc2NoZW1hKCkgaWYKIAkJCQkJCQkJICogbmVlZGVkICov CkBAIC0xMDYzLDYgKzEyNDQsOSBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRh ICpkYXRhLCBPaWQgcmVsaWQpCiAJCXsKIAkJCVB1YmxpY2F0aW9uICpwdWIgPSBsZmlyc3Qo bGMpOwogCQkJYm9vbAkJcHVibGlzaCA9IGZhbHNlOworCQkJSGVhcFR1cGxlCXJmdHVwbGU7 CisJCQlEYXR1bQkJcmZkYXR1bTsKKwkJCWJvb2wJCXJmaXNudWxsOwogCiAJCQlpZiAocHVi LT5hbGx0YWJsZXMpCiAJCQl7CkBAIC0xMTIyLDkgKzEzMDYsMjkgQEAgZ2V0X3JlbF9zeW5j X2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgT2lkIHJlbGlkKQogCQkJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsKIAkJ CX0KIAotCQkJaWYgKGVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCAmJiBlbnRyeS0+cHVi YWN0aW9ucy5wdWJ1cGRhdGUgJiYKLQkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUg JiYgZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUpCi0JCQkJYnJlYWs7CisJCQkvKgor CQkJICogQ2FjaGUgcm93IGZpbHRlciwgaWYgYXZhaWxhYmxlLiBBbGwgcHVibGljYXRpb24t dGFibGUgbWFwcGluZ3MKKwkJCSAqIG11c3QgYmUgY2hlY2tlZC4gSWYgaXQgaXMgYSBwYXJ0 aXRpb24gYW5kIHB1YnZpYXJvb3QgaXMgdHJ1ZSwKKwkJCSAqIHVzZSB0aGUgcm93IGZpbHRl ciBvZiB0aGUgdG9wbW9zdCBwYXJ0aXRpb25lZCB0YWJsZSBpbnN0ZWFkIG9mCisJCQkgKiB0 aGUgcm93IGZpbHRlciBvZiBpdHMgb3duIHBhcnRpdGlvbi4KKwkJCSAqLworCQkJcmZ0dXBs ZSA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwgT2JqZWN0SWRHZXREYXR1 bShwdWJsaXNoX2FzX3JlbGlkKSwgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkpOworCQkJ aWYgKEhlYXBUdXBsZUlzVmFsaWQocmZ0dXBsZSkpCisJCQl7CisJCQkJcmZkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwgQW51bV9wZ19wdWJs aWNhdGlvbl9yZWxfcHJxdWFsLCAmcmZpc251bGwpOworCisJCQkJaWYgKCFyZmlzbnVsbCkK KwkJCQl7CisJCQkJCU5vZGUJICAgKnJmbm9kZTsKKworCQkJCQlvbGRjdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKKwkJCQkJcmZub2RlID0gc3Ry aW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcocmZkYXR1bSkpOworCQkJCQllbnRyeS0+ cXVhbCA9IGxhcHBlbmQoZW50cnktPnF1YWwsIHJmbm9kZSk7CisJCQkJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjdHgpOworCQkJCX0KKworCQkJCVJlbGVhc2VTeXNDYWNoZShyZnR1 cGxlKTsKKwkJCX0KIAkJfQogCiAJCWxpc3RfZnJlZShwdWJpZHMpOwpAQCAtMTI0Miw2ICsx NDQ2LDcgQEAgcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0gYXJnLCBpbnQg Y2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwogCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsK IAogCS8qCiAJICogV2UgY2FuIGdldCBoZXJlIGlmIHRoZSBwbHVnaW4gd2FzIHVzZWQgaW4g U1FMIGludGVyZmFjZSBhcyB0aGUKQEAgLTEyNTEsNiArMTQ1Niw4IEBAIHJlbF9zeW5jX2Nh Y2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNo dmFsdWUpCiAJaWYgKFJlbGF0aW9uU3luY0NhY2hlID09IE5VTEwpCiAJCXJldHVybjsKIAor CW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRleHQpOwor CiAJLyoKIAkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZmluZCB3aGljaCBlbnRyeSBpbiBvdXIg Y2FjaGUgdGhlIGhhc2ggYmVsb25ncyB0byBzbwogCSAqIG1hcmsgdGhlIHdob2xlIGNhY2hl IGFzIGludmFsaWQuCkBAIC0xMjY4LDUgKzE0NzUsMTEgQEAgcmVsX3N5bmNfY2FjaGVfcHVi bGljYXRpb25fY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkK IAkJZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1YmRlbGV0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVu Y2F0ZSA9IGZhbHNlOworCisJCWlmIChlbnRyeS0+cXVhbCAhPSBOSUwpCisJCQlsaXN0X2Zy ZWVfZGVlcChlbnRyeS0+cXVhbCk7CisJCWVudHJ5LT5xdWFsID0gTklMOwogCX0KKworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMzIx MTUyMTUxZC4uNmY5NDRlYzYwZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00MTcyLDYgKzQxNzIs NyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJs aW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCWludAkJCWlfb2lkOwogCWludAkJCWlfcHJwdWJp ZDsKIAlpbnQJCQlpX3BycmVsaWQ7CisJaW50CQkJaV9wcnJlbHF1YWw7CiAJaW50CQkJaSwK IAkJCQlqLAogCQkJCW50dXBzOwpAQCAtNDE4Miw5ICs0MTgzLDE2IEBAIGdldFB1YmxpY2F0 aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1U YWJsZXMpCiAJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCiAJLyogQ29sbGVjdCBh bGwgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwotCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAotCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJy ZWxpZCAiCi0JCQkJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwiKTsK KwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCisJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQs IHBycmVsaWQsICIKKwkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIocHJxdWFsLCBw cnJlbGlkKSBBUyBwcnJlbHF1YWwgIgorCQkJCQkJCSAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1 YmxpY2F0aW9uX3JlbCIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks CisJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCwgIgor CQkJCQkJCSAiTlVMTCBBUyBwcnJlbHF1YWwgIgorCQkJCQkJCSAiRlJPTSBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uX3JlbCIpOwogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBx dWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIAogCW50dXBzID0gUFFudHVwbGVzKHJl cyk7CkBAIC00MTkzLDYgKzQyMDEsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCWlfb2lkID0g UFFmbnVtYmVyKHJlcywgIm9pZCIpOwogCWlfcHJwdWJpZCA9IFBRZm51bWJlcihyZXMsICJw cnB1YmlkIik7CiAJaV9wcnJlbGlkID0gUFFmbnVtYmVyKHJlcywgInBycmVsaWQiKTsKKwlp X3BycmVscXVhbCA9IFBRZm51bWJlcihyZXMsICJwcnJlbHF1YWwiKTsKIAogCS8qIHRoaXMg YWxsb2NhdGlvbiBtYXkgYmUgbW9yZSB0aGFuIHdlIG5lZWQgKi8KIAlwdWJyaW5mbyA9IHBn X21hbGxvYyhudHVwcyAqIHNpemVvZihQdWJsaWNhdGlvblJlbEluZm8pKTsKQEAgLTQyMzMs NiArNDI0MiwxMCBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJs ZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQlwdWJyaW5mb1tqXS5kb2JqLm5h bWUgPSB0YmluZm8tPmRvYmoubmFtZTsKIAkJcHVicmluZm9bal0ucHVibGljYXRpb24gPSBw dWJpbmZvOwogCQlwdWJyaW5mb1tqXS5wdWJ0YWJsZSA9IHRiaW5mbzsKKwkJaWYgKFBRZ2V0 aXNudWxsKHJlcywgaSwgaV9wcnJlbHF1YWwpKQorCQkJcHVicmluZm9bal0ucHVicmVscXVh bCA9IE5VTEw7CisJCWVsc2UKKwkJCXB1YnJpbmZvW2pdLnB1YnJlbHF1YWwgPSBwZ19zdHJk dXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHJyZWxxdWFsKSk7CiAKIAkJLyogRGVjaWRlIHdo ZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlUHVibGljYXRp b25UYWJsZSgmKHB1YnJpbmZvW2pdLmRvYmopLCBmb3V0KTsKQEAgLTQyNjUsOCArNDI3OCwx MSBAQCBkdW1wUHVibGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNh dGlvblJlbEluZm8gKnB1YnJpbmZvKQogCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJB TFRFUiBQVUJMSUNBVElPTiAlcyBBREQgVEFCTEUgT05MWSIsCiAJCQkJCSAgZm10SWQocHVi aW5mby0+ZG9iai5uYW1lKSk7Ci0JYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgJXM7XG4i LAorCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiICVzIiwKIAkJCQkJICBmbXRRdWFsaWZp ZWREdW1wYWJsZSh0YmluZm8pKTsKKwlpZiAocHVicmluZm8tPnB1YnJlbHF1YWwpCisJCWFw cGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIFdIRVJFICglcykiLCBwdWJyaW5mby0+cHVicmVs cXVhbCk7CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICI7XG4iKTsKIAogCS8qCiAJ ICogVGhlcmUgaXMgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkcm9wIHF1ZXJ5IGFzIHRoZSBk cm9wIGlzIGRvbmUgYnkgdGFibGUKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IGJhOWJjNmRkZDIuLjdk NzJkNDk4YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjI2LDYgKzYyNiw3IEBAIHR5cGVkZWYg c3RydWN0IF9QdWJsaWNhdGlvblJlbEluZm8KIAlEdW1wYWJsZU9iamVjdCBkb2JqOwogCVB1 YmxpY2F0aW9uSW5mbyAqcHVibGljYXRpb247CiAJVGFibGVJbmZvICAqcHVidGFibGU7CisJ Y2hhcgkgICAqcHVicmVscXVhbDsKIH0gUHVibGljYXRpb25SZWxJbmZvOwogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYwppbmRleCAyYWJmMjU1Nzk4Li5lMmU2NGNiM2JmIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjMy OSw4ICs2MzI5LDE1IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4pCiAJCWlmICghcHViYWxsdGFibGVzKQogCQl7CiAJCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLAotCQkJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUsIGMucmVsbmFtZVxuIgotCQkJCQkJ CSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLFxuIgorCQkJCQkJCSAgIlNFTEVDVCBu Lm5zcG5hbWUsIGMucmVsbmFtZSIpOworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAw KQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIiwgcGdfZ2V0X2V4 cHIocHIucHJxdWFsLCBjLm9pZCkiKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCQkJCQkgICIsIE5VTEwiKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZi dWYsCisJCQkJCQkJICAiXG5GUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyxcbiIKIAkJCQkJ CQkgICIgICAgIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4sXG4iCiAJCQkJCQkJICAiICAg ICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgogCQkJCQkJCSAgIldIRVJF IGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIKQEAgLTYzNTksNiArNjM2NiwxMCBAQCBkZXNj cmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkJCQkgIFBRZ2V0 dmFsdWUodGFicmVzLCBqLCAwKSwKIAkJCQkJCQkJICBQUWdldHZhbHVlKHRhYnJlcywgaiwg MSkpOwogCisJCQkJaWYgKCFQUWdldGlzbnVsbCh0YWJyZXMsIGosIDIpKQorCQkJCQlhcHBl bmRQUUV4cEJ1ZmZlcigmYnVmLCAiIFdIRVJFICglcykiLAorCQkJCQkJCQkJICBQUWdldHZh bHVlKHRhYnJlcywgaiwgMikpOworCiAJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwg YnVmLmRhdGEpOwogCQkJfQogCQkJUFFjbGVhcih0YWJyZXMpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IGYzMzJiYWQ0ZDQuLjMzM2MyYjU4MWQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTgzLDYgKzgzLDEzIEBAIHR5 cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uCiAJUHVibGljYXRpb25BY3Rpb25zIHB1YmFjdGlv bnM7CiB9IFB1YmxpY2F0aW9uOwogCit0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbGF0 aW9uSW5mbworeworCU9pZAkJCXJlbGlkOworCVJlbGF0aW9uCXJlbGF0aW9uOworCU5vZGUJ ICAgKndoZXJlQ2xhdXNlOworfSBQdWJsaWNhdGlvblJlbGF0aW9uSW5mbzsKKwogZXh0ZXJu IFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1Ymxp Y2F0aW9uICpHZXRQdWJsaWNhdGlvbkJ5TmFtZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29s IG1pc3Npbmdfb2spOwogZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9p ZCByZWxpZCk7CkBAIC0xMDgsNyArMTE1LDcgQEAgZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxl c1B1YmxpY2F0aW9ucyh2b2lkKTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNh dGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpOwogCiBleHRlcm4gYm9vbCBpc19wdWJs aXNoYWJsZV9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwotZXh0ZXJuIE9iamVjdEFkZHJlc3Mg cHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUmVsYXRpb24gdGFyZ2V0cmVs LAorZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBw dWJpZCwgUHVibGljYXRpb25SZWxhdGlvbkluZm8gKnRhcmdldHJlbCwKIAkJCQkJCQkJCQkJ ICBib29sIGlmX25vdF9leGlzdHMpOwogCiBleHRlcm4gT2lkCWdldF9wdWJsaWNhdGlvbl9v aWQoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCmluZGV4IGI1ZDU1MDRjYmIuLjE1NGJi NjE3NzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25f cmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaApA QCAtMzEsNiArMzEsMTAgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbl9yZWwsNjEwNixQdWJs aWNhdGlvblJlbFJlbGF0aW9uSWQpCiAJT2lkCQkJb2lkOwkJCS8qIG9pZCAqLwogCU9pZAkJ CXBycHViaWQgQktJX0xPT0tVUChwZ19wdWJsaWNhdGlvbik7IC8qIE9pZCBvZiB0aGUgcHVi bGljYXRpb24gKi8KIAlPaWQJCQlwcnJlbGlkIEJLSV9MT09LVVAocGdfY2xhc3MpOwkvKiBP aWQgb2YgdGhlIHJlbGF0aW9uICovCisKKyNpZmRlZglDQVRBTE9HX1ZBUkxFTgkJCS8qIHZh cmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLworCXBnX25vZGVfdHJlZSBwcnF1 YWw7CQkvKiBxdWFsaWZpY2F0aW9ucyAqLworI2VuZGlmCiB9IEZvcm1EYXRhX3BnX3B1Ymxp Y2F0aW9uX3JlbDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDAsNiArNDQsOCBAQCBD QVRBTE9HKHBnX3B1YmxpY2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9uUmVsUmVsYXRpb25J ZCkKICAqLwogdHlwZWRlZiBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbl9yZWwgKkZvcm1fcGdf cHVibGljYXRpb25fcmVsOwogCitERUNMQVJFX1RPQVNUKHBnX3B1YmxpY2F0aW9uX3JlbCwg ODI4NywgODI4OCk7CisKIERFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfcHVibGljYXRp b25fcmVsX29pZF9pbmRleCwgNjExMiwgUHVibGljYXRpb25SZWxPYmplY3RJbmRleElkLCBv biBwZ19wdWJsaWNhdGlvbl9yZWwgdXNpbmcgYnRyZWUob2lkIG9pZF9vcHMpKTsKIERFQ0xB UkVfVU5JUVVFX0lOREVYKHBnX3B1YmxpY2F0aW9uX3JlbF9wcnJlbGlkX3BycHViaWRfaW5k ZXgsIDYxMTMsIFB1YmxpY2F0aW9uUmVsUHJyZWxpZFBycHViaWRJbmRleElkLCBvbiBwZ19w dWJsaWNhdGlvbl9yZWwgdXNpbmcgYnRyZWUocHJyZWxpZCBvaWRfb3BzLCBwcnB1YmlkIG9p ZF9vcHMpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggZDllNDE3YmNkNy4uMjAzNzcwNWY0NSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9ub2Rlcy5oCkBAIC00OTEsNiArNDkxLDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVU YWcKIAlUX1BhcnRpdGlvblJhbmdlRGF0dW0sCiAJVF9QYXJ0aXRpb25DbWQsCiAJVF9WYWN1 dW1SZWxhdGlvbiwKKwlUX1B1YmxpY2F0aW9uVGFibGUsCiAKIAkvKgogCSAqIFRBR1MgRk9S IFJFUExJQ0FUSU9OIEdSQU1NQVIgUEFSU0UgTk9ERVMgKHJlcGxub2Rlcy5oKQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGRlZjk2NTFiMzQuLmNmODE1Y2MwZjIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTM2MjQsMTIgKzM2MjQsMTkgQEAgdHlwZWRlZiBzdHJ1 Y3QgQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10CiB9IEFsdGVyVFNDb25maWd1cmF0aW9uU3Rt dDsKIAogCit0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRhYmxlCit7CisJTm9kZVRhZwkJ dHlwZTsKKwlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIGJlIHB1Ymxp c2hlZCAqLworCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwor fSBQdWJsaWNhdGlvblRhYmxlOworCiB0eXBlZGVmIHN0cnVjdCBDcmVhdGVQdWJsaWNhdGlv blN0bXQKIHsKIAlOb2RlVGFnCQl0eXBlOwogCWNoYXIJICAgKnB1Ym5hbWU7CQkvKiBOYW1l IG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBMaXN0IG9m IERlZkVsZW0gbm9kZXMgKi8KLQlMaXN0CSAgICp0YWJsZXM7CQkJLyogT3B0aW9uYWwgbGlz dCBvZiB0YWJsZXMgdG8gYWRkICovCisJTGlzdAkgICAqdGFibGVzOwkJCS8qIE9wdGlvbmFs IGxpc3Qgb2YgUHVibGljYXRpb25UYWJsZSB0byBhZGQgKi8KIAlib29sCQlmb3JfYWxsX3Rh YmxlczsgLyogU3BlY2lhbCBwdWJsaWNhdGlvbiBmb3IgYWxsIHRhYmxlcyBpbiBkYiAqLwog fSBDcmVhdGVQdWJsaWNhdGlvblN0bXQ7CiAKQEAgLTM2NDIsNyArMzY0OSw3IEBAIHR5cGVk ZWYgc3RydWN0IEFsdGVyUHVibGljYXRpb25TdG10CiAJTGlzdAkgICAqb3B0aW9uczsJCS8q IExpc3Qgb2YgRGVmRWxlbSBub2RlcyAqLwogCiAJLyogcGFyYW1ldGVycyB1c2VkIGZvciBB TFRFUiBQVUJMSUNBVElPTiAuLi4gQUREL0RST1AgVEFCTEUgKi8KLQlMaXN0CSAgICp0YWJs ZXM7CQkJLyogTGlzdCBvZiB0YWJsZXMgdG8gYWRkL2Ryb3AgKi8KKwlMaXN0CSAgICp0YWJs ZXM7CQkJLyogTGlzdCBvZiBQdWJsaWNhdGlvblRhYmxlIHRvIGFkZC9kcm9wICovCiAJYm9v bAkJZm9yX2FsbF90YWJsZXM7IC8qIFNwZWNpYWwgcHVibGljYXRpb24gZm9yIGFsbCB0YWJs ZXMgaW4gZGIgKi8KIAlEZWZFbGVtQWN0aW9uIHRhYmxlQWN0aW9uOwkvKiBXaGF0IGFjdGlv biB0byBwZXJmb3JtIHdpdGggdGhlIHRhYmxlcyAqLwogfSBBbHRlclB1YmxpY2F0aW9uU3Rt dDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDE1MDBkZTJkZDAuLjQ1Mzc1NDNh N2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtODAsNiArODAsNyBAQCB0eXBl ZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9DT1BZX1dIRVJFLAkJLyogV0hF UkUgY29uZGl0aW9uIGluIENPUFkgRlJPTSAqLwogCUVYUFJfS0lORF9HRU5FUkFURURfQ09M VU1OLCAvKiBnZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9yIGEgY29sdW1uICovCiAJRVhQUl9L SU5EX0NZQ0xFX01BUkssCQkvKiBjeWNsZSBtYXJrIHZhbHVlICovCisJRVhQUl9LSU5EX1BV QkxJQ0FUSU9OX1dIRVJFIC8qIFdIRVJFIGNvbmRpdGlvbiBmb3IgYSB0YWJsZSBpbiBQVUJM SUNBVElPTiAqLwogfSBQYXJzZUV4cHJLaW5kOwogCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggNjNkNmFiN2E0ZS4uOTZkODY5ZGQyNyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTE1 Niw2ICsxNTYsNDAgQEAgVGFibGVzOgogCiBEUk9QIFRBQkxFIHRlc3RwdWJfcGFydGVkMTsK IERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQsIHRlc3RwdWJfZm9ycGFydGVk MTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDEgKGEgaW50ZWdlciwgYiB0ZXh0KTsK K0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDIgKGMgdGV4dCwgZCBpbnRlZ2VyKTsKK0NS RUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDMgKGUgaW50ZWdlcik7CitDUkVBVEUgVEFCTEUg dGVzdHB1Yl9yZl90Ymw0IChnIHRleHQpOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBUQUJMRSB0ZXN0cHVi X3JmX3RibDEsIHRlc3RwdWJfcmZfdGJsMiBXSEVSRSAoYyA8PiAndGVzdCcgQU5EIGQgPCA1 KTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMTAwMCBBTkQgZSA8 IDIwMDApOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBUQUJMRSB0ZXN0cHVi X3JmX3RibDI7CistLSByZW1vdmUgdGVzdHB1Yl9yZl90YmwxIGFuZCBhZGQgdGVzdHB1Yl9y Zl90YmwzIGFnYWluIChhbm90aGVyIFdIRVJFIGV4cHJlc3Npb24pCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMzAw IEFORCBlIDwgNTAwKTsKKy0tIGZhaWwgLSBmdW5jdGlvbnMgZGlzYWxsb3dlZAorQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjUgQUREIFRBQkxFIHRlc3RwdWJfcmZfdGJsNCBXSEVSRSAo bGVuZ3RoKGcpIDwgNik7CitFUlJPUjogIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g cHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbnMKK0xJTkUgMTogLi4uSUNBVElPTiB0ZXN0 cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90Ymw0IFdIRVJFIChsZW5ndGgoZykgLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gZmFpbCAtIFdIRVJFIG5vdCBhbGxvd2VkIGluIERST1AKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChl IDwgMjcpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiV0hFUkUiCitMSU5F IDE6IC4uLlIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3Ri bDMgV0hFUkUgKGUgPC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1xkUnArIHRlc3RwdWI1CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKK1Rh YmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hFUkUgKCgoZSA+IDMwMCkg QU5EIChlIDwgNTAwKSkpCisKK0RST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwxOworRFJPUCBU QUJMRSB0ZXN0cHViX3JmX3RibDI7CitEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMzsKK0RS T1AgVEFCTEUgdGVzdHB1Yl9yZl90Ymw0OworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViNTsK IC0tIGZhaWwgLSB2aWV3CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YmwgRk9S IFRBQkxFIHRlc3RwdWJfdmlldzsKIEVSUk9SOiAgInRlc3RwdWJfdmlldyIgaXMgbm90IGEg dGFibGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCBkODQ0MDc1 MzY4Li4zNTIxMWM1NmY2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3Fs CkBAIC05Myw2ICs5MywyOSBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRl ZCBTRVQgKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CiBEUk9QIFRBQkxF IHRlc3RwdWJfcGFydGVkMTsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQs IHRlc3RwdWJfZm9ycGFydGVkMTsKIAorQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSAo YSBpbnRlZ2VyLCBiIHRleHQpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfdGJsMiAoYyB0 ZXh0LCBkIGludGVnZXIpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyAoZSBpbnRl Z2VyKTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDQgKGcgdGV4dCk7CitTRVQgY2xp ZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 YjUgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl90YmwyIFdIRVJFIChj IDw+ICd0ZXN0JyBBTkQgZCA8IDUpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hF UkUgKGUgPiAxMDAwIEFORCBlIDwgMjAwMCk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi NSBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMjsKKy0tIHJlbW92ZSB0ZXN0cHViX3JmX3Ri bDEgYW5kIGFkZCB0ZXN0cHViX3JmX3RibDMgYWdhaW4gKGFub3RoZXIgV0hFUkUgZXhwcmVz c2lvbikKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3Jm X3RibDMgV0hFUkUgKGUgPiAzMDAgQU5EIGUgPCA1MDApOworLS0gZmFpbCAtIGZ1bmN0aW9u cyBkaXNhbGxvd2VkCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBBREQgVEFCTEUgdGVz dHB1Yl9yZl90Ymw0IFdIRVJFIChsZW5ndGgoZykgPCA2KTsKKy0tIGZhaWwgLSBXSEVSRSBu b3QgYWxsb3dlZCBpbiBEUk9QCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBEUk9QIFRB QkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IDI3KTsKK1xkUnArIHRlc3RwdWI1CisK K0RST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwxOworRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3Ri bDI7CitEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMzsKK0RST1AgVEFCTEUgdGVzdHB1Yl9y Zl90Ymw0OworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViNTsKKwogLS0gZmFpbCAtIHZpZXcK IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRibCBGT1IgVEFCTEUgdGVzdHB1Yl92 aWV3OwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIwX3Jvd19maWx0ZXIucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjBfcm93X2ZpbHRlci5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi4zNWE0MTc0MWQzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIwX3Jvd19maWx0ZXIucGwKQEAgLTAsMCArMSwyMjEgQEAK KyMgVGVzdCBsb2dpY2FsIHJlcGxpY2F0aW9uIGJlaGF2aW9yIHdpdGggcm93IGZpbHRlcmlu ZwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3Jlc05vZGU7Cit1c2Ug VGVzdExpYjsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDc7CisKKyMgY3JlYXRlIHB1Ymxp c2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBnZXRfbmV3X25vZGUoJ3B1Ymxpc2hl cicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgY3JlYXRlIHN1YnNjcmliZXIg bm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IGdldF9uZXdfbm9kZSgnc3Vic2NyaWJlcicp OworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2Fs Jyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBzZXR1cCBzdHJ1Y3R1cmUgb24g cHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl8xIChhIGludCBwcmltYXJ5IGtleSwgYiB0ZXh0 KSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFRBQkxFIHRhYl9yb3dmaWx0ZXJfMiAoYyBpbnQgcHJpbWFyeSBrZXkpIik7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jv d2ZpbHRlcl8zIChhIGludCBwcmltYXJ5IGtleSwgYiBib29sZWFuKSIpOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dm aWx0ZXJfcGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBiIGludGVnZXIpIFBBUlRJ VElPTiBCWSBSQU5HRShhKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayAoTElLRSB0 YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9wYXJ0aXRpb25l ZCBBVFRBQ0ggUEFSVElUSU9OIHRhYl9yb3dmaWx0ZXJfbGVzc18xMGsgRk9SIFZBTFVFUyBG Uk9NIChNSU5WQUxVRSkgVE8gKDEwMDAwKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9ncmVhdGVy XzEwayAoTElLRSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkKSIKKyk7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0YWJfcm93Zmls dGVyX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGFiX3Jvd2ZpbHRlcl9ncmVhdGVy XzEwayBGT1IgVkFMVUVTIEZST00gKDEwMDAwKSBUTyAoTUFYVkFMVUUpIgorKTsKKworIyBz ZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWJfcm93ZmlsdGVyXzEgKGEgaW50 IHByaW1hcnkga2V5LCBiIHRleHQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMiAoYyBpbnQgcHJp bWFyeSBrZXkpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMyAoYSBpbnQgcHJpbWFyeSBrZXksIGIg Ym9vbGVhbikiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFy eSBrZXksIGIgaW50ZWdlcikgUEFSVElUSU9OIEJZIFJBTkdFKGEpIgorKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jv d2ZpbHRlcl9sZXNzXzEwayAoTElLRSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkKSIpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxF IHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0YWJfcm93Zmls dGVyX2xlc3NfMTBrIEZPUiBWQUxVRVMgRlJPTSAoTUlOVkFMVUUpIFRPICgxMDAwMCkiCisp OworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBU QUJMRSB0YWJfcm93ZmlsdGVyX2dyZWF0ZXJfMTBrIChMSUtFIHRhYl9yb3dmaWx0ZXJfcGFy dGl0aW9uZWQpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBUQUJMRSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJU SVRJT04gdGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwayBGT1IgVkFMVUVTIEZST00gKDEwMDAw KSBUTyAoTUFYVkFMVUUpIgorKTsKKworIyBzZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElD QVRJT04gdGFwX3B1Yl8xIEZPUiBUQUJMRSB0YWJfcm93ZmlsdGVyXzEgV0hFUkUgKGEgPiAx MDAwIEFORCBiIDw+ICdmaWx0ZXJlZCcpIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl8xIEFERCBU QUJMRSB0YWJfcm93ZmlsdGVyXzIgV0hFUkUgKGMgJSA3ID0gMCkiCispOworCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiB0 YXBfcHViXzEgU0VUIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMSBXSEVSRSAoYSA+IDEwMDAgQU5E IGIgPD4gJ2ZpbHRlcmVkJyksIHRhYl9yb3dmaWx0ZXJfMiBXSEVSRSAoYyAlIDIgPSAwKSwg dGFiX3Jvd2ZpbHRlcl8zIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfMiBGT1IgVEFCTEUgdGFi X3Jvd2ZpbHRlcl8yIFdIRVJFIChjICUgMyA9IDApIgorKTsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJf MyBGT1IgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCBXSEVSRSAoYSA8IDUwMDAp IgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFBVQkxJQ0FUSU9OIHRhcF9wdWJfMyBBREQgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9sZXNzXzEw ayBXSEVSRSAoYSA8IDYwMDApIgorKTsKKworIyB0ZXN0IHJvdyBmaWx0ZXJpbmcKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9y b3dmaWx0ZXJfMSAoYSwgYikgVkFMVUVTICgxLCAnbm90IHJlcGxpY2F0ZWQnKSIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFi X3Jvd2ZpbHRlcl8xIChhLCBiKSBWQUxVRVMgKDE1MDAsICdmaWx0ZXJlZCcpIik7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJf cm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTk4MCwgJ25vdCBmaWx0ZXJlZCcpIik7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0 YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFNFTEVDVCB4LCAndGVzdCAnIHx8IHggRlJPTSBnZW5l cmF0ZV9zZXJpZXMoOTkwLDEwMDIpIHgiCispOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRlcl8yIChjKSBTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRlcl8zIChhLCBiKSBT RUxFQ1QgeCwgKHggJSAzID0gMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIHgiCisp OworIyB1c2UgcGFydGl0aW9uIHJvdyBmaWx0ZXI6CisjIC0gcmVwbGljYXRlICgxLCAxMDAp IGJlY2F1c2UgMSA8IDYwMDAgaXMgdHJ1ZQorIyAtIGRvbid0IHJlcGxpY2F0ZSAoODAwMCwg MTAxKSBiZWNhdXNlIDgwMDAgPCA2MDAwIGlzIGZhbHNlCisjIC0gcmVwbGljYXRlICgxNTAw MCwgMTAyKSBiZWNhdXNlIHBhcnRpdGlvbiB0YWJfcm93ZmlsdGVyX2dyZWF0ZXJfMTBrIGRv ZXNuJ3QgaGF2ZSByb3cgZmlsdGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkIChhLCBi KSBWQUxVRVMoMSwgMTAwKSwoODAwMCwgMTAxKSwoMTUwMDAsIDEwMikiCispOworIyBpbnNl cnQgZGlyZWN0bHkgaW50byBwYXJ0aXRpb24KKyMgdXNlIHBhcnRpdGlvbiByb3cgZmlsdGVy OiByZXBsaWNhdGUgKDIsIDIwMCkgYmVjYXVzZSAyIDwgNjAwMCBpcyB0cnVlCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93 ZmlsdGVyX2xlc3NfMTBrIChhLCBiKSBWQUxVRVMoMiwgMjAwKSIpOworIyB1c2UgcGFydGl0 aW9uIHJvdyBmaWx0ZXI6IHJlcGxpY2F0ZSAoNTUwMCwgMzAwKSBiZWNhdXNlIDU1MDAgPCA2 MDAwIGlzIHRydWUKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQgKGEsIGIpIFZBTFVFUyg1 NTAwLCAzMDApIik7CisKK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hl ci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKK215ICRhcHBuYW1lICAgICAgICAg ICA9ICd0YXBfc3ViJzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hl cl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9w dWJfMSwgdGFwX3B1Yl8yLCB0YXBfcHViXzMiCispOworCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIHdhaXQgZm9yIGluaXRpYWwgdGFibGUg c3luYyB0byBmaW5pc2gKK215ICRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEp ID0gMCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4g KCdyJywgJ3MnKTsiOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9z dGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0 aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCitteSAkcmVzdWx0 ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBhLCBiIEZST00gdGFiX3Jvd2ZpbHRlcl8xIE9SREVSIEJZIDEsIDIiKTsKK2lzKCAkcmVz dWx0LCBxcSgxMDAxfHRlc3QgMTAwMQorMTAwMnx0ZXN0IDEwMDIKKzE5ODB8bm90IGZpbHRl cmVkKSwgJ2NoZWNrIGZpbHRlcmVkIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7 CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIGNvdW50KGMpLCBtaW4oYyksIG1heChjKSBGUk9NIHRhYl9yb3dmaWx0 ZXJfMiIpOworaXMoJHJlc3VsdCwgcXEoM3w2fDE4KSwgJ2NoZWNrIGZpbHRlcmVkIGRhdGEg d2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KGEpIEZST00g dGFiX3Jvd2ZpbHRlcl8zIik7CitpcygkcmVzdWx0LCBxcSgxMCksICdjaGVjayBmaWx0ZXJl ZCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCiskcmVzdWx0ID0KKyAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBhLCBiIEZS T00gdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayBPUkRFUiBCWSAxLCAyIik7CitpcygkcmVzdWx0 LCBxcSgxfDEwMAorMnwyMDAKKzU1MDB8MzAwKSwgJ2NoZWNrIGZpbHRlcmVkIGRhdGEgd2Fz IGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGEsIGIgRlJPTSB0YWJfcm93 ZmlsdGVyX2dyZWF0ZXJfMTBrIE9SREVSIEJZIDEsIDIiKTsKK2lzKCRyZXN1bHQsIHFxKDE1 MDAwfDEwMiksICdjaGVjayBmaWx0ZXJlZCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOworCisjIHRlc3Qgcm93IGZpbHRlciAoSU5TRVJULCBVUERBVEUsIERFTEVURSkKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRh Yl9yb3dmaWx0ZXJfMSAoYSwgYikgVkFMVUVTICg4MDAsICd0ZXN0IDgwMCcpIik7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJf cm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTYwMCwgJ3Rlc3QgMTYwMCcpIik7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJf cm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTYwMSwgJ3Rlc3QgMTYwMScpIik7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJf cm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTcwMCwgJ3Rlc3QgMTcwMCcpIik7CisjIFVQ REFURSBpcyBub3QgcmVwbGljYXRlZCA7IHJvdyBmaWx0ZXIgZXZhbHVhdGVzIHRvIGZhbHNl IHdoZW4gYiA9IE5VTEwKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlVQREFURSB0YWJfcm93ZmlsdGVyXzEgU0VUIGIgPSBOVUxMIFdIRVJFIGEgPSAxNjAw Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJVUERBVEUg dGFiX3Jvd2ZpbHRlcl8xIFNFVCBiID0gJ3Rlc3QgMTYwMSB1cGRhdGVkJyBXSEVSRSBhID0g MTYwMSIpOworIyBERUxFVEUgaXMgbm90IHJlcGxpY2F0ZWQgOyBiIGlzIG5vdCBwYXJ0IG9m IHRoZSBQSyBvciByZXBsaWNhIGlkZW50aXR5IGFuZAorIyBvbGQgdHVwbGUgY29udGFpbnMg YiA9IE5VTEwsIGhlbmNlLCByb3cgZmlsdGVyIGV2YWx1YXRlcyB0byBmYWxzZQorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiREVMRVRFIEZST00gdGFiX3Jv d2ZpbHRlcl8xIFdIRVJFIGEgPSAxNzAwIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGEsIGIgRlJPTSB0YWJfcm93Zmls dGVyXzEgT1JERVIgQlkgMSwgMiIpOworaXMoJHJlc3VsdCwgcXEoMTAwMXx0ZXN0IDEwMDEK KzEwMDJ8dGVzdCAxMDAyCisxNjAwfHRlc3QgMTYwMAorMTYwMXx0ZXN0IDE2MDEgdXBkYXRl ZAorMTcwMHx0ZXN0IDE3MDAKKzE5ODB8bm90IGZpbHRlcmVkKSwgJ2NoZWNrIGZpbHRlcmVk IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKyMgcHVibGlzaCB1c2luZyBw YXJ0aXRpb25lZCB0YWJsZQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl8zIFNFVCAocHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgPSB0cnVlKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlRSVU5DQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQi KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBT VUJTQ1JJUFRJT04gdGFwX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9OIFdJVEggKGNvcHlfZGF0 YSA9IHRydWUpIik7CisjIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSByb3cgZmlsdGVyOiByZXBs aWNhdGUsIDQwMDAgPCA1MDAwIGlzIHRydWUKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQg KGEsIGIpIFZBTFVFUyg0MDAwLCA0MDApIik7CisjIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBy b3cgZmlsdGVyOiByZXBsaWNhdGUsIDQ1MDAgPCA1MDAwIGlzIHRydWUKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0 ZXJfbGVzc18xMGsgKGEsIGIpIFZBTFVFUyg0NTAwLCA0NTApIik7CisjIHVzZSBwYXJ0aXRp b25lZCB0YWJsZSByb3cgZmlsdGVyOiBkb24ndCByZXBsaWNhdGUsIDU2MDAgPCA1MDAwIGlz IGZhbHNlCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB0YWJfcm93ZmlsdGVyX2xlc3NfMTBrIChhLCBiKSBWQUxVRVMoNTYwMCwgMTIz KSIpOworIyB1c2UgcGFydGl0aW9uZWQgdGFibGUgcm93IGZpbHRlcjogZG9uJ3QgcmVwbGlj YXRlLCAxNjAwMCA8IDUwMDAgaXMgZmFsc2UKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfZ3JlYXRlcl8xMGsg KGEsIGIpIFZBTFVFUygxNjAwMCwgMTk1MCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgYSwgYiBGUk9NIHRhYl9yb3dm aWx0ZXJfcGFydGl0aW9uZWQgT1JERVIgQlkgMSwgMiIpOworaXMoICRyZXN1bHQsIHFxKDF8 MTAwCisyfDIwMAorNDAwMHw0MDAKKzQ1MDB8NDUwKSwgJ2NoZWNrIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290IGJlaGF2aW9yJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2Zh c3QnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcpOwotLSAKMi4yMC4xCgo= --a84b75ce88ee417fb2e7d36602f8e43e Content-Disposition: attachment;filename="0002-Measure-row-filter-overhead.patch" Content-Type: text/x-patch; name="0002-Measure-row-filter-overhead.patch" Content-Transfer-Encoding: BASE64 RnJvbSAwZmY1NjUyMGI0MDEyOWMxZmMxZmJiMTM3OTIxNGExYjk0NDEzYTlmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IFN1biwgMzEgSmFuIDIwMjEgMjA6NDg6NDMgLTAzMDAK U3ViamVjdDogW1BBVENIIDIvM10gTWVhc3VyZSByb3cgZmlsdGVyIG92ZXJoZWFkCgotLS0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgfCA5ICsrKysr KysrKwogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDEwZjg1MzY1ZmMuLjQ2 NzdkMjFiNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYwpAQCAtNjE4LDYgKzYxOCw4IEBAIHBnb3V0cHV0X3Jvd19maWx0ZXIoUmVsYXRp b24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXBsZSwgSGVhcFR1cGxlIG5ld3R1cGxlLCBM CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJTGlzdENlbGwgICAqbGM7CiAJYm9vbAkJcmVz dWx0ID0gdHJ1ZTsKKwlpbnN0cl90aW1lCXN0YXJ0X3RpbWU7CisJaW5zdHJfdGltZQllbmRf dGltZTsKIAogCS8qIEJhaWwgb3V0IGlmIHRoZXJlIGlzIG5vIHJvdyBmaWx0ZXIgKi8KIAlp ZiAocm93ZmlsdGVyID09IE5JTCkKQEAgLTYyNyw2ICs2MjksOCBAQCBwZ291dHB1dF9yb3df ZmlsdGVyKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwbGUsIEhlYXBUdXBs ZSBuZXd0dXBsZSwgTAogCQkgZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNl KFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKSksCiAJCSBnZXRfcmVsX25hbWUocmVsYXRp b24tPnJkX2lkKSk7CiAKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0X3RpbWUpOwor CiAJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOwogCiAJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBAIC02NzMsNiArNjc3LDEx IEBAIHBnb3V0cHV0X3Jvd19maWx0ZXIoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBv bGR0dXBsZSwgSGVhcFR1cGxlIG5ld3R1cGxlLCBMCiAJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0 YXRlKTsKIAlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCisJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChlbmRfdGltZSk7CisJSU5TVFJfVElNRV9TVUJUUkFDVChlbmRfdGltZSwgc3RhcnRfdGlt ZSk7CisKKwllbG9nKERFQlVHMiwgInJvdyBmaWx0ZXIgdGltZTogJTAuM2YgdXMiLCBJTlNU Ul9USU1FX0dFVF9ET1VCTEUoZW5kX3RpbWUpICogMWU2KTsKKwogCXJldHVybiByZXN1bHQ7 CiB9CiAKLS0gCjIuMjAuMQoK --a84b75ce88ee417fb2e7d36602f8e43e Content-Disposition: attachment;filename="0003-Debug-messages.patch" Content-Type: text/x-patch; name="0003-Debug-messages.patch" Content-Transfer-Encoding: BASE64 RnJvbSA0Mjc1ZDQ4YzlmNTliNmYzYjJiYzk5YjQ1NjMxMTlkYTM5MDlkZDU2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IEZyaSwgMjYgRmViIDIwMjEgMjE6MDg6MTAgLTAzMDAK U3ViamVjdDogW1BBVENIIDMvM10gRGVidWcgbWVzc2FnZXMKCi0tLQogc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgfCA2ICsrKysrKwogc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDIwX3Jvd19maWx0ZXIucGwgfCAxICsKIDIgZmlsZXMgY2hhbmdlZCwg NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggZmM0MTcw ZTcyMy4uYmQwMjU3NmM4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xMTYs NiArMTE2LDEyIEBAIHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqZXhwcikKIAlpZiAoZXhwciA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsKIAorCS8q CisJICogVF9GdW5jQ2FsbDogMzQ5CisJICogRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJF OiA0MgorCSAqLworCWVsb2coREVCVUczLCAibm9kZVRhZyhleHByKTogJWQgOyBwc3RhdGUt PnBfZXhwcl9raW5kOiAlZCA7IG5vZGVUb1N0cmluZyhleHByKTogJXMiLCBub2RlVGFnKGV4 cHIpLCBwc3RhdGUtPnBfZXhwcl9raW5kLCBub2RlVG9TdHJpbmcoZXhwcikpOworCiAJLyog R3VhcmQgYWdhaW5zdCBzdGFjayBvdmVyZmxvdyBkdWUgdG8gb3Zlcmx5IGNvbXBsZXggZXhw cmVzc2lvbnMgKi8KIAljaGVja19zdGFja19kZXB0aCgpOwogCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjBfcm93X2ZpbHRlci5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyMF9yb3dfZmlsdGVyLnBsCmluZGV4IDM1YTQxNzQxZDMuLjhjMzA1Y2Yx ZGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMF9yb3dfZmlsdGVy LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMF9yb3dfZmlsdGVyLnBsCkBA IC04LDYgKzgsNyBAQCB1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiA3OwogIyBjcmVhdGUgcHVi bGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IGdldF9uZXdfbm9kZSgncHVibGlz aGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9n aWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgJ2xvZ19taW5fbWVzc2FnZXMgPSBERUJVRzMnKTsKICRub2RlX3B1Ymxpc2hlci0+c3Rh cnQ7CiAKICMgY3JlYXRlIHN1YnNjcmliZXIgbm9kZQotLSAKMi4yMC4xCgo= --a84b75ce88ee417fb2e7d36602f8e43e--