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 1pU5lR-0002oy-CH for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Feb 2023 12:59:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pU5lQ-00045G-97 for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Feb 2023 12:59: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 1pU5lP-00044a-1N for pgsql-hackers@lists.postgresql.org; Mon, 20 Feb 2023 12:59:27 +0000 Received: from wnew3-smtp.messagingengine.com ([64.147.123.17]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pU5lI-0005hv-Tk for pgsql-hackers@postgresql.org; Mon, 20 Feb 2023 12:59:26 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailnew.west.internal (Postfix) with ESMTP id 4D13F2B06962; Mon, 20 Feb 2023 07:58:55 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Mon, 20 Feb 2023 07:58:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; t=1676897934; x=1676905134; bh=IOtvjY1TG81owz+SGYo0RgGT7d3v povYCBHHcrZjUPQ=; b=BAzwmN47yybxsgRKVhuRQDtQ+WYBuOAlAMvpIYzx1RaJ KAmUf28ARzI1YFVlPSoyp7TXbWSYBd1N4R5uqsNL+dKkMVTSLBdGBpB0kEaiP4jE HZ0dSwSB+O9gqvz6Bkp/KN5F/LnipP0oTP69L1+NuV9QngTlJOFj8BII5e9KO2Zl CRgT7enc7O70/Ss4sjp/35szps3sBUrRH3bmQ+6nGXX2650eXquDxBcVnMte0Ma4 4zhH6WOTTECgos1g9cZqt8piXNngJCWaD61XnRdkaNiqIJnsg4ntxb0veyi/c8Y9 wbWgblHjm9/oOYN5GMnJr0mc8wa1t2iundn1oRqKSQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudejhedggedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuhfevfhfvjgesmhdtreertdefjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvg hrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepffettedvhfeuueekteej vdefudeggeeutdfhfedukeejffeiudeuueefudeiueegnecuffhomhgrihhnpehpohhsth hgrhgvshhqlhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgr ihhlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvug gsrdgtohhm X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 20 Feb 2023 07:58:53 -0500 (EST) Content-Type: multipart/mixed; boundary="------------SF6XkugaVySGK4M6Y133R9Uq" Message-ID: <896e6e09-2304-4cff-d6ff-62176344b2f6@enterprisedb.com> Date: Mon, 20 Feb 2023 13:58:52 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: dynamic result sets support in extended query protocol Content-Language: en-US From: Peter Eisentraut Cc: Alvaro Herrera References: <20230130130609.mjswqhzqidc3cojl@alvherre.pgsql> To: pgsql-hackers In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------SF6XkugaVySGK4M6Y133R9Uq Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 31.01.23 12:07, Peter Eisentraut wrote: >> Applying this patch, your test queries seem to work correctly. > > Great! > >> This is quite WIP, especially because there's a couple of scenarios >> uncovered by tests that I'd like to ensure correctness about, but if you >> would like to continue adding tests for extended query and dynamic >> result sets, it may be helpful. > > I should note that it is debatable whether my patch extends the extended > query protocol or just uses it within its existing spec but in new ways. >  It just happened to work in old libpq versions without any changes. So > you should keep that in mind as you refine your patch, since the way the > protocol has been extended/creatively-used is still subject to review. After some consideration, I have an idea how to proceed with this. I have split my original patch into two incremental patches. The first patch implements the original feature, but just for the simple query protocol. (The simple query protocol already supports multiple result sets.) Attempting to return dynamic result sets using the extended query protocol will result in an error. The second patch then adds the extended query protocol support back in, but it still has the issues with libpq that we are discussing. I think this way we could have a chance to get the first part into PG16 or early into PG17, and then the second part can be worked on with less stress. This would also allow us to consider a minor protocol version bump, and the handling of binary format for dynamic result sets (like https://commitfest.postgresql.org/42/3777/), and maybe some other issues. The attached patches are the same as before, rebased over master and split up as described. I haven't done any significant work on the contents, but I will try to get the 0001 patch into a more polished state soon. --------------SF6XkugaVySGK4M6Y133R9Uq Content-Type: text/plain; charset=UTF-8; name="v7-0001-Dynamic-result-sets-from-procedures.patch" Content-Disposition: attachment; filename="v7-0001-Dynamic-result-sets-from-procedures.patch" Content-Transfer-Encoding: base64 RnJvbSAxZTIyNDE3YzhjZmE2YWEyMzBhMjFhNmFhMjViMTY2YjNiNGJiZWNiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMCBGZWIgMjAyMyAxMjowOToyNCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgMS8yXSBEeW5hbWljIHJlc3VsdCBzZXRzIGZyb20gcHJvY2VkdXJlcwoK RGVjbGFyaW5nIGEgY3Vyc29yIFdJVEggUkVUVVJOIGluIGEgcHJvY2VkdXJlIG1ha2VzIHRo ZSBjdXJzb3IncyBkYXRhIGJlCnJldHVybmVkIGFzIGEgcmVzdWx0IG9mIHRoZSBDQUxMIGlu dm9jYXRpb24uICBUaGUgcHJvY2VkdXJlIG5lZWRzIHRvCmJlIGRlY2xhcmVkIHdpdGggdGhl IERZTkFNSUMgUkVTVUxUIFNFVFMgYXR0cmlidXRlLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93 d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzZlNzQ3Zjk4LTgzNWYtMmUwNS1j ZGU1LTg2ZWU0NDRhNzE0MEAybmRxdWFkcmFudC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKIGRvYy9zcmMvc2dtbC9p bmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICAgMyArLQogZG9jL3NyYy9zZ21s L3BscGdzcWwuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgIDI3ICsrKystCiBkb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3Byb2NlZHVyZS5zZ21sICAgICAgICAgfCAgMTIgKysrCiBkb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1cmUuc2dtbCAgICAgICAgfCAgMTQgKysrCiBk b2Mvc3JjL3NnbWwvcmVmL2RlY2xhcmUuc2dtbCAgICAgICAgICAgICAgICAgfCAgMzQgKysr KystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMgICAgICAgICAgICB8 ICAgMyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wcm9jLmMgICAgICAgICAgICAgICAg IHwgICA0ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgICAgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICAgICAg ICAgICB8ICA3OSArKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFs Y21kcy5jICAgICAgICAgICAgIHwgIDIzICsrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3R5 cGVjbWRzLmMgICAgICAgICAgICAgICB8ICAxMiArKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAxOCArKystCiBzcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMzcgKysrKysrLQogc3JjL2JhY2tl bmQvdXRpbHMvZXJyY29kZXMudHh0ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAgICB8ICA0OCArKysrKysrKysK IHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAxNiAr Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oICAgICAgICAgICAgICAgICB8ICAg NiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAg fCAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAg IHwgIDEyICsrKwogc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfY2FsbC5v dXQgIHwgIDc4ICsrKysrKysrKysrKysrCiBzcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5j ICAgICAgICAgICAgICAgICAgfCAgIDYgKysKIHNyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFt LnkgICAgICAgICAgICAgICAgICB8ICA1OCArKysrKysrKy0tCiBzcmMvcGwvcGxwZ3NxbC9z cmMvcGxfdW5yZXNlcnZlZF9rd2xpc3QuaCAgICAgfCAgIDIgKwogc3JjL3BsL3BscGdzcWwv c3JjL3NxbC9wbHBnc3FsX2NhbGwuc3FsICAgICAgIHwgIDQ2ICsrKysrKysrCiAuLi4vcmVn cmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dCAgICAgfCAxMDAgKysrKysrKysr KysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfcHJvY2VkdXJlLnNxbCAg ICAgfCAgNjUgKysrKysrKysrKystCiAzMCBmaWxlcyBjaGFuZ2VkLCA2ODUgaW5zZXJ0aW9u cygrKSwgMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBjMWU0MDQ4MDU0 Li41YmFlYzRkYzNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNjA0MSw2ICs2MDQxLDE2IEBA IDx0aXRsZT48c3RydWN0bmFtZT5wZ19wcm9jPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRs ZT4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cHJvZHlucmVzPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+aW50NDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIEZvciBwcm9jZWR1cmVzLCB0aGlzIHJlY29yZHMgdGhlIG1heGltdW0gbnVt YmVyIG9mIGR5bmFtaWMgcmVzdWx0IHNldHMKKyAgICAgICB0aGUgcHJvY2VkdXJlIG1heSBj cmVhdGUuICBPdGhlcndpc2UgemVyby4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0 ZmllbGQ+cHJvbmFyZ3M8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sIGIvZG9jL3NyYy9z Z21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCmluZGV4IDM1MGM3NWJjMzEuLjVmYzlkYzIy YWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKQEAgLTU4ODUsNyAr NTg4NSw4IEBAIDx0aXRsZT48c3RydWN0bmFtZT5yb3V0aW5lczwvc3RydWN0bmFtZT4gQ29s dW1uczwvdGl0bGU+CiAgICAgICAgPHN0cnVjdGZpZWxkPm1heF9keW5hbWljX3Jlc3VsdF9z ZXRzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2FyZGluYWxfbnVtYmVyPC90eXBlPgogICAgICAg PC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgQXBwbGllcyB0byBhIGZlYXR1cmUgbm90 IGF2YWlsYWJsZSBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+Cisg ICAgICAgRm9yIGEgcHJvY2VkdXJlLCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZHluYW1pYyBy ZXN1bHQgc2V0cy4gIE90aGVyd2lzZQorICAgICAgIHplcm8uCiAgICAgICA8L3BhcmE+PC9l bnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wbHBnc3Fs LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGxwZ3NxbC5zZ21sCmluZGV4IDg4OTdhNTQ1MGEuLjBj MGQ3N2IwZTYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wbHBnc3FsLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dtbApAQCAtMzEyOCw3ICszMTI4LDcgQEAgPHRpdGxl PkRlY2xhcmluZyBDdXJzb3IgVmFyaWFibGVzPC90aXRsZT4KICAgICAgQW5vdGhlciB3YXkg aXMgdG8gdXNlIHRoZSBjdXJzb3IgZGVjbGFyYXRpb24gc3ludGF4LAogICAgICB3aGljaCBp biBnZW5lcmFsIGlzOgogPHN5bm9wc2lzPgotPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2Vh YmxlPiA8b3B0aW9uYWw+IDxvcHRpb25hbD4gTk8gPC9vcHRpb25hbD4gU0NST0xMIDwvb3B0 aW9uYWw+IENVUlNPUiA8b3B0aW9uYWw+ICggPHJlcGxhY2VhYmxlPmFyZ3VtZW50czwvcmVw bGFjZWFibGU+ICkgPC9vcHRpb25hbD4gRk9SIDxyZXBsYWNlYWJsZT5xdWVyeTwvcmVwbGFj ZWFibGU+OworPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IDxv cHRpb25hbD4gTk8gPC9vcHRpb25hbD4gU0NST0xMIDwvb3B0aW9uYWw+IENVUlNPUiA8b3B0 aW9uYWw+IDxvcHRpb25hbD4gV0lUSCBSRVRVUk4gPC9vcHRpb25hbD4gKCA8cmVwbGFjZWFi bGU+YXJndW1lbnRzPC9yZXBsYWNlYWJsZT4gKSA8L29wdGlvbmFsPiBGT1IgPHJlcGxhY2Vh YmxlPnF1ZXJ5PC9yZXBsYWNlYWJsZT47CiA8L3N5bm9wc2lzPgogICAgICAoPGxpdGVyYWw+ Rk9SPC9saXRlcmFsPiBjYW4gYmUgcmVwbGFjZWQgYnkgPGxpdGVyYWw+SVM8L2xpdGVyYWw+ IGZvcgogICAgICA8cHJvZHVjdG5hbWU+T3JhY2xlPC9wcm9kdWN0bmFtZT4gY29tcGF0aWJp bGl0eS4pCkBAIC0zMTM2LDYgKzMxMzYsMTAgQEAgPHRpdGxlPkRlY2xhcmluZyBDdXJzb3Ig VmFyaWFibGVzPC90aXRsZT4KICAgICAgc2Nyb2xsaW5nIGJhY2t3YXJkOyBpZiA8bGl0ZXJh bD5OTyBTQ1JPTEw8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCwgYmFja3dhcmQKICAgICAgZmV0 Y2hlcyB3aWxsIGJlIHJlamVjdGVkOyBpZiBuZWl0aGVyIHNwZWNpZmljYXRpb24gYXBwZWFy cywgaXQgaXMKICAgICAgcXVlcnktZGVwZW5kZW50IHdoZXRoZXIgYmFja3dhcmQgZmV0Y2hl cyB3aWxsIGJlIGFsbG93ZWQuCisgICAgIElmIDxsaXRlcmFsPldJVEggUkVUVVJOPC9saXRl cmFsPiBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHRzIG9mIHRoZQorICAgICBjdXJzb3IsIGFm dGVyIGl0IGlzIG9wZW5lZCwgd2lsbCBiZSByZXR1cm5lZCBhcyBhIGR5bmFtaWMgcmVzdWx0 IHNldDsgc2VlCisgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1kZWNsYXJlIi8+IGZvciBkZXRh aWxzLiAgKDxsaXRlcmFsPldJVEhPVVQKKyAgICAgUkVUVVJOPC9saXRlcmFsPiBjYW4gYWxz byBiZSBzcGVjaWZpZWQgYnV0IGhhcyBubyBlZmZlY3QuKQogICAgICA8cmVwbGFjZWFibGU+ YXJndW1lbnRzPC9yZXBsYWNlYWJsZT4sIGlmIHNwZWNpZmllZCwgaXMgYQogICAgICBjb21t YS1zZXBhcmF0ZWQgbGlzdCBvZiBwYWlycyA8bGl0ZXJhbD48cmVwbGFjZWFibGU+bmFtZTwv cmVwbGFjZWFibGU+CiAgICAgIDxyZXBsYWNlYWJsZT5kYXRhdHlwZTwvcmVwbGFjZWFibGU+ PC9saXRlcmFsPiB0aGF0IGRlZmluZSBuYW1lcyB0byBiZQpAQCAtMzIxNSw3ICszMjE5LDcg QEAgPHRpdGxlPk9wZW5pbmcgQ3Vyc29yczwvdGl0bGU+CiAgICAgIDx0aXRsZT48Y29tbWFu ZD5PUEVOIEZPUjwvY29tbWFuZD4gPHJlcGxhY2VhYmxlPnF1ZXJ5PC9yZXBsYWNlYWJsZT48 L3RpdGxlPgogCiA8c3lub3BzaXM+Ci1PUEVOIDxyZXBsYWNlYWJsZT51bmJvdW5kX2N1cnNv cnZhcjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPG9wdGlvbmFsPiBOTyA8L29wdGlvbmFs PiBTQ1JPTEwgPC9vcHRpb25hbD4gRk9SIDxyZXBsYWNlYWJsZT5xdWVyeTwvcmVwbGFjZWFi bGU+OworT1BFTiA8cmVwbGFjZWFibGU+dW5ib3VuZF9jdXJzb3J2YXI8L3JlcGxhY2VhYmxl PiA8b3B0aW9uYWw+IDxvcHRpb25hbD4gTk8gPC9vcHRpb25hbD4gU0NST0xMIDwvb3B0aW9u YWw+IDxvcHRpb25hbD4gV0lUSCBSRVRVUk4gPC9vcHRpb25hbD4gRk9SIDxyZXBsYWNlYWJs ZT5xdWVyeTwvcmVwbGFjZWFibGU+OwogPC9zeW5vcHNpcz4KIAogICAgICAgIDxwYXJhPgpA QCAtMzIzMyw4ICszMjM3LDkgQEAgPHRpdGxlPjxjb21tYW5kPk9QRU4gRk9SPC9jb21tYW5k PiA8cmVwbGFjZWFibGU+cXVlcnk8L3JlcGxhY2VhYmxlPjwvdGl0bGU+CiAgICAgICAgIHN1 YnN0aXR1dGVkIGlzIHRoZSBvbmUgaXQgaGFzIGF0IHRoZSB0aW1lIG9mIHRoZSA8Y29tbWFu ZD5PUEVOPC9jb21tYW5kPjsKICAgICAgICAgc3Vic2VxdWVudCBjaGFuZ2VzIHRvIHRoZSB2 YXJpYWJsZSB3aWxsIG5vdCBhZmZlY3QgdGhlIGN1cnNvcidzCiAgICAgICAgIGJlaGF2aW9y LgotICAgICAgICBUaGUgPGxpdGVyYWw+U0NST0xMPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+ Tk8gU0NST0xMPC9saXRlcmFsPgotICAgICAgICBvcHRpb25zIGhhdmUgdGhlIHNhbWUgbWVh bmluZ3MgYXMgZm9yIGEgYm91bmQgY3Vyc29yLgorICAgICAgICBUaGUgb3B0aW9ucyA8bGl0 ZXJhbD5TQ1JPTEw8L2xpdGVyYWw+LCA8bGl0ZXJhbD5OTyBTQ1JPTEw8L2xpdGVyYWw+LAor ICAgICAgICBhbmQgPGxpdGVyYWw+V0lUSCBSRVRVUk48L2xpdGVyYWw+IGhhdmUgdGhlIHNh bWUgbWVhbmluZ3MgYXMgZm9yIGEKKyAgICAgICAgYm91bmQgY3Vyc29yLgogICAgICAgIDwv cGFyYT4KIAogICAgICAgIDxwYXJhPgpAQCAtMzYxMiw2ICszNjE3LDIwIEBAIDx0aXRsZT5S ZXR1cm5pbmcgQ3Vyc29yczwvdGl0bGU+CiBDT01NSVQ7CiA8L3Byb2dyYW1saXN0aW5nPgog ICAgICAgIDwvcGFyYT4KKworICAgICAgIDxub3RlPgorICAgICAgICA8cGFyYT4KKyAgICAg ICAgIFJldHVybmluZyBhIGN1cnNvciBmcm9tIGEgZnVuY3Rpb24gYXMgZGVzY3JpYmVkIGhl cmUgaXMgYSBzZXBhcmF0ZQorICAgICAgICAgbWVjaGFuaXNtIGZyb20gZGVjbGFyaW5nIGEg Y3Vyc29yIDxsaXRlcmFsPldJVEggUkVUVVJOPC9saXRlcmFsPiwKKyAgICAgICAgIHdoaWNo IGF1dG9tYXRpY2FsbHkgcHJvZHVjZXMgYSByZXN1bHQgc2V0IGZvciB0aGUgY2xpZW50IGlm IHRoZQorICAgICAgICAgY3Vyc29yIGlzIGxlZnQgb3BlbiB3aGVuIHJldHVybmluZyBmcm9t IHRoZSBwcm9jZWR1cmUuICBCb3RoCisgICAgICAgICBtZWNoYW5pc21zIGNhbiBiZSB1c2Vk IHRvIGFjaGlldmUgc2ltaWxhciBlZmZlY3RzLiAgVGhlIGRpZmZlcmVuY2VzCisgICAgICAg ICBhcmUgbWFpbmx5IGhvdyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHByZWZlcnMgdG8gbWFu YWdlIHRoZSBjdXJzb3JzLgorICAgICAgICAgRnVydGhlcm1vcmUsIG90aGVyIFNRTCBpbXBs ZW1lbnRhdGlvbnMgaGF2ZSBvdGhlciBwcm9ncmFtbWluZyBtb2RlbHMKKyAgICAgICAgIHRo YXQgbWlnaHQgbWFwIG1vcmUgZWFzaWx5IHRvIG9uZSBvciB0aGUgb3RoZXIgbWVjaGFuaXNt IHdoZW4gZG9pbmcgYQorICAgICAgICAgbWlncmF0aW9uLgorICAgICAgICA8L3BhcmE+Cisg ICAgICAgPC9ub3RlPgogICAgICA8L3NlY3QzPgogICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wcm9jZWR1cmUuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfcHJvY2VkdXJlLnNnbWwKaW5kZXggYTQ3MzdhMzQzOS4uMmNkZGE3NzMw ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wcm9jZWR1cmUuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Byb2NlZHVyZS5zZ21sCkBAIC0zNCw2ICsz NCw3IEBACiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmFjdGlvbjwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAorICAgIERZTkFN SUMgUkVTVUxUIFNFVFMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmR5bmFtaWNf cmVzdWx0X3NldHM8L3JlcGxhY2VhYmxlPgogICAgIFsgRVhURVJOQUwgXSBTRUNVUklUWSBJ TlZPS0VSIHwgWyBFWFRFUk5BTCBdIFNFQ1VSSVRZIERFRklORVIKICAgICBTRVQgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbmZpZ3VyYXRpb25fcGFyYW1ldGVyPC9yZXBs YWNlYWJsZT4geyBUTyB8ID0gfSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52 YWx1ZTwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9CiAgICAgU0VUIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb25maWd1cmF0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+ IEZST00gQ1VSUkVOVApAQCAtMTU4LDYgKzE1OSwxNyBAQCA8dGl0bGU+UGFyYW1ldGVyczwv dGl0bGU+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkRZTkFNSUMgUkVTVUxUIFNFVFMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmR5bmFtaWNfcmVzdWx0X3NldHM8L3JlcGxh Y2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgQ2hhbmdlcyB0aGUgZHluYW1pYyByZXN1bHQgc2V0cyBzZXR0aW5nIG9mIHRo ZSBwcm9jZWR1cmUuICBTZWUgPHhyZWYKKyAgICAgIGxpbmtlbmQ9InNxbC1jcmVhdGVwcm9j ZWR1cmUiLz4gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg PHRlcm0+PGxpdGVyYWw+PG9wdGlvbmFsPiBFWFRFUk5BTCA8L29wdGlvbmFsPiBTRUNVUklU WSBJTlZPS0VSPC9saXRlcmFsPjwvdGVybT4KICAgICA8dGVybT48bGl0ZXJhbD48b3B0aW9u YWw+IEVYVEVSTkFMIDwvb3B0aW9uYWw+IFNFQ1VSSVRZIERFRklORVI8L2xpdGVyYWw+PC90 ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHJvY2VkdXJlLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1cmUuc2dtbAppbmRleCAwM2Ex NGM4Njg0Li4xYzk5YjAwZWVmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9wcm9jZWR1cmUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1 cmUuc2dtbApAQCAtMjQsNiArMjQsNyBAQAogQ1JFQVRFIFsgT1IgUkVQTEFDRSBdIFBST0NF RFVSRQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gKCBbIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3Jl cGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ25hbWU8 L3JlcGxhY2VhYmxlPiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmd0eXBl PC9yZXBsYWNlYWJsZT4gWyB7IERFRkFVTFQgfCA9IH0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmRlZmF1bHRfZXhwcjwvcmVwbGFjZWFibGU+IF0gWywgLi4uXSBdICkKICAg eyBMQU5HVUFHRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bGFuZ19uYW1lPC9y ZXBsYWNlYWJsZT4KKyAgICB8IERZTkFNSUMgUkVTVUxUIFNFVFMgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmR5bmFtaWNfcmVzdWx0X3NldHM8L3JlcGxhY2VhYmxlPgogICAg IHwgVFJBTlNGT1JNIHsgRk9SIFRZUEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IH0gWywgLi4uIF0KICAgICB8IFsgRVhURVJOQUwg XSBTRUNVUklUWSBJTlZPS0VSIHwgWyBFWFRFUk5BTCBdIFNFQ1VSSVRZIERFRklORVIKICAg ICB8IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uZmlndXJhdGlvbl9w YXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiB7IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IHwgPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiB8IEZST00gQ1VSUkVOVCB9CkBAIC0xNzYsNiAr MTc3LDE5IEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICAgPC9saXN0aXRlbT4K ICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJt PjxsaXRlcmFsPkRZTkFNSUMgUkVTVUxUIFNFVFMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmR5bmFtaWNfcmVzdWx0X3NldHM8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rl cm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgU3BlY2lmaWVz IGhvdyBtYW55IGR5bmFtaWMgcmVzdWx0IHNldHMgdGhlIHByb2NlZHVyZSByZXR1cm5zIChz ZWUKKyAgICAgICA8bGl0ZXJhbD48bGluayBsaW5rZW5kPSJzcWwtZGVjbGFyZSI+REVDTEFS RTwvbGluaz4gV0lUSAorICAgICAgIFJFVFVSTjwvbGl0ZXJhbD4pLiAgVGhlIGRlZmF1bHQg aXMgMC4gIElmIGEgcHJvY2VkdXJlIHJldHVybnMgbW9yZQorICAgICAgIHJlc3VsdCBzZXRz IHRoYW4gZGVjbGFyZWQsIGEgd2FybmluZyBpcyByYWlzZWQuCisgICAgICA8L3BhcmE+Cisg ICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICA8dmFybGlzdGVu dHJ5PgogICAgICA8dGVybT48bGl0ZXJhbD5UUkFOU0ZPUk0geyBGT1IgVFlQRSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHlwZV9uYW1lPC9yZXBsYWNlYWJsZT4gfSBbLCAu Li4gXSB9PC9saXRlcmFsPjwvdGVybT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9kZWNsYXJlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2RlY2xhcmUuc2dtbAppbmRleCA1 NzEyODI1MzE0Li4yMDZlZDc2MGQ5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Rl Y2xhcmUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2RlY2xhcmUuc2dtbApAQCAtMzIs NyArMzIsOCBAQAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KIERFQ0xBUkUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbIEJJTkFS WSBdIFsgQVNFTlNJVElWRSB8IElOU0VOU0lUSVZFIF0gWyBbIE5PIF0gU0NST0xMIF0KLSAg ICBDVVJTT1IgWyB7IFdJVEggfCBXSVRIT1VUIH0gSE9MRCBdIEZPUiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cXVlcnk8L3JlcGxhY2VhYmxlPgorICAgIENVUlNPUiBbIHsg V0lUSCB8IFdJVEhPVVQgfSBIT0xEIF0gWyB7IFdJVEggfCBXSVRIT1VUIH0gUkVUVVJOIF0K KyAgICBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnF1ZXJ5PC9yZXBsYWNl YWJsZT4KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTM4LDYgKzEz OSwyMiBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRl cmFsPldJVEggUkVUVVJOPC9saXRlcmFsPjwvdGVybT4KKyAgICA8dGVybT48bGl0ZXJhbD5X SVRIT1VUIFJFVFVSTjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGN1cnNvcnMgZGVm aW5lZCBpbnNpZGUgYSBwcm9jZWR1cmUuCisgICAgICA8bGl0ZXJhbD5XSVRIIFJFVFVSTjwv bGl0ZXJhbD4gc3BlY2lmaWVzIHRoYXQgdGhlIGN1cnNvcidzIHJlc3VsdCByb3dzCisgICAg ICB3aWxsIGJlIHByb3ZpZGVkIGFzIGEgcmVzdWx0IHNldCBvZiB0aGUgcHJvY2VkdXJlIGlu dm9jYXRpb24uICBUbworICAgICAgYWNjb21wbGlzaCB0aGF0LCB0aGUgY3Vyc29yIG11c3Qg YmUgbGVmdCBvcGVuIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICBwcm9jZWR1cmUuICBJZiBt dWx0aXBsZSA8bGl0ZXJhbD5XSVRIIFJFVFVSTjwvbGl0ZXJhbD4gY3Vyc29ycyBhcmUKKyAg ICAgIGRlY2xhcmVkLCB0aGVuIHRoZWlyIHJlc3VsdHMgd2lsbCBiZSByZXR1cm5lZCBpbiB0 aGUgb3JkZXIgdGhleSB3ZXJlCisgICAgICBjcmVhdGVkLiAgPGxpdGVyYWw+V0lUSE9VVCBS RVRVUk48L2xpdGVyYWw+IGlzIHRoZSBkZWZhdWx0LgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAg IDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5xdWVyeTwvcmVwbGFjZWFi bGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTMzOSw2ICszNTYsMjEgQEAgPHRpdGxl PkV4YW1wbGVzPC90aXRsZT4KICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJzcWwtZmV0Y2giLz4g Zm9yIG1vcmUKICAgIGV4YW1wbGVzIG9mIGN1cnNvciB1c2FnZS4KICAgPC9wYXJhPgorCisg IDxwYXJhPgorICAgVGhpcyBleGFtcGxlIHNob3dzIGhvdyB0byByZXR1cm4gbXVsdGlwbGUg cmVzdWx0IHNldHMgZnJvbSBhIHByb2NlZHVyZToKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFU RSBQUk9DRURVUkUgdGVzdCgpCitMQU5HVUFHRSBTUUwKK0FTICQkCitERUNMQVJFIGEgQ1VS U09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIHRibDE7CitERUNMQVJFIGIgQ1VS U09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIHRibDI7CiskJDsKKworQ0FMTCB0 ZXN0KCk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgVGhlIHJlc3VsdHMgb2YgdGhlIHR3byBj dXJzb3JzIHdpbGwgYmUgcmV0dXJuZWQgaW4gb3JkZXIgZnJvbSB0aGlzIGNhbGwuCisgIDwv cGFyYT4KICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCmluZGV4IDA1NTVlOWJjMDMuLjg3MWEyN2I4 NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1h LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwK QEAgLTE1OTMsNyArMTU5Myw3IEBAIENSRUFURSBWSUVXIHJvdXRpbmVzIEFTCiAgICAgICAg ICAgICAgQ0FTRSBXSEVOIHAucHJvaXNzdHJpY3QgVEhFTiAnWUVTJyBFTFNFICdOTycgRU5E IEVORCBBUyB5ZXNfb3Jfbm8pIEFTIGlzX251bGxfY2FsbCwKICAgICAgICAgICAgQ0FTVChu dWxsIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBzcWxfcGF0aCwKICAgICAgICAgICAgQ0FTVCgn WUVTJyBBUyB5ZXNfb3Jfbm8pIEFTIHNjaGVtYV9sZXZlbF9yb3V0aW5lLAotICAgICAgICAg ICBDQVNUKDAgQVMgY2FyZGluYWxfbnVtYmVyKSBBUyBtYXhfZHluYW1pY19yZXN1bHRfc2V0 cywKKyAgICAgICAgICAgQ0FTVChwLnByb2R5bnJlcyBBUyBjYXJkaW5hbF9udW1iZXIpIEFT IG1heF9keW5hbWljX3Jlc3VsdF9zZXRzLAogICAgICAgICAgICBDQVNUKG51bGwgQVMgeWVz X29yX25vKSBBUyBpc191c2VyX2RlZmluZWRfY2FzdCwKICAgICAgICAgICAgQ0FTVChudWxs IEFTIHllc19vcl9ubykgQVMgaXNfaW1wbGljaXRseV9pbnZvY2FibGUsCiAgICAgICAgICAg IENBU1QoQ0FTRSBXSEVOIHAucHJvc2VjZGVmIFRIRU4gJ0RFRklORVInIEVMU0UgJ0lOVk9L RVInIEVORCBBUyBjaGFyYWN0ZXJfZGF0YSkgQVMgc2VjdXJpdHlfdHlwZSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2FnZ3JlZ2F0ZS5jCmluZGV4IGViYzQ0NTQ3NDMuLmE2MzNiYjc1MDEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYwpAQCAtNjQwLDcgKzY0MCw4IEBAIEFn Z3JlZ2F0ZUNyZWF0ZShjb25zdCBjaGFyICphZ2dOYW1lLAogCQkJCQkJCSBQb2ludGVyR2V0 RGF0dW0oTlVMTCksIC8qIHByb2NvbmZpZyAqLwogCQkJCQkJCSBJbnZhbGlkT2lkLAkvKiBu byBwcm9zdXBwb3J0ICovCiAJCQkJCQkJIDEsIC8qIHByb2Nvc3QgKi8KLQkJCQkJCQkgMCk7 CS8qIHByb3Jvd3MgKi8KKwkJCQkJCQkgMCwJLyogcHJvcm93cyAqLworCQkJCQkJCSAwKTsJ LyogcHJvZHlucmVzICovCiAJcHJvY09pZCA9IG15c2VsZi5vYmplY3RJZDsKIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3Byb2MuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfcHJvYy5jCmluZGV4IDE0ZDU1MmZlMmQuLjYyMGZiODBhOWMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfcHJvYy5jCkBAIC05NSw3ICs5NSw4IEBAIFByb2NlZHVyZUNyZWF0ZShj b25zdCBjaGFyICpwcm9jZWR1cmVOYW1lLAogCQkJCURhdHVtIHByb2NvbmZpZywKIAkJCQlP aWQgcHJvc3VwcG9ydCwKIAkJCQlmbG9hdDQgcHJvY29zdCwKLQkJCQlmbG9hdDQgcHJvcm93 cykKKwkJCQlmbG9hdDQgcHJvcm93cywKKwkJCQlpbnQgZHlucmVzKQogewogCU9pZAkJCXJl dHZhbDsKIAlpbnQJCQlwYXJhbWV0ZXJDb3VudDsKQEAgLTMxNCw2ICszMTUsNyBAQCBQcm9j ZWR1cmVDcmVhdGUoY29uc3QgY2hhciAqcHJvY2VkdXJlTmFtZSwKIAl2YWx1ZXNbQW51bV9w Z19wcm9jX3Byb3JldHNldCAtIDFdID0gQm9vbEdldERhdHVtKHJldHVybnNTZXQpOwogCXZh bHVlc1tBbnVtX3BnX3Byb2NfcHJvdm9sYXRpbGUgLSAxXSA9IENoYXJHZXREYXR1bSh2b2xh dGlsaXR5KTsKIAl2YWx1ZXNbQW51bV9wZ19wcm9jX3Byb3BhcmFsbGVsIC0gMV0gPSBDaGFy R2V0RGF0dW0ocGFyYWxsZWwpOworCXZhbHVlc1tBbnVtX3BnX3Byb2NfcHJvZHlucmVzIC0g MV0gPSBJbnQzMkdldERhdHVtKGR5bnJlcyk7CiAJdmFsdWVzW0FudW1fcGdfcHJvY19wcm9u YXJncyAtIDFdID0gVUludDE2R2V0RGF0dW0ocGFyYW1ldGVyQ291bnQpOwogCXZhbHVlc1tB bnVtX3BnX3Byb2NfcHJvbmFyZ2RlZmF1bHRzIC0gMV0gPSBVSW50MTZHZXREYXR1bShsaXN0 X2xlbmd0aChwYXJhbWV0ZXJEZWZhdWx0cykpOwogCXZhbHVlc1tBbnVtX3BnX3Byb2NfcHJv cmV0dHlwZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShyZXR1cm5UeXBlKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAppbmRleCAzNzY2NzYyYWUzLi5jMTJmYzA3Y2Qw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CkBAIC00ODYsNyArNDg2 LDcgQEAgVDQzMwlNdWx0aWFyZ3VtZW50IEdST1VQSU5HIGZ1bmN0aW9uCQkJWUVTCiBUNDM0 CUdST1VQIEJZIERJU1RJTkNUCQkJWUVTCQogVDQ0MQlBQlMgYW5kIE1PRCBmdW5jdGlvbnMJ CQlZRVMJCiBUNDYxCVN5bW1ldHJpYyBCRVRXRUVOIHByZWRpY2F0ZQkJCVlFUwkKLVQ0NzEJ UmVzdWx0IHNldHMgcmV0dXJuIHZhbHVlCQkJTk8JCitUNDcxCVJlc3VsdCBzZXRzIHJldHVy biB2YWx1ZQkJCU5PCXBhcnRpYWxseSBzdXBwb3J0ZWQKIFQ0NzIJREVTQ1JJQkUgQ1VSU09S CQkJTk8JCiBUNDkxCUxBVEVSQUwgZGVyaXZlZCB0YWJsZQkJCVlFUwkKIFQ0OTUJQ29tYmlu ZWQgZGF0YSBjaGFuZ2UgYW5kIHJldHJpZXZhbAkJCU5PCWRpZmZlcmVudCBzeW50YXgKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKaW5kZXggNjlmNjZkZmU3ZC4uNTIwMGE5 MmZhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKQEAgLTcyLDYgKzcy LDcgQEAKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Bv cnRhbC5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBt Z3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgpAQCAtNTEzLDcgKzUxNCw4IEBA IGNvbXB1dGVfY29tbW9uX2F0dHJpYnV0ZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkg RGVmRWxlbSAqKmNvc3RfaXRlbSwKIAkJCQkJCSBEZWZFbGVtICoqcm93c19pdGVtLAogCQkJ CQkJIERlZkVsZW0gKipzdXBwb3J0X2l0ZW0sCi0JCQkJCQkgRGVmRWxlbSAqKnBhcmFsbGVs X2l0ZW0pCisJCQkJCQkgRGVmRWxlbSAqKnBhcmFsbGVsX2l0ZW0sCisJCQkJCQkgRGVmRWxl bSAqKmR5bnJlc19pdGVtKQogewogCWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ2b2xh dGlsaXR5IikgPT0gMCkKIAl7CkBAIC01ODksMTIgKzU5MSwyOCBAQCBjb21wdXRlX2NvbW1v bl9hdHRyaWJ1dGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJCSpwYXJhbGxlbF9pdGVtID0g ZGVmZWw7CiAJfQorCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImR5bmFtaWNf cmVzdWx0X3NldHMiKSA9PSAwKQorCXsKKwkJaWYgKCFpc19wcm9jZWR1cmUpCisJCQlnb3Rv IGZ1bmN0aW9uX2Vycm9yOworCQlpZiAoKmR5bnJlc19pdGVtKQorCQkJZXJyb3JDb25mbGlj dGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJKmR5bnJlc19pdGVtID0gZGVmZWw7 CisJfQogCWVsc2UKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogUmVjb2duaXplZCBhbiBvcHRp b24gKi8KIAlyZXR1cm4gdHJ1ZTsKIAorZnVuY3Rpb25fZXJyb3I6CisJZXJlcG9ydChFUlJP UiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OKSwK KwkJCSBlcnJtc2coImludmFsaWQgYXR0cmlidXRlIGluIGZ1bmN0aW9uIGRlZmluaXRpb24i KSwKKwkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9jYXRpb24pKSk7 CisJcmV0dXJuIGZhbHNlOworCiBwcm9jZWR1cmVfZXJyb3I6CiAJZXJlcG9ydChFUlJPUiwK IAkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElPTl9ERUZJTklUSU9OKSwKQEAg LTczMSw3ICs3NDksOCBAQCBjb21wdXRlX2Z1bmN0aW9uX2F0dHJpYnV0ZXMoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkJCQkJCWZsb2F0NCAqcHJvY29zdCwKIAkJCQkJCQlmbG9hdDQgKnBy b3Jvd3MsCiAJCQkJCQkJT2lkICpwcm9zdXBwb3J0LAotCQkJCQkJCWNoYXIgKnBhcmFsbGVs X3ApCisJCQkJCQkJY2hhciAqcGFyYWxsZWxfcCwKKwkJCQkJCQlpbnQgKmR5bnJlc19wKQog ewogCUxpc3RDZWxsICAgKm9wdGlvbjsKIAlEZWZFbGVtICAgICphc19pdGVtID0gTlVMTDsK QEAgLTc0Nyw2ICs3NjYsNyBAQCBjb21wdXRlX2Z1bmN0aW9uX2F0dHJpYnV0ZXMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCURlZkVsZW0gICAgKnJvd3NfaXRlbSA9IE5VTEw7CiAJRGVmRWxl bSAgICAqc3VwcG9ydF9pdGVtID0gTlVMTDsKIAlEZWZFbGVtICAgICpwYXJhbGxlbF9pdGVt ID0gTlVMTDsKKwlEZWZFbGVtICAgICpkeW5yZXNfaXRlbSA9IE5VTEw7CiAKIAlmb3JlYWNo KG9wdGlvbiwgb3B0aW9ucykKIAl7CkBAIC03OTIsNyArODEyLDggQEAgY29tcHV0ZV9mdW5j dGlvbl9hdHRyaWJ1dGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgICZjb3N0 X2l0ZW0sCiAJCQkJCQkJCQkJICAmcm93c19pdGVtLAogCQkJCQkJCQkJCSAgJnN1cHBvcnRf aXRlbSwKLQkJCQkJCQkJCQkgICZwYXJhbGxlbF9pdGVtKSkKKwkJCQkJCQkJCQkgICZwYXJh bGxlbF9pdGVtLAorCQkJCQkJCQkJCSAgJmR5bnJlc19pdGVtKSkKIAkJewogCQkJLyogcmVj b2duaXplZCBjb21tb24gb3B0aW9uICovCiAJCQljb250aW51ZTsKQEAgLTg0MCw2ICs4NjEs MTEgQEAgY29tcHV0ZV9mdW5jdGlvbl9hdHRyaWJ1dGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJKnByb3N1cHBvcnQgPSBpbnRlcnByZXRfZnVuY19zdXBwb3J0KHN1cHBvcnRfaXRlbSk7 CiAJaWYgKHBhcmFsbGVsX2l0ZW0pCiAJCSpwYXJhbGxlbF9wID0gaW50ZXJwcmV0X2Z1bmNf cGFyYWxsZWwocGFyYWxsZWxfaXRlbSk7CisJaWYgKGR5bnJlc19pdGVtKQorCXsKKwkJKmR5 bnJlc19wID0gaW50VmFsKGR5bnJlc19pdGVtLT5hcmcpOworCQlBc3NlcnQoKmR5bnJlc19w ID49IDApOwkvKiBlbmZvcmNlZCBieSBwYXJzZXIgKi8KKwl9CiB9CiAKIApAQCAtMTA1MSw2 ICsxMDc3LDcgQEAgQ3JlYXRlRnVuY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVG dW5jdGlvblN0bXQgKnN0bXQpCiAJRm9ybV9wZ19sYW5ndWFnZSBsYW5ndWFnZVN0cnVjdDsK IAlMaXN0CSAgICphc19jbGF1c2U7CiAJY2hhcgkJcGFyYWxsZWw7CisJaW50CQkJZHlucmVz OwogCiAJLyogQ29udmVydCBsaXN0IG9mIG5hbWVzIHRvIGEgbmFtZSBhbmQgbmFtZXNwYWNl ICovCiAJbmFtZXNwYWNlSWQgPSBRdWFsaWZpZWROYW1lR2V0Q3JlYXRpb25OYW1lc3BhY2Uo c3RtdC0+ZnVuY25hbWUsCkBAIC0xMDc1LDYgKzExMDIsNyBAQCBDcmVhdGVGdW5jdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZ1bmN0aW9uU3RtdCAqc3RtdCkKIAlwcm9yb3dz ID0gLTE7CQkJCS8qIGluZGljYXRlcyBub3Qgc2V0ICovCiAJcHJvc3VwcG9ydCA9IEludmFs aWRPaWQ7CiAJcGFyYWxsZWwgPSBQUk9QQVJBTExFTF9VTlNBRkU7CisJZHlucmVzID0gMDsK IAogCS8qIEV4dHJhY3Qgbm9uLWRlZmF1bHQgYXR0cmlidXRlcyBmcm9tIHN0bXQtPm9wdGlv bnMgbGlzdCAqLwogCWNvbXB1dGVfZnVuY3Rpb25fYXR0cmlidXRlcyhwc3RhdGUsCkBAIC0x MDg0LDcgKzExMTIsNyBAQCBDcmVhdGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZUZ1bmN0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCQkJJmlzV2luZG93RnVuYywgJnZvbGF0 aWxpdHksCiAJCQkJCQkJCSZpc1N0cmljdCwgJnNlY3VyaXR5LCAmaXNMZWFrUHJvb2YsCiAJ CQkJCQkJCSZwcm9jb25maWcsICZwcm9jb3N0LCAmcHJvcm93cywKLQkJCQkJCQkJJnByb3N1 cHBvcnQsICZwYXJhbGxlbCk7CisJCQkJCQkJCSZwcm9zdXBwb3J0LCAmcGFyYWxsZWwsICZk eW5yZXMpOwogCiAJaWYgKCFsYW5ndWFnZSkKIAl7CkBAIC0xMjg1LDcgKzEzMTMsOCBAQCBD cmVhdGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZ1bmN0aW9uU3RtdCAq c3RtdCkKIAkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShwcm9jb25maWcpLAogCQkJCQkJICAg cHJvc3VwcG9ydCwKIAkJCQkJCSAgIHByb2Nvc3QsCi0JCQkJCQkgICBwcm9yb3dzKTsKKwkJ CQkJCSAgIHByb3Jvd3MsCisJCQkJCQkgICBkeW5yZXMpOwogfQogCiAvKgpAQCAtMTM2Miw2 ICsxMzkxLDcgQEAgQWx0ZXJGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyRnVu Y3Rpb25TdG10ICpzdG10KQogCURlZkVsZW0gICAgKnJvd3NfaXRlbSA9IE5VTEw7CiAJRGVm RWxlbSAgICAqc3VwcG9ydF9pdGVtID0gTlVMTDsKIAlEZWZFbGVtICAgICpwYXJhbGxlbF9p dGVtID0gTlVMTDsKKwlEZWZFbGVtICAgICpkeW5yZXNfaXRlbSA9IE5VTEw7CiAJT2JqZWN0 QWRkcmVzcyBhZGRyZXNzOwogCiAJcmVsID0gdGFibGVfb3BlbihQcm9jZWR1cmVSZWxhdGlv bklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKQEAgLTE0MDUsNyArMTQzNSw4IEBAIEFsdGVyRnVu Y3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlckZ1bmN0aW9uU3RtdCAqc3RtdCkKIAkJ CQkJCQkJCSAmY29zdF9pdGVtLAogCQkJCQkJCQkJICZyb3dzX2l0ZW0sCiAJCQkJCQkJCQkg JnN1cHBvcnRfaXRlbSwKLQkJCQkJCQkJCSAmcGFyYWxsZWxfaXRlbSkgPT0gZmFsc2UpCisJ CQkJCQkJCQkgJnBhcmFsbGVsX2l0ZW0sCisJCQkJCQkJCQkgJmR5bnJlc19pdGVtKSA9PSBm YWxzZSkKIAkJCWVsb2coRVJST1IsICJvcHRpb24gXCIlc1wiIG5vdCByZWNvZ25pemVkIiwg ZGVmZWwtPmRlZm5hbWUpOwogCX0KIApAQCAtMTQ2Nyw2ICsxNDk4LDggQEAgQWx0ZXJGdW5j dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyRnVuY3Rpb25TdG10ICpzdG10KQogCX0K IAlpZiAocGFyYWxsZWxfaXRlbSkKIAkJcHJvY0Zvcm0tPnByb3BhcmFsbGVsID0gaW50ZXJw cmV0X2Z1bmNfcGFyYWxsZWwocGFyYWxsZWxfaXRlbSk7CisJaWYgKGR5bnJlc19pdGVtKQor CQlwcm9jRm9ybS0+cHJvZHlucmVzID0gaW50VmFsKGR5bnJlc19pdGVtLT5hcmcpOwogCWlm IChzZXRfaXRlbXMpCiAJewogCQlEYXR1bQkJZGF0dW07CkBAIC0yMTQ0LDYgKzIxNzcsMTcg QEAgRXhlY3V0ZURvU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERvU3RtdCAqc3RtdCwgYm9v bCBhdG9taWMpCiAJT2lkRnVuY3Rpb25DYWxsMShsYW5pbmxpbmUsIFBvaW50ZXJHZXREYXR1 bShjb2RlYmxvY2spKTsKIH0KIAorc3RhdGljIExpc3QgKnByb2NlZHVyZV9zdGFjazsKKwor T2lkCitDdXJyZW50UHJvY2VkdXJlKHZvaWQpCit7CisJaWYgKCFwcm9jZWR1cmVfc3RhY2sp CisJCXJldHVybiBJbnZhbGlkT2lkOworCWVsc2UKKwkJcmV0dXJuIGxsYXN0X29pZChwcm9j ZWR1cmVfc3RhY2spOworfQorCiAvKgogICogRXhlY3V0ZSBDQUxMIHN0YXRlbWVudAogICoK QEAgLTIxODMsNiArMjIyNyw3IEBAIEV4ZWN1dGVDYWxsU3RtdChDYWxsU3RtdCAqc3RtdCwg UGFyYW1MaXN0SW5mbyBwYXJhbXMsIGJvb2wgYXRvbWljLCBEZXN0UmVjZWl2ZXIKIAlBY2xS ZXN1bHQJYWNscmVzdWx0OwogCUZtZ3JJbmZvCWZsaW5mbzsKIAlDYWxsQ29udGV4dCAqY2Fs bGNvbnRleHQ7CisJaW50CQkJcHJvZHlucmVzOwogCUVTdGF0ZQkgICAqZXN0YXRlOwogCUV4 cHJDb250ZXh0ICplY29udGV4dDsKIAlIZWFwVHVwbGUJdHA7CkBAIC0yMjIzLDYgKzIyNjgs OCBAQCBFeGVjdXRlQ2FsbFN0bXQoQ2FsbFN0bXQgKnN0bXQsIFBhcmFtTGlzdEluZm8gcGFy YW1zLCBib29sIGF0b21pYywgRGVzdFJlY2VpdmVyCiAJaWYgKCgoRm9ybV9wZ19wcm9jKSBH RVRTVFJVQ1QodHApKS0+cHJvc2VjZGVmKQogCQljYWxsY29udGV4dC0+YXRvbWljID0gdHJ1 ZTsKIAorCXByb2R5bnJlcyA9ICgoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QodHApKS0+cHJv ZHlucmVzOworCiAJUmVsZWFzZVN5c0NhY2hlKHRwKTsKIAogCS8qIHNhZmV0eSBjaGVjazsg c2VlIEV4ZWNJbml0RnVuYygpICovCkBAIC0yMjgzLDcgKzIzMzAsMTggQEAgRXhlY3V0ZUNh bGxTdG10KENhbGxTdG10ICpzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgYm9vbCBhdG9t aWMsIERlc3RSZWNlaXZlcgogCiAJLyogSGVyZSB3ZSBhY3R1YWxseSBjYWxsIHRoZSBwcm9j ZWR1cmUgKi8KIAlwZ3N0YXRfaW5pdF9mdW5jdGlvbl91c2FnZShmY2luZm8sICZmY3VzYWdl KTsKLQlyZXR2YWwgPSBGdW5jdGlvbkNhbGxJbnZva2UoZmNpbmZvKTsKKworCXByb2NlZHVy ZV9zdGFjayA9IGxhcHBlbmRfb2lkKHByb2NlZHVyZV9zdGFjaywgZmV4cHItPmZ1bmNpZCk7 CisJUEdfVFJZKCk7CisJeworCQlyZXR2YWwgPSBGdW5jdGlvbkNhbGxJbnZva2UoZmNpbmZv KTsKKwl9CisJUEdfRklOQUxMWSgpOworCXsKKwkJcHJvY2VkdXJlX3N0YWNrID0gbGlzdF9k ZWxldGVfbGFzdChwcm9jZWR1cmVfc3RhY2spOworCX0KKwlQR19FTkRfVFJZKCk7CisKIAlw Z3N0YXRfZW5kX2Z1bmN0aW9uX3VzYWdlKCZmY3VzYWdlLCB0cnVlKTsKIAogCS8qIEhhbmRs ZSB0aGUgcHJvY2VkdXJlJ3Mgb3V0cHV0cyAqLwpAQCAtMjM0NCw2ICsyNDAyLDEzIEBAIEV4 ZWN1dGVDYWxsU3RtdChDYWxsU3RtdCAqc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIGJv b2wgYXRvbWljLCBEZXN0UmVjZWl2ZXIKIAkJCSBmZXhwci0+ZnVuY3Jlc3VsdHR5cGUpOwog CiAJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKworCUNsb3NlT3RoZXJSZXR1cm5hYmxl Q3Vyc29ycyhmZXhwci0+ZnVuY2lkKTsKKworCWlmIChsaXN0X2xlbmd0aChHZXRSZXR1cm5h YmxlQ3Vyc29ycygpKSA+IHByb2R5bnJlcykKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9XQVJOSU5HX0FUVEVNUFRfVE9fUkVUVVJOX1RPT19NQU5ZX1JFU1VM VF9TRVRTKSwKKwkJCQllcnJtc2coImF0dGVtcHQgdG8gcmV0dXJuIHRvbyBtYW55IHJlc3Vs dCBzZXRzIikpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cG9ydGFsY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmluZGV4 IDhhM2NmOThjY2UuLmU3M2Y3YmZiMjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRz LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAogI2luY2x1ZGUg ImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvcG9ydGFsY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9y LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKQEAgLTE0MCw2ICsx NDEsMjggQEAgUGVyZm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWNsYXJl Q3Vyc29yU3RtdCAqY3N0bXQsIFBhcmFtTGlzdEluZm8gcGEKIAkJCXBvcnRhbC0+Y3Vyc29y T3B0aW9ucyB8PSBDVVJTT1JfT1BUX05PX1NDUk9MTDsKIAl9CiAKKwkvKgorCSAqIEZvciBy ZXR1cm5hYmxlIGN1cnNvcnMsIHJlbWVtYmVyIHRoZSBjdXJyZW50bHkgYWN0aXZlIHByb2Nl ZHVyZSwgYXMKKwkgKiB3ZWxsIGFzIHRoZSBjb21tYW5kIElELCBzbyB3ZSBjYW4gc29ydCBi eSBjcmVhdGlvbiBvcmRlciBsYXRlci4gIElmCisJICogdGhlcmUgaXMgbm8gcHJvY2VkdXJl IGFjdGl2ZSwgdGhlIGN1cnNvciBpcyBtYXJrZWQgYXMgV0lUSE9VVCBSRVRVUk4uCisJICog KFRoaXMgaXMgbm90IGFuIGVycm9yLCBwZXIgU1FMIHN0YW5kYXJkLCBzdWJjbGF1c2UgIkVm ZmVjdCBvZiBvcGVuaW5nIGEKKwkgKiBjdXJzb3IiLikKKwkgKi8KKwlpZiAocG9ydGFsLT5j dXJzb3JPcHRpb25zICYgQ1VSU09SX09QVF9SRVRVUk4pCisJeworCQlPaWQJCQlwcm9jSWQg PSBDdXJyZW50UHJvY2VkdXJlKCk7CisKKwkJaWYgKHByb2NJZCkKKwkJeworCQkJcG9ydGFs LT5wcm9jSWQgPSBwcm9jSWQ7CisJCQlwb3J0YWwtPmNyZWF0ZUNpZCA9IEdldEN1cnJlbnRD b21tYW5kSWQodHJ1ZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlwb3J0YWwtPmN1cnNvck9w dGlvbnMgJj0gfkNVUlNPUl9PUFRfUkVUVVJOOworCQl9CisJfQorCiAJLyoKIAkgKiBTdGFy dCBleGVjdXRpb24sIGluc2VydGluZyBwYXJhbWV0ZXJzIGlmIGFueS4KIAkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90eXBlY21kcy5jCmluZGV4IDA0YmRkYWVmODEuLjFlNDBmY2VkZDMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdHlwZWNtZHMuYwpAQCAtMTc3Nyw3ICsxNzc3LDggQEAgbWFrZVJhbmdl Q29uc3RydWN0b3JzKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuYW1lc3BhY2UsCiAJCQkJCQkJ CSBQb2ludGVyR2V0RGF0dW0oTlVMTCksIC8qIHByb2NvbmZpZyAqLwogCQkJCQkJCQkgSW52 YWxpZE9pZCwJLyogcHJvc3VwcG9ydCAqLwogCQkJCQkJCQkgMS4wLAkvKiBwcm9jb3N0ICov Ci0JCQkJCQkJCSAwLjApOwkvKiBwcm9yb3dzICovCisJCQkJCQkJCSAwLjAsCS8qIHByb3Jv d3MgKi8KKwkJCQkJCQkJIDApOwkvKiBwcm9keW5yZXMgKi8KIAogCQkvKgogCQkgKiBNYWtl IHRoZSBjb25zdHJ1Y3RvcnMgaW50ZXJuYWxseS1kZXBlbmRlbnQgb24gdGhlIHJhbmdlIHR5 cGUgc28KQEAgLTE4NDIsNyArMTg0Myw4IEBAIG1ha2VNdWx0aXJhbmdlQ29uc3RydWN0b3Jz KGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuYW1lc3BhY2UsCiAJCQkJCQkJIFBvaW50ZXJHZXRE YXR1bShOVUxMKSwgLyogcHJvY29uZmlnICovCiAJCQkJCQkJIEludmFsaWRPaWQsCS8qIHBy b3N1cHBvcnQgKi8KIAkJCQkJCQkgMS4wLAkvKiBwcm9jb3N0ICovCi0JCQkJCQkJIDAuMCk7 CS8qIHByb3Jvd3MgKi8KKwkJCQkJCQkgMC4wLAkvKiBwcm9yb3dzICovCisJCQkJCQkJIDAp OwkvKiBwcm9keW5yZXMgKi8KIAogCS8qCiAJICogTWFrZSB0aGUgY29uc3RydWN0b3IgaW50 ZXJuYWxseS1kZXBlbmRlbnQgb24gdGhlIG11bHRpcmFuZ2UgdHlwZSBzbwpAQCAtMTg4Niw3 ICsxODg4LDggQEAgbWFrZU11bHRpcmFuZ2VDb25zdHJ1Y3RvcnMoY29uc3QgY2hhciAqbmFt ZSwgT2lkIG5hbWVzcGFjZSwKIAkJCQkJCQkgUG9pbnRlckdldERhdHVtKE5VTEwpLCAvKiBw cm9jb25maWcgKi8KIAkJCQkJCQkgSW52YWxpZE9pZCwJLyogcHJvc3VwcG9ydCAqLwogCQkJ CQkJCSAxLjAsCS8qIHByb2Nvc3QgKi8KLQkJCQkJCQkgMC4wKTsJLyogcHJvcm93cyAqLwor CQkJCQkJCSAwLjAsCS8qIHByb3Jvd3MgKi8KKwkJCQkJCQkgMCk7CS8qIHByb2R5bnJlcyAq LwogCS8qIGRpdHRvICovCiAJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVu Y2VkLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsKIAlwZnJlZShhcmd0eXBlcyk7CkBAIC0xOTI0 LDcgKzE5MjcsOCBAQCBtYWtlTXVsdGlyYW5nZUNvbnN0cnVjdG9ycyhjb25zdCBjaGFyICpu YW1lLCBPaWQgbmFtZXNwYWNlLAogCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oTlVMTCksIC8q IHByb2NvbmZpZyAqLwogCQkJCQkJCSBJbnZhbGlkT2lkLAkvKiBwcm9zdXBwb3J0ICovCiAJ CQkJCQkJIDEuMCwJLyogcHJvY29zdCAqLwotCQkJCQkJCSAwLjApOwkvKiBwcm9yb3dzICov CisJCQkJCQkJIDAuMCwJLyogcHJvcm93cyAqLworCQkJCQkJCSAwKTsJLyogcHJvZHlucmVz ICovCiAJLyogZGl0dG8gKi8KIAlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVy ZW5jZWQsIERFUEVOREVOQ1lfSU5URVJOQUwpOwogCXBmcmVlKGFyZ3R5cGVzKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CmluZGV4IGEwMTM4MzgyYTEuLjgzMTJmYmYyYzYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpA QCAtNjg4LDcgKzY4OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJREFUQV9Q IERBVEFCQVNFIERBWV9QIERFQUxMT0NBVEUgREVDIERFQ0lNQUxfUCBERUNMQVJFIERFRkFV TFQgREVGQVVMVFMKIAlERUZFUlJBQkxFIERFRkVSUkVEIERFRklORVIgREVMRVRFX1AgREVM SU1JVEVSIERFTElNSVRFUlMgREVQRU5EUyBERVBUSCBERVNDCiAJREVUQUNIIERJQ1RJT05B UlkgRElTQUJMRV9QIERJU0NBUkQgRElTVElOQ1QgRE8gRE9DVU1FTlRfUCBET01BSU5fUAot CURPVUJMRV9QIERST1AKKwlET1VCTEVfUCBEUk9QIERZTkFNSUMKIAogCUVBQ0ggRUxTRSBF TkFCTEVfUCBFTkNPRElORyBFTkNSWVBURUQgRU5EX1AgRU5VTV9QIEVTQ0FQRSBFVkVOVCBF WENFUFQKIAlFWENMVURFIEVYQ0xVRElORyBFWENMVVNJVkUgRVhFQ1VURSBFWElTVFMgRVhQ TEFJTiBFWFBSRVNTSU9OCkBAIC03MzUsNyArNzM1LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAogCVJBTkdFIFJFQUQgUkVBTCBSRUFTU0lHTiBSRUNIRUNLIFJFQ1VSU0lW RSBSRUZfUCBSRUZFUkVOQ0VTIFJFRkVSRU5DSU5HCiAJUkVGUkVTSCBSRUlOREVYIFJFTEFU SVZFX1AgUkVMRUFTRSBSRU5BTUUgUkVQRUFUQUJMRSBSRVBMQUNFIFJFUExJQ0EKLQlSRVNF VCBSRVNUQVJUIFJFU1RSSUNUIFJFVFVSTiBSRVRVUk5JTkcgUkVUVVJOUyBSRVZPS0UgUklH SFQgUk9MRSBST0xMQkFDSyBST0xMVVAKKwlSRVNFVCBSRVNUQVJUIFJFU1RSSUNUIFJFU1VM VCBSRVRVUk4gUkVUVVJOSU5HIFJFVFVSTlMgUkVWT0tFIFJJR0hUIFJPTEUgUk9MTEJBQ0sg Uk9MTFVQCiAJUk9VVElORSBST1VUSU5FUyBST1cgUk9XUyBSVUxFCiAKIAlTQVZFUE9JTlQg U0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBTRUNPTkRfUCBTRUNVUklUWSBTRUxFQ1Qg U0VRVUVOQ0UgU0VRVUVOQ0VTCkBAIC04NTMyLDYgKzg1MzIsMTAgQEAgY29tbW9uX2Z1bmNf b3B0X2l0ZW06CiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJwYXJhbGxlbCIsIChO b2RlICopIG1ha2VTdHJpbmcoJDIpLCBAMSk7CiAJCQkJfQorCQkJfCBEWU5BTUlDIFJFU1VM VCBTRVRTIEljb25zdAorCQkJCXsKKwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgiZHluYW1pY19y ZXN1bHRfc2V0cyIsIChOb2RlICopbWFrZUludGVnZXIoJDQpLCBAMSk7CisJCQkJfQogCQk7 CiAKIGNyZWF0ZWZ1bmNfb3B0X2l0ZW06CkBAIC0xMjQyMSw2ICsxMjQyNSwxMiBAQCBjdXJz b3Jfb3B0aW9uczogLypFTVBUWSovCQkJCQl7ICQkID0gMDsgfQogb3B0X2hvbGQ6IC8qIEVN UFRZICovCQkJCQkJeyAkJCA9IDA7IH0KIAkJCXwgV0lUSCBIT0xECQkJCQkJeyAkJCA9IENV UlNPUl9PUFRfSE9MRDsgfQogCQkJfCBXSVRIT1VUIEhPTEQJCQkJCXsgJCQgPSAwOyB9CisJ CQl8IFdJVEggSE9MRCBXSVRIIFJFVFVSTgkJCXsgJCQgPSBDVVJTT1JfT1BUX0hPTEQgfCBD VVJTT1JfT1BUX1JFVFVSTjsgfQorCQkJfCBXSVRIT1VUIEhPTEQgV0lUSCBSRVRVUk4JCXsg JCQgPSBDVVJTT1JfT1BUX1JFVFVSTjsgfQorCQkJfCBXSVRIIEhPTEQgV0lUSE9VVCBSRVRV Uk4JCXsgJCQgPSBDVVJTT1JfT1BUX0hPTEQ7IH0KKwkJCXwgV0lUSE9VVCBIT0xEIFdJVEhP VVQgUkVUVVJOCXsgJCQgPSAwOyB9CisJCQl8IFdJVEggUkVUVVJOCQkJCQl7ICQkID0gQ1VS U09SX09QVF9SRVRVUk47IH0KKwkJCXwgV0lUSE9VVCBSRVRVUk4JCQkJeyAkJCA9IDA7IH0K IAkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE2Nzg3LDYgKzE2Nzk3LDcg QEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBET01BSU5fUAogCQkJfCBET1VCTEVfUAog CQkJfCBEUk9QCisJCQl8IERZTkFNSUMKIAkJCXwgRUFDSAogCQkJfCBFTkFCTEVfUAogCQkJ fCBFTkNPRElORwpAQCAtMTY5MzIsNiArMTY5NDMsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6 CiAJCQl8IFJFU0VUCiAJCQl8IFJFU1RBUlQKIAkJCXwgUkVTVFJJQ1QKKwkJCXwgUkVTVUxU CiAJCQl8IFJFVFVSTgogCQkJfCBSRVRVUk5TCiAJCQl8IFJFVk9LRQpAQCAtMTczMzIsNiAr MTczNDQsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IERPTUFJTl9QCiAJCQl8IERP VUJMRV9QCiAJCQl8IERST1AKKwkJCXwgRFlOQU1JQwogCQkJfCBFQUNICiAJCQl8IEVMU0UK IAkJCXwgRU5BQkxFX1AKQEAgLTE3NTE5LDYgKzE3NTMyLDcgQEAgYmFyZV9sYWJlbF9rZXl3 b3JkOgogCQkJfCBSRVNFVAogCQkJfCBSRVNUQVJUCiAJCQl8IFJFU1RSSUNUCisJCQl8IFJF U1VMVAogCQkJfCBSRVRVUk4KIAkJCXwgUkVUVVJOUwogCQkJfCBSRVZPS0UKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYwppbmRleCBjYWI3MDliMDdiLi45OGFjOWFhMDEyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgor I2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBh cmUuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJuZy5oIgogI2luY2x1ZGUgImppdC9qaXQu aCIKQEAgLTEwNzMsNiArMTA3NCw3IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIg KnF1ZXJ5X3N0cmluZykKIAkJaW50MTYJCWZvcm1hdDsKIAkJY29uc3QgY2hhciAqY21kdGFn bmFtZTsKIAkJc2l6ZV90CQljbWR0YWdsZW47CisJCUxpc3RDZWxsICAgKmxjOwogCiAJCXBn c3RhdF9yZXBvcnRfcXVlcnlfaWQoMCwgdHJ1ZSk7CiAKQEAgLTEyMzUsNyArMTIzNyw3IEBA IGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCS8qCi0JCSAqIFJ1biB0aGUgcG9y dGFsIHRvIGNvbXBsZXRpb24sIGFuZCB0aGVuIGRyb3AgaXQgKGFuZCB0aGUgcmVjZWl2ZXIp LgorCQkgKiBSdW4gdGhlIHBvcnRhbCB0byBjb21wbGV0aW9uLCBhbmQgdGhlbiBkcm9wIGl0 LgogCQkgKi8KIAkJKHZvaWQpIFBvcnRhbFJ1bihwb3J0YWwsCiAJCQkJCQkgRkVUQ0hfQUxM LApAQCAtMTI0NSwxMCArMTI0NywzNCBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFy ICpxdWVyeV9zdHJpbmcpCiAJCQkJCQkgcmVjZWl2ZXIsCiAJCQkJCQkgJnFjKTsKIAotCQly ZWNlaXZlci0+ckRlc3Ryb3kocmVjZWl2ZXIpOwotCiAJCVBvcnRhbERyb3AocG9ydGFsLCBm YWxzZSk7CiAKKwkJLyoKKwkJICogUnVuIHBvcnRhbHMgZm9yIGR5bmFtaWMgcmVzdWx0IHNl dHMuCisJCSAqLworCQlmb3JlYWNoIChsYywgR2V0UmV0dXJuYWJsZUN1cnNvcnMoKSkKKwkJ eworCQkJUG9ydGFsCQlkeW5wb3J0YWwgPSBsZmlyc3QobGMpOworCisJCQlpZiAoZGVzdCA9 PSBEZXN0UmVtb3RlKQorCQkJCVNldFJlbW90ZURlc3RSZWNlaXZlclBhcmFtcyhyZWNlaXZl ciwgZHlucG9ydGFsKTsKKworCQkJUG9ydGFsUnVuKGR5bnBvcnRhbCwKKwkJCQkJICBGRVRD SF9BTEwsCisJCQkJCSAgdHJ1ZSwKKwkJCQkJICB0cnVlLAorCQkJCQkgIHJlY2VpdmVyLAor CQkJCQkgIHJlY2VpdmVyLAorCQkJCQkgIE5VTEwpOworCisJCQlQb3J0YWxEcm9wKGR5bnBv cnRhbCwgZmFsc2UpOworCQl9CisKKwkJLyoKKwkJICogRHJvcCB0aGUgcmVjZWl2ZXIuCisJ CSAqLworCQlyZWNlaXZlci0+ckRlc3Ryb3kocmVjZWl2ZXIpOworCiAJCWlmIChsbmV4dChw YXJzZXRyZWVfbGlzdCwgcGFyc2V0cmVlX2l0ZW0pID09IE5VTEwpCiAJCXsKIAkJCS8qCkBA IC0yMjAwLDYgKzIyMjYsMTEgQEAgZXhlY19leGVjdXRlX21lc3NhZ2UoY29uc3QgY2hhciAq cG9ydGFsX25hbWUsIGxvbmcgbWF4X3Jvd3MpCiAJCQkJCQkgIHJlY2VpdmVyLAogCQkJCQkJ ICAmcWMpOwogCisJaWYgKEdldFJldHVybmFibGVDdXJzb3JzKCkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ ZXJybXNnKCJkeW5hbWljIHJlc3VsdCBzZXRzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBl eHRlbmRlZCBxdWVyeSBwcm90b2NvbCIpKTsKKwogCXJlY2VpdmVyLT5yRGVzdHJveShyZWNl aXZlcik7CiAKIAkvKiBEb25lIGV4ZWN1dGluZzsgcmVtb3ZlIHRoZSBwYXJhbXMgZXJyb3Ig Y2FsbGJhY2sgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4 dCBiL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dAppbmRleCAzZDI0NGFmMTMwLi45 Yjk0YTVmYTkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJjb2Rlcy50eHQK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CkBAIC04Myw2ICs4Myw3IEBA IFNlY3Rpb246IENsYXNzIDAxIC0gV2FybmluZwogIyBkbyBub3QgdXNlIHRoaXMgY2xhc3Mg Zm9yIGZhaWx1cmUgY29uZGl0aW9ucwogMDEwMDAgICAgVyAgICBFUlJDT0RFX1dBUk5JTkcg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5n CiAwMTAwQyAgICBXICAgIEVSUkNPREVfV0FSTklOR19EWU5BTUlDX1JFU1VMVF9TRVRTX1JF VFVSTkVEICAgICAgICAgICAgICAgICAgIGR5bmFtaWNfcmVzdWx0X3NldHNfcmV0dXJuZWQK KzAxMDBFICAgIFcgICAgRVJSQ09ERV9XQVJOSU5HX0FUVEVNUFRfVE9fUkVUVVJOX1RPT19N QU5ZX1JFU1VMVF9TRVRTICAgICAgICAgYXR0ZW1wdF90b19yZXR1cm5fdG9vX21hbnlfcmVz dWx0X3NldHMKIDAxMDA4ICAgIFcgICAgRVJSQ09ERV9XQVJOSU5HX0lNUExJQ0lUX1pFUk9f QklUX1BBRERJTkcgICAgICAgICAgICAgICAgICAgICAgaW1wbGljaXRfemVyb19iaXRfcGFk ZGluZwogMDEwMDMgICAgVyAgICBFUlJDT0RFX1dBUk5JTkdfTlVMTF9WQUxVRV9FTElNSU5B VEVEX0lOX1NFVF9GVU5DVElPTiAgICAgICAgICBudWxsX3ZhbHVlX2VsaW1pbmF0ZWRfaW5f c2V0X2Z1bmN0aW9uCiAwMTAwNyAgICBXICAgIEVSUkNPREVfV0FSTklOR19QUklWSUxFR0Vf Tk9UX0dSQU5URUQgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZpbGVnZV9ub3RfZ3Jh bnRlZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBi L3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggMDZkZmE4NWYwNC4u ZjI5YTZlYWJmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxt ZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0xMjg5 LDMgKzEyODksNTEgQEAgRm9yZ2V0UG9ydGFsU25hcHNob3RzKHZvaWQpCiAJCWVsb2coRVJS T1IsICJwb3J0YWwgc25hcHNob3RzICglZCkgZGlkIG5vdCBhY2NvdW50IGZvciBhbGwgYWN0 aXZlIHNuYXBzaG90cyAoJWQpIiwKIAkJCSBudW1Qb3J0YWxTbmFwcywgbnVtQWN0aXZlU25h cHMpOwogfQorCitzdGF0aWMgaW50CitjbXBfcG9ydGFsc19ieV9jcmVhdGlvbihjb25zdCBM aXN0Q2VsbCAqYSwgY29uc3QgTGlzdENlbGwgKmIpCit7CisJUG9ydGFsCQlwYSA9IGxmaXJz dChhKTsKKwlQb3J0YWwJCXBiID0gbGZpcnN0KGIpOworCisJcmV0dXJuIHBhLT5jcmVhdGVD aWQgLSBwYi0+Y3JlYXRlQ2lkOworfQorCitMaXN0ICoKK0dldFJldHVybmFibGVDdXJzb3Jz KHZvaWQpCit7CisJTGlzdAkgICAqcmV0ID0gTklMOworCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7CisJUG9ydGFsSGFzaEVudCAqaGVudHJ5OworCisJaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBQb3J0YWxIYXNoVGFibGUpOworCisJd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVu dCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJeworCQlQb3J0YWwJ CXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFsOworCisJCWlmIChwb3J0YWwtPmN1cnNvck9wdGlv bnMgJiBDVVJTT1JfT1BUX1JFVFVSTikKKwkJCXJldCA9IGxhcHBlbmQocmV0LCBwb3J0YWwp OworCX0KKworCWxpc3Rfc29ydChyZXQsIGNtcF9wb3J0YWxzX2J5X2NyZWF0aW9uKTsKKwor CXJldHVybiByZXQ7Cit9CisKK3ZvaWQKK0Nsb3NlT3RoZXJSZXR1cm5hYmxlQ3Vyc29ycyhP aWQgcHJvY2lkKQoreworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisJUG9ydGFsSGFzaEVu dCAqaGVudHJ5OworCisJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUp OworCisJd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFy Y2goJnN0YXR1cykpICE9IE5VTEwpCisJeworCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+ cG9ydGFsOworCisJCWlmIChwb3J0YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1JF VFVSTiAmJiBwb3J0YWwtPnByb2NJZCAhPSBwcm9jaWQpCisJCQlQb3J0YWxEcm9wKHBvcnRh bCwgZmFsc2UpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDUyN2M3NjUxYWIuLjY1OWM1 ZGEyNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMTE2NDcsNiArMTE2NDcsNyBAQCBkdW1wRnVu YyhBcmNoaXZlICpmb3V0LCBjb25zdCBGdW5jSW5mbyAqZmluZm8pCiAJY2hhcgkgICAqcHJv cm93czsKIAljaGFyCSAgICpwcm9zdXBwb3J0OwogCWNoYXIJICAgKnByb3BhcmFsbGVsOwor CWludAkJCXByb2R5bnJlczsKIAljaGFyCSAgICpsYW5uYW1lOwogCWNoYXIJICAqKmNvbmZp Z2l0ZW1zID0gTlVMTDsKIAlpbnQJCQluY29uZmlnaXRlbXMgPSAwOwpAQCAtMTE3MTQsMTAg KzExNzE1LDE3IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZvdXQsIGNvbnN0IEZ1bmNJbmZvICpm aW5mbykKIAogCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkJICJwZ19nZXRfZnVuY3Rpb25fc3Fs Ym9keShwLm9pZCkgQVMgcHJvc3FsYm9keVxuIik7CisJCQkJCQkJCSAicGdfZ2V0X2Z1bmN0 aW9uX3NxbGJvZHkocC5vaWQpIEFTIHByb3NxbGJvZHksXG4iKTsKIAkJZWxzZQogCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJCSAiTlVMTCBBUyBwcm9zcWxib2R5 XG4iKTsKKwkJCQkJCQkJICJOVUxMIEFTIHByb3NxbGJvZHksXG4iKTsKKworCQlpZiAoZm91 dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwKKwkJCQkJCQkJICJwcm9keW5yZXNcbiIpOworCQllbHNlCisJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkJICIwIEFTIHByb2R5bnJlc1xuIik7CiAKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cu cGdfcHJvYyBwLCBwZ19jYXRhbG9nLnBnX2xhbmd1YWdlIGxcbiIKQEAgLTExNzYyLDYgKzEx NzcwLDcgQEAgZHVtcEZ1bmMoQXJjaGl2ZSAqZm91dCwgY29uc3QgRnVuY0luZm8gKmZpbmZv KQogCXByb3Jvd3MgPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgInByb3Jv d3MiKSk7CiAJcHJvc3VwcG9ydCA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVz LCAicHJvc3VwcG9ydCIpKTsKIAlwcm9wYXJhbGxlbCA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQ UWZudW1iZXIocmVzLCAicHJvcGFyYWxsZWwiKSk7CisJcHJvZHlucmVzID0gYXRvaShQUWdl dHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgInByb2R5bnJlcyIpKSk7CiAJbGFubmFt ZSA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAibGFubmFtZSIpKTsKIAog CS8qCkBAIC0xMTg4MCw2ICsxMTg4OSw5IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZvdXQsIGNv bnN0IEZ1bmNJbmZvICpmaW5mbykKIAlpZiAocHJvaXNzdHJpY3RbMF0gPT0gJ3QnKQogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIFNUUklDVCIpOwogCisJaWYgKHByb2R5bnJlcyA+ IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgRFlOQU1JQyBSRVNVTFQgU0VUUyAlZCIs IHByb2R5bnJlcyk7CisKIAlpZiAocHJvc2VjZGVmWzBdID09ICd0JykKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocSwgIiBTRUNVUklUWSBERUZJTkVSIik7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmgKaW5kZXggZTdhYmUwYjQ5Ny4uZjRlZjhmMGVjZSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmgKQEAgLTc2LDYgKzc2LDkgQEAgQ0FUQUxPRyhwZ19wcm9jLDEyNTUsUHJvY2VkdXJl UmVsYXRpb25JZCkgQktJX0JPT1RTVFJBUCBCS0lfUk9XVFlQRV9PSUQoODEsUHJvY2UKIAkv KiBzZWUgUFJPUEFSQUxMRUxfIGNhdGVnb3JpZXMgYmVsb3cgKi8KIAljaGFyCQlwcm9wYXJh bGxlbCBCS0lfREVGQVVMVChzKTsKIAorCS8qIG1heGltdW0gbnVtYmVyIG9mIGR5bmFtaWMg cmVzdWx0IHNldHMgKi8KKwlpbnQzMgkJcHJvZHlucmVzIEJLSV9ERUZBVUxUKDApOworCiAJ LyogbnVtYmVyIG9mIGFyZ3VtZW50cyAqLwogCS8qIE5vdGU6IG5lZWQgbm90IGJlIGdpdmVu IGluIHBnX3Byb2MuZGF0OyBnZW5ia2kucGwgd2lsbCBjb21wdXRlIGl0ICovCiAJaW50MTYJ CXByb25hcmdzOwpAQCAtMjExLDcgKzIxNCw4IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIFBy b2NlZHVyZUNyZWF0ZShjb25zdCBjaGFyICpwcm9jZWR1cmVOYW1lLAogCQkJCQkJCQkJIERh dHVtIHByb2NvbmZpZywKIAkJCQkJCQkJCSBPaWQgcHJvc3VwcG9ydCwKIAkJCQkJCQkJCSBm bG9hdDQgcHJvY29zdCwKLQkJCQkJCQkJCSBmbG9hdDQgcHJvcm93cyk7CisJCQkJCQkJCQkg ZmxvYXQ0IHByb3Jvd3MsCisJCQkJCQkJCQkgaW50IGR5bnJlcyk7CiAKIGV4dGVybiBib29s IGZ1bmN0aW9uX3BhcnNlX2Vycm9yX3RyYW5zcG9zZShjb25zdCBjaGFyICpwcm9zcmMpOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDRmN2Y4N2ZjNjIuLmZjZmU4ZGY3OGUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC01Nyw2ICs1Nyw3IEBAIGV4dGVybiBPYmplY3RB ZGRyZXNzIENyZWF0ZVRyYW5zZm9ybShDcmVhdGVUcmFuc2Zvcm1TdG10ICpzdG10KTsKIGV4 dGVybiB2b2lkIElzVGhlcmVGdW5jdGlvbkluTmFtZXNwYWNlKGNvbnN0IGNoYXIgKnByb25h bWUsIGludCBwcm9uYXJncywKIAkJCQkJCQkJCSAgIG9pZHZlY3RvciAqcHJvYXJndHlwZXMs IE9pZCBuc3BPaWQpOwogZXh0ZXJuIHZvaWQgRXhlY3V0ZURvU3RtdChQYXJzZVN0YXRlICpw c3RhdGUsIERvU3RtdCAqc3RtdCwgYm9vbCBhdG9taWMpOworZXh0ZXJuIE9pZAlDdXJyZW50 UHJvY2VkdXJlKHZvaWQpOwogZXh0ZXJuIHZvaWQgRXhlY3V0ZUNhbGxTdG10KENhbGxTdG10 ICpzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgYm9vbCBhdG9taWMsIERlc3RSZWNlaXZl ciAqZGVzdCk7CiBleHRlcm4gVHVwbGVEZXNjIENhbGxTdG10UmVzdWx0RGVzYyhDYWxsU3Rt dCAqc3RtdCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fb2lkKE9pZCB0eXBlX2lkLCBP aWQgbGFuZ19pZCwgYm9vbCBtaXNzaW5nX29rKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApp bmRleCBmN2Q3ZjEwZjdkLi5hY2FlN2RhNzA4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CkBAIC0zMDEwLDYgKzMwMTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBTZWNMYWJlbFN0bXQKICNk ZWZpbmUgQ1VSU09SX09QVF9JTlNFTlNJVElWRQkweDAwMDgJLyogSU5TRU5TSVRJVkUgKi8K ICNkZWZpbmUgQ1VSU09SX09QVF9BU0VOU0lUSVZFCTB4MDAxMAkvKiBBU0VOU0lUSVZFICov CiAjZGVmaW5lIENVUlNPUl9PUFRfSE9MRAkJCTB4MDAyMAkvKiBXSVRIIEhPTEQgKi8KKyNk ZWZpbmUgQ1VSU09SX09QVF9SRVRVUk4JCTB4MDA0MAkvKiBXSVRIIFJFVFVSTiAqLwogLyog dGhlc2UgcGxhbm5lci1jb250cm9sIGZsYWdzIGRvIG5vdCBjb3JyZXNwb25kIHRvIGFueSBT UUwgZ3JhbW1hcjogKi8KICNkZWZpbmUgQ1VSU09SX09QVF9GQVNUX1BMQU4JMHgwMTAwCS8q IHByZWZlciBmYXN0LXN0YXJ0IHBsYW4gKi8KICNkZWZpbmUgQ1VSU09SX09QVF9HRU5FUklD X1BMQU4gMHgwMjAwCS8qIGZvcmNlIHVzZSBvZiBnZW5lcmljIHBsYW4gKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9r d2xpc3QuaAppbmRleCBiYjM2MjEzZTZmLi42MDQ1N2QyMWY3IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgUEdfS0VZV09SRCgiZG9jdW1lbnQiLCBET0NVTUVO VF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkb21h aW4iLCBET01BSU5fUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgiZG91YmxlIiwgRE9VQkxFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImRyb3AiLCBEUk9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJkeW5hbWljIiwgRFlOQU1JQywgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZWFjaCIsIEVBQ0gsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVsc2UiLCBFTFNFLCBSRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW5hYmxlIiwgRU5BQkxFX1As IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTM1Myw2ICszNTQsNyBAQCBQ R19LRVlXT1JEKCJyZXBsaWNhIiwgUkVQTElDQSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgicmVzZXQiLCBSRVNFVCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmVzdGFydCIsIFJFU1RBUlQsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlc3RyaWN0IiwgUkVTVFJJ Q1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInJlc3Vs dCIsIFJFU1VMVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicmV0dXJuIiwgUkVUVVJOLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJyZXR1cm5pbmciLCBSRVRVUk5JTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEFT X0xBQkVMKQogUEdfS0VZV09SRCgicmV0dXJucyIsIFJFVFVSTlMsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRh bC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYWEwOGIxZTBmYy4uNmYw NDM2MmRmZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzMiw2ICsxMzIsMTYgQEAgdHlwZWRl ZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCVN1YlRyYW5zYWN0aW9uSWQgYWN0aXZlU3ViaWQ7CS8q IHRoZSBsYXN0IHN1YnhhY3Qgd2l0aCBhY3Rpdml0eSAqLwogCWludAkJCWNyZWF0ZUxldmVs OwkvKiBjcmVhdGluZyBzdWJ4YWN0J3MgbmVzdGluZyBsZXZlbCAqLwogCisJLyoKKwkgKiBQ cm9jZWR1cmUgdGhhdCBjcmVhdGVkIHRoaXMgcG9ydGFsLiAgVXNlZCBmb3IgcmV0dXJuYWJs ZSBjdXJzb3JzLgorCSAqLworCU9pZAkJCQlwcm9jSWQ7CisJLyoKKwkgKiBDb21tYW5kIElE IHdoZXJlIHRoZSBwb3J0YWwgd2FzIGNyZWF0ZWQuICBVc2VkIGZvciBzb3J0aW5nIHJldHVy bmFibGUKKwkgKiBjdXJzb3JzIGludG8gY3JlYXRpb24gb3JkZXIuCisJICovCisJQ29tbWFu ZElkCQljcmVhdGVDaWQ7CisKIAkvKiBUaGUgcXVlcnkgb3IgcXVlcmllcyB0aGUgcG9ydGFs IHdpbGwgZXhlY3V0ZSAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiB0ZXh0IG9m IHF1ZXJ5IChhcyBvZiA4LjQsIG5ldmVyIE5VTEwpICovCiAJQ29tbWFuZFRhZwljb21tYW5k VGFnOwkJLyogY29tbWFuZCB0YWcgZm9yIG9yaWdpbmFsIHF1ZXJ5ICovCkBAIC0yNDgsNSAr MjU4LDcgQEAgZXh0ZXJuIHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQpOwog ZXh0ZXJuIGJvb2wgVGhlcmVBcmVOb1JlYWR5UG9ydGFscyh2b2lkKTsKIGV4dGVybiB2b2lk IEhvbGRQaW5uZWRQb3J0YWxzKHZvaWQpOwogZXh0ZXJuIHZvaWQgRm9yZ2V0UG9ydGFsU25h cHNob3RzKHZvaWQpOworZXh0ZXJuIExpc3QgKkdldFJldHVybmFibGVDdXJzb3JzKHZvaWQp OworZXh0ZXJuIHZvaWQgQ2xvc2VPdGhlclJldHVybmFibGVDdXJzb3JzKE9pZCBwcm9jaWQp OwogCiAjZW5kaWYJCQkJCQkJLyogUE9SVEFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9wbC9w bHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX2NhbGwub3V0IGIvc3JjL3BsL3BscGdzcWwv c3JjL2V4cGVjdGVkL3BscGdzcWxfY2FsbC5vdXQKaW5kZXggMWVjNjE4MmE4ZC4uMWM4ODcy YTc1NCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxf Y2FsbC5vdXQKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfY2Fs bC5vdXQKQEAgLTQ2NiwzICs0NjYsODEgQEAgQkVHSU4KIEVORDsKICQkOwogTk9USUNFOiAg PE5VTEw+CistLSBkeW5hbWljIHJlc3VsdCBzZXRzCitDUkVBVEUgVEFCTEUgY3BfdGVzdDIg KGEgaW50KTsKK0lOU0VSVCBJTlRPIGNwX3Rlc3QyIFZBTFVFUyAoMSksICgyKSwgKDMpOwor Q1JFQVRFIFRBQkxFIGNwX3Rlc3QzICh4IHRleHQsIHkgdGV4dCk7CitJTlNFUlQgSU5UTyBj cF90ZXN0MyBWQUxVRVMgKCdhYmMnLCAnZGVmJyksICgnZm9vJywgJ2JhcicpOworQ1JFQVRF IFBST0NFRFVSRSBwZHJzdGVzdDEoeCBpbnQpCitMQU5HVUFHRSBwbHBnc3FsCitEWU5BTUlD IFJFU1VMVCBTRVRTIDIKK0FTICQkCitERUNMQVJFCisgIGMxIENVUlNPUiBXSVRIIFJFVFVS TiAoeSBpbnQpIEZPUiBTRUxFQ1QgYSAqIHkgQVMgYXkgRlJPTSBjcF90ZXN0MjsKKyAgYzIg Q1VSU09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QzOworQkVHSU4K KyAgT1BFTiBjMSh4KTsKKyAgSUYgeCA+IDEgVEhFTgorICAgIE9QRU4gYzI7CisgIEVORCBJ RjsKK0VORDsKKyQkOworQ0FMTCBwZHJzdGVzdDEoMSk7CisgYXkgCistLS0tCisgIDEKKyAg MgorICAzCisoMyByb3dzKQorCitDQUxMIHBkcnN0ZXN0MSgyKTsKKyBheSAKKy0tLS0KKyAg MgorICA0CisgIDYKKygzIHJvd3MpCisKKyAgeCAgfCAgeSAgCistLS0tLSstLS0tLQorIGFi YyB8IGRlZgorIGZvbyB8IGJhcgorKDIgcm93cykKKworQ1JFQVRFIFBST0NFRFVSRSBwZHJz dGVzdDIoeCBpbnQpCitMQU5HVUFHRSBwbHBnc3FsCitEWU5BTUlDIFJFU1VMVCBTRVRTIDIK K0FTICQkCitERUNMQVJFCisgIGMxIHJlZmN1cnNvcjsKKyAgYzIgcmVmY3Vyc29yOworQkVH SU4KKyAgT1BFTiBjMSBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUIGEgKiB4IEFTIGF4IEZST00g Y3BfdGVzdDI7CisgIElGIHggPiAxIFRIRU4KKyAgICBPUEVOIGMyIFNDUk9MTCBXSVRIIFJF VFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0MzsKKyAgRU5EIElGOworRU5EOworJCQ7 CitDQUxMIHBkcnN0ZXN0MigxKTsKKyBheCAKKy0tLS0KKyAgMQorICAyCisgIDMKKygzIHJv d3MpCisKK0NBTEwgcGRyc3Rlc3QyKDIpOworIGF4IAorLS0tLQorICAyCisgIDQKKyAgNgor KDMgcm93cykKKworICB4ICB8ICB5ICAKKy0tLS0tKy0tLS0tCisgYWJjIHwgZGVmCisgZm9v IHwgYmFyCisoMiByb3dzKQorCitEUk9QIFRBQkxFIGNwX3Rlc3QyLCBjcF90ZXN0MzsKZGlm ZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgYi9zcmMvcGwvcGxwZ3Nx bC9zcmMvcGxfZXhlYy5jCmluZGV4IGZmZDZkMmUzYmMuLmVhMTExNDRmNmQgMTAwNjQ0Ci0t LSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKKysrIGIvc3JjL3BsL3BscGdzcWwv c3JjL3BsX2V4ZWMuYwpAQCAtNDc3Niw2ICs0Nzc2LDEyIEBAIGV4ZWNfc3RtdF9vcGVuKFBM cGdTUUxfZXhlY3N0YXRlICplc3RhdGUsIFBMcGdTUUxfc3RtdF9vcGVuICpzdG10KQogCQll bG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gY3Vyc29yOiAlcyIsCiAJCQkgU1BJX3Jlc3Vs dF9jb2RlX3N0cmluZyhTUElfcmVzdWx0KSk7CiAKKwlpZiAocG9ydGFsLT5jdXJzb3JPcHRp b25zICYgQ1VSU09SX09QVF9SRVRVUk4pCisJeworCQlwb3J0YWwtPnByb2NJZCA9IGVzdGF0 ZS0+ZnVuYy0+Zm5fb2lkOworCQlwb3J0YWwtPmNyZWF0ZUNpZCA9IEdldEN1cnJlbnRDb21t YW5kSWQodHJ1ZSk7CisJfQorCiAJLyoKIAkgKiBJZiBjdXJzb3IgdmFyaWFibGUgd2FzIE5V TEwsIHN0b3JlIHRoZSBnZW5lcmF0ZWQgcG9ydGFsIG5hbWUgaW4gaXQsCiAJICogYWZ0ZXIg dmVyaWZ5aW5nIGl0J3Mgb2theSB0byBhc3NpZ24gdG8uCmRpZmYgLS1naXQgYS9zcmMvcGwv cGxwZ3NxbC9zcmMvcGxfZ3JhbS55IGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueQpp bmRleCBlZGViNzJjMzgwLi5iZmYxNTU3MDA1IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3Nx bC9zcmMvcGxfZ3JhbS55CisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkKQEAg LTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMJdm9pZAkJCWNoZWNrX3JhaXNlX3BhcmFtZXRlcnMo UExwZ1NRTF9zdG10X3JhaXNlICpzdG10KTsKICV0eXBlIDxkYXR1bT4JZ2V0ZGlhZ190YXJn ZXQKICV0eXBlIDxpdmFsPglnZXRkaWFnX2l0ZW0KIAotJXR5cGUgPGl2YWw+CW9wdF9zY3Jv bGxhYmxlCisldHlwZSA8aXZhbD4Jb3B0X3Njcm9sbGFibGUgb3B0X3dpdGhfcmV0dXJuCiAl dHlwZSA8ZmV0Y2g+CW9wdF9mZXRjaF9kaXJlY3Rpb24KIAogJXR5cGUgPGl2YWw+CW9wdF90 cmFuc2FjdGlvbl9jaGFpbgpAQCAtMzUyLDYgKzM1Miw4IEBAIHN0YXRpYwl2b2lkCQkJY2hl Y2tfcmFpc2VfcGFyYW1ldGVycyhQTHBnU1FMX3N0bXRfcmFpc2UgKnN0bXQpOwogJXRva2Vu IDxrZXl3b3JkPglLX1dBUk5JTkcKICV0b2tlbiA8a2V5d29yZD4JS19XSEVOCiAldG9rZW4g PGtleXdvcmQ+CUtfV0hJTEUKKyV0b2tlbiA8a2V5d29yZD4JS19XSVRICisldG9rZW4gPGtl eXdvcmQ+CUtfV0lUSE9VVAogCiAlJQogCkBAIC01MjksNyArNTMxLDcgQEAgZGVjbF9zdGF0 ZW1lbnQJOiBkZWNsX3Zhcm5hbWUgZGVjbF9jb25zdCBkZWNsX2RhdGF0eXBlIGRlY2xfY29s bGF0ZSBkZWNsX25vdG51bGwKIAkJCQkJCXBscGdzcWxfbnNfYWRkaXRlbSgkNC0+aXRlbXR5 cGUsCiAJCQkJCQkJCQkJICAgJDQtPml0ZW1ubywgJDEubmFtZSk7CiAJCQkJCX0KLQkJCQl8 IGRlY2xfdmFybmFtZSBvcHRfc2Nyb2xsYWJsZSBLX0NVUlNPUgorCQkJCXwgZGVjbF92YXJu YW1lIG9wdF9zY3JvbGxhYmxlIEtfQ1VSU09SIG9wdF93aXRoX3JldHVybgogCQkJCQl7IHBs cGdzcWxfbnNfcHVzaCgkMS5uYW1lLCBQTFBHU1FMX0xBQkVMX09USEVSKTsgfQogCQkJCSAg ZGVjbF9jdXJzb3JfYXJncyBkZWNsX2lzX2ZvciBkZWNsX2N1cnNvcl9xdWVyeQogCQkJCQl7 CkBAIC01NDYsMTIgKzU0OCwxMiBAQCBkZWNsX3N0YXRlbWVudAk6IGRlY2xfdmFybmFtZSBk ZWNsX2NvbnN0IGRlY2xfZGF0YXR5cGUgZGVjbF9jb2xsYXRlIGRlY2xfbm90bnVsbAogCQkJ CQkJCQkJCQkJCQkJCQkJICBOVUxMKSwKIAkJCQkJCQkJCQkJCSAgIHRydWUpOwogCi0JCQkJ CQluZXctPmN1cnNvcl9leHBsaWNpdF9leHByID0gJDc7Ci0JCQkJCQlpZiAoJDUgPT0gTlVM TCkKKwkJCQkJCW5ldy0+Y3Vyc29yX2V4cGxpY2l0X2V4cHIgPSAkODsKKwkJCQkJCWlmICgk NiA9PSBOVUxMKQogCQkJCQkJCW5ldy0+Y3Vyc29yX2V4cGxpY2l0X2FyZ3JvdyA9IC0xOwog CQkJCQkJZWxzZQotCQkJCQkJCW5ldy0+Y3Vyc29yX2V4cGxpY2l0X2FyZ3JvdyA9ICQ1LT5k bm87Ci0JCQkJCQluZXctPmN1cnNvcl9vcHRpb25zID0gQ1VSU09SX09QVF9GQVNUX1BMQU4g fCAkMjsKKwkJCQkJCQluZXctPmN1cnNvcl9leHBsaWNpdF9hcmdyb3cgPSAkNi0+ZG5vOwor CQkJCQkJbmV3LT5jdXJzb3Jfb3B0aW9ucyA9IENVUlNPUl9PUFRfRkFTVF9QTEFOIHwgJDIg fCAkNDsKIAkJCQkJfQogCQkJCTsKIApAQCAtNTY5LDYgKzU3MSwyMCBAQCBvcHRfc2Nyb2xs YWJsZSA6CiAJCQkJCX0KIAkJCQk7CiAKK29wdF93aXRoX3JldHVybiA6CisJCQkJCXsKKwkJ CQkJCSQkID0gMDsKKwkJCQkJfQorCQkJCXwgS19XSVRIIEtfUkVUVVJOCisJCQkJCXsKKwkJ CQkJCSQkID0gQ1VSU09SX09QVF9SRVRVUk47CisJCQkJCX0KKwkJCQl8IEtfV0lUSE9VVCBL X1JFVFVSTgorCQkJCQl7CisJCQkJCQkkJCA9IDA7CisJCQkJCX0KKwkJCQk7CisKIGRlY2xf Y3Vyc29yX3F1ZXJ5IDoKIAkJCQkJewogCQkJCQkJJCQgPSByZWFkX3NxbF9zdG10KCk7CkBA IC0xOTc2LDYgKzE5OTIsMTAgQEAgc3RtdF9leGVjc3FsCTogS19JTVBPUlQKIAkJCQkJewog CQkJCQkJJCQgPSBtYWtlX2V4ZWNzcWxfc3RtdChLX01FUkdFLCBAMSk7CiAJCQkJCX0KKwkJ CQl8IEtfV0lUSAorCQkJCQl7CisJCQkJCQkkJCA9IG1ha2VfZXhlY3NxbF9zdG10KEtfV0lU SCwgQDEpOworCQkJCQl9CiAJCQkJfCBUX1dPUkQKIAkJCQkJewogCQkJCQkJaW50CQkJdG9r OwpAQCAtMjA5OCw2ICsyMTE4LDMwIEBAIHN0bXRfb3BlbgkJOiBLX09QRU4gY3Vyc29yX3Zh cmlhYmxlCiAJCQkJCQkJCXRvayA9IHl5bGV4KCk7CiAJCQkJCQkJfQogCisJCQkJCQkJLyog c2FtZSBmb3Igb3B0X3dpdGhfcmV0dXJuICovCisJCQkJCQkJaWYgKHRva19pc19rZXl3b3Jk KHRvaywgJnl5bHZhbCwKKwkJCQkJCQkJCQkJICAgS19XSVRILCAid2l0aCIpKQorCQkJCQkJ CXsKKwkJCQkJCQkJdG9rID0geXlsZXgoKTsKKwkJCQkJCQkJaWYgKHRva19pc19rZXl3b3Jk KHRvaywgJnl5bHZhbCwKKwkJCQkJCQkJCQkJCSAgIEtfUkVUVVJOLCAicmV0dXJuIikpCisJ CQkJCQkJCXsKKwkJCQkJCQkJCW5ldy0+Y3Vyc29yX29wdGlvbnMgfD0gQ1VSU09SX09QVF9S RVRVUk47CisJCQkJCQkJCQl0b2sgPSB5eWxleCgpOworCQkJCQkJCQl9CisJCQkJCQkJfQor CQkJCQkJCWVsc2UgaWYgKHRva19pc19rZXl3b3JkKHRvaywgJnl5bHZhbCwKKwkJCQkJCQkJ CQkJICAgS19XSVRIT1VULCAid2l0aG91dCIpKQorCQkJCQkJCXsKKwkJCQkJCQkJdG9rID0g eXlsZXgoKTsKKwkJCQkJCQkJaWYgKHRva19pc19rZXl3b3JkKHRvaywgJnl5bHZhbCwKKwkJ CQkJCQkJCQkJCSAgIEtfUkVUVVJOLCAicmV0dXJuIikpCisJCQkJCQkJCXsKKwkJCQkJCQkJ CW5ldy0+Y3Vyc29yX29wdGlvbnMgfD0gMDsKKwkJCQkJCQkJCXRvayA9IHl5bGV4KCk7CisJ CQkJCQkJCX0KKwkJCQkJCQl9CisKIAkJCQkJCQlpZiAodG9rICE9IEtfRk9SKQogCQkJCQkJ CQl5eWVycm9yKCJzeW50YXggZXJyb3IsIGV4cGVjdGVkIFwiRk9SXCIiKTsKIApAQCAtMjU1 Miw2ICsyNTk2LDggQEAgdW5yZXNlcnZlZF9rZXl3b3JkCToKIAkJCQl8IEtfVVNFX1ZBUklB QkxFCiAJCQkJfCBLX1ZBUklBQkxFX0NPTkZMSUNUCiAJCQkJfCBLX1dBUk5JTkcKKwkJCQl8 IEtfV0lUSAorCQkJCXwgS19XSVRIT1VUCiAJCQkJOwogCiAlJQpkaWZmIC0tZ2l0IGEvc3Jj L3BsL3BscGdzcWwvc3JjL3BsX3VucmVzZXJ2ZWRfa3dsaXN0LmggYi9zcmMvcGwvcGxwZ3Nx bC9zcmMvcGxfdW5yZXNlcnZlZF9rd2xpc3QuaAppbmRleCA0NjZiZGM3YTIwLi44YThmOGVh NDdhIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfdW5yZXNlcnZlZF9rd2xp c3QuaAorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfdW5yZXNlcnZlZF9rd2xpc3QuaApA QCAtMTA5LDMgKzEwOSw1IEBAIFBHX0tFWVdPUkQoInVzZV9jb2x1bW4iLCBLX1VTRV9DT0xV TU4pCiBQR19LRVlXT1JEKCJ1c2VfdmFyaWFibGUiLCBLX1VTRV9WQVJJQUJMRSkKIFBHX0tF WVdPUkQoInZhcmlhYmxlX2NvbmZsaWN0IiwgS19WQVJJQUJMRV9DT05GTElDVCkKIFBHX0tF WVdPUkQoIndhcm5pbmciLCBLX1dBUk5JTkcpCitQR19LRVlXT1JEKCJ3aXRoIiwgS19XSVRI KQorUEdfS0VZV09SRCgid2l0aG91dCIsIEtfV0lUSE9VVCkKZGlmZiAtLWdpdCBhL3NyYy9w bC9wbHBnc3FsL3NyYy9zcWwvcGxwZ3NxbF9jYWxsLnNxbCBiL3NyYy9wbC9wbHBnc3FsL3Ny Yy9zcWwvcGxwZ3NxbF9jYWxsLnNxbAppbmRleCA1MDI4Mzk4MzQ4Li45YWNlOWQ0ZTA2IDEw MDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvc3FsL3BscGdzcWxfY2FsbC5zcWwKKysr IGIvc3JjL3BsL3BscGdzcWwvc3JjL3NxbC9wbHBnc3FsX2NhbGwuc3FsCkBAIC00MzYsMyAr NDM2LDQ5IEBAIENSRUFURSBQUk9DRURVUkUgcDEodl9jbnQgaW50LCB2X1RleHQgaW5vdXQg dGV4dCA9IE5VTEwpCiAgIFJBSVNFIE5PVElDRSAnJScsIHZfVGV4dDsKIEVORDsKICQkOwor CisKKy0tIGR5bmFtaWMgcmVzdWx0IHNldHMKKworQ1JFQVRFIFRBQkxFIGNwX3Rlc3QyIChh IGludCk7CitJTlNFUlQgSU5UTyBjcF90ZXN0MiBWQUxVRVMgKDEpLCAoMiksICgzKTsKK0NS RUFURSBUQUJMRSBjcF90ZXN0MyAoeCB0ZXh0LCB5IHRleHQpOworSU5TRVJUIElOVE8gY3Bf dGVzdDMgVkFMVUVTICgnYWJjJywgJ2RlZicpLCAoJ2ZvbycsICdiYXInKTsKKworQ1JFQVRF IFBST0NFRFVSRSBwZHJzdGVzdDEoeCBpbnQpCitMQU5HVUFHRSBwbHBnc3FsCitEWU5BTUlD IFJFU1VMVCBTRVRTIDIKK0FTICQkCitERUNMQVJFCisgIGMxIENVUlNPUiBXSVRIIFJFVFVS TiAoeSBpbnQpIEZPUiBTRUxFQ1QgYSAqIHkgQVMgYXkgRlJPTSBjcF90ZXN0MjsKKyAgYzIg Q1VSU09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QzOworQkVHSU4K KyAgT1BFTiBjMSh4KTsKKyAgSUYgeCA+IDEgVEhFTgorICAgIE9QRU4gYzI7CisgIEVORCBJ RjsKK0VORDsKKyQkOworCitDQUxMIHBkcnN0ZXN0MSgxKTsKK0NBTEwgcGRyc3Rlc3QxKDIp OworCitDUkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0Mih4IGludCkKK0xBTkdVQUdFIHBscGdz cWwKK0RZTkFNSUMgUkVTVUxUIFNFVFMgMgorQVMgJCQKK0RFQ0xBUkUKKyAgYzEgcmVmY3Vy c29yOworICBjMiByZWZjdXJzb3I7CitCRUdJTgorICBPUEVOIGMxIFdJVEggUkVUVVJOIEZP UiBTRUxFQ1QgYSAqIHggQVMgYXggRlJPTSBjcF90ZXN0MjsKKyAgSUYgeCA+IDEgVEhFTgor ICAgIE9QRU4gYzIgU0NST0xMIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rl c3QzOworICBFTkQgSUY7CitFTkQ7CiskJDsKKworQ0FMTCBwZHJzdGVzdDIoMSk7CitDQUxM IHBkcnN0ZXN0MigyKTsKKworRFJPUCBUQUJMRSBjcF90ZXN0MiwgY3BfdGVzdDM7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dAppbmRl eCBmMmE2NzdmYTU1Li44Y2MwMDlkMWIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY3JlYXRlX3Byb2NlZHVyZS5vdXQKQEAgLTM3NSw5ICszNzUsMTA3IEBAIEFM VEVSIFJPVVRJTkUgY3BfdGVzdGZ1bmMxYSBSRU5BTUUgVE8gY3BfdGVzdGZ1bmMxOwogQUxU RVIgUk9VVElORSBwdGVzdDEodGV4dCkgUkVOQU1FIFRPIHB0ZXN0MWE7CiBBTFRFUiBST1VU SU5FIHB0ZXN0MWEgUkVOQU1FIFRPIHB0ZXN0MTsKIERST1AgUk9VVElORSBjcF90ZXN0ZnVu YzEoaW50KTsKKy0tIGR5bmFtaWMgcmVzdWx0IHNldHMKK0NSRUFURSBUQUJMRSBjcF90ZXN0 MiAoYSBpbnQpOworSU5TRVJUIElOVE8gY3BfdGVzdDIgVkFMVUVTICgxKSwgKDIpLCAoMyk7 CitDUkVBVEUgVEFCTEUgY3BfdGVzdDMgKHggdGV4dCwgeSB0ZXh0KTsKK0lOU0VSVCBJTlRP IGNwX3Rlc3QzIFZBTFVFUyAoJ2FiYycsICdkZWYnKSwgKCdmb28nLCAnYmFyJyk7CitDUkVB VEUgUFJPQ0VEVVJFIHBkcnN0ZXN0MSgpCitMQU5HVUFHRSBTUUwKK0RZTkFNSUMgUkVTVUxU IFNFVFMgMgorQVMgJCQKK0RFQ0xBUkUgYzEgQ1VSU09SIFdJVEggUkVUVVJOIEZPUiBTRUxF Q1QgKiBGUk9NIGNwX3Rlc3QyOworREVDTEFSRSBjMiBDVVJTT1IgV0lUSCBSRVRVUk4gRk9S IFNFTEVDVCAqIEZST00gY3BfdGVzdDM7CiskJDsKK0NBTEwgcGRyc3Rlc3QxKCk7CisgYSAK Ky0tLQorIDEKKyAyCisgMworKDMgcm93cykKKworICB4ICB8ICB5ICAKKy0tLS0tKy0tLS0t CisgYWJjIHwgZGVmCisgZm9vIHwgYmFyCisoMiByb3dzKQorCitDQUxMIHBkcnN0ZXN0MSgp IFxiaW5kIFxnCitFUlJPUjogIGR5bmFtaWMgcmVzdWx0IHNldHMgYXJlIG5vdCB5ZXQgc3Vw cG9ydGVkIGluIGV4dGVuZGVkIHF1ZXJ5IHByb3RvY29sCitDUkVBVEUgUFJPQ0VEVVJFIHBk cnN0ZXN0MigpCitMQU5HVUFHRSBTUUwKK0RZTkFNSUMgUkVTVUxUIFNFVFMgMQorQVMgJCQK K0NBTEwgcGRyc3Rlc3QxKCk7CitERUNMQVJFIGMzIENVUlNPUiBXSVRIIFJFVFVSTiBGT1Ig U0VMRUNUICogRlJPTSBjcF90ZXN0MiBXSEVSRSBhIDwgMjsKKyQkOworQ0FMTCBwZHJzdGVz dDIoKTsKKyBhIAorLS0tCisgMQorKDEgcm93KQorCitDQUxMIHBkcnN0ZXN0MigpIFxiaW5k IFxnCitFUlJPUjogIGR5bmFtaWMgcmVzdWx0IHNldHMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVk IGluIGV4dGVuZGVkIHF1ZXJ5IHByb3RvY29sCitDUkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0 MyhJTk9VVCBhIHRleHQpCitMQU5HVUFHRSBTUUwKK0RZTkFNSUMgUkVTVUxUIFNFVFMgMQor QVMgJCQKK0RFQ0xBUkUgYzQgQ1VSU09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9N IGNwX3Rlc3QyOworU0VMRUNUIGEgfHwgYTsKKyQkOworQ0FMTCBwZHJzdGVzdDMoJ3gnKTsK KyBhICAKKy0tLS0KKyB4eAorKDEgcm93KQorCisgYSAKKy0tLQorIDEKKyAyCisgMworKDMg cm93cykKKworQ0FMTCBwZHJzdGVzdDMoJDEpIFxiaW5kICd5JyBcZworRVJST1I6ICBkeW5h bWljIHJlc3VsdCBzZXRzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBleHRlbmRlZCBxdWVy eSBwcm90b2NvbAorLS0gdGVzdCB0aGUgbmVzdGVkIGVycm9yIGhhbmRsaW5nCitDUkVBVEUg VEFCTEUgY3BfdGVzdF9kdW1teSAoYSBpbnQpOworQ1JFQVRFIFBST0NFRFVSRSBwZHJzdGVz dDRhKCkKK0xBTkdVQUdFIFNRTAorRFlOQU1JQyBSRVNVTFQgU0VUUyAxCitBUyAkJAorREVD TEFSRSBjNWEgQ1VSU09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3Rf ZHVtbXk7CiskJDsKK0NSRUFURSBQUk9DRURVUkUgcGRyc3Rlc3Q0YigpCitMQU5HVUFHRSBT UUwKK0RZTkFNSUMgUkVTVUxUIFNFVFMgMQorQVMgJCQKK0NBTEwgcGRyc3Rlc3Q0YSgpOwor JCQ7CitEUk9QIFRBQkxFIGNwX3Rlc3RfZHVtbXk7CitDQUxMIHBkcnN0ZXN0NGIoKTsKK0VS Uk9SOiAgcmVsYXRpb24gImNwX3Rlc3RfZHVtbXkiIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6 IERFQ0xBUkUgYzVhIENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90 ZXN0X2R1bS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorUVVFUlk6ICAKK0RFQ0xBUkUgYzVhIENVUlNPUiBXSVRIIFJF VFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0X2R1bW15OworCitDT05URVhUOiAgU1FM IGZ1bmN0aW9uICJwZHJzdGVzdDRhIiBkdXJpbmcgc3RhcnR1cAorU1FMIGZ1bmN0aW9uICJw ZHJzdGVzdDRiIiBzdGF0ZW1lbnQgMQorQ0FMTCBwZHJzdGVzdDRiKCkgXGJpbmQgXGcKK0VS Uk9SOiAgcmVsYXRpb24gImNwX3Rlc3RfZHVtbXkiIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6 IERFQ0xBUkUgYzVhIENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90 ZXN0X2R1bS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorUVVFUlk6ICAKK0RFQ0xBUkUgYzVhIENVUlNPUiBXSVRIIFJF VFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0X2R1bW15OworCitDT05URVhUOiAgU1FM IGZ1bmN0aW9uICJwZHJzdGVzdDRhIiBkdXJpbmcgc3RhcnR1cAorU1FMIGZ1bmN0aW9uICJw ZHJzdGVzdDRiIiBzdGF0ZW1lbnQgMQogLS0gY2xlYW51cAogRFJPUCBQUk9DRURVUkUgcHRl c3QxOwogRFJPUCBQUk9DRURVUkUgcHRlc3QxczsKIERST1AgUFJPQ0VEVVJFIHB0ZXN0MjsK LURST1AgVEFCTEUgY3BfdGVzdDsKK0RST1AgVEFCTEUgY3BfdGVzdCwgY3BfdGVzdDIsIGNw X3Rlc3QzOwogRFJPUCBVU0VSIHJlZ3Jlc3NfY3BfdXNlcjE7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfcHJvY2VkdXJlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NyZWF0ZV9wcm9jZWR1cmUuc3FsCmluZGV4IDM1Yjg3Mjc3OWUuLmI3OWEzMTJm NjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9jZWR1cmUu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9jZWR1cmUuc3FsCkBA IC0yNDIsMTIgKzI0Miw3NSBAQCBDUkVBVEUgVVNFUiByZWdyZXNzX2NwX3VzZXIxOwogRFJP UCBST1VUSU5FIGNwX3Rlc3RmdW5jMShpbnQpOwogCiAKKy0tIGR5bmFtaWMgcmVzdWx0IHNl dHMKKworQ1JFQVRFIFRBQkxFIGNwX3Rlc3QyIChhIGludCk7CitJTlNFUlQgSU5UTyBjcF90 ZXN0MiBWQUxVRVMgKDEpLCAoMiksICgzKTsKK0NSRUFURSBUQUJMRSBjcF90ZXN0MyAoeCB0 ZXh0LCB5IHRleHQpOworSU5TRVJUIElOVE8gY3BfdGVzdDMgVkFMVUVTICgnYWJjJywgJ2Rl ZicpLCAoJ2ZvbycsICdiYXInKTsKKworQ1JFQVRFIFBST0NFRFVSRSBwZHJzdGVzdDEoKQor TEFOR1VBR0UgU1FMCitEWU5BTUlDIFJFU1VMVCBTRVRTIDIKK0FTICQkCitERUNMQVJFIGMx IENVUlNPUiBXSVRIIFJFVFVSTiBGT1IgU0VMRUNUICogRlJPTSBjcF90ZXN0MjsKK0RFQ0xB UkUgYzIgQ1VSU09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QzOwor JCQ7CisKK0NBTEwgcGRyc3Rlc3QxKCk7CitDQUxMIHBkcnN0ZXN0MSgpIFxiaW5kIFxnCisK K0NSRUFURSBQUk9DRURVUkUgcGRyc3Rlc3QyKCkKK0xBTkdVQUdFIFNRTAorRFlOQU1JQyBS RVNVTFQgU0VUUyAxCitBUyAkJAorQ0FMTCBwZHJzdGVzdDEoKTsKK0RFQ0xBUkUgYzMgQ1VS U09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rlc3QyIFdIRVJFIGEgPCAy OworJCQ7CisKK0NBTEwgcGRyc3Rlc3QyKCk7CitDQUxMIHBkcnN0ZXN0MigpIFxiaW5kIFxn CisKK0NSRUFURSBQUk9DRURVUkUgcGRyc3Rlc3QzKElOT1VUIGEgdGV4dCkKK0xBTkdVQUdF IFNRTAorRFlOQU1JQyBSRVNVTFQgU0VUUyAxCitBUyAkJAorREVDTEFSRSBjNCBDVVJTT1Ig V0lUSCBSRVRVUk4gRk9SIFNFTEVDVCAqIEZST00gY3BfdGVzdDI7CitTRUxFQ1QgYSB8fCBh OworJCQ7CisKK0NBTEwgcGRyc3Rlc3QzKCd4Jyk7CitDQUxMIHBkcnN0ZXN0MygkMSkgXGJp bmQgJ3knIFxnCisKKy0tIHRlc3QgdGhlIG5lc3RlZCBlcnJvciBoYW5kbGluZworQ1JFQVRF IFRBQkxFIGNwX3Rlc3RfZHVtbXkgKGEgaW50KTsKKworQ1JFQVRFIFBST0NFRFVSRSBwZHJz dGVzdDRhKCkKK0xBTkdVQUdFIFNRTAorRFlOQU1JQyBSRVNVTFQgU0VUUyAxCitBUyAkJAor REVDTEFSRSBjNWEgQ1VSU09SIFdJVEggUkVUVVJOIEZPUiBTRUxFQ1QgKiBGUk9NIGNwX3Rl c3RfZHVtbXk7CiskJDsKKworQ1JFQVRFIFBST0NFRFVSRSBwZHJzdGVzdDRiKCkKK0xBTkdV QUdFIFNRTAorRFlOQU1JQyBSRVNVTFQgU0VUUyAxCitBUyAkJAorQ0FMTCBwZHJzdGVzdDRh KCk7CiskJDsKKworRFJPUCBUQUJMRSBjcF90ZXN0X2R1bW15OworCitDQUxMIHBkcnN0ZXN0 NGIoKTsKK0NBTEwgcGRyc3Rlc3Q0YigpIFxiaW5kIFxnCisKKwogLS0gY2xlYW51cAogCiBE Uk9QIFBST0NFRFVSRSBwdGVzdDE7CiBEUk9QIFBST0NFRFVSRSBwdGVzdDFzOwogRFJPUCBQ Uk9DRURVUkUgcHRlc3QyOwogCi1EUk9QIFRBQkxFIGNwX3Rlc3Q7CitEUk9QIFRBQkxFIGNw X3Rlc3QsIGNwX3Rlc3QyLCBjcF90ZXN0MzsKIAogRFJPUCBVU0VSIHJlZ3Jlc3NfY3BfdXNl cjE7CgpiYXNlLWNvbW1pdDogMmNiODJlMmFjZmJhMDY5ZDAwYzZiZDI1M2Q1OGRmMDNkMzE1 NjcyYQotLSAKMi4zOS4yCgo= --------------SF6XkugaVySGK4M6Y133R9Uq Content-Type: text/plain; charset=UTF-8; name="v7-0002-WIP-Dynamic-result-sets-in-extended-query-protoco.patch" Content-Disposition: attachment; filename*0="v7-0002-WIP-Dynamic-result-sets-in-extended-query-protoco.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0M2VhYjc1YTc0Yjg0MTQ1OTQ4OWY1YjUzMmQ4MDQ4MmE5N2FiN2YyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyMCBGZWIgMjAyMyAxMjo1NzozMyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgMi8yXSBXSVA6IER5bmFtaWMgcmVzdWx0IHNldHMgaW4gZXh0ZW5kZWQg cXVlcnkgcHJvdG9jb2wKClRoaXMgaXMgY3VycmVudGx5IGJyb2tlbiBkdWUgdG8vc2luY2UK YWNiN2U0ZWI2YjFjNjE0YzY4YTYyZmIzYTZhNWJiYTFhZjBhMjY1OS4KClRPRE86IGNvbnNp ZGVyIG1pbm9yIHByb3RvY29sIHZlcnNpb24gYnVtcCAoMy4xKQotLS0KIGRvYy9zcmMvc2dt bC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAgICAgICB8IDE5ICsrKysrKysrKysrCiBz cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAzMiArKysr KysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAg ICAgICAgICAgfCAgNiArKysrCiBzcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAg ICAgICAgICAgICAgfCAgMiArKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wz LmMgICAgICAgICAgIHwgIDYgKystLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3By b2NlZHVyZS5vdXQgICAgIHwgMjIgKysrKysrKysrKystLQogNiBmaWxlcyBjaGFuZ2VkLCA3 NiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4 IDkzZmM3MTY3ZDQuLmVjNjA1YjEyYjUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90 b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC05NTksNiAr OTU5LDI1IEBAIDx0aXRsZT5FeHRlbmRlZCBRdWVyeTwvdGl0bGU+CiAgICAgYW4gZW1wdHkg cXVlcnkgc3RyaW5nKSwgRXJyb3JSZXNwb25zZSwgb3IgUG9ydGFsU3VzcGVuZGVkLgogICAg PC9wYXJhPgogCisgICA8cGFyYT4KKyAgICBFeGVjdXRpbmcgYSBwb3J0YWwgbWF5IGdpdmUg cmlzZSB0byBhIDxmaXJzdHRlcm0+ZHluYW1pYyByZXN1bHQgc2V0CisgICAgc2VxdWVuY2U8 L2ZpcnN0dGVybT4uICBUaGF0IG1lYW5zIHRoZSBjb21tYW5kIGNvbnRhaW5lZCBpbiB0aGUg cG9ydGFsCisgICAgY3JlYXRlZCBhZGRpdGlvbmFsIHJlc3VsdCBzZXRzIGJleW9uZCB3aGF0 IGl0IG5vcm1hbGx5IHJldHVybnMuICAoVGhlCisgICAgdHlwaWNhbCBleGFtcGxlIGlzIGNh bGxpbmcgYSBzdG9yZWQgcHJvY2VkdXJlIHRoYXQgY3JlYXRlcyBkeW5hbWljIHJlc3VsdAor ICAgIHNldHMuKSAgRHluYW1pYyByZXN1bHQgc2V0cyBhcmUgaXNzdWVkIGFmdGVyIHdoYXRl dmVyIHJlc3BvbnNlIHRoZSBtYWluCisgICAgY29tbWFuZCBpc3N1ZWQuICBFYWNoIGR5bmFt aWMgcmVzdWx0IHNldCBiZWdpbnMgd2l0aCBhIFJvd0Rlc2NyaXB0aW9uCisgICAgbWVzc2Fn ZSBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUgRGF0YVJvdyBtZXNzYWdlcy4gIChTaW5jZSwg YXMgZXhwbGFpbmVkCisgICAgYWJvdmUsIGFuIEV4ZWN1dGUgbWVzc2FnZSBub3JtYWxseSBk b2VzIG5vdCByZXNwb25kIHdpdGggYSBSb3dEZXNjcmlwdGlvbiwKKyAgICB0aGUgYXBwZWFy YW5jZSBvZiB0aGUgZmlyc3QgUm93RGVzY3JpcHRpb24gbWFya3MgdGhlIGVuZCBvZiB0aGUg cHJpbWFyeQorICAgIHJlc3VsdCBzZXQgb2YgdGhlIHBvcnRhbCBhbmQgdGhlIGJlZ2lubmlu ZyBvZiB0aGUgZmlyc3QgZHluYW1pYyByZXN1bHQKKyAgICBzZXQuKSAgVGhlIENvbW1hbmRD b21wbGV0ZSBtZXNzYWdlIHRoYXQgY29uY2x1ZGVzIHRoZSBFeGVjdXRlIG1lc3NhZ2UKKyAg ICByZXNwb25zZSBmb2xsb3dzIDxlbXBoYXNpcz5hZnRlcjwvZW1waGFzaXM+IGFsbCBkeW5h bWljIHJlc3VsdCBzZXRzLiAgTm90ZQorICAgIHRoYXQgZHluYW1pYyByZXN1bHQgc2V0cyBj YW5ub3QsIGJ5IHRoZWlyIG5hdHVyZSwgYmUgZGVjcmliZWQgcHJpb3IgdG8gdGhlCisgICAg ZXhlY3V0aW9uIG9mIHRoZSBwb3J0YWwuICBNdWx0aXBsZSBleGVjdXRpb25zIG9mIHRoZSBz YW1lIHByZXBhcmVkCisgICAgc3RhdGVtZW50IGNvdWxkIHJlc3VsdCBpbiBkeW5hbWljIHJl c3VsdCBzZXRzIHdpdGggZGlmZmVyZW50IHJvdworICAgIGRlc2NyaXB0aW9ucyBiZWluZyBy ZXR1cm5lZC4KKyAgIDwvcGFyYT4KKwogICAgPHBhcmE+CiAgICAgQXQgY29tcGxldGlvbiBv ZiBlYWNoIHNlcmllcyBvZiBleHRlbmRlZC1xdWVyeSBtZXNzYWdlcywgdGhlIGZyb250ZW5k CiAgICAgc2hvdWxkIGlzc3VlIGEgU3luYyBtZXNzYWdlLiAgVGhpcyBwYXJhbWV0ZXJsZXNz IG1lc3NhZ2UgY2F1c2VzIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDk4YWM5YWEwMTIu Ljg5ZGE1Yzc1MTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwor KysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTIwODYsNiArMjA4Niw3IEBA IGV4ZWNfZXhlY3V0ZV9tZXNzYWdlKGNvbnN0IGNoYXIgKnBvcnRhbF9uYW1lLCBsb25nIG1h eF9yb3dzKQogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CiAJY29uc3QgY2hhciAqcHJlcFN0 bXROYW1lOwogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOworCUxpc3RDZWxsICAgKmxj OwogCWJvb2wJCXNhdmVfbG9nX3N0YXRlbWVudF9zdGF0cyA9IGxvZ19zdGF0ZW1lbnRfc3Rh dHM7CiAJYm9vbAkJaXNfeGFjdF9jb21tYW5kOwogCWJvb2wJCWV4ZWN1dGVfaXNfZmV0Y2g7 CkBAIC0yMjI2LDEwICsyMjI3LDMzIEBAIGV4ZWNfZXhlY3V0ZV9tZXNzYWdlKGNvbnN0IGNo YXIgKnBvcnRhbF9uYW1lLCBsb25nIG1heF9yb3dzKQogCQkJCQkJICByZWNlaXZlciwKIAkJ CQkJCSAgJnFjKTsKIAotCWlmIChHZXRSZXR1cm5hYmxlQ3Vyc29ycygpKQotCQllcmVwb3J0 KEVSUk9SLAotCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAot CQkJCWVycm1zZygiZHluYW1pYyByZXN1bHQgc2V0cyBhcmUgbm90IHlldCBzdXBwb3J0ZWQg aW4gZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wiKSk7CisJLyoKKwkgKiBSdW4gcG9ydGFscyBm b3IgZHluYW1pYyByZXN1bHQgc2V0cy4KKwkgKi8KKwlmb3JlYWNoIChsYywgR2V0UmV0dXJu YWJsZUN1cnNvcnMoKSkKKwl7CisJCVBvcnRhbCBkeW5fcG9ydGFsID0gbGZpcnN0KGxjKTsK KworCQlpZiAoZGVzdCA9PSBEZXN0UmVtb3RlRXhlY3V0ZSkKKwkJCVNldFJlbW90ZURlc3RS ZWNlaXZlclBhcmFtcyhyZWNlaXZlciwgZHluX3BvcnRhbCk7CisKKwkJUG9ydGFsU2V0UmVz dWx0Rm9ybWF0KGR5bl9wb3J0YWwsIDEsICZwb3J0YWwtPmR5bmFtaWNfZm9ybWF0KTsKKwor CQlTZW5kUm93RGVzY3JpcHRpb25NZXNzYWdlKCZyb3dfZGVzY3JpcHRpb25fYnVmLAorCQkJ CQkJCQkgIGR5bl9wb3J0YWwtPnR1cERlc2MsCisJCQkJCQkJCSAgRmV0Y2hQb3J0YWxUYXJn ZXRMaXN0KGR5bl9wb3J0YWwpLAorCQkJCQkJCQkgIGR5bl9wb3J0YWwtPmZvcm1hdHMpOwor CisJCVBvcnRhbFJ1bihkeW5fcG9ydGFsLAorCQkJCSAgRkVUQ0hfQUxMLAorCQkJCSAgdHJ1 ZSwKKwkJCQkgIHRydWUsCisJCQkJICByZWNlaXZlciwKKwkJCQkgIHJlY2VpdmVyLAorCQkJ CSAgTlVMTCk7CisKKwkJUG9ydGFsRHJvcChkeW5fcG9ydGFsLCBmYWxzZSk7CisJfQogCiAJ cmVjZWl2ZXItPnJEZXN0cm95KHJlY2VpdmVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNWYw MjQ4YWNjNS4uNjQ2OTk0MDkzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVl cnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC02NDEsNiArNjQxLDgg QEAgUG9ydGFsU2V0UmVzdWx0Rm9ybWF0KFBvcnRhbCBwb3J0YWwsIGludCBuRm9ybWF0cywg aW50MTYgKmZvcm1hdHMpCiAJCQkJCSBlcnJtc2coImJpbmQgbWVzc2FnZSBoYXMgJWQgcmVz dWx0IGZvcm1hdHMgYnV0IHF1ZXJ5IGhhcyAlZCBjb2x1bW5zIiwKIAkJCQkJCQluRm9ybWF0 cywgbmF0dHMpKSk7CiAJCW1lbWNweShwb3J0YWwtPmZvcm1hdHMsIGZvcm1hdHMsIG5hdHRz ICogc2l6ZW9mKGludDE2KSk7CisKKwkJcG9ydGFsLT5keW5hbWljX2Zvcm1hdCA9IDA7CiAJ fQogCWVsc2UgaWYgKG5Gb3JtYXRzID4gMCkKIAl7CkBAIC02NDksMTIgKzY1MSwxNiBAQCBQ b3J0YWxTZXRSZXN1bHRGb3JtYXQoUG9ydGFsIHBvcnRhbCwgaW50IG5Gb3JtYXRzLCBpbnQx NiAqZm9ybWF0cykKIAogCQlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKIAkJCXBvcnRh bC0+Zm9ybWF0c1tpXSA9IGZvcm1hdDE7CisKKwkJcG9ydGFsLT5keW5hbWljX2Zvcm1hdCA9 IGZvcm1hdDE7CiAJfQogCWVsc2UKIAl7CiAJCS8qIHVzZSBkZWZhdWx0IGZvcm1hdCBmb3Ig YWxsIGNvbHVtbnMgKi8KIAkJZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCiAJCQlwb3J0 YWwtPmZvcm1hdHNbaV0gPSAwOworCisJCXBvcnRhbC0+ZHluYW1pY19mb3JtYXQgPSAwOwog CX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMv aW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCA2ZjA0MzYyZGZlLi41NTQwNmI4NjU0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9wb3J0YWwuaApAQCAtMTcwLDYgKzE3MCw4IEBAIHR5cGVkZWYgc3RydWN0IFBv cnRhbERhdGEKIAlUdXBsZURlc2MJdHVwRGVzYzsJCS8qIGRlc2NyaXB0b3IgZm9yIHJlc3Vs dCB0dXBsZXMgKi8KIAkvKiBhbmQgdGhlc2UgYXJlIHRoZSBmb3JtYXQgY29kZXMgdG8gdXNl IGZvciB0aGUgY29sdW1uczogKi8KIAlpbnQxNgkgICAqZm9ybWF0czsJCS8qIGEgZm9ybWF0 IGNvZGUgZm9yIGVhY2ggY29sdW1uICovCisJLyogRm9ybWF0IGNvZGUgZm9yIGR5bmFtaWMg cmVzdWx0IHNldHMgKi8KKwlpbnQxNgkJZHluYW1pY19mb3JtYXQ7CiAKIAkvKgogCSAqIE91 dGVybW9zdCBBY3RpdmVTbmFwc2hvdCBmb3IgZXhlY3V0aW9uIG9mIHRoZSBwb3J0YWwncyBx dWVyaWVzLiAgRm9yCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90 b2NvbDMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCmluZGV4IDhh YjZhODg0MTYuLjg2M2EwOWNmNzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLXByb3RvY29sMy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29s My5jCkBAIC0zMjAsMTAgKzMyMCw4IEBAIHBxUGFyc2VJbnB1dDMoUEdjb25uICpjb25uKQog CQkJCQl7CiAJCQkJCQkvKgogCQkJCQkJICogQSBuZXcgJ1QnIG1lc3NhZ2UgaXMgdHJlYXRl ZCBhcyB0aGUgc3RhcnQgb2YKLQkJCQkJCSAqIGFub3RoZXIgUEdyZXN1bHQuICAoSXQgaXMg bm90IGNsZWFyIHRoYXQgdGhpcyBpcwotCQkJCQkJICogcmVhbGx5IHBvc3NpYmxlIHdpdGgg dGhlIGN1cnJlbnQgYmFja2VuZC4pIFdlIHN0b3AKLQkJCQkJCSAqIHBhcnNpbmcgdW50aWwg dGhlIGFwcGxpY2F0aW9uIGFjY2VwdHMgdGhlIGN1cnJlbnQKLQkJCQkJCSAqIHJlc3VsdC4K KwkJCQkJCSAqIGFub3RoZXIgUEdyZXN1bHQuICBXZSBzdG9wIHBhcnNpbmcgdW50aWwgdGhl CisJCQkJCQkgKiBhcHBsaWNhdGlvbiBhY2NlcHRzIHRoZSBjdXJyZW50IHJlc3VsdC4KIAkJ CQkJCSAqLwogCQkJCQkJY29ubi0+YXN5bmNTdGF0dXMgPSBQR0FTWU5DX1JFQURZOwogCQkJ CQkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVh dGVfcHJvY2VkdXJlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3By b2NlZHVyZS5vdXQKaW5kZXggOGNjMDA5ZDFiMi4uOWNlYzAzM2VmYiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUub3V0CkBAIC00MDIs NyArNDAyLDE0IEBAIENBTEwgcGRyc3Rlc3QxKCk7CiAoMiByb3dzKQogCiBDQUxMIHBkcnN0 ZXN0MSgpIFxiaW5kIFxnCi1FUlJPUjogIGR5bmFtaWMgcmVzdWx0IHNldHMgYXJlIG5vdCB5 ZXQgc3VwcG9ydGVkIGluIGV4dGVuZGVkIHF1ZXJ5IHByb3RvY29sCisgYSAKKy0tLQorIDEK KyAyCisgMworKDMgcm93cykKKworc2VydmVyIHNlbnQgZGF0YSAoIkQiIG1lc3NhZ2UpIHdp dGhvdXQgcHJpb3Igcm93IGRlc2NyaXB0aW9uICgiVCIgbWVzc2FnZSkKIENSRUFURSBQUk9D RURVUkUgcGRyc3Rlc3QyKCkKIExBTkdVQUdFIFNRTAogRFlOQU1JQyBSRVNVTFQgU0VUUyAx CkBAIC00MTcsNyArNDI0LDExIEBAIENBTEwgcGRyc3Rlc3QyKCk7CiAoMSByb3cpCiAKIENB TEwgcGRyc3Rlc3QyKCkgXGJpbmQgXGcKLUVSUk9SOiAgZHluYW1pYyByZXN1bHQgc2V0cyBh cmUgbm90IHlldCBzdXBwb3J0ZWQgaW4gZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wKKyBhIAor LS0tCisgMQorKDEgcm93KQorCiBDUkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0MyhJTk9VVCBh IHRleHQpCiBMQU5HVUFHRSBTUUwKIERZTkFNSUMgUkVTVUxUIFNFVFMgMQpAQCAtNDM5LDcg KzQ1MCwxMiBAQCBDQUxMIHBkcnN0ZXN0MygneCcpOwogKDMgcm93cykKIAogQ0FMTCBwZHJz dGVzdDMoJDEpIFxiaW5kICd5JyBcZwotRVJST1I6ICBkeW5hbWljIHJlc3VsdCBzZXRzIGFy ZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBleHRlbmRlZCBxdWVyeSBwcm90b2NvbAorIGEgIAor LS0tLQorIHl5CisoMSByb3cpCisKK3NlcnZlciBzZW50IGRhdGEgKCJEIiBtZXNzYWdlKSB3 aXRob3V0IHByaW9yIHJvdyBkZXNjcmlwdGlvbiAoIlQiIG1lc3NhZ2UpCiAtLSB0ZXN0IHRo ZSBuZXN0ZWQgZXJyb3IgaGFuZGxpbmcKIENSRUFURSBUQUJMRSBjcF90ZXN0X2R1bW15IChh IGludCk7CiBDUkVBVEUgUFJPQ0VEVVJFIHBkcnN0ZXN0NGEoKQotLSAKMi4zOS4yCgo= --------------SF6XkugaVySGK4M6Y133R9Uq--