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 1pDRxu-0001pp-Us for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jan 2023 15:15:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pDRxt-0007J1-QN for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jan 2023 15:15:33 +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 1pDRxs-0007Ir-FL for pgsql-hackers@lists.postgresql.org; Thu, 05 Jan 2023 15:15:33 +0000 Received: from new2-smtp.messagingengine.com ([66.111.4.224]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pDRxn-0006Ja-TB for pgsql-hackers@postgresql.org; Thu, 05 Jan 2023 15:15:31 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailnew.nyi.internal (Postfix) with ESMTP id 84DA8581D48 for ; Thu, 5 Jan 2023 10:15:24 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Thu, 05 Jan 2023 10:15:24 -0500 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= fm2; t=1672931724; x=1672938924; bh=cKkw/JYLMcjtM/E6h/gmsMhYUN0S PkgpdBIf02MmoPs=; b=U8/yruBS+HSoax9Heomzf7CPOU0vGnAxEUacTJDCV9aU Hl1YpV3sxvDT4e4bwNJvrkE5jwZ5aPi2f8ZY4Nwi+8o12JWoAr3AHapZKZLWM0/o SNrE3Fn6reY4HQ3Yys8oO76Wss6GWLACko/0xdhgZyztiwJn+9ya73qxycyY7tkr 0y4xHOct6ieh96zXyfh41QNCvC+5MgPYY7hxkK6fTaTPL6w+UCqe16831IP+ZxPF +F85XoyPTQIiXgJBPH1GI73sSdaM6qGHFkxXguh4eljrvQ//2z8LnJKFJVEAf09V J82Uls7HB21rvLUvo9dDjT5R14wC4xvUSmx2wJFKVA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrjeekgdejhecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecuogfuuhhsphgvtghtffhomhgrihhnucdlgeelmdenuc fjughrpegtkfffgggfuffhvfhfjgesmhdtreertdefjeenucfhrhhomheprfgvthgvrhcu gfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrph hrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepkeeuhffgtdekhffhtdeggfek gfekuddvueffleeigeevudekjeefteduhedvleegnecuffhomhgrihhnpehgihhthhhusg drihhonecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep phgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Thu, 5 Jan 2023 10:15:23 -0500 (EST) Content-Type: multipart/mixed; boundary="------------8OAiggSs71EF01HzW8kx7utz" Message-ID: <8ff9e53f-da7e-84f5-a508-9b148ce864f7@enterprisedb.com> Date: Thu, 5 Jan 2023 16:15:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: Allow tailoring of ICU locales with custom rules Content-Language: en-US From: Peter Eisentraut To: pgsql-hackers References: <821c71a4-6ef0-d366-9acf-bb8e367f739f@enterprisedb.com> In-Reply-To: <821c71a4-6ef0-d366-9acf-bb8e367f739f@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. --------------8OAiggSs71EF01HzW8kx7utz Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Patch needed a rebase; no functionality changes. On 14.12.22 10:26, Peter Eisentraut wrote: > This patch exposes the ICU facility to add custom collation rules to a > standard collation.  This would allow users to customize any ICU > collation to whatever they want.  A very simple example from the > documentation/tests: > > CREATE COLLATION en_custom >     (provider = icu, locale = 'en', rules = '&a < g'); > > This places "g" after "a" before "b".  Details about the syntax can be > found at > . > > The code is pretty straightforward.  It mainly just records these rules > in the catalog and feeds them to ICU when creating the collator object. --------------8OAiggSs71EF01HzW8kx7utz Content-Type: text/plain; charset=UTF-8; name="v2-0001-Allow-tailoring-of-ICU-locales-with-custom-rules.patch" Content-Disposition: attachment; filename*0="v2-0001-Allow-tailoring-of-ICU-locales-with-custom-rules.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBhZTcyOWUyZDVkMzdhMzgyYjdhYWFhMTNlYTk1ODk3Y2NiMzVkMGMxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAxNCBEZWMgMjAyMiAxMDoxNTowMyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjJdIEFsbG93IHRhaWxvcmluZyBvZiBJQ1UgbG9jYWxlcyB3aXRoIGN1c3Rv bSBydWxlcwoKVGhpcyBleHBvc2VzIHRoZSBJQ1UgZmFjaWxpdHkgdG8gYWRkIGN1c3RvbSBj b2xsYXRpb24gcnVsZXMgdG8gYQpzdGFuZGFyZCBjb2xsYXRpb24uCgpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvODIxYzcxYTQtNmVm MC1kMzY2LTlhY2YtYmI4ZTM2N2Y3MzlmQGVudGVycHJpc2VkYi5jb20KLS0tCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrCiBk b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9jb2xsYXRpb24uc2dtbCAgICAgICAgfCAyMiArKysr KysrKysKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFiYXNlLnNnbWwgICAgICAgICB8 IDEyICsrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbGxhdGlvbi5jICAgICAgICAg ICAgfCAgNSArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jICAgICAg ICAgIHwgMjMgKysrKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMg ICAgICAgICAgICAgfCA0OSArKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcGdfbG9jYWxlLmMgICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysrKystCiBz cmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAgICAgfCAxMSArKysr LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uaCAgICAgICAgICAgIHwgIDIg Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kYXRhYmFzZS5oICAgICAgICAgICAgIHwgIDMg KysKIHNyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oICAgICAgICAgICAgICAgICB8ICAx ICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0ICAgICB8IDMw ICsrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5z cWwgICAgIHwgMTMgKysrKysKIDEzIGZpbGVzIGNoYW5nZWQsIDIyMCBpbnNlcnRpb25zKCsp LCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDkzMTZiODExYWMuLmFm YTlmMjhlZjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0yNDI4LDYgKzI0MjgsMTUgQEAgPHRp dGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbGxhdGlvbjwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0 bGU+CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbGxpY3VydWxlczwv c3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBJQ1UgY29sbGF0aW9uIHJ1bGVzIGZvciB0aGlzIGNvbGxhdGlvbiBv YmplY3QKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93 PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+Y29sbHZlcnNpb248 L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgpAQCAtMzEwNiw2ICszMTE1LDE1IEBA IDx0aXRsZT48c3RydWN0bmFtZT5wZ19kYXRhYmFzZTwvc3RydWN0bmFtZT4gQ29sdW1uczwv dGl0bGU+CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmRhdGljdXJ1bGVz PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIElDVSBjb2xsYXRpb24gcnVsZXMgZm9yIHRoaXMgZGF0YWJhc2UK KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+ZGF0Y29sbHZlcnNpb248L3N0 cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9j b2xsYXRpb24uc2dtbAppbmRleCA1OGY1ZjBjZDYzLi4yYzcyNjYxMDdlIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9jb2xsYXRpb24uc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9jb2xsYXRpb24uc2dtbApAQCAtMjcsNiArMjcsNyBAQAogICAg IFsgTENfQ1RZUEUgPSA8cmVwbGFjZWFibGU+bGNfY3R5cGU8L3JlcGxhY2VhYmxlPiwgXQog ICAgIFsgUFJPVklERVIgPSA8cmVwbGFjZWFibGU+cHJvdmlkZXI8L3JlcGxhY2VhYmxlPiwg XQogICAgIFsgREVURVJNSU5JU1RJQyA9IDxyZXBsYWNlYWJsZT5ib29sZWFuPC9yZXBsYWNl YWJsZT4sIF0KKyAgICBbIFJVTEVTID0gPHJlcGxhY2VhYmxlPnJ1bGVzPC9yZXBsYWNlYWJs ZT4sIF0KICAgICBbIFZFUlNJT04gPSA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFi bGU+IF0KICkKIENSRUFURSBDT0xMQVRJT04gWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2Vh YmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBGUk9NIDxyZXBsYWNlYWJsZT5leGlzdGluZ19jb2xs YXRpb248L3JlcGxhY2VhYmxlPgpAQCAtMTQ5LDYgKzE1MCwxOSBAQCA8dGl0bGU+UGFyYW1l dGVyczwvdGl0bGU+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48cmVwbGFjZWFibGU+cnVsZXM8L3Jl cGxhY2VhYmxlPjwvdGVybT4KKworICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAg ICAgICBTcGVjaWZpZXMgYWRkaXRpb25hbCBjb2xsYXRpb24gcnVsZXMgdG8gY3VzdG9taXpl IHRoZSBiZWhhdmlvciBvZiB0aGUKKyAgICAgICBjb2xsYXRpb24uICBUaGlzIGlzIHN1cHBv cnRlZCBmb3IgSUNVIG9ubHkuICBTZWUgPHVsaW5rCisgICAgICAgdXJsPSJodHRwczovL3Vu aWNvZGUtb3JnLmdpdGh1Yi5pby9pY3UvdXNlcmd1aWRlL2NvbGxhdGlvbi9jdXN0b21pemF0 aW9uLyIvPgorICAgICAgIGZvciBkZXRhaWxzIG9uIHRoZSBzeW50YXguCisgICAgICA8L3Bh cmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICA8dmFy bGlzdGVudHJ5PgogICAgICA8dGVybT48cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFi bGU+PC90ZXJtPgogCkBAIC0yMjgsNiArMjQyLDE0IEBAIDx0aXRsZT5FeGFtcGxlczwvdGl0 bGU+CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUbyBj cmVhdGUgYSBjb2xsYXRpb24gdXNpbmcgdGhlIElDVSBwcm92aWRlciwgYmFzZWQgb24gdGhl IEVuZ2xpc2ggSUNVCisgICBsb2NhbGUsIHdpdGggY3VzdG9tIHJ1bGVzOgorPHByb2dyYW1s aXN0aW5nPgorPCFbQ0RBVEFbQ1JFQVRFIENPTExBVElPTiBlbl9jdXN0b20gKHByb3ZpZGVy ID0gaWN1LCBsb2NhbGUgPSAnZW4nLCBydWxlcyA9ICcmYSA8IGcnKTtdXT4KKzwvcHJvZ3Jh bWxpc3Rpbmc+CisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRvIGNyZWF0ZSBhIGNvbGxh dGlvbiBmcm9tIGFuIGV4aXN0aW5nIGNvbGxhdGlvbjoKIDxwcm9ncmFtbGlzdGluZz4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFiYXNlLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9kYXRhYmFzZS5zZ21sCmluZGV4IGVhMzhjNjQ3MzEuLmFh NmYxMjFhODEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFiYXNl LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZGF0YWJhc2Uuc2dtbApAQCAt MTkyLDYgKzE5MiwxOCBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgICA8L2xp c3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5Pgor ICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmljdV9ydWxlczwv cmVwbGFjZWFibGU+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgor ICAgICAgICBTcGVjaWZpZXMgYWRkaXRpb25hbCBjb2xsYXRpb24gcnVsZXMgdG8gY3VzdG9t aXplIHRoZSBiZWhhdmlvciBvZiB0aGUKKyAgICAgICAgY29sbGF0aW9uLiAgVGhpcyBpcyBz dXBwb3J0ZWQgZm9yIElDVSBvbmx5LiAgU2VlIDx1bGluaworICAgICAgICB1cmw9Imh0dHBz Oi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvY29sbGF0aW9uL2N1c3Rv bWl6YXRpb24vIi8+CisgICAgICAgIGZvciBkZXRhaWxzIG9uIHRoZSBzeW50YXguCisgICAg ICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisK ICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZT5sb2NhbGVf cHJvdmlkZXI8L3JlcGxhY2VhYmxlPjwvdGVybT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19jb2xsYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29s bGF0aW9uLmMKaW5kZXggMjg3YjEzNzI1ZC4uZmQwMjJlNmZjMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19jb2xsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbGxhdGlvbi5jCkBAIC01MCw2ICs1MCw3IEBAIENvbGxhdGlvbkNyZWF0ZShj b25zdCBjaGFyICpjb2xsbmFtZSwgT2lkIGNvbGxuYW1lc3BhY2UsCiAJCQkJaW50MzIgY29s bGVuY29kaW5nLAogCQkJCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlLCBjb25zdCBjaGFyICpj b2xsY3R5cGUsCiAJCQkJY29uc3QgY2hhciAqY29sbGljdWxvY2FsZSwKKwkJCQljb25zdCBj aGFyICpjb2xsaWN1cnVsZXMsCiAJCQkJY29uc3QgY2hhciAqY29sbHZlcnNpb24sCiAJCQkJ Ym9vbCBpZl9ub3RfZXhpc3RzLAogCQkJCWJvb2wgcXVpZXQpCkBAIC0xOTQsNiArMTk1LDEw IEBAIENvbGxhdGlvbkNyZWF0ZShjb25zdCBjaGFyICpjb2xsbmFtZSwgT2lkIGNvbGxuYW1l c3BhY2UsCiAJCXZhbHVlc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xsaWN1bG9jYWxlIC0gMV0g PSBDU3RyaW5nR2V0VGV4dERhdHVtKGNvbGxpY3Vsb2NhbGUpOwogCWVsc2UKIAkJbnVsbHNb QW51bV9wZ19jb2xsYXRpb25fY29sbGljdWxvY2FsZSAtIDFdID0gdHJ1ZTsKKwlpZiAoY29s bGljdXJ1bGVzKQorCQl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbGljdXJ1bGVzIC0g MV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGNvbGxpY3VydWxlcyk7CisJZWxzZQorCQludWxs c1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xsaWN1cnVsZXMgLSAxXSA9IHRydWU7CiAJaWYgKGNv bGx2ZXJzaW9uKQogCQl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbHZlcnNpb24gLSAx XSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oY29sbHZlcnNpb24pOwogCWVsc2UKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYwppbmRleCA2YTQzMTFjYzYzLi4wNGUyNTliMGJh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCkBAIC02NCwxMCArNjQs MTIgQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMs IExpc3QgKnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAlEZWZFbGVtICAgICpsY2N0eXBl RWwgPSBOVUxMOwogCURlZkVsZW0gICAgKnByb3ZpZGVyRWwgPSBOVUxMOwogCURlZkVsZW0g ICAgKmRldGVybWluaXN0aWNFbCA9IE5VTEw7CisJRGVmRWxlbSAgICAqcnVsZXNFbCA9IE5V TEw7CiAJRGVmRWxlbSAgICAqdmVyc2lvbkVsID0gTlVMTDsKIAljaGFyCSAgICpjb2xsY29s bGF0ZTsKIAljaGFyCSAgICpjb2xsY3R5cGU7CiAJY2hhcgkgICAqY29sbGljdWxvY2FsZTsK KwljaGFyCSAgICpjb2xsaWN1cnVsZXM7CiAJYm9vbAkJY29sbGlzZGV0ZXJtaW5pc3RpYzsK IAlpbnQJCQljb2xsZW5jb2Rpbmc7CiAJY2hhcgkJY29sbHByb3ZpZGVyOwpAQCAtOTksNiAr MTAxLDggQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFt ZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAkJCWRlZmVscCA9ICZwcm92 aWRlckVsOwogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJkZXRlcm1pbmlz dGljIikgPT0gMCkKIAkJCWRlZmVscCA9ICZkZXRlcm1pbmlzdGljRWw7CisJCWVsc2UgaWYg KHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInJ1bGVzIikgPT0gMCkKKwkJCWRlZmVscCA9ICZy dWxlc0VsOwogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ2ZXJzaW9uIikg PT0gMCkKIAkJCWRlZmVscCA9ICZ2ZXJzaW9uRWw7CiAJCWVsc2UKQEAgLTE2MSw2ICsxNjUs MTIgQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMs IExpc3QgKnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAkJZWxzZQogCQkJY29sbGljdWxv Y2FsZSA9IE5VTEw7CiAKKwkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAs IEFudW1fcGdfY29sbGF0aW9uX2NvbGxpY3VydWxlcywgJmlzbnVsbCk7CisJCWlmICghaXNu dWxsKQorCQkJY29sbGljdXJ1bGVzID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJ CWVsc2UKKwkJCWNvbGxpY3VydWxlcyA9IE5VTEw7CisKIAkJUmVsZWFzZVN5c0NhY2hlKHRw KTsKIAogCQkvKgpAQCAtMTgyLDYgKzE5Miw3IEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25v dF9lCiAJCWNvbGxjb2xsYXRlID0gTlVMTDsKIAkJY29sbGN0eXBlID0gTlVMTDsKIAkJY29s bGljdWxvY2FsZSA9IE5VTEw7CisJCWNvbGxpY3VydWxlcyA9IE5VTEw7CiAKIAkJaWYgKHBy b3ZpZGVyRWwpCiAJCQljb2xscHJvdmlkZXJzdHIgPSBkZWZHZXRTdHJpbmcocHJvdmlkZXJF bCk7CkBAIC0xOTEsNiArMjAyLDkgQEAgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJvb2wgaWZfbm90X2UKIAkJ ZWxzZQogCQkJY29sbGlzZGV0ZXJtaW5pc3RpYyA9IHRydWU7CiAKKwkJaWYgKHJ1bGVzRWwp CisJCQljb2xsaWN1cnVsZXMgPSBkZWZHZXRTdHJpbmcocnVsZXNFbCk7CisKIAkJaWYgKHZl cnNpb25FbCkKIAkJCWNvbGx2ZXJzaW9uID0gZGVmR2V0U3RyaW5nKHZlcnNpb25FbCk7CiAK QEAgLTI5Nyw2ICszMTEsNyBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCQkJCQkJ CSBjb2xsY29sbGF0ZSwKIAkJCQkJCQkgY29sbGN0eXBlLAogCQkJCQkJCSBjb2xsaWN1bG9j YWxlLAorCQkJCQkJCSBjb2xsaWN1cnVsZXMsCiAJCQkJCQkJIGNvbGx2ZXJzaW9uLAogCQkJ CQkJCSBpZl9ub3RfZXhpc3RzLAogCQkJCQkJCSBmYWxzZSk7CS8qIG5vdCBxdWlldCAqLwpA QCAtNjgwLDcgKzY5NSw3IEBAIGNyZWF0ZV9jb2xsYXRpb25fZnJvbV9sb2NhbGUoY29uc3Qg Y2hhciAqbG9jYWxlLCBpbnQgbnNwaWQsCiAJICovCiAJY29sbGlkID0gQ29sbGF0aW9uQ3Jl YXRlKGxvY2FsZSwgbnNwaWQsIEdldFVzZXJJZCgpLAogCQkJCQkJCSBDT0xMUFJPVklERVJf TElCQywgdHJ1ZSwgZW5jLAotCQkJCQkJCSBsb2NhbGUsIGxvY2FsZSwgTlVMTCwKKwkJCQkJ CQkgbG9jYWxlLCBsb2NhbGUsIE5VTEwsIE5VTEwsCiAJCQkJCQkJIGdldF9jb2xsYXRpb25f YWN0dWFsX3ZlcnNpb24oQ09MTFBST1ZJREVSX0xJQkMsIGxvY2FsZSksCiAJCQkJCQkJIHRy dWUsIHRydWUpOwogCWlmIChPaWRJc1ZhbGlkKGNvbGxpZCkpCkBAIC03NTUsNyArNzcwLDcg QEAgd2luMzJfcmVhZF9sb2NhbGUoTFBXU1RSIHBTdHIsIERXT1JEIGR3RmxhZ3MsIExQQVJB TSBscGFyYW0pCiAKIAkJY29sbGlkID0gQ29sbGF0aW9uQ3JlYXRlKGFsaWFzLCBwYXJhbS0+ bnNwaWQsIEdldFVzZXJJZCgpLAogCQkJCQkJCQkgQ09MTFBST1ZJREVSX0xJQkMsIHRydWUs IGVuYywKLQkJCQkJCQkJIGxvY2FsZWJ1ZiwgbG9jYWxlYnVmLCBOVUxMLAorCQkJCQkJCQkg bG9jYWxlYnVmLCBsb2NhbGVidWYsIE5VTEwsIE5VTEwsCiAJCQkJCQkJCSBnZXRfY29sbGF0 aW9uX2FjdHVhbF92ZXJzaW9uKENPTExQUk9WSURFUl9MSUJDLCBsb2NhbGVidWYpLAogCQkJ CQkJCQkgdHJ1ZSwgdHJ1ZSk7CiAJCWlmIChPaWRJc1ZhbGlkKGNvbGxpZCkpCkBAIC04ODks NyArOTA0LDcgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAkJCWNvbGxpZCA9IENvbGxhdGlvbkNyZWF0ZShhbGlhcywgbnNwaWQsIEdldFVz ZXJJZCgpLAogCQkJCQkJCQkJIENPTExQUk9WSURFUl9MSUJDLCB0cnVlLCBlbmMsCi0JCQkJ CQkJCQkgbG9jYWxlLCBsb2NhbGUsIE5VTEwsCisJCQkJCQkJCQkgbG9jYWxlLCBsb2NhbGUs IE5VTEwsIE5VTEwsCiAJCQkJCQkJCQkgZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihD T0xMUFJPVklERVJfTElCQywgbG9jYWxlKSwKIAkJCQkJCQkJCSB0cnVlLCB0cnVlKTsKIAkJ CWlmIChPaWRJc1ZhbGlkKGNvbGxpZCkpCkBAIC05NTEsNyArOTY2LDcgQEAgcGdfaW1wb3J0 X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljb2xsaWQgPSBDb2xs YXRpb25DcmVhdGUocHNwcmludGYoIiVzLXgtaWN1IiwgbGFuZ3RhZyksCiAJCQkJCQkJCQkg bnNwaWQsIEdldFVzZXJJZCgpLAogCQkJCQkJCQkJIENPTExQUk9WSURFUl9JQ1UsIHRydWUs IC0xLAotCQkJCQkJCQkJIE5VTEwsIE5VTEwsIGljdWxvY3N0ciwKKwkJCQkJCQkJCSBOVUxM LCBOVUxMLCBpY3Vsb2NzdHIsIE5VTEwsCiAJCQkJCQkJCQkgZ2V0X2NvbGxhdGlvbl9hY3R1 YWxfdmVyc2lvbihDT0xMUFJPVklERVJfSUNVLCBpY3Vsb2NzdHIpLAogCQkJCQkJCQkJIHRy dWUsIHRydWUpOwogCQkJaWYgKE9pZElzVmFsaWQoY29sbGlkKSkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2RiY29tbWFuZHMuYwppbmRleCA1MThmZmNhMDlhLi4zNmNlN2Q4ZjgzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZGJjb21tYW5kcy5jCkBAIC0xMTksNiArMTE5LDcgQEAgc3RhdGljIGJvb2wg Z2V0X2RiX2luZm8oY29uc3QgY2hhciAqbmFtZSwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJ CQlpbnQgKmVuY29kaW5nUCwgYm9vbCAqZGJJc1RlbXBsYXRlUCwgYm9vbCAqZGJBbGxvd0Nv bm5QLAogCQkJCQkJVHJhbnNhY3Rpb25JZCAqZGJGcm96ZW5YaWRQLCBNdWx0aVhhY3RJZCAq ZGJNaW5NdWx0aVAsCiAJCQkJCQlPaWQgKmRiVGFibGVzcGFjZSwgY2hhciAqKmRiQ29sbGF0 ZSwgY2hhciAqKmRiQ3R5cGUsIGNoYXIgKipkYkljdWxvY2FsZSwKKwkJCQkJCWNoYXIgKipk YkljdXJ1bGVzLAogCQkJCQkJY2hhciAqZGJMb2NQcm92aWRlciwKIAkJCQkJCWNoYXIgKipk YkNvbGx2ZXJzaW9uKTsKIHN0YXRpYyBib29sIGhhdmVfY3JlYXRlZGJfcHJpdmlsZWdlKHZv aWQpOwpAQCAtNjc2LDYgKzY3Nyw3IEBAIGNyZWF0ZWRiKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Y29uc3QgQ3JlYXRlZGJTdG10ICpzdG10KQogCWNoYXIJICAgKnNyY19jb2xsYXRlID0gTlVM TDsKIAljaGFyCSAgICpzcmNfY3R5cGUgPSBOVUxMOwogCWNoYXIJICAgKnNyY19pY3Vsb2Nh bGUgPSBOVUxMOworCWNoYXIJICAgKnNyY19pY3VydWxlcyA9IE5VTEw7CiAJY2hhcgkJc3Jj X2xvY3Byb3ZpZGVyID0gJ1wwJzsKIAljaGFyCSAgICpzcmNfY29sbHZlcnNpb24gPSBOVUxM OwogCWJvb2wJCXNyY19pc3RlbXBsYXRlOwpAQCAtNjk5LDYgKzcwMSw3IEBAIGNyZWF0ZWRi KFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgQ3JlYXRlZGJTdG10ICpzdG10KQogCURlZkVs ZW0gICAgKmRjb2xsYXRlID0gTlVMTDsKIAlEZWZFbGVtICAgICpkY3R5cGUgPSBOVUxMOwog CURlZkVsZW0gICAgKmRpY3Vsb2NhbGUgPSBOVUxMOworCURlZkVsZW0gICAgKmRpY3VydWxl cyA9IE5VTEw7CiAJRGVmRWxlbSAgICAqZGxvY3Byb3ZpZGVyID0gTlVMTDsKIAlEZWZFbGVt ICAgICpkaXN0ZW1wbGF0ZSA9IE5VTEw7CiAJRGVmRWxlbSAgICAqZGFsbG93Y29ubmVjdGlv bnMgPSBOVUxMOwpAQCAtNzExLDYgKzcxNCw3IEBAIGNyZWF0ZWRiKFBhcnNlU3RhdGUgKnBz dGF0ZSwgY29uc3QgQ3JlYXRlZGJTdG10ICpzdG10KQogCWNoYXIJICAgKmRiY29sbGF0ZSA9 IE5VTEw7CiAJY2hhcgkgICAqZGJjdHlwZSA9IE5VTEw7CiAJY2hhcgkgICAqZGJpY3Vsb2Nh bGUgPSBOVUxMOworCWNoYXIJICAgKmRiaWN1cnVsZXMgPSBOVUxMOwogCWNoYXIJCWRibG9j cHJvdmlkZXIgPSAnXDAnOwogCWNoYXIJICAgKmNhbm9ubmFtZTsKIAlpbnQJCQllbmNvZGlu ZyA9IC0xOwpAQCAtNzc2LDYgKzc4MCwxMiBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3Rh dGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAkJCQllcnJvckNvbmZsaWN0aW5nRGVm RWxlbShkZWZlbCwgcHN0YXRlKTsKIAkJCWRpY3Vsb2NhbGUgPSBkZWZlbDsKIAkJfQorCQll bHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJpY3VfcnVsZXMiKSA9PSAwKQorCQl7 CisJCQlpZiAoZGljdXJ1bGVzKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVs LCBwc3RhdGUpOworCQkJZGljdXJ1bGVzID0gZGVmZWw7CisJCX0KIAkJZWxzZSBpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAibG9jYWxlX3Byb3ZpZGVyIikgPT0gMCkKIAkJewogCQkJ aWYgKGRsb2Nwcm92aWRlcikKQEAgLTk1OSw3ICs5NjksNyBAQCBjcmVhdGVkYihQYXJzZVN0 YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAkJCQkJICZzcmNfZGJv aWQsICZzcmNfb3duZXIsICZzcmNfZW5jb2RpbmcsCiAJCQkJCSAmc3JjX2lzdGVtcGxhdGUs ICZzcmNfYWxsb3djb25uLAogCQkJCQkgJnNyY19mcm96ZW54aWQsICZzcmNfbWlubXhpZCwg JnNyY19kZWZ0YWJsZXNwYWNlLAotCQkJCQkgJnNyY19jb2xsYXRlLCAmc3JjX2N0eXBlLCAm c3JjX2ljdWxvY2FsZSwgJnNyY19sb2Nwcm92aWRlciwKKwkJCQkJICZzcmNfY29sbGF0ZSwg JnNyY19jdHlwZSwgJnNyY19pY3Vsb2NhbGUsICZzcmNfaWN1cnVsZXMsICZzcmNfbG9jcHJv dmlkZXIsCiAJCQkJCSAmc3JjX2NvbGx2ZXJzaW9uKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9EQVRBQkFTRSksCkBAIC0xMDA3LDYgKzEw MTcsOCBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IENyZWF0ZWRiU3Rt dCAqc3RtdCkKIAkJZGJsb2Nwcm92aWRlciA9IHNyY19sb2Nwcm92aWRlcjsKIAlpZiAoZGJp Y3Vsb2NhbGUgPT0gTlVMTCAmJiBkYmxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1Up CiAJCWRiaWN1bG9jYWxlID0gc3JjX2ljdWxvY2FsZTsKKwlpZiAoZGJpY3VydWxlcyA9PSBO VUxMICYmIGRibG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJZGJpY3VydWxl cyA9IHNyY19pY3VydWxlczsKIAogCS8qIFNvbWUgZW5jb2RpbmdzIGFyZSBjbGllbnQgb25s eSAqLwogCWlmICghUEdfVkFMSURfQkVfRU5DT0RJTkcoZW5jb2RpbmcpKQpAQCAtMTA5OCw2 ICsxMTEwLDkgQEAgY3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVk YlN0bXQgKnN0bXQpCiAKIAkJaWYgKGRibG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lD VSkKIAkJeworCQkJY2hhcgkgICAqdmFsMTsKKwkJCWNoYXIJICAgKnZhbDI7CisKIAkJCUFz c2VydChkYmljdWxvY2FsZSk7CiAJCQlBc3NlcnQoc3JjX2ljdWxvY2FsZSk7CiAJCQlpZiAo c3RyY21wKGRiaWN1bG9jYWxlLCBzcmNfaWN1bG9jYWxlKSAhPSAwKQpAQCAtMTEwNiw2ICsx MTIxLDE5IEBAIGNyZWF0ZWRiKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgQ3JlYXRlZGJT dG10ICpzdG10KQogCQkJCQkJIGVycm1zZygibmV3IElDVSBsb2NhbGUgKCVzKSBpcyBpbmNv bXBhdGlibGUgd2l0aCB0aGUgSUNVIGxvY2FsZSBvZiB0aGUgdGVtcGxhdGUgZGF0YWJhc2Ug KCVzKSIsCiAJCQkJCQkJCWRiaWN1bG9jYWxlLCBzcmNfaWN1bG9jYWxlKSwKIAkJCQkJCSBl cnJoaW50KCJVc2UgdGhlIHNhbWUgSUNVIGxvY2FsZSBhcyBpbiB0aGUgdGVtcGxhdGUgZGF0 YWJhc2UsIG9yIHVzZSB0ZW1wbGF0ZTAgYXMgdGVtcGxhdGUuIikpKTsKKworCQkJdmFsMSA9 IGRiaWN1cnVsZXM7CisJCQlpZiAoIXZhbDEpCisJCQkJdmFsMSA9ICIiOworCQkJdmFsMiA9 IHNyY19pY3VydWxlczsKKwkJCWlmICghdmFsMikKKwkJCQl2YWwyID0gIiI7CisJCQlpZiAo c3RyY21wKHZhbDEsIHZhbDIpICE9IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1z ZygibmV3IElDVSBjb2xsYXRpb24gcnVsZXMgKCVzKSBhcmUgaW5jb21wYXRpYmxlIHdpdGgg dGhlIElDVSBjb2xsYXRpb24gcnVsZXMgb2YgdGhlIHRlbXBsYXRlIGRhdGFiYXNlICglcyki LAorCQkJCQkJCQl2YWwxLCB2YWwyKSwKKwkJCQkJCSBlcnJoaW50KCJVc2UgdGhlIHNhbWUg SUNVIGNvbGxhdGlvbiBydWxlcyBhcyBpbiB0aGUgdGVtcGxhdGUgZGF0YWJhc2UsIG9yIHVz ZSB0ZW1wbGF0ZTAgYXMgdGVtcGxhdGUuIikpKTsKIAkJfQogCX0KIApAQCAtMTMxNCw2ICsx MzQyLDEwIEBAIGNyZWF0ZWRiKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgQ3JlYXRlZGJT dG10ICpzdG10KQogCQluZXdfcmVjb3JkW0FudW1fcGdfZGF0YWJhc2VfZGF0aWN1bG9jYWxl IC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGRiaWN1bG9jYWxlKTsKIAllbHNlCiAJCW5l d19yZWNvcmRfbnVsbHNbQW51bV9wZ19kYXRhYmFzZV9kYXRpY3Vsb2NhbGUgLSAxXSA9IHRy dWU7CisJaWYgKGRiaWN1cnVsZXMpCisJCW5ld19yZWNvcmRbQW51bV9wZ19kYXRhYmFzZV9k YXRpY3VydWxlcyAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShkYmljdXJ1bGVzKTsKKwll bHNlCisJCW5ld19yZWNvcmRfbnVsbHNbQW51bV9wZ19kYXRhYmFzZV9kYXRpY3VydWxlcyAt IDFdID0gdHJ1ZTsKIAlpZiAoZGJjb2xsdmVyc2lvbikKIAkJbmV3X3JlY29yZFtBbnVtX3Bn X2RhdGFiYXNlX2RhdGNvbGx2ZXJzaW9uIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGRi Y29sbHZlcnNpb24pOwogCWVsc2UKQEAgLTE1MjcsNyArMTU1OSw3IEBAIGRyb3BkYihjb25z dCBjaGFyICpkYm5hbWUsIGJvb2wgbWlzc2luZ19vaywgYm9vbCBmb3JjZSkKIAlwZ2RicmVs ID0gdGFibGVfb3BlbihEYXRhYmFzZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwog CiAJaWYgKCFnZXRfZGJfaW5mbyhkYm5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssICZkYl9p ZCwgTlVMTCwgTlVMTCwKLQkJCQkJICZkYl9pc3RlbXBsYXRlLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSkKKwkJCQkJICZkYl9pc3Rl bXBsYXRlLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMKSkKIAl7CiAJCWlmICghbWlzc2luZ19vaykKIAkJewpAQCAtMTcyNyw3 ICsxNzU5LDcgQEAgUmVuYW1lRGF0YWJhc2UoY29uc3QgY2hhciAqb2xkbmFtZSwgY29uc3Qg Y2hhciAqbmV3bmFtZSkKIAlyZWwgPSB0YWJsZV9vcGVuKERhdGFiYXNlUmVsYXRpb25JZCwg Um93RXhjbHVzaXZlTG9jayk7CiAKIAlpZiAoIWdldF9kYl9pbmZvKG9sZG5hbWUsIEFjY2Vz c0V4Y2x1c2l2ZUxvY2ssICZkYl9pZCwgTlVMTCwgTlVMTCwKLQkJCQkJIE5VTEwsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKQorCQkJ CQkgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9VTkRFRklORURfREFUQUJBU0UpLAogCQkJCSBlcnJtc2coImRhdGFiYXNlIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsIG9sZG5hbWUpKSk7CkBAIC0xODM3LDcgKzE4NjksNyBAQCBtb3Zl ZGIoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp0YmxzcGNuYW1lKQogCXBnZGJy ZWwgPSB0YWJsZV9vcGVuKERhdGFiYXNlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7 CiAKIAlpZiAoIWdldF9kYl9pbmZvKGRibmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jaywgJmRi X2lkLCBOVUxMLCBOVUxMLAotCQkJCQkgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgJnNyY190 YmxzcGNvaWQsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKQorCQkJCQkgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTCwgJnNyY190YmxzcGNvaWQsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNP REVfVU5ERUZJTkVEX0RBVEFCQVNFKSwKIAkJCQkgZXJybXNnKCJkYXRhYmFzZSBcIiVzXCIg ZG9lcyBub3QgZXhpc3QiLCBkYm5hbWUpKSk7CkBAIC0yNjAwLDYgKzI2MzIsNyBAQCBnZXRf ZGJfaW5mbyhjb25zdCBjaGFyICpuYW1lLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCWludCAq ZW5jb2RpbmdQLCBib29sICpkYklzVGVtcGxhdGVQLCBib29sICpkYkFsbG93Q29ublAsCiAJ CQlUcmFuc2FjdGlvbklkICpkYkZyb3plblhpZFAsIE11bHRpWGFjdElkICpkYk1pbk11bHRp UCwKIAkJCU9pZCAqZGJUYWJsZXNwYWNlLCBjaGFyICoqZGJDb2xsYXRlLCBjaGFyICoqZGJD dHlwZSwgY2hhciAqKmRiSWN1bG9jYWxlLAorCQkJY2hhciAqKmRiSWN1cnVsZXMsCiAJCQlj aGFyICpkYkxvY1Byb3ZpZGVyLAogCQkJY2hhciAqKmRiQ29sbHZlcnNpb24pCiB7CkBAIC0y NzE2LDYgKzI3NDksMTQgQEAgZ2V0X2RiX2luZm8oY29uc3QgY2hhciAqbmFtZSwgTE9DS01P REUgbG9ja21vZGUsCiAJCQkJCWVsc2UKIAkJCQkJCSpkYkljdWxvY2FsZSA9IFRleHREYXR1 bUdldENTdHJpbmcoZGF0dW0pOwogCQkJCX0KKwkJCQlpZiAoZGJJY3VydWxlcykKKwkJCQl7 CisJCQkJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKERBVEFCQVNFT0lELCB0dXBsZSwgQW51 bV9wZ19kYXRhYmFzZV9kYXRpY3VydWxlcywgJmlzbnVsbCk7CisJCQkJCWlmIChpc251bGwp CisJCQkJCQkqZGJJY3VydWxlcyA9IE5VTEw7CisJCQkJCWVsc2UKKwkJCQkJCSpkYkljdXJ1 bGVzID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJCQkJfQogCQkJCWlmIChkYkNv bGx2ZXJzaW9uKQogCQkJCXsKIAkJCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoREFUQUJB U0VPSUQsIHR1cGxlLCBBbnVtX3BnX2RhdGFiYXNlX2RhdGNvbGx2ZXJzaW9uLCAmaXNudWxs KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCAwNTllNGZkNzlmLi5kYTUx NGI5Mzk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC02OSw2ICs2OSw3 IEBACiAKICNpZmRlZiBVU0VfSUNVCiAjaW5jbHVkZSA8dW5pY29kZS91Y252Lmg+CisjaW5j bHVkZSA8dW5pY29kZS91c3RyaW5nLmg+CiAjZW5kaWYKIAogI2lmZGVmIF9fR0xJQkNfXwpA QCAtMTQwMiw2ICsxNDAzLDcgQEAgc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QgZGVmYXVsdF9s b2NhbGU7CiAKIHZvaWQKIG1ha2VfaWN1X2NvbGxhdG9yKGNvbnN0IGNoYXIgKmljdWxvY3N0 ciwKKwkJCQkgIGNvbnN0IGNoYXIgKmljdXJ1bGVzLAogCQkJCSAgc3RydWN0IHBnX2xvY2Fs ZV9zdHJ1Y3QgKnJlc3VsdHApCiB7CiAjaWZkZWYgVVNFX0lDVQpAQCAtMTQxOCw2ICsxNDIw LDM1IEBAIG1ha2VfaWN1X2NvbGxhdG9yKGNvbnN0IGNoYXIgKmljdWxvY3N0ciwKIAlpZiAo VV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPCA1NCkKIAkJaWN1X3NldF9jb2xsYXRpb25fYXR0 cmlidXRlcyhjb2xsYXRvciwgaWN1bG9jc3RyKTsKIAorCS8qCisJICogSWYgcnVsZXMgYXJl IHNwZWNpZmllZCwgd2UgZXh0cmFjdCB0aGUgcnVsZXMgb2YgdGhlIHN0YW5kYXJkIGNvbGxh dGlvbiwKKwkgKiBhZGQgb3VyIG93biBydWxlcywgYW5kIG1ha2UgYSBuZXcgY29sbGF0b3Ig d2l0aCB0aGUgY29tYmluZWQgcnVsZXMuCisJICovCisJaWYgKGljdXJ1bGVzKQorCXsKKwkJ Y29uc3QgVUNoYXIgKmRlZmF1bHRfcnVsZXM7CisJCVVDaGFyCSAgICphZ2dfcnVsZXM7CisJ CVVDaGFyCSAgICpteV9ydWxlczsKKwkJaW50MzJfdAkJbGVuZ3RoOworCisJCWRlZmF1bHRf cnVsZXMgPSB1Y29sX2dldFJ1bGVzKGNvbGxhdG9yLCAmbGVuZ3RoKTsKKwkJaWN1X3RvX3Vj aGFyKCZteV9ydWxlcywgaWN1cnVsZXMsIHN0cmxlbihpY3VydWxlcykpOworCisJCWFnZ19y dWxlcyA9IHBhbGxvY19hcnJheShVQ2hhciwgdV9zdHJsZW4oZGVmYXVsdF9ydWxlcykgKyB1 X3N0cmxlbihteV9ydWxlcykgKyAxKTsKKwkJdV9zdHJjcHkoYWdnX3J1bGVzLCBkZWZhdWx0 X3J1bGVzKTsKKwkJdV9zdHJjYXQoYWdnX3J1bGVzLCBteV9ydWxlcyk7CisKKwkJdWNvbF9j bG9zZShjb2xsYXRvcik7CisKKwkJc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCQljb2xsYXRv ciA9IHVjb2xfb3BlblJ1bGVzKGFnZ19ydWxlcywgdV9zdHJsZW4oYWdnX3J1bGVzKSwKKwkJ CQkJCQkJICBVQ09MX0RFRkFVTFQsIFVDT0xfREVGQVVMVF9TVFJFTkdUSCwgTlVMTCwgJnN0 YXR1cyk7CisJCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJtc2coImNvdWxkIG5vdCBvcGVuIGNvbGxhdG9yIGZvciBsb2NhbGUgXCIlc1wi IHdpdGggcnVsZXMgXCIlc1wiOiAlcyIsCisJCQkJCQkJaWN1bG9jc3RyLCBpY3VydWxlcywg dV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwl9CisKIAkvKiBXZSB3aWxsIGxlYWsgdGhpcyBz dHJpbmcgaWYgdGhlIGNhbGxlciBlcnJvcnMgbGF0ZXIgOi0oICovCiAJcmVzdWx0cC0+aW5m by5pY3UubG9jYWxlID0gTWVtb3J5Q29udGV4dFN0cmR1cChUb3BNZW1vcnlDb250ZXh0LCBp Y3Vsb2NzdHIpOwogCXJlc3VsdHAtPmluZm8uaWN1LnVjb2wgPSBjb2xsYXRvcjsKQEAgLTE1 ODAsMTEgKzE2MTEsMTkgQEAgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBjb2xs aWQpCiAJCWVsc2UgaWYgKGNvbGxmb3JtLT5jb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVS X0lDVSkKIAkJewogCQkJY29uc3QgY2hhciAqaWN1bG9jc3RyOworCQkJY29uc3QgY2hhciAq aWN1cnVsZXM7CiAKIAkJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKENPTExPSUQsIHRwLCBB bnVtX3BnX2NvbGxhdGlvbl9jb2xsaWN1bG9jYWxlLCAmaXNudWxsKTsKIAkJCUFzc2VydCgh aXNudWxsKTsKIAkJCWljdWxvY3N0ciA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwot CQkJbWFrZV9pY3VfY29sbGF0b3IoaWN1bG9jc3RyLCAmcmVzdWx0KTsKKworCQkJZGF0dW0g PSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxp Y3VydWxlcywgJmlzbnVsbCk7CisJCQlpZiAoIWlzbnVsbCkKKwkJCQlpY3VydWxlcyA9IFRl eHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCQkJZWxzZQorCQkJCWljdXJ1bGVzID0gTlVM TDsKKworCQkJbWFrZV9pY3VfY29sbGF0b3IoaWN1bG9jc3RyLCBpY3VydWxlcywgJnJlc3Vs dCk7CiAJCX0KIAogCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51 bV9wZ19jb2xsYXRpb25fY29sbHZlcnNpb24sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0 LmMKaW5kZXggYWU1YTg1ZWQ2NS4uMTYzMTE5ZWU0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv cG9zdGluaXQuYwpAQCAtNDIxLDEwICs0MjEsMTkgQEAgQ2hlY2tNeURhdGFiYXNlKGNvbnN0 IGNoYXIgKm5hbWUsIGJvb2wgYW1fc3VwZXJ1c2VyLCBib29sIG92ZXJyaWRlX2FsbG93X2Nv bm5lY3QKIAogCWlmIChkYmZvcm0tPmRhdGxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9J Q1UpCiAJeworCQljaGFyCSAgICppY3VydWxlczsKKwogCQlkYXR1bSA9IFN5c0NhY2hlR2V0 QXR0cihEQVRBQkFTRU9JRCwgdHVwLCBBbnVtX3BnX2RhdGFiYXNlX2RhdGljdWxvY2FsZSwg JmlzbnVsbCk7CiAJCUFzc2VydCghaXNudWxsKTsKIAkJaWN1bG9jYWxlID0gVGV4dERhdHVt R2V0Q1N0cmluZyhkYXR1bSk7Ci0JCW1ha2VfaWN1X2NvbGxhdG9yKGljdWxvY2FsZSwgJmRl ZmF1bHRfbG9jYWxlKTsKKworCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihEQVRBQkFTRU9J RCwgdHVwLCBBbnVtX3BnX2RhdGFiYXNlX2RhdGljdXJ1bGVzLCAmaXNudWxsKTsKKwkJaWYg KCFpc251bGwpCisJCQlpY3VydWxlcyA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwor CQllbHNlCisJCQlpY3VydWxlcyA9IE5VTEw7CisKKwkJbWFrZV9pY3VfY29sbGF0b3IoaWN1 bG9jYWxlLCBpY3VydWxlcywgJmRlZmF1bHRfbG9jYWxlKTsKIAl9CiAJZWxzZQogCQlpY3Vs b2NhbGUgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xs YXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmgKaW5kZXggZjlk NWU4OGZhZi4uYmZhMzU2ODQ1MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19jb2xsYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5o CkBAIC00Myw2ICs0Myw3IEBAIENBVEFMT0cocGdfY29sbGF0aW9uLDM0NTYsQ29sbGF0aW9u UmVsYXRpb25JZCkKIAl0ZXh0CQljb2xsY29sbGF0ZSBCS0lfREVGQVVMVChfbnVsbF8pOwkv KiBMQ19DT0xMQVRFIHNldHRpbmcgKi8KIAl0ZXh0CQljb2xsY3R5cGUgQktJX0RFRkFVTFQo X251bGxfKTsJLyogTENfQ1RZUEUgc2V0dGluZyAqLwogCXRleHQJCWNvbGxpY3Vsb2NhbGUg QktJX0RFRkFVTFQoX251bGxfKTsJLyogSUNVIGxvY2FsZSBJRCAqLworCXRleHQJCWNvbGxp Y3VydWxlcyBCS0lfREVGQVVMVChfbnVsbF8pOwkvKiBJQ1UgY29sbGF0aW9uIHJ1bGVzICov CiAJdGV4dAkJY29sbHZlcnNpb24gQktJX0RFRkFVTFQoX251bGxfKTsJLyogcHJvdmlkZXIt ZGVwZW5kZW50CiAJCQkJCQkJCQkJCQkJICogdmVyc2lvbiBvZiBjb2xsYXRpb24KIAkJCQkJ CQkJCQkJCQkgKiBkYXRhICovCkBAIC05MSw2ICs5Miw3IEBAIGV4dGVybiBPaWQJQ29sbGF0 aW9uQ3JlYXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwKIAkJ CQkJCQlpbnQzMiBjb2xsZW5jb2RpbmcsCiAJCQkJCQkJY29uc3QgY2hhciAqY29sbGNvbGxh dGUsIGNvbnN0IGNoYXIgKmNvbGxjdHlwZSwKIAkJCQkJCQljb25zdCBjaGFyICpjb2xsaWN1 bG9jYWxlLAorCQkJCQkJCWNvbnN0IGNoYXIgKmNvbGxpY3VydWxlcywKIAkJCQkJCQljb25z dCBjaGFyICpjb2xsdmVyc2lvbiwKIAkJCQkJCQlib29sIGlmX25vdF9leGlzdHMsCiAJCQkJ CQkJYm9vbCBxdWlldCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Rh dGFiYXNlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RhdGFiYXNlLmgKaW5kZXggM2Rh MzQ5MmU5Mi4uYTVjNGVmZTA4NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19kYXRhYmFzZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGF0YWJhc2UuaApA QCAtNzEsNiArNzEsOSBAQCBDQVRBTE9HKHBnX2RhdGFiYXNlLDEyNjIsRGF0YWJhc2VSZWxh dGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1dUWVBFX09JRAogCS8qIElDVSBs b2NhbGUgSUQgKi8KIAl0ZXh0CQlkYXRpY3Vsb2NhbGU7CiAKKwkvKiBJQ1UgY29sbGF0aW9u IHJ1bGVzICovCisJdGV4dAkJZGF0aWN1cnVsZXMgQktJX0RFRkFVTFQoX251bGxfKTsKKwog CS8qIHByb3ZpZGVyLWRlcGVuZGVudCB2ZXJzaW9uIG9mIGNvbGxhdGlvbiBkYXRhICovCiAJ dGV4dAkJZGF0Y29sbHZlcnNpb24gQktJX0RFRkFVTFQoX251bGxfKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmggYi9zcmMvaW5jbHVkZS91dGlscy9w Z19sb2NhbGUuaAppbmRleCBjZWRlNDM0NDBiLi5iY2FkZWZiZjA4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9w Z19sb2NhbGUuaApAQCAtOTUsNiArOTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBwZ19sb2NhbGVf c3RydWN0ICpwZ19sb2NhbGVfdDsKIGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgcGdfbG9j YWxlX3N0cnVjdCBkZWZhdWx0X2xvY2FsZTsKIAogZXh0ZXJuIHZvaWQgbWFrZV9pY3VfY29s bGF0b3IoY29uc3QgY2hhciAqaWN1bG9jc3RyLAorCQkJCQkJCSAgY29uc3QgY2hhciAqaWN1 cnVsZXMsCiAJCQkJCQkJICBzdHJ1Y3QgcGdfbG9jYWxlX3N0cnVjdCAqcmVzdWx0cCk7CiAK IGV4dGVybiBwZ19sb2NhbGVfdCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNv bGxpZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUu aWN1LnV0Zjgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51 dGY4Lm91dAppbmRleCBkNGM4YzZkZTM4Li5jZTllZDNjOGJmIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKQEAgLTExOTAsNiAr MTE5MCwzNiBAQCBTRUxFQ1QgJ0dvbGRtYW5uJyA8ICdHw7Z0eicgQ09MTEFURSAiZGUteC1p Y3UiLCAnR29sZG1hbm4nID4gJ0fDtnR6JyBDT0xMQVRFIHRlcwogIHQgICAgICAgIHwgdAog KDEgcm93KQogCistLSBydWxlcworQ1JFQVRFIENPTExBVElPTiB0ZXN0Y29sbF9ydWxlczEg KHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnJywgcnVsZXMgPSAnJmEgPCBnJyk7CitDUkVB VEUgVEFCTEUgdGVzdDcgKGEgdGV4dCk7CistLSBleGFtcGxlIGZyb20gaHR0cHM6Ly91bmlj b2RlLW9yZy5naXRodWIuaW8vaWN1L3VzZXJndWlkZS9jb2xsYXRpb24vY3VzdG9taXphdGlv bi8jc3ludGF4CitJTlNFUlQgSU5UTyB0ZXN0NyBWQUxVRVMgKCdBYmVybmF0aHknKSwgKCdh cHBsZScpLCAoJ2JpcmQnKSwgKCdCb3N0b24nKSwgKCdHcmFoYW0nKSwgKCdncmVlbicpOwor U0VMRUNUICogRlJPTSB0ZXN0NyBPUkRFUiBCWSBhIENPTExBVEUgImVuLXgtaWN1IjsKKyAg ICAgYSAgICAgCistLS0tLS0tLS0tLQorIEFiZXJuYXRoeQorIGFwcGxlCisgYmlyZAorIEJv c3RvbgorIEdyYWhhbQorIGdyZWVuCisoNiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3Q3 IE9SREVSIEJZIGEgQ09MTEFURSB0ZXN0Y29sbF9ydWxlczE7CisgICAgIGEgICAgIAorLS0t LS0tLS0tLS0KKyBBYmVybmF0aHkKKyBhcHBsZQorIGdyZWVuCisgYmlyZAorIEJvc3Rvbgor IEdyYWhhbQorKDYgcm93cykKKworRFJPUCBUQUJMRSB0ZXN0NzsKK0NSRUFURSBDT0xMQVRJ T04gdGVzdGNvbGxfcnVsZXN4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJycsIHJ1bGVz ID0gJyEhd3JvbmchIScpOworRVJST1I6ICBjb3VsZCBub3Qgb3BlbiBjb2xsYXRvciBmb3Ig bG9jYWxlICIiIHdpdGggcnVsZXMgIiEhd3JvbmchISI6IFVfSU5WQUxJRF9GT1JNQVRfRVJS T1IKIC0tIG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucwogQ1JFQVRFIENPTExBVElPTiBj dGVzdF9kZXQgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnJywgZGV0ZXJtaW5pc3RpYyA9 IHRydWUpOwogQ1JFQVRFIENPTExBVElPTiBjdGVzdF9ub25kZXQgKHByb3ZpZGVyID0gaWN1 LCBsb2NhbGUgPSAnJywgZGV0ZXJtaW5pc3RpYyA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKaW5kZXggYjBkZGM3ZGI0NC4uYWE5NWMx ZWM0MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRm OC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwK QEAgLTQ3Miw2ICs0NzIsMTkgQEAgQ1JFQVRFIENPTExBVElPTiB0ZXN0Y29sbF9kZV9waG9u ZWJvb2sgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnZGVAY29sbGF0aW9uPXAKIFNFTEVD VCAnR29sZG1hbm4nIDwgJ0fDtnR6JyBDT0xMQVRFICJkZS14LWljdSIsICdHb2xkbWFubicg PiAnR8O2dHonIENPTExBVEUgdGVzdGNvbGxfZGVfcGhvbmVib29rOwogCiAKKy0tIHJ1bGVz CisKK0NSRUFURSBDT0xMQVRJT04gdGVzdGNvbGxfcnVsZXMxIChwcm92aWRlciA9IGljdSwg bG9jYWxlID0gJycsIHJ1bGVzID0gJyZhIDwgZycpOworQ1JFQVRFIFRBQkxFIHRlc3Q3IChh IHRleHQpOworLS0gZXhhbXBsZSBmcm9tIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlv L2ljdS91c2VyZ3VpZGUvY29sbGF0aW9uL2N1c3RvbWl6YXRpb24vI3N5bnRheAorSU5TRVJU IElOVE8gdGVzdDcgVkFMVUVTICgnQWJlcm5hdGh5JyksICgnYXBwbGUnKSwgKCdiaXJkJyks ICgnQm9zdG9uJyksICgnR3JhaGFtJyksICgnZ3JlZW4nKTsKK1NFTEVDVCAqIEZST00gdGVz dDcgT1JERVIgQlkgYSBDT0xMQVRFICJlbi14LWljdSI7CitTRUxFQ1QgKiBGUk9NIHRlc3Q3 IE9SREVSIEJZIGEgQ09MTEFURSB0ZXN0Y29sbF9ydWxlczE7CitEUk9QIFRBQkxFIHRlc3Q3 OworCitDUkVBVEUgQ09MTEFUSU9OIHRlc3Rjb2xsX3J1bGVzeCAocHJvdmlkZXIgPSBpY3Us IGxvY2FsZSA9ICcnLCBydWxlcyA9ICchIXdyb25nISEnKTsKKworCiAtLSBub25kZXRlcm1p bmlzdGljIGNvbGxhdGlvbnMKIAogQ1JFQVRFIENPTExBVElPTiBjdGVzdF9kZXQgKHByb3Zp ZGVyID0gaWN1LCBsb2NhbGUgPSAnJywgZGV0ZXJtaW5pc3RpYyA9IHRydWUpOwoKYmFzZS1j b21taXQ6IGI4MjU1N2VjYzJlYmJmNjQ5MTQyNzQwYTFjNWNlOGQxOTA4OWY2MjAKLS0gCjIu MzkuMAoK --------------8OAiggSs71EF01HzW8kx7utz--