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 1oiWHZ-0001Q3-Lo for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Oct 2022 07:36:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oiWHY-0008Ao-GS for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Oct 2022 07:36:00 +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 1oiWHX-00089v-Ix for pgsql-hackers@lists.postgresql.org; Wed, 12 Oct 2022 07:36:00 +0000 Received: from out4-smtp.messagingengine.com ([66.111.4.28]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oiWHQ-0008W6-6m for pgsql-hackers@postgresql.org; Wed, 12 Oct 2022 07:35:58 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 8B48A5C0111 for ; Wed, 12 Oct 2022 03:35:51 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Wed, 12 Oct 2022 03:35:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=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= fm3; t=1665560151; x=1665646551; bh=x1eAZqXLILxikD3SQkyHAPSqgZZL nJT/J0cghkIt1Dw=; b=rloW+fCDHgo5QtWvFTIeJYskLhgXGqw/gWkzSZNlUNtU f3uBKCv+KFbIAP0GS6tbAEGynzbqOnh5do+1M6XPs4AcEYZ6rO37g/zRnVGNBTDI o1DjVCso7g+1kU4Uzv6qaRwv0l45B9kJ9d1TRoC3+4KfB7bPHmnPixgixuSS9aka lr/HcFEdXS+m4DadAM0mGTBD8C6mS6XDflfSRunMDMPEiaHVdlUW9OzD7rM4pXym n8Bl+29WcDaXJ+AtyDYOA+mmeUhYAJcMuoW3PWbMNivFJZ5uSXwe/6BVWWsBuWDE NfOrfVX4E5TgS8kMaV6SCPKBhcwbaHLZEzViPEnx4g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeejjedguddvfecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfuhffvfhgjsehmtd erredtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghr rdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrg htthgvrhhnpeekteetfeehvefhvdeltdefgeeluedtkeekkeevieefueffveejueejheff jeeijeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hpvghtvghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 12 Oct 2022 03:35:50 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------JOvVXP0cB2O6nk4o50WdqbUB" Message-ID: Date: Wed, 12 Oct 2022 09:35:49 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: Re: libpq error message refactoring Content-Language: en-US From: Peter Eisentraut To: pgsql-hackers References: <7c0232ef-7b44-68db-599d-b327d0640a77@enterprisedb.com> In-Reply-To: <7c0232ef-7b44-68db-599d-b327d0640a77@enterprisedb.com> 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. --------------JOvVXP0cB2O6nk4o50WdqbUB Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 25.08.22 16:34, Peter Eisentraut wrote: > libpq now contains a mix of error message strings that end with newlines > and don't end with newlines, due to some newer code paths with new ways > of passing errors around.  This has now gotten me confused a few too > many times both during development and translation.  So I looked into > whether we can unify this, similar to how we have done elsewhere (e.g., > pg_upgrade).  I came up with the attached patch.  It's not complete, but > it shows the idea and it looks like a nice simplification to me. I have completed this patch, taking into account the fixes discussed in this thread. I have split the patch in two, for review: The first is just the new APIs, the second are the changes that apply the API everywhere. --------------JOvVXP0cB2O6nk4o50WdqbUB Content-Type: text/plain; charset=UTF-8; name="v2-0001-libpq-error-message-refactoring.patch" Content-Disposition: attachment; filename="v2-0001-libpq-error-message-refactoring.patch" Content-Transfer-Encoding: base64 RnJvbSA3NzcwODc1MDczMzczN2ZiMDI5NDFlNDRkZTc1ZjRlMGZjMjYzNTNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAxMiBPY3QgMjAyMiAwOTowMzo1MiArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgMS8yXSBsaWJwcSBlcnJvciBtZXNzYWdlIHJlZmFjdG9yaW5nCgpsaWJw cSBub3cgY29udGFpbnMgYSBtaXggb2YgZXJyb3IgbWVzc2FnZSBzdHJpbmdzIHRoYXQgZW5k IHdpdGgKbmV3bGluZXMgYW5kIGRvbid0IGVuZCB3aXRoIG5ld2xpbmVzLCBkdWUgdG8gc29t ZSBuZXdlciBjb2RlIHBhdGhzCndpdGggbmV3IHdheXMgb2YgcGFzc2luZyBlcnJvcnMgYXJv dW5kLiAgVGhpcyBsZWFkcyB0byBjb25mdXNpb24gYW5kCm1pc3Rha2VzIGJvdGggZHVyaW5n IGRldmVsb3BtZW50IGFuZCB0cmFuc2xhdGlvbi4KClRoaXMgYWRkcyBuZXcgZnVuY3Rpb25z IGxpYnBxX2FwcGVuZF9lcnJvcigpIGFuZApsaWJwcV9hcHBlbmRfY29ubl9lcnJvcigpIHRo YXQgZW5jYXBzdWxhdGUgY29tbW9uIGNvZGUgcGF0aHMgZm9yCnByb2R1Y2luZyBlcnJvciBt ZXNzYWdlIHN0cmluZ3MuICBOb3RhYmx5LCB0aGVzZSBmdW5jdGlvbnMgYXBwZW5kIHRoZQpu ZXdsaW5lLCBzbyB0aGF0IHRoZSBzdHJpbmcgYXBwZWFyaW5nIGluIHRoZSBjb2RlIGRvZXMg bm90IGVuZCB3aXRoIGEKbmV3bGluZS4gIFRoaXMgbWFrZXMgKGFsbW9zdCkgYWxsIGVycm9y IG1lc3NhZ2Ugc3RyaW5ncyBpbiBsaWJwcQp1bmlmb3JtIGluIHRoaXMgcmVnYXJkIChhbmQg YWxzbyBjb25zaXN0ZW50IHdpdGggaG93IHdlIGhhbmRsZSBpdApvdXRzaWRlIG9mIGxpYnBx IGNvZGUpLiAgKFRoZXJlIGFyZSBhIGZldyBleGNlcHRpb25zIHRoYXQgYXJlCmRpZmZpY3Vs dCB0byBmaXQgaW50byB0aGlzIHNjaGVtZSwgYnV0IHRoZXkgYXJlIG9ubHkgYSBmZXcuKQoK RGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0 LzdjMDIzMmVmLTdiNDQtNjhkYi01OTlkLWIzMjdkMDY0MGE3N0BlbnRlcnByaXNlZGIuY29t Ci0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlzYy5jICAgICB8IDU5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50 LmggICB8ICAzICsrCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9ubHMubWsgICAgICAgIHwgIDgg KysrLQogc3JjL2ludGVyZmFjZXMvbGlicHEvcHFleHBidWZmZXIuYyB8ICA0ICstCiBzcmMv aW50ZXJmYWNlcy9saWJwcS9wcWV4cGJ1ZmZlci5oIHwgMTEgKysrKysrCiA1IGZpbGVzIGNo YW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlzYy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtbWlzYy5jCmluZGV4IDc5NTUwMGM1OTM1NC4uOWUzZDM4ZDMzNzEwIDEwMDY0NAotLS0g YS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1taXNjLmMKKysrIGIvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtbWlzYy5jCkBAIC0xMjc4LDMgKzEyNzgsNjIgQEAgbGlicHFfbmdldHRleHQo Y29uc3QgY2hhciAqbXNnaWQsIGNvbnN0IGNoYXIgKm1zZ2lkX3BsdXJhbCwgdW5zaWduZWQg bG9uZyBuKQogfQogCiAjZW5kaWYJCQkJCQkJLyogRU5BQkxFX05MUyAqLworCisKKy8qCisg KiBBcHBlbmQgYSBmb3JtYXR0ZWQgc3RyaW5nIHRvIHRoZSBnaXZlbiBidWZmZXIsIGFmdGVy IHRyYW5zbGF0aW9uLiAgQQorICogbmV3bGluZSBpcyBhdXRvbWF0aWNhbGx5IGFwcGVuZGVk OyB0aGUgZm9ybWF0IHNob3VsZCBub3QgZW5kIHdpdGggYQorICogbmV3bGluZS4KKyAqLwor dm9pZAorbGlicHFfYXBwZW5kX2Vycm9yKFBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSwgY29u c3QgY2hhciAqZm10LCAuLi4pCit7CisJaW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOworCWJv b2wJCWRvbmU7CisJdmFfbGlzdAkJYXJnczsKKworCUFzc2VydChmbXRbc3RybGVuKGZtdCkg LSAxXSAhPSAnXG4nKTsKKworCWlmIChQUUV4cEJ1ZmZlckJyb2tlbihlcnJvck1lc3NhZ2Up KQorCQlyZXR1cm47CQkJCQkvKiBhbHJlYWR5IGZhaWxlZCAqLworCisJLyogTG9vcCBpbiBj YXNlIHdlIGhhdmUgdG8gcmV0cnkgYWZ0ZXIgZW5sYXJnaW5nIHRoZSBidWZmZXIuICovCisJ ZG8KKwl7CisJCWVycm5vID0gc2F2ZV9lcnJubzsKKwkJdmFfc3RhcnQoYXJncywgZm10KTsK KwkJZG9uZSA9IGFwcGVuZFBRRXhwQnVmZmVyVkEoZXJyb3JNZXNzYWdlLCBsaWJwcV9nZXR0 ZXh0KGZtdCksIGFyZ3MpOworCQl2YV9lbmQoYXJncyk7CisJfSB3aGlsZSAoIWRvbmUpOwor CisJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKGVycm9yTWVzc2FnZSwgJ1xuJyk7Cit9CisKKy8q CisgKiBBcHBlbmQgYSBmb3JtYXR0ZWQgc3RyaW5nIHRvIHRoZSBlcnJvciBtZXNzYWdlIGJ1 ZmZlciBvZiB0aGUgZ2l2ZW4KKyAqIGNvbm5lY3Rpb24sIGFmdGVyIHRyYW5zbGF0aW9uLiAg QSBuZXdsaW5lIGlzIGF1dG9tYXRpY2FsbHkgYXBwZW5kZWQ7IHRoZQorICogZm9ybWF0IHNo b3VsZCBub3QgZW5kIHdpdGggYSBuZXdsaW5lLgorICovCit2b2lkCitsaWJwcV9hcHBlbmRf Y29ubl9lcnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCWlu dAkJCXNhdmVfZXJybm8gPSBlcnJubzsKKwlib29sCQlkb25lOworCXZhX2xpc3QJCWFyZ3M7 CisKKwlBc3NlcnQoZm10W3N0cmxlbihmbXQpIC0gMV0gIT0gJ1xuJyk7CisKKwlpZiAoUFFF eHBCdWZmZXJCcm9rZW4oJmNvbm4tPmVycm9yTWVzc2FnZSkpCisJCXJldHVybjsJCQkJCS8q IGFscmVhZHkgZmFpbGVkICovCisKKwkvKiBMb29wIGluIGNhc2Ugd2UgaGF2ZSB0byByZXRy eSBhZnRlciBlbmxhcmdpbmcgdGhlIGJ1ZmZlci4gKi8KKwlkbworCXsKKwkJZXJybm8gPSBz YXZlX2Vycm5vOworCQl2YV9zdGFydChhcmdzLCBmbXQpOworCQlkb25lID0gYXBwZW5kUFFF eHBCdWZmZXJWQSgmY29ubi0+ZXJyb3JNZXNzYWdlLCBsaWJwcV9nZXR0ZXh0KGZtdCksIGFy Z3MpOworCQl2YV9lbmQoYXJncyk7CisJfSB3aGlsZSAoIWRvbmUpOworCisJYXBwZW5kUFFF eHBCdWZmZXJDaGFyKCZjb25uLT5lcnJvck1lc3NhZ2UsICdcbicpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9saWJwcS1pbnQuaAppbmRleCBjNzVlZDYzYTJjNjIuLmMyNDY0NWI0Njk2NSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTg4Nyw2ICs4ODcsOSBAQCBleHRlcm4g Y2hhciAqbGlicHFfbmdldHRleHQoY29uc3QgY2hhciAqbXNnaWQsIGNvbnN0IGNoYXIgKm1z Z2lkX3BsdXJhbCwgdW5zaWduZQogICovCiAjdW5kZWYgXwogCitleHRlcm4gdm9pZCBsaWJw cV9hcHBlbmRfZXJyb3IoUFFFeHBCdWZmZXIgZXJyb3JNZXNzYWdlLCBjb25zdCBjaGFyICpm bXQsIC4uLikgcGdfYXR0cmlidXRlX3ByaW50ZigyLCAzKTsKK2V4dGVybiB2b2lkIGxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZm10LCAuLi4p IHBnX2F0dHJpYnV0ZV9wcmludGYoMiwgMyk7CisKIC8qCiAgKiBUaGVzZSBtYWNyb3MgYXJl IG5lZWRlZCB0byBsZXQgZXJyb3ItaGFuZGxpbmcgY29kZSBiZSBwb3J0YWJsZSBiZXR3ZWVu CiAgKiBVbml4IGFuZCBXaW5kb3dzLiAgKHVnaCkKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL25scy5tayBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL25scy5tawppbmRleCA5 MjU2YjQyNmMxZDQuLjRkZjU0NGVjZWY1NiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMv bGlicHEvbmxzLm1rCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL25scy5tawpAQCAtMSw1 ICsxLDkgQEAKICMgc3JjL2ludGVyZmFjZXMvbGlicHEvbmxzLm1rCiBDQVRBTE9HX05BTUUg ICAgID0gbGlicHEKIEdFVFRFWFRfRklMRVMgICAgPSBmZS1hdXRoLmMgZmUtYXV0aC1zY3Jh bS5jIGZlLWNvbm5lY3QuYyBmZS1leGVjLmMgZmUtZ3NzYXBpLWNvbW1vbi5jIGZlLWxvYmou YyBmZS1taXNjLmMgZmUtcHJvdG9jb2wzLmMgZmUtc2VjdXJlLmMgZmUtc2VjdXJlLWNvbW1v bi5jIGZlLXNlY3VyZS1nc3NhcGkuYyBmZS1zZWN1cmUtb3BlbnNzbC5jIHdpbjMyLmMgLi4v Li4vcG9ydC90aHJlYWQuYwotR0VUVEVYVF9UUklHR0VSUyA9IGxpYnBxX2dldHRleHQgcHFJ bnRlcm5hbE5vdGljZToyCi1HRVRURVhUX0ZMQUdTICAgID0gbGlicHFfZ2V0dGV4dDoxOnBh c3MtYy1mb3JtYXQgcHFJbnRlcm5hbE5vdGljZToyOmMtZm9ybWF0CitHRVRURVhUX1RSSUdH RVJTID0gbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3I6MiBcCisgICAgICAgICAgICAgICAgICAg bGlicHFfYXBwZW5kX2Vycm9yOjIgXAorICAgICAgICAgICAgICAgICAgIGxpYnBxX2dldHRl eHQgcHFJbnRlcm5hbE5vdGljZToyCitHRVRURVhUX0ZMQUdTICAgID0gbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3I6MjpjLWZvcm1hdCBcCisgICAgICAgICAgICAgICAgICAgbGlicHFfYXBw ZW5kX2Vycm9yOjI6Yy1mb3JtYXQgXAorICAgICAgICAgICAgICAgICAgIGxpYnBxX2dldHRl eHQ6MTpwYXNzLWMtZm9ybWF0IHBxSW50ZXJuYWxOb3RpY2U6MjpjLWZvcm1hdApkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvcHFleHBidWZmZXIuYyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL3BxZXhwYnVmZmVyLmMKaW5kZXggZWI1MWU2ZDA4ODQwLi4xMGIzMmVmZGZl YmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3BxZXhwYnVmZmVyLmMKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvcHFleHBidWZmZXIuYwpAQCAtNDAsOCArNDAsNiBA QCBzdGF0aWMgY29uc3QgY2hhciBvb21fYnVmZmVyWzFdID0gIiI7CiAvKiBOZWVkIGEgY2hh ciAqIGZvciB1bmNvbnN0aWZ5KCkgY29tcGF0aWJpbGl0eSAqLwogc3RhdGljIGNvbnN0IGNo YXIgKm9vbV9idWZmZXJfcHRyID0gb29tX2J1ZmZlcjsKIAotc3RhdGljIGJvb2wgYXBwZW5k UFFFeHBCdWZmZXJWQShQUUV4cEJ1ZmZlciBzdHIsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlz dCBhcmdzKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDApOwotCiAKIC8qCiAgKiBtYXJrUFFF eHBCdWZmZXJCcm9rZW4KQEAgLTI5Miw3ICsyOTAsNyBAQCBhcHBlbmRQUUV4cEJ1ZmZlcihQ UUV4cEJ1ZmZlciBzdHIsIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiAgKiBDYXV0aW9uOiBjYWxs ZXJzIG11c3QgYmUgc3VyZSB0byBwcmVzZXJ2ZSB0aGVpciBlbnRyeS10aW1lIGVycm5vCiAg KiB3aGVuIGxvb3BpbmcsIGluIGNhc2UgdGhlIGZtdCBjb250YWlucyAiJW0iLgogICovCi1z dGF0aWMgYm9vbAorYm9vbAogYXBwZW5kUFFFeHBCdWZmZXJWQShQUUV4cEJ1ZmZlciBzdHIs IGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQogewogCXNpemVfdAkJYXZhaWw7CmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9wcWV4cGJ1ZmZlci5oIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvcHFleHBidWZmZXIuaAppbmRleCBlZmQ2NTJjODBhMzMuLjg4NDU3 ODNhOWE3YSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvcHFleHBidWZmZXIu aAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9wcWV4cGJ1ZmZlci5oCkBAIC0xNTcsNiAr MTU3LDE3IEBAIGV4dGVybiB2b2lkIHByaW50ZlBRRXhwQnVmZmVyKFBRRXhwQnVmZmVyIHN0 ciwgY29uc3QgY2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlCiAgKi8KIGV4dGVybiB2b2lk IGFwcGVuZFBRRXhwQnVmZmVyKFBRRXhwQnVmZmVyIHN0ciwgY29uc3QgY2hhciAqZm10LC4u LikgcGdfYXR0cmlidXRlX3ByaW50ZigyLCAzKTsKIAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqIGFwcGVuZFBRRXhwQnVmZmVyVkEKKyAqIFNoYXJlZCBndXRzIG9mIHByaW50 ZlBRRXhwQnVmZmVyL2FwcGVuZFBRRXhwQnVmZmVyLgorICogQXR0ZW1wdCB0byBmb3JtYXQg ZGF0YSBhbmQgYXBwZW5kIGl0IHRvIHN0ci4gIFJldHVybnMgdHJ1ZSBpZiBkb25lCisgKiAo ZWl0aGVyIHN1Y2Nlc3NmdWwgb3IgaGFyZCBmYWlsdXJlKSwgZmFsc2UgaWYgbmVlZCB0byBy ZXRyeS4KKyAqCisgKiBDYXV0aW9uOiBjYWxsZXJzIG11c3QgYmUgc3VyZSB0byBwcmVzZXJ2 ZSB0aGVpciBlbnRyeS10aW1lIGVycm5vCisgKiB3aGVuIGxvb3BpbmcsIGluIGNhc2UgdGhl IGZtdCBjb250YWlucyAiJW0iLgorICovCitleHRlcm4gYm9vbCBhcHBlbmRQUUV4cEJ1ZmZl clZBKFBRRXhwQnVmZmVyIHN0ciwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpIHBn X2F0dHJpYnV0ZV9wcmludGYoMiwgMCk7CisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKiBhcHBlbmRQUUV4cEJ1ZmZlclN0cgogICogQXBwZW5kIHRoZSBnaXZlbiBzdHJpbmcg dG8gYSBQUUV4cEJ1ZmZlciwgYWxsb2NhdGluZyBtb3JlIHNwYWNlCi0tIAoyLjM3LjMKCg== --------------JOvVXP0cB2O6nk4o50WdqbUB Content-Type: text/plain; charset=UTF-8; name="v2-0002-libpq-error-message-refactoring-part-2.patch" Content-Disposition: attachment; filename="v2-0002-libpq-error-message-refactoring-part-2.patch" Content-Transfer-Encoding: base64 RnJvbSA1ODNlZTA5YjQwODhhZWQxMjk0NzllMzFjMTE3Y2YyMWRiZGI1NmVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAxMiBPY3QgMjAyMiAwOToxMDoyMyArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgMi8yXSBsaWJwcSBlcnJvciBtZXNzYWdlIHJlZmFjdG9yaW5nLCBwYXJ0 IDIKClRoaXMgYXBwbGllcyB0aGUgbmV3IEFQSXMgdG8gdGhlIGNvZGUuCi0tLQogc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5jICAgICB8ICA4NyArKy0tCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmMgICAgICAgICAgIHwgMTI0ICsrLS0tLQogc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jICAgICAgICB8IDUyNyArKysrKysrKysrLS0t LS0tLS0tLS0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jICAgICAgICAgICB8 IDExOSArKy0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZ3NzYXBpLWNvbW1vbi5jICB8 ICAgNiArLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbG9iai5jICAgICAgICAgICB8ICA2 OSArLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2MuYyAgICAgICAgICAgfCAgMjAg Ky0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jICAgICAgfCAgNTEgKy0t CiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtY29tbW9uLmMgIHwgIDMyICstCiBz cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtZ3NzYXBpLmMgIHwgIDE4ICstCiBzcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtb3BlbnNzbC5jIHwgMTY2ICsrKy0tLS0KIHNy Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS5jICAgICAgICAgfCAgMTYgKy0KIDEyIGZp bGVzIGNoYW5nZWQsIDQ2MSBpbnNlcnRpb25zKCspLCA3NzQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5jIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5jCmluZGV4IDM1Y2ZkOTk4N2RlMi4uZTcx NjI2NTgwYTcxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNj cmFtLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5jCkBAIC0y MTgsMTQgKzIxOCwxMiBAQCBzY3JhbV9leGNoYW5nZSh2b2lkICpvcGFxLCBjaGFyICppbnB1 dCwgaW50IGlucHV0bGVuLAogCXsKIAkJaWYgKGlucHV0bGVuID09IDApCiAJCXsKLQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJw cV9nZXR0ZXh0KCJtYWxmb3JtZWQgU0NSQU0gbWVzc2FnZSAoZW1wdHkgbWVzc2FnZSlcbiIp KTsKKwkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJtYWxmb3JtZWQgU0NSQU0g bWVzc2FnZSAoZW1wdHkgbWVzc2FnZSkiKTsKIAkJCWdvdG8gZXJyb3I7CiAJCX0KIAkJaWYg KGlucHV0bGVuICE9IHN0cmxlbihpbnB1dCkpCiAJCXsKLQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJtYWxm b3JtZWQgU0NSQU0gbWVzc2FnZSAobGVuZ3RoIG1pc21hdGNoKVxuIikpOworCQkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm1hbGZvcm1lZCBTQ1JBTSBtZXNzYWdlIChsZW5n dGggbWlzbWF0Y2gpIik7CiAJCQlnb3RvIGVycm9yOwogCQl9CiAJfQpAQCAtMjY4LDE1ICsy NjYsMTMgQEAgc2NyYW1fZXhjaGFuZ2Uodm9pZCAqb3BhcSwgY2hhciAqaW5wdXQsIGludCBp bnB1dGxlbiwKIAkJCSAqLwogCQkJaWYgKCF2ZXJpZnlfc2VydmVyX3NpZ25hdHVyZShzdGF0 ZSwgc3VjY2VzcywgJmVycnN0cikpCiAJCQl7Ci0JCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNv bm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3Qg dmVyaWZ5IHNlcnZlciBzaWduYXR1cmU6ICVzXG4iKSwgZXJyc3RyKTsKKwkJCQlsaWJwcV9h cHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IHZlcmlmeSBzZXJ2ZXIgc2lnbmF0 dXJlOiAlcyIsIGVycnN0cik7CiAJCQkJZ290byBlcnJvcjsKIAkJCX0KIAogCQkJaWYgKCEq c3VjY2VzcykKIAkJCXsKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JN ZXNzYWdlLAotCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoImluY29ycmVjdCBzZXJ2ZXIgc2ln bmF0dXJlXG4iKSk7CisJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImluY29y cmVjdCBzZXJ2ZXIgc2lnbmF0dXJlIik7CiAJCQl9CiAJCQkqZG9uZSA9IHRydWU7CiAJCQlz dGF0ZS0+c3RhdGUgPSBGRV9TQ1JBTV9GSU5JU0hFRDsKQEAgLTI4NCw4ICsyODAsNyBAQCBz Y3JhbV9leGNoYW5nZSh2b2lkICpvcGFxLCBjaGFyICppbnB1dCwgaW50IGlucHV0bGVuLAog CiAJCWRlZmF1bHQ6CiAJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCi0JCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkgbGlicHFfZ2V0dGV4 dCgiaW52YWxpZCBTQ1JBTSBleGNoYW5nZSBzdGF0ZVxuIikpOworCQkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgImludmFsaWQgU0NSQU0gZXhjaGFuZ2Ugc3RhdGUiKTsKIAkJ CWdvdG8gZXJyb3I7CiAJfQogCXJldHVybjsKQEAgLTMxMSwxOCArMzA2LDE4IEBAIHJlYWRf YXR0cl92YWx1ZShjaGFyICoqaW5wdXQsIGNoYXIgYXR0ciwgUFFFeHBCdWZmZXIgZXJyb3JN ZXNzYWdlKQogCiAJaWYgKCpiZWdpbiAhPSBhdHRyKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZm ZXIoZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJtYWxmb3JtZWQgU0NS QU0gbWVzc2FnZSAoYXR0cmlidXRlIFwiJWNcIiBleHBlY3RlZClcbiIpLAotCQkJCQkJICBh dHRyKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwKKwkJCQkJCSAgICJt YWxmb3JtZWQgU0NSQU0gbWVzc2FnZSAoYXR0cmlidXRlIFwiJWNcIiBleHBlY3RlZCkiLAor CQkJCQkJICAgYXR0cik7CiAJCXJldHVybiBOVUxMOwogCX0KIAliZWdpbisrOwogCiAJaWYg KCpiZWdpbiAhPSAnPScpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlcihlcnJvck1lc3NhZ2Us Ci0JCQkJCQkgIGxpYnBxX2dldHRleHQoIm1hbGZvcm1lZCBTQ1JBTSBtZXNzYWdlIChleHBl Y3RlZCBjaGFyYWN0ZXIgXCI9XCIgZm9yIGF0dHJpYnV0ZSBcIiVjXCIpXG4iKSwKLQkJCQkJ CSAgYXR0cik7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsCisJCQkJCQkg ICAibWFsZm9ybWVkIFNDUkFNIG1lc3NhZ2UgKGV4cGVjdGVkIGNoYXJhY3RlciBcIj1cIiBm b3IgYXR0cmlidXRlIFwiJWNcIikiLAorCQkJCQkJICAgYXR0cik7CiAJCXJldHVybiBOVUxM OwogCX0KIAliZWdpbisrOwpAQCAtMzYxLDggKzM1Niw3IEBAIGJ1aWxkX2NsaWVudF9maXJz dF9tZXNzYWdlKGZlX3NjcmFtX3N0YXRlICpzdGF0ZSkKIAkgKi8KIAlpZiAoIXBnX3N0cm9u Z19yYW5kb20ocmF3X25vbmNlLCBTQ1JBTV9SQVdfTk9OQ0VfTEVOKSkKIAl7Ci0JCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dl dHRleHQoImNvdWxkIG5vdCBnZW5lcmF0ZSBub25jZVxuIikpOworCQlsaWJwcV9hcHBlbmRf Y29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IGdlbmVyYXRlIG5vbmNlIik7CiAJCXJldHVy biBOVUxMOwogCX0KIApAQCAtMzcxLDE2ICszNjUsMTQgQEAgYnVpbGRfY2xpZW50X2ZpcnN0 X21lc3NhZ2UoZmVfc2NyYW1fc3RhdGUgKnN0YXRlKQogCXN0YXRlLT5jbGllbnRfbm9uY2Ug PSBtYWxsb2MoZW5jb2RlZF9sZW4gKyAxKTsKIAlpZiAoc3RhdGUtPmNsaWVudF9ub25jZSA9 PSBOVUxMKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCQlyZXR1cm4g TlVMTDsKIAl9CiAJZW5jb2RlZF9sZW4gPSBwZ19iNjRfZW5jb2RlKHJhd19ub25jZSwgU0NS QU1fUkFXX05PTkNFX0xFTiwKIAkJCQkJCQkJc3RhdGUtPmNsaWVudF9ub25jZSwgZW5jb2Rl ZF9sZW4pOwogCWlmIChlbmNvZGVkX2xlbiA8IDApCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjb3Vs ZCBub3QgZW5jb2RlIG5vbmNlXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJjb3VsZCBub3QgZW5jb2RlIG5vbmNlIik7CiAJCXJldHVybiBOVUxMOwogCX0KIAlz dGF0ZS0+Y2xpZW50X25vbmNlW2VuY29kZWRfbGVuXSA9ICdcMCc7CkBAIC00NDYsOCArNDM4 LDcgQEAgYnVpbGRfY2xpZW50X2ZpcnN0X21lc3NhZ2UoZmVfc2NyYW1fc3RhdGUgKnN0YXRl KQogCiBvb21fZXJyb3I6CiAJdGVybVBRRXhwQnVmZmVyKCZidWYpOwotCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgbGlicHFfZ2V0dGV4dCgi b3V0IG9mIG1lbW9yeVxuIikpOworCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJv dXQgb2YgbWVtb3J5Iik7CiAJcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTU2OSw5ICs1NjAsNyBA QCBidWlsZF9jbGllbnRfZmluYWxfbWVzc2FnZShmZV9zY3JhbV9zdGF0ZSAqc3RhdGUpCiAJ CQkJCQkJCWNsaWVudF9wcm9vZiwgJmVycnN0cikpCiAJewogCQl0ZXJtUFFFeHBCdWZmZXIo JmJ1Zik7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJ CQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBjYWxjdWxhdGUgY2xpZW50IHByb29mOiAl c1xuIiksCi0JCQkJCQkgIGVycnN0cik7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJjb3VsZCBub3QgY2FsY3VsYXRlIGNsaWVudCBwcm9vZjogJXMiLCBlcnJzdHIpOwog CQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTU4Niw4ICs1NzUsNyBAQCBidWlsZF9jbGllbnRf ZmluYWxfbWVzc2FnZShmZV9zY3JhbV9zdGF0ZSAqc3RhdGUpCiAJaWYgKGVuY29kZWRfbGVu IDwgMCkKIAl7CiAJCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKLQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiY291 bGQgbm90IGVuY29kZSBjbGllbnQgcHJvb2ZcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgImNvdWxkIG5vdCBlbmNvZGUgY2xpZW50IHByb29mIik7CiAJCXJldHVy biBOVUxMOwogCX0KIAlidWYubGVuICs9IGVuY29kZWRfbGVuOwpAQCAtNjAyLDggKzU5MCw3 IEBAIGJ1aWxkX2NsaWVudF9maW5hbF9tZXNzYWdlKGZlX3NjcmFtX3N0YXRlICpzdGF0ZSkK IAogb29tX2Vycm9yOgogCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKLQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJIGxpYnBxX2dldHRleHQoIm91 dCBvZiBtZW1vcnlcbiIpKTsKKwlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAib3V0 IG9mIG1lbW9yeSIpOwogCXJldHVybiBOVUxMOwogfQogCkBAIC02MjMsOCArNjEwLDcgQEAg cmVhZF9zZXJ2ZXJfZmlyc3RfbWVzc2FnZShmZV9zY3JhbV9zdGF0ZSAqc3RhdGUsIGNoYXIg KmlucHV0KQogCXN0YXRlLT5zZXJ2ZXJfZmlyc3RfbWVzc2FnZSA9IHN0cmR1cChpbnB1dCk7 CiAJaWYgKHN0YXRlLT5zZXJ2ZXJfZmlyc3RfbWVzc2FnZSA9PSBOVUxMKQogCXsKLQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFf Z2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC02 NDEsMTYgKzYyNywxNCBAQCByZWFkX3NlcnZlcl9maXJzdF9tZXNzYWdlKGZlX3NjcmFtX3N0 YXRlICpzdGF0ZSwgY2hhciAqaW5wdXQpCiAJaWYgKHN0cmxlbihub25jZSkgPCBzdHJsZW4o c3RhdGUtPmNsaWVudF9ub25jZSkgfHwKIAkJbWVtY21wKG5vbmNlLCBzdGF0ZS0+Y2xpZW50 X25vbmNlLCBzdHJsZW4oc3RhdGUtPmNsaWVudF9ub25jZSkpICE9IDApCiAJewotCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9n ZXR0ZXh0KCJpbnZhbGlkIFNDUkFNIHJlc3BvbnNlIChub25jZSBtaXNtYXRjaClcbiIpKTsK KwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFsaWQgU0NSQU0gcmVzcG9u c2UgKG5vbmNlIG1pc21hdGNoKSIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJc3RhdGUt Pm5vbmNlID0gc3RyZHVwKG5vbmNlKTsKIAlpZiAoc3RhdGUtPm5vbmNlID09IE5VTEwpCiAJ ewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJ CSBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCWxpYnBxX2FwcGVuZF9j b25uX2Vycm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5Iik7CiAJCXJldHVybiBmYWxzZTsKIAl9 CiAKQEAgLTY2NCw4ICs2NDgsNyBAQCByZWFkX3NlcnZlcl9maXJzdF9tZXNzYWdlKGZlX3Nj cmFtX3N0YXRlICpzdGF0ZSwgY2hhciAqaW5wdXQpCiAJc3RhdGUtPnNhbHQgPSBtYWxsb2Mo ZGVjb2RlZF9zYWx0X2xlbik7CiAJaWYgKHN0YXRlLT5zYWx0ID09IE5VTEwpCiAJewotCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJw cV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5Iik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAJc3Rh dGUtPnNhbHRsZW4gPSBwZ19iNjRfZGVjb2RlKGVuY29kZWRfc2FsdCwKQEAgLTY3NCw4ICs2 NTcsNyBAQCByZWFkX3NlcnZlcl9maXJzdF9tZXNzYWdlKGZlX3NjcmFtX3N0YXRlICpzdGF0 ZSwgY2hhciAqaW5wdXQpCiAJCQkJCQkJCSAgIGRlY29kZWRfc2FsdF9sZW4pOwogCWlmIChz dGF0ZS0+c2FsdGxlbiA8IDApCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJtYWxmb3JtZWQgU0NSQU0g bWVzc2FnZSAoaW52YWxpZCBzYWx0KVxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAibWFsZm9ybWVkIFNDUkFNIG1lc3NhZ2UgKGludmFsaWQgc2FsdCkiKTsKIAkJ cmV0dXJuIGZhbHNlOwogCX0KIApAQCAtNjg4LDE0ICs2NzAsMTIgQEAgcmVhZF9zZXJ2ZXJf Zmlyc3RfbWVzc2FnZShmZV9zY3JhbV9zdGF0ZSAqc3RhdGUsIGNoYXIgKmlucHV0KQogCXN0 YXRlLT5pdGVyYXRpb25zID0gc3RydG9sKGl0ZXJhdGlvbnNfc3RyLCAmZW5kcHRyLCAxMCk7 CiAJaWYgKCplbmRwdHIgIT0gJ1wwJyB8fCBzdGF0ZS0+aXRlcmF0aW9ucyA8IDEpCiAJewot CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJtYWxmb3JtZWQgU0NSQU0gbWVzc2FnZSAoaW52YWxpZCBpdGVyYXRp b24gY291bnQpXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJtYWxm b3JtZWQgU0NSQU0gbWVzc2FnZSAoaW52YWxpZCBpdGVyYXRpb24gY291bnQpIik7CiAJCXJl dHVybiBmYWxzZTsKIAl9CiAKIAlpZiAoKmlucHV0ICE9ICdcMCcpCi0JCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQo Im1hbGZvcm1lZCBTQ1JBTSBtZXNzYWdlIChnYXJiYWdlIGF0IGVuZCBvZiBzZXJ2ZXItZmly c3QtbWVzc2FnZSlcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm1h bGZvcm1lZCBTQ1JBTSBtZXNzYWdlIChnYXJiYWdlIGF0IGVuZCBvZiBzZXJ2ZXItZmlyc3Qt bWVzc2FnZSkiKTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtNzE0LDggKzY5NCw3IEBAIHJl YWRfc2VydmVyX2ZpbmFsX21lc3NhZ2UoZmVfc2NyYW1fc3RhdGUgKnN0YXRlLCBjaGFyICpp bnB1dCkKIAlzdGF0ZS0+c2VydmVyX2ZpbmFsX21lc3NhZ2UgPSBzdHJkdXAoaW5wdXQpOwog CWlmICghc3RhdGUtPnNlcnZlcl9maW5hbF9tZXNzYWdlKQogCXsKLQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgi b3V0IG9mIG1lbW9yeVxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAi b3V0IG9mIG1lbW9yeSIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC03MzAsOSArNzA5 LDggQEAgcmVhZF9zZXJ2ZXJfZmluYWxfbWVzc2FnZShmZV9zY3JhbV9zdGF0ZSAqc3RhdGUs IGNoYXIgKmlucHV0KQogCQkJLyogcmVhZF9hdHRyX3ZhbHVlKCkgaGFzIGFwcGVuZGVkIGFu IGVycm9yIG1lc3NhZ2UgKi8KIAkJCXJldHVybiBmYWxzZTsKIAkJfQotCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJl cnJvciByZWNlaXZlZCBmcm9tIHNlcnZlciBpbiBTQ1JBTSBleGNoYW5nZTogJXNcbiIpLAot CQkJCQkJICBlcnJtc2cpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZXJy b3IgcmVjZWl2ZWQgZnJvbSBzZXJ2ZXIgaW4gU0NSQU0gZXhjaGFuZ2U6ICVzIiwKKwkJCQkJ CSAgIGVycm1zZyk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTc0NiwxNSArNzI0LDEz IEBAIHJlYWRfc2VydmVyX2ZpbmFsX21lc3NhZ2UoZmVfc2NyYW1fc3RhdGUgKnN0YXRlLCBj aGFyICppbnB1dCkKIAl9CiAKIAlpZiAoKmlucHV0ICE9ICdcMCcpCi0JCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQo Im1hbGZvcm1lZCBTQ1JBTSBtZXNzYWdlIChnYXJiYWdlIGF0IGVuZCBvZiBzZXJ2ZXItZmlu YWwtbWVzc2FnZSlcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm1h bGZvcm1lZCBTQ1JBTSBtZXNzYWdlIChnYXJiYWdlIGF0IGVuZCBvZiBzZXJ2ZXItZmluYWwt bWVzc2FnZSkiKTsKIAogCXNlcnZlcl9zaWduYXR1cmVfbGVuID0gcGdfYjY0X2RlY19sZW4o c3RybGVuKGVuY29kZWRfc2VydmVyX3NpZ25hdHVyZSkpOwogCWRlY29kZWRfc2VydmVyX3Np Z25hdHVyZSA9IG1hbGxvYyhzZXJ2ZXJfc2lnbmF0dXJlX2xlbik7CiAJaWYgKCFkZWNvZGVk X3NlcnZlcl9zaWduYXR1cmUpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4i KSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5Iik7 CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTc2NSw4ICs3NDEsNyBAQCByZWFkX3NlcnZl cl9maW5hbF9tZXNzYWdlKGZlX3NjcmFtX3N0YXRlICpzdGF0ZSwgY2hhciAqaW5wdXQpCiAJ aWYgKHNlcnZlcl9zaWduYXR1cmVfbGVuICE9IFNDUkFNX0tFWV9MRU4pCiAJewogCQlmcmVl KGRlY29kZWRfc2VydmVyX3NpZ25hdHVyZSk7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoIm1hbGZvcm1lZCBT Q1JBTSBtZXNzYWdlIChpbnZhbGlkIHNlcnZlciBzaWduYXR1cmUpXG4iKSk7CisJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJtYWxmb3JtZWQgU0NSQU0gbWVzc2FnZSAoaW52 YWxpZCBzZXJ2ZXIgc2lnbmF0dXJlKSIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCW1lbWNw eShzdGF0ZS0+U2VydmVyU2lnbmF0dXJlLCBkZWNvZGVkX3NlcnZlcl9zaWduYXR1cmUsIFND UkFNX0tFWV9MRU4pOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0 aC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC5jCmluZGV4IDQ5YTFjNjI2ZjY0 My4uNGE2YzM1OGJiNjVkIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1h dXRoLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC5jCkBAIC03Miw4ICs3 Miw3IEBAIHBnX0dTU19jb250aW51ZShQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuKQog CQlnaW5idWYudmFsdWUgPSBtYWxsb2MocGF5bG9hZGxlbik7CiAJCWlmICghZ2luYnVmLnZh bHVlKQogCQl7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAot CQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIEdTU0FQ SSBidWZmZXIgKCVkKVxuIiksCisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAi b3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIEdTU0FQSSBidWZmZXIgKCVkKSIsCiAJCQkJCQkJ ICBwYXlsb2FkbGVuKTsKIAkJCXJldHVybiBTVEFUVVNfRVJST1I7CiAJCX0KQEAgLTE1Mywx NSArMTUyLDEzIEBAIHBnX0dTU19zdGFydHVwKFBHY29ubiAqY29ubiwgaW50IHBheWxvYWRs ZW4pCiAKIAlpZiAoIShob3N0ICYmIGhvc3RbMF0gIT0gJ1wwJykpCiAJewotCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0 ZXh0KCJob3N0IG5hbWUgbXVzdCBiZSBzcGVjaWZpZWRcbiIpKTsKKwkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgImhvc3QgbmFtZSBtdXN0IGJlIHNwZWNpZmllZCIpOwogCQly ZXR1cm4gU1RBVFVTX0VSUk9SOwogCX0KIAogCWlmIChjb25uLT5nY3R4KQogCXsKLQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFf Z2V0dGV4dCgiZHVwbGljYXRlIEdTUyBhdXRoZW50aWNhdGlvbiByZXF1ZXN0XG4iKSk7CisJ CWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJkdXBsaWNhdGUgR1NTIGF1dGhlbnRp Y2F0aW9uIHJlcXVlc3QiKTsKIAkJcmV0dXJuIFNUQVRVU19FUlJPUjsKIAl9CiAKQEAgLTIy NSw4ICsyMjIsNyBAQCBwZ19TU1BJX2NvbnRpbnVlKFBHY29ubiAqY29ubiwgaW50IHBheWxv YWRsZW4pCiAJCWlucHV0YnVmID0gbWFsbG9jKHBheWxvYWRsZW4pOwogCQlpZiAoIWlucHV0 YnVmKQogCQl7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAot CQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIFNTUEkg YnVmZmVyICglZClcbiIpLAorCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91 dCBvZiBtZW1vcnkgYWxsb2NhdGluZyBTU1BJIGJ1ZmZlciAoJWQpIiwKIAkJCQkJCQkgIHBh eWxvYWRsZW4pOwogCQkJcmV0dXJuIFNUQVRVU19FUlJPUjsKIAkJfQpAQCAtMjg0LDggKzI4 MCw3IEBAIHBnX1NTUElfY29udGludWUoUEdjb25uICpjb25uLCBpbnQgcGF5bG9hZGxlbikK IAkJY29ubi0+c3NwaWN0eCA9IG1hbGxvYyhzaXplb2YoQ3R4dEhhbmRsZSkpOwogCQlpZiAo Y29ubi0+c3NwaWN0eCA9PSBOVUxMKQogCQl7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1l bW9yeVxuIikpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBt ZW1vcnkiKTsKIAkJCXJldHVybiBTVEFUVVNfRVJST1I7CiAJCX0KIAkJbWVtY3B5KGNvbm4t PnNzcGljdHgsICZuZXdDb250ZXh0LCBzaXplb2YoQ3R4dEhhbmRsZSkpOwpAQCAtMzQ1LDgg KzM0MCw3IEBAIHBnX1NTUElfc3RhcnR1cChQR2Nvbm4gKmNvbm4sIGludCB1c2VfbmVnb3Rp YXRlLCBpbnQgcGF5bG9hZGxlbikKIAogCWlmIChjb25uLT5zc3BpY3R4KQogCXsKLQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFf Z2V0dGV4dCgiZHVwbGljYXRlIFNTUEkgYXV0aGVudGljYXRpb24gcmVxdWVzdFxuIikpOwor CQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZHVwbGljYXRlIFNTUEkgYXV0aGVu dGljYXRpb24gcmVxdWVzdCIpOwogCQlyZXR1cm4gU1RBVFVTX0VSUk9SOwogCX0KIApAQCAt MzU2LDggKzM1MCw3IEBAIHBnX1NTUElfc3RhcnR1cChQR2Nvbm4gKmNvbm4sIGludCB1c2Vf bmVnb3RpYXRlLCBpbnQgcGF5bG9hZGxlbikKIAljb25uLT5zc3BpY3JlZCA9IG1hbGxvYyhz aXplb2YoQ3JlZEhhbmRsZSkpOwogCWlmIChjb25uLT5zc3BpY3JlZCA9PSBOVUxMKQogCXsK LQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkg bGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQlsaWJwcV9hcHBlbmRfY29u bl9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCQlyZXR1cm4gU1RBVFVTX0VSUk9S OwogCX0KIApAQCAtMzg1LDE1ICszNzgsMTMgQEAgcGdfU1NQSV9zdGFydHVwKFBHY29ubiAq Y29ubiwgaW50IHVzZV9uZWdvdGlhdGUsIGludCBwYXlsb2FkbGVuKQogCSAqLwogCWlmICgh KGhvc3QgJiYgaG9zdFswXSAhPSAnXDAnKSkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoImhvc3QgbmFt ZSBtdXN0IGJlIHNwZWNpZmllZFxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAiaG9zdCBuYW1lIG11c3QgYmUgc3BlY2lmaWVkIik7CiAJCXJldHVybiBTVEFUVVNf RVJST1I7CiAJfQogCWNvbm4tPnNzcGl0YXJnZXQgPSBtYWxsb2Moc3RybGVuKGNvbm4tPmty YnNydm5hbWUpICsgc3RybGVuKGhvc3QpICsgMik7CiAJaWYgKCFjb25uLT5zc3BpdGFyZ2V0 KQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCQlyZXR1cm4gU1RBVFVT X0VSUk9SOwogCX0KIAlzcHJpbnRmKGNvbm4tPnNzcGl0YXJnZXQsICIlcy8lcyIsIGNvbm4t PmtyYnNydm5hbWUsIGhvc3QpOwpAQCAtNDI3LDE1ICs0MTgsMTMgQEAgcGdfU0FTTF9pbml0 KFBHY29ubiAqY29ubiwgaW50IHBheWxvYWRsZW4pCiAJaWYgKGNvbm4tPmNoYW5uZWxfYmlu ZGluZ1swXSA9PSAncicgJiYJLyogcmVxdWlyZSAqLwogCQkhY29ubi0+c3NsX2luX3VzZSkK IAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJ CQkJIGxpYnBxX2dldHRleHQoImNoYW5uZWwgYmluZGluZyByZXF1aXJlZCwgYnV0IFNTTCBu b3QgaW4gdXNlXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjaGFu bmVsIGJpbmRpbmcgcmVxdWlyZWQsIGJ1dCBTU0wgbm90IGluIHVzZSIpOwogCQlnb3RvIGVy cm9yOwogCX0KIAogCWlmIChjb25uLT5zYXNsX3N0YXRlKQogCXsKLQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgi ZHVwbGljYXRlIFNBU0wgYXV0aGVudGljYXRpb24gcmVxdWVzdFxuIikpOworCQlsaWJwcV9h cHBlbmRfY29ubl9lcnJvcihjb25uLCAiZHVwbGljYXRlIFNBU0wgYXV0aGVudGljYXRpb24g cmVxdWVzdCIpOwogCQlnb3RvIGVycm9yOwogCX0KIApAQCAtNDkzLDggKzQ4Miw3IEBAIHBn X1NBU0xfaW5pdChQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuKQogCQkJCSAqLwogCQkJ CWlmIChjb25uLT5jaGFubmVsX2JpbmRpbmdbMF0gPT0gJ3InKQkvKiByZXF1aXJlICovCiAJ CQkJewotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAot CQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjaGFubmVsIGJpbmRpbmcgaXMgcmVxdWlyZWQs IGJ1dCBjbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBpdFxuIikpOworCQkJCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLCAiY2hhbm5lbCBiaW5kaW5nIGlzIHJlcXVpcmVkLCBidXQg Y2xpZW50IGRvZXMgbm90IHN1cHBvcnQgaXQiKTsKIAkJCQkJZ290byBlcnJvcjsKIAkJCQl9 CiAjZW5kaWYKQEAgLTUxMCw4ICs0OTgsNyBAQCBwZ19TQVNMX2luaXQoUEdjb25uICpjb25u LCBpbnQgcGF5bG9hZGxlbikKIAkJCQkgKiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgc3VwcG9y dGVkIGl0LiBUaGUgU0NSQU0gZXhjaGFuZ2UKIAkJCQkgKiBjaGVja3MgZm9yIHRoYXQsIHRv IHByZXZlbnQgZG93bmdyYWRlIGF0dGFja3MuCiAJCQkJICovCi0JCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0 KCJzZXJ2ZXIgb2ZmZXJlZCBTQ1JBTS1TSEEtMjU2LVBMVVMgYXV0aGVudGljYXRpb24gb3Zl ciBhIG5vbi1TU0wgY29ubmVjdGlvblxuIikpOworCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sICJzZXJ2ZXIgb2ZmZXJlZCBTQ1JBTS1TSEEtMjU2LVBMVVMgYXV0aGVudGlj YXRpb24gb3ZlciBhIG5vbi1TU0wgY29ubmVjdGlvbiIpOwogCQkJCWdvdG8gZXJyb3I7CiAJ CQl9CiAJCX0KQEAgLTUyNSwxNiArNTEyLDE0IEBAIHBnX1NBU0xfaW5pdChQR2Nvbm4gKmNv bm4sIGludCBwYXlsb2FkbGVuKQogCiAJaWYgKCFzZWxlY3RlZF9tZWNoYW5pc20pCiAJewot CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJub25lIG9mIHRoZSBzZXJ2ZXIncyBTQVNMIGF1dGhlbnRpY2F0aW9u IG1lY2hhbmlzbXMgYXJlIHN1cHBvcnRlZFxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAibm9uZSBvZiB0aGUgc2VydmVyJ3MgU0FTTCBhdXRoZW50aWNhdGlvbiBt ZWNoYW5pc21zIGFyZSBzdXBwb3J0ZWQiKTsKIAkJZ290byBlcnJvcjsKIAl9CiAKIAlpZiAo Y29ubi0+Y2hhbm5lbF9iaW5kaW5nWzBdID09ICdyJyAmJgkvKiByZXF1aXJlICovCiAJCXN0 cmNtcChzZWxlY3RlZF9tZWNoYW5pc20sIFNDUkFNX1NIQV8yNTZfUExVU19OQU1FKSAhPSAw KQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCQkgbGlicHFfZ2V0dGV4dCgiY2hhbm5lbCBiaW5kaW5nIGlzIHJlcXVpcmVkLCBidXQg c2VydmVyIGRpZCBub3Qgb2ZmZXIgYW4gYXV0aGVudGljYXRpb24gbWV0aG9kIHRoYXQgc3Vw cG9ydHMgY2hhbm5lbCBiaW5kaW5nXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJjaGFubmVsIGJpbmRpbmcgaXMgcmVxdWlyZWQsIGJ1dCBzZXJ2ZXIgZGlkIG5v dCBvZmZlciBhbiBhdXRoZW50aWNhdGlvbiBtZXRob2QgdGhhdCBzdXBwb3J0cyBjaGFubmVs IGJpbmRpbmciKTsKIAkJZ290byBlcnJvcjsKIAl9CiAKQEAgLTYxNCw4ICs1OTksNyBAQCBw Z19TQVNMX2luaXQoUEdjb25uICpjb25uLCBpbnQgcGF5bG9hZGxlbikKIG9vbV9lcnJvcjoK IAl0ZXJtUFFFeHBCdWZmZXIoJm1lY2hhbmlzbV9idWYpOwogCWZyZWUoaW5pdGlhbHJlc3Bv bnNlKTsKLQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJ CQkJIGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnlcbiIpKTsKKwlsaWJwcV9hcHBlbmRf Y29ubl9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCXJldHVybiBTVEFUVVNfRVJS T1I7CiB9CiAKQEAgLTYzOCw4ICs2MjIsNyBAQCBwZ19TQVNMX2NvbnRpbnVlKFBHY29ubiAq Y29ubiwgaW50IHBheWxvYWRsZW4sIGJvb2wgZmluYWwpCiAJY2hhbGxlbmdlID0gbWFsbG9j KHBheWxvYWRsZW4gKyAxKTsKIAlpZiAoIWNoYWxsZW5nZSkKIAl7Ci0JCWFwcGVuZFBRRXhw QnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoIm91 dCBvZiBtZW1vcnkgYWxsb2NhdGluZyBTQVNMIGJ1ZmZlciAoJWQpXG4iKSwKKwkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBtZW1vcnkgYWxsb2NhdGluZyBTQVNM IGJ1ZmZlciAoJWQpIiwKIAkJCQkJCSAgcGF5bG9hZGxlbik7CiAJCXJldHVybiBTVEFUVVNf RVJST1I7CiAJfQpAQCAtNjYzLDggKzY0Niw3IEBAIHBnX1NBU0xfY29udGludWUoUEdjb25u ICpjb25uLCBpbnQgcGF5bG9hZGxlbiwgYm9vbCBmaW5hbCkKIAkJaWYgKG91dHB1dGxlbiAh PSAwKQogCQkJZnJlZShvdXRwdXQpOwogCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25u LT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoIkF1dGhlbnRpY2F0aW9u U0FTTEZpbmFsIHJlY2VpdmVkIGZyb20gc2VydmVyLCBidXQgU0FTTCBhdXRoZW50aWNhdGlv biB3YXMgbm90IGNvbXBsZXRlZFxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAiQXV0aGVudGljYXRpb25TQVNMRmluYWwgcmVjZWl2ZWQgZnJvbSBzZXJ2ZXIsIGJ1 dCBTQVNMIGF1dGhlbnRpY2F0aW9uIHdhcyBub3QgY29tcGxldGVkIik7CiAJCXJldHVybiBT VEFUVVNfRVJST1I7CiAJfQogCkBAIC02NzQsOCArNjU2LDcgQEAgcGdfU0FTTF9jb250aW51 ZShQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuLCBib29sIGZpbmFsKQogCSAqLwogCWlm IChvdXRwdXQgPT0gTlVMTCAmJiAhZG9uZSkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoIm5vIGNsaWVu dCByZXNwb25zZSBmb3VuZCBhZnRlciBTQVNMIGV4Y2hhbmdlIHN1Y2Nlc3NcbiIpKTsKKwkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm5vIGNsaWVudCByZXNwb25zZSBmb3Vu ZCBhZnRlciBTQVNMIGV4Y2hhbmdlIHN1Y2Nlc3MiKTsKIAkJcmV0dXJuIFNUQVRVU19FUlJP UjsKIAl9CiAKQEAgLTc1Niw4ICs3MzcsNyBAQCBwZ19sb2NhbF9zZW5kYXV0aChQR2Nvbm4g KmNvbm4pCiAJfQogCXJldHVybiBTVEFUVVNfT0s7CiAjZWxzZQotCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgbGlicHFfZ2V0dGV4dCgiU0NN X0NSRUQgYXV0aGVudGljYXRpb24gbWV0aG9kIG5vdCBzdXBwb3J0ZWRcbiIpKTsKKwlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiU0NNX0NSRUQgYXV0aGVudGljYXRpb24gbWV0 aG9kIG5vdCBzdXBwb3J0ZWQiKTsKIAlyZXR1cm4gU1RBVFVTX0VSUk9SOwogI2VuZGlmCiB9 CkBAIC03OTAsOCArNzcwLDcgQEAgcGdfcGFzc3dvcmRfc2VuZGF1dGgoUEdjb25uICpjb25u LCBjb25zdCBjaGFyICpwYXNzd29yZCwgQXV0aFJlcXVlc3QgYXJlcSkKIAkJCQljcnlwdF9w d2QgPSBtYWxsb2MoMiAqIChNRDVfUEFTU1dEX0xFTiArIDEpKTsKIAkJCQlpZiAoIWNyeXB0 X3B3ZCkKIAkJCQl7Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1l c3NhZ2UsCi0JCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnlcbiIpKTsK KwkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBtZW1vcnkiKTsK IAkJCQkJcmV0dXJuIFNUQVRVU19FUlJPUjsKIAkJCQl9CiAKQEAgLTgwMCwxOCArNzc5LDE0 IEBAIHBnX3Bhc3N3b3JkX3NlbmRhdXRoKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcGFz c3dvcmQsIEF1dGhSZXF1ZXN0IGFyZXEpCiAJCQkJCQkJCQlzdHJsZW4oY29ubi0+cGd1c2Vy KSwgY3J5cHRfcHdkMiwKIAkJCQkJCQkJCSZlcnJzdHIpKQogCQkJCXsKLQkJCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSAgbGlicHFfZ2V0 dGV4dCgiY291bGQgbm90IGVuY3J5cHQgcGFzc3dvcmQ6ICVzXG4iKSwKLQkJCQkJCQkJCSAg ZXJyc3RyKTsKKwkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5v dCBlbmNyeXB0IHBhc3N3b3JkOiAlcyIsIGVycnN0cik7CiAJCQkJCWZyZWUoY3J5cHRfcHdk KTsKIAkJCQkJcmV0dXJuIFNUQVRVU19FUlJPUjsKIAkJCQl9CiAJCQkJaWYgKCFwZ19tZDVf ZW5jcnlwdChjcnlwdF9wd2QyICsgc3RybGVuKCJtZDUiKSwgbWQ1U2FsdCwKIAkJCQkJCQkJ CTQsIGNyeXB0X3B3ZCwgJmVycnN0cikpCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZl cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3Vs ZCBub3QgZW5jcnlwdCBwYXNzd29yZDogJXNcbiIpLAotCQkJCQkJCQkJICBlcnJzdHIpOwor CQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IGVuY3J5cHQg cGFzc3dvcmQ6ICVzIiwgZXJyc3RyKTsKIAkJCQkJZnJlZShjcnlwdF9wd2QpOwogCQkJCQly ZXR1cm4gU1RBVFVTX0VSUk9SOwogCQkJCX0KQEAgLTg1OCwxNCArODMzLDEyIEBAIGNoZWNr X2V4cGVjdGVkX2FyZXEoQXV0aFJlcXVlc3QgYXJlcSwgUEdjb25uICpjb25uKQogCQkJY2Fz ZSBBVVRIX1JFUV9PSzoKIAkJCQlpZiAoIWNvbm4tPnNhc2wgfHwgIWNvbm4tPnNhc2wtPmNo YW5uZWxfYm91bmQoY29ubi0+c2FzbF9zdGF0ZSkpCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCSBsaWJwcV9nZXR0 ZXh0KCJjaGFubmVsIGJpbmRpbmcgcmVxdWlyZWQsIGJ1dCBzZXJ2ZXIgYXV0aGVudGljYXRl ZCBjbGllbnQgd2l0aG91dCBjaGFubmVsIGJpbmRpbmdcbiIpKTsKKwkJCQkJbGlicHFfYXBw ZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNoYW5uZWwgYmluZGluZyByZXF1aXJlZCwgYnV0IHNl cnZlciBhdXRoZW50aWNhdGVkIGNsaWVudCB3aXRob3V0IGNoYW5uZWwgYmluZGluZyIpOwog CQkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0Ogot CQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJ CQkgbGlicHFfZ2V0dGV4dCgiY2hhbm5lbCBiaW5kaW5nIHJlcXVpcmVkIGJ1dCBub3Qgc3Vw cG9ydGVkIGJ5IHNlcnZlcidzIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3RcbiIpKTsKKwkJCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2hhbm5lbCBiaW5kaW5nIHJlcXVpcmVk IGJ1dCBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlcidzIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3Qi KTsKIAkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCQlicmVhazsKIAkJfQpAQCAtODk5LDEzICs4 NzIsMTEgQEAgcGdfZmVfc2VuZGF1dGgoQXV0aFJlcXVlc3QgYXJlcSwgaW50IHBheWxvYWRs ZW4sIFBHY29ubiAqY29ubikKIAkJCWJyZWFrOwogCiAJCWNhc2UgQVVUSF9SRVFfS1JCNDoK LQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJ CSBsaWJwcV9nZXR0ZXh0KCJLZXJiZXJvcyA0IGF1dGhlbnRpY2F0aW9uIG5vdCBzdXBwb3J0 ZWRcbiIpKTsKKwkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJLZXJiZXJvcyA0 IGF1dGhlbnRpY2F0aW9uIG5vdCBzdXBwb3J0ZWQiKTsKIAkJCXJldHVybiBTVEFUVVNfRVJS T1I7CiAKIAkJY2FzZSBBVVRIX1JFUV9LUkI1OgotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRleHQoIktlcmJlcm9z IDUgYXV0aGVudGljYXRpb24gbm90IHN1cHBvcnRlZFxuIikpOworCQkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgIktlcmJlcm9zIDUgYXV0aGVudGljYXRpb24gbm90IHN1cHBv cnRlZCIpOwogCQkJcmV0dXJuIFNUQVRVU19FUlJPUjsKIAogI2lmIGRlZmluZWQoRU5BQkxF X0dTUykgfHwgZGVmaW5lZChFTkFCTEVfU1NQSSkKQEAgLTk3NSw4ICs5NDYsNyBAQCBwZ19m ZV9zZW5kYXV0aChBdXRoUmVxdWVzdCBhcmVxLCBpbnQgcGF5bG9hZGxlbiwgUEdjb25uICpj b25uKQogCQkJLyogTm8gR1NTQVBJICpvciogU1NQSSBzdXBwb3J0ICovCiAJCWNhc2UgQVVU SF9SRVFfR1NTOgogCQljYXNlIEFVVEhfUkVRX0dTU19DT05UOgotCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRleHQo IkdTU0FQSSBhdXRoZW50aWNhdGlvbiBub3Qgc3VwcG9ydGVkXG4iKSk7CisJCQlsaWJwcV9h cHBlbmRfY29ubl9lcnJvcihjb25uLCAiR1NTQVBJIGF1dGhlbnRpY2F0aW9uIG5vdCBzdXBw b3J0ZWQiKTsKIAkJCXJldHVybiBTVEFUVVNfRVJST1I7CiAjZW5kaWYJCQkJCQkJLyogZGVm aW5lZChFTkFCTEVfR1NTKSB8fCBkZWZpbmVkKEVOQUJMRV9TU1BJKSAqLwogCkBAIC0xMDA3 LDE2ICs5NzcsMTQgQEAgcGdfZmVfc2VuZGF1dGgoQXV0aFJlcXVlc3QgYXJlcSwgaW50IHBh eWxvYWRsZW4sIFBHY29ubiAqY29ubikKIAkJCSAqLwogI2lmICFkZWZpbmVkKEVOQUJMRV9H U1MpCiAJCWNhc2UgQVVUSF9SRVFfU1NQSToKLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJTU1BJIGF1dGhl bnRpY2F0aW9uIG5vdCBzdXBwb3J0ZWRcbiIpKTsKKwkJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sICJTU1BJIGF1dGhlbnRpY2F0aW9uIG5vdCBzdXBwb3J0ZWQiKTsKIAkJCXJl dHVybiBTVEFUVVNfRVJST1I7CiAjZW5kaWYJCQkJCQkJLyogIWRlZmluZShFTkFCTEVfR1NT KSAqLwogI2VuZGlmCQkJCQkJCS8qIEVOQUJMRV9TU1BJICovCiAKIAogCQljYXNlIEFVVEhf UkVRX0NSWVBUOgotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRleHQoIkNyeXB0IGF1dGhlbnRpY2F0aW9uIG5vdCBz dXBwb3J0ZWRcbiIpKTsKKwkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJDcnlw dCBhdXRoZW50aWNhdGlvbiBub3Qgc3VwcG9ydGVkIik7CiAJCQlyZXR1cm4gU1RBVFVTX0VS Uk9SOwogCiAJCWNhc2UgQVVUSF9SRVFfTUQ1OgpAQCAtMTA4Miw4ICsxMDUwLDcgQEAgcGdf ZmVfc2VuZGF1dGgoQXV0aFJlcXVlc3QgYXJlcSwgaW50IHBheWxvYWRsZW4sIFBHY29ubiAq Y29ubikKIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiYXV0aGVudGlj YXRpb24gbWV0aG9kICV1IG5vdCBzdXBwb3J0ZWRcbiIpLCBhcmVxKTsKKwkJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJhdXRoZW50aWNhdGlvbiBtZXRob2QgJXUgbm90IHN1 cHBvcnRlZCIsIGFyZXEpOwogCQkJcmV0dXJuIFNUQVRVU19FUlJPUjsKIAl9CiAKQEAgLTEx MjgsOSArMTA5NSw5IEBAIHBnX2ZlX2dldHVzZXJuYW1lKHVpZF90IHVzZXJfaWQsIFBRRXhw QnVmZmVyIGVycm9yTWVzc2FnZSkKIAlpZiAoR2V0VXNlck5hbWUodXNlcm5hbWUsICZuYW1l c2l6ZSkpCiAJCW5hbWUgPSB1c2VybmFtZTsKIAllbHNlIGlmIChlcnJvck1lc3NhZ2UpCi0J CWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4 dCgidXNlciBuYW1lIGxvb2t1cCBmYWlsdXJlOiBlcnJvciBjb2RlICVsdVxuIiksCi0JCQkJ CQkgIEdldExhc3RFcnJvcigpKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2Fn ZSwKKwkJCQkJCSAgICJ1c2VyIG5hbWUgbG9va3VwIGZhaWx1cmU6IGVycm9yIGNvZGUgJWx1 IiwKKwkJCQkJCSAgIEdldExhc3RFcnJvcigpKTsKICNlbHNlCiAJaWYgKHBnX2dldF91c2Vy X25hbWUodXNlcl9pZCwgcHdkYnVmLCBzaXplb2YocHdkYnVmKSkpCiAJCW5hbWUgPSBwd2Ri dWY7CkBAIC0xMTQyLDggKzExMDksNyBAQCBwZ19mZV9nZXR1c2VybmFtZSh1aWRfdCB1c2Vy X2lkLCBQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2UpCiAJewogCQlyZXN1bHQgPSBzdHJkdXAo bmFtZSk7CiAJCWlmIChyZXN1bHQgPT0gTlVMTCAmJiBlcnJvck1lc3NhZ2UpCi0JCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihlcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJwcV9nZXR0ZXh0 KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNz YWdlLCAib3V0IG9mIG1lbW9yeSIpOwogCX0KIAogCXBndW5sb2NrX3RocmVhZCgpOwpAQCAt MTI1NCw4ICsxMjIwLDcgQEAgUFFlbmNyeXB0UGFzc3dvcmRDb25uKFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqcGFzc3dkLCBjb25zdCBjaGFyICp1c2VyLAogCQlpZiAoUFFudHVwbGVz KHJlcykgIT0gMSB8fCBQUW5maWVsZHMocmVzKSAhPSAxKQogCQl7CiAJCQlQUWNsZWFyKHJl cyk7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJ CQkJCQkgbGlicHFfZ2V0dGV4dCgidW5leHBlY3RlZCBzaGFwZSBvZiByZXN1bHQgc2V0IHJl dHVybmVkIGZvciBTSE9XXG4iKSk7CisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAidW5leHBlY3RlZCBzaGFwZSBvZiByZXN1bHQgc2V0IHJldHVybmVkIGZvciBTSE9XIik7 CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQogCQl2YWwgPSBQUWdldHZhbHVlKHJlcywgMCwgMCk7 CkBAIC0xMjYzLDggKzEyMjgsNyBAQCBQUWVuY3J5cHRQYXNzd29yZENvbm4oUEdjb25uICpj b25uLCBjb25zdCBjaGFyICpwYXNzd2QsIGNvbnN0IGNoYXIgKnVzZXIsCiAJCWlmIChzdHJs ZW4odmFsKSA+IE1BWF9BTEdPUklUSE1fTkFNRV9MRU4pCiAJCXsKIAkJCVBRY2xlYXIocmVz KTsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJ CQkJCSBsaWJwcV9nZXR0ZXh0KCJwYXNzd29yZF9lbmNyeXB0aW9uIHZhbHVlIHRvbyBsb25n XG4iKSk7CisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAicGFzc3dvcmRfZW5j cnlwdGlvbiB2YWx1ZSB0b28gbG9uZyIpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAkJc3Ry Y3B5KGFsZ29idWYsIHZhbCk7CkBAIC0xMjkxLDkgKzEyNTUsNyBAQCBQUWVuY3J5cHRQYXNz d29yZENvbm4oUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpwYXNzd2QsIGNvbnN0IGNoYXIg KnVzZXIsCiAKIAkJY3J5cHRfcHdkID0gcGdfZmVfc2NyYW1fYnVpbGRfc2VjcmV0KHBhc3N3 ZCwgJmVycnN0cik7CiAJCWlmICghY3J5cHRfcHdkKQotCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5v dCBlbmNyeXB0IHBhc3N3b3JkOiAlc1xuIiksCi0JCQkJCQkJICBlcnJzdHIpOworCQkJbGli cHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBlbmNyeXB0IHBhc3N3b3Jk OiAlcyIsIGVycnN0cik7CiAJfQogCWVsc2UgaWYgKHN0cmNtcChhbGdvcml0aG0sICJtZDUi KSA9PSAwKQogCXsKQEAgLTEzMDQsMjEgKzEyNjYsMTcgQEAgUFFlbmNyeXB0UGFzc3dvcmRD b25uKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcGFzc3dkLCBjb25zdCBjaGFyICp1c2Vy LAogCiAJCQlpZiAoIXBnX21kNV9lbmNyeXB0KHBhc3N3ZCwgdXNlciwgc3RybGVuKHVzZXIp LCBjcnlwdF9wd2QsICZlcnJzdHIpKQogCQkJewotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90 IGVuY3J5cHQgcGFzc3dvcmQ6ICVzXG4iKSwKLQkJCQkJCQkJICBlcnJzdHIpOworCQkJCWxp YnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgZW5jcnlwdCBwYXNzd29y ZDogJXMiLCBlcnJzdHIpOwogCQkJCWZyZWUoY3J5cHRfcHdkKTsKIAkJCQljcnlwdF9wd2Qg PSBOVUxMOwogCQkJfQogCQl9CiAJCWVsc2UKLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVt b3J5XG4iKSk7CisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAib3V0IG9mIG1l bW9yeSIpOwogCX0KIAllbHNlCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJy b3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1bnJlY29nbml6ZWQgcGFzc3dv cmQgZW5jcnlwdGlvbiBhbGdvcml0aG0gXCIlc1wiXG4iKSwKKwkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgInVucmVjb2duaXplZCBwYXNzd29yZCBlbmNyeXB0aW9uIGFsZ29y aXRobSBcIiVzXCIiLAogCQkJCQkJICBhbGdvcml0aG0pOwogCQlyZXR1cm4gTlVMTDsKIAl9 CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKaW5kZXggNzQ2ZTliNGYxZWZjLi5hNjEy MGJmNThiODkgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3Qu YworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKQEAgLTg5Niw4ICs4 OTYsNyBAQCBmaWxsUEdjb25uKFBHY29ubiAqY29ubiwgUFFjb25uaW5mb09wdGlvbiAqY29u bk9wdGlvbnMpCiAJCQkJKmNvbm5tZW1iZXIgPSBzdHJkdXAodG1wKTsKIAkJCQlpZiAoKmNv bm5tZW1iZXIgPT0gTlVMTCkKIAkJCQl7Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoIm91dCBvZiBt ZW1vcnlcbiIpKTsKKwkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBv ZiBtZW1vcnkiKTsKIAkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KIAkJCX0KQEAgLTEwNzks OSArMTA3OCw4IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJCWlmIChtb3Jl IHx8IGkgIT0gY29ubi0+bmNvbm5ob3N0KQogCQl7CiAJCQljb25uLT5zdGF0dXMgPSBDT05O RUNUSU9OX0JBRDsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2Us Ci0JCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgbWF0Y2ggJWQgaG9zdCBuYW1l cyB0byAlZCBob3N0YWRkciB2YWx1ZXNcbiIpLAotCQkJCQkJCSAgY291bnRfY29tbWFfc2Vw YXJhdGVkX2VsZW1zKGNvbm4tPnBnaG9zdCksIGNvbm4tPm5jb25uaG9zdCk7CisJCQlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IG1hdGNoICVkIGhvc3QgbmFt ZXMgdG8gJWQgaG9zdGFkZHIgdmFsdWVzIiwKKwkJCQkJCQkgICBjb3VudF9jb21tYV9zZXBh cmF0ZWRfZWxlbXMoY29ubi0+cGdob3N0KSwgY29ubi0+bmNvbm5ob3N0KTsKIAkJCXJldHVy biBmYWxzZTsKIAkJfQogCX0KQEAgLTExNjAsOSArMTE1OCw4IEBAIGNvbm5lY3RPcHRpb25z MihQR2Nvbm4gKmNvbm4pCiAJCWVsc2UgaWYgKG1vcmUgfHwgaSAhPSBjb25uLT5uY29ubmhv c3QpCiAJCXsKIAkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fQkFEOwotCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRl eHQoImNvdWxkIG5vdCBtYXRjaCAlZCBwb3J0IG51bWJlcnMgdG8gJWQgaG9zdHNcbiIpLAot CQkJCQkJCSAgY291bnRfY29tbWFfc2VwYXJhdGVkX2VsZW1zKGNvbm4tPnBncG9ydCksIGNv bm4tPm5jb25uaG9zdCk7CisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291 bGQgbm90IG1hdGNoICVkIHBvcnQgbnVtYmVycyB0byAlZCBob3N0cyIsCisJCQkJCQkJICAg Y291bnRfY29tbWFfc2VwYXJhdGVkX2VsZW1zKGNvbm4tPnBncG9ydCksIGNvbm4tPm5jb25u aG9zdCk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9CkBAIC0xMjUwLDkgKzEyNDcsOCBA QCBjb25uZWN0T3B0aW9uczIoUEdjb25uICpjb25uKQogCQkJJiYgc3RyY21wKGNvbm4tPmNo YW5uZWxfYmluZGluZywgInJlcXVpcmUiKSAhPSAwKQogCQl7CiAJCQljb25uLT5zdGF0dXMg PSBDT05ORUNUSU9OX0JBRDsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1l c3NhZ2UsCi0JCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkICVzIHZhbHVlOiBcIiVz XCJcbiIpLAotCQkJCQkJCSAgImNoYW5uZWxfYmluZGluZyIsIGNvbm4tPmNoYW5uZWxfYmlu ZGluZyk7CisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiaW52YWxpZCAlcyB2 YWx1ZTogXCIlc1wiIiwKKwkJCQkJCQkgICAiY2hhbm5lbF9iaW5kaW5nIiwgY29ubi0+Y2hh bm5lbF9iaW5kaW5nKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCX0KQEAgLTEyNzYsOSAr MTI3Miw4IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJCQkmJiBzdHJjbXAo Y29ubi0+c3NsbW9kZSwgInZlcmlmeS1mdWxsIikgIT0gMCkKIAkJewogCQkJY29ubi0+c3Rh dHVzID0gQ09OTkVDVElPTl9CQUQ7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJy b3JNZXNzYWdlLAotCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCAlcyB2YWx1ZTog XCIlc1wiXG4iKSwKLQkJCQkJCQkgICJzc2xtb2RlIiwgY29ubi0+c3NsbW9kZSk7CisJCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiaW52YWxpZCAlcyB2YWx1ZTogXCIlc1wi IiwKKwkJCQkJCQkgICAic3NsbW9kZSIsIGNvbm4tPnNzbG1vZGUpOwogCQkJcmV0dXJuIGZh bHNlOwogCQl9CiAKQEAgLTEyOTcsOSArMTI5Miw4IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nv bm4gKmNvbm4pCiAJCQljYXNlICdyJzoJCQkvKiAicmVxdWlyZSIgKi8KIAkJCWNhc2UgJ3Yn OgkJCS8qICJ2ZXJpZnktY2EiIG9yICJ2ZXJpZnktZnVsbCIgKi8KIAkJCQljb25uLT5zdGF0 dXMgPSBDT05ORUNUSU9OX0JBRDsKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJy b3JNZXNzYWdlLAotCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoInNzbG1vZGUgdmFsdWUgXCIl c1wiIGludmFsaWQgd2hlbiBTU0wgc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaW5cbiIpLAot CQkJCQkJCQkgIGNvbm4tPnNzbG1vZGUpOworCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJzc2xtb2RlIHZhbHVlIFwiJXNcIiBpbnZhbGlkIHdoZW4gU1NMIHN1cHBvcnQg aXMgbm90IGNvbXBpbGVkIGluIiwKKwkJCQkJCQkJICAgY29ubi0+c3NsbW9kZSk7CiAJCQkJ cmV0dXJuIGZhbHNlOwogCQl9CiAjZW5kaWYKQEAgLTEzMTgsMTkgKzEzMTIsMTcgQEAgY29u bmVjdE9wdGlvbnMyKFBHY29ubiAqY29ubikKIAlpZiAoIXNzbFZlcmlmeVByb3RvY29sVmVy c2lvbihjb25uLT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24pKQogCXsKIAkJY29ubi0+c3Rh dHVzID0gQ09OTkVDVElPTl9CQUQ7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJv ck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoImludmFsaWQgJXMgdmFsdWU6IFwi JXNcIlxuIiksCi0JCQkJCQkgICJzc2xfbWluX3Byb3RvY29sX3ZlcnNpb24iLAotCQkJCQkJ ICBjb25uLT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24pOworCQlsaWJwcV9hcHBlbmRfY29u bl9lcnJvcihjb25uLCAiaW52YWxpZCAlcyB2YWx1ZTogXCIlc1wiIiwKKwkJCQkJCSAgICJz c2xfbWluX3Byb3RvY29sX3ZlcnNpb24iLAorCQkJCQkJICAgY29ubi0+c3NsX21pbl9wcm90 b2NvbF92ZXJzaW9uKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAlpZiAoIXNzbFZlcmlmeVBy b3RvY29sVmVyc2lvbihjb25uLT5zc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24pKQogCXsKIAkJ Y29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9CQUQ7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoImludmFsaWQgJXMg dmFsdWU6IFwiJXNcIlxuIiksCi0JCQkJCQkgICJzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24i LAotCQkJCQkJICBjb25uLT5zc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24pOworCQlsaWJwcV9h cHBlbmRfY29ubl9lcnJvcihjb25uLCAiaW52YWxpZCAlcyB2YWx1ZTogXCIlc1wiIiwKKwkJ CQkJCSAgICJzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24iLAorCQkJCQkJICAgY29ubi0+c3Ns X21heF9wcm90b2NvbF92ZXJzaW9uKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMTM0 NSw4ICsxMzM3LDcgQEAgY29ubmVjdE9wdGlvbnMyKFBHY29ubiAqY29ubikKIAkJCQkJCQkJ Y29ubi0+c3NsX21heF9wcm90b2NvbF92ZXJzaW9uKSkKIAl7CiAJCWNvbm4tPnN0YXR1cyA9 IENPTk5FQ1RJT05fQkFEOwotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JN ZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIFNTTCBwcm90b2NvbCB2 ZXJzaW9uIHJhbmdlXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJp bnZhbGlkIFNTTCBwcm90b2NvbCB2ZXJzaW9uIHJhbmdlIik7CiAJCXJldHVybiBmYWxzZTsK IAl9CiAKQEAgLTEzNjAsMTkgKzEzNTEsMTUgQEAgY29ubmVjdE9wdGlvbnMyKFBHY29ubiAq Y29ubikKIAkJCXN0cmNtcChjb25uLT5nc3NlbmNtb2RlLCAicmVxdWlyZSIpICE9IDApCiAJ CXsKIAkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fQkFEOwotCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImlu dmFsaWQgJXMgdmFsdWU6IFwiJXNcIlxuIiksCi0JCQkJCQkJICAiZ3NzZW5jbW9kZSIsCi0J CQkJCQkJICBjb25uLT5nc3NlbmNtb2RlKTsKKwkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJpbnZhbGlkICVzIHZhbHVlOiBcIiVzXCIiLCAiZ3NzZW5jbW9kZSIsIGNvbm4t Pmdzc2VuY21vZGUpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAjaWZuZGVmIEVOQUJMRV9H U1MKIAkJaWYgKHN0cmNtcChjb25uLT5nc3NlbmNtb2RlLCAicmVxdWlyZSIpID09IDApCiAJ CXsKIAkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fQkFEOwotCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImdz c2VuY21vZGUgdmFsdWUgXCIlc1wiIGludmFsaWQgd2hlbiBHU1NBUEkgc3VwcG9ydCBpcyBu b3QgY29tcGlsZWQgaW5cbiIpLAotCQkJCQkJCSAgY29ubi0+Z3NzZW5jbW9kZSk7CisJCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZ3NzZW5jbW9kZSB2YWx1ZSBcIiVzXCIg aW52YWxpZCB3aGVuIEdTU0FQSSBzdXBwb3J0IGlzIG5vdCBjb21waWxlZCBpbiIsCisJCQkJ CQkJICAgY29ubi0+Z3NzZW5jbW9kZSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KICNlbmRp ZgpAQCAtMTQwNCwxMCArMTM5MSw5IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNvbm4p CiAJCWVsc2UKIAkJewogCQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9CQUQ7Ci0JCQlh cHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSAgbGlicHFf Z2V0dGV4dCgiaW52YWxpZCAlcyB2YWx1ZTogXCIlc1wiXG4iKSwKLQkJCQkJCQkgICJ0YXJn ZXRfc2Vzc2lvbl9hdHRycyIsCi0JCQkJCQkJICBjb25uLT50YXJnZXRfc2Vzc2lvbl9hdHRy cyk7CisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiaW52YWxpZCAlcyB2YWx1 ZTogXCIlc1wiIiwKKwkJCQkJCQkgICAidGFyZ2V0X3Nlc3Npb25fYXR0cnMiLAorCQkJCQkJ CSAgIGNvbm4tPnRhcmdldF9zZXNzaW9uX2F0dHJzKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJ fQogCX0KQEAgLTE0MzcsOCArMTQyMyw3IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNv bm4pCiAKIG9vbV9lcnJvcjoKIAljb25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX0JBRDsKLQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJIGxpYnBx X2dldHRleHQoIm91dCBvZiBtZW1vcnlcbiIpKTsKKwlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCXJldHVybiBmYWxzZTsKIH0KIApAQCAtMTYw MCw4ICsxNTg1LDcgQEAgUFFzZXRkYkxvZ2luKGNvbnN0IGNoYXIgKnBnaG9zdCwgY29uc3Qg Y2hhciAqcGdwb3J0LCBjb25zdCBjaGFyICpwZ29wdGlvbnMsCiAKIG9vbV9lcnJvcjoKIAlj b25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX0JBRDsKLQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJIGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1v cnlcbiIpKTsKKwlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9y eSIpOwogCXJldHVybiBjb25uOwogfQogCkBAIC0xNjI0LDkgKzE2MDgsOCBAQCBjb25uZWN0 Tm9EZWxheShQR2Nvbm4gKmNvbm4pCiAJewogCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJPUl9S X0JVRkxFTl07CiAKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHNldCBzb2NrZXQgdG8gVENQIG5v IGRlbGF5IG1vZGU6ICVzXG4iKSwKLQkJCQkJCSAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5P LCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAiY291bGQgbm90IHNldCBzb2NrZXQgdG8gVENQIG5vIGRlbGF5IG1vZGU6ICVzIiwK KwkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1 ZikpKTsKIAkJcmV0dXJuIDA7CiAJfQogI2VuZGlmCkBAIC0xNzM4LDExICsxNzIxLDkgQEAg Y29ubmVjdEZhaWx1cmVNZXNzYWdlKFBHY29ubiAqY29ubiwgaW50IGVycm9ybm8pCiAJCQkJ CSAgU09DS19TVFJFUlJPUihlcnJvcm5vLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCiAJ aWYgKGNvbm4tPnJhZGRyLmFkZHIuc3NfZmFtaWx5ID09IEFGX1VOSVgpCi0JCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRl eHQoIlx0SXMgdGhlIHNlcnZlciBydW5uaW5nIGxvY2FsbHkgYW5kIGFjY2VwdGluZyBjb25u ZWN0aW9ucyBvbiB0aGF0IHNvY2tldD9cbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgIlx0SXMgdGhlIHNlcnZlciBydW5uaW5nIGxvY2FsbHkgYW5kIGFjY2VwdGlu ZyBjb25uZWN0aW9ucyBvbiB0aGF0IHNvY2tldD8iKTsKIAllbHNlCi0JCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQo Ilx0SXMgdGhlIHNlcnZlciBydW5uaW5nIG9uIHRoYXQgaG9zdCBhbmQgYWNjZXB0aW5nIFRD UC9JUCBjb25uZWN0aW9ucz9cbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29u biwgIlx0SXMgdGhlIHNlcnZlciBydW5uaW5nIG9uIHRoYXQgaG9zdCBhbmQgYWNjZXB0aW5n IFRDUC9JUCBjb25uZWN0aW9ucz8iKTsKIH0KIAogLyoKQEAgLTE4MDUsOSArMTc4Niw4IEBA IHBhcnNlX2ludF9wYXJhbShjb25zdCBjaGFyICp2YWx1ZSwgaW50ICpyZXN1bHQsIFBHY29u biAqY29ubiwKIAlyZXR1cm4gdHJ1ZTsKIAogZXJyb3I6Ci0JYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIGlu dGVnZXIgdmFsdWUgXCIlc1wiIGZvciBjb25uZWN0aW9uIG9wdGlvbiBcIiVzXCJcbiIpLAot CQkJCQkgIHZhbHVlLCBjb250ZXh0KTsKKwlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiaW52YWxpZCBpbnRlZ2VyIHZhbHVlIFwiJXNcIiBmb3IgY29ubmVjdGlvbiBvcHRpb24g XCIlc1wiIiwKKwkJCQkJICAgdmFsdWUsIGNvbnRleHQpOwogCXJldHVybiBmYWxzZTsKIH0K IApAQCAtMTgzNSwxMSArMTgxNSwxMCBAQCBzZXRLZWVwYWxpdmVzSWRsZShQR2Nvbm4gKmNv bm4pCiAJewogCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJPUl9SX0JVRkxFTl07CiAKLQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0 dGV4dCgiJXMoJXMpIGZhaWxlZDogJXNcbiIpLAotCQkJCQkJICAic2V0c29ja29wdCIsCi0J CQkJCQkgIFBHX1RDUF9LRUVQQUxJVkVfSURMRV9TVFIsCi0JCQkJCQkgIFNPQ0tfU1RSRVJS T1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgIiVzKCVzKSBmYWlsZWQ6ICVzIiwKKwkJCQkJCSAgICJzZXRz b2Nrb3B0IiwKKwkJCQkJCSAgIFBHX1RDUF9LRUVQQUxJVkVfSURMRV9TVFIsCisJCQkJCQkg ICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJ CXJldHVybiAwOwogCX0KICNlbmRpZgpAQCAtMTg3MCwxMSArMTg0OSwxMCBAQCBzZXRLZWVw YWxpdmVzSW50ZXJ2YWwoUEdjb25uICpjb25uKQogCXsKIAkJY2hhcgkJc2VidWZbUEdfU1RS RVJST1JfUl9CVUZMRU5dOwogCi0JCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1l c3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoIiVzKCVzKSBmYWlsZWQ6ICVzXG4iKSwK LQkJCQkJCSAgInNldHNvY2tvcHQiLAotCQkJCQkJICAiVENQX0tFRVBJTlRWTCIsCi0JCQkJ CQkgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsK KwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIiVzKCVzKSBmYWlsZWQ6ICVzIiwK KwkJCQkJCSAgICJzZXRzb2Nrb3B0IiwKKwkJCQkJCSAgICJUQ1BfS0VFUElOVFZMIiwKKwkJ CQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1Zikp KTsKIAkJcmV0dXJuIDA7CiAJfQogI2VuZGlmCkBAIC0xOTA2LDExICsxODg0LDEwIEBAIHNl dEtlZXBhbGl2ZXNDb3VudChQR2Nvbm4gKmNvbm4pCiAJewogCQljaGFyCQlzZWJ1ZltQR19T VFJFUlJPUl9SX0JVRkxFTl07CiAKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9y TWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiJXMoJXMpIGZhaWxlZDogJXNcbiIp LAotCQkJCQkJICAic2V0c29ja29wdCIsCi0JCQkJCQkgICJUQ1BfS0VFUENOVCIsCi0JCQkJ CQkgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsK KwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIiVzKCVzKSBmYWlsZWQ6ICVzIiwK KwkJCQkJCSAgICJzZXRzb2Nrb3B0IiwKKwkJCQkJCSAgICJUQ1BfS0VFUENOVCIsCisJCQkJ CQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7 CiAJCXJldHVybiAwOwogCX0KICNlbmRpZgpAQCAtMTk3MSw4ICsxOTQ4LDcgQEAgcHJlcEtl ZXBhbGl2ZXNXaW4zMihQR2Nvbm4gKmNvbm4pCiAKIAlpZiAoIXNldEtlZXBhbGl2ZXNXaW4z Mihjb25uLT5zb2NrLCBpZGxlLCBpbnRlcnZhbCkpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZl cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCIlcyglcykg ZmFpbGVkOiBlcnJvciBjb2RlICVkXG4iKSwKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgIiVzKCVzKSBmYWlsZWQ6IGVycm9yIGNvZGUgJWQiLAogCQkJCQkJICAiV1NBSW9j dGwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIiwKIAkJCQkJCSAgV1NBR2V0TGFzdEVycm9yKCkp OwogCQlyZXR1cm4gMDsKQEAgLTIwMDYsMTEgKzE5ODIsMTAgQEAgc2V0VENQVXNlclRpbWVv dXQoUEdjb25uICpjb25uKQogCXsKIAkJY2hhcgkJc2VidWZbMjU2XTsKIAotCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCIlcyglcykgZmFpbGVkOiAlc1xuIiksCi0JCQkJCQkgICJzZXRzb2Nrb3B0IiwKLQkJCQkJ CSAgIlRDUF9VU0VSX1RJTUVPVVQiLAotCQkJCQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJS Tk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICIlcyglcykgZmFpbGVkOiAlcyIsCisJCQkJCQkgICAic2V0c29ja29wdCIsCisJ CQkJCQkgICAiVENQX1VTRVJfVElNRU9VVCIsCisJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNP Q0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCXJldHVybiAwOwogCX0KICNl bmRpZgpAQCAtMjI4Niw4ICsyMjYxLDcgQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4p CiAJCQlicmVhazsKIAogCQlkZWZhdWx0OgotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNv bm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRleHQoImludmFsaWQgY29u bmVjdGlvbiBzdGF0ZSwgcHJvYmFibHkgaW5kaWNhdGl2ZSBvZiBtZW1vcnkgY29ycnVwdGlv blxuIikpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFsaWQgY29u bmVjdGlvbiBzdGF0ZSwgcHJvYmFibHkgaW5kaWNhdGl2ZSBvZiBtZW1vcnkgY29ycnVwdGlv biIpOwogCQkJZ290byBlcnJvcl9yZXR1cm47CiAJfQogCkBAIC0yMzY1LDkgKzIzMzksNyBA QCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAogCQkJaWYgKHRoaXNwb3J0IDwgMSB8 fCB0aGlzcG9ydCA+IDY1NTM1KQogCQkJewotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25u LT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCBwb3J0 IG51bWJlcjogXCIlc1wiXG4iKSwKLQkJCQkJCQkJICBjaC0+cG9ydCk7CisJCQkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFsaWQgcG9ydCBudW1iZXI6IFwiJXNcIiIs IGNoLT5wb3J0KTsKIAkJCQlnb3RvIGtlZXBfZ29pbmc7CiAJCQl9CiAJCX0KQEAgLTIzODEs OSArMjM1Myw4IEBAIFBRY29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJCQkJCQkJCSAm Y29ubi0+YWRkcmxpc3QpOwogCQkJCWlmIChyZXQgfHwgIWNvbm4tPmFkZHJsaXN0KQogCQkJ CXsKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJ CQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHRyYW5zbGF0ZSBob3N0IG5hbWUgXCIl c1wiIHRvIGFkZHJlc3M6ICVzXG4iKSwKLQkJCQkJCQkJCSAgY2gtPmhvc3QsIGdhaV9zdHJl cnJvcihyZXQpKTsKKwkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxk IG5vdCB0cmFuc2xhdGUgaG9zdCBuYW1lIFwiJXNcIiB0byBhZGRyZXNzOiAlcyIsCisJCQkJ CQkJCQkgICBjaC0+aG9zdCwgZ2FpX3N0cmVycm9yKHJldCkpOwogCQkJCQlnb3RvIGtlZXBf Z29pbmc7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtMjM5NCw5ICsyMzY1LDggQEAgUFFjb25u ZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCQkJCQkJICZjb25uLT5hZGRybGlzdCk7CiAJ CQkJaWYgKHJldCB8fCAhY29ubi0+YWRkcmxpc3QpCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCJjb3VsZCBub3QgcGFyc2UgbmV0d29yayBhZGRyZXNzIFwiJXNcIjogJXNcbiIpLAotCQkJ CQkJCQkJICBjaC0+aG9zdGFkZHIsIGdhaV9zdHJlcnJvcihyZXQpKTsKKwkJCQkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBwYXJzZSBuZXR3b3JrIGFkZHJl c3MgXCIlc1wiOiAlcyIsCisJCQkJCQkJCQkgICBjaC0+aG9zdGFkZHIsIGdhaV9zdHJlcnJv cihyZXQpKTsKIAkJCQkJZ290byBrZWVwX2dvaW5nOwogCQkJCX0KIAkJCQlicmVhazsKQEAg LTI0MDYsMTAgKzIzNzYsOSBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAkJCQlV TklYU09DS19QQVRIKHBvcnRzdHIsIHRoaXNwb3J0LCBjaC0+aG9zdCk7CiAJCQkJaWYgKHN0 cmxlbihwb3J0c3RyKSA+PSBVTklYU09DS19QQVRIX0JVRkxFTikKIAkJCQl7Ci0JCQkJCWFw cGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkgIGxpYnBx X2dldHRleHQoIlVuaXgtZG9tYWluIHNvY2tldCBwYXRoIFwiJXNcIiBpcyB0b28gbG9uZyAo bWF4aW11bSAlZCBieXRlcylcbiIpLAotCQkJCQkJCQkJICBwb3J0c3RyLAotCQkJCQkJCQkJ ICAoaW50KSAoVU5JWFNPQ0tfUEFUSF9CVUZMRU4gLSAxKSk7CisJCQkJCWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKGNvbm4sICJVbml4LWRvbWFpbiBzb2NrZXQgcGF0aCBcIiVzXCIgaXMg dG9vIGxvbmcgKG1heGltdW0gJWQgYnl0ZXMpIiwKKwkJCQkJCQkJCSAgIHBvcnRzdHIsCisJ CQkJCQkJCQkgICAoaW50KSAoVU5JWFNPQ0tfUEFUSF9CVUZMRU4gLSAxKSk7CiAJCQkJCWdv dG8ga2VlcF9nb2luZzsKIAkJCQl9CiAKQEAgLTI0MjEsOSArMjM5MCw4IEBAIFBRY29ubmVj dFBvbGwoUEdjb25uICpjb25uKQogCQkJCQkJCQkJCSAmY29ubi0+YWRkcmxpc3QpOwogCQkJ CWlmIChyZXQgfHwgIWNvbm4tPmFkZHJsaXN0KQogCQkJCXsKLQkJCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgi Y291bGQgbm90IHRyYW5zbGF0ZSBVbml4LWRvbWFpbiBzb2NrZXQgcGF0aCBcIiVzXCIgdG8g YWRkcmVzczogJXNcbiIpLAotCQkJCQkJCQkJICBwb3J0c3RyLCBnYWlfc3RyZXJyb3IocmV0 KSk7CisJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgdHJh bnNsYXRlIFVuaXgtZG9tYWluIHNvY2tldCBwYXRoIFwiJXNcIiB0byBhZGRyZXNzOiAlcyIs CisJCQkJCQkJCQkgICBwb3J0c3RyLCBnYWlfc3RyZXJyb3IocmV0KSk7CiAJCQkJCWdvdG8g a2VlcF9nb2luZzsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0yNTQ0LDkgKzI1MTIsOCBAQCBQ UWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAkJCQkJCQlnb3RvIGtlZXBfZ29pbmc7CiAJ CQkJCQl9CiAJCQkJCQllbWl0SG9zdElkZW50aXR5SW5mbyhjb25uLCBob3N0X2FkZHIpOwot CQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJ CQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBjcmVhdGUgc29ja2V0OiAlc1xuIiksCi0J CQkJCQkJCQkJICBTT0NLX1NUUkVSUk9SKGVycm9ybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYp KSk7CisJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IGNy ZWF0ZSBzb2NrZXQ6ICVzIiwKKwkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKGVycm9ybm8s IHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJ CQkJfQogCkBAIC0yNTc1LDkgKzI1NDIsOCBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29u bikKIAkJCQkJfQogCQkJCQlpZiAoIXBnX3NldF9ub2Jsb2NrKGNvbm4tPnNvY2spKQogCQkJ CQl7Ci0JCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJ CQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHNldCBzb2NrZXQgdG8gbm9uYmxv Y2tpbmcgbW9kZTogJXNcbiIpLAotCQkJCQkJCQkJCSAgU09DS19TVFJFUlJPUihTT0NLX0VS Uk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzZXQgc29ja2V0IHRvIG5vbmJsb2NraW5nIG1vZGU6 ICVzIiwKKwkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBz aXplb2Yoc2VidWYpKSk7CiAJCQkJCQljb25uLT50cnlfbmV4dF9hZGRyID0gdHJ1ZTsKIAkJ CQkJCWdvdG8ga2VlcF9nb2luZzsKIAkJCQkJfQpAQCAtMjU4NSw5ICsyNTUxLDggQEAgUFFj b25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAjaWZkZWYgRl9TRVRGRAogCQkJCQlpZiAoZmNu dGwoY29ubi0+c29jaywgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpCiAJCQkJCXsKLQkJ CQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJ ICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3Qgc2V0IHNvY2tldCB0byBjbG9zZS1vbi1leGVj IG1vZGU6ICVzXG4iKSwKLQkJCQkJCQkJCQkgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywg c2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJjb3VsZCBub3Qgc2V0IHNvY2tldCB0byBjbG9zZS1vbi1leGVjIG1vZGU6ICVz IiwKKwkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXpl b2Yoc2VidWYpKSk7CiAJCQkJCQljb25uLT50cnlfbmV4dF9hZGRyID0gdHJ1ZTsKIAkJCQkJ CWdvdG8ga2VlcF9nb2luZzsKIAkJCQkJfQpAQCAtMjYwMyw4ICsyNTY4LDcgQEAgUFFjb25u ZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAKIAkJCQkJCWlmICh1c2VrZWVwYWxpdmVzIDwgMCkK IAkJCQkJCXsKLQkJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNz YWdlLAotCQkJCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoImtlZXBhbGl2ZXMgcGFyYW1ldGVy IG11c3QgYmUgYW4gaW50ZWdlclxuIikpOworCQkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sICJrZWVwYWxpdmVzIHBhcmFtZXRlciBtdXN0IGJlIGFuIGludGVnZXIiKTsK IAkJCQkJCQllcnIgPSAxOwogCQkJCQkJfQogCQkJCQkJZWxzZSBpZiAodXNla2VlcGFsaXZl cyA9PSAwKQpAQCAtMjYxNiwxMSArMjU4MCwxMCBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAq Y29ubikKIAkJCQkJCQkJCQkJU09MX1NPQ0tFVCwgU09fS0VFUEFMSVZFLAogCQkJCQkJCQkJ CQkoY2hhciAqKSAmb24sIHNpemVvZihvbikpIDwgMCkKIAkJCQkJCXsKLQkJCQkJCQlhcHBl bmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCQkgIGxpYnBx X2dldHRleHQoIiVzKCVzKSBmYWlsZWQ6ICVzXG4iKSwKLQkJCQkJCQkJCQkJICAic2V0c29j a29wdCIsCi0JCQkJCQkJCQkJCSAgIlNPX0tFRVBBTElWRSIsCi0JCQkJCQkJCQkJCSAgU09D S19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJ CWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICIlcyglcykgZmFpbGVkOiAlcyIsCisJ CQkJCQkJCQkJCSAgICJzZXRzb2Nrb3B0IiwKKwkJCQkJCQkJCQkJICAgIlNPX0tFRVBBTElW RSIsCisJCQkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNp emVvZihzZWJ1ZikpKTsKIAkJCQkJCQllcnIgPSAxOwogCQkJCQkJfQogCQkJCQkJZWxzZSBp ZiAoIXNldEtlZXBhbGl2ZXNJZGxlKGNvbm4pCkBAIC0yNzQ0LDkgKzI3MDcsOCBAQCBQUWNv bm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAkJCQlpZiAoZ2V0c29ja29wdChjb25uLT5zb2Nr LCBTT0xfU09DS0VULCBTT19FUlJPUiwKIAkJCQkJCQkgICAoY2hhciAqKSAmb3B0dmFsLCAm b3B0bGVuKSA9PSAtMSkKIAkJCQl7Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5l cnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBnZXQg c29ja2V0IGVycm9yIHN0YXR1czogJXNcbiIpLAotCQkJCQkJCQkJICBTT0NLX1NUUkVSUk9S KFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgZ2V0IHNvY2tldCBlcnJvciBzdGF0dXM6 ICVzIiwKKwkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNp emVvZihzZWJ1ZikpKTsKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJfQogCQkJCWVs c2UgaWYgKG9wdHZhbCAhPSAwKQpAQCAtMjc3Miw5ICsyNzM0LDggQEAgUFFjb25uZWN0UG9s bChQR2Nvbm4gKmNvbm4pCiAJCQkJCQkJCShzdHJ1Y3Qgc29ja2FkZHIgKikgJmNvbm4tPmxh ZGRyLmFkZHIsCiAJCQkJCQkJCSZjb25uLT5sYWRkci5zYWxlbikgPCAwKQogCQkJCXsKLQkJ CQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSAg bGlicHFfZ2V0dGV4dCgiY291bGQgbm90IGdldCBjbGllbnQgYWRkcmVzcyBmcm9tIHNvY2tl dDogJXNcbiIpLAotCQkJCQkJCQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVm LCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4s ICJjb3VsZCBub3QgZ2V0IGNsaWVudCBhZGRyZXNzIGZyb20gc29ja2V0OiAlcyIsCisJCQkJ CQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYp KSk7CiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCX0KIApAQCAtMjgxMSwxMiArMjc3 MiwxMCBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAkJCQkJCSAqIHN0dWIKIAkJ CQkJCSAqLwogCQkJCQkJaWYgKGVycm5vID09IEVOT1NZUykKLQkJCQkJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCQkJIGxpYnBxX2dl dHRleHQoInJlcXVpcmVwZWVyIHBhcmFtZXRlciBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg cGxhdGZvcm1cbiIpKTsKKwkJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAi cmVxdWlyZXBlZXIgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9y bSIpOwogCQkJCQkJZWxzZQotCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJv ck1lc3NhZ2UsCi0JCQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IGdldCBw ZWVyIGNyZWRlbnRpYWxzOiAlc1xuIiksCi0JCQkJCQkJCQkJCSAgc3RyZXJyb3JfcihlcnJu bywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiY291bGQgbm90IGdldCBwZWVyIGNyZWRlbnRpYWxzOiAlcyIsCisJCQkJ CQkJCQkJCSAgIHN0cmVycm9yX3IoZXJybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJ CQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQkJfQogCkBAIC0yODI4LDkgKzI3ODcsOCBA QCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAogCQkJCQlpZiAoc3RyY21wKHJlbW90 ZV91c2VybmFtZSwgY29ubi0+cmVxdWlyZXBlZXIpICE9IDApCiAJCQkJCXsKLQkJCQkJCWFw cGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJICBsaWJw cV9nZXR0ZXh0KCJyZXF1aXJlcGVlciBzcGVjaWZpZXMgXCIlc1wiLCBidXQgYWN0dWFsIHBl ZXIgdXNlciBuYW1lIGlzIFwiJXNcIlxuIiksCi0JCQkJCQkJCQkJICBjb25uLT5yZXF1aXJl cGVlciwgcmVtb3RlX3VzZXJuYW1lKTsKKwkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJyZXF1aXJlcGVlciBzcGVjaWZpZXMgXCIlc1wiLCBidXQgYWN0dWFsIHBlZXIg dXNlciBuYW1lIGlzIFwiJXNcIiIsCisJCQkJCQkJCQkJICAgY29ubi0+cmVxdWlyZXBlZXIs IHJlbW90ZV91c2VybmFtZSk7CiAJCQkJCQlmcmVlKHJlbW90ZV91c2VybmFtZSk7CiAJCQkJ CQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQkJfQpAQCAtMjg3MCw5ICsyODI4LDggQEAgUFFj b25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAKIAkJCQkJaWYgKHBxUGFja2V0U2VuZChjb25u LCAwLCAmcHYsIHNpemVvZihwdikpICE9IFNUQVRVU19PSykKIAkJCQkJewotCQkJCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkgIGxpYnBx X2dldHRleHQoImNvdWxkIG5vdCBzZW5kIEdTU0FQSSBuZWdvdGlhdGlvbiBwYWNrZXQ6ICVz XG4iKSwKLQkJCQkJCQkJCQkgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNp emVvZihzZWJ1ZikpKTsKKwkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJj b3VsZCBub3Qgc2VuZCBHU1NBUEkgbmVnb3RpYXRpb24gcGFja2V0OiAlcyIsCisJCQkJCQkJ CQkJICAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkp OwogCQkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJCX0KIApAQCAtMjg4Miw4ICsyODM5 LDggQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJfQogCQkJCWVsc2UgaWYg KCFjb25uLT5nY3R4ICYmIGNvbm4tPmdzc2VuY21vZGVbMF0gPT0gJ3InKQogCQkJCXsKLQkJ CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJ CQkgbGlicHFfZ2V0dGV4dCgiR1NTQVBJIGVuY3J5cHRpb24gcmVxdWlyZWQgYnV0IHdhcyBp bXBvc3NpYmxlIChwb3NzaWJseSBubyBjcmVkZW50aWFsIGNhY2hlLCBubyBzZXJ2ZXIgc3Vw cG9ydCwgb3IgdXNpbmcgYSBsb2NhbCBzb2NrZXQpXG4iKSk7CisJCQkJCWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKGNvbm4sCisJCQkJCQkJCQkgICAiR1NTQVBJIGVuY3J5cHRpb24gcmVx dWlyZWQgYnV0IHdhcyBpbXBvc3NpYmxlIChwb3NzaWJseSBubyBjcmVkZW50aWFsIGNhY2hl LCBubyBzZXJ2ZXIgc3VwcG9ydCwgb3IgdXNpbmcgYSBsb2NhbCBzb2NrZXQpIik7CiAJCQkJ CWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCX0KICNlbmRpZgpAQCAtMjkyNCw5ICsyODgxLDgg QEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCXB2ID0gcGdfaHRvbjMyKE5F R09USUFURV9TU0xfQ09ERSk7CiAJCQkJCWlmIChwcVBhY2tldFNlbmQoY29ubiwgMCwgJnB2 LCBzaXplb2YocHYpKSAhPSBTVEFUVVNfT0spCiAJCQkJCXsKLQkJCQkJCWFwcGVuZFBRRXhw QnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCJjb3VsZCBub3Qgc2VuZCBTU0wgbmVnb3RpYXRpb24gcGFja2V0OiAlc1xuIiksCi0JCQkJ CQkJCQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYp KSk7CisJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IHNl bmQgU1NMIG5lZ290aWF0aW9uIHBhY2tldDogJXMiLAorCQkJCQkJCQkJCSAgIFNPQ0tfU1RS RVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJCWdvdG8g ZXJyb3JfcmV0dXJuOwogCQkJCQl9CiAJCQkJCS8qIE9rLCB3YWl0IGZvciByZXNwb25zZSAq LwpAQCAtMjk0Miw4ICsyODk4LDcgQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJ CQkJCQkJCQkJCQkJRW52aXJvbm1lbnRPcHRpb25zKTsKIAkJCQlpZiAoIXN0YXJ0cGFja2V0 KQogCQkJCXsKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQkJ CQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCQkJ CQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQl9CiAKQEAgLTI5NTUsOSArMjkxMCw4IEBAIFBR Y29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJCSAqLwogCQkJCWlmIChwcVBhY2tldFNl bmQoY29ubiwgMCwgc3RhcnRwYWNrZXQsIHBhY2tldGxlbikgIT0gU1RBVFVTX09LKQogCQkJ CXsKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJ CQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHNlbmQgc3RhcnR1cCBwYWNrZXQ6ICVz XG4iKSwKLQkJCQkJCQkJCSAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6 ZW9mKHNlYnVmKSkpOworCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291 bGQgbm90IHNlbmQgc3RhcnR1cCBwYWNrZXQ6ICVzIiwKKwkJCQkJCQkJCSAgIFNPQ0tfU1RS RVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJZnJlZShz dGFydHBhY2tldCk7CiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCX0KQEAgLTMwMzEs OCArMjk4NSw3IEBAIFBRY29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJCQkJCQkJCQkJ CQkgKiAidmVyaWZ5LWZ1bGwiICovCiAJCQkJCQl7CiAJCQkJCQkJLyogUmVxdWlyZSBTU0ws IGJ1dCBzZXJ2ZXIgZG9lcyBub3Qgd2FudCBpdCAqLwotCQkJCQkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4 dCgic2VydmVyIGRvZXMgbm90IHN1cHBvcnQgU1NMLCBidXQgU1NMIHdhcyByZXF1aXJlZFxu IikpOworCQkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJzZXJ2ZXIgZG9l cyBub3Qgc3VwcG9ydCBTU0wsIGJ1dCBTU0wgd2FzIHJlcXVpcmVkIik7CiAJCQkJCQkJZ290 byBlcnJvcl9yZXR1cm47CiAJCQkJCQl9CiAJCQkJCQkvKiBPdGhlcndpc2UsIHByb2NlZWQg d2l0aCBub3JtYWwgc3RhcnR1cCAqLwpAQCAtMzA1OCw5ICszMDExLDggQEAgUFFjb25uZWN0 UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCX0KIAkJCQkJZWxzZQogCQkJCQl7Ci0JCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCSAgbGli cHFfZ2V0dGV4dCgicmVjZWl2ZWQgaW52YWxpZCByZXNwb25zZSB0byBTU0wgbmVnb3RpYXRp b246ICVjXG4iKSwKLQkJCQkJCQkJCQkgIFNTTG9rKTsKKwkJCQkJCWxpYnBxX2FwcGVuZF9j b25uX2Vycm9yKGNvbm4sICJyZWNlaXZlZCBpbnZhbGlkIHJlc3BvbnNlIHRvIFNTTCBuZWdv dGlhdGlvbjogJWMiLAorCQkJCQkJCQkJCSAgIFNTTG9rKTsKIAkJCQkJCWdvdG8gZXJyb3Jf cmV0dXJuOwogCQkJCQl9CiAJCQkJfQpAQCAtMzA3OSw4ICszMDMxLDcgQEAgUFFjb25uZWN0 UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCSAqLwogCQkJCQlpZiAoY29ubi0+aW5DdXJzb3Ig IT0gY29ubi0+aW5FbmQpCiAJCQkJCXsKLQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJyZWNlaXZl ZCB1bmVuY3J5cHRlZCBkYXRhIGFmdGVyIFNTTCByZXNwb25zZVxuIikpOworCQkJCQkJbGli cHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInJlY2VpdmVkIHVuZW5jcnlwdGVkIGRhdGEg YWZ0ZXIgU1NMIHJlc3BvbnNlIik7CiAJCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQkJ fQogCkBAIC0zMTYwLDggKzMxMTEsNyBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikK IAkJCQkJCS8qIFNlcnZlciBkb2Vzbid0IHdhbnQgR1NTQVBJOyBmYWxsIGJhY2sgaWYgd2Ug Y2FuICovCiAJCQkJCQlpZiAoY29ubi0+Z3NzZW5jbW9kZVswXSA9PSAncicpCiAJCQkJCQl7 Ci0JCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IEdTU0FQ SSBlbmNyeXB0aW9uLCBidXQgaXQgd2FzIHJlcXVpcmVkXG4iKSk7CisJCQkJCQkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInNlcnZlciBkb2Vzbid0IHN1cHBvcnQgR1NTQVBJ IGVuY3J5cHRpb24sIGJ1dCBpdCB3YXMgcmVxdWlyZWQiKTsKIAkJCQkJCQlnb3RvIGVycm9y X3JldHVybjsKIAkJCQkJCX0KIApAQCAtMzE3Miw5ICszMTIyLDggQEAgUFFjb25uZWN0UG9s bChQR2Nvbm4gKmNvbm4pCiAJCQkJCX0KIAkJCQkJZWxzZSBpZiAoZ3NzX29rICE9ICdHJykK IAkJCQkJewotCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoInJlY2VpdmVkIGludmFsaWQgcmVzcG9uc2Ug dG8gR1NTQVBJIG5lZ290aWF0aW9uOiAlY1xuIiksCi0JCQkJCQkJCQkJICBnc3Nfb2spOwor CQkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInJlY2VpdmVkIGludmFsaWQg cmVzcG9uc2UgdG8gR1NTQVBJIG5lZ290aWF0aW9uOiAlYyIsCisJCQkJCQkJCQkJICAgZ3Nz X29rKTsKIAkJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCQl9CiAJCQkJfQpAQCAtMzE5 MSw4ICszMTQwLDcgQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCSAqLwog CQkJCQlpZiAoY29ubi0+aW5DdXJzb3IgIT0gY29ubi0+aW5FbmQpCiAJCQkJCXsKLQkJCQkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJ CSBsaWJwcV9nZXR0ZXh0KCJyZWNlaXZlZCB1bmVuY3J5cHRlZCBkYXRhIGFmdGVyIEdTU0FQ SSBlbmNyeXB0aW9uIHJlc3BvbnNlXG4iKSk7CisJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAicmVjZWl2ZWQgdW5lbmNyeXB0ZWQgZGF0YSBhZnRlciBHU1NBUEkgZW5j cnlwdGlvbiByZXNwb25zZSIpOwogCQkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJCX0K IApAQCAtMzI1MSw5ICszMTk5LDggQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJ CQkJICovCiAJCQkJaWYgKCEoYmVyZXNwID09ICdSJyB8fCBiZXJlc3AgPT0gJ0UnKSkKIAkJ CQl7Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJ CQkJCQkgIGxpYnBxX2dldHRleHQoImV4cGVjdGVkIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3Qg ZnJvbSBzZXJ2ZXIsIGJ1dCByZWNlaXZlZCAlY1xuIiksCi0JCQkJCQkJCQkgIGJlcmVzcCk7 CisJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJleHBlY3RlZCBhdXRoZW50 aWNhdGlvbiByZXF1ZXN0IGZyb20gc2VydmVyLCBidXQgcmVjZWl2ZWQgJWMiLAorCQkJCQkJ CQkJICAgYmVyZXNwKTsKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJfQogCkBAIC0z Mjc2LDkgKzMyMjMsOCBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAkJCQkgKi8K IAkJCQlpZiAoYmVyZXNwID09ICdSJyAmJiAobXNnTGVuZ3RoIDwgOCB8fCBtc2dMZW5ndGgg PiAyMDAwKSkKIAkJCQl7Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1l c3NhZ2UsCi0JCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImV4cGVjdGVkIGF1dGhlbnRpY2F0 aW9uIHJlcXVlc3QgZnJvbSBzZXJ2ZXIsIGJ1dCByZWNlaXZlZCAlY1xuIiksCi0JCQkJCQkJ CQkgIGJlcmVzcCk7CisJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJleHBl Y3RlZCBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IGZyb20gc2VydmVyLCBidXQgcmVjZWl2ZWQg JWMiLAorCQkJCQkJCQkJICAgYmVyZXNwKTsKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJ CQkJfQogCkBAIC0zNDgzLDggKzM0MjksNyBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29u bikKIAkJCQlpZiAocmVzKQogCQkJCXsKIAkJCQkJaWYgKHJlcy0+cmVzdWx0U3RhdHVzICE9 IFBHUkVTX0ZBVEFMX0VSUk9SKQotCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4t PmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoInVuZXhwZWN0ZWQg bWVzc2FnZSBmcm9tIHNlcnZlciBkdXJpbmcgc3RhcnR1cFxuIikpOworCQkJCQkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInVuZXhwZWN0ZWQgbWVzc2FnZSBmcm9tIHNlcnZl ciBkdXJpbmcgc3RhcnR1cCIpOwogCQkJCQllbHNlIGlmIChjb25uLT5zZW5kX2FwcG5hbWUg JiYKIAkJCQkJCQkgKGNvbm4tPmFwcG5hbWUgfHwgY29ubi0+ZmJhcHBuYW1lKSkKIAkJCQkJ ewpAQCAtMzU3NSwxMSArMzUyMCw5IEBAIFBRY29ubmVjdFBvbGwoUEdjb25uICpjb25uKQog CQkJCQl7CiAJCQkJCQkvKiBXcm9uZyBzZXJ2ZXIgc3RhdGUsIHJlamVjdCBhbmQgdHJ5IHRo ZSBuZXh0IGhvc3QgKi8KIAkJCQkJCWlmIChjb25uLT50YXJnZXRfc2VydmVyX3R5cGUgPT0g U0VSVkVSX1RZUEVfUkVBRF9XUklURSkKLQkJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoInNlc3Np b24gaXMgcmVhZC1vbmx5XG4iKSk7CisJCQkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgInNlc3Npb24gaXMgcmVhZC1vbmx5Iik7CiAJCQkJCQllbHNlCi0JCQkJCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJzZXNzaW9uIGlzIG5vdCByZWFkLW9ubHlcbiIpKTsKKwkJCQkJCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAic2Vzc2lvbiBpcyBub3QgcmVhZC1vbmx5 Iik7CiAKIAkJCQkJCS8qIENsb3NlIGNvbm5lY3Rpb24gcG9saXRlbHkuICovCiAJCQkJCQlj b25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX09LOwpAQCAtMzYzMiwxMSArMzU3NSw5IEBAIFBR Y29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJCQl7CiAJCQkJCQkvKiBXcm9uZyBzZXJ2 ZXIgc3RhdGUsIHJlamVjdCBhbmQgdHJ5IHRoZSBuZXh0IGhvc3QgKi8KIAkJCQkJCWlmIChj b25uLT50YXJnZXRfc2VydmVyX3R5cGUgPT0gU0VSVkVSX1RZUEVfUFJJTUFSWSkKLQkJCQkJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJ CQkJIGxpYnBxX2dldHRleHQoInNlcnZlciBpcyBpbiBob3Qgc3RhbmRieSBtb2RlXG4iKSk7 CisJCQkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInNlcnZlciBpcyBpbiBo b3Qgc3RhbmRieSBtb2RlIik7CiAJCQkJCQllbHNlCi0JCQkJCQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0 KCJzZXJ2ZXIgaXMgbm90IGluIGhvdCBzdGFuZGJ5IG1vZGVcbiIpKTsKKwkJCQkJCQlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAic2VydmVyIGlzIG5vdCBpbiBob3Qgc3RhbmRi eSBtb2RlIik7CiAKIAkJCQkJCS8qIENsb3NlIGNvbm5lY3Rpb24gcG9saXRlbHkuICovCiAJ CQkJCQljb25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX09LOwpAQCAtMzc1Miw4ICszNjkzLDcg QEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJUFFjbGVhcihyZXMpOwogCiAJ CQkJLyogQXBwZW5kIGVycm9yIHJlcG9ydCB0byBjb25uLT5lcnJvck1lc3NhZ2UuICovCi0J CQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBs aWJwcV9nZXR0ZXh0KCJcIiVzXCIgZmFpbGVkXG4iKSwKKwkJCQlsaWJwcV9hcHBlbmRfY29u bl9lcnJvcihjb25uLCAiXCIlc1wiIGZhaWxlZCIsCiAJCQkJCQkJCSAgIlNIT1cgdHJhbnNh Y3Rpb25fcmVhZF9vbmx5Iik7CiAKIAkJCQkvKiBDbG9zZSBjb25uZWN0aW9uIHBvbGl0ZWx5 LiAqLwpAQCAtMzgwMyw4ICszNzQzLDcgQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4p CiAJCQkJUFFjbGVhcihyZXMpOwogCiAJCQkJLyogQXBwZW5kIGVycm9yIHJlcG9ydCB0byBj b25uLT5lcnJvck1lc3NhZ2UuICovCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVy cm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJcIiVzXCIgZmFpbGVkXG4i KSwKKwkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiXCIlc1wiIGZhaWxlZCIs CiAJCQkJCQkJCSAgIlNFTEVDVCBwZ19pc19pbl9yZWNvdmVyeSgpIik7CiAKIAkJCQkvKiBD bG9zZSBjb25uZWN0aW9uIHBvbGl0ZWx5LiAqLwpAQCAtMzgxNyw5ICszNzU2LDggQEAgUFFj b25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQl9CiAKIAkJZGVmYXVsdDoKLQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJICBsaWJwcV9nZXR0 ZXh0KCJpbnZhbGlkIGNvbm5lY3Rpb24gc3RhdGUgJWQsICIKLQkJCQkJCQkJCQkJInByb2Jh Ymx5IGluZGljYXRpdmUgb2YgbWVtb3J5IGNvcnJ1cHRpb25cbiIpLAorCQkJbGlicHFfYXBw ZW5kX2Nvbm5fZXJyb3IoY29ubiwKKwkJCQkJCQkgICAiaW52YWxpZCBjb25uZWN0aW9uIHN0 YXRlICVkLCBwcm9iYWJseSBpbmRpY2F0aXZlIG9mIG1lbW9yeSBjb3JydXB0aW9uIiwKIAkJ CQkJCQkgIGNvbm4tPnN0YXR1cyk7CiAJCQlnb3RvIGVycm9yX3JldHVybjsKIAl9CkBAIC00 NzQwLDcgKzQ2NzgsNyBAQCBsZGFwU2VydmljZUxvb2t1cChjb25zdCBjaGFyICpwdXJsLCBQ UWNvbm5pbmZvT3B0aW9uICpvcHRpb25zLAogCiAJaWYgKCh1cmwgPSBzdHJkdXAocHVybCkp ID09IE5VTEwpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihlcnJvck1lc3NhZ2UsIGxp YnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnlcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9y KGVycm9yTWVzc2FnZSwgIm91dCBvZiBtZW1vcnkiKTsKIAkJcmV0dXJuIDM7CiAJfQogCkBA IC00NzUyLDggKzQ2OTAsOCBAQCBsZGFwU2VydmljZUxvb2t1cChjb25zdCBjaGFyICpwdXJs LCBQUWNvbm5pbmZvT3B0aW9uICpvcHRpb25zLAogCiAJaWYgKHBnX3N0cm5jYXNlY21wKHVy bCwgTERBUF9VUkwsIHN0cmxlbihMREFQX1VSTCkpICE9IDApCiAJewotCQlhcHBlbmRQUUV4 cEJ1ZmZlcihlcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoImludmFsaWQg TERBUCBVUkwgXCIlc1wiOiBzY2hlbWUgbXVzdCBiZSBsZGFwOi8vXG4iKSwgcHVybCk7CisJ CWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsCisJCQkJCQkgICAiaW52YWxpZCBM REFQIFVSTCBcIiVzXCI6IHNjaGVtZSBtdXN0IGJlIGxkYXA6Ly8iLCBwdXJsKTsKIAkJZnJl ZSh1cmwpOwogCQlyZXR1cm4gMzsKIAl9CkBAIC00NzY3LDkgKzQ3MDUsOSBAQCBsZGFwU2Vy dmljZUxvb2t1cChjb25zdCBjaGFyICpwdXJsLCBQUWNvbm5pbmZvT3B0aW9uICpvcHRpb25z LAogCXAgPSBzdHJjaHIodXJsICsgc3RybGVuKExEQVBfVVJMKSwgJy8nKTsKIAlpZiAocCA9 PSBOVUxMIHx8ICoocCArIDEpID09ICdcMCcgfHwgKihwICsgMSkgPT0gJz8nKQogCXsKLQkJ YXBwZW5kUFFFeHBCdWZmZXIoZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCJpbnZhbGlkIExEQVAgVVJMIFwiJXNcIjogbWlzc2luZyBkaXN0aW5ndWlzaGVkIG5hbWVc biIpLAotCQkJCQkJICBwdXJsKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2Fn ZSwKKwkJCQkJCSAgICJpbnZhbGlkIExEQVAgVVJMIFwiJXNcIjogbWlzc2luZyBkaXN0aW5n dWlzaGVkIG5hbWUiLAorCQkJCQkJICAgcHVybCk7CiAJCWZyZWUodXJsKTsKIAkJcmV0dXJu IDM7CiAJfQpAQCAtNDc3OSw5ICs0NzE3LDkgQEAgbGRhcFNlcnZpY2VMb29rdXAoY29uc3Qg Y2hhciAqcHVybCwgUFFjb25uaW5mb09wdGlvbiAqb3B0aW9ucywKIAkvKiBhdHRyaWJ1dGUg Ki8KIAlpZiAoKHAgPSBzdHJjaHIoZG4sICc/JykpID09IE5VTEwgfHwgKihwICsgMSkgPT0g J1wwJyB8fCAqKHAgKyAxKSA9PSAnPycpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlcihlcnJv ck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoImludmFsaWQgTERBUCBVUkwgXCIl c1wiOiBtdXN0IGhhdmUgZXhhY3RseSBvbmUgYXR0cmlidXRlXG4iKSwKLQkJCQkJCSAgcHVy bCk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsCisJCQkJCQkgICAiaW52 YWxpZCBMREFQIFVSTCBcIiVzXCI6IG11c3QgaGF2ZSBleGFjdGx5IG9uZSBhdHRyaWJ1dGUi LAorCQkJCQkJICAgcHVybCk7CiAJCWZyZWUodXJsKTsKIAkJcmV0dXJuIDM7CiAJfQpAQCAt NDc5MSw5ICs0NzI5LDkgQEAgbGRhcFNlcnZpY2VMb29rdXAoY29uc3QgY2hhciAqcHVybCwg UFFjb25uaW5mb09wdGlvbiAqb3B0aW9ucywKIAkvKiBzY29wZSAqLwogCWlmICgocCA9IHN0 cmNocihhdHRyc1swXSwgJz8nKSkgPT0gTlVMTCB8fCAqKHAgKyAxKSA9PSAnXDAnIHx8ICoo cCArIDEpID09ICc/JykKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2FnZSwK LQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCBMREFQIFVSTCBcIiVzXCI6IG11c3Qg aGF2ZSBzZWFyY2ggc2NvcGUgKGJhc2Uvb25lL3N1YilcbiIpLAotCQkJCQkJICBwdXJsKTsK KwkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwKKwkJCQkJCSAgICJpbnZhbGlk IExEQVAgVVJMIFwiJXNcIjogbXVzdCBoYXZlIHNlYXJjaCBzY29wZSAoYmFzZS9vbmUvc3Vi KSIsCisJCQkJCQkgICBwdXJsKTsKIAkJZnJlZSh1cmwpOwogCQlyZXR1cm4gMzsKIAl9CkBA IC00ODAzLDkgKzQ3NDEsOSBAQCBsZGFwU2VydmljZUxvb2t1cChjb25zdCBjaGFyICpwdXJs LCBQUWNvbm5pbmZvT3B0aW9uICpvcHRpb25zLAogCS8qIGZpbHRlciAqLwogCWlmICgocCA9 IHN0cmNocihzY29wZXN0ciwgJz8nKSkgPT0gTlVMTCB8fCAqKHAgKyAxKSA9PSAnXDAnIHx8 ICoocCArIDEpID09ICc/JykKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2Fn ZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCBMREFQIFVSTCBcIiVzXCI6IG5v IGZpbHRlclxuIiksCi0JCQkJCQkgIHB1cmwpOworCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJy b3JNZXNzYWdlLAorCQkJCQkJICAgImludmFsaWQgTERBUCBVUkwgXCIlc1wiOiBubyBmaWx0 ZXIiLAorCQkJCQkJICAgcHVybCk7CiAJCWZyZWUodXJsKTsKIAkJcmV0dXJuIDM7CiAJfQpA QCAtNDgyNSw5ICs0NzYzLDkgQEAgbGRhcFNlcnZpY2VMb29rdXAoY29uc3QgY2hhciAqcHVy bCwgUFFjb25uaW5mb09wdGlvbiAqb3B0aW9ucywKIAkJbHBvcnQgPSBzdHJ0b2wocG9ydHN0 ciwgJmVuZHB0ciwgMTApOwogCQlpZiAoKnBvcnRzdHIgPT0gJ1wwJyB8fCAqZW5kcHRyICE9 ICdcMCcgfHwgZXJybm8gfHwgbHBvcnQgPCAwIHx8IGxwb3J0ID4gNjU1MzUpCiAJCXsKLQkJ CWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRl eHQoImludmFsaWQgTERBUCBVUkwgXCIlc1wiOiBpbnZhbGlkIHBvcnQgbnVtYmVyXG4iKSwK LQkJCQkJCQkgIHB1cmwpOworCQkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwK KwkJCQkJCQkgICAiaW52YWxpZCBMREFQIFVSTCBcIiVzXCI6IGludmFsaWQgcG9ydCBudW1i ZXIiLAorCQkJCQkJCSAgIHB1cmwpOwogCQkJZnJlZSh1cmwpOwogCQkJcmV0dXJuIDM7CiAJ CX0KQEAgLTQ4MzcsOSArNDc3NSw5IEBAIGxkYXBTZXJ2aWNlTG9va3VwKGNvbnN0IGNoYXIg KnB1cmwsIFBRY29ubmluZm9PcHRpb24gKm9wdGlvbnMsCiAJLyogQWxsb3cgb25seSBvbmUg YXR0cmlidXRlICovCiAJaWYgKHN0cmNocihhdHRyc1swXSwgJywnKSAhPSBOVUxMKQogCXsK LQkJYXBwZW5kUFFFeHBCdWZmZXIoZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0 ZXh0KCJpbnZhbGlkIExEQVAgVVJMIFwiJXNcIjogbXVzdCBoYXZlIGV4YWN0bHkgb25lIGF0 dHJpYnV0ZVxuIiksCi0JCQkJCQkgIHB1cmwpOworCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJy b3JNZXNzYWdlLAorCQkJCQkJICAgImludmFsaWQgTERBUCBVUkwgXCIlc1wiOiBtdXN0IGhh dmUgZXhhY3RseSBvbmUgYXR0cmlidXRlIiwKKwkJCQkJCSAgIHB1cmwpOwogCQlmcmVlKHVy bCk7CiAJCXJldHVybiAzOwogCX0KQEAgLTQ4NTMsOSArNDc5MSw5IEBAIGxkYXBTZXJ2aWNl TG9va3VwKGNvbnN0IGNoYXIgKnB1cmwsIFBRY29ubmluZm9PcHRpb24gKm9wdGlvbnMsCiAJ CXNjb3BlID0gTERBUF9TQ09QRV9TVUJUUkVFOwogCWVsc2UKIAl7Ci0JCWFwcGVuZFBRRXhw QnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCBM REFQIFVSTCBcIiVzXCI6IG11c3QgaGF2ZSBzZWFyY2ggc2NvcGUgKGJhc2Uvb25lL3N1Yilc biIpLAotCQkJCQkJICBwdXJsKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2Fn ZSwKKwkJCQkJCSAgICJpbnZhbGlkIExEQVAgVVJMIFwiJXNcIjogbXVzdCBoYXZlIHNlYXJj aCBzY29wZSAoYmFzZS9vbmUvc3ViKSIsCisJCQkJCQkgICBwdXJsKTsKIAkJZnJlZSh1cmwp OwogCQlyZXR1cm4gMzsKIAl9CkBAIC00ODYzLDggKzQ4MDEsNyBAQCBsZGFwU2VydmljZUxv b2t1cChjb25zdCBjaGFyICpwdXJsLCBQUWNvbm5pbmZvT3B0aW9uICpvcHRpb25zLAogCS8q IGluaXRpYWxpemUgTERBUCBzdHJ1Y3R1cmUgKi8KIAlpZiAoKGxkID0gbGRhcF9pbml0KGhv c3RuYW1lLCBwb3J0KSkgPT0gTlVMTCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGVy cm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IGNyZWF0ZSBM REFQIHN0cnVjdHVyZVxuIikpOworCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNzYWdl LCAiY291bGQgbm90IGNyZWF0ZSBMREFQIHN0cnVjdHVyZSIpOwogCQlmcmVlKHVybCk7CiAJ CXJldHVybiAzOwogCX0KQEAgLTQ5MzksOSArNDg3Niw3IEBAIGxkYXBTZXJ2aWNlTG9va3Vw KGNvbnN0IGNoYXIgKnB1cmwsIFBRY29ubmluZm9PcHRpb24gKm9wdGlvbnMsCiAJewogCQlp ZiAocmVzICE9IE5VTEwpCiAJCQlsZGFwX21zZ2ZyZWUocmVzKTsKLQkJYXBwZW5kUFFFeHBC dWZmZXIoZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJsb29rdXAgb24g TERBUCBzZXJ2ZXIgZmFpbGVkOiAlc1xuIiksCi0JCQkJCQkgIGxkYXBfZXJyMnN0cmluZyhy YykpOworCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNzYWdlLCAibG9va3VwIG9uIExE QVAgc2VydmVyIGZhaWxlZDogJXMiLCBsZGFwX2VycjJzdHJpbmcocmMpKTsKIAkJbGRhcF91 bmJpbmQobGQpOwogCQlmcmVlKHVybCk7CiAJCXJldHVybiAxOwpAQCAtNDk1MCw5ICs0ODg1 LDEwIEBAIGxkYXBTZXJ2aWNlTG9va3VwKGNvbnN0IGNoYXIgKnB1cmwsIFBRY29ubmluZm9P cHRpb24gKm9wdGlvbnMsCiAJLyogY29tcGxhaW4gaWYgdGhlcmUgd2FzIG5vdCBleGFjdGx5 IG9uZSByZXN1bHQgKi8KIAlpZiAoKHJjID0gbGRhcF9jb3VudF9lbnRyaWVzKGxkLCByZXMp KSAhPSAxKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZXJyb3JNZXNzYWdlLAotCQkJ CQkJCSByYyA/IGxpYnBxX2dldHRleHQoIm1vcmUgdGhhbiBvbmUgZW50cnkgZm91bmQgb24g TERBUCBsb29rdXBcbiIpCi0JCQkJCQkJIDogbGlicHFfZ2V0dGV4dCgibm8gZW50cnkgZm91 bmQgb24gTERBUCBsb29rdXBcbiIpKTsKKwkJaWYgKHJjID4gMSkKKwkJCWxpYnBxX2FwcGVu ZF9lcnJvcihlcnJvck1lc3NhZ2UsICJtb3JlIHRoYW4gb25lIGVudHJ5IGZvdW5kIG9uIExE QVAgbG9va3VwIik7CisJCWVsc2UKKwkJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3Nh Z2UsICJubyBlbnRyeSBmb3VuZCBvbiBMREFQIGxvb2t1cCIpOwogCQlsZGFwX21zZ2ZyZWUo cmVzKTsKIAkJbGRhcF91bmJpbmQobGQpOwogCQlmcmVlKHVybCk7CkBAIC00OTYzLDggKzQ4 OTksNyBAQCBsZGFwU2VydmljZUxvb2t1cChjb25zdCBjaGFyICpwdXJsLCBQUWNvbm5pbmZv T3B0aW9uICpvcHRpb25zLAogCWlmICgoZW50cnkgPSBsZGFwX2ZpcnN0X2VudHJ5KGxkLCBy ZXMpKSA9PSBOVUxMKQogCXsKIAkJLyogc2hvdWxkIG5ldmVyIGhhcHBlbiAqLwotCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihlcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQo Im5vIGVudHJ5IGZvdW5kIG9uIExEQVAgbG9va3VwXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9l cnJvcihlcnJvck1lc3NhZ2UsICJubyBlbnRyeSBmb3VuZCBvbiBMREFQIGxvb2t1cCIpOwog CQlsZGFwX21zZ2ZyZWUocmVzKTsKIAkJbGRhcF91bmJpbmQobGQpOwogCQlmcmVlKHVybCk7 CkBAIC00OTc0LDggKzQ5MDksNyBAQCBsZGFwU2VydmljZUxvb2t1cChjb25zdCBjaGFyICpw dXJsLCBQUWNvbm5pbmZvT3B0aW9uICpvcHRpb25zLAogCS8qIGdldCB2YWx1ZXMgKi8KIAlp ZiAoKHZhbHVlcyA9IGxkYXBfZ2V0X3ZhbHVlc19sZW4obGQsIGVudHJ5LCBhdHRyc1swXSkp ID09IE5VTEwpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihlcnJvck1lc3NhZ2UsCi0J CQkJCQkJIGxpYnBxX2dldHRleHQoImF0dHJpYnV0ZSBoYXMgbm8gdmFsdWVzIG9uIExEQVAg bG9va3VwXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsICJhdHRy aWJ1dGUgaGFzIG5vIHZhbHVlcyBvbiBMREFQIGxvb2t1cCIpOwogCQlsZGFwX21zZ2ZyZWUo cmVzKTsKIAkJbGRhcF91bmJpbmQobGQpOwogCQlmcmVlKHVybCk7CkBAIC00OTg3LDggKzQ5 MjEsNyBAQCBsZGFwU2VydmljZUxvb2t1cChjb25zdCBjaGFyICpwdXJsLCBQUWNvbm5pbmZv T3B0aW9uICpvcHRpb25zLAogCiAJaWYgKHZhbHVlc1swXSA9PSBOVUxMKQogCXsKLQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0 KCJhdHRyaWJ1dGUgaGFzIG5vIHZhbHVlcyBvbiBMREFQIGxvb2t1cFxuIikpOworCQlsaWJw cV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNzYWdlLCAiYXR0cmlidXRlIGhhcyBubyB2YWx1ZXMg b24gTERBUCBsb29rdXAiKTsKIAkJbGRhcF92YWx1ZV9mcmVlX2xlbih2YWx1ZXMpOwogCQls ZGFwX3VuYmluZChsZCk7CiAJCXJldHVybiAxOwpAQCAtNTAwMCw4ICs0OTMzLDcgQEAgbGRh cFNlcnZpY2VMb29rdXAoY29uc3QgY2hhciAqcHVybCwgUFFjb25uaW5mb09wdGlvbiAqb3B0 aW9ucywKIAkJc2l6ZSArPSB2YWx1ZXNbaV0tPmJ2X2xlbiArIDE7CiAJaWYgKChyZXN1bHQg PSBtYWxsb2Moc2l6ZSkpID09IE5VTEwpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihl cnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnlcbiIp KTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwgIm91dCBvZiBtZW1vcnki KTsKIAkJbGRhcF92YWx1ZV9mcmVlX2xlbih2YWx1ZXMpOwogCQlsZGFwX3VuYmluZChsZCk7 CiAJCXJldHVybiAzOwpAQCAtNTAzOSw5ICs0OTcxLDkgQEAgbGRhcFNlcnZpY2VMb29rdXAo Y29uc3QgY2hhciAqcHVybCwgUFFjb25uaW5mb09wdGlvbiAqb3B0aW9ucywKIAkJCQl9CiAJ CQkJZWxzZSBpZiAobGRfaXNfbmxfY3IoKnApKQogCQkJCXsKLQkJCQkJYXBwZW5kUFFFeHBC dWZmZXIoZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJtaXNzaW5n IFwiPVwiIGFmdGVyIFwiJXNcIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nXG4iKSwKLQkJ CQkJCQkJCSAgb3B0bmFtZSk7CisJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3Nh Z2UsCisJCQkJCQkJCQkgICAibWlzc2luZyBcIj1cIiBhZnRlciBcIiVzXCIgaW4gY29ubmVj dGlvbiBpbmZvIHN0cmluZyIsCisJCQkJCQkJCQkgICBvcHRuYW1lKTsKIAkJCQkJZnJlZShy ZXN1bHQpOwogCQkJCQlyZXR1cm4gMzsKIAkJCQl9CkBAIC01MDU4LDkgKzQ5OTAsOSBAQCBs ZGFwU2VydmljZUxvb2t1cChjb25zdCBjaGFyICpwdXJsLCBQUWNvbm5pbmZvT3B0aW9uICpv cHRpb25zLAogCQkJCX0KIAkJCQllbHNlIGlmICghbGRfaXNfc3BfdGFiKCpwKSkKIAkJCQl7 Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSAgbGli cHFfZ2V0dGV4dCgibWlzc2luZyBcIj1cIiBhZnRlciBcIiVzXCIgaW4gY29ubmVjdGlvbiBp bmZvIHN0cmluZ1xuIiksCi0JCQkJCQkJCQkgIG9wdG5hbWUpOworCQkJCQlsaWJwcV9hcHBl bmRfZXJyb3IoZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkJICAgIm1pc3NpbmcgXCI9XCIgYWZ0 ZXIgXCIlc1wiIGluIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmciLAorCQkJCQkJCQkJICAgb3B0 bmFtZSk7CiAJCQkJCWZyZWUocmVzdWx0KTsKIAkJCQkJcmV0dXJuIDM7CiAJCQkJfQpAQCAt NTExOSw4ICs1MDUxLDcgQEAgbGRhcFNlcnZpY2VMb29rdXAoY29uc3QgY2hhciAqcHVybCwg UFFjb25uaW5mb09wdGlvbiAqb3B0aW9ucywKIAkJCQkJCW9wdGlvbnNbaV0udmFsID0gc3Ry ZHVwKG9wdHZhbCk7CiAJCQkJCQlpZiAoIW9wdGlvbnNbaV0udmFsKQogCQkJCQkJewotCQkJ CQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQkJCQkJbGlicHFfYXBwZW5k X2Vycm9yKGVycm9yTWVzc2FnZSwgIm91dCBvZiBtZW1vcnkiKTsKIAkJCQkJCQlmcmVlKHJl c3VsdCk7CiAJCQkJCQkJcmV0dXJuIDM7CiAJCQkJCQl9CkBAIC01MTMxLDkgKzUwNjIsNyBA QCBsZGFwU2VydmljZUxvb2t1cChjb25zdCBjaGFyICpwdXJsLCBQUWNvbm5pbmZvT3B0aW9u ICpvcHRpb25zLAogCQkJfQogCQkJaWYgKCFmb3VuZF9rZXl3b3JkKQogCQkJewotCQkJCWFw cGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCJpbnZhbGlkIGNvbm5lY3Rpb24gb3B0aW9uIFwiJXNcIlxuIiksCi0JCQkJCQkJCSAgb3B0 bmFtZSk7CisJCQkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwgImludmFsaWQg Y29ubmVjdGlvbiBvcHRpb24gXCIlc1wiIiwgb3B0bmFtZSk7CiAJCQkJZnJlZShyZXN1bHQp OwogCQkJCXJldHVybiAxOwogCQkJfQpAQCAtNTE0Nyw4ICs1MDc2LDggQEAgbGRhcFNlcnZp Y2VMb29rdXAoY29uc3QgY2hhciAqcHVybCwgUFFjb25uaW5mb09wdGlvbiAqb3B0aW9ucywK IAogCWlmIChzdGF0ZSA9PSA1IHx8IHN0YXRlID09IDYpCiAJewotCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihlcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoInVudGVybWlu YXRlZCBxdW90ZWQgc3RyaW5nIGluIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmdcbiIpKTsKKwkJ bGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwKKwkJCQkJCSAgICJ1bnRlcm1pbmF0 ZWQgcXVvdGVkIHN0cmluZyBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nIik7CiAJCXJldHVy biAzOwogCX0KIApAQCAtNTIyOCw4ICs1MTU3LDcgQEAgcGFyc2VTZXJ2aWNlSW5mbyhQUWNv bm5pbmZvT3B0aW9uICpvcHRpb25zLCBQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2UpCiBsYXN0 X2ZpbGU6CiAJaWYgKCFncm91cF9mb3VuZCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKGVy cm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiZGVmaW5pdGlvbiBvZiBzZXJ2 aWNlIFwiJXNcIiBub3QgZm91bmRcbiIpLCBzZXJ2aWNlKTsKKwkJbGlicHFfYXBwZW5kX2Vy cm9yKGVycm9yTWVzc2FnZSwgImRlZmluaXRpb24gb2Ygc2VydmljZSBcIiVzXCIgbm90IGZv dW5kIiwgc2VydmljZSk7CiAJCXJldHVybiAzOwogCX0KIApAQCAtNTI1NSw4ICs1MTgzLDcg QEAgcGFyc2VTZXJ2aWNlRmlsZShjb25zdCBjaGFyICpzZXJ2aWNlRmlsZSwKIAlmID0gZm9w ZW4oc2VydmljZUZpbGUsICJyIik7CiAJaWYgKGYgPT0gTlVMTCkKIAl7Ci0JCWFwcGVuZFBR RXhwQnVmZmVyKGVycm9yTWVzc2FnZSwgbGlicHFfZ2V0dGV4dCgic2VydmljZSBmaWxlIFwi JXNcIiBub3QgZm91bmRcbiIpLAotCQkJCQkJICBzZXJ2aWNlRmlsZSk7CisJCWxpYnBxX2Fw cGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsICJzZXJ2aWNlIGZpbGUgXCIlc1wiIG5vdCBmb3Vu ZCIsIHNlcnZpY2VGaWxlKTsKIAkJcmV0dXJuIDE7CiAJfQogCkBAIC01MjY4LDEwICs1MTk1 LDEwIEBAIHBhcnNlU2VydmljZUZpbGUoY29uc3QgY2hhciAqc2VydmljZUZpbGUsCiAKIAkJ aWYgKHN0cmxlbihsaW5lKSA+PSBzaXplb2YoYnVmKSAtIDEpCiAJCXsKLQkJCWFwcGVuZFBR RXhwQnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImxpbmUg JWQgdG9vIGxvbmcgaW4gc2VydmljZSBmaWxlIFwiJXNcIlxuIiksCi0JCQkJCQkJICBsaW5l bnIsCi0JCQkJCQkJICBzZXJ2aWNlRmlsZSk7CisJCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJy b3JNZXNzYWdlLAorCQkJCQkJCSAgICJsaW5lICVkIHRvbyBsb25nIGluIHNlcnZpY2UgZmls ZSBcIiVzXCIiLAorCQkJCQkJCSAgIGxpbmVuciwKKwkJCQkJCQkgICBzZXJ2aWNlRmlsZSk7 CiAJCQlyZXN1bHQgPSAyOwogCQkJZ290byBleGl0OwogCQl9CkBAIC01MzM5LDEwICs1MjY2 LDEwIEBAIHBhcnNlU2VydmljZUZpbGUoY29uc3QgY2hhciAqc2VydmljZUZpbGUsCiAJCQkJ dmFsID0gc3RyY2hyKGxpbmUsICc9Jyk7CiAJCQkJaWYgKHZhbCA9PSBOVUxMKQogCQkJCXsK LQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJICBsaWJw cV9nZXR0ZXh0KCJzeW50YXggZXJyb3IgaW4gc2VydmljZSBmaWxlIFwiJXNcIiwgbGluZSAl ZFxuIiksCi0JCQkJCQkJCQkgIHNlcnZpY2VGaWxlLAotCQkJCQkJCQkJICBsaW5lbnIpOwor CQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkJICAgInN5 bnRheCBlcnJvciBpbiBzZXJ2aWNlIGZpbGUgXCIlc1wiLCBsaW5lICVkIiwKKwkJCQkJCQkJ CSAgIHNlcnZpY2VGaWxlLAorCQkJCQkJCQkJICAgbGluZW5yKTsKIAkJCQkJcmVzdWx0ID0g MzsKIAkJCQkJZ290byBleGl0OwogCQkJCX0KQEAgLTUzNTAsMTAgKzUyNzcsMTAgQEAgcGFy c2VTZXJ2aWNlRmlsZShjb25zdCBjaGFyICpzZXJ2aWNlRmlsZSwKIAogCQkJCWlmIChzdHJj bXAoa2V5LCAic2VydmljZSIpID09IDApCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZl cihlcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoIm5lc3RlZCBzZXJ2 aWNlIHNwZWNpZmljYXRpb25zIG5vdCBzdXBwb3J0ZWQgaW4gc2VydmljZSBmaWxlIFwiJXNc IiwgbGluZSAlZFxuIiksCi0JCQkJCQkJCQkgIHNlcnZpY2VGaWxlLAotCQkJCQkJCQkJICBs aW5lbnIpOworCQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNzYWdlLAorCQkJCQkJ CQkJICAgIm5lc3RlZCBzZXJ2aWNlIHNwZWNpZmljYXRpb25zIG5vdCBzdXBwb3J0ZWQgaW4g c2VydmljZSBmaWxlIFwiJXNcIiwgbGluZSAlZCIsCisJCQkJCQkJCQkgICBzZXJ2aWNlRmls ZSwKKwkJCQkJCQkJCSAgIGxpbmVucik7CiAJCQkJCXJlc3VsdCA9IDM7CiAJCQkJCWdvdG8g ZXhpdDsKIAkJCQl9CkBAIC01MzcxLDggKzUyOTgsNyBAQCBwYXJzZVNlcnZpY2VGaWxlKGNv bnN0IGNoYXIgKnNlcnZpY2VGaWxlLAogCQkJCQkJCW9wdGlvbnNbaV0udmFsID0gc3RyZHVw KHZhbCk7CiAJCQkJCQlpZiAoIW9wdGlvbnNbaV0udmFsKQogCQkJCQkJewotCQkJCQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJCSBsaWJwcV9n ZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQkJCQkJbGlicHFfYXBwZW5kX2Vycm9y KGVycm9yTWVzc2FnZSwgIm91dCBvZiBtZW1vcnkiKTsKIAkJCQkJCQlyZXN1bHQgPSAzOwog CQkJCQkJCWdvdG8gZXhpdDsKIAkJCQkJCX0KQEAgLTUzODMsMTAgKzUzMDksMTAgQEAgcGFy c2VTZXJ2aWNlRmlsZShjb25zdCBjaGFyICpzZXJ2aWNlRmlsZSwKIAogCQkJCWlmICghZm91 bmRfa2V5d29yZCkKIAkJCQl7Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgic3ludGF4IGVycm9yIGluIHNlcnZpY2Ug ZmlsZSBcIiVzXCIsIGxpbmUgJWRcbiIpLAotCQkJCQkJCQkJICBzZXJ2aWNlRmlsZSwKLQkJ CQkJCQkJCSAgbGluZW5yKTsKKwkJCQkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2Fn ZSwKKwkJCQkJCQkJCSAgICJzeW50YXggZXJyb3IgaW4gc2VydmljZSBmaWxlIFwiJXNcIiwg bGluZSAlZCIsCisJCQkJCQkJCQkgICBzZXJ2aWNlRmlsZSwKKwkJCQkJCQkJCSAgIGxpbmVu cik7CiAJCQkJCXJlc3VsdCA9IDM7CiAJCQkJCWdvdG8gZXhpdDsKIAkJCQl9CkBAIC01NDUy LDggKzUzNzgsNyBAQCBjb25uaW5mb19pbml0KFBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSkK IAlvcHRpb25zID0gKFBRY29ubmluZm9PcHRpb24gKikgbWFsbG9jKHNpemVvZihQUWNvbm5p bmZvT3B0aW9uKSAqIHNpemVvZihQUWNvbm5pbmZvT3B0aW9ucykgLyBzaXplb2YoUFFjb25u aW5mb09wdGlvbnNbMF0pKTsKIAlpZiAob3B0aW9ucyA9PSBOVUxMKQogCXsKLQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJv dXQgb2YgbWVtb3J5XG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2Us ICJvdXQgb2YgbWVtb3J5Iik7CiAJCXJldHVybiBOVUxMOwogCX0KIAlvcHRfZGVzdCA9IG9w dGlvbnM7CkBAIC01NTUxLDggKzU0NzYsNyBAQCBjb25uaW5mb19wYXJzZShjb25zdCBjaGFy ICpjb25uaW5mbywgUFFFeHBCdWZmZXIgZXJyb3JNZXNzYWdlLAogCS8qIE5lZWQgYSBtb2Rp ZmlhYmxlIGNvcHkgb2YgdGhlIGlucHV0IHN0cmluZyAqLwogCWlmICgoYnVmID0gc3RyZHVw KGNvbm5pbmZvKSkgPT0gTlVMTCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGVycm9y TWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOwor CQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNzYWdlLCAib3V0IG9mIG1lbW9yeSIpOwog CQlQUWNvbm5pbmZvRnJlZShvcHRpb25zKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtNTU5 MCw5ICs1NTE0LDkgQEAgY29ubmluZm9fcGFyc2UoY29uc3QgY2hhciAqY29ubmluZm8sIFBR RXhwQnVmZmVyIGVycm9yTWVzc2FnZSwKIAkJLyogQ2hlY2sgdGhhdCB0aGVyZSBpcyBhIGZv bGxvd2luZyAnPScgKi8KIAkJaWYgKCpjcCAhPSAnPScpCiAJCXsKLQkJCWFwcGVuZFBRRXhw QnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoIm1pc3Npbmcg XCI9XCIgYWZ0ZXIgXCIlc1wiIGluIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmdcbiIpLAotCQkJ CQkJCSAgcG5hbWUpOworCQkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwKKwkJ CQkJCQkgICAibWlzc2luZyBcIj1cIiBhZnRlciBcIiVzXCIgaW4gY29ubmVjdGlvbiBpbmZv IHN0cmluZyIsCisJCQkJCQkJICAgcG5hbWUpOwogCQkJUFFjb25uaW5mb0ZyZWUob3B0aW9u cyk7CiAJCQlmcmVlKGJ1Zik7CiAJCQlyZXR1cm4gTlVMTDsKQEAgLTU2MzksOCArNTU2Myw3 IEBAIGNvbm5pbmZvX3BhcnNlKGNvbnN0IGNoYXIgKmNvbm5pbmZvLCBQUUV4cEJ1ZmZlciBl cnJvck1lc3NhZ2UsCiAJCQl7CiAJCQkJaWYgKCpjcCA9PSAnXDAnKQogCQkJCXsKLQkJCQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCSBsaWJwcV9n ZXR0ZXh0KCJ1bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZyBpbiBjb25uZWN0aW9uIGluZm8g c3RyaW5nXG4iKSk7CisJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsICJ1 bnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZyBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nIik7 CiAJCQkJCVBRY29ubmluZm9GcmVlKG9wdGlvbnMpOwogCQkJCQlmcmVlKGJ1Zik7CiAJCQkJ CXJldHVybiBOVUxMOwpAQCAtNTc3NSw5ICs1Njk4LDcgQEAgY29ubmluZm9fYXJyYXlfcGFy c2UoY29uc3QgY2hhciAqY29uc3QgKmtleXdvcmRzLCBjb25zdCBjaGFyICpjb25zdCAqdmFs dWVzLAogCQkJLyogQ2hlY2sgZm9yIGludmFsaWQgY29ubmVjdGlvbiBvcHRpb24gKi8KIAkJ CWlmIChvcHRpb24tPmtleXdvcmQgPT0gTlVMTCkKIAkJCXsKLQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcihlcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCBj b25uZWN0aW9uIG9wdGlvbiBcIiVzXCJcbiIpLAotCQkJCQkJCQkgIHBuYW1lKTsKKwkJCQls aWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNzYWdlLCAiaW52YWxpZCBjb25uZWN0aW9uIG9w dGlvbiBcIiVzXCIiLCBwbmFtZSk7CiAJCQkJUFFjb25uaW5mb0ZyZWUob3B0aW9ucyk7CiAJ CQkJUFFjb25uaW5mb0ZyZWUoZGJuYW1lX29wdGlvbnMpOwogCQkJCXJldHVybiBOVUxMOwpA QCAtNTgwNiw4ICs1NzI3LDcgQEAgY29ubmluZm9fYXJyYXlfcGFyc2UoY29uc3QgY2hhciAq Y29uc3QgKmtleXdvcmRzLCBjb25zdCBjaGFyICpjb25zdCAqdmFsdWVzLAogCQkJCQkJCQlv cHRpb25zW2tdLnZhbCA9IHN0cmR1cChzdHJfb3B0aW9uLT52YWwpOwogCQkJCQkJCQlpZiAo IW9wdGlvbnNba10udmFsKQogCQkJCQkJCQl7Ci0JCQkJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihlcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJvdXQg b2YgbWVtb3J5XG4iKSk7CisJCQkJCQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNz YWdlLCAib3V0IG9mIG1lbW9yeSIpOwogCQkJCQkJCQkJUFFjb25uaW5mb0ZyZWUob3B0aW9u cyk7CiAJCQkJCQkJCQlQUWNvbm5pbmZvRnJlZShkYm5hbWVfb3B0aW9ucyk7CiAJCQkJCQkJ CQlyZXR1cm4gTlVMTDsKQEAgLTU4MzQsOCArNTc1NCw3IEBAIGNvbm5pbmZvX2FycmF5X3Bh cnNlKGNvbnN0IGNoYXIgKmNvbnN0ICprZXl3b3JkcywgY29uc3QgY2hhciAqY29uc3QgKnZh bHVlcywKIAkJCQlvcHRpb24tPnZhbCA9IHN0cmR1cChwdmFsdWUpOwogCQkJCWlmICghb3B0 aW9uLT52YWwpCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihlcnJvck1lc3Nh Z2UsCi0JCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnlcbiIpKTsKKwkJ CQkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwgIm91dCBvZiBtZW1vcnkiKTsK IAkJCQkJUFFjb25uaW5mb0ZyZWUob3B0aW9ucyk7CiAJCQkJCVBRY29ubmluZm9GcmVlKGRi bmFtZV9vcHRpb25zKTsKIAkJCQkJcmV0dXJuIE5VTEw7CkBAIC01OTA2LDggKzU4MjUsNyBA QCBjb25uaW5mb19hZGRfZGVmYXVsdHMoUFFjb25uaW5mb09wdGlvbiAqb3B0aW9ucywgUFFF eHBCdWZmZXIgZXJyb3JNZXNzYWdlKQogCQkJCWlmICghb3B0aW9uLT52YWwpCiAJCQkJewog CQkJCQlpZiAoZXJyb3JNZXNzYWdlKQotCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZXJy b3JNZXNzYWdlLAotCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxu IikpOworCQkJCQkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwgIm91dCBvZiBt ZW1vcnkiKTsKIAkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KIAkJCQljb250aW51ZTsKQEAg LTU5MzAsOCArNTg0OCw3IEBAIGNvbm5pbmZvX2FkZF9kZWZhdWx0cyhQUWNvbm5pbmZvT3B0 aW9uICpvcHRpb25zLCBQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2UpCiAJCQkJaWYgKCFvcHRp b24tPnZhbCkKIAkJCQl7CiAJCQkJCWlmIChlcnJvck1lc3NhZ2UpCi0JCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihlcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0 KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JN ZXNzYWdlLCAib3V0IG9mIG1lbW9yeSIpOwogCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJfQog CQkJCWNvbnRpbnVlOwpAQCAtNTk0OCw4ICs1ODY1LDcgQEAgY29ubmluZm9fYWRkX2RlZmF1 bHRzKFBRY29ubmluZm9PcHRpb24gKm9wdGlvbnMsIFBRRXhwQnVmZmVyIGVycm9yTWVzc2Fn ZSkKIAkJCWlmICghb3B0aW9uLT52YWwpCiAJCQl7CiAJCQkJaWYgKGVycm9yTWVzc2FnZSkK LQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQkJCWxpYnBxX2FwcGVuZF9l cnJvcihlcnJvck1lc3NhZ2UsICJvdXQgb2YgbWVtb3J5Iik7CiAJCQkJcmV0dXJuIGZhbHNl OwogCQkJfQogCQkJY29udGludWU7CkBAIC02MDQ5LDggKzU5NjUsNyBAQCBjb25uaW5mb191 cmlfcGFyc2Vfb3B0aW9ucyhQUWNvbm5pbmZvT3B0aW9uICpvcHRpb25zLCBjb25zdCBjaGFy ICp1cmksCiAJaW5pdFBRRXhwQnVmZmVyKCZwb3J0YnVmKTsKIAlpZiAoUFFFeHBCdWZmZXJE YXRhQnJva2VuKGhvc3RidWYpIHx8IFBRRXhwQnVmZmVyRGF0YUJyb2tlbihwb3J0YnVmKSkK IAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGli cHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQlsaWJwcV9hcHBlbmRfZXJyb3Io ZXJyb3JNZXNzYWdlLCAib3V0IG9mIG1lbW9yeSIpOwogCQlnb3RvIGNsZWFudXA7CiAJfQog CkBAIC02MDU4LDggKzU5NzMsNyBAQCBjb25uaW5mb191cmlfcGFyc2Vfb3B0aW9ucyhQUWNv bm5pbmZvT3B0aW9uICpvcHRpb25zLCBjb25zdCBjaGFyICp1cmksCiAJYnVmID0gc3RyZHVw KHVyaSk7CiAJaWYgKGJ1ZiA9PSBOVUxMKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4i KSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsICJvdXQgb2YgbWVtb3J5 Iik7CiAJCWdvdG8gY2xlYW51cDsKIAl9CiAJc3RhcnQgPSBidWY7CkBAIC02MDY5LDkgKzU5 ODMsOSBAQCBjb25uaW5mb191cmlfcGFyc2Vfb3B0aW9ucyhQUWNvbm5pbmZvT3B0aW9uICpv cHRpb25zLCBjb25zdCBjaGFyICp1cmksCiAJaWYgKHByZWZpeF9sZW4gPT0gMCkKIAl7CiAJ CS8qIFNob3VsZCBuZXZlciBoYXBwZW4gKi8KLQkJYXBwZW5kUFFFeHBCdWZmZXIoZXJyb3JN ZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIFVSSSBwcm9wYWdhdGVk IHRvIGludGVybmFsIHBhcnNlciByb3V0aW5lOiBcIiVzXCJcbiIpLAotCQkJCQkJICB1cmkp OworCQlsaWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNzYWdlLAorCQkJCQkJICAgImludmFs aWQgVVJJIHByb3BhZ2F0ZWQgdG8gaW50ZXJuYWwgcGFyc2VyIHJvdXRpbmU6IFwiJXNcIiIs CisJCQkJCQkgICB1cmkpOwogCQlnb3RvIGNsZWFudXA7CiAJfQogCXN0YXJ0ICs9IHByZWZp eF9sZW47CkBAIC02MTQ2LDE2ICs2MDYwLDE2IEBAIGNvbm5pbmZvX3VyaV9wYXJzZV9vcHRp b25zKFBRY29ubmluZm9PcHRpb24gKm9wdGlvbnMsIGNvbnN0IGNoYXIgKnVyaSwKIAkJCQkr K3A7CiAJCQlpZiAoISpwKQogCQkJewotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVz c2FnZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJlbmQgb2Ygc3RyaW5nIHJlYWNoZWQg d2hlbiBsb29raW5nIGZvciBtYXRjaGluZyBcIl1cIiBpbiBJUHY2IGhvc3QgYWRkcmVzcyBp biBVUkk6IFwiJXNcIlxuIiksCi0JCQkJCQkJCSAgdXJpKTsKKwkJCQlsaWJwcV9hcHBlbmRf ZXJyb3IoZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkgICAiZW5kIG9mIHN0cmluZyByZWFjaGVk IHdoZW4gbG9va2luZyBmb3IgbWF0Y2hpbmcgXCJdXCIgaW4gSVB2NiBob3N0IGFkZHJlc3Mg aW4gVVJJOiBcIiVzXCIiLAorCQkJCQkJCQkgICB1cmkpOwogCQkJCWdvdG8gY2xlYW51cDsK IAkJCX0KIAkJCWlmIChwID09IGhvc3QpCiAJCQl7Ci0JCQkJYXBwZW5kUFFFeHBCdWZmZXIo ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoIklQdjYgaG9zdCBhZGRy ZXNzIG1heSBub3QgYmUgZW1wdHkgaW4gVVJJOiBcIiVzXCJcbiIpLAotCQkJCQkJCQkgIHVy aSk7CisJCQkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICAg IklQdjYgaG9zdCBhZGRyZXNzIG1heSBub3QgYmUgZW1wdHkgaW4gVVJJOiBcIiVzXCIiLAor CQkJCQkJCQkgICB1cmkpOwogCQkJCWdvdG8gY2xlYW51cDsKIAkJCX0KIApAQCAtNjE2OCw5 ICs2MDgyLDkgQEAgY29ubmluZm9fdXJpX3BhcnNlX29wdGlvbnMoUFFjb25uaW5mb09wdGlv biAqb3B0aW9ucywgY29uc3QgY2hhciAqdXJpLAogCQkJICovCiAJCQlpZiAoKnAgJiYgKnAg IT0gJzonICYmICpwICE9ICcvJyAmJiAqcCAhPSAnPycgJiYgKnAgIT0gJywnKQogCQkJewot CQkJCWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9n ZXR0ZXh0KCJ1bmV4cGVjdGVkIGNoYXJhY3RlciBcIiVjXCIgYXQgcG9zaXRpb24gJWQgaW4g VVJJIChleHBlY3RlZCBcIjpcIiBvciBcIi9cIik6IFwiJXNcIlxuIiksCi0JCQkJCQkJCSAg KnAsIChpbnQpIChwIC0gYnVmICsgMSksIHVyaSk7CisJCQkJbGlicHFfYXBwZW5kX2Vycm9y KGVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICAgInVuZXhwZWN0ZWQgY2hhcmFjdGVyIFwiJWNc IiBhdCBwb3NpdGlvbiAlZCBpbiBVUkkgKGV4cGVjdGVkIFwiOlwiIG9yIFwiL1wiKTogXCIl c1wiIiwKKwkJCQkJCQkJICAgKnAsIChpbnQpIChwIC0gYnVmICsgMSksIHVyaSk7CiAJCQkJ Z290byBjbGVhbnVwOwogCQkJfQogCQl9CkBAIC02Mjk3LDkgKzYyMTEsOSBAQCBjb25uaW5m b191cmlfcGFyc2VfcGFyYW1zKGNoYXIgKnBhcmFtcywKIAkJCQkvKiBXYXMgdGhlcmUgJz0n IGFscmVhZHk/ICovCiAJCQkJaWYgKHZhbHVlICE9IE5VTEwpCiAJCQkJewotCQkJCQlhcHBl bmRQUUV4cEJ1ZmZlcihlcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkgIGxpYnBxX2dldHRleHQo ImV4dHJhIGtleS92YWx1ZSBzZXBhcmF0b3IgXCI9XCIgaW4gVVJJIHF1ZXJ5IHBhcmFtZXRl cjogXCIlc1wiXG4iKSwKLQkJCQkJCQkJCSAga2V5d29yZCk7CisJCQkJCWxpYnBxX2FwcGVu ZF9lcnJvcihlcnJvck1lc3NhZ2UsCisJCQkJCQkJCQkgICAiZXh0cmEga2V5L3ZhbHVlIHNl cGFyYXRvciBcIj1cIiBpbiBVUkkgcXVlcnkgcGFyYW1ldGVyOiBcIiVzXCIiLAorCQkJCQkJ CQkJICAga2V5d29yZCk7CiAJCQkJCXJldHVybiBmYWxzZTsKIAkJCQl9CiAJCQkJLyogQ3V0 IG9mZiBrZXl3b3JkLCBhZHZhbmNlIHRvIHZhbHVlICovCkBAIC02MzE3LDkgKzYyMzEsOSBA QCBjb25uaW5mb191cmlfcGFyc2VfcGFyYW1zKGNoYXIgKnBhcmFtcywKIAkJCQkvKiBXYXMg dGhlcmUgJz0nIGF0IGFsbD8gKi8KIAkJCQlpZiAodmFsdWUgPT0gTlVMTCkKIAkJCQl7Ci0J CQkJCWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSAgbGlicHFf Z2V0dGV4dCgibWlzc2luZyBrZXkvdmFsdWUgc2VwYXJhdG9yIFwiPVwiIGluIFVSSSBxdWVy eSBwYXJhbWV0ZXI6IFwiJXNcIlxuIiksCi0JCQkJCQkJCQkgIGtleXdvcmQpOworCQkJCQls aWJwcV9hcHBlbmRfZXJyb3IoZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkJICAgIm1pc3Npbmcg a2V5L3ZhbHVlIHNlcGFyYXRvciBcIj1cIiBpbiBVUkkgcXVlcnkgcGFyYW1ldGVyOiBcIiVz XCIiLAorCQkJCQkJCQkJICAga2V5d29yZCk7CiAJCQkJCXJldHVybiBmYWxzZTsKIAkJCQl9 CiAJCQkJLyogR290IGtleXdvcmQgYW5kIHZhbHVlLCBnbyBwcm9jZXNzIHRoZW0uICovCkBA IC02MzY5LDkgKzYyODMsOSBAQCBjb25uaW5mb191cmlfcGFyc2VfcGFyYW1zKGNoYXIgKnBh cmFtcywKIAkJewogCQkJLyogSW5zZXJ0IGdlbmVyaWMgbWVzc2FnZSBpZiBjb25uaW5mb19z dG9yZXZhbCBkaWRuJ3QgZ2l2ZSBvbmUuICovCiAJCQlpZiAoZXJyb3JNZXNzYWdlLT5sZW4g PT0gb2xkbXNnbGVuKQotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJ CQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIFVSSSBxdWVyeSBwYXJhbWV0ZXI6IFwi JXNcIlxuIiksCi0JCQkJCQkJCSAga2V5d29yZCk7CisJCQkJbGlicHFfYXBwZW5kX2Vycm9y KGVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICAgImludmFsaWQgVVJJIHF1ZXJ5IHBhcmFtZXRl cjogXCIlc1wiIiwKKwkJCQkJCQkJICAga2V5d29yZCk7CiAJCQkvKiBBbmQgZmFpbC4gKi8K IAkJCWlmIChtYWxsb2NlZCkKIAkJCXsKQEAgLTY0MTYsNyArNjMzMCw3IEBAIGNvbm5pbmZv X3VyaV9kZWNvZGUoY29uc3QgY2hhciAqc3RyLCBQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2Up CiAJYnVmID0gbWFsbG9jKHN0cmxlbihzdHIpICsgMSk7CiAJaWYgKGJ1ZiA9PSBOVUxMKQog CXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZXJyb3JNZXNzYWdlLCBsaWJwcV9nZXR0ZXh0 KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3Nh Z2UsICJvdXQgb2YgbWVtb3J5Iik7CiAJCXJldHVybiBOVUxMOwogCX0KIAlwID0gYnVmOwpA QCAtNjQ0Myw5ICs2MzU3LDkgQEAgY29ubmluZm9fdXJpX2RlY29kZShjb25zdCBjaGFyICpz dHIsIFBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSkKIAkJCSAqLwogCQkJaWYgKCEoZ2V0X2hl eGRpZ2l0KCpxKyssICZoaSkgJiYgZ2V0X2hleGRpZ2l0KCpxKyssICZsbykpKQogCQkJewot CQkJCWFwcGVuZFBRRXhwQnVmZmVyKGVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9n ZXR0ZXh0KCJpbnZhbGlkIHBlcmNlbnQtZW5jb2RlZCB0b2tlbjogXCIlc1wiXG4iKSwKLQkJ CQkJCQkJICBzdHIpOworCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJvck1lc3NhZ2UsCisJ CQkJCQkJCSAgICJpbnZhbGlkIHBlcmNlbnQtZW5jb2RlZCB0b2tlbjogXCIlc1wiIiwKKwkJ CQkJCQkJICAgc3RyKTsKIAkJCQlmcmVlKGJ1Zik7CiAJCQkJcmV0dXJuIE5VTEw7CiAJCQl9 CkBAIC02NDUzLDkgKzYzNjcsOSBAQCBjb25uaW5mb191cmlfZGVjb2RlKGNvbnN0IGNoYXIg KnN0ciwgUFFFeHBCdWZmZXIgZXJyb3JNZXNzYWdlKQogCQkJYyA9IChoaSA8PCA0KSB8IGxv OwogCQkJaWYgKGMgPT0gMCkKIAkJCXsKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihlcnJvck1l c3NhZ2UsCi0JCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiZm9yYmlkZGVuIHZhbHVlICUlMDAg aW4gcGVyY2VudC1lbmNvZGVkIHZhbHVlOiBcIiVzXCJcbiIpLAotCQkJCQkJCQkgIHN0cik7 CisJCQkJbGlicHFfYXBwZW5kX2Vycm9yKGVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICAgImZv cmJpZGRlbiB2YWx1ZSAlJTAwIGluIHBlcmNlbnQtZW5jb2RlZCB2YWx1ZTogXCIlc1wiIiwK KwkJCQkJCQkJICAgc3RyKTsKIAkJCQlmcmVlKGJ1Zik7CiAJCQkJcmV0dXJuIE5VTEw7CiAJ CQl9CkBAIC02NTQ4LDkgKzY0NjIsOSBAQCBjb25uaW5mb19zdG9yZXZhbChQUWNvbm5pbmZv T3B0aW9uICpjb25uT3B0aW9ucywKIAlpZiAob3B0aW9uID09IE5VTEwpCiAJewogCQlpZiAo IWlnbm9yZU1pc3NpbmcpCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlcihlcnJvck1lc3NhZ2UsCi0J CQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIGNvbm5lY3Rpb24gb3B0aW9uIFwiJXNc IlxuIiksCi0JCQkJCQkJICBrZXl3b3JkKTsKKwkJCWxpYnBxX2FwcGVuZF9lcnJvcihlcnJv ck1lc3NhZ2UsCisJCQkJCQkJICAgImludmFsaWQgY29ubmVjdGlvbiBvcHRpb24gXCIlc1wi IiwKKwkJCQkJCQkgICBrZXl3b3JkKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC02NTY2 LDcgKzY0ODAsNyBAQCBjb25uaW5mb19zdG9yZXZhbChQUWNvbm5pbmZvT3B0aW9uICpjb25u T3B0aW9ucywKIAkJdmFsdWVfY29weSA9IHN0cmR1cCh2YWx1ZSk7CiAJCWlmICh2YWx1ZV9j b3B5ID09IE5VTEwpCiAJCXsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGVycm9yTWVzc2Fn ZSwgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQkJbGlicHFfYXBwZW5k X2Vycm9yKGVycm9yTWVzc2FnZSwgIm91dCBvZiBtZW1vcnkiKTsKIAkJCXJldHVybiBOVUxM OwogCQl9CiAJfQpAQCAtNzIyMiw4ICs3MTM2LDcgQEAgcGdwYXNzZmlsZVdhcm5pbmcoUEdj b25uICpjb25uKQogCQkJCQkJCQkJCQkJICBQR19ESUFHX1NRTFNUQVRFKTsKIAogCQlpZiAo c3Fsc3RhdGUgJiYgc3RyY21wKHNxbHN0YXRlLCBFUlJDT0RFX0lOVkFMSURfUEFTU1dPUkQp ID09IDApCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJ CQkJCSAgbGlicHFfZ2V0dGV4dCgicGFzc3dvcmQgcmV0cmlldmVkIGZyb20gZmlsZSBcIiVz XCJcbiIpLAorCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInBhc3N3b3JkIHJl dHJpZXZlZCBmcm9tIGZpbGUgXCIlc1wiIiwKIAkJCQkJCQkgIGNvbm4tPnBncGFzc2ZpbGUp OwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwppbmRleCAwMjc0YzFiMTU2YzYuLjZm YTVmY2NjN2M0ZSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5j CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwpAQCAtODI4LDggKzgyOCw3 IEBAIHBxU2F2ZVdyaXRlRXJyb3IoUEdjb25uICpjb25uKQogCQljb25uLT53cml0ZV9lcnJf bXNnWzBdID0gJ1wwJzsKIAl9CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29u bi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJ3cml0ZSB0byBzZXJ2 ZXIgZmFpbGVkXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJ3cml0 ZSB0byBzZXJ2ZXIgZmFpbGVkIik7CiAKIAlwcVNhdmVFcnJvclJlc3VsdChjb25uKTsKIH0K QEAgLTg2Nyw4ICs4NjYsNyBAQCBwcVByZXBhcmVBc3luY1Jlc3VsdChQR2Nvbm4gKmNvbm4p CiAJCSAqIHRleHQuCiAJCSAqLwogCQlpZiAoIWNvbm4tPmVycm9yX3Jlc3VsdCkKLQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJw cV9nZXR0ZXh0KCJubyBlcnJvciB0ZXh0IGF2YWlsYWJsZVxuIikpOworCQkJbGlicHFfYXBw ZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm5vIGVycm9yIHRleHQgYXZhaWxhYmxlIik7CiAKIAkJ LyogUGFyYW5vaWE6IGJlIHN1cmUgZXJyb3JSZXBvcnRlZCBvZmZzZXQgaXMgc2FuZSAqLwog CQlpZiAoY29ubi0+ZXJyb3JSZXBvcnRlZCA8IDAgfHwKQEAgLTEzMTYsOCArMTMxNCw3IEBA IHBxQWxsb2NDbWRRdWV1ZUVudHJ5KFBHY29ubiAqY29ubikKIAkJZW50cnkgPSAoUEdjbWRR dWV1ZUVudHJ5ICopIG1hbGxvYyhzaXplb2YoUEdjbWRRdWV1ZUVudHJ5KSk7CiAJCWlmIChl bnRyeSA9PSBOVUxMKQogCQl7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJy b3JNZXNzYWdlLAotCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikp OworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBtZW1vcnkiKTsK IAkJCXJldHVybiBOVUxMOwogCQl9CiAJfQpAQCAtMTQ0MCwxNSArMTQzNywxMyBAQCBQUXNl bmRRdWVyeUludGVybmFsKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnksIGJvb2wg bmV3UXVlcnkpCiAJLyogY2hlY2sgdGhlIGFyZ3VtZW50ICovCiAJaWYgKCFxdWVyeSkKIAl7 Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJ IGxpYnBxX2dldHRleHQoImNvbW1hbmQgc3RyaW5nIGlzIGEgbnVsbCBwb2ludGVyXG4iKSk7 CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb21tYW5kIHN0cmluZyBpcyBh IG51bGwgcG9pbnRlciIpOwogCQlyZXR1cm4gMDsKIAl9CiAKIAlpZiAoY29ubi0+cGlwZWxp bmVTdGF0dXMgIT0gUFFfUElQRUxJTkVfT0ZGKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiJXMgbm90IGFs bG93ZWQgaW4gcGlwZWxpbmUgbW9kZVxuIiksCisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICIlcyBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlIiwKIAkJCQkJCSAgIlBR c2VuZFF1ZXJ5Iik7CiAJCXJldHVybiAwOwogCX0KQEAgLTE1MTEsMTUgKzE1MDYsMTMgQEAg UFFzZW5kUXVlcnlQYXJhbXMoUEdjb25uICpjb25uLAogCS8qIGNoZWNrIHRoZSBhcmd1bWVu dHMgKi8KIAlpZiAoIWNvbW1hbmQpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29u bi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjb21tYW5kIHN0cmlu ZyBpcyBhIG51bGwgcG9pbnRlclxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAiY29tbWFuZCBzdHJpbmcgaXMgYSBudWxsIHBvaW50ZXIiKTsKIAkJcmV0dXJuIDA7 CiAJfQogCWlmIChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1fTUFY X0xJTUlUKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgibnVtYmVyIG9mIHBhcmFtZXRlcnMgbXVzdCBiZSBi ZXR3ZWVuIDAgYW5kICVkXG4iKSwKLQkJCQkJCSAgUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlU KTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJhbWV0 ZXJzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCisJCQkJCQkgICBQUV9RVUVSWV9QQVJB TV9NQVhfTElNSVQpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTE1NTQsMjEgKzE1NDcsMTgg QEAgUFFzZW5kUHJlcGFyZShQR2Nvbm4gKmNvbm4sCiAJLyogY2hlY2sgdGhlIGFyZ3VtZW50 cyAqLwogCWlmICghc3RtdE5hbWUpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29u bi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJzdGF0ZW1lbnQgbmFt ZSBpcyBhIG51bGwgcG9pbnRlclxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAic3RhdGVtZW50IG5hbWUgaXMgYSBudWxsIHBvaW50ZXIiKTsKIAkJcmV0dXJuIDA7 CiAJfQogCWlmICghcXVlcnkpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjb21tYW5kIHN0cmluZyBp cyBhIG51bGwgcG9pbnRlclxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiY29tbWFuZCBzdHJpbmcgaXMgYSBudWxsIHBvaW50ZXIiKTsKIAkJcmV0dXJuIDA7CiAJ fQogCWlmIChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1fTUFYX0xJ TUlUKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCSAgbGlicHFfZ2V0dGV4dCgibnVtYmVyIG9mIHBhcmFtZXRlcnMgbXVzdCBiZSBiZXR3 ZWVuIDAgYW5kICVkXG4iKSwKLQkJCQkJCSAgUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlUKTsK KwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJhbWV0ZXJz IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCisJCQkJCQkgICBQUV9RVUVSWV9QQVJBTV9N QVhfTElNSVQpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTE2NTYsMTUgKzE2NDYsMTMgQEAg UFFzZW5kUXVlcnlQcmVwYXJlZChQR2Nvbm4gKmNvbm4sCiAJLyogY2hlY2sgdGhlIGFyZ3Vt ZW50cyAqLwogCWlmICghc3RtdE5hbWUpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJzdGF0ZW1lbnQg bmFtZSBpcyBhIG51bGwgcG9pbnRlclxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAic3RhdGVtZW50IG5hbWUgaXMgYSBudWxsIHBvaW50ZXIiKTsKIAkJcmV0dXJu IDA7CiAJfQogCWlmIChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1f TUFYX0xJTUlUKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgibnVtYmVyIG9mIHBhcmFtZXRlcnMgbXVzdCBi ZSBiZXR3ZWVuIDAgYW5kICVkXG4iKSwKLQkJCQkJCSAgUFFfUVVFUllfUEFSQU1fTUFYX0xJ TUlUKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJh bWV0ZXJzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCisJCQkJCQkgICBQUV9RVUVSWV9Q QVJBTV9NQVhfTElNSVQpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTE3MDAsOCArMTY4OCw3 IEBAIFBRc2VuZFF1ZXJ5U3RhcnQoUEdjb25uICpjb25uLCBib29sIG5ld1F1ZXJ5KQogCS8q IERvbid0IHRyeSB0byBzZW5kIGlmIHdlIGtub3cgdGhlcmUncyBubyBsaXZlIGNvbm5lY3Rp b24uICovCiAJaWYgKGNvbm4tPnN0YXR1cyAhPSBDT05ORUNUSU9OX09LKQogCXsKLQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFf Z2V0dGV4dCgibm8gY29ubmVjdGlvbiB0byB0aGUgc2VydmVyXG4iKSk7CisJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIiKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMTcwOSw4ICsxNjk2LDcgQEAgUFFzZW5kUXVl cnlTdGFydChQR2Nvbm4gKmNvbm4sIGJvb2wgbmV3UXVlcnkpCiAJaWYgKGNvbm4tPmFzeW5j U3RhdHVzICE9IFBHQVNZTkNfSURMRSAmJgogCQljb25uLT5waXBlbGluZVN0YXR1cyA9PSBQ UV9QSVBFTElORV9PRkYpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJy b3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJhbm90aGVyIGNvbW1hbmQgaXMg YWxyZWFkeSBpbiBwcm9ncmVzc1xuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAiYW5vdGhlciBjb21tYW5kIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MiKTsKIAkJcmV0 dXJuIGZhbHNlOwogCX0KIApAQCAtMTc0MCw4ICsxNzI2LDcgQEAgUFFzZW5kUXVlcnlTdGFy dChQR2Nvbm4gKmNvbm4sIGJvb2wgbmV3UXVlcnkpCiAJCQljYXNlIFBHQVNZTkNfQ09QWV9J TjoKIAkJCWNhc2UgUEdBU1lOQ19DT1BZX09VVDoKIAkJCWNhc2UgUEdBU1lOQ19DT1BZX0JP VEg6Ci0JCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjYW5ub3QgcXVldWUgY29tbWFuZHMgZHVyaW5nIENP UFlcbiIpKTsKKwkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2Fubm90IHF1 ZXVlIGNvbW1hbmRzIGR1cmluZyBDT1BZIik7CiAJCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJ fQpAQCAtMTg1OCw4ICsxODQzLDcgQEAgUFFzZW5kUXVlcnlHdXRzKFBHY29ubiAqY29ubiwK IAkJCQkJbmJ5dGVzID0gcGFyYW1MZW5ndGhzW2ldOwogCQkJCWVsc2UKIAkJCQl7Ci0JCQkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJ IGxpYnBxX2dldHRleHQoImxlbmd0aCBtdXN0IGJlIGdpdmVuIGZvciBiaW5hcnkgcGFyYW1l dGVyXG4iKSk7CisJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJsZW5ndGgg bXVzdCBiZSBnaXZlbiBmb3IgYmluYXJ5IHBhcmFtZXRlciIpOwogCQkJCQlnb3RvIHNlbmRG YWlsZWQ7CiAJCQkJfQogCQkJfQpAQCAtMjE4MSw5ICsyMTY1LDcgQEAgUFFnZXRSZXN1bHQo UEdjb25uICpjb25uKQogCQkJcmVzID0gZ2V0Q29weVJlc3VsdChjb25uLCBQR1JFU19DT1BZ X0JPVEgpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5leHBlY3Rl ZCBhc3luY1N0YXR1czogJWRcbiIpLAotCQkJCQkJCSAgKGludCkgY29ubi0+YXN5bmNTdGF0 dXMpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInVuZXhwZWN0ZWQgYXN5 bmNTdGF0dXM6ICVkIiwgKGludCkgY29ubi0+YXN5bmNTdGF0dXMpOwogCQkJcHFTYXZlRXJy b3JSZXN1bHQoY29ubik7CiAJCQljb25uLT5hc3luY1N0YXR1cyA9IFBHQVNZTkNfSURMRTsJ LyogdHJ5IHRvIHJlc3RvcmUgdmFsaWQgc3RhdGUgKi8KIAkJCXJlcyA9IHBxUHJlcGFyZUFz eW5jUmVzdWx0KGNvbm4pOwpAQCAtMjMzOSw4ICsyMzIxLDcgQEAgUFFleGVjU3RhcnQoUEdj b25uICpjb25uKQogCiAJaWYgKGNvbm4tPnBpcGVsaW5lU3RhdHVzICE9IFBRX1BJUEVMSU5F X09GRikKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2Us Ci0JCQkJCQkJIGxpYnBxX2dldHRleHQoInN5bmNocm9ub3VzIGNvbW1hbmQgZXhlY3V0aW9u IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZVxuIikpOworCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAic3luY2hyb25vdXMgY29tbWFuZCBleGVj dXRpb24gZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlIik7CiAJ CXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTIzNzMsOCArMjM1NCw3IEBAIFBRZXhlY1N0YXJ0 KFBHY29ubiAqY29ubikKIAkJZWxzZSBpZiAocmVzdWx0U3RhdHVzID09IFBHUkVTX0NPUFlf Qk9USCkKIAkJewogCQkJLyogV2UgZG9uJ3QgYWxsb3cgUFFleGVjIGR1cmluZyBDT1BZIEJP VEggKi8KLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0J CQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJQUWV4ZWMgbm90IGFsbG93ZWQgZHVyaW5nIENPUFkg Qk9USFxuIikpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlBRZXhlYyBu b3QgYWxsb3dlZCBkdXJpbmcgQ09QWSBCT1RIIik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0K IAkJLyogY2hlY2sgZm9yIGxvc3Mgb2YgY29ubmVjdGlvbiwgdG9vICovCkBAIC0yNjAwLDgg KzI1ODAsNyBAQCBQUXB1dENvcHlEYXRhKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqYnVm ZmVyLCBpbnQgbmJ5dGVzKQogCWlmIChjb25uLT5hc3luY1N0YXR1cyAhPSBQR0FTWU5DX0NP UFlfSU4gJiYKIAkJY29ubi0+YXN5bmNTdGF0dXMgIT0gUEdBU1lOQ19DT1BZX0JPVEgpCiAJ ewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJ CSBsaWJwcV9nZXR0ZXh0KCJubyBDT1BZIGluIHByb2dyZXNzXG4iKSk7CisJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBDT1BZIGluIHByb2dyZXNzIik7CiAJCXJldHVy biAtMTsKIAl9CiAKQEAgLTI2NTYsOCArMjYzNSw3IEBAIFBRcHV0Q29weUVuZChQR2Nvbm4g KmNvbm4sIGNvbnN0IGNoYXIgKmVycm9ybXNnKQogCWlmIChjb25uLT5hc3luY1N0YXR1cyAh PSBQR0FTWU5DX0NPUFlfSU4gJiYKIAkJY29ubi0+YXN5bmNTdGF0dXMgIT0gUEdBU1lOQ19D T1BZX0JPVEgpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNz YWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJubyBDT1BZIGluIHByb2dyZXNzXG4iKSk7 CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBDT1BZIGluIHByb2dyZXNz Iik7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTI3MjUsOCArMjcwMyw3IEBAIFBRZ2V0Q29w eURhdGEoUEdjb25uICpjb25uLCBjaGFyICoqYnVmZmVyLCBpbnQgYXN5bmMpCiAJaWYgKGNv bm4tPmFzeW5jU3RhdHVzICE9IFBHQVNZTkNfQ09QWV9PVVQgJiYKIAkJY29ubi0+YXN5bmNT dGF0dXMgIT0gUEdBU1lOQ19DT1BZX0JPVEgpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJubyBDT1BZ IGluIHByb2dyZXNzXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJu byBDT1BZIGluIHByb2dyZXNzIik7CiAJCXJldHVybiAtMjsKIAl9CiAJcmV0dXJuIHBxR2V0 Q29weURhdGEzKGNvbm4sIGJ1ZmZlciwgYXN5bmMpOwpAQCAtMjkwNSwxNyArMjg4MiwxNCBA QCBQUWZuKFBHY29ubiAqY29ubiwKIAogCWlmIChjb25uLT5waXBlbGluZVN0YXR1cyAhPSBQ UV9QSVBFTElORV9PRkYpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JN ZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCIlcyBub3QgYWxsb3dlZCBpbiBwaXBl bGluZSBtb2RlXG4iKSwKLQkJCQkJCSAgIlBRZm4iKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgIiVzIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUiLCAiUFFmbiIp OwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAlpZiAoY29ubi0+c29jayA9PSBQR0lOVkFMSURf U09DS0VUIHx8IGNvbm4tPmFzeW5jU3RhdHVzICE9IFBHQVNZTkNfSURMRSB8fAogCQlwZ0hh dmVQZW5kaW5nUmVzdWx0KGNvbm4pKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNv bm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiY29ubmVjdGlvbiBp biB3cm9uZyBzdGF0ZVxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAi Y29ubmVjdGlvbiBpbiB3cm9uZyBzdGF0ZSIpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAg LTI5NTgsOCArMjkzMiw3IEBAIFBRZW50ZXJQaXBlbGluZU1vZGUoUEdjb25uICpjb25uKQog CiAJaWYgKGNvbm4tPmFzeW5jU3RhdHVzICE9IFBHQVNZTkNfSURMRSkKIAl7Ci0JCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dl dHRleHQoImNhbm5vdCBlbnRlciBwaXBlbGluZSBtb2RlLCBjb25uZWN0aW9uIG5vdCBpZGxl XG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZW50ZXIg cGlwZWxpbmUgbW9kZSwgY29ubmVjdGlvbiBub3QgaWRsZSIpOwogCQlyZXR1cm4gMDsKIAl9 CiAKQEAgLTI5OTUsMTMgKzI5NjgsMTEgQEAgUFFleGl0UGlwZWxpbmVNb2RlKFBHY29ubiAq Y29ubikKIAkJY2FzZSBQR0FTWU5DX1JFQURZOgogCQljYXNlIFBHQVNZTkNfUkVBRFlfTU9S RToKIAkJCS8qIHRoZXJlIGFyZSBzb21lIHVuY29sbGVjdGVkIHJlc3VsdHMgKi8KLQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJw cV9nZXR0ZXh0KCJjYW5ub3QgZXhpdCBwaXBlbGluZSBtb2RlIHdpdGggdW5jb2xsZWN0ZWQg cmVzdWx0c1xuIikpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNhbm5v dCBleGl0IHBpcGVsaW5lIG1vZGUgd2l0aCB1bmNvbGxlY3RlZCByZXN1bHRzIik7CiAJCQly ZXR1cm4gMDsKIAogCQljYXNlIFBHQVNZTkNfQlVTWToKLQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjYW5u b3QgZXhpdCBwaXBlbGluZSBtb2RlIHdoaWxlIGJ1c3lcbiIpKTsKKwkJCWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZXhpdCBwaXBlbGluZSBtb2RlIHdoaWxlIGJ1 c3kiKTsKIAkJCXJldHVybiAwOwogCiAJCWNhc2UgUEdBU1lOQ19JRExFOgpAQCAtMzAxMiwx NSArMjk4MywxMyBAQCBQUWV4aXRQaXBlbGluZU1vZGUoUEdjb25uICpjb25uKQogCQljYXNl IFBHQVNZTkNfQ09QWV9JTjoKIAkJY2FzZSBQR0FTWU5DX0NPUFlfT1VUOgogCQljYXNlIFBH QVNZTkNfQ09QWV9CT1RIOgotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9y TWVzc2FnZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRleHQoImNhbm5vdCBleGl0IHBpcGVsaW5l IG1vZGUgd2hpbGUgaW4gQ09QWVxuIikpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgImNhbm5vdCBleGl0IHBpcGVsaW5lIG1vZGUgd2hpbGUgaW4gQ09QWSIpOwogCX0K IAogCS8qIHN0aWxsIHdvcmsgdG8gcHJvY2VzcyAqLwogCWlmIChjb25uLT5jbWRfcXVldWVf aGVhZCAhPSBOVUxMKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9y TWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiY2Fubm90IGV4aXQgcGlwZWxpbmUg bW9kZSB3aXRoIHVuY29sbGVjdGVkIHJlc3VsdHNcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgImNhbm5vdCBleGl0IHBpcGVsaW5lIG1vZGUgd2l0aCB1bmNvbGxl Y3RlZCByZXN1bHRzIik7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMzEzNSw4ICszMTA0LDcg QEAgcHFQaXBlbGluZVByb2Nlc3NRdWV1ZShQR2Nvbm4gKmNvbm4pCiAJCWNvbm4tPnJlc3Vs dCA9IFBRbWFrZUVtcHR5UEdyZXN1bHQoY29ubiwgUEdSRVNfUElQRUxJTkVfQUJPUlRFRCk7 CiAJCWlmICghY29ubi0+cmVzdWx0KQogCQl7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1l bW9yeVxuIikpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBt ZW1vcnkiKTsKIAkJCXBxU2F2ZUVycm9yUmVzdWx0KGNvbm4pOwogCQkJcmV0dXJuOwogCQl9 CkBAIC0zMTc5LDggKzMxNDcsNyBAQCBQUXBpcGVsaW5lU3luYyhQR2Nvbm4gKmNvbm4pCiAK IAlpZiAoY29ubi0+cGlwZWxpbmVTdGF0dXMgPT0gUFFfUElQRUxJTkVfT0ZGKQogCXsKLQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGli cHFfZ2V0dGV4dCgiY2Fubm90IHNlbmQgcGlwZWxpbmUgd2hlbiBub3QgaW4gcGlwZWxpbmUg bW9kZVxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2Fubm90IHNl bmQgcGlwZWxpbmUgd2hlbiBub3QgaW4gcGlwZWxpbmUgbW9kZSIpOwogCQlyZXR1cm4gMDsK IAl9CiAKQEAgLTMyNDYsOCArMzIxMyw3IEBAIFBRc2VuZEZsdXNoUmVxdWVzdChQR2Nvbm4g KmNvbm4pCiAJLyogRG9uJ3QgdHJ5IHRvIHNlbmQgaWYgd2Uga25vdyB0aGVyZSdzIG5vIGxp dmUgY29ubmVjdGlvbi4gKi8KIAlpZiAoY29ubi0+c3RhdHVzICE9IENPTk5FQ1RJT05fT0sp CiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJ CQkJCSBsaWJwcV9nZXR0ZXh0KCJubyBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXJcbiIpKTsK KwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm5vIGNvbm5lY3Rpb24gdG8gdGhl IHNlcnZlciIpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTMyNTUsOCArMzIyMSw3IEBAIFBR c2VuZEZsdXNoUmVxdWVzdChQR2Nvbm4gKmNvbm4pCiAJaWYgKGNvbm4tPmFzeW5jU3RhdHVz ICE9IFBHQVNZTkNfSURMRSAmJgogCQljb25uLT5waXBlbGluZVN0YXR1cyA9PSBQUV9QSVBF TElORV9PRkYpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNz YWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJhbm90aGVyIGNvbW1hbmQgaXMgYWxyZWFk eSBpbiBwcm9ncmVzc1xuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAi YW5vdGhlciBjb21tYW5kIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MiKTsKIAkJcmV0dXJuIDA7 CiAJfQogCkBAIC0zOTkyLDggKzM5NTcsNyBAQCBQUWVzY2FwZVN0cmluZ0ludGVybmFsKFBH Y29ubiAqY29ubiwKIAkJCWlmIChlcnJvcikKIAkJCQkqZXJyb3IgPSAxOwogCQkJaWYgKGNv bm4pCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJpbmNvbXBsZXRlIG11bHRpYnl0ZSBjaGFyYWN0ZXJc biIpKTsKKwkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiaW5jb21wbGV0ZSBt dWx0aWJ5dGUgY2hhcmFjdGVyIik7CiAJCQlmb3IgKDsgaSA8IGxlbjsgaSsrKQogCQkJewog CQkJCWlmICgoKHNpemVfdCkgKHRhcmdldCAtIHRvKSkgLyAyID49IGxlbmd0aCkKQEAgLTQw ODMsOCArNDA0Nyw3IEBAIFBRZXNjYXBlSW50ZXJuYWwoUEdjb25uICpjb25uLCBjb25zdCBj aGFyICpzdHIsIHNpemVfdCBsZW4sIGJvb2wgYXNfaWRlbnQpCiAJCQkvKiBNdWx0aWJ5dGUg Y2hhcmFjdGVyIG92ZXJydW5zIGFsbG93YWJsZSBsZW5ndGguICovCiAJCQlpZiAoKHMgLSBz dHIpICsgY2hhcmxlbiA+IGxlbiB8fCBtZW1jaHIocywgMCwgY2hhcmxlbikgIT0gTlVMTCkK IAkJCXsKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAot CQkJCQkJCQkJIGxpYnBxX2dldHRleHQoImluY29tcGxldGUgbXVsdGlieXRlIGNoYXJhY3Rl clxuIikpOworCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJpbmNvbXBsZXRl IG11bHRpYnl0ZSBjaGFyYWN0ZXIiKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KIApAQCAt NDEwMSw4ICs0MDY0LDcgQEAgUFFlc2NhcGVJbnRlcm5hbChQR2Nvbm4gKmNvbm4sIGNvbnN0 IGNoYXIgKnN0ciwgc2l6ZV90IGxlbiwgYm9vbCBhc19pZGVudCkKIAlyZXN1bHQgPSBycCA9 IChjaGFyICopIG1hbGxvYyhyZXN1bHRfc2l6ZSk7CiAJaWYgKHJwID09IE5VTEwpCiAJewot CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25u X2Vycm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5Iik7CiAJCXJldHVybiBOVUxMOwogCX0KIApA QCAtNDI2Niw4ICs0MjI4LDcgQEAgUFFlc2NhcGVCeXRlYUludGVybmFsKFBHY29ubiAqY29u biwKIAlpZiAocnAgPT0gTlVMTCkKIAl7CiAJCWlmIChjb25uKQotCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRleHQo Im91dCBvZiBtZW1vcnlcbiIpKTsKKwkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4s ICJvdXQgb2YgbWVtb3J5Iik7CiAJCXJldHVybiBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZ3NzYXBpLWNvbW1vbi5jIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtZ3NzYXBpLWNvbW1vbi5jCmluZGV4IGZhMDg1MjZlZTJhMy4uMmIzMWI4 ZWM1ODdmIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1nc3NhcGktY29t bW9uLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZ3NzYXBpLWNvbW1vbi5jCkBA IC05NCw4ICs5NCw3IEBAIHBnX0dTU19sb2FkX3NlcnZpY2VuYW1lKFBHY29ubiAqY29ubikK IAlob3N0ID0gUFFob3N0KGNvbm4pOwogCWlmICghKGhvc3QgJiYgaG9zdFswXSAhPSAnXDAn KSkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0J CQkJCQkJIGxpYnBxX2dldHRleHQoImhvc3QgbmFtZSBtdXN0IGJlIHNwZWNpZmllZFxuIikp OworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiaG9zdCBuYW1lIG11c3QgYmUg c3BlY2lmaWVkIik7CiAJCXJldHVybiBTVEFUVVNfRVJST1I7CiAJfQogCkBAIC0xMDcsOCAr MTA2LDcgQEAgcGdfR1NTX2xvYWRfc2VydmljZW5hbWUoUEdjb25uICpjb25uKQogCXRlbXBf Z2J1Zi52YWx1ZSA9IChjaGFyICopIG1hbGxvYyhtYXhsZW4pOwogCWlmICghdGVtcF9nYnVm LnZhbHVlKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCQlyZXR1cm4g U1RBVFVTX0VSUk9SOwogCX0KIAlzbnByaW50Zih0ZW1wX2didWYudmFsdWUsIG1heGxlbiwg IiVzQCVzIiwKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWxvYmouYyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWxvYmouYwppbmRleCAwNzVhNWVkODViY2YuLmJj ZDIyOGNlZjEzMCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbG9iai5j CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWxvYmouYwpAQCAtMTQxLDggKzE0MSw3 IEBAIGxvX3RydW5jYXRlKFBHY29ubiAqY29ubiwgaW50IGZkLCBzaXplX3QgbGVuKQogCS8q IE11c3QgY2hlY2sgdGhpcyBvbi10aGUtZmx5IGJlY2F1c2UgaXQncyBub3QgdGhlcmUgcHJl LTguMyAqLwogCWlmIChjb25uLT5sb2JqZnVuY3MtPmZuX2xvX3RydW5jYXRlID09IDApCiAJ ewotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJICBs aWJwcV9nZXR0ZXh0KCJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlc1xuIiks CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9J RCBvZiBmdW5jdGlvbiAlcyIsCiAJCQkJCQkgICJsb190cnVuY2F0ZSIpOwogCQlyZXR1cm4g LTE7CiAJfQpAQCAtMTU4LDggKzE1Nyw3IEBAIGxvX3RydW5jYXRlKFBHY29ubiAqY29ubiwg aW50IGZkLCBzaXplX3QgbGVuKQogCSAqLwogCWlmIChsZW4gPiAoc2l6ZV90KSBJTlRfTUFY KQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCQkgbGlicHFfZ2V0dGV4dCgiYXJndW1lbnQgb2YgbG9fdHJ1bmNhdGUgZXhjZWVkcyBp bnRlZ2VyIHJhbmdlXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJh cmd1bWVudCBvZiBsb190cnVuY2F0ZSBleGNlZWRzIGludGVnZXIgcmFuZ2UiKTsKIAkJcmV0 dXJuIC0xOwogCX0KIApAQCAtMjA2LDggKzIwNCw3IEBAIGxvX3RydW5jYXRlNjQoUEdjb25u ICpjb25uLCBpbnQgZmQsIHBnX2ludDY0IGxlbikKIAogCWlmIChjb25uLT5sb2JqZnVuY3Mt PmZuX2xvX3RydW5jYXRlNjQgPT0gMCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25u LT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoImNhbm5vdCBkZXRlcm1p bmUgT0lEIG9mIGZ1bmN0aW9uICVzXG4iKSwKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgImNhbm5vdCBkZXRlcm1pbmUgT0lEIG9mIGZ1bmN0aW9uICVzIiwKIAkJCQkJCSAg ImxvX3RydW5jYXRlNjQiKTsKIAkJcmV0dXJuIC0xOwogCX0KQEAgLTI2Miw4ICsyNTksNyBA QCBsb19yZWFkKFBHY29ubiAqY29ubiwgaW50IGZkLCBjaGFyICpidWYsIHNpemVfdCBsZW4p CiAJICovCiAJaWYgKGxlbiA+IChzaXplX3QpIElOVF9NQVgpCiAJewotCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0 KCJhcmd1bWVudCBvZiBsb19yZWFkIGV4Y2VlZHMgaW50ZWdlciByYW5nZVxuIikpOworCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiYXJndW1lbnQgb2YgbG9fcmVhZCBleGNl ZWRzIGludGVnZXIgcmFuZ2UiKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMzE0LDggKzMx MCw3IEBAIGxvX3dyaXRlKFBHY29ubiAqY29ubiwgaW50IGZkLCBjb25zdCBjaGFyICpidWYs IHNpemVfdCBsZW4pCiAJICovCiAJaWYgKGxlbiA+IChzaXplX3QpIElOVF9NQVgpCiAJewot CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJhcmd1bWVudCBvZiBsb193cml0ZSBleGNlZWRzIGludGVnZXIgcmFu Z2VcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImFyZ3VtZW50IG9m IGxvX3dyaXRlIGV4Y2VlZHMgaW50ZWdlciByYW5nZSIpOwogCQlyZXR1cm4gLTE7CiAJfQog CkBAIC0zOTksOCArMzk0LDcgQEAgbG9fbHNlZWs2NChQR2Nvbm4gKmNvbm4sIGludCBmZCwg cGdfaW50NjQgb2Zmc2V0LCBpbnQgd2hlbmNlKQogCiAJaWYgKGNvbm4tPmxvYmpmdW5jcy0+ Zm5fbG9fbHNlZWs2NCA9PSAwKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVy cm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY2Fubm90IGRldGVybWluZSBP SUQgb2YgZnVuY3Rpb24gJXNcbiIpLAorCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiY2Fubm90IGRldGVybWluZSBPSUQgb2YgZnVuY3Rpb24gJXMiLAogCQkJCQkJICAibG9f bHNlZWs2NCIpOwogCQlyZXR1cm4gLTE7CiAJfQpAQCAtNDkwLDggKzQ4NCw3IEBAIGxvX2Ny ZWF0ZShQR2Nvbm4gKmNvbm4sIE9pZCBsb2JqSWQpCiAJLyogTXVzdCBjaGVjayB0aGlzIG9u LXRoZS1mbHkgYmVjYXVzZSBpdCdzIG5vdCB0aGVyZSBwcmUtOC4xICovCiAJaWYgKGNvbm4t PmxvYmpmdW5jcy0+Zm5fbG9fY3JlYXRlID09IDApCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZl cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjYW5ub3Qg ZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlc1xuIiksCisJCWxpYnBxX2FwcGVuZF9jb25u X2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCiAJ CQkJCQkgICJsb19jcmVhdGUiKTsKIAkJcmV0dXJuIEludmFsaWRPaWQ7CiAJfQpAQCAtNTY0 LDggKzU1Nyw3IEBAIGxvX3RlbGw2NChQR2Nvbm4gKmNvbm4sIGludCBmZCkKIAogCWlmIChj b25uLT5sb2JqZnVuY3MtPmZuX2xvX3RlbGw2NCA9PSAwKQogCXsKLQkJYXBwZW5kUFFFeHBC dWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY2Fu bm90IGRldGVybWluZSBPSUQgb2YgZnVuY3Rpb24gJXNcbiIpLAorCQlsaWJwcV9hcHBlbmRf Y29ubl9lcnJvcihjb25uLCAiY2Fubm90IGRldGVybWluZSBPSUQgb2YgZnVuY3Rpb24gJXMi LAogCQkJCQkJICAibG9fdGVsbDY0Iik7CiAJCXJldHVybiAtMTsKIAl9CkBAIC02NzQsOCAr NjY2LDcgQEAgbG9faW1wb3J0X2ludGVybmFsKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAq ZmlsZW5hbWUsIE9pZCBvaWQpCiAJZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSB8IFBH X0JJTkFSWSwgMDY2Nik7CiAJaWYgKGZkIDwgMCkKIAl7CQkJCQkJCS8qIGVycm9yICovCi0J CWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBx X2dldHRleHQoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlc1xuIiksCisJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjog JXMiLAogCQkJCQkJICBmaWxlbmFtZSwgc3RyZXJyb3JfcihlcnJubywgc2VidWYsIHNpemVv ZihzZWJ1ZikpKTsKIAkJcmV0dXJuIEludmFsaWRPaWQ7CiAJfQpAQCAtNzMxLDggKzcyMiw3 IEBAIGxvX2ltcG9ydF9pbnRlcm5hbChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmZpbGVu YW1lLCBPaWQgb2lkKQogCQkodm9pZCkgY2xvc2UoZmQpOwogCQkvKiBkZWxpYmVyYXRlbHkg b3ZlcndyaXRlIGFueSBlcnJvciBmcm9tIGxvX2Nsb3NlICovCiAJCXBxQ2xlYXJDb25uRXJy b3JTdGF0ZShjb25uKTsKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHJlYWQgZnJvbSBmaWxlIFwi JXNcIjogJXNcbiIpLAorCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQg bm90IHJlYWQgZnJvbSBmaWxlIFwiJXNcIjogJXMiLAogCQkJCQkJICBmaWxlbmFtZSwKIAkJ CQkJCSAgc3RyZXJyb3JfcihzYXZlX2Vycm5vLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwog CQlyZXR1cm4gSW52YWxpZE9pZDsKQEAgLTc4Nyw4ICs3NzcsNyBAQCBsb19leHBvcnQoUEdj b25uICpjb25uLCBPaWQgbG9iaklkLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIAkJKHZvaWQp IGxvX2Nsb3NlKGNvbm4sIGxvYmopOwogCQkvKiBkZWxpYmVyYXRlbHkgb3ZlcndyaXRlIGFu eSBlcnJvciBmcm9tIGxvX2Nsb3NlICovCiAJCXBxQ2xlYXJDb25uRXJyb3JTdGF0ZShjb25u KTsKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAg bGlicHFfZ2V0dGV4dCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVzXG4iKSwKKwkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIl c1wiOiAlcyIsCiAJCQkJCQkgIGZpbGVuYW1lLAogCQkJCQkJICBzdHJlcnJvcl9yKHNhdmVf ZXJybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCXJldHVybiAtMTsKQEAgLTgwOSw4 ICs3OTgsNyBAQCBsb19leHBvcnQoUEdjb25uICpjb25uLCBPaWQgbG9iaklkLCBjb25zdCBj aGFyICpmaWxlbmFtZSkKIAkJCSh2b2lkKSBjbG9zZShmZCk7CiAJCQkvKiBkZWxpYmVyYXRl bHkgb3ZlcndyaXRlIGFueSBlcnJvciBmcm9tIGxvX2Nsb3NlICovCiAJCQlwcUNsZWFyQ29u bkVycm9yU3RhdGUoY29ubik7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JN ZXNzYWdlLAotCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHdyaXRlIHRvIGZp bGUgXCIlc1wiOiAlc1xuIiksCisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAi Y291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAlcyIsCiAJCQkJCQkJICBmaWxlbmFt ZSwKIAkJCQkJCQkgIHN0cmVycm9yX3Ioc2F2ZV9lcnJubywgc2VidWYsIHNpemVvZihzZWJ1 ZikpKTsKIAkJCXJldHVybiAtMTsKQEAgLTgzMyw4ICs4MjEsNyBAQCBsb19leHBvcnQoUEdj b25uICpjb25uLCBPaWQgbG9iaklkLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIAkvKiBpZiB3 ZSBhbHJlYWR5IGZhaWxlZCwgZG9uJ3Qgb3ZlcndyaXRlIHRoYXQgbXNnIHdpdGggYSBjbG9z ZSBlcnJvciAqLwogCWlmIChjbG9zZShmZCkgIT0gMCAmJiByZXN1bHQgPj0gMCkKIAl7Ci0J CWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBx X2dldHRleHQoImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjogJXNcbiIpLAorCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IHdyaXRlIHRvIGZpbGUg XCIlc1wiOiAlcyIsCiAJCQkJCQkgIGZpbGVuYW1lLCBzdHJlcnJvcl9yKGVycm5vLCBzZWJ1 Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQlyZXN1bHQgPSAtMTsKIAl9CkBAIC04ODAsOCArODY3 LDcgQEAgbG9faW5pdGlhbGl6ZShQR2Nvbm4gKmNvbm4pCiAJbG9iamZ1bmNzID0gKFBHbG9i amZ1bmNzICopIG1hbGxvYyhzaXplb2YoUEdsb2JqZnVuY3MpKTsKIAlpZiAobG9iamZ1bmNz ID09IE5VTEwpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNz YWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCWxp YnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5Iik7CiAJCXJldHVy biAtMTsKIAl9CiAJTWVtU2V0KChjaGFyICopIGxvYmpmdW5jcywgMCwgc2l6ZW9mKFBHbG9i amZ1bmNzKSk7CkBAIC05MTksOCArOTA1LDcgQEAgbG9faW5pdGlhbGl6ZShQR2Nvbm4gKmNv bm4pCiAJewogCQlmcmVlKGxvYmpmdW5jcyk7CiAJCVBRY2xlYXIocmVzKTsKLQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0 dGV4dCgicXVlcnkgdG8gaW5pdGlhbGl6ZSBsYXJnZSBvYmplY3QgZnVuY3Rpb25zIGRpZCBu b3QgcmV0dXJuIGRhdGFcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg InF1ZXJ5IHRvIGluaXRpYWxpemUgbGFyZ2Ugb2JqZWN0IGZ1bmN0aW9ucyBkaWQgbm90IHJl dHVybiBkYXRhIik7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTk2OCw2NCArOTUzLDU2IEBA IGxvX2luaXRpYWxpemUoUEdjb25uICpjb25uKQogCSAqLwogCWlmIChsb2JqZnVuY3MtPmZu X2xvX29wZW4gPT0gMCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1l c3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoImNhbm5vdCBkZXRlcm1pbmUgT0lEIG9m IGZ1bmN0aW9uICVzXG4iKSwKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNh bm5vdCBkZXRlcm1pbmUgT0lEIG9mIGZ1bmN0aW9uICVzIiwKIAkJCQkJCSAgImxvX29wZW4i KTsKIAkJZnJlZShsb2JqZnVuY3MpOwogCQlyZXR1cm4gLTE7CiAJfQogCWlmIChsb2JqZnVu Y3MtPmZuX2xvX2Nsb3NlID09IDApCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ ZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjYW5ub3QgZGV0ZXJtaW5l IE9JRCBvZiBmdW5jdGlvbiAlc1xuIiksCisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCiAJCQkJCQkgICJs b19jbG9zZSIpOwogCQlmcmVlKGxvYmpmdW5jcyk7CiAJCXJldHVybiAtMTsKIAl9CiAJaWYg KGxvYmpmdW5jcy0+Zm5fbG9fY3JlYXQgPT0gMCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVy KCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoImNhbm5vdCBk ZXRlcm1pbmUgT0lEIG9mIGZ1bmN0aW9uICVzXG4iKSwKKwkJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgImNhbm5vdCBkZXRlcm1pbmUgT0lEIG9mIGZ1bmN0aW9uICVzIiwKIAkJ CQkJCSAgImxvX2NyZWF0Iik7CiAJCWZyZWUobG9iamZ1bmNzKTsKIAkJcmV0dXJuIC0xOwog CX0KIAlpZiAobG9iamZ1bmNzLT5mbl9sb191bmxpbmsgPT0gMCkKIAl7Ci0JCWFwcGVuZFBR RXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQo ImNhbm5vdCBkZXRlcm1pbmUgT0lEIG9mIGZ1bmN0aW9uICVzXG4iKSwKKwkJbGlicHFfYXBw ZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNhbm5vdCBkZXRlcm1pbmUgT0lEIG9mIGZ1bmN0aW9u ICVzIiwKIAkJCQkJCSAgImxvX3VubGluayIpOwogCQlmcmVlKGxvYmpmdW5jcyk7CiAJCXJl dHVybiAtMTsKIAl9CiAJaWYgKGxvYmpmdW5jcy0+Zm5fbG9fbHNlZWsgPT0gMCkKIAl7Ci0J CWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBx X2dldHRleHQoImNhbm5vdCBkZXRlcm1pbmUgT0lEIG9mIGZ1bmN0aW9uICVzXG4iKSwKKwkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNhbm5vdCBkZXRlcm1pbmUgT0lEIG9m IGZ1bmN0aW9uICVzIiwKIAkJCQkJCSAgImxvX2xzZWVrIik7CiAJCWZyZWUobG9iamZ1bmNz KTsKIAkJcmV0dXJuIC0xOwogCX0KIAlpZiAobG9iamZ1bmNzLT5mbl9sb190ZWxsID09IDAp CiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJ ICBsaWJwcV9nZXR0ZXh0KCJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlc1xu IiksCisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5l IE9JRCBvZiBmdW5jdGlvbiAlcyIsCiAJCQkJCQkgICJsb190ZWxsIik7CiAJCWZyZWUobG9i amZ1bmNzKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlpZiAobG9iamZ1bmNzLT5mbl9sb19yZWFk ID09IDApCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAot CQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlv biAlc1xuIiksCisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0 ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCiAJCQkJCQkgICJsb3JlYWQiKTsKIAkJZnJl ZShsb2JqZnVuY3MpOwogCQlyZXR1cm4gLTE7CiAJfQogCWlmIChsb2JqZnVuY3MtPmZuX2xv X3dyaXRlID09IDApCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNz YWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBm dW5jdGlvbiAlc1xuIiksCisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5u b3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCiAJCQkJCQkgICJsb3dyaXRlIik7 CiAJCWZyZWUobG9iamZ1bmNzKTsKIAkJcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtbWlzYy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlz Yy5jCmluZGV4IDllM2QzOGQzMzcxMC4uOGFmOTE4ZDE2NDE4IDEwMDY0NAotLS0gYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1taXNjLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtbWlzYy5jCkBAIC01NzAsOCArNTcwLDcgQEAgcHFSZWFkRGF0YShQR2Nvbm4gKmNvbm4p CiAKIAlpZiAoY29ubi0+c29jayA9PSBQR0lOVkFMSURfU09DS0VUKQogCXsKLQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0 dGV4dCgiY29ubmVjdGlvbiBub3Qgb3BlblxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiY29ubmVjdGlvbiBub3Qgb3BlbiIpOwogCQlyZXR1cm4gLTE7CiAJfQog CkBAIC03NDksMTAgKzc0OCw5IEBAIHBxUmVhZERhdGEoUEdjb25uICpjb25uKQogCSAqIG1l YW5zIHRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZC4gIENvcGUuCiAJICovCiBkZWZp bml0ZWx5RU9GOgotCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2Us Ci0JCQkJCQkgbGlicHFfZ2V0dGV4dCgic2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1 bmV4cGVjdGVkbHlcbiIKLQkJCQkJCQkJCSAgICJcdFRoaXMgcHJvYmFibHkgbWVhbnMgdGhl IHNlcnZlciB0ZXJtaW5hdGVkIGFibm9ybWFsbHlcbiIKLQkJCQkJCQkJCSAgICJcdGJlZm9y ZSBvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LlxuIikpOworCWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKGNvbm4sICJzZXJ2ZXIgY2xvc2VkIHRoZSBjb25uZWN0aW9uIHVuZXhw ZWN0ZWRseVxuIgorCQkJCQkgICAiXHRUaGlzIHByb2JhYmx5IG1lYW5zIHRoZSBzZXJ2ZXIg dGVybWluYXRlZCBhYm5vcm1hbGx5XG4iCisJCQkJCSAgICJcdGJlZm9yZSBvciB3aGlsZSBw cm9jZXNzaW5nIHRoZSByZXF1ZXN0LiIpOwogCiAJLyogQ29tZSBoZXJlIGlmIGxvd2VyLWxl dmVsIGNvZGUgYWxyZWFkeSBzZXQgYSBzdWl0YWJsZSBlcnJvck1lc3NhZ2UgKi8KIGRlZmlu aXRlbHlGYWlsZWQ6CkBAIC0xMDAyLDggKzEwMDAsNyBAQCBwcVdhaXRUaW1lZChpbnQgZm9y UmVhZCwgaW50IGZvcldyaXRlLCBQR2Nvbm4gKmNvbm4sIHRpbWVfdCBmaW5pc2hfdGltZSkK IAogCWlmIChyZXN1bHQgPT0gMCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25u LT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoInRpbWVvdXQgZXhwaXJl ZFxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAidGltZW91dCBleHBp cmVkIik7CiAJCXJldHVybiAxOwogCX0KIApAQCAtMTA0Nyw4ICsxMDQ0LDcgQEAgcHFTb2Nr ZXRDaGVjayhQR2Nvbm4gKmNvbm4sIGludCBmb3JSZWFkLCBpbnQgZm9yV3JpdGUsIHRpbWVf dCBlbmRfdGltZSkKIAkJcmV0dXJuIC0xOwogCWlmIChjb25uLT5zb2NrID09IFBHSU5WQUxJ RF9TT0NLRVQpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNz YWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIHNvY2tldFxuIikpOworCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiaW52YWxpZCBzb2NrZXQiKTsKIAkJcmV0 dXJuIC0xOwogCX0KIApAQCAtMTA3MCw5ICsxMDY2LDcgQEAgcHFTb2NrZXRDaGVjayhQR2Nv bm4gKmNvbm4sIGludCBmb3JSZWFkLCBpbnQgZm9yV3JpdGUsIHRpbWVfdCBlbmRfdGltZSkK IAl7CiAJCWNoYXIJCXNlYnVmW1BHX1NUUkVSUk9SX1JfQlVGTEVOXTsKIAotCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCIlcygpIGZhaWxlZDogJXNcbiIpLAotCQkJCQkJICAic2VsZWN0IiwKKwkJbGlicHFfYXBw ZW5kX2Nvbm5fZXJyb3IoY29ubiwgIiVzKCkgZmFpbGVkOiAlcyIsICJzZWxlY3QiLAogCQkJ CQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7 CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMu YyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCmluZGV4IGYwMDExMzdi NzY5Mi4uODhkZDM2MGM5MDVmIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1wcm90b2NvbDMuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMu YwpAQCAtMjAxLDggKzIwMSw3IEBAIHBxUGFyc2VJbnB1dDMoUEdjb25uICpjb25uKQogCQkJ CQkJCQkJCQkJCQkgICBQR1JFU19DT01NQU5EX09LKTsKIAkJCQkJCWlmICghY29ubi0+cmVz dWx0KQogCQkJCQkJewotCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJv ck1lc3NhZ2UsCi0JCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeSIp KTsKKwkJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9y eSIpOwogCQkJCQkJCXBxU2F2ZUVycm9yUmVzdWx0KGNvbm4pOwogCQkJCQkJfQogCQkJCQl9 CkBAIC0yMjYsOCArMjI1LDcgQEAgcHFQYXJzZUlucHV0MyhQR2Nvbm4gKmNvbm4pCiAJCQkJ CQkJCQkJCQkJCSAgIFBHUkVTX1BJUEVMSU5FX1NZTkMpOwogCQkJCQkJaWYgKCFjb25uLT5y ZXN1bHQpCiAJCQkJCQl7Ci0JCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVy cm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5 IikpOworCQkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdXQgb2YgbWVt b3J5Iik7CiAJCQkJCQkJcHFTYXZlRXJyb3JSZXN1bHQoY29ubik7CiAJCQkJCQl9CiAJCQkJ CQllbHNlCkBAIC0yNTUsOCArMjUzLDcgQEAgcHFQYXJzZUlucHV0MyhQR2Nvbm4gKmNvbm4p CiAJCQkJCQkJCQkJCQkJCSAgIFBHUkVTX0VNUFRZX1FVRVJZKTsKIAkJCQkJCWlmICghY29u bi0+cmVzdWx0KQogCQkJCQkJewotCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25u LT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1l bW9yeSIpKTsKKwkJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAib3V0IG9m IG1lbW9yeSIpOwogCQkJCQkJCXBxU2F2ZUVycm9yUmVzdWx0KGNvbm4pOwogCQkJCQkJfQog CQkJCQl9CkBAIC0yNzMsOCArMjcwLDcgQEAgcHFQYXJzZUlucHV0MyhQR2Nvbm4gKmNvbm4p CiAJCQkJCQkJCQkJCQkJCQkgICBQR1JFU19DT01NQU5EX09LKTsKIAkJCQkJCQlpZiAoIWNv bm4tPnJlc3VsdCkKIAkJCQkJCQl7Ci0JCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoIm91dCBv ZiBtZW1vcnkiKSk7CisJCQkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJv dXQgb2YgbWVtb3J5Iik7CiAJCQkJCQkJCXBxU2F2ZUVycm9yUmVzdWx0KGNvbm4pOwogCQkJ CQkJCX0KIAkJCQkJCX0KQEAgLTM1NCw4ICszNTAsNyBAQCBwcVBhcnNlSW5wdXQzKFBHY29u biAqY29ubikKIAkJCQkJCQkJCQkJCQkJCSAgIFBHUkVTX0NPTU1BTkRfT0spOwogCQkJCQkJ CWlmICghY29ubi0+cmVzdWx0KQogCQkJCQkJCXsKLQkJCQkJCQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4 dCgib3V0IG9mIG1lbW9yeSIpKTsKKwkJCQkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgIm91dCBvZiBtZW1vcnkiKTsKIAkJCQkJCQkJcHFTYXZlRXJyb3JSZXN1bHQoY29u bik7CiAJCQkJCQkJfQogCQkJCQkJfQpAQCAtMzg3LDggKzM4Miw3IEBAIHBxUGFyc2VJbnB1 dDMoUEdjb25uICpjb25uKQogCQkJCQllbHNlCiAJCQkJCXsKIAkJCQkJCS8qIFNldCB1cCB0 byByZXBvcnQgZXJyb3IgYXQgZW5kIG9mIHF1ZXJ5ICovCi0JCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4 dCgic2VydmVyIHNlbnQgZGF0YSAoXCJEXCIgbWVzc2FnZSkgd2l0aG91dCBwcmlvciByb3cg ZGVzY3JpcHRpb24gKFwiVFwiIG1lc3NhZ2UpXG4iKSk7CisJCQkJCQlsaWJwcV9hcHBlbmRf Y29ubl9lcnJvcihjb25uLCAic2VydmVyIHNlbnQgZGF0YSAoXCJEXCIgbWVzc2FnZSkgd2l0 aG91dCBwcmlvciByb3cgZGVzY3JpcHRpb24gKFwiVFwiIG1lc3NhZ2UpIik7CiAJCQkJCQlw cVNhdmVFcnJvclJlc3VsdChjb25uKTsKIAkJCQkJCS8qIERpc2NhcmQgdGhlIHVuZXhwZWN0 ZWQgbWVzc2FnZSAqLwogCQkJCQkJY29ubi0+aW5DdXJzb3IgKz0gbXNnTGVuZ3RoOwpAQCAt NDMwLDkgKzQyNCw3IEBAIHBxUGFyc2VJbnB1dDMoUEdjb25uICpjb25uKQogCQkJCQkgKi8K IAkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNv bm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5leHBlY3Rl ZCByZXNwb25zZSBmcm9tIHNlcnZlcjsgZmlyc3QgcmVjZWl2ZWQgY2hhcmFjdGVyIHdhcyBc IiVjXCJcbiIpLAotCQkJCQkJCQkJICBpZCk7CisJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sICJ1bmV4cGVjdGVkIHJlc3BvbnNlIGZyb20gc2VydmVyOyBmaXJzdCByZWNl aXZlZCBjaGFyYWN0ZXIgd2FzIFwiJWNcIiIsIGlkKTsKIAkJCQkJLyogYnVpbGQgYW4gZXJy b3IgcmVzdWx0IGhvbGRpbmcgdGhlIGVycm9yIG1lc3NhZ2UgKi8KIAkJCQkJcHFTYXZlRXJy b3JSZXN1bHQoY29ubik7CiAJCQkJCS8qIG5vdCBzdXJlIGlmIHdlIHdpbGwgc2VlIG1vcmUs IHNvIGdvIHRvIHJlYWR5IHN0YXRlICovCkBAIC00NTUsOSArNDQ3LDcgQEAgcHFQYXJzZUlu cHV0MyhQR2Nvbm4gKmNvbm4pCiAJCWVsc2UKIAkJewogCQkJLyogVHJvdWJsZSAtLS0gcmVw b3J0IGl0ICovCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAot CQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgibWVzc2FnZSBjb250ZW50cyBkbyBub3QgYWdyZWUg d2l0aCBsZW5ndGggaW4gbWVzc2FnZSB0eXBlIFwiJWNcIlxuIiksCi0JCQkJCQkJICBpZCk7 CisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAibWVzc2FnZSBjb250ZW50cyBk byBub3QgYWdyZWUgd2l0aCBsZW5ndGggaW4gbWVzc2FnZSB0eXBlIFwiJWNcIiIsIGlkKTsK IAkJCS8qIGJ1aWxkIGFuIGVycm9yIHJlc3VsdCBob2xkaW5nIHRoZSBlcnJvciBtZXNzYWdl ICovCiAJCQlwcVNhdmVFcnJvclJlc3VsdChjb25uKTsKIAkJCWNvbm4tPmFzeW5jU3RhdHVz ID0gUEdBU1lOQ19SRUFEWTsKQEAgLTQ3NSw4ICs0NjUsNyBAQCBwcVBhcnNlSW5wdXQzKFBH Y29ubiAqY29ubikKIHN0YXRpYyB2b2lkCiBoYW5kbGVTeW5jTG9zcyhQR2Nvbm4gKmNvbm4s IGNoYXIgaWQsIGludCBtc2dMZW5ndGgpCiB7Ci0JYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4t PmVycm9yTWVzc2FnZSwKLQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJsb3N0IHN5bmNocm9uaXph dGlvbiB3aXRoIHNlcnZlcjogZ290IG1lc3NhZ2UgdHlwZSBcIiVjXCIsIGxlbmd0aCAlZFxu IiksCisJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImxvc3Qgc3luY2hyb25pemF0 aW9uIHdpdGggc2VydmVyOiBnb3QgbWVzc2FnZSB0eXBlIFwiJWNcIiwgbGVuZ3RoICVkIiwK IAkJCQkJICBpZCwgbXNnTGVuZ3RoKTsKIAkvKiBidWlsZCBhbiBlcnJvciByZXN1bHQgaG9s ZGluZyB0aGUgZXJyb3IgbWVzc2FnZSAqLwogCXBxU2F2ZUVycm9yUmVzdWx0KGNvbm4pOwpA QCAtOTY3LDggKzk1Niw3IEBAIHBxR2V0RXJyb3JOb3RpY2UzKFBHY29ubiAqY29ubiwgYm9v bCBpc0Vycm9yKQogCQl9CiAKIAkJaWYgKFBRRXhwQnVmZmVyRGF0YUJyb2tlbih3b3JrQnVm KSkKLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJ CQkJCSBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCQllbHNlCiAJCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLCB3b3JrQnVmLmRhdGEpOwog CX0KQEAgLTE3MjMsOCArMTcxMSw3IEBAIHBxR2V0Q29weURhdGEzKFBHY29ubiAqY29ubiwg Y2hhciAqKmJ1ZmZlciwgaW50IGFzeW5jKQogCQkJKmJ1ZmZlciA9IChjaGFyICopIG1hbGxv Yyhtc2dMZW5ndGggKyAxKTsKIAkJCWlmICgqYnVmZmVyID09IE5VTEwpCiAJCQl7Ci0JCQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgIm91dCBvZiBtZW1vcnkiKTsKIAkJCQlyZXR1cm4gLTI7CiAJCQl9 CiAJCQltZW1jcHkoKmJ1ZmZlciwgJmNvbm4tPmluQnVmZmVyW2Nvbm4tPmluQ3Vyc29yXSwg bXNnTGVuZ3RoKTsKQEAgLTE3NTYsOCArMTc0Myw3IEBAIHBxR2V0bGluZTMoUEdjb25uICpj b25uLCBjaGFyICpzLCBpbnQgbWF4bGVuKQogCQkgY29ubi0+YXN5bmNTdGF0dXMgIT0gUEdB U1lOQ19DT1BZX0JPVEgpIHx8CiAJCWNvbm4tPmNvcHlfaXNfYmluYXJ5KQogCXsKLQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFf Z2V0dGV4dCgiUFFnZXRsaW5lOiBub3QgZG9pbmcgdGV4dCBDT1BZIE9VVFxuIikpOworCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiUFFnZXRsaW5lOiBub3QgZG9pbmcgdGV4 dCBDT1BZIE9VVCIpOwogCQkqcyA9ICdcMCc7CiAJCXJldHVybiBFT0Y7CiAJfQpAQCAtMTg2 Miw4ICsxODQ4LDcgQEAgcHFFbmRjb3B5MyhQR2Nvbm4gKmNvbm4pCiAJCWNvbm4tPmFzeW5j U3RhdHVzICE9IFBHQVNZTkNfQ09QWV9PVVQgJiYKIAkJY29ubi0+YXN5bmNTdGF0dXMgIT0g UEdBU1lOQ19DT1BZX0JPVEgpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJubyBDT1BZIGluIHByb2dy ZXNzXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBDT1BZIGlu IHByb2dyZXNzIik7CiAJCXJldHVybiAxOwogCX0KIApAQCAtMjEyNiwxNSArMjExMSwxMyBA QCBwcUZ1bmN0aW9uQ2FsbDMoUEdjb25uICpjb25uLCBPaWQgZm5pZCwKIAkJCQkJCWNvbm4t PnJlc3VsdCA9IFBRbWFrZUVtcHR5UEdyZXN1bHQoY29ubiwgc3RhdHVzKTsKIAkJCQkJCWlm ICghY29ubi0+cmVzdWx0KQogCQkJCQkJewotCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0 IG9mIG1lbW9yeVxuIikpOworCQkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4s ICJvdXQgb2YgbWVtb3J5Iik7CiAJCQkJCQkJcHFTYXZlRXJyb3JSZXN1bHQoY29ubik7CiAJ CQkJCQl9CiAJCQkJCX0KIAkJCQkJZWxzZQogCQkJCQl7Ci0JCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4 dCgicHJvdG9jb2wgZXJyb3I6IG5vIGZ1bmN0aW9uIHJlc3VsdFxuIikpOworCQkJCQkJbGli cHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInByb3RvY29sIGVycm9yOiBubyBmdW5jdGlv biByZXN1bHQiKTsKIAkJCQkJCXBxU2F2ZUVycm9yUmVzdWx0KGNvbm4pOwogCQkJCQl9CiAJ CQkJfQpAQCAtMjE0NSw5ICsyMTI4LDcgQEAgcHFGdW5jdGlvbkNhbGwzKFBHY29ubiAqY29u biwgT2lkIGZuaWQsCiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIFRoZSBiYWNr ZW5kIHZpb2xhdGVzIHRoZSBwcm90b2NvbC4gKi8KLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoInByb3RvY29s IGVycm9yOiBpZD0weCV4XG4iKSwKLQkJCQkJCQkJICBpZCk7CisJCQkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgInByb3RvY29sIGVycm9yOiBpZD0weCV4IiwgaWQpOwogCQkJ CXBxU2F2ZUVycm9yUmVzdWx0KGNvbm4pOwogCQkJCS8qIHRydXN0IHRoZSBzcGVjaWZpZWQg bWVzc2FnZSBsZW5ndGggYXMgd2hhdCB0byBza2lwICovCiAJCQkJY29ubi0+aW5TdGFydCAr PSA1ICsgbXNnTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt c2VjdXJlLWNvbW1vbi5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLWNvbW1v bi5jCmluZGV4IGNjOGEyYjg1OTM4ZC4uYTBiMjA2OGRjMDExIDEwMDY0NAotLS0gYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtY29tbW9uLmMKKysrIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtc2VjdXJlLWNvbW1vbi5jCkBAIC05Niw4ICs5Niw3IEBAIHBxX3Zlcmlm eV9wZWVyX25hbWVfbWF0Y2hlc19jZXJ0aWZpY2F0ZV9uYW1lKFBHY29ubiAqY29ubiwKIAog CWlmICghKGhvc3QgJiYgaG9zdFswXSAhPSAnXDAnKSkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoImhv c3QgbmFtZSBtdXN0IGJlIHNwZWNpZmllZFxuIikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiaG9zdCBuYW1lIG11c3QgYmUgc3BlY2lmaWVkIik7CiAJCXJldHVybiAt MTsKIAl9CiAKQEAgLTEwOCw4ICsxMDcsNyBAQCBwcV92ZXJpZnlfcGVlcl9uYW1lX21hdGNo ZXNfY2VydGlmaWNhdGVfbmFtZShQR2Nvbm4gKmNvbm4sCiAJbmFtZSA9IG1hbGxvYyhuYW1l bGVuICsgMSk7CiAJaWYgKG5hbWUgPT0gTlVMTCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoIm91dCBv ZiBtZW1vcnlcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBv ZiBtZW1vcnkiKTsKIAkJcmV0dXJuIC0xOwogCX0KIAltZW1jcHkobmFtZSwgbmFtZWRhdGEs IG5hbWVsZW4pOwpAQCAtMTIyLDggKzEyMCw3IEBAIHBxX3ZlcmlmeV9wZWVyX25hbWVfbWF0 Y2hlc19jZXJ0aWZpY2F0ZV9uYW1lKFBHY29ubiAqY29ubiwKIAlpZiAobmFtZWxlbiAhPSBz dHJsZW4obmFtZSkpCiAJewogCQlmcmVlKG5hbWUpOwotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJTU0wgY2Vy dGlmaWNhdGUncyBuYW1lIGNvbnRhaW5zIGVtYmVkZGVkIG51bGxcbiIpKTsKKwkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlNTTCBjZXJ0aWZpY2F0ZSdzIG5hbWUgY29udGFp bnMgZW1iZWRkZWQgbnVsbCIpOwogCQlyZXR1cm4gLTE7CiAJfQogCkBAIC0xNzMsOCArMTcw LDcgQEAgcHFfdmVyaWZ5X3BlZXJfbmFtZV9tYXRjaGVzX2NlcnRpZmljYXRlX2lwKFBHY29u biAqY29ubiwKIAogCWlmICghKGhvc3QgJiYgaG9zdFswXSAhPSAnXDAnKSkKIAl7Ci0JCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBx X2dldHRleHQoImhvc3QgbmFtZSBtdXN0IGJlIHNwZWNpZmllZFxuIikpOworCQlsaWJwcV9h cHBlbmRfY29ubl9lcnJvcihjb25uLCAiaG9zdCBuYW1lIG11c3QgYmUgc3BlY2lmaWVkIik7 CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTIyOSw4ICsyMjUsNyBAQCBwcV92ZXJpZnlfcGVl cl9uYW1lX21hdGNoZXNfY2VydGlmaWNhdGVfaXAoUEdjb25uICpjb25uLAogCQkgKiBOb3Qg SVB2NCBvciBJUHY2LiBXZSBjb3VsZCBpZ25vcmUgdGhlIGZpZWxkLCBidXQgbGVuaWVuY3kg c2VlbXMKIAkJICogd3JvbmcgZ2l2ZW4gdGhlIHN1YmplY3QgbWF0dGVyLgogCQkgKi8KLQkJ YXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFf Z2V0dGV4dCgiY2VydGlmaWNhdGUgY29udGFpbnMgSVAgYWRkcmVzcyB3aXRoIGludmFsaWQg bGVuZ3RoICVsdVxuIiksCisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjZXJ0 aWZpY2F0ZSBjb250YWlucyBJUCBhZGRyZXNzIHdpdGggaW52YWxpZCBsZW5ndGggJWx1IiwK IAkJCQkJCSAgKHVuc2lnbmVkIGxvbmcpIGlwbGVuKTsKIAkJcmV0dXJuIC0xOwogCX0KQEAg LTIzOSw4ICsyMzQsNyBAQCBwcV92ZXJpZnlfcGVlcl9uYW1lX21hdGNoZXNfY2VydGlmaWNh dGVfaXAoUEdjb25uICpjb25uLAogCWFkZHJzdHIgPSBwZ19pbmV0X25ldF9udG9wKGZhbWls eSwgaXBkYXRhLCA4ICogaXBsZW4sIHRtcCwgc2l6ZW9mKHRtcCkpOwogCWlmICghYWRkcnN0 cikKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJ CQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlJ3MgSVAg YWRkcmVzcyB0byBzdHJpbmc6ICVzXG4iKSwKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgImNvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlJ3MgSVAgYWRkcmVzcyB0byBz dHJpbmc6ICVzIiwKIAkJCQkJCSAgc3RyZXJyb3JfcihlcnJubywgc2VidWYsIHNpemVvZihz ZWJ1ZikpKTsKIAkJcmV0dXJuIC0xOwogCX0KQEAgLTI3Miw4ICsyNjYsNyBAQCBwcV92ZXJp ZnlfcGVlcl9uYW1lX21hdGNoZXNfY2VydGlmaWNhdGUoUEdjb25uICpjb25uKQogCS8qIENo ZWNrIHRoYXQgd2UgaGF2ZSBhIGhvc3RuYW1lIHRvIGNvbXBhcmUgd2l0aC4gKi8KIAlpZiAo IShob3N0ICYmIGhvc3RbMF0gIT0gJ1wwJykpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJob3N0IG5h bWUgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIGEgdmVyaWZpZWQgU1NMIGNvbm5lY3Rpb25cbiIp KTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImhvc3QgbmFtZSBtdXN0IGJl IHNwZWNpZmllZCBmb3IgYSB2ZXJpZmllZCBTU0wgY29ubmVjdGlvbiIpOwogCQlyZXR1cm4g ZmFsc2U7CiAJfQogCkBAIC0yOTAsMjEgKzI4MywyMCBAQCBwcV92ZXJpZnlfcGVlcl9uYW1l X21hdGNoZXNfY2VydGlmaWNhdGUoUEdjb25uICpjb25uKQogCQlpZiAobmFtZXNfZXhhbWlu ZWQgPiAxKQogCQl7CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdl LAotCQkJCQkJCSAgbGlicHFfbmdldHRleHQoInNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgXCIl c1wiIChhbmQgJWQgb3RoZXIgbmFtZSkgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lIFwiJXNc IlxuIiwKLQkJCQkJCQkJCQkJICJzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yIFwiJXNcIiAoYW5k ICVkIG90aGVyIG5hbWVzKSBkb2VzIG5vdCBtYXRjaCBob3N0IG5hbWUgXCIlc1wiXG4iLAor CQkJCQkJCSAgbGlicHFfbmdldHRleHQoInNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgXCIlc1wi IChhbmQgJWQgb3RoZXIgbmFtZSkgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lIFwiJXNcIiIs CisJCQkJCQkJCQkJCSAic2VydmVyIGNlcnRpZmljYXRlIGZvciBcIiVzXCIgKGFuZCAlZCBv dGhlciBuYW1lcykgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lIFwiJXNcIiIsCiAJCQkJCQkJ CQkJCSBuYW1lc19leGFtaW5lZCAtIDEpLAogCQkJCQkJCSAgZmlyc3RfbmFtZSwgbmFtZXNf ZXhhbWluZWQgLSAxLCBob3N0KTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcigmY29ubi0+ ZXJyb3JNZXNzYWdlLCAnXG4nKTsKIAkJfQogCQllbHNlIGlmIChuYW1lc19leGFtaW5lZCA9 PSAxKQogCQl7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAot CQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgic2VydmVyIGNlcnRpZmljYXRlIGZvciBcIiVzXCIg ZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lIFwiJXNcIlxuIiksCisJCQlsaWJwcV9hcHBlbmRf Y29ubl9lcnJvcihjb25uLCAic2VydmVyIGNlcnRpZmljYXRlIGZvciBcIiVzXCIgZG9lcyBu b3QgbWF0Y2ggaG9zdCBuYW1lIFwiJXNcIiIsCiAJCQkJCQkJICBmaXJzdF9uYW1lLCBob3N0 KTsKIAkJfQogCQllbHNlCiAJCXsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5l cnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgZ2V0IHNl cnZlcidzIGhvc3QgbmFtZSBmcm9tIHNlcnZlciBjZXJ0aWZpY2F0ZVxuIikpOworCQkJbGli cHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBnZXQgc2VydmVyJ3MgaG9z dCBuYW1lIGZyb20gc2VydmVyIGNlcnRpZmljYXRlIik7CiAJCX0KIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1nc3NhcGkuYyBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1nc3NhcGkuYwppbmRleCBkZWUwOTgyZWJhMjAuLjBj ZTkyZGJmNDMwOSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJl LWdzc2FwaS5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1nc3NhcGku YwpAQCAtMjA1LDE2ICsyMDUsMTQgQEAgcGdfR1NTX3dyaXRlKFBHY29ubiAqY29ubiwgY29u c3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogCiAJCWlmIChjb25mX3N0YXRlID09IDApCiAJ CXsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJ CQkJCSBsaWJwcV9nZXR0ZXh0KCJvdXRnb2luZyBHU1NBUEkgbWVzc2FnZSB3b3VsZCBub3Qg dXNlIGNvbmZpZGVudGlhbGl0eVxuIikpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgIm91dGdvaW5nIEdTU0FQSSBtZXNzYWdlIHdvdWxkIG5vdCB1c2UgY29uZmlkZW50 aWFsaXR5Iik7CiAJCQllcnJubyA9IEVJTzsJCS8qIGZvciBsYWNrIG9mIGEgYmV0dGVyIGlk ZWEgKi8KIAkJCWdvdG8gY2xlYW51cDsKIAkJfQogCiAJCWlmIChvdXRwdXQubGVuZ3RoID4g UFFfR1NTX1NFTkRfQlVGRkVSX1NJWkUgLSBzaXplb2YodWludDMyKSkKIAkJewotCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dl dHRleHQoImNsaWVudCB0cmllZCB0byBzZW5kIG92ZXJzaXplIEdTU0FQSSBwYWNrZXQgKCV6 dSA+ICV6dSlcbiIpLAorCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNsaWVu dCB0cmllZCB0byBzZW5kIG92ZXJzaXplIEdTU0FQSSBwYWNrZXQgKCV6dSA+ICV6dSkiLAog CQkJCQkJCSAgKHNpemVfdCkgb3V0cHV0Lmxlbmd0aCwKIAkJCQkJCQkgIFBRX0dTU19TRU5E X0JVRkZFUl9TSVpFIC0gc2l6ZW9mKHVpbnQzMikpOwogCQkJZXJybm8gPSBFSU87CQkvKiBm b3IgbGFjayBvZiBhIGJldHRlciBpZGVhICovCkBAIC0zNTAsOCArMzQ4LDcgQEAgcGdfR1NT X3JlYWQoUEdjb25uICpjb25uLCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAKIAkJaWYgKGlu cHV0Lmxlbmd0aCA+IFBRX0dTU19SRUNWX0JVRkZFUl9TSVpFIC0gc2l6ZW9mKHVpbnQzMikp CiAJCXsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJvdmVyc2l6ZSBHU1NBUEkgcGFja2V0IHNlbnQgYnkgdGhl IHNlcnZlciAoJXp1ID4gJXp1KVxuIiksCisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAib3ZlcnNpemUgR1NTQVBJIHBhY2tldCBzZW50IGJ5IHRoZSBzZXJ2ZXIgKCV6dSA+ ICV6dSkiLAogCQkJCQkJCSAgKHNpemVfdCkgaW5wdXQubGVuZ3RoLAogCQkJCQkJCSAgUFFf R1NTX1JFQ1ZfQlVGRkVSX1NJWkUgLSBzaXplb2YodWludDMyKSk7CiAJCQllcnJubyA9IEVJ TzsJCS8qIGZvciBsYWNrIG9mIGEgYmV0dGVyIGlkZWEgKi8KQEAgLTM5OSw4ICszOTYsNyBA QCBwZ19HU1NfcmVhZChQR2Nvbm4gKmNvbm4sIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAog CQlpZiAoY29uZl9zdGF0ZSA9PSAwKQogCQl7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiaW5jb21pbmcg R1NTQVBJIG1lc3NhZ2UgZGlkIG5vdCB1c2UgY29uZmlkZW50aWFsaXR5XG4iKSk7CisJCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiaW5jb21pbmcgR1NTQVBJIG1lc3NhZ2Ug ZGlkIG5vdCB1c2UgY29uZmlkZW50aWFsaXR5Iik7CiAJCQlyZXQgPSAtMTsKIAkJCWVycm5v ID0gRUlPOwkJLyogZm9yIGxhY2sgb2YgYSBiZXR0ZXIgaWRlYSAqLwogCQkJZ290byBjbGVh bnVwOwpAQCAtNTAwLDggKzQ5Niw3IEBAIHBxc2VjdXJlX29wZW5fZ3NzKFBHY29ubiAqY29u bikKIAkJUHFHU1NSZXN1bHRCdWZmZXIgPSBtYWxsb2MoUFFfR1NTX1JFQ1ZfQlVGRkVSX1NJ WkUpOwogCQlpZiAoIVBxR1NTU2VuZEJ1ZmZlciB8fCAhUHFHU1NSZWN2QnVmZmVyIHx8ICFQ cUdTU1Jlc3VsdEJ1ZmZlcikKIAkJewotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4t PmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnlc biIpKTsKKwkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5 Iik7CiAJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CiAJCX0KIAkJUHFHU1NTZW5k TGVuZ3RoID0gUHFHU1NTZW5kTmV4dCA9IFBxR1NTU2VuZENvbnN1bWVkID0gMDsKQEAgLTU5 Miw4ICs1ODcsNyBAQCBwcXNlY3VyZV9vcGVuX2dzcyhQR2Nvbm4gKmNvbm4pCiAJCWlucHV0 Lmxlbmd0aCA9IHBnX250b2gzMigqKHVpbnQzMiAqKSBQcUdTU1JlY3ZCdWZmZXIpOwogCQlp ZiAoaW5wdXQubGVuZ3RoID4gUFFfR1NTX1JFQ1ZfQlVGRkVSX1NJWkUgLSBzaXplb2YodWlu dDMyKSkKIAkJewotCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCQkgIGxpYnBxX2dldHRleHQoIm92ZXJzaXplIEdTU0FQSSBwYWNrZXQgc2VudCBi eSB0aGUgc2VydmVyICglenUgPiAlenUpXG4iKSwKKwkJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sICJvdmVyc2l6ZSBHU1NBUEkgcGFja2V0IHNlbnQgYnkgdGhlIHNlcnZlciAo JXp1ID4gJXp1KSIsCiAJCQkJCQkJICAoc2l6ZV90KSBpbnB1dC5sZW5ndGgsCiAJCQkJCQkJ ICBQUV9HU1NfUkVDVl9CVUZGRVJfU0laRSAtIHNpemVvZih1aW50MzIpKTsKIAkJCXJldHVy biBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1 cmUtb3BlbnNzbC5jCmluZGV4IGI0MmE5MDg3MzNhZS4uYmFkODUzNTliNmMyIDEwMDY0NAot LS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtb3BlbnNzbC5jCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMKQEAgLTIxMiwyMCArMjEy LDE3IEBAIHBndGxzX3JlYWQoUEdjb25uICpjb25uLCB2b2lkICpwdHIsIHNpemVfdCBsZW4p CiAJCQkJcmVzdWx0X2Vycm5vID0gU09DS19FUlJOTzsKIAkJCQlpZiAocmVzdWx0X2Vycm5v ID09IEVQSVBFIHx8CiAJCQkJCXJlc3VsdF9lcnJubyA9PSBFQ09OTlJFU0VUKQotCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJzZXJ2ZXIgY2xvc2VkIHRoZSBjb25uZWN0aW9uIHVuZXhwZWN0ZWRs eVxuIgotCQkJCQkJCQkJCQkJCSAgICJcdFRoaXMgcHJvYmFibHkgbWVhbnMgdGhlIHNlcnZl ciB0ZXJtaW5hdGVkIGFibm9ybWFsbHlcbiIKLQkJCQkJCQkJCQkJCQkgICAiXHRiZWZvcmUg b3Igd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC5cbiIpKTsKKwkJCQkJbGlicHFfYXBw ZW5kX2Nvbm5fZXJyb3IoY29ubiwgInNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5l eHBlY3RlZGx5XG4iCisJCQkJCQkJCQkgICAiXHRUaGlzIHByb2JhYmx5IG1lYW5zIHRoZSBz ZXJ2ZXIgdGVybWluYXRlZCBhYm5vcm1hbGx5XG4iCisJCQkJCQkJCQkgICAiXHRiZWZvcmUg b3Igd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4iKTsKIAkJCQllbHNlCi0JCQkJCWFw cGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkgIGxpYnBx X2dldHRleHQoIlNTTCBTWVNDQUxMIGVycm9yOiAlc1xuIiksCisJCQkJCWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKGNvbm4sICJTU0wgU1lTQ0FMTCBlcnJvcjogJXMiLAogCQkJCQkJCQkJ ICBTT0NLX1NUUkVSUk9SKHJlc3VsdF9lcnJubywKIAkJCQkJCQkJCQkJCQlzZWJ1Ziwgc2l6 ZW9mKHNlYnVmKSkpOwogCQkJfQogCQkJZWxzZQogCQkJewotCQkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgi U1NMIFNZU0NBTEwgZXJyb3I6IEVPRiBkZXRlY3RlZFxuIikpOworCQkJCWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKGNvbm4sICJTU0wgU1lTQ0FMTCBlcnJvcjogRU9GIGRldGVjdGVkIik7 CiAJCQkJLyogYXNzdW1lIHRoZSBjb25uZWN0aW9uIGlzIGJyb2tlbiAqLwogCQkJCXJlc3Vs dF9lcnJubyA9IEVDT05OUkVTRVQ7CiAJCQkJbiA9IC0xOwpAQCAtMjM1LDggKzIzMiw3IEBA IHBndGxzX3JlYWQoUEdjb25uICpjb25uLCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAJCQl7 CiAJCQkJY2hhcgkgICAqZXJybSA9IFNTTGVycm1lc3NhZ2UoZWNvZGUpOwogCi0JCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9n ZXR0ZXh0KCJTU0wgZXJyb3I6ICVzXG4iKSwgZXJybSk7CisJCQkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgIlNTTCBlcnJvcjogJXMiLCBlcnJtKTsKIAkJCQlTU0xlcnJmcmVl KGVycm0pOwogCQkJCS8qIGFzc3VtZSB0aGUgY29ubmVjdGlvbiBpcyBicm9rZW4gKi8KIAkJ CQlyZXN1bHRfZXJybm8gPSBFQ09OTlJFU0VUOwpAQCAtMjUwLDE1ICsyNDYsMTIgQEAgcGd0 bHNfcmVhZChQR2Nvbm4gKmNvbm4sIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAkJCSAqIGEg Y2xlYW4gY29ubmVjdGlvbiBjbG9zdXJlLCBzbyB3ZSBzaG91bGQgbm90IHJlcG9ydCBpdCBh cyBhCiAJCQkgKiBzZXJ2ZXIgY3Jhc2guCiAJCQkgKi8KLQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJTU0wg Y29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgdW5leHBlY3RlZGx5XG4iKSk7CisJCQlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xv c2VkIHVuZXhwZWN0ZWRseSIpOwogCQkJcmVzdWx0X2Vycm5vID0gRUNPTk5SRVNFVDsKIAkJ CW4gPSAtMTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgotCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoInVucmVjb2du aXplZCBTU0wgZXJyb3IgY29kZTogJWRcbiIpLAotCQkJCQkJCSAgZXJyKTsKKwkJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJ1bnJlY29nbml6ZWQgU1NMIGVycm9yIGNvZGU6 ICVkIiwgZXJyKTsKIAkJCS8qIGFzc3VtZSB0aGUgY29ubmVjdGlvbiBpcyBicm9rZW4gKi8K IAkJCXJlc3VsdF9lcnJubyA9IEVDT05OUkVTRVQ7CiAJCQluID0gLTE7CkBAIC0zMTksMjAg KzMxMiwxNyBAQCBwZ3Rsc193cml0ZShQR2Nvbm4gKmNvbm4sIGNvbnN0IHZvaWQgKnB0ciwg c2l6ZV90IGxlbikKIAkJCXsKIAkJCQlyZXN1bHRfZXJybm8gPSBTT0NLX0VSUk5POwogCQkJ CWlmIChyZXN1bHRfZXJybm8gPT0gRVBJUEUgfHwgcmVzdWx0X2Vycm5vID09IEVDT05OUkVT RVQpCi0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0J CQkJCQkJCQkJIGxpYnBxX2dldHRleHQoInNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24g dW5leHBlY3RlZGx5XG4iCi0JCQkJCQkJCQkJCQkJICAgIlx0VGhpcyBwcm9iYWJseSBtZWFu cyB0aGUgc2VydmVyIHRlcm1pbmF0ZWQgYWJub3JtYWxseVxuIgotCQkJCQkJCQkJCQkJCSAg ICJcdGJlZm9yZSBvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LlxuIikpOworCQkJ CQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAic2VydmVyIGNsb3NlZCB0aGUgY29u bmVjdGlvbiB1bmV4cGVjdGVkbHlcbiIKKwkJCQkJCQkJCSAgICJcdFRoaXMgcHJvYmFibHkg bWVhbnMgdGhlIHNlcnZlciB0ZXJtaW5hdGVkIGFibm9ybWFsbHlcbiIKKwkJCQkJCQkJCSAg ICJcdGJlZm9yZSBvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LiIpOwogCQkJCWVs c2UKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJ CQkJCSAgbGlicHFfZ2V0dGV4dCgiU1NMIFNZU0NBTEwgZXJyb3I6ICVzXG4iKSwKKwkJCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlNTTCBTWVNDQUxMIGVycm9yOiAlcyIs CiAJCQkJCQkJCQkgIFNPQ0tfU1RSRVJST1IocmVzdWx0X2Vycm5vLAogCQkJCQkJCQkJCQkJ CXNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSBsaWJw cV9nZXR0ZXh0KCJTU0wgU1lTQ0FMTCBlcnJvcjogRU9GIGRldGVjdGVkXG4iKSk7CisJCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlNTTCBTWVNDQUxMIGVycm9yOiBFT0Yg ZGV0ZWN0ZWQiKTsKIAkJCQkvKiBhc3N1bWUgdGhlIGNvbm5lY3Rpb24gaXMgYnJva2VuICov CiAJCQkJcmVzdWx0X2Vycm5vID0gRUNPTk5SRVNFVDsKIAkJCQluID0gLTE7CkBAIC0zNDIs OCArMzMyLDcgQEAgcGd0bHNfd3JpdGUoUEdjb25uICpjb25uLCBjb25zdCB2b2lkICpwdHIs IHNpemVfdCBsZW4pCiAJCQl7CiAJCQkJY2hhcgkgICAqZXJybSA9IFNTTGVycm1lc3NhZ2Uo ZWNvZGUpOwogCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJTU0wgZXJyb3I6ICVzXG4iKSwgZXJybSk7CisJ CQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlNTTCBlcnJvcjogJXMiLCBlcnJt KTsKIAkJCQlTU0xlcnJmcmVlKGVycm0pOwogCQkJCS8qIGFzc3VtZSB0aGUgY29ubmVjdGlv biBpcyBicm9rZW4gKi8KIAkJCQlyZXN1bHRfZXJybm8gPSBFQ09OTlJFU0VUOwpAQCAtMzU3 LDE1ICszNDYsMTIgQEAgcGd0bHNfd3JpdGUoUEdjb25uICpjb25uLCBjb25zdCB2b2lkICpw dHIsIHNpemVfdCBsZW4pCiAJCQkgKiBhIGNsZWFuIGNvbm5lY3Rpb24gY2xvc3VyZSwgc28g d2Ugc2hvdWxkIG5vdCByZXBvcnQgaXQgYXMgYQogCQkJICogc2VydmVyIGNyYXNoLgogCQkJ ICovCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJ CQkJCQkgbGlicHFfZ2V0dGV4dCgiU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIHVu ZXhwZWN0ZWRseVxuIikpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlNT TCBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZCB1bmV4cGVjdGVkbHkiKTsKIAkJCXJlc3Vs dF9lcnJubyA9IEVDT05OUkVTRVQ7CiAJCQluID0gLTE7CiAJCQlicmVhazsKIAkJZGVmYXVs dDoKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJ ICBsaWJwcV9nZXR0ZXh0KCJ1bnJlY29nbml6ZWQgU1NMIGVycm9yIGNvZGU6ICVkXG4iKSwK LQkJCQkJCQkgIGVycik7CisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAidW5y ZWNvZ25pemVkIFNTTCBlcnJvciBjb2RlOiAlZCIsIGVycik7CiAJCQkvKiBhc3N1bWUgdGhl IGNvbm5lY3Rpb24gaXMgYnJva2VuICovCiAJCQlyZXN1bHRfZXJybm8gPSBFQ09OTlJFU0VU OwogCQkJbiA9IC0xOwpAQCAtNDAzLDggKzM4OSw3IEBAIHBndGxzX2dldF9wZWVyX2NlcnRp ZmljYXRlX2hhc2goUEdjb25uICpjb25uLCBzaXplX3QgKmxlbikKIAlpZiAoIU9CSl9maW5k X3NpZ2lkX2FsZ3MoWDUwOV9nZXRfc2lnbmF0dXJlX25pZChwZWVyX2NlcnQpLAogCQkJCQkJ CSAmYWxnb19uaWQsIE5VTEwpKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4t PmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IGRldGVy bWluZSBzZXJ2ZXIgY2VydGlmaWNhdGUgc2lnbmF0dXJlIGFsZ29yaXRobVxuIikpOworCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IGRldGVybWluZSBzZXJ2 ZXIgY2VydGlmaWNhdGUgc2lnbmF0dXJlIGFsZ29yaXRobSIpOwogCQlyZXR1cm4gTlVMTDsK IAl9CiAKQEAgLTQyNCw4ICs0MDksNyBAQCBwZ3Rsc19nZXRfcGVlcl9jZXJ0aWZpY2F0ZV9o YXNoKFBHY29ubiAqY29ubiwgc2l6ZV90ICpsZW4pCiAJCQlhbGdvX3R5cGUgPSBFVlBfZ2V0 X2RpZ2VzdGJ5bmlkKGFsZ29fbmlkKTsKIAkJCWlmIChhbGdvX3R5cGUgPT0gTlVMTCkKIAkJ CXsKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJ CQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBmaW5kIGRpZ2VzdCBmb3IgTklEICVzXG4i KSwKKwkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IGZpbmQg ZGlnZXN0IGZvciBOSUQgJXMiLAogCQkJCQkJCQkgIE9CSl9uaWQyc24oYWxnb19uaWQpKTsK IAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KQEAgLTQzNCw4ICs0MTgsNyBAQCBwZ3Rsc19nZXRf cGVlcl9jZXJ0aWZpY2F0ZV9oYXNoKFBHY29ubiAqY29ubiwgc2l6ZV90ICpsZW4pCiAKIAlp ZiAoIVg1MDlfZGlnZXN0KHBlZXJfY2VydCwgYWxnb190eXBlLCBoYXNoLCAmaGFzaF9zaXpl KSkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0J CQkJCQkJIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBnZW5lcmF0ZSBwZWVyIGNlcnRpZmlj YXRlIGhhc2hcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxk IG5vdCBnZW5lcmF0ZSBwZWVyIGNlcnRpZmljYXRlIGhhc2giKTsKIAkJcmV0dXJuIE5VTEw7 CiAJfQogCkBAIC00NDMsOCArNDI2LDcgQEAgcGd0bHNfZ2V0X3BlZXJfY2VydGlmaWNhdGVf aGFzaChQR2Nvbm4gKmNvbm4sIHNpemVfdCAqbGVuKQogCWNlcnRfaGFzaCA9IG1hbGxvYyho YXNoX3NpemUpOwogCWlmIChjZXJ0X2hhc2ggPT0gTlVMTCkKIAl7Ci0JCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQo Im91dCBvZiBtZW1vcnlcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg Im91dCBvZiBtZW1vcnkiKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCW1lbWNweShjZXJ0X2hh c2gsIGhhc2gsIGhhc2hfc2l6ZSk7CkBAIC00OTEsOCArNDczLDcgQEAgb3BlbnNzbF92ZXJp ZnlfcGVlcl9uYW1lX21hdGNoZXNfY2VydGlmaWNhdGVfbmFtZShQR2Nvbm4gKmNvbm4sIEFT TjFfU1RSSU5HICpuYW0KIAkvKiBTaG91bGQgbm90IGhhcHBlbi4uLiAqLwogCWlmIChuYW1l X2VudHJ5ID09IE5VTEwpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJy b3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJTU0wgY2VydGlmaWNhdGUncyBu YW1lIGVudHJ5IGlzIG1pc3NpbmdcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgIlNTTCBjZXJ0aWZpY2F0ZSdzIG5hbWUgZW50cnkgaXMgbWlzc2luZyIpOwogCQly ZXR1cm4gLTE7CiAJfQogCkBAIC01MjYsOCArNTA3LDcgQEAgb3BlbnNzbF92ZXJpZnlfcGVl cl9uYW1lX21hdGNoZXNfY2VydGlmaWNhdGVfaXAoUEdjb25uICpjb25uLAogCS8qIFNob3Vs ZCBub3QgaGFwcGVuLi4uICovCiAJaWYgKGFkZHJfZW50cnkgPT0gTlVMTCkKIAl7Ci0JCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBx X2dldHRleHQoIlNTTCBjZXJ0aWZpY2F0ZSdzIGFkZHJlc3MgZW50cnkgaXMgbWlzc2luZ1xu IikpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiU1NMIGNlcnRpZmljYXRl J3MgYWRkcmVzcyBlbnRyeSBpcyBtaXNzaW5nIik7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAg LTk0NCw5ICs5MjQsNyBAQCBpbml0aWFsaXplX1NTTChQR2Nvbm4gKmNvbm4pCiAJewogCQlj aGFyCSAgICplcnIgPSBTU0xlcnJtZXNzYWdlKEVSUl9nZXRfZXJyb3IoKSk7CiAKLQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0 dGV4dCgiY291bGQgbm90IGNyZWF0ZSBTU0wgY29udGV4dDogJXNcbiIpLAotCQkJCQkJICBl cnIpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IGNyZWF0 ZSBTU0wgY29udGV4dDogJXMiLCBlcnIpOwogCQlTU0xlcnJmcmVlKGVycik7CiAJCXJldHVy biAtMTsKIAl9CkBAIC05ODMsOCArOTYxLDcgQEAgaW5pdGlhbGl6ZV9TU0woUEdjb25uICpj b25uKQogCiAJCWlmIChzc2xfbWluX3ZlciA9PSAtMSkKIAkJewotCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImlu dmFsaWQgdmFsdWUgXCIlc1wiIGZvciBtaW5pbXVtIFNTTCBwcm90b2NvbCB2ZXJzaW9uXG4i KSwKKwkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJpbnZhbGlkIHZhbHVlIFwi JXNcIiBmb3IgbWluaW11bSBTU0wgcHJvdG9jb2wgdmVyc2lvbiIsCiAJCQkJCQkJICBjb25u LT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24pOwogCQkJU1NMX0NUWF9mcmVlKFNTTF9jb250 ZXh0KTsKIAkJCXJldHVybiAtMTsKQEAgLTk5NCw5ICs5NzEsNyBAQCBpbml0aWFsaXplX1NT TChQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJCWNoYXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2Uo RVJSX2dldF9lcnJvcigpKTsKIAotCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9y TWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBzZXQgbWluaW11 bSBTU0wgcHJvdG9jb2wgdmVyc2lvbjogJXNcbiIpLAotCQkJCQkJCSAgZXJyKTsKKwkJCWxp YnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3Qgc2V0IG1pbmltdW0gU1NM IHByb3RvY29sIHZlcnNpb246ICVzIiwgZXJyKTsKIAkJCVNTTGVycmZyZWUoZXJyKTsKIAkJ CVNTTF9DVFhfZnJlZShTU0xfY29udGV4dCk7CiAJCQlyZXR1cm4gLTE7CkBAIC0xMDEyLDgg Kzk4Nyw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAqY29ubikKIAogCQlpZiAoc3NsX21h eF92ZXIgPT0gLTEpCiAJCXsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1l c3NhZ2UsCi0JCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIHZhbHVlIFwiJXNcIiBm b3IgbWF4aW11bSBTU0wgcHJvdG9jb2wgdmVyc2lvblxuIiksCisJCQlsaWJwcV9hcHBlbmRf Y29ubl9lcnJvcihjb25uLCAiaW52YWxpZCB2YWx1ZSBcIiVzXCIgZm9yIG1heGltdW0gU1NM IHByb3RvY29sIHZlcnNpb24iLAogCQkJCQkJCSAgY29ubi0+c3NsX21heF9wcm90b2NvbF92 ZXJzaW9uKTsKIAkJCVNTTF9DVFhfZnJlZShTU0xfY29udGV4dCk7CiAJCQlyZXR1cm4gLTE7 CkBAIC0xMDIzLDkgKzk5Nyw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAqY29ubikKIAkJ ewogCQkJY2hhcgkgICAqZXJyID0gU1NMZXJybWVzc2FnZShFUlJfZ2V0X2Vycm9yKCkpOwog Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSAg bGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHNldCBtYXhpbXVtIFNTTCBwcm90b2NvbCB2ZXJz aW9uOiAlc1xuIiksCi0JCQkJCQkJICBlcnIpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgImNvdWxkIG5vdCBzZXQgbWF4aW11bSBTU0wgcHJvdG9jb2wgdmVyc2lvbjog JXMiLCBlcnIpOwogCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJU1NMX0NUWF9mcmVlKFNTTF9j b250ZXh0KTsKIAkJCXJldHVybiAtMTsKQEAgLTEwNTksOCArMTAzMSw3IEBAIGluaXRpYWxp emVfU1NMKFBHY29ubiAqY29ubikKIAkJewogCQkJY2hhcgkgICAqZXJyID0gU1NMZXJybWVz c2FnZShFUlJfZ2V0X2Vycm9yKCkpOwogCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHJlYWQg cm9vdCBjZXJ0aWZpY2F0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAorCQkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCByZWFkIHJvb3QgY2VydGlmaWNhdGUgZmls ZSBcIiVzXCI6ICVzIiwKIAkJCQkJCQkgIGZuYnVmLCBlcnIpOwogCQkJU1NMZXJyZnJlZShl cnIpOwogCQkJU1NMX0NUWF9mcmVlKFNTTF9jb250ZXh0KTsKQEAgLTExMTIsMTMgKzEwODMs MTEgQEAgaW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCQkJICogdGhhdCBpdCBzZWVt cyB3b3J0aCBoYXZpbmcgYSBzcGVjaWFsaXplZCBlcnJvciBtZXNzYWdlIGZvciBpdC4KIAkJ CSAqLwogCQkJaWYgKGZuYnVmWzBdID09ICdcMCcpCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBu b3QgZ2V0IGhvbWUgZGlyZWN0b3J5IHRvIGxvY2F0ZSByb290IGNlcnRpZmljYXRlIGZpbGVc biIKLQkJCQkJCQkJCQkJCSJFaXRoZXIgcHJvdmlkZSB0aGUgZmlsZSBvciBjaGFuZ2Ugc3Ns bW9kZSB0byBkaXNhYmxlIHNlcnZlciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uXG4iKSk7 CisJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBnZXQgaG9t ZSBkaXJlY3RvcnkgdG8gbG9jYXRlIHJvb3QgY2VydGlmaWNhdGUgZmlsZVxuIgorCQkJCQkJ CQkgICAiRWl0aGVyIHByb3ZpZGUgdGhlIGZpbGUgb3IgY2hhbmdlIHNzbG1vZGUgdG8gZGlz YWJsZSBzZXJ2ZXIgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLiIpOwogCQkJZWxzZQotCQkJ CWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSAgbGli cHFfZ2V0dGV4dCgicm9vdCBjZXJ0aWZpY2F0ZSBmaWxlIFwiJXNcIiBkb2VzIG5vdCBleGlz dFxuIgotCQkJCQkJCQkJCQkJIkVpdGhlciBwcm92aWRlIHRoZSBmaWxlIG9yIGNoYW5nZSBz c2xtb2RlIHRvIGRpc2FibGUgc2VydmVyIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbi5cbiIp LCBmbmJ1Zik7CisJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInJvb3QgY2Vy dGlmaWNhdGUgZmlsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3RcbiIKKwkJCQkJCQkJICAgIkVp dGhlciBwcm92aWRlIHRoZSBmaWxlIG9yIGNoYW5nZSBzc2xtb2RlIHRvIGRpc2FibGUgc2Vy dmVyIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbi4iLCBmbmJ1Zik7CiAJCQlTU0xfQ1RYX2Zy ZWUoU1NMX2NvbnRleHQpOwogCQkJcmV0dXJuIC0xOwogCQl9CkBAIC0xMTQ3LDggKzExMTYs NyBAQCBpbml0aWFsaXplX1NTTChQR2Nvbm4gKmNvbm4pCiAJCSAqLwogCQlpZiAoZXJybm8g IT0gRU5PRU5UICYmIGVycm5vICE9IEVOT1RESVIpCiAJCXsKLQkJCWFwcGVuZFBRRXhwQnVm ZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3Vs ZCBub3Qgb3BlbiBjZXJ0aWZpY2F0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAorCQkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBvcGVuIGNlcnRpZmljYXRlIGZp bGUgXCIlc1wiOiAlcyIsCiAJCQkJCQkJICBmbmJ1Ziwgc3RyZXJyb3JfcihlcnJubywgc2Vi dWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCVNTTF9DVFhfZnJlZShTU0xfY29udGV4dCk7CiAJ CQlyZXR1cm4gLTE7CkBAIC0xMTY2LDggKzExMzQsNyBAQCBpbml0aWFsaXplX1NTTChQR2Nv bm4gKmNvbm4pCiAJCXsKIAkJCWNoYXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dl dF9lcnJvcigpKTsKIAotCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCByZWFkIGNlcnRpZmljYXRl IGZpbGUgXCIlc1wiOiAlc1xuIiksCisJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiY291bGQgbm90IHJlYWQgY2VydGlmaWNhdGUgZmlsZSBcIiVzXCI6ICVzIiwKIAkJCQkJ CQkgIGZuYnVmLCBlcnIpOwogCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJU1NMX0NUWF9mcmVl KFNTTF9jb250ZXh0KTsKQEAgLTExOTEsOSArMTE1OCw3IEBAIGluaXRpYWxpemVfU1NMKFBH Y29ubiAqY29ubikKIAl7CiAJCWNoYXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dl dF9lcnJvcigpKTsKIAotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdl LAotCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgZXN0YWJsaXNoIFNTTCBjb25u ZWN0aW9uOiAlc1xuIiksCi0JCQkJCQkgIGVycik7CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sICJjb3VsZCBub3QgZXN0YWJsaXNoIFNTTCBjb25uZWN0aW9uOiAlcyIsIGVy cik7CiAJCVNTTGVycmZyZWUoZXJyKTsKIAkJU1NMX0NUWF9mcmVlKFNTTF9jb250ZXh0KTsK IAkJcmV0dXJuIC0xOwpAQCAtMTIyNSw5ICsxMTkwLDcgQEAgaW5pdGlhbGl6ZV9TU0woUEdj b25uICpjb25uKQogCQkJewogCQkJCWNoYXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJS X2dldF9lcnJvcigpKTsKIAotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1l c3NhZ2UsCi0JCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHNldCBTU0wgU2Vy dmVyIE5hbWUgSW5kaWNhdGlvbiAoU05JKTogJXNcbiIpLAotCQkJCQkJCQkgIGVycik7CisJ CQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzZXQgU1NMIFNl cnZlciBOYW1lIEluZGljYXRpb24gKFNOSSk6ICVzIiwgZXJyKTsKIAkJCQlTU0xlcnJmcmVl KGVycik7CiAJCQkJcmV0dXJuIC0xOwogCQkJfQpAQCAtMTI1NSw4ICsxMjE4LDcgQEAgaW5p dGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCiAJCQlpZiAoZW5naW5lX3N0ciA9PSBOVUxM KQogCQkJewotCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2Us Ci0JCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQkJCWxp YnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5Iik7CiAJCQkJcmV0 dXJuIC0xOwogCQkJfQogCkBAIC0xMjcxLDggKzEyMzMsNyBAQCBpbml0aWFsaXplX1NTTChQ R2Nvbm4gKmNvbm4pCiAJCQl7CiAJCQkJY2hhcgkgICAqZXJyID0gU1NMZXJybWVzc2FnZShF UlJfZ2V0X2Vycm9yKCkpOwogCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9y TWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgbG9hZCBTU0wg ZW5naW5lIFwiJXNcIjogJXNcbiIpLAorCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJjb3VsZCBub3QgbG9hZCBTU0wgZW5naW5lIFwiJXNcIjogJXMiLAogCQkJCQkJCQkg IGVuZ2luZV9zdHIsIGVycik7CiAJCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJCWZyZWUoZW5n aW5lX3N0cik7CkBAIC0xMjgzLDggKzEyNDQsNyBAQCBpbml0aWFsaXplX1NTTChQR2Nvbm4g KmNvbm4pCiAJCQl7CiAJCQkJY2hhcgkgICAqZXJyID0gU1NMZXJybWVzc2FnZShFUlJfZ2V0 X2Vycm9yKCkpOwogCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgaW5pdGlhbGl6ZSBTU0wg ZW5naW5lIFwiJXNcIjogJXNcbiIpLAorCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBTU0wgZW5naW5lIFwiJXNcIjogJXMiLAogCQkJ CQkJCQkgIGVuZ2luZV9zdHIsIGVycik7CiAJCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJCUVO R0lORV9mcmVlKGNvbm4tPmVuZ2luZSk7CkBAIC0xMjk5LDggKzEyNTksNyBAQCBpbml0aWFs aXplX1NTTChQR2Nvbm4gKmNvbm4pCiAJCQl7CiAJCQkJY2hhcgkgICAqZXJyID0gU1NMZXJy bWVzc2FnZShFUlJfZ2V0X2Vycm9yKCkpOwogCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNv bm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3Qg cmVhZCBwcml2YXRlIFNTTCBrZXkgXCIlc1wiIGZyb20gZW5naW5lIFwiJXNcIjogJXNcbiIp LAorCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgcmVhZCBw cml2YXRlIFNTTCBrZXkgXCIlc1wiIGZyb20gZW5naW5lIFwiJXNcIjogJXMiLAogCQkJCQkJ CQkgIGVuZ2luZV9jb2xvbiwgZW5naW5lX3N0ciwgZXJyKTsKIAkJCQlTU0xlcnJmcmVlKGVy cik7CiAJCQkJRU5HSU5FX2ZpbmlzaChjb25uLT5lbmdpbmUpOwpAQCAtMTMxMyw4ICsxMjcy LDcgQEAgaW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCQkJewogCQkJCWNoYXIJICAg KmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dldF9lcnJvcigpKTsKIAotCQkJCWFwcGVuZFBR RXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSAgbGlicHFfZ2V0dGV4 dCgiY291bGQgbm90IGxvYWQgcHJpdmF0ZSBTU0wga2V5IFwiJXNcIiBmcm9tIGVuZ2luZSBc IiVzXCI6ICVzXG4iKSwKKwkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291 bGQgbm90IGxvYWQgcHJpdmF0ZSBTU0wga2V5IFwiJXNcIiBmcm9tIGVuZ2luZSBcIiVzXCI6 ICVzIiwKIAkJCQkJCQkJICBlbmdpbmVfY29sb24sIGVuZ2luZV9zdHIsIGVycik7CiAJCQkJ U1NMZXJyZnJlZShlcnIpOwogCQkJCUVOR0lORV9maW5pc2goY29ubi0+ZW5naW5lKTsKQEAg LTEzNTEsMTIgKzEzMDksMTAgQEAgaW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCQlp ZiAoc3RhdChmbmJ1ZiwgJmJ1ZikgIT0gMCkKIAkJewogCQkJaWYgKGVycm5vID09IEVOT0VO VCkKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJ CQkgIGxpYnBxX2dldHRleHQoImNlcnRpZmljYXRlIHByZXNlbnQsIGJ1dCBub3QgcHJpdmF0 ZSBrZXkgZmlsZSBcIiVzXCJcbiIpLAorCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJjZXJ0aWZpY2F0ZSBwcmVzZW50LCBidXQgbm90IHByaXZhdGUga2V5IGZpbGUgXCIl c1wiIiwKIAkJCQkJCQkJICBmbmJ1Zik7CiAJCQllbHNlCi0JCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3Vs ZCBub3Qgc3RhdCBwcml2YXRlIGtleSBmaWxlIFwiJXNcIjogJW1cbiIpLAorCQkJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3Qgc3RhdCBwcml2YXRlIGtleSBm aWxlIFwiJXNcIjogJW0iLAogCQkJCQkJCQkgIGZuYnVmKTsKIAkJCXJldHVybiAtMTsKIAkJ fQpAQCAtMTM2NCw4ICsxMzIwLDcgQEAgaW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQog CQkvKiBLZXkgZmlsZSBtdXN0IGJlIGEgcmVndWxhciBmaWxlICovCiAJCWlmICghU19JU1JF RyhidWYuc3RfbW9kZSkpCiAJCXsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJv ck1lc3NhZ2UsCi0JCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJwcml2YXRlIGtleSBmaWxlIFwi JXNcIiBpcyBub3QgYSByZWd1bGFyIGZpbGVcbiIpLAorCQkJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgInByaXZhdGUga2V5IGZpbGUgXCIlc1wiIGlzIG5vdCBhIHJlZ3VsYXIg ZmlsZSIsCiAJCQkJCQkJICBmbmJ1Zik7CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAgLTEzOTcs OSArMTM1Miw5IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAqY29ubikKIAkJCWJ1Zi5zdF9t b2RlICYgKFNfSVdHUlAgfCBTX0lYR1JQIHwgU19JUldYTykgOgogCQkJYnVmLnN0X21vZGUg JiAoU19JUldYRyB8IFNfSVJXWE8pKQogCQl7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29u bi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgicHJpdmF0ZSBrZXkg ZmlsZSBcIiVzXCIgaGFzIGdyb3VwIG9yIHdvcmxkIGFjY2VzczsgZmlsZSBtdXN0IGhhdmUg cGVybWlzc2lvbnMgdT1ydyAoMDYwMCkgb3IgbGVzcyBpZiBvd25lZCBieSB0aGUgY3VycmVu dCB1c2VyLCBvciBwZXJtaXNzaW9ucyB1PXJ3LGc9ciAoMDY0MCkgb3IgbGVzcyBpZiBvd25l ZCBieSByb290XG4iKSwKLQkJCQkJCQkgIGZuYnVmKTsKKwkJCWxpYnBxX2FwcGVuZF9jb25u X2Vycm9yKGNvbm4sCisJCQkJCQkJCQkicHJpdmF0ZSBrZXkgZmlsZSBcIiVzXCIgaGFzIGdy b3VwIG9yIHdvcmxkIGFjY2VzczsgZmlsZSBtdXN0IGhhdmUgcGVybWlzc2lvbnMgdT1ydyAo MDYwMCkgb3IgbGVzcyBpZiBvd25lZCBieSB0aGUgY3VycmVudCB1c2VyLCBvciBwZXJtaXNz aW9ucyB1PXJ3LGc9ciAoMDY0MCkgb3IgbGVzcyBpZiBvd25lZCBieSByb290IiwKKwkJCQkJ CQkJCWZuYnVmKTsKIAkJCXJldHVybiAtMTsKIAkJfQogI2VuZGlmCkBAIC0xNDIyLDggKzEz NzcsNyBAQCBpbml0aWFsaXplX1NTTChQR2Nvbm4gKmNvbm4pCiAJCQkgKi8KIAkJCWlmIChT U0xfdXNlX1ByaXZhdGVLZXlfZmlsZShjb25uLT5zc2wsIGZuYnVmLCBTU0xfRklMRVRZUEVf QVNOMSkgIT0gMSkKIAkJCXsKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JN ZXNzYWdlLAotCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBsb2FkIHByaXZh dGUga2V5IGZpbGUgXCIlc1wiOiAlc1xuIiksCisJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgImNvdWxkIG5vdCBsb2FkIHByaXZhdGUga2V5IGZpbGUgXCIlc1wiOiAlcyIs CiAJCQkJCQkJCSAgZm5idWYsIGVycik7CiAJCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJCXJl dHVybiAtMTsKQEAgLTE0MzksOCArMTM5Myw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAq Y29ubikKIAl7CiAJCWNoYXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dldF9lcnJv cigpKTsKIAotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJjZXJ0aWZpY2F0ZSBkb2VzIG5vdCBtYXRjaCBwcml2YXRl IGtleSBmaWxlIFwiJXNcIjogJXNcbiIpLAorCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAiY2VydGlmaWNhdGUgZG9lcyBub3QgbWF0Y2ggcHJpdmF0ZSBrZXkgZmlsZSBcIiVz XCI6ICVzIiwKIAkJCQkJCSAgZm5idWYsIGVycik7CiAJCVNTTGVycmZyZWUoZXJyKTsKIAkJ cmV0dXJuIC0xOwpAQCAtMTQ5MywxMiArMTQ0NiwxMCBAQCBvcGVuX2NsaWVudF9TU0woUEdj b25uICpjb25uKQogCQkJCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJPUl9SX0JVRkxFTl07CiAK IAkJCQkJaWYgKHIgPT0gLTEpCi0JCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJy b3JNZXNzYWdlLAotCQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiU1NMIFNZU0NBTEwgZXJy b3I6ICVzXG4iKSwKKwkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJTU0wg U1lTQ0FMTCBlcnJvcjogJXMiLAogCQkJCQkJCQkJCSAgU09DS19TVFJFUlJPUihTT0NLX0VS Uk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQkJCQllbHNlCi0JCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCQkgbGlicHFf Z2V0dGV4dCgiU1NMIFNZU0NBTEwgZXJyb3I6IEVPRiBkZXRlY3RlZFxuIikpOworCQkJCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlNTTCBTWVNDQUxMIGVycm9yOiBFT0Yg ZGV0ZWN0ZWQiKTsKIAkJCQkJcGd0bHNfY2xvc2UoY29ubik7CiAJCQkJCXJldHVybiBQR1JF U19QT0xMSU5HX0ZBSUxFRDsKIAkJCQl9CkBAIC0xNTA2LDkgKzE0NTcsNyBAQCBvcGVuX2Ns aWVudF9TU0woUEdjb25uICpjb25uKQogCQkJCXsKIAkJCQkJY2hhcgkgICAqZXJyID0gU1NM ZXJybWVzc2FnZShlY29kZSk7CiAKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVy cm9yTWVzc2FnZSwKLQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiU1NMIGVycm9yOiAlc1xu IiksCi0JCQkJCQkJCQkgIGVycik7CisJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJTU0wgZXJyb3I6ICVzIiwgZXJyKTsKIAkJCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJ CQlzd2l0Y2ggKEVSUl9HRVRfUkVBU09OKGVjb2RlKSkKIAkJCQkJewpAQCAtMTUzOSw4ICsx NDg4LDcgQEAgb3Blbl9jbGllbnRfU1NMKFBHY29ubiAqY29ubikKIAkJCQkJCWNhc2UgU1NM X1JfVkVSU0lPTl9UT09fSElHSDoKIAkJCQkJCWNhc2UgU1NMX1JfVkVSU0lPTl9UT09fTE9X OgogI2VuZGlmCi0JCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJUaGlzIG1heSBpbmRpY2F0ZSB0aGF0 IHRoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBhbnkgU1NMIHByb3RvY29sIHZlcnNpb24g YmV0d2VlbiAlcyBhbmQgJXMuXG4iKSwKKwkJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAiVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgc2VydmVyIGRvZXMgbm90IHN1 cHBvcnQgYW55IFNTTCBwcm90b2NvbCB2ZXJzaW9uIGJldHdlZW4gJXMgYW5kICVzLiIsCiAJ CQkJCQkJCQkJCSAgY29ubi0+c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uID8KIAkJCQkJCQkJ CQkJICBjb25uLT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24gOgogCQkJCQkJCQkJCQkgIE1J Tl9PUEVOU1NMX1RMU19WRVJTSU9OLApAQCAtMTU1Niw5ICsxNTA0LDcgQEAgb3Blbl9jbGll bnRfU1NMKFBHY29ubiAqY29ubikKIAkJCQl9CiAKIAkJCWRlZmF1bHQ6Ci0JCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJICBsaWJwcV9nZXR0 ZXh0KCJ1bnJlY29nbml6ZWQgU1NMIGVycm9yIGNvZGU6ICVkXG4iKSwKLQkJCQkJCQkJICBl cnIpOworCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJ1bnJlY29nbml6ZWQg U1NMIGVycm9yIGNvZGU6ICVkIiwgZXJyKTsKIAkJCQlwZ3Rsc19jbG9zZShjb25uKTsKIAkJ CQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CiAJCX0KQEAgLTE1NzUsOSArMTUyMSw3 IEBAIG9wZW5fY2xpZW50X1NTTChQR2Nvbm4gKmNvbm4pCiAJewogCQljaGFyCSAgICplcnIg PSBTU0xlcnJtZXNzYWdlKEVSUl9nZXRfZXJyb3IoKSk7CiAKLQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY2VydGlm aWNhdGUgY291bGQgbm90IGJlIG9idGFpbmVkOiAlc1xuIiksCi0JCQkJCQkgIGVycik7CisJ CWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjZXJ0aWZpY2F0ZSBjb3VsZCBub3Qg YmUgb2J0YWluZWQ6ICVzIiwgZXJyKTsKIAkJU1NMZXJyZnJlZShlcnIpOwogCQlwZ3Rsc19j bG9zZShjb25uKTsKIAkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1zZWN1cmUuYwppbmRleCAzZGY0YTk3ZjJlOTAuLmYwZTUwM2U5OGY2YSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKQEAgLTI1NCwxNSArMjU0LDEzIEBAIHBxc2Vj dXJlX3Jhd19yZWFkKFBHY29ubiAqY29ubiwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogCiAJ CQljYXNlIEVQSVBFOgogCQkJY2FzZSBFQ09OTlJFU0VUOgotCQkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgi c2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHlcbiIKLQkJCQkJCQkJ CQkJCSAgICJcdFRoaXMgcHJvYmFibHkgbWVhbnMgdGhlIHNlcnZlciB0ZXJtaW5hdGVkIGFi bm9ybWFsbHlcbiIKLQkJCQkJCQkJCQkJCSAgICJcdGJlZm9yZSBvciB3aGlsZSBwcm9jZXNz aW5nIHRoZSByZXF1ZXN0LlxuIikpOworCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJzZXJ2ZXIgY2xvc2VkIHRoZSBjb25uZWN0aW9uIHVuZXhwZWN0ZWRseVxuIgorCQkJ CQkJCQkgICAiXHRUaGlzIHByb2JhYmx5IG1lYW5zIHRoZSBzZXJ2ZXIgdGVybWluYXRlZCBh Ym5vcm1hbGx5XG4iCisJCQkJCQkJCSAgICJcdGJlZm9yZSBvciB3aGlsZSBwcm9jZXNzaW5n IHRoZSByZXF1ZXN0LiIpOwogCQkJCWJyZWFrOwogCiAJCQlkZWZhdWx0OgotCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSAgbGlicHFfZ2V0 dGV4dCgiY291bGQgbm90IHJlY2VpdmUgZGF0YSBmcm9tIHNlcnZlcjogJXNcbiIpLAorCQkJ CWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgcmVjZWl2ZSBkYXRh IGZyb20gc2VydmVyOiAlcyIsCiAJCQkJCQkJCSAgU09DS19TVFJFUlJPUihyZXN1bHRfZXJy bm8sCiAJCQkJCQkJCQkJCQlzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQkJCWJyZWFrOwpA QCAtNDIwLDcgKzQxOCw4IEBAIHBxc2VjdXJlX3Jhd193cml0ZShQR2Nvbm4gKmNvbm4sIGNv bnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAkJCQlzbnByaW50Zihtc2didWYsIHNpemVv Zihtc2didWYpLAogCQkJCQkJIGxpYnBxX2dldHRleHQoInNlcnZlciBjbG9zZWQgdGhlIGNv bm5lY3Rpb24gdW5leHBlY3RlZGx5XG4iCiAJCQkJCQkJCQkgICAiXHRUaGlzIHByb2JhYmx5 IG1lYW5zIHRoZSBzZXJ2ZXIgdGVybWluYXRlZCBhYm5vcm1hbGx5XG4iCi0JCQkJCQkJCQkg ICAiXHRiZWZvcmUgb3Igd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC5cbiIpKTsKKwkJ CQkJCQkJCSAgICJcdGJlZm9yZSBvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LiIp KTsKKwkJCQlzdHJsY2F0KG1zZ2J1ZiwgIlxuIiwgc2l6ZW9mKG1zZ2J1ZikpOwogCQkJCWNv bm4tPndyaXRlX2Vycl9tc2cgPSBzdHJkdXAobXNnYnVmKTsKIAkJCQkvKiBOb3cgY2xhaW0g dGhlIHdyaXRlIHN1Y2NlZWRlZCAqLwogCQkJCW4gPSBsZW47CkBAIC00MzEsOSArNDMwLDEw IEBAIHBxc2VjdXJlX3Jhd193cml0ZShQR2Nvbm4gKmNvbm4sIGNvbnN0IHZvaWQgKnB0ciwg c2l6ZV90IGxlbikKIAkJCQkvKiBTdG9yZSBlcnJvciBtZXNzYWdlIGluIGNvbm4tPndyaXRl X2Vycl9tc2csIGlmIHBvc3NpYmxlICovCiAJCQkJLyogKHN0cmR1cCBmYWlsdXJlIGlzIE9L LCB3ZSdsbCBjb3BlIGxhdGVyKSAqLwogCQkJCXNucHJpbnRmKG1zZ2J1Ziwgc2l6ZW9mKG1z Z2J1ZiksCi0JCQkJCQkgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHNlbmQgZGF0YSB0byBz ZXJ2ZXI6ICVzXG4iKSwKKwkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3Qgc2VuZCBk YXRhIHRvIHNlcnZlcjogJXMiKSwKIAkJCQkJCSBTT0NLX1NUUkVSUk9SKHJlc3VsdF9lcnJu bywKIAkJCQkJCQkJCSAgIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJc3RybGNhdCht c2didWYsICJcbiIsIHNpemVvZihtc2didWYpKTsKIAkJCQljb25uLT53cml0ZV9lcnJfbXNn ID0gc3RyZHVwKG1zZ2J1Zik7CiAJCQkJLyogTm93IGNsYWltIHRoZSB3cml0ZSBzdWNjZWVk ZWQgKi8KIAkJCQluID0gbGVuOwotLSAKMi4zNy4zCgo= --------------JOvVXP0cB2O6nk4o50WdqbUB--